attocode 0.1.3 → 0.1.5

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 (133) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/README.md +56 -0
  3. package/dist/src/agent.d.ts +5 -0
  4. package/dist/src/agent.d.ts.map +1 -1
  5. package/dist/src/agent.js +244 -21
  6. package/dist/src/agent.js.map +1 -1
  7. package/dist/src/analysis/feedback-loop.d.ts +115 -0
  8. package/dist/src/analysis/feedback-loop.d.ts.map +1 -0
  9. package/dist/src/analysis/feedback-loop.js +226 -0
  10. package/dist/src/analysis/feedback-loop.js.map +1 -0
  11. package/dist/src/analysis/index.d.ts +9 -0
  12. package/dist/src/analysis/index.d.ts.map +1 -0
  13. package/dist/src/analysis/index.js +9 -0
  14. package/dist/src/analysis/index.js.map +1 -0
  15. package/dist/src/analysis/prompt-templates.d.ts +36 -0
  16. package/dist/src/analysis/prompt-templates.d.ts.map +1 -0
  17. package/dist/src/analysis/prompt-templates.js +198 -0
  18. package/dist/src/analysis/prompt-templates.js.map +1 -0
  19. package/dist/src/analysis/trace-summary.d.ts +56 -0
  20. package/dist/src/analysis/trace-summary.d.ts.map +1 -0
  21. package/dist/src/analysis/trace-summary.js +261 -0
  22. package/dist/src/analysis/trace-summary.js.map +1 -0
  23. package/dist/src/commands/handler.d.ts.map +1 -1
  24. package/dist/src/commands/handler.js +194 -2
  25. package/dist/src/commands/handler.js.map +1 -1
  26. package/dist/src/config.d.ts +3 -0
  27. package/dist/src/config.d.ts.map +1 -1
  28. package/dist/src/config.js.map +1 -1
  29. package/dist/src/defaults.d.ts +11 -2
  30. package/dist/src/defaults.d.ts.map +1 -1
  31. package/dist/src/defaults.js +25 -2
  32. package/dist/src/defaults.js.map +1 -1
  33. package/dist/src/errors/index.d.ts +233 -0
  34. package/dist/src/errors/index.d.ts.map +1 -0
  35. package/dist/src/errors/index.js +427 -0
  36. package/dist/src/errors/index.js.map +1 -0
  37. package/dist/src/integrations/auto-compaction.d.ts +33 -0
  38. package/dist/src/integrations/auto-compaction.d.ts.map +1 -1
  39. package/dist/src/integrations/auto-compaction.js +47 -3
  40. package/dist/src/integrations/auto-compaction.js.map +1 -1
  41. package/dist/src/integrations/dead-letter-queue.d.ts +208 -0
  42. package/dist/src/integrations/dead-letter-queue.d.ts.map +1 -0
  43. package/dist/src/integrations/dead-letter-queue.js +458 -0
  44. package/dist/src/integrations/dead-letter-queue.js.map +1 -0
  45. package/dist/src/integrations/economics.d.ts +94 -2
  46. package/dist/src/integrations/economics.d.ts.map +1 -1
  47. package/dist/src/integrations/economics.js +263 -10
  48. package/dist/src/integrations/economics.js.map +1 -1
  49. package/dist/src/integrations/health-check.d.ts +218 -0
  50. package/dist/src/integrations/health-check.d.ts.map +1 -0
  51. package/dist/src/integrations/health-check.js +400 -0
  52. package/dist/src/integrations/health-check.js.map +1 -0
  53. package/dist/src/integrations/index.d.ts +5 -0
  54. package/dist/src/integrations/index.d.ts.map +1 -1
  55. package/dist/src/integrations/index.js +9 -0
  56. package/dist/src/integrations/index.js.map +1 -1
  57. package/dist/src/integrations/mcp-client.d.ts +9 -0
  58. package/dist/src/integrations/mcp-client.d.ts.map +1 -1
  59. package/dist/src/integrations/mcp-client.js +49 -7
  60. package/dist/src/integrations/mcp-client.js.map +1 -1
  61. package/dist/src/integrations/openrouter-pricing.d.ts +28 -3
  62. package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -1
  63. package/dist/src/integrations/openrouter-pricing.js +57 -16
  64. package/dist/src/integrations/openrouter-pricing.js.map +1 -1
  65. package/dist/src/integrations/retry.d.ts +131 -0
  66. package/dist/src/integrations/retry.d.ts.map +1 -0
  67. package/dist/src/integrations/retry.js +233 -0
  68. package/dist/src/integrations/retry.js.map +1 -0
  69. package/dist/src/integrations/sqlite-store.d.ts +42 -0
  70. package/dist/src/integrations/sqlite-store.d.ts.map +1 -1
  71. package/dist/src/integrations/sqlite-store.js +111 -0
  72. package/dist/src/integrations/sqlite-store.js.map +1 -1
  73. package/dist/src/main.js +88 -7
  74. package/dist/src/main.js.map +1 -1
  75. package/dist/src/modes/repl.d.ts.map +1 -1
  76. package/dist/src/modes/repl.js +37 -1
  77. package/dist/src/modes/repl.js.map +1 -1
  78. package/dist/src/modes/tui.d.ts.map +1 -1
  79. package/dist/src/modes/tui.js +46 -5
  80. package/dist/src/modes/tui.js.map +1 -1
  81. package/dist/src/modes.d.ts.map +1 -1
  82. package/dist/src/modes.js +10 -3
  83. package/dist/src/modes.js.map +1 -1
  84. package/dist/src/persistence/schema.d.ts +4 -0
  85. package/dist/src/persistence/schema.d.ts.map +1 -1
  86. package/dist/src/persistence/schema.js +49 -0
  87. package/dist/src/persistence/schema.js.map +1 -1
  88. package/dist/src/providers/adapters/anthropic.d.ts +24 -2
  89. package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
  90. package/dist/src/providers/adapters/anthropic.js +184 -0
  91. package/dist/src/providers/adapters/anthropic.js.map +1 -1
  92. package/dist/src/tools/bash.d.ts.map +1 -1
  93. package/dist/src/tools/bash.js +7 -4
  94. package/dist/src/tools/bash.js.map +1 -1
  95. package/dist/src/tools/file.d.ts.map +1 -1
  96. package/dist/src/tools/file.js +31 -10
  97. package/dist/src/tools/file.js.map +1 -1
  98. package/dist/src/tools/permission.d.ts +12 -0
  99. package/dist/src/tools/permission.d.ts.map +1 -1
  100. package/dist/src/tools/permission.js +136 -0
  101. package/dist/src/tools/permission.js.map +1 -1
  102. package/dist/src/tools/registry.d.ts +23 -1
  103. package/dist/src/tools/registry.d.ts.map +1 -1
  104. package/dist/src/tools/registry.js +77 -17
  105. package/dist/src/tools/registry.js.map +1 -1
  106. package/dist/src/tools/standard.d.ts.map +1 -1
  107. package/dist/src/tools/standard.js +8 -0
  108. package/dist/src/tools/standard.js.map +1 -1
  109. package/dist/src/tools/types.d.ts +20 -1
  110. package/dist/src/tools/types.d.ts.map +1 -1
  111. package/dist/src/tools/types.js.map +1 -1
  112. package/dist/src/tracing/trace-collector.d.ts +209 -3
  113. package/dist/src/tracing/trace-collector.d.ts.map +1 -1
  114. package/dist/src/tracing/trace-collector.js +407 -15
  115. package/dist/src/tracing/trace-collector.js.map +1 -1
  116. package/dist/src/tracing/types.d.ts +476 -2
  117. package/dist/src/tracing/types.d.ts.map +1 -1
  118. package/dist/src/tracing/types.js +25 -0
  119. package/dist/src/tracing/types.js.map +1 -1
  120. package/dist/src/tui/app.d.ts.map +1 -1
  121. package/dist/src/tui/app.js +161 -4
  122. package/dist/src/tui/app.js.map +1 -1
  123. package/dist/src/types.d.ts +35 -0
  124. package/dist/src/types.d.ts.map +1 -1
  125. package/package.json +6 -3
  126. package/dist/src/hello.d.ts +0 -2
  127. package/dist/src/hello.d.ts.map +0 -1
  128. package/dist/src/hello.js +0 -4
  129. package/dist/src/hello.js.map +0 -1
  130. package/dist/src/test-sqlite.d.ts +0 -2
  131. package/dist/src/test-sqlite.d.ts.map +0 -1
  132. package/dist/src/test-sqlite.js +0 -114
  133. package/dist/src/test-sqlite.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.5] - 2026-02-01
