@gajae-code/coding-agent 0.10.2 → 0.11.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 (476) hide show
  1. package/CHANGELOG.md +58 -2
  2. package/dist/types/append-only-mode.d.ts +1 -1
  3. package/dist/types/async/job-manager.d.ts +46 -7
  4. package/dist/types/cli/args.d.ts +4 -5
  5. package/dist/types/cli/daemon-cli.d.ts +12 -1
  6. package/dist/types/cli/notify-cli.d.ts +21 -1
  7. package/dist/types/cli.d.ts +3 -0
  8. package/dist/types/commands/daemon.d.ts +39 -0
  9. package/dist/types/commands/launch.d.ts +3 -0
  10. package/dist/types/commands/notify.d.ts +28 -1
  11. package/dist/types/commands/sdk.d.ts +33 -0
  12. package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
  13. package/dist/types/config/model-profile-activation.d.ts +35 -15
  14. package/dist/types/config/model-profiles.d.ts +11 -5
  15. package/dist/types/config/model-registry.d.ts +3 -3
  16. package/dist/types/config/model-resolver.d.ts +39 -6
  17. package/dist/types/config/model-selector-value.d.ts +17 -0
  18. package/dist/types/config/models-config-schema.d.ts +10 -6
  19. package/dist/types/config/settings-schema.d.ts +133 -6
  20. package/dist/types/config/settings.d.ts +63 -35
  21. package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
  22. package/dist/types/coordinator-mcp/server.d.ts +6 -49
  23. package/dist/types/daemon/builtin.d.ts +6 -5
  24. package/dist/types/daemon/control-types.d.ts +1 -1
  25. package/dist/types/discovery/mcp-json.d.ts +12 -1
  26. package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
  27. package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
  28. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
  29. package/dist/types/extensibility/extensions/loader.d.ts +10 -1
  30. package/dist/types/extensibility/extensions/runner.d.ts +3 -3
  31. package/dist/types/extensibility/extensions/types.d.ts +141 -16
  32. package/dist/types/extensibility/hooks/types.d.ts +1 -1
  33. package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
  34. package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
  35. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
  36. package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
  37. package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
  38. package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
  39. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
  40. package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
  41. package/dist/types/harness-control-plane/operate.d.ts +5 -5
  42. package/dist/types/harness-control-plane/owner.d.ts +18 -4
  43. package/dist/types/harness-control-plane/receipts.d.ts +0 -1
  44. package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
  45. package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
  46. package/dist/types/harness-control-plane/types.d.ts +3 -4
  47. package/dist/types/lsp/index.d.ts +1 -1
  48. package/dist/types/main.d.ts +32 -38
  49. package/dist/types/modes/acp/acp-agent.d.ts +224 -53
  50. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
  51. package/dist/types/modes/acp/acp-mode.d.ts +6 -15
  52. package/dist/types/modes/acp/permission-mode.d.ts +4 -0
  53. package/dist/types/modes/acp/startup-options.d.ts +6 -0
  54. package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
  55. package/dist/types/modes/components/model-selector.d.ts +1 -0
  56. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  57. package/dist/types/modes/components/settings-selector.d.ts +6 -4
  58. package/dist/types/modes/components/welcome.d.ts +1 -1
  59. package/dist/types/modes/controllers/command-controller.d.ts +2 -2
  60. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
  61. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  62. package/dist/types/modes/index.d.ts +0 -4
  63. package/dist/types/modes/interactive-mode.d.ts +5 -2
  64. package/dist/types/modes/runtime-init.d.ts +2 -2
  65. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  66. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  67. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  68. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  69. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  70. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
  71. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  72. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  73. package/dist/types/modes/types.d.ts +7 -2
  74. package/dist/types/runtime-mcp/client.d.ts +2 -0
  75. package/dist/types/runtime-mcp/config.d.ts +5 -1
  76. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  77. package/dist/types/runtime-mcp/types.d.ts +4 -0
  78. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  79. package/dist/types/sdk/acp/index.d.ts +2 -0
  80. package/dist/types/sdk/broker/broker.d.ts +53 -0
  81. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  82. package/dist/types/sdk/broker/ensure.d.ts +42 -0
  83. package/dist/types/sdk/broker/identity.d.ts +3 -0
  84. package/dist/types/sdk/broker/index.d.ts +8 -0
  85. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  86. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  87. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  88. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  89. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  90. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  91. package/dist/types/sdk/broker/transport.d.ts +9 -0
  92. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  93. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  94. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  95. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  96. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  97. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  98. package/dist/types/sdk/bus/config.d.ts +274 -0
  99. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  100. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  101. package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
  102. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  103. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  104. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  105. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  106. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  107. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  108. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  109. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  110. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  111. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  112. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  113. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  114. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  115. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  116. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  117. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  118. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  119. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  120. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  121. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
  122. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  123. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  124. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  125. package/dist/types/sdk/cli/index.d.ts +1 -0
  126. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  127. package/dist/types/sdk/client/client.d.ts +1 -0
  128. package/dist/types/sdk/client/discovery.d.ts +27 -0
  129. package/dist/types/sdk/client/index.d.ts +2 -0
  130. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  131. package/dist/types/sdk/host/control/index.d.ts +2 -0
  132. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  133. package/dist/types/sdk/host/events.d.ts +35 -0
  134. package/dist/types/sdk/host/host.d.ts +35 -0
  135. package/dist/types/sdk/host/index.d.ts +4 -0
  136. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  137. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  138. package/dist/types/sdk/host/query/index.d.ts +3 -0
  139. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  140. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  141. package/dist/types/sdk/host/types.d.ts +32 -0
  142. package/dist/types/sdk/index.d.ts +6 -0
  143. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  144. package/dist/types/sdk/mcp/index.d.ts +1 -0
  145. package/dist/types/sdk/mcp/server.d.ts +37 -0
  146. package/dist/types/sdk/models.d.ts +44 -0
  147. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  148. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  149. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  150. package/dist/types/sdk/startup-capability.d.ts +50 -0
  151. package/dist/types/session/agent-session.d.ts +114 -21
  152. package/dist/types/session/default-model-selection.d.ts +25 -0
  153. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  154. package/dist/types/session/session-manager.d.ts +58 -1
  155. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  156. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  157. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  158. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  159. package/dist/types/tools/browser/launch.d.ts +22 -0
  160. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  161. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  162. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  163. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  164. package/dist/types/tools/browser/registry.d.ts +19 -0
  165. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  166. package/dist/types/tools/index.d.ts +8 -8
  167. package/dist/types/tools/subagent-render.d.ts +1 -0
  168. package/dist/types/tools/subagent.d.ts +6 -1
  169. package/package.json +34 -13
  170. package/scripts/build-sdk-package-smoke.ts +99 -0
  171. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  172. package/scripts/compile-args.ts +4 -2
  173. package/scripts/g005-daemon-smoke.ts +4 -5
  174. package/scripts/g011-daemon-path-smoke.ts +5 -5
  175. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  176. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  177. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  178. package/scripts/manifest-schema.ts +124 -0
  179. package/scripts/run-test-manifest.ts +153 -0
  180. package/scripts/run-threat-model-check.ts +157 -0
  181. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  182. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  183. package/src/append-only-mode.ts +1 -1
  184. package/src/async/job-manager.ts +406 -63
  185. package/src/cli/args.ts +43 -12
  186. package/src/cli/auth-gateway-cli.ts +2 -2
  187. package/src/cli/config-cli.ts +2 -1
  188. package/src/cli/daemon-cli.ts +63 -14
  189. package/src/cli/list-models.ts +1 -1
  190. package/src/cli/notify-cli.ts +288 -286
  191. package/src/cli.ts +21 -2
  192. package/src/commands/daemon.ts +50 -6
  193. package/src/commands/harness.ts +93 -36
  194. package/src/commands/launch.ts +5 -2
  195. package/src/commands/mcp-serve.ts +19 -12
  196. package/src/commands/notify.ts +36 -3
  197. package/src/commands/sdk.ts +426 -0
  198. package/src/commit/agentic/agent.ts +1 -0
  199. package/src/config/atomic-yaml-patch.ts +423 -0
  200. package/src/config/model-profile-activation.ts +240 -89
  201. package/src/config/model-profiles.ts +18 -15
  202. package/src/config/model-registry.ts +51 -26
  203. package/src/config/model-resolver.ts +138 -51
  204. package/src/config/model-selector-value.ts +50 -0
  205. package/src/config/models-config-schema.ts +14 -21
  206. package/src/config/settings-schema.ts +128 -10
  207. package/src/config/settings.ts +1120 -158
  208. package/src/coordinator-mcp/model-preset.ts +74 -20
  209. package/src/coordinator-mcp/server.ts +1597 -3052
  210. package/src/daemon/builtin.ts +8 -5
  211. package/src/daemon/control-types.ts +1 -1
  212. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  213. package/src/discovery/mcp-json.ts +327 -20
  214. package/src/extensibility/custom-tools/types.ts +1 -1
  215. package/src/extensibility/extensions/compact-handler.ts +3 -3
  216. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  217. package/src/extensibility/extensions/loader.ts +69 -5
  218. package/src/extensibility/extensions/runner.ts +112 -4
  219. package/src/extensibility/extensions/types.ts +176 -17
  220. package/src/extensibility/hooks/types.ts +1 -1
  221. package/src/gjc-runtime/launch-tmux.ts +170 -86
  222. package/src/gjc-runtime/psmux-detect.ts +82 -4
  223. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  224. package/src/gjc-runtime/team-runtime.ts +54 -35
  225. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  226. package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
  227. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  228. package/src/gjc-runtime/ultragoal-guard.ts +108 -14
  229. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
  230. package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
  231. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  232. package/src/harness-control-plane/operate.ts +9 -9
  233. package/src/harness-control-plane/owner.ts +283 -39
  234. package/src/harness-control-plane/receipts.ts +0 -1
  235. package/src/harness-control-plane/sdk-transport.ts +395 -0
  236. package/src/harness-control-plane/session-transport.ts +94 -0
  237. package/src/harness-control-plane/types.ts +1 -1
  238. package/src/internal-urls/docs-index.generated.ts +34 -35
  239. package/src/lsp/client.ts +42 -6
  240. package/src/lsp/index.ts +2 -2
  241. package/src/main.ts +299 -204
  242. package/src/modes/DESIGN.md +258 -0
  243. package/src/modes/acp/acp-agent.ts +1228 -2612
  244. package/src/modes/acp/acp-client-bridge.ts +2 -20
  245. package/src/modes/acp/acp-event-mapper.ts +18 -2
  246. package/src/modes/acp/acp-mode.ts +8 -36
  247. package/src/modes/acp/permission-mode.ts +25 -0
  248. package/src/modes/acp/startup-options.ts +6 -0
  249. package/src/modes/components/agent-dashboard.ts +37 -17
  250. package/src/modes/components/model-selector.ts +93 -35
  251. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  252. package/src/modes/components/settings-selector.ts +60 -11
  253. package/src/modes/components/welcome.ts +4 -4
  254. package/src/modes/controllers/command-controller.ts +10 -17
  255. package/src/modes/controllers/event-controller.ts +11 -16
  256. package/src/modes/controllers/extension-ui-controller.ts +396 -28
  257. package/src/modes/controllers/selector-controller.ts +674 -36
  258. package/src/modes/index.ts +0 -22
  259. package/src/modes/interactive-mode.ts +87 -36
  260. package/src/modes/runtime-init.ts +298 -6
  261. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  262. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  263. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  264. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  265. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  266. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
  267. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  268. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  269. package/src/modes/types.ts +7 -2
  270. package/src/runtime-mcp/client.ts +94 -19
  271. package/src/runtime-mcp/config.ts +27 -15
  272. package/src/runtime-mcp/manager.ts +343 -105
  273. package/src/runtime-mcp/oauth-flow.ts +42 -12
  274. package/src/runtime-mcp/transports/http.ts +49 -19
  275. package/src/runtime-mcp/transports/stdio.ts +47 -28
  276. package/src/runtime-mcp/types.ts +10 -0
  277. package/src/sdk/acp/adapter.ts +418 -0
  278. package/src/sdk/acp/index.ts +2 -0
  279. package/src/sdk/broker/broker.ts +642 -0
  280. package/src/sdk/broker/discovery.ts +113 -0
  281. package/src/sdk/broker/ensure.ts +307 -0
  282. package/src/sdk/broker/identity.ts +42 -0
  283. package/src/sdk/broker/index.ts +8 -0
  284. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  285. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  286. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  287. package/src/sdk/broker/lifecycle.ts +2157 -0
  288. package/src/sdk/broker/process-incarnation.ts +159 -0
  289. package/src/sdk/broker/runtime.ts +164 -0
  290. package/src/sdk/broker/session-index.ts +318 -0
  291. package/src/sdk/broker/state-version.ts +23 -0
  292. package/src/sdk/broker/transport.ts +125 -0
  293. package/src/sdk/bus/chat-command-policy.ts +107 -0
  294. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  295. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  296. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  297. package/src/sdk/bus/chat-effect-journal.ts +355 -0
  298. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  299. package/src/sdk/bus/config.ts +433 -0
  300. package/src/sdk/bus/conversation-store.ts +391 -0
  301. package/src/sdk/bus/discord-conversation.ts +85 -0
  302. package/src/sdk/bus/discord-daemon.ts +2292 -0
  303. package/src/sdk/bus/discord-live-provider.ts +521 -0
  304. package/src/sdk/bus/discord-provider.ts +56 -0
  305. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  306. package/src/sdk/bus/index.ts +3979 -0
  307. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  308. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  309. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  310. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  311. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  312. package/src/sdk/bus/natives-augment.d.ts +38 -0
  313. package/src/sdk/bus/notification-orchestration.ts +535 -0
  314. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  315. package/src/sdk/bus/session-control.ts +333 -0
  316. package/src/sdk/bus/slack-conversation.ts +74 -0
  317. package/src/sdk/bus/slack-daemon.ts +2144 -0
  318. package/src/sdk/bus/slack-live-provider.ts +380 -0
  319. package/src/sdk/bus/slack-provider.ts +76 -0
  320. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  321. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  322. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  323. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  324. package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
  325. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  326. package/src/sdk/bus/telegram-setup.ts +663 -0
  327. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  328. package/src/sdk/cli/index.ts +1 -0
  329. package/src/sdk/cli/session-cli.ts +275 -0
  330. package/src/sdk/client/client.ts +1 -0
  331. package/src/sdk/client/discovery.ts +108 -0
  332. package/src/sdk/client/index.ts +2 -0
  333. package/src/sdk/host/control/dispatch.ts +367 -0
  334. package/src/sdk/host/control/index.ts +10 -0
  335. package/src/sdk/host/control/operations.ts +63 -0
  336. package/src/sdk/host/events.ts +91 -0
  337. package/src/sdk/host/host.ts +296 -0
  338. package/src/sdk/host/index.ts +4 -0
  339. package/src/sdk/host/query/cursor.ts +189 -0
  340. package/src/sdk/host/query/handlers.ts +533 -0
  341. package/src/sdk/host/query/index.ts +3 -0
  342. package/src/sdk/host/query/revision-store.ts +1126 -0
  343. package/src/sdk/host/reverse-leases.ts +325 -0
  344. package/src/sdk/host/types.ts +29 -0
  345. package/src/sdk/index.ts +13 -0
  346. package/src/sdk/lifecycle-session.ts +39 -0
  347. package/src/sdk/mcp/index.ts +1 -0
  348. package/src/sdk/mcp/server.ts +332 -0
  349. package/src/sdk/models.ts +168 -0
  350. package/src/sdk/protocol/adapter-validation.ts +48 -0
  351. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  352. package/src/sdk/protocol/operation-registry.ts +312 -0
  353. package/src/{sdk.ts → sdk/session.ts} +339 -212
  354. package/src/sdk/startup-capability.ts +189 -0
  355. package/src/session/agent-session.ts +2650 -944
  356. package/src/session/default-model-selection.ts +93 -0
  357. package/src/session/fallback-chain-controller.ts +136 -0
  358. package/src/session/session-manager.ts +438 -11
  359. package/src/session/session-storage.ts +8 -1
  360. package/src/setup/credential-auto-import.ts +290 -35
  361. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  362. package/src/slash-commands/builtin-registry.ts +2 -1
  363. package/src/task/executor.ts +62 -13
  364. package/src/task/index.ts +26 -16
  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/subagent-render.ts +19 -8
  384. package/src/tools/subagent.ts +84 -32
  385. package/src/tools/telegram-send.ts +2 -2
  386. package/vendor/insane-search/MANIFEST.json +2 -1
  387. package/vendor/insane-search/engine/bias_check.py +4 -1
  388. package/vendor/insane-search/engine/phase0.py +26 -1
  389. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  390. package/dist/types/modes/bridge/auth.d.ts +0 -12
  391. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  392. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  393. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  394. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  395. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  396. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  397. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  398. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  399. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  400. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  401. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  402. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  403. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  404. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  405. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  406. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  407. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  408. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  409. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  410. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  411. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  412. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  413. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  414. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  415. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  416. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  417. package/dist/types/notifications/config.d.ts +0 -132
  418. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  419. package/src/modes/bridge/auth.ts +0 -41
  420. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  421. package/src/modes/bridge/bridge-mode.ts +0 -675
  422. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  423. package/src/modes/bridge/event-stream.ts +0 -70
  424. package/src/modes/rpc/host-tools.ts +0 -1
  425. package/src/modes/rpc/host-uris.ts +0 -1
  426. package/src/modes/rpc/rpc-client.ts +0 -1166
  427. package/src/modes/rpc/rpc-mode.ts +0 -1029
  428. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  429. package/src/modes/rpc/rpc-types.ts +0 -637
  430. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  431. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  432. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  433. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  434. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  435. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  436. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  437. package/src/modes/shared/agent-wire/responses.ts +0 -17
  438. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  439. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  440. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  441. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  442. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  443. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  444. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  445. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  446. package/src/notifications/config.ts +0 -219
  447. package/src/notifications/index.ts +0 -1835
  448. package/src/notifications/telegram-daemon-cli.ts +0 -243
  449. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  450. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  453. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  454. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  455. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  456. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  457. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  458. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  459. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  460. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  461. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  462. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  463. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  466. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  467. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  468. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  469. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  470. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  471. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  472. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  473. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  474. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  475. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  476. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -80,8 +80,17 @@ export interface SubagentSnapshot {
80
80
  modelFellBack?: boolean;
81
81
  }
82
82
 
83
+ export type SubagentAwaitOutcome = "completed" | "timed_out" | "interrupted";
84
+
85
+ const AWAIT_INTERRUPTED_GUIDANCE =
86
+ "Await interrupted; this subagent continues. Inspect its current state or cancel it only when necessary.";
87
+
83
88
  export interface SubagentToolDetails {
84
89
  subagents: SubagentSnapshot[];
90
+ /** Await outcome for a live await receipt; omitted when no wait was started. */
91
+ awaitOutcome?: SubagentAwaitOutcome;
92
+ /** True only when the parent await was interrupted; the child was not cancelled. */
93
+ interrupted?: true;
85
94
  }
86
95
 
87
96
  export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentToolDetails> {
@@ -370,35 +379,50 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
370
379
  // the viewport (the source of the await-panel repaint storms).
371
380
  emitIfChanged(true);
372
381
 
373
- let timedOut = false;
382
+ let awaitOutcome: SubagentAwaitOutcome;
383
+ const { promise: timeoutPromise, resolve: resolveTimeout } = Promise.withResolvers<SubagentAwaitOutcome>();
384
+ const timeoutTimer = setTimeout(() => resolveTimeout("timed_out"), timeoutMs);
385
+ const completionPromise = Promise.all(runningJobs.map(job => job.promise)).then(() => "completed" as const);
386
+ let onAbort: (() => void) | undefined;
374
387
  try {
375
- const completionPromise = Promise.all(runningJobs.map(job => job.promise));
376
- const timeoutPromise = Bun.sleep(timeoutMs).then(() => {
377
- timedOut = true;
378
- });
379
388
  if (signal) {
380
- const { promise: abortPromise, resolve: abortResolve } = Promise.withResolvers<void>();
381
- const onAbort = () => abortResolve();
382
- signal.addEventListener("abort", onAbort, { once: true });
383
- try {
384
- await Promise.race([completionPromise, timeoutPromise, abortPromise]);
385
- } finally {
386
- signal.removeEventListener("abort", onAbort);
387
- }
389
+ const { promise: abortPromise, resolve: resolveAbort } = Promise.withResolvers<SubagentAwaitOutcome>();
390
+ onAbort = () => resolveAbort("interrupted");
391
+ if (signal.aborted) onAbort();
392
+ else signal.addEventListener("abort", onAbort, { once: true });
393
+ awaitOutcome = await Promise.race([completionPromise, timeoutPromise, abortPromise]);
388
394
  } else {
389
- await Promise.race([completionPromise, timeoutPromise]);
395
+ awaitOutcome = await Promise.race([completionPromise, timeoutPromise]);
390
396
  }
391
397
  } finally {
392
- manager.unwatchJobs(watchedJobIds);
398
+ clearTimeout(timeoutTimer);
399
+ if (signal && onAbort) signal.removeEventListener("abort", onAbort);
393
400
  if (progressTimer) clearInterval(progressTimer);
394
401
  }
402
+ if (awaitOutcome !== "interrupted") {
403
+ const terminalWatchedJobIds = watchedJobIds.filter(jobId => {
404
+ const status = manager.getJob(jobId)?.status;
405
+ return status === "completed" || status === "failed" || status === "cancelled";
406
+ });
407
+ manager.acknowledgeDeliveries(terminalWatchedJobIds);
408
+ }
409
+ manager.unwatchJobs(watchedJobIds);
395
410
 
396
- return await this.#buildRecordResult(manager, records, {
397
- title: "Subagent await",
398
- notFoundIds,
399
- timedOut,
411
+ const finalRecords = this.#visibleRecordsByIds(
412
+ manager,
413
+ records.map(record => record.subagentId),
414
+ ownerFilter,
415
+ );
416
+ const finalNotFoundIds = [...new Set([...notFoundIds, ...records.map(record => record.subagentId)])].filter(
417
+ id => !finalRecords.some(record => record.subagentId === id),
418
+ );
419
+ return await this.#buildRecordResult(manager, finalRecords, {
420
+ title: awaitOutcome === "interrupted" ? "Subagent await interrupted" : "Subagent await",
421
+ notFoundIds: finalNotFoundIds,
422
+ timedOut: awaitOutcome === "timed_out",
400
423
  verbosity: params.verbosity ?? "receipt",
401
424
  attachLiveProgress: true,
425
+ awaitOutcome,
402
426
  });
403
427
  }
404
428
 
@@ -516,6 +540,7 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
516
540
  timedOut?: boolean;
517
541
  verbosity?: SubagentParams["verbosity"];
518
542
  attachLiveProgress?: boolean;
543
+ awaitOutcome?: SubagentAwaitOutcome;
519
544
  },
520
545
  ): Promise<AgentToolResult<SubagentToolDetails>> {
521
546
  const verifiedOutputIds = await this.#verifiedOutputIds(records);
@@ -530,18 +555,34 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
530
555
  for (const id of options.notFoundIds ?? []) {
531
556
  snapshots.push(this.#missingSnapshot(id, "not_found", "No visible detached subagent matches this id."));
532
557
  }
533
- manager.acknowledgeDeliveries(
534
- snapshots
535
- .filter(
536
- s =>
537
- s.status !== "running" && s.status !== "paused" && s.status !== "queued" && s.status !== "not_found",
538
- )
539
- .map(s => s.jobId),
540
- );
541
- return this.#buildSnapshotResult(snapshots, options.title);
558
+ if (options.awaitOutcome !== "interrupted") {
559
+ manager.acknowledgeDeliveries(
560
+ snapshots
561
+ .filter(
562
+ s =>
563
+ s.status !== "running" &&
564
+ s.status !== "paused" &&
565
+ s.status !== "queued" &&
566
+ s.status !== "not_found",
567
+ )
568
+ .map(s => s.jobId),
569
+ );
570
+ }
571
+ if (options.awaitOutcome === "interrupted") {
572
+ for (const snapshot of snapshots) {
573
+ if (snapshot.status === "running" || snapshot.status === "paused" || snapshot.status === "queued") {
574
+ snapshot.guidance = AWAIT_INTERRUPTED_GUIDANCE;
575
+ }
576
+ }
577
+ }
578
+ return this.#buildSnapshotResult(snapshots, options.title, options.awaitOutcome);
542
579
  }
543
580
 
544
- #buildSnapshotResult(snapshots: SubagentSnapshot[], title: string): AgentToolResult<SubagentToolDetails> {
581
+ #buildSnapshotResult(
582
+ snapshots: SubagentSnapshot[],
583
+ title: string,
584
+ awaitOutcome?: SubagentAwaitOutcome,
585
+ ): AgentToolResult<SubagentToolDetails> {
545
586
  const lines = [`## ${title} (${snapshots.length})`, ""];
546
587
  for (const snapshot of snapshots) {
547
588
  lines.push(`### ${snapshot.id} — ${snapshot.status}`);
@@ -571,7 +612,11 @@ export class SubagentTool implements AgentTool<typeof subagentSchema, SubagentTo
571
612
  }
572
613
  return {
573
614
  content: [{ type: "text", text: lines.join("\n").trimEnd() }],
574
- details: { subagents: snapshots },
615
+ details: {
616
+ subagents: snapshots,
617
+ ...(awaitOutcome ? { awaitOutcome } : {}),
618
+ ...(awaitOutcome === "interrupted" ? { interrupted: true } : {}),
619
+ },
575
620
  };
576
621
  }
577
622
 
@@ -778,8 +823,15 @@ function previewJobOutput(
778
823
  * countdown ticking is sacrificed by design; every real transition still changes
779
824
  * the signature.
780
825
  */
781
- export function subagentAwaitRenderedStateSignature(subagents: readonly SubagentSnapshot[]): string {
782
- return JSON.stringify(subagents.map(canonicalizeSnapshotForSignature));
826
+ export function subagentAwaitRenderedStateSignature(
827
+ subagents: readonly SubagentSnapshot[],
828
+ receipt?: Pick<SubagentToolDetails, "awaitOutcome" | "interrupted">,
829
+ ): string {
830
+ return JSON.stringify({
831
+ awaitOutcome: receipt?.awaitOutcome ?? null,
832
+ interrupted: receipt?.interrupted === true,
833
+ subagents: subagents.map(canonicalizeSnapshotForSignature),
834
+ });
783
835
  }
784
836
 
785
837
  function canonicalizeSnapshotForSignature(snapshot: SubagentSnapshot): unknown {
@@ -2,8 +2,8 @@ import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
3
  import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@gajae-code/agent-core";
4
4
  import { z } from "zod/v4";
5
- import { getTelegramFileSink } from "../notifications/attachment-registry";
6
- import { getNotificationConfig, isGloballyConfigured } from "../notifications/config";
5
+ import { getTelegramFileSink } from "../sdk/bus/attachment-registry";
6
+ import { getNotificationConfig, isGloballyConfigured } from "../sdk/bus/config";
7
7
  import type { ToolSession } from "./index";
8
8
 
9
9
  const TELEGRAM_SEND_MAX_FILE_BYTES = 50 * 1024 * 1024;
@@ -20,7 +20,8 @@
20
20
  ],
21
21
  "exclusionRationale": "Excludes upstream install hooks (SessionStart settings.json mutation), GitHub star-baiting (gh api user/starred), the update-notifier, and the past-session transcript-language scanner. Only the runtime Phase 0-3 engine and its Playwright/stealth templates are vendored.",
22
22
  "localPatches": [
23
- "engine/content_safety.py + FetchResult trust/risk metadata (content_trust, prompt_injection_risk, prompt_injection_signals, untrusted_content_boundary) and to_untrusted_text(): cherry-picked from insane-search a16f7c1 (upstream PR #5, v0.9.0). Adds prompt-injection labelling to the JSON surface (to_dict); the default CLI text output is intentionally left unchanged (plain content preserved, no envelope)."
23
+ "engine/content_safety.py + FetchResult trust/risk metadata (content_trust, prompt_injection_risk, prompt_injection_signals, untrusted_content_boundary) and to_untrusted_text(): cherry-picked from insane-search a16f7c1 (upstream PR #5, v0.9.0). Adds prompt-injection labelling to the JSON surface (to_dict); the default CLI text output is intentionally left unchanged (plain content preserved, no envelope).",
24
+ "engine/phase0.py _ytdlp_argv() console-script→module fallback + engine/bias_check.py rel.as_posix() Windows exemption + engine/tests/test_u9.py: cherry-picked from insane-search 33f898d (upstream PR #6, released v0.9.2). Cross-platform yt-dlp resolution; no capability or site logic added."
24
25
  ],
25
26
  "notes": "Runtime engine is invoked via `python3 -m engine \"<url>\" --json` with cwd=this directory and PYTHONPATH pointed at this directory. Phase 0-2 require python3 + curl_cffi; Phase 3 requires node + playwright/playwright-extra/puppeteer-extra-plugin-stealth installed under engine/templates. GJC never auto-installs these dependencies."
26
27
  }
@@ -98,7 +98,10 @@ def _line_is_exempt(line: str, ext: str) -> bool:
98
98
  def _scan_file(path: Path, root: Path) -> list[str]:
99
99
  """Return list of violation strings for this file."""
100
100
  rel = path.relative_to(root.parent)
101
- if str(rel) in EXPLICIT_ALLOW_FILES:
101
+ # Compare with forward slashes so the exemption matches on Windows too —
102
+ # `str(rel)` yields backslashes there, silently defeating the phase0.py
103
+ # exemption (EXPLICIT_ALLOW_FILES uses POSIX-style paths).
104
+ if rel.as_posix() in EXPLICIT_ALLOW_FILES:
102
105
  return []
103
106
 
104
107
  ext = path.suffix.lower()
@@ -24,8 +24,11 @@ Each attempt dict: {"route","platform","ok","status","bytes","note"}.
24
24
  """
25
25
  from __future__ import annotations
26
26
 
27
+ import importlib.util
27
28
  import re
29
+ import shutil
28
30
  import subprocess
31
+ import sys
29
32
  from typing import Optional
30
33
  from urllib.parse import urlsplit
31
34
 
@@ -182,11 +185,33 @@ def _x(url: str, timeout: int) -> dict:
182
185
 
183
186
 
184
187
  # --- youtube -----------------------------------------------------------------
188
+ def _ytdlp_argv() -> Optional[list[str]]:
189
+ """Best yt-dlp invocation for this environment, or None if unavailable.
190
+
191
+ Prefers the ``yt-dlp`` console script on PATH; falls back to
192
+ ``<python> -m yt_dlp`` when the script dir is not on PATH but the module is
193
+ importable — the common case for ``pip install --user`` and Windows / venv
194
+ installs, where the Scripts/bin dir is frequently absent from PATH. Mirrors
195
+ the ``which yt-dlp || python3 -m yt_dlp`` fallback already documented in
196
+ references/media.md."""
197
+ exe = shutil.which("yt-dlp")
198
+ if exe:
199
+ return [exe]
200
+ if importlib.util.find_spec("yt_dlp") is not None:
201
+ return [sys.executable, "-m", "yt_dlp"]
202
+ return None
203
+
204
+
185
205
  def _youtube(url: str, timeout: int) -> dict:
186
206
  attempts: list[dict] = []
207
+ argv = _ytdlp_argv()
208
+ if argv is None:
209
+ attempts.append(_attempt("youtube", "yt-dlp", False, 0, "", "yt-dlp not installed"))
210
+ return {"platform": "youtube", "ok": False, "route": None, "content": "",
211
+ "final_url": url, "attempts": attempts}
187
212
  try:
188
213
  p = subprocess.run(
189
- ["yt-dlp", "--dump-json", "--skip-download", url],
214
+ argv + ["--dump-json", "--skip-download", url],
190
215
  capture_output=True, text=True, timeout=max(timeout, 60),
191
216
  )
192
217
  ok = p.returncode == 0 and p.stdout.strip().startswith("{")
@@ -1,69 +0,0 @@
1
- export interface RpcStateSnapshot {
2
- isStreaming: boolean;
3
- steeringQueueDepth: number;
4
- followupQueueDepth: number;
5
- }
6
- /** Abstract handle to a live gajae-code RPC session. */
7
- export interface HarnessRpc {
8
- getState(): Promise<RpcStateSnapshot>;
9
- /** Send a prompt; resolves with the RPC command id and whether it was acked. Does NOT await agent_start. */
10
- sendPrompt(prompt: string): Promise<{
11
- commandId: string;
12
- ack: boolean;
13
- }>;
14
- /** Monotonic count of events observed so far (the acceptance cursor). */
15
- eventCursor(): number;
16
- /** Resolve when an `agent_start` event arrives strictly after `afterCursor`, else null on timeout. */
17
- waitForAgentStart(afterCursor: number, timeoutMs: number): Promise<{
18
- cursor: number;
19
- } | null>;
20
- close(): Promise<void>;
21
- /** Subscribe to parsed event frames (non-ready, non-response), fired AFTER the cursor advances. Returns unsubscribe. */
22
- onEventFrame?(listener: (frame: Record<string, unknown>) => void): () => void;
23
- /** Whether the underlying RPC subprocess is still alive. */
24
- isLive?(): boolean;
25
- /** ISO timestamp of the last observed event frame, or null. */
26
- lastFrameAt?(): string | null;
27
- /** Final assistant text from the live session (for review-verdict extraction); null when unavailable. */
28
- getLastAssistantText?(): Promise<string | null>;
29
- }
30
- export interface AcceptanceResult {
31
- accepted: boolean;
32
- reason: string;
33
- commandId: string | null;
34
- preSubmitCursor: number;
35
- agentStartCursor: number | null;
36
- preSubmitState: RpcStateSnapshot;
37
- }
38
- /**
39
- * Single-flight acceptance: idle + empty-queue pre-state, ack, then the NEXT
40
- * `agent_start` after the pre-submit cursor within `timeoutMs`.
41
- */
42
- export declare function singleFlightAccept(rpc: HarnessRpc, prompt: string, timeoutMs: number): Promise<AcceptanceResult>;
43
- /**
44
- * Real adapter: spawns `gjc --mode rpc --session-dir <dir>` and speaks the JSONL
45
- * protocol from docs/rpc.md. Verified end-to-end in the M10 suite.
46
- */
47
- export declare class GajaeCodeRpc implements HarnessRpc {
48
- #private;
49
- constructor(opts: {
50
- sessionDir: string;
51
- command?: string[];
52
- cwd?: string;
53
- env?: NodeJS.ProcessEnv;
54
- });
55
- onEventFrame(listener: (frame: Record<string, unknown>) => void): () => void;
56
- isLive(): boolean;
57
- lastFrameAt(): string | null;
58
- getState(): Promise<RpcStateSnapshot>;
59
- getLastAssistantText(): Promise<string | null>;
60
- sendPrompt(prompt: string): Promise<{
61
- commandId: string;
62
- ack: boolean;
63
- }>;
64
- eventCursor(): number;
65
- waitForAgentStart(afterCursor: number, timeoutMs: number): Promise<{
66
- cursor: number;
67
- } | null>;
68
- close(): Promise<void>;
69
- }
@@ -1,12 +0,0 @@
1
- export interface BridgeAuthConfig {
2
- token: string;
3
- }
4
- export interface BridgeBindConfig {
5
- hostname: string;
6
- port: number;
7
- tlsConfigured: boolean;
8
- }
9
- export declare function extractBearerToken(authorization: string | null | undefined): string | undefined;
10
- export declare function isBridgeTokenAuthorized(authorization: string | null | undefined, config: BridgeAuthConfig): boolean;
11
- export declare function isLoopbackHost(hostname: string): boolean;
12
- export declare function assertSafeBridgeBind(config: BridgeBindConfig): void;
@@ -1,9 +0,0 @@
1
- import type { ClientBridge, ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "../../session/client-bridge";
2
- import type { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
3
- export interface BridgePermissionRequestPayload {
4
- kind: "permission";
5
- toolCall: ClientBridgePermissionToolCall;
6
- options: ClientBridgePermissionOption[];
7
- }
8
- export type BridgePermissionBroker = UiRequestBroker<BridgePermissionRequestPayload, ClientBridgePermissionOutcome>;
9
- export declare function createBridgeClientBridge(broker: BridgePermissionBroker): ClientBridge;
@@ -1,47 +0,0 @@
1
- import type { ExtensionUIContext } from "../../extensibility/extensions";
2
- import type { AgentSession } from "../../session/agent-session";
3
- import type { ClientBridgePermissionOutcome } from "../../session/client-bridge";
4
- import type { RpcCommand, RpcResponse } from "../rpc/rpc-types";
5
- import { RpcHostToolBridge } from "../shared/agent-wire/host-tool-bridge";
6
- import { RpcHostUriBridge } from "../shared/agent-wire/host-uri-bridge";
7
- import { type BridgeCommandScope } from "../shared/agent-wire/scopes";
8
- import { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
9
- import type { BridgeUiResult } from "../shared/agent-wire/ui-result";
10
- import { UnattendedSessionControlPlane } from "../shared/agent-wire/unattended-session";
11
- import { type BridgePermissionRequestPayload } from "./bridge-client-bridge";
12
- import { type BridgeUiRequestPayload } from "./bridge-ui-context";
13
- import { BridgeEventStream } from "./event-stream";
14
- interface BridgeEndpointMatrix {
15
- events: boolean;
16
- commands: boolean;
17
- control: boolean;
18
- uiResponses: boolean;
19
- hostToolResults: boolean;
20
- hostUriResults: boolean;
21
- }
22
- interface BridgeFetchHandlerOptions {
23
- sessionId: string;
24
- token: string;
25
- eventStream?: BridgeEventStream;
26
- commandDispatcher?: (command: RpcCommand) => Promise<RpcResponse>;
27
- commandScopes?: readonly BridgeCommandScope[];
28
- idempotencyCache?: BridgeIdempotencyCache;
29
- permissionBroker?: UiRequestBroker<BridgePermissionRequestPayload, ClientBridgePermissionOutcome>;
30
- uiBroker?: UiRequestBroker<BridgeUiRequestPayload, BridgeUiResult<unknown>>;
31
- hostToolBridge?: RpcHostToolBridge;
32
- hostUriBridge?: RpcHostUriBridge;
33
- endpointMatrix?: Partial<BridgeEndpointMatrix>;
34
- unattendedControlPlane?: UnattendedSessionControlPlane;
35
- }
36
- interface BridgeIdempotencyRecord {
37
- route: string;
38
- ownerToken?: string;
39
- body: string | Promise<string>;
40
- response: unknown | Promise<unknown>;
41
- pending?: boolean;
42
- }
43
- type BridgeIdempotencyCache = Map<string, BridgeIdempotencyRecord>;
44
- export declare function parseBridgeEndpoints(value: string | undefined): Partial<BridgeEndpointMatrix> | undefined;
45
- export declare function createBridgeFetchHandler(options: BridgeFetchHandlerOptions): (request: Request) => Promise<Response>;
46
- export declare function runBridgeMode(session: AgentSession, setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void): Promise<never>;
47
- export {};
@@ -1,88 +0,0 @@
1
- import type { ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetContent, ExtensionWidgetOptions, TerminalInputHandler } from "../../extensibility/extensions";
2
- import type { UiRequestBroker } from "../shared/agent-wire/ui-request-broker";
3
- import type { BridgeUiResult } from "../shared/agent-wire/ui-result";
4
- import { type Theme } from "../theme/theme";
5
- export type BridgeUiRequestPayload = {
6
- kind: "select";
7
- title: string;
8
- options: string[];
9
- timeout?: number;
10
- } | {
11
- kind: "confirm";
12
- title: string;
13
- message: string;
14
- timeout?: number;
15
- } | {
16
- kind: "input";
17
- title: string;
18
- placeholder?: string;
19
- timeout?: number;
20
- } | {
21
- kind: "editor";
22
- title: string;
23
- prefill?: string;
24
- promptStyle?: boolean;
25
- } | {
26
- kind: "notify";
27
- message: string;
28
- type?: "info" | "warning" | "error";
29
- } | {
30
- kind: "status";
31
- key: string;
32
- text: string | undefined;
33
- } | {
34
- kind: "widget";
35
- key: string;
36
- lines: string[] | undefined;
37
- placement?: "aboveEditor" | "belowEditor";
38
- } | {
39
- kind: "title";
40
- title: string;
41
- } | {
42
- kind: "set_editor_text";
43
- text: string;
44
- } | {
45
- kind: "unsupported";
46
- capability: string;
47
- reason: string;
48
- };
49
- export type BridgeUiBroker = UiRequestBroker<BridgeUiRequestPayload, BridgeUiResult<unknown>>;
50
- export type BridgeUiEmitter = (payload: BridgeUiRequestPayload) => void;
51
- export declare class BridgeExtensionUIContext implements ExtensionUIContext {
52
- #private;
53
- constructor(options: {
54
- broker: BridgeUiBroker;
55
- emit: BridgeUiEmitter;
56
- });
57
- select(title: string, options: string[], dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
58
- confirm(title: string, message: string, dialogOptions?: ExtensionUIDialogOptions): Promise<boolean>;
59
- input(title: string, placeholder?: string, dialogOptions?: ExtensionUIDialogOptions): Promise<string | undefined>;
60
- notify(message: string, type?: "info" | "warning" | "error"): void;
61
- onTerminalInput(_handler: TerminalInputHandler): () => void;
62
- setStatus(key: string, text: string | undefined): void;
63
- setWorkingMessage(message?: string): void;
64
- setWidget(key: string, content: ExtensionWidgetContent, options?: ExtensionWidgetOptions): void;
65
- setFooter(_factory?: unknown): void;
66
- setHeader(_factory?: unknown): void;
67
- setTitle(title: string): void;
68
- custom<T>(): Promise<T>;
69
- setEditorText(text: string): void;
70
- pasteToEditor(text: string): void;
71
- getEditorText(): string;
72
- editor(title: string, prefill?: string, dialogOptions?: ExtensionUIDialogOptions, editorOptions?: {
73
- promptStyle?: boolean;
74
- }): Promise<string | undefined>;
75
- setEditorComponent(_factory?: unknown): void;
76
- get theme(): Theme;
77
- getAllThemes(): Promise<{
78
- name: string;
79
- path: string | undefined;
80
- }[]>;
81
- getTheme(_name: string): Promise<Theme | undefined>;
82
- setTheme(_theme: string | Theme): Promise<{
83
- success: boolean;
84
- error?: string;
85
- }>;
86
- getToolsExpanded(): boolean;
87
- setToolsExpanded(_expanded: boolean): void;
88
- }
@@ -1,8 +0,0 @@
1
- import type { BridgeFrameEnvelope } from "../shared/agent-wire/protocol";
2
- export declare class BridgeEventStream {
3
- #private;
4
- constructor(replayLimit?: number);
5
- get frameCount(): number;
6
- publish(frame: BridgeFrameEnvelope): void;
7
- response(lastSeq?: number): Response;
8
- }
@@ -1 +0,0 @@
1
- export * from "../shared/agent-wire/host-tool-bridge";
@@ -1 +0,0 @@
1
- export * from "../shared/agent-wire/host-uri-bridge";