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