@cjhyy/code-shell-core 0.7.1 → 0.8.1

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 (595) hide show
  1. package/README.md +36 -23
  2. package/dist/agent/agent-definition-registry.d.ts +2 -2
  3. package/dist/agent/agent-definition-registry.js +47 -10
  4. package/dist/agent/agent-definition.d.ts +5 -0
  5. package/dist/agent/agent-definition.js +14 -0
  6. package/dist/automation/index.d.ts +7 -4
  7. package/dist/automation/index.js +4 -2
  8. package/dist/automation/runner.js +3 -1
  9. package/dist/automation/scheduler.d.ts +57 -1
  10. package/dist/automation/scheduler.js +123 -23
  11. package/dist/automation/store.d.ts +6 -2
  12. package/dist/automation/store.js +7 -3
  13. package/dist/capabilities/index.d.ts +109 -0
  14. package/dist/capabilities/index.js +80 -0
  15. package/dist/capability-control/disabled-lists.d.ts +2 -1
  16. package/dist/capability-control/disabled-lists.js +3 -5
  17. package/dist/capability-control/overlay.d.ts +14 -1
  18. package/dist/capability-control/overlay.js +40 -0
  19. package/dist/capability-control/service.js +6 -4
  20. package/dist/cli/agent-server-stdio.d.ts +1 -1
  21. package/dist/cli/agent-server-stdio.js +66 -6
  22. package/dist/cli/agent-server-tcp.js +7 -3
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +17 -1
  26. package/dist/context/manager.js +36 -1
  27. package/dist/credentials/access.d.ts +3 -1
  28. package/dist/credentials/access.js +24 -3
  29. package/dist/credentials/index.d.ts +1 -1
  30. package/dist/credentials/index.js +1 -1
  31. package/dist/credentials/oauth.d.ts +4 -1
  32. package/dist/credentials/oauth.js +14 -0
  33. package/dist/credentials/store.d.ts +15 -1
  34. package/dist/credentials/store.js +17 -4
  35. package/dist/credentials/types.d.ts +24 -0
  36. package/dist/credentials/use-credential-tool.js +15 -1
  37. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  38. package/dist/engine/auxiliary-pipeline.js +181 -0
  39. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  40. package/dist/{settings → engine}/disk-defaults.js +5 -2
  41. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  42. package/dist/engine/dynamic-tool-defs.js +4 -0
  43. package/dist/engine/engine.d.ts +254 -195
  44. package/dist/engine/engine.js +1812 -2041
  45. package/dist/engine/file-history-hook.d.ts +11 -0
  46. package/dist/engine/file-history-hook.js +31 -0
  47. package/dist/engine/goal-judge-context.d.ts +9 -0
  48. package/dist/engine/goal-judge-context.js +234 -0
  49. package/dist/engine/injected-context-cache.d.ts +6 -0
  50. package/dist/engine/injected-context-cache.js +13 -0
  51. package/dist/engine/input-attachments.d.ts +1 -1
  52. package/dist/engine/model-facade.d.ts +3 -3
  53. package/dist/engine/model-facade.js +15 -14
  54. package/dist/engine/permission-controller.d.ts +55 -0
  55. package/dist/engine/permission-controller.js +148 -0
  56. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  57. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  58. package/dist/engine/run-accounting.d.ts +41 -0
  59. package/dist/engine/run-accounting.js +126 -0
  60. package/dist/engine/run-context.d.ts +44 -0
  61. package/dist/engine/run-context.js +88 -0
  62. package/dist/engine/run-environment.d.ts +30 -0
  63. package/dist/engine/run-environment.js +77 -0
  64. package/dist/engine/run-finalize.d.ts +58 -0
  65. package/dist/engine/run-finalize.js +245 -0
  66. package/dist/engine/run-goal.d.ts +58 -0
  67. package/dist/engine/run-goal.js +188 -0
  68. package/dist/engine/run-image-input.d.ts +1 -1
  69. package/dist/engine/run-image-input.js +5 -3
  70. package/dist/engine/run-session-open.d.ts +41 -0
  71. package/dist/engine/run-session-open.js +186 -0
  72. package/dist/engine/run-setup.d.ts +42 -0
  73. package/dist/engine/run-setup.js +58 -0
  74. package/dist/engine/run-tooling.d.ts +125 -0
  75. package/dist/engine/run-tooling.js +283 -0
  76. package/dist/engine/run-types.d.ts +139 -0
  77. package/dist/engine/run-types.js +12 -0
  78. package/dist/engine/run-workspace.d.ts +50 -0
  79. package/dist/engine/run-workspace.js +114 -0
  80. package/dist/engine/steer-queue.d.ts +1 -1
  81. package/dist/engine/subagent-spawner.d.ts +32 -0
  82. package/dist/engine/subagent-spawner.js +287 -0
  83. package/dist/engine/tool-summary.d.ts +2 -2
  84. package/dist/engine/tool-summary.js +2 -2
  85. package/dist/engine/turn-loop.d.ts +49 -10
  86. package/dist/engine/turn-loop.js +370 -104
  87. package/dist/engine/types.d.ts +30 -3
  88. package/dist/engine/types.js +1 -1
  89. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
  90. package/dist/goal/lifecycle.js +482 -0
  91. package/dist/hooks/events.d.ts +24 -10
  92. package/dist/hooks/goal-stop-hook.d.ts +17 -28
  93. package/dist/hooks/goal-stop-hook.js +110 -465
  94. package/dist/hooks/registry.js +1 -1
  95. package/dist/index.d.ts +48 -108
  96. package/dist/index.extension.d.ts +51 -0
  97. package/dist/index.extension.js +39 -0
  98. package/dist/index.internal.d.ts +86 -0
  99. package/dist/index.internal.js +92 -0
  100. package/dist/index.js +34 -123
  101. package/dist/links/cli.d.ts +48 -0
  102. package/dist/links/cli.js +617 -0
  103. package/dist/links/http.d.ts +40 -0
  104. package/dist/links/http.js +166 -0
  105. package/dist/links/index.d.ts +4 -0
  106. package/dist/links/index.js +3 -0
  107. package/dist/links/link-action-tool.d.ts +5 -0
  108. package/dist/links/link-action-tool.js +241 -0
  109. package/dist/links/providers.d.ts +8 -0
  110. package/dist/links/providers.js +665 -0
  111. package/dist/links/types.d.ts +44 -0
  112. package/dist/llm/client-base.d.ts +7 -0
  113. package/dist/llm/client-base.js +60 -0
  114. package/dist/llm/model-pool.d.ts +1 -1
  115. package/dist/llm/model-pool.js +1 -1
  116. package/dist/llm/providers/anthropic.d.ts +1 -0
  117. package/dist/llm/providers/anthropic.js +9 -0
  118. package/dist/llm/providers/openai.d.ts +1 -0
  119. package/dist/llm/providers/openai.js +17 -0
  120. package/dist/model-catalog/index.js +15 -2
  121. package/dist/model-catalog/resolve.d.ts +13 -1
  122. package/dist/model-catalog/resolve.js +37 -2
  123. package/dist/model-catalog/types.d.ts +74 -48
  124. package/dist/model-catalog/types.js +16 -5
  125. package/dist/model-catalog/upsert.d.ts +3 -1
  126. package/dist/model-catalog/upsert.js +9 -0
  127. package/dist/onboarding.d.ts +0 -1
  128. package/dist/onboarding.js +1 -22
  129. package/dist/panel-apps/bindings.d.ts +24 -0
  130. package/dist/panel-apps/bindings.js +69 -0
  131. package/dist/panel-apps/github-archive.d.ts +21 -0
  132. package/dist/panel-apps/github-archive.js +98 -0
  133. package/dist/panel-apps/index.d.ts +4 -0
  134. package/dist/panel-apps/index.js +4 -0
  135. package/dist/panel-apps/installer.d.ts +68 -0
  136. package/dist/panel-apps/installer.js +622 -0
  137. package/dist/panel-apps/manifest.d.ts +364 -0
  138. package/dist/panel-apps/manifest.js +189 -0
  139. package/dist/panel-apps/paths.d.ts +13 -0
  140. package/dist/panel-apps/paths.js +38 -0
  141. package/dist/panel-apps/registry.d.ts +51 -0
  142. package/dist/panel-apps/registry.js +99 -0
  143. package/dist/panel-apps/runtime.d.ts +80 -0
  144. package/dist/panel-apps/runtime.js +154 -0
  145. package/dist/plugins/gitOps.js +8 -1
  146. package/dist/plugins/installedPlugins.d.ts +2 -1
  147. package/dist/plugins/installedPlugins.js +146 -8
  148. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  149. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  150. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  151. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  152. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  153. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  154. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  155. package/dist/plugins/installer/install.d.ts +7 -1
  156. package/dist/plugins/installer/install.js +21 -87
  157. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  158. package/dist/plugins/installer/installFromArchive.js +44 -27
  159. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  160. package/dist/plugins/installer/installFromNpm.js +273 -0
  161. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  162. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  163. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  164. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  165. package/dist/plugins/installer/normalizeManifest.js +306 -0
  166. package/dist/plugins/installer/npmTar.d.ts +13 -0
  167. package/dist/plugins/installer/npmTar.js +321 -0
  168. package/dist/plugins/installer/parseSource.d.ts +11 -0
  169. package/dist/plugins/installer/parseSource.js +48 -0
  170. package/dist/plugins/installer/preview.d.ts +101 -0
  171. package/dist/plugins/installer/preview.js +336 -0
  172. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  173. package/dist/plugins/installer/projectPluginSource.js +140 -0
  174. package/dist/plugins/installer/types.d.ts +775 -0
  175. package/dist/plugins/installer/types.js +100 -0
  176. package/dist/plugins/installer/unzip.d.ts +11 -0
  177. package/dist/plugins/installer/unzip.js +123 -9
  178. package/dist/plugins/installer/update.d.ts +2 -2
  179. package/dist/plugins/installer/update.js +43 -4
  180. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  181. package/dist/plugins/loadPluginHooks.js +97 -86
  182. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  183. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  184. package/dist/plugins/pluginCatalog.d.ts +45 -0
  185. package/dist/plugins/pluginCatalog.js +87 -0
  186. package/dist/plugins/pluginCommandHook.d.ts +6 -0
  187. package/dist/plugins/pluginCommandHook.js +25 -8
  188. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  189. package/dist/plugins/pluginCommandsLoader.js +181 -7
  190. package/dist/plugins/pluginContent.d.ts +10 -1
  191. package/dist/plugins/pluginContent.js +87 -30
  192. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  193. package/dist/plugins/pluginHookApproval.js +160 -0
  194. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  195. package/dist/plugins/pluginHookIntegrity.js +361 -0
  196. package/dist/plugins/pluginInstaller.js +71 -12
  197. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  198. package/dist/plugins/pluginMcpApproval.js +110 -0
  199. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  200. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  201. package/dist/plugins/types.d.ts +30 -0
  202. package/dist/plugins/varRewrite.d.ts +9 -5
  203. package/dist/plugins/varRewrite.js +26 -17
  204. package/dist/preset/index.d.ts +11 -8
  205. package/dist/preset/index.js +62 -203
  206. package/dist/product/define.js +9 -3
  207. package/dist/product/types.d.ts +0 -2
  208. package/dist/profile/activation.d.ts +36 -0
  209. package/dist/profile/activation.js +57 -0
  210. package/dist/profile/catalog-store.d.ts +77 -0
  211. package/dist/profile/catalog-store.js +346 -0
  212. package/dist/profile/catalog.d.ts +54 -0
  213. package/dist/profile/catalog.js +152 -0
  214. package/dist/profile/index.d.ts +7 -0
  215. package/dist/profile/index.js +7 -0
  216. package/dist/profile/requirements.d.ts +76 -0
  217. package/dist/profile/requirements.js +117 -0
  218. package/dist/profile/resolve.d.ts +11 -0
  219. package/dist/profile/resolve.js +41 -0
  220. package/dist/profile/store.d.ts +17 -0
  221. package/dist/profile/store.js +167 -0
  222. package/dist/profile/types.d.ts +321 -0
  223. package/dist/profile/types.js +104 -0
  224. package/dist/prompt/composer.d.ts +46 -7
  225. package/dist/prompt/composer.js +78 -48
  226. package/dist/prompt/instruction-scanner.d.ts +6 -5
  227. package/dist/prompt/instruction-scanner.js +8 -23
  228. package/dist/prompt/section-loader.d.ts +2 -2
  229. package/dist/prompt/section-loader.js +7 -4
  230. package/dist/prompt/sections/browser.md +10 -9
  231. package/dist/prompt/sections/harness-base.md +9 -0
  232. package/dist/protocol/chat-session-manager.d.ts +64 -1
  233. package/dist/protocol/chat-session-manager.js +104 -0
  234. package/dist/protocol/chat-session.d.ts +61 -10
  235. package/dist/protocol/chat-session.js +135 -25
  236. package/dist/protocol/client.d.ts +33 -3
  237. package/dist/protocol/client.js +96 -5
  238. package/dist/protocol/index.d.ts +2 -2
  239. package/dist/protocol/index.js +2 -2
  240. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  241. package/dist/protocol/mobile-remote-types.js +1 -0
  242. package/dist/protocol/server.d.ts +127 -3
  243. package/dist/protocol/server.js +1309 -182
  244. package/dist/protocol/types.d.ts +152 -34
  245. package/dist/protocol/types.js +16 -0
  246. package/dist/run/ArtifactTracker.d.ts +6 -1
  247. package/dist/run/ArtifactTracker.js +29 -21
  248. package/dist/run/EngineRunner.d.ts +2 -0
  249. package/dist/run/EngineRunner.js +1 -0
  250. package/dist/run/RunManager.d.ts +26 -0
  251. package/dist/run/RunManager.js +82 -11
  252. package/dist/run/factory.d.ts +3 -0
  253. package/dist/run/factory.js +2 -0
  254. package/dist/runtime/safe-spawn.d.ts +6 -0
  255. package/dist/runtime/safe-spawn.js +8 -13
  256. package/dist/services/auto-dream.d.ts +13 -1
  257. package/dist/services/auto-dream.js +56 -8
  258. package/dist/services/dream-consolidation.js +10 -1
  259. package/dist/services/memory-orchestrator.js +6 -2
  260. package/dist/services/oauth.js +4 -1
  261. package/dist/services/session-memory.d.ts +4 -4
  262. package/dist/services/session-memory.js +13 -10
  263. package/dist/session/memory.d.ts +26 -7
  264. package/dist/session/memory.js +79 -21
  265. package/dist/session/session-manager.d.ts +182 -28
  266. package/dist/session/session-manager.js +910 -130
  267. package/dist/session/session-message.d.ts +22 -0
  268. package/dist/session/session-message.js +1 -0
  269. package/dist/session/transcript.d.ts +46 -5
  270. package/dist/session/transcript.js +159 -3
  271. package/dist/settings/feature-flags.d.ts +40 -0
  272. package/dist/settings/feature-flags.js +40 -0
  273. package/dist/settings/manager.d.ts +39 -1
  274. package/dist/settings/manager.js +102 -41
  275. package/dist/settings/migrate-config.js +4 -2
  276. package/dist/settings/schema.d.ts +511 -177
  277. package/dist/settings/schema.js +98 -25
  278. package/dist/skills/scanner.d.ts +6 -2
  279. package/dist/skills/scanner.js +160 -9
  280. package/dist/sources/adapter.d.ts +14 -0
  281. package/dist/sources/adapter.js +7 -0
  282. package/dist/sources/adapters/local-files.d.ts +10 -0
  283. package/dist/sources/adapters/local-files.js +127 -0
  284. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  285. package/dist/sources/adapters/mcp-resource.js +41 -0
  286. package/dist/sources/adapters/mock.d.ts +3 -0
  287. package/dist/sources/adapters/mock.js +29 -0
  288. package/dist/sources/binding.d.ts +6 -0
  289. package/dist/sources/binding.js +24 -0
  290. package/dist/sources/catalog.d.ts +6 -0
  291. package/dist/sources/catalog.js +64 -0
  292. package/dist/sources/context-summary.d.ts +8 -0
  293. package/dist/sources/context-summary.js +13 -0
  294. package/dist/sources/credential-status.d.ts +2 -0
  295. package/dist/sources/credential-status.js +13 -0
  296. package/dist/sources/index.d.ts +10 -0
  297. package/dist/sources/index.js +10 -0
  298. package/dist/sources/resolve.d.ts +28 -0
  299. package/dist/sources/resolve.js +47 -0
  300. package/dist/sources/truncate-utf8.d.ts +7 -0
  301. package/dist/sources/truncate-utf8.js +18 -0
  302. package/dist/sources/types.d.ts +71 -0
  303. package/dist/sources/types.js +26 -0
  304. package/dist/testing/fetch-stub.d.ts +32 -0
  305. package/dist/testing/fetch-stub.js +24 -0
  306. package/dist/themes/image.d.ts +18 -0
  307. package/dist/themes/image.js +117 -0
  308. package/dist/themes/index.d.ts +4 -0
  309. package/dist/themes/index.js +4 -0
  310. package/dist/themes/installer.d.ts +50 -0
  311. package/dist/themes/installer.js +290 -0
  312. package/dist/themes/manifest.d.ts +102 -0
  313. package/dist/themes/manifest.js +86 -0
  314. package/dist/themes/paths.d.ts +14 -0
  315. package/dist/themes/paths.js +33 -0
  316. package/dist/tool-system/browser-bridge.d.ts +53 -11
  317. package/dist/tool-system/browser-bridge.js +8 -9
  318. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  319. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  320. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  321. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  322. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  323. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  324. package/dist/tool-system/builtin/agent-progress.js +83 -0
  325. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  326. package/dist/tool-system/builtin/agent-registry.js +178 -9
  327. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  328. package/dist/tool-system/builtin/agent.d.ts +2 -0
  329. package/dist/tool-system/builtin/agent.js +274 -33
  330. package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
  331. package/dist/tool-system/builtin/background-jobs.js +96 -4
  332. package/dist/tool-system/builtin/background-work.d.ts +6 -0
  333. package/dist/tool-system/builtin/background-work.js +8 -1
  334. package/dist/tool-system/builtin/bash.js +5 -2
  335. package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
  336. package/dist/tool-system/builtin/browser-tools.js +89 -23
  337. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  338. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  339. package/dist/tool-system/builtin/edit.js +2 -6
  340. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  341. package/dist/tool-system/builtin/file-cache.js +4 -0
  342. package/dist/tool-system/builtin/generate-image.js +17 -10
  343. package/dist/tool-system/builtin/generate-video.js +26 -7
  344. package/dist/tool-system/builtin/grep.js +2 -2
  345. package/dist/tool-system/builtin/image-uploader.js +7 -1
  346. package/dist/tool-system/builtin/index.d.ts +32 -7
  347. package/dist/tool-system/builtin/index.js +237 -167
  348. package/dist/tool-system/builtin/memory.d.ts +6 -0
  349. package/dist/tool-system/builtin/memory.js +36 -15
  350. package/dist/tool-system/builtin/panel.d.ts +9 -0
  351. package/dist/tool-system/builtin/panel.js +314 -0
  352. package/dist/tool-system/builtin/read.js +5 -1
  353. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  354. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  355. package/dist/tool-system/builtin/sources.d.ts +8 -0
  356. package/dist/tool-system/builtin/sources.js +137 -0
  357. package/dist/tool-system/builtin/tool-search.js +7 -2
  358. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  359. package/dist/tool-system/builtin/web-fetch.js +17 -13
  360. package/dist/tool-system/builtin/web-search.js +1 -3
  361. package/dist/tool-system/capability-module.d.ts +93 -0
  362. package/dist/tool-system/capability-module.js +53 -0
  363. package/dist/tool-system/context.d.ts +77 -19
  364. package/dist/tool-system/executor.js +75 -50
  365. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  366. package/dist/tool-system/external-tool-exposure.js +304 -0
  367. package/dist/tool-system/mcp-manager.d.ts +11 -1
  368. package/dist/tool-system/mcp-manager.js +19 -4
  369. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  370. package/dist/tool-system/mcp-tool-policy.js +34 -0
  371. package/dist/tool-system/panel-bridge.d.ts +53 -0
  372. package/dist/tool-system/panel-bridge.js +1 -0
  373. package/dist/tool-system/path-policy.js +99 -2
  374. package/dist/tool-system/permission.d.ts +26 -0
  375. package/dist/tool-system/permission.js +46 -0
  376. package/dist/tool-system/registry.d.ts +12 -1
  377. package/dist/tool-system/registry.js +31 -7
  378. package/dist/tool-system/sandbox/index.js +3 -8
  379. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  380. package/dist/tool-system/session-tool-host.d.ts +139 -0
  381. package/dist/tool-system/session-tool-host.js +167 -0
  382. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  383. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  384. package/dist/tool-system/validation.d.ts +14 -7
  385. package/dist/tool-system/validation.js +701 -7
  386. package/dist/types.d.ts +186 -20
  387. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  388. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  389. package/dist/utils/file-mutex.d.ts +65 -0
  390. package/dist/utils/file-mutex.js +145 -0
  391. package/dist/utils/json.d.ts +2 -4
  392. package/dist/utils/json.js +2 -4
  393. package/dist/utils/lockfile.d.ts +30 -1
  394. package/dist/utils/lockfile.js +2 -2
  395. package/dist/utils/secret-scrubber.d.ts +8 -0
  396. package/dist/utils/secret-scrubber.js +227 -0
  397. package/dist/utils/toolDisplay.js +1 -1
  398. package/package.json +20 -5
  399. package/THIRD_PARTY_NOTICES.md +0 -206
  400. package/dist/arena/arena.d.ts +0 -45
  401. package/dist/arena/arena.js +0 -362
  402. package/dist/arena/context/context-tools.d.ts +0 -16
  403. package/dist/arena/context/context-tools.js +0 -272
  404. package/dist/arena/context/within-root.d.ts +0 -7
  405. package/dist/arena/context/within-root.js +0 -15
  406. package/dist/arena/detect-mode.d.ts +0 -20
  407. package/dist/arena/detect-mode.js +0 -78
  408. package/dist/arena/digest-builder.d.ts +0 -25
  409. package/dist/arena/digest-builder.js +0 -120
  410. package/dist/arena/index.d.ts +0 -29
  411. package/dist/arena/index.js +0 -29
  412. package/dist/arena/iterate/convergence.d.ts +0 -25
  413. package/dist/arena/iterate/convergence.js +0 -103
  414. package/dist/arena/iterate/formats/index.d.ts +0 -22
  415. package/dist/arena/iterate/formats/index.js +0 -283
  416. package/dist/arena/iterate/index.d.ts +0 -11
  417. package/dist/arena/iterate/index.js +0 -9
  418. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  419. package/dist/arena/iterate/iterative-arena.js +0 -237
  420. package/dist/arena/iterate/parse.d.ts +0 -42
  421. package/dist/arena/iterate/parse.js +0 -123
  422. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  423. package/dist/arena/iterate/phases/argue.js +0 -165
  424. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  425. package/dist/arena/iterate/phases/revise.js +0 -62
  426. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  427. package/dist/arena/iterate/phases/tournament.js +0 -113
  428. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  429. package/dist/arena/iterate/tools/web-tools.js +0 -54
  430. package/dist/arena/iterate/types.d.ts +0 -152
  431. package/dist/arena/iterate/types.js +0 -8
  432. package/dist/arena/ledger.d.ts +0 -47
  433. package/dist/arena/ledger.js +0 -159
  434. package/dist/arena/lenses/architecture.d.ts +0 -5
  435. package/dist/arena/lenses/architecture.js +0 -22
  436. package/dist/arena/lenses/engineering.d.ts +0 -5
  437. package/dist/arena/lenses/engineering.js +0 -22
  438. package/dist/arena/lenses/general.d.ts +0 -5
  439. package/dist/arena/lenses/general.js +0 -20
  440. package/dist/arena/lenses/index.d.ts +0 -16
  441. package/dist/arena/lenses/index.js +0 -47
  442. package/dist/arena/lenses/product.d.ts +0 -5
  443. package/dist/arena/lenses/product.js +0 -22
  444. package/dist/arena/model-presets.d.ts +0 -23
  445. package/dist/arena/model-presets.js +0 -44
  446. package/dist/arena/phases/adjudication.d.ts +0 -25
  447. package/dist/arena/phases/adjudication.js +0 -142
  448. package/dist/arena/phases/build-consensus.d.ts +0 -30
  449. package/dist/arena/phases/build-consensus.js +0 -85
  450. package/dist/arena/phases/claim-registry.d.ts +0 -26
  451. package/dist/arena/phases/claim-registry.js +0 -60
  452. package/dist/arena/phases/cross-review.d.ts +0 -47
  453. package/dist/arena/phases/cross-review.js +0 -224
  454. package/dist/arena/phases/debate-rounds.d.ts +0 -28
  455. package/dist/arena/phases/debate-rounds.js +0 -161
  456. package/dist/arena/phases/participant-research.d.ts +0 -39
  457. package/dist/arena/phases/participant-research.js +0 -316
  458. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
  459. package/dist/arena/phases/planning-detail-expansion.js +0 -120
  460. package/dist/arena/planner.d.ts +0 -28
  461. package/dist/arena/planner.js +0 -312
  462. package/dist/arena/providers/docs.d.ts +0 -7
  463. package/dist/arena/providers/docs.js +0 -111
  464. package/dist/arena/providers/git.d.ts +0 -8
  465. package/dist/arena/providers/git.js +0 -174
  466. package/dist/arena/providers/index.d.ts +0 -32
  467. package/dist/arena/providers/index.js +0 -132
  468. package/dist/arena/providers/none.d.ts +0 -7
  469. package/dist/arena/providers/none.js +0 -11
  470. package/dist/arena/providers/repo.d.ts +0 -7
  471. package/dist/arena/providers/repo.js +0 -258
  472. package/dist/arena/render/session.d.ts +0 -17
  473. package/dist/arena/render/session.js +0 -190
  474. package/dist/arena/render/terminal.d.ts +0 -34
  475. package/dist/arena/render/terminal.js +0 -286
  476. package/dist/arena/strategies/discussion.d.ts +0 -25
  477. package/dist/arena/strategies/discussion.js +0 -143
  478. package/dist/arena/strategies/index.d.ts +0 -15
  479. package/dist/arena/strategies/index.js +0 -28
  480. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  481. package/dist/arena/strategies/language-wrapper.js +0 -102
  482. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  483. package/dist/arena/strategies/lens-wrapper.js +0 -236
  484. package/dist/arena/strategies/planning.d.ts +0 -30
  485. package/dist/arena/strategies/planning.js +0 -225
  486. package/dist/arena/strategies/review.d.ts +0 -26
  487. package/dist/arena/strategies/review.js +0 -168
  488. package/dist/arena/strategies/utils.d.ts +0 -36
  489. package/dist/arena/strategies/utils.js +0 -603
  490. package/dist/arena/tools/selector.d.ts +0 -17
  491. package/dist/arena/tools/selector.js +0 -61
  492. package/dist/arena/transitions.d.ts +0 -53
  493. package/dist/arena/transitions.js +0 -97
  494. package/dist/arena/types.d.ts +0 -518
  495. package/dist/arena/types.js +0 -27
  496. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  497. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  498. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  499. package/dist/cc-orchestrator/cc-capability.js +0 -53
  500. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  501. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  502. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  503. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  504. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  505. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  506. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  507. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  508. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  509. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  510. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  511. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  512. package/dist/cc-orchestrator/index.d.ts +0 -8
  513. package/dist/cc-orchestrator/index.js +0 -8
  514. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  515. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  516. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  517. package/dist/cc-orchestrator/session-discovery.js +0 -125
  518. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  519. package/dist/cc-orchestrator/session-history.js +0 -150
  520. package/dist/cron/cron-runtime.d.ts +0 -2
  521. package/dist/cron/cron-runtime.js +0 -2
  522. package/dist/cron/cron-store.d.ts +0 -2
  523. package/dist/cron/cron-store.js +0 -2
  524. package/dist/cron/scheduler.d.ts +0 -7
  525. package/dist/cron/scheduler.js +0 -7
  526. package/dist/engine/goal.js +0 -206
  527. package/dist/external-agents/config.d.ts +0 -2
  528. package/dist/external-agents/config.js +0 -15
  529. package/dist/external-agents/types.d.ts +0 -31
  530. package/dist/git/parse-log.d.ts +0 -13
  531. package/dist/git/parse-log.js +0 -21
  532. package/dist/git/utils.d.ts +0 -49
  533. package/dist/git/utils.js +0 -161
  534. package/dist/git/worktree/crud.d.ts +0 -72
  535. package/dist/git/worktree/crud.js +0 -235
  536. package/dist/git/worktree/diff.d.ts +0 -14
  537. package/dist/git/worktree/diff.js +0 -82
  538. package/dist/git/worktree/git-exec.d.ts +0 -7
  539. package/dist/git/worktree/git-exec.js +0 -87
  540. package/dist/git/worktree/index.d.ts +0 -5
  541. package/dist/git/worktree/index.js +0 -5
  542. package/dist/git/worktree/query.d.ts +0 -43
  543. package/dist/git/worktree/query.js +0 -128
  544. package/dist/git/worktree/slug.d.ts +0 -11
  545. package/dist/git/worktree/slug.js +0 -58
  546. package/dist/git/worktree.d.ts +0 -1
  547. package/dist/git/worktree.js +0 -5
  548. package/dist/lsp/client.d.ts +0 -41
  549. package/dist/lsp/client.js +0 -186
  550. package/dist/lsp/manager.d.ts +0 -40
  551. package/dist/lsp/manager.js +0 -155
  552. package/dist/lsp/root-path.d.ts +0 -9
  553. package/dist/lsp/root-path.js +0 -12
  554. package/dist/lsp/servers.d.ts +0 -16
  555. package/dist/lsp/servers.js +0 -60
  556. package/dist/prompt/sections/coding.md +0 -35
  557. package/dist/quota/credentials.d.ts +0 -3
  558. package/dist/quota/credentials.js +0 -80
  559. package/dist/quota/index.d.ts +0 -36
  560. package/dist/quota/index.js +0 -155
  561. package/dist/quota/types.d.ts +0 -48
  562. package/dist/quota/types.js +0 -13
  563. package/dist/review/review-prompt.d.ts +0 -28
  564. package/dist/review/review-prompt.js +0 -81
  565. package/dist/state.d.ts +0 -160
  566. package/dist/state.js +0 -267
  567. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  568. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  569. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  570. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  571. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  572. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  573. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  574. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  575. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  576. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  577. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  578. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  579. package/dist/tool-system/builtin/arena.d.ts +0 -31
  580. package/dist/tool-system/builtin/arena.js +0 -416
  581. package/dist/tool-system/builtin/brief.d.ts +0 -6
  582. package/dist/tool-system/builtin/brief.js +0 -41
  583. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  584. package/dist/tool-system/builtin/check-quota.js +0 -34
  585. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  586. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  587. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  588. package/dist/tool-system/builtin/lsp.js +0 -144
  589. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  590. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  591. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  592. package/dist/tool-system/builtin/worktree.js +0 -363
  593. /package/dist/{external-agents → links}/types.js +0 -0
  594. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  595. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,20 +1,19 @@
