@phuetz/code-buddy 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2247) hide show
  1. package/LICENSE +90 -21
  2. package/README.md +145 -349
  3. package/codebuddy-runtime.json +24 -0
  4. package/dist/advanced/session-replay.js +3 -2
  5. package/dist/agent/agent-state.d.ts +4 -1
  6. package/dist/agent/agent-state.js +9 -3
  7. package/dist/agent/architect-mode.js +1 -1
  8. package/dist/agent/autonomous/agentic-coding-contract.d.ts +28 -28
  9. package/dist/agent/autonomous/agentic-coding-runner.d.ts +14 -4
  10. package/dist/agent/autonomous/agentic-coding-runner.js +176 -27
  11. package/dist/agent/autonomous/checkpoint-manager.js +3 -12
  12. package/dist/agent/autonomous/codex-autonomy-directive.d.ts +10 -0
  13. package/dist/agent/autonomous/codex-autonomy-directive.js +25 -0
  14. package/dist/agent/autonomous/edit-proposal-producer.js +2 -2
  15. package/dist/agent/autonomous/fleet-task-types.d.ts +2 -2
  16. package/dist/agent/autonomous/fleet-task-types.js +2 -2
  17. package/dist/agent/autonomous/fleet-tick-handler.d.ts +3 -3
  18. package/dist/agent/autonomous/fleet-tick-handler.js +14 -8
  19. package/dist/agent/autonomous/recursive-improvement.d.ts +23 -0
  20. package/dist/agent/autonomous/recursive-improvement.js +114 -0
  21. package/dist/agent/autonomous/verification-loop.js +4 -2
  22. package/dist/agent/codebuddy-agent.d.ts +93 -6
  23. package/dist/agent/codebuddy-agent.js +452 -58
  24. package/dist/agent/council-lesson-proposer.d.ts +80 -13
  25. package/dist/agent/council-lesson-proposer.js +201 -43
  26. package/dist/agent/deep-research-ckg.d.ts +176 -0
  27. package/dist/agent/deep-research-ckg.js +250 -0
  28. package/dist/agent/deep-research-storm.d.ts +222 -0
  29. package/dist/agent/deep-research-storm.js +689 -0
  30. package/dist/agent/deep-research.d.ts +329 -0
  31. package/dist/agent/deep-research.js +994 -0
  32. package/dist/agent/delegation/thread-delegation.d.ts +80 -0
  33. package/dist/agent/delegation/thread-delegation.js +472 -0
  34. package/dist/agent/delegation/thread-task-runner.d.ts +37 -0
  35. package/dist/agent/delegation/thread-task-runner.js +89 -0
  36. package/dist/agent/dev-loop/dev-loop.d.ts +120 -0
  37. package/dist/agent/dev-loop/dev-loop.js +404 -0
  38. package/dist/agent/dev-loop/structural-gate.d.ts +32 -0
  39. package/dist/agent/dev-loop/structural-gate.js +120 -0
  40. package/dist/agent/execution/agent-executor.d.ts +52 -31
  41. package/dist/agent/execution/agent-executor.js +1520 -547
  42. package/dist/agent/execution/context-pipeline.d.ts +54 -6
  43. package/dist/agent/execution/context-pipeline.js +285 -88
  44. package/dist/agent/execution/incremental-token-counter.d.ts +15 -0
  45. package/dist/agent/execution/incremental-token-counter.js +36 -0
  46. package/dist/agent/execution/ordered-tool-executor.d.ts +14 -0
  47. package/dist/agent/execution/ordered-tool-executor.js +54 -0
  48. package/dist/agent/execution/post-tool-handlers.d.ts +1 -1
  49. package/dist/agent/execution/post-tool-handlers.js +2 -2
  50. package/dist/agent/execution/query-classifier.d.ts +2 -0
  51. package/dist/agent/execution/query-classifier.js +2 -0
  52. package/dist/agent/execution/tool-dependency-graph.js +7 -0
  53. package/dist/agent/execution/tool-selection-strategy.d.ts +20 -0
  54. package/dist/agent/execution/tool-selection-strategy.js +145 -23
  55. package/dist/agent/facades/message-history-manager.d.ts +1 -1
  56. package/dist/agent/facades/message-history-manager.js +1 -1
  57. package/dist/agent/facades/model-routing-facade.d.ts +31 -1
  58. package/dist/agent/facades/model-routing-facade.js +86 -2
  59. package/dist/agent/facades/session-facade.d.ts +10 -2
  60. package/dist/agent/facades/session-facade.js +59 -1
  61. package/dist/agent/film/film-producer.d.ts +98 -0
  62. package/dist/agent/film/film-producer.js +289 -0
  63. package/dist/agent/film/scene-planner.d.ts +38 -0
  64. package/dist/agent/film/scene-planner.js +93 -0
  65. package/dist/agent/film/trailer-planner.d.ts +23 -0
  66. package/dist/agent/film/trailer-planner.js +242 -0
  67. package/dist/agent/film/video-studio.d.ts +72 -0
  68. package/dist/agent/film/video-studio.js +249 -0
  69. package/dist/agent/flow/planning-flow.d.ts +3 -0
  70. package/dist/agent/flow/planning-flow.js +70 -8
  71. package/dist/agent/hermes-claw-migrate.d.ts +62 -0
  72. package/dist/agent/hermes-claw-migrate.js +189 -15
  73. package/dist/agent/hermes-memory-providers.js +3 -3
  74. package/dist/agent/hermes-parity-manifest.js +69 -15
  75. package/dist/agent/infrastructure/agent-infrastructure.d.ts +1 -0
  76. package/dist/agent/infrastructure/agent-infrastructure.js +1 -1
  77. package/dist/agent/isolation/agent-workspace.js +5 -2
  78. package/dist/agent/learning/skill-background-writes.js +9 -4
  79. package/dist/agent/learning-agent.js +4 -4
  80. package/dist/agent/learning-background-writes.js +9 -5
  81. package/dist/agent/lesson-candidate-queue.d.ts +4 -0
  82. package/dist/agent/lesson-candidate-queue.js +9 -3
  83. package/dist/agent/lesson-provenance.js +9 -3
  84. package/dist/agent/lessons-tracker.d.ts +68 -1
  85. package/dist/agent/lessons-tracker.js +218 -36
  86. package/dist/agent/loop-detection-service.d.ts +56 -0
  87. package/dist/agent/loop-detection-service.js +207 -0
  88. package/dist/agent/middleware/auto-observation.d.ts +2 -0
  89. package/dist/agent/middleware/auto-observation.js +4 -2
  90. package/dist/agent/middleware/auto-repair-middleware.d.ts +2 -0
  91. package/dist/agent/middleware/auto-repair-middleware.js +27 -4
  92. package/dist/agent/middleware/changed-files.d.ts +19 -0
  93. package/dist/agent/middleware/changed-files.js +113 -0
  94. package/dist/agent/middleware/cost-limit.d.ts +0 -2
  95. package/dist/agent/middleware/cost-limit.js +0 -3
  96. package/dist/agent/middleware/index.d.ts +2 -0
  97. package/dist/agent/middleware/index.js +1 -0
  98. package/dist/agent/middleware/pipeline.d.ts +9 -0
  99. package/dist/agent/middleware/pipeline.js +18 -0
  100. package/dist/agent/middleware/plan-completion-audit.d.ts +76 -0
  101. package/dist/agent/middleware/plan-completion-audit.js +157 -0
  102. package/dist/agent/middleware/quality-gate-middleware.d.ts +43 -1
  103. package/dist/agent/middleware/quality-gate-middleware.js +198 -40
  104. package/dist/agent/middleware/types.d.ts +6 -0
  105. package/dist/agent/middleware/verification-enforcement.d.ts +10 -3
  106. package/dist/agent/middleware/verification-enforcement.js +43 -13
  107. package/dist/agent/middleware/workflow-guard.js +7 -0
  108. package/dist/agent/model-benchmark.js +11 -17
  109. package/dist/agent/model-tier.d.ts +2 -2
  110. package/dist/agent/model-tier.js +10 -7
  111. package/dist/agent/multi-agent/agent-memory-integration.js +3 -2
  112. package/dist/agent/multi-agent/base-agent.d.ts +12 -1
  113. package/dist/agent/multi-agent/base-agent.js +58 -10
  114. package/dist/agent/multi-agent/enhanced-coordination.js +1 -0
  115. package/dist/agent/multi-agent/metrics-persistence.js +28 -14
  116. package/dist/agent/multi-agent/multi-agent-system.d.ts +5 -0
  117. package/dist/agent/multi-agent/multi-agent-system.js +81 -4
  118. package/dist/agent/multi-agent/session-fleet-bridge.js +2 -1
  119. package/dist/agent/multi-agent/session-registry.js +9 -3
  120. package/dist/agent/multi-agent/team-manager.d.ts +11 -0
  121. package/dist/agent/multi-agent/team-manager.js +94 -5
  122. package/dist/agent/multi-agent/types.d.ts +10 -1
  123. package/dist/agent/multi-agent/workflow-multi-persistence.js +16 -8
  124. package/dist/agent/multi-agent/workflow-persistence.js +9 -6
  125. package/dist/agent/observer/trigger-registry.js +3 -5
  126. package/dist/agent/operating-modes.d.ts +3 -0
  127. package/dist/agent/operating-modes.js +15 -22
  128. package/dist/agent/pipelines.d.ts +2 -4
  129. package/dist/agent/pipelines.js +1 -1
  130. package/dist/agent/plan-mode.js +1 -1
  131. package/dist/agent/prompt-suggestions.js +2 -1
  132. package/dist/agent/prompt-tool-observation.d.ts +55 -0
  133. package/dist/agent/prompt-tool-observation.js +165 -0
  134. package/dist/agent/reasoning/tree-of-thought.js +1 -1
  135. package/dist/agent/repair/repair-engine.js +1 -1
  136. package/dist/agent/repo-profiler.d.ts +12 -1
  137. package/dist/agent/repo-profiler.js +21 -15
  138. package/dist/agent/repo-profiling/cache.js +6 -9
  139. package/dist/agent/research-worker-provider.d.ts +38 -0
  140. package/dist/agent/research-worker-provider.js +30 -0
  141. package/dist/agent/science/experiment-decision.d.ts +48 -0
  142. package/dist/agent/science/experiment-decision.js +65 -0
  143. package/dist/agent/science/experiment-empirical-gate.d.ts +83 -0
  144. package/dist/agent/science/experiment-empirical-gate.js +156 -0
  145. package/dist/agent/science/experiment-fitness.d.ts +112 -0
  146. package/dist/agent/science/experiment-fitness.js +188 -0
  147. package/dist/agent/science/experiment-loop.d.ts +196 -0
  148. package/dist/agent/science/experiment-loop.js +765 -0
  149. package/dist/agent/science/experiment-orchestrator.d.ts +203 -0
  150. package/dist/agent/science/experiment-orchestrator.js +454 -0
  151. package/dist/agent/science/experiment-sandbox-backends.d.ts +56 -0
  152. package/dist/agent/science/experiment-sandbox-backends.js +201 -0
  153. package/dist/agent/science/experiment-sandbox.d.ts +105 -0
  154. package/dist/agent/science/experiment-sandbox.js +196 -0
  155. package/dist/agent/science/experiment-variant-store.d.ts +108 -0
  156. package/dist/agent/science/experiment-variant-store.js +156 -0
  157. package/dist/agent/science/human-gate.d.ts +31 -0
  158. package/dist/agent/science/human-gate.js +32 -0
  159. package/dist/agent/self-improvement/authored-artifact-gate.js +28 -3
  160. package/dist/agent/self-improvement/authored-tool-runtime.d.ts +4 -2
  161. package/dist/agent/self-improvement/authored-tool-runtime.js +8 -3
  162. package/dist/agent/self-improvement/authored-tool-store.js +3 -2
  163. package/dist/agent/self-improvement/capability-benchmark.js +89 -2
  164. package/dist/agent/self-improvement/continuous-benchmark.d.ts +105 -0
  165. package/dist/agent/self-improvement/continuous-benchmark.js +355 -0
  166. package/dist/agent/self-improvement/delegation-facts.d.ts +105 -0
  167. package/dist/agent/self-improvement/delegation-facts.js +483 -0
  168. package/dist/agent/self-improvement/digest-sources.d.ts +56 -0
  169. package/dist/agent/self-improvement/digest-sources.js +294 -0
  170. package/dist/agent/self-improvement/digest.d.ts +169 -0
  171. package/dist/agent/self-improvement/digest.js +543 -0
  172. package/dist/agent/self-improvement/engine.d.ts +11 -6
  173. package/dist/agent/self-improvement/engine.js +13 -7
  174. package/dist/agent/self-improvement/evolution/ast-novelty.d.ts +20 -0
  175. package/dist/agent/self-improvement/evolution/ast-novelty.js +81 -0
  176. package/dist/agent/self-improvement/evolution/code-variant-store.d.ts +101 -0
  177. package/dist/agent/self-improvement/evolution/code-variant-store.js +229 -0
  178. package/dist/agent/self-improvement/evolution/evolution-engine.d.ts +199 -0
  179. package/dist/agent/self-improvement/evolution/evolution-engine.js +503 -0
  180. package/dist/agent/self-improvement/evolution/feature-map.d.ts +24 -0
  181. package/dist/agent/self-improvement/evolution/feature-map.js +88 -0
  182. package/dist/agent/self-improvement/evolution/model-bandit.d.ts +57 -0
  183. package/dist/agent/self-improvement/evolution/model-bandit.js +98 -0
  184. package/dist/agent/self-improvement/evolution/protected-paths.d.ts +31 -0
  185. package/dist/agent/self-improvement/evolution/protected-paths.js +105 -0
  186. package/dist/agent/self-improvement/evolution/research-weakness-source.d.ts +56 -0
  187. package/dist/agent/self-improvement/evolution/research-weakness-source.js +161 -0
  188. package/dist/agent/self-improvement/evolution/scrub-env.d.ts +22 -0
  189. package/dist/agent/self-improvement/evolution/scrub-env.js +40 -0
  190. package/dist/agent/self-improvement/evolution/variant-fitness.d.ts +86 -0
  191. package/dist/agent/self-improvement/evolution/variant-fitness.js +217 -0
  192. package/dist/agent/self-improvement/evolution/variant-planner.d.ts +41 -0
  193. package/dist/agent/self-improvement/evolution/variant-planner.js +156 -0
  194. package/dist/agent/self-improvement/evolution/weakness-selector.d.ts +38 -0
  195. package/dist/agent/self-improvement/evolution/weakness-selector.js +108 -0
  196. package/dist/agent/self-improvement/evolution/worktree-scorer.d.ts +44 -0
  197. package/dist/agent/self-improvement/evolution/worktree-scorer.js +99 -0
  198. package/dist/agent/self-improvement/evolutionary-archive.js +3 -2
  199. package/dist/agent/self-improvement/experience-source.d.ts +60 -7
  200. package/dist/agent/self-improvement/experience-source.js +78 -8
  201. package/dist/agent/self-improvement/index.d.ts +1 -0
  202. package/dist/agent/self-improvement/index.js +6 -3
  203. package/dist/agent/self-improvement/learning-store.d.ts +16 -0
  204. package/dist/agent/self-improvement/learning-store.js +83 -3
  205. package/dist/agent/self-improvement/llm-drafter.d.ts +3 -1
  206. package/dist/agent/self-improvement/llm-drafter.js +20 -2
  207. package/dist/agent/self-improvement/llm-tool-proposer.js +1 -1
  208. package/dist/agent/self-improvement/proposal-store.d.ts +46 -0
  209. package/dist/agent/self-improvement/proposal-store.js +87 -0
  210. package/dist/agent/self-improvement/proposer.d.ts +1 -1
  211. package/dist/agent/self-improvement/proposer.js +94 -2
  212. package/dist/agent/self-improvement/rule-store.js +5 -4
  213. package/dist/agent/self-improvement/sandbox-scorer.d.ts +1 -1
  214. package/dist/agent/self-improvement/sandbox-scorer.js +8 -4
  215. package/dist/agent/self-improvement/self-knowledge.d.ts +1 -1
  216. package/dist/agent/self-improvement/self-knowledge.js +8 -8
  217. package/dist/agent/self-improvement/skill-benchmark.js +27 -0
  218. package/dist/agent/self-improvement/skill-consolidator.js +16 -0
  219. package/dist/agent/self-improvement/skill-engine.d.ts +7 -0
  220. package/dist/agent/self-improvement/skill-engine.js +54 -28
  221. package/dist/agent/self-improvement/skill-gate.d.ts +4 -4
  222. package/dist/agent/self-improvement/skill-gate.js +38 -20
  223. package/dist/agent/self-improvement/skill-mutator.d.ts +20 -1
  224. package/dist/agent/self-improvement/skill-mutator.js +138 -19
  225. package/dist/agent/self-improvement/skill-proposer.js +2 -1
  226. package/dist/agent/self-improvement/skill-types.d.ts +4 -0
  227. package/dist/agent/self-improvement/strategy-engine.d.ts +54 -0
  228. package/dist/agent/self-improvement/strategy-engine.js +104 -0
  229. package/dist/agent/self-improvement/strategy-gate.d.ts +49 -0
  230. package/dist/agent/self-improvement/strategy-gate.js +243 -0
  231. package/dist/agent/self-improvement/strategy-live.d.ts +39 -0
  232. package/dist/agent/self-improvement/strategy-live.js +114 -0
  233. package/dist/agent/self-improvement/strategy-proposer.d.ts +30 -0
  234. package/dist/agent/self-improvement/strategy-proposer.js +114 -0
  235. package/dist/agent/self-improvement/strategy-replay.d.ts +40 -0
  236. package/dist/agent/self-improvement/strategy-replay.js +150 -0
  237. package/dist/agent/self-improvement/strategy-runtime.d.ts +43 -0
  238. package/dist/agent/self-improvement/strategy-runtime.js +56 -0
  239. package/dist/agent/self-improvement/strategy-store.d.ts +38 -0
  240. package/dist/agent/self-improvement/strategy-store.js +139 -0
  241. package/dist/agent/self-improvement/strategy-types.d.ts +229 -0
  242. package/dist/agent/self-improvement/strategy-types.js +90 -0
  243. package/dist/agent/self-improvement/tool-benchmark.js +164 -8
  244. package/dist/agent/self-improvement/tool-engine.d.ts +12 -3
  245. package/dist/agent/self-improvement/tool-engine.js +59 -31
  246. package/dist/agent/self-improvement/tool-gate.d.ts +2 -0
  247. package/dist/agent/self-improvement/tool-gate.js +26 -0
  248. package/dist/agent/self-improvement/tool-skill-mutator.d.ts +1 -1
  249. package/dist/agent/self-improvement/tool-skill-mutator.js +20 -2
  250. package/dist/agent/self-improvement/tool-types.d.ts +5 -3
  251. package/dist/agent/self-improvement/types.d.ts +7 -3
  252. package/dist/agent/session-end-flush.js +2 -1
  253. package/dist/agent/specialized/agent-registry.d.ts +1 -0
  254. package/dist/agent/specialized/agent-registry.js +118 -0
  255. package/dist/agent/specialized/excel-agent.js +15 -1
  256. package/dist/agent/specialized/index.d.ts +1 -0
  257. package/dist/agent/specialized/index.js +2 -0
  258. package/dist/agent/specialized/pdf-agent.js +4 -2
  259. package/dist/agent/specialized/swe-agent-adapter.js +8 -0
  260. package/dist/agent/specialized/swe-agent.d.ts +16 -1
  261. package/dist/agent/specialized/swe-agent.js +75 -7
  262. package/dist/agent/specialized/types.d.ts +31 -1
  263. package/dist/agent/specialized/types.js +26 -0
  264. package/dist/agent/specialized/verifier-agent.d.ts +53 -0
  265. package/dist/agent/specialized/verifier-agent.js +342 -0
  266. package/dist/agent/streaming/message-reducer.js +73 -19
  267. package/dist/agent/streaming/streaming-handler.d.ts +24 -0
  268. package/dist/agent/streaming/streaming-handler.js +136 -1
  269. package/dist/agent/subagents.d.ts +10 -4
  270. package/dist/agent/subagents.js +39 -6
  271. package/dist/agent/thinking/extended-thinking.js +1 -1
  272. package/dist/agent/todo-tracker.js +5 -4
  273. package/dist/agent/tool-executor.d.ts +10 -1
  274. package/dist/agent/tool-executor.js +29 -0
  275. package/dist/agent/tool-handler.d.ts +49 -2
  276. package/dist/agent/tool-handler.js +738 -181
  277. package/dist/agent/types.d.ts +3 -5
  278. package/dist/agent/wide-research-checkpoint.d.ts +77 -0
  279. package/dist/agent/wide-research-checkpoint.js +361 -0
  280. package/dist/agent/wide-research-files.d.ts +11 -0
  281. package/dist/agent/wide-research-files.js +189 -0
  282. package/dist/agent/wide-research.d.ts +148 -3
  283. package/dist/agent/wide-research.js +833 -56
  284. package/dist/analytics/code-evolution.js +20 -15
  285. package/dist/analytics/complexity-analyzer.js +2 -2
  286. package/dist/analytics/cost-report.d.ts +71 -0
  287. package/dist/analytics/cost-report.js +724 -0
  288. package/dist/analytics/dashboard.js +8 -7
  289. package/dist/analytics/index.d.ts +2 -0
  290. package/dist/analytics/index.js +2 -0
  291. package/dist/analytics/repo-explainer-collector.d.ts +13 -0
  292. package/dist/analytics/repo-explainer-collector.js +351 -0
  293. package/dist/analytics/repo-explainer.d.ts +224 -0
  294. package/dist/analytics/repo-explainer.js +605 -0
  295. package/dist/analytics/roi-tracker.js +11 -9
  296. package/dist/api/webhooks.js +9 -14
  297. package/dist/app/application-factory.d.ts +1 -1
  298. package/dist/app/application-factory.js +6 -5
  299. package/dist/auth/profile-manager.js +8 -4
  300. package/dist/avatar/avatar-event-bus.d.ts +16 -0
  301. package/dist/avatar/avatar-event-bus.js +53 -0
  302. package/dist/avatar/avatar-gateway-bridge.d.ts +26 -0
  303. package/dist/avatar/avatar-gateway-bridge.js +54 -0
  304. package/dist/avatar/avatar-protocol.d.ts +133 -0
  305. package/dist/avatar/avatar-protocol.js +241 -0
  306. package/dist/avatar/avatar-renderer-registry.d.ts +56 -0
  307. package/dist/avatar/avatar-renderer-registry.js +191 -0
  308. package/dist/avatar/avatar-renderer-simulator.d.ts +31 -0
  309. package/dist/avatar/avatar-renderer-simulator.js +160 -0
  310. package/dist/browser-automation/browser-manager.d.ts +15 -1
  311. package/dist/browser-automation/browser-manager.js +101 -0
  312. package/dist/browser-automation/browser-operator-executor.d.ts +89 -7
  313. package/dist/browser-automation/browser-operator-executor.js +1280 -58
  314. package/dist/browser-automation/browser-operator-runtime.d.ts +87 -0
  315. package/dist/browser-automation/browser-operator-runtime.js +441 -0
  316. package/dist/browser-automation/browser-operator-session.js +4 -3
  317. package/dist/browser-automation/browser-tool.d.ts +17 -2
  318. package/dist/browser-automation/browser-tool.js +101 -39
  319. package/dist/browser-automation/internet-scout-plan.d.ts +1 -0
  320. package/dist/browser-automation/internet-scout-plan.js +17 -0
  321. package/dist/browser-automation/profile-manager.js +5 -3
  322. package/dist/browser-automation/types.d.ts +25 -0
  323. package/dist/cache/advanced-lru-cache.js +4 -4
  324. package/dist/cache/cache-manager.js +9 -10
  325. package/dist/cache/embedding-cache.js +6 -5
  326. package/dist/cache/llm-response-cache.js +3 -4
  327. package/dist/capture/screen-recorder.d.ts +2 -0
  328. package/dist/capture/screen-recorder.js +6 -4
  329. package/dist/capture/screen-watcher.d.ts +6 -3
  330. package/dist/capture/screen-watcher.js +86 -9
  331. package/dist/channels/channel-cognitive-port.d.ts +46 -0
  332. package/dist/channels/channel-cognitive-port.js +182 -0
  333. package/dist/channels/channel-model-override.d.ts +47 -0
  334. package/dist/channels/channel-model-override.js +62 -0
  335. package/dist/channels/companion-channel-profile.d.ts +68 -0
  336. package/dist/channels/companion-channel-profile.js +142 -0
  337. package/dist/channels/companion-channel-turn.d.ts +30 -0
  338. package/dist/channels/companion-channel-turn.js +38 -0
  339. package/dist/channels/core.d.ts +37 -3
  340. package/dist/channels/core.js +63 -6
  341. package/dist/channels/discord/client.js +34 -14
  342. package/dist/channels/dm-pairing.d.ts +18 -4
  343. package/dist/channels/dm-pairing.js +199 -33
  344. package/dist/channels/gateway-lifecycle.d.ts +2 -0
  345. package/dist/channels/gateway-lifecycle.js +1 -0
  346. package/dist/channels/identity-links.d.ts +19 -1
  347. package/dist/channels/identity-links.js +68 -12
  348. package/dist/channels/matrix/index.js +6 -2
  349. package/dist/channels/pro/pro-features.js +17 -0
  350. package/dist/channels/pro/run-tracker.js +9 -4
  351. package/dist/channels/pro/scoped-auth.js +10 -8
  352. package/dist/channels/provider-failure-speech.d.ts +28 -0
  353. package/dist/channels/provider-failure-speech.js +128 -0
  354. package/dist/channels/reconnection-manager.d.ts +2 -0
  355. package/dist/channels/reconnection-manager.js +7 -2
  356. package/dist/channels/resolve-channel-secret.d.ts +43 -0
  357. package/dist/channels/resolve-channel-secret.js +82 -0
  358. package/dist/channels/slack/block-builder.d.ts +12 -0
  359. package/dist/channels/slack/block-builder.js +70 -2
  360. package/dist/channels/slack/client.js +62 -15
  361. package/dist/channels/slack/types.d.ts +20 -1
  362. package/dist/channels/telegram/client.d.ts +36 -3
  363. package/dist/channels/telegram/client.js +438 -84
  364. package/dist/channels/telegram/types.d.ts +2 -0
  365. package/dist/channels/webhook-server.js +8 -1
  366. package/dist/channels/whatsapp/index.js +2 -1
  367. package/dist/checkpoints/ghost-snapshot.js +15 -9
  368. package/dist/checkpoints/persistent-checkpoint-manager.js +15 -8
  369. package/dist/cli/command-routing.d.ts +22 -0
  370. package/dist/cli/command-routing.js +54 -0
  371. package/dist/cli/first-run.d.ts +17 -0
  372. package/dist/cli/first-run.js +40 -0
  373. package/dist/cli/headless-options.d.ts +22 -0
  374. package/dist/cli/headless-options.js +112 -0
  375. package/dist/cli/headless-prompt-progress.d.ts +22 -0
  376. package/dist/cli/headless-prompt-progress.js +35 -0
  377. package/dist/cli/headless.js +2 -2
  378. package/dist/cli/listen-port.d.ts +8 -0
  379. package/dist/cli/listen-port.js +20 -0
  380. package/dist/cli/permission-mode-option.d.ts +14 -0
  381. package/dist/cli/permission-mode-option.js +64 -0
  382. package/dist/cli/requested-profile.d.ts +15 -0
  383. package/dist/cli/requested-profile.js +27 -0
  384. package/dist/cli/unknown-option-hint.d.ts +16 -0
  385. package/dist/cli/unknown-option-hint.js +116 -0
  386. package/dist/cli/voice-command.d.ts +32 -0
  387. package/dist/cli/voice-command.js +96 -0
  388. package/dist/codebuddy/abort-signal.d.ts +7 -0
  389. package/dist/codebuddy/abort-signal.js +31 -0
  390. package/dist/codebuddy/client.d.ts +68 -0
  391. package/dist/codebuddy/client.js +460 -11
  392. package/dist/codebuddy/fleet-tool-defs.js +5 -0
  393. package/dist/codebuddy/llm-retry.d.ts +24 -0
  394. package/dist/codebuddy/llm-retry.js +124 -0
  395. package/dist/codebuddy/provider-error-classifier.d.ts +86 -0
  396. package/dist/codebuddy/provider-error-classifier.js +410 -0
  397. package/dist/codebuddy/provider-failover-error.d.ts +16 -0
  398. package/dist/codebuddy/provider-failover-error.js +50 -0
  399. package/dist/codebuddy/provider-failover-kind.d.ts +15 -0
  400. package/dist/codebuddy/provider-failover-kind.js +172 -0
  401. package/dist/codebuddy/provider-handoff.d.ts +35 -0
  402. package/dist/codebuddy/provider-handoff.js +294 -0
  403. package/dist/codebuddy/providers/ollama-native-transport.d.ts +130 -0
  404. package/dist/codebuddy/providers/ollama-native-transport.js +387 -0
  405. package/dist/codebuddy/providers/provider-agy-cli.d.ts +29 -0
  406. package/dist/codebuddy/providers/provider-agy-cli.js +264 -0
  407. package/dist/codebuddy/providers/provider-chatgpt-responses.d.ts +59 -7
  408. package/dist/codebuddy/providers/provider-chatgpt-responses.js +519 -164
  409. package/dist/codebuddy/providers/provider-gemini-cli.js +95 -13
  410. package/dist/codebuddy/providers/provider-gemini-native.d.ts +2 -0
  411. package/dist/codebuddy/providers/provider-gemini-native.js +199 -86
  412. package/dist/codebuddy/providers/provider-openai-compat.d.ts +82 -0
  413. package/dist/codebuddy/providers/provider-openai-compat.js +469 -45
  414. package/dist/codebuddy/stream-retry.d.ts +21 -8
  415. package/dist/codebuddy/stream-retry.js +44 -40
  416. package/dist/codebuddy/tool-definitions/advanced-tools.d.ts +4 -0
  417. package/dist/codebuddy/tool-definitions/advanced-tools.js +188 -0
  418. package/dist/codebuddy/tool-definitions/agent-tools.d.ts +5 -0
  419. package/dist/codebuddy/tool-definitions/agent-tools.js +195 -7
  420. package/dist/codebuddy/tool-definitions/browser-tools.d.ts +1 -0
  421. package/dist/codebuddy/tool-definitions/browser-tools.js +65 -1
  422. package/dist/codebuddy/tool-definitions/code-exec-tools.d.ts +8 -0
  423. package/dist/codebuddy/tool-definitions/code-exec-tools.js +29 -0
  424. package/dist/codebuddy/tool-definitions/code-explorer-tools.js +4 -0
  425. package/dist/codebuddy/tool-definitions/comfy-recipe-tools.d.ts +3 -0
  426. package/dist/codebuddy/tool-definitions/comfy-recipe-tools.js +37 -0
  427. package/dist/codebuddy/tool-definitions/core-tools.d.ts +2 -0
  428. package/dist/codebuddy/tool-definitions/core-tools.js +58 -2
  429. package/dist/codebuddy/tool-definitions/delegate-agent-tools.d.ts +11 -0
  430. package/dist/codebuddy/tool-definitions/delegate-agent-tools.js +50 -0
  431. package/dist/codebuddy/tool-definitions/design-tools.d.ts +6 -0
  432. package/dist/codebuddy/tool-definitions/design-tools.js +35 -0
  433. package/dist/codebuddy/tool-definitions/exit-plan-mode-tools.d.ts +1 -0
  434. package/dist/codebuddy/tool-definitions/exit-plan-mode-tools.js +23 -1
  435. package/dist/codebuddy/tool-definitions/index.d.ts +16 -7
  436. package/dist/codebuddy/tool-definitions/index.js +27 -8
  437. package/dist/codebuddy/tool-definitions/lsp-tools.d.ts +7 -1
  438. package/dist/codebuddy/tool-definitions/lsp-tools.js +104 -1
  439. package/dist/codebuddy/tool-definitions/meeting-tools.d.ts +4 -0
  440. package/dist/codebuddy/tool-definitions/meeting-tools.js +32 -0
  441. package/dist/codebuddy/tool-definitions/moa-tools.js +7 -2
  442. package/dist/codebuddy/tool-definitions/multimodal-tools.d.ts +14 -0
  443. package/dist/codebuddy/tool-definitions/multimodal-tools.js +615 -3
  444. package/dist/codebuddy/tool-definitions/research-tools.d.ts +20 -0
  445. package/dist/codebuddy/tool-definitions/research-tools.js +98 -0
  446. package/dist/codebuddy/tool-definitions/self-describe-tools.d.ts +4 -0
  447. package/dist/codebuddy/tool-definitions/self-describe-tools.js +28 -0
  448. package/dist/codebuddy/tool-definitions/self-evolution-tools.d.ts +4 -0
  449. package/dist/codebuddy/tool-definitions/self-evolution-tools.js +31 -0
  450. package/dist/codebuddy/tool-definitions/verify-tools.d.ts +14 -0
  451. package/dist/codebuddy/tool-definitions/verify-tools.js +36 -0
  452. package/dist/codebuddy/tool-definitions/web-tools.d.ts +4 -0
  453. package/dist/codebuddy/tool-definitions/web-tools.js +135 -0
  454. package/dist/codebuddy/tool-definitions/workspace-tools.d.ts +4 -0
  455. package/dist/codebuddy/tool-definitions/workspace-tools.js +43 -0
  456. package/dist/codebuddy/tools.d.ts +15 -17
  457. package/dist/codebuddy/tools.js +235 -55
  458. package/dist/cognition/budget-reservations.d.ts +27 -0
  459. package/dist/cognition/budget-reservations.js +70 -0
  460. package/dist/cognition/cognitive-bus-client.d.ts +94 -0
  461. package/dist/cognition/cognitive-bus-client.js +724 -0
  462. package/dist/cognition/cognitive-hub.d.ts +93 -0
  463. package/dist/cognition/cognitive-hub.js +366 -0
  464. package/dist/cognition/cognitive-mesh.d.ts +38 -0
  465. package/dist/cognition/cognitive-mesh.js +263 -0
  466. package/dist/cognition/cognitive-port.d.ts +35 -0
  467. package/dist/cognition/cognitive-port.js +80 -0
  468. package/dist/cognition/cognitive-wire-contract.d.ts +1542 -0
  469. package/dist/cognition/cognitive-wire-contract.js +164 -0
  470. package/dist/cognition/context-renderer.d.ts +52 -0
  471. package/dist/cognition/context-renderer.js +227 -0
  472. package/dist/cognition/global-workspace.d.ts +39 -0
  473. package/dist/cognition/global-workspace.js +181 -0
  474. package/dist/cognition/index.d.ts +9 -0
  475. package/dist/cognition/index.js +10 -0
  476. package/dist/cognition/llm-specialist.d.ts +40 -0
  477. package/dist/cognition/llm-specialist.js +93 -0
  478. package/dist/cognition/sensory-workspace.d.ts +57 -0
  479. package/dist/cognition/sensory-workspace.js +346 -0
  480. package/dist/cognition/types.d.ts +93 -0
  481. package/dist/cognition/types.js +7 -0
  482. package/dist/cognition/voice-specialists.d.ts +21 -0
  483. package/dist/cognition/voice-specialists.js +89 -0
  484. package/dist/cognition/world-model.d.ts +95 -0
  485. package/dist/cognition/world-model.js +228 -0
  486. package/dist/collaboration/ai-colab-manager.js +12 -13
  487. package/dist/collaboration/team-session.js +25 -11
  488. package/dist/commands/apply-permission-mode.d.ts +27 -0
  489. package/dist/commands/apply-permission-mode.js +35 -0
  490. package/dist/commands/assistant.d.ts +3 -0
  491. package/dist/commands/assistant.js +1022 -0
  492. package/dist/commands/campaign.d.ts +6 -0
  493. package/dist/commands/campaign.js +140 -0
  494. package/dist/commands/capsule.d.ts +2 -0
  495. package/dist/commands/capsule.js +104 -0
  496. package/dist/commands/changelog.d.ts +29 -0
  497. package/dist/commands/changelog.js +283 -0
  498. package/dist/commands/cli/acp-command.js +4 -1
  499. package/dist/commands/cli/backup-command.d.ts +9 -0
  500. package/dist/commands/cli/backup-command.js +47 -0
  501. package/dist/commands/cli/evolve-command.d.ts +26 -0
  502. package/dist/commands/cli/evolve-command.js +259 -0
  503. package/dist/commands/cli/fleet-commands.js +105 -0
  504. package/dist/commands/cli/improve-command.d.ts +2 -1
  505. package/dist/commands/cli/improve-command.js +309 -20
  506. package/dist/commands/cli/native-engine-commands.js +405 -28
  507. package/dist/commands/cli/sensory-command.d.ts +8 -0
  508. package/dist/commands/cli/sensory-command.js +27 -0
  509. package/dist/commands/cli/speak-command.js +87 -24
  510. package/dist/commands/cli/tools-commands.js +68 -36
  511. package/dist/commands/cli/utility-commands.js +34 -9
  512. package/dist/commands/client-dispatcher.d.ts +1 -0
  513. package/dist/commands/client-dispatcher.js +40 -21
  514. package/dist/commands/compress.js +3 -0
  515. package/dist/commands/cost.d.ts +33 -0
  516. package/dist/commands/cost.js +342 -0
  517. package/dist/commands/council-scoreboard.d.ts +8 -0
  518. package/dist/commands/council-scoreboard.js +68 -0
  519. package/dist/commands/council.d.ts +16 -24
  520. package/dist/commands/council.js +247 -255
  521. package/dist/commands/curator-cli.d.ts +14 -0
  522. package/dist/commands/curator-cli.js +57 -0
  523. package/dist/commands/delegate.js +82 -25
  524. package/dist/commands/dev/golden-path.d.ts +71 -0
  525. package/dist/commands/dev/golden-path.js +317 -0
  526. package/dist/commands/dev/index.d.ts +3 -0
  527. package/dist/commands/dev/index.js +151 -119
  528. package/dist/commands/dev/issue-pipeline.js +7 -7
  529. package/dist/commands/dev/workflows.d.ts +2 -0
  530. package/dist/commands/dev/workflows.js +39 -6
  531. package/dist/commands/enhanced-command-handler.d.ts +3 -0
  532. package/dist/commands/enhanced-command-handler.js +29 -12
  533. package/dist/commands/exchange.d.ts +2 -0
  534. package/dist/commands/exchange.js +193 -0
  535. package/dist/commands/explain.d.ts +12 -0
  536. package/dist/commands/explain.js +135 -0
  537. package/dist/commands/film.d.ts +18 -0
  538. package/dist/commands/film.js +239 -0
  539. package/dist/commands/flow.js +15 -5
  540. package/dist/commands/forge.d.ts +2 -0
  541. package/dist/commands/forge.js +102 -0
  542. package/dist/commands/goal-cli.d.ts +3 -0
  543. package/dist/commands/goal-cli.js +9 -4
  544. package/dist/commands/gpu-worker.d.ts +14 -0
  545. package/dist/commands/gpu-worker.js +135 -0
  546. package/dist/commands/handlers/agents-handler.d.ts +11 -2
  547. package/dist/commands/handlers/agents-handler.js +79 -13
  548. package/dist/commands/handlers/auth-handlers.js +12 -5
  549. package/dist/commands/handlers/backup-handlers.d.ts +40 -0
  550. package/dist/commands/handlers/backup-handlers.js +784 -57
  551. package/dist/commands/handlers/batch-handlers.d.ts +72 -2
  552. package/dist/commands/handlers/batch-handlers.js +443 -37
  553. package/dist/commands/handlers/branch-handlers.d.ts +1 -0
  554. package/dist/commands/handlers/channel-handlers.d.ts +7 -2
  555. package/dist/commands/handlers/channel-handlers.js +1705 -103
  556. package/dist/commands/handlers/companion-handler.js +130 -9
  557. package/dist/commands/handlers/daily-reset-handler.d.ts +1 -1
  558. package/dist/commands/handlers/daily-reset-handler.js +1 -1
  559. package/dist/commands/handlers/deepthink-handler.d.ts +2 -0
  560. package/dist/commands/handlers/deepthink-handler.js +49 -0
  561. package/dist/commands/handlers/extra-handlers.js +23 -24
  562. package/dist/commands/handlers/fleet-handler.d.ts +3 -4
  563. package/dist/commands/handlers/fleet-handler.js +82 -35
  564. package/dist/commands/handlers/goal-handler.d.ts +13 -0
  565. package/dist/commands/handlers/goal-handler.js +26 -7
  566. package/dist/commands/handlers/grill-me-handler.d.ts +2 -0
  567. package/dist/commands/handlers/grill-me-handler.js +41 -0
  568. package/dist/commands/handlers/heartbeat-handler.d.ts +2 -2
  569. package/dist/commands/handlers/heartbeat-handler.js +2 -2
  570. package/dist/commands/handlers/index.d.ts +3 -2
  571. package/dist/commands/handlers/index.js +4 -2
  572. package/dist/commands/handlers/memory-handlers.js +40 -0
  573. package/dist/commands/handlers/permissions-handlers.js +3 -2
  574. package/dist/commands/handlers/pr-handlers.js +15 -17
  575. package/dist/commands/handlers/security-handlers.d.ts +1 -1
  576. package/dist/commands/handlers/security-handlers.js +3 -3
  577. package/dist/commands/handlers/slash-session-handlers.d.ts +9 -0
  578. package/dist/commands/handlers/slash-session-handlers.js +134 -0
  579. package/dist/commands/handlers/swarm-handler.js +41 -2
  580. package/dist/commands/handlers/team-handlers.d.ts +28 -1
  581. package/dist/commands/handlers/team-handlers.js +243 -2
  582. package/dist/commands/handlers/think-handlers.js +2 -1
  583. package/dist/commands/handlers/vibe-handlers.js +8 -1
  584. package/dist/commands/handlers/worktree-handlers.js +23 -12
  585. package/dist/commands/headless-slash.d.ts +9 -0
  586. package/dist/commands/headless-slash.js +41 -3
  587. package/dist/commands/import.d.ts +34 -0
  588. package/dist/commands/import.js +478 -0
  589. package/dist/commands/index.d.ts +0 -1
  590. package/dist/commands/index.js +0 -1
  591. package/dist/commands/influencer.d.ts +2 -0
  592. package/dist/commands/influencer.js +87 -0
  593. package/dist/commands/intent.d.ts +6 -0
  594. package/dist/commands/intent.js +131 -0
  595. package/dist/commands/intents.d.ts +10 -0
  596. package/dist/commands/intents.js +163 -0
  597. package/dist/commands/lessons.js +91 -0
  598. package/dist/commands/llm-provider-resolution.d.ts +20 -0
  599. package/dist/commands/llm-provider-resolution.js +74 -13
  600. package/dist/commands/login-prerequisites.d.ts +11 -0
  601. package/dist/commands/login-prerequisites.js +23 -0
  602. package/dist/commands/loop-cli.d.ts +31 -0
  603. package/dist/commands/loop-cli.js +189 -0
  604. package/dist/commands/lora.d.ts +6 -0
  605. package/dist/commands/lora.js +445 -0
  606. package/dist/commands/maison-food.d.ts +10 -0
  607. package/dist/commands/maison-food.js +485 -0
  608. package/dist/commands/maison.d.ts +17 -0
  609. package/dist/commands/maison.js +236 -0
  610. package/dist/commands/mcp.d.ts +6 -0
  611. package/dist/commands/mcp.js +236 -7
  612. package/dist/commands/meeting.d.ts +8 -0
  613. package/dist/commands/meeting.js +31 -0
  614. package/dist/commands/pairing.js +7 -8
  615. package/dist/commands/papers/ask.d.ts +47 -0
  616. package/dist/commands/papers/ask.js +105 -0
  617. package/dist/commands/papers/index.d.ts +19 -0
  618. package/dist/commands/papers/index.js +54 -0
  619. package/dist/commands/provider.d.ts +9 -0
  620. package/dist/commands/provider.js +178 -10
  621. package/dist/commands/replay.d.ts +11 -0
  622. package/dist/commands/replay.js +131 -0
  623. package/dist/commands/research/deep.d.ts +66 -0
  624. package/dist/commands/research/deep.js +236 -0
  625. package/dist/commands/research/discover-searxng.d.ts +25 -0
  626. package/dist/commands/research/discover-searxng.js +62 -0
  627. package/dist/commands/research/index.d.ts +24 -2
  628. package/dist/commands/research/index.js +456 -79
  629. package/dist/commands/research/knowledge-ingest.d.ts +170 -0
  630. package/dist/commands/research/knowledge-ingest.js +449 -0
  631. package/dist/commands/research/wire-research-worker.d.ts +9 -0
  632. package/dist/commands/research/wire-research-worker.js +18 -0
  633. package/dist/commands/run-cli/index.d.ts +3 -1
  634. package/dist/commands/run-cli/index.js +53 -2
  635. package/dist/commands/science/deps.d.ts +95 -0
  636. package/dist/commands/science/deps.js +343 -0
  637. package/dist/commands/science/index.d.ts +31 -0
  638. package/dist/commands/science/index.js +285 -0
  639. package/dist/commands/science/loop-option.d.ts +40 -0
  640. package/dist/commands/science/loop-option.js +91 -0
  641. package/dist/commands/science/sandbox-option.d.ts +44 -0
  642. package/dist/commands/science/sandbox-option.js +42 -0
  643. package/dist/commands/scrape.d.ts +18 -0
  644. package/dist/commands/scrape.js +159 -0
  645. package/dist/commands/self.d.ts +9 -0
  646. package/dist/commands/self.js +56 -0
  647. package/dist/commands/shadow.d.ts +3 -0
  648. package/dist/commands/shadow.js +72 -0
  649. package/dist/commands/share.d.ts +13 -0
  650. package/dist/commands/share.js +71 -0
  651. package/dist/commands/shell-prefix.d.ts +4 -22
  652. package/dist/commands/shell-prefix.js +11 -73
  653. package/dist/commands/skills-cli/index.d.ts +2 -0
  654. package/dist/commands/skills-cli/index.js +190 -15
  655. package/dist/commands/slash/builtin-commands.js +41 -21
  656. package/dist/commands/slash-commands.js +4 -1
  657. package/dist/commands/token.d.ts +80 -0
  658. package/dist/commands/token.js +319 -0
  659. package/dist/commands/try.d.ts +72 -0
  660. package/dist/commands/try.js +357 -0
  661. package/dist/commands/update.d.ts +14 -1
  662. package/dist/commands/update.js +97 -15
  663. package/dist/commands/vision-train.d.ts +15 -0
  664. package/dist/commands/vision-train.js +214 -0
  665. package/dist/commands/whoami-status.d.ts +17 -0
  666. package/dist/commands/whoami-status.js +34 -0
  667. package/dist/commands/widgets.d.ts +2 -0
  668. package/dist/commands/widgets.js +179 -0
  669. package/dist/commands/ws.d.ts +7 -0
  670. package/dist/commands/ws.js +100 -0
  671. package/dist/companion/assistant-config.d.ts +79 -0
  672. package/dist/companion/assistant-config.js +1148 -0
  673. package/dist/companion/attached-image-grounding.d.ts +29 -0
  674. package/dist/companion/attached-image-grounding.js +285 -0
  675. package/dist/companion/away-mode.d.ts +80 -0
  676. package/dist/companion/away-mode.js +269 -0
  677. package/dist/companion/camera-share.d.ts +65 -0
  678. package/dist/companion/camera-share.js +321 -0
  679. package/dist/companion/camera.d.ts +8 -0
  680. package/dist/companion/camera.js +57 -31
  681. package/dist/companion/cards.js +7 -10
  682. package/dist/companion/check-in.js +23 -8
  683. package/dist/companion/companion-doctor.d.ts +58 -0
  684. package/dist/companion/companion-doctor.js +194 -0
  685. package/dist/companion/companion-history.d.ts +23 -0
  686. package/dist/companion/companion-history.js +22 -0
  687. package/dist/companion/companion-mode.d.ts +77 -1
  688. package/dist/companion/companion-mode.js +916 -6
  689. package/dist/companion/companion-photo-intake.d.ts +40 -0
  690. package/dist/companion/companion-photo-intake.js +112 -0
  691. package/dist/companion/companion-photo.d.ts +144 -0
  692. package/dist/companion/companion-photo.js +318 -0
  693. package/dist/companion/companion-turn.d.ts +88 -0
  694. package/dist/companion/companion-turn.js +223 -0
  695. package/dist/companion/companion-voice-character.d.ts +62 -0
  696. package/dist/companion/companion-voice-character.js +148 -0
  697. package/dist/companion/competitive-radar.js +14 -13
  698. package/dist/companion/continuity.d.ts +62 -0
  699. package/dist/companion/continuity.js +284 -0
  700. package/dist/companion/conversation-improvement-loop.d.ts +61 -0
  701. package/dist/companion/conversation-improvement-loop.js +317 -0
  702. package/dist/companion/conversation-quality-insights.d.ts +56 -0
  703. package/dist/companion/conversation-quality-insights.js +161 -0
  704. package/dist/companion/cooking-timer-runner.d.ts +20 -0
  705. package/dist/companion/cooking-timer-runner.js +98 -0
  706. package/dist/companion/core-adapter.d.ts +60 -0
  707. package/dist/companion/core-adapter.js +111 -0
  708. package/dist/companion/crisis-safety.d.ts +52 -0
  709. package/dist/companion/crisis-safety.js +150 -0
  710. package/dist/companion/daily-interaction-budget.d.ts +34 -0
  711. package/dist/companion/daily-interaction-budget.js +260 -0
  712. package/dist/companion/dialogue-percepts.d.ts +16 -0
  713. package/dist/companion/dialogue-percepts.js +50 -0
  714. package/dist/companion/event-followups.d.ts +58 -0
  715. package/dist/companion/event-followups.js +213 -0
  716. package/dist/companion/fashion-scene-catalog.d.ts +29 -0
  717. package/dist/companion/fashion-scene-catalog.js +141 -0
  718. package/dist/companion/gateway-inbox.js +25 -13
  719. package/dist/companion/gateway.d.ts +1 -0
  720. package/dist/companion/gateway.js +37 -17
  721. package/dist/companion/home-interaction-policy.d.ts +31 -0
  722. package/dist/companion/home-interaction-policy.js +89 -0
  723. package/dist/companion/household-time.d.ts +9 -0
  724. package/dist/companion/household-time.js +15 -0
  725. package/dist/companion/idle-loop.d.ts +53 -0
  726. package/dist/companion/idle-loop.js +254 -0
  727. package/dist/companion/impulses.js +148 -23
  728. package/dist/companion/inner-life.d.ts +60 -0
  729. package/dist/companion/inner-life.js +112 -0
  730. package/dist/companion/jokes.d.ts +21 -0
  731. package/dist/companion/jokes.js +175 -0
  732. package/dist/companion/lisa-selfie-cache.d.ts +36 -0
  733. package/dist/companion/lisa-selfie-cache.js +123 -0
  734. package/dist/companion/lisa-selfie-ingest.d.ts +36 -0
  735. package/dist/companion/lisa-selfie-ingest.js +205 -0
  736. package/dist/companion/lisa-selfie-refill.d.ts +32 -0
  737. package/dist/companion/lisa-selfie-refill.js +121 -0
  738. package/dist/companion/lisa-selfie-router.d.ts +40 -0
  739. package/dist/companion/lisa-selfie-router.js +156 -0
  740. package/dist/companion/lisa-selfie.d.ts +97 -0
  741. package/dist/companion/lisa-selfie.js +542 -0
  742. package/dist/companion/maison-voice-actions.d.ts +34 -0
  743. package/dist/companion/maison-voice-actions.js +192 -0
  744. package/dist/companion/migration.d.ts +63 -0
  745. package/dist/companion/migration.js +270 -0
  746. package/dist/companion/mission-board.js +7 -10
  747. package/dist/companion/mission-runner.js +2 -3
  748. package/dist/companion/mobile-conversation-log.d.ts +19 -0
  749. package/dist/companion/mobile-conversation-log.js +157 -0
  750. package/dist/companion/mobile-history.d.ts +34 -0
  751. package/dist/companion/mobile-history.js +123 -0
  752. package/dist/companion/mysoulmate-image-prompts.d.ts +26 -0
  753. package/dist/companion/mysoulmate-image-prompts.js +278 -0
  754. package/dist/companion/orchestrator.d.ts +32 -0
  755. package/dist/companion/orchestrator.js +49 -0
  756. package/dist/companion/percepts.d.ts +70 -0
  757. package/dist/companion/percepts.js +251 -18
  758. package/dist/companion/personas/copine.d.ts +8 -0
  759. package/dist/companion/personas/copine.js +195 -0
  760. package/dist/companion/personas/index.d.ts +19 -0
  761. package/dist/companion/personas/index.js +33 -0
  762. package/dist/companion/personas/types.d.ts +34 -0
  763. package/dist/companion/personas/types.js +8 -0
  764. package/dist/companion/photo-memory-fr.d.ts +36 -0
  765. package/dist/companion/photo-memory-fr.js +291 -0
  766. package/dist/companion/prefetch-config.d.ts +38 -0
  767. package/dist/companion/prefetch-config.js +119 -0
  768. package/dist/companion/prefetch-engine.d.ts +87 -0
  769. package/dist/companion/prefetch-engine.js +513 -0
  770. package/dist/companion/presence-loop.d.ts +85 -0
  771. package/dist/companion/presence-loop.js +297 -0
  772. package/dist/companion/privacy.js +3 -2
  773. package/dist/companion/proactive-engine.d.ts +97 -0
  774. package/dist/companion/proactive-engine.js +447 -0
  775. package/dist/companion/recent-said.d.ts +30 -0
  776. package/dist/companion/recent-said.js +98 -0
  777. package/dist/companion/relational-benchmark-scenarios.d.ts +191 -0
  778. package/dist/companion/relational-benchmark-scenarios.js +227 -0
  779. package/dist/companion/relational-context.d.ts +71 -0
  780. package/dist/companion/relational-context.js +302 -0
  781. package/dist/companion/relational-episode-evaluator.d.ts +117 -0
  782. package/dist/companion/relational-episode-evaluator.js +453 -0
  783. package/dist/companion/relationship-evolution.d.ts +2 -0
  784. package/dist/companion/relationship-evolution.js +30 -0
  785. package/dist/companion/relationship-state.d.ts +106 -0
  786. package/dist/companion/relationship-state.js +293 -0
  787. package/dist/companion/reminder-runner.d.ts +33 -0
  788. package/dist/companion/reminder-runner.js +183 -0
  789. package/dist/companion/reminders.d.ts +228 -0
  790. package/dist/companion/reminders.js +906 -0
  791. package/dist/companion/reply-augment.d.ts +87 -0
  792. package/dist/companion/reply-augment.js +464 -0
  793. package/dist/companion/safety-ledger.js +19 -12
  794. package/dist/companion/self-evaluation.js +22 -23
  795. package/dist/companion/shared-photo-memory.d.ts +65 -0
  796. package/dist/companion/shared-photo-memory.js +145 -0
  797. package/dist/companion/shared-photos.d.ts +88 -0
  798. package/dist/companion/shared-photos.js +321 -0
  799. package/dist/companion/signature-locations.d.ts +16 -0
  800. package/dist/companion/signature-locations.js +108 -0
  801. package/dist/companion/skill-curator.d.ts +9 -0
  802. package/dist/companion/skill-curator.js +147 -58
  803. package/dist/companion/untrusted-text.d.ts +22 -0
  804. package/dist/companion/untrusted-text.js +47 -0
  805. package/dist/companion/user-name.d.ts +18 -0
  806. package/dist/companion/user-name.js +22 -0
  807. package/dist/companion/visual-consent.d.ts +40 -0
  808. package/dist/companion/visual-consent.js +98 -0
  809. package/dist/companion/visual-grounding.d.ts +83 -0
  810. package/dist/companion/visual-grounding.js +474 -0
  811. package/dist/companion/voice-callbacks.d.ts +9 -0
  812. package/dist/companion/voice-callbacks.js +84 -0
  813. package/dist/companion/voice-guidance.d.ts +23 -0
  814. package/dist/companion/voice-guidance.js +85 -0
  815. package/dist/companion/voice-improvement-loop.d.ts +53 -0
  816. package/dist/companion/voice-improvement-loop.js +279 -0
  817. package/dist/companion/voice-incident-repair.d.ts +41 -0
  818. package/dist/companion/voice-incident-repair.js +214 -0
  819. package/dist/config/constants.d.ts +41 -0
  820. package/dist/config/constants.js +14 -0
  821. package/dist/config/env-schema.d.ts +2 -0
  822. package/dist/config/env-schema.js +714 -5
  823. package/dist/config/feature-flags.js +8 -12
  824. package/dist/config/feature-surface.d.ts +12 -0
  825. package/dist/config/feature-surface.js +86 -0
  826. package/dist/config/headless-local-prompt.d.ts +9 -0
  827. package/dist/config/headless-local-prompt.js +39 -0
  828. package/dist/config/local-runtime-context.d.ts +41 -0
  829. package/dist/config/local-runtime-context.js +430 -0
  830. package/dist/config/model-registry.js +4 -0
  831. package/dist/config/model-strengths.d.ts +14 -0
  832. package/dist/config/model-strengths.js +15 -0
  833. package/dist/config/model-tools.d.ts +56 -0
  834. package/dist/config/model-tools.js +819 -21
  835. package/dist/config/secret-ref.d.ts +22 -3
  836. package/dist/config/secret-ref.js +103 -41
  837. package/dist/config/toml-config.d.ts +20 -4
  838. package/dist/config/toml-config.js +40 -2
  839. package/dist/context/auto-compact-threshold.d.ts +1 -1
  840. package/dist/context/auto-compact-threshold.js +1 -1
  841. package/dist/context/codebase-map.js +9 -4
  842. package/dist/context/codebase-rag/codebase-rag.js +7 -6
  843. package/dist/context/codebase-rag/hnsw-store.js +9 -4
  844. package/dist/context/codebase-rag/vector-store.js +4 -4
  845. package/dist/context/compaction/parallel-summarizer.js +1 -0
  846. package/dist/context/compression.js +25 -29
  847. package/dist/context/context-manager-v2.d.ts +95 -7
  848. package/dist/context/context-manager-v2.js +442 -89
  849. package/dist/context/context-manager-v3.d.ts +4 -0
  850. package/dist/context/context-manager-v3.js +68 -9
  851. package/dist/context/cross-encoder-reranker.js +8 -3
  852. package/dist/context/default-context-engine.js +1 -1
  853. package/dist/context/enhanced-compression.d.ts +26 -2
  854. package/dist/context/enhanced-compression.js +81 -30
  855. package/dist/context/file-mentions.d.ts +46 -0
  856. package/dist/context/file-mentions.js +245 -0
  857. package/dist/context/importance-scorer.js +4 -3
  858. package/dist/context/jit-context.d.ts +7 -0
  859. package/dist/context/jit-context.js +22 -4
  860. package/dist/context/lm-resizer-compressor.d.ts +102 -0
  861. package/dist/context/lm-resizer-compressor.js +593 -0
  862. package/dist/context/precompaction-flush.js +1 -1
  863. package/dist/context/restorable-compression.d.ts +59 -14
  864. package/dist/context/restorable-compression.js +310 -60
  865. package/dist/context/segment-archive.d.ts +36 -0
  866. package/dist/context/segment-archive.js +220 -0
  867. package/dist/context/smart-compaction.d.ts +7 -0
  868. package/dist/context/smart-compaction.js +84 -15
  869. package/dist/context/token-counter.d.ts +6 -0
  870. package/dist/context/token-counter.js +41 -0
  871. package/dist/context/token-juice.d.ts +72 -0
  872. package/dist/context/token-juice.js +220 -0
  873. package/dist/context/tool-observation-optimizer.d.ts +90 -0
  874. package/dist/context/tool-observation-optimizer.js +231 -0
  875. package/dist/context/tool-pair-preserver.d.ts +1 -1
  876. package/dist/context/tool-pair-preserver.js +1 -1
  877. package/dist/context/transcript-repair.d.ts +16 -3
  878. package/dist/context/transcript-repair.js +72 -35
  879. package/dist/context/types.d.ts +2 -0
  880. package/dist/conversation/argument-obligations.d.ts +65 -0
  881. package/dist/conversation/argument-obligations.js +157 -0
  882. package/dist/conversation/companion-model-routing.d.ts +121 -0
  883. package/dist/conversation/companion-model-routing.js +810 -0
  884. package/dist/conversation/conversation-benchmark.d.ts +143 -0
  885. package/dist/conversation/conversation-benchmark.js +766 -0
  886. package/dist/conversation/conversation-blind-comparison.d.ts +135 -0
  887. package/dist/conversation/conversation-blind-comparison.js +451 -0
  888. package/dist/conversation/conversation-evaluator.d.ts +56 -0
  889. package/dist/conversation/conversation-evaluator.js +335 -0
  890. package/dist/conversation/conversation-orchestrator.d.ts +32 -0
  891. package/dist/conversation/conversation-orchestrator.js +59 -0
  892. package/dist/conversation/conversation-pilot-corpus.d.ts +33 -0
  893. package/dist/conversation/conversation-pilot-corpus.js +313 -0
  894. package/dist/conversation/conversation-quality.d.ts +31 -0
  895. package/dist/conversation/conversation-quality.js +280 -0
  896. package/dist/conversation/conversation-state.d.ts +23 -0
  897. package/dist/conversation/conversation-state.js +117 -0
  898. package/dist/conversation/cross-channel-bridge.d.ts +127 -0
  899. package/dist/conversation/cross-channel-bridge.js +785 -0
  900. package/dist/conversation/deliberation-thread.d.ts +18 -0
  901. package/dist/conversation/deliberation-thread.js +303 -0
  902. package/dist/conversation/dialogue-act.d.ts +11 -0
  903. package/dist/conversation/dialogue-act.js +132 -0
  904. package/dist/conversation/discourse-planner.d.ts +3 -0
  905. package/dist/conversation/discourse-planner.js +141 -0
  906. package/dist/conversation/fresh-context.d.ts +54 -0
  907. package/dist/conversation/fresh-context.js +258 -0
  908. package/dist/conversation/prefetched-turn-context.d.ts +45 -0
  909. package/dist/conversation/prefetched-turn-context.js +209 -0
  910. package/dist/conversation/relationship-safety.d.ts +37 -0
  911. package/dist/conversation/relationship-safety.js +407 -0
  912. package/dist/conversation/semantic-response-gate.d.ts +262 -0
  913. package/dist/conversation/semantic-response-gate.js +656 -0
  914. package/dist/conversation/semantic-response-runtime.d.ts +79 -0
  915. package/dist/conversation/semantic-response-runtime.js +419 -0
  916. package/dist/conversation/shared-relationship-state.d.ts +60 -0
  917. package/dist/conversation/shared-relationship-state.js +262 -0
  918. package/dist/conversation/types.d.ts +77 -0
  919. package/dist/conversation/types.js +3 -0
  920. package/dist/conversation/voice-continuity.d.ts +13 -0
  921. package/dist/conversation/voice-continuity.js +48 -0
  922. package/dist/council/conductor.d.ts +26 -0
  923. package/dist/council/conductor.js +292 -0
  924. package/dist/council/council-engine.d.ts +29 -0
  925. package/dist/council/council-engine.js +458 -0
  926. package/dist/council/deliberation-health.d.ts +58 -0
  927. package/dist/council/deliberation-health.js +108 -0
  928. package/dist/council/judge.d.ts +69 -0
  929. package/dist/council/judge.js +183 -0
  930. package/dist/council/peers.d.ts +19 -0
  931. package/dist/council/peers.js +47 -0
  932. package/dist/council/signals.d.ts +26 -0
  933. package/dist/council/signals.js +156 -0
  934. package/dist/council/task-types.d.ts +16 -0
  935. package/dist/council/task-types.js +58 -0
  936. package/dist/council/triage.d.ts +48 -0
  937. package/dist/council/triage.js +228 -0
  938. package/dist/council/types.d.ts +292 -0
  939. package/dist/council/types.js +20 -0
  940. package/dist/council/with-timeout.d.ts +10 -0
  941. package/dist/council/with-timeout.js +29 -0
  942. package/dist/curator/curator.d.ts +79 -0
  943. package/dist/curator/curator.js +317 -0
  944. package/dist/daemon/agent-task-executor.js +51 -0
  945. package/dist/daemon/autonomous-daemon.d.ts +2 -0
  946. package/dist/daemon/autonomous-daemon.js +4 -1
  947. package/dist/daemon/autonomous-loop.d.ts +9 -0
  948. package/dist/daemon/autonomous-loop.js +57 -1
  949. package/dist/daemon/autonomy-bench-candidates.d.ts +33 -0
  950. package/dist/daemon/autonomy-bench-candidates.js +68 -0
  951. package/dist/daemon/autonomy-briefing.d.ts +112 -0
  952. package/dist/daemon/autonomy-briefing.js +359 -0
  953. package/dist/daemon/autonomy-run-journal.d.ts +20 -0
  954. package/dist/daemon/autonomy-run-journal.js +41 -0
  955. package/dist/daemon/daily-reset.d.ts +2 -2
  956. package/dist/daemon/daily-reset.js +16 -15
  957. package/dist/daemon/ollama-task-executor.js +9 -1
  958. package/dist/database/database-manager.d.ts +1 -1
  959. package/dist/database/database-manager.js +6 -4
  960. package/dist/database/optional-sqlite.d.ts +20 -0
  961. package/dist/database/optional-sqlite.js +101 -0
  962. package/dist/design/design-system-registry.d.ts +21 -0
  963. package/dist/design/design-system-registry.js +106 -0
  964. package/dist/desktop/codebuddy-engine-adapter.d.ts +34 -0
  965. package/dist/desktop/codebuddy-engine-adapter.js +306 -21
  966. package/dist/desktop/electron-launch-args.d.ts +7 -0
  967. package/dist/desktop/electron-launch-args.js +13 -0
  968. package/dist/desktop/engine-adapter.d.ts +6 -0
  969. package/dist/desktop/launcher.js +2 -1
  970. package/dist/desktop/permission-bridge.d.ts +12 -1
  971. package/dist/desktop/permission-bridge.js +12 -5
  972. package/dist/desktop-automation/omniparser-runner.d.ts +1 -0
  973. package/dist/desktop-automation/omniparser-runner.js +12 -1
  974. package/dist/desktop-automation/smart-snapshot.js +7 -0
  975. package/dist/desktop-automation/windows-native-provider.js +1 -1
  976. package/dist/doctor/assistant-runtime.d.ts +90 -0
  977. package/dist/doctor/assistant-runtime.js +472 -0
  978. package/dist/doctor/env-sanity.d.ts +17 -0
  979. package/dist/doctor/env-sanity.js +74 -0
  980. package/dist/doctor/index.d.ts +37 -0
  981. package/dist/doctor/index.js +389 -37
  982. package/dist/doctor/llm-key-check.d.ts +17 -0
  983. package/dist/doctor/llm-key-check.js +100 -0
  984. package/dist/doctor/ollama-model-selection.d.ts +16 -0
  985. package/dist/doctor/ollama-model-selection.js +55 -0
  986. package/dist/embeddings/embedding-provider.d.ts +1 -0
  987. package/dist/embeddings/embedding-provider.js +21 -9
  988. package/dist/errors/crash-recovery.js +6 -4
  989. package/dist/events/index.d.ts +1 -1
  990. package/dist/events/types.d.ts +44 -0
  991. package/dist/export/repo-explanation.d.ts +10 -0
  992. package/dist/export/repo-explanation.js +334 -0
  993. package/dist/export/session-share.d.ts +34 -0
  994. package/dist/export/session-share.js +687 -0
  995. package/dist/fleet/autonomous-tick-broadcaster.d.ts +1 -1
  996. package/dist/fleet/capability-registry.d.ts +9 -0
  997. package/dist/fleet/capability-registry.js +268 -56
  998. package/dist/fleet/colab-store.d.ts +3 -4
  999. package/dist/fleet/colab-store.js +6 -26
  1000. package/dist/fleet/compatible-model.d.ts +39 -0
  1001. package/dist/fleet/compatible-model.js +148 -0
  1002. package/dist/fleet/consolidation/collecte.d.ts +31 -0
  1003. package/dist/fleet/consolidation/collecte.js +86 -0
  1004. package/dist/fleet/consolidation/digest-texte.d.ts +11 -0
  1005. package/dist/fleet/consolidation/digest-texte.js +52 -0
  1006. package/dist/fleet/consolidation/thalamus.d.ts +35 -0
  1007. package/dist/fleet/consolidation/thalamus.js +151 -0
  1008. package/dist/fleet/consolidation/types.d.ts +66 -0
  1009. package/dist/fleet/consolidation/types.js +22 -0
  1010. package/dist/fleet/cost-tracker.d.ts +11 -0
  1011. package/dist/fleet/cost-tracker.js +64 -17
  1012. package/dist/fleet/fleet-cost-cap.d.ts +36 -0
  1013. package/dist/fleet/fleet-cost-cap.js +175 -0
  1014. package/dist/fleet/fleet-http-surface.d.ts +24 -0
  1015. package/dist/fleet/fleet-http-surface.js +72 -0
  1016. package/dist/fleet/fleet-listener.d.ts +1 -1
  1017. package/dist/fleet/fleet-listener.js +4 -0
  1018. package/dist/fleet/model-capability-heuristics.d.ts +31 -0
  1019. package/dist/fleet/model-capability-heuristics.js +49 -0
  1020. package/dist/fleet/model-inventory.d.ts +46 -0
  1021. package/dist/fleet/model-inventory.js +242 -0
  1022. package/dist/fleet/model-scoreboard.d.ts +118 -13
  1023. package/dist/fleet/model-scoreboard.js +339 -27
  1024. package/dist/fleet/model-selector.d.ts +83 -0
  1025. package/dist/fleet/model-selector.js +218 -0
  1026. package/dist/fleet/peer-chat-bridge.d.ts +9 -2
  1027. package/dist/fleet/peer-chat-bridge.js +133 -19
  1028. package/dist/fleet/peer-chat-client-factory.d.ts +28 -2
  1029. package/dist/fleet/peer-chat-client-factory.js +195 -22
  1030. package/dist/fleet/peer-ckg-bridge.d.ts +67 -0
  1031. package/dist/fleet/peer-ckg-bridge.js +467 -0
  1032. package/dist/fleet/peer-mission-exchange-bridge.d.ts +8 -0
  1033. package/dist/fleet/peer-mission-exchange-bridge.js +127 -0
  1034. package/dist/fleet/peer-session-bridge.d.ts +7 -1
  1035. package/dist/fleet/peer-session-bridge.js +98 -17
  1036. package/dist/fleet/peer-session-store.d.ts +2 -0
  1037. package/dist/fleet/peer-session-store.js +6 -5
  1038. package/dist/fleet/peer-text-sanitizer.d.ts +59 -0
  1039. package/dist/fleet/peer-text-sanitizer.js +99 -0
  1040. package/dist/fleet/peer-tool-bridge.js +38 -10
  1041. package/dist/fleet/privacy-lint.js +80 -8
  1042. package/dist/fleet/saga-store.d.ts +25 -1
  1043. package/dist/fleet/saga-store.js +34 -6
  1044. package/dist/fleet/task-router.d.ts +17 -1
  1045. package/dist/fleet/task-router.js +65 -20
  1046. package/dist/fleet/types.d.ts +9 -5
  1047. package/dist/gateway/device-pairing.js +5 -11
  1048. package/dist/gateway/ws-transport.d.ts +1 -5
  1049. package/dist/gateway/ws-transport.js +2 -22
  1050. package/dist/git/changelog.d.ts +36 -0
  1051. package/dist/git/changelog.js +109 -0
  1052. package/dist/git/worktree-sessions.js +1 -1
  1053. package/dist/goals/counterfactual-forge.d.ts +70 -0
  1054. package/dist/goals/counterfactual-forge.js +184 -0
  1055. package/dist/goals/criterion-progress.d.ts +24 -0
  1056. package/dist/goals/criterion-progress.js +59 -0
  1057. package/dist/goals/evidence-artifact.d.ts +18 -0
  1058. package/dist/goals/evidence-artifact.js +76 -0
  1059. package/dist/goals/goal-decomposer.d.ts +15 -0
  1060. package/dist/goals/goal-decomposer.js +89 -4
  1061. package/dist/goals/goal-loop.d.ts +29 -0
  1062. package/dist/goals/goal-loop.js +92 -6
  1063. package/dist/goals/goal-manager.d.ts +1 -0
  1064. package/dist/goals/goal-manager.js +4 -1
  1065. package/dist/goals/goal-state.d.ts +10 -0
  1066. package/dist/goals/goal-state.js +21 -1
  1067. package/dist/goals/goal-store.js +4 -6
  1068. package/dist/goals/index.d.ts +11 -0
  1069. package/dist/goals/index.js +11 -0
  1070. package/dist/goals/intent-graph.d.ts +40 -0
  1071. package/dist/goals/intent-graph.js +133 -0
  1072. package/dist/goals/mission-constitution.d.ts +59 -0
  1073. package/dist/goals/mission-constitution.js +132 -0
  1074. package/dist/goals/mission-exchange.d.ts +86 -0
  1075. package/dist/goals/mission-exchange.js +216 -0
  1076. package/dist/goals/outcome-capsule.d.ts +80 -0
  1077. package/dist/goals/outcome-capsule.js +186 -0
  1078. package/dist/goals/proof-ledger.d.ts +79 -0
  1079. package/dist/goals/proof-ledger.js +181 -0
  1080. package/dist/goals/proven-outcome-lessons.d.ts +11 -0
  1081. package/dist/goals/proven-outcome-lessons.js +30 -0
  1082. package/dist/goals/proven-outcome-memory.d.ts +55 -0
  1083. package/dist/goals/proven-outcome-memory.js +125 -0
  1084. package/dist/goals/shadow-twin.d.ts +57 -0
  1085. package/dist/goals/shadow-twin.js +110 -0
  1086. package/dist/gpu-worker/gpu-media-worker-server.d.ts +49 -0
  1087. package/dist/gpu-worker/gpu-media-worker-server.js +637 -0
  1088. package/dist/harness/contract.d.ts +84 -84
  1089. package/dist/hooks/advanced-hooks.js +6 -4
  1090. package/dist/hooks/env-persistence.js +5 -6
  1091. package/dist/hooks/hook-manager.js +8 -7
  1092. package/dist/hooks/hook-system.js +6 -4
  1093. package/dist/hooks/lifecycle-hooks.js +6 -3
  1094. package/dist/hooks/moltbot/moltbot-hooks-manager.js +8 -3
  1095. package/dist/hooks/moltbot/session-persistence-manager.js +15 -7
  1096. package/dist/hooks/moltbot/setup-utilities.js +6 -4
  1097. package/dist/hooks/smart-hooks.js +6 -4
  1098. package/dist/hooks/use-input-handler.js +9 -63
  1099. package/dist/hooks/user-hooks.d.ts +10 -1
  1100. package/dist/hooks/user-hooks.js +77 -1
  1101. package/dist/identity/companion-identity.d.ts +4 -1
  1102. package/dist/identity/companion-identity.js +134 -4
  1103. package/dist/identity/identity-manager.d.ts +1 -1
  1104. package/dist/identity/identity-manager.js +7 -6
  1105. package/dist/identity/lisa-introspection.d.ts +36 -0
  1106. package/dist/identity/lisa-introspection.js +411 -0
  1107. package/dist/identity/operational-self-model.d.ts +143 -0
  1108. package/dist/identity/operational-self-model.js +974 -0
  1109. package/dist/index.d.ts +3 -1
  1110. package/dist/index.js +987 -223
  1111. package/dist/input/context-mentions.d.ts +7 -1
  1112. package/dist/input/context-mentions.js +18 -20
  1113. package/dist/input/text-to-speech.d.ts +3 -0
  1114. package/dist/input/text-to-speech.js +70 -27
  1115. package/dist/input/voice-control.d.ts +1 -0
  1116. package/dist/input/voice-control.js +24 -18
  1117. package/dist/input/voice-input-enhanced.d.ts +1 -0
  1118. package/dist/input/voice-input-enhanced.js +31 -16
  1119. package/dist/integrations/ci-autofix-pipeline.js +15 -20
  1120. package/dist/integrations/ide/server.js +3 -2
  1121. package/dist/integrations/json-rpc/server.js +4 -2
  1122. package/dist/integrations/mcp/mcp-server.js +4 -2
  1123. package/dist/integrations/opentelemetry-integration.js +6 -4
  1124. package/dist/integrations/pubcommander-bridge.d.ts +5 -0
  1125. package/dist/integrations/pubcommander-bridge.js +61 -0
  1126. package/dist/integrations/sentry-integration.js +9 -3
  1127. package/dist/intelligence/semantic-search.js +9 -12
  1128. package/dist/intelligence/user-preferences.js +8 -11
  1129. package/dist/intents/intent-checker.d.ts +34 -0
  1130. package/dist/intents/intent-checker.js +175 -0
  1131. package/dist/intents/intent-generator.d.ts +12 -0
  1132. package/dist/intents/intent-generator.js +86 -0
  1133. package/dist/intents/intent-store.d.ts +62 -0
  1134. package/dist/intents/intent-store.js +263 -0
  1135. package/dist/interpreter/computer/skills.js +3 -2
  1136. package/dist/interpreter/interpreter-service.js +18 -9
  1137. package/dist/kanban/kanban-board-registry.js +6 -4
  1138. package/dist/kanban/kanban-store.js +5 -7
  1139. package/dist/knowledge/code-graph-persistence.js +8 -16
  1140. package/dist/knowledge/graph-drift.js +14 -11
  1141. package/dist/knowledge/knowledge-manager.js +2 -1
  1142. package/dist/knowledge/scanners/index.d.ts +3 -0
  1143. package/dist/knowledge/scanners/index.js +57 -29
  1144. package/dist/knowledge/workspace-indexer.js +22 -15
  1145. package/dist/life-rhythm/cooking-timer-store.d.ts +50 -0
  1146. package/dist/life-rhythm/cooking-timer-store.js +240 -0
  1147. package/dist/life-rhythm/day-context.d.ts +30 -0
  1148. package/dist/life-rhythm/day-context.js +198 -0
  1149. package/dist/life-rhythm/etalab-holiday-provider.d.ts +40 -0
  1150. package/dist/life-rhythm/etalab-holiday-provider.js +318 -0
  1151. package/dist/life-rhythm/home-mode-store.d.ts +32 -0
  1152. package/dist/life-rhythm/home-mode-store.js +184 -0
  1153. package/dist/life-rhythm/index.d.ts +6 -0
  1154. package/dist/life-rhythm/index.js +7 -0
  1155. package/dist/life-rhythm/types.d.ts +88 -0
  1156. package/dist/life-rhythm/types.js +33 -0
  1157. package/dist/life-rhythm/zoned-minute.d.ts +24 -0
  1158. package/dist/life-rhythm/zoned-minute.js +113 -0
  1159. package/dist/location/index.d.ts +2 -12
  1160. package/dist/location/index.js +129 -56
  1161. package/dist/logging/interaction-logger.js +29 -46
  1162. package/dist/lora/dataset-v3-plan.d.ts +27 -0
  1163. package/dist/lora/dataset-v3-plan.js +121 -0
  1164. package/dist/lora/dataset.d.ts +26 -0
  1165. package/dist/lora/dataset.js +165 -0
  1166. package/dist/lora/fal-krea-trainer.d.ts +54 -0
  1167. package/dist/lora/fal-krea-trainer.js +197 -0
  1168. package/dist/lora/generate-training-set.d.ts +61 -0
  1169. package/dist/lora/generate-training-set.js +190 -0
  1170. package/dist/lora/identity-dataset-gate.d.ts +104 -0
  1171. package/dist/lora/identity-dataset-gate.js +204 -0
  1172. package/dist/lora/identity-dataset-promotion.d.ts +32 -0
  1173. package/dist/lora/identity-dataset-promotion.js +269 -0
  1174. package/dist/lora/index.d.ts +11 -0
  1175. package/dist/lora/index.js +12 -0
  1176. package/dist/lora/install-comfy.d.ts +14 -0
  1177. package/dist/lora/install-comfy.js +63 -0
  1178. package/dist/lora/lisa-avatar-bible.d.ts +85 -0
  1179. package/dist/lora/lisa-avatar-bible.js +275 -0
  1180. package/dist/lora/local-plan.d.ts +10 -0
  1181. package/dist/lora/local-plan.js +205 -0
  1182. package/dist/lora/pack-dataset.d.ts +7 -0
  1183. package/dist/lora/pack-dataset.js +39 -0
  1184. package/dist/lora/quality-gate.d.ts +31 -0
  1185. package/dist/lora/quality-gate.js +90 -0
  1186. package/dist/lora/types.d.ts +66 -0
  1187. package/dist/lora/types.js +5 -0
  1188. package/dist/lsp/lsp-client.d.ts +12 -0
  1189. package/dist/lsp/lsp-client.js +45 -9
  1190. package/dist/lsp/server.js +1 -1
  1191. package/dist/mcp/approval-elicitation.d.ts +1 -0
  1192. package/dist/mcp/approval-elicitation.js +2 -0
  1193. package/dist/mcp/client.d.ts +15 -1
  1194. package/dist/mcp/client.js +110 -24
  1195. package/dist/mcp/config.d.ts +12 -1
  1196. package/dist/mcp/config.js +55 -12
  1197. package/dist/mcp/index.d.ts +1 -1
  1198. package/dist/mcp/mcp-agent-tools.d.ts +1 -1
  1199. package/dist/mcp/mcp-agent-tools.js +76 -73
  1200. package/dist/mcp/mcp-ckg-tools.d.ts +31 -0
  1201. package/dist/mcp/mcp-ckg-tools.js +121 -0
  1202. package/dist/mcp/mcp-client.js +8 -5
  1203. package/dist/mcp/mcp-desktop-tools.d.ts +1 -1
  1204. package/dist/mcp/mcp-desktop-tools.js +105 -99
  1205. package/dist/mcp/mcp-memory-tools.d.ts +1 -1
  1206. package/dist/mcp/mcp-memory-tools.js +63 -61
  1207. package/dist/mcp/mcp-oauth.js +5 -2
  1208. package/dist/mcp/mcp-server.d.ts +48 -79
  1209. package/dist/mcp/mcp-server.js +445 -478
  1210. package/dist/mcp/mcp-session-tools.d.ts +1 -1
  1211. package/dist/mcp/mcp-session-tools.js +95 -92
  1212. package/dist/mcp/profiles.d.ts +18 -0
  1213. package/dist/mcp/profiles.js +65 -0
  1214. package/dist/mcp/prompt-footprint.d.ts +21 -0
  1215. package/dist/mcp/prompt-footprint.js +39 -0
  1216. package/dist/meals/allergens.d.ts +19 -0
  1217. package/dist/meals/allergens.js +122 -0
  1218. package/dist/meals/compatibility.d.ts +6 -0
  1219. package/dist/meals/compatibility.js +109 -0
  1220. package/dist/meals/food-inventory-store.d.ts +51 -0
  1221. package/dist/meals/food-inventory-store.js +257 -0
  1222. package/dist/meals/index.d.ts +10 -0
  1223. package/dist/meals/index.js +11 -0
  1224. package/dist/meals/meal-engine.d.ts +7 -0
  1225. package/dist/meals/meal-engine.js +206 -0
  1226. package/dist/meals/meal-plan-store.d.ts +73 -0
  1227. package/dist/meals/meal-plan-store.js +271 -0
  1228. package/dist/meals/private-json-store.d.ts +9 -0
  1229. package/dist/meals/private-json-store.js +92 -0
  1230. package/dist/meals/profile-store.d.ts +49 -0
  1231. package/dist/meals/profile-store.js +296 -0
  1232. package/dist/meals/profile-validator.d.ts +7 -0
  1233. package/dist/meals/profile-validator.js +124 -0
  1234. package/dist/meals/recipe-normalizer.d.ts +7 -0
  1235. package/dist/meals/recipe-normalizer.js +162 -0
  1236. package/dist/meals/store-validation.d.ts +21 -0
  1237. package/dist/meals/store-validation.js +101 -0
  1238. package/dist/meals/types.d.ts +170 -0
  1239. package/dist/meals/types.js +12 -0
  1240. package/dist/media/comfy-health-supervisor.d.ts +142 -0
  1241. package/dist/media/comfy-health-supervisor.js +608 -0
  1242. package/dist/media/comfyui-recipe-contract.d.ts +696 -0
  1243. package/dist/media/comfyui-recipe-contract.js +580 -0
  1244. package/dist/media/comfyui-recipe-engine.d.ts +3 -0
  1245. package/dist/media/comfyui-recipe-engine.js +4 -0
  1246. package/dist/media/comfyui-recipe-registry.d.ts +35 -0
  1247. package/dist/media/comfyui-recipe-registry.js +385 -0
  1248. package/dist/media/comfyui-recipe-runtime.d.ts +135 -0
  1249. package/dist/media/comfyui-recipe-runtime.js +942 -0
  1250. package/dist/media/content-tier.d.ts +25 -0
  1251. package/dist/media/content-tier.js +29 -0
  1252. package/dist/meeting/analyzer.d.ts +24 -0
  1253. package/dist/meeting/analyzer.js +402 -0
  1254. package/dist/meeting/index.d.ts +13 -0
  1255. package/dist/meeting/index.js +48 -0
  1256. package/dist/meeting/markdown.d.ts +3 -0
  1257. package/dist/meeting/markdown.js +51 -0
  1258. package/dist/meeting/output.d.ts +13 -0
  1259. package/dist/meeting/output.js +155 -0
  1260. package/dist/meeting/transcript.d.ts +25 -0
  1261. package/dist/meeting/transcript.js +292 -0
  1262. package/dist/meeting/types.d.ts +112 -0
  1263. package/dist/meeting/types.js +9 -0
  1264. package/dist/memory/adapters/network-memory-adapters.d.ts +19 -4
  1265. package/dist/memory/adapters/network-memory-adapters.js +4 -4
  1266. package/dist/memory/auto-memory.js +5 -2
  1267. package/dist/memory/background-extractor.d.ts +43 -0
  1268. package/dist/memory/background-extractor.js +368 -0
  1269. package/dist/memory/buddy-memory-client.d.ts +40 -0
  1270. package/dist/memory/buddy-memory-client.js +198 -0
  1271. package/dist/memory/ckg-engine-policy.d.ts +19 -0
  1272. package/dist/memory/ckg-engine-policy.js +45 -0
  1273. package/dist/memory/ckg-fact-reconciliation.d.ts +81 -0
  1274. package/dist/memory/ckg-fact-reconciliation.js +155 -0
  1275. package/dist/memory/ckg-redaction.d.ts +2 -0
  1276. package/dist/memory/ckg-redaction.js +25 -0
  1277. package/dist/memory/coding-style-analyzer.js +2 -2
  1278. package/dist/memory/collective-knowledge-graph.d.ts +380 -0
  1279. package/dist/memory/collective-knowledge-graph.js +1228 -0
  1280. package/dist/memory/enhanced-memory.d.ts +29 -0
  1281. package/dist/memory/enhanced-memory.js +153 -63
  1282. package/dist/memory/facts-memory.d.ts +9 -4
  1283. package/dist/memory/facts-memory.js +21 -4
  1284. package/dist/memory/hybrid-mmr.d.ts +71 -0
  1285. package/dist/memory/hybrid-mmr.js +127 -0
  1286. package/dist/memory/hybrid-search.js +4 -1
  1287. package/dist/memory/knowledge-graph.d.ts +23 -2
  1288. package/dist/memory/knowledge-graph.js +62 -47
  1289. package/dist/memory/memory-candidate-queue.js +9 -4
  1290. package/dist/memory/memory-consolidation.d.ts +8 -0
  1291. package/dist/memory/memory-consolidation.js +66 -17
  1292. package/dist/memory/memory-forgetting.d.ts +57 -0
  1293. package/dist/memory/memory-forgetting.js +87 -0
  1294. package/dist/memory/ocr-memory-pipeline.js +16 -10
  1295. package/dist/memory/persistent-memory.d.ts +98 -0
  1296. package/dist/memory/persistent-memory.js +711 -119
  1297. package/dist/memory/presence-injector.d.ts +1 -1
  1298. package/dist/memory/presence-injector.js +9 -4
  1299. package/dist/memory/semantic-memory-search.js +12 -9
  1300. package/dist/memory/subagent-memory.js +8 -8
  1301. package/dist/memory/user-model.js +9 -4
  1302. package/dist/metrics/metrics-collector.d.ts +1 -0
  1303. package/dist/metrics/metrics-collector.js +11 -2
  1304. package/dist/nodes/device-node.d.ts +5 -2
  1305. package/dist/nodes/device-node.js +65 -19
  1306. package/dist/nodes/index.d.ts +32 -2
  1307. package/dist/nodes/index.js +208 -7
  1308. package/dist/nodes/transports/adb-transport.d.ts +2 -6
  1309. package/dist/nodes/transports/adb-transport.js +29 -13
  1310. package/dist/nodes/transports/base-transport.d.ts +10 -0
  1311. package/dist/observability/run-store.d.ts +6 -1
  1312. package/dist/observability/run-store.js +89 -22
  1313. package/dist/observability/run-trajectory-load.d.ts +16 -0
  1314. package/dist/observability/run-trajectory-load.js +266 -0
  1315. package/dist/observability/run-trajectory.d.ts +168 -0
  1316. package/dist/observability/run-trajectory.js +468 -0
  1317. package/dist/observability/run-viewer.d.ts +5 -1
  1318. package/dist/observability/run-viewer.js +83 -9
  1319. package/dist/observability/turn-metrics.d.ts +86 -0
  1320. package/dist/observability/turn-metrics.js +201 -0
  1321. package/dist/offline/offline-mode.js +10 -9
  1322. package/dist/openclaw/gateway-bridge.js +3 -2
  1323. package/dist/optimization/latency-optimizer.d.ts +2 -1
  1324. package/dist/optimization/latency-optimizer.js +2 -2
  1325. package/dist/optimization/model-routing.d.ts +3 -0
  1326. package/dist/orchestration/orchestrator.js +4 -1
  1327. package/dist/orchestration/types.d.ts +2 -0
  1328. package/dist/performance/lazy-loader.js +2 -1
  1329. package/dist/performance/tool-cache.d.ts +4 -0
  1330. package/dist/performance/tool-cache.js +4 -2
  1331. package/dist/persistence/conversation-branches.js +9 -2
  1332. package/dist/persistence/session-store.d.ts +26 -0
  1333. package/dist/persistence/session-store.js +56 -17
  1334. package/dist/personas/persona-manager.d.ts +39 -1
  1335. package/dist/personas/persona-manager.js +276 -38
  1336. package/dist/plugins/bundled/groq-provider.js +10 -7
  1337. package/dist/plugins/bundled/openrouter-provider.js +2 -1
  1338. package/dist/plugins/code-explorer/CodeExplorerManager.d.ts +52 -4
  1339. package/dist/plugins/code-explorer/CodeExplorerManager.js +201 -31
  1340. package/dist/plugins/code-explorer/code-explorer-client.d.ts +36 -0
  1341. package/dist/plugins/code-explorer/code-explorer-client.js +86 -0
  1342. package/dist/plugins/code-explorer/index.d.ts +1 -3
  1343. package/dist/plugins/code-explorer/index.js +0 -1
  1344. package/dist/plugins/git-pinned-marketplace.js +3 -2
  1345. package/dist/plugins/plugin-manager.js +6 -9
  1346. package/dist/plugins/sandbox-worker.js +1 -1
  1347. package/dist/prompts/system-base.js +27 -3
  1348. package/dist/protocols/a2a/codebuddy-executor.d.ts +9 -0
  1349. package/dist/protocols/a2a/codebuddy-executor.js +25 -6
  1350. package/dist/protocols/a2a/index.d.ts +6 -0
  1351. package/dist/protocols/a2a/index.js +32 -3
  1352. package/dist/protocols/acp/acp-agentic-runner.d.ts +6 -2
  1353. package/dist/protocols/acp/acp-agentic-runner.js +91 -15
  1354. package/dist/protocols/acp/acp-session-store.js +28 -5
  1355. package/dist/protocols/acp/acp-stdio-server.d.ts +13 -0
  1356. package/dist/protocols/acp/acp-stdio-server.js +30 -3
  1357. package/dist/providers/active-llm-model-pool.d.ts +45 -0
  1358. package/dist/providers/active-llm-model-pool.js +139 -0
  1359. package/dist/providers/active-llm-registry.js +48 -8
  1360. package/dist/providers/auxiliary-provider.d.ts +1 -1
  1361. package/dist/providers/auxiliary-provider.js +23 -10
  1362. package/dist/providers/chatgpt-models.d.ts +71 -0
  1363. package/dist/providers/chatgpt-models.js +302 -0
  1364. package/dist/providers/codex-oauth.d.ts +8 -0
  1365. package/dist/providers/codex-oauth.js +47 -39
  1366. package/dist/providers/gemini-oauth.js +7 -6
  1367. package/dist/providers/grok-provider.js +1 -1
  1368. package/dist/providers/index.d.ts +3 -0
  1369. package/dist/providers/index.js +3 -0
  1370. package/dist/providers/local-model-resolver.d.ts +66 -0
  1371. package/dist/providers/local-model-resolver.js +128 -0
  1372. package/dist/providers/model-egress.d.ts +8 -0
  1373. package/dist/providers/model-egress.js +62 -0
  1374. package/dist/providers/model-provider-compat.d.ts +13 -0
  1375. package/dist/providers/model-provider-compat.js +48 -0
  1376. package/dist/providers/provider-catalog.d.ts +4 -1
  1377. package/dist/providers/provider-catalog.js +494 -28
  1378. package/dist/providers/provider-failover-notify.d.ts +15 -0
  1379. package/dist/providers/provider-failover-notify.js +93 -0
  1380. package/dist/providers/provider-failover-policy.d.ts +28 -0
  1381. package/dist/providers/provider-failover-policy.js +188 -0
  1382. package/dist/providers/provider-failover-user-notice.d.ts +13 -0
  1383. package/dist/providers/provider-failover-user-notice.js +49 -0
  1384. package/dist/providers/provider-fallback.d.ts +1 -0
  1385. package/dist/providers/provider-fallback.js +1 -1
  1386. package/dist/providers/provider-health.d.ts +46 -0
  1387. package/dist/providers/provider-health.js +249 -0
  1388. package/dist/providers/turboquant-provider.d.ts +1 -1
  1389. package/dist/providers/xai-oauth.js +7 -34
  1390. package/dist/queue/persistent-queue.js +9 -6
  1391. package/dist/renderers/charts/special-charts.d.ts +7 -1
  1392. package/dist/renderers/charts/special-charts.js +5 -0
  1393. package/dist/renderers/weather-conditions.d.ts +20 -0
  1394. package/dist/renderers/weather-conditions.js +74 -0
  1395. package/dist/renderers/weather-renderer.js +4 -18
  1396. package/dist/rendering/ansi.d.ts +4 -0
  1397. package/dist/rendering/ansi.js +149 -0
  1398. package/dist/rendering/index.d.ts +19 -0
  1399. package/dist/rendering/index.js +18 -0
  1400. package/dist/rendering/markdown-core.d.ts +13 -0
  1401. package/dist/rendering/markdown-core.js +18 -0
  1402. package/dist/rendering/plain.d.ts +2 -0
  1403. package/dist/rendering/plain.js +91 -0
  1404. package/dist/rendering/telegram-html.d.ts +27 -0
  1405. package/dist/rendering/telegram-html.js +290 -0
  1406. package/dist/research/auto-ingest.d.ts +45 -0
  1407. package/dist/research/auto-ingest.js +85 -0
  1408. package/dist/research/code-explorer-source.d.ts +29 -0
  1409. package/dist/research/code-explorer-source.js +76 -0
  1410. package/dist/research/connector-source.d.ts +25 -0
  1411. package/dist/research/connector-source.js +314 -0
  1412. package/dist/research/paper-qa/answer.d.ts +72 -0
  1413. package/dist/research/paper-qa/answer.js +227 -0
  1414. package/dist/research/paper-qa/corpus.d.ts +36 -0
  1415. package/dist/research/paper-qa/corpus.js +102 -0
  1416. package/dist/research/paper-qa/disk-embedding-cache.d.ts +28 -0
  1417. package/dist/research/paper-qa/disk-embedding-cache.js +193 -0
  1418. package/dist/research/paper-qa/index.d.ts +31 -0
  1419. package/dist/research/paper-qa/index.js +24 -0
  1420. package/dist/research/paper-qa/paper-qa-pipeline.d.ts +107 -0
  1421. package/dist/research/paper-qa/paper-qa-pipeline.js +163 -0
  1422. package/dist/research/paper-qa/passage-index.d.ts +203 -0
  1423. package/dist/research/paper-qa/passage-index.js +405 -0
  1424. package/dist/research/paper-qa/pdf-structure.d.ts +37 -0
  1425. package/dist/research/paper-qa/pdf-structure.js +377 -0
  1426. package/dist/research/paper-qa/persistent-corpus-index.d.ts +23 -0
  1427. package/dist/research/paper-qa/persistent-corpus-index.js +122 -0
  1428. package/dist/research/paper-qa/prose-chunker.d.ts +19 -0
  1429. package/dist/research/paper-qa/prose-chunker.js +201 -0
  1430. package/dist/research/paper-qa/provenance.d.ts +24 -0
  1431. package/dist/research/paper-qa/provenance.js +40 -0
  1432. package/dist/research/paper-qa/rcs.d.ts +78 -0
  1433. package/dist/research/paper-qa/rcs.js +200 -0
  1434. package/dist/research/paper-qa/types.d.ts +124 -0
  1435. package/dist/research/paper-qa/types.js +13 -0
  1436. package/dist/research/publication-sources.d.ts +34 -0
  1437. package/dist/research/publication-sources.js +131 -0
  1438. package/dist/research/relation-classifier.d.ts +13 -0
  1439. package/dist/research/relation-classifier.js +58 -0
  1440. package/dist/research/research-topics.d.ts +13 -0
  1441. package/dist/research/research-topics.js +81 -0
  1442. package/dist/review/apply-transaction.d.ts +40 -0
  1443. package/dist/review/apply-transaction.js +112 -0
  1444. package/dist/review/diff-model.d.ts +39 -0
  1445. package/dist/review/diff-model.js +124 -0
  1446. package/dist/review/llm-client.d.ts +30 -0
  1447. package/dist/review/llm-client.js +98 -0
  1448. package/dist/review/llm-reviewer.d.ts +16 -0
  1449. package/dist/review/llm-reviewer.js +122 -0
  1450. package/dist/review/review-engine.d.ts +54 -0
  1451. package/dist/review/review-engine.js +0 -0
  1452. package/dist/review/revision-loop.d.ts +67 -0
  1453. package/dist/review/revision-loop.js +160 -0
  1454. package/dist/review/static-gate.d.ts +13 -0
  1455. package/dist/review/static-gate.js +110 -0
  1456. package/dist/review/types.d.ts +122 -0
  1457. package/dist/review/types.js +24 -0
  1458. package/dist/review/write-gate.d.ts +55 -0
  1459. package/dist/review/write-gate.js +121 -0
  1460. package/dist/sandbox/auto-sandbox.d.ts +4 -2
  1461. package/dist/sandbox/auto-sandbox.js +14 -1
  1462. package/dist/sandbox/docker-sandbox.d.ts +39 -0
  1463. package/dist/sandbox/docker-sandbox.js +292 -14
  1464. package/dist/sandbox/execpolicy.d.ts +36 -1
  1465. package/dist/sandbox/execpolicy.js +375 -40
  1466. package/dist/sandbox/os-sandbox.d.ts +53 -0
  1467. package/dist/sandbox/os-sandbox.js +315 -70
  1468. package/dist/sandbox/sandbox-backend.d.ts +2 -0
  1469. package/dist/scheduler/cron-scheduler.d.ts +1 -0
  1470. package/dist/scheduler/cron-scheduler.js +142 -41
  1471. package/dist/scripting/codebuddy-bindings.js +2 -1
  1472. package/dist/search/bm25.js +5 -2
  1473. package/dist/search/usearch-index.js +7 -5
  1474. package/dist/security/audit-logger.js +14 -7
  1475. package/dist/security/bash-allowlist/allowlist-store.d.ts +8 -2
  1476. package/dist/security/bash-allowlist/allowlist-store.js +52 -12
  1477. package/dist/security/bash-allowlist/approval-flow.d.ts +1 -1
  1478. package/dist/security/bash-allowlist/approval-flow.js +10 -8
  1479. package/dist/security/bash-allowlist/deny-guard.d.ts +14 -0
  1480. package/dist/security/bash-allowlist/deny-guard.js +61 -0
  1481. package/dist/security/bash-allowlist/types.d.ts +5 -0
  1482. package/dist/security/bash-parser.d.ts +32 -0
  1483. package/dist/security/bash-parser.js +129 -14
  1484. package/dist/security/dangerous-patterns.js +18 -3
  1485. package/dist/security/declarative-rules.d.ts +1 -1
  1486. package/dist/security/declarative-rules.js +242 -65
  1487. package/dist/security/dependency-vuln-scanner.js +4 -4
  1488. package/dist/security/dev-origins.d.ts +40 -0
  1489. package/dist/security/dev-origins.js +111 -0
  1490. package/dist/security/docker-sandbox/manager.js +1 -1
  1491. package/dist/security/env-blocklist.d.ts +7 -0
  1492. package/dist/security/env-blocklist.js +22 -2
  1493. package/dist/security/guardian-agent.d.ts +0 -5
  1494. package/dist/security/guardian-agent.js +17 -6
  1495. package/dist/security/index.d.ts +3 -0
  1496. package/dist/security/index.js +2 -0
  1497. package/dist/security/native-sandbox.d.ts +80 -0
  1498. package/dist/security/native-sandbox.js +455 -0
  1499. package/dist/security/pack-contents-policy.d.ts +49 -0
  1500. package/dist/security/pack-contents-policy.js +139 -0
  1501. package/dist/security/permission-config.js +2 -5
  1502. package/dist/security/permission-modes.d.ts +11 -0
  1503. package/dist/security/permission-modes.js +71 -7
  1504. package/dist/security/policy-amendments.js +40 -22
  1505. package/dist/security/policy-engine.js +39 -12
  1506. package/dist/security/powershell-parser.d.ts +40 -0
  1507. package/dist/security/powershell-parser.js +198 -0
  1508. package/dist/security/remote-approval.d.ts +0 -1
  1509. package/dist/security/remote-approval.js +3 -2
  1510. package/dist/security/safe-binaries.d.ts +13 -1
  1511. package/dist/security/safe-binaries.js +240 -32
  1512. package/dist/security/safe-fetch.d.ts +7 -0
  1513. package/dist/security/safe-fetch.js +101 -0
  1514. package/dist/security/sandbox.js +2 -2
  1515. package/dist/security/secret-patterns.d.ts +18 -0
  1516. package/dist/security/secret-patterns.js +232 -0
  1517. package/dist/security/secret-scrubber.d.ts +31 -0
  1518. package/dist/security/secret-scrubber.js +170 -0
  1519. package/dist/security/secrets-detector.d.ts +3 -1
  1520. package/dist/security/secrets-detector.js +3 -106
  1521. package/dist/security/security-modes.js +2 -1
  1522. package/dist/security/session-encryption.d.ts +7 -2
  1523. package/dist/security/session-encryption.js +28 -7
  1524. package/dist/security/shell-env-policy.js +11 -2
  1525. package/dist/security/skill-scanner.d.ts +2 -2
  1526. package/dist/security/skill-scanner.js +237 -11
  1527. package/dist/security/ssrf-guard.d.ts +13 -0
  1528. package/dist/security/ssrf-guard.js +27 -0
  1529. package/dist/security/text-deobfuscation.d.ts +41 -0
  1530. package/dist/security/text-deobfuscation.js +256 -0
  1531. package/dist/security/tool-permissions.js +2 -3
  1532. package/dist/security/tool-policy/approval-scope.d.ts +11 -0
  1533. package/dist/security/tool-policy/approval-scope.js +67 -0
  1534. package/dist/security/tool-policy/policy-manager.d.ts +9 -0
  1535. package/dist/security/tool-policy/policy-manager.js +28 -1
  1536. package/dist/security/tool-policy/profiles.js +24 -0
  1537. package/dist/security/tool-policy/tool-groups.js +26 -3
  1538. package/dist/security/tool-policy/types.d.ts +3 -1
  1539. package/dist/security/tool-policy/types.js +2 -0
  1540. package/dist/security/trust-folders.js +3 -2
  1541. package/dist/security/write-policy.d.ts +8 -0
  1542. package/dist/security/write-policy.js +63 -1
  1543. package/dist/self-model/evolution-notes.d.ts +51 -0
  1544. package/dist/self-model/evolution-notes.js +324 -0
  1545. package/dist/sensory/agent-reply.d.ts +136 -0
  1546. package/dist/sensory/agent-reply.js +682 -0
  1547. package/dist/sensory/alert.d.ts +18 -0
  1548. package/dist/sensory/alert.js +105 -0
  1549. package/dist/sensory/arrival-opener.d.ts +102 -0
  1550. package/dist/sensory/arrival-opener.js +292 -0
  1551. package/dist/sensory/audio-scene.d.ts +24 -0
  1552. package/dist/sensory/audio-scene.js +74 -0
  1553. package/dist/sensory/camera-keyframe-policy.d.ts +11 -0
  1554. package/dist/sensory/camera-keyframe-policy.js +43 -0
  1555. package/dist/sensory/conversation-cues.d.ts +55 -0
  1556. package/dist/sensory/conversation-cues.js +140 -0
  1557. package/dist/sensory/domain-event-bridge.d.ts +7 -0
  1558. package/dist/sensory/domain-event-bridge.js +134 -0
  1559. package/dist/sensory/dreaming.d.ts +17 -0
  1560. package/dist/sensory/dreaming.js +52 -2
  1561. package/dist/sensory/elevenlabs-library.d.ts +91 -0
  1562. package/dist/sensory/elevenlabs-library.js +303 -0
  1563. package/dist/sensory/episodic-journal.d.ts +69 -0
  1564. package/dist/sensory/episodic-journal.js +240 -0
  1565. package/dist/sensory/error-watch-reaction.d.ts +41 -0
  1566. package/dist/sensory/error-watch-reaction.js +312 -0
  1567. package/dist/sensory/heartbeat-fallback.d.ts +46 -0
  1568. package/dist/sensory/heartbeat-fallback.js +171 -0
  1569. package/dist/sensory/heartbeat-scheduler.d.ts +6 -0
  1570. package/dist/sensory/heartbeat-scheduler.js +27 -7
  1571. package/dist/sensory/hybrid-reply.d.ts +132 -0
  1572. package/dist/sensory/hybrid-reply.js +1217 -0
  1573. package/dist/sensory/reactions.d.ts +6 -0
  1574. package/dist/sensory/reactions.js +10 -1
  1575. package/dist/sensory/respond-decider.d.ts +124 -0
  1576. package/dist/sensory/respond-decider.js +608 -0
  1577. package/dist/sensory/rule-templates.d.ts +30 -0
  1578. package/dist/sensory/rule-templates.js +100 -0
  1579. package/dist/sensory/schedule-emitter.d.ts +24 -0
  1580. package/dist/sensory/schedule-emitter.js +57 -0
  1581. package/dist/sensory/screen-reaction.js +15 -1
  1582. package/dist/sensory/semantic-vision-reaction.d.ts +36 -0
  1583. package/dist/sensory/semantic-vision-reaction.js +342 -0
  1584. package/dist/sensory/sensory-action-executor.d.ts +98 -0
  1585. package/dist/sensory/sensory-action-executor.js +473 -0
  1586. package/dist/sensory/sensory-bridge.d.ts +11 -1
  1587. package/dist/sensory/sensory-bridge.js +59 -7
  1588. package/dist/sensory/sensory-rules-engine.d.ts +81 -0
  1589. package/dist/sensory/sensory-rules-engine.js +434 -0
  1590. package/dist/sensory/sensory-status.d.ts +102 -0
  1591. package/dist/sensory/sensory-status.js +291 -0
  1592. package/dist/sensory/speech-engine-config.d.ts +68 -0
  1593. package/dist/sensory/speech-engine-config.js +157 -0
  1594. package/dist/sensory/speech-reaction.d.ts +183 -7
  1595. package/dist/sensory/speech-reaction.js +2141 -35
  1596. package/dist/sensory/speech-sanitizer.d.ts +12 -0
  1597. package/dist/sensory/speech-sanitizer.js +143 -0
  1598. package/dist/sensory/system-vitals-emitter.d.ts +130 -0
  1599. package/dist/sensory/system-vitals-emitter.js +514 -0
  1600. package/dist/sensory/tts-cache.d.ts +76 -0
  1601. package/dist/sensory/tts-cache.js +0 -0
  1602. package/dist/sensory/turn-detector.d.ts +28 -0
  1603. package/dist/sensory/turn-detector.js +57 -0
  1604. package/dist/sensory/vision-description-safety.d.ts +4 -0
  1605. package/dist/sensory/vision-description-safety.js +25 -0
  1606. package/dist/sensory/vision-reaction.d.ts +21 -7
  1607. package/dist/sensory/vision-reaction.js +209 -18
  1608. package/dist/sensory/voice-activity.d.ts +69 -0
  1609. package/dist/sensory/voice-activity.js +271 -0
  1610. package/dist/sensory/voice-clock.d.ts +19 -0
  1611. package/dist/sensory/voice-clock.js +111 -0
  1612. package/dist/sensory/voice-entrainment.d.ts +62 -0
  1613. package/dist/sensory/voice-entrainment.js +176 -0
  1614. package/dist/sensory/voice-interactions.d.ts +13 -0
  1615. package/dist/sensory/voice-interactions.js +258 -0
  1616. package/dist/sensory/voice-loop.d.ts +618 -0
  1617. package/dist/sensory/voice-loop.js +3581 -0
  1618. package/dist/sensory/voice-replay-lab.d.ts +32 -0
  1619. package/dist/sensory/voice-replay-lab.js +109 -0
  1620. package/dist/sensory/voice-stream.d.ts +121 -0
  1621. package/dist/sensory/voice-stream.js +598 -0
  1622. package/dist/sensory/voice-turn-coordinator.d.ts +88 -0
  1623. package/dist/sensory/voice-turn-coordinator.js +258 -0
  1624. package/dist/sensory/voice-turn-taking.d.ts +26 -0
  1625. package/dist/sensory/voice-turn-taking.js +59 -0
  1626. package/dist/server/agent-adapter.d.ts +49 -3
  1627. package/dist/server/agent-adapter.js +26 -4
  1628. package/dist/server/channel-a2a-bridge.js +1 -1
  1629. package/dist/server/exposure-diagnostic.d.ts +25 -0
  1630. package/dist/server/exposure-diagnostic.js +51 -0
  1631. package/dist/server/heartbeat-monitor.d.ts +13 -0
  1632. package/dist/server/heartbeat-monitor.js +8 -3
  1633. package/dist/server/http-agent-sessions.d.ts +32 -0
  1634. package/dist/server/http-agent-sessions.js +245 -0
  1635. package/dist/server/index.d.ts +3 -0
  1636. package/dist/server/index.js +913 -46
  1637. package/dist/server/mcp/approval-elicitation.d.ts +144 -0
  1638. package/dist/server/mcp/approval-elicitation.js +377 -0
  1639. package/dist/server/middleware/auth.d.ts +11 -0
  1640. package/dist/server/middleware/auth.js +54 -0
  1641. package/dist/server/middleware/error-handler.d.ts +5 -0
  1642. package/dist/server/middleware/error-handler.js +30 -4
  1643. package/dist/server/middleware/index.d.ts +1 -1
  1644. package/dist/server/middleware/index.js +1 -1
  1645. package/dist/server/mobile/album.d.ts +46 -0
  1646. package/dist/server/mobile/album.js +144 -0
  1647. package/dist/server/mobile/assets/app.js +3036 -0
  1648. package/dist/server/mobile/assets/emoji-data.js +508 -0
  1649. package/dist/server/mobile/assets/icon-192.png +0 -0
  1650. package/dist/server/mobile/assets/icon-512.png +0 -0
  1651. package/dist/server/mobile/assets/icon-96.png +0 -0
  1652. package/dist/server/mobile/assets/icon.svg +12 -0
  1653. package/dist/server/mobile/assets/index.html +261 -0
  1654. package/dist/server/mobile/assets/manifest.webmanifest +37 -0
  1655. package/dist/server/mobile/assets/styles.css +831 -0
  1656. package/dist/server/mobile/assets/sw.js +149 -0
  1657. package/dist/server/mobile/chat-extras.d.ts +9 -0
  1658. package/dist/server/mobile/chat-extras.js +24 -0
  1659. package/dist/server/mobile/index.d.ts +22 -0
  1660. package/dist/server/mobile/index.js +287 -0
  1661. package/dist/server/mobile/link-preview.d.ts +24 -0
  1662. package/dist/server/mobile/link-preview.js +139 -0
  1663. package/dist/server/mobile/push.d.ts +38 -0
  1664. package/dist/server/mobile/push.js +190 -0
  1665. package/dist/server/mobile/status.d.ts +23 -0
  1666. package/dist/server/mobile/status.js +107 -0
  1667. package/dist/server/mobile/telegram-forward.d.ts +14 -0
  1668. package/dist/server/mobile/telegram-forward.js +32 -0
  1669. package/dist/server/mobile/voice-note.d.ts +54 -0
  1670. package/dist/server/mobile/voice-note.js +305 -0
  1671. package/dist/server/origin-check.d.ts +4 -5
  1672. package/dist/server/origin-check.js +43 -8
  1673. package/dist/server/routes/canvas.d.ts +7 -1
  1674. package/dist/server/routes/canvas.js +138 -24
  1675. package/dist/server/routes/chat.js +340 -203
  1676. package/dist/server/routes/cognition.d.ts +3 -0
  1677. package/dist/server/routes/cognition.js +75 -0
  1678. package/dist/server/routes/health.js +93 -81
  1679. package/dist/server/routes/index.d.ts +5 -1
  1680. package/dist/server/routes/index.js +5 -1
  1681. package/dist/server/routes/lessons.d.ts +13 -0
  1682. package/dist/server/routes/lessons.js +111 -0
  1683. package/dist/server/routes/memory.d.ts +12 -0
  1684. package/dist/server/routes/memory.js +191 -131
  1685. package/dist/server/routes/runs.d.ts +9 -0
  1686. package/dist/server/routes/runs.js +50 -0
  1687. package/dist/server/routes/sessions.js +8 -1
  1688. package/dist/server/routes/tools.js +93 -74
  1689. package/dist/server/routes/webhooks.js +56 -46
  1690. package/dist/server/tunnel-manager.js +21 -1
  1691. package/dist/server/types.d.ts +25 -1
  1692. package/dist/server/webhook-agent-queue.d.ts +12 -0
  1693. package/dist/server/webhook-agent-queue.js +58 -0
  1694. package/dist/server/websocket/cognition-bridge.d.ts +13 -0
  1695. package/dist/server/websocket/cognition-bridge.js +334 -0
  1696. package/dist/server/websocket/confirmation-bridge.d.ts +22 -0
  1697. package/dist/server/websocket/confirmation-bridge.js +178 -0
  1698. package/dist/server/websocket/desktop-handler.d.ts +17 -0
  1699. package/dist/server/websocket/desktop-handler.js +177 -16
  1700. package/dist/server/websocket/handler.d.ts +123 -1
  1701. package/dist/server/websocket/handler.js +852 -67
  1702. package/dist/server/websocket/index.d.ts +2 -1
  1703. package/dist/server/websocket/index.js +2 -1
  1704. package/dist/server/websocket/peer-rpc.d.ts +1 -1
  1705. package/dist/server/websocket/peer-rpc.js +25 -3
  1706. package/dist/services/prompt-builder.d.ts +47 -2
  1707. package/dist/services/prompt-builder.js +310 -99
  1708. package/dist/sessions/timeline-snapshot.d.ts +35 -0
  1709. package/dist/sessions/timeline-snapshot.js +144 -0
  1710. package/dist/sessions/timeline.d.ts +33 -0
  1711. package/dist/sessions/timeline.js +85 -0
  1712. package/dist/shared/context-optimization-metadata.d.ts +29 -0
  1713. package/dist/shared/context-optimization-metadata.js +73 -0
  1714. package/dist/shared/engine-types.d.ts +26 -0
  1715. package/dist/skills/bash-injection.d.ts +2 -2
  1716. package/dist/skills/bash-injection.js +9 -2
  1717. package/dist/skills/bundled/code-explorer.skill.md +50 -0
  1718. package/dist/skills/bundled/file-edit.skill.md +62 -0
  1719. package/dist/skills/bundled/git-commit.skill.md +66 -0
  1720. package/dist/skills/bundled/pubcommander-control/SKILL.md +33 -0
  1721. package/dist/skills/bundled/pubcommander-control/agents/openai.yaml +4 -0
  1722. package/dist/skills/bundled/typescript-expert.skill.md +21 -0
  1723. package/dist/skills/bundled/weather.skill.md +48 -0
  1724. package/dist/skills/bundled/web-app-testing.skill.md +71 -0
  1725. package/dist/skills/bundled/web-search.skill.md +56 -0
  1726. package/dist/skills/hub.js +52 -30
  1727. package/dist/skills/index.d.ts +6 -3
  1728. package/dist/skills/index.js +19 -4
  1729. package/dist/skills/parser.js +2 -0
  1730. package/dist/skills/registry.d.ts +52 -0
  1731. package/dist/skills/registry.js +291 -14
  1732. package/dist/skills/skill-exchange.d.ts +61 -0
  1733. package/dist/skills/skill-exchange.js +523 -0
  1734. package/dist/skills/skill-importer.d.ts +2 -2
  1735. package/dist/skills/skill-importer.js +76 -17
  1736. package/dist/skills/skill-registry.js +3 -2
  1737. package/dist/skills/skill-signing.d.ts +20 -0
  1738. package/dist/skills/skill-signing.js +106 -0
  1739. package/dist/skills/skill-sources.d.ts +3 -2
  1740. package/dist/skills/skill-sources.js +5 -4
  1741. package/dist/skills/types.d.ts +4 -0
  1742. package/dist/spec/spec-store.js +7 -6
  1743. package/dist/speculative/shadow-workspace.d.ts +79 -0
  1744. package/dist/speculative/shadow-workspace.js +500 -0
  1745. package/dist/talk-mode/index.d.ts +4 -4
  1746. package/dist/talk-mode/index.js +3 -3
  1747. package/dist/talk-mode/providers/elevenlabs-client.d.ts +48 -0
  1748. package/dist/talk-mode/providers/elevenlabs-client.js +117 -0
  1749. package/dist/talk-mode/providers/elevenlabs.js +12 -23
  1750. package/dist/talk-mode/providers/index.d.ts +3 -1
  1751. package/dist/talk-mode/providers/index.js +2 -0
  1752. package/dist/talk-mode/providers/pocket-tts.d.ts +88 -0
  1753. package/dist/talk-mode/providers/pocket-tts.js +334 -0
  1754. package/dist/talk-mode/providers/voicebox-tts.d.ts +24 -0
  1755. package/dist/talk-mode/providers/voicebox-tts.js +120 -0
  1756. package/dist/talk-mode/types.d.ts +39 -1
  1757. package/dist/tasks/background-tasks.js +22 -5
  1758. package/dist/telemetry/otel-tracer.js +5 -2
  1759. package/dist/templates/design-system-apply.d.ts +23 -0
  1760. package/dist/templates/design-system-apply.js +100 -0
  1761. package/dist/templates/project-scaffolding.d.ts +2 -0
  1762. package/dist/templates/project-scaffolding.js +616 -1
  1763. package/dist/themes/theme-manager.js +9 -6
  1764. package/dist/themes/theme-schema.d.ts +46 -46
  1765. package/dist/tools/advanced/multi-file-editor.js +3 -1
  1766. package/dist/tools/advanced/operation-history.js +2 -1
  1767. package/dist/tools/app-server-tool.d.ts +66 -0
  1768. package/dist/tools/app-server-tool.js +423 -0
  1769. package/dist/tools/apply-patch.d.ts +31 -1
  1770. package/dist/tools/apply-patch.js +214 -19
  1771. package/dist/tools/authored-tools-manifest-2.d.ts +17 -0
  1772. package/dist/tools/authored-tools-manifest-2.js +133 -0
  1773. package/dist/tools/authored-tools-manifest.d.ts +15 -0
  1774. package/dist/tools/authored-tools-manifest.js +13 -0
  1775. package/dist/tools/bash/bash-tool.d.ts +36 -3
  1776. package/dist/tools/bash/bash-tool.js +240 -100
  1777. package/dist/tools/bash/command-validator.d.ts +1 -1
  1778. package/dist/tools/bash/command-validator.js +115 -40
  1779. package/dist/tools/bash/execution-policy.d.ts +42 -0
  1780. package/dist/tools/bash/execution-policy.js +278 -0
  1781. package/dist/tools/bash/security-patterns.js +43 -5
  1782. package/dist/tools/bash/streaming-executor.d.ts +1 -1
  1783. package/dist/tools/bash/streaming-executor.js +124 -18
  1784. package/dist/tools/build-project-tool.d.ts +25 -0
  1785. package/dist/tools/build-project-tool.js +30 -0
  1786. package/dist/tools/bundle-analyze-tool.d.ts +28 -0
  1787. package/dist/tools/bundle-analyze-tool.js +39 -0
  1788. package/dist/tools/code-exec-tool.d.ts +55 -23
  1789. package/dist/tools/code-exec-tool.js +598 -111
  1790. package/dist/tools/code-explorer-tool.d.ts +1 -1
  1791. package/dist/tools/code-explorer-tool.js +25 -1
  1792. package/dist/tools/code-review.js +5 -0
  1793. package/dist/tools/code-stats-tool.d.ts +43 -0
  1794. package/dist/tools/code-stats-tool.js +70 -0
  1795. package/dist/tools/codebase-replace-tool.js +2 -2
  1796. package/dist/tools/comfy-recipe-tool.d.ts +37 -0
  1797. package/dist/tools/comfy-recipe-tool.js +693 -0
  1798. package/dist/tools/community-search.d.ts +93 -0
  1799. package/dist/tools/community-search.js +334 -0
  1800. package/dist/tools/computer-control-harness.js +5 -2
  1801. package/dist/tools/computer-control-tool.d.ts +8 -0
  1802. package/dist/tools/computer-control-tool.js +71 -26
  1803. package/dist/tools/context-expand-tool.d.ts +19 -0
  1804. package/dist/tools/context-expand-tool.js +132 -0
  1805. package/dist/tools/csv/csv-parse.d.ts +19 -0
  1806. package/dist/tools/csv/csv-parse.js +132 -0
  1807. package/dist/tools/csv/csv-wiring.d.ts +8 -0
  1808. package/dist/tools/csv/csv-wiring.js +9 -0
  1809. package/dist/tools/csv-analyze-tool.d.ts +11 -0
  1810. package/dist/tools/csv-analyze-tool.js +114 -0
  1811. package/dist/tools/csv-preview-tool.d.ts +34 -0
  1812. package/dist/tools/csv-preview-tool.js +69 -0
  1813. package/dist/tools/db-migration.js +11 -3
  1814. package/dist/tools/deep-research-tool.d.ts +68 -0
  1815. package/dist/tools/deep-research-tool.js +257 -0
  1816. package/dist/tools/deferred-schema-state.d.ts +19 -0
  1817. package/dist/tools/deferred-schema-state.js +33 -0
  1818. package/dist/tools/dep-inspect-tool.d.ts +32 -0
  1819. package/dist/tools/dep-inspect-tool.js +74 -0
  1820. package/dist/tools/design-system-tool.d.ts +10 -0
  1821. package/dist/tools/design-system-tool.js +95 -0
  1822. package/dist/tools/device-tool.d.ts +2 -1
  1823. package/dist/tools/device-tool.js +21 -0
  1824. package/dist/tools/diagram-tool.js +8 -2
  1825. package/dist/tools/diff-files-tool.d.ts +28 -0
  1826. package/dist/tools/diff-files-tool.js +49 -0
  1827. package/dist/tools/enhanced-search.js +32 -16
  1828. package/dist/tools/env-doctor-tool.d.ts +30 -0
  1829. package/dist/tools/env-doctor-tool.js +54 -0
  1830. package/dist/tools/execute-code-rpc-invoker.js +2 -2
  1831. package/dist/tools/execute-code-runner.d.ts +21 -0
  1832. package/dist/tools/execute-code-runner.js +117 -8
  1833. package/dist/tools/extension-forge-tool.d.ts +29 -0
  1834. package/dist/tools/extension-forge-tool.js +288 -0
  1835. package/dist/tools/fetch-tool.js +7 -3
  1836. package/dist/tools/file-search-tool.d.ts +41 -0
  1837. package/dist/tools/file-search-tool.js +99 -0
  1838. package/dist/tools/format-project-tool.d.ts +28 -0
  1839. package/dist/tools/format-project-tool.js +45 -0
  1840. package/dist/tools/git-summary-tool.d.ts +36 -0
  1841. package/dist/tools/git-summary-tool.js +65 -0
  1842. package/dist/tools/git-tool.js +16 -4
  1843. package/dist/tools/gpu-avatar-delivery.d.ts +16 -0
  1844. package/dist/tools/gpu-avatar-delivery.js +67 -0
  1845. package/dist/tools/gpu-media-worker.d.ts +96 -0
  1846. package/dist/tools/gpu-media-worker.js +363 -0
  1847. package/dist/tools/gui-tool.js +92 -13
  1848. package/dist/tools/http-probe-tool.d.ts +25 -0
  1849. package/dist/tools/http-probe-tool.js +40 -0
  1850. package/dist/tools/image-tool.js +29 -16
  1851. package/dist/tools/index.d.ts +6 -1
  1852. package/dist/tools/index.js +5 -0
  1853. package/dist/tools/interactive-bash.d.ts +29 -1
  1854. package/dist/tools/interactive-bash.js +141 -21
  1855. package/dist/tools/json-query-tool.d.ts +30 -0
  1856. package/dist/tools/json-query-tool.js +49 -0
  1857. package/dist/tools/license-check-tool.d.ts +22 -0
  1858. package/dist/tools/license-check-tool.js +43 -0
  1859. package/dist/tools/lint-project-tool.d.ts +52 -0
  1860. package/dist/tools/lint-project-tool.js +143 -0
  1861. package/dist/tools/local-binary-launch.d.ts +14 -0
  1862. package/dist/tools/local-binary-launch.js +63 -0
  1863. package/dist/tools/lsp-navigation-tools.d.ts +87 -0
  1864. package/dist/tools/lsp-navigation-tools.js +470 -0
  1865. package/dist/tools/markdown-convert.d.ts +51 -0
  1866. package/dist/tools/markdown-convert.js +159 -0
  1867. package/dist/tools/media-generation-tool.d.ts +90 -1
  1868. package/dist/tools/media-generation-tool.js +1553 -11
  1869. package/dist/tools/meeting-notes-tool.d.ts +25 -0
  1870. package/dist/tools/meeting-notes-tool.js +240 -0
  1871. package/dist/tools/merge-conflict-tool.js +1 -1
  1872. package/dist/tools/metadata.d.ts +7 -1
  1873. package/dist/tools/metadata.js +823 -13
  1874. package/dist/tools/mixture-of-agents-tool.d.ts +7 -0
  1875. package/dist/tools/mixture-of-agents-tool.js +230 -31
  1876. package/dist/tools/multi-edit.js +42 -18
  1877. package/dist/tools/ocr-tool.d.ts +43 -0
  1878. package/dist/tools/ocr-tool.js +24 -18
  1879. package/dist/tools/omission-placeholder-detector.js +12 -6
  1880. package/dist/tools/paper-qa-tool.d.ts +73 -0
  1881. package/dist/tools/paper-qa-tool.js +313 -0
  1882. package/dist/tools/peer-chain-tool.js +4 -1
  1883. package/dist/tools/peer-delegate-tool.d.ts +2 -0
  1884. package/dist/tools/peer-delegate-tool.js +11 -1
  1885. package/dist/tools/port-check-tool.d.ts +31 -0
  1886. package/dist/tools/port-check-tool.js +25 -0
  1887. package/dist/tools/project-map-tool.d.ts +39 -0
  1888. package/dist/tools/project-map-tool.js +128 -0
  1889. package/dist/tools/register-tool-handler.d.ts +2 -2
  1890. package/dist/tools/register-tool-handler.js +7 -4
  1891. package/dist/tools/registry/advanced-tools.js +1 -1
  1892. package/dist/tools/registry/attention-tools.d.ts +3 -3
  1893. package/dist/tools/registry/attention-tools.js +14 -10
  1894. package/dist/tools/registry/authored-extra-tools.d.ts +20 -0
  1895. package/dist/tools/registry/authored-extra-tools.js +147 -0
  1896. package/dist/tools/registry/bash-tools.d.ts +2 -2
  1897. package/dist/tools/registry/bash-tools.js +7 -3
  1898. package/dist/tools/registry/browser-operator-tools.d.ts +1 -1
  1899. package/dist/tools/registry/browser-operator-tools.js +17 -3
  1900. package/dist/tools/registry/browser-tools.d.ts +1 -1
  1901. package/dist/tools/registry/browser-tools.js +38 -33
  1902. package/dist/tools/registry/code-explorer-tools.js +6 -1
  1903. package/dist/tools/registry/comfy-recipe-tools.d.ts +2 -0
  1904. package/dist/tools/registry/comfy-recipe-tools.js +5 -0
  1905. package/dist/tools/registry/context-expand-tools.d.ts +3 -0
  1906. package/dist/tools/registry/context-expand-tools.js +6 -0
  1907. package/dist/tools/registry/csv-tools.d.ts +12 -0
  1908. package/dist/tools/registry/csv-tools.js +62 -0
  1909. package/dist/tools/registry/delegate-agent-tools.d.ts +64 -0
  1910. package/dist/tools/registry/delegate-agent-tools.js +206 -0
  1911. package/dist/tools/registry/design-tools.d.ts +12 -0
  1912. package/dist/tools/registry/design-tools.js +80 -0
  1913. package/dist/tools/registry/fleet-tools.js +6 -0
  1914. package/dist/tools/registry/index.d.ts +25 -5
  1915. package/dist/tools/registry/index.js +80 -6
  1916. package/dist/tools/registry/interactive-adapters.d.ts +37 -0
  1917. package/dist/tools/registry/interactive-adapters.js +116 -0
  1918. package/dist/tools/registry/lsp-tools.d.ts +3 -3
  1919. package/dist/tools/registry/lsp-tools.js +9 -3
  1920. package/dist/tools/registry/meeting-tools.d.ts +3 -0
  1921. package/dist/tools/registry/meeting-tools.js +6 -0
  1922. package/dist/tools/registry/memory-tools.js +32 -20
  1923. package/dist/tools/registry/misc-tools.d.ts +1 -1
  1924. package/dist/tools/registry/misc-tools.js +7 -4
  1925. package/dist/tools/registry/moa-tools.js +13 -0
  1926. package/dist/tools/registry/multimodal-tools.d.ts +73 -1
  1927. package/dist/tools/registry/multimodal-tools.js +581 -4
  1928. package/dist/tools/registry/process-tools.d.ts +16 -0
  1929. package/dist/tools/registry/process-tools.js +136 -1
  1930. package/dist/tools/registry/remind-tools.d.ts +23 -0
  1931. package/dist/tools/registry/remind-tools.js +120 -0
  1932. package/dist/tools/registry/research-tools.d.ts +17 -0
  1933. package/dist/tools/registry/research-tools.js +21 -0
  1934. package/dist/tools/registry/search-tools.d.ts +6 -6
  1935. package/dist/tools/registry/search-tools.js +30 -17
  1936. package/dist/tools/registry/secrets-tools.d.ts +33 -0
  1937. package/dist/tools/registry/secrets-tools.js +71 -0
  1938. package/dist/tools/registry/self-describe-tools.d.ts +23 -0
  1939. package/dist/tools/registry/self-describe-tools.js +156 -0
  1940. package/dist/tools/registry/self-evolution-tools.d.ts +13 -0
  1941. package/dist/tools/registry/self-evolution-tools.js +97 -0
  1942. package/dist/tools/registry/text-editor-tools.d.ts +26 -4
  1943. package/dist/tools/registry/text-editor-tools.js +102 -6
  1944. package/dist/tools/registry/tool-alias-map.d.ts +8 -0
  1945. package/dist/tools/registry/tool-alias-map.js +47 -0
  1946. package/dist/tools/registry/tool-aliases.d.ts +3 -4
  1947. package/dist/tools/registry/tool-aliases.js +12 -48
  1948. package/dist/tools/registry/types.d.ts +5 -0
  1949. package/dist/tools/registry/verify-tools.d.ts +50 -0
  1950. package/dist/tools/registry/verify-tools.js +136 -0
  1951. package/dist/tools/registry/video-studio-tools.d.ts +13 -0
  1952. package/dist/tools/registry/video-studio-tools.js +21 -0
  1953. package/dist/tools/registry/vision-tools.d.ts +15 -1
  1954. package/dist/tools/registry/vision-tools.js +252 -27
  1955. package/dist/tools/registry/web-test-tool.d.ts +66 -0
  1956. package/dist/tools/registry/web-test-tool.js +321 -0
  1957. package/dist/tools/registry/web-tools.d.ts +43 -0
  1958. package/dist/tools/registry/web-tools.js +281 -1
  1959. package/dist/tools/review-gate-helper.d.ts +44 -0
  1960. package/dist/tools/review-gate-helper.js +110 -0
  1961. package/dist/tools/route-peer-tool.js +62 -11
  1962. package/dist/tools/sbom-generate-tool.d.ts +22 -0
  1963. package/dist/tools/sbom-generate-tool.js +41 -0
  1964. package/dist/tools/scaffold-app-tool.d.ts +48 -0
  1965. package/dist/tools/scaffold-app-tool.js +144 -0
  1966. package/dist/tools/screenshot-tool.js +5 -2
  1967. package/dist/tools/search.d.ts +17 -0
  1968. package/dist/tools/search.js +31 -8
  1969. package/dist/tools/self-describe.d.ts +73 -0
  1970. package/dist/tools/self-describe.js +298 -0
  1971. package/dist/tools/stock-quote.d.ts +67 -0
  1972. package/dist/tools/stock-quote.js +645 -0
  1973. package/dist/tools/submit-plan-tool.js +1 -1
  1974. package/dist/tools/test-runner-tool.d.ts +38 -0
  1975. package/dist/tools/test-runner-tool.js +96 -0
  1976. package/dist/tools/text-editor.js +91 -8
  1977. package/dist/tools/text-to-speech-tool.d.ts +1 -1
  1978. package/dist/tools/text-to-speech-tool.js +48 -2
  1979. package/dist/tools/todo-scan-tool.d.ts +39 -0
  1980. package/dist/tools/todo-scan-tool.js +53 -0
  1981. package/dist/tools/tool-manager.js +8 -0
  1982. package/dist/tools/tool-search.js +11 -3
  1983. package/dist/tools/tool-selector.d.ts +7 -0
  1984. package/dist/tools/tool-selector.js +27 -13
  1985. package/dist/tools/tools-md-generator.js +2 -2
  1986. package/dist/tools/types.d.ts +16 -0
  1987. package/dist/tools/types.js +5 -1
  1988. package/dist/tools/video/approved-media-source.d.ts +8 -0
  1989. package/dist/tools/video/approved-media-source.js +59 -0
  1990. package/dist/tools/video/book-manuscript-source.d.ts +49 -0
  1991. package/dist/tools/video/book-manuscript-source.js +263 -0
  1992. package/dist/tools/video/character-in-location.d.ts +42 -0
  1993. package/dist/tools/video/character-in-location.js +161 -0
  1994. package/dist/tools/video/cinematic-trailer-plan.d.ts +203 -0
  1995. package/dist/tools/video/cinematic-trailer-plan.js +498 -0
  1996. package/dist/tools/video/cloud-understand.d.ts +91 -0
  1997. package/dist/tools/video/cloud-understand.js +214 -0
  1998. package/dist/tools/video/comfy-client.d.ts +38 -0
  1999. package/dist/tools/video/comfy-client.js +227 -0
  2000. package/dist/tools/video/comfy-workflow-template.d.ts +70 -0
  2001. package/dist/tools/video/comfy-workflow-template.js +194 -0
  2002. package/dist/tools/video/describe-frame.d.ts +36 -0
  2003. package/dist/tools/video/describe-frame.js +68 -0
  2004. package/dist/tools/video/film-assemble.d.ts +234 -0
  2005. package/dist/tools/video/film-assemble.js +959 -0
  2006. package/dist/tools/video/film-project.d.ts +152 -0
  2007. package/dist/tools/video/film-project.js +312 -0
  2008. package/dist/tools/video/frame-dedup.d.ts +46 -0
  2009. package/dist/tools/video/frame-dedup.js +110 -0
  2010. package/dist/tools/video/frame-sample.d.ts +72 -0
  2011. package/dist/tools/video/frame-sample.js +238 -0
  2012. package/dist/tools/video/google-flow-driver.d.ts +131 -0
  2013. package/dist/tools/video/google-flow-driver.js +312 -0
  2014. package/dist/tools/video/google-flow-handoff.d.ts +75 -0
  2015. package/dist/tools/video/google-flow-handoff.js +121 -0
  2016. package/dist/tools/video/google-flow-plan-export.d.ts +21 -0
  2017. package/dist/tools/video/google-flow-plan-export.js +123 -0
  2018. package/dist/tools/video/google-flow-result-import.d.ts +92 -0
  2019. package/dist/tools/video/google-flow-result-import.js +297 -0
  2020. package/dist/tools/video/hybrid-video-router.d.ts +34 -0
  2021. package/dist/tools/video/hybrid-video-router.js +113 -0
  2022. package/dist/tools/video/localized-media.d.ts +50 -0
  2023. package/dist/tools/video/localized-media.js +128 -0
  2024. package/dist/tools/video/long-form-plan.d.ts +37 -0
  2025. package/dist/tools/video/long-form-plan.js +83 -0
  2026. package/dist/tools/video/long-form-production.d.ts +49 -0
  2027. package/dist/tools/video/long-form-production.js +168 -0
  2028. package/dist/tools/video/long-transcribe.d.ts +94 -0
  2029. package/dist/tools/video/long-transcribe.js +206 -0
  2030. package/dist/tools/video/media-fetch.d.ts +94 -0
  2031. package/dist/tools/video/media-fetch.js +311 -0
  2032. package/dist/tools/video/mermaid-render.d.ts +34 -0
  2033. package/dist/tools/video/mermaid-render.js +127 -0
  2034. package/dist/tools/video/narration.d.ts +96 -0
  2035. package/dist/tools/video/narration.js +505 -0
  2036. package/dist/tools/video/native-fashion-defects.d.ts +27 -0
  2037. package/dist/tools/video/native-fashion-defects.js +80 -0
  2038. package/dist/tools/video/scene-render.d.ts +108 -0
  2039. package/dist/tools/video/scene-render.js +418 -0
  2040. package/dist/tools/video/subtitles.d.ts +49 -0
  2041. package/dist/tools/video/subtitles.js +116 -0
  2042. package/dist/tools/video/video-ckg.d.ts +123 -0
  2043. package/dist/tools/video/video-ckg.js +188 -0
  2044. package/dist/tools/video/video-research-card.d.ts +58 -0
  2045. package/dist/tools/video/video-research-card.js +468 -0
  2046. package/dist/tools/video/video-understanding.d.ts +159 -0
  2047. package/dist/tools/video/video-understanding.js +534 -0
  2048. package/dist/tools/video/visual-gate-report.d.ts +139 -0
  2049. package/dist/tools/video/visual-gate-report.js +379 -0
  2050. package/dist/tools/video/voice-rights-registry.d.ts +13 -0
  2051. package/dist/tools/video/voice-rights-registry.js +142 -0
  2052. package/dist/tools/video/youtube-captions.d.ts +51 -0
  2053. package/dist/tools/video/youtube-captions.js +102 -0
  2054. package/dist/tools/video/youtube-master-quality.d.ts +163 -0
  2055. package/dist/tools/video/youtube-master-quality.js +379 -0
  2056. package/dist/tools/video/youtube-storyboard.d.ts +43 -0
  2057. package/dist/tools/video/youtube-storyboard.js +194 -0
  2058. package/dist/tools/video-flow-handoff-tool.d.ts +181 -0
  2059. package/dist/tools/video-flow-handoff-tool.js +261 -0
  2060. package/dist/tools/video-long-form-plan-tool.d.ts +31 -0
  2061. package/dist/tools/video-long-form-plan-tool.js +87 -0
  2062. package/dist/tools/video-quality-gate-tool.d.ts +97 -0
  2063. package/dist/tools/video-quality-gate-tool.js +189 -0
  2064. package/dist/tools/video-route-tool.d.ts +128 -0
  2065. package/dist/tools/video-route-tool.js +126 -0
  2066. package/dist/tools/video-studio-tool-helpers.d.ts +22 -0
  2067. package/dist/tools/video-studio-tool-helpers.js +128 -0
  2068. package/dist/tools/video-trailer-plan-tool.d.ts +60 -0
  2069. package/dist/tools/video-trailer-plan-tool.js +103 -0
  2070. package/dist/tools/vision/blender-render.d.ts +76 -0
  2071. package/dist/tools/vision/blender-render.js +121 -0
  2072. package/dist/tools/vision/image-processor.d.ts +1 -0
  2073. package/dist/tools/vision/image-processor.js +8 -1
  2074. package/dist/tools/vision/load-sharp.d.ts +53 -0
  2075. package/dist/tools/vision/load-sharp.js +48 -0
  2076. package/dist/tools/vision/mean-luma.d.ts +4 -0
  2077. package/dist/tools/vision/mean-luma.js +189 -0
  2078. package/dist/tools/vision/object-detection.d.ts +90 -0
  2079. package/dist/tools/vision/object-detection.js +403 -0
  2080. package/dist/tools/vision/vision-analysis.js +2 -1
  2081. package/dist/tools/weather.d.ts +33 -0
  2082. package/dist/tools/weather.js +183 -0
  2083. package/dist/tools/web-scrape-tool.d.ts +63 -0
  2084. package/dist/tools/web-scrape-tool.js +318 -0
  2085. package/dist/tools/web-search.d.ts +67 -6
  2086. package/dist/tools/web-search.js +231 -68
  2087. package/dist/tools/workspace-tools.d.ts +39 -0
  2088. package/dist/tools/workspace-tools.js +347 -0
  2089. package/dist/tracks/track-manager.js +9 -8
  2090. package/dist/triggers/webhook-trigger.js +10 -18
  2091. package/dist/ui/components/ChatHistory.js +12 -0
  2092. package/dist/ui/components/ChatInterface.js +6 -2
  2093. package/dist/ui/components/FileAutocomplete.d.ts +6 -1
  2094. package/dist/ui/components/FileAutocomplete.js +136 -76
  2095. package/dist/ui/components/FuzzyPicker.d.ts +5 -0
  2096. package/dist/ui/components/FuzzyPicker.js +1 -1
  2097. package/dist/ui/http-server/server.js +2 -2
  2098. package/dist/undo/checkpoint-manager.d.ts +3 -0
  2099. package/dist/undo/checkpoint-manager.js +6 -1
  2100. package/dist/utils/approval-pattern-tracker.js +5 -13
  2101. package/dist/utils/ascii-banner.d.ts +1 -1
  2102. package/dist/utils/ascii-banner.js +1 -1
  2103. package/dist/utils/atomic-write.d.ts +77 -0
  2104. package/dist/utils/atomic-write.js +530 -0
  2105. package/dist/utils/audio-player.d.ts +1 -0
  2106. package/dist/utils/audio-player.js +7 -3
  2107. package/dist/utils/autonomy-manager.js +12 -3
  2108. package/dist/utils/command-exists.d.ts +14 -0
  2109. package/dist/utils/command-exists.js +43 -0
  2110. package/dist/utils/config-validation/schema.d.ts +13 -13
  2111. package/dist/utils/config-validation/schema.js +33 -1
  2112. package/dist/utils/confirmation-service.d.ts +60 -1
  2113. package/dist/utils/confirmation-service.js +204 -41
  2114. package/dist/utils/cost-tracker.d.ts +66 -1
  2115. package/dist/utils/cost-tracker.js +100 -17
  2116. package/dist/utils/history-manager.js +6 -7
  2117. package/dist/utils/init-project.js +17 -13
  2118. package/dist/utils/input-validation/index.d.ts +16 -16
  2119. package/dist/utils/installation-id.js +7 -22
  2120. package/dist/utils/interactive-setup.js +7 -12
  2121. package/dist/utils/json-salvage.d.ts +22 -0
  2122. package/dist/utils/json-salvage.js +91 -0
  2123. package/dist/utils/llm-retry.js +3 -0
  2124. package/dist/utils/logger.d.ts +1 -0
  2125. package/dist/utils/logger.js +16 -5
  2126. package/dist/utils/model-router.js +8 -12
  2127. package/dist/utils/model-utils.js +14 -0
  2128. package/dist/utils/output-sanitizer.d.ts +4 -8
  2129. package/dist/utils/output-sanitizer.js +10 -10
  2130. package/dist/utils/output-schema-validator.d.ts +7 -0
  2131. package/dist/utils/output-schema-validator.js +25 -1
  2132. package/dist/utils/response-cache.js +11 -22
  2133. package/dist/utils/ripgrep-path.d.ts +11 -0
  2134. package/dist/utils/ripgrep-path.js +60 -0
  2135. package/dist/utils/semantic-cache.js +4 -7
  2136. package/dist/utils/settings-manager.d.ts +27 -4
  2137. package/dist/utils/settings-manager.js +51 -39
  2138. package/dist/utils/shell-completions.js +25 -34
  2139. package/dist/utils/shell-configuration.d.ts +39 -0
  2140. package/dist/utils/shell-configuration.js +106 -0
  2141. package/dist/utils/stream-stall-guard.d.ts +39 -0
  2142. package/dist/utils/stream-stall-guard.js +123 -0
  2143. package/dist/utils/subprocess-env.d.ts +15 -0
  2144. package/dist/utils/subprocess-env.js +112 -0
  2145. package/dist/utils/telegram-api-base.d.ts +9 -0
  2146. package/dist/utils/telegram-api-base.js +15 -0
  2147. package/dist/utils/telemetry-config.js +16 -13
  2148. package/dist/utils/update-notifier.js +5 -10
  2149. package/dist/utils/validators.js +1 -2
  2150. package/dist/versioning/config-migrator.js +3 -2
  2151. package/dist/versioning/migration-manager.js +5 -4
  2152. package/dist/versioning/version-detector.js +2 -1
  2153. package/dist/vision-train/assets.d.ts +37 -0
  2154. package/dist/vision-train/assets.js +97 -0
  2155. package/dist/vision-train/ckg-publish.d.ts +26 -0
  2156. package/dist/vision-train/ckg-publish.js +36 -0
  2157. package/dist/vision-train/coco-to-labels.d.ts +63 -0
  2158. package/dist/vision-train/coco-to-labels.js +63 -0
  2159. package/dist/vision-train/curriculum.d.ts +29 -0
  2160. package/dist/vision-train/curriculum.js +49 -0
  2161. package/dist/vision-train/engine.d.ts +56 -0
  2162. package/dist/vision-train/engine.js +55 -0
  2163. package/dist/vision-train/report.d.ts +15 -0
  2164. package/dist/vision-train/report.js +72 -0
  2165. package/dist/vision-train/scorer.d.ts +67 -0
  2166. package/dist/vision-train/scorer.js +114 -0
  2167. package/dist/vision-train/yolo-labels.d.ts +13 -0
  2168. package/dist/vision-train/yolo-labels.js +66 -0
  2169. package/dist/voice/elevenlabs-voice.d.ts +53 -0
  2170. package/dist/voice/elevenlabs-voice.js +412 -0
  2171. package/dist/voice/kyutai-local-voice.d.ts +33 -0
  2172. package/dist/voice/kyutai-local-voice.js +198 -0
  2173. package/dist/voice/local-tts.d.ts +106 -3
  2174. package/dist/voice/local-tts.js +672 -35
  2175. package/dist/voice/local-whisper.d.ts +11 -0
  2176. package/dist/voice/local-whisper.js +18 -2
  2177. package/dist/voice/pcm-edges.d.ts +43 -0
  2178. package/dist/voice/pcm-edges.js +210 -0
  2179. package/dist/voice/perceived-latency-benchmark.d.ts +56 -0
  2180. package/dist/voice/perceived-latency-benchmark.js +218 -0
  2181. package/dist/voice/tts-bank.d.ts +72 -0
  2182. package/dist/voice/tts-bank.js +172 -0
  2183. package/dist/voice/tts-latency-benchmark.d.ts +36 -0
  2184. package/dist/voice/tts-latency-benchmark.js +76 -0
  2185. package/dist/voice/tts-volume.d.ts +86 -0
  2186. package/dist/voice/tts-volume.js +378 -0
  2187. package/dist/voice/two-speed-voice.d.ts +19 -0
  2188. package/dist/voice/two-speed-voice.js +40 -0
  2189. package/dist/voice/voice-to-code.js +1 -1
  2190. package/dist/voice/voicebox-tts.d.ts +150 -0
  2191. package/dist/voice/voicebox-tts.js +669 -0
  2192. package/dist/voice/wake-word.d.ts +2 -0
  2193. package/dist/voice/wake-word.js +30 -10
  2194. package/dist/webhooks/webhook-manager.js +10 -18
  2195. package/dist/widgets/auto-widget.d.ts +27 -0
  2196. package/dist/widgets/auto-widget.js +111 -0
  2197. package/dist/widgets/canvas-publish.d.ts +15 -0
  2198. package/dist/widgets/canvas-publish.js +39 -0
  2199. package/dist/widgets/curated/news.d.ts +2 -0
  2200. package/dist/widgets/curated/news.js +46 -0
  2201. package/dist/widgets/curated/stock.d.ts +1 -0
  2202. package/dist/widgets/curated/stock.js +87 -0
  2203. package/dist/widgets/curated/weather.d.ts +2 -0
  2204. package/dist/widgets/curated/weather.js +93 -0
  2205. package/dist/widgets/template-engine.d.ts +19 -0
  2206. package/dist/widgets/template-engine.js +134 -0
  2207. package/dist/widgets/widget-engine.d.ts +24 -0
  2208. package/dist/widgets/widget-engine.js +153 -0
  2209. package/dist/widgets/widget-gate.d.ts +19 -0
  2210. package/dist/widgets/widget-gate.js +144 -0
  2211. package/dist/widgets/widget-image-renderer.d.ts +4 -0
  2212. package/dist/widgets/widget-image-renderer.js +164 -0
  2213. package/dist/widgets/widget-matcher.d.ts +48 -0
  2214. package/dist/widgets/widget-matcher.js +109 -0
  2215. package/dist/widgets/widget-proposer.d.ts +17 -0
  2216. package/dist/widgets/widget-proposer.js +75 -0
  2217. package/dist/widgets/widget-registry.d.ts +36 -0
  2218. package/dist/widgets/widget-registry.js +231 -0
  2219. package/dist/widgets/widget-types.d.ts +100 -0
  2220. package/dist/widgets/widget-types.js +17 -0
  2221. package/dist/wizard/environment-detection.d.ts +67 -0
  2222. package/dist/wizard/environment-detection.js +210 -0
  2223. package/dist/wizard/onboarding.d.ts +21 -1
  2224. package/dist/wizard/onboarding.js +202 -27
  2225. package/dist/workflows/state-manager.js +8 -2
  2226. package/dist/workspace/workspace-config.d.ts +37 -0
  2227. package/dist/workspace/workspace-config.js +199 -0
  2228. package/dist/workspace/workspace-isolation.d.ts +19 -0
  2229. package/dist/workspace/workspace-isolation.js +124 -39
  2230. package/dist/workspace/workspace-manager.js +19 -14
  2231. package/examples/claude_desktop_config.json +8 -0
  2232. package/package.json +75 -31
  2233. package/.codebuddy/README.md +0 -65
  2234. package/dist/agent/middleware/learning-first-middleware.d.ts +0 -79
  2235. package/dist/agent/middleware/learning-first-middleware.js +0 -271
  2236. package/dist/agent/middleware/tool-filter-middleware.d.ts +0 -45
  2237. package/dist/agent/middleware/tool-filter-middleware.js +0 -122
  2238. package/dist/codebuddy/tool-definitions/batch-tools.d.ts +0 -10
  2239. package/dist/codebuddy/tool-definitions/batch-tools.js +0 -46
  2240. package/dist/codebuddy/tool-definitions/graph-tools.d.ts +0 -13
  2241. package/dist/codebuddy/tool-definitions/graph-tools.js +0 -78
  2242. package/dist/plugins/code-explorer/CodeExplorerMCPClient.d.ts +0 -129
  2243. package/dist/plugins/code-explorer/CodeExplorerMCPClient.js +0 -143
  2244. package/dist/tools/registry/batch-tools.d.ts +0 -36
  2245. package/dist/tools/registry/batch-tools.js +0 -135
  2246. package/dist/tools/registry/graph-tools.d.ts +0 -45
  2247. package/dist/tools/registry/graph-tools.js +0 -283
@@ -24,11 +24,14 @@ try {
24
24
  catch {
25
25
  /* ignore */
26
26
  }
27
- import { isOriginAllowed, isLoopbackHost, DEFAULT_LOCALHOST_ORIGINS } from './origin-check.js';
28
- import { createAuthMiddleware, requireScope, createRateLimitMiddleware, createLoggingMiddleware, createSecurityHeadersMiddleware, requestIdMiddleware, errorHandler, notFoundHandler, } from './middleware/index.js';
29
- import { chatRoutes, toolsRoutes, sessionsRoutes, memoryRoutes, healthRoutes, metricsRoutes, createWorkflowApiRouter, createA2AProtocolRoutes, createACPRoutes, createK8sHealthAliases, createDashboardRouter, createCloudTaskRoutes, createWebhookRoutes, mobileRoutes, } from './routes/index.js';
30
- import { setupWebSocket, closeAllConnections, getConnectionStats } from './websocket/index.js';
27
+ import { isOriginAllowed, DEFAULT_LOCALHOST_ORIGINS } from './origin-check.js';
28
+ import { diagnoseServerExposure } from './exposure-diagnostic.js';
29
+ import { createAuthMiddleware, requireLocalAnonymousAccess, requireScope, createRateLimitMiddleware, createLoggingMiddleware, createSecurityHeadersMiddleware, requestIdMiddleware, errorHandler, notFoundHandler, } from './middleware/index.js';
30
+ import { chatRoutes, toolsRoutes, sessionsRoutes, memoryRoutes, lessonsRoutes, healthRoutes, metricsRoutes, createWorkflowApiRouter, createA2AProtocolRoutes, createACPRoutes, createK8sHealthAliases, createCanvasRouter, createDashboardRouter, createCloudTaskRoutes, createWebhookRoutes, createCognitionRoutes, mobileRoutes, mobilePwaRouter, isMobilePwaEnabled, runsRoutes, } from './routes/index.js';
31
+ import { setupWebSocket, closeAllConnections, getConnectionStats, wireCognitionBridge, } from './websocket/index.js';
31
32
  import { setupDesktopWebSocket, closeDesktopWebSocket } from './websocket/desktop-handler.js';
33
+ import { getPeerMethodHandler } from './websocket/peer-rpc.js';
34
+ import { fleetHttpDescribeEnvelope } from '../fleet/fleet-http-surface.js';
32
35
  import { startFleetHeartbeat, stopFleetHeartbeat } from '../fleet/heartbeat-broadcaster.js';
33
36
  import { startAutonomousTick, stopAutonomousTick } from '../fleet/autonomous-tick-broadcaster.js';
34
37
  import { startApiHeartbeatMonitor, stopApiHeartbeatMonitor } from './heartbeat-monitor.js';
@@ -36,12 +39,17 @@ import { wireCompactionBridge, unwireCompactionBridge } from '../fleet/compactio
36
39
  import { wirePeerChatBridge, unwirePeerChatBridge } from '../fleet/peer-chat-bridge.js';
37
40
  import { wirePeerSessionBridge, unwirePeerSessionBridge } from '../fleet/peer-session-bridge.js';
38
41
  import { wirePeerToolBridge, unwirePeerToolBridge } from '../fleet/peer-tool-bridge.js';
42
+ import { wirePeerCkgBridge, unwirePeerCkgBridge } from '../fleet/peer-ckg-bridge.js';
43
+ import { wirePeerMissionExchangeBridge, unwirePeerMissionExchangeBridge, } from '../fleet/peer-mission-exchange-bridge.js';
44
+ import { unwireMobileConfirmationBridge } from './websocket/confirmation-bridge.js';
39
45
  import { logger } from '../utils/logger.js';
40
46
  import { initMetrics } from '../metrics/index.js';
41
47
  import { CSRFProtection } from '../security/csrf-protection.js';
42
48
  import { initializeDatabase } from '../database/database-manager.js';
43
49
  import { SERVER_CONFIG, TIMEOUT_CONFIG, LIMIT_CONFIG } from '../config/constants.js';
44
50
  import { listServerModels } from './agent-adapter.js';
51
+ import { CognitiveHub, createInternalCognitivePrincipal, } from '../cognition/cognitive-hub.js';
52
+ import { InProcessCognitivePort, } from '../cognition/cognitive-port.js';
45
53
  // Lazy import to avoid circular dependency: channels/index.ts re-exports
46
54
  // TelegramChannel/DiscordChannel which import BaseChannel from channels/index.ts
47
55
  // before it's fully initialized.
@@ -130,10 +138,11 @@ function wantsStatusReport(query) {
130
138
  /**
131
139
  * Create and configure the Express application
132
140
  */
133
- function createApp(config) {
141
+ function createApp(config, cognitiveHub) {
134
142
  const app = express();
135
143
  // Trust proxy (for rate limiting behind reverse proxy)
136
144
  app.set('trust proxy', 1);
145
+ app.set('authEnabled', config.authEnabled);
137
146
  // Request ID middleware
138
147
  app.use(requestIdMiddleware);
139
148
  // Security headers middleware (CSP, X-Frame-Options, HSTS, etc.)
@@ -184,10 +193,55 @@ function createApp(config) {
184
193
  app.use('/metrics', metricsRoutes);
185
194
  // Mobile remote-supervision routes (custom pairing-token auth)
186
195
  app.use('/api/mobile', mobileRoutes);
196
+ // PWA shell (HTML/CSS/JS/manifest/SW) is public; /api and /ws still require JWT.
197
+ // Opt-in: without CODEBUDDY_MOBILE_PWA=true the route is absent (404).
198
+ if (isMobilePwaEnabled()) {
199
+ app.use('/__codebuddy__/mobile', mobilePwaRouter);
200
+ }
201
+ else {
202
+ app.use('/__codebuddy__/mobile', (_req, res) => {
203
+ res.status(404).end();
204
+ });
205
+ }
187
206
  // Authentication (applied after public health/metrics/mobile endpoints)
188
207
  app.use(createAuthMiddleware(config));
189
208
  // A2A routes (auth-based, exempt from CSRF) — must be mounted BEFORE CSRF middleware
190
209
  app.use('/api/a2a', createA2AProtocolRoutes());
210
+ // In --no-auth mode, only the deliberately constrained A2A surface remains
211
+ // network-reachable. All general agent/session/tool/workflow routes below are
212
+ // direct-loopback only; otherwise remote chat could invoke tools indirectly.
213
+ app.use(requireLocalAnonymousAccess);
214
+ // Read-only Fleet diagnostics for the CLI. These HTTP wrappers expose the
215
+ // same server state and peer description as the Gateway WebSocket methods.
216
+ app.get('/api/fleet/status', (_req, res) => {
217
+ res.json({
218
+ status: 'ok',
219
+ connections: getConnectionStats(),
220
+ });
221
+ });
222
+ app.get('/api/fleet/describe', async (_req, res) => {
223
+ const describe = getPeerMethodHandler('peer.describe');
224
+ if (!describe) {
225
+ res.status(503).json({ error: 'Fleet peer description is unavailable' });
226
+ return;
227
+ }
228
+ try {
229
+ const description = await describe({}, {
230
+ connectionId: 'http-fleet-cli',
231
+ scopes: ['peer:invoke'],
232
+ traceId: `http-fleet-${Date.now().toString(36)}`,
233
+ depth: 0,
234
+ });
235
+ res.json(fleetHttpDescribeEnvelope(description && typeof description === 'object'
236
+ ? description
237
+ : { description }));
238
+ }
239
+ catch (error) {
240
+ res.status(503).json({
241
+ error: error instanceof Error ? error.message : String(error),
242
+ });
243
+ }
244
+ });
191
245
  // CSRF protection for state-changing endpoints (POST/PUT/DELETE)
192
246
  // Applied AFTER A2A routes so they are never touched by CSRF middleware
193
247
  if (config.authEnabled && process.env.CSRF_PROTECTION !== 'false') {
@@ -208,10 +262,13 @@ function createApp(config) {
208
262
  app.use('/api/tools', toolsRoutes);
209
263
  app.use('/api/sessions', sessionsRoutes);
210
264
  app.use('/api/memory', memoryRoutes);
265
+ app.use('/api/lessons', lessonsRoutes);
266
+ app.use('/api/cognition', createCognitionRoutes(cognitiveHub));
211
267
  app.use('/api/workflows', createWorkflowApiRouter());
212
268
  app.use('/api/acp', createACPRoutes());
213
269
  app.use('/api/cloud/tasks', createCloudTaskRoutes());
214
270
  app.use('/api/webhooks', createWebhookRoutes());
271
+ app.use('/api', runsRoutes);
215
272
  // OpenAI-compatible alias
216
273
  app.use('/v1/chat', chatRoutes);
217
274
  app.get('/v1/models', requireScope('chat'), (_req, res) => {
@@ -232,7 +289,7 @@ function createApp(config) {
232
289
  }
233
290
  });
234
291
  // Peer route resolution endpoint (for testing/debugging)
235
- app.post('/api/routing/resolve', async (req, res) => {
292
+ app.post('/api/routing/resolve', requireScope('admin'), async (req, res) => {
236
293
  const message = req.body.message;
237
294
  const accountId = req.body.accountId;
238
295
  if (!message) {
@@ -297,12 +354,12 @@ function createApp(config) {
297
354
  res.json({ jobs: [], stats: {} });
298
355
  }
299
356
  });
300
- app.post('/api/cron/jobs/:id/trigger', async (req, res) => {
357
+ app.post('/api/cron/jobs/:id/trigger', requireScope('admin'), async (req, res) => {
301
358
  try {
302
359
  const { getCronScheduler } = await import('../scheduler/cron-scheduler.js');
303
360
  const scheduler = getCronScheduler();
304
361
  await scheduler.loadFromDisk();
305
- const run = await scheduler.runJobNow(req.params.id);
362
+ const run = await scheduler.runJobNow(String(req.params.id || ''));
306
363
  if (run) {
307
364
  res.json({ success: true, run });
308
365
  }
@@ -325,7 +382,7 @@ function createApp(config) {
325
382
  res.json({});
326
383
  }
327
384
  });
328
- app.post('/api/notifications/preferences', async (req, res) => {
385
+ app.post('/api/notifications/preferences', requireScope('admin'), async (req, res) => {
329
386
  try {
330
387
  if (!req.body || typeof req.body !== 'object') {
331
388
  res.status(400).json({ error: 'Request body must be a JSON object' });
@@ -351,7 +408,7 @@ function createApp(config) {
351
408
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
352
409
  }
353
410
  });
354
- app.post('/api/webhooks', async (req, res) => {
411
+ app.post('/api/webhooks', requireScope('admin'), async (req, res) => {
355
412
  try {
356
413
  const { name, agentMessage, secret } = req.body;
357
414
  if (!name || typeof name !== 'string' || !agentMessage || typeof agentMessage !== 'string') {
@@ -371,11 +428,11 @@ function createApp(config) {
371
428
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
372
429
  }
373
430
  });
374
- app.delete('/api/webhooks/:id', async (req, res) => {
431
+ app.delete('/api/webhooks/:id', requireScope('admin'), async (req, res) => {
375
432
  try {
376
433
  const { WebhookManager } = await import('../webhooks/webhook-manager.js');
377
434
  const mgr = new WebhookManager();
378
- if (mgr.remove(req.params.id)) {
435
+ if (mgr.remove(String(req.params.id || ''))) {
379
436
  res.json({ success: true });
380
437
  }
381
438
  else {
@@ -386,12 +443,12 @@ function createApp(config) {
386
443
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
387
444
  }
388
445
  });
389
- app.post('/api/webhooks/:id/trigger', async (req, res) => {
446
+ app.post('/api/webhooks/:id/trigger', requireScope('admin'), async (req, res) => {
390
447
  try {
391
448
  const { WebhookManager } = await import('../webhooks/webhook-manager.js');
392
449
  const mgr = new WebhookManager();
393
450
  const signature = req.headers['x-webhook-signature'];
394
- const result = mgr.processPayload(req.params.id, req.body, signature);
451
+ const result = mgr.processPayload(String(req.params.id || ''), req.body, signature);
395
452
  if ('error' in result) {
396
453
  const status = result.error === 'Webhook not found' ? 404 : 400;
397
454
  res.status(status).json(result);
@@ -446,7 +503,7 @@ function createApp(config) {
446
503
  res.json({ running: false, enabled: false, totalTicks: 0 });
447
504
  }
448
505
  });
449
- app.post('/api/heartbeat/start', async (_req, res) => {
506
+ app.post('/api/heartbeat/start', requireScope('admin'), async (_req, res) => {
450
507
  try {
451
508
  const { getHeartbeatEngine } = await import('../daemon/heartbeat.js');
452
509
  const engine = getHeartbeatEngine();
@@ -457,7 +514,7 @@ function createApp(config) {
457
514
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
458
515
  }
459
516
  });
460
- app.post('/api/heartbeat/stop', async (_req, res) => {
517
+ app.post('/api/heartbeat/stop', requireScope('admin'), async (_req, res) => {
461
518
  try {
462
519
  const { getHeartbeatEngine } = await import('../daemon/heartbeat.js');
463
520
  const engine = getHeartbeatEngine();
@@ -468,7 +525,7 @@ function createApp(config) {
468
525
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
469
526
  }
470
527
  });
471
- app.post('/api/heartbeat/tick', async (_req, res) => {
528
+ app.post('/api/heartbeat/tick', requireScope('admin'), async (_req, res) => {
472
529
  try {
473
530
  const { getHeartbeatEngine } = await import('../daemon/heartbeat.js');
474
531
  const engine = getHeartbeatEngine();
@@ -504,7 +561,7 @@ function createApp(config) {
504
561
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
505
562
  }
506
563
  });
507
- app.post('/api/hub/install', async (req, res) => {
564
+ app.post('/api/hub/install', requireScope('admin'), async (req, res) => {
508
565
  try {
509
566
  const { name, version } = req.body;
510
567
  if (!name || typeof name !== 'string') {
@@ -524,11 +581,11 @@ function createApp(config) {
524
581
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
525
582
  }
526
583
  });
527
- app.delete('/api/hub/:name', async (req, res) => {
584
+ app.delete('/api/hub/:name', requireScope('admin'), async (req, res) => {
528
585
  try {
529
586
  const { getSkillsHub } = await import('../skills/hub.js');
530
587
  const hub = getSkillsHub();
531
- const removed = await hub.uninstall(req.params.name);
588
+ const removed = await hub.uninstall(String(req.params.name || ''));
532
589
  if (removed) {
533
590
  res.json({ success: true });
534
591
  }
@@ -563,7 +620,7 @@ function createApp(config) {
563
620
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
564
621
  }
565
622
  });
566
- app.put('/api/identity/:name', async (req, res) => {
623
+ app.put('/api/identity/:name', requireScope('admin'), async (req, res) => {
567
624
  try {
568
625
  const { content } = req.body;
569
626
  if (!content || typeof content !== 'string') {
@@ -577,7 +634,7 @@ function createApp(config) {
577
634
  const { getIdentityManager } = await import('../identity/identity-manager.js');
578
635
  const mgr = getIdentityManager();
579
636
  await mgr.load(process.cwd());
580
- await mgr.set(req.params.name, content);
637
+ await mgr.set(String(req.params.name || ''), content);
581
638
  res.json({ success: true });
582
639
  }
583
640
  catch (error) {
@@ -605,7 +662,7 @@ function createApp(config) {
605
662
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
606
663
  }
607
664
  });
608
- app.post('/api/groups/block', async (req, res) => {
665
+ app.post('/api/groups/block', requireScope('admin'), async (req, res) => {
609
666
  try {
610
667
  const { userId } = req.body;
611
668
  if (!userId || typeof userId !== 'string') {
@@ -621,11 +678,11 @@ function createApp(config) {
621
678
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
622
679
  }
623
680
  });
624
- app.delete('/api/groups/block/:userId', async (req, res) => {
681
+ app.delete('/api/groups/block/:userId', requireScope('admin'), async (req, res) => {
625
682
  try {
626
683
  const { getGroupSecurity } = await import('../channels/group-security.js');
627
684
  const mgr = getGroupSecurity();
628
- if (mgr.removeFromBlocklist(req.params.userId)) {
685
+ if (mgr.removeFromBlocklist(String(req.params.userId || ''))) {
629
686
  res.json({ success: true });
630
687
  }
631
688
  else {
@@ -647,7 +704,7 @@ function createApp(config) {
647
704
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
648
705
  }
649
706
  });
650
- app.post('/api/auth-profiles', async (req, res) => {
707
+ app.post('/api/auth-profiles', requireScope('admin'), async (req, res) => {
651
708
  try {
652
709
  const profile = req.body;
653
710
  if (!profile || typeof profile !== 'object') {
@@ -676,11 +733,11 @@ function createApp(config) {
676
733
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
677
734
  }
678
735
  });
679
- app.delete('/api/auth-profiles/:id', async (req, res) => {
736
+ app.delete('/api/auth-profiles/:id', requireScope('admin'), async (req, res) => {
680
737
  try {
681
738
  const { getAuthProfileManager } = await import('../auth/profile-manager.js');
682
739
  const mgr = getAuthProfileManager();
683
- if (mgr.removeProfile(req.params.id)) {
740
+ if (mgr.removeProfile(String(req.params.id || ''))) {
684
741
  res.json({ success: true });
685
742
  }
686
743
  else {
@@ -691,7 +748,7 @@ function createApp(config) {
691
748
  res.status(500).json({ error: error instanceof Error ? error.message : String(error) });
692
749
  }
693
750
  });
694
- app.post('/api/auth-profiles/reset', async (_req, res) => {
751
+ app.post('/api/auth-profiles/reset', requireScope('admin'), async (_req, res) => {
695
752
  try {
696
753
  const { resetAuthProfileManager, getAuthProfileManager } = await import('../auth/profile-manager.js');
697
754
  resetAuthProfileManager();
@@ -750,16 +807,113 @@ function createApp(config) {
750
807
  get: { summary: 'Historical metrics data', tags: ['Metrics'] },
751
808
  },
752
809
  '/api/chat': {
753
- post: { summary: 'Send chat message', tags: ['Chat'] },
810
+ post: {
811
+ summary: 'Send chat message',
812
+ tags: ['Chat'],
813
+ requestBody: {
814
+ required: true,
815
+ content: {
816
+ 'application/json': {
817
+ schema: {
818
+ type: 'object',
819
+ required: ['messages'],
820
+ properties: {
821
+ messages: { type: 'array', items: { type: 'object' } },
822
+ sessionId: {
823
+ type: 'string',
824
+ maxLength: 512,
825
+ description: 'Logical conversation shared by REST chat and tool calls.',
826
+ },
827
+ stream: { type: 'boolean' },
828
+ },
829
+ },
830
+ },
831
+ },
832
+ },
833
+ },
754
834
  },
755
835
  '/api/chat/completions': {
756
- post: { summary: 'OpenAI-compatible chat completions', tags: ['Chat'] },
836
+ post: {
837
+ summary: 'OpenAI-compatible chat completions',
838
+ tags: ['Chat'],
839
+ requestBody: {
840
+ required: true,
841
+ content: {
842
+ 'application/json': {
843
+ schema: {
844
+ type: 'object',
845
+ required: ['messages'],
846
+ properties: {
847
+ messages: { type: 'array', items: { type: 'object' } },
848
+ session_id: {
849
+ type: 'string',
850
+ maxLength: 512,
851
+ description: 'OpenAI-style logical conversation identifier.',
852
+ },
853
+ sessionId: {
854
+ type: 'string',
855
+ maxLength: 512,
856
+ description: 'Code Buddy alias for session_id.',
857
+ },
858
+ stream: { type: 'boolean' },
859
+ },
860
+ },
861
+ },
862
+ },
863
+ },
864
+ },
757
865
  },
758
866
  '/api/tools': {
759
867
  get: { summary: 'List available tools', tags: ['Tools'] },
760
868
  },
761
869
  '/api/tools/{name}/execute': {
762
- post: { summary: 'Execute a tool', tags: ['Tools'] },
870
+ post: {
871
+ summary: 'Execute a tool',
872
+ tags: ['Tools'],
873
+ requestBody: {
874
+ content: {
875
+ 'application/json': {
876
+ schema: {
877
+ type: 'object',
878
+ properties: {
879
+ parameters: { type: 'object' },
880
+ confirmed: { type: 'boolean' },
881
+ sessionId: {
882
+ type: 'string',
883
+ maxLength: 512,
884
+ description: 'Logical conversation shared with REST chat.',
885
+ },
886
+ },
887
+ },
888
+ },
889
+ },
890
+ },
891
+ },
892
+ },
893
+ '/api/tools/batch': {
894
+ post: {
895
+ summary: 'Execute a sequence of tools in one logical conversation',
896
+ tags: ['Tools'],
897
+ requestBody: {
898
+ required: true,
899
+ content: {
900
+ 'application/json': {
901
+ schema: {
902
+ type: 'object',
903
+ required: ['tools'],
904
+ properties: {
905
+ tools: { type: 'array', maxItems: 10, items: { type: 'object' } },
906
+ sessionId: {
907
+ type: 'string',
908
+ maxLength: 512,
909
+ description: 'Logical conversation shared with REST chat.',
910
+ },
911
+ },
912
+ },
913
+ },
914
+ },
915
+ },
916
+ },
763
917
  },
764
918
  '/api/sessions': {
765
919
  get: { summary: 'List sessions', tags: ['Sessions'] },
@@ -836,6 +990,8 @@ function createApp(config) {
836
990
  },
837
991
  });
838
992
  });
993
+ // Canvas / A2UI (documented at /__codebuddy__/canvas/:id and /__codebuddy__/a2ui/)
994
+ app.use('/__codebuddy__', createCanvasRouter());
839
995
  // Dashboard SPA
840
996
  app.use('/__codebuddy__/dashboard', createDashboardRouter());
841
997
  // 404 handler
@@ -886,7 +1042,9 @@ export async function startServer(userConfig = {}) {
886
1042
  catch {
887
1043
  /* prometheus exporter optional */
888
1044
  }
889
- const app = createApp(config);
1045
+ const cognitiveHub = new CognitiveHub();
1046
+ const cognitionPort = new InProcessCognitivePort(cognitiveHub, createInternalCognitivePrincipal('embedded-cowork'));
1047
+ const app = createApp(config, cognitiveHub);
890
1048
  // Optional TLS: serve the API (including /api/mobile) over HTTPS when
891
1049
  // CODEBUDDY_HTTPS / CODEBUDDY_MOBILE_TLS is set so the mobile-supervision
892
1050
  // endpoint can be exposed off-device securely. Default (no env) is plain HTTP,
@@ -898,6 +1056,8 @@ export async function startServer(userConfig = {}) {
898
1056
  const server = tlsOptions
899
1057
  ? createHttpsServer(tlsOptions, app)
900
1058
  : createServer(app);
1059
+ server._cognitiveHub = cognitiveHub;
1060
+ server._cognitionPort = cognitionPort;
901
1061
  const startChannelBridge = async (baseUrl) => {
902
1062
  try {
903
1063
  const { getChannelManager } = await import('../channels/index.js');
@@ -947,7 +1107,11 @@ export async function startServer(userConfig = {}) {
947
1107
  // Setup WebSocket if enabled
948
1108
  if (config.websocketEnabled) {
949
1109
  await setupWebSocket(server, config);
1110
+ const unwireCognition = wireCognitionBridge(cognitiveHub);
1111
+ server._unwireCognition =
1112
+ unwireCognition;
950
1113
  logger.info('WebSocket server enabled at /ws');
1114
+ logger.info('Cognitive bus enabled at /ws (bounded, scoped, resumable)');
951
1115
  // Dedicated desktop (Cowork) endpoint for the conversational core only
952
1116
  // (chat / sessions / live stream events). Speaks the Cowork ClientEvent
953
1117
  // /ServerEvent protocol, auth at handshake (JWT), origin-hardened. Mounted
@@ -981,6 +1145,11 @@ export async function startServer(userConfig = {}) {
981
1145
  // needed: the bridge wraps standalone executors and runs gates
982
1146
  // (allowlist + fleetSafe + workspace root) per invocation.
983
1147
  wirePeerToolBridge();
1148
+ // CB2 INNOV-4 — pull-only CKG federation. The method remains registered
1149
+ // when disabled so callers receive CKG_SYNC_NOT_ENABLED; its handler gates
1150
+ // before touching the ledger.
1151
+ wirePeerCkgBridge();
1152
+ wirePeerMissionExchangeBridge();
984
1153
  // Phase (d).16a — auto-detect the peer.chat client from env
985
1154
  // (priority order: ollama > grok > anthropic > gemini > openai).
986
1155
  // When no key is detected, peer.chat still wires but answers
@@ -988,16 +1157,16 @@ export async function startServer(userConfig = {}) {
988
1157
  // so remote Claudes know what they're talking to.
989
1158
  (async () => {
990
1159
  try {
991
- const { createPeerChatClientFromEnv } = await import('../fleet/peer-chat-client-factory.js');
1160
+ const { createPeerChatClientFromEnv, createPeerChatClientForProvider } = await import('../fleet/peer-chat-client-factory.js');
992
1161
  const factory = createPeerChatClientFromEnv();
993
1162
  if (factory) {
994
- wirePeerChatBridge(() => factory.client, factory.info);
995
- await wirePeerSessionBridge(() => factory.client);
1163
+ wirePeerChatBridge(() => factory.client, factory.info, (provider, model) => createPeerChatClientForProvider(provider, model));
1164
+ await wirePeerSessionBridge(() => factory.client, factory.info, (provider, model) => createPeerChatClientForProvider(provider, model));
996
1165
  logger.info(`[fleet] peer.chat wired: ${factory.info.provider} (${factory.info.model}${factory.info.isLocal ? ', local' : ''})`);
997
1166
  }
998
1167
  else {
999
- wirePeerChatBridge(() => null);
1000
- await wirePeerSessionBridge(() => null);
1168
+ wirePeerChatBridge(() => null, null, (provider, model) => createPeerChatClientForProvider(provider, model));
1169
+ await wirePeerSessionBridge(() => null, null, (provider, model) => createPeerChatClientForProvider(provider, model));
1001
1170
  logger.info('[fleet] peer.chat wired without provider — set GOOGLE_API_KEY / GROK_API_KEY / ... or OLLAMA_HOST to activate');
1002
1171
  }
1003
1172
  }
@@ -1028,15 +1197,45 @@ export async function startServer(userConfig = {}) {
1028
1197
  sensoryWired = true; // wire once per process (a 2nd start would double listeners + re-bind the port)
1029
1198
  try {
1030
1199
  const { startSensoryBridge } = await import('../sensory/sensory-bridge.js');
1031
- const { wireSensoryReactions } = await import('../sensory/reactions.js');
1200
+ const { shouldWireSpeechReaction, wireSensoryReactions } = await import('../sensory/reactions.js');
1032
1201
  const { getHeartbeatScheduler } = await import('../sensory/heartbeat-scheduler.js');
1033
1202
  const sensoryBridgeHandle = startSensoryBridge();
1203
+ sensoryTeardown.push(() => sensoryBridgeHandle.close());
1204
+ await sensoryBridgeHandle.ready;
1034
1205
  const unwireReactions = wireSensoryReactions();
1035
- sensoryTeardown.push(() => sensoryBridgeHandle.close(), unwireReactions);
1036
- // Vision reaction (opt-in) — vision/motion → camera_analyze (local gemma).
1206
+ const { wireSensoryWorkspace } = await import('../cognition/sensory-workspace.js');
1207
+ const embodiedCognition = wireSensoryWorkspace({
1208
+ workspace: cognitiveHub.workspace,
1209
+ mesh: cognitiveHub.mesh,
1210
+ });
1211
+ const { CognitiveContextProjector } = await import('../cognition/context-renderer.js');
1212
+ const cognitiveContextProjector = new CognitiveContextProjector(embodiedCognition.workspace);
1213
+ sensoryTeardown.push(unwireReactions, () => embodiedCognition.close());
1214
+ logger.info('Embodied cognition: Enabled in shadow mode (bounded workspace + parallel specialist mailboxes)');
1215
+ if (config.websocketEnabled && process.env.CODEBUDDY_AVATAR_BRIDGE !== 'false') {
1216
+ const [{ wireAvatarGatewayBridge }, { broadcast }] = await Promise.all([
1217
+ import('../avatar/avatar-gateway-bridge.js'),
1218
+ import('./websocket/handler.js'),
1219
+ ]);
1220
+ const unsubscribeAvatar = wireAvatarGatewayBridge(broadcast);
1221
+ sensoryTeardown.push(unsubscribeAvatar);
1222
+ logger.info('Avatar performance bridge: Enabled (Gateway avatar:event, scope avatar:read)');
1223
+ }
1224
+ // Vision reaction (opt-in) — vision/motion → bounded local VLM description.
1037
1225
  // Requires a shared token: a frame can trigger the webcam, so refuse to
1038
1226
  // wire it on an unauthenticated bridge.
1039
1227
  const sensoryToken = process.env.CODEBUDDY_SENSORY_TOKEN;
1228
+ // One shared response decider for the whole sensory session: the vision
1229
+ // arrival greeting opens the engagement window (markEngaged) that the
1230
+ // speech reaction's gate reads, so a greeted visitor's natural reply is
1231
+ // treated as addressed — no wake-word needed. Without this shared wiring
1232
+ // the greeting played but never opened a conversation.
1233
+ const { createResponseDecider, resolveSensoryResponsePolicy } = await import('../sensory/respond-decider.js');
1234
+ const responsePolicy = resolveSensoryResponsePolicy();
1235
+ for (const warning of responsePolicy.warnings) {
1236
+ logger.warn(`[respond-policy] ${warning}`);
1237
+ }
1238
+ const responseDecider = createResponseDecider({ chimeIn: responsePolicy.chimeIn });
1040
1239
  {
1041
1240
  const { shouldWireVisionReaction, wireVisionReaction } = await import('../sensory/vision-reaction.js');
1042
1241
  if (shouldWireVisionReaction({ camera: process.env.CODEBUDDY_SENSORY_CAMERA, token: sensoryToken })) {
@@ -1046,6 +1245,23 @@ export async function startServer(userConfig = {}) {
1046
1245
  else if (process.env.CODEBUDDY_SENSORY_CAMERA === 'true') {
1047
1246
  logger.warn('Sensory vision reaction NOT enabled: set CODEBUDDY_SENSORY_TOKEN to allow camera triggering.');
1048
1247
  }
1248
+ // Semantic vision events (person_entered/lost, drowsy) from the vision sidecar.
1249
+ if (shouldWireVisionReaction({ camera: process.env.CODEBUDDY_SENSORY_CAMERA, token: sensoryToken })) {
1250
+ const { wireSemanticVisionReaction } = await import('../sensory/semantic-vision-reaction.js');
1251
+ sensoryTeardown.push(wireSemanticVisionReaction({ onEngage: () => responseDecider.markEngaged('arrival') }));
1252
+ logger.info('Sensory semantic-vision reaction: Enabled (person/drowsy → alert + greet→engage)');
1253
+ }
1254
+ // Event→action rules engine (a camera event triggers code) — opt-in + token-gated,
1255
+ // since rules can run shell. Safety lives in sensory-action-executor (env-only context,
1256
+ // destructive-block). Off unless CODEBUDDY_SENSORY_RULES=true AND a token is set.
1257
+ if (process.env.CODEBUDDY_SENSORY_RULES === 'true' && sensoryToken) {
1258
+ const { wireSensoryRules } = await import('../sensory/sensory-rules-engine.js');
1259
+ sensoryTeardown.push(wireSensoryRules());
1260
+ logger.info('Sensory rules engine: Enabled (event → shell/webhook/alert/agent)');
1261
+ }
1262
+ else if (process.env.CODEBUDDY_SENSORY_RULES === 'true') {
1263
+ logger.warn('Sensory rules NOT enabled: set CODEBUDDY_SENSORY_TOKEN (rules can run shell).');
1264
+ }
1049
1265
  }
1050
1266
  // Screen reaction (opt-in) — also token-gated (an injected analyzer could capture the desktop).
1051
1267
  if (process.env.CODEBUDDY_SENSORY_SCREEN === 'true') {
@@ -1058,11 +1274,373 @@ export async function startServer(userConfig = {}) {
1058
1274
  logger.warn('Sensory screen reaction NOT enabled: set CODEBUDDY_SENSORY_TOKEN.');
1059
1275
  }
1060
1276
  }
1277
+ // Perceptive pair (opt-in) — existing screen text/keyframes → one
1278
+ // conductor-arbitrated local voice suggestion. No capture, agent turn,
1279
+ // edit or remote notification is performed.
1280
+ if (process.env.CODEBUDDY_SENSORY_ERRORWATCH === 'true') {
1281
+ const { wireErrorWatchReaction } = await import('../sensory/error-watch-reaction.js');
1282
+ sensoryTeardown.push(wireErrorWatchReaction());
1283
+ logger.info('Sensory error watch: Enabled (screen error → local voice suggestion)');
1284
+ }
1061
1285
  // Speech reaction (opt-in) — speech_end → STT → 'hearing' percept (+ onHeard hook).
1062
- if (process.env.CODEBUDDY_SENSORY_SPEECH === 'true') {
1286
+ // With CODEBUDDY_SENSORY_SPEAK=true the loop closes: STT → think (local $0) → speak (Piper).
1287
+ if (shouldWireSpeechReaction({
1288
+ speech: process.env.CODEBUDDY_SENSORY_SPEECH,
1289
+ token: sensoryToken,
1290
+ })) {
1063
1291
  const { wireSpeechReaction } = await import('../sensory/speech-reaction.js');
1064
- sensoryTeardown.push(wireSpeechReaction());
1065
- logger.info('Sensory speech reaction: Enabled (speech_end STT percept)');
1292
+ if (process.env.CODEBUDDY_SENSORY_SPEAK === 'true') {
1293
+ const { makeVoiceReply, playCachedConversationCue, describeVoiceReadiness, prewarmVoiceModel, prewarmVoiceRuntime, resolveVoiceModel, } = await import('../sensory/voice-loop.js');
1294
+ const readiness = describeVoiceReadiness();
1295
+ // Fail LOUD: a wired-but-silent robot looks broken. Name what to set.
1296
+ for (const w of readiness.warnings)
1297
+ logger.warn(`[voice] ${w}`);
1298
+ const { registerDefaultVoiceSpecialists, isLoopbackCognitiveRoute } = await import('../cognition/voice-specialists.js');
1299
+ void resolveVoiceModel('Bonjour Lisa', {
1300
+ forceFastLane: true,
1301
+ })
1302
+ .then((specialistRoute) => {
1303
+ const registration = registerDefaultVoiceSpecialists(embodiedCognition.mesh, specialistRoute, {
1304
+ enabled: process.env.CODEBUDDY_COGNITIVE_SPECIALISTS !== 'false',
1305
+ maxActivationsPerHour: Number(process.env.CODEBUDDY_COGNITIVE_SPECIALIST_MAX_PER_HOUR ?? 30),
1306
+ });
1307
+ logger.info(`[cognition] voice specialists ${registration.enabled ? 'enabled' : 'disabled'} ` +
1308
+ `reason=${registration.reason} models=${specialistRoute.model} ` +
1309
+ `ids=${registration.specialistIds.join(',') || 'none'}`);
1310
+ })
1311
+ .catch((error) => {
1312
+ logger.warn(`[cognition] voice specialists unavailable: ${error instanceof Error ? error.message : String(error)}`);
1313
+ });
1314
+ const acquireCognitiveContext = (route, heard) => {
1315
+ const privacyClearance = route.baseURL && isLoopbackCognitiveRoute(route.baseURL)
1316
+ ? 'local-only'
1317
+ : 'cloud-ok';
1318
+ const lease = cognitiveContextProjector.begin({
1319
+ consumerId: 'voice:resident',
1320
+ privacyClearance,
1321
+ query: heard,
1322
+ maxItems: 4,
1323
+ maxChars: 1_200,
1324
+ });
1325
+ return lease.leaseId ? lease : null;
1326
+ };
1327
+ // Pay the real cold costs (route probe, Ollama model load, common Piper clips)
1328
+ // before somebody speaks. All work is background and never delays server readiness.
1329
+ const prewarmFactLane = async () => {
1330
+ const factModel = process.env.CODEBUDDY_SENSORY_SPEAK_FACT_MODEL?.trim();
1331
+ if (!factModel)
1332
+ return;
1333
+ const route = await resolveVoiceModel('Pourquoi le ciel est-il bleu ?');
1334
+ const result = await prewarmVoiceModel({ route });
1335
+ logger.info(`[voice] factual model warm: model=${result.model} ` +
1336
+ `${result.warmed ? `${result.durationMs}ms` : result.reason || 'skipped'}`);
1337
+ };
1338
+ void prewarmVoiceRuntime()
1339
+ .then(async (result) => {
1340
+ logger.info(`[voice] runtime warm: model=${result.route.model} ` +
1341
+ `route=${result.routeMs}ms ollama=${result.model.warmed ? `${result.model.durationMs}ms` : result.model.reason || 'skipped'} ` +
1342
+ `tts=${result.tts.cached}/${result.tts.attempted} (${result.tts.durationMs}ms)`);
1343
+ await prewarmFactLane();
1344
+ })
1345
+ .catch((err) => {
1346
+ logger.warn(`[voice] runtime prewarm failed: ${err instanceof Error ? err.message : String(err)}`);
1347
+ });
1348
+ const refreshValue = Number(process.env.CODEBUDDY_VOICE_MODEL_REFRESH_MS);
1349
+ const modelRefreshMs = Number.isFinite(refreshValue) && refreshValue >= 0 ? refreshValue : 15 * 60_000;
1350
+ if (process.env.CODEBUDDY_VOICE_MODEL_PREWARM !== 'false' &&
1351
+ modelRefreshMs > 0) {
1352
+ const keepWarmTimer = setInterval(() => {
1353
+ void prewarmVoiceModel()
1354
+ .then(() => prewarmFactLane())
1355
+ .catch(() => undefined);
1356
+ }, modelRefreshMs);
1357
+ keepWarmTimer.unref();
1358
+ sensoryTeardown.push(() => clearInterval(keepWarmTimer));
1359
+ }
1360
+ // Build the richer relationship graph before the first user turn. The cache remains
1361
+ // latency-bounded if startup warming has not completed when somebody speaks.
1362
+ if (process.env.CODEBUDDY_COMPANION_RELATIONAL === 'true') {
1363
+ void import('../companion/relational-context.js')
1364
+ .then((m) => m.prewarmVoiceRelationalContext())
1365
+ .catch(() => undefined);
1366
+ }
1367
+ // ACT (opt-in): a spoken command drives a REAL agent turn (can edit/run) under a
1368
+ // permission posture. Default off → today's chatty companion reply.
1369
+ // Both paths use the hybrid for conversational MEMORY + persona warmth + phatic
1370
+ // short-circuit. With ACT on, a real question/command escalates to a GROUNDED agent
1371
+ // turn (reads/searches under the posture). With ACT off, ordinary dialogue stays on
1372
+ // the fast warm lane while Lisa can still inspect herself in read-only plan mode.
1373
+ const { makeHybridReply, classifyLisaIntrospection } = await import('../sensory/hybrid-reply.js');
1374
+ const { getCrossChannelConversationBridge } = await import('../conversation/cross-channel-bridge.js');
1375
+ const { createCanonicalVoiceReplySpeaker, speakCanonicalVoiceInitiative, } = await import('../conversation/voice-continuity.js');
1376
+ const conversationBridge = getCrossChannelConversationBridge();
1377
+ // Resolve activity on every turn. The voice process may start
1378
+ // before Telegram/Cowork publishes the rendezvous event.
1379
+ const sharedHistory = () => conversationBridge.isActive() ? conversationBridge.history() : [];
1380
+ let replyFn;
1381
+ if (readiness.act) {
1382
+ // Grounded turn can take a few seconds → speak a short ack first so a real
1383
+ // question isn't met with silence. Optional repo cwd so it grounds on real files.
1384
+ const { sayNow } = await import('../sensory/voice-loop.js');
1385
+ const speakCwd = process.env.CODEBUDDY_SENSORY_SPEAK_CWD;
1386
+ replyFn = makeHybridReply({
1387
+ permissionMode: readiness.permissionMode || 'default',
1388
+ ...(speakCwd ? { cwd: speakCwd } : {}),
1389
+ sharedHistory,
1390
+ acquireCognitiveContext,
1391
+ ack: async (_transcript, opts) => {
1392
+ await sayNow("D'accord, je regarde ça.", {
1393
+ signal: opts?.signal,
1394
+ phoneDelivery: 'never',
1395
+ });
1396
+ },
1397
+ });
1398
+ }
1399
+ else {
1400
+ const { sayNow } = await import('../sensory/voice-loop.js');
1401
+ const speakCwd = process.env.CODEBUDDY_SENSORY_SPEAK_CWD;
1402
+ replyFn = makeHybridReply({
1403
+ permissionMode: 'plan',
1404
+ ...(speakCwd ? { cwd: speakCwd } : {}),
1405
+ classify: (heard) => classifyLisaIntrospection(heard) !== null,
1406
+ sharedHistory,
1407
+ acquireCognitiveContext,
1408
+ ack: async (_transcript, opts) => {
1409
+ await sayNow("D'accord, je regarde ça.", {
1410
+ signal: opts?.signal,
1411
+ phoneDelivery: 'never',
1412
+ });
1413
+ },
1414
+ });
1415
+ }
1416
+ let latestVoiceTiming;
1417
+ const reply = makeVoiceReply({
1418
+ replyFn,
1419
+ onConversationTurn: async (turn) => {
1420
+ await conversationBridge.recordVoiceTurn(turn);
1421
+ },
1422
+ onCorrelatedConversationTurn: (turn) => {
1423
+ if (turn.role === 'assistant') {
1424
+ embodiedCognition.mesh.publish({
1425
+ kind: 'result',
1426
+ producerId: 'voice:dialogue',
1427
+ correlationId: turn.turnId ?? `voice-assistant:${Date.now()}`,
1428
+ salience: 0.8,
1429
+ confidence: 1,
1430
+ privacy: 'local-only',
1431
+ provenance: { source: 'voice-loop' },
1432
+ ttlMs: 5 * 60_000,
1433
+ payload: { role: turn.role, content: turn.content, surface: 'voice' },
1434
+ });
1435
+ }
1436
+ },
1437
+ onTiming: (timing) => {
1438
+ latestVoiceTiming = timing;
1439
+ },
1440
+ });
1441
+ // Human-like response policy: contextual/addressed always install the shared
1442
+ // decider. Only contextual permits the optional high-bar chime-in judge; addressed
1443
+ // keeps deterministic address/greeting/continuity only. `always` is the explicit
1444
+ // unfiltered push-to-talk/test escape hatch resolved and warned at startup above.
1445
+ // Reminder voice-ack: a spoken "c'est fait" marks a PENDING reminder done. It binds
1446
+ // only to a reminder fired in its window (safety: never from ambient speech / the
1447
+ // chime-in LLM), bypasses the silence gate, reads the bind back, and short-circuits
1448
+ // the normal reply so the robot doesn't both confirm AND chat.
1449
+ // `reply` is a VoiceReplyHandler (callable + `.interrupt()`); the wrappers below
1450
+ // replace it with plain handlers, so type onHeard by the call contract they share.
1451
+ let onHeard = reply;
1452
+ let reminderShortcut;
1453
+ let maisonShortcut;
1454
+ if (process.env.CODEBUDDY_REMINDERS === 'true') {
1455
+ const rem = await import('../companion/reminders.js');
1456
+ const { sayNow } = await import('../sensory/voice-loop.js');
1457
+ // A reminder voice-ack OR a voice-creation both bypass the silence gate and
1458
+ // short-circuit the normal reply (the robot confirms instead of chatting).
1459
+ reminderShortcut = (t) => rem.matchAck(t, Date.now()) !== null ||
1460
+ rem.isSnoozeCommand(t, Date.now()) ||
1461
+ rem.isUndoCommand(t, Date.now()) ||
1462
+ rem.isReminderVoiceCommand(t) ||
1463
+ rem.parseVoiceReminder(t) !== null;
1464
+ onHeard = async (t, context) => {
1465
+ const sayCanonical = createCanonicalVoiceReplySpeaker(t, (content) => sayNow(content, { phoneDelivery: 'never' }), conversationBridge);
1466
+ // Spoken undo FIRST: a bare "annule" right after a creation reverts it (the
1467
+ // confirm-and-await flow, ambient-style — the confirmation read the cadence
1468
+ // back, the correction stays natural speech). Window-bounded, so it never
1469
+ // hijacks an "annule" said minutes later in conversation.
1470
+ const undone = rem.undoPending(t, Date.now());
1471
+ if (undone) {
1472
+ await rem.removeReminder(undone.id);
1473
+ await sayCanonical(`OK, j'annule le rappel : ${undone.label}.`);
1474
+ return;
1475
+ }
1476
+ // Snooze a pending reminder ("dans 10 minutes" / "plus tard") before anything else.
1477
+ const snoozed = await rem.snoozePending(t, Date.now());
1478
+ if (snoozed) {
1479
+ const mins = Math.max(1, Math.round(snoozed.delayMs / 60_000));
1480
+ await sayCanonical(`D'accord, je te le rappelle dans ${mins} minute${mins > 1 ? 's' : ''}.`);
1481
+ return;
1482
+ }
1483
+ const id = rem.matchAck(t, Date.now());
1484
+ if (id) {
1485
+ const done = await rem.markDone(id, 'voice');
1486
+ if (done)
1487
+ await sayCanonical(rem.reminderReadback(done.label));
1488
+ return;
1489
+ }
1490
+ // Manage reminders by voice (list / remove / disable) BEFORE create, so
1491
+ // "supprime le rappel du train" isn't misread as a new reminder.
1492
+ if (await rem.handleReminderVoiceCommand(t, { speak: sayCanonical }))
1493
+ return;
1494
+ const created = rem.parseVoiceReminder(t);
1495
+ if (created) {
1496
+ try {
1497
+ const r = await rem.addReminder(created);
1498
+ // Arm the spoken undo: a bare "annule" within the window reverts THIS creation.
1499
+ rem.noteCreatedForUndo(r, Date.now());
1500
+ // Read back the CADENCE ("demain" / "tous les jours") so a mis-captured
1501
+ // recurrence is audible on the spot (the train-bug class of confusion).
1502
+ await sayCanonical(`C'est noté : ${r.label}, ${rem.reminderCadencePhrase(r)} à ${r.time}.`);
1503
+ }
1504
+ catch (err) {
1505
+ logger.warn(`[reminders] voice create failed: ${err instanceof Error ? err.message : String(err)}`);
1506
+ }
1507
+ return;
1508
+ }
1509
+ await reply(t, context);
1510
+ };
1511
+ }
1512
+ // Maison shortcuts are deterministic and local: quiet/focus/guest/cooking modes and
1513
+ // named cooking timers do not wait for an LLM. Explicit wording only, so ordinary
1514
+ // conversation still falls through to the normal hybrid reply.
1515
+ {
1516
+ const maison = await import('../companion/maison-voice-actions.js');
1517
+ const { sayNow } = await import('../sensory/voice-loop.js');
1518
+ maisonShortcut = maison.isMaisonVoiceCommand;
1519
+ const inner = onHeard;
1520
+ onHeard = async (t, context) => {
1521
+ const sayCanonical = createCanonicalVoiceReplySpeaker(t, (content) => sayNow(content, { phoneDelivery: 'never' }), conversationBridge);
1522
+ if (await maison.handleMaisonVoiceCommand(t, { speak: sayCanonical }))
1523
+ return;
1524
+ await inner(t, context);
1525
+ };
1526
+ }
1527
+ // Event follow-ups (opt-in): when Patrice mentions a dated future event IN a real
1528
+ // conversation with Lisa, capture it and confirm aloud so a mis-hear is corrected on
1529
+ // the spot; the presence loop later asks how it went. Capture runs AFTER the reply and
1530
+ // fire-and-forget so it never adds reply latency, and is skipped for reminder commands
1531
+ // (those are handled above and would otherwise double as a "future event").
1532
+ if (process.env.CODEBUDDY_COMPANION_EVENT_FOLLOWUPS === 'true') {
1533
+ const ef = await import('../companion/event-followups.js');
1534
+ const { sayNow } = await import('../sensory/voice-loop.js');
1535
+ const extractor = ef.makeLLMEventExtractor();
1536
+ const inner = onHeard;
1537
+ onHeard = async (t, context) => {
1538
+ // Start prospective extraction on its own cognitive lane while
1539
+ // the canonical response is generated and spoken. The result
1540
+ // may propose a later initiative, but never owns this turn's mouth.
1541
+ const capturePromise = reminderShortcut?.(t) || maisonShortcut?.(t)
1542
+ ? null
1543
+ : ef.captureEventFollowUp(t, Date.now(), { extractor })
1544
+ .then((captured) => ({ captured, error: undefined }))
1545
+ .catch((error) => ({ captured: null, error }));
1546
+ await inner(t, context);
1547
+ if (!capturePromise)
1548
+ return;
1549
+ void capturePromise
1550
+ .then(async ({ captured, error }) => {
1551
+ if (error) {
1552
+ logger.warn(`[event-followup] capture failed: ${error instanceof Error ? error.message : String(error)}`);
1553
+ return;
1554
+ }
1555
+ if (captured) {
1556
+ const confirmation = ef.confirmationLine(captured, Date.now());
1557
+ await speakCanonicalVoiceInitiative(confirmation, (content) => sayNow(content, { phoneDelivery: 'never' }), conversationBridge);
1558
+ logger.info(`[event-followup] captured "${captured.event}" → due ${new Date(captured.dueAt).toISOString()}`);
1559
+ }
1560
+ });
1561
+ };
1562
+ logger.info('Event follow-ups: Enabled (CODEBUDDY_COMPANION_EVENT_FOLLOWUPS) — capture dated events from conversation, ask how they went');
1563
+ }
1564
+ const wireOpts = {
1565
+ onHeard,
1566
+ onRecognizedTurn: ({ turnId, text }) => {
1567
+ embodiedCognition.mesh.publish({
1568
+ kind: 'utterance',
1569
+ producerId: 'voice:hearing',
1570
+ correlationId: turnId,
1571
+ salience: 0.9,
1572
+ confidence: 0.9,
1573
+ privacy: 'local-only',
1574
+ provenance: { source: 'recognized-voice-turn' },
1575
+ ttlMs: 5 * 60_000,
1576
+ payload: { role: 'user', content: text, surface: 'voice' },
1577
+ });
1578
+ },
1579
+ // The Rust VAD publishes this before endpointing/STT. Prepare
1580
+ // the grounded standby during the user's own speaking time;
1581
+ // the transcript gate below remains the only authority to talk.
1582
+ onSpeechStart: () => replyFn.prewarm(),
1583
+ // One local offline partial may retarget the prepared model and
1584
+ // MCP set. It is never published, remembered, or treated as a
1585
+ // committed request; only transcript_final can enter cognition.
1586
+ onSpeechPartial: ({ text }) => replyFn.prewarm(text),
1587
+ onBargeInStart: (_payload, interruptedTurnId) => {
1588
+ reply.interrupt(interruptedTurnId);
1589
+ if (interruptedTurnId) {
1590
+ embodiedCognition.mesh.cancelCorrelation(interruptedTurnId);
1591
+ }
1592
+ },
1593
+ onBargeIn: (_text, interruptedTurnId) => {
1594
+ reply.interrupt(interruptedTurnId);
1595
+ if (interruptedTurnId) {
1596
+ embodiedCognition.mesh.cancelCorrelation(interruptedTurnId);
1597
+ }
1598
+ },
1599
+ getResponseTiming: () => {
1600
+ const timing = latestVoiceTiming;
1601
+ latestVoiceTiming = undefined;
1602
+ return timing;
1603
+ },
1604
+ getAttentionSnapshot: () => responseDecider.snapshot(),
1605
+ isAddressed: (text) => responseDecider.isAddressed(text),
1606
+ };
1607
+ if (process.env.CODEBUDDY_SENSORY_BACKCHANNEL === 'true'
1608
+ || process.env.CODEBUDDY_SENSORY_REPAIR === 'true') {
1609
+ wireOpts.onConversationCue = playCachedConversationCue;
1610
+ }
1611
+ if (responsePolicy.gateEnabled) {
1612
+ // Reuse the session decider shared with the vision greeting above, so a
1613
+ // person-arrival greeting's open engagement window carries into this gate.
1614
+ wireOpts.shouldRespond = (t) => reminderShortcut?.(t) || maisonShortcut?.(t)
1615
+ ? Promise.resolve({
1616
+ respond: true,
1617
+ reason: reminderShortcut?.(t) ? 'reminder' : 'maison',
1618
+ })
1619
+ : responseDecider.decide(t);
1620
+ }
1621
+ sensoryTeardown.push(wireSpeechReaction(wireOpts));
1622
+ sensoryTeardown.push(() => replyFn.dispose());
1623
+ sensoryTeardown.push(() => conversationBridge.flush());
1624
+ const gateLabel = responsePolicy.policy === 'always'
1625
+ ? 'always-respond[unfiltered:test-or-push-to-talk-only]'
1626
+ : responsePolicy.policy === 'contextual'
1627
+ ? responsePolicy.chimeIn
1628
+ ? 'gate[contextual+chime-in]'
1629
+ : 'gate[contextual]'
1630
+ : 'gate[addressed:no-chime-in]';
1631
+ logger.info(`Sensory speech reaction: Enabled (speech_end → STT → ${gateLabel} → ${readiness.act ? `agent[${readiness.permissionMode}]` : `think[${readiness.model}]+introspection[plan]`} → speak` +
1632
+ `${readiness.speakReady ? `[${readiness.voice}]` : ' — SILENT until CODEBUDDY_TTS_VOICE is set'})`);
1633
+ if (conversationBridge.isActive() && conversationBridge.config.target) {
1634
+ logger.info(`Conversation bridge: voice ↔ ${conversationBridge.config.target.channel} (configured target, thread ${conversationBridge.config.conversationId})`);
1635
+ }
1636
+ }
1637
+ else {
1638
+ sensoryTeardown.push(wireSpeechReaction());
1639
+ logger.info('Sensory speech reaction: Enabled (speech_end → STT → percept)');
1640
+ }
1641
+ }
1642
+ else if (process.env.CODEBUDDY_SENSORY_SPEECH === 'true') {
1643
+ logger.warn('Sensory speech reaction NOT enabled: set CODEBUDDY_SENSORY_TOKEN (speech can trigger an agent turn).');
1066
1644
  }
1067
1645
  // Privacy: camera/screen descriptions land in percepts.jsonl — warn if not encrypted at rest.
1068
1646
  if ((process.env.CODEBUDDY_SENSORY_CAMERA === 'true' || process.env.CODEBUDDY_SENSORY_SCREEN === 'true') &&
@@ -1078,6 +1656,25 @@ export async function startServer(userConfig = {}) {
1078
1656
  everyBeats,
1079
1657
  handler: (ctx) => logger.info(`[heartbeat] pacemaker tick — beat ${ctx.beat} (load ${ctx.load1 ?? '?'})`),
1080
1658
  });
1659
+ const configuredCognitionEvery = Number(process.env.CODEBUDDY_COGNITION_METRICS_EVERY ?? 30);
1660
+ const cognitionEvery = Number.isFinite(configuredCognitionEvery)
1661
+ ? Math.max(10, Math.floor(configuredCognitionEvery))
1662
+ : 30;
1663
+ heart.register({
1664
+ name: 'cognitive-observability',
1665
+ everyBeats: cognitionEvery,
1666
+ handler: () => {
1667
+ const workspaceMetrics = embodiedCognition.workspace.metrics();
1668
+ const specialistMetrics = embodiedCognition.mesh.metrics();
1669
+ const queued = specialistMetrics.reduce((sum, metric) => sum + metric.queued, 0);
1670
+ const active = specialistMetrics.reduce((sum, metric) => sum + metric.active, 0);
1671
+ const dropped = specialistMetrics.reduce((sum, metric) => sum + metric.dropped, 0);
1672
+ const privacyRejected = specialistMetrics.reduce((sum, metric) => sum + metric.privacyRejected, 0);
1673
+ logger.info(`[cognition] workspace=${workspaceMetrics.size} world=${embodiedCognition.snapshotWorld().length} ` +
1674
+ `queued=${queued} active=${active} dropped=${dropped} ` +
1675
+ `privacyRejected=${privacyRejected}`);
1676
+ },
1677
+ });
1081
1678
  // Dreaming — consolidate short-term sensory memory every N beats.
1082
1679
  const dreamEvery = Math.max(1, Number(process.env.CODEBUDDY_DREAM_EVERY ?? 30));
1083
1680
  heart.register({
@@ -1088,16 +1685,275 @@ export async function startServer(userConfig = {}) {
1088
1685
  await runDreamingPass();
1089
1686
  },
1090
1687
  });
1688
+ // System vitals (opt-in) — turn the EXISTING system monitors into heartbeat-paced
1689
+ // percepts on the bus (resource_threshold / disk_low / fleet_saturated / process_runaway),
1690
+ // so declarative rules replace busy-loop monitoring. The scheduler's inFlight lock means
1691
+ // one sample per beat, never a loop. Default OFF => byte-identical behavior.
1692
+ if (process.env.CODEBUDDY_SYSTEM_VITALS === 'true') {
1693
+ const vitalsEvery = Math.max(1, Number(process.env.CODEBUDDY_SYSTEM_VITALS_EVERY ?? 30));
1694
+ heart.register({
1695
+ name: 'system-vitals',
1696
+ everyBeats: vitalsEvery,
1697
+ handler: async () => {
1698
+ const { runSystemVitalsPass } = await import('../sensory/system-vitals-emitter.js');
1699
+ await runSystemVitalsPass();
1700
+ },
1701
+ });
1702
+ sensoryTeardown.push(() => heart.unregister('system-vitals'));
1703
+ logger.info(`System vitals: Enabled (CODEBUDDY_SYSTEM_VITALS) - heartbeat-paced resource percepts every ${vitalsEvery} beats`);
1704
+ }
1705
+ // Lisa selfie cache refill (opt-in) — one image per beat when ComfyUI is
1706
+ // reachable and load is low. Default OFF ⇒ byte-identical. Tests inject a
1707
+ // fake generator; this path never busy-loops if the generator is down.
1708
+ if (process.env.CODEBUDDY_LISA_SELFIE_REFILL === 'true') {
1709
+ const refillEvery = Math.max(1, Number(process.env.CODEBUDDY_LISA_SELFIE_REFILL_EVERY ?? 40));
1710
+ heart.register({
1711
+ name: 'lisa-selfie-refill',
1712
+ everyBeats: refillEvery,
1713
+ handler: async (ctx) => {
1714
+ const { runLisaSelfieRefillPass } = await import('../companion/lisa-selfie-refill.js');
1715
+ await runLisaSelfieRefillPass({
1716
+ ...(typeof ctx.load1 === 'number' ? { load1: () => ctx.load1 } : {}),
1717
+ });
1718
+ },
1719
+ });
1720
+ sensoryTeardown.push(() => heart.unregister('lisa-selfie-refill'));
1721
+ logger.info(`Lisa selfie refill: Enabled (CODEBUDDY_LISA_SELFIE_REFILL) - at most one image every ${refillEvery} beats`);
1722
+ }
1723
+ // Schedule ticks (opt-in) — emit a `time/tick` percept each pass so rules can fire at a
1724
+ // time of day (match.kind:'tick' + between/filters on hhmm) with no busy loop. The
1725
+ // heartbeat is the clock. Default OFF => byte-identical behavior.
1726
+ if (process.env.CODEBUDDY_SCHEDULE_TICKS === 'true') {
1727
+ const ticksEvery = Math.max(1, Number(process.env.CODEBUDDY_SCHEDULE_TICKS_EVERY ?? 20));
1728
+ heart.register({
1729
+ name: 'schedule-ticks',
1730
+ everyBeats: ticksEvery,
1731
+ handler: async () => {
1732
+ const { runSchedulePass } = await import('../sensory/schedule-emitter.js');
1733
+ runSchedulePass();
1734
+ },
1735
+ });
1736
+ sensoryTeardown.push(() => heart.unregister('schedule-ticks'));
1737
+ logger.info(`Schedule ticks: Enabled (CODEBUDDY_SCHEDULE_TICKS) - time/tick percept every ${ticksEvery} beats`);
1738
+ }
1739
+ // Domain-event bridge (opt-in) — re-emit the agent's internal domain events
1740
+ // (fleet:activity, agent:loop_detected, cost:*, context:pre_compact) as sensory
1741
+ // percepts, so ONE rule grammar covers physical perception AND inner life. Anti-loop:
1742
+ // it never subscribes to sensory:perception. Default OFF => byte-identical behavior.
1743
+ if (process.env.CODEBUDDY_DOMAIN_EVENTS === 'true') {
1744
+ const { wireDomainEventBridge } = await import('../sensory/domain-event-bridge.js');
1745
+ sensoryTeardown.push(wireDomainEventBridge());
1746
+ logger.info('Domain-event bridge: Enabled (CODEBUDDY_DOMAIN_EVENTS) - domain events -> sensory:perception');
1747
+ }
1748
+ // Episodic journal (opt-in) — consolidate the heard DIALOGUE into "what we talked about"
1749
+ // so the arrival opener / follow-ups can reference it. Distinct from dreaming (sensor stats).
1750
+ if (process.env.CODEBUDDY_EPISODE_JOURNAL === 'true') {
1751
+ const episodeEvery = Math.max(1, Number(process.env.CODEBUDDY_EPISODE_EVERY ?? 40));
1752
+ heart.register({
1753
+ name: 'episodic-journal',
1754
+ everyBeats: episodeEvery,
1755
+ handler: async () => {
1756
+ const { runEpisodeConsolidation } = await import('../sensory/episodic-journal.js');
1757
+ const { getCrossChannelConversationBridge } = await import('../conversation/cross-channel-bridge.js');
1758
+ await runEpisodeConsolidation({
1759
+ readConversation: async (limit) => getCrossChannelConversationBridge().history(limit),
1760
+ });
1761
+ },
1762
+ });
1763
+ logger.info(`Episodic journal: Enabled (CODEBUDDY_EPISODE_JOURNAL) — dialogue consolidation every ${episodeEvery} beats`);
1764
+ }
1765
+ // Inner life (opt-in) — every N beats Lisa "spends a moment" (a digital-authentic vignette
1766
+ // + her own small mood drift), surfaced via relational memory so a reply can reference what
1767
+ // she did while he was away. Gives her an interior without ever claiming a human life.
1768
+ if (process.env.CODEBUDDY_COMPANION_INNER_LIFE === 'true') {
1769
+ const innerLifeEvery = Math.max(1, Number(process.env.CODEBUDDY_INNER_LIFE_EVERY ?? 50));
1770
+ heart.register({
1771
+ name: 'inner-life',
1772
+ everyBeats: innerLifeEvery,
1773
+ handler: async () => {
1774
+ const { runInnerLifeTick } = await import('../companion/inner-life.js');
1775
+ await runInnerLifeTick();
1776
+ // A fresh vignette/mood should be visible to the next spoken turn.
1777
+ try {
1778
+ const { invalidateVoiceRelationalContext } = await import('../companion/relational-context.js');
1779
+ invalidateVoiceRelationalContext();
1780
+ }
1781
+ catch {
1782
+ /* best-effort refresh */
1783
+ }
1784
+ },
1785
+ });
1786
+ logger.info(`Inner life: Enabled (CODEBUDDY_COMPANION_INNER_LIFE) — a moment to herself every ${innerLifeEvery} beats`);
1787
+ }
1788
+ // Voice-assistant improvement loop (opt-in, MySoulmate-inspired) — reflect on recent
1789
+ // dialogue and adapt over time: learned reply-guidance + bounded trait drift (behavioral
1790
+ // mode; never auto-accepts personal facts — those stay pending for `buddy assistant improve --apply`).
1791
+ if (process.env.CODEBUDDY_VOICE_IMPROVE === 'true') {
1792
+ const improveEvery = Math.max(1, Number(process.env.CODEBUDDY_VOICE_IMPROVE_EVERY ?? 60));
1793
+ heart.register({
1794
+ name: 'voice-improvement',
1795
+ everyBeats: improveEvery,
1796
+ handler: async () => {
1797
+ const { runVoiceImprovementCycle } = await import('../companion/voice-improvement-loop.js');
1798
+ await runVoiceImprovementCycle({ mode: 'behavioral' });
1799
+ },
1800
+ });
1801
+ logger.info(`Voice improvement loop: Enabled (CODEBUDDY_VOICE_IMPROVE) — reflect + adapt every ${improveEvery} beats (behavioral; facts stay pending)`);
1802
+ }
1803
+ // Deterministic conversation-quality loop — evaluates complete user/Lisa exchanges,
1804
+ // stores aggregate metrics only, and applies a reversible guidance line only after the
1805
+ // same weakness recurs. This has no model/API cost and is enabled by default.
1806
+ if (process.env.CODEBUDDY_CONVERSATION_EVAL !== 'false') {
1807
+ const configuredEvery = Number(process.env.CODEBUDDY_CONVERSATION_EVAL_EVERY ?? 30);
1808
+ const evaluationEvery = Number.isFinite(configuredEvery)
1809
+ ? Math.max(5, Math.floor(configuredEvery))
1810
+ : 30;
1811
+ const configuredStreak = Number(process.env.CODEBUDDY_CONVERSATION_EVAL_MIN_STREAK ?? 2);
1812
+ const minIssueStreak = Number.isFinite(configuredStreak)
1813
+ ? Math.max(2, Math.min(5, Math.floor(configuredStreak)))
1814
+ : 2;
1815
+ const configuredCooldown = Number(process.env.CODEBUDDY_CONVERSATION_EVAL_COOLDOWN_MS ?? 6 * 60 * 60_000);
1816
+ const guidanceCooldownMs = Number.isFinite(configuredCooldown)
1817
+ ? Math.max(60_000, configuredCooldown)
1818
+ : 6 * 60 * 60_000;
1819
+ heart.register({
1820
+ name: 'conversation-quality',
1821
+ everyBeats: evaluationEvery,
1822
+ handler: async () => {
1823
+ const { runConversationImprovementCycle } = await import('../companion/conversation-improvement-loop.js');
1824
+ await runConversationImprovementCycle({
1825
+ mode: 'behavioral',
1826
+ minIssueStreak,
1827
+ guidanceCooldownMs,
1828
+ });
1829
+ },
1830
+ });
1831
+ logger.info(`Conversation quality: Enabled — aggregate evaluation every ${evaluationEvery} beats (adapt after ${minIssueStreak} recurring cycle(s))`);
1832
+ }
1833
+ // Fresh-context warmer — structured evidence, not canned LLM prose. It runs on wall
1834
+ // clock time so a changing sensory heartbeat cannot make news unexpectedly stale.
1835
+ if (process.env.CODEBUDDY_PREFETCH !== 'false') {
1836
+ const configuredInterval = Number(process.env.CODEBUDDY_PREFETCH_INTERVAL_MS ?? 15 * 60_000);
1837
+ const prefetchIntervalMs = Number.isFinite(configuredInterval)
1838
+ ? Math.max(60_000, configuredInterval)
1839
+ : 15 * 60_000;
1840
+ const runPrefetch = async () => {
1841
+ const { runPrefetchCycle } = await import('../companion/prefetch-engine.js');
1842
+ await runPrefetchCycle();
1843
+ };
1844
+ void runPrefetch(); // warm the cache immediately, don't wait for the first beat
1845
+ const prefetchTimer = setInterval(() => void runPrefetch(), prefetchIntervalMs);
1846
+ prefetchTimer.unref();
1847
+ sensoryTeardown.push(() => clearInterval(prefetchTimer));
1848
+ logger.info(`Fresh context: Enabled — structured refresh every ${Math.round(prefetchIntervalMs / 60_000)} minute(s)`);
1849
+ }
1850
+ // Jokes top-up (opt-in) — generate a few fresh jokes in the background so Lisa's humour
1851
+ // stays varied. The curated list already works instantly WITHOUT this.
1852
+ if (process.env.CODEBUDDY_JOKES_TOPUP === 'true') {
1853
+ const jokesEvery = Math.max(1, Number(process.env.CODEBUDDY_JOKES_TOPUP_EVERY ?? 200));
1854
+ heart.register({
1855
+ name: 'jokes-topup',
1856
+ everyBeats: jokesEvery,
1857
+ handler: async () => {
1858
+ const { refreshJokePool } = await import('../companion/jokes.js');
1859
+ await refreshJokePool();
1860
+ },
1861
+ });
1862
+ logger.info(`Jokes top-up: Enabled (CODEBUDDY_JOKES_TOPUP) — fresh jokes every ${jokesEvery} beats`);
1863
+ }
1091
1864
  heart.start();
1092
1865
  sensoryTeardown.push(() => heart.stop());
1866
+ // TS pacemaker (opt-in) — emits the same vital/heartbeat percept when
1867
+ // buddy-sense is absent. Auto-disables on a real beat; re-arms after
1868
+ // silence. Default OFF => no timer, byte-identical.
1869
+ if (process.env.CODEBUDDY_HEARTBEAT_FALLBACK === 'true') {
1870
+ const { startHeartbeatFallback } = await import('../sensory/heartbeat-fallback.js');
1871
+ const fallback = startHeartbeatFallback();
1872
+ sensoryTeardown.push(() => fallback.stop());
1873
+ logger.info('Heartbeat fallback: Enabled (CODEBUDDY_HEARTBEAT_FALLBACK) - TS pacemaker until buddy-sense beats');
1874
+ }
1875
+ {
1876
+ const { wireSensoryStatusSnapshot } = await import('../sensory/sensory-status.js');
1877
+ sensoryTeardown.push(wireSensoryStatusSnapshot({
1878
+ treatments: heart.list().map((t) => ({ name: t.name, everyBeats: t.everyBeats })),
1879
+ }));
1880
+ }
1093
1881
  logger.info(`Sensory bridge: Enabled (buddy-sense → event bus; heartbeat treatments every ${everyBeats} beats)`);
1094
1882
  }
1095
1883
  catch (err) {
1096
1884
  logger.warn(`Sensory bridge failed to start: ${err instanceof Error ? err.message : String(err)}`);
1097
1885
  }
1098
1886
  }
1887
+ // Persistent named cooking timers are user-requested alerts, not
1888
+ // spontaneous companion speech. They reuse this server lifecycle and are
1889
+ // enabled by default; set CODEBUDDY_COOKING_TIMERS=false to disable.
1890
+ if (process.env.CODEBUDDY_COOKING_TIMERS !== 'false') {
1891
+ try {
1892
+ const { wireCookingTimerRunner } = await import('../companion/cooking-timer-runner.js');
1893
+ sensoryTeardown.push(wireCookingTimerRunner());
1894
+ logger.info('Cooking timers: Enabled — persistent named alerts, explicit acknowledgement');
1895
+ }
1896
+ catch (err) {
1897
+ logger.warn(`Cooking timers failed to start: ${err instanceof Error ? err.message : String(err)}`);
1898
+ }
1899
+ }
1900
+ // Reminders (opt-in, independent of the sensory daemon so Telegram delivery works without a
1901
+ // mic/camera): a tick loop announces due reminders (voice + Telegram) and escalates a missed
1902
+ // dose to Telegram. Voice acknowledgement ("c'est fait") is wired in the speech block above.
1903
+ if (process.env.CODEBUDDY_REMINDERS === 'true') {
1904
+ try {
1905
+ const { wireReminderRunner } = await import('../companion/reminder-runner.js');
1906
+ sensoryTeardown.push(wireReminderRunner());
1907
+ logger.info('Reminders: Enabled (CODEBUDDY_REMINDERS) — due reminders announced (voice + Telegram); no-ack → re-nag then Telegram');
1908
+ }
1909
+ catch (err) {
1910
+ logger.warn(`Reminders failed to start: ${err instanceof Error ? err.message : String(err)}`);
1911
+ }
1912
+ }
1913
+ // Companion presence (opt-in): the conductor that occasionally says one small warm thing when
1914
+ // the moment warrants (check-in / debrief / encouragement / break) and is otherwise silent.
1915
+ // Hard-gated (quiet hours, presence-aware, hourly cap) — see presence-loop.ts.
1916
+ if (process.env.CODEBUDDY_COMPANION_PRESENCE === 'true') {
1917
+ try {
1918
+ const { wirePresenceLoop } = await import('../companion/presence-loop.js');
1919
+ sensoryTeardown.push(wirePresenceLoop());
1920
+ logger.info('Companion presence: Enabled (CODEBUDDY_COMPANION_PRESENCE) — gentle proactive presence, default-silent');
1921
+ }
1922
+ catch (err) {
1923
+ logger.warn(`Companion presence failed to start: ${err instanceof Error ? err.message : String(err)}`);
1924
+ }
1925
+ }
1926
+ // Companion proactive (opt-in): Lisa reaches out FIRST — morning/evening, after an absence, on
1927
+ // a tenure milestone or a due follow-up — INDEPENDENT of the camera (Telegram voice note when
1928
+ // away, spoken when present). Priority-scored, single winner, 12h cooldown. See proactive-engine.ts.
1929
+ if (process.env.CODEBUDDY_COMPANION_PROACTIVE === 'true') {
1930
+ try {
1931
+ const { wireProactiveLoop } = await import('../companion/proactive-engine.js');
1932
+ sensoryTeardown.push(wireProactiveLoop());
1933
+ logger.info('Companion proactive: Enabled (CODEBUDDY_COMPANION_PROACTIVE) — reaches out first, camera-independent (spoken/Telegram)');
1934
+ }
1935
+ catch (err) {
1936
+ logger.warn(`Companion proactive failed to start: ${err instanceof Error ? err.message : String(err)}`);
1937
+ }
1938
+ }
1939
+ // Companion idle (opt-in): when ALONE, it does useful safe work ($0, read-only/reversible) and
1940
+ // leaves reviewable artifacts in the idle log — never acts on your repos/prod. See idle-loop.ts.
1941
+ if (process.env.CODEBUDDY_COMPANION_IDLE === 'true') {
1942
+ try {
1943
+ const { wireIdleLoop } = await import('../companion/idle-loop.js');
1944
+ sensoryTeardown.push(wireIdleLoop());
1945
+ logger.info('Companion idle: Enabled (CODEBUDDY_COMPANION_IDLE) — alone-only useful work, $0, artifacts only');
1946
+ }
1947
+ catch (err) {
1948
+ logger.warn(`Companion idle failed to start: ${err instanceof Error ? err.message : String(err)}`);
1949
+ }
1950
+ }
1099
1951
  logger.info(`Auth: ${config.authEnabled ? 'Enabled' : 'Disabled'}`);
1100
- if (!isLoopbackHost(config.host)) {
1952
+ const exposure = diagnoseServerExposure(config);
1953
+ if (exposure.unsafe) {
1954
+ logger.warn(exposure.message);
1955
+ }
1956
+ else if (exposure.networkExposed) {
1101
1957
  logger.warn(`Server is bound to ${config.host} (non-loopback) and is reachable from the network. ` +
1102
1958
  `Auth is ${config.authEnabled ? 'ENABLED' : 'DISABLED'}; CORS origins: ${[config.corsOrigins ?? []].flat().join(', ') || '(none)'}. ` +
1103
1959
  `Bind to localhost with HOST=127.0.0.1 if remote access is not intended.`);
@@ -1141,7 +1997,7 @@ export async function startServer(userConfig = {}) {
1141
1997
  catch {
1142
1998
  logger.info('Peer Routing: not initialized');
1143
1999
  }
1144
- resolve({ app, server, config });
2000
+ resolve({ app, server, config, cognitionPort });
1145
2001
  });
1146
2002
  server.on('error', reject);
1147
2003
  });
@@ -1161,6 +2017,11 @@ export async function stopServer(server) {
1161
2017
  }
1162
2018
  }
1163
2019
  sensoryWired = false;
2020
+ const cognitiveHub = server._cognitiveHub;
2021
+ const cognitionPort = server
2022
+ ._cognitionPort;
2023
+ cognitionPort?.close();
2024
+ cognitiveHub?.close();
1164
2025
  return new Promise((resolve, reject) => {
1165
2026
  // Phase (d).9 — cancel the heartbeat timer so it doesn't keep
1166
2027
  // emitting against a half-shut server. Idempotent.
@@ -1177,6 +2038,12 @@ export async function stopServer(server) {
1177
2038
  unwirePeerSessionBridge();
1178
2039
  // Phase (d).23 — un-register peer.tool.invoke + .stream.
1179
2040
  unwirePeerToolBridge();
2041
+ unwirePeerCkgBridge();
2042
+ unwirePeerMissionExchangeBridge();
2043
+ unwireMobileConfirmationBridge();
2044
+ const unwireCognition = server
2045
+ ._unwireCognition;
2046
+ unwireCognition?.();
1180
2047
  // Detach the channel-A2A bridge handler + shut down the
1181
2048
  // ChannelManager so polling loops (Telegram, Discord, ...) stop.
1182
2049
  const bridgeStop = server