11
+
12
+ ### Fixed
13
+ - **SWE-bench Eval Working Directory** - Agent now runs in correct task workspace
14
+ - Was running in attocode/ instead of `/tmp/swe-bench-workspace/<instance>`
15
+ - Caused all file edits to go to wrong location
16
+ - **Cost Calculation** - Fixed $0.0000 cost display in eval runner
17
+ - Added metrics config (was missing `collectCosts: true`)
18
+ - Initialize OpenRouter pricing cache before running tasks
19
+ - **Trace Dashboard Iterations** - Fixed all events showing "Iteration #1"
20
+ - Parser now correctly detects iteration boundaries on LLM request cycles
21
+
22
+ ### Changed
23
+ - **Model-Aware Pricing** - Replaced hardcoded Claude pricing throughout
24
+ - `trace-collector.ts` now uses OpenRouter pricing API
25
+ - Dashboard `token-analyzer.ts` has 20+ model pricing (Claude, GPT, GLM, Gemini, etc.)
26
+ - Default fallback uses Gemini Flash tier (~$0.075/M) instead of Claude Sonnet (~$3/M)
27
+
28
+ ## [0.1.4] - 2026-01-30
29
+
30
+ ### Added
31
+ - **Trace Mode** - Comprehensive system observability
32
+ - Captures full session execution including "thinking" blocks
33
+ - JSONL-based storage in `.traces/` for easy analysis
34
+ - Integrated `trace-dashboard` for visualizing agent decisions
35
+
36
+ ### Changed
37
+ - **Trace Dashboard Consolidation** - Merged `trace-viewer` library into `trace-dashboard`
38
+ - Library code now lives in `tools/trace-dashboard/src/lib/`
39
+ - Simplified dependency structure with no more path aliases
40
+ - Dashboard is now the sole interface for trace analysis
41
+
42
+ ### Fixed
43
+ - `/trace compare` command now points to dashboard URL instead of removed CLI
44
+
10
45
  ## [0.1.3] - 2026-01-29
11
46
 
12
47
  ### Added
@@ -104,7 +139,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
104
139
  - Sandbox execution for bash commands (macOS Seatbelt)