1
1
  /**
2
2
  * BrowserBridge — driver-agnostic contract between the browser tools (core)
3
- * and whatever drives the actual browser (renderer's webview via CDP).
3
+ * and whatever drives the actual browser (a renderer webview, hidden main-
4
+ * process BrowserWindow, or external provider via CDP).
4
5
  *
5
6
  * Spec: docs/superpowers/specs/2026-06-16-browser-automation-mvp.md
6
7
  *
7
- * The core tools only know this interface. The renderer implements it on top
8
- * of the webview's `webContents.debugger` (CDP): observe via
9
- * Accessibility.getFullAXTree, act via DOM.getBoxModel Input.dispatchMouseEvent.
10
- * Keeping it driver-agnostic means a future implementation (a hidden
11
- * BrowserWindow for unattended runs, or an external engine) can swap in without
12
- * touching the tools. Undefined on ToolContext → headless / no panel → tools
13
- * degrade with a clear error.
8
+ * The core tools only know this interface. Desktop can implement it with a
9
+ * Playwright-owned context, Electron `webContents.debugger`, or an authorized
10
+ * Chrome-extension CDP transport. Keeping it driver-agnostic lets those targets
11
+ * swap without touching the tools. Undefined on ToolContext means the current
12
+ * host did not provide browser automation, so tools degrade with a clear error.
14
13
  */
