kagent-ts 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 (349) hide show
  1. package/LICENSE +68 -21
  2. package/README.md +27 -371
  3. package/dist/compression/progressive-compressor.d.ts +66 -0
  4. package/dist/compression/progressive-compressor.d.ts.map +1 -0
  5. package/dist/compression/progressive-compressor.js +367 -0
  6. package/dist/compression/progressive-compressor.js.map +1 -0
  7. package/dist/compression/types.d.ts +1 -5
  8. package/dist/compression/types.d.ts.map +1 -1
  9. package/dist/context/context-manager.d.ts +34 -15
  10. package/dist/context/context-manager.d.ts.map +1 -1
  11. package/dist/context/context-manager.js +78 -28
  12. package/dist/context/context-manager.js.map +1 -1
  13. package/dist/context/types.d.ts +20 -4
  14. package/dist/context/types.d.ts.map +1 -1
  15. package/dist/core/agent.d.ts +407 -35
  16. package/dist/core/agent.d.ts.map +1 -1
  17. package/dist/core/agent.js +685 -70
  18. package/dist/core/agent.js.map +1 -1
  19. package/dist/core/fusion-agent.d.ts +207 -0
  20. package/dist/core/fusion-agent.d.ts.map +1 -0
  21. package/dist/core/fusion-agent.js +769 -0
  22. package/dist/core/fusion-agent.js.map +1 -0
  23. package/dist/core/hooks.d.ts +19 -7
  24. package/dist/core/hooks.d.ts.map +1 -1
  25. package/dist/core/plan-solve-agent.d.ts +1 -15
  26. package/dist/core/plan-solve-agent.d.ts.map +1 -1
  27. package/dist/core/plan-solve-agent.js +144 -117
  28. package/dist/core/plan-solve-agent.js.map +1 -1
  29. package/dist/core/react-agent.d.ts +0 -13
  30. package/dist/core/react-agent.d.ts.map +1 -1
  31. package/dist/core/react-agent.js +128 -101
  32. package/dist/core/react-agent.js.map +1 -1
  33. package/dist/core/response-schema.d.ts +65 -0
  34. package/dist/core/response-schema.d.ts.map +1 -1
  35. package/dist/core/response-schema.js +174 -1
  36. package/dist/core/response-schema.js.map +1 -1
  37. package/dist/core/system-prompts.d.ts +27 -0
  38. package/dist/core/system-prompts.d.ts.map +1 -0
  39. package/dist/core/system-prompts.js +112 -0
  40. package/dist/core/system-prompts.js.map +1 -0
  41. package/dist/eval/benchmark.d.ts +81 -0
  42. package/dist/eval/benchmark.d.ts.map +1 -0
  43. package/dist/eval/benchmark.js +292 -0
  44. package/dist/eval/benchmark.js.map +1 -0
  45. package/dist/eval/eval-runner.d.ts +79 -0
  46. package/dist/eval/eval-runner.d.ts.map +1 -0
  47. package/dist/eval/eval-runner.js +252 -0
  48. package/dist/eval/eval-runner.js.map +1 -0
  49. package/dist/eval/index.d.ts +7 -0
  50. package/dist/eval/index.d.ts.map +1 -0
  51. package/dist/eval/index.js +13 -0
  52. package/dist/eval/index.js.map +1 -0
  53. package/dist/eval/tool-call-evaluator.d.ts +72 -0
  54. package/dist/eval/tool-call-evaluator.d.ts.map +1 -0
  55. package/dist/eval/tool-call-evaluator.js +265 -0
  56. package/dist/eval/tool-call-evaluator.js.map +1 -0
  57. package/dist/eval/types.d.ts +219 -0
  58. package/dist/eval/types.d.ts.map +1 -0
  59. package/dist/eval/types.js +3 -0
  60. package/dist/eval/types.js.map +1 -0
  61. package/dist/index.d.ts +61 -14
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +121 -8
  64. package/dist/index.js.map +1 -1
  65. package/dist/llm/anthropic-provider.d.ts +141 -0
  66. package/dist/llm/anthropic-provider.d.ts.map +1 -0
  67. package/dist/llm/anthropic-provider.js +486 -0
  68. package/dist/llm/anthropic-provider.js.map +1 -0
  69. package/dist/llm/errors.d.ts +26 -0
  70. package/dist/llm/errors.d.ts.map +1 -0
  71. package/dist/llm/errors.js +19 -0
  72. package/dist/llm/errors.js.map +1 -0
  73. package/dist/llm/factory.d.ts +73 -0
  74. package/dist/llm/factory.d.ts.map +1 -0
  75. package/dist/llm/factory.js +77 -0
  76. package/dist/llm/factory.js.map +1 -0
  77. package/dist/llm/fallback-provider.d.ts +47 -0
  78. package/dist/llm/fallback-provider.d.ts.map +1 -0
  79. package/dist/llm/fallback-provider.js +91 -0
  80. package/dist/llm/fallback-provider.js.map +1 -0
  81. package/dist/llm/interface.d.ts +54 -11
  82. package/dist/llm/interface.d.ts.map +1 -1
  83. package/dist/llm/interface.js +34 -0
  84. package/dist/llm/interface.js.map +1 -1
  85. package/dist/llm/model-router.d.ts +126 -0
  86. package/dist/llm/model-router.d.ts.map +1 -0
  87. package/dist/llm/model-router.js +178 -0
  88. package/dist/llm/model-router.js.map +1 -0
  89. package/dist/llm/openai-provider.d.ts +8 -32
  90. package/dist/llm/openai-provider.d.ts.map +1 -1
  91. package/dist/llm/openai-provider.js +27 -60
  92. package/dist/llm/openai-provider.js.map +1 -1
  93. package/dist/llm/rate-limiter.d.ts +41 -0
  94. package/dist/llm/rate-limiter.d.ts.map +1 -0
  95. package/dist/llm/rate-limiter.js +93 -0
  96. package/dist/llm/rate-limiter.js.map +1 -0
  97. package/dist/llm/retry.d.ts +26 -0
  98. package/dist/llm/retry.d.ts.map +1 -0
  99. package/dist/llm/retry.js +44 -0
  100. package/dist/llm/retry.js.map +1 -0
  101. package/dist/llm/token-budget.d.ts +97 -0
  102. package/dist/llm/token-budget.d.ts.map +1 -0
  103. package/dist/llm/token-budget.js +115 -0
  104. package/dist/llm/token-budget.js.map +1 -0
  105. package/dist/logging/index.d.ts +2 -0
  106. package/dist/logging/index.d.ts.map +1 -0
  107. package/dist/logging/index.js +7 -0
  108. package/dist/logging/index.js.map +1 -0
  109. package/dist/logging/logger.d.ts +38 -0
  110. package/dist/logging/logger.d.ts.map +1 -0
  111. package/dist/logging/logger.js +34 -0
  112. package/dist/logging/logger.js.map +1 -0
  113. package/dist/mcp/index.d.ts +4 -0
  114. package/dist/mcp/index.d.ts.map +1 -0
  115. package/dist/mcp/index.js +8 -0
  116. package/dist/mcp/index.js.map +1 -0
  117. package/dist/mcp/mcp-client-manager.d.ts +72 -0
  118. package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
  119. package/dist/mcp/mcp-client-manager.js +235 -0
  120. package/dist/mcp/mcp-client-manager.js.map +1 -0
  121. package/dist/mcp/mcp-types.d.ts +58 -0
  122. package/dist/mcp/mcp-types.d.ts.map +1 -0
  123. package/dist/mcp/mcp-types.js +20 -0
  124. package/dist/mcp/mcp-types.js.map +1 -0
  125. package/dist/memory/index.d.ts +3 -0
  126. package/dist/memory/index.d.ts.map +1 -0
  127. package/dist/memory/index.js +6 -0
  128. package/dist/memory/index.js.map +1 -0
  129. package/dist/memory/memory-manager.d.ts +119 -0
  130. package/dist/memory/memory-manager.d.ts.map +1 -0
  131. package/dist/memory/memory-manager.js +334 -0
  132. package/dist/memory/memory-manager.js.map +1 -0
  133. package/dist/messages/types.d.ts +2 -0
  134. package/dist/messages/types.d.ts.map +1 -1
  135. package/dist/orchestrator/index.d.ts +5 -0
  136. package/dist/orchestrator/index.d.ts.map +1 -0
  137. package/dist/orchestrator/index.js +13 -0
  138. package/dist/orchestrator/index.js.map +1 -0
  139. package/dist/orchestrator/json-extractor.d.ts +18 -0
  140. package/dist/orchestrator/json-extractor.d.ts.map +1 -0
  141. package/dist/orchestrator/json-extractor.js +111 -0
  142. package/dist/orchestrator/json-extractor.js.map +1 -0
  143. package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
  144. package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
  145. package/dist/orchestrator/orchestrator-agent.js +675 -0
  146. package/dist/orchestrator/orchestrator-agent.js.map +1 -0
  147. package/dist/orchestrator/orchestrator-response.d.ts +40 -0
  148. package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
  149. package/dist/orchestrator/orchestrator-response.js +275 -0
  150. package/dist/orchestrator/orchestrator-response.js.map +1 -0
  151. package/dist/orchestrator/orchestrator-types.d.ts +116 -0
  152. package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
  153. package/dist/orchestrator/orchestrator-types.js +3 -0
  154. package/dist/orchestrator/orchestrator-types.js.map +1 -0
  155. package/dist/preferences/preference-manager.d.ts +8 -3
  156. package/dist/preferences/preference-manager.d.ts.map +1 -1
  157. package/dist/preferences/preference-manager.js +17 -4
  158. package/dist/preferences/preference-manager.js.map +1 -1
  159. package/dist/rag/chroma-store.d.ts +52 -0
  160. package/dist/rag/chroma-store.d.ts.map +1 -0
  161. package/dist/rag/chroma-store.js +110 -0
  162. package/dist/rag/chroma-store.js.map +1 -0
  163. package/dist/rag/document-loader.d.ts +21 -0
  164. package/dist/rag/document-loader.d.ts.map +1 -0
  165. package/dist/rag/document-loader.js +129 -0
  166. package/dist/rag/document-loader.js.map +1 -0
  167. package/dist/rag/embedding-provider.d.ts +36 -0
  168. package/dist/rag/embedding-provider.d.ts.map +1 -0
  169. package/dist/rag/embedding-provider.js +74 -0
  170. package/dist/rag/embedding-provider.js.map +1 -0
  171. package/dist/rag/index.d.ts +17 -0
  172. package/dist/rag/index.d.ts.map +1 -0
  173. package/dist/rag/index.js +27 -0
  174. package/dist/rag/index.js.map +1 -0
  175. package/dist/rag/keyword-index.d.ts +53 -0
  176. package/dist/rag/keyword-index.d.ts.map +1 -0
  177. package/dist/rag/keyword-index.js +161 -0
  178. package/dist/rag/keyword-index.js.map +1 -0
  179. package/dist/rag/llm-reranker.d.ts +36 -0
  180. package/dist/rag/llm-reranker.d.ts.map +1 -0
  181. package/dist/rag/llm-reranker.js +95 -0
  182. package/dist/rag/llm-reranker.js.map +1 -0
  183. package/dist/rag/rag-manager.d.ts +54 -0
  184. package/dist/rag/rag-manager.d.ts.map +1 -0
  185. package/dist/rag/rag-manager.js +179 -0
  186. package/dist/rag/rag-manager.js.map +1 -0
  187. package/dist/rag/rag-types.d.ts +143 -0
  188. package/dist/rag/rag-types.d.ts.map +1 -0
  189. package/dist/rag/rag-types.js +9 -0
  190. package/dist/rag/rag-types.js.map +1 -0
  191. package/dist/rag/rrf.d.ts +47 -0
  192. package/dist/rag/rrf.d.ts.map +1 -0
  193. package/dist/rag/rrf.js +70 -0
  194. package/dist/rag/rrf.js.map +1 -0
  195. package/dist/rag/search-knowledge.d.ts +24 -0
  196. package/dist/rag/search-knowledge.d.ts.map +1 -0
  197. package/dist/rag/search-knowledge.js +86 -0
  198. package/dist/rag/search-knowledge.js.map +1 -0
  199. package/dist/rag/text-splitter.d.ts +25 -0
  200. package/dist/rag/text-splitter.d.ts.map +1 -0
  201. package/dist/rag/text-splitter.js +136 -0
  202. package/dist/rag/text-splitter.js.map +1 -0
  203. package/dist/rag/vector-store.d.ts +34 -0
  204. package/dist/rag/vector-store.d.ts.map +1 -0
  205. package/dist/rag/vector-store.js +73 -0
  206. package/dist/rag/vector-store.js.map +1 -0
  207. package/dist/reflection/error-notebook.d.ts +125 -0
  208. package/dist/reflection/error-notebook.d.ts.map +1 -0
  209. package/dist/reflection/error-notebook.js +368 -0
  210. package/dist/reflection/error-notebook.js.map +1 -0
  211. package/dist/reflection/index.d.ts +8 -0
  212. package/dist/reflection/index.d.ts.map +1 -0
  213. package/dist/reflection/index.js +12 -0
  214. package/dist/reflection/index.js.map +1 -0
  215. package/dist/reflection/memory-reflector.d.ts +97 -0
  216. package/dist/reflection/memory-reflector.d.ts.map +1 -0
  217. package/dist/reflection/memory-reflector.js +215 -0
  218. package/dist/reflection/memory-reflector.js.map +1 -0
  219. package/dist/reflection/reflection-agent.d.ts +105 -0
  220. package/dist/reflection/reflection-agent.d.ts.map +1 -0
  221. package/dist/reflection/reflection-agent.js +234 -0
  222. package/dist/reflection/reflection-agent.js.map +1 -0
  223. package/dist/reflection/reflection-hook.d.ts +50 -0
  224. package/dist/reflection/reflection-hook.d.ts.map +1 -0
  225. package/dist/reflection/reflection-hook.js +108 -0
  226. package/dist/reflection/reflection-hook.js.map +1 -0
  227. package/dist/rules/project-rules.d.ts +47 -0
  228. package/dist/rules/project-rules.d.ts.map +1 -0
  229. package/dist/rules/project-rules.js +166 -0
  230. package/dist/rules/project-rules.js.map +1 -0
  231. package/dist/security/boundaries.d.ts +81 -0
  232. package/dist/security/boundaries.d.ts.map +1 -0
  233. package/dist/security/boundaries.js +158 -0
  234. package/dist/security/boundaries.js.map +1 -0
  235. package/dist/security/index.d.ts +2 -0
  236. package/dist/security/index.d.ts.map +1 -0
  237. package/dist/security/index.js +11 -0
  238. package/dist/security/index.js.map +1 -0
  239. package/dist/session/session-types.d.ts +25 -4
  240. package/dist/session/session-types.d.ts.map +1 -1
  241. package/dist/skills/file-skill-loader.d.ts +9 -20
  242. package/dist/skills/file-skill-loader.d.ts.map +1 -1
  243. package/dist/skills/file-skill-loader.js +35 -164
  244. package/dist/skills/file-skill-loader.js.map +1 -1
  245. package/dist/skills/index.d.ts +1 -1
  246. package/dist/skills/index.d.ts.map +1 -1
  247. package/dist/skills/index.js +1 -2
  248. package/dist/skills/index.js.map +1 -1
  249. package/dist/skills/skill-manager.d.ts +22 -29
  250. package/dist/skills/skill-manager.d.ts.map +1 -1
  251. package/dist/skills/skill-manager.js +63 -85
  252. package/dist/skills/skill-manager.js.map +1 -1
  253. package/dist/skills/types.d.ts +4 -16
  254. package/dist/skills/types.d.ts.map +1 -1
  255. package/dist/subagent/index.d.ts +4 -0
  256. package/dist/subagent/index.d.ts.map +1 -0
  257. package/dist/subagent/index.js +8 -0
  258. package/dist/subagent/index.js.map +1 -0
  259. package/dist/subagent/subagent-loader.d.ts +53 -0
  260. package/dist/subagent/subagent-loader.d.ts.map +1 -0
  261. package/dist/subagent/subagent-loader.js +155 -0
  262. package/dist/subagent/subagent-loader.js.map +1 -0
  263. package/dist/subagent/subagent-manager.d.ts +161 -0
  264. package/dist/subagent/subagent-manager.d.ts.map +1 -0
  265. package/dist/subagent/subagent-manager.js +468 -0
  266. package/dist/subagent/subagent-manager.js.map +1 -0
  267. package/dist/subagent/subagent-types.d.ts +77 -0
  268. package/dist/subagent/subagent-types.d.ts.map +1 -0
  269. package/dist/subagent/subagent-types.js +3 -0
  270. package/dist/subagent/subagent-types.js.map +1 -0
  271. package/dist/tools/builtin/bash.d.ts +3 -0
  272. package/dist/tools/builtin/bash.d.ts.map +1 -0
  273. package/dist/tools/builtin/bash.js +87 -0
  274. package/dist/tools/builtin/bash.js.map +1 -0
  275. package/dist/tools/builtin/edit-file.d.ts.map +1 -1
  276. package/dist/tools/builtin/edit-file.js +1 -0
  277. package/dist/tools/builtin/edit-file.js.map +1 -1
  278. package/dist/tools/builtin/index.d.ts +14 -0
  279. package/dist/tools/builtin/index.d.ts.map +1 -1
  280. package/dist/tools/builtin/index.js +45 -1
  281. package/dist/tools/builtin/index.js.map +1 -1
  282. package/dist/tools/builtin/list-errors.d.ts +7 -0
  283. package/dist/tools/builtin/list-errors.d.ts.map +1 -0
  284. package/dist/tools/builtin/list-errors.js +64 -0
  285. package/dist/tools/builtin/list-errors.js.map +1 -0
  286. package/dist/tools/builtin/list-subagents.d.ts +7 -0
  287. package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
  288. package/dist/tools/builtin/list-subagents.js +21 -0
  289. package/dist/tools/builtin/list-subagents.js.map +1 -0
  290. package/dist/tools/builtin/recall.d.ts +11 -0
  291. package/dist/tools/builtin/recall.d.ts.map +1 -0
  292. package/dist/tools/builtin/recall.js +60 -0
  293. package/dist/tools/builtin/recall.js.map +1 -0
  294. package/dist/tools/builtin/remember.d.ts +12 -0
  295. package/dist/tools/builtin/remember.d.ts.map +1 -0
  296. package/dist/tools/builtin/remember.js +72 -0
  297. package/dist/tools/builtin/remember.js.map +1 -0
  298. package/dist/tools/builtin/skill.d.ts +14 -0
  299. package/dist/tools/builtin/skill.d.ts.map +1 -0
  300. package/dist/tools/builtin/skill.js +71 -0
  301. package/dist/tools/builtin/skill.js.map +1 -0
  302. package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
  303. package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
  304. package/dist/tools/builtin/spawn-subagent.js +43 -0
  305. package/dist/tools/builtin/spawn-subagent.js.map +1 -0
  306. package/dist/tools/builtin/web-fetch.d.ts +3 -0
  307. package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
  308. package/dist/tools/builtin/web-fetch.js +101 -0
  309. package/dist/tools/builtin/web-fetch.js.map +1 -0
  310. package/dist/tools/builtin/write-file.d.ts.map +1 -1
  311. package/dist/tools/builtin/write-file.js +1 -0
  312. package/dist/tools/builtin/write-file.js.map +1 -1
  313. package/dist/tools/circuit-breaker.d.ts +19 -10
  314. package/dist/tools/circuit-breaker.d.ts.map +1 -1
  315. package/dist/tools/circuit-breaker.js +22 -11
  316. package/dist/tools/circuit-breaker.js.map +1 -1
  317. package/dist/tools/error-tracker.d.ts +28 -44
  318. package/dist/tools/error-tracker.d.ts.map +1 -1
  319. package/dist/tools/error-tracker.js +39 -156
  320. package/dist/tools/error-tracker.js.map +1 -1
  321. package/dist/tools/tool-filter.d.ts +70 -0
  322. package/dist/tools/tool-filter.d.ts.map +1 -0
  323. package/dist/tools/tool-filter.js +92 -0
  324. package/dist/tools/tool-filter.js.map +1 -0
  325. package/dist/tools/tool-output-truncator.d.ts +36 -0
  326. package/dist/tools/tool-output-truncator.d.ts.map +1 -0
  327. package/dist/tools/tool-output-truncator.js +117 -0
  328. package/dist/tools/tool-output-truncator.js.map +1 -0
  329. package/dist/tools/tool-registry.d.ts +25 -9
  330. package/dist/tools/tool-registry.d.ts.map +1 -1
  331. package/dist/tools/tool-registry.js +77 -28
  332. package/dist/tools/tool-registry.js.map +1 -1
  333. package/dist/tools/tool-validator.d.ts +13 -0
  334. package/dist/tools/tool-validator.d.ts.map +1 -0
  335. package/dist/tools/tool-validator.js +116 -0
  336. package/dist/tools/tool-validator.js.map +1 -0
  337. package/dist/tools/types.d.ts +86 -3
  338. package/dist/tools/types.d.ts.map +1 -1
  339. package/dist/tools/types.js +51 -2
  340. package/dist/tools/types.js.map +1 -1
  341. package/dist/trace/trace-logger.d.ts +30 -4
  342. package/dist/trace/trace-logger.d.ts.map +1 -1
  343. package/dist/trace/trace-logger.js +83 -7
  344. package/dist/trace/trace-logger.js.map +1 -1
  345. package/package.json +14 -4
  346. package/dist/compression/sliding-window.d.ts +0 -21
  347. package/dist/compression/sliding-window.d.ts.map +0 -1
  348. package/dist/compression/sliding-window.js +0 -44
  349. package/dist/compression/sliding-window.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remember.js","sourceRoot":"","sources":["../../../src/tools/builtin/remember.ts"],"names":[],"mappings":";;AAYA,gDAiEC;AAzED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,aAA4B;IAC7D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,yEAAyE;YACzE,wEAAwE;YACxE,0EAA0E;YAC1E,mDAAmD;QACrD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,qDAAqD;wBACrD,oEAAoE;iBACvE;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBACzB,WAAW,EACT,uDAAuD;wBACvD,oEAAoE;iBACvE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8DAA8D;wBAC9D,6CAA6C;iBAChD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sEAAsE;wBACtE,sEAAsE;wBACtE,uEAAuE;wBACvE,0CAA0C;iBAC7C;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;SACrD;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAI,MAAM,CAAC,IAAe,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpD,IAAI,CAAC,IAAI;gBAAE,OAAO,8CAA8C,CAAC;YACjE,IAAI,CAAC,WAAW;gBAAE,OAAO,sDAAsD,CAAC;YAChF,IAAI,CAAC,OAAO;gBAAE,OAAO,+CAA+C,CAAC;YACrE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,OAAO,0EAA0E,IAAI,IAAI,CAAC;YAC5F,CAAC;YAED,8DAA8D;YAC9D,4DAA4D;YAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/E,OAAO,QAAQ;gBACb,CAAC,CAAC,WAAW,IAAI,yBAAyB;gBAC1C,CAAC,CAAC,WAAW,IAAI,gCAAgC,aAAa,CAAC,KAAK,YAAY,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Tool } from "../types";
2
+ import type { SkillManager } from "../../skills/skill-manager";
3
+ /**
4
+ * Create a Skill tool that allows the LLM to activate / deactivate skills
5
+ * on demand during the agent loop.
6
+ *
7
+ * Factory pattern matching `createListSubagentsTool` / `createSpawnSubagentTool`.
8
+ *
9
+ * @param skillManager The agent's SkillManager for skill state management.
10
+ * @param onSkillChanged Callback invoked after a skill is activated or
11
+ * deactivated so the agent can rebuild its system prompt.
12
+ */
13
+ export declare function createSkillTool(skillManager: SkillManager, onSkillChanged: () => void): Tool;
14
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,IAAI,GACzB,IAAI,CA8DN"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSkillTool = createSkillTool;
4
+ /**
5
+ * Create a Skill tool that allows the LLM to activate / deactivate skills
6
+ * on demand during the agent loop.
7
+ *
8
+ * Factory pattern matching `createListSubagentsTool` / `createSpawnSubagentTool`.
9
+ *
10
+ * @param skillManager The agent's SkillManager for skill state management.
11
+ * @param onSkillChanged Callback invoked after a skill is activated or
12
+ * deactivated so the agent can rebuild its system prompt.
13
+ */
14
+ function createSkillTool(skillManager, onSkillChanged) {
15
+ return {
16
+ name: "skill",
17
+ description: "Activate or deactivate a skill. Skills provide specialized domain " +
18
+ "knowledge and capabilities. Use this tool when a task requires " +
19
+ "expertise in a specific domain. Call with action 'activate' to load " +
20
+ "a skill (the default), or 'deactivate' to unload it.",
21
+ parameters: {
22
+ type: "object",
23
+ properties: {
24
+ name: {
25
+ type: "string",
26
+ description: "The name of the skill to activate or deactivate.",
27
+ },
28
+ action: {
29
+ type: "string",
30
+ enum: ["activate", "deactivate"],
31
+ description: "Whether to activate (load) or deactivate (unload) the skill. Default: 'activate'.",
32
+ },
33
+ },
34
+ required: ["name"],
35
+ },
36
+ async execute(params) {
37
+ const skillName = String(params.name ?? "");
38
+ const action = params.action || "activate";
39
+ if (!skillManager.has(skillName)) {
40
+ const available = skillManager
41
+ .getAll()
42
+ .map((s) => s.name)
43
+ .join(", ");
44
+ return `Unknown skill: "${skillName}". Available skills: ${available || "none"}.`;
45
+ }
46
+ if (action === "deactivate") {
47
+ const wasActive = skillManager.deactivate(skillName);
48
+ if (wasActive) {
49
+ onSkillChanged();
50
+ return `Skill "${skillName}" deactivated.`;
51
+ }
52
+ return `Skill "${skillName}" is not currently active.`;
53
+ }
54
+ // activate (default)
55
+ if (skillManager.isActive(skillName)) {
56
+ return `Skill "${skillName}" is already active.`;
57
+ }
58
+ try {
59
+ skillManager.activate(skillName);
60
+ onSkillChanged();
61
+ const skill = skillManager.get(skillName);
62
+ return `Skill "${skillName}" activated successfully: ${skill?.description ?? ""}`;
63
+ }
64
+ catch (err) {
65
+ const message = err instanceof Error ? err.message : String(err);
66
+ return `Error activating skill "${skillName}": ${message}`;
67
+ }
68
+ },
69
+ };
70
+ }
71
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/tools/builtin/skill.ts"],"names":[],"mappings":";;AAaA,0CAiEC;AA3ED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAC7B,YAA0B,EAC1B,cAA0B;IAE1B,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EACT,oEAAoE;YACpE,iEAAiE;YACjE,sEAAsE;YACtE,sDAAsD;QACxD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;oBAChC,WAAW,EACT,mFAAmF;iBACtF;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAI,MAAM,CAAC,MAAiB,IAAI,UAAU,CAAC;YAEvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,YAAY;qBAC3B,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,mBAAmB,SAAS,wBAAwB,SAAS,IAAI,MAAM,GAAG,CAAC;YACpF,CAAC;YAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,SAAS,EAAE,CAAC;oBACd,cAAc,EAAE,CAAC;oBACjB,OAAO,UAAU,SAAS,gBAAgB,CAAC;gBAC7C,CAAC;gBACD,OAAO,UAAU,SAAS,4BAA4B,CAAC;YACzD,CAAC;YAED,qBAAqB;YACrB,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,OAAO,UAAU,SAAS,sBAAsB,CAAC;YACnD,CAAC;YAED,IAAI,CAAC;gBACH,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjC,cAAc,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1C,OAAO,UAAU,SAAS,6BAA6B,KAAK,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC;YACpF,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,2BAA2B,SAAS,MAAM,OAAO,EAAE,CAAC;YAC7D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Tool } from "../types";
2
+ import type { SubAgentManager } from "../../subagent/subagent-manager";
3
+ /**
4
+ * Factory: create a `spawn_subagent` tool bound to a SubAgentManager instance.
5
+ */
6
+ export declare function createSpawnSubagentTool(manager: SubAgentManager): Tool;
7
+ //# sourceMappingURL=spawn-subagent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-subagent.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/spawn-subagent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAsCtE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSpawnSubagentTool = createSpawnSubagentTool;
4
+ /**
5
+ * Factory: create a `spawn_subagent` tool bound to a SubAgentManager instance.
6
+ */
7
+ function createSpawnSubagentTool(manager) {
8
+ return {
9
+ name: "spawn_subagent",
10
+ description: "Spawn an asynchronous sub-agent to handle a task. " +
11
+ "The sub-agent runs in the background; its result will appear " +
12
+ "as a new user message enclosed in <subagent-result> tags once it completes. " +
13
+ "Call list_subagents first to see available sub-agents and pick the right one.",
14
+ parameters: {
15
+ type: "object",
16
+ properties: {
17
+ name: {
18
+ type: "string",
19
+ description: "Name of the sub-agent to spawn. Call list_subagents first to see available names.",
20
+ },
21
+ input: {
22
+ type: "string",
23
+ description: "Task description / instructions for the sub-agent.",
24
+ },
25
+ },
26
+ required: ["name", "input"],
27
+ },
28
+ async execute(params) {
29
+ const name = String(params.name ?? "");
30
+ const input = String(params.input ?? "");
31
+ try {
32
+ const runId = manager.spawn(name, input);
33
+ return (`Sub-agent "${name}" spawned successfully. Run ID: ${runId}. ` +
34
+ `It will report back when finished.`);
35
+ }
36
+ catch (err) {
37
+ const message = err instanceof Error ? err.message : String(err);
38
+ return `Error spawning sub-agent "${name}": ${message}`;
39
+ }
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=spawn-subagent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-subagent.js","sourceRoot":"","sources":["../../../src/tools/builtin/spawn-subagent.ts"],"names":[],"mappings":";;AAMA,0DAsCC;AAzCD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,oDAAoD;YACpD,+DAA+D;YAC/D,8EAA8E;YAC9E,+EAA+E;QACjF,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mFAAmF;iBACjG;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;SAC5B;QAED,KAAK,CAAC,OAAO,CAAC,MAA+B;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzC,OAAO,CACL,cAAc,IAAI,mCAAmC,KAAK,IAAI;oBAC9D,oCAAoC,CACrC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,6BAA6B,IAAI,MAAM,OAAO,EAAE,CAAC;YAC1D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Tool } from "../types";
2
+ export declare const WebFetchTool: Tool;
3
+ //# sourceMappingURL=web-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAyBhC,eAAO,MAAM,YAAY,EAAE,IAwF1B,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebFetchTool = void 0;
4
+ const boundaries_1 = require("../../security/boundaries");
5
+ const MAX_CHARS = 100_000;
6
+ const TIMEOUT_MS = 15_000;
7
+ /**
8
+ * Strip HTML tags from text (simple regex-based approach — sufficient for
9
+ * extracting readable content from most pages).
10
+ */
11
+ function stripHtml(html) {
12
+ return html
13
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
14
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
15
+ .replace(/<[^>]+>/g, "")
16
+ .replace(/&amp;/g, "&")
17
+ .replace(/&lt;/g, "<")
18
+ .replace(/&gt;/g, ">")
19
+ .replace(/&quot;/g, '"')
20
+ .replace(/&#39;/g, "'")
21
+ .replace(/&nbsp;/g, " ")
22
+ .replace(/\n\s*\n\s*\n/g, "\n\n")
23
+ .slice(0, MAX_CHARS);
24
+ }
25
+ exports.WebFetchTool = {
26
+ name: "web_fetch",
27
+ description: "Fetch a web page by URL and return its content as markdown-formatted text. " +
28
+ "Use this to retrieve documentation, API responses, or any web resource. " +
29
+ "The content is stripped of HTML tags and limited to 100,000 characters. " +
30
+ "This is a read-only operation — no files or system state are modified.",
31
+ parameters: {
32
+ type: "object",
33
+ properties: {
34
+ url: {
35
+ type: "string",
36
+ description: "The full URL to fetch (must start with http:// or https://).",
37
+ },
38
+ maxChars: {
39
+ type: "number",
40
+ description: "Maximum characters to return (default: 100,000).",
41
+ },
42
+ },
43
+ required: ["url"],
44
+ },
45
+ async execute(args) {
46
+ const url = String(args.url ?? "");
47
+ const maxChars = typeof args.maxChars === "number" ? Math.min(args.maxChars, MAX_CHARS) : MAX_CHARS;
48
+ // Validate URL
49
+ let parsedUrl;
50
+ try {
51
+ parsedUrl = new URL(url);
52
+ }
53
+ catch {
54
+ return `Error: Invalid URL "${url}". Make sure the URL starts with http:// or https://.`;
55
+ }
56
+ if (!["http:", "https:"].includes(parsedUrl.protocol)) {
57
+ return `Error: Unsupported protocol "${parsedUrl.protocol}". Only HTTP and HTTPS are supported.`;
58
+ }
59
+ // Fetch with timeout
60
+ const controller = new AbortController();
61
+ const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
62
+ try {
63
+ const response = await fetch(url, {
64
+ headers: {
65
+ "User-Agent": "kagent-ts/1.0 (web_fetch tool)",
66
+ Accept: "text/html, application/xhtml+xml, text/plain",
67
+ },
68
+ signal: controller.signal,
69
+ redirect: "follow",
70
+ });
71
+ clearTimeout(timeout);
72
+ if (!response.ok) {
73
+ return `Error: HTTP ${response.status} ${response.statusText} when fetching "${url}".`;
74
+ }
75
+ const contentType = response.headers.get("content-type") ?? "";
76
+ const raw = await response.text();
77
+ // Extract title
78
+ const titleMatch = raw.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
79
+ const title = titleMatch ? titleMatch[1].trim() : parsedUrl.hostname;
80
+ // Strip HTML to get readable text
81
+ const text = stripHtml(raw);
82
+ const content = text.length > maxChars
83
+ ? text.slice(0, maxChars) + `\n\n(Truncated — ${(text.length / 1024).toFixed(1)} KB total, showing first ${(maxChars / 1024).toFixed(1)} KB)`
84
+ : text;
85
+ const contentTypeNote = contentType.includes("text/html") ? "" : `\nContent-Type: ${contentType}`;
86
+ // Scan for prompt-injection signatures in the fetched content
87
+ const injectionPatterns = (0, boundaries_1.detectInjectionSignatures)(content);
88
+ const warning = (0, boundaries_1.buildInjectionWarning)(injectionPatterns, `web_fetch:${url}`);
89
+ return `${warning}# ${title}\n\nURL: ${url}${contentTypeNote}\n\n${content}`;
90
+ }
91
+ catch (err) {
92
+ clearTimeout(timeout);
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ if (err instanceof DOMException || (err instanceof Error && err.name === "AbortError")) {
95
+ return `Error: Request timed out after ${TIMEOUT_MS / 1000}s for URL "${url}".`;
96
+ }
97
+ return `Error fetching "${url}": ${message}`;
98
+ }
99
+ },
100
+ };
101
+ //# sourceMappingURL=web-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/builtin/web-fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,IAgD3B,CAAC"}
1
+ {"version":3,"file":"write-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,IAiD3B,CAAC"}
@@ -85,5 +85,6 @@ exports.WriteFileTool = {
85
85
  return `Error writing file "${resolvedPath}": ${message}`;
86
86
  }
87
87
  },
88
+ requireApproval: true,
88
89
  };
89
90
  //# sourceMappingURL=write-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;;GAMG;AACU,QAAA,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,iEAAiE;QACjE,6EAA6E;IAC/E,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;KACnC;IAED,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAmB,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;QAEvC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,+BAA+B,CAAC;QACzC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvC,aAAa;YACb,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YAEzD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,sBAAsB,IAAI,CAAC,IAAI,aAAa,YAAY,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,uBAAuB,YAAY,MAAM,OAAO,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;;GAMG;AACU,QAAA,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,iEAAiE;QACjE,6EAA6E;IAC/E,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;KACnC;IAED,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAmB,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;QAEvC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,+BAA+B,CAAC;QACzC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvC,aAAa;YACb,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YAEzD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,sBAAsB,IAAI,CAAC,IAAI,aAAa,YAAY,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,uBAAuB,YAAY,MAAM,OAAO,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,eAAe,EAAE,IAAI;CACtB,CAAC"}
@@ -16,15 +16,18 @@ export interface CircuitBreakerConfig {
16
16
  * Circuit breaker that tracks consecutive failures for a single tool.
17
17
  *
18
18
  * States:
19
- * - CLOSED: Normal operation — executions are allowed.
20
- * - OPEN: All retries exhaustedsubsequent calls are blocked
21
- * without attempting execution.
19
+ * - CLOSED: Normal operation — no failures, executions are allowed.
20
+ * - HALF_OPEN: Degraded operationfailures have occurred but retries
21
+ * remain. Tool calls are still allowed, but the caller
22
+ * should proceed with caution.
23
+ * - OPEN: All retries exhausted — subsequent calls are blocked
24
+ * without attempting execution.
22
25
  *
23
- * Flow:
24
- * 1st failure → 2 retries remaining → LLM should analyze the error and retry
25
- * 2nd failure → 1 retry remaining
26
+ * Flow (with retryCount = 2):
27
+ * 1st failure → HALF_OPEN, 1 retry remaining → LLM should analyze and retry
28
+ * 2nd failure → HALF_OPEN, 0 retries remaining → last chance
26
29
  * 3rd failure → circuit OPENS → LLM must try a different approach
27
- * Success → failure count resets to zero
30
+ * Success circuit returns to CLOSED, failure count resets
28
31
  */
29
32
  export declare class CircuitBreaker {
30
33
  private toolName;
@@ -33,7 +36,9 @@ export declare class CircuitBreaker {
33
36
  private _state;
34
37
  constructor(config: CircuitBreakerConfig);
35
38
  /**
36
- * Whether the circuit is closed and the tool can be called.
39
+ * Whether the tool can be called.
40
+ * Returns true in CLOSED (normal) and HALF_OPEN (degraded) states.
41
+ * Only returns false when the circuit is fully OPEN.
37
42
  */
38
43
  get isAvailable(): boolean;
39
44
  /**
@@ -55,12 +60,16 @@ export declare class CircuitBreaker {
55
60
  get effectiveThreshold(): number;
56
61
  /**
57
62
  * Record a successful tool execution — resets failure count
58
- * and closes the circuit if it was open.
63
+ * and closes the circuit.
59
64
  */
60
65
  recordSuccess(): void;
61
66
  /**
62
67
  * Record a failed tool execution.
63
- * If all retries are exhausted, the circuit opens.
68
+ *
69
+ * State transitions:
70
+ * - CLOSED → HALF_OPEN (first failure, retries remain)
71
+ * - HALF_OPEN → HALF_OPEN (still have retries) or OPEN (retries exhausted)
72
+ * - OPEN → stays OPEN (should not normally be called in this state)
64
73
  *
65
74
  * @returns The updated number of retries remaining (0 means the circuit opened).
66
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/tools/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAqC;gBAEvC,MAAM,EAAE,oBAAoB;IAKxC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,YAAY,CAExB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;OAGG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IASvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,SAAS,IAAI,aAAa;CAS3B"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/tools/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAqC;gBAEvC,MAAM,EAAE,oBAAoB;IAKxC;;;;OAIG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,YAAY,CAExB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;OAGG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;;;;;OASG;IACH,aAAa,IAAI,MAAM;IAWvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,SAAS,IAAI,aAAa;CAS3B"}
@@ -6,15 +6,18 @@ const types_1 = require("./types");
6
6
  * Circuit breaker that tracks consecutive failures for a single tool.
7
7
  *
8
8
  * States:
9
- * - CLOSED: Normal operation — executions are allowed.
10
- * - OPEN: All retries exhaustedsubsequent calls are blocked
11
- * without attempting execution.
9
+ * - CLOSED: Normal operation — no failures, executions are allowed.
10
+ * - HALF_OPEN: Degraded operationfailures have occurred but retries
11
+ * remain. Tool calls are still allowed, but the caller
12
+ * should proceed with caution.
13
+ * - OPEN: All retries exhausted — subsequent calls are blocked
14
+ * without attempting execution.
12
15
  *
13
- * Flow:
14
- * 1st failure → 2 retries remaining → LLM should analyze the error and retry
15
- * 2nd failure → 1 retry remaining
16
+ * Flow (with retryCount = 2):
17
+ * 1st failure → HALF_OPEN, 1 retry remaining → LLM should analyze and retry
18
+ * 2nd failure → HALF_OPEN, 0 retries remaining → last chance
16
19
  * 3rd failure → circuit OPENS → LLM must try a different approach
17
- * Success → failure count resets to zero
20
+ * Success circuit returns to CLOSED, failure count resets
18
21
  */
19
22
  class CircuitBreaker {
20
23
  toolName;
@@ -26,10 +29,12 @@ class CircuitBreaker {
26
29
  this.retryCount = config.retryCount ?? 2;
27
30
  }
28
31
  /**
29
- * Whether the circuit is closed and the tool can be called.
32
+ * Whether the tool can be called.
33
+ * Returns true in CLOSED (normal) and HALF_OPEN (degraded) states.
34
+ * Only returns false when the circuit is fully OPEN.
30
35
  */
31
36
  get isAvailable() {
32
- return this._state === types_1.BreakerState.CLOSED;
37
+ return this._state === types_1.BreakerState.CLOSED || this._state === types_1.BreakerState.HALF_OPEN;
33
38
  }
34
39
  /**
35
40
  * Current breaker state.
@@ -58,7 +63,7 @@ class CircuitBreaker {
58
63
  }
59
64
  /**
60
65
  * Record a successful tool execution — resets failure count
61
- * and closes the circuit if it was open.
66
+ * and closes the circuit.
62
67
  */
63
68
  recordSuccess() {
64
69
  this.failureCount = 0;
@@ -66,7 +71,11 @@ class CircuitBreaker {
66
71
  }
67
72
  /**
68
73
  * Record a failed tool execution.
69
- * If all retries are exhausted, the circuit opens.
74
+ *
75
+ * State transitions:
76
+ * - CLOSED → HALF_OPEN (first failure, retries remain)
77
+ * - HALF_OPEN → HALF_OPEN (still have retries) or OPEN (retries exhausted)
78
+ * - OPEN → stays OPEN (should not normally be called in this state)
70
79
  *
71
80
  * @returns The updated number of retries remaining (0 means the circuit opened).
72
81
  */
@@ -76,6 +85,8 @@ class CircuitBreaker {
76
85
  this._state = types_1.BreakerState.OPEN;
77
86
  return 0;
78
87
  }
88
+ // First failure or still within retry budget — enter/remain HALF_OPEN
89
+ this._state = types_1.BreakerState.HALF_OPEN;
79
90
  return this.retriesRemaining;
80
91
  }
81
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/tools/circuit-breaker.ts"],"names":[],"mappings":";;;AAAA,mCAAsD;AAiBtD;;;;;;;;;;;;;GAaG;AACH,MAAa,cAAc;IACjB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,YAAY,GAAG,CAAC,CAAC;IACjB,MAAM,GAAiB,oBAAY,CAAC,MAAM,CAAC;IAEnD,YAAY,MAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,oBAAY,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,IAAI,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;YACzC,SAAS,EAAE,IAAI,CAAC,WAAW;SAC5B,CAAC;IACJ,CAAC;CACF;AA3FD,wCA2FC"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/tools/circuit-breaker.ts"],"names":[],"mappings":";;;AAAA,mCAAsD;AAiBtD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,cAAc;IACjB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,YAAY,GAAG,CAAC,CAAC;IACjB,MAAM,GAAiB,oBAAY,CAAC,MAAM,CAAC;IAEnD,YAAY,MAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,oBAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,oBAAY,CAAC,SAAS,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,IAAI,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,SAAS,CAAC;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,oBAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;YACzC,SAAS,EAAE,IAAI,CAAC,WAAW;SAC5B,CAAC;IACJ,CAAC;CACF;AAnGD,wCAmGC"}
@@ -1,31 +1,29 @@
1
- import { ToolErrorTrace, ErrorTraceSummary } from "./types";
2
1
  /**
3
- * Configuration for the ToolErrorTracker.
2
+ * ToolErrorTracker — in-memory tracker for tool failure chains within a session.
3
+ *
4
+ * Provides real-time visibility into which tools are failing and why,
5
+ * so the LLM can query error state via `list_errors` and the agent can
6
+ * attach LLM analysis to active traces.
7
+ *
8
+ * This is NOT a persistence layer. For cross-session learning and
9
+ * structured error diagnosis, use the ErrorNotebook (错题本) via
10
+ * ReflectionHook — it runs a post-execution LLM reflection that
11
+ * categorises mistakes and injects lessons into future sessions.
4
12
  */
5
- export interface ErrorTrackerConfig {
6
- /**
7
- * Directory where trace files are stored.
8
- * Defaults to `.error-traces` relative to the working directory.
9
- */
10
- storageDir?: string;
11
- /**
12
- * Whether to persist traces to disk immediately.
13
- * Defaults to true.
14
- */
15
- persistImmediately?: boolean;
16
- }
13
+ import { ToolErrorTrace, ErrorTraceSummary } from "./types";
17
14
  /**
18
15
  * Categorize a tool error based on its message content.
19
16
  * Helps developers quickly identify common failure patterns.
20
17
  */
21
18
  export declare function categorizeError(error: string): string;
22
19
  /**
23
- * ToolErrorTracker records the complete lifecycle of tool failures.
20
+ * ToolErrorTracker records the lifecycle of tool failures in memory
21
+ * for the duration of a session.
24
22
  *
25
23
  * Usage:
26
24
  * ```ts
27
- * const tracker = new ToolErrorTracker({ storageDir: ".error-traces" });
28
- * const registry = new ToolRegistry({ errorTracker: tracker });
25
+ * const tracker = new ToolErrorTracker();
26
+ * const registry = new ToolRegistry(2, tracker);
29
27
  * ```
30
28
  *
31
29
  * Lifecycle of a trace:
@@ -35,15 +33,12 @@ export declare function categorizeError(error: string): string;
35
33
  * 4. Recovery → `recordRecovery()` marks the trace as resolved
36
34
  * 5. Circuit open → `recordFailure()` marks the trace as unresolved
37
35
  *
38
- * All traces are persisted as individual JSON files in the storage
39
- * directory, plus an index file for quick browsing.
36
+ * For cross-session persistence and LLM-powered error diagnosis,
37
+ * use {@link import('../reflection/error-notebook').ErrorNotebook}.
40
38
  */
41
39
  export declare class ToolErrorTracker {
42
40
  private traces;
43
41
  private activeTraceByTool;
44
- private storageDir;
45
- private persistImmediately;
46
- constructor(config?: ErrorTrackerConfig);
47
42
  /**
48
43
  * Record a tool execution failure.
49
44
  *
@@ -54,19 +49,13 @@ export declare class ToolErrorTracker {
54
49
  *
55
50
  * @returns The trace ID for the chain this failure belongs to.
56
51
  */
57
- recordFailure(toolName: string, args: Record<string, unknown>, error: string, retriesRemaining: number): string;
52
+ recordFailure(toolName: string, args: Record<string, unknown>, error: string, retriesRemaining: number, breakerState?: string): string;
58
53
  /**
59
54
  * Record a tool recovery (successful execution after previous failures).
60
- *
61
- * @param toolName The tool that recovered.
62
- * @param traceId The trace ID for this failure chain.
63
- * @param resolution Optional description of how it was resolved.
64
55
  */
65
56
  recordRecovery(toolName: string, traceId: string, resolution?: string): void;
66
57
  /**
67
58
  * Attach LLM analysis to the latest failure/retry event in a trace.
68
- *
69
- * Called by the agent after the LLM has reasoned about a tool error.
70
59
  */
71
60
  recordAnalysis(traceId: string, analysis: string): void;
72
61
  /**
@@ -82,30 +71,25 @@ export declare class ToolErrorTracker {
82
71
  */
83
72
  getActiveTraceId(toolName: string): string | undefined;
84
73
  /**
85
- * Get the total number of traces recorded.
74
+ * Get all currently active (unresolved) traces.
86
75
  */
87
- get traceCount(): number;
76
+ getActiveTraces(): Array<{
77
+ toolName: string;
78
+ traceId: string;
79
+ }>;
88
80
  /**
89
- * Persist all traces to disk immediately.
81
+ * Get the total number of traces recorded in this session.
90
82
  */
91
- persistAll(): void;
92
- /**
93
- * Load traces from disk (e.g., on startup to resume monitoring).
94
- */
95
- loadFromDisk(): void;
83
+ get traceCount(): number;
96
84
  /**
97
- * Generate a human-readable markdown report of all traces.
85
+ * Generate an in-memory markdown report of all traces for the current session.
98
86
  */
99
87
  generateMarkdownReport(): string;
100
88
  /**
101
- * Delete all stored traces.
89
+ * Clear all in-memory traces.
102
90
  */
103
- clearAll(): void;
91
+ clear(): void;
104
92
  private createTrace;
105
- private persistTrace;
106
- private ensureStorageDir;
107
- private writeTraceFile;
108
- private writeIndexFile;
109
93
  private formatEventType;
110
94
  }
111
95
  //# sourceMappingURL=error-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-tracker.d.ts","sourceRoot":"","sources":["../../src/tools/error-tracker.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA6BrD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAU;gBAExB,MAAM,CAAC,EAAE,kBAAkB;IAOvC;;;;;;;;;OASG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,GACvB,MAAM;IA6CT;;;;;;OAMG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAsBP;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA4BvD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIrD;;OAEG;IACH,eAAe,IAAI,iBAAiB,EAAE;IAyBtC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItD;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAID;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,YAAY,IAAI,IAAI;IAyBpB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IA4DhC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAoBhB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,eAAe;CAkBxB"}
1
+ {"version":3,"file":"error-tracker.d.ts","sourceRoot":"","sources":["../../src/tools/error-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAoDjB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA6BrD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAAkC;IAI3D;;;;;;;;;OASG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM;IAmDT;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAoBP;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA2BvD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIrD;;OAEG;IACH,eAAe,IAAI,iBAAiB,EAAE;IAyBtC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItD;;OAEG;IACH,eAAe,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAW/D;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAID;;OAEG;IACH,sBAAsB,IAAI,MAAM;IA6DhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,eAAe;CAoBxB"}