@phuetz/code-buddy 1.6.1 → 2.0.0

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 (2245) hide show
  1. package/LICENSE +90 -21
  2. package/README.md +145 -349
  3. package/codebuddy-runtime.json +24 -0
  4. package/dist/advanced/session-replay.js +3 -2
  5. package/dist/agent/agent-state.d.ts +4 -1
  6. package/dist/agent/agent-state.js +9 -3
  7. package/dist/agent/architect-mode.js +1 -1
  8. package/dist/agent/autonomous/agentic-coding-contract.d.ts +28 -28
  9. package/dist/agent/autonomous/agentic-coding-runner.d.ts +14 -4
  10. package/dist/agent/autonomous/agentic-coding-runner.js +176 -27
  11. package/dist/agent/autonomous/checkpoint-manager.js +3 -12
  12. package/dist/agent/autonomous/codex-autonomy-directive.d.ts +10 -0
  13. package/dist/agent/autonomous/codex-autonomy-directive.js +25 -0
  14. package/dist/agent/autonomous/edit-proposal-producer.js +2 -2
  15. package/dist/agent/autonomous/fleet-task-types.d.ts +2 -2
  16. package/dist/agent/autonomous/fleet-task-types.js +2 -2
  17. package/dist/agent/autonomous/fleet-tick-handler.d.ts +3 -3
  18. package/dist/agent/autonomous/fleet-tick-handler.js +14 -8
  19. package/dist/agent/autonomous/recursive-improvement.d.ts +23 -0
  20. package/dist/agent/autonomous/recursive-improvement.js +114 -0
  21. package/dist/agent/autonomous/verification-loop.js +4 -2
  22. package/dist/agent/codebuddy-agent.d.ts +93 -6
  23. package/dist/agent/codebuddy-agent.js +452 -58
  24. package/dist/agent/council-lesson-proposer.d.ts +80 -13
  25. package/dist/agent/council-lesson-proposer.js +201 -43
  26. package/dist/agent/deep-research-ckg.d.ts +176 -0
  27. package/dist/agent/deep-research-ckg.js +250 -0
  28. package/dist/agent/deep-research-storm.d.ts +222 -0
  29. package/dist/agent/deep-research-storm.js +689 -0
  30. package/dist/agent/deep-research.d.ts +329 -0
  31. package/dist/agent/deep-research.js +994 -0
  32. package/dist/agent/delegation/thread-delegation.d.ts +80 -0
  33. package/dist/agent/delegation/thread-delegation.js +472 -0
  34. package/dist/agent/delegation/thread-task-runner.d.ts +37 -0
  35. package/dist/agent/delegation/thread-task-runner.js +89 -0
  36. package/dist/agent/dev-loop/dev-loop.d.ts +120 -0
  37. package/dist/agent/dev-loop/dev-loop.js +404 -0
  38. package/dist/agent/dev-loop/structural-gate.d.ts +32 -0
  39. package/dist/agent/dev-loop/structural-gate.js +120 -0
  40. package/dist/agent/execution/agent-executor.d.ts +52 -31
  41. package/dist/agent/execution/agent-executor.js +1520 -547
  42. package/dist/agent/execution/context-pipeline.d.ts +54 -6
  43. package/dist/agent/execution/context-pipeline.js +285 -88
  44. package/dist/agent/execution/incremental-token-counter.d.ts +15 -0
  45. package/dist/agent/execution/incremental-token-counter.js +36 -0
  46. package/dist/agent/execution/ordered-tool-executor.d.ts +14 -0
  47. package/dist/agent/execution/ordered-tool-executor.js +54 -0
  48. package/dist/agent/execution/post-tool-handlers.d.ts +1 -1
  49. package/dist/agent/execution/post-tool-handlers.js +2 -2
  50. package/dist/agent/execution/query-classifier.d.ts +2 -0
  51. package/dist/agent/execution/query-classifier.js +2 -0
  52. package/dist/agent/execution/tool-dependency-graph.js +7 -0
  53. package/dist/agent/execution/tool-selection-strategy.d.ts +20 -0
  54. package/dist/agent/execution/tool-selection-strategy.js +145 -23
  55. package/dist/agent/facades/message-history-manager.d.ts +1 -1
  56. package/dist/agent/facades/message-history-manager.js +1 -1
  57. package/dist/agent/facades/model-routing-facade.d.ts +31 -1
  58. package/dist/agent/facades/model-routing-facade.js +86 -2
  59. package/dist/agent/facades/session-facade.d.ts +10 -2
  60. package/dist/agent/facades/session-facade.js +59 -1
  61. package/dist/agent/film/film-producer.d.ts +98 -0
  62. package/dist/agent/film/film-producer.js +289 -0
  63. package/dist/agent/film/scene-planner.d.ts +38 -0
  64. package/dist/agent/film/scene-planner.js +93 -0
  65. package/dist/agent/film/trailer-planner.d.ts +23 -0
  66. package/dist/agent/film/trailer-planner.js +242 -0
  67. package/dist/agent/film/video-studio.d.ts +72 -0
  68. package/dist/agent/film/video-studio.js +249 -0
  69. package/dist/agent/flow/planning-flow.d.ts +3 -0
  70. package/dist/agent/flow/planning-flow.js +70 -8
  71. package/dist/agent/hermes-claw-migrate.d.ts +62 -0
  72. package/dist/agent/hermes-claw-migrate.js +189 -15
  73. package/dist/agent/hermes-memory-providers.js +3 -3
  74. package/dist/agent/hermes-parity-manifest.js +69 -15
  75. package/dist/agent/infrastructure/agent-infrastructure.d.ts +1 -0
  76. package/dist/agent/infrastructure/agent-infrastructure.js +1 -1
  77. package/dist/agent/isolation/agent-workspace.js +5 -2
  78. package/dist/agent/learning/skill-background-writes.js +9 -4
  79. package/dist/agent/learning-agent.js +4 -4
  80. package/dist/agent/learning-background-writes.js +9 -5
  81. package/dist/agent/lesson-candidate-queue.d.ts +4 -0
  82. package/dist/agent/lesson-candidate-queue.js +9 -3
  83. package/dist/agent/lesson-provenance.js +9 -3
  84. package/dist/agent/lessons-tracker.d.ts +68 -1
  85. package/dist/agent/lessons-tracker.js +218 -36
  86. package/dist/agent/loop-detection-service.d.ts +56 -0
  87. package/dist/agent/loop-detection-service.js +207 -0
  88. package/dist/agent/middleware/auto-observation.d.ts +2 -0
  89. package/dist/agent/middleware/auto-observation.js +4 -2
  90. package/dist/agent/middleware/auto-repair-middleware.d.ts +2 -0
  91. package/dist/agent/middleware/auto-repair-middleware.js +27 -4
  92. package/dist/agent/middleware/changed-files.d.ts +19 -0
  93. package/dist/agent/middleware/changed-files.js +113 -0
  94. package/dist/agent/middleware/cost-limit.d.ts +0 -2
  95. package/dist/agent/middleware/cost-limit.js +0 -3
  96. package/dist/agent/middleware/index.d.ts +2 -0
  97. package/dist/agent/middleware/index.js +1 -0
  98. package/dist/agent/middleware/pipeline.d.ts +9 -0
  99. package/dist/agent/middleware/pipeline.js +18 -0
  100. package/dist/agent/middleware/plan-completion-audit.d.ts +76 -0
  101. package/dist/agent/middleware/plan-completion-audit.js +157 -0
  102. package/dist/agent/middleware/quality-gate-middleware.d.ts +43 -1
  103. package/dist/agent/middleware/quality-gate-middleware.js +198 -40
  104. package/dist/agent/middleware/types.d.ts +6 -0
  105. package/dist/agent/middleware/verification-enforcement.d.ts +10 -3
  106. package/dist/agent/middleware/verification-enforcement.js +43 -13
  107. package/dist/agent/middleware/workflow-guard.js +7 -0
  108. package/dist/agent/model-benchmark.js +11 -17
  109. package/dist/agent/model-tier.d.ts +2 -2
  110. package/dist/agent/model-tier.js +10 -7
  111. package/dist/agent/multi-agent/agent-memory-integration.js +3 -2
  112. package/dist/agent/multi-agent/base-agent.d.ts +12 -1
  113. package/dist/agent/multi-agent/base-agent.js +58 -10
  114. package/dist/agent/multi-agent/enhanced-coordination.js +1 -0
  115. package/dist/agent/multi-agent/metrics-persistence.js +28 -14
  116. package/dist/agent/multi-agent/multi-agent-system.d.ts +5 -0
  117. package/dist/agent/multi-agent/multi-agent-system.js +81 -4
  118. package/dist/agent/multi-agent/session-fleet-bridge.js +2 -1
  119. package/dist/agent/multi-agent/session-registry.js +9 -3
  120. package/dist/agent/multi-agent/team-manager.d.ts +11 -0
  121. package/dist/agent/multi-agent/team-manager.js +94 -5
  122. package/dist/agent/multi-agent/types.d.ts +10 -1
  123. package/dist/agent/multi-agent/workflow-multi-persistence.js +16 -8
  124. package/dist/agent/multi-agent/workflow-persistence.js +9 -6
  125. package/dist/agent/observer/trigger-registry.js +3 -5
  126. package/dist/agent/operating-modes.d.ts +3 -0
  127. package/dist/agent/operating-modes.js +15 -22
  128. package/dist/agent/pipelines.d.ts +2 -4
  129. package/dist/agent/pipelines.js +1 -1
  130. package/dist/agent/plan-mode.js +1 -1
  131. package/dist/agent/prompt-suggestions.js +2 -1
  132. package/dist/agent/prompt-tool-observation.d.ts +55 -0
  133. package/dist/agent/prompt-tool-observation.js +165 -0
  134. package/dist/agent/reasoning/tree-of-thought.js +1 -1
  135. package/dist/agent/repair/repair-engine.js +1 -1
  136. package/dist/agent/repo-profiler.d.ts +12 -1
  137. package/dist/agent/repo-profiler.js +21 -15
  138. package/dist/agent/repo-profiling/cache.js +6 -9
  139. package/dist/agent/research-worker-provider.d.ts +38 -0
  140. package/dist/agent/research-worker-provider.js +30 -0
  141. package/dist/agent/science/experiment-decision.d.ts +48 -0
  142. package/dist/agent/science/experiment-decision.js +65 -0
  143. package/dist/agent/science/experiment-empirical-gate.d.ts +83 -0
  144. package/dist/agent/science/experiment-empirical-gate.js +156 -0
  145. package/dist/agent/science/experiment-fitness.d.ts +112 -0
  146. package/dist/agent/science/experiment-fitness.js +188 -0
  147. package/dist/agent/science/experiment-loop.d.ts +196 -0
  148. package/dist/agent/science/experiment-loop.js +765 -0
  149. package/dist/agent/science/experiment-orchestrator.d.ts +203 -0
  150. package/dist/agent/science/experiment-orchestrator.js +454 -0
  151. package/dist/agent/science/experiment-sandbox-backends.d.ts +56 -0
  152. package/dist/agent/science/experiment-sandbox-backends.js +201 -0
  153. package/dist/agent/science/experiment-sandbox.d.ts +105 -0
  154. package/dist/agent/science/experiment-sandbox.js +196 -0
  155. package/dist/agent/science/experiment-variant-store.d.ts +108 -0
  156. package/dist/agent/science/experiment-variant-store.js +156 -0
  157. package/dist/agent/science/human-gate.d.ts +31 -0
  158. package/dist/agent/science/human-gate.js +32 -0
  159. package/dist/agent/self-improvement/authored-artifact-gate.js +28 -3
  160. package/dist/agent/self-improvement/authored-tool-runtime.d.ts +4 -2
  161. package/dist/agent/self-improvement/authored-tool-runtime.js +8 -3
  162. package/dist/agent/self-improvement/authored-tool-store.js +3 -2
  163. package/dist/agent/self-improvement/capability-benchmark.js +89 -2
  164. package/dist/agent/self-improvement/continuous-benchmark.d.ts +105 -0
  165. package/dist/agent/self-improvement/continuous-benchmark.js +355 -0
  166. package/dist/agent/self-improvement/delegation-facts.d.ts +105 -0
  167. package/dist/agent/self-improvement/delegation-facts.js +483 -0
  168. package/dist/agent/self-improvement/digest-sources.d.ts +56 -0
  169. package/dist/agent/self-improvement/digest-sources.js +294 -0
  170. package/dist/agent/self-improvement/digest.d.ts +169 -0
  171. package/dist/agent/self-improvement/digest.js +543 -0
  172. package/dist/agent/self-improvement/engine.d.ts +11 -6
  173. package/dist/agent/self-improvement/engine.js +13 -7
  174. package/dist/agent/self-improvement/evolution/ast-novelty.d.ts +20 -0
  175. package/dist/agent/self-improvement/evolution/ast-novelty.js +81 -0
  176. package/dist/agent/self-improvement/evolution/code-variant-store.d.ts +101 -0
  177. package/dist/agent/self-improvement/evolution/code-variant-store.js +229 -0
  178. package/dist/agent/self-improvement/evolution/evolution-engine.d.ts +199 -0
  179. package/dist/agent/self-improvement/evolution/evolution-engine.js +503 -0
  180. package/dist/agent/self-improvement/evolution/feature-map.d.ts +24 -0
  181. package/dist/agent/self-improvement/evolution/feature-map.js +88 -0
  182. package/dist/agent/self-improvement/evolution/model-bandit.d.ts +57 -0
  183. package/dist/agent/self-improvement/evolution/model-bandit.js +98 -0
  184. package/dist/agent/self-improvement/evolution/protected-paths.d.ts +31 -0
  185. package/dist/agent/self-improvement/evolution/protected-paths.js +105 -0
  186. package/dist/agent/self-improvement/evolution/research-weakness-source.d.ts +56 -0
  187. package/dist/agent/self-improvement/evolution/research-weakness-source.js +161 -0
  188. package/dist/agent/self-improvement/evolution/scrub-env.d.ts +22 -0
  189. package/dist/agent/self-improvement/evolution/scrub-env.js +40 -0
  190. package/dist/agent/self-improvement/evolution/variant-fitness.d.ts +86 -0
  191. package/dist/agent/self-improvement/evolution/variant-fitness.js +217 -0
  192. package/dist/agent/self-improvement/evolution/variant-planner.d.ts +41 -0
  193. package/dist/agent/self-improvement/evolution/variant-planner.js +156 -0
  194. package/dist/agent/self-improvement/evolution/weakness-selector.d.ts +38 -0
  195. package/dist/agent/self-improvement/evolution/weakness-selector.js +108 -0
  196. package/dist/agent/self-improvement/evolution/worktree-scorer.d.ts +44 -0
  197. package/dist/agent/self-improvement/evolution/worktree-scorer.js +99 -0
  198. package/dist/agent/self-improvement/evolutionary-archive.js +3 -2
  199. package/dist/agent/self-improvement/experience-source.d.ts +60 -7
  200. package/dist/agent/self-improvement/experience-source.js +78 -8
  201. package/dist/agent/self-improvement/index.d.ts +1 -0
  202. package/dist/agent/self-improvement/index.js +6 -3
  203. package/dist/agent/self-improvement/learning-store.d.ts +16 -0
  204. package/dist/agent/self-improvement/learning-store.js +83 -3
  205. package/dist/agent/self-improvement/llm-drafter.d.ts +3 -1
  206. package/dist/agent/self-improvement/llm-drafter.js +20 -2
  207. package/dist/agent/self-improvement/llm-tool-proposer.js +1 -1
  208. package/dist/agent/self-improvement/proposal-store.d.ts +46 -0
  209. package/dist/agent/self-improvement/proposal-store.js +87 -0
  210. package/dist/agent/self-improvement/proposer.d.ts +1 -1
  211. package/dist/agent/self-improvement/proposer.js +94 -2
  212. package/dist/agent/self-improvement/rule-store.js +5 -4
  213. package/dist/agent/self-improvement/sandbox-scorer.d.ts +1 -1
  214. package/dist/agent/self-improvement/sandbox-scorer.js +8 -4
  215. package/dist/agent/self-improvement/self-knowledge.d.ts +1 -1
  216. package/dist/agent/self-improvement/self-knowledge.js +8 -8
  217. package/dist/agent/self-improvement/skill-benchmark.js +27 -0
  218. package/dist/agent/self-improvement/skill-consolidator.js +16 -0
  219. package/dist/agent/self-improvement/skill-engine.d.ts +7 -0
  220. package/dist/agent/self-improvement/skill-engine.js +54 -28
  221. package/dist/agent/self-improvement/skill-gate.d.ts +4 -4
  222. package/dist/agent/self-improvement/skill-gate.js +38 -20
  223. package/dist/agent/self-improvement/skill-mutator.d.ts +20 -1
  224. package/dist/agent/self-improvement/skill-mutator.js +138 -19
  225. package/dist/agent/self-improvement/skill-proposer.js +2 -1
  226. package/dist/agent/self-improvement/skill-types.d.ts +4 -0
  227. package/dist/agent/self-improvement/strategy-engine.d.ts +54 -0
  228. package/dist/agent/self-improvement/strategy-engine.js +104 -0
  229. package/dist/agent/self-improvement/strategy-gate.d.ts +49 -0
  230. package/dist/agent/self-improvement/strategy-gate.js +243 -0
  231. package/dist/agent/self-improvement/strategy-live.d.ts +39 -0
  232. package/dist/agent/self-improvement/strategy-live.js +114 -0
  233. package/dist/agent/self-improvement/strategy-proposer.d.ts +30 -0
  234. package/dist/agent/self-improvement/strategy-proposer.js +114 -0
  235. package/dist/agent/self-improvement/strategy-replay.d.ts +40 -0
  236. package/dist/agent/self-improvement/strategy-replay.js +150 -0
  237. package/dist/agent/self-improvement/strategy-runtime.d.ts +43 -0
  238. package/dist/agent/self-improvement/strategy-runtime.js +56 -0
  239. package/dist/agent/self-improvement/strategy-store.d.ts +38 -0
  240. package/dist/agent/self-improvement/strategy-store.js +139 -0
  241. package/dist/agent/self-improvement/strategy-types.d.ts +229 -0
  242. package/dist/agent/self-improvement/strategy-types.js +90 -0
  243. package/dist/agent/self-improvement/tool-benchmark.js +164 -8
  244. package/dist/agent/self-improvement/tool-engine.d.ts +12 -3
  245. package/dist/agent/self-improvement/tool-engine.js +59 -31
  246. package/dist/agent/self-improvement/tool-gate.d.ts +2 -0
  247. package/dist/agent/self-improvement/tool-gate.js +26 -0
  248. package/dist/agent/self-improvement/tool-skill-mutator.d.ts +1 -1
  249. package/dist/agent/self-improvement/tool-skill-mutator.js +20 -2
  250. package/dist/agent/self-improvement/tool-types.d.ts +5 -3
  251. package/dist/agent/self-improvement/types.d.ts +7 -3
  252. package/dist/agent/session-end-flush.js +2 -1
  253. package/dist/agent/specialized/agent-registry.d.ts +1 -0
  254. package/dist/agent/specialized/agent-registry.js +118 -0
  255. package/dist/agent/specialized/excel-agent.js +15 -1
  256. package/dist/agent/specialized/index.d.ts +1 -0
  257. package/dist/agent/specialized/index.js +2 -0
  258. package/dist/agent/specialized/pdf-agent.js +4 -2
  259. package/dist/agent/specialized/swe-agent-adapter.js +8 -0
  260. package/dist/agent/specialized/swe-agent.d.ts +16 -1
  261. package/dist/agent/specialized/swe-agent.js +75 -7
  262. package/dist/agent/specialized/types.d.ts +31 -1
  263. package/dist/agent/specialized/types.js +26 -0
  264. package/dist/agent/specialized/verifier-agent.d.ts +53 -0
  265. package/dist/agent/specialized/verifier-agent.js +342 -0
  266. package/dist/agent/streaming/message-reducer.js +73 -19
  267. package/dist/agent/streaming/streaming-handler.d.ts +24 -0
  268. package/dist/agent/streaming/streaming-handler.js +136 -1
  269. package/dist/agent/subagents.d.ts +10 -4
  270. package/dist/agent/subagents.js +39 -6
  271. package/dist/agent/thinking/extended-thinking.js +1 -1
  272. package/dist/agent/todo-tracker.js +5 -4
  273. package/dist/agent/tool-executor.d.ts +10 -1
  274. package/dist/agent/tool-executor.js +29 -0
  275. package/dist/agent/tool-handler.d.ts +49 -2
  276. package/dist/agent/tool-handler.js +738 -181
  277. package/dist/agent/types.d.ts +3 -5
  278. package/dist/agent/wide-research-checkpoint.d.ts +77 -0
  279. package/dist/agent/wide-research-checkpoint.js +361 -0
  280. package/dist/agent/wide-research-files.d.ts +11 -0
  281. package/dist/agent/wide-research-files.js +189 -0
  282. package/dist/agent/wide-research.d.ts +148 -3
  283. package/dist/agent/wide-research.js +833 -56
  284. package/dist/analytics/code-evolution.js +20 -15
  285. package/dist/analytics/complexity-analyzer.js +2 -2
  286. package/dist/analytics/cost-report.d.ts +71 -0
  287. package/dist/analytics/cost-report.js +724 -0
  288. package/dist/analytics/dashboard.js +8 -7
  289. package/dist/analytics/index.d.ts +2 -0
  290. package/dist/analytics/index.js +2 -0
  291. package/dist/analytics/repo-explainer-collector.d.ts +13 -0
  292. package/dist/analytics/repo-explainer-collector.js +351 -0
  293. package/dist/analytics/repo-explainer.d.ts +224 -0
  294. package/dist/analytics/repo-explainer.js +605 -0
  295. package/dist/analytics/roi-tracker.js +11 -9
  296. package/dist/api/webhooks.js +9 -14
  297. package/dist/app/application-factory.d.ts +1 -1
  298. package/dist/app/application-factory.js +6 -5
  299. package/dist/auth/profile-manager.js +8 -4
  300. package/dist/avatar/avatar-event-bus.d.ts +16 -0
  301. package/dist/avatar/avatar-event-bus.js +53 -0
  302. package/dist/avatar/avatar-gateway-bridge.d.ts +26 -0
  303. package/dist/avatar/avatar-gateway-bridge.js +54 -0
  304. package/dist/avatar/avatar-protocol.d.ts +133 -0
  305. package/dist/avatar/avatar-protocol.js +241 -0
  306. package/dist/avatar/avatar-renderer-registry.d.ts +56 -0
  307. package/dist/avatar/avatar-renderer-registry.js +191 -0
  308. package/dist/avatar/avatar-renderer-simulator.d.ts +31 -0
  309. package/dist/avatar/avatar-renderer-simulator.js +160 -0
  310. package/dist/browser-automation/browser-manager.d.ts +15 -1
  311. package/dist/browser-automation/browser-manager.js +101 -0
  312. package/dist/browser-automation/browser-operator-executor.d.ts +89 -7
  313. package/dist/browser-automation/browser-operator-executor.js +1280 -58
  314. package/dist/browser-automation/browser-operator-runtime.d.ts +87 -0
  315. package/dist/browser-automation/browser-operator-runtime.js +441 -0
  316. package/dist/browser-automation/browser-operator-session.js +4 -3
  317. package/dist/browser-automation/browser-tool.d.ts +17 -2
  318. package/dist/browser-automation/browser-tool.js +101 -39
  319. package/dist/browser-automation/internet-scout-plan.d.ts +1 -0
  320. package/dist/browser-automation/internet-scout-plan.js +17 -0
  321. package/dist/browser-automation/profile-manager.js +5 -3
  322. package/dist/browser-automation/types.d.ts +25 -0
  323. package/dist/cache/advanced-lru-cache.js +4 -4
  324. package/dist/cache/cache-manager.js +9 -10
  325. package/dist/cache/embedding-cache.js +6 -5
  326. package/dist/cache/llm-response-cache.js +3 -4
  327. package/dist/capture/screen-recorder.d.ts +2 -0
  328. package/dist/capture/screen-recorder.js +6 -4
  329. package/dist/capture/screen-watcher.d.ts +6 -3
  330. package/dist/capture/screen-watcher.js +86 -9
  331. package/dist/channels/channel-cognitive-port.d.ts +46 -0
  332. package/dist/channels/channel-cognitive-port.js +182 -0
  333. package/dist/channels/channel-model-override.d.ts +47 -0
  334. package/dist/channels/channel-model-override.js +62 -0
  335. package/dist/channels/companion-channel-profile.d.ts +68 -0
  336. package/dist/channels/companion-channel-profile.js +142 -0
  337. package/dist/channels/companion-channel-turn.d.ts +30 -0
  338. package/dist/channels/companion-channel-turn.js +38 -0
  339. package/dist/channels/core.d.ts +37 -3
  340. package/dist/channels/core.js +63 -6
  341. package/dist/channels/discord/client.js +34 -14
  342. package/dist/channels/dm-pairing.d.ts +18 -4
  343. package/dist/channels/dm-pairing.js +199 -33
  344. package/dist/channels/gateway-lifecycle.d.ts +2 -0
  345. package/dist/channels/gateway-lifecycle.js +1 -0
  346. package/dist/channels/identity-links.d.ts +19 -1
  347. package/dist/channels/identity-links.js +68 -12
  348. package/dist/channels/matrix/index.js +6 -2
  349. package/dist/channels/pro/pro-features.js +17 -0
  350. package/dist/channels/pro/run-tracker.js +9 -4
  351. package/dist/channels/pro/scoped-auth.js +10 -8
  352. package/dist/channels/provider-failure-speech.d.ts +28 -0
  353. package/dist/channels/provider-failure-speech.js +128 -0
  354. package/dist/channels/reconnection-manager.d.ts +2 -0
  355. package/dist/channels/reconnection-manager.js +7 -2
  356. package/dist/channels/resolve-channel-secret.d.ts +43 -0
  357. package/dist/channels/resolve-channel-secret.js +82 -0
  358. package/dist/channels/slack/block-builder.d.ts +12 -0
  359. package/dist/channels/slack/block-builder.js +70 -2
  360. package/dist/channels/slack/client.js +62 -15
  361. package/dist/channels/slack/types.d.ts +20 -1
  362. package/dist/channels/telegram/client.d.ts +36 -3
  363. package/dist/channels/telegram/client.js +438 -84
  364. package/dist/channels/telegram/types.d.ts +2 -0
  365. package/dist/channels/webhook-server.js +8 -1
  366. package/dist/channels/whatsapp/index.js +2 -1
  367. package/dist/checkpoints/ghost-snapshot.js +15 -9
  368. package/dist/checkpoints/persistent-checkpoint-manager.js +15 -8
  369. package/dist/cli/command-routing.d.ts +22 -0
  370. package/dist/cli/command-routing.js +54 -0
  371. package/dist/cli/first-run.d.ts +17 -0
  372. package/dist/cli/first-run.js +40 -0
  373. package/dist/cli/headless-options.d.ts +22 -0
  374. package/dist/cli/headless-options.js +112 -0
  375. package/dist/cli/headless-prompt-progress.d.ts +22 -0
  376. package/dist/cli/headless-prompt-progress.js +35 -0
  377. package/dist/cli/headless.js +2 -2
  378. package/dist/cli/listen-port.d.ts +8 -0
  379. package/dist/cli/listen-port.js +20 -0
  380. package/dist/cli/permission-mode-option.d.ts +14 -0
  381. package/dist/cli/permission-mode-option.js +64 -0
  382. package/dist/cli/requested-profile.d.ts +15 -0
  383. package/dist/cli/requested-profile.js +27 -0
  384. package/dist/cli/unknown-option-hint.d.ts +16 -0
  385. package/dist/cli/unknown-option-hint.js +116 -0
  386. package/dist/cli/voice-command.d.ts +32 -0
  387. package/dist/cli/voice-command.js +96 -0
  388. package/dist/codebuddy/abort-signal.d.ts +7 -0
  389. package/dist/codebuddy/abort-signal.js +31 -0
  390. package/dist/codebuddy/client.d.ts +68 -0
  391. package/dist/codebuddy/client.js +460 -11
  392. package/dist/codebuddy/fleet-tool-defs.js +5 -0
  393. package/dist/codebuddy/llm-retry.d.ts +24 -0
  394. package/dist/codebuddy/llm-retry.js +124 -0
  395. package/dist/codebuddy/provider-error-classifier.d.ts +86 -0
  396. package/dist/codebuddy/provider-error-classifier.js +410 -0
  397. package/dist/codebuddy/provider-failover-error.d.ts +16 -0
  398. package/dist/codebuddy/provider-failover-error.js +50 -0
  399. package/dist/codebuddy/provider-failover-kind.d.ts +15 -0
  400. package/dist/codebuddy/provider-failover-kind.js +172 -0
  401. package/dist/codebuddy/provider-handoff.d.ts +35 -0
  402. package/dist/codebuddy/provider-handoff.js +294 -0
  403. package/dist/codebuddy/providers/ollama-native-transport.d.ts +130 -0
  404. package/dist/codebuddy/providers/ollama-native-transport.js +387 -0
  405. package/dist/codebuddy/providers/provider-agy-cli.d.ts +29 -0
  406. package/dist/codebuddy/providers/provider-agy-cli.js +264 -0
  407. package/dist/codebuddy/providers/provider-chatgpt-responses.d.ts +59 -7
  408. package/dist/codebuddy/providers/provider-chatgpt-responses.js +519 -164
  409. package/dist/codebuddy/providers/provider-gemini-cli.js +95 -13
  410. package/dist/codebuddy/providers/provider-gemini-native.d.ts +2 -0
  411. package/dist/codebuddy/providers/provider-gemini-native.js +199 -86
  412. package/dist/codebuddy/providers/provider-openai-compat.d.ts +82 -0
  413. package/dist/codebuddy/providers/provider-openai-compat.js +469 -45
  414. package/dist/codebuddy/stream-retry.d.ts +21 -8
  415. package/dist/codebuddy/stream-retry.js +44 -40
  416. package/dist/codebuddy/tool-definitions/advanced-tools.d.ts +4 -0
  417. package/dist/codebuddy/tool-definitions/advanced-tools.js +188 -0
  418. package/dist/codebuddy/tool-definitions/agent-tools.d.ts +5 -0
  419. package/dist/codebuddy/tool-definitions/agent-tools.js +195 -7
  420. package/dist/codebuddy/tool-definitions/browser-tools.d.ts +1 -0
  421. package/dist/codebuddy/tool-definitions/browser-tools.js +65 -1
  422. package/dist/codebuddy/tool-definitions/code-exec-tools.d.ts +8 -0
  423. package/dist/codebuddy/tool-definitions/code-exec-tools.js +29 -0
  424. package/dist/codebuddy/tool-definitions/code-explorer-tools.js +4 -0
  425. package/dist/codebuddy/tool-definitions/comfy-recipe-tools.d.ts +3 -0
  426. package/dist/codebuddy/tool-definitions/comfy-recipe-tools.js +37 -0
  427. package/dist/codebuddy/tool-definitions/core-tools.d.ts +2 -0
  428. package/dist/codebuddy/tool-definitions/core-tools.js +58 -2
  429. package/dist/codebuddy/tool-definitions/delegate-agent-tools.d.ts +11 -0
  430. package/dist/codebuddy/tool-definitions/delegate-agent-tools.js +50 -0
  431. package/dist/codebuddy/tool-definitions/design-tools.d.ts +6 -0
  432. package/dist/codebuddy/tool-definitions/design-tools.js +35 -0
  433. package/dist/codebuddy/tool-definitions/exit-plan-mode-tools.d.ts +1 -0
  434. package/dist/codebuddy/tool-definitions/exit-plan-mode-tools.js +23 -1
  435. package/dist/codebuddy/tool-definitions/index.d.ts +16 -7
  436. package/dist/codebuddy/tool-definitions/index.js +27 -8
  437. package/dist/codebuddy/tool-definitions/lsp-tools.d.ts +7 -1
  438. package/dist/codebuddy/tool-definitions/lsp-tools.js +104 -1
  439. package/dist/codebuddy/tool-definitions/meeting-tools.d.ts +4 -0
  440. package/dist/codebuddy/tool-definitions/meeting-tools.js +32 -0
  441. package/dist/codebuddy/tool-definitions/moa-tools.js +7 -2
  442. package/dist/codebuddy/tool-definitions/multimodal-tools.d.ts +14 -0
  443. package/dist/codebuddy/tool-definitions/multimodal-tools.js +615 -3
  444. package/dist/codebuddy/tool-definitions/research-tools.d.ts +20 -0
  445. package/dist/codebuddy/tool-definitions/research-tools.js +98 -0
  446. package/dist/codebuddy/tool-definitions/self-describe-tools.d.ts +4 -0
  447. package/dist/codebuddy/tool-definitions/self-describe-tools.js +28 -0
  448. package/dist/codebuddy/tool-definitions/self-evolution-tools.d.ts +4 -0
  449. package/dist/codebuddy/tool-definitions/self-evolution-tools.js +31 -0
  450. package/dist/codebuddy/tool-definitions/verify-tools.d.ts +14 -0
  451. package/dist/codebuddy/tool-definitions/verify-tools.js +36 -0
  452. package/dist/codebuddy/tool-definitions/web-tools.d.ts +4 -0
  453. package/dist/codebuddy/tool-definitions/web-tools.js +135 -0
  454. package/dist/codebuddy/tool-definitions/workspace-tools.d.ts +4 -0
  455. package/dist/codebuddy/tool-definitions/workspace-tools.js +43 -0
  456. package/dist/codebuddy/tools.d.ts +15 -17
  457. package/dist/codebuddy/tools.js +235 -55
  458. package/dist/cognition/budget-reservations.d.ts +27 -0
  459. package/dist/cognition/budget-reservations.js +70 -0
  460. package/dist/cognition/cognitive-bus-client.d.ts +94 -0
  461. package/dist/cognition/cognitive-bus-client.js +724 -0
  462. package/dist/cognition/cognitive-hub.d.ts +93 -0
  463. package/dist/cognition/cognitive-hub.js +366 -0
  464. package/dist/cognition/cognitive-mesh.d.ts +38 -0
  465. package/dist/cognition/cognitive-mesh.js +263 -0
  466. package/dist/cognition/cognitive-port.d.ts +35 -0
  467. package/dist/cognition/cognitive-port.js +80 -0
  468. package/dist/cognition/cognitive-wire-contract.d.ts +1542 -0
  469. package/dist/cognition/cognitive-wire-contract.js +164 -0
  470. package/dist/cognition/context-renderer.d.ts +52 -0
  471. package/dist/cognition/context-renderer.js +227 -0
  472. package/dist/cognition/global-workspace.d.ts +39 -0
  473. package/dist/cognition/global-workspace.js +181 -0
  474. package/dist/cognition/index.d.ts +9 -0
  475. package/dist/cognition/index.js +10 -0
  476. package/dist/cognition/llm-specialist.d.ts +40 -0
  477. package/dist/cognition/llm-specialist.js +93 -0
  478. package/dist/cognition/sensory-workspace.d.ts +57 -0
  479. package/dist/cognition/sensory-workspace.js +346 -0
  480. package/dist/cognition/types.d.ts +93 -0
  481. package/dist/cognition/types.js +7 -0
  482. package/dist/cognition/voice-specialists.d.ts +21 -0
  483. package/dist/cognition/voice-specialists.js +89 -0
  484. package/dist/cognition/world-model.d.ts +95 -0
  485. package/dist/cognition/world-model.js +228 -0
  486. package/dist/collaboration/ai-colab-manager.js +12 -13
  487. package/dist/collaboration/team-session.js +25 -11
  488. package/dist/commands/apply-permission-mode.d.ts +27 -0
  489. package/dist/commands/apply-permission-mode.js +35 -0
  490. package/dist/commands/assistant.d.ts +3 -0
  491. package/dist/commands/assistant.js +1022 -0
  492. package/dist/commands/campaign.d.ts +6 -0
  493. package/dist/commands/campaign.js +140 -0
  494. package/dist/commands/capsule.d.ts +2 -0
  495. package/dist/commands/capsule.js +104 -0
  496. package/dist/commands/changelog.d.ts +29 -0
  497. package/dist/commands/changelog.js +283 -0
  498. package/dist/commands/cli/acp-command.js +4 -1
  499. package/dist/commands/cli/backup-command.d.ts +9 -0
  500. package/dist/commands/cli/backup-command.js +47 -0
  501. package/dist/commands/cli/evolve-command.d.ts +26 -0
  502. package/dist/commands/cli/evolve-command.js +259 -0
  503. package/dist/commands/cli/fleet-commands.js +105 -0
  504. package/dist/commands/cli/improve-command.d.ts +2 -1
  505. package/dist/commands/cli/improve-command.js +309 -20
  506. package/dist/commands/cli/native-engine-commands.js +405 -28
  507. package/dist/commands/cli/sensory-command.d.ts +8 -0
  508. package/dist/commands/cli/sensory-command.js +27 -0
  509. package/dist/commands/cli/speak-command.js +87 -24
  510. package/dist/commands/cli/tools-commands.js +68 -36
  511. package/dist/commands/cli/utility-commands.js +34 -9
  512. package/dist/commands/client-dispatcher.d.ts +1 -0
  513. package/dist/commands/client-dispatcher.js +40 -21
  514. package/dist/commands/compress.js +3 -0
  515. package/dist/commands/cost.d.ts +33 -0
  516. package/dist/commands/cost.js +342 -0
  517. package/dist/commands/council-scoreboard.d.ts +8 -0
  518. package/dist/commands/council-scoreboard.js +68 -0
  519. package/dist/commands/council.d.ts +16 -24
  520. package/dist/commands/council.js +247 -255
  521. package/dist/commands/curator-cli.d.ts +14 -0
  522. package/dist/commands/curator-cli.js +57 -0
  523. package/dist/commands/delegate.js +82 -25
  524. package/dist/commands/dev/golden-path.d.ts +71 -0
  525. package/dist/commands/dev/golden-path.js +317 -0
  526. package/dist/commands/dev/index.d.ts +3 -0
  527. package/dist/commands/dev/index.js +151 -119
  528. package/dist/commands/dev/issue-pipeline.js +7 -7
  529. package/dist/commands/dev/workflows.d.ts +2 -0
  530. package/dist/commands/dev/workflows.js +39 -6
  531. package/dist/commands/enhanced-command-handler.d.ts +3 -0
  532. package/dist/commands/enhanced-command-handler.js +29 -12
  533. package/dist/commands/exchange.d.ts +2 -0
  534. package/dist/commands/exchange.js +193 -0
  535. package/dist/commands/explain.d.ts +12 -0
  536. package/dist/commands/explain.js +135 -0
  537. package/dist/commands/film.d.ts +18 -0
  538. package/dist/commands/film.js +239 -0
  539. package/dist/commands/flow.js +15 -5
  540. package/dist/commands/forge.d.ts +2 -0
  541. package/dist/commands/forge.js +102 -0
  542. package/dist/commands/goal-cli.d.ts +3 -0
  543. package/dist/commands/goal-cli.js +9 -4
  544. package/dist/commands/gpu-worker.d.ts +14 -0
  545. package/dist/commands/gpu-worker.js +135 -0
  546. package/dist/commands/handlers/agents-handler.d.ts +11 -2
  547. package/dist/commands/handlers/agents-handler.js +79 -13
  548. package/dist/commands/handlers/auth-handlers.js +12 -5
  549. package/dist/commands/handlers/backup-handlers.d.ts +40 -0
  550. package/dist/commands/handlers/backup-handlers.js +784 -57
  551. package/dist/commands/handlers/batch-handlers.d.ts +72 -2
  552. package/dist/commands/handlers/batch-handlers.js +443 -37
  553. package/dist/commands/handlers/branch-handlers.d.ts +1 -0
  554. package/dist/commands/handlers/channel-handlers.d.ts +7 -2
  555. package/dist/commands/handlers/channel-handlers.js +1665 -111
  556. package/dist/commands/handlers/companion-handler.js +130 -9
  557. package/dist/commands/handlers/daily-reset-handler.d.ts +1 -1
  558. package/dist/commands/handlers/daily-reset-handler.js +1 -1
  559. package/dist/commands/handlers/deepthink-handler.d.ts +2 -0
  560. package/dist/commands/handlers/deepthink-handler.js +49 -0
  561. package/dist/commands/handlers/extra-handlers.js +23 -24
  562. package/dist/commands/handlers/fleet-handler.d.ts +3 -4
  563. package/dist/commands/handlers/fleet-handler.js +82 -35
  564. package/dist/commands/handlers/goal-handler.d.ts +13 -0
  565. package/dist/commands/handlers/goal-handler.js +26 -7
  566. package/dist/commands/handlers/grill-me-handler.d.ts +2 -0
  567. package/dist/commands/handlers/grill-me-handler.js +41 -0
  568. package/dist/commands/handlers/heartbeat-handler.d.ts +2 -2
  569. package/dist/commands/handlers/heartbeat-handler.js +2 -2
  570. package/dist/commands/handlers/index.d.ts +3 -2
  571. package/dist/commands/handlers/index.js +4 -2
  572. package/dist/commands/handlers/memory-handlers.js +40 -0
  573. package/dist/commands/handlers/permissions-handlers.js +3 -2
  574. package/dist/commands/handlers/pr-handlers.js +15 -17
  575. package/dist/commands/handlers/security-handlers.d.ts +1 -1
  576. package/dist/commands/handlers/security-handlers.js +3 -3
  577. package/dist/commands/handlers/slash-session-handlers.d.ts +9 -0
  578. package/dist/commands/handlers/slash-session-handlers.js +134 -0
  579. package/dist/commands/handlers/swarm-handler.js +41 -2
  580. package/dist/commands/handlers/team-handlers.d.ts +28 -1
  581. package/dist/commands/handlers/team-handlers.js +243 -2
  582. package/dist/commands/handlers/think-handlers.js +2 -1
  583. package/dist/commands/handlers/vibe-handlers.js +8 -1
  584. package/dist/commands/handlers/worktree-handlers.js +23 -12
  585. package/dist/commands/headless-slash.d.ts +9 -0
  586. package/dist/commands/headless-slash.js +41 -3
  587. package/dist/commands/import.d.ts +34 -0
  588. package/dist/commands/import.js +478 -0
  589. package/dist/commands/index.d.ts +0 -1
  590. package/dist/commands/index.js +0 -1
  591. package/dist/commands/influencer.d.ts +2 -0
  592. package/dist/commands/influencer.js +87 -0
  593. package/dist/commands/intent.d.ts +6 -0
  594. package/dist/commands/intent.js +131 -0
  595. package/dist/commands/intents.d.ts +10 -0
  596. package/dist/commands/intents.js +163 -0
  597. package/dist/commands/lessons.js +91 -0
  598. package/dist/commands/llm-provider-resolution.d.ts +20 -0
  599. package/dist/commands/llm-provider-resolution.js +74 -13
  600. package/dist/commands/login-prerequisites.d.ts +11 -0
  601. package/dist/commands/login-prerequisites.js +23 -0
  602. package/dist/commands/loop-cli.d.ts +31 -0
  603. package/dist/commands/loop-cli.js +189 -0
  604. package/dist/commands/lora.d.ts +6 -0
  605. package/dist/commands/lora.js +445 -0
  606. package/dist/commands/maison-food.d.ts +10 -0
  607. package/dist/commands/maison-food.js +485 -0
  608. package/dist/commands/maison.d.ts +17 -0
  609. package/dist/commands/maison.js +236 -0
  610. package/dist/commands/mcp.d.ts +6 -0
  611. package/dist/commands/mcp.js +236 -7
  612. package/dist/commands/meeting.d.ts +8 -0
  613. package/dist/commands/meeting.js +31 -0
  614. package/dist/commands/pairing.js +7 -8
  615. package/dist/commands/papers/ask.d.ts +47 -0
  616. package/dist/commands/papers/ask.js +105 -0
  617. package/dist/commands/papers/index.d.ts +19 -0
  618. package/dist/commands/papers/index.js +54 -0
  619. package/dist/commands/provider.d.ts +9 -0
  620. package/dist/commands/provider.js +178 -10
  621. package/dist/commands/replay.d.ts +11 -0
  622. package/dist/commands/replay.js +131 -0
  623. package/dist/commands/research/deep.d.ts +66 -0
  624. package/dist/commands/research/deep.js +236 -0
  625. package/dist/commands/research/discover-searxng.d.ts +25 -0
  626. package/dist/commands/research/discover-searxng.js +62 -0
  627. package/dist/commands/research/index.d.ts +24 -2
  628. package/dist/commands/research/index.js +456 -79
  629. package/dist/commands/research/knowledge-ingest.d.ts +170 -0
  630. package/dist/commands/research/knowledge-ingest.js +449 -0
  631. package/dist/commands/research/wire-research-worker.d.ts +9 -0
  632. package/dist/commands/research/wire-research-worker.js +18 -0
  633. package/dist/commands/run-cli/index.d.ts +3 -1
  634. package/dist/commands/run-cli/index.js +53 -2
  635. package/dist/commands/science/deps.d.ts +95 -0
  636. package/dist/commands/science/deps.js +343 -0
  637. package/dist/commands/science/index.d.ts +31 -0
  638. package/dist/commands/science/index.js +285 -0
  639. package/dist/commands/science/loop-option.d.ts +40 -0
  640. package/dist/commands/science/loop-option.js +91 -0
  641. package/dist/commands/science/sandbox-option.d.ts +44 -0
  642. package/dist/commands/science/sandbox-option.js +42 -0
  643. package/dist/commands/scrape.d.ts +18 -0
  644. package/dist/commands/scrape.js +159 -0
  645. package/dist/commands/self.d.ts +9 -0
  646. package/dist/commands/self.js +56 -0
  647. package/dist/commands/shadow.d.ts +3 -0
  648. package/dist/commands/shadow.js +72 -0
  649. package/dist/commands/share.d.ts +13 -0
  650. package/dist/commands/share.js +71 -0
  651. package/dist/commands/shell-prefix.d.ts +4 -22
  652. package/dist/commands/shell-prefix.js +11 -73
  653. package/dist/commands/skills-cli/index.d.ts +2 -0
  654. package/dist/commands/skills-cli/index.js +190 -15
  655. package/dist/commands/slash/builtin-commands.js +41 -21
  656. package/dist/commands/slash-commands.js +4 -1
  657. package/dist/commands/token.d.ts +80 -0
  658. package/dist/commands/token.js +319 -0
  659. package/dist/commands/try.d.ts +72 -0
  660. package/dist/commands/try.js +357 -0
  661. package/dist/commands/update.d.ts +14 -1
  662. package/dist/commands/update.js +97 -15
  663. package/dist/commands/vision-train.d.ts +15 -0
  664. package/dist/commands/vision-train.js +214 -0
  665. package/dist/commands/whoami-status.d.ts +17 -0
  666. package/dist/commands/whoami-status.js +34 -0
  667. package/dist/commands/widgets.d.ts +2 -0
  668. package/dist/commands/widgets.js +179 -0
  669. package/dist/commands/ws.d.ts +7 -0
  670. package/dist/commands/ws.js +100 -0
  671. package/dist/companion/assistant-config.d.ts +79 -0
  672. package/dist/companion/assistant-config.js +1148 -0
  673. package/dist/companion/attached-image-grounding.d.ts +29 -0
  674. package/dist/companion/attached-image-grounding.js +285 -0
  675. package/dist/companion/away-mode.d.ts +80 -0
  676. package/dist/companion/away-mode.js +269 -0
  677. package/dist/companion/camera-share.d.ts +65 -0
  678. package/dist/companion/camera-share.js +321 -0
  679. package/dist/companion/camera.d.ts +8 -0
  680. package/dist/companion/camera.js +57 -31
  681. package/dist/companion/cards.js +7 -10
  682. package/dist/companion/check-in.js +23 -8
  683. package/dist/companion/companion-doctor.d.ts +58 -0
  684. package/dist/companion/companion-doctor.js +194 -0
  685. package/dist/companion/companion-history.d.ts +23 -0
  686. package/dist/companion/companion-history.js +22 -0
  687. package/dist/companion/companion-mode.d.ts +77 -1
  688. package/dist/companion/companion-mode.js +916 -6
  689. package/dist/companion/companion-photo-intake.d.ts +40 -0
  690. package/dist/companion/companion-photo-intake.js +112 -0
  691. package/dist/companion/companion-photo.d.ts +144 -0
  692. package/dist/companion/companion-photo.js +318 -0
  693. package/dist/companion/companion-turn.d.ts +88 -0
  694. package/dist/companion/companion-turn.js +223 -0
  695. package/dist/companion/companion-voice-character.d.ts +62 -0
  696. package/dist/companion/companion-voice-character.js +148 -0
  697. package/dist/companion/competitive-radar.js +14 -13
  698. package/dist/companion/continuity.d.ts +62 -0
  699. package/dist/companion/continuity.js +284 -0
  700. package/dist/companion/conversation-improvement-loop.d.ts +61 -0
  701. package/dist/companion/conversation-improvement-loop.js +317 -0
  702. package/dist/companion/conversation-quality-insights.d.ts +56 -0
  703. package/dist/companion/conversation-quality-insights.js +161 -0
  704. package/dist/companion/cooking-timer-runner.d.ts +20 -0
  705. package/dist/companion/cooking-timer-runner.js +98 -0
  706. package/dist/companion/core-adapter.d.ts +60 -0
  707. package/dist/companion/core-adapter.js +111 -0
  708. package/dist/companion/crisis-safety.d.ts +52 -0
  709. package/dist/companion/crisis-safety.js +150 -0
  710. package/dist/companion/daily-interaction-budget.d.ts +34 -0
  711. package/dist/companion/daily-interaction-budget.js +260 -0
  712. package/dist/companion/dialogue-percepts.d.ts +16 -0
  713. package/dist/companion/dialogue-percepts.js +50 -0
  714. package/dist/companion/event-followups.d.ts +58 -0
  715. package/dist/companion/event-followups.js +213 -0
  716. package/dist/companion/fashion-scene-catalog.d.ts +29 -0
  717. package/dist/companion/fashion-scene-catalog.js +141 -0
  718. package/dist/companion/gateway-inbox.js +25 -13
  719. package/dist/companion/gateway.d.ts +1 -0
  720. package/dist/companion/gateway.js +37 -17
  721. package/dist/companion/home-interaction-policy.d.ts +31 -0
  722. package/dist/companion/home-interaction-policy.js +89 -0
  723. package/dist/companion/household-time.d.ts +9 -0
  724. package/dist/companion/household-time.js +15 -0
  725. package/dist/companion/idle-loop.d.ts +53 -0
  726. package/dist/companion/idle-loop.js +254 -0
  727. package/dist/companion/impulses.js +148 -23
  728. package/dist/companion/inner-life.d.ts +60 -0
  729. package/dist/companion/inner-life.js +112 -0
  730. package/dist/companion/jokes.d.ts +21 -0
  731. package/dist/companion/jokes.js +175 -0
  732. package/dist/companion/lisa-selfie-cache.d.ts +36 -0
  733. package/dist/companion/lisa-selfie-cache.js +123 -0
  734. package/dist/companion/lisa-selfie-ingest.d.ts +36 -0
  735. package/dist/companion/lisa-selfie-ingest.js +205 -0
  736. package/dist/companion/lisa-selfie-refill.d.ts +32 -0
  737. package/dist/companion/lisa-selfie-refill.js +121 -0
  738. package/dist/companion/lisa-selfie-router.d.ts +40 -0
  739. package/dist/companion/lisa-selfie-router.js +156 -0
  740. package/dist/companion/lisa-selfie.d.ts +97 -0
  741. package/dist/companion/lisa-selfie.js +542 -0
  742. package/dist/companion/maison-voice-actions.d.ts +34 -0
  743. package/dist/companion/maison-voice-actions.js +192 -0
  744. package/dist/companion/migration.d.ts +63 -0
  745. package/dist/companion/migration.js +270 -0
  746. package/dist/companion/mission-board.js +7 -10
  747. package/dist/companion/mission-runner.js +2 -3
  748. package/dist/companion/mobile-conversation-log.d.ts +19 -0
  749. package/dist/companion/mobile-conversation-log.js +157 -0
  750. package/dist/companion/mobile-history.d.ts +34 -0
  751. package/dist/companion/mobile-history.js +123 -0
  752. package/dist/companion/mysoulmate-image-prompts.d.ts +26 -0
  753. package/dist/companion/mysoulmate-image-prompts.js +278 -0
  754. package/dist/companion/orchestrator.d.ts +32 -0
  755. package/dist/companion/orchestrator.js +49 -0
  756. package/dist/companion/percepts.d.ts +70 -0
  757. package/dist/companion/percepts.js +251 -18
  758. package/dist/companion/personas/copine.d.ts +8 -0
  759. package/dist/companion/personas/copine.js +195 -0
  760. package/dist/companion/personas/index.d.ts +19 -0
  761. package/dist/companion/personas/index.js +33 -0
  762. package/dist/companion/personas/types.d.ts +34 -0
  763. package/dist/companion/personas/types.js +8 -0
  764. package/dist/companion/photo-memory-fr.d.ts +36 -0
  765. package/dist/companion/photo-memory-fr.js +291 -0
  766. package/dist/companion/prefetch-config.d.ts +38 -0
  767. package/dist/companion/prefetch-config.js +119 -0
  768. package/dist/companion/prefetch-engine.d.ts +87 -0
  769. package/dist/companion/prefetch-engine.js +513 -0
  770. package/dist/companion/presence-loop.d.ts +85 -0
  771. package/dist/companion/presence-loop.js +297 -0
  772. package/dist/companion/privacy.js +3 -2
  773. package/dist/companion/proactive-engine.d.ts +97 -0
  774. package/dist/companion/proactive-engine.js +447 -0
  775. package/dist/companion/recent-said.d.ts +30 -0
  776. package/dist/companion/recent-said.js +98 -0
  777. package/dist/companion/relational-benchmark-scenarios.d.ts +191 -0
  778. package/dist/companion/relational-benchmark-scenarios.js +227 -0
  779. package/dist/companion/relational-context.d.ts +71 -0
  780. package/dist/companion/relational-context.js +302 -0
  781. package/dist/companion/relational-episode-evaluator.d.ts +117 -0
  782. package/dist/companion/relational-episode-evaluator.js +453 -0
  783. package/dist/companion/relationship-evolution.d.ts +2 -0
  784. package/dist/companion/relationship-evolution.js +30 -0
  785. package/dist/companion/relationship-state.d.ts +106 -0
  786. package/dist/companion/relationship-state.js +293 -0
  787. package/dist/companion/reminder-runner.d.ts +33 -0
  788. package/dist/companion/reminder-runner.js +183 -0
  789. package/dist/companion/reminders.d.ts +228 -0
  790. package/dist/companion/reminders.js +906 -0
  791. package/dist/companion/reply-augment.d.ts +87 -0
  792. package/dist/companion/reply-augment.js +464 -0
  793. package/dist/companion/safety-ledger.js +19 -12
  794. package/dist/companion/self-evaluation.js +22 -23
  795. package/dist/companion/shared-photo-memory.d.ts +65 -0
  796. package/dist/companion/shared-photo-memory.js +145 -0
  797. package/dist/companion/shared-photos.d.ts +88 -0
  798. package/dist/companion/shared-photos.js +321 -0
  799. package/dist/companion/signature-locations.d.ts +16 -0
  800. package/dist/companion/signature-locations.js +108 -0
  801. package/dist/companion/skill-curator.d.ts +9 -0
  802. package/dist/companion/skill-curator.js +147 -58
  803. package/dist/companion/untrusted-text.d.ts +22 -0
  804. package/dist/companion/untrusted-text.js +47 -0
  805. package/dist/companion/user-name.d.ts +18 -0
  806. package/dist/companion/user-name.js +22 -0
  807. package/dist/companion/visual-consent.d.ts +40 -0
  808. package/dist/companion/visual-consent.js +98 -0
  809. package/dist/companion/visual-grounding.d.ts +83 -0
  810. package/dist/companion/visual-grounding.js +474 -0
  811. package/dist/companion/voice-callbacks.d.ts +9 -0
  812. package/dist/companion/voice-callbacks.js +84 -0
  813. package/dist/companion/voice-guidance.d.ts +23 -0
  814. package/dist/companion/voice-guidance.js +85 -0
  815. package/dist/companion/voice-improvement-loop.d.ts +53 -0
  816. package/dist/companion/voice-improvement-loop.js +279 -0
  817. package/dist/companion/voice-incident-repair.d.ts +41 -0
  818. package/dist/companion/voice-incident-repair.js +214 -0
  819. package/dist/config/constants.d.ts +41 -0
  820. package/dist/config/constants.js +14 -0
  821. package/dist/config/env-schema.d.ts +2 -0
  822. package/dist/config/env-schema.js +714 -5
  823. package/dist/config/feature-flags.js +8 -12
  824. package/dist/config/feature-surface.d.ts +12 -0
  825. package/dist/config/feature-surface.js +86 -0
  826. package/dist/config/headless-local-prompt.d.ts +9 -0
  827. package/dist/config/headless-local-prompt.js +39 -0
  828. package/dist/config/local-runtime-context.d.ts +41 -0
  829. package/dist/config/local-runtime-context.js +430 -0
  830. package/dist/config/model-registry.js +4 -0
  831. package/dist/config/model-strengths.d.ts +14 -0
  832. package/dist/config/model-strengths.js +15 -0
  833. package/dist/config/model-tools.d.ts +56 -0
  834. package/dist/config/model-tools.js +819 -21
  835. package/dist/config/secret-ref.d.ts +22 -3
  836. package/dist/config/secret-ref.js +103 -41
  837. package/dist/config/toml-config.d.ts +20 -4
  838. package/dist/config/toml-config.js +40 -2
  839. package/dist/context/auto-compact-threshold.d.ts +1 -1
  840. package/dist/context/auto-compact-threshold.js +1 -1
  841. package/dist/context/codebase-map.js +9 -4
  842. package/dist/context/codebase-rag/codebase-rag.js +7 -6
  843. package/dist/context/codebase-rag/hnsw-store.js +9 -4
  844. package/dist/context/codebase-rag/vector-store.js +4 -4
  845. package/dist/context/compaction/parallel-summarizer.js +1 -0
  846. package/dist/context/compression.js +25 -29
  847. package/dist/context/context-manager-v2.d.ts +95 -7
  848. package/dist/context/context-manager-v2.js +442 -89
  849. package/dist/context/context-manager-v3.d.ts +4 -0
  850. package/dist/context/context-manager-v3.js +68 -9
  851. package/dist/context/cross-encoder-reranker.js +8 -3
  852. package/dist/context/default-context-engine.js +1 -1
  853. package/dist/context/enhanced-compression.d.ts +26 -2
  854. package/dist/context/enhanced-compression.js +81 -30
  855. package/dist/context/file-mentions.d.ts +46 -0
  856. package/dist/context/file-mentions.js +245 -0
  857. package/dist/context/importance-scorer.js +4 -3
  858. package/dist/context/jit-context.d.ts +7 -0
  859. package/dist/context/jit-context.js +22 -4
  860. package/dist/context/lm-resizer-compressor.d.ts +102 -0
  861. package/dist/context/lm-resizer-compressor.js +593 -0
  862. package/dist/context/precompaction-flush.js +1 -1
  863. package/dist/context/restorable-compression.d.ts +59 -14
  864. package/dist/context/restorable-compression.js +310 -60
  865. package/dist/context/segment-archive.d.ts +36 -0
  866. package/dist/context/segment-archive.js +220 -0
  867. package/dist/context/smart-compaction.d.ts +7 -0
  868. package/dist/context/smart-compaction.js +84 -15
  869. package/dist/context/token-counter.d.ts +6 -0
  870. package/dist/context/token-counter.js +41 -0
  871. package/dist/context/token-juice.d.ts +72 -0
  872. package/dist/context/token-juice.js +220 -0
  873. package/dist/context/tool-observation-optimizer.d.ts +90 -0
  874. package/dist/context/tool-observation-optimizer.js +231 -0
  875. package/dist/context/tool-pair-preserver.d.ts +1 -1
  876. package/dist/context/tool-pair-preserver.js +1 -1
  877. package/dist/context/transcript-repair.d.ts +16 -3
  878. package/dist/context/transcript-repair.js +72 -35
  879. package/dist/context/types.d.ts +2 -0
  880. package/dist/conversation/argument-obligations.d.ts +65 -0
  881. package/dist/conversation/argument-obligations.js +157 -0
  882. package/dist/conversation/companion-model-routing.d.ts +121 -0
  883. package/dist/conversation/companion-model-routing.js +810 -0
  884. package/dist/conversation/conversation-benchmark.d.ts +143 -0
  885. package/dist/conversation/conversation-benchmark.js +766 -0
  886. package/dist/conversation/conversation-blind-comparison.d.ts +135 -0
  887. package/dist/conversation/conversation-blind-comparison.js +451 -0
  888. package/dist/conversation/conversation-evaluator.d.ts +56 -0
  889. package/dist/conversation/conversation-evaluator.js +335 -0
  890. package/dist/conversation/conversation-orchestrator.d.ts +32 -0
  891. package/dist/conversation/conversation-orchestrator.js +59 -0
  892. package/dist/conversation/conversation-pilot-corpus.d.ts +33 -0
  893. package/dist/conversation/conversation-pilot-corpus.js +313 -0
  894. package/dist/conversation/conversation-quality.d.ts +31 -0
  895. package/dist/conversation/conversation-quality.js +280 -0
  896. package/dist/conversation/conversation-state.d.ts +23 -0
  897. package/dist/conversation/conversation-state.js +117 -0
  898. package/dist/conversation/cross-channel-bridge.d.ts +127 -0
  899. package/dist/conversation/cross-channel-bridge.js +785 -0
  900. package/dist/conversation/deliberation-thread.d.ts +18 -0
  901. package/dist/conversation/deliberation-thread.js +303 -0
  902. package/dist/conversation/dialogue-act.d.ts +11 -0
  903. package/dist/conversation/dialogue-act.js +132 -0
  904. package/dist/conversation/discourse-planner.d.ts +3 -0
  905. package/dist/conversation/discourse-planner.js +141 -0
  906. package/dist/conversation/fresh-context.d.ts +54 -0
  907. package/dist/conversation/fresh-context.js +258 -0
  908. package/dist/conversation/prefetched-turn-context.d.ts +45 -0
  909. package/dist/conversation/prefetched-turn-context.js +209 -0
  910. package/dist/conversation/relationship-safety.d.ts +37 -0
  911. package/dist/conversation/relationship-safety.js +407 -0
  912. package/dist/conversation/semantic-response-gate.d.ts +262 -0
  913. package/dist/conversation/semantic-response-gate.js +656 -0
  914. package/dist/conversation/semantic-response-runtime.d.ts +79 -0
  915. package/dist/conversation/semantic-response-runtime.js +419 -0
  916. package/dist/conversation/shared-relationship-state.d.ts +60 -0
  917. package/dist/conversation/shared-relationship-state.js +262 -0
  918. package/dist/conversation/types.d.ts +77 -0
  919. package/dist/conversation/types.js +3 -0
  920. package/dist/conversation/voice-continuity.d.ts +13 -0
  921. package/dist/conversation/voice-continuity.js +48 -0
  922. package/dist/council/conductor.d.ts +26 -0
  923. package/dist/council/conductor.js +292 -0
  924. package/dist/council/council-engine.d.ts +29 -0
  925. package/dist/council/council-engine.js +458 -0
  926. package/dist/council/deliberation-health.d.ts +58 -0
  927. package/dist/council/deliberation-health.js +108 -0
  928. package/dist/council/judge.d.ts +69 -0
  929. package/dist/council/judge.js +183 -0
  930. package/dist/council/peers.d.ts +19 -0
  931. package/dist/council/peers.js +47 -0
  932. package/dist/council/signals.d.ts +26 -0
  933. package/dist/council/signals.js +156 -0
  934. package/dist/council/task-types.d.ts +16 -0
  935. package/dist/council/task-types.js +58 -0
  936. package/dist/council/triage.d.ts +48 -0
  937. package/dist/council/triage.js +228 -0
  938. package/dist/council/types.d.ts +292 -0
  939. package/dist/council/types.js +20 -0
  940. package/dist/council/with-timeout.d.ts +10 -0
  941. package/dist/council/with-timeout.js +29 -0
  942. package/dist/curator/curator.d.ts +79 -0
  943. package/dist/curator/curator.js +317 -0
  944. package/dist/daemon/agent-task-executor.js +51 -0
  945. package/dist/daemon/autonomous-daemon.d.ts +2 -0
  946. package/dist/daemon/autonomous-daemon.js +4 -1
  947. package/dist/daemon/autonomous-loop.d.ts +9 -0
  948. package/dist/daemon/autonomous-loop.js +57 -1
  949. package/dist/daemon/autonomy-bench-candidates.d.ts +33 -0
  950. package/dist/daemon/autonomy-bench-candidates.js +68 -0
  951. package/dist/daemon/autonomy-briefing.d.ts +112 -0
  952. package/dist/daemon/autonomy-briefing.js +359 -0
  953. package/dist/daemon/autonomy-run-journal.d.ts +20 -0
  954. package/dist/daemon/autonomy-run-journal.js +41 -0
  955. package/dist/daemon/daily-reset.d.ts +2 -2
  956. package/dist/daemon/daily-reset.js +16 -15
  957. package/dist/daemon/ollama-task-executor.js +9 -1
  958. package/dist/database/database-manager.d.ts +1 -1
  959. package/dist/database/database-manager.js +6 -4
  960. package/dist/database/optional-sqlite.d.ts +20 -0
  961. package/dist/database/optional-sqlite.js +101 -0
  962. package/dist/design/design-system-registry.d.ts +21 -0
  963. package/dist/design/design-system-registry.js +106 -0
  964. package/dist/desktop/codebuddy-engine-adapter.d.ts +34 -0
  965. package/dist/desktop/codebuddy-engine-adapter.js +306 -21
  966. package/dist/desktop/electron-launch-args.d.ts +7 -0
  967. package/dist/desktop/electron-launch-args.js +13 -0
  968. package/dist/desktop/engine-adapter.d.ts +6 -0
  969. package/dist/desktop/launcher.js +2 -1
  970. package/dist/desktop/permission-bridge.d.ts +12 -1
  971. package/dist/desktop/permission-bridge.js +12 -5
  972. package/dist/desktop-automation/omniparser-runner.d.ts +1 -0
  973. package/dist/desktop-automation/omniparser-runner.js +12 -1
  974. package/dist/desktop-automation/smart-snapshot.js +7 -0
  975. package/dist/desktop-automation/windows-native-provider.js +1 -1
  976. package/dist/doctor/assistant-runtime.d.ts +90 -0
  977. package/dist/doctor/assistant-runtime.js +472 -0
  978. package/dist/doctor/env-sanity.d.ts +17 -0
  979. package/dist/doctor/env-sanity.js +74 -0
  980. package/dist/doctor/index.d.ts +37 -0
  981. package/dist/doctor/index.js +389 -37
  982. package/dist/doctor/llm-key-check.d.ts +17 -0
  983. package/dist/doctor/llm-key-check.js +100 -0
  984. package/dist/doctor/ollama-model-selection.d.ts +16 -0
  985. package/dist/doctor/ollama-model-selection.js +55 -0
  986. package/dist/embeddings/embedding-provider.d.ts +1 -0
  987. package/dist/embeddings/embedding-provider.js +21 -9
  988. package/dist/errors/crash-recovery.js +6 -4
  989. package/dist/events/index.d.ts +1 -1
  990. package/dist/events/types.d.ts +44 -0
  991. package/dist/export/repo-explanation.d.ts +10 -0
  992. package/dist/export/repo-explanation.js +334 -0
  993. package/dist/export/session-share.d.ts +34 -0
  994. package/dist/export/session-share.js +687 -0
  995. package/dist/fleet/autonomous-tick-broadcaster.d.ts +1 -1
  996. package/dist/fleet/capability-registry.d.ts +9 -0
  997. package/dist/fleet/capability-registry.js +268 -56
  998. package/dist/fleet/colab-store.d.ts +3 -4
  999. package/dist/fleet/colab-store.js +6 -26
  1000. package/dist/fleet/compatible-model.d.ts +39 -0
  1001. package/dist/fleet/compatible-model.js +148 -0
  1002. package/dist/fleet/consolidation/collecte.d.ts +31 -0
  1003. package/dist/fleet/consolidation/collecte.js +86 -0
  1004. package/dist/fleet/consolidation/digest-texte.d.ts +11 -0
  1005. package/dist/fleet/consolidation/digest-texte.js +52 -0
  1006. package/dist/fleet/consolidation/thalamus.d.ts +35 -0
  1007. package/dist/fleet/consolidation/thalamus.js +151 -0
  1008. package/dist/fleet/consolidation/types.d.ts +66 -0
  1009. package/dist/fleet/consolidation/types.js +22 -0
  1010. package/dist/fleet/cost-tracker.d.ts +11 -0
  1011. package/dist/fleet/cost-tracker.js +64 -17
  1012. package/dist/fleet/fleet-cost-cap.d.ts +36 -0
  1013. package/dist/fleet/fleet-cost-cap.js +175 -0
  1014. package/dist/fleet/fleet-http-surface.d.ts +24 -0
  1015. package/dist/fleet/fleet-http-surface.js +72 -0
  1016. package/dist/fleet/fleet-listener.d.ts +1 -1
  1017. package/dist/fleet/fleet-listener.js +4 -0
  1018. package/dist/fleet/model-capability-heuristics.d.ts +31 -0
  1019. package/dist/fleet/model-capability-heuristics.js +49 -0
  1020. package/dist/fleet/model-inventory.d.ts +46 -0
  1021. package/dist/fleet/model-inventory.js +242 -0
  1022. package/dist/fleet/model-scoreboard.d.ts +118 -13
  1023. package/dist/fleet/model-scoreboard.js +339 -27
  1024. package/dist/fleet/model-selector.d.ts +83 -0
  1025. package/dist/fleet/model-selector.js +218 -0
  1026. package/dist/fleet/peer-chat-bridge.d.ts +9 -2
  1027. package/dist/fleet/peer-chat-bridge.js +133 -19
  1028. package/dist/fleet/peer-chat-client-factory.d.ts +28 -2
  1029. package/dist/fleet/peer-chat-client-factory.js +195 -22
  1030. package/dist/fleet/peer-ckg-bridge.d.ts +67 -0
  1031. package/dist/fleet/peer-ckg-bridge.js +467 -0
  1032. package/dist/fleet/peer-mission-exchange-bridge.d.ts +8 -0
  1033. package/dist/fleet/peer-mission-exchange-bridge.js +127 -0
  1034. package/dist/fleet/peer-session-bridge.d.ts +7 -1
  1035. package/dist/fleet/peer-session-bridge.js +98 -17
  1036. package/dist/fleet/peer-session-store.d.ts +2 -0
  1037. package/dist/fleet/peer-session-store.js +6 -5
  1038. package/dist/fleet/peer-text-sanitizer.d.ts +59 -0
  1039. package/dist/fleet/peer-text-sanitizer.js +99 -0
  1040. package/dist/fleet/peer-tool-bridge.js +38 -10
  1041. package/dist/fleet/privacy-lint.js +80 -8
  1042. package/dist/fleet/saga-store.d.ts +25 -1
  1043. package/dist/fleet/saga-store.js +34 -6
  1044. package/dist/fleet/task-router.d.ts +17 -1
  1045. package/dist/fleet/task-router.js +65 -20
  1046. package/dist/fleet/types.d.ts +9 -5
  1047. package/dist/gateway/device-pairing.js +5 -11
  1048. package/dist/gateway/ws-transport.d.ts +1 -5
  1049. package/dist/gateway/ws-transport.js +2 -22
  1050. package/dist/git/changelog.d.ts +36 -0
  1051. package/dist/git/changelog.js +109 -0
  1052. package/dist/git/worktree-sessions.js +1 -1
  1053. package/dist/goals/counterfactual-forge.d.ts +70 -0
  1054. package/dist/goals/counterfactual-forge.js +184 -0
  1055. package/dist/goals/criterion-progress.d.ts +24 -0
  1056. package/dist/goals/criterion-progress.js +59 -0
  1057. package/dist/goals/evidence-artifact.d.ts +18 -0
  1058. package/dist/goals/evidence-artifact.js +76 -0
  1059. package/dist/goals/goal-decomposer.d.ts +15 -0
  1060. package/dist/goals/goal-decomposer.js +89 -4
  1061. package/dist/goals/goal-loop.d.ts +29 -0
  1062. package/dist/goals/goal-loop.js +92 -6
  1063. package/dist/goals/goal-manager.d.ts +1 -0
  1064. package/dist/goals/goal-manager.js +4 -1
  1065. package/dist/goals/goal-state.d.ts +10 -0
  1066. package/dist/goals/goal-state.js +21 -1
  1067. package/dist/goals/goal-store.js +4 -6
  1068. package/dist/goals/index.d.ts +11 -0
  1069. package/dist/goals/index.js +11 -0
  1070. package/dist/goals/intent-graph.d.ts +40 -0
  1071. package/dist/goals/intent-graph.js +133 -0
  1072. package/dist/goals/mission-constitution.d.ts +59 -0
  1073. package/dist/goals/mission-constitution.js +132 -0
  1074. package/dist/goals/mission-exchange.d.ts +86 -0
  1075. package/dist/goals/mission-exchange.js +216 -0
  1076. package/dist/goals/outcome-capsule.d.ts +80 -0
  1077. package/dist/goals/outcome-capsule.js +186 -0
  1078. package/dist/goals/proof-ledger.d.ts +79 -0
  1079. package/dist/goals/proof-ledger.js +181 -0
  1080. package/dist/goals/proven-outcome-lessons.d.ts +11 -0
  1081. package/dist/goals/proven-outcome-lessons.js +30 -0
  1082. package/dist/goals/proven-outcome-memory.d.ts +55 -0
  1083. package/dist/goals/proven-outcome-memory.js +125 -0
  1084. package/dist/goals/shadow-twin.d.ts +57 -0
  1085. package/dist/goals/shadow-twin.js +110 -0
  1086. package/dist/gpu-worker/gpu-media-worker-server.d.ts +49 -0
  1087. package/dist/gpu-worker/gpu-media-worker-server.js +637 -0
  1088. package/dist/harness/contract.d.ts +84 -84
  1089. package/dist/hooks/advanced-hooks.js +6 -4
  1090. package/dist/hooks/env-persistence.js +5 -6
  1091. package/dist/hooks/hook-manager.js +8 -7
  1092. package/dist/hooks/hook-system.js +6 -4
  1093. package/dist/hooks/lifecycle-hooks.js +6 -3
  1094. package/dist/hooks/moltbot/moltbot-hooks-manager.js +8 -3
  1095. package/dist/hooks/moltbot/session-persistence-manager.js +15 -7
  1096. package/dist/hooks/moltbot/setup-utilities.js +6 -4
  1097. package/dist/hooks/smart-hooks.js +6 -4
  1098. package/dist/hooks/use-input-handler.js +9 -63
  1099. package/dist/hooks/user-hooks.d.ts +10 -1
  1100. package/dist/hooks/user-hooks.js +77 -1
  1101. package/dist/identity/companion-identity.d.ts +4 -1
  1102. package/dist/identity/companion-identity.js +134 -4
  1103. package/dist/identity/identity-manager.d.ts +1 -1
  1104. package/dist/identity/identity-manager.js +7 -6
  1105. package/dist/identity/lisa-introspection.d.ts +36 -0
  1106. package/dist/identity/lisa-introspection.js +411 -0
  1107. package/dist/identity/operational-self-model.d.ts +143 -0
  1108. package/dist/identity/operational-self-model.js +974 -0
  1109. package/dist/index.d.ts +3 -1
  1110. package/dist/index.js +987 -223
  1111. package/dist/input/context-mentions.d.ts +7 -1
  1112. package/dist/input/context-mentions.js +18 -20
  1113. package/dist/input/text-to-speech.d.ts +3 -0
  1114. package/dist/input/text-to-speech.js +70 -27
  1115. package/dist/input/voice-control.d.ts +1 -0
  1116. package/dist/input/voice-control.js +24 -18
  1117. package/dist/input/voice-input-enhanced.d.ts +1 -0
  1118. package/dist/input/voice-input-enhanced.js +31 -16
  1119. package/dist/integrations/ci-autofix-pipeline.js +15 -20
  1120. package/dist/integrations/ide/server.js +3 -2
  1121. package/dist/integrations/json-rpc/server.js +4 -2
  1122. package/dist/integrations/mcp/mcp-server.js +4 -2
  1123. package/dist/integrations/opentelemetry-integration.js +6 -4
  1124. package/dist/integrations/pubcommander-bridge.d.ts +5 -0
  1125. package/dist/integrations/pubcommander-bridge.js +61 -0
  1126. package/dist/integrations/sentry-integration.js +9 -3
  1127. package/dist/intelligence/semantic-search.js +9 -12
  1128. package/dist/intelligence/user-preferences.js +8 -11
  1129. package/dist/intents/intent-checker.d.ts +34 -0
  1130. package/dist/intents/intent-checker.js +175 -0
  1131. package/dist/intents/intent-generator.d.ts +12 -0
  1132. package/dist/intents/intent-generator.js +86 -0
  1133. package/dist/intents/intent-store.d.ts +62 -0
  1134. package/dist/intents/intent-store.js +263 -0
  1135. package/dist/interpreter/computer/skills.js +3 -2
  1136. package/dist/interpreter/interpreter-service.js +18 -9
  1137. package/dist/kanban/kanban-board-registry.js +6 -4
  1138. package/dist/kanban/kanban-store.js +5 -7
  1139. package/dist/knowledge/code-graph-persistence.js +8 -16
  1140. package/dist/knowledge/graph-drift.js +14 -11
  1141. package/dist/knowledge/knowledge-manager.js +2 -1
  1142. package/dist/knowledge/scanners/index.d.ts +3 -0
  1143. package/dist/knowledge/scanners/index.js +57 -29
  1144. package/dist/knowledge/workspace-indexer.js +22 -15
  1145. package/dist/life-rhythm/cooking-timer-store.d.ts +50 -0
  1146. package/dist/life-rhythm/cooking-timer-store.js +240 -0
  1147. package/dist/life-rhythm/day-context.d.ts +30 -0
  1148. package/dist/life-rhythm/day-context.js +198 -0
  1149. package/dist/life-rhythm/etalab-holiday-provider.d.ts +40 -0
  1150. package/dist/life-rhythm/etalab-holiday-provider.js +318 -0
  1151. package/dist/life-rhythm/home-mode-store.d.ts +32 -0
  1152. package/dist/life-rhythm/home-mode-store.js +184 -0
  1153. package/dist/life-rhythm/index.d.ts +6 -0
  1154. package/dist/life-rhythm/index.js +7 -0
  1155. package/dist/life-rhythm/types.d.ts +88 -0
  1156. package/dist/life-rhythm/types.js +33 -0
  1157. package/dist/life-rhythm/zoned-minute.d.ts +24 -0
  1158. package/dist/life-rhythm/zoned-minute.js +113 -0
  1159. package/dist/location/index.d.ts +2 -12
  1160. package/dist/location/index.js +129 -56
  1161. package/dist/logging/interaction-logger.js +29 -46
  1162. package/dist/lora/dataset-v3-plan.d.ts +27 -0
  1163. package/dist/lora/dataset-v3-plan.js +121 -0
  1164. package/dist/lora/dataset.d.ts +26 -0
  1165. package/dist/lora/dataset.js +165 -0
  1166. package/dist/lora/fal-krea-trainer.d.ts +54 -0
  1167. package/dist/lora/fal-krea-trainer.js +197 -0
  1168. package/dist/lora/generate-training-set.d.ts +61 -0
  1169. package/dist/lora/generate-training-set.js +190 -0
  1170. package/dist/lora/identity-dataset-gate.d.ts +104 -0
  1171. package/dist/lora/identity-dataset-gate.js +204 -0
  1172. package/dist/lora/identity-dataset-promotion.d.ts +32 -0
  1173. package/dist/lora/identity-dataset-promotion.js +269 -0
  1174. package/dist/lora/index.d.ts +11 -0
  1175. package/dist/lora/index.js +12 -0
  1176. package/dist/lora/install-comfy.d.ts +14 -0
  1177. package/dist/lora/install-comfy.js +63 -0
  1178. package/dist/lora/lisa-avatar-bible.d.ts +85 -0
  1179. package/dist/lora/lisa-avatar-bible.js +275 -0
  1180. package/dist/lora/local-plan.d.ts +10 -0
  1181. package/dist/lora/local-plan.js +205 -0
  1182. package/dist/lora/pack-dataset.d.ts +7 -0
  1183. package/dist/lora/pack-dataset.js +39 -0
  1184. package/dist/lora/quality-gate.d.ts +31 -0
  1185. package/dist/lora/quality-gate.js +90 -0
  1186. package/dist/lora/types.d.ts +66 -0
  1187. package/dist/lora/types.js +5 -0
  1188. package/dist/lsp/lsp-client.d.ts +12 -0
  1189. package/dist/lsp/lsp-client.js +45 -9
  1190. package/dist/lsp/server.js +1 -1
  1191. package/dist/mcp/approval-elicitation.d.ts +1 -0
  1192. package/dist/mcp/approval-elicitation.js +2 -0
  1193. package/dist/mcp/client.d.ts +15 -1
  1194. package/dist/mcp/client.js +110 -24
  1195. package/dist/mcp/config.d.ts +12 -1
  1196. package/dist/mcp/config.js +55 -12
  1197. package/dist/mcp/index.d.ts +1 -1
  1198. package/dist/mcp/mcp-agent-tools.d.ts +1 -1
  1199. package/dist/mcp/mcp-agent-tools.js +76 -73
  1200. package/dist/mcp/mcp-ckg-tools.d.ts +31 -0
  1201. package/dist/mcp/mcp-ckg-tools.js +121 -0
  1202. package/dist/mcp/mcp-client.js +8 -5
  1203. package/dist/mcp/mcp-desktop-tools.d.ts +1 -1
  1204. package/dist/mcp/mcp-desktop-tools.js +105 -99
  1205. package/dist/mcp/mcp-memory-tools.d.ts +1 -1
  1206. package/dist/mcp/mcp-memory-tools.js +63 -61
  1207. package/dist/mcp/mcp-oauth.js +5 -2
  1208. package/dist/mcp/mcp-server.d.ts +48 -79
  1209. package/dist/mcp/mcp-server.js +445 -478
  1210. package/dist/mcp/mcp-session-tools.d.ts +1 -1
  1211. package/dist/mcp/mcp-session-tools.js +95 -92
  1212. package/dist/mcp/profiles.d.ts +18 -0
  1213. package/dist/mcp/profiles.js +65 -0
  1214. package/dist/mcp/prompt-footprint.d.ts +21 -0
  1215. package/dist/mcp/prompt-footprint.js +39 -0
  1216. package/dist/meals/allergens.d.ts +19 -0
  1217. package/dist/meals/allergens.js +122 -0
  1218. package/dist/meals/compatibility.d.ts +6 -0
  1219. package/dist/meals/compatibility.js +109 -0
  1220. package/dist/meals/food-inventory-store.d.ts +51 -0
  1221. package/dist/meals/food-inventory-store.js +257 -0
  1222. package/dist/meals/index.d.ts +10 -0
  1223. package/dist/meals/index.js +11 -0
  1224. package/dist/meals/meal-engine.d.ts +7 -0
  1225. package/dist/meals/meal-engine.js +206 -0
  1226. package/dist/meals/meal-plan-store.d.ts +73 -0
  1227. package/dist/meals/meal-plan-store.js +271 -0
  1228. package/dist/meals/private-json-store.d.ts +9 -0
  1229. package/dist/meals/private-json-store.js +92 -0
  1230. package/dist/meals/profile-store.d.ts +49 -0
  1231. package/dist/meals/profile-store.js +296 -0
  1232. package/dist/meals/profile-validator.d.ts +7 -0
  1233. package/dist/meals/profile-validator.js +124 -0
  1234. package/dist/meals/recipe-normalizer.d.ts +7 -0
  1235. package/dist/meals/recipe-normalizer.js +162 -0
  1236. package/dist/meals/store-validation.d.ts +21 -0
  1237. package/dist/meals/store-validation.js +101 -0
  1238. package/dist/meals/types.d.ts +170 -0
  1239. package/dist/meals/types.js +12 -0
  1240. package/dist/media/comfy-health-supervisor.d.ts +142 -0
  1241. package/dist/media/comfy-health-supervisor.js +608 -0
  1242. package/dist/media/comfyui-recipe-contract.d.ts +696 -0
  1243. package/dist/media/comfyui-recipe-contract.js +580 -0
  1244. package/dist/media/comfyui-recipe-engine.d.ts +3 -0
  1245. package/dist/media/comfyui-recipe-engine.js +4 -0
  1246. package/dist/media/comfyui-recipe-registry.d.ts +35 -0
  1247. package/dist/media/comfyui-recipe-registry.js +385 -0
  1248. package/dist/media/comfyui-recipe-runtime.d.ts +135 -0
  1249. package/dist/media/comfyui-recipe-runtime.js +942 -0
  1250. package/dist/media/content-tier.d.ts +25 -0
  1251. package/dist/media/content-tier.js +29 -0
  1252. package/dist/meeting/analyzer.d.ts +24 -0
  1253. package/dist/meeting/analyzer.js +402 -0
  1254. package/dist/meeting/index.d.ts +13 -0
  1255. package/dist/meeting/index.js +48 -0
  1256. package/dist/meeting/markdown.d.ts +3 -0
  1257. package/dist/meeting/markdown.js +51 -0
  1258. package/dist/meeting/output.d.ts +13 -0
  1259. package/dist/meeting/output.js +155 -0
  1260. package/dist/meeting/transcript.d.ts +25 -0
  1261. package/dist/meeting/transcript.js +292 -0
  1262. package/dist/meeting/types.d.ts +112 -0
  1263. package/dist/meeting/types.js +9 -0
  1264. package/dist/memory/adapters/network-memory-adapters.d.ts +19 -4
  1265. package/dist/memory/adapters/network-memory-adapters.js +4 -4
  1266. package/dist/memory/auto-memory.js +5 -2
  1267. package/dist/memory/background-extractor.d.ts +43 -0
  1268. package/dist/memory/background-extractor.js +368 -0
  1269. package/dist/memory/buddy-memory-client.d.ts +40 -0
  1270. package/dist/memory/buddy-memory-client.js +198 -0
  1271. package/dist/memory/ckg-engine-policy.d.ts +19 -0
  1272. package/dist/memory/ckg-engine-policy.js +45 -0
  1273. package/dist/memory/ckg-fact-reconciliation.d.ts +81 -0
  1274. package/dist/memory/ckg-fact-reconciliation.js +155 -0
  1275. package/dist/memory/ckg-redaction.d.ts +2 -0
  1276. package/dist/memory/ckg-redaction.js +25 -0
  1277. package/dist/memory/coding-style-analyzer.js +2 -2
  1278. package/dist/memory/collective-knowledge-graph.d.ts +380 -0
  1279. package/dist/memory/collective-knowledge-graph.js +1228 -0
  1280. package/dist/memory/enhanced-memory.d.ts +29 -0
  1281. package/dist/memory/enhanced-memory.js +153 -63
  1282. package/dist/memory/facts-memory.d.ts +9 -4
  1283. package/dist/memory/facts-memory.js +21 -4
  1284. package/dist/memory/hybrid-mmr.d.ts +71 -0
  1285. package/dist/memory/hybrid-mmr.js +127 -0
  1286. package/dist/memory/hybrid-search.js +4 -1
  1287. package/dist/memory/knowledge-graph.d.ts +23 -2
  1288. package/dist/memory/knowledge-graph.js +62 -47
  1289. package/dist/memory/memory-candidate-queue.js +9 -4
  1290. package/dist/memory/memory-consolidation.d.ts +8 -0
  1291. package/dist/memory/memory-consolidation.js +66 -17
  1292. package/dist/memory/memory-forgetting.d.ts +57 -0
  1293. package/dist/memory/memory-forgetting.js +87 -0
  1294. package/dist/memory/ocr-memory-pipeline.js +16 -10
  1295. package/dist/memory/persistent-memory.d.ts +98 -0
  1296. package/dist/memory/persistent-memory.js +711 -119
  1297. package/dist/memory/presence-injector.d.ts +1 -1
  1298. package/dist/memory/presence-injector.js +9 -4
  1299. package/dist/memory/semantic-memory-search.js +12 -9
  1300. package/dist/memory/subagent-memory.js +8 -8
  1301. package/dist/memory/user-model.js +9 -4
  1302. package/dist/metrics/metrics-collector.d.ts +1 -0
  1303. package/dist/metrics/metrics-collector.js +11 -2
  1304. package/dist/nodes/device-node.d.ts +5 -2
  1305. package/dist/nodes/device-node.js +65 -19
  1306. package/dist/nodes/index.d.ts +32 -2
  1307. package/dist/nodes/index.js +208 -7
  1308. package/dist/nodes/transports/adb-transport.d.ts +2 -6
  1309. package/dist/nodes/transports/adb-transport.js +29 -13
  1310. package/dist/nodes/transports/base-transport.d.ts +10 -0
  1311. package/dist/observability/run-store.d.ts +6 -1
  1312. package/dist/observability/run-store.js +89 -22
  1313. package/dist/observability/run-trajectory-load.d.ts +16 -0
  1314. package/dist/observability/run-trajectory-load.js +266 -0
  1315. package/dist/observability/run-trajectory.d.ts +168 -0
  1316. package/dist/observability/run-trajectory.js +468 -0
  1317. package/dist/observability/run-viewer.d.ts +5 -1
  1318. package/dist/observability/run-viewer.js +83 -9
  1319. package/dist/observability/turn-metrics.d.ts +86 -0
  1320. package/dist/observability/turn-metrics.js +201 -0
  1321. package/dist/offline/offline-mode.js +10 -9
  1322. package/dist/openclaw/gateway-bridge.js +3 -2
  1323. package/dist/optimization/latency-optimizer.d.ts +2 -1
  1324. package/dist/optimization/latency-optimizer.js +2 -2
  1325. package/dist/optimization/model-routing.d.ts +3 -0
  1326. package/dist/orchestration/orchestrator.js +4 -1
  1327. package/dist/orchestration/types.d.ts +2 -0
  1328. package/dist/performance/lazy-loader.js +2 -1
  1329. package/dist/performance/tool-cache.d.ts +4 -0
  1330. package/dist/performance/tool-cache.js +4 -2
  1331. package/dist/persistence/conversation-branches.js +9 -2
  1332. package/dist/persistence/session-store.d.ts +26 -0
  1333. package/dist/persistence/session-store.js +56 -17
  1334. package/dist/personas/persona-manager.d.ts +39 -1
  1335. package/dist/personas/persona-manager.js +276 -38
  1336. package/dist/plugins/bundled/groq-provider.js +10 -7
  1337. package/dist/plugins/bundled/openrouter-provider.js +2 -1
  1338. package/dist/plugins/code-explorer/CodeExplorerManager.d.ts +52 -4
  1339. package/dist/plugins/code-explorer/CodeExplorerManager.js +201 -31
  1340. package/dist/plugins/code-explorer/code-explorer-client.d.ts +36 -0
  1341. package/dist/plugins/code-explorer/code-explorer-client.js +86 -0
  1342. package/dist/plugins/code-explorer/index.d.ts +1 -3
  1343. package/dist/plugins/code-explorer/index.js +0 -1
  1344. package/dist/plugins/git-pinned-marketplace.js +3 -2
  1345. package/dist/plugins/plugin-manager.js +6 -9
  1346. package/dist/plugins/sandbox-worker.js +1 -1
  1347. package/dist/prompts/system-base.js +27 -3
  1348. package/dist/protocols/a2a/codebuddy-executor.d.ts +9 -0
  1349. package/dist/protocols/a2a/codebuddy-executor.js +25 -6
  1350. package/dist/protocols/a2a/index.d.ts +6 -0
  1351. package/dist/protocols/a2a/index.js +32 -3
  1352. package/dist/protocols/acp/acp-agentic-runner.d.ts +6 -2
  1353. package/dist/protocols/acp/acp-agentic-runner.js +91 -15
  1354. package/dist/protocols/acp/acp-session-store.js +28 -5
  1355. package/dist/protocols/acp/acp-stdio-server.d.ts +13 -0
  1356. package/dist/protocols/acp/acp-stdio-server.js +30 -3
  1357. package/dist/providers/active-llm-model-pool.d.ts +45 -0
  1358. package/dist/providers/active-llm-model-pool.js +139 -0
  1359. package/dist/providers/active-llm-registry.js +48 -8
  1360. package/dist/providers/auxiliary-provider.d.ts +1 -1
  1361. package/dist/providers/auxiliary-provider.js +23 -10
  1362. package/dist/providers/chatgpt-models.d.ts +71 -0
  1363. package/dist/providers/chatgpt-models.js +302 -0
  1364. package/dist/providers/codex-oauth.d.ts +8 -0
  1365. package/dist/providers/codex-oauth.js +47 -39
  1366. package/dist/providers/gemini-oauth.js +7 -6
  1367. package/dist/providers/grok-provider.js +1 -1
  1368. package/dist/providers/index.d.ts +3 -0
  1369. package/dist/providers/index.js +3 -0
  1370. package/dist/providers/local-model-resolver.d.ts +66 -0
  1371. package/dist/providers/local-model-resolver.js +128 -0
  1372. package/dist/providers/model-egress.d.ts +8 -0
  1373. package/dist/providers/model-egress.js +62 -0
  1374. package/dist/providers/model-provider-compat.d.ts +13 -0
  1375. package/dist/providers/model-provider-compat.js +48 -0
  1376. package/dist/providers/provider-catalog.d.ts +4 -1
  1377. package/dist/providers/provider-catalog.js +494 -28
  1378. package/dist/providers/provider-failover-notify.d.ts +15 -0
  1379. package/dist/providers/provider-failover-notify.js +93 -0
  1380. package/dist/providers/provider-failover-policy.d.ts +28 -0
  1381. package/dist/providers/provider-failover-policy.js +188 -0
  1382. package/dist/providers/provider-failover-user-notice.d.ts +13 -0
  1383. package/dist/providers/provider-failover-user-notice.js +49 -0
  1384. package/dist/providers/provider-fallback.d.ts +1 -0
  1385. package/dist/providers/provider-fallback.js +1 -1
  1386. package/dist/providers/provider-health.d.ts +46 -0
  1387. package/dist/providers/provider-health.js +249 -0
  1388. package/dist/providers/turboquant-provider.d.ts +1 -1
  1389. package/dist/providers/xai-oauth.js +7 -34
  1390. package/dist/queue/persistent-queue.js +9 -6
  1391. package/dist/renderers/charts/special-charts.d.ts +7 -1
  1392. package/dist/renderers/charts/special-charts.js +5 -0
  1393. package/dist/renderers/weather-conditions.d.ts +20 -0
  1394. package/dist/renderers/weather-conditions.js +74 -0
  1395. package/dist/renderers/weather-renderer.js +4 -18
  1396. package/dist/rendering/ansi.d.ts +4 -0
  1397. package/dist/rendering/ansi.js +149 -0
  1398. package/dist/rendering/index.d.ts +19 -0
  1399. package/dist/rendering/index.js +18 -0
  1400. package/dist/rendering/plain.d.ts +2 -0
  1401. package/dist/rendering/plain.js +91 -0
  1402. package/dist/rendering/telegram-html.d.ts +7 -0
  1403. package/dist/rendering/telegram-html.js +76 -16
  1404. package/dist/research/auto-ingest.d.ts +45 -0
  1405. package/dist/research/auto-ingest.js +85 -0
  1406. package/dist/research/code-explorer-source.d.ts +29 -0
  1407. package/dist/research/code-explorer-source.js +76 -0
  1408. package/dist/research/connector-source.d.ts +25 -0
  1409. package/dist/research/connector-source.js +314 -0
  1410. package/dist/research/paper-qa/answer.d.ts +72 -0
  1411. package/dist/research/paper-qa/answer.js +227 -0
  1412. package/dist/research/paper-qa/corpus.d.ts +36 -0
  1413. package/dist/research/paper-qa/corpus.js +102 -0
  1414. package/dist/research/paper-qa/disk-embedding-cache.d.ts +28 -0
  1415. package/dist/research/paper-qa/disk-embedding-cache.js +193 -0
  1416. package/dist/research/paper-qa/index.d.ts +31 -0
  1417. package/dist/research/paper-qa/index.js +24 -0
  1418. package/dist/research/paper-qa/paper-qa-pipeline.d.ts +107 -0
  1419. package/dist/research/paper-qa/paper-qa-pipeline.js +163 -0
  1420. package/dist/research/paper-qa/passage-index.d.ts +203 -0
  1421. package/dist/research/paper-qa/passage-index.js +405 -0
  1422. package/dist/research/paper-qa/pdf-structure.d.ts +37 -0
  1423. package/dist/research/paper-qa/pdf-structure.js +377 -0
  1424. package/dist/research/paper-qa/persistent-corpus-index.d.ts +23 -0
  1425. package/dist/research/paper-qa/persistent-corpus-index.js +122 -0
  1426. package/dist/research/paper-qa/prose-chunker.d.ts +19 -0
  1427. package/dist/research/paper-qa/prose-chunker.js +201 -0
  1428. package/dist/research/paper-qa/provenance.d.ts +24 -0
  1429. package/dist/research/paper-qa/provenance.js +40 -0
  1430. package/dist/research/paper-qa/rcs.d.ts +78 -0
  1431. package/dist/research/paper-qa/rcs.js +200 -0
  1432. package/dist/research/paper-qa/types.d.ts +124 -0
  1433. package/dist/research/paper-qa/types.js +13 -0
  1434. package/dist/research/publication-sources.d.ts +34 -0
  1435. package/dist/research/publication-sources.js +131 -0
  1436. package/dist/research/relation-classifier.d.ts +13 -0
  1437. package/dist/research/relation-classifier.js +58 -0
  1438. package/dist/research/research-topics.d.ts +13 -0
  1439. package/dist/research/research-topics.js +81 -0
  1440. package/dist/review/apply-transaction.d.ts +40 -0
  1441. package/dist/review/apply-transaction.js +112 -0
  1442. package/dist/review/diff-model.d.ts +39 -0
  1443. package/dist/review/diff-model.js +124 -0
  1444. package/dist/review/llm-client.d.ts +30 -0
  1445. package/dist/review/llm-client.js +98 -0
  1446. package/dist/review/llm-reviewer.d.ts +16 -0
  1447. package/dist/review/llm-reviewer.js +122 -0
  1448. package/dist/review/review-engine.d.ts +54 -0
  1449. package/dist/review/review-engine.js +0 -0
  1450. package/dist/review/revision-loop.d.ts +67 -0
  1451. package/dist/review/revision-loop.js +160 -0
  1452. package/dist/review/static-gate.d.ts +13 -0
  1453. package/dist/review/static-gate.js +110 -0
  1454. package/dist/review/types.d.ts +122 -0
  1455. package/dist/review/types.js +24 -0
  1456. package/dist/review/write-gate.d.ts +55 -0
  1457. package/dist/review/write-gate.js +121 -0
  1458. package/dist/sandbox/auto-sandbox.d.ts +4 -2
  1459. package/dist/sandbox/auto-sandbox.js +14 -1
  1460. package/dist/sandbox/docker-sandbox.d.ts +39 -0
  1461. package/dist/sandbox/docker-sandbox.js +292 -14
  1462. package/dist/sandbox/execpolicy.d.ts +36 -1
  1463. package/dist/sandbox/execpolicy.js +375 -40
  1464. package/dist/sandbox/os-sandbox.d.ts +53 -0
  1465. package/dist/sandbox/os-sandbox.js +315 -70
  1466. package/dist/sandbox/sandbox-backend.d.ts +2 -0
  1467. package/dist/scheduler/cron-scheduler.d.ts +1 -0
  1468. package/dist/scheduler/cron-scheduler.js +142 -41
  1469. package/dist/scripting/codebuddy-bindings.js +2 -1
  1470. package/dist/search/bm25.js +5 -2
  1471. package/dist/search/usearch-index.js +7 -5
  1472. package/dist/security/audit-logger.js +14 -7
  1473. package/dist/security/bash-allowlist/allowlist-store.d.ts +8 -2
  1474. package/dist/security/bash-allowlist/allowlist-store.js +52 -12
  1475. package/dist/security/bash-allowlist/approval-flow.d.ts +1 -1
  1476. package/dist/security/bash-allowlist/approval-flow.js +10 -8
  1477. package/dist/security/bash-allowlist/deny-guard.d.ts +14 -0
  1478. package/dist/security/bash-allowlist/deny-guard.js +61 -0
  1479. package/dist/security/bash-allowlist/types.d.ts +5 -0
  1480. package/dist/security/bash-parser.d.ts +32 -0
  1481. package/dist/security/bash-parser.js +129 -14
  1482. package/dist/security/dangerous-patterns.js +18 -3
  1483. package/dist/security/declarative-rules.d.ts +1 -1
  1484. package/dist/security/declarative-rules.js +242 -65
  1485. package/dist/security/dependency-vuln-scanner.js +4 -4
  1486. package/dist/security/dev-origins.d.ts +40 -0
  1487. package/dist/security/dev-origins.js +111 -0
  1488. package/dist/security/docker-sandbox/manager.js +1 -1
  1489. package/dist/security/env-blocklist.d.ts +7 -0
  1490. package/dist/security/env-blocklist.js +22 -2
  1491. package/dist/security/guardian-agent.d.ts +0 -5
  1492. package/dist/security/guardian-agent.js +17 -6
  1493. package/dist/security/index.d.ts +3 -0
  1494. package/dist/security/index.js +2 -0
  1495. package/dist/security/native-sandbox.d.ts +80 -0
  1496. package/dist/security/native-sandbox.js +455 -0
  1497. package/dist/security/pack-contents-policy.d.ts +49 -0
  1498. package/dist/security/pack-contents-policy.js +139 -0
  1499. package/dist/security/permission-config.js +2 -5
  1500. package/dist/security/permission-modes.d.ts +11 -0
  1501. package/dist/security/permission-modes.js +71 -7
  1502. package/dist/security/policy-amendments.js +40 -22
  1503. package/dist/security/policy-engine.js +39 -12
  1504. package/dist/security/powershell-parser.d.ts +40 -0
  1505. package/dist/security/powershell-parser.js +198 -0
  1506. package/dist/security/remote-approval.d.ts +0 -1
  1507. package/dist/security/remote-approval.js +3 -2
  1508. package/dist/security/safe-binaries.d.ts +13 -1
  1509. package/dist/security/safe-binaries.js +240 -32
  1510. package/dist/security/safe-fetch.d.ts +7 -0
  1511. package/dist/security/safe-fetch.js +101 -0
  1512. package/dist/security/sandbox.js +2 -2
  1513. package/dist/security/secret-patterns.d.ts +18 -0
  1514. package/dist/security/secret-patterns.js +232 -0
  1515. package/dist/security/secret-scrubber.d.ts +31 -0
  1516. package/dist/security/secret-scrubber.js +170 -0
  1517. package/dist/security/secrets-detector.d.ts +3 -1
  1518. package/dist/security/secrets-detector.js +3 -106
  1519. package/dist/security/security-modes.js +2 -1
  1520. package/dist/security/session-encryption.d.ts +7 -2
  1521. package/dist/security/session-encryption.js +28 -7
  1522. package/dist/security/shell-env-policy.js +11 -2
  1523. package/dist/security/skill-scanner.d.ts +2 -2
  1524. package/dist/security/skill-scanner.js +237 -11
  1525. package/dist/security/ssrf-guard.d.ts +13 -0
  1526. package/dist/security/ssrf-guard.js +27 -0
  1527. package/dist/security/text-deobfuscation.d.ts +41 -0
  1528. package/dist/security/text-deobfuscation.js +256 -0
  1529. package/dist/security/tool-permissions.js +2 -3
  1530. package/dist/security/tool-policy/approval-scope.d.ts +11 -0
  1531. package/dist/security/tool-policy/approval-scope.js +67 -0
  1532. package/dist/security/tool-policy/policy-manager.d.ts +9 -0
  1533. package/dist/security/tool-policy/policy-manager.js +28 -1
  1534. package/dist/security/tool-policy/profiles.js +24 -0
  1535. package/dist/security/tool-policy/tool-groups.js +26 -3
  1536. package/dist/security/tool-policy/types.d.ts +3 -1
  1537. package/dist/security/tool-policy/types.js +2 -0
  1538. package/dist/security/trust-folders.js +3 -2
  1539. package/dist/security/write-policy.d.ts +8 -0
  1540. package/dist/security/write-policy.js +63 -1
  1541. package/dist/self-model/evolution-notes.d.ts +51 -0
  1542. package/dist/self-model/evolution-notes.js +324 -0
  1543. package/dist/sensory/agent-reply.d.ts +136 -0
  1544. package/dist/sensory/agent-reply.js +682 -0
  1545. package/dist/sensory/alert.d.ts +18 -0
  1546. package/dist/sensory/alert.js +105 -0
  1547. package/dist/sensory/arrival-opener.d.ts +102 -0
  1548. package/dist/sensory/arrival-opener.js +292 -0
  1549. package/dist/sensory/audio-scene.d.ts +24 -0
  1550. package/dist/sensory/audio-scene.js +74 -0
  1551. package/dist/sensory/camera-keyframe-policy.d.ts +11 -0
  1552. package/dist/sensory/camera-keyframe-policy.js +43 -0
  1553. package/dist/sensory/conversation-cues.d.ts +55 -0
  1554. package/dist/sensory/conversation-cues.js +140 -0
  1555. package/dist/sensory/domain-event-bridge.d.ts +7 -0
  1556. package/dist/sensory/domain-event-bridge.js +134 -0
  1557. package/dist/sensory/dreaming.d.ts +17 -0
  1558. package/dist/sensory/dreaming.js +52 -2
  1559. package/dist/sensory/elevenlabs-library.d.ts +91 -0
  1560. package/dist/sensory/elevenlabs-library.js +303 -0
  1561. package/dist/sensory/episodic-journal.d.ts +69 -0
  1562. package/dist/sensory/episodic-journal.js +240 -0
  1563. package/dist/sensory/error-watch-reaction.d.ts +41 -0
  1564. package/dist/sensory/error-watch-reaction.js +312 -0
  1565. package/dist/sensory/heartbeat-fallback.d.ts +46 -0
  1566. package/dist/sensory/heartbeat-fallback.js +171 -0
  1567. package/dist/sensory/heartbeat-scheduler.d.ts +6 -0
  1568. package/dist/sensory/heartbeat-scheduler.js +27 -7
  1569. package/dist/sensory/hybrid-reply.d.ts +132 -0
  1570. package/dist/sensory/hybrid-reply.js +1217 -0
  1571. package/dist/sensory/reactions.d.ts +6 -0
  1572. package/dist/sensory/reactions.js +10 -1
  1573. package/dist/sensory/respond-decider.d.ts +124 -0
  1574. package/dist/sensory/respond-decider.js +608 -0
  1575. package/dist/sensory/rule-templates.d.ts +30 -0
  1576. package/dist/sensory/rule-templates.js +100 -0
  1577. package/dist/sensory/schedule-emitter.d.ts +24 -0
  1578. package/dist/sensory/schedule-emitter.js +57 -0
  1579. package/dist/sensory/screen-reaction.js +15 -1
  1580. package/dist/sensory/semantic-vision-reaction.d.ts +36 -0
  1581. package/dist/sensory/semantic-vision-reaction.js +342 -0
  1582. package/dist/sensory/sensory-action-executor.d.ts +98 -0
  1583. package/dist/sensory/sensory-action-executor.js +473 -0
  1584. package/dist/sensory/sensory-bridge.d.ts +11 -1
  1585. package/dist/sensory/sensory-bridge.js +59 -7
  1586. package/dist/sensory/sensory-rules-engine.d.ts +81 -0
  1587. package/dist/sensory/sensory-rules-engine.js +434 -0
  1588. package/dist/sensory/sensory-status.d.ts +102 -0
  1589. package/dist/sensory/sensory-status.js +291 -0
  1590. package/dist/sensory/speech-engine-config.d.ts +68 -0
  1591. package/dist/sensory/speech-engine-config.js +157 -0
  1592. package/dist/sensory/speech-reaction.d.ts +183 -7
  1593. package/dist/sensory/speech-reaction.js +2141 -35
  1594. package/dist/sensory/speech-sanitizer.d.ts +12 -0
  1595. package/dist/sensory/speech-sanitizer.js +143 -0
  1596. package/dist/sensory/system-vitals-emitter.d.ts +130 -0
  1597. package/dist/sensory/system-vitals-emitter.js +514 -0
  1598. package/dist/sensory/tts-cache.d.ts +76 -0
  1599. package/dist/sensory/tts-cache.js +0 -0
  1600. package/dist/sensory/turn-detector.d.ts +28 -0
  1601. package/dist/sensory/turn-detector.js +57 -0
  1602. package/dist/sensory/vision-description-safety.d.ts +4 -0
  1603. package/dist/sensory/vision-description-safety.js +25 -0
  1604. package/dist/sensory/vision-reaction.d.ts +21 -7
  1605. package/dist/sensory/vision-reaction.js +209 -18
  1606. package/dist/sensory/voice-activity.d.ts +69 -0
  1607. package/dist/sensory/voice-activity.js +271 -0
  1608. package/dist/sensory/voice-clock.d.ts +19 -0
  1609. package/dist/sensory/voice-clock.js +111 -0
  1610. package/dist/sensory/voice-entrainment.d.ts +62 -0
  1611. package/dist/sensory/voice-entrainment.js +176 -0
  1612. package/dist/sensory/voice-interactions.d.ts +13 -0
  1613. package/dist/sensory/voice-interactions.js +258 -0
  1614. package/dist/sensory/voice-loop.d.ts +618 -0
  1615. package/dist/sensory/voice-loop.js +3581 -0
  1616. package/dist/sensory/voice-replay-lab.d.ts +32 -0
  1617. package/dist/sensory/voice-replay-lab.js +109 -0
  1618. package/dist/sensory/voice-stream.d.ts +121 -0
  1619. package/dist/sensory/voice-stream.js +598 -0
  1620. package/dist/sensory/voice-turn-coordinator.d.ts +88 -0
  1621. package/dist/sensory/voice-turn-coordinator.js +258 -0
  1622. package/dist/sensory/voice-turn-taking.d.ts +26 -0
  1623. package/dist/sensory/voice-turn-taking.js +59 -0
  1624. package/dist/server/agent-adapter.d.ts +49 -3
  1625. package/dist/server/agent-adapter.js +26 -4
  1626. package/dist/server/channel-a2a-bridge.js +1 -1
  1627. package/dist/server/exposure-diagnostic.d.ts +25 -0
  1628. package/dist/server/exposure-diagnostic.js +51 -0
  1629. package/dist/server/heartbeat-monitor.d.ts +13 -0
  1630. package/dist/server/heartbeat-monitor.js +8 -3
  1631. package/dist/server/http-agent-sessions.d.ts +32 -0
  1632. package/dist/server/http-agent-sessions.js +245 -0
  1633. package/dist/server/index.d.ts +3 -0
  1634. package/dist/server/index.js +913 -46
  1635. package/dist/server/mcp/approval-elicitation.d.ts +144 -0
  1636. package/dist/server/mcp/approval-elicitation.js +377 -0
  1637. package/dist/server/middleware/auth.d.ts +11 -0
  1638. package/dist/server/middleware/auth.js +54 -0
  1639. package/dist/server/middleware/error-handler.d.ts +5 -0
  1640. package/dist/server/middleware/error-handler.js +30 -4
  1641. package/dist/server/middleware/index.d.ts +1 -1
  1642. package/dist/server/middleware/index.js +1 -1
  1643. package/dist/server/mobile/album.d.ts +46 -0
  1644. package/dist/server/mobile/album.js +144 -0
  1645. package/dist/server/mobile/assets/app.js +3036 -0
  1646. package/dist/server/mobile/assets/emoji-data.js +508 -0
  1647. package/dist/server/mobile/assets/icon-192.png +0 -0
  1648. package/dist/server/mobile/assets/icon-512.png +0 -0
  1649. package/dist/server/mobile/assets/icon-96.png +0 -0
  1650. package/dist/server/mobile/assets/icon.svg +12 -0
  1651. package/dist/server/mobile/assets/index.html +261 -0
  1652. package/dist/server/mobile/assets/manifest.webmanifest +37 -0
  1653. package/dist/server/mobile/assets/styles.css +831 -0
  1654. package/dist/server/mobile/assets/sw.js +149 -0
  1655. package/dist/server/mobile/chat-extras.d.ts +9 -0
  1656. package/dist/server/mobile/chat-extras.js +24 -0
  1657. package/dist/server/mobile/index.d.ts +22 -0
  1658. package/dist/server/mobile/index.js +287 -0
  1659. package/dist/server/mobile/link-preview.d.ts +24 -0
  1660. package/dist/server/mobile/link-preview.js +139 -0
  1661. package/dist/server/mobile/push.d.ts +38 -0
  1662. package/dist/server/mobile/push.js +190 -0
  1663. package/dist/server/mobile/status.d.ts +23 -0
  1664. package/dist/server/mobile/status.js +107 -0
  1665. package/dist/server/mobile/telegram-forward.d.ts +14 -0
  1666. package/dist/server/mobile/telegram-forward.js +32 -0
  1667. package/dist/server/mobile/voice-note.d.ts +54 -0
  1668. package/dist/server/mobile/voice-note.js +305 -0
  1669. package/dist/server/origin-check.d.ts +4 -5
  1670. package/dist/server/origin-check.js +43 -8
  1671. package/dist/server/routes/canvas.d.ts +7 -1
  1672. package/dist/server/routes/canvas.js +138 -24
  1673. package/dist/server/routes/chat.js +340 -203
  1674. package/dist/server/routes/cognition.d.ts +3 -0
  1675. package/dist/server/routes/cognition.js +75 -0
  1676. package/dist/server/routes/health.js +93 -81
  1677. package/dist/server/routes/index.d.ts +5 -1
  1678. package/dist/server/routes/index.js +5 -1
  1679. package/dist/server/routes/lessons.d.ts +13 -0
  1680. package/dist/server/routes/lessons.js +111 -0
  1681. package/dist/server/routes/memory.d.ts +12 -0
  1682. package/dist/server/routes/memory.js +191 -131
  1683. package/dist/server/routes/runs.d.ts +9 -0
  1684. package/dist/server/routes/runs.js +50 -0
  1685. package/dist/server/routes/sessions.js +8 -1
  1686. package/dist/server/routes/tools.js +93 -74
  1687. package/dist/server/routes/webhooks.js +56 -46
  1688. package/dist/server/tunnel-manager.js +21 -1
  1689. package/dist/server/types.d.ts +25 -1
  1690. package/dist/server/webhook-agent-queue.d.ts +12 -0
  1691. package/dist/server/webhook-agent-queue.js +58 -0
  1692. package/dist/server/websocket/cognition-bridge.d.ts +13 -0
  1693. package/dist/server/websocket/cognition-bridge.js +334 -0
  1694. package/dist/server/websocket/confirmation-bridge.d.ts +22 -0
  1695. package/dist/server/websocket/confirmation-bridge.js +178 -0
  1696. package/dist/server/websocket/desktop-handler.d.ts +17 -0
  1697. package/dist/server/websocket/desktop-handler.js +177 -16
  1698. package/dist/server/websocket/handler.d.ts +123 -1
  1699. package/dist/server/websocket/handler.js +852 -67
  1700. package/dist/server/websocket/index.d.ts +2 -1
  1701. package/dist/server/websocket/index.js +2 -1
  1702. package/dist/server/websocket/peer-rpc.d.ts +1 -1
  1703. package/dist/server/websocket/peer-rpc.js +25 -3
  1704. package/dist/services/prompt-builder.d.ts +47 -2
  1705. package/dist/services/prompt-builder.js +310 -99
  1706. package/dist/sessions/timeline-snapshot.d.ts +35 -0
  1707. package/dist/sessions/timeline-snapshot.js +144 -0
  1708. package/dist/sessions/timeline.d.ts +33 -0
  1709. package/dist/sessions/timeline.js +85 -0
  1710. package/dist/shared/context-optimization-metadata.d.ts +29 -0
  1711. package/dist/shared/context-optimization-metadata.js +73 -0
  1712. package/dist/shared/engine-types.d.ts +26 -0
  1713. package/dist/skills/bash-injection.d.ts +2 -2
  1714. package/dist/skills/bash-injection.js +9 -2
  1715. package/dist/skills/bundled/code-explorer.skill.md +50 -0
  1716. package/dist/skills/bundled/file-edit.skill.md +62 -0
  1717. package/dist/skills/bundled/git-commit.skill.md +66 -0
  1718. package/dist/skills/bundled/pubcommander-control/SKILL.md +33 -0
  1719. package/dist/skills/bundled/pubcommander-control/agents/openai.yaml +4 -0
  1720. package/dist/skills/bundled/typescript-expert.skill.md +21 -0
  1721. package/dist/skills/bundled/weather.skill.md +48 -0
  1722. package/dist/skills/bundled/web-app-testing.skill.md +71 -0
  1723. package/dist/skills/bundled/web-search.skill.md +56 -0
  1724. package/dist/skills/hub.js +52 -30
  1725. package/dist/skills/index.d.ts +6 -3
  1726. package/dist/skills/index.js +19 -4
  1727. package/dist/skills/parser.js +2 -0
  1728. package/dist/skills/registry.d.ts +52 -0
  1729. package/dist/skills/registry.js +291 -14
  1730. package/dist/skills/skill-exchange.d.ts +61 -0
  1731. package/dist/skills/skill-exchange.js +523 -0
  1732. package/dist/skills/skill-importer.d.ts +2 -2
  1733. package/dist/skills/skill-importer.js +76 -17
  1734. package/dist/skills/skill-registry.js +3 -2
  1735. package/dist/skills/skill-signing.d.ts +20 -0
  1736. package/dist/skills/skill-signing.js +106 -0
  1737. package/dist/skills/skill-sources.d.ts +3 -2
  1738. package/dist/skills/skill-sources.js +5 -4
  1739. package/dist/skills/types.d.ts +4 -0
  1740. package/dist/spec/spec-store.js +7 -6
  1741. package/dist/speculative/shadow-workspace.d.ts +79 -0
  1742. package/dist/speculative/shadow-workspace.js +500 -0
  1743. package/dist/talk-mode/index.d.ts +4 -4
  1744. package/dist/talk-mode/index.js +3 -3
  1745. package/dist/talk-mode/providers/elevenlabs-client.d.ts +48 -0
  1746. package/dist/talk-mode/providers/elevenlabs-client.js +117 -0
  1747. package/dist/talk-mode/providers/elevenlabs.js +12 -23
  1748. package/dist/talk-mode/providers/index.d.ts +3 -1
  1749. package/dist/talk-mode/providers/index.js +2 -0
  1750. package/dist/talk-mode/providers/pocket-tts.d.ts +88 -0
  1751. package/dist/talk-mode/providers/pocket-tts.js +334 -0
  1752. package/dist/talk-mode/providers/voicebox-tts.d.ts +24 -0
  1753. package/dist/talk-mode/providers/voicebox-tts.js +120 -0
  1754. package/dist/talk-mode/types.d.ts +39 -1
  1755. package/dist/tasks/background-tasks.js +22 -5
  1756. package/dist/telemetry/otel-tracer.js +5 -2
  1757. package/dist/templates/design-system-apply.d.ts +23 -0
  1758. package/dist/templates/design-system-apply.js +100 -0
  1759. package/dist/templates/project-scaffolding.d.ts +2 -0
  1760. package/dist/templates/project-scaffolding.js +616 -1
  1761. package/dist/themes/theme-manager.js +9 -6
  1762. package/dist/themes/theme-schema.d.ts +46 -46
  1763. package/dist/tools/advanced/multi-file-editor.js +3 -1
  1764. package/dist/tools/advanced/operation-history.js +2 -1
  1765. package/dist/tools/app-server-tool.d.ts +66 -0
  1766. package/dist/tools/app-server-tool.js +423 -0
  1767. package/dist/tools/apply-patch.d.ts +31 -1
  1768. package/dist/tools/apply-patch.js +214 -19
  1769. package/dist/tools/authored-tools-manifest-2.d.ts +17 -0
  1770. package/dist/tools/authored-tools-manifest-2.js +133 -0
  1771. package/dist/tools/authored-tools-manifest.d.ts +15 -0
  1772. package/dist/tools/authored-tools-manifest.js +13 -0
  1773. package/dist/tools/bash/bash-tool.d.ts +36 -3
  1774. package/dist/tools/bash/bash-tool.js +240 -100
  1775. package/dist/tools/bash/command-validator.d.ts +1 -1
  1776. package/dist/tools/bash/command-validator.js +115 -40
  1777. package/dist/tools/bash/execution-policy.d.ts +42 -0
  1778. package/dist/tools/bash/execution-policy.js +278 -0
  1779. package/dist/tools/bash/security-patterns.js +43 -5
  1780. package/dist/tools/bash/streaming-executor.d.ts +1 -1
  1781. package/dist/tools/bash/streaming-executor.js +124 -18
  1782. package/dist/tools/build-project-tool.d.ts +25 -0
  1783. package/dist/tools/build-project-tool.js +30 -0
  1784. package/dist/tools/bundle-analyze-tool.d.ts +28 -0
  1785. package/dist/tools/bundle-analyze-tool.js +39 -0
  1786. package/dist/tools/code-exec-tool.d.ts +55 -23
  1787. package/dist/tools/code-exec-tool.js +598 -111
  1788. package/dist/tools/code-explorer-tool.d.ts +1 -1
  1789. package/dist/tools/code-explorer-tool.js +25 -1
  1790. package/dist/tools/code-review.js +5 -0
  1791. package/dist/tools/code-stats-tool.d.ts +43 -0
  1792. package/dist/tools/code-stats-tool.js +70 -0
  1793. package/dist/tools/codebase-replace-tool.js +2 -2
  1794. package/dist/tools/comfy-recipe-tool.d.ts +37 -0
  1795. package/dist/tools/comfy-recipe-tool.js +693 -0
  1796. package/dist/tools/community-search.d.ts +93 -0
  1797. package/dist/tools/community-search.js +334 -0
  1798. package/dist/tools/computer-control-harness.js +5 -2
  1799. package/dist/tools/computer-control-tool.d.ts +8 -0
  1800. package/dist/tools/computer-control-tool.js +71 -26
  1801. package/dist/tools/context-expand-tool.d.ts +19 -0
  1802. package/dist/tools/context-expand-tool.js +132 -0
  1803. package/dist/tools/csv/csv-parse.d.ts +19 -0
  1804. package/dist/tools/csv/csv-parse.js +132 -0
  1805. package/dist/tools/csv/csv-wiring.d.ts +8 -0
  1806. package/dist/tools/csv/csv-wiring.js +9 -0
  1807. package/dist/tools/csv-analyze-tool.d.ts +11 -0
  1808. package/dist/tools/csv-analyze-tool.js +114 -0
  1809. package/dist/tools/csv-preview-tool.d.ts +34 -0
  1810. package/dist/tools/csv-preview-tool.js +69 -0
  1811. package/dist/tools/db-migration.js +11 -3
  1812. package/dist/tools/deep-research-tool.d.ts +68 -0
  1813. package/dist/tools/deep-research-tool.js +257 -0
  1814. package/dist/tools/deferred-schema-state.d.ts +19 -0
  1815. package/dist/tools/deferred-schema-state.js +33 -0
  1816. package/dist/tools/dep-inspect-tool.d.ts +32 -0
  1817. package/dist/tools/dep-inspect-tool.js +74 -0
  1818. package/dist/tools/design-system-tool.d.ts +10 -0
  1819. package/dist/tools/design-system-tool.js +95 -0
  1820. package/dist/tools/device-tool.d.ts +2 -1
  1821. package/dist/tools/device-tool.js +21 -0
  1822. package/dist/tools/diagram-tool.js +8 -2
  1823. package/dist/tools/diff-files-tool.d.ts +28 -0
  1824. package/dist/tools/diff-files-tool.js +49 -0
  1825. package/dist/tools/enhanced-search.js +32 -16
  1826. package/dist/tools/env-doctor-tool.d.ts +30 -0
  1827. package/dist/tools/env-doctor-tool.js +54 -0
  1828. package/dist/tools/execute-code-rpc-invoker.js +2 -2
  1829. package/dist/tools/execute-code-runner.d.ts +21 -0
  1830. package/dist/tools/execute-code-runner.js +117 -8
  1831. package/dist/tools/extension-forge-tool.d.ts +29 -0
  1832. package/dist/tools/extension-forge-tool.js +288 -0
  1833. package/dist/tools/fetch-tool.js +7 -3
  1834. package/dist/tools/file-search-tool.d.ts +41 -0
  1835. package/dist/tools/file-search-tool.js +99 -0
  1836. package/dist/tools/format-project-tool.d.ts +28 -0
  1837. package/dist/tools/format-project-tool.js +45 -0
  1838. package/dist/tools/git-summary-tool.d.ts +36 -0
  1839. package/dist/tools/git-summary-tool.js +65 -0
  1840. package/dist/tools/git-tool.js +16 -4
  1841. package/dist/tools/gpu-avatar-delivery.d.ts +16 -0
  1842. package/dist/tools/gpu-avatar-delivery.js +67 -0
  1843. package/dist/tools/gpu-media-worker.d.ts +96 -0
  1844. package/dist/tools/gpu-media-worker.js +363 -0
  1845. package/dist/tools/gui-tool.js +92 -13
  1846. package/dist/tools/http-probe-tool.d.ts +25 -0
  1847. package/dist/tools/http-probe-tool.js +40 -0
  1848. package/dist/tools/image-tool.js +29 -16
  1849. package/dist/tools/index.d.ts +6 -1
  1850. package/dist/tools/index.js +5 -0
  1851. package/dist/tools/interactive-bash.d.ts +29 -1
  1852. package/dist/tools/interactive-bash.js +141 -21
  1853. package/dist/tools/json-query-tool.d.ts +30 -0
  1854. package/dist/tools/json-query-tool.js +49 -0
  1855. package/dist/tools/license-check-tool.d.ts +22 -0
  1856. package/dist/tools/license-check-tool.js +43 -0
  1857. package/dist/tools/lint-project-tool.d.ts +52 -0
  1858. package/dist/tools/lint-project-tool.js +143 -0
  1859. package/dist/tools/local-binary-launch.d.ts +14 -0
  1860. package/dist/tools/local-binary-launch.js +63 -0
  1861. package/dist/tools/lsp-navigation-tools.d.ts +87 -0
  1862. package/dist/tools/lsp-navigation-tools.js +470 -0
  1863. package/dist/tools/markdown-convert.d.ts +51 -0
  1864. package/dist/tools/markdown-convert.js +159 -0
  1865. package/dist/tools/media-generation-tool.d.ts +90 -1
  1866. package/dist/tools/media-generation-tool.js +1553 -11
  1867. package/dist/tools/meeting-notes-tool.d.ts +25 -0
  1868. package/dist/tools/meeting-notes-tool.js +240 -0
  1869. package/dist/tools/merge-conflict-tool.js +1 -1
  1870. package/dist/tools/metadata.d.ts +7 -1
  1871. package/dist/tools/metadata.js +823 -13
  1872. package/dist/tools/mixture-of-agents-tool.d.ts +7 -0
  1873. package/dist/tools/mixture-of-agents-tool.js +230 -31
  1874. package/dist/tools/multi-edit.js +42 -18
  1875. package/dist/tools/ocr-tool.d.ts +43 -0
  1876. package/dist/tools/ocr-tool.js +24 -18
  1877. package/dist/tools/omission-placeholder-detector.js +12 -6
  1878. package/dist/tools/paper-qa-tool.d.ts +73 -0
  1879. package/dist/tools/paper-qa-tool.js +313 -0
  1880. package/dist/tools/peer-chain-tool.js +4 -1
  1881. package/dist/tools/peer-delegate-tool.d.ts +2 -0
  1882. package/dist/tools/peer-delegate-tool.js +11 -1
  1883. package/dist/tools/port-check-tool.d.ts +31 -0
  1884. package/dist/tools/port-check-tool.js +25 -0
  1885. package/dist/tools/project-map-tool.d.ts +39 -0
  1886. package/dist/tools/project-map-tool.js +128 -0
  1887. package/dist/tools/register-tool-handler.d.ts +2 -2
  1888. package/dist/tools/register-tool-handler.js +7 -4
  1889. package/dist/tools/registry/advanced-tools.js +1 -1
  1890. package/dist/tools/registry/attention-tools.d.ts +3 -3
  1891. package/dist/tools/registry/attention-tools.js +14 -10
  1892. package/dist/tools/registry/authored-extra-tools.d.ts +20 -0
  1893. package/dist/tools/registry/authored-extra-tools.js +147 -0
  1894. package/dist/tools/registry/bash-tools.d.ts +2 -2
  1895. package/dist/tools/registry/bash-tools.js +7 -3
  1896. package/dist/tools/registry/browser-operator-tools.d.ts +1 -1
  1897. package/dist/tools/registry/browser-operator-tools.js +17 -3
  1898. package/dist/tools/registry/browser-tools.d.ts +1 -1
  1899. package/dist/tools/registry/browser-tools.js +38 -33
  1900. package/dist/tools/registry/code-explorer-tools.js +6 -1
  1901. package/dist/tools/registry/comfy-recipe-tools.d.ts +2 -0
  1902. package/dist/tools/registry/comfy-recipe-tools.js +5 -0
  1903. package/dist/tools/registry/context-expand-tools.d.ts +3 -0
  1904. package/dist/tools/registry/context-expand-tools.js +6 -0
  1905. package/dist/tools/registry/csv-tools.d.ts +12 -0
  1906. package/dist/tools/registry/csv-tools.js +62 -0
  1907. package/dist/tools/registry/delegate-agent-tools.d.ts +64 -0
  1908. package/dist/tools/registry/delegate-agent-tools.js +206 -0
  1909. package/dist/tools/registry/design-tools.d.ts +12 -0
  1910. package/dist/tools/registry/design-tools.js +80 -0
  1911. package/dist/tools/registry/fleet-tools.js +6 -0
  1912. package/dist/tools/registry/index.d.ts +25 -5
  1913. package/dist/tools/registry/index.js +80 -6
  1914. package/dist/tools/registry/interactive-adapters.d.ts +37 -0
  1915. package/dist/tools/registry/interactive-adapters.js +116 -0
  1916. package/dist/tools/registry/lsp-tools.d.ts +3 -3
  1917. package/dist/tools/registry/lsp-tools.js +9 -3
  1918. package/dist/tools/registry/meeting-tools.d.ts +3 -0
  1919. package/dist/tools/registry/meeting-tools.js +6 -0
  1920. package/dist/tools/registry/memory-tools.js +32 -20
  1921. package/dist/tools/registry/misc-tools.d.ts +1 -1
  1922. package/dist/tools/registry/misc-tools.js +7 -4
  1923. package/dist/tools/registry/moa-tools.js +13 -0
  1924. package/dist/tools/registry/multimodal-tools.d.ts +73 -1
  1925. package/dist/tools/registry/multimodal-tools.js +581 -4
  1926. package/dist/tools/registry/process-tools.d.ts +16 -0
  1927. package/dist/tools/registry/process-tools.js +136 -1
  1928. package/dist/tools/registry/remind-tools.d.ts +23 -0
  1929. package/dist/tools/registry/remind-tools.js +120 -0
  1930. package/dist/tools/registry/research-tools.d.ts +17 -0
  1931. package/dist/tools/registry/research-tools.js +21 -0
  1932. package/dist/tools/registry/search-tools.d.ts +6 -6
  1933. package/dist/tools/registry/search-tools.js +30 -17
  1934. package/dist/tools/registry/secrets-tools.d.ts +33 -0
  1935. package/dist/tools/registry/secrets-tools.js +71 -0
  1936. package/dist/tools/registry/self-describe-tools.d.ts +23 -0
  1937. package/dist/tools/registry/self-describe-tools.js +156 -0
  1938. package/dist/tools/registry/self-evolution-tools.d.ts +13 -0
  1939. package/dist/tools/registry/self-evolution-tools.js +97 -0
  1940. package/dist/tools/registry/text-editor-tools.d.ts +26 -4
  1941. package/dist/tools/registry/text-editor-tools.js +102 -6
  1942. package/dist/tools/registry/tool-alias-map.d.ts +8 -0
  1943. package/dist/tools/registry/tool-alias-map.js +47 -0
  1944. package/dist/tools/registry/tool-aliases.d.ts +3 -4
  1945. package/dist/tools/registry/tool-aliases.js +12 -48
  1946. package/dist/tools/registry/types.d.ts +5 -0
  1947. package/dist/tools/registry/verify-tools.d.ts +50 -0
  1948. package/dist/tools/registry/verify-tools.js +136 -0
  1949. package/dist/tools/registry/video-studio-tools.d.ts +13 -0
  1950. package/dist/tools/registry/video-studio-tools.js +21 -0
  1951. package/dist/tools/registry/vision-tools.d.ts +15 -1
  1952. package/dist/tools/registry/vision-tools.js +252 -27
  1953. package/dist/tools/registry/web-test-tool.d.ts +66 -0
  1954. package/dist/tools/registry/web-test-tool.js +321 -0
  1955. package/dist/tools/registry/web-tools.d.ts +43 -0
  1956. package/dist/tools/registry/web-tools.js +281 -1
  1957. package/dist/tools/review-gate-helper.d.ts +44 -0
  1958. package/dist/tools/review-gate-helper.js +110 -0
  1959. package/dist/tools/route-peer-tool.js +62 -11
  1960. package/dist/tools/sbom-generate-tool.d.ts +22 -0
  1961. package/dist/tools/sbom-generate-tool.js +41 -0
  1962. package/dist/tools/scaffold-app-tool.d.ts +48 -0
  1963. package/dist/tools/scaffold-app-tool.js +144 -0
  1964. package/dist/tools/screenshot-tool.js +5 -2
  1965. package/dist/tools/search.d.ts +17 -0
  1966. package/dist/tools/search.js +31 -8
  1967. package/dist/tools/self-describe.d.ts +73 -0
  1968. package/dist/tools/self-describe.js +298 -0
  1969. package/dist/tools/stock-quote.d.ts +67 -0
  1970. package/dist/tools/stock-quote.js +645 -0
  1971. package/dist/tools/submit-plan-tool.js +1 -1
  1972. package/dist/tools/test-runner-tool.d.ts +38 -0
  1973. package/dist/tools/test-runner-tool.js +96 -0
  1974. package/dist/tools/text-editor.js +91 -8
  1975. package/dist/tools/text-to-speech-tool.d.ts +1 -1
  1976. package/dist/tools/text-to-speech-tool.js +48 -2
  1977. package/dist/tools/todo-scan-tool.d.ts +39 -0
  1978. package/dist/tools/todo-scan-tool.js +53 -0
  1979. package/dist/tools/tool-manager.js +8 -0
  1980. package/dist/tools/tool-search.js +11 -3
  1981. package/dist/tools/tool-selector.d.ts +7 -0
  1982. package/dist/tools/tool-selector.js +27 -13
  1983. package/dist/tools/tools-md-generator.js +2 -2
  1984. package/dist/tools/types.d.ts +16 -0
  1985. package/dist/tools/types.js +5 -1
  1986. package/dist/tools/video/approved-media-source.d.ts +8 -0
  1987. package/dist/tools/video/approved-media-source.js +59 -0
  1988. package/dist/tools/video/book-manuscript-source.d.ts +49 -0
  1989. package/dist/tools/video/book-manuscript-source.js +263 -0
  1990. package/dist/tools/video/character-in-location.d.ts +42 -0
  1991. package/dist/tools/video/character-in-location.js +161 -0
  1992. package/dist/tools/video/cinematic-trailer-plan.d.ts +203 -0
  1993. package/dist/tools/video/cinematic-trailer-plan.js +498 -0
  1994. package/dist/tools/video/cloud-understand.d.ts +91 -0
  1995. package/dist/tools/video/cloud-understand.js +214 -0
  1996. package/dist/tools/video/comfy-client.d.ts +38 -0
  1997. package/dist/tools/video/comfy-client.js +227 -0
  1998. package/dist/tools/video/comfy-workflow-template.d.ts +70 -0
  1999. package/dist/tools/video/comfy-workflow-template.js +194 -0
  2000. package/dist/tools/video/describe-frame.d.ts +36 -0
  2001. package/dist/tools/video/describe-frame.js +68 -0
  2002. package/dist/tools/video/film-assemble.d.ts +234 -0
  2003. package/dist/tools/video/film-assemble.js +959 -0
  2004. package/dist/tools/video/film-project.d.ts +152 -0
  2005. package/dist/tools/video/film-project.js +312 -0
  2006. package/dist/tools/video/frame-dedup.d.ts +46 -0
  2007. package/dist/tools/video/frame-dedup.js +110 -0
  2008. package/dist/tools/video/frame-sample.d.ts +72 -0
  2009. package/dist/tools/video/frame-sample.js +238 -0
  2010. package/dist/tools/video/google-flow-driver.d.ts +131 -0
  2011. package/dist/tools/video/google-flow-driver.js +312 -0
  2012. package/dist/tools/video/google-flow-handoff.d.ts +75 -0
  2013. package/dist/tools/video/google-flow-handoff.js +121 -0
  2014. package/dist/tools/video/google-flow-plan-export.d.ts +21 -0
  2015. package/dist/tools/video/google-flow-plan-export.js +123 -0
  2016. package/dist/tools/video/google-flow-result-import.d.ts +92 -0
  2017. package/dist/tools/video/google-flow-result-import.js +297 -0
  2018. package/dist/tools/video/hybrid-video-router.d.ts +34 -0
  2019. package/dist/tools/video/hybrid-video-router.js +113 -0
  2020. package/dist/tools/video/localized-media.d.ts +50 -0
  2021. package/dist/tools/video/localized-media.js +128 -0
  2022. package/dist/tools/video/long-form-plan.d.ts +37 -0
  2023. package/dist/tools/video/long-form-plan.js +83 -0
  2024. package/dist/tools/video/long-form-production.d.ts +49 -0
  2025. package/dist/tools/video/long-form-production.js +168 -0
  2026. package/dist/tools/video/long-transcribe.d.ts +94 -0
  2027. package/dist/tools/video/long-transcribe.js +206 -0
  2028. package/dist/tools/video/media-fetch.d.ts +94 -0
  2029. package/dist/tools/video/media-fetch.js +311 -0
  2030. package/dist/tools/video/mermaid-render.d.ts +34 -0
  2031. package/dist/tools/video/mermaid-render.js +127 -0
  2032. package/dist/tools/video/narration.d.ts +96 -0
  2033. package/dist/tools/video/narration.js +505 -0
  2034. package/dist/tools/video/native-fashion-defects.d.ts +27 -0
  2035. package/dist/tools/video/native-fashion-defects.js +80 -0
  2036. package/dist/tools/video/scene-render.d.ts +108 -0
  2037. package/dist/tools/video/scene-render.js +418 -0
  2038. package/dist/tools/video/subtitles.d.ts +49 -0
  2039. package/dist/tools/video/subtitles.js +116 -0
  2040. package/dist/tools/video/video-ckg.d.ts +123 -0
  2041. package/dist/tools/video/video-ckg.js +188 -0
  2042. package/dist/tools/video/video-research-card.d.ts +58 -0
  2043. package/dist/tools/video/video-research-card.js +468 -0
  2044. package/dist/tools/video/video-understanding.d.ts +159 -0
  2045. package/dist/tools/video/video-understanding.js +534 -0
  2046. package/dist/tools/video/visual-gate-report.d.ts +139 -0
  2047. package/dist/tools/video/visual-gate-report.js +379 -0
  2048. package/dist/tools/video/voice-rights-registry.d.ts +13 -0
  2049. package/dist/tools/video/voice-rights-registry.js +142 -0
  2050. package/dist/tools/video/youtube-captions.d.ts +51 -0
  2051. package/dist/tools/video/youtube-captions.js +102 -0
  2052. package/dist/tools/video/youtube-master-quality.d.ts +163 -0
  2053. package/dist/tools/video/youtube-master-quality.js +379 -0
  2054. package/dist/tools/video/youtube-storyboard.d.ts +43 -0
  2055. package/dist/tools/video/youtube-storyboard.js +194 -0
  2056. package/dist/tools/video-flow-handoff-tool.d.ts +181 -0
  2057. package/dist/tools/video-flow-handoff-tool.js +261 -0
  2058. package/dist/tools/video-long-form-plan-tool.d.ts +31 -0
  2059. package/dist/tools/video-long-form-plan-tool.js +87 -0
  2060. package/dist/tools/video-quality-gate-tool.d.ts +97 -0
  2061. package/dist/tools/video-quality-gate-tool.js +189 -0
  2062. package/dist/tools/video-route-tool.d.ts +128 -0
  2063. package/dist/tools/video-route-tool.js +126 -0
  2064. package/dist/tools/video-studio-tool-helpers.d.ts +22 -0
  2065. package/dist/tools/video-studio-tool-helpers.js +128 -0
  2066. package/dist/tools/video-trailer-plan-tool.d.ts +60 -0
  2067. package/dist/tools/video-trailer-plan-tool.js +103 -0
  2068. package/dist/tools/vision/blender-render.d.ts +76 -0
  2069. package/dist/tools/vision/blender-render.js +121 -0
  2070. package/dist/tools/vision/image-processor.d.ts +1 -0
  2071. package/dist/tools/vision/image-processor.js +8 -1
  2072. package/dist/tools/vision/load-sharp.d.ts +53 -0
  2073. package/dist/tools/vision/load-sharp.js +48 -0
  2074. package/dist/tools/vision/mean-luma.d.ts +4 -0
  2075. package/dist/tools/vision/mean-luma.js +189 -0
  2076. package/dist/tools/vision/object-detection.d.ts +90 -0
  2077. package/dist/tools/vision/object-detection.js +403 -0
  2078. package/dist/tools/vision/vision-analysis.js +2 -1
  2079. package/dist/tools/weather.d.ts +33 -0
  2080. package/dist/tools/weather.js +183 -0
  2081. package/dist/tools/web-scrape-tool.d.ts +63 -0
  2082. package/dist/tools/web-scrape-tool.js +318 -0
  2083. package/dist/tools/web-search.d.ts +67 -6
  2084. package/dist/tools/web-search.js +231 -68
  2085. package/dist/tools/workspace-tools.d.ts +39 -0
  2086. package/dist/tools/workspace-tools.js +347 -0
  2087. package/dist/tracks/track-manager.js +9 -8
  2088. package/dist/triggers/webhook-trigger.js +10 -18
  2089. package/dist/ui/components/ChatHistory.js +12 -0
  2090. package/dist/ui/components/ChatInterface.js +6 -2
  2091. package/dist/ui/components/FileAutocomplete.d.ts +6 -1
  2092. package/dist/ui/components/FileAutocomplete.js +136 -76
  2093. package/dist/ui/components/FuzzyPicker.d.ts +5 -0
  2094. package/dist/ui/components/FuzzyPicker.js +1 -1
  2095. package/dist/ui/http-server/server.js +2 -2
  2096. package/dist/undo/checkpoint-manager.d.ts +3 -0
  2097. package/dist/undo/checkpoint-manager.js +6 -1
  2098. package/dist/utils/approval-pattern-tracker.js +5 -13
  2099. package/dist/utils/ascii-banner.d.ts +1 -1
  2100. package/dist/utils/ascii-banner.js +1 -1
  2101. package/dist/utils/atomic-write.d.ts +77 -0
  2102. package/dist/utils/atomic-write.js +530 -0
  2103. package/dist/utils/audio-player.d.ts +1 -0
  2104. package/dist/utils/audio-player.js +7 -3
  2105. package/dist/utils/autonomy-manager.js +12 -3
  2106. package/dist/utils/command-exists.d.ts +14 -0
  2107. package/dist/utils/command-exists.js +43 -0
  2108. package/dist/utils/config-validation/schema.d.ts +13 -13
  2109. package/dist/utils/config-validation/schema.js +33 -1
  2110. package/dist/utils/confirmation-service.d.ts +60 -1
  2111. package/dist/utils/confirmation-service.js +204 -41
  2112. package/dist/utils/cost-tracker.d.ts +66 -1
  2113. package/dist/utils/cost-tracker.js +100 -17
  2114. package/dist/utils/history-manager.js +6 -7
  2115. package/dist/utils/init-project.js +17 -13
  2116. package/dist/utils/input-validation/index.d.ts +16 -16
  2117. package/dist/utils/installation-id.js +7 -22
  2118. package/dist/utils/interactive-setup.js +7 -12
  2119. package/dist/utils/json-salvage.d.ts +22 -0
  2120. package/dist/utils/json-salvage.js +91 -0
  2121. package/dist/utils/llm-retry.js +3 -0
  2122. package/dist/utils/logger.d.ts +1 -0
  2123. package/dist/utils/logger.js +16 -5
  2124. package/dist/utils/model-router.js +8 -12
  2125. package/dist/utils/model-utils.js +14 -0
  2126. package/dist/utils/output-sanitizer.d.ts +4 -8
  2127. package/dist/utils/output-sanitizer.js +10 -10
  2128. package/dist/utils/output-schema-validator.d.ts +7 -0
  2129. package/dist/utils/output-schema-validator.js +25 -1
  2130. package/dist/utils/response-cache.js +11 -22
  2131. package/dist/utils/ripgrep-path.d.ts +11 -0
  2132. package/dist/utils/ripgrep-path.js +60 -0
  2133. package/dist/utils/semantic-cache.js +4 -7
  2134. package/dist/utils/settings-manager.d.ts +27 -4
  2135. package/dist/utils/settings-manager.js +51 -39
  2136. package/dist/utils/shell-completions.js +25 -34
  2137. package/dist/utils/shell-configuration.d.ts +39 -0
  2138. package/dist/utils/shell-configuration.js +106 -0
  2139. package/dist/utils/stream-stall-guard.d.ts +39 -0
  2140. package/dist/utils/stream-stall-guard.js +123 -0
  2141. package/dist/utils/subprocess-env.d.ts +15 -0
  2142. package/dist/utils/subprocess-env.js +112 -0
  2143. package/dist/utils/telegram-api-base.d.ts +9 -0
  2144. package/dist/utils/telegram-api-base.js +15 -0
  2145. package/dist/utils/telemetry-config.js +16 -13
  2146. package/dist/utils/update-notifier.js +5 -10
  2147. package/dist/utils/validators.js +1 -2
  2148. package/dist/versioning/config-migrator.js +3 -2
  2149. package/dist/versioning/migration-manager.js +5 -4
  2150. package/dist/versioning/version-detector.js +2 -1
  2151. package/dist/vision-train/assets.d.ts +37 -0
  2152. package/dist/vision-train/assets.js +97 -0
  2153. package/dist/vision-train/ckg-publish.d.ts +26 -0
  2154. package/dist/vision-train/ckg-publish.js +36 -0
  2155. package/dist/vision-train/coco-to-labels.d.ts +63 -0
  2156. package/dist/vision-train/coco-to-labels.js +63 -0
  2157. package/dist/vision-train/curriculum.d.ts +29 -0
  2158. package/dist/vision-train/curriculum.js +49 -0
  2159. package/dist/vision-train/engine.d.ts +56 -0
  2160. package/dist/vision-train/engine.js +55 -0
  2161. package/dist/vision-train/report.d.ts +15 -0
  2162. package/dist/vision-train/report.js +72 -0
  2163. package/dist/vision-train/scorer.d.ts +67 -0
  2164. package/dist/vision-train/scorer.js +114 -0
  2165. package/dist/vision-train/yolo-labels.d.ts +13 -0
  2166. package/dist/vision-train/yolo-labels.js +66 -0
  2167. package/dist/voice/elevenlabs-voice.d.ts +53 -0
  2168. package/dist/voice/elevenlabs-voice.js +412 -0
  2169. package/dist/voice/kyutai-local-voice.d.ts +33 -0
  2170. package/dist/voice/kyutai-local-voice.js +198 -0
  2171. package/dist/voice/local-tts.d.ts +106 -3
  2172. package/dist/voice/local-tts.js +672 -35
  2173. package/dist/voice/local-whisper.d.ts +11 -0
  2174. package/dist/voice/local-whisper.js +18 -2
  2175. package/dist/voice/pcm-edges.d.ts +43 -0
  2176. package/dist/voice/pcm-edges.js +210 -0
  2177. package/dist/voice/perceived-latency-benchmark.d.ts +56 -0
  2178. package/dist/voice/perceived-latency-benchmark.js +218 -0
  2179. package/dist/voice/tts-bank.d.ts +72 -0
  2180. package/dist/voice/tts-bank.js +172 -0
  2181. package/dist/voice/tts-latency-benchmark.d.ts +36 -0
  2182. package/dist/voice/tts-latency-benchmark.js +76 -0
  2183. package/dist/voice/tts-volume.d.ts +86 -0
  2184. package/dist/voice/tts-volume.js +378 -0
  2185. package/dist/voice/two-speed-voice.d.ts +19 -0
  2186. package/dist/voice/two-speed-voice.js +40 -0
  2187. package/dist/voice/voice-to-code.js +1 -1
  2188. package/dist/voice/voicebox-tts.d.ts +150 -0
  2189. package/dist/voice/voicebox-tts.js +669 -0
  2190. package/dist/voice/wake-word.d.ts +2 -0
  2191. package/dist/voice/wake-word.js +30 -10
  2192. package/dist/webhooks/webhook-manager.js +10 -18
  2193. package/dist/widgets/auto-widget.d.ts +27 -0
  2194. package/dist/widgets/auto-widget.js +111 -0
  2195. package/dist/widgets/canvas-publish.d.ts +15 -0
  2196. package/dist/widgets/canvas-publish.js +39 -0
  2197. package/dist/widgets/curated/news.d.ts +2 -0
  2198. package/dist/widgets/curated/news.js +46 -0
  2199. package/dist/widgets/curated/stock.d.ts +1 -0
  2200. package/dist/widgets/curated/stock.js +87 -0
  2201. package/dist/widgets/curated/weather.d.ts +2 -0
  2202. package/dist/widgets/curated/weather.js +93 -0
  2203. package/dist/widgets/template-engine.d.ts +19 -0
  2204. package/dist/widgets/template-engine.js +134 -0
  2205. package/dist/widgets/widget-engine.d.ts +24 -0
  2206. package/dist/widgets/widget-engine.js +153 -0
  2207. package/dist/widgets/widget-gate.d.ts +19 -0
  2208. package/dist/widgets/widget-gate.js +144 -0
  2209. package/dist/widgets/widget-image-renderer.d.ts +4 -0
  2210. package/dist/widgets/widget-image-renderer.js +164 -0
  2211. package/dist/widgets/widget-matcher.d.ts +48 -0
  2212. package/dist/widgets/widget-matcher.js +109 -0
  2213. package/dist/widgets/widget-proposer.d.ts +17 -0
  2214. package/dist/widgets/widget-proposer.js +75 -0
  2215. package/dist/widgets/widget-registry.d.ts +36 -0
  2216. package/dist/widgets/widget-registry.js +231 -0
  2217. package/dist/widgets/widget-types.d.ts +100 -0
  2218. package/dist/widgets/widget-types.js +17 -0
  2219. package/dist/wizard/environment-detection.d.ts +67 -0
  2220. package/dist/wizard/environment-detection.js +210 -0
  2221. package/dist/wizard/onboarding.d.ts +21 -1
  2222. package/dist/wizard/onboarding.js +202 -27
  2223. package/dist/workflows/state-manager.js +8 -2
  2224. package/dist/workspace/workspace-config.d.ts +37 -0
  2225. package/dist/workspace/workspace-config.js +199 -0
  2226. package/dist/workspace/workspace-isolation.d.ts +19 -0
  2227. package/dist/workspace/workspace-isolation.js +124 -39
  2228. package/dist/workspace/workspace-manager.js +19 -14
  2229. package/examples/claude_desktop_config.json +8 -0
  2230. package/package.json +75 -31
  2231. package/.codebuddy/README.md +0 -65
  2232. package/dist/agent/middleware/learning-first-middleware.d.ts +0 -79
  2233. package/dist/agent/middleware/learning-first-middleware.js +0 -271
  2234. package/dist/agent/middleware/tool-filter-middleware.d.ts +0 -45
  2235. package/dist/agent/middleware/tool-filter-middleware.js +0 -122
  2236. package/dist/codebuddy/tool-definitions/batch-tools.d.ts +0 -10
  2237. package/dist/codebuddy/tool-definitions/batch-tools.js +0 -46
  2238. package/dist/codebuddy/tool-definitions/graph-tools.d.ts +0 -13
  2239. package/dist/codebuddy/tool-definitions/graph-tools.js +0 -78
  2240. package/dist/plugins/code-explorer/CodeExplorerMCPClient.d.ts +0 -129
  2241. package/dist/plugins/code-explorer/CodeExplorerMCPClient.js +0 -143
  2242. package/dist/tools/registry/batch-tools.d.ts +0 -36
  2243. package/dist/tools/registry/batch-tools.js +0 -135
  2244. package/dist/tools/registry/graph-tools.d.ts +0 -45
  2245. package/dist/tools/registry/graph-tools.js +0 -283