15
14
  /** One interactive element from the page's accessibility tree. */
16
15
  export interface BrowserElement {
17
- /** Per-snapshot reference id (e1, e2, ); the renderer maps it back to a
16
+ /** Per-snapshot reference id (for example s3:e1); the host maps it back to a
18
17
  * backendDOMNodeId for the action tools. Reassigned each snapshot. */
19
18
  ref: string;
20
19
  /** ARIA role (button, link, textbox, checkbox, combobox, …). */
@@ -29,26 +28,69 @@ export interface BrowserElement {
29
28
  export interface BrowserSnapshot {
30
29
  url: string;
31
30
  title?: string;
31
+ /** Main-frame document identity. Changes on every cross-document navigation. */
32
+ documentId?: string;
33
+ /** Identity of this exact observation; refs belong only to this snapshot. */
34
+ snapshotId?: string;
32
35
  elements: BrowserElement[];
36
+ /** Operational/policy failure. Unlike needsHuman, this must not trigger takeover. */
37
+ detail?: string;
33
38
  /** Set when the page needs the user to act (login wall / 2FA) — agent should
34
39
  * hand control back to the user rather than retry. */
35
40
  needsHuman?: string;
36
41
  }
42
+ export type BrowserResultCode = "OK" | "STALE_SNAPSHOT" | "STALE_CURSOR" | "NO_PROGRESS" | "NAVIGATION" | "BLOCKED" | "NEEDS_HUMAN" | "FAILED";
43
+ export interface BrowserScrollState {
44
+ x: number;
45
+ y: number;
46
+ maxX: number;
47
+ maxY: number;
48
+ viewportWidth: number;
49
+ viewportHeight: number;
50
+ atTop: boolean;
51
+ atEnd: boolean;
52
+ }
37
53
  export interface BrowserResult {
38
54
  ok: boolean;
55
+ /** Stable machine-readable outcome; detail remains for the model/user. */
56
+ code?: BrowserResultCode;
57
+ /** Whether repeating the same operation without a new observation can help. */
58
+ retryable?: boolean;
39
59
  /** Human-readable detail (error reason, or short success note). */
40
60
  detail?: string;
41
61
  /** True when a ref no longer resolves (DOM changed) → agent should re-snapshot. */
42
62
  staleRef?: boolean;
63
+ documentId?: string;
64
+ documentChanged?: boolean;
65
+ /** Present for scroll-like actions so callers can prove forward progress. */
66
+ scroll?: BrowserScrollState;
67
+ contentChanged?: boolean;
68
+ }
69
+ export interface BrowserReadOptions {
70
+ /** Opaque continuation returned by the previous read call. */
71
+ cursor?: string;
72
+ /** Requested chunk size; the driver clamps it to a safe maximum. */
73
+ maxChars?: number;
43
74
  }
44
75
  /** Result of reading the page's main textual content (扒内容). */
45
76
  export interface BrowserContent {
46
77
  ok: boolean;
47
78
  url: string;
48
79
  title?: string;
80
+ code?: BrowserResultCode;
81
+ documentId?: string;
49
82
  /** Extracted readable text (main content, scripts/styles/nav stripped). */
50
83
  text: string;
51
- /** True if the text was truncated to a cap. */
84
+ /** Cursor represented by this response (the first page uses an implicit start). */
85
+ cursor?: string;
86
+ /** Opaque cursor for the next chunk. Absent when done. */
87
+ nextCursor?: string;
88
+ /** True when the complete normalized document text has been consumed. */
89
+ done?: boolean;
90
+ /** Stable hash of the normalized full text for progress/deduplication. */
91
+ contentHash?: string;
92
+ scroll?: BrowserScrollState;
93
+ /** Compatibility alias for !done. */
52
94
  truncated?: boolean;
53
95
  detail?: string;
54
96
  }
@@ -109,7 +151,7 @@ export interface BrowserBridge {
109
151
  navigate(url: string): Promise<BrowserResult>;
110
152
  scroll(dir: "up" | "down", amount?: number): Promise<BrowserResult>;
111
153
  /** Read the page's main readable text content (for summarizing / extraction). */
112
- readContent(): Promise<BrowserContent>;
154
+ readContent(options?: BrowserReadOptions): Promise<BrowserContent>;
113
155
  /** Extract the page's hyperlink + image URLs (href/src the a11y tree omits). */
114
156
  extractLinks(): Promise<BrowserExtract>;
115
157
  /** Wait until the page finishes loading (or a timeout). */
@@ -1,16 +1,15 @@
1
1
  /**
2
2
  * BrowserBridge — driver-agnostic contract between the browser tools (core)
3
- * and whatever drives the actual browser (renderer's webview via CDP).
3
+ * and whatever drives the actual browser (a renderer webview, hidden main-
4
+ * process BrowserWindow, or external provider via CDP).
4
5
  *
5
6
  * Spec: docs/superpowers/specs/2026-06-16-browser-automation-mvp.md
6
7
  *
7
- * The core tools only know this interface. The renderer implements it on top
8
- * of the webview's `webContents.debugger` (CDP): observe via
9
- * Accessibility.getFullAXTree, act via DOM.getBoxModel Input.dispatchMouseEvent.
10
- * Keeping it driver-agnostic means a future implementation (a hidden
11
- * BrowserWindow for unattended runs, or an external engine) can swap in without
12
- * touching the tools. Undefined on ToolContext → headless / no panel → tools
13
- * degrade with a clear error.
8
+ * The core tools only know this interface. Desktop can implement it with a
9
+ * Playwright-owned context, Electron `webContents.debugger`, or an authorized
10
+ * Chrome-extension CDP transport. Keeping it driver-agnostic lets those targets
11
+ * swap without touching the tools. Undefined on ToolContext means the current
12
+ * host did not provide browser automation, so tools degrade with a clear error.
14
13
  */
15
14
  /** Roles we surface as actionable/meaningful to the agent. */
16
15
  const INTERACTIVE_ROLES = new Set([
@@ -69,7 +68,7 @@ export function flattenAxTree(nodes) {
69
68
  if (node.backendDOMNodeId === undefined)
70
69
  continue;
71
70
  const sensitive = propValue(node, "protected") === true || // ARIA "protected" → password-like
72
- role === "textbox" && /password|密码/i.test(name);
71
+ (role === "textbox" && /password|密码/i.test(name));
73
72
  counter += 1;
74
73
  const ref = `e${counter}`;
75
74
  refToBackendId[ref] = node.backendDOMNodeId;
@@ -21,13 +21,13 @@ export declare const DEFAULT_HEARTBEAT_INTERVAL_MS = 30000;
21
21
  export interface AgentHeartbeatConfig {
22
22
  intervalMs?: number;
23
23
  /** Sink for each heartbeat event (server forwards to the client). */
24
- publish: (sessionId: string, event: StreamEvent) => void;
24
+ publish?: (sessionId: string, event: StreamEvent) => void;
25
25
  /** Injectable clock for tests. */
26
26
  now?: () => number;
27
27
  }
28
28
  export declare class AgentHeartbeatPinger {
29
29
  private readonly intervalMs;
30
- private readonly publish;
30
+ private readonly publish?;
31
31
  private readonly now;
32
32
  private timer;
33
33
  constructor(config: AgentHeartbeatConfig);
@@ -16,7 +16,8 @@
16
16
  * Heartbeat.ts / chat-session-manager sweeper pattern.
17
17
  */
18
18
  import { asyncAgentRegistry } from "./agent-registry.js";
19
- import { agentNotificationBus } from "./agent-notifications.js";
19
+ import { notificationQueue } from "./agent-notifications.js";
20
+ import { initialAgentProgress } from "./agent-progress.js";
20
21
  /** Default 30s — user-chosen. Stale threshold downstream is 3× (90s). */
21
22
  export const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
22
23
  export class AgentHeartbeatPinger {
@@ -56,20 +57,35 @@ export class AgentHeartbeatPinger {
56
57
  return;
57
58
  }
58
59
  const bySession = new Map();
60
+ const ts = this.now();
59
61
  for (const e of running) {
60
62
  // Background agents always carry their spawning sessionId; skip any
61
63
  // legacy/ad-hoc entry without one (can't address a heartbeat to nobody).
62
64
  if (!e.sessionId)
63
65
  continue;
66
+ if (!this.publish) {
67
+ notificationQueue.enqueue({
68
+ kind: "progress",
69
+ from: {
70
+ sessionId: e.childSessionId ?? e.agentId,
71
+ agentId: e.agentId,
72
+ authority: "agent",
73
+ },
74
+ to: { sessionId: e.sessionId, authority: "agent" },
75
+ delivery: "observe-only",
76
+ runtimeGeneration: e.runtimeGeneration,
77
+ payload: e.progress ?? initialAgentProgress(ts),
78
+ });
79
+ continue;
80
+ }
64
81
  const list = bySession.get(e.sessionId);
65
82
  if (list)
66
83
  list.push(e.agentId);
67
84
  else
68
85
  bySession.set(e.sessionId, [e.agentId]);
69
86
  }
70
- const ts = this.now();
71
87
  for (const [sessionId, agentIds] of bySession) {
72
- this.publish(sessionId, { type: "agent_heartbeat", agentIds, ts });
88
+ this.publish?.(sessionId, { type: "agent_heartbeat", agentIds, ts });
73
89
  }
74
90
  }
75
91
  }
@@ -79,9 +95,7 @@ export class AgentHeartbeatPinger {
79
95
  * event to the client). `ensureRunning()` is called when an agent backgrounds;
80
96
  * the pinger self-stops once no agent is running, so a fresh handoff re-arms it.
81
97
  */
82
- export const agentHeartbeatPinger = new AgentHeartbeatPinger({
83
- publish: (sessionId, event) => agentNotificationBus.publish(sessionId, event),
84
- });
98
+ export const agentHeartbeatPinger = new AgentHeartbeatPinger({});
85
99
  /** Start the shared pinger if not already ticking (idempotent). Call when an
86
100
  * agent enters the background. */
87
101
  export function ensureAgentHeartbeat() {
@@ -1,54 +1,120 @@
1
1
  import type { BackgroundAgentCompletedEvent, StreamEvent } from "../../types.js";
2
- /**
3
- * Background-agent completion notification queue.
4
- *
5
- * Mirrors Claude Code's `commandQueue` with `mode: 'task-notification'`. A
6
- * background sub-agent that finishes (completed | failed) enqueues an item
7
- * here; the UI layer subscribes and, when the main agent is idle, drains
8
- * the queue and submits the formatted XML as a new user turn so the LLM
9
- * sees the result. Sub-agent cancellation does NOT enqueue (user explicitly
10
- * stopped the agent; no follow-up needed). DriveAgent cancellation does enqueue
11
- * so a detached external CLI job never leaves the waiting session hanging.
12
- *
13
- * The result text lives only in this queue + the eventual user message —
14
- * not in `asyncAgentRegistry`. Registry stays metadata-only.
15
- *
16
- * Every enqueue must carry a sessionId. The B2 shim that allowed undefined
17
- * sessionId (a `__legacy__` bucket fallback) is gone — callers without a
18
- * session context (standalone tool tests) must mint a sessionId or use the
19
- * test helpers in `tests/` that do. At runtime, a bad sessionId (empty or
20
- * non-string, e.g. a caller bypassing the type via `as any`) is logged at
21
- * warn level and dropped — it does NOT touch the buckets or fire the bus.
22
- *
23
- * Listeners are still process-wide: any bucket change wakes every
24
- * subscriber, and each subscriber filters by sessionId when reading
25
- * `getSnapshot(sid)`. This matches `useSyncExternalStore`'s contract.
26
- *
27
- * Process-local singleton; same lifetime contract as `asyncAgentRegistry`.
28
- */
2
+ export type NotificationAuthority = "user" | "agent" | "system" | "policy";
3
+ export interface NotificationEndpoint {
4
+ sessionId: string;
5
+ agentId?: string;
6
+ authority: NotificationAuthority;
7
+ }
8
+ export type DirectionDelivery = "next-safe-point" | "interrupt-and-redrive";
9
+ export type ProgressDelivery = "observe-only";
10
+ export type ResultDelivery = "idle-drain";
11
+ export type AgentProgressPhase = "starting" | "model" | "tool" | "waiting-permission" | "compacting" | "finalizing";
12
+ export interface AgentProgressTokens {
13
+ prompt: number;
14
+ completion: number;
15
+ total: number;
16
+ }
17
+ export interface AgentProgressLastTool {
18
+ name: string;
19
+ state: "running" | "completed" | "failed" | "aborted";
20
+ startedAt?: number;
21
+ finishedAt?: number;
22
+ }
23
+ export interface DirectionPayload {
24
+ prompt: string;
25
+ origin: "agent_send_input";
26
+ }
27
+ export interface ProgressPayload {
28
+ phase: AgentProgressPhase;
29
+ lastTool?: AgentProgressLastTool;
30
+ tokens: AgentProgressTokens;
31
+ summary: string;
32
+ observedAt: number;
33
+ }
34
+ export interface ResultPayload {
35
+ workId: string;
36
+ name?: string;
37
+ description: string;
38
+ status: "completed" | "failed" | "cancelled";
39
+ workKind: "agent" | "shell" | "video" | "cc";
40
+ finalText?: string;
41
+ error?: string;
42
+ command?: string;
43
+ ccSessionId?: string;
44
+ changedFiles?: string[];
45
+ cwd?: string;
46
+ originClientMessageId?: string;
47
+ finishedAt: number;
48
+ }
49
+ interface NotificationEnvelopeBase<K extends "direction" | "progress" | "result", D extends DirectionDelivery | ProgressDelivery | ResultDelivery, P> {
50
+ schemaVersion: 1;
51
+ id: string;
52
+ kind: K;
53
+ from: NotificationEndpoint;
54
+ to: NotificationEndpoint;
55
+ teamId?: string;
56
+ correlationId?: string;
57
+ /** Fences process-local agent runtime generations; trusted producers only. */
58
+ runtimeGeneration?: number;
59
+ sequence: number;
60
+ delivery: D;
61
+ createdAt: number;
62
+ payload: P;
63
+ /** Deprecated read-only aliases kept for one compatibility window. */
64
+ readonly agentId?: string;
65
+ readonly name?: string;
66
+ readonly description?: string;
67
+ readonly status?: "completed" | "failed" | "cancelled";
68
+ readonly workKind?: "agent" | "shell" | "video" | "cc";
69
+ readonly command?: string;
70
+ readonly finalText?: string;
71
+ readonly ccSessionId?: string;
72
+ readonly error?: string;
73
+ readonly changedFiles?: string[];
74
+ readonly cwd?: string;
75
+ readonly originClientMessageId?: string;
76
+ readonly enqueuedAt?: number;
77
+ }
78
+ export type DirectionEnvelope = NotificationEnvelopeBase<"direction", DirectionDelivery, DirectionPayload>;
79
+ export type ProgressEnvelope = NotificationEnvelopeBase<"progress", ProgressDelivery, ProgressPayload>;
80
+ export type ResultEnvelope = NotificationEnvelopeBase<"result", ResultDelivery, ResultPayload> & {
81
+ readonly agentId: string;
82
+ readonly description: string;
83
+ readonly status: "completed" | "failed" | "cancelled";
84
+ readonly enqueuedAt: number;
85
+ };
86
+ export type NotificationEnvelope = DirectionEnvelope | ProgressEnvelope | ResultEnvelope;
87
+ export type DirectionEnvelopeDraft = Omit<DirectionEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
88
+ export type ProgressEnvelopeDraft = Omit<ProgressEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
89
+ export type ResultEnvelopeDraft = Omit<ResultEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
90
+ export type NotificationEnvelopeDraft = DirectionEnvelopeDraft | ProgressEnvelopeDraft | ResultEnvelopeDraft;
91
+ export type DirectionRejectReason = "invalid-request" | "target-not-found" | "target-not-running" | "target-not-ready" | "not-direct-parent" | "cross-session" | "team-not-supported" | "runtime-generation-mismatch" | "intake-closed";
92
+ export type DirectionAck = {
93
+ status: "queued" | "delivered" | "interrupted";
94
+ envelopeId: string;
95
+ sequence: number;
96
+ correlationId?: string;
97
+ target: NotificationEndpoint;
98
+ acceptedAt: number;
99
+ } | {
100
+ status: "rejected";
101
+ reason: DirectionRejectReason;
102
+ target?: NotificationEndpoint;
103
+ rejectedAt: number;
104
+ };
105
+ /** Deprecated producer shape. Queue storage is always NotificationEnvelope. */
29
106
  export type NotificationItem = {
30
107
  agentId: string;
31
108
  name?: string;
32
109
  description: string;
33
110
  status: "completed" | "failed" | "cancelled";
34
- /** What kind of background work this was (lets UIs localize the toast). */
35
111
  workKind?: "agent" | "shell" | "video" | "cc";
36
- /** For workKind === "shell": the command that ran. */
37
112
  command?: string;
38
- /** Final assistant text (completed only). */
39
113
  finalText?: string;
40
- /** For workKind === "cc": the external claude session id this drove, so the
41
- * result is recoverable from ~/.claude/projects/.../<ccSessionId>.jsonl even
42
- * if this notification is lost, and the user sees a real session id (not just
43
- * an opaque background jobId). */
44
114
  ccSessionId?: string;
45
- /** Error message (failed/cancelled only). */
46
115
  error?: string;
47
- /** Files attributed to an external DriveAgent transcript. */
48
116
  changedFiles?: string[];
49
- /** DriveAgent cwd used to canonicalize path aliases in clients. */
50
117
  cwd?: string;
51
- /** Client id of the real user turn that launched this background work. */
52
118
  originClientMessageId?: string;
53
119
  enqueuedAt: number;
54
120
  };
@@ -56,45 +122,34 @@ type Listener = () => void;
56
122
  declare class NotificationQueue {
57
123
  private buckets;
58
124
  private listeners;
59
- enqueue(item: NotificationItem, sessionId: string): void;
60
- subscribe: (cb: Listener) => (() => void);
61
- getSnapshot: (sessionId: string) => readonly NotificationItem[];
62
- /** Atomic: returns all items for a session and clears that bucket. */
63
- drainAll(sessionId: string): NotificationItem[];
64
- /**
65
- * Clear one bucket (sessionId given) or every bucket (no arg). Used by
66
- * tests; production code drains per-session through `drainAll`.
67
- */
125
+ private sequences;
126
+ private sequenceRoutes;
127
+ private readonly maxSequenceRoutes;
128
+ enqueue(draft: NotificationEnvelopeDraft): NotificationEnvelope | undefined;
129
+ enqueue(item: NotificationItem, sessionId: string): ResultEnvelope | undefined;
130
+ subscribe: (listener: Listener) => (() => void);
131
+ getSnapshot: (sessionId: string) => readonly NotificationEnvelope[];
132
+ drain(sessionId: string, predicate: (envelope: NotificationEnvelope) => boolean): NotificationEnvelope[];
133
+ /** Compatibility consumer: only terminal results, never direction/progress. */
134
+ drainAll(sessionId: string): ResultEnvelope[];
135
+ clearProgress(sessionId: string, agentId: string, runtimeGeneration?: number): boolean;
136
+ clearDirections(sessionId: string, runtimeGeneration: number): boolean;
68
137
  reset(sessionId?: string): void;
69
138
  private notify;
70
139
  }
71
- export declare const notificationQueue: NotificationQueue;
72
- type BusHandler = (sessionId: string, event: StreamEvent) => void;
140
+ type EnvelopeBusHandler = (envelope: NotificationEnvelope) => void;
141
+ type LegacyBusHandler = (sessionId: string, event: StreamEvent) => void;
73
142
  declare class AgentNotificationBus {
74
143
  private handlers;
75
- publish(sessionId: string, event: StreamEvent): void;
76
- subscribe(handler: BusHandler): () => void;
144
+ publish(envelope: NotificationEnvelope): void;
145
+ subscribe(handler: EnvelopeBusHandler): () => void;
146
+ subscribe(handler: LegacyBusHandler): () => void;
77
147
  }
78
148
  export declare const agentNotificationBus: AgentNotificationBus;
79
- /**
80
- * Project a queue item to its protocol-event shape. The two types are
81
- * field-compatible by design (see the comment on BackgroundAgentCompletedEvent
82
- * in types.ts) so this is essentially an identity tag.
83
- */
84
- export declare function notificationItemToStreamEvent(item: NotificationItem): BackgroundAgentCompletedEvent;
85
- /**
86
- * Render a batch of completion notifications as the XML user-message
87
- * body that the main agent's LLM will see. Format is stable — main
88
- * agent prompts can rely on the `<background-agents-completed>` root
89
- * tag as a signal that this turn is a system-injected notification,
90
- * not a real user message.
91
- */
92
- export declare function buildNotificationMessage(items: readonly NotificationItem[]): string;
93
- /**
94
- * One-line-per-agent human summary for the chat feed. The full result
95
- * body goes to the LLM via buildNotificationMessage; the user sees only
96
- * this terse marker plus an optional inline error preview, and can
97
- * switch to the sub-agent's dock view if they want details.
98
- */
99
- export declare function buildNotificationSummary(items: readonly NotificationItem[]): string;
149
+ export declare const notificationQueue: NotificationQueue;
150
+ export declare function buildAgentDirectionMessage(envelopes: readonly DirectionEnvelope[]): string;
151
+ export declare function notificationItemToStreamEvent(value: NotificationItem | ResultEnvelope): BackgroundAgentCompletedEvent;
152
+ export declare function notificationEnvelopeToLegacyStreamEvent(envelope: NotificationEnvelope): StreamEvent | undefined;
153
+ export declare function buildNotificationMessage(values: readonly (NotificationItem | ResultEnvelope)[]): string;
154
+ export declare function buildNotificationSummary(values: readonly (NotificationItem | ResultEnvelope)[]): string;
100
155
  export {};