105
140
  - Dangerous operation blocking in strict mode
106
141
 
107
- [Unreleased]: https://github.com/eren23/attocode/compare/v0.1.3...HEAD
142
+ [Unreleased]: https://github.com/eren23/attocode/compare/v0.1.5...HEAD
143
+ [0.1.5]: https://github.com/eren23/attocode/compare/v0.1.4...v0.1.5
144
+ [0.1.4]: https://github.com/eren23/attocode/compare/v0.1.3...v0.1.4
108
145
  [0.1.3]: https://github.com/eren23/attocode/compare/v0.1.2...v0.1.3
109
146
  [0.1.2]: https://github.com/eren23/attocode/compare/v0.1.1...v0.1.2
110
147
  [0.1.1]: https://github.com/eren23/attocode/compare/v0.1.0...v0.1.1
package/README.md CHANGED
@@ -275,6 +275,62 @@ Options:
275
275
  --debug Enable debug logging
276
276
  ```
277
277
 
278
+ ## Tracing & Performance Analysis
279
+
280
+ Attocode includes comprehensive tracing capabilities for understanding agent behavior, debugging issues, and optimizing performance.
281
+
282
+ ### Quick Start
283
+
284
+ ```bash
285
+ # Enable tracing when starting attocode
286
+ attocode --trace
287
+
288
+ # View trace summary after running commands
289
+ /trace
290
+
291
+ # Analyze efficiency issues
292
+ /trace --analyze
293
+ ```
294
+
295
+ ### Trace Commands
296
+
297
+ | Command | Description |
298
+ |---------|-------------|
299
+ | `/trace` | Show current session trace summary |
300
+ | `/trace --analyze` | Run efficiency analysis on trace |
301
+ | `/trace issues` | List detected inefficiencies |
302
+ | `/trace fixes` | List pending improvements |
303
+ | `/trace export [file]` | Export trace JSON for LLM analysis |
304
+
305
+ ### Trace Viewer CLI
306
+
307
+ For detailed offline analysis, use the trace-viewer tool:
308
+
309
+ ```bash
310
+ # Navigate to the trace viewer
311
+ cd tools/trace-viewer
312
+
313
+ # Build (first time)
314
+ npm install && npm run build
315
+
316
+ # View trace summary
317
+ npx tsx bin/trace-viewer.ts .traces/
318
+
319
+ # Timeline view
320
+ npx tsx bin/trace-viewer.ts .traces/ --view timeline
321
+
322
+ # Token flow analysis
323
+ npx tsx bin/trace-viewer.ts .traces/ --view tokens
324
+
325
+ # Generate HTML report
326
+ npx tsx bin/trace-viewer.ts .traces/ --output html
327
+
328
+ # Compare two sessions
329
+ npx tsx bin/trace-viewer.ts compare <baseline.jsonl> <comparison.jsonl>
330
+ ```
331
+
332
+ See [docs/tracing-guide.md](docs/tracing-guide.md) for the complete tracing documentation.
333
+
278
334
  ## Uninstall
279
335
 
280
336
  ```bash