@@ -3,8 +3,12 @@ import * as path from "path";
3
3
  import * as os from "os";
4
4
  import { EventEmitter } from "events";
5
5
  import { getHooksManager } from "../hooks/lifecycle-hooks.js";
6
+ import { FactsExtractionError } from "./facts-memory.js";
6
7
  import { logger } from "../utils/logger.js";
7
8
  import { shouldWriteProjectRuntimeFiles } from "../utils/runtime-flags.js";
9
+ import { decideForgets, isProtectedMemory, resolveForgettingConfig, } from "./memory-forgetting.js";
10
+ import { withSessionLock } from "../persistence/session-lock.js";
11
+ import { writeFileAtomic } from '../utils/atomic-write.js';
8
12
  function mapMemoryCategoryToFactCategory(cat) {
9
13
  switch (cat) {
10
14
  case 'project': return 'Projet';
@@ -16,6 +20,15 @@ function mapMemoryCategoryToFactCategory(cat) {
16
20
  default: return 'Profil';
17
21
  }
18
22
  }
23
+ export function parseReconciledFactText(text) {
24
+ const colonIdx = text.indexOf(': ');
25
+ if (colonIdx <= 0)
26
+ return null;
27
+ return {
28
+ key: text.substring(0, colonIdx).trim(),
29
+ value: text.substring(colonIdx + 2).trim(),
30
+ };
31
+ }
19
32
  function mapFactCategoryToMemoryCategory(cat) {
20
33
  switch (cat) {
21
34
  case 'Projet': return 'project';
@@ -49,12 +62,40 @@ export class MemoryWriteRejectedError extends Error {
49
62
  this.name = 'MemoryWriteRejectedError';
50
63
  }
51
64
  }
65
+ export class MemoryPersistenceError extends Error {
66
+ scope;
67
+ constructor(scope, message) {
68
+ super(message ?? `${scope} memory store is unreadable; persistence was refused to protect existing data`);
69
+ this.scope = scope;
70
+ this.name = 'MemoryPersistenceError';
71
+ }
72
+ }
52
73
  function parsePositiveInt(value, fallback) {
53
74
  if (!value)
54
75
  return fallback;
55
76
  const parsed = Number.parseInt(value, 10);
56
77
  return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
57
78
  }
79
+ function parseMemoryMeta(body) {
80
+ const field = (name) => new RegExp(`\\b${name}=(\\S+)`).exec(body)?.[1];
81
+ const date = (raw) => {
82
+ if (!raw)
83
+ return undefined;
84
+ const parsed = new Date(raw);
85
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
86
+ };
87
+ const accessed = Number.parseInt(field("accessed") ?? "", 10);
88
+ return {
89
+ createdAt: date(field("created")),
90
+ updatedAt: date(field("updated")),
91
+ lastAccessedAt: date(field("last")),
92
+ accessCount: Number.isFinite(accessed) && accessed >= 0 ? accessed : undefined,
93
+ };
94
+ }
95
+ function renderMemoryMeta(memory) {
96
+ const last = memory.lastAccessedAt ? ` last=${memory.lastAccessedAt.toISOString()}` : "";
97
+ return ` <!-- meta: accessed=${memory.accessCount} created=${memory.createdAt.toISOString()} updated=${memory.updatedAt.toISOString()}${last} -->`;
98
+ }
58
99
  function cloneMemoryMap(memories) {
59
100
  return new Map(Array.from(memories.entries()).map(([key, memory]) => [
60
101
  key,
@@ -62,10 +103,62 @@ function cloneMemoryMap(memories) {
62
103
  ...memory,
63
104
  createdAt: new Date(memory.createdAt),
64
105
  updatedAt: new Date(memory.updatedAt),
106
+ lastAccessedAt: memory.lastAccessedAt ? new Date(memory.lastAccessedAt) : undefined,
65
107
  tags: memory.tags ? [...memory.tags] : undefined,
66
108
  },
67
109
  ]));
68
110
  }
111
+ function mergeMemoryTags(priorTags, factSource, fallbackTags) {
112
+ const sourceTags = factSource
113
+ ?.split(',')
114
+ .map((tag) => tag.trim())
115
+ .filter((tag) => tag.length > 0) ?? fallbackTags ?? [];
116
+ const tags = [...new Set([...(priorTags ?? []), ...sourceTags])];
117
+ return tags.length > 0 ? tags : undefined;
118
+ }
119
+ function normalizeMemoryCategory(category) {
120
+ switch (category.trim().toLowerCase()) {
121
+ case 'project': return 'project';
122
+ case 'preferences': return 'preferences';
123
+ case 'decisions': return 'decisions';
124
+ case 'patterns': return 'patterns';
125
+ case 'context': return 'context';
126
+ default: return 'custom';
127
+ }
128
+ }
129
+ function memoryEquals(left, right) {
130
+ if (!left || !right)
131
+ return left === right;
132
+ const leftTags = left.tags ?? [];
133
+ const rightTags = right.tags ?? [];
134
+ return left.key === right.key
135
+ && left.value === right.value
136
+ && left.category === right.category
137
+ && left.createdAt.getTime() === right.createdAt.getTime()
138
+ && left.updatedAt.getTime() === right.updatedAt.getTime()
139
+ && left.lastAccessedAt?.getTime() === right.lastAccessedAt?.getTime()
140
+ && left.accessCount === right.accessCount
141
+ && leftTags.length === rightTags.length
142
+ && leftTags.every((tag, index) => tag === rightTags[index]);
143
+ }
144
+ function mergeMemoryMaps(diskMemories, localMemories, persistedSnapshot) {
145
+ const merged = cloneMemoryMap(diskMemories);
146
+ // Apply only local additions/updates. Unchanged entries were loaded from
147
+ // the same snapshot and must not overwrite a newer process' changes.
148
+ for (const [key, memory] of localMemories) {
149
+ if (!memoryEquals(memory, persistedSnapshot.get(key))) {
150
+ merged.set(key, cloneMemoryMap(new Map([[key, memory]])).get(key));
151
+ }
152
+ }
153
+ // Propagate local deletions only when the disk entry is still the version
154
+ // this manager loaded. A concurrent update wins over a stale deletion.
155
+ for (const [key, persisted] of persistedSnapshot) {
156
+ if (!localMemories.has(key) && memoryEquals(merged.get(key), persisted)) {
157
+ merged.delete(key);
158
+ }
159
+ }
160
+ return merged;
161
+ }
69
162
  const MEMORY_TEMPLATE = `# Code Buddy Memory
70
163
 
71
164
  This file stores persistent memory for the Code Buddy agent.
@@ -97,6 +190,13 @@ export class PersistentMemoryManager extends EventEmitter {
97
190
  config;
98
191
  projectMemories = new Map();
99
192
  userMemories = new Map();
193
+ /** Last disk snapshot used to distinguish local changes from stale state. */
194
+ persistedMemorySnapshots = new Map();
195
+ /** Audit 2026-09-02 — garde anti-amnĆ©sie : scopes dont le chargement a
196
+ * ƩchouƩ pour une raison AUTRE que l'absence du fichier. Tant qu'un scope
197
+ * est dƩgradƩ, saveMemories refuse la rƩƩcriture destructrice (il retente
198
+ * d'abord un load + fusion, RAM prioritaire). */
199
+ degradedScopes = new Map();
100
200
  initialized = false;
101
201
  /**
102
202
  * Promise gate for concurrent initialize() callers (F31).
@@ -109,6 +209,9 @@ export class PersistentMemoryManager extends EventEmitter {
109
209
  * promise and returning it to every caller ensures a single run.
110
210
  */
111
211
  initPromise = null;
212
+ /** Scopes with unpersisted recall reinforcement (see reinforce/flushAccessMetadata). */
213
+ accessDirtyScopes = new Set();
214
+ accessFlushTimer = null;
112
215
  constructor(config = {}) {
113
216
  super();
114
217
  this.config = { ...DEFAULT_CONFIG, ...config };
@@ -146,14 +249,14 @@ export class PersistentMemoryManager extends EventEmitter {
146
249
  const projectDir = path.dirname(this.config.projectMemoryPath);
147
250
  await fs.ensureDir(projectDir);
148
251
  if (!(await fs.pathExists(this.config.projectMemoryPath))) {
149
- await fs.writeFile(this.config.projectMemoryPath, MEMORY_TEMPLATE);
252
+ await writeFileAtomic(this.config.projectMemoryPath, MEMORY_TEMPLATE, { mode: 0o600 });
150
253
  }
151
254
  }
152
255
  // Ensure user memory file
153
256
  const userDir = path.dirname(this.config.userMemoryPath);
154
257
  await fs.ensureDir(userDir);
155
258
  if (!(await fs.pathExists(this.config.userMemoryPath))) {
156
- await fs.writeFile(this.config.userMemoryPath, MEMORY_TEMPLATE);
259
+ await writeFileAtomic(this.config.userMemoryPath, MEMORY_TEMPLATE, { mode: 0o600 });
157
260
  }
158
261
  }
159
262
  async loadMemories(scope) {
@@ -164,13 +267,62 @@ export class PersistentMemoryManager extends EventEmitter {
164
267
  try {
165
268
  const content = await fs.readFile(filePath, "utf-8");
166
269
  const parsed = this.parseMemoryFile(content);
270
+ // Un fichier vide (0 octet ou blancs) n'a rien Ơ protƩger : magasin neuf,
271
+ // pas magasin corrompu (garde R28, alignƩe le 2026-09-02).
272
+ if (parsed.length === 0 && content.trim() !== '' && !this.isCanonicalEmptyMemoryFile(content)) {
273
+ throw new Error('non-canonical memory markdown contains no recoverable entries');
274
+ }
275
+ memories.clear();
167
276
  for (const memory of parsed) {
168
277
  memories.set(memory.key, memory);
169
278
  }
279
+ this.persistedMemorySnapshots.set(scope, cloneMemoryMap(memories));
280
+ this.degradedScopes.delete(scope);
281
+ }
282
+ catch (error) {
283
+ // File doesn't exist -> start fresh (lƩgitime). Toute AUTRE erreur
284
+ // (EACCES, EIO…) est transitoire : sans garde, la prochaine sauvegarde
285
+ // rƩƩcrirait le fichier entier depuis l'Ć©tat vide — amnĆ©sie silencieuse.
286
+ if (error?.code !== 'ENOENT') {
287
+ const reason = error?.message ?? String(error);
288
+ this.degradedScopes.set(scope, reason);
289
+ logger.warn(`[persistent-memory] could not load ${scope} memory (${reason}) — destructive saves are blocked until a successful reload`);
290
+ }
291
+ else {
292
+ this.persistedMemorySnapshots.set(scope, new Map());
293
+ }
170
294
  }
171
- catch (_error) {
172
- // File doesn't exist or can't be read, start fresh
295
+ }
296
+ /** Only the generated empty template is safe to treat as a new empty store. */
297
+ isCanonicalEmptyMemoryFile(content) {
298
+ const requiredCategories = [
299
+ 'Project Context',
300
+ 'User Preferences',
301
+ 'Decisions',
302
+ 'Patterns',
303
+ 'Custom',
304
+ ];
305
+ const allowedCategories = [...requiredCategories, 'Context'];
306
+ const seenCategories = new Set();
307
+ const allowedText = new Set([
308
+ '# Code Buddy Memory',
309
+ 'This file stores persistent memory for the Code Buddy agent.',
310
+ 'It is automatically managed but can be manually edited.',
311
+ '---',
312
+ ]);
313
+ for (const rawLine of content.split('\n')) {
314
+ const line = rawLine.trim();
315
+ if (!line || allowedText.has(line) || /^<!--.*-->$/.test(line) || /^\*Last updated: .*\*$/.test(line)) {
316
+ continue;
317
+ }
318
+ const category = /^## (.+)$/.exec(line)?.[1];
319
+ if (category && allowedCategories.includes(category)) {
320
+ seenCategories.add(category);
321
+ continue;
322
+ }
323
+ return false;
173
324
  }
325
+ return requiredCategories.every((category) => seenCategories.has(category));
174
326
  }
175
327
  parseMemoryFile(content) {
176
328
  const memories = [];
@@ -186,7 +338,18 @@ export class PersistentMemoryManager extends EventEmitter {
186
338
  const lines = content.split("\n");
187
339
  let currentKey = "";
188
340
  let currentValue = "";
341
+ let currentMeta;
342
+ let currentTags;
189
343
  let inMemoryBlock = false;
344
+ const pushCurrent = () => {
345
+ if (currentKey && currentValue) {
346
+ memories.push(this.createMemory(currentKey, currentValue.trim(), currentCategory, currentMeta, currentTags));
347
+ }
348
+ currentKey = "";
349
+ currentValue = "";
350
+ currentMeta = undefined;
351
+ currentTags = undefined;
352
+ };
190
353
  for (const line of lines) {
191
354
  // Check for category headers
192
355
  if (line.startsWith("## ")) {
@@ -199,9 +362,7 @@ export class PersistentMemoryManager extends EventEmitter {
199
362
  // Check for memory entries (format: - **key**: value)
200
363
  const memoryMatch = line.match(/^-\s*\*\*([^*]+)\*\*:\s*(.*)$/);
201
364
  if (memoryMatch) {
202
- if (currentKey && currentValue) {
203
- memories.push(this.createMemory(currentKey, currentValue.trim(), currentCategory));
204
- }
365
+ pushCurrent();
205
366
  // Group 1 (`[^*]+`) always matches at least one char; group 2 (`.*`) defaults to "" when empty.
206
367
  const [, matchedKey = "", matchedValue = ""] = memoryMatch;
207
368
  currentKey = matchedKey;
@@ -209,34 +370,58 @@ export class PersistentMemoryManager extends EventEmitter {
209
370
  inMemoryBlock = true;
210
371
  continue;
211
372
  }
373
+ // Metadata comment (written by saveMemories; absent in older files).
374
+ // Must be checked BEFORE the multi-line continuation branch or it would
375
+ // be folded into the value.
376
+ const metaMatch = line.match(/^\s*<!--\s*meta:\s*(.*?)\s*-->\s*$/);
377
+ if (metaMatch && inMemoryBlock) {
378
+ currentMeta = parseMemoryMeta(metaMatch[1] ?? "");
379
+ continue;
380
+ }
381
+ // Tags line written by saveMemories (` Tags: a, b`). Audit 2026-09-02 :
382
+ // sans cette branche, la ligne Ʃtait refondue dans la valeur au 1er
383
+ // reload puis dĆ©truite au 2e — `pinned` ne protĆ©geait plus rien aprĆØs
384
+ // un redƩmarrage.
385
+ const tagsMatch = line.match(/^ {2}Tags:\s*(.*)$/);
386
+ if (tagsMatch && inMemoryBlock && currentTags === undefined) {
387
+ currentTags = (tagsMatch[1] ?? "")
388
+ .split(",")
389
+ .map((t) => t.trim())
390
+ .filter((t) => t.length > 0);
391
+ continue;
392
+ }
393
+ // New saves prefix continuation lines with ` |` so their original
394
+ // indentation and any literal `Tags:` text remain unambiguous.
395
+ if (inMemoryBlock && line.startsWith(" |")) {
396
+ currentValue += "\n" + line.slice(3);
397
+ continue;
398
+ }
212
399
  // Continue multi-line value
213
400
  if (inMemoryBlock && line.startsWith(" ")) {
214
- currentValue += "\n" + line.trim();
401
+ // Legacy files used two transport spaces without a marker. Remove
402
+ // only that transport prefix; do not destroy content indentation.
403
+ currentValue += "\n" + line.slice(2);
215
404
  }
216
405
  else if (inMemoryBlock && line.trim() === "") {
217
406
  // End of memory block
218
- if (currentKey && currentValue) {
219
- memories.push(this.createMemory(currentKey, currentValue.trim(), currentCategory));
220
- }
221
- currentKey = "";
222
- currentValue = "";
407
+ pushCurrent();
223
408
  inMemoryBlock = false;
224
409
  }
225
410
  }
226
411
  // Don't forget last memory
227
- if (currentKey && currentValue) {
228
- memories.push(this.createMemory(currentKey, currentValue.trim(), currentCategory));
229
- }
412
+ pushCurrent();
230
413
  return memories;
231
414
  }
232
- createMemory(key, value, category) {
415
+ createMemory(key, value, category, meta, tags) {
233
416
  return {
234
417
  key,
235
418
  value,
236
419
  category,
237
- createdAt: new Date(),
238
- updatedAt: new Date(),
239
- accessCount: 0,
420
+ createdAt: meta?.createdAt ?? new Date(),
421
+ updatedAt: meta?.updatedAt ?? new Date(),
422
+ ...(meta?.lastAccessedAt ? { lastAccessedAt: meta.lastAccessedAt } : {}),
423
+ accessCount: meta?.accessCount ?? 0,
424
+ ...(tags && tags.length > 0 ? { tags } : {}),
240
425
  };
241
426
  }
242
427
  /**
@@ -260,7 +445,7 @@ export class PersistentMemoryManager extends EventEmitter {
260
445
  };
261
446
  }
262
447
  const previousMemories = cloneMemoryMap(memories);
263
- const status = existing ? 'updated' : 'stored';
448
+ let resultKey = normalizedKey;
264
449
  try {
265
450
  const { FactsMemoryService } = await import('./facts-memory.js');
266
451
  const service = new FactsMemoryService();
@@ -282,22 +467,32 @@ export class PersistentMemoryManager extends EventEmitter {
282
467
  for (const fact of reconciledFacts) {
283
468
  let fKey = `fact-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
284
469
  let fValue = fact.text;
285
- const colonIdx = fact.text.indexOf(': ');
286
- if (colonIdx > 0 && colonIdx < 50) {
287
- fKey = fact.text.substring(0, colonIdx).trim();
288
- fValue = fact.text.substring(colonIdx + 2).trim();
470
+ const parsed = parseReconciledFactText(fact.text);
471
+ if (parsed) {
472
+ fKey = parsed.key;
473
+ fValue = parsed.value;
289
474
  }
290
- const existing = memories.get(fKey);
475
+ // The map was cleared above — prior metadata lives in previousMemories.
476
+ const prior = previousMemories.get(fKey);
291
477
  memories.set(fKey, {
292
478
  key: fKey,
293
479
  value: fValue,
294
480
  category: mapFactCategoryToMemoryCategory(fact.category),
295
- createdAt: existing?.createdAt || fact.updatedAt || new Date(),
481
+ createdAt: prior?.createdAt || fact.updatedAt || new Date(),
296
482
  updatedAt: fact.updatedAt || new Date(),
297
- accessCount: existing?.accessCount || 0,
298
- tags: fact.source ? [fact.source] : tags
483
+ ...(prior?.lastAccessedAt ? { lastAccessedAt: prior.lastAccessedAt } : {}),
484
+ accessCount: prior?.accessCount || 0,
485
+ tags: mergeMemoryTags(prior?.tags, fact.source, tags)
299
486
  });
300
487
  }
488
+ if (!memories.has(normalizedKey)) {
489
+ const newKeys = Array.from(memories.keys()).filter((memoryKey) => !previousMemories.has(memoryKey));
490
+ const reconciledKey = newKeys[newKeys.length - 1];
491
+ if (!reconciledKey) {
492
+ throw new Error(`Reconciliation did not retain the new memory "${normalizedKey}"`);
493
+ }
494
+ resultKey = reconciledKey;
495
+ }
301
496
  }
302
497
  else {
303
498
  // Fallback to default direct write
@@ -323,17 +518,31 @@ export class PersistentMemoryManager extends EventEmitter {
323
518
  }
324
519
  throw err;
325
520
  }
326
- await this.saveMemories(scope);
327
- this.emit("memory:remembered", { key: normalizedKey, scope, category });
521
+ try {
522
+ await this.saveMemories(scope);
523
+ }
524
+ catch (error) {
525
+ memories.clear();
526
+ for (const [memoryKey, memory] of previousMemories) {
527
+ memories.set(memoryKey, memory);
528
+ }
529
+ throw error;
530
+ }
531
+ const persistedMemory = memories.get(resultKey);
532
+ if (!persistedMemory) {
533
+ throw new MemoryPersistenceError(scope, `Memory reconciliation reported key "${resultKey}" but did not retain it`);
534
+ }
535
+ const status = previousMemories.has(resultKey) ? 'updated' : 'stored';
536
+ this.emit("memory:remembered", { key: resultKey, scope, category: persistedMemory.category });
328
537
  return {
329
538
  status,
330
- key: normalizedKey,
539
+ key: resultKey,
331
540
  scope,
332
- category,
541
+ category: persistedMemory.category,
333
542
  usage: this.getMemoryUsage(scope),
334
543
  message: status === 'updated'
335
- ? `Updated "${normalizedKey}" in ${scope} memory.`
336
- : `Stored "${normalizedKey}" in ${scope} memory.`,
544
+ ? `Updated "${resultKey}" in ${scope} memory.`
545
+ : `Stored "${resultKey}" in ${scope} memory.`,
337
546
  };
338
547
  }
339
548
  async replace(key, value, options = {}) {
@@ -341,6 +550,7 @@ export class PersistentMemoryManager extends EventEmitter {
341
550
  const memories = scope === 'project' ? this.projectMemories : this.userMemories;
342
551
  const normalizedKey = key.trim();
343
552
  const normalizedValue = value.trim();
553
+ this.assertScopeReadable(scope);
344
554
  const existing = memories.get(normalizedKey);
345
555
  if (!existing) {
346
556
  return {
@@ -387,9 +597,10 @@ export class PersistentMemoryManager extends EventEmitter {
387
597
  const memory = {
388
598
  key,
389
599
  value,
390
- category,
600
+ category: normalizeMemoryCategory(category),
391
601
  createdAt: existing?.createdAt || new Date(),
392
602
  updatedAt: new Date(),
603
+ ...(existing?.lastAccessedAt ? { lastAccessedAt: existing.lastAccessedAt } : {}),
393
604
  accessCount: existing?.accessCount || 0,
394
605
  tags,
395
606
  };
@@ -467,29 +678,96 @@ export class PersistentMemoryManager extends EventEmitter {
467
678
  */
468
679
  recall(key, scope) {
469
680
  if (scope) {
681
+ this.assertScopeReadable(scope);
470
682
  const memories = scope === "project" ? this.projectMemories : this.userMemories;
471
683
  const memory = memories.get(key);
472
684
  if (memory) {
473
- memory.accessCount++;
685
+ this.reinforce(memory, scope);
474
686
  return memory.value;
475
687
  }
476
688
  return null;
477
689
  }
478
690
  // Search both scopes, project first
479
- let memory = this.projectMemories.get(key);
480
- if (!memory) {
481
- memory = this.userMemories.get(key);
482
- }
691
+ this.assertScopeReadable('project');
692
+ this.assertScopeReadable('user');
693
+ const projectHit = this.projectMemories.get(key);
694
+ const memory = projectHit ?? this.userMemories.get(key);
483
695
  if (memory) {
484
- memory.accessCount++;
696
+ this.reinforce(memory, projectHit ? "project" : "user");
485
697
  return memory.value;
486
698
  }
487
699
  return null;
488
700
  }
701
+ /**
702
+ * Recall reinforcement: bump the spaced-repetition signals the forgetting
703
+ * curve reads (accessCount → stability, lastAccessedAt → decay anchor) and
704
+ * schedule a debounced persist so they survive restarts.
705
+ */
706
+ reinforce(memory, scope) {
707
+ memory.accessCount++;
708
+ memory.lastAccessedAt = new Date();
709
+ this.scheduleAccessFlush(scope);
710
+ }
711
+ scheduleAccessFlush(scope) {
712
+ this.accessDirtyScopes.add(scope);
713
+ if (this.accessFlushTimer)
714
+ return;
715
+ this.accessFlushTimer = setTimeout(() => {
716
+ void this.flushAccessMetadata();
717
+ }, 10_000);
718
+ this.accessFlushTimer.unref?.();
719
+ }
720
+ /** Persist pending recall reinforcement now (also runs on a 10s debounce). Never throws. */
721
+ async flushAccessMetadata() {
722
+ if (this.accessFlushTimer) {
723
+ clearTimeout(this.accessFlushTimer);
724
+ this.accessFlushTimer = null;
725
+ }
726
+ const scopes = Array.from(this.accessDirtyScopes);
727
+ this.accessDirtyScopes.clear();
728
+ for (const scope of scopes) {
729
+ try {
730
+ // Headless one-shot runs must not create project runtime files just
731
+ // because something was recalled (same invariant as ensureMemoryFiles).
732
+ if (scope === "project" &&
733
+ !shouldWriteProjectRuntimeFiles() &&
734
+ !(await fs.pathExists(this.config.projectMemoryPath))) {
735
+ continue;
736
+ }
737
+ await this.saveMemories(scope);
738
+ }
739
+ catch (err) {
740
+ logger.warn(`[persistent-memory] could not persist recall reinforcement (${scope}): ${err instanceof Error ? err.message : String(err)}`);
741
+ }
742
+ }
743
+ }
744
+ /**
745
+ * Non-reinforcing single-entry read. Unlike `recall()`, this does NOT bump
746
+ * `accessCount`/`lastAccessedAt`, so surface reads (REST GET, listings)
747
+ * don't distort the Ebbinghaus forgetting curve. With no scope, project is
748
+ * checked first, then user — the same precedence as `recall()`.
749
+ */
750
+ get(key, scope) {
751
+ const normalizedKey = key.trim();
752
+ if (!scope || scope === "project") {
753
+ this.assertScopeReadable('project');
754
+ const memory = this.projectMemories.get(normalizedKey);
755
+ if (memory)
756
+ return { ...memory, scope: "project" };
757
+ }
758
+ if (!scope || scope === "user") {
759
+ this.assertScopeReadable('user');
760
+ const memory = this.userMemories.get(normalizedKey);
761
+ if (memory)
762
+ return { ...memory, scope: "user" };
763
+ }
764
+ return undefined;
765
+ }
489
766
  /**
490
767
  * Forget something (remove from memory)
491
768
  */
492
769
  async forget(key, scope = "project") {
770
+ this.assertScopeReadable(scope);
493
771
  const memories = scope === "project" ? this.projectMemories : this.userMemories;
494
772
  const deleted = memories.delete(key);
495
773
  if (deleted) {
@@ -502,14 +780,16 @@ export class PersistentMemoryManager extends EventEmitter {
502
780
  * Get memories relevant to a query (simple keyword matching)
503
781
  */
504
782
  getRelevantMemories(query, limit = 5) {
783
+ this.assertScopeReadable('project');
784
+ this.assertScopeReadable('user');
505
785
  const queryLower = query.toLowerCase();
506
786
  const queryWords = queryLower.split(/\s+/);
507
787
  const allMemories = [
508
- ...this.projectMemories.values(),
509
- ...this.userMemories.values(),
788
+ ...Array.from(this.projectMemories.values(), (memory) => ({ memory, scope: "project" })),
789
+ ...Array.from(this.userMemories.values(), (memory) => ({ memory, scope: "user" })),
510
790
  ];
511
791
  // Score memories by relevance
512
- const scored = allMemories.map((memory) => {
792
+ const scored = allMemories.map(({ memory, scope }) => {
513
793
  const textLower = `${memory.key} ${memory.value}`.toLowerCase();
514
794
  let score = 0;
515
795
  for (const word of queryWords) {
@@ -519,19 +799,231 @@ export class PersistentMemoryManager extends EventEmitter {
519
799
  }
520
800
  // Boost by access count
521
801
  score += memory.accessCount * 0.1;
522
- return { memory, score };
802
+ return { memory, scope, score };
523
803
  });
524
804
  // Sort by score and return top results
525
- return scored
805
+ const top = scored
526
806
  .filter((s) => s.score > 0)
527
807
  .sort((a, b) => b.score - a.score)
528
- .slice(0, limit)
529
- .map((s) => s.memory);
808
+ .slice(0, limit);
809
+ // Retrieval-for-prompt counts as recall: reinforce the returned hits
810
+ // (unlike getContextForPrompt, which renders everything indiscriminately).
811
+ for (const { memory, scope } of top) {
812
+ this.reinforce(memory, scope);
813
+ }
814
+ return top.map((s) => s.memory);
815
+ }
816
+ /**
817
+ * Read-only enumeration of live memories (copies) for inspection tooling —
818
+ * the Curator's dry-run forgetting scan reads through this instead of
819
+ * poking the private maps. Does NOT reinforce (unlike getRelevantMemories).
820
+ */
821
+ listMemories(scope) {
822
+ this.assertScopeReadable(scope);
823
+ const memories = scope === "project" ? this.projectMemories : this.userMemories;
824
+ return Array.from(memories.values()).map((m) => ({
825
+ ...m,
826
+ ...(m.tags ? { tags: [...m.tags] } : {}),
827
+ }));
828
+ }
829
+ /**
830
+ * Ebbinghaus forgetting pass (recoverable): memories whose retention decayed
831
+ * below the threshold are appended to a sibling `*.archive.md`, then removed.
832
+ * An archive write failure aborts the pass — we never drop what we could not
833
+ * preserve. `preferences`/`decisions` and `pinned`-tagged entries never decay
834
+ * (see memory-forgetting.ts).
835
+ */
836
+ async applyForgetting(scope, options = {}) {
837
+ this.assertScopeReadable(scope);
838
+ const memories = scope === "project" ? this.projectMemories : this.userMemories;
839
+ const now = options.now ?? new Date();
840
+ const candidates = decideForgets(memories.values(), now, options.config);
841
+ if (candidates.length === 0)
842
+ return { forgotten: [] };
843
+ const archivePath = this.getArchivePath(scope);
844
+ const lines = candidates.map((candidate) => {
845
+ const memory = memories.get(candidate.key);
846
+ const tags = memory.tags?.length ? ` [${memory.tags.join(", ")}]` : "";
847
+ return (`- **${memory.key}** (${memory.category}${tags}, accessed ${memory.accessCount}Ɨ, ` +
848
+ `age ${Math.round(candidate.ageDays)}d, retention ${candidate.retention.toFixed(3)}): ${escapeArchiveValue(memory.value)}`);
849
+ });
850
+ try {
851
+ await fs.ensureDir(path.dirname(archivePath));
852
+ await fs.appendFile(archivePath, `\n## Forgotten ${now.toISOString()}\n${lines.join("\n")}\n`);
853
+ }
854
+ catch (err) {
855
+ logger.warn(`[persistent-memory] forgetting aborted — archive write failed, keeping all ${scope} memories: ${err instanceof Error ? err.message : String(err)}`);
856
+ return { forgotten: [] };
857
+ }
858
+ for (const candidate of candidates) {
859
+ memories.delete(candidate.key);
860
+ }
861
+ await this.saveMemories(scope);
862
+ for (const candidate of candidates) {
863
+ this.emit("memory:forgotten", { key: candidate.key, scope, reason: "decay", retention: candidate.retention });
864
+ }
865
+ logger.info(`[persistent-memory] ${scope}: ${candidates.length} memories faded (archived to ${archivePath})`);
866
+ return { forgotten: candidates };
867
+ }
868
+ getArchivePath(scope) {
869
+ const filePath = scope === "project" ? this.config.projectMemoryPath : this.config.userMemoryPath;
870
+ return filePath.replace(/\.md$/i, "") + ".archive.md";
871
+ }
872
+ /**
873
+ * List the entries the forgetting pass archived (newest first). Parses the
874
+ * `*.archive.md` sections written by applyForgetting():
875
+ * `## Forgotten <ISO>` then `- **key** (category[ [tags]], accessed NƗ,
876
+ * age Dd, retention R): value`.
877
+ */
878
+ async listArchived(scope) {
879
+ const scopes = scope ? [scope] : ["project", "user"];
880
+ const out = [];
881
+ for (const s of scopes) {
882
+ const parsed = await this.parseArchive(s);
883
+ out.push(...parsed.map(({ lineIndex: _lineIndex, ...entry }) => entry));
884
+ }
885
+ return out.sort((a, b) => (a.forgottenAt < b.forgottenAt ? 1 : a.forgottenAt > b.forgottenAt ? -1 : 0));
886
+ }
887
+ /**
888
+ * Restore a forgotten entry from the archive back into live memory — the
889
+ * "recoverable" half of the Ebbinghaus pass. The LATEST archived version of
890
+ * the key wins (project checked before user when no scope is given). The
891
+ * critical action is the re-remember (restoring = re-learning: the curve
892
+ * restarts fresh); on success the restored line is removed from the archive
893
+ * (atomic rewrite, best-effort — a cleanup failure never undoes the restore).
894
+ * Returns null when the key is not in the archive.
895
+ */
896
+ async restoreFromArchive(key, scope) {
897
+ const normalizedKey = key.trim();
898
+ const scopes = scope ? [scope] : ["project", "user"];
899
+ for (const s of scopes) {
900
+ const parsed = await this.parseArchive(s);
901
+ const matches = parsed.filter((e) => e.key === normalizedKey);
902
+ if (matches.length === 0)
903
+ continue;
904
+ // Latest version wins: sections are appended chronologically, so the
905
+ // last file occurrence is the most recent forgetting of this key.
906
+ const entry = matches[matches.length - 1];
907
+ const result = await this.remember(entry.key, entry.value, {
908
+ scope: s,
909
+ category: entry.category,
910
+ ...(entry.tags?.length ? { tags: entry.tags } : {}),
911
+ });
912
+ if (result.status === "stored" || result.status === "updated") {
913
+ await this.verifyPersistedMemory(s, result.key, entry.value);
914
+ await this.removeArchiveLine(s, entry.lineIndex);
915
+ this.emit("memory:restored", { key: entry.key, scope: s });
916
+ }
917
+ const { lineIndex: _lineIndex, ...restored } = entry;
918
+ return { result, restored };
919
+ }
920
+ return null;
921
+ }
922
+ /** Re-read the live store before deleting the only archived copy. */
923
+ async verifyPersistedMemory(scope, key, expectedValue) {
924
+ const filePath = scope === 'project' ? this.config.projectMemoryPath : this.config.userMemoryPath;
925
+ try {
926
+ const content = await fs.readFile(filePath, 'utf-8');
927
+ const persisted = this.parseMemoryFile(content).find((memory) => memory.key === key);
928
+ if (persisted?.value === expectedValue)
929
+ return;
930
+ }
931
+ catch (err) {
932
+ logger.warn(`[persistent-memory] restored memory verification failed (${scope}): ${err instanceof Error ? err.message : String(err)}`);
933
+ }
934
+ throw new MemoryPersistenceError(scope, `Memory "${key}" was not durably persisted in the ${scope} store; archive left intact`);
935
+ }
936
+ /** Parse one scope's archive file into entries carrying their raw line index. */
937
+ async parseArchive(scope) {
938
+ const archivePath = this.getArchivePath(scope);
939
+ let content;
940
+ try {
941
+ content = await fs.readFile(archivePath, "utf-8");
942
+ }
943
+ catch (err) {
944
+ if (err?.code === 'ENOENT')
945
+ return [];
946
+ const reason = err instanceof Error ? err.message : String(err);
947
+ logger.warn(`[persistent-memory] ${scope} memory archive is unreadable: ${reason}`);
948
+ throw new MemoryPersistenceError(scope, `${scope} memory archive is unreadable (${reason}); it is not empty`);
949
+ }
950
+ const entries = [];
951
+ let forgottenAt = "";
952
+ const lines = content.split("\n");
953
+ for (let i = 0; i < lines.length; i++) {
954
+ const line = lines[i];
955
+ const section = line.match(/^## Forgotten (.+)$/);
956
+ if (section) {
957
+ forgottenAt = section[1].trim();
958
+ continue;
959
+ }
960
+ const entry = line.match(/^- \*\*(.+?)\*\* \((\w+)(?: \[([^\]]*)\])?, accessed \d+Ɨ, age \d+d, retention [\d.]+\): (.*)$/);
961
+ if (!entry)
962
+ continue;
963
+ const [, entryKey, rawCategory, rawTags, value] = entry;
964
+ if (entryKey === undefined || value === undefined)
965
+ continue;
966
+ const category = ["project", "preferences", "decisions", "patterns", "context", "custom"].includes(rawCategory)
967
+ ? rawCategory
968
+ : "custom";
969
+ const tags = rawTags
970
+ ?.split(",")
971
+ .map((t) => t.trim())
972
+ .filter(Boolean);
973
+ entries.push({
974
+ key: entryKey,
975
+ value: unescapeArchiveValue(value),
976
+ category,
977
+ ...(tags?.length ? { tags } : {}),
978
+ forgottenAt,
979
+ scope,
980
+ lineIndex: i,
981
+ });
982
+ }
983
+ return entries;
984
+ }
985
+ /** Drop one restored line from the archive (and any now-empty section), atomically. */
986
+ async removeArchiveLine(scope, lineIndex) {
987
+ const archivePath = this.getArchivePath(scope);
988
+ try {
989
+ const lines = (await fs.readFile(archivePath, "utf-8")).split("\n");
990
+ lines.splice(lineIndex, 1);
991
+ // Remove sections left with no entry lines before the next section.
992
+ const cleaned = [];
993
+ for (let i = 0; i < lines.length; i++) {
994
+ const line = lines[i];
995
+ if (/^## Forgotten /.test(line)) {
996
+ let j = i + 1;
997
+ let hasEntry = false;
998
+ while (j < lines.length && !/^## Forgotten /.test(lines[j])) {
999
+ if (lines[j].startsWith("- "))
1000
+ hasEntry = true;
1001
+ j++;
1002
+ }
1003
+ if (!hasEntry) {
1004
+ i = j - 1; // skip the empty section (header + blank filler)
1005
+ continue;
1006
+ }
1007
+ }
1008
+ cleaned.push(line);
1009
+ }
1010
+ await writeFileAtomic(archivePath, cleaned.join("\n"), { mode: 0o600 });
1011
+ }
1012
+ catch (err) {
1013
+ logger.warn(`[persistent-memory] archive cleanup after restore failed (restore itself succeeded): ${err instanceof Error ? err.message : String(err)}`);
1014
+ }
530
1015
  }
531
1016
  /**
532
1017
  * Get all memories for a category
533
1018
  */
534
1019
  getByCategory(category, scope) {
1020
+ if (scope) {
1021
+ this.assertScopeReadable(scope);
1022
+ }
1023
+ else {
1024
+ this.assertScopeReadable('project');
1025
+ this.assertScopeReadable('user');
1026
+ }
535
1027
  const memories = [];
536
1028
  if (!scope || scope === "project") {
537
1029
  for (const memory of this.projectMemories.values()) {
@@ -553,11 +1045,13 @@ export class PersistentMemoryManager extends EventEmitter {
553
1045
  * Clear old memories
554
1046
  */
555
1047
  async forgetOlderThan(days, scope = "project") {
1048
+ this.assertScopeReadable(scope);
556
1049
  const memories = scope === "project" ? this.projectMemories : this.userMemories;
557
1050
  const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
1051
+ const forgettingConfig = resolveForgettingConfig();
558
1052
  let count = 0;
559
1053
  for (const [key, memory] of memories) {
560
- if (memory.updatedAt < cutoff) {
1054
+ if (memory.updatedAt < cutoff && !isProtectedMemory(memory, forgettingConfig)) {
561
1055
  memories.delete(key);
562
1056
  count++;
563
1057
  }
@@ -575,69 +1069,118 @@ export class PersistentMemoryManager extends EventEmitter {
575
1069
  const filePath = scope === "project"
576
1070
  ? this.config.projectMemoryPath
577
1071
  : this.config.userMemoryPath;
578
- // Group by category
579
- const byCategory = new Map();
580
- for (const memory of memories.values()) {
581
- const list = byCategory.get(memory.category) || [];
582
- list.push(memory);
583
- byCategory.set(memory.category, list);
584
- }
585
- // Generate markdown
586
- let content = `# Code Buddy Memory\n\n`;
587
- content += `This file stores persistent memory for the Code Buddy agent.\n`;
588
- content += `It is automatically managed but can be manually edited.\n\n`;
589
- const categoryNames = {
590
- project: "Project Context",
591
- preferences: "User Preferences",
592
- decisions: "Decisions",
593
- patterns: "Patterns",
594
- context: "Context",
595
- custom: "Custom",
596
- };
597
- for (const [category, name] of Object.entries(categoryNames)) {
598
- content += `## ${name}\n`;
599
- const categoryMemories = byCategory.get(category) || [];
600
- if (categoryMemories.length === 0) {
601
- content += `<!-- No memories in this category -->\n`;
1072
+ // Garde anti-amnƩsie (audit 2026-09-02) : si le dernier chargement a
1073
+ // échoué autrement que par ENOENT, ce Map ne reflète PAS le fichier.
1074
+ // On retente un load (fusion : les entrƩes en RAM, plus rƩcentes,
1075
+ // gagnent) ; si le fichier reste illisible, on refuse d'Ć©craser —
1076
+ // fail-closed, comme l'archive de l'oubli.
1077
+ if (this.degradedScopes.has(scope)) {
1078
+ const ramSnapshot = cloneMemoryMap(memories);
1079
+ await this.loadMemories(scope);
1080
+ if (this.degradedScopes.has(scope)) {
1081
+ logger.warn(`[persistent-memory] ${scope} memory file is still unreadable — skipping save to avoid overwriting history`);
1082
+ throw new MemoryPersistenceError(scope);
602
1083
  }
603
- else {
604
- for (const memory of categoryMemories) {
605
- content += `- **${memory.key}**: ${memory.value}\n`;
606
- if (memory.tags && memory.tags.length > 0) {
607
- content += ` Tags: ${memory.tags.join(", ")}\n`;
1084
+ for (const [key, memory] of ramSnapshot) {
1085
+ memories.set(key, memory);
1086
+ }
1087
+ }
1088
+ await withSessionLock(filePath, async () => {
1089
+ const diskMemories = new Map();
1090
+ try {
1091
+ const diskContent = await fs.readFile(filePath, "utf-8");
1092
+ const parsed = this.parseMemoryFile(diskContent);
1093
+ if (parsed.length === 0 &&
1094
+ diskContent.trim() !== '' &&
1095
+ !this.isCanonicalEmptyMemoryFile(diskContent)) {
1096
+ throw new Error('non-canonical memory markdown contains no recoverable entries');
1097
+ }
1098
+ for (const memory of parsed)
1099
+ diskMemories.set(memory.key, memory);
1100
+ }
1101
+ catch (error) {
1102
+ if (error?.code !== 'ENOENT') {
1103
+ throw new MemoryPersistenceError(scope, `could not reload ${scope} memory before save: ${error?.message ?? String(error)}`);
1104
+ }
1105
+ }
1106
+ const persistedSnapshot = this.persistedMemorySnapshots.get(scope) ?? new Map();
1107
+ const mergedMemories = mergeMemoryMaps(diskMemories, memories, persistedSnapshot);
1108
+ memories.clear();
1109
+ for (const [key, memory] of mergedMemories)
1110
+ memories.set(key, memory);
1111
+ // Group by category
1112
+ const byCategory = new Map();
1113
+ for (const memory of memories.values()) {
1114
+ const list = byCategory.get(memory.category) || [];
1115
+ list.push(memory);
1116
+ byCategory.set(memory.category, list);
1117
+ }
1118
+ // Generate markdown
1119
+ let content = `# Code Buddy Memory\n\n`;
1120
+ content += `This file stores persistent memory for the Code Buddy agent.\n`;
1121
+ content += `It is automatically managed but can be manually edited.\n\n`;
1122
+ const categoryNames = {
1123
+ project: "Project Context",
1124
+ preferences: "User Preferences",
1125
+ decisions: "Decisions",
1126
+ patterns: "Patterns",
1127
+ context: "Context",
1128
+ custom: "Custom",
1129
+ };
1130
+ for (const [category, name] of Object.entries(categoryNames)) {
1131
+ content += `## ${name}\n`;
1132
+ const categoryMemories = byCategory.get(category) || [];
1133
+ if (categoryMemories.length === 0) {
1134
+ content += `<!-- No memories in this category -->\n`;
1135
+ }
1136
+ else {
1137
+ for (const memory of categoryMemories) {
1138
+ // Prefix continuation lines with an explicit transport marker so
1139
+ // their original indentation and literal metadata-like text survive
1140
+ // a reload. ` |` also encodes an empty internal line as ` |\n`.
1141
+ const [first = '', ...rest] = memory.value.split('\n');
1142
+ content += `- **${memory.key}**: ${first}\n`;
1143
+ for (const cont of rest) {
1144
+ content += ` |${cont}\n`;
1145
+ }
1146
+ if (memory.tags && memory.tags.length > 0) {
1147
+ content += ` Tags: ${memory.tags.join(", ")}\n`;
1148
+ }
1149
+ content += `${renderMemoryMeta(memory)}\n`;
608
1150
  }
609
1151
  }
1152
+ content += `\n`;
610
1153
  }
611
- content += `\n`;
612
- }
613
- content += `---\n`;
614
- content += `*Last updated: ${new Date().toISOString()}*\n`;
615
- try {
616
- const hooksManager = getHooksManager();
617
- const results = await hooksManager.executeHooks("before-memory-write", {
618
- file: filePath,
619
- content: content,
620
- });
621
- let abort = false;
622
- let modifiedContent = content;
623
- for (const res of results) {
624
- if (res.abort) {
625
- abort = true;
1154
+ content += `---\n`;
1155
+ content += `*Last updated: ${new Date().toISOString()}*\n`;
1156
+ try {
1157
+ const hooksManager = getHooksManager();
1158
+ const results = await hooksManager.executeHooks("before-memory-write", {
1159
+ file: filePath,
1160
+ content: content,
1161
+ });
1162
+ let abort = false;
1163
+ let modifiedContent = content;
1164
+ for (const res of results) {
1165
+ if (res.abort) {
1166
+ abort = true;
1167
+ }
1168
+ if (res.modified?.content !== undefined) {
1169
+ modifiedContent = res.modified.content;
1170
+ }
626
1171
  }
627
- if (res.modified?.content !== undefined) {
628
- modifiedContent = res.modified.content;
1172
+ if (abort) {
1173
+ return;
629
1174
  }
1175
+ content = modifiedContent;
630
1176
  }
631
- if (abort) {
632
- return;
1177
+ catch (_err) {
1178
+ // Ignored
633
1179
  }
634
- content = modifiedContent;
635
- }
636
- catch (_err) {
637
- // Ignored
638
- }
639
- await fs.ensureDir(path.dirname(filePath));
640
- await fs.writeFile(filePath, content);
1180
+ await fs.ensureDir(path.dirname(filePath));
1181
+ await writeFileAtomic(filePath, content, { mode: 0o600 });
1182
+ this.persistedMemorySnapshots.set(scope, cloneMemoryMap(memories));
1183
+ });
641
1184
  }
642
1185
  /**
643
1186
  * Get context string for system prompt
@@ -649,6 +1192,10 @@ export class PersistentMemoryManager extends EventEmitter {
649
1192
  return `--- PERSISTENT MEMORY ---\n${snapshot}\n--- END MEMORY ---\n`;
650
1193
  }
651
1194
  getHermesSnapshotForPrompt() {
1195
+ if (this.degradedScopes.size > 0) {
1196
+ const details = Array.from(this.degradedScopes, ([scope, reason]) => `${scope}: ${reason}`).join('; ');
1197
+ return `<memory-store-error>MEMORY STORE ERROR: ${details}. The affected store is unavailable, not empty; do not infer that memories are absent.</memory-store-error>`;
1198
+ }
652
1199
  const sections = [];
653
1200
  const projectEntries = this.renderScopeEntries(this.projectMemories);
654
1201
  const userEntries = this.renderScopeEntries(this.userMemories);
@@ -692,36 +1239,47 @@ export class PersistentMemoryManager extends EventEmitter {
692
1239
  updatedAt: memory.updatedAt
693
1240
  }));
694
1241
  // 2. Extract facts from the conversation turn
695
- const extractedFacts = await service.extractFacts(`User: ${message}\nAssistant: ${response}`);
1242
+ // Only user-authored text is eligible for durable facts. The assistant's
1243
+ // response may contain hypotheses or hallucinations, so it must never
1244
+ // become evidence for the persistent memory store.
1245
+ const extractedFacts = await service.extractFacts(`User: ${message}`);
696
1246
  if (extractedFacts.length === 0)
697
1247
  return;
698
1248
  // 3. Reconcile facts
699
1249
  const reconciledFacts = await service.reconcileFacts(currentProjectFacts, extractedFacts);
700
- // 4. Update project memories with reconciled facts
1250
+ // 4. Update project memories with reconciled facts (preserving each
1251
+ // surviving key's recall-reinforcement metadata).
1252
+ const priorProjectMemories = new Map(this.projectMemories);
701
1253
  this.projectMemories.clear();
702
1254
  for (const fact of reconciledFacts) {
703
1255
  let key = `fact-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
704
1256
  let value = fact.text;
705
- const colonIdx = fact.text.indexOf(': ');
706
- if (colonIdx > 0 && colonIdx < 50) {
707
- key = fact.text.substring(0, colonIdx).trim();
708
- value = fact.text.substring(colonIdx + 2).trim();
1257
+ const parsed = parseReconciledFactText(fact.text);
1258
+ if (parsed) {
1259
+ key = parsed.key;
1260
+ value = parsed.value;
709
1261
  }
1262
+ const prior = priorProjectMemories.get(key);
710
1263
  this.projectMemories.set(key, {
711
1264
  key,
712
1265
  value,
713
1266
  category: mapFactCategoryToMemoryCategory(fact.category),
714
- createdAt: fact.updatedAt || new Date(),
1267
+ createdAt: prior?.createdAt || fact.updatedAt || new Date(),
715
1268
  updatedAt: fact.updatedAt || new Date(),
716
- accessCount: 0,
717
- tags: fact.source ? [fact.source] : ['auto-captured']
1269
+ ...(prior?.lastAccessedAt ? { lastAccessedAt: prior.lastAccessedAt } : {}),
1270
+ accessCount: prior?.accessCount || 0,
1271
+ tags: mergeMemoryTags(prior?.tags, fact.source, ['auto-captured'])
718
1272
  });
719
1273
  }
720
1274
  await this.saveMemories("project");
721
1275
  }
722
1276
  catch (err) {
723
- const message = err instanceof Error ? err.message : String(err);
724
- logger.warn(`[FactsMemory] Failed to autoCapture facts, falling back to pattern matching: ${message}`);
1277
+ const reason = err instanceof Error ? err.message : String(err);
1278
+ if (err instanceof FactsExtractionError) {
1279
+ logger.warn(`[FactsMemory] Failed to autoCapture facts: ${reason}`);
1280
+ return;
1281
+ }
1282
+ logger.warn(`[FactsMemory] Failed to autoCapture facts, falling back to pattern matching: ${reason}`);
725
1283
  // Fallback: Detect project context
726
1284
  const projectPatterns = [
727
1285
  /this (?:is|project) (?:a|an) ([^.]+)/i,
@@ -729,7 +1287,7 @@ export class PersistentMemoryManager extends EventEmitter {
729
1287
  /the (?:main|entry) (?:file|point) is ([^\s]+)/i,
730
1288
  ];
731
1289
  for (const pattern of projectPatterns) {
732
- const match = message.match(pattern) || response.match(pattern);
1290
+ const match = message.match(pattern);
733
1291
  if (match) {
734
1292
  await this.remember(`auto-${Date.now()}`, match[0], {
735
1293
  category: "project",
@@ -740,7 +1298,7 @@ export class PersistentMemoryManager extends EventEmitter {
740
1298
  // Detect preferences
741
1299
  const prefPatterns = [
742
1300
  /(?:i |we )prefer ([^.]+)/i,
743
- /(?:always |never )([^.]+)/i,
1301
+ /(?:i |we )(?:(?:always|never) (?:use|choose|write|format|keep|avoid|run|work with) )([^.]+)/i,
744
1302
  /use ([^.]+) (?:style|convention|format)/i,
745
1303
  ];
746
1304
  for (const pattern of prefPatterns) {
@@ -758,7 +1316,7 @@ export class PersistentMemoryManager extends EventEmitter {
758
1316
  /(?:will|should) use ([^.]+) (?:for|because)/i,
759
1317
  ];
760
1318
  for (const pattern of decisionPatterns) {
761
- const match = message.match(pattern) || response.match(pattern);
1319
+ const match = message.match(pattern);
762
1320
  if (match) {
763
1321
  await this.remember(`decision-${Date.now()}`, match[0], {
764
1322
  category: "decisions",
@@ -779,6 +1337,13 @@ export class PersistentMemoryManager extends EventEmitter {
779
1337
  * arrive out of order.
780
1338
  */
781
1339
  getRecentMemories(limit = 10, scope) {
1340
+ if (scope) {
1341
+ this.assertScopeReadable(scope);
1342
+ }
1343
+ else {
1344
+ this.assertScopeReadable('project');
1345
+ this.assertScopeReadable('user');
1346
+ }
782
1347
  const all = [];
783
1348
  if (!scope || scope === "project") {
784
1349
  for (const m of this.projectMemories.values()) {
@@ -798,6 +1363,13 @@ export class PersistentMemoryManager extends EventEmitter {
798
1363
  * Format memories for display
799
1364
  */
800
1365
  formatMemories(scope) {
1366
+ if (scope) {
1367
+ this.assertScopeReadable(scope);
1368
+ }
1369
+ else {
1370
+ this.assertScopeReadable('project');
1371
+ this.assertScopeReadable('user');
1372
+ }
801
1373
  let output = `\n🧠 Persistent Memory\n${"═".repeat(50)}\n\n`;
802
1374
  const formatScope = (name, memories, memoryScope) => {
803
1375
  const usage = this.getMemoryUsage(memoryScope);
@@ -825,12 +1397,32 @@ export class PersistentMemoryManager extends EventEmitter {
825
1397
  return output;
826
1398
  }
827
1399
  getStats() {
1400
+ this.assertScopeReadable('project');
1401
+ this.assertScopeReadable('user');
828
1402
  return {
829
1403
  project: this.projectMemories.size,
830
1404
  user: this.userMemories.size,
831
1405
  total: this.projectMemories.size + this.userMemories.size,
832
1406
  };
833
1407
  }
1408
+ assertScopeReadable(scope) {
1409
+ const reason = this.degradedScopes.get(scope);
1410
+ if (!reason)
1411
+ return;
1412
+ throw new MemoryPersistenceError(scope, `${scope} memory store is unreadable or unavailable (${reason}); it is not an empty store`);
1413
+ }
1414
+ }
1415
+ const ARCHIVE_ESCAPED_VALUE_PREFIX = "@codebuddy-escaped-v1:";
1416
+ function escapeArchiveValue(value) {
1417
+ return ARCHIVE_ESCAPED_VALUE_PREFIX + value.replace(/\\/g, "\\\\").replace(/\r?\n/g, "\\n");
1418
+ }
1419
+ /** Decode backslash/newline escapes in one pass so a literal `\\n` stays literal. */
1420
+ function unescapeArchiveValue(value) {
1421
+ if (!value.startsWith(ARCHIVE_ESCAPED_VALUE_PREFIX))
1422
+ return value;
1423
+ return value
1424
+ .slice(ARCHIVE_ESCAPED_VALUE_PREFIX.length)
1425
+ .replace(/\\(\\|n)/g, (_match, escaped) => escaped === "n" ? "\n" : "\\");
834
1426
  }
835
1427
  // Default singleton instance (no bot scope) + per-bot instances.
836
1428
  let memoryManagerInstance = null;