getContextNameSuggestions - Sugestões de nomes de contextos existentes com descrições ricas
()
| 808 | |
| 809 | // getContextNameSuggestions - Sugestões de nomes de contextos existentes com descrições ricas |
| 810 | func (cli *ChatCLI) getContextNameSuggestions() []prompt.Suggest { |
| 811 | contexts, err := cli.contextHandler.GetManager().ListContexts(nil) |
| 812 | if err != nil { |
| 813 | return nil |
| 814 | } |
| 815 | |
| 816 | suggestions := make([]prompt.Suggest, 0, len(contexts)) |
| 817 | for _, ctx := range contexts { |
| 818 | // Criar descrição rica com informações úteis |
| 819 | var descParts []string |
| 820 | |
| 821 | // Adicionar modo |
| 822 | descParts = append(descParts, i18n.T("complete.context.name_mode_fmt", ctx.Mode)) |
| 823 | |
| 824 | // Adicionar contagem de arquivos ou chunks |
| 825 | if ctx.IsChunked { |
| 826 | descParts = append(descParts, i18n.T("complete.context.name_chunks_fmt", len(ctx.Chunks))) |
| 827 | } else { |
| 828 | descParts = append(descParts, i18n.T("complete.context.name_files_fmt", ctx.FileCount)) |
| 829 | } |
| 830 | |
| 831 | // Adicionar tamanho |
| 832 | sizeMB := float64(ctx.TotalSize) / 1024 / 1024 |
| 833 | if sizeMB < 1 { |
| 834 | descParts = append(descParts, fmt.Sprintf("%.0f KB", float64(ctx.TotalSize)/1024)) |
| 835 | } else { |
| 836 | descParts = append(descParts, fmt.Sprintf("%.1f MB", sizeMB)) |
| 837 | } |
| 838 | |
| 839 | // Adicionar tags se houver |
| 840 | if len(ctx.Tags) > 0 { |
| 841 | descParts = append(descParts, i18n.T("complete.context.name_tags_fmt", strings.Join(ctx.Tags, ","))) |
| 842 | } |
| 843 | |
| 844 | desc := strings.Join(descParts, " | ") |
| 845 | if ctx.Description != "" { |
| 846 | desc = ctx.Description + " — " + desc |
| 847 | } |
| 848 | |
| 849 | // ═══════════════════════════════════════════════════════════════ |
| 850 | // Adicionar indicador visual para contextos chunked |
| 851 | // ═══════════════════════════════════════════════════════════════ |
| 852 | icon := "📄" |
| 853 | if ctx.IsChunked { |
| 854 | icon = "🧩" |
| 855 | } |
| 856 | |
| 857 | suggestions = append(suggestions, prompt.Suggest{ |
| 858 | Text: ctx.Name, |
| 859 | Description: fmt.Sprintf("%s %s", icon, desc), |
| 860 | }) |
| 861 | } |
| 862 | |
| 863 | return suggestions |
| 864 | } |
| 865 | |
| 866 | // getSessionSuggestions - Sugestões para /session |
| 867 | func (cli *ChatCLI) getSessionSuggestions(d prompt.Document) []prompt.Suggest { |