@gajae-code/coding-agent 0.10.1 → 0.11.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 (474) hide show
  1. package/CHANGELOG.md +70 -2
  2. package/dist/types/append-only-mode.d.ts +1 -1
  3. package/dist/types/cli/args.d.ts +4 -5
  4. package/dist/types/cli/daemon-cli.d.ts +12 -1
  5. package/dist/types/cli/notify-cli.d.ts +21 -1
  6. package/dist/types/cli.d.ts +3 -0
  7. package/dist/types/commands/daemon.d.ts +39 -0
  8. package/dist/types/commands/launch.d.ts +3 -0
  9. package/dist/types/commands/notify.d.ts +28 -1
  10. package/dist/types/commands/sdk.d.ts +33 -0
  11. package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
  12. package/dist/types/config/model-profile-activation.d.ts +35 -15
  13. package/dist/types/config/model-profiles.d.ts +11 -5
  14. package/dist/types/config/model-registry.d.ts +3 -3
  15. package/dist/types/config/model-resolver.d.ts +39 -6
  16. package/dist/types/config/model-selector-value.d.ts +17 -0
  17. package/dist/types/config/models-config-schema.d.ts +10 -6
  18. package/dist/types/config/settings-schema.d.ts +133 -6
  19. package/dist/types/config/settings.d.ts +63 -35
  20. package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
  21. package/dist/types/coordinator-mcp/server.d.ts +6 -49
  22. package/dist/types/daemon/builtin.d.ts +6 -5
  23. package/dist/types/daemon/control-types.d.ts +1 -1
  24. package/dist/types/discovery/mcp-json.d.ts +12 -1
  25. package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
  26. package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
  27. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
  28. package/dist/types/extensibility/extensions/loader.d.ts +10 -1
  29. package/dist/types/extensibility/extensions/runner.d.ts +3 -3
  30. package/dist/types/extensibility/extensions/types.d.ts +141 -16
  31. package/dist/types/extensibility/hooks/types.d.ts +1 -1
  32. package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
  33. package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
  34. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
  35. package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
  36. package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
  37. package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
  38. package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
  39. package/dist/types/harness-control-plane/operate.d.ts +5 -5
  40. package/dist/types/harness-control-plane/owner.d.ts +18 -4
  41. package/dist/types/harness-control-plane/receipts.d.ts +0 -1
  42. package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
  43. package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
  44. package/dist/types/harness-control-plane/types.d.ts +3 -4
  45. package/dist/types/lsp/index.d.ts +1 -1
  46. package/dist/types/main.d.ts +32 -38
  47. package/dist/types/modes/acp/acp-agent.d.ts +224 -53
  48. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
  49. package/dist/types/modes/acp/acp-mode.d.ts +6 -15
  50. package/dist/types/modes/acp/permission-mode.d.ts +4 -0
  51. package/dist/types/modes/acp/startup-options.d.ts +6 -0
  52. package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
  53. package/dist/types/modes/components/gajae-pet-widget.d.ts +1 -0
  54. package/dist/types/modes/components/model-selector.d.ts +1 -0
  55. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  56. package/dist/types/modes/components/pet-capability.d.ts +37 -0
  57. package/dist/types/modes/components/pet-selector.d.ts +1 -1
  58. package/dist/types/modes/components/settings-selector.d.ts +15 -4
  59. package/dist/types/modes/components/welcome.d.ts +1 -1
  60. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  61. package/dist/types/modes/index.d.ts +0 -4
  62. package/dist/types/modes/interactive-mode.d.ts +5 -1
  63. package/dist/types/modes/runtime-init.d.ts +2 -2
  64. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  65. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  66. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  67. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  68. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  69. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +169 -30
  70. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  71. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  72. package/dist/types/modes/types.d.ts +16 -1
  73. package/dist/types/runtime-mcp/client.d.ts +2 -0
  74. package/dist/types/runtime-mcp/config.d.ts +5 -1
  75. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  76. package/dist/types/runtime-mcp/types.d.ts +4 -0
  77. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  78. package/dist/types/sdk/acp/index.d.ts +2 -0
  79. package/dist/types/sdk/broker/broker.d.ts +53 -0
  80. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  81. package/dist/types/sdk/broker/ensure.d.ts +33 -0
  82. package/dist/types/sdk/broker/identity.d.ts +3 -0
  83. package/dist/types/sdk/broker/index.d.ts +8 -0
  84. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  85. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  86. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  87. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  88. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  89. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  90. package/dist/types/sdk/broker/transport.d.ts +9 -0
  91. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  92. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  93. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  94. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  95. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  96. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  97. package/dist/types/sdk/bus/config.d.ts +274 -0
  98. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  99. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  100. package/dist/types/sdk/bus/discord-daemon.d.ts +45 -0
  101. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  102. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  103. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  104. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  105. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  106. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  107. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  108. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  109. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  110. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  111. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  112. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  113. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  114. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  115. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  116. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  117. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  118. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  119. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  120. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +55 -17
  121. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  122. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  123. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  124. package/dist/types/sdk/cli/index.d.ts +1 -0
  125. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  126. package/dist/types/sdk/client/client.d.ts +1 -0
  127. package/dist/types/sdk/client/discovery.d.ts +27 -0
  128. package/dist/types/sdk/client/index.d.ts +2 -0
  129. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  130. package/dist/types/sdk/host/control/index.d.ts +2 -0
  131. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  132. package/dist/types/sdk/host/events.d.ts +35 -0
  133. package/dist/types/sdk/host/host.d.ts +35 -0
  134. package/dist/types/sdk/host/index.d.ts +4 -0
  135. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  136. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  137. package/dist/types/sdk/host/query/index.d.ts +3 -0
  138. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  139. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  140. package/dist/types/sdk/host/types.d.ts +32 -0
  141. package/dist/types/sdk/index.d.ts +6 -0
  142. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  143. package/dist/types/sdk/mcp/index.d.ts +1 -0
  144. package/dist/types/sdk/mcp/server.d.ts +37 -0
  145. package/dist/types/sdk/models.d.ts +44 -0
  146. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  147. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  148. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  149. package/dist/types/sdk/startup-capability.d.ts +50 -0
  150. package/dist/types/session/agent-session.d.ts +114 -21
  151. package/dist/types/session/default-model-selection.d.ts +25 -0
  152. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  153. package/dist/types/session/session-manager.d.ts +58 -1
  154. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  155. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  156. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  157. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  158. package/dist/types/tools/browser/launch.d.ts +22 -0
  159. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  160. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  161. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  162. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  163. package/dist/types/tools/browser/registry.d.ts +19 -0
  164. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  165. package/dist/types/tools/index.d.ts +8 -8
  166. package/package.json +34 -13
  167. package/scripts/build-sdk-package-smoke.ts +94 -0
  168. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  169. package/scripts/compile-args.ts +4 -2
  170. package/scripts/g005-daemon-smoke.ts +4 -5
  171. package/scripts/g011-daemon-path-smoke.ts +5 -5
  172. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  173. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  174. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  175. package/scripts/manifest-schema.ts +124 -0
  176. package/scripts/run-test-manifest.ts +153 -0
  177. package/scripts/run-threat-model-check.ts +157 -0
  178. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  179. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  180. package/src/append-only-mode.ts +1 -1
  181. package/src/cli/args.ts +43 -12
  182. package/src/cli/auth-gateway-cli.ts +2 -2
  183. package/src/cli/config-cli.ts +2 -1
  184. package/src/cli/daemon-cli.ts +63 -14
  185. package/src/cli/list-models.ts +1 -1
  186. package/src/cli/notify-cli.ts +288 -286
  187. package/src/cli.ts +21 -2
  188. package/src/commands/daemon.ts +50 -6
  189. package/src/commands/harness.ts +93 -36
  190. package/src/commands/launch.ts +5 -2
  191. package/src/commands/mcp-serve.ts +19 -12
  192. package/src/commands/notify.ts +36 -3
  193. package/src/commands/sdk.ts +426 -0
  194. package/src/commit/agentic/agent.ts +1 -0
  195. package/src/config/atomic-yaml-patch.ts +423 -0
  196. package/src/config/model-profile-activation.ts +240 -89
  197. package/src/config/model-profiles.ts +37 -34
  198. package/src/config/model-registry.ts +51 -26
  199. package/src/config/model-resolver.ts +138 -51
  200. package/src/config/model-selector-value.ts +50 -0
  201. package/src/config/models-config-schema.ts +14 -21
  202. package/src/config/settings-schema.ts +128 -10
  203. package/src/config/settings.ts +1120 -158
  204. package/src/coordinator-mcp/model-preset.ts +74 -20
  205. package/src/coordinator-mcp/server.ts +1597 -3052
  206. package/src/daemon/builtin.ts +8 -5
  207. package/src/daemon/control-types.ts +1 -1
  208. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  209. package/src/discovery/mcp-json.ts +327 -20
  210. package/src/extensibility/custom-tools/types.ts +1 -1
  211. package/src/extensibility/extensions/compact-handler.ts +3 -3
  212. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  213. package/src/extensibility/extensions/loader.ts +69 -5
  214. package/src/extensibility/extensions/runner.ts +112 -4
  215. package/src/extensibility/extensions/types.ts +176 -17
  216. package/src/extensibility/hooks/types.ts +1 -1
  217. package/src/extensibility/slash-commands.ts +3 -3
  218. package/src/gjc-runtime/launch-tmux.ts +170 -86
  219. package/src/gjc-runtime/psmux-detect.ts +82 -4
  220. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  221. package/src/gjc-runtime/team-runtime.ts +54 -35
  222. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  223. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -2
  224. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  225. package/src/gjc-runtime/ultragoal-guard.ts +53 -6
  226. package/src/gjc-runtime/ultragoal-runtime.ts +155 -3
  227. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  228. package/src/harness-control-plane/operate.ts +9 -9
  229. package/src/harness-control-plane/owner.ts +283 -39
  230. package/src/harness-control-plane/receipts.ts +0 -1
  231. package/src/harness-control-plane/sdk-transport.ts +395 -0
  232. package/src/harness-control-plane/session-transport.ts +94 -0
  233. package/src/harness-control-plane/types.ts +1 -1
  234. package/src/internal-urls/docs-index.generated.ts +36 -37
  235. package/src/lsp/client.ts +42 -6
  236. package/src/lsp/index.ts +2 -2
  237. package/src/main.ts +299 -204
  238. package/src/modes/DESIGN.md +258 -0
  239. package/src/modes/acp/acp-agent.ts +1228 -2612
  240. package/src/modes/acp/acp-client-bridge.ts +2 -20
  241. package/src/modes/acp/acp-event-mapper.ts +18 -2
  242. package/src/modes/acp/acp-mode.ts +8 -36
  243. package/src/modes/acp/permission-mode.ts +25 -0
  244. package/src/modes/acp/startup-options.ts +6 -0
  245. package/src/modes/components/agent-dashboard.ts +37 -17
  246. package/src/modes/components/custom-editor.ts +1 -0
  247. package/src/modes/components/gajae-pet-widget.ts +169 -20
  248. package/src/modes/components/model-selector.ts +93 -35
  249. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  250. package/src/modes/components/pet-capability.ts +115 -0
  251. package/src/modes/components/pet-selector.ts +4 -6
  252. package/src/modes/components/settings-selector.ts +86 -11
  253. package/src/modes/components/welcome.ts +4 -4
  254. package/src/modes/controllers/command-controller.ts +1 -2
  255. package/src/modes/controllers/event-controller.ts +11 -16
  256. package/src/modes/controllers/extension-ui-controller.ts +357 -12
  257. package/src/modes/controllers/input-controller.ts +43 -13
  258. package/src/modes/controllers/selector-controller.ts +671 -44
  259. package/src/modes/index.ts +0 -22
  260. package/src/modes/interactive-mode.ts +108 -24
  261. package/src/modes/runtime-init.ts +298 -6
  262. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  263. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  264. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  265. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  266. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  267. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1254 -87
  268. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  269. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  270. package/src/modes/types.ts +16 -1
  271. package/src/runtime-mcp/client.ts +94 -19
  272. package/src/runtime-mcp/config.ts +27 -15
  273. package/src/runtime-mcp/manager.ts +343 -105
  274. package/src/runtime-mcp/oauth-flow.ts +42 -12
  275. package/src/runtime-mcp/transports/http.ts +49 -19
  276. package/src/runtime-mcp/transports/stdio.ts +47 -28
  277. package/src/runtime-mcp/types.ts +10 -0
  278. package/src/sdk/acp/adapter.ts +418 -0
  279. package/src/sdk/acp/index.ts +2 -0
  280. package/src/sdk/broker/broker.ts +642 -0
  281. package/src/sdk/broker/discovery.ts +94 -0
  282. package/src/sdk/broker/ensure.ts +249 -0
  283. package/src/sdk/broker/identity.ts +42 -0
  284. package/src/sdk/broker/index.ts +8 -0
  285. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  286. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  287. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  288. package/src/sdk/broker/lifecycle.ts +2157 -0
  289. package/src/sdk/broker/process-incarnation.ts +159 -0
  290. package/src/sdk/broker/runtime.ts +164 -0
  291. package/src/sdk/broker/session-index.ts +318 -0
  292. package/src/sdk/broker/state-version.ts +23 -0
  293. package/src/sdk/broker/transport.ts +125 -0
  294. package/src/sdk/bus/chat-command-policy.ts +107 -0
  295. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  296. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  297. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  298. package/src/sdk/bus/chat-effect-journal.ts +353 -0
  299. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  300. package/src/sdk/bus/config.ts +433 -0
  301. package/src/sdk/bus/conversation-store.ts +391 -0
  302. package/src/sdk/bus/discord-conversation.ts +85 -0
  303. package/src/sdk/bus/discord-daemon.ts +2275 -0
  304. package/src/sdk/bus/discord-live-provider.ts +521 -0
  305. package/src/sdk/bus/discord-provider.ts +56 -0
  306. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  307. package/src/sdk/bus/index.ts +3943 -0
  308. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  309. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  310. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  311. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  312. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  313. package/src/sdk/bus/natives-augment.d.ts +38 -0
  314. package/src/sdk/bus/notification-orchestration.ts +535 -0
  315. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  316. package/src/sdk/bus/session-control.ts +333 -0
  317. package/src/sdk/bus/slack-conversation.ts +74 -0
  318. package/src/sdk/bus/slack-daemon.ts +2144 -0
  319. package/src/sdk/bus/slack-live-provider.ts +380 -0
  320. package/src/sdk/bus/slack-provider.ts +76 -0
  321. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  322. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  323. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  324. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  325. package/src/{notifications → sdk/bus}/telegram-daemon.ts +502 -54
  326. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  327. package/src/sdk/bus/telegram-setup.ts +663 -0
  328. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  329. package/src/sdk/cli/index.ts +1 -0
  330. package/src/sdk/cli/session-cli.ts +275 -0
  331. package/src/sdk/client/client.ts +1 -0
  332. package/src/sdk/client/discovery.ts +108 -0
  333. package/src/sdk/client/index.ts +2 -0
  334. package/src/sdk/host/control/dispatch.ts +367 -0
  335. package/src/sdk/host/control/index.ts +10 -0
  336. package/src/sdk/host/control/operations.ts +63 -0
  337. package/src/sdk/host/events.ts +91 -0
  338. package/src/sdk/host/host.ts +296 -0
  339. package/src/sdk/host/index.ts +4 -0
  340. package/src/sdk/host/query/cursor.ts +189 -0
  341. package/src/sdk/host/query/handlers.ts +533 -0
  342. package/src/sdk/host/query/index.ts +3 -0
  343. package/src/sdk/host/query/revision-store.ts +1126 -0
  344. package/src/sdk/host/reverse-leases.ts +325 -0
  345. package/src/sdk/host/types.ts +29 -0
  346. package/src/sdk/index.ts +13 -0
  347. package/src/sdk/lifecycle-session.ts +39 -0
  348. package/src/sdk/mcp/index.ts +1 -0
  349. package/src/sdk/mcp/server.ts +332 -0
  350. package/src/sdk/models.ts +168 -0
  351. package/src/sdk/protocol/adapter-validation.ts +48 -0
  352. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  353. package/src/sdk/protocol/operation-registry.ts +312 -0
  354. package/src/{sdk.ts → sdk/session.ts} +339 -212
  355. package/src/sdk/startup-capability.ts +189 -0
  356. package/src/session/agent-session.ts +2470 -866
  357. package/src/session/default-model-selection.ts +93 -0
  358. package/src/session/fallback-chain-controller.ts +136 -0
  359. package/src/session/session-manager.ts +447 -13
  360. package/src/session/session-storage.ts +8 -1
  361. package/src/setup/credential-auto-import.ts +290 -35
  362. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  363. package/src/slash-commands/builtin-registry.ts +33 -30
  364. package/src/task/executor.ts +62 -13
  365. package/src/tools/ask-answer-registry.ts +1 -1
  366. package/src/tools/ask.ts +13 -8
  367. package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
  368. package/src/tools/browser/benchmark/detector-report.ts +157 -0
  369. package/src/tools/browser/benchmark/run-suite.ts +39 -0
  370. package/src/tools/browser/launch.ts +124 -19
  371. package/src/tools/browser/profile-discovery.ts +63 -0
  372. package/src/tools/browser/profile-posture.ts +59 -0
  373. package/src/tools/browser/profile-reuse.ts +102 -0
  374. package/src/tools/browser/profile-warmup.ts +109 -0
  375. package/src/tools/browser/registry.ts +87 -11
  376. package/src/tools/browser/tab-protocol.ts +1 -0
  377. package/src/tools/browser/tab-supervisor.ts +1 -0
  378. package/src/tools/browser/tab-worker.ts +1 -1
  379. package/src/tools/browser.ts +6 -0
  380. package/src/tools/index.ts +8 -8
  381. package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
  382. package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
  383. package/src/tools/telegram-send.ts +2 -2
  384. package/vendor/insane-search/MANIFEST.json +2 -1
  385. package/vendor/insane-search/engine/bias_check.py +4 -1
  386. package/vendor/insane-search/engine/phase0.py +26 -1
  387. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  388. package/dist/types/modes/bridge/auth.d.ts +0 -12
  389. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  390. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  391. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  392. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  393. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  394. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  395. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  396. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  397. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  398. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  399. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  400. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  401. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  402. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  403. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  404. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  405. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  406. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  407. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  408. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  409. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  410. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  411. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  412. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  413. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  414. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  415. package/dist/types/notifications/config.d.ts +0 -132
  416. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  417. package/src/modes/bridge/auth.ts +0 -41
  418. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  419. package/src/modes/bridge/bridge-mode.ts +0 -675
  420. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  421. package/src/modes/bridge/event-stream.ts +0 -70
  422. package/src/modes/rpc/host-tools.ts +0 -1
  423. package/src/modes/rpc/host-uris.ts +0 -1
  424. package/src/modes/rpc/rpc-client.ts +0 -1166
  425. package/src/modes/rpc/rpc-mode.ts +0 -1029
  426. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  427. package/src/modes/rpc/rpc-types.ts +0 -637
  428. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  429. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  430. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  431. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  432. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  433. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  434. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  435. package/src/modes/shared/agent-wire/responses.ts +0 -17
  436. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  437. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  438. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  439. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  440. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  441. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  442. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  443. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  444. package/src/notifications/config.ts +0 -219
  445. package/src/notifications/index.ts +0 -1835
  446. package/src/notifications/telegram-daemon-cli.ts +0 -243
  447. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  448. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  449. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  450. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  453. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  454. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  455. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  456. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  457. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  458. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  459. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  460. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  461. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  462. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  463. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  466. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  467. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  468. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  469. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  470. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  471. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  472. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  473. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  474. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -1,18 +0,0 @@
1
- /**
2
- * Canonical command-surface boundary for the agent-wire adapters.
3
- *
4
- * RPC and Bridge SHARE the JSONL `RpcCommand` grammar and dispatch it through
5
- * the single `dispatchRpcCommand` entry in `command-dispatch.ts`. This module
6
- * re-exports that command surface so the shared contract has one documented home.
7
- *
8
- * ACP does NOT use `RpcCommand`. It keeps its richer `@agentclientprotocol/sdk`
9
- * command surface (fork/resume/elicitation/session-mode/session-model) and only
10
- * shares the lower session/event layer (`AgentWireEventPayload`). ACP must never
11
- * import `dispatchRpcCommand`.
12
- *
13
- * Event semantics are intentionally elsewhere: `event-contract.ts` owns the event
14
- * types + registry and `event-observation.ts` owns the single semantic mapping.
15
- */
16
- export type { RpcCommand, RpcResponse } from "../../rpc/rpc-types";
17
- export { dispatchRpcCommand, type RpcCommandDispatchContext } from "./command-dispatch";
18
- export { isRpcCommandType, RPC_COMMAND_TYPES, type RpcCommandType } from "./scopes";
@@ -1,37 +0,0 @@
1
- import type { AgentTool } from "@gajae-code/agent-core";
2
- import type { ExtensionUIContext } from "../../../extensibility/extensions";
3
- import type { AgentSession } from "../../../session/agent-session";
4
- import type { RpcCommand, RpcExtensionUIRequest, RpcHostToolDefinition, RpcHostUriSchemeDefinition, RpcResponse, RpcUnattendedAccepted, RpcUnattendedDeclaration, RpcWorkflowGateResolution, RpcWorkflowGateResponse } from "../../rpc/rpc-types";
5
- export type RpcCommandDispatchOutput = (obj: RpcResponse | RpcExtensionUIRequest | object) => void;
6
- export interface RpcHostToolRegistry {
7
- setTools(tools: RpcHostToolDefinition[]): AgentTool[];
8
- }
9
- export interface RpcHostUriRegistry {
10
- setSchemes(schemes: RpcHostUriSchemeDefinition[]): string[];
11
- }
12
- /**
13
- * Optional unattended control plane wired into RPC dispatch (#318/#319/#323).
14
- * When present, `negotiate_unattended` and `workflow_gate_response` route here
15
- * instead of falling through to the unknown-command path.
16
- */
17
- export interface RpcUnattendedControlPlane {
18
- /** Enter unattended mode (fail-closed); throws an Error on refusal. */
19
- negotiate(declaration: RpcUnattendedDeclaration): RpcUnattendedAccepted;
20
- /** Resolve a pending workflow gate with the agent's answer. */
21
- resolveGate(response: RpcWorkflowGateResponse): Promise<RpcWorkflowGateResolution>;
22
- /** List unresolved durable workflow gates for reconnect replay. */
23
- listPendingGates?(): import("../../rpc/rpc-types").RpcWorkflowGate[];
24
- isUnattended?(): boolean;
25
- preflightCommand?(command: RpcCommand): void;
26
- reconcileUsage?(phase?: string): void;
27
- }
28
- export interface RpcCommandDispatchContext {
29
- session: AgentSession;
30
- output: RpcCommandDispatchOutput;
31
- hostToolRegistry: RpcHostToolRegistry;
32
- hostUriRegistry: RpcHostUriRegistry;
33
- createUiContext: () => Pick<ExtensionUIContext, "notify">;
34
- unattendedControlPlane?: RpcUnattendedControlPlane;
35
- }
36
- export declare function normalizeHostToolDefinitions(tools: RpcHostToolDefinition[]): RpcHostToolDefinition[];
37
- export declare function dispatchRpcCommand(command: RpcCommand, context: RpcCommandDispatchContext): Promise<RpcResponse>;
@@ -1,2 +0,0 @@
1
- import type { RpcCommand } from "../../rpc/rpc-types";
2
- export declare function isRpcCommand(value: unknown): value is RpcCommand;
@@ -1,56 +0,0 @@
1
- import type { RpcUnattendedDeclaration } from "../../rpc/rpc-types";
2
- import { BRIDGE_PROTOCOL_VERSION, type BridgeFrameType } from "./protocol";
3
- import type { BridgeCommandScope } from "./scopes";
4
- export type BridgeCapability = "events" | "prompt" | "permission" | "elicitation" | "ui.declarative" | "ui.editor" | "ui.terminal_input" | "host_tools" | "host_uri" | "client_bridge.read_text_file" | "client_bridge.write_text_file" | "client_bridge.create_terminal" | "workflow_gate";
5
- export interface BridgeProtocolRange {
6
- min: number;
7
- max: number;
8
- }
9
- export interface BridgeHandshakeRequest {
10
- protocol_version_range: BridgeProtocolRange;
11
- capabilities: BridgeCapability[];
12
- requested_scopes: BridgeCommandScope[];
13
- last_seq?: number;
14
- /** Optional unattended declaration (budget + scope + action allowlist) for #318/#319. */
15
- unattended?: RpcUnattendedDeclaration;
16
- }
17
- export interface BridgeEndpointDescriptor {
18
- events: string;
19
- commands: string;
20
- uiResponses: string;
21
- claimControl: string;
22
- disconnectControl: string;
23
- hostToolResults: string;
24
- hostUriResults: string;
25
- }
26
- export interface BridgeHandshakeAccepted {
27
- status: "accepted";
28
- protocol_version: typeof BRIDGE_PROTOCOL_VERSION;
29
- session_id: string;
30
- accepted_capabilities: BridgeCapability[];
31
- accepted_scopes: BridgeCommandScope[];
32
- unsupported: BridgeCapability[];
33
- endpoints: BridgeEndpointDescriptor;
34
- frame_types: BridgeFrameType[];
35
- /** Echoed unattended declaration when one was supplied and accepted (#321). */
36
- accepted_unattended?: RpcUnattendedDeclaration;
37
- /** Server-side accepted unattended mode after live negotiation, not just declaration echo. */
38
- unattended_active?: boolean;
39
- }
40
- export interface BridgeHandshakeRejected {
41
- status: "rejected";
42
- reason: "incompatible_version" | "unauthorized" | "invalid_request";
43
- message: string;
44
- }
45
- export type BridgeHandshakeResponse = BridgeHandshakeAccepted | BridgeHandshakeRejected;
46
- /** Shape-validate an optional unattended declaration carried on the handshake. */
47
- export declare function isUnattendedDeclarationShape(value: unknown): value is RpcUnattendedDeclaration;
48
- export declare function isBridgeHandshakeRequest(value: unknown): value is BridgeHandshakeRequest;
49
- export declare function negotiateBridgeHandshake(request: BridgeHandshakeRequest, server: {
50
- sessionId: string;
51
- capabilities: readonly BridgeCapability[];
52
- scopes: readonly BridgeCommandScope[];
53
- endpoints: BridgeEndpointDescriptor;
54
- frameTypes: readonly BridgeFrameType[];
55
- acceptedUnattended?: RpcUnattendedDeclaration;
56
- }): BridgeHandshakeResponse;
@@ -1,16 +0,0 @@
1
- import type { AgentTool, AgentToolResult, AgentToolUpdateCallback } from "@gajae-code/agent-core";
2
- import type { RpcHostToolCallRequest, RpcHostToolCancelRequest, RpcHostToolDefinition, RpcHostToolResult, RpcHostToolUpdate } from "../../rpc/rpc-types";
3
- type RpcHostToolOutput = (frame: RpcHostToolCallRequest | RpcHostToolCancelRequest) => void;
4
- export declare function isRpcHostToolResult(value: unknown): value is RpcHostToolResult;
5
- export declare function isRpcHostToolUpdate(value: unknown): value is RpcHostToolUpdate;
6
- export declare class RpcHostToolBridge {
7
- #private;
8
- constructor(output: RpcHostToolOutput);
9
- getToolNames(): string[];
10
- setTools(tools: RpcHostToolDefinition[]): AgentTool[];
11
- handleResult(frame: RpcHostToolResult): boolean;
12
- handleUpdate(frame: RpcHostToolUpdate): boolean;
13
- requestExecution(definition: RpcHostToolDefinition, toolCallId: string, args: Record<string, unknown>, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<unknown>): Promise<AgentToolResult<unknown>>;
14
- rejectAllPending(message: string): void;
15
- }
16
- export {};
@@ -1,17 +0,0 @@
1
- import { InternalUrlRouter } from "../../../internal-urls";
2
- import type { InternalResource, InternalUrl, ResolveContext, WriteContext } from "../../../internal-urls/types";
3
- import type { RpcHostUriCancelRequest, RpcHostUriRequest, RpcHostUriResult, RpcHostUriSchemeDefinition } from "../../rpc/rpc-types";
4
- type RpcHostUriOutput = (frame: RpcHostUriRequest | RpcHostUriCancelRequest) => void;
5
- export declare function isRpcHostUriResult(value: unknown): value is RpcHostUriResult;
6
- export declare class RpcHostUriBridge {
7
- #private;
8
- constructor(output: RpcHostUriOutput, router?: InternalUrlRouter);
9
- getSchemes(): string[];
10
- setSchemes(schemes: RpcHostUriSchemeDefinition[]): string[];
11
- clear(message?: string): void;
12
- handleResult(frame: RpcHostUriResult): boolean;
13
- rejectAllPending(message: string): void;
14
- requestRead(scheme: string, url: InternalUrl, context?: ResolveContext): Promise<InternalResource>;
15
- requestWrite(_scheme: string, url: InternalUrl, content: string, context?: WriteContext): Promise<void>;
16
- }
17
- export {};
@@ -1,25 +0,0 @@
1
- /**
2
- * Shared agent-wire protocol primitives for GJC bridge surfaces.
3
- *
4
- * The canonical event/frame contract now lives in `event-contract.ts`. This
5
- * module re-exports it under the historical `Bridge*` names so existing RPC and
6
- * Bridge code keeps compiling while the adapters migrate to the canonical
7
- * `AgentWire*` names. See `.gjc/specs/deep-interview-reconcile-rpc-adapters.md`.
8
- */
9
- import type { AgentWireEventFrame, AgentWireEventPayload, AgentWireEventType, AgentWireFrameEnvelope, AgentWireFrameType } from "./event-contract";
10
- /** Wire protocol version. Bump on breaking envelope/semantic changes. */
11
- export declare const BRIDGE_PROTOCOL_VERSION: 2;
12
- /** The discriminant of every `AgentSessionEvent` the agent can emit. */
13
- export type AgentSessionEventType = AgentWireEventType;
14
- /** Every agent-session event type, derived from the exhaustive registry. */
15
- export declare const AGENT_SESSION_EVENT_TYPES: readonly AgentSessionEventType[];
16
- /** Top-level frame categories carried over any bridge transport. */
17
- export type BridgeFrameType = AgentWireFrameType;
18
- /** Universal frame envelope. See {@link AgentWireFrameEnvelope}. */
19
- export type BridgeFrameEnvelope<TType extends BridgeFrameType = BridgeFrameType, TPayload = unknown> = AgentWireFrameEnvelope<TType, TPayload>;
20
- /** Payload carried by an `event` frame. See {@link AgentWireEventPayload}. */
21
- export type BridgeEventPayload = AgentWireEventPayload;
22
- /** An `AgentSessionEvent` serialized into a versioned wire frame. */
23
- export type BridgeEventFrame = AgentWireEventFrame;
24
- /** A `workflow_gate` event serialized into a versioned wire frame (#321). */
25
- export type BridgeWorkflowGateFrame = BridgeFrameEnvelope<"workflow_gate", import("../../rpc/rpc-types").RpcWorkflowGate>;
@@ -1,4 +0,0 @@
1
- /** Shared RPC-compatible response helpers for agent-wire consumers. */
2
- import type { RpcCommand, RpcResponse } from "../../rpc/rpc-types";
3
- export declare function rpcSuccess<T extends RpcCommand["type"]>(id: string | undefined, command: T, data?: object | null): RpcResponse;
4
- export declare function rpcError(id: string | undefined, command: string, error: string | object): RpcResponse;
@@ -1,18 +0,0 @@
1
- /**
2
- * Coarse bridge authorization scopes for RPC commands.
3
- *
4
- * The v1 bridge exposes a network-reachable control surface, so every
5
- * `RpcCommand` must be assigned to one coarse scope before any REST handler can
6
- * dispatch it. The registry is intentionally typed as `Record<RpcCommandType,
7
- * BridgeCommandScope>` so adding a new RPC command without a scope is a compile
8
- * failure.
9
- */
10
- import type { RpcCommand } from "../../rpc/rpc-types";
11
- export type RpcCommandType = RpcCommand["type"];
12
- export type BridgeCommandScope = "prompt" | "control" | "bash" | "export" | "session" | "model" | "message:read" | "host_tools" | "host_uri" | "admin";
13
- export declare const BRIDGE_COMMAND_SCOPES: readonly BridgeCommandScope[];
14
- export declare const RPC_COMMAND_TYPES: readonly RpcCommandType[];
15
- export declare function isRpcCommandType(value: unknown): value is RpcCommandType;
16
- export declare const MANDATORY_FLOOR_COMMAND_SCOPES: readonly BridgeCommandScope[];
17
- export declare function scopeForRpcCommand(type: RpcCommandType): BridgeCommandScope;
18
- export declare function isRpcCommandAllowed(type: RpcCommandType, scopes: ReadonlySet<BridgeCommandScope>): boolean;
@@ -1,25 +0,0 @@
1
- export type RpcSessionTransport = "stdio" | "bridge" | "socket";
2
- export interface RpcSessionRecord {
3
- sessionId: string;
4
- pid: number;
5
- transport: RpcSessionTransport;
6
- cwd: string;
7
- model?: string;
8
- /** ISO-8601 start timestamp. */
9
- startedAt: string;
10
- /** Reachable endpoint for persistent transports (issue 09); absent for stdio. */
11
- endpoint?: string;
12
- }
13
- /**
14
- * Write (or replace) the registry record for a session. The record is written to
15
- * a same-directory temp file and atomically renamed into place so a concurrent
16
- * reader never observes (and reaps) a partially-written record.
17
- */
18
- export declare function registerRpcSession(record: RpcSessionRecord, agentDir?: string): Promise<string>;
19
- /** Remove a session's registry record. Best-effort: a missing file is not an error. */
20
- export declare function unregisterRpcSession(sessionId: string, agentDir?: string): Promise<void>;
21
- /**
22
- * List live RPC sessions, reaping records whose process is gone or whose file is
23
- * unparseable. Returns records sorted by `startedAt` ascending.
24
- */
25
- export declare function listRpcSessions(agentDir?: string): Promise<RpcSessionRecord[]>;
@@ -1,42 +0,0 @@
1
- export type UiRequestCancelReason = "timeout" | "abort" | "disconnect";
2
- export interface UiRequestCancelled {
3
- status: "cancelled";
4
- reason: UiRequestCancelReason;
5
- }
6
- export type UiRequestResolution<TResponse> = TResponse | UiRequestCancelled;
7
- export type UiBrokerResponseResult = {
8
- status: "accepted";
9
- } | {
10
- status: "rejected";
11
- code: "not_controller" | "already_resolved" | "unknown_request";
12
- };
13
- export interface UiRequestBrokerOptions<TRequest> {
14
- emitRequest: (correlationId: string, request: TRequest) => void;
15
- }
16
- export interface UiRequestOptions {
17
- correlationId?: string;
18
- timeoutMs?: number;
19
- signal?: AbortSignal;
20
- }
21
- /**
22
- * Broker for one active session. v1 supports one controller token at a time;
23
- * other clients may observe frames but cannot answer correlated requests.
24
- */
25
- export declare class UiRequestBroker<TRequest, TResponse> {
26
- #private;
27
- constructor(options: UiRequestBrokerOptions<TRequest>);
28
- get ownerToken(): string | undefined;
29
- get pendingCount(): number;
30
- claimController(ownerToken?: string): {
31
- status: "claimed";
32
- ownerToken: string;
33
- } | {
34
- status: "busy";
35
- };
36
- releaseController(ownerToken: string): boolean;
37
- request(request: TRequest, options?: UiRequestOptions): Promise<UiRequestResolution<TResponse>>;
38
- respond(correlationId: string, ownerToken: string, response: TResponse): UiBrokerResponseResult;
39
- cancelAll(reason: UiRequestCancelReason): void;
40
- cancel(correlationId: string, reason: UiRequestCancelReason): boolean;
41
- disconnectController(ownerToken: string): boolean;
42
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * Typed UI/manipulation result semantics for bridge-capability handling.
3
- *
4
- * `unsupported` is distinct from both a real value and user cancellation. This
5
- * prevents local-only or undeclared `ExtensionUIContext` surfaces from becoming
6
- * silent no-ops that look like user intent.
7
- */
8
- export interface BridgeUiValue<TValue> {
9
- status: "value";
10
- value: TValue;
11
- }
12
- export interface BridgeUiCancelled {
13
- status: "cancelled";
14
- reason?: "user" | "timeout" | "abort" | "disconnect";
15
- }
16
- export interface BridgeUiUnsupported {
17
- status: "unsupported";
18
- capability: string;
19
- reason: string;
20
- }
21
- export type BridgeUiResult<TValue> = BridgeUiValue<TValue> | BridgeUiCancelled | BridgeUiUnsupported;
22
- export declare function uiValue<TValue>(value: TValue): BridgeUiValue<TValue>;
23
- export declare function uiCancelled(reason?: BridgeUiCancelled["reason"]): BridgeUiCancelled;
24
- export declare function uiUnsupported(capability: string, reason: string): BridgeUiUnsupported;
25
- export declare function isUiUnsupported<TValue>(result: BridgeUiResult<TValue>): result is BridgeUiUnsupported;
26
- export declare function isUiCancelled<TValue>(result: BridgeUiResult<TValue>): result is BridgeUiCancelled;
27
- export declare function isUiValue<TValue>(result: BridgeUiResult<TValue>): result is BridgeUiValue<TValue>;
@@ -1,29 +0,0 @@
1
- /**
2
- * Unattended action taxonomy + classifier (#319).
3
- *
4
- * Maps coarse command scopes and concrete bash commands onto the v1 action
5
- * taxonomy so the controller can authorize (default-deny) BEFORE any side effect.
6
- *
7
- * The classifier is deliberately FAIL-CLOSED for shell evasion:
8
- * - nested execution via `$(...)`, backticks, and `<(...)` / `>(...)` is
9
- * extracted and classified recursively, so a destructive command hidden in a
10
- * substitution cannot masquerade as the harmless outer command;
11
- * - statements are split on newlines and `; && || | &`, so a second
12
- * (destructive) command on another line is classified too;
13
- * - leading environment assignments and wrappers (`sudo`, `env`, `command`,
14
- * `xargs`, …) are stripped/followed to the effective command;
15
- * - anything that is not provably read-only escalates to at least
16
- * `bash.mutating`, and clearly destructive forms escalate further, so an
17
- * undeclared destructive action is denied rather than silently allowed.
18
- */
19
- import type { RpcUnattendedActionClass } from "../../rpc/rpc-types";
20
- import type { BridgeCommandScope } from "./scopes";
21
- /** Coarse command scope -> `command.<scope>` action class. */
22
- export declare function actionClassForScope(scope: BridgeCommandScope): RpcUnattendedActionClass;
23
- /** Runtime list of every v1 action class — membership-validation source for negotiate (#319). */
24
- export declare const RPC_UNATTENDED_ACTION_CLASSES: readonly RpcUnattendedActionClass[];
25
- /**
26
- * Classify a (possibly compound / nested) bash command into the most severe
27
- * action class across all statements and nested substitutions. Fail-closed.
28
- */
29
- export declare function classifyBashAction(command: string): RpcUnattendedActionClass;
@@ -1,68 +0,0 @@
1
- import type { RpcBudgetExceeded, RpcWorkflowGateKind, RpcWorkflowStage } from "../../rpc/rpc-types";
2
- export declare const AUDIT_SCHEMA_VERSION = 1;
3
- export declare const AUDIT_CATEGORY = "unattended_lifecycle";
4
- export type AuditOutcome = "accepted" | "rejected" | "denied" | "exceeded" | "aborted" | "info";
5
- export interface AuditRecord {
6
- event_id: string;
7
- schema_version: number;
8
- category: typeof AUDIT_CATEGORY;
9
- run_id: string;
10
- session_id?: string;
11
- actor?: string;
12
- timestamp: string;
13
- event: string;
14
- outcome: AuditOutcome;
15
- dedupe_key: string;
16
- gate_id?: string;
17
- stage?: RpcWorkflowStage;
18
- kind?: RpcWorkflowGateKind;
19
- scope?: string;
20
- action?: string;
21
- budget?: RpcBudgetExceeded;
22
- /** Full answer (omitted when redaction is enabled). */
23
- answer?: unknown;
24
- answer_hash?: string;
25
- error?: unknown;
26
- }
27
- export interface AuditQuery {
28
- run_id?: string;
29
- session_id?: string;
30
- actor?: string;
31
- gate_id?: string;
32
- outcome?: AuditOutcome;
33
- event?: string;
34
- since?: string;
35
- until?: string;
36
- }
37
- export interface AuditLogOptions {
38
- /** When true, gate answers are stored as hash + summary only. */
39
- redactAnswers?: boolean;
40
- /** Injectable id/clock for deterministic tests. */
41
- now?(): number;
42
- nextId?(): string;
43
- }
44
- export declare function defaultAuditPath(runId: string, root?: string, gjcSessionId?: string): string;
45
- /** Append-only audit log writer + reader for one unattended run. */
46
- export declare class UnattendedAuditLog {
47
- private readonly filePath;
48
- private readonly seen;
49
- private readonly now;
50
- private readonly nextId;
51
- private readonly redactAnswers;
52
- constructor(filePath: string, options?: AuditLogOptions);
53
- /**
54
- * Append a record. Returns the written record, or `null` if a record with the
55
- * same dedupe_key was already written (exactly-once).
56
- */
57
- record(input: Omit<AuditRecord, "event_id" | "schema_version" | "category" | "timestamp">): AuditRecord | null;
58
- /** Append one line and fsync it for crash durability. */
59
- private appendDurable;
60
- /** Read every record (fail-closed: a corrupt line throws rather than silently dropping). */
61
- readAll(): AuditRecord[];
62
- /** Query records with filters (run/session/actor/gate/outcome/event + time window). */
63
- query(filter?: AuditQuery): AuditRecord[];
64
- /** Export the full trail as an array (for `get_unattended_audit`). */
65
- export(filter?: AuditQuery): AuditRecord[];
66
- }
67
- /** SHA-256 of the canonical JSON of an answer (matches the gate broker's hash). */
68
- export declare function answerHash(answer: unknown): string;
@@ -1,166 +0,0 @@
1
- /**
2
- * Unattended run controller (#318).
3
- *
4
- * The single required owner of negotiated unattended state. Entering unattended
5
- * mode is fail-closed: a controller can only be created via {@link
6
- * UnattendedRunController.negotiate}, which rejects a missing/partial budget, an
7
- * invalid declaration, or a provider that cannot account for tokens/cost.
8
- *
9
- * The controller owns budget accounting across metrics and phases. Scope/action
10
- * authorization (#319) and the durable audit trail (#320) layer onto the same
11
- * controller; this slice wires the budget floor and abort coordination.
12
- *
13
- * Attended mode never constructs a controller, so by construction the attended
14
- * path is unaffected by everything here.
15
- */
16
- import type { RpcActionDenied, RpcBudgetExceeded, RpcBudgetMetric, RpcScopeDenied, RpcUnattendedActionClass, RpcUnattendedBudget, RpcUnattendedRefusalCode } from "../../rpc/rpc-types";
17
- import type { BridgeCommandScope } from "./scopes";
18
- import { actionClassForScope } from "./unattended-action-policy";
19
- /** Coordinated abort surfaces invoked exactly once on a budget breach / abort. */
20
- export interface UnattendedAbortHooks {
21
- abortModelStream?(): void | Promise<void>;
22
- abortBash?(): void | Promise<void>;
23
- cancelHostTools?(reason: string): void | Promise<void>;
24
- cancelHostUris?(reason: string): void | Promise<void>;
25
- stopWorkflow?(reason: string): void | Promise<void>;
26
- }
27
- export type UnattendedAuditEvent = {
28
- event: "unattended_negotiated";
29
- run_id: string;
30
- actor: string;
31
- } | {
32
- event: "budget_exceeded";
33
- payload: RpcBudgetExceeded;
34
- } | {
35
- event: "unattended_aborted";
36
- run_id: string;
37
- reason: string;
38
- } | {
39
- event: "unattended_abort_settled";
40
- run_id: string;
41
- status: "aborted" | "abort_failed";
42
- failures: number;
43
- } | {
44
- event: "scope_denied";
45
- payload: RpcScopeDenied;
46
- } | {
47
- event: "action_denied";
48
- payload: RpcActionDenied;
49
- };
50
- export interface NegotiateContext {
51
- runId: string;
52
- sessionId?: string;
53
- audit?(event: UnattendedAuditEvent): void;
54
- abortHooks?: UnattendedAbortHooks;
55
- /**
56
- * Whether the active provider can report token usage and cost. Unattended
57
- * mode rejects providers without this accounting up front (fail-closed).
58
- */
59
- providerSupportsTokenCostMetrics?: boolean;
60
- /** Injectable clock for deterministic tests. Defaults to Date.now. */
61
- now?(): number;
62
- }
63
- export declare class UnattendedNegotiationError extends Error {
64
- readonly code: RpcUnattendedRefusalCode;
65
- constructor(code: RpcUnattendedRefusalCode, message: string);
66
- }
67
- export declare class UnattendedBudgetExceededError extends Error {
68
- readonly payload: RpcBudgetExceeded;
69
- constructor(payload: RpcBudgetExceeded);
70
- }
71
- /** Thrown when a provider/tool reports a non-finite usage value (fail-closed). */
72
- export declare class UnattendedAccountingError extends Error {
73
- readonly metric: RpcBudgetMetric;
74
- readonly phase: string;
75
- constructor(metric: RpcBudgetMetric, phase: string, value: unknown);
76
- }
77
- /** Thrown when a command's coarse scope is outside the declared allowlist (#319). */
78
- export declare class ScopeDeniedError extends Error {
79
- readonly payload: RpcScopeDenied;
80
- constructor(payload: RpcScopeDenied);
81
- }
82
- /** Thrown when an action class is outside the declared allowlist (default-deny, #319). */
83
- export declare class ActionDeniedError extends Error {
84
- readonly payload: RpcActionDenied;
85
- constructor(payload: RpcActionDenied);
86
- }
87
- interface Usage {
88
- tokens: number;
89
- toolCalls: number;
90
- costUsd: number;
91
- }
92
- export declare class UnattendedRunController {
93
- readonly runId: string;
94
- readonly sessionId?: string;
95
- readonly actor: string;
96
- readonly budget: RpcUnattendedBudget;
97
- readonly scopes: ReadonlySet<string>;
98
- readonly actionAllowlist: ReadonlySet<string>;
99
- private readonly usage;
100
- private readonly startedAt;
101
- private readonly now;
102
- private readonly audit?;
103
- private readonly abortHooks;
104
- private aborted;
105
- private abortPromise?;
106
- private constructor();
107
- /** Fail-closed entry: validate the declaration + budget, or throw. */
108
- static negotiate(declaration: unknown, ctx: NegotiateContext): UnattendedRunController;
109
- get isAborted(): boolean;
110
- usageSnapshot(): Readonly<Usage> & {
111
- wallTimeMs: number;
112
- };
113
- remainingWallTimeMs(): number;
114
- /**
115
- * Authorize a command's coarse scope against the declared allowlist. Throws
116
- * ScopeDeniedError (pre-side-effect) when the scope was not declared.
117
- */
118
- authorizeScope(scope: BridgeCommandScope, command?: string): void;
119
- /**
120
- * Authorize an action class against the declared allowlist. Default-deny: any
121
- * class not explicitly declared is rejected with ActionDeniedError before the
122
- * side effect runs.
123
- */
124
- authorizeAction(action: RpcUnattendedActionClass, command?: string): void;
125
- /**
126
- * Classify a bash command and authorize the resulting action class BEFORE the
127
- * command is executed. Returns the classified action class on success.
128
- */
129
- authorizeBash(command: string): RpcUnattendedActionClass;
130
- /** Convenience: map a coarse scope to its `command.<scope>` action class. */
131
- static actionClassForScope: typeof actionClassForScope;
132
- /** Pre-turn estimate: refuse to start a turn that would obviously breach. */
133
- preTurnEstimate(estimate: {
134
- tokens?: number;
135
- costUsd?: number;
136
- }): void;
137
- /** Reserve one tool-call unit BEFORE any side effect; breach if it would exceed. */
138
- preflightToolCall(phase?: string): void;
139
- /** Post-turn reconciliation of actual token usage. Fails closed on non-finite. */
140
- recordTokens(tokens: number, phase?: string): void;
141
- recordCost(costUsd: number, phase?: string): void;
142
- /** Combined post-turn reconciliation. */
143
- reconcile(actual: {
144
- tokens?: number;
145
- costUsd?: number;
146
- }, phase?: string): void;
147
- /** Wall-time check; call before/inside long operations. */
148
- checkWallTime(phase?: string): void;
149
- private breach;
150
- /**
151
- * Idempotent abort: runs every abort hook at most once. Safe to call from the
152
- * synchronous breach path (which does not await) and from callers that do; both
153
- * share a single abort promise so hook completion can be awaited deterministically.
154
- */
155
- abort(reason: string): Promise<void>;
156
- /** Returns the in-flight/settled abort completion once aborting has begun. */
157
- get abortCompletion(): Promise<void> | undefined;
158
- private fireAbort;
159
- /**
160
- * Invoke every configured abort hook exactly once with per-hook isolation, so a
161
- * failing hook never prevents the other cancellation surfaces from running.
162
- * Returns the number of hooks that rejected.
163
- */
164
- private runAbortHooks;
165
- }
166
- export {};