@@ -145,6 +145,11 @@ export declare class ProductionAgent {
145
145
  * Get current state.
146
146
  */
147
147
  getState(): AgentState;
148
+ /**
149
+ * Get the maximum context tokens for this agent's model.
150
+ * Priority: user config > OpenRouter API > hardcoded ModelRegistry > 200K default
151
+ */
152
+ getMaxContextTokens(): number;
148
153
  /**
149
154
  * Get the trace collector (Lesson 26).
150
155
  * Returns null if trace capture is not enabled.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EACX,OAAO,EAGP,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EAEX,kBAAkB,EAClB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAeL,aAAa,EAcb,UAAU,EAIV,YAAY,EASZ,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,KAAK,EAMV,KAAK,WAAW,EAShB,aAAa,EAMb,qBAAqB,EAIrB,iBAAiB,EAGjB,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAwB,MAAM,8BAA8B,CAAC;AAapF;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,KAAK,CAA8B;IAG3C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,kBAAkB,CAA0C;IACpE,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,YAAY,CAA8D;IAGlF,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,KAAK,CAeX;gBAEU,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;QAAE,QAAQ,EAAE,WAAW,CAAA;KAAE;IAwBlF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0iB1B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,EAAE,OAAO,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAoBrF;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmI7C;;OAEG;YACW,oBAAoB;IAkClC;;OAEG;YACW,eAAe;IAsnB7B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAsHrB;;OAEG;YACW,OAAO;IAyNrB;;OAEG;YACW,gBAAgB;IAyR9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAkE9B;;OAEG;IACG,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC;IAOpC;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAkB7B;;;OAGG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;;OAGG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;;OAGG;IACH,wBAAwB,IAAI,qBAAqB,GAAG,IAAI;IAIxD;;;OAGG;IACH,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAIhD;;;;;;OAMG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;QAClD,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IAenB;;;OAGG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,yBAAyB,EAAE,UAAU,GAAG,IAAI,CAAC;IAOxG;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,yBAAyB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAOvF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOnD;;OAEG;IACH,KAAK,IAAI,IAAI;IAyBb;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAYvC;;OAEG;IACH,oBAAoB,IAAI;QACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,YAAY,CAAC;QACtB,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B;IAUD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA8F1B;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE;QACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,IAAI;IAoER;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKnC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAQxB;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAyC1E;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAW9B;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsCrD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAW3C;;;OAGG;IACH,qBAAqB,CAAC,OAAO,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;QAC3C,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,MAAM;IAgBV;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C;;OAEG;IACH,eAAe,IAAI,OAAO,EAAE;IAW5B;;OAEG;IACH,cAAc,IAAI;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI;IAmBR;;OAEG;IACH,eAAe,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,IAAI;IAWR;;OAEG;IACH,WAAW,IAAI;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAKR;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAUvD;;;OAGG;IACH,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU;IAgB5C;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAqBhD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAoBhC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAY1B;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAgBvC;;OAEG;IACH,aAAa,IAAI,OAAO,EAAE;IAO1B;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAO9B;;;;;OAKG;IACH,cAAc,CAAC,KAAK,UAAQ,GAAG,UAAU,GAAG,IAAI;IA6BhD;;OAEG;IACH,SAAS,IAAI,WAAW,EAAE;IAO1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,WAAW,EAAE;IAOlE;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAShD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWtC;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsLvE;;OAEG;IACH,eAAe,IAAI,MAAM;IAWzB;;;OAGG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,WAAW,EAAE,KAAK,CAAC;YACjB,KAAK,EAAE,WAAW,CAAC;YACnB,UAAU,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;QACH,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IA6HF;;;;OAIG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACvE,GACL,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAwCrC;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAW7B;;OAEG;IACH,WAAW,IAAI,OAAO;IAQtB;;OAEG;IACH,gBAAgB;IAIhB;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAQlC;;;OAGG;IACG,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzD;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAI9D;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAI/D;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAIzD;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAI9D;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC;;;;OAIG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,GAAG,cAAc,EAAE;IAY5F;;;OAGG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,GAAG,IAAI;IAoBnF;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAQhG;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIhH;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,OAAO,IAAI,SAAS;IAIpB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IAQvC;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,QAAQ,IAAI,cAAc,EAAE;IAI5B;;OAEG;IACH,oBAAoB,IAAI,cAAc,EAAE;IAIxC;;OAEG;IACH,WAAW;;;;;IAIX;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,uBAAuB,IAAI,MAAM;IAMjC;;OAEG;IACH,cAAc,IAAI,SAAS;IAQ3B;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;OAIG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAgDpG;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAQ/B;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,IAAI,KAAK,EAAE;IAIpB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIzC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKtC;;OAEG;IACH,eAAe,IAAI,KAAK,EAAE;IAI1B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE;IAI1C;;;OAGG;IACH,uBAAuB,IAAI,oBAAoB;IAuB/C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE;QAAE,WAAW,IAAI,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAKzG;;OAEG;IACH,eAAe,IAAI,MAAM;IAKzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAW/B;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,GACjE,eAAe,CAEjB;AAMD;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAsC;IAEpD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAKrC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAKpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI;IAKnD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAAG,IAAI;IAKzD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAAG,IAAI;IAK7D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC,eAAe,CAAC,GAAG,IAAI;IAKnE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,aAAa,CAAC,GAAG,IAAI;IAK/D;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAAG,IAAI;IAK7D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAcpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI;IAKnD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAKvE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,GAAG,eAAe,GAAG,SAAS,CAAC,GAAG,IAAI;IAKxI;;OAEG;IACH,KAAK,IAAI,eAAe;CAMzB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,sBAAsB,CAEnD"}
package/dist/src/agent.js CHANGED
@@ -24,6 +24,9 @@ import { createLSPFileTools, } from './agent-tools/index.js';
24
24
  import { HookManager, MemoryManager, PlanningManager, ObservabilityManager, SafetyManager, RoutingManager, MultiAgentManager, ReActManager, ExecutionPolicyManager, ThreadManager, RulesManager, DEFAULT_RULE_SOURCES, ExecutionEconomicsManager, STANDARD_BUDGET, AgentRegistry, filterToolsForAgent, formatAgentList, createCancellationManager, isCancellationError, createTimeoutToken, createLinkedToken, race, createResourceManager, createLSPManager, createSemanticCacheManager, createSkillManager, formatSkillList, createContextEngineering, stableStringify, createCodebaseContext, buildContextFromChunks, createPendingPlanManager, createInteractivePlanner, createRecursiveContext, createLearningStore, createCompactor, createAutoCompactionManager, createFileChangeTracker, createCapabilitiesRegistry, } from './integrations/index.js';
25
25
  // Lesson 26: Tracing & Evaluation integration
26
26
  import { createTraceCollector } from './tracing/trace-collector.js';
27
+ // Model registry for context window limits
28
+ import { modelRegistry } from './costs/index.js';
29
+ import { getModelContextLength } from './integrations/openrouter-pricing.js';
27
30
  // Spawn agent tool for LLM-driven subagent delegation
28
31
  import { createBoundSpawnAgentTool } from './tools/agent.js';
29
32
  // =============================================================================
@@ -490,15 +493,50 @@ export class ProductionAgent {
490
493
  summaryModel: compactionConfig.summaryModel,
491
494
  });
492
495
  // Create the auto-compaction manager with threshold monitoring
496
+ // Wire reversible compaction through contextEngineering when available
497
+ const compactHandler = this.contextEngineering
498
+ ? async (messages) => {
499
+ // Use contextEngineering's reversible compaction to preserve references
500
+ const summarize = async (msgs) => {
501
+ // Use the basic compactor's summarization capability
502
+ const result = await this.compactor.compact(msgs);
503
+ return result.summary;
504
+ };
505
+ const contextMsgs = messages.map(m => ({
506
+ role: m.role,
507
+ content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content),
508
+ }));
509
+ const result = await this.contextEngineering.compact(contextMsgs, summarize);
510
+ const tokensBefore = this.compactor.estimateTokens(messages);
511
+ const tokensAfter = this.compactor.estimateTokens([{ role: 'assistant', content: result.summary }]);
512
+ return {
513
+ summary: result.summary + (result.reconstructionPrompt ? `\n\n${result.reconstructionPrompt}` : ''),
514
+ tokensBefore,
515
+ tokensAfter,
516
+ preservedMessages: [{ role: 'assistant', content: result.summary }],
517
+ references: result.references,
518
+ };
519
+ }
520
+ : undefined;
521
+ // Get model's actual context window - try OpenRouter first (real API data),
522
+ // then fall back to hardcoded ModelRegistry, then config, then default
523
+ const openRouterContext = getModelContextLength(this.config.model || '');
524
+ const registryInfo = modelRegistry.getModel(this.config.model || '');
525
+ const registryContext = registryInfo?.capabilities?.maxContextTokens;
526
+ const maxContextTokens = this.config.maxContextTokens
527
+ ?? openRouterContext // From OpenRouter API (e.g., GLM-4.7 = 202752)
528
+ ?? registryContext // From hardcoded registry (Claude, GPT-4o, etc.)
529
+ ?? 200000; // Fallback to 200K
493
530
  this.autoCompactionManager = createAutoCompactionManager(this.compactor, {
494
531
  mode: compactionConfig.mode ?? 'auto',
495
- warningThreshold: 0.80,
496
- autoCompactThreshold: 0.90,
497
- hardLimitThreshold: 0.98,
532
+ warningThreshold: 0.70, // Warn at 70% of model's context
533
+ autoCompactThreshold: 0.80, // Compact at 80% (changed from 0.90)
534
+ hardLimitThreshold: 0.95, // Hard limit at 95%
498
535
  preserveRecentUserMessages: Math.ceil((compactionConfig.preserveRecentCount ?? 10) / 2),
499
536
  preserveRecentAssistantMessages: Math.ceil((compactionConfig.preserveRecentCount ?? 10) / 2),
500
537
  cooldownMs: 60000, // 1 minute cooldown
501
- maxContextTokens: this.config.maxContextTokens ?? 200000,
538
+ maxContextTokens, // Dynamic from model registry or config
539
+ compactHandler, // Use reversible compaction when contextEngineering is available
502
540
  });
503
541
  // Forward compactor events to observability
504
542
  this.compactor.on(event => {
@@ -626,9 +664,19 @@ export class ProductionAgent {
626
664
  const traceId = this.observability?.tracer?.startTrace('agent.run') || `trace-${Date.now()}`;
627
665
  this.emit({ type: 'start', task, traceId });
628
666
  this.observability?.logger?.info('Agent started', { task });
629
- // Lesson 26: Start trace capture session
630
- const traceSessionId = `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
631
- await this.traceCollector?.startSession(traceSessionId, task, this.config.model || 'default', {});
667
+ // Lesson 26: Start trace capture
668
+ // If session is already active (managed by REPL), start a task within it.
669
+ // Otherwise, start a new session for backward compatibility (single-task mode).
670
+ const taskId = `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
671
+ if (this.traceCollector?.isSessionActive()) {
672
+ // Session managed by REPL - just start a task
673
+ await this.traceCollector.startTask(taskId, task);
674
+ }
675
+ else {
676
+ // Single-task mode (backward compatibility) - start session with task
677
+ const traceSessionId = `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
678
+ await this.traceCollector?.startSession(traceSessionId, task, this.config.model || 'default', {});
679
+ }
632
680
  try {
633
681
  // Check for cancellation before starting
634
682
  cancellationToken?.throwIfCancellationRequested();
@@ -659,8 +707,14 @@ export class ProductionAgent {
659
707
  };
660
708
  this.emit({ type: 'complete', result });
661
709
  this.observability?.logger?.info('Agent completed', { duration, success: true });
662
- // Lesson 26: End trace capture session
663
- await this.traceCollector?.endSession({ success: true, output: response });
710
+ // Lesson 26: End trace capture
711
+ // If task is active (REPL mode), end the task. Otherwise end the session (single-task mode).
712
+ if (this.traceCollector?.isTaskActive()) {
713
+ await this.traceCollector.endTask({ success: true, output: response });
714
+ }
715
+ else if (this.traceCollector?.isSessionActive()) {
716
+ await this.traceCollector.endSession({ success: true, output: response });
717
+ }
664
718
  return result;
665
719
  }
666
720
  catch (err) {
@@ -672,8 +726,13 @@ export class ProductionAgent {
672
726
  const cleanupDuration = Date.now() - cleanupStart;
673
727
  this.emit({ type: 'cancellation.completed', cleanupDuration });
674
728
  this.observability?.logger?.info('Agent cancelled', { reason: error.message, cleanupDuration });
675
- // Lesson 26: End trace capture session on cancellation
676
- await this.traceCollector?.endSession({ success: false, failureReason: `Cancelled: ${error.message}` });
729
+ // Lesson 26: End trace capture on cancellation
730
+ if (this.traceCollector?.isTaskActive()) {
731
+ await this.traceCollector.endTask({ success: false, failureReason: `Cancelled: ${error.message}` });
732
+ }
733
+ else if (this.traceCollector?.isSessionActive()) {
734
+ await this.traceCollector.endSession({ success: false, failureReason: `Cancelled: ${error.message}` });
735
+ }
677
736
  return {
678
737
  success: false,
679
738
  response: '',
@@ -687,8 +746,13 @@ export class ProductionAgent {
687
746
  await this.observability?.tracer?.endTrace();
688
747
  this.emit({ type: 'error', error: error.message });
689
748
  this.observability?.logger?.error('Agent failed', { error: error.message });
690
- // Lesson 26: End trace capture session on error
691
- await this.traceCollector?.endSession({ success: false, failureReason: error.message });
749
+ // Lesson 26: End trace capture on error
750
+ if (this.traceCollector?.isTaskActive()) {
751
+ await this.traceCollector.endTask({ success: false, failureReason: error.message });
752
+ }
753
+ else if (this.traceCollector?.isSessionActive()) {
754
+ await this.traceCollector.endSession({ success: false, failureReason: error.message });
755
+ }
692
756
  return {
693
757
  success: false,
694
758
  response: '',
@@ -761,6 +825,11 @@ export class ProductionAgent {
761
825
  // Agent loop - now uses economics-based budget checking
762
826
  while (true) {
763
827
  this.state.iteration++;
828
+ // Record iteration start for tracing
829
+ this.traceCollector?.record({
830
+ type: 'iteration.start',
831
+ data: { iterationNumber: this.state.iteration },
832
+ });
764
833
  // =======================================================================
765
834
  // CANCELLATION CHECK
766
835
  // =======================================================================
@@ -791,8 +860,13 @@ export class ProductionAgent {
791
860
  // ECONOMICS CHECK (Token Budget) - replaces hard iteration limit
792
861
  // With recovery: try compaction before giving up on token limits
793
862
  // =======================================================================
863
+ let forceTextOnly = false; // Track if we should skip tool execution
864
+ let budgetInjectedPrompt;
794
865
  if (this.economics) {
795
866
  const budgetCheck = this.economics.checkBudget();
867
+ // Capture forceTextOnly and injectedPrompt for later use
868
+ forceTextOnly = budgetCheck.forceTextOnly ?? false;
869
+ budgetInjectedPrompt = budgetCheck.injectedPrompt;
796
870
  if (!budgetCheck.canContinue) {
797
871
  // ===================================================================
798
872
  // RECOVERY ATTEMPT: Try emergency context reduction before giving up
@@ -895,6 +969,28 @@ export class ProductionAgent {
895
969
  }
896
970
  }
897
971
  // =======================================================================
972
+ // INTELLIGENT LOOP DETECTION & NUDGE INJECTION
973
+ // Uses economics system for doom loops, exploration saturation, etc.
974
+ // =======================================================================
975
+ if (this.economics && budgetInjectedPrompt) {
976
+ // Inject contextual guidance from economics system
977
+ messages.push({
978
+ role: 'user',
979
+ content: budgetInjectedPrompt,
980
+ });
981
+ const loopState = this.economics.getLoopState();
982
+ const phaseState = this.economics.getPhaseState();
983
+ this.observability?.logger?.info('Loop detection - injecting guidance', {
984
+ iteration: this.state.iteration,
985
+ doomLoop: loopState.doomLoopDetected,
986
+ phase: phaseState.phase,
987
+ filesRead: phaseState.uniqueFilesRead,
988
+ filesModified: phaseState.filesModified,
989
+ shouldTransition: phaseState.shouldTransition,
990
+ forceTextOnly,
991
+ });
992
+ }
993
+ // =======================================================================
898
994
  // RECITATION INJECTION (Trick Q) - Combat "lost in middle" attention
899
995
  // =======================================================================
900
996
  if (this.contextEngineering) {
@@ -1072,8 +1168,17 @@ export class ProductionAgent {
1072
1168
  this.state.messages.push(assistantMessage);
1073
1169
  lastResponse = response.content;
1074
1170
  // Check for tool calls
1075
- if (!response.toolCalls || response.toolCalls.length === 0) {
1076
- // No tool calls, agent is done - compact tool outputs to save context
1171
+ // When forceTextOnly is set (max iterations reached), ignore any tool calls
1172
+ const hasToolCalls = response.toolCalls && response.toolCalls.length > 0;
1173
+ if (!hasToolCalls || forceTextOnly) {
1174
+ // Log if we're ignoring tool calls due to forceTextOnly
1175
+ if (forceTextOnly && hasToolCalls) {
1176
+ this.observability?.logger?.info('Ignoring tool calls due to forceTextOnly (max steps reached)', {
1177
+ toolCallCount: response.toolCalls?.length,
1178
+ iteration: this.state.iteration,
1179
+ });
1180
+ }
1181
+ // No tool calls (or forced to ignore), agent is done - compact tool outputs to save context
1077
1182
  // The model has "consumed" the tool outputs and produced a response,
1078
1183
  // so we can replace verbose outputs with compact summaries
1079
1184
  this.compactToolOutputs();
@@ -1091,13 +1196,19 @@ export class ProductionAgent {
1091
1196
  continuations,
1092
1197
  });
1093
1198
  }
1199
+ // Record iteration end for tracing (no tool calls case)
1200
+ this.traceCollector?.record({
1201
+ type: 'iteration.end',
1202
+ data: { iterationNumber: this.state.iteration },
1203
+ });
1094
1204
  break;
1095
1205
  }
1096
- // Execute tool calls
1097
- const toolResults = await this.executeToolCalls(response.toolCalls);
1206
+ // Execute tool calls (we know toolCalls is defined here due to the check above)
1207
+ const toolCalls = response.toolCalls;
1208
+ const toolResults = await this.executeToolCalls(toolCalls);
1098
1209
  // Record tool calls for economics/progress tracking
1099
- for (let i = 0; i < response.toolCalls.length; i++) {
1100
- const toolCall = response.toolCalls[i];
1210
+ for (let i = 0; i < toolCalls.length; i++) {
1211
+ const toolCall = toolCalls[i];
1101
1212
  const result = toolResults[i];
1102
1213
  this.economics?.recordToolCall(toolCall.name, toolCall.arguments, result?.result);
1103
1214
  }
@@ -1188,7 +1299,7 @@ export class ProductionAgent {
1188
1299
  }
1189
1300
  // Emit context health after adding tool results
1190
1301
  const currentTokenEstimate = this.estimateContextTokens(messages);
1191
- const contextLimit = this.config.maxContextTokens || 100000;
1302
+ const contextLimit = this.getMaxContextTokens();
1192
1303
  const percentUsed = Math.round((currentTokenEstimate / contextLimit) * 100);
1193
1304
  const avgTokensPerExchange = currentTokenEstimate / Math.max(1, this.state.iteration);
1194
1305
  const remainingTokens = contextLimit - currentTokenEstimate;
@@ -1200,6 +1311,11 @@ export class ProductionAgent {
1200
1311
  estimatedExchanges,
1201
1312
  percentUsed,
1202
1313
  });
1314
+ // Record iteration end for tracing (after tool execution)
1315
+ this.traceCollector?.record({
1316
+ type: 'iteration.end',
1317
+ data: { iterationNumber: this.state.iteration },
1318
+ });
1203
1319
  }
1204
1320
  // =======================================================================
1205
1321
  // REFLECTION (Lesson 16)
@@ -1359,7 +1475,7 @@ export class ProductionAgent {
1359
1475
  return sum + Math.ceil(content.length / 3.5); // ~3.5 chars per token estimate
1360
1476
  }, 0);
1361
1477
  // Use context window size, not output token limit
1362
- const contextLimit = this.config.maxContextTokens || 100000;
1478
+ const contextLimit = this.getMaxContextTokens();
1363
1479
  this.emit({
1364
1480
  type: 'insight.context',
1365
1481
  currentTokens: estimatedTokens,
@@ -1445,6 +1561,27 @@ export class ProductionAgent {
1445
1561
  ? [{ model, rejected: 'complexity threshold exceeded' }]
1446
1562
  : undefined,
1447
1563
  });
1564
+ // Enhanced tracing: Record routing decision
1565
+ this.traceCollector?.record({
1566
+ type: 'decision',
1567
+ data: {
1568
+ type: 'routing',
1569
+ decision: `Selected model: ${actualModel}`,
1570
+ outcome: 'allowed',
1571
+ reasoning: actualModel !== model
1572
+ ? `Task complexity ${(complexity * 100).toFixed(0)}% exceeded threshold - routed to ${actualModel}`
1573
+ : `Default model ${model} suitable for task complexity ${(complexity * 100).toFixed(0)}%`,
1574
+ factors: [
1575
+ { name: 'complexity', value: complexity, weight: 0.8 },
1576
+ { name: 'hasTools', value: context.hasTools, weight: 0.1 },
1577
+ { name: 'taskType', value: context.taskType, weight: 0.1 },
1578
+ ],
1579
+ alternatives: actualModel !== model
1580
+ ? [{ option: model, reason: 'complexity threshold exceeded', rejected: true }]
1581
+ : undefined,
1582
+ confidence: 0.9,
1583
+ },
1584
+ });
1448
1585
  }
1449
1586
  else {
1450
1587
  response = await this.provider.chat(messages, {
@@ -1478,6 +1615,19 @@ export class ProductionAgent {
1478
1615
  durationMs: duration,
1479
1616
  },
1480
1617
  });
1618
+ // Enhanced tracing: Record thinking/reasoning blocks if present
1619
+ if (response.thinking) {
1620
+ this.traceCollector?.record({
1621
+ type: 'llm.thinking',
1622
+ data: {
1623
+ requestId,
1624
+ content: response.thinking,
1625
+ summarized: response.thinking.length > 10000, // Summarize if very long
1626
+ originalLength: response.thinking.length,
1627
+ durationMs: duration,
1628
+ },
1629
+ });
1630
+ }
1481
1631
  // Record metrics
1482
1632
  this.observability?.metrics?.recordLLMCall(response.usage?.inputTokens || 0, response.usage?.outputTokens || 0, duration, actualModel, response.usage?.cost // Actual cost from provider (e.g., OpenRouter)
1483
1633
  );
@@ -1551,6 +1701,7 @@ export class ProductionAgent {
1551
1701
  type: 'plan.change.queued',
1552
1702
  tool: toolCall.name,
1553
1703
  changeId: change?.id,
1704
+ summary: this.formatToolArgsForPlan(toolCall.name, toolCall.arguments),
1554
1705
  });
1555
1706
  // Return a message indicating the change was queued
1556
1707
  const queueMessage = `[PLAN MODE] Change queued for approval:\n` +
@@ -1590,6 +1741,23 @@ export class ProductionAgent {
1590
1741
  : 'allowed',
1591
1742
  policyMatch: evaluation.reason,
1592
1743
  });
1744
+ // Enhanced tracing: Record policy decision
1745
+ this.traceCollector?.record({
1746
+ type: 'decision',
1747
+ data: {
1748
+ type: 'policy',
1749
+ decision: `Tool ${toolCall.name}: ${evaluation.policy}`,
1750
+ outcome: evaluation.policy === 'forbidden' ? 'blocked'
1751
+ : evaluation.policy === 'prompt' ? 'deferred'
1752
+ : 'allowed',
1753
+ reasoning: evaluation.reason,
1754
+ factors: [
1755
+ { name: 'policy', value: evaluation.policy },
1756
+ { name: 'requiresApproval', value: evaluation.requiresApproval ?? false },
1757
+ ],
1758
+ confidence: evaluation.intent?.confidence ?? 0.8,
1759
+ },
1760
+ });
1593
1761
  // Handle forbidden policy - always block
1594
1762
  if (evaluation.policy === 'forbidden') {
1595
1763
  throw new Error(`Forbidden by policy: ${evaluation.reason}`);
@@ -1855,6 +2023,12 @@ export class ProductionAgent {
1855
2023
  if (toolName === 'delete_file') {
1856
2024
  return `Delete: ${args.path || args.file_path}`;
1857
2025
  }
2026
+ if (toolName === 'spawn_agent' || toolName === 'researcher') {
2027
+ const task = String(args.task || args.prompt || args.goal || '');
2028
+ const model = args.model ? ` (${args.model})` : '';
2029
+ const firstLine = task.split('\n')[0].slice(0, 100);
2030
+ return `${firstLine}${task.length > 100 ? '...' : ''}${model}`;
2031
+ }
1858
2032
  // Generic
1859
2033
  return `Args: ${JSON.stringify(args).slice(0, 100)}...`;
1860
2034
  }
@@ -1882,6 +2056,27 @@ export class ProductionAgent {
1882
2056
  getState() {
1883
2057
  return { ...this.state };
1884
2058
  }
2059
+ /**
2060
+ * Get the maximum context tokens for this agent's model.
2061
+ * Priority: user config > OpenRouter API > hardcoded ModelRegistry > 200K default
2062
+ */
2063
+ getMaxContextTokens() {
2064
+ if (this.config.maxContextTokens) {
2065
+ return this.config.maxContextTokens;
2066
+ }
2067
+ // Try OpenRouter API cache (has real data for GLM-4.7, etc.)
2068
+ const openRouterContext = getModelContextLength(this.config.model || '');
2069
+ if (openRouterContext) {
2070
+ return openRouterContext;
2071
+ }
2072
+ // Fall back to hardcoded registry
2073
+ const registryInfo = modelRegistry.getModel(this.config.model || '');
2074
+ if (registryInfo?.capabilities?.maxContextTokens) {
2075
+ return registryInfo.capabilities.maxContextTokens;
2076
+ }
2077
+ // Default
2078
+ return 200000;
2079
+ }
1885
2080
  /**
1886
2081
  * Get the trace collector (Lesson 26).
1887
2082
  * Returns null if trace capture is not enabled.
@@ -2602,6 +2797,8 @@ export class ProductionAgent {
2602
2797
  this.emit({ type: 'agent.spawn', agentId: `spawn-${Date.now()}`, name: agentName, task });
2603
2798
  this.observability?.logger?.info('Spawning agent', { name: agentName, task });
2604
2799
  const startTime = Date.now();
2800
+ const childSessionId = `subagent-${agentName}-${Date.now()}`;
2801
+ const childTraceId = `trace-${childSessionId}`;
2605
2802
  try {
2606
2803
  // Filter tools for this agent
2607
2804
  const agentTools = filterToolsForAgent(agentDef, Array.from(this.tools.values()));
@@ -2674,6 +2871,32 @@ export class ProductionAgent {
2674
2871
  },
2675
2872
  };
2676
2873
  this.emit({ type: 'agent.complete', agentId: agentName, success: result.success });
2874
+ // Enhanced tracing: Record subagent completion
2875
+ this.traceCollector?.record({
2876
+ type: 'subagent.link',
2877
+ data: {
2878
+ parentSessionId: this.traceCollector.getSessionId() || 'unknown',
2879
+ childSessionId,
2880
+ childTraceId,
2881
+ childConfig: {
2882
+ agentType: agentName,
2883
+ model: resolvedModel || 'default',
2884
+ task,
2885
+ tools: agentTools.map(t => t.name),
2886
+ },
2887
+ spawnContext: {
2888
+ reason: `Delegated task: ${task.slice(0, 100)}`,
2889
+ expectedOutcome: agentDef.description,
2890
+ parentIteration: this.state.iteration,
2891
+ },
2892
+ result: {
2893
+ success: result.success,
2894
+ summary: (result.response || result.error || '').slice(0, 500),
2895
+ tokensUsed: result.metrics.totalTokens,
2896
+ durationMs: duration,
2897
+ },
2898
+ },
2899
+ });
2677
2900
  await subAgent.cleanup();
2678
2901
  return spawnResult;
2679
2902
  }