MCPcopy Create free account
hub / github.com/diillson/chatcli / ProcessPaths

Method ProcessPaths

cli/ctxmgr/processor.go:30–130  ·  view source on GitHub ↗

ProcessPaths processa múltiplos caminhos baseado no modo

(ctx context.Context, paths []string, mode ProcessingMode)

Source from the content-addressed store, hash-verified

28
29// ProcessPaths processa múltiplos caminhos baseado no modo
30func (p *Processor) ProcessPaths(ctx context.Context, paths []string, mode ProcessingMode) ([]utils.FileInfo, utils.DirectoryScanOptions, error) {
31 if len(paths) == 0 {
32 return nil, utils.DirectoryScanOptions{}, fmt.Errorf("nenhum caminho fornecido")
33 }
34
35 scanOpts := utils.DefaultDirectoryScanOptions(p.logger)
36
37 // Ajustar opções baseado no modo
38 switch mode {
39 case ModeFull:
40 scanOpts.MaxTotalSize = 50 * 1024 * 1024 // 50MB
41 scanOpts.MaxFilesToProcess = 500
42 p.logger.Debug("Modo Full configurado",
43 zap.Int64("max_size", scanOpts.MaxTotalSize),
44 zap.Int("max_files", scanOpts.MaxFilesToProcess))
45
46 case ModeSummary:
47 // Apenas estrutura, sem conteúdo completo
48 scanOpts.MaxTotalSize = 5 * 1024 * 1024 // 5MB (metadados + previews)
49 scanOpts.MaxFilesToProcess = 1000
50 p.logger.Debug("Modo Summary configurado",
51 zap.Int64("max_size", scanOpts.MaxTotalSize),
52 zap.Int("max_files", scanOpts.MaxFilesToProcess))
53
54 case ModeChunked:
55 scanOpts.MaxTotalSize = 100 * 1024 * 1024 // 100MB
56 scanOpts.MaxFilesToProcess = 1000
57 p.logger.Debug("Modo Chunked configurado",
58 zap.Int64("max_size", scanOpts.MaxTotalSize),
59 zap.Int("max_files", scanOpts.MaxFilesToProcess))
60
61 case ModeSmart:
62 scanOpts.MaxTotalSize = 20 * 1024 * 1024 // 20MB
63 scanOpts.MaxFilesToProcess = 200
64 p.logger.Debug("Modo Smart configurado",
65 zap.Int64("max_size", scanOpts.MaxTotalSize),
66 zap.Int("max_files", scanOpts.MaxFilesToProcess))
67
68 case ModeKnowledge:
69 // Retrieval-first: o conteúdo nunca é injetado inteiro, então o teto
70 // acompanha o modo chunked — o custo por turno é o digest + top-K.
71 scanOpts.MaxTotalSize = 100 * 1024 * 1024 // 100MB
72 scanOpts.MaxFilesToProcess = 5000
73 p.logger.Debug("Modo Knowledge configurado",
74 zap.Int64("max_size", scanOpts.MaxTotalSize),
75 zap.Int("max_files", scanOpts.MaxFilesToProcess))
76
77 default:
78 return nil, scanOpts, fmt.Errorf("modo de processamento inválido: %s", mode)
79 }
80
81 allFiles := make([]utils.FileInfo, 0)
82 processedPaths := make(map[string]bool) // Para evitar duplicatas
83
84 for _, path := range paths {
85 // Expandir path
86 expandedPath, err := utils.ExpandPath(path)
87 if err != nil {

Callers 4

CreateContextMethod · 0.80
UpdateContextMethod · 0.80

Calls 9

postProcessMethod · 0.95
ExpandPathFunction · 0.92
ProcessDirectoryFunction · 0.92
ErrorfMethod · 0.80
WarnMethod · 0.80
ErrorMethod · 0.65
InfoMethod · 0.65
StringMethod · 0.45