attocode 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +64 -1
  2. package/README.md +138 -10
  3. package/dist/src/agent.d.ts +75 -1
  4. package/dist/src/agent.d.ts.map +1 -1
  5. package/dist/src/agent.js +700 -25
  6. package/dist/src/agent.js.map +1 -1
  7. package/dist/src/commands/agents-commands.d.ts +24 -0
  8. package/dist/src/commands/agents-commands.d.ts.map +1 -0
  9. package/dist/src/commands/agents-commands.js +284 -0
  10. package/dist/src/commands/agents-commands.js.map +1 -0
  11. package/dist/src/commands/handler.d.ts.map +1 -1
  12. package/dist/src/commands/handler.js +135 -19
  13. package/dist/src/commands/handler.js.map +1 -1
  14. package/dist/src/commands/init-commands.d.ts +35 -0
  15. package/dist/src/commands/init-commands.d.ts.map +1 -0
  16. package/dist/src/commands/init-commands.js +187 -0
  17. package/dist/src/commands/init-commands.js.map +1 -0
  18. package/dist/src/commands/skills-commands.d.ts +26 -0
  19. package/dist/src/commands/skills-commands.d.ts.map +1 -0
  20. package/dist/src/commands/skills-commands.js +309 -0
  21. package/dist/src/commands/skills-commands.js.map +1 -0
  22. package/dist/src/commands/types.d.ts +13 -2
  23. package/dist/src/commands/types.d.ts.map +1 -1
  24. package/dist/src/defaults.d.ts +29 -1
  25. package/dist/src/defaults.d.ts.map +1 -1
  26. package/dist/src/defaults.js +66 -0
  27. package/dist/src/defaults.js.map +1 -1
  28. package/dist/src/integrations/agent-registry.d.ts +68 -2
  29. package/dist/src/integrations/agent-registry.d.ts.map +1 -1
  30. package/dist/src/integrations/agent-registry.js +230 -23
  31. package/dist/src/integrations/agent-registry.js.map +1 -1
  32. package/dist/src/integrations/cancellation.d.ts +5 -0
  33. package/dist/src/integrations/cancellation.d.ts.map +1 -1
  34. package/dist/src/integrations/cancellation.js +7 -0
  35. package/dist/src/integrations/cancellation.js.map +1 -1
  36. package/dist/src/integrations/capabilities.d.ts +160 -0
  37. package/dist/src/integrations/capabilities.d.ts.map +1 -0
  38. package/dist/src/integrations/capabilities.js +426 -0
  39. package/dist/src/integrations/capabilities.js.map +1 -0
  40. package/dist/src/integrations/context-engineering.d.ts +6 -1
  41. package/dist/src/integrations/context-engineering.d.ts.map +1 -1
  42. package/dist/src/integrations/context-engineering.js +7 -0
  43. package/dist/src/integrations/context-engineering.js.map +1 -1
  44. package/dist/src/integrations/index.d.ts +12 -2
  45. package/dist/src/integrations/index.d.ts.map +1 -1
  46. package/dist/src/integrations/index.js +22 -2
  47. package/dist/src/integrations/index.js.map +1 -1
  48. package/dist/src/integrations/interactive-planning.d.ts +322 -0
  49. package/dist/src/integrations/interactive-planning.d.ts.map +1 -0
  50. package/dist/src/integrations/interactive-planning.js +655 -0
  51. package/dist/src/integrations/interactive-planning.js.map +1 -0
  52. package/dist/src/integrations/learning-store.d.ts +291 -0
  53. package/dist/src/integrations/learning-store.d.ts.map +1 -0
  54. package/dist/src/integrations/learning-store.js +640 -0
  55. package/dist/src/integrations/learning-store.js.map +1 -0
  56. package/dist/src/integrations/pending-plan.d.ts.map +1 -1
  57. package/dist/src/integrations/pending-plan.js +69 -10
  58. package/dist/src/integrations/pending-plan.js.map +1 -1
  59. package/dist/src/integrations/skill-executor.d.ts +113 -0
  60. package/dist/src/integrations/skill-executor.d.ts.map +1 -0
  61. package/dist/src/integrations/skill-executor.js +270 -0
  62. package/dist/src/integrations/skill-executor.js.map +1 -0
  63. package/dist/src/integrations/skills.d.ts +98 -7
  64. package/dist/src/integrations/skills.d.ts.map +1 -1
  65. package/dist/src/integrations/skills.js +210 -11
  66. package/dist/src/integrations/skills.js.map +1 -1
  67. package/dist/src/providers/circuit-breaker.d.ts +180 -0
  68. package/dist/src/providers/circuit-breaker.d.ts.map +1 -0
  69. package/dist/src/providers/circuit-breaker.js +349 -0
  70. package/dist/src/providers/circuit-breaker.js.map +1 -0
  71. package/dist/src/providers/fallback-chain.d.ts +194 -0
  72. package/dist/src/providers/fallback-chain.d.ts.map +1 -0
  73. package/dist/src/providers/fallback-chain.js +363 -0
  74. package/dist/src/providers/fallback-chain.js.map +1 -0
  75. package/dist/src/providers/llm-resilience.d.ts +126 -0
  76. package/dist/src/providers/llm-resilience.d.ts.map +1 -0
  77. package/dist/src/providers/llm-resilience.js +261 -0
  78. package/dist/src/providers/llm-resilience.js.map +1 -0
  79. package/dist/src/providers/resilient-provider.d.ts +124 -0
  80. package/dist/src/providers/resilient-provider.d.ts.map +1 -0
  81. package/dist/src/providers/resilient-provider.js +242 -0
  82. package/dist/src/providers/resilient-provider.js.map +1 -0
  83. package/dist/src/tricks/recursive-context.d.ts +296 -0
  84. package/dist/src/tricks/recursive-context.d.ts.map +1 -0
  85. package/dist/src/tricks/recursive-context.js +518 -0
  86. package/dist/src/tricks/recursive-context.js.map +1 -0
  87. package/dist/src/tui/app.d.ts.map +1 -1
  88. package/dist/src/tui/app.js +226 -29
  89. package/dist/src/tui/app.js.map +1 -1
  90. package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -1
  91. package/dist/src/tui/components/ApprovalDialog.js +1 -1
  92. package/dist/src/tui/components/ApprovalDialog.js.map +1 -1
  93. package/dist/src/tui/index.d.ts +1 -0
  94. package/dist/src/tui/index.d.ts.map +1 -1
  95. package/dist/src/tui/index.js +2 -0
  96. package/dist/src/tui/index.js.map +1 -1
  97. package/dist/src/tui/transparency-aggregator.d.ts +100 -0
  98. package/dist/src/tui/transparency-aggregator.d.ts.map +1 -0
  99. package/dist/src/tui/transparency-aggregator.js +234 -0
  100. package/dist/src/tui/transparency-aggregator.js.map +1 -0
  101. package/dist/src/types.d.ts +155 -0
  102. package/dist/src/types.d.ts.map +1 -1
  103. package/package.json +1 -1
@@ -0,0 +1,518 @@
1
+ /**
2
+ * Trick U: Recursive Language Model Context (RLM)
3
+ *
4
+ * Instead of cramming everything into context or summarizing, let the model
5
+ * "browse" the context as an external environment through recursive self-calls.
6
+ *
7
+ * Inspired by arXiv:2512.24601 - Recursive Language Models.
8
+ *
9
+ * Problem: Traditional approaches either:
10
+ * - Stuff everything in context → hits limits, loses attention
11
+ * - Summarize → loses critical details
12
+ *
13
+ * Solution: Let the model decide what parts of context to examine, then
14
+ * recursively call itself with focused snippets, synthesizing across calls.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const rlm = createRecursiveContext({
19
+ * maxDepth: 3,
20
+ * snippetTokens: 2000,
21
+ * synthesisTokens: 1000,
22
+ * });
23
+ *
24
+ * // Register context sources
25
+ * rlm.registerSource('files', {
26
+ * describe: () => 'Project source files',
27
+ * list: async () => ['src/main.ts', 'src/agent.ts', ...],
28
+ * fetch: async (key) => readFile(key),
29
+ * });
30
+ *
31
+ * // Process a query with recursive context access
32
+ * const result = await rlm.process(query, llmCall, {
33
+ * depth: 0,
34
+ * budget: 10000,
35
+ * });
36
+ * ```
37
+ */
38
+ // =============================================================================
39
+ // PROMPTS
40
+ // =============================================================================
41
+ const NAVIGATOR_SYSTEM_PROMPT = `You are a context navigator. Your job is to explore available context sources to answer questions.
42
+
43
+ You can navigate using these commands (respond with ONLY the JSON):
44
+
45
+ 1. List items in a source:
46
+ {"type": "list", "source": "<source_name>", "reason": "why"}
47
+
48
+ 2. Fetch a specific item:
49
+ {"type": "fetch", "source": "<source_name>", "key": "<item_key>", "reason": "why"}
50
+
51
+ 3. Search within a source:
52
+ {"type": "search", "source": "<source_name>", "key": "<search_query>", "reason": "why"}
53
+
54
+ 4. Synthesize findings into an answer:
55
+ {"type": "synthesize", "reason": "ready because..."}
56
+
57
+ 5. Mark as done (have enough info):
58
+ {"type": "done", "reason": "why done"}
59
+
60
+ Available sources:
61
+ {SOURCES}
62
+
63
+ Current context:
64
+ {CONTEXT}
65
+
66
+ Be strategic - only fetch what you need. Explain your reasoning briefly.`;
67
+ const SYNTHESIS_SYSTEM_PROMPT = `You are synthesizing information gathered from multiple sources.
68
+
69
+ Gathered information:
70
+ {GATHERED}
71
+
72
+ Provide a comprehensive answer based on the gathered information.
73
+ If information is incomplete, note what's missing.
74
+ Focus on accuracy over completeness.`;
75
+ // =============================================================================
76
+ // RECURSIVE CONTEXT MANAGER
77
+ // =============================================================================
78
+ /**
79
+ * Manages recursive context navigation.
80
+ */
81
+ export class RecursiveContextManager {
82
+ config;
83
+ sources = new Map();
84
+ cache = new Map();
85
+ listeners = [];
86
+ constructor(config = {}) {
87
+ this.config = {
88
+ maxDepth: config.maxDepth ?? 3,
89
+ snippetTokens: config.snippetTokens ?? 2000,
90
+ synthesisTokens: config.synthesisTokens ?? 1000,
91
+ totalBudget: config.totalBudget ?? 50000,
92
+ cacheResults: config.cacheResults ?? true,
93
+ callTimeout: config.callTimeout ?? 30000,
94
+ };
95
+ }
96
+ /**
97
+ * Register a context source.
98
+ */
99
+ registerSource(name, source) {
100
+ this.sources.set(name, source);
101
+ }
102
+ /**
103
+ * Unregister a context source.
104
+ */
105
+ unregisterSource(name) {
106
+ this.sources.delete(name);
107
+ }
108
+ /**
109
+ * Get registered source names.
110
+ */
111
+ getSourceNames() {
112
+ return Array.from(this.sources.keys());
113
+ }
114
+ /**
115
+ * Process a query with recursive context navigation.
116
+ */
117
+ async process(query, llmCall, options = {}) {
118
+ const { depth = 0, budget = this.config.totalBudget, navigationContext = '', cancelToken, } = options;
119
+ const startTime = Date.now();
120
+ const path = [];
121
+ const gathered = [];
122
+ const sourcesAccessed = new Set();
123
+ let totalTokens = 0;
124
+ let itemsFetched = 0;
125
+ let maxDepthReached = depth;
126
+ this.emit({ type: 'process.started', query, depth });
127
+ // Build source descriptions
128
+ const sourceDescriptions = this.buildSourceDescriptions();
129
+ // Main navigation loop
130
+ let iterations = 0;
131
+ const maxIterations = 10; // Prevent infinite loops
132
+ while (iterations < maxIterations) {
133
+ iterations++;
134
+ // Check cancellation
135
+ if (cancelToken?.isCancelled) {
136
+ break;
137
+ }
138
+ // Check budget
139
+ if (totalTokens > budget * 0.9) {
140
+ this.emit({ type: 'budget.warning', remaining: budget - totalTokens, total: budget });
141
+ break;
142
+ }
143
+ // Check depth
144
+ if (depth >= this.config.maxDepth) {
145
+ this.emit({ type: 'depth.warning', current: depth, max: this.config.maxDepth });
146
+ break;
147
+ }
148
+ // Build context for navigation
149
+ const contextSummary = this.buildContextSummary(gathered, path);
150
+ const systemPrompt = NAVIGATOR_SYSTEM_PROMPT
151
+ .replace('{SOURCES}', sourceDescriptions)
152
+ .replace('{CONTEXT}', contextSummary || 'No context gathered yet.');
153
+ const userMessage = depth === 0
154
+ ? `Question: ${query}\n\nWhat would you like to explore first?`
155
+ : `Continue exploring to answer: ${query}\n\n${navigationContext}`;
156
+ // Get navigation command from LLM
157
+ const navResponse = await llmCall(systemPrompt, userMessage, {
158
+ maxTokens: 200,
159
+ });
160
+ totalTokens += navResponse.tokens;
161
+ // Parse navigation command
162
+ const command = this.parseNavigationCommand(navResponse.content);
163
+ this.emit({ type: 'navigation.command', command, depth });
164
+ // Execute command
165
+ if (command.type === 'done' || command.type === 'synthesize') {
166
+ // Ready to synthesize
167
+ this.emit({ type: 'synthesis.started', depth, itemCount: gathered.length });
168
+ const answer = await this.synthesize(query, gathered, llmCall);
169
+ totalTokens += answer.tokens;
170
+ return {
171
+ answer: answer.content,
172
+ path,
173
+ stats: {
174
+ totalCalls: iterations + 1,
175
+ maxDepthReached,
176
+ totalTokens,
177
+ sourcesAccessed: Array.from(sourcesAccessed),
178
+ itemsFetched,
179
+ duration: Date.now() - startTime,
180
+ },
181
+ };
182
+ }
183
+ // Execute navigation command
184
+ const stepResult = await this.executeCommand(command, sourcesAccessed);
185
+ if (stepResult) {
186
+ path.push({
187
+ depth,
188
+ command,
189
+ result: this.truncate(stepResult, 500),
190
+ tokens: this.estimateTokens(stepResult),
191
+ });
192
+ gathered.push(this.formatGatheredItem(command, stepResult));
193
+ itemsFetched++;
194
+ maxDepthReached = Math.max(maxDepthReached, depth);
195
+ }
196
+ }
197
+ // Reached iteration limit - synthesize what we have
198
+ this.emit({ type: 'synthesis.started', depth, itemCount: gathered.length });
199
+ const finalAnswer = await this.synthesize(query, gathered, llmCall);
200
+ totalTokens += finalAnswer.tokens;
201
+ const stats = {
202
+ totalCalls: iterations + 1,
203
+ maxDepthReached,
204
+ totalTokens,
205
+ sourcesAccessed: Array.from(sourcesAccessed),
206
+ itemsFetched,
207
+ duration: Date.now() - startTime,
208
+ };
209
+ this.emit({ type: 'process.completed', stats });
210
+ return {
211
+ answer: finalAnswer.content,
212
+ path,
213
+ stats,
214
+ };
215
+ }
216
+ /**
217
+ * Clear the results cache.
218
+ */
219
+ clearCache() {
220
+ this.cache.clear();
221
+ }
222
+ /**
223
+ * Subscribe to events.
224
+ */
225
+ on(listener) {
226
+ this.listeners.push(listener);
227
+ return () => {
228
+ const idx = this.listeners.indexOf(listener);
229
+ if (idx >= 0)
230
+ this.listeners.splice(idx, 1);
231
+ };
232
+ }
233
+ // ===========================================================================
234
+ // PRIVATE METHODS
235
+ // ===========================================================================
236
+ buildSourceDescriptions() {
237
+ const lines = [];
238
+ for (const [name, source] of this.sources) {
239
+ lines.push(`- ${name}: ${source.describe()}`);
240
+ if (source.search) {
241
+ lines.push(` (supports search)`);
242
+ }
243
+ }
244
+ return lines.join('\n');
245
+ }
246
+ buildContextSummary(gathered, path) {
247
+ if (gathered.length === 0) {
248
+ return '';
249
+ }
250
+ const summary = [
251
+ `Gathered ${gathered.length} items:`,
252
+ '',
253
+ ...gathered.slice(-5).map((g, i) => `${i + 1}. ${this.truncate(g, 200)}`),
254
+ ];
255
+ if (gathered.length > 5) {
256
+ summary.unshift(`(${gathered.length - 5} earlier items not shown)`);
257
+ }
258
+ return summary.join('\n');
259
+ }
260
+ parseNavigationCommand(content) {
261
+ try {
262
+ // Try to extract JSON from response
263
+ const jsonMatch = content.match(/\{[\s\S]*\}/);
264
+ if (jsonMatch) {
265
+ const parsed = JSON.parse(jsonMatch[0]);
266
+ return {
267
+ type: parsed.type || 'done',
268
+ source: parsed.source,
269
+ key: parsed.key,
270
+ reason: parsed.reason,
271
+ };
272
+ }
273
+ }
274
+ catch {
275
+ // Parse failed
276
+ }
277
+ // Default to done if can't parse
278
+ return { type: 'done', reason: 'Could not parse navigation command' };
279
+ }
280
+ async executeCommand(command, sourcesAccessed) {
281
+ if (!command.source) {
282
+ return null;
283
+ }
284
+ const source = this.sources.get(command.source);
285
+ if (!source) {
286
+ return `Source "${command.source}" not found`;
287
+ }
288
+ sourcesAccessed.add(command.source);
289
+ this.emit({ type: 'source.accessed', source: command.source, command: command.type });
290
+ try {
291
+ switch (command.type) {
292
+ case 'list': {
293
+ const items = await source.list(command.key);
294
+ return `Items in ${command.source}:\n${items.slice(0, 20).join('\n')}${items.length > 20 ? `\n...and ${items.length - 20} more` : ''}`;
295
+ }
296
+ case 'fetch': {
297
+ if (!command.key) {
298
+ return 'No key specified for fetch';
299
+ }
300
+ // Check cache
301
+ const cacheKey = `${command.source}:${command.key}`;
302
+ if (this.config.cacheResults && this.cache.has(cacheKey)) {
303
+ return this.cache.get(cacheKey);
304
+ }
305
+ const content = await source.fetch(command.key);
306
+ const truncated = this.truncate(content, this.config.snippetTokens * 4); // ~4 chars per token
307
+ if (this.config.cacheResults) {
308
+ this.cache.set(cacheKey, truncated);
309
+ }
310
+ return `Content of ${command.key}:\n${truncated}`;
311
+ }
312
+ case 'search': {
313
+ if (!source.search || !command.key) {
314
+ return 'Search not available for this source or no query specified';
315
+ }
316
+ const results = await source.search(command.key);
317
+ return `Search results for "${command.key}":\n${results.slice(0, 10).map(r => `- ${r.key}: ${r.snippet}`).join('\n')}`;
318
+ }
319
+ default:
320
+ return null;
321
+ }
322
+ }
323
+ catch (error) {
324
+ const err = error instanceof Error ? error : new Error(String(error));
325
+ return `Error accessing ${command.source}: ${err.message}`;
326
+ }
327
+ }
328
+ async synthesize(query, gathered, llmCall) {
329
+ if (gathered.length === 0) {
330
+ return {
331
+ content: 'No information gathered to answer the question.',
332
+ tokens: 0,
333
+ };
334
+ }
335
+ const systemPrompt = SYNTHESIS_SYSTEM_PROMPT.replace('{GATHERED}', gathered.map((g, i) => `[${i + 1}] ${g}`).join('\n\n'));
336
+ const userMessage = `Based on the gathered information, answer: ${query}`;
337
+ return llmCall(systemPrompt, userMessage, {
338
+ maxTokens: this.config.synthesisTokens,
339
+ });
340
+ }
341
+ formatGatheredItem(command, result) {
342
+ const prefix = command.source ? `[${command.source}${command.key ? ':' + command.key : ''}]` : '';
343
+ return `${prefix} ${this.truncate(result, 500)}`;
344
+ }
345
+ truncate(text, maxChars) {
346
+ if (text.length <= maxChars) {
347
+ return text;
348
+ }
349
+ return text.slice(0, maxChars - 3) + '...';
350
+ }
351
+ estimateTokens(text) {
352
+ // Rough estimate: ~4 characters per token
353
+ return Math.ceil(text.length / 4);
354
+ }
355
+ emit(event) {
356
+ for (const listener of this.listeners) {
357
+ try {
358
+ listener(event);
359
+ }
360
+ catch {
361
+ // Ignore listener errors
362
+ }
363
+ }
364
+ }
365
+ }
366
+ // =============================================================================
367
+ // FACTORY FUNCTIONS
368
+ // =============================================================================
369
+ /**
370
+ * Create a recursive context manager.
371
+ *
372
+ * @example
373
+ * ```typescript
374
+ * const rlm = createRecursiveContext({
375
+ * maxDepth: 3,
376
+ * snippetTokens: 2000,
377
+ * totalBudget: 50000,
378
+ * });
379
+ *
380
+ * // Register file system source
381
+ * rlm.registerSource('files', {
382
+ * describe: () => 'Project source files',
383
+ * list: async () => glob('src/*.ts'),
384
+ * fetch: async (path) => fs.readFile(path, 'utf-8'),
385
+ * search: async (query) => grep(query),
386
+ * });
387
+ *
388
+ * // Process a complex query
389
+ * const result = await rlm.process(
390
+ * 'How does authentication work in this codebase?',
391
+ * async (system, user, opts) => {
392
+ * const response = await provider.chat([
393
+ * { role: 'system', content: system },
394
+ * { role: 'user', content: user },
395
+ * ], opts);
396
+ * return { content: response.content, tokens: response.usage.totalTokens };
397
+ * }
398
+ * );
399
+ *
400
+ * console.log(result.answer);
401
+ * console.log(`Used ${result.stats.totalTokens} tokens across ${result.stats.totalCalls} calls`);
402
+ * ```
403
+ */
404
+ export function createRecursiveContext(config = {}) {
405
+ return new RecursiveContextManager(config);
406
+ }
407
+ /**
408
+ * Create a minimal recursive context manager for testing.
409
+ */
410
+ export function createMinimalRecursiveContext() {
411
+ return new RecursiveContextManager({
412
+ maxDepth: 2,
413
+ snippetTokens: 1000,
414
+ synthesisTokens: 500,
415
+ totalBudget: 10000,
416
+ cacheResults: false,
417
+ });
418
+ }
419
+ // =============================================================================
420
+ // BUILT-IN SOURCES
421
+ // =============================================================================
422
+ /**
423
+ * Create a file system context source.
424
+ */
425
+ export function createFileSystemSource(options) {
426
+ return {
427
+ describe: () => `Files in ${options.basePath}`,
428
+ list: async (filter) => {
429
+ const pattern = filter || '**/*';
430
+ return options.glob(pattern);
431
+ },
432
+ fetch: async (key) => {
433
+ return options.readFile(key);
434
+ },
435
+ search: options.grep
436
+ ? async (query) => {
437
+ const results = await options.grep(query);
438
+ return results.map((r) => ({
439
+ key: `${r.file}:${r.line}`,
440
+ snippet: r.content,
441
+ score: 1,
442
+ }));
443
+ }
444
+ : undefined,
445
+ };
446
+ }
447
+ /**
448
+ * Create a conversation history context source.
449
+ */
450
+ export function createConversationSource(options) {
451
+ return {
452
+ describe: () => 'Previous conversation messages',
453
+ list: async () => {
454
+ const messages = options.getMessages();
455
+ return messages.map((m, i) => `msg-${i}: [${m.role}] ${m.content.slice(0, 50)}...`);
456
+ },
457
+ fetch: async (key) => {
458
+ const messages = options.getMessages();
459
+ const match = key.match(/msg-(\d+)/);
460
+ if (match) {
461
+ const idx = parseInt(match[1], 10);
462
+ if (messages[idx]) {
463
+ return `[${messages[idx].role}]: ${messages[idx].content}`;
464
+ }
465
+ }
466
+ return 'Message not found';
467
+ },
468
+ search: async (query) => {
469
+ const messages = options.getMessages();
470
+ const queryLower = query.toLowerCase();
471
+ return messages
472
+ .map((m, i) => ({
473
+ key: `msg-${i}`,
474
+ snippet: m.content.slice(0, 100),
475
+ score: m.content.toLowerCase().includes(queryLower) ? 1 : 0,
476
+ }))
477
+ .filter((r) => r.score > 0);
478
+ },
479
+ };
480
+ }
481
+ // =============================================================================
482
+ // UTILITIES
483
+ // =============================================================================
484
+ /**
485
+ * Format recursive result for display.
486
+ */
487
+ export function formatRecursiveResult(result) {
488
+ const lines = [
489
+ '=== Recursive Context Result ===',
490
+ '',
491
+ 'Answer:',
492
+ result.answer,
493
+ '',
494
+ 'Navigation Path:',
495
+ ...result.path.map((step) => ` [${step.depth}] ${step.command.type}${step.command.source ? `:${step.command.source}` : ''} - ${step.command.reason || 'no reason'}`),
496
+ '',
497
+ 'Statistics:',
498
+ ` Total LLM calls: ${result.stats.totalCalls}`,
499
+ ` Max depth: ${result.stats.maxDepthReached}`,
500
+ ` Total tokens: ${result.stats.totalTokens}`,
501
+ ` Items fetched: ${result.stats.itemsFetched}`,
502
+ ` Duration: ${result.stats.duration}ms`,
503
+ ` Sources: ${result.stats.sourcesAccessed.join(', ')}`,
504
+ ];
505
+ return lines.join('\n');
506
+ }
507
+ /**
508
+ * Format statistics for display.
509
+ */
510
+ export function formatRecursiveStats(stats) {
511
+ return [
512
+ `Calls: ${stats.totalCalls}`,
513
+ `Tokens: ${stats.totalTokens}`,
514
+ `Items: ${stats.itemsFetched}`,
515
+ `Time: ${stats.duration}ms`,
516
+ ].join(' | ');
517
+ }
518
+ //# sourceMappingURL=recursive-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursive-context.js","sourceRoot":"","sources":["../../../src/tricks/recursive-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAOxD,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IACjD,qBAAqB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,OAAO,CAAC;QACzB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/C,CAAC;IACF,4DAA4D;IAC5D,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAgaD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,EACL,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,GACf,EAAE,WAAW,2CAs8Bb;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/tui/app.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA+CxD,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;IACjD,qBAAqB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,OAAO,CAAC;QACzB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/C,CAAC;IACF,4DAA4D;IAC5D,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AA6aD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,EACL,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,GACf,EAAE,WAAW,2CAmqCb;AAED,eAAe,MAAM,CAAC"}