@gajae-code/coding-agent 0.10.2 → 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 (465) hide show
  1. package/CHANGELOG.md +50 -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/model-selector.d.ts +1 -0
  54. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  55. package/dist/types/modes/components/settings-selector.d.ts +6 -4
  56. package/dist/types/modes/components/welcome.d.ts +1 -1
  57. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  58. package/dist/types/modes/index.d.ts +0 -4
  59. package/dist/types/modes/interactive-mode.d.ts +3 -0
  60. package/dist/types/modes/runtime-init.d.ts +2 -2
  61. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  62. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  63. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  64. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  65. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  66. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +169 -30
  67. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  68. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  69. package/dist/types/modes/types.d.ts +5 -0
  70. package/dist/types/runtime-mcp/client.d.ts +2 -0
  71. package/dist/types/runtime-mcp/config.d.ts +5 -1
  72. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  73. package/dist/types/runtime-mcp/types.d.ts +4 -0
  74. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  75. package/dist/types/sdk/acp/index.d.ts +2 -0
  76. package/dist/types/sdk/broker/broker.d.ts +53 -0
  77. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  78. package/dist/types/sdk/broker/ensure.d.ts +33 -0
  79. package/dist/types/sdk/broker/identity.d.ts +3 -0
  80. package/dist/types/sdk/broker/index.d.ts +8 -0
  81. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  82. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  83. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  84. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  85. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  86. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  87. package/dist/types/sdk/broker/transport.d.ts +9 -0
  88. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  89. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  90. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  91. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  92. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  93. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  94. package/dist/types/sdk/bus/config.d.ts +274 -0
  95. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  96. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  97. package/dist/types/sdk/bus/discord-daemon.d.ts +45 -0
  98. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  99. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  100. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  101. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  102. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  103. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  104. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  105. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  106. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  107. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  108. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  109. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  110. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  111. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  112. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  113. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  114. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  115. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  116. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  117. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +55 -17
  118. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  119. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  120. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  121. package/dist/types/sdk/cli/index.d.ts +1 -0
  122. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  123. package/dist/types/sdk/client/client.d.ts +1 -0
  124. package/dist/types/sdk/client/discovery.d.ts +27 -0
  125. package/dist/types/sdk/client/index.d.ts +2 -0
  126. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  127. package/dist/types/sdk/host/control/index.d.ts +2 -0
  128. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  129. package/dist/types/sdk/host/events.d.ts +35 -0
  130. package/dist/types/sdk/host/host.d.ts +35 -0
  131. package/dist/types/sdk/host/index.d.ts +4 -0
  132. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  133. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  134. package/dist/types/sdk/host/query/index.d.ts +3 -0
  135. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  136. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  137. package/dist/types/sdk/host/types.d.ts +32 -0
  138. package/dist/types/sdk/index.d.ts +6 -0
  139. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  140. package/dist/types/sdk/mcp/index.d.ts +1 -0
  141. package/dist/types/sdk/mcp/server.d.ts +37 -0
  142. package/dist/types/sdk/models.d.ts +44 -0
  143. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  144. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  145. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  146. package/dist/types/sdk/startup-capability.d.ts +50 -0
  147. package/dist/types/session/agent-session.d.ts +114 -21
  148. package/dist/types/session/default-model-selection.d.ts +25 -0
  149. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  150. package/dist/types/session/session-manager.d.ts +58 -1
  151. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  152. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  153. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  154. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  155. package/dist/types/tools/browser/launch.d.ts +22 -0
  156. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  157. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  158. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  159. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  160. package/dist/types/tools/browser/registry.d.ts +19 -0
  161. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  162. package/dist/types/tools/index.d.ts +8 -8
  163. package/package.json +34 -13
  164. package/scripts/build-sdk-package-smoke.ts +94 -0
  165. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  166. package/scripts/compile-args.ts +4 -2
  167. package/scripts/g005-daemon-smoke.ts +4 -5
  168. package/scripts/g011-daemon-path-smoke.ts +5 -5
  169. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  170. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  171. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  172. package/scripts/manifest-schema.ts +124 -0
  173. package/scripts/run-test-manifest.ts +153 -0
  174. package/scripts/run-threat-model-check.ts +157 -0
  175. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  176. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  177. package/src/append-only-mode.ts +1 -1
  178. package/src/cli/args.ts +43 -12
  179. package/src/cli/auth-gateway-cli.ts +2 -2
  180. package/src/cli/config-cli.ts +2 -1
  181. package/src/cli/daemon-cli.ts +63 -14
  182. package/src/cli/list-models.ts +1 -1
  183. package/src/cli/notify-cli.ts +288 -286
  184. package/src/cli.ts +21 -2
  185. package/src/commands/daemon.ts +50 -6
  186. package/src/commands/harness.ts +93 -36
  187. package/src/commands/launch.ts +5 -2
  188. package/src/commands/mcp-serve.ts +19 -12
  189. package/src/commands/notify.ts +36 -3
  190. package/src/commands/sdk.ts +426 -0
  191. package/src/commit/agentic/agent.ts +1 -0
  192. package/src/config/atomic-yaml-patch.ts +423 -0
  193. package/src/config/model-profile-activation.ts +240 -89
  194. package/src/config/model-profiles.ts +18 -15
  195. package/src/config/model-registry.ts +51 -26
  196. package/src/config/model-resolver.ts +138 -51
  197. package/src/config/model-selector-value.ts +50 -0
  198. package/src/config/models-config-schema.ts +14 -21
  199. package/src/config/settings-schema.ts +128 -10
  200. package/src/config/settings.ts +1120 -158
  201. package/src/coordinator-mcp/model-preset.ts +74 -20
  202. package/src/coordinator-mcp/server.ts +1597 -3052
  203. package/src/daemon/builtin.ts +8 -5
  204. package/src/daemon/control-types.ts +1 -1
  205. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  206. package/src/discovery/mcp-json.ts +327 -20
  207. package/src/extensibility/custom-tools/types.ts +1 -1
  208. package/src/extensibility/extensions/compact-handler.ts +3 -3
  209. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  210. package/src/extensibility/extensions/loader.ts +69 -5
  211. package/src/extensibility/extensions/runner.ts +112 -4
  212. package/src/extensibility/extensions/types.ts +176 -17
  213. package/src/extensibility/hooks/types.ts +1 -1
  214. package/src/gjc-runtime/launch-tmux.ts +170 -86
  215. package/src/gjc-runtime/psmux-detect.ts +82 -4
  216. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  217. package/src/gjc-runtime/team-runtime.ts +54 -35
  218. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  219. package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
  220. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  221. package/src/gjc-runtime/ultragoal-guard.ts +53 -6
  222. package/src/gjc-runtime/ultragoal-runtime.ts +155 -3
  223. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  224. package/src/harness-control-plane/operate.ts +9 -9
  225. package/src/harness-control-plane/owner.ts +283 -39
  226. package/src/harness-control-plane/receipts.ts +0 -1
  227. package/src/harness-control-plane/sdk-transport.ts +395 -0
  228. package/src/harness-control-plane/session-transport.ts +94 -0
  229. package/src/harness-control-plane/types.ts +1 -1
  230. package/src/internal-urls/docs-index.generated.ts +34 -35
  231. package/src/lsp/client.ts +42 -6
  232. package/src/lsp/index.ts +2 -2
  233. package/src/main.ts +299 -204
  234. package/src/modes/DESIGN.md +258 -0
  235. package/src/modes/acp/acp-agent.ts +1228 -2612
  236. package/src/modes/acp/acp-client-bridge.ts +2 -20
  237. package/src/modes/acp/acp-event-mapper.ts +18 -2
  238. package/src/modes/acp/acp-mode.ts +8 -36
  239. package/src/modes/acp/permission-mode.ts +25 -0
  240. package/src/modes/acp/startup-options.ts +6 -0
  241. package/src/modes/components/agent-dashboard.ts +37 -17
  242. package/src/modes/components/model-selector.ts +93 -35
  243. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  244. package/src/modes/components/settings-selector.ts +60 -11
  245. package/src/modes/components/welcome.ts +4 -4
  246. package/src/modes/controllers/command-controller.ts +1 -2
  247. package/src/modes/controllers/event-controller.ts +11 -16
  248. package/src/modes/controllers/extension-ui-controller.ts +348 -4
  249. package/src/modes/controllers/selector-controller.ts +674 -36
  250. package/src/modes/index.ts +0 -22
  251. package/src/modes/interactive-mode.ts +59 -20
  252. package/src/modes/runtime-init.ts +298 -6
  253. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  254. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  255. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  256. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  257. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  258. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1254 -87
  259. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  260. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  261. package/src/modes/types.ts +5 -0
  262. package/src/runtime-mcp/client.ts +94 -19
  263. package/src/runtime-mcp/config.ts +27 -15
  264. package/src/runtime-mcp/manager.ts +343 -105
  265. package/src/runtime-mcp/oauth-flow.ts +42 -12
  266. package/src/runtime-mcp/transports/http.ts +49 -19
  267. package/src/runtime-mcp/transports/stdio.ts +47 -28
  268. package/src/runtime-mcp/types.ts +10 -0
  269. package/src/sdk/acp/adapter.ts +418 -0
  270. package/src/sdk/acp/index.ts +2 -0
  271. package/src/sdk/broker/broker.ts +642 -0
  272. package/src/sdk/broker/discovery.ts +94 -0
  273. package/src/sdk/broker/ensure.ts +249 -0
  274. package/src/sdk/broker/identity.ts +42 -0
  275. package/src/sdk/broker/index.ts +8 -0
  276. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  277. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  278. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  279. package/src/sdk/broker/lifecycle.ts +2157 -0
  280. package/src/sdk/broker/process-incarnation.ts +159 -0
  281. package/src/sdk/broker/runtime.ts +164 -0
  282. package/src/sdk/broker/session-index.ts +318 -0
  283. package/src/sdk/broker/state-version.ts +23 -0
  284. package/src/sdk/broker/transport.ts +125 -0
  285. package/src/sdk/bus/chat-command-policy.ts +107 -0
  286. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  287. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  288. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  289. package/src/sdk/bus/chat-effect-journal.ts +353 -0
  290. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  291. package/src/sdk/bus/config.ts +433 -0
  292. package/src/sdk/bus/conversation-store.ts +391 -0
  293. package/src/sdk/bus/discord-conversation.ts +85 -0
  294. package/src/sdk/bus/discord-daemon.ts +2275 -0
  295. package/src/sdk/bus/discord-live-provider.ts +521 -0
  296. package/src/sdk/bus/discord-provider.ts +56 -0
  297. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  298. package/src/sdk/bus/index.ts +3943 -0
  299. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  300. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  301. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  302. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  303. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  304. package/src/sdk/bus/natives-augment.d.ts +38 -0
  305. package/src/sdk/bus/notification-orchestration.ts +535 -0
  306. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  307. package/src/sdk/bus/session-control.ts +333 -0
  308. package/src/sdk/bus/slack-conversation.ts +74 -0
  309. package/src/sdk/bus/slack-daemon.ts +2144 -0
  310. package/src/sdk/bus/slack-live-provider.ts +380 -0
  311. package/src/sdk/bus/slack-provider.ts +76 -0
  312. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  313. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  314. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  315. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  316. package/src/{notifications → sdk/bus}/telegram-daemon.ts +502 -54
  317. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  318. package/src/sdk/bus/telegram-setup.ts +663 -0
  319. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  320. package/src/sdk/cli/index.ts +1 -0
  321. package/src/sdk/cli/session-cli.ts +275 -0
  322. package/src/sdk/client/client.ts +1 -0
  323. package/src/sdk/client/discovery.ts +108 -0
  324. package/src/sdk/client/index.ts +2 -0
  325. package/src/sdk/host/control/dispatch.ts +367 -0
  326. package/src/sdk/host/control/index.ts +10 -0
  327. package/src/sdk/host/control/operations.ts +63 -0
  328. package/src/sdk/host/events.ts +91 -0
  329. package/src/sdk/host/host.ts +296 -0
  330. package/src/sdk/host/index.ts +4 -0
  331. package/src/sdk/host/query/cursor.ts +189 -0
  332. package/src/sdk/host/query/handlers.ts +533 -0
  333. package/src/sdk/host/query/index.ts +3 -0
  334. package/src/sdk/host/query/revision-store.ts +1126 -0
  335. package/src/sdk/host/reverse-leases.ts +325 -0
  336. package/src/sdk/host/types.ts +29 -0
  337. package/src/sdk/index.ts +13 -0
  338. package/src/sdk/lifecycle-session.ts +39 -0
  339. package/src/sdk/mcp/index.ts +1 -0
  340. package/src/sdk/mcp/server.ts +332 -0
  341. package/src/sdk/models.ts +168 -0
  342. package/src/sdk/protocol/adapter-validation.ts +48 -0
  343. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  344. package/src/sdk/protocol/operation-registry.ts +312 -0
  345. package/src/{sdk.ts → sdk/session.ts} +339 -212
  346. package/src/sdk/startup-capability.ts +189 -0
  347. package/src/session/agent-session.ts +2453 -894
  348. package/src/session/default-model-selection.ts +93 -0
  349. package/src/session/fallback-chain-controller.ts +136 -0
  350. package/src/session/session-manager.ts +438 -11
  351. package/src/session/session-storage.ts +8 -1
  352. package/src/setup/credential-auto-import.ts +290 -35
  353. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  354. package/src/slash-commands/builtin-registry.ts +2 -1
  355. package/src/task/executor.ts +62 -13
  356. package/src/tools/ask-answer-registry.ts +1 -1
  357. package/src/tools/ask.ts +13 -8
  358. package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
  359. package/src/tools/browser/benchmark/detector-report.ts +157 -0
  360. package/src/tools/browser/benchmark/run-suite.ts +39 -0
  361. package/src/tools/browser/launch.ts +124 -19
  362. package/src/tools/browser/profile-discovery.ts +63 -0
  363. package/src/tools/browser/profile-posture.ts +59 -0
  364. package/src/tools/browser/profile-reuse.ts +102 -0
  365. package/src/tools/browser/profile-warmup.ts +109 -0
  366. package/src/tools/browser/registry.ts +87 -11
  367. package/src/tools/browser/tab-protocol.ts +1 -0
  368. package/src/tools/browser/tab-supervisor.ts +1 -0
  369. package/src/tools/browser/tab-worker.ts +1 -1
  370. package/src/tools/browser.ts +6 -0
  371. package/src/tools/index.ts +8 -8
  372. package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
  373. package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
  374. package/src/tools/telegram-send.ts +2 -2
  375. package/vendor/insane-search/MANIFEST.json +2 -1
  376. package/vendor/insane-search/engine/bias_check.py +4 -1
  377. package/vendor/insane-search/engine/phase0.py +26 -1
  378. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  379. package/dist/types/modes/bridge/auth.d.ts +0 -12
  380. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  381. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  382. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  383. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  384. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  385. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  386. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  387. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  388. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  389. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  390. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  391. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  392. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  393. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  394. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  395. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  396. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  397. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  398. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  399. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  400. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  401. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  402. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  403. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  404. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  405. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  406. package/dist/types/notifications/config.d.ts +0 -132
  407. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  408. package/src/modes/bridge/auth.ts +0 -41
  409. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  410. package/src/modes/bridge/bridge-mode.ts +0 -675
  411. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  412. package/src/modes/bridge/event-stream.ts +0 -70
  413. package/src/modes/rpc/host-tools.ts +0 -1
  414. package/src/modes/rpc/host-uris.ts +0 -1
  415. package/src/modes/rpc/rpc-client.ts +0 -1166
  416. package/src/modes/rpc/rpc-mode.ts +0 -1029
  417. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  418. package/src/modes/rpc/rpc-types.ts +0 -637
  419. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  420. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  421. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  422. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  423. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  424. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  425. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  426. package/src/modes/shared/agent-wire/responses.ts +0 -17
  427. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  428. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  429. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  430. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  431. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  432. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  433. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  434. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  435. package/src/notifications/config.ts +0 -219
  436. package/src/notifications/index.ts +0 -1835
  437. package/src/notifications/telegram-daemon-cli.ts +0 -243
  438. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  439. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  440. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  441. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  442. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  443. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  444. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  445. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  446. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  447. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  448. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  449. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  450. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  453. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  454. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  455. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  456. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  457. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  458. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  459. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  460. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  461. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  462. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  463. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { COORDINATOR_MCP_PROTOCOL_VERSION, COORDINATOR_MCP_SERVER_NAME, COORDINATOR_MCP_TOOL_NAMES, type CoordinatorToolName } from "../coordinator/contract";
2
- import { type OwnerIsolationProbe } from "../gjc-runtime/tmux-owner-isolation";
2
+ import { SdkClient } from "../sdk/client/client";
3
3
  import { type CoordinatorModelProfileLoader } from "./model-preset";
4
4
  import { type CoordinatorMcpConfig } from "./policy";
5
5
  import { type SessionReaper } from "./session-reaper";
@@ -22,71 +22,28 @@ interface JsonRpcResponse {
22
22
  data?: unknown;
23
23
  };
24
24
  }
25
- interface SessionStartInput {
26
- cwd: string;
27
- prompt?: string;
28
- mpreset?: string | null;
29
- namespace: {
30
- profile: string | null;
31
- repo: string | null;
32
- };
33
- worktree: true;
34
- sessionId: string;
35
- launchId: string;
36
- /** Canonical, coordinator-owned immutable readiness marker path. */
37
- readinessMarkerFile: string;
38
- /** @deprecated Compatibility alias for injected launch providers. */
39
- readinessFile: string;
40
- }
41
- interface CommandResult {
42
- exitCode: number;
43
- stdout: string;
44
- stderr: string;
45
- }
46
- type CommandRunner = (command: string[], stdinLine?: string) => Promise<CommandResult>;
47
25
  interface CoordinatorServices {
48
- listSessions?: () => unknown[] | Promise<unknown[]>;
49
- startSession?: (input: SessionStartInput) => unknown | Promise<unknown>;
50
- commandRunner?: CommandRunner;
51
- forceCloseSession?: (sessionName: string, env: NodeJS.ProcessEnv, expectedSessionId?: string, expectedStateFile?: string) => Promise<unknown>;
52
- ownerIsolationProbe?: OwnerIsolationProbe;
26
+ connectSdk?: (url: string, token: string) => Promise<SdkClient>;
27
+ getAgentDir?: () => string;
53
28
  resolveModelProfiles?: CoordinatorModelProfileLoader;
29
+ canonicalizePath?: (value: string) => Promise<string>;
54
30
  }
55
31
  interface CoordinatorMcpServerOptions {
56
32
  env?: NodeJS.ProcessEnv;
57
33
  services?: CoordinatorServices;
34
+ platform?: NodeJS.Platform;
58
35
  }
59
36
  interface LegacyHandlerOptions {
60
37
  env?: NodeJS.ProcessEnv;
61
- createSession?: (input: SessionStartInput) => unknown;
62
38
  }
63
- /**
64
- * Append an authoritative `--mpreset <profile>` to the coordinator child launch
65
- * command so the spawned GJC session activates the selected profile from its
66
- * first turn. The profile name is validated against the merged registry before
67
- * reaching here; it is still shell-quoted as defense in depth.
68
- *
69
- * Precedence note: this matches `gjc --mpreset <profile>` semantics exactly, so
70
- * an explicit model-affecting flag already present in the operator-configured
71
- * `sessionCommand` (e.g. a `--model`/`--thinking` baked into the launch command)
72
- * follows the same CLI precedence as a direct `gjc --mpreset ... --model ...`
73
- * invocation. The effective profile recorded on the session is the
74
- * coordinator-resolved request, not a child-attested activation receipt; a
75
- * cross-process activation receipt is a possible future enhancement and is out
76
- * of scope for the per-session selection contract here.
77
- */
78
- export declare function buildCoordinatorSessionCommand(sessionCommand: string, mpreset: string | null | undefined): string;
79
39
  export declare const COORDINATOR_AWAIT_TURN_TIMEOUT_MAX_MS: number;
80
40
  export declare const COORDINATOR_RUNTIME_PROMPT_ACK_TIMEOUT_MAX_MS: number;
81
- export declare const COORDINATOR_RUNTIME_READINESS_TIMEOUT_MAX_MS: number;
82
41
  export declare const COORDINATOR_EVENT_WATCH_TIMEOUT_MAX_MS = 30000;
83
42
  export declare const COORDINATOR_POLL_INTERVAL_MAX_MS = 10000;
84
43
  export declare function boundedAwaitTurnTimeoutMs(value: unknown): number;
85
44
  export declare function boundedRuntimePromptAckTimeoutMs(value: unknown): number;
86
- export declare function boundedRuntimeReadinessTimeoutMs(value: unknown): number;
87
45
  export declare function boundedEventWatchTimeoutMs(value: unknown): number;
88
46
  export declare function boundedPollIntervalMs(value: unknown): number;
89
- export declare function coordinatorOwnerIsolationProbe(runner: CommandRunner): Promise<OwnerIsolationProbe>;
90
47
  export declare function readCoordinatorArtifact(config: CoordinatorMcpConfig, args: {
91
48
  path: unknown;
92
49
  }): Promise<Record<string, unknown>>;
@@ -101,7 +58,7 @@ export declare function createCoordinatorMcpServer(options?: CoordinatorMcpServe
101
58
  }) => Promise<{
102
59
  ok: boolean;
103
60
  reason?: string;
104
- killed: boolean;
61
+ closed: boolean;
105
62
  active_turn_id?: string;
106
63
  detail?: string;
107
64
  }>;
@@ -1,16 +1,17 @@
1
1
  /**
2
2
  * Static built-in daemon controller map.
3
3
  *
4
- * Intentionally a static map keyed by daemon kind rather than a mutable plugin
5
- * registry: there is exactly one kind today (`telegram`). Promote to a richer
6
- * registry only when a second daemon kind exists.
4
+ * Controllers are deliberately static rather than a mutable plugin registry.
7
5
  */
8
6
  import type { Settings } from "../config/settings";
9
- import { type TelegramDaemonControlDeps } from "../notifications/telegram-daemon-control";
7
+ import { type ChatDaemonControlDeps } from "../sdk/bus/chat-daemon-control";
8
+ import { type TelegramDaemonControlDeps } from "../sdk/bus/telegram-daemon-control";
10
9
  import type { BuiltInDaemonController, DaemonKind } from "./control-types";
11
- export declare const BUILT_IN_DAEMON_KINDS: readonly ["telegram"];
10
+ export declare const BUILT_IN_DAEMON_KINDS: readonly ["telegram", "discord", "slack"];
12
11
  export interface BuiltInDaemonControllerDeps {
13
12
  telegram?: TelegramDaemonControlDeps;
13
+ discord?: ChatDaemonControlDeps;
14
+ slack?: ChatDaemonControlDeps;
14
15
  }
15
16
  export declare function createBuiltInDaemonControllers(settings: Settings, deps?: BuiltInDaemonControllerDeps): Record<DaemonKind, BuiltInDaemonController>;
16
17
  /**
@@ -5,7 +5,7 @@
5
5
  * controller contract. There is exactly one daemon kind today (`telegram`);
6
6
  * a richer registry is intentionally deferred until a second kind exists.
7
7
  */
8
- export type DaemonKind = "telegram";
8
+ export type DaemonKind = "telegram" | "discord" | "slack";
9
9
  export type DaemonAction = "list" | "status" | "stop" | "reload";
10
10
  export type DaemonHealth = "not_configured" | "stopped" | "running" | "stale" | "stopping" | "error";
11
11
  export interface DaemonRuntimeInfo {
@@ -1 +1,12 @@
1
- export {};
1
+ import { type MCPServer } from "../capability/mcp";
2
+ import type { LoadResult } from "../capability/types";
3
+ export interface MCPJsonLoadResult extends LoadResult<MCPServer> {
4
+ disabledServers: string[];
5
+ }
6
+ /**
7
+ * Load MCP servers from a JSON file.
8
+ */
9
+ export declare function loadMCPJsonFile(filePath: string, level: "user" | "project", options?: {
10
+ quiet?: boolean;
11
+ useCache?: boolean;
12
+ }): Promise<MCPJsonLoadResult>;
@@ -42,7 +42,7 @@ export interface CustomToolAPI {
42
42
  exec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;
43
43
  /** UI methods for user interaction (select, confirm, input, notify, custom) */
44
44
  ui: CustomToolUIContext;
45
- /** Whether UI is available (false in print/RPC mode) */
45
+ /** Whether an interactive UI is available */
46
46
  hasUI: boolean;
47
47
  /** File logger for error/warning/debug messages */
48
48
  logger: typeof import("@gajae-code/utils").logger;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Extension-facing APIs accept `string | CompactOptions`, but `AgentSession.compact`
5
5
  * takes two positional arguments `(instructions, options)`. This helper splits the
6
- * union so the same adapter can be reused by print-mode, rpc-mode, and the executor.
6
+ * union so the same adapter can be reused by print, SDK, ACP, and executor callers.
7
7
  */
8
8
  import type { Model } from "@gajae-code/ai";
9
9
  import type { CompactOptions } from "./types";
@@ -15,7 +15,9 @@ interface SetModelCapableSession {
15
15
  modelRegistry: {
16
16
  getApiKey(model: Model): Promise<string | undefined>;
17
17
  };
18
- setModel(model: Model): Promise<unknown>;
18
+ setModel(model: Model, role?: string, options?: {
19
+ cause?: string;
20
+ }): Promise<unknown>;
19
21
  }
20
22
  /**
21
23
  * Helper for wiring the `setModel` action of an {@link ExtensionContext}.
@@ -2,8 +2,8 @@
2
2
  * Helper for wiring the `getCommands` action of {@link ExtensionAPI}.
3
3
  *
4
4
  * Centralizes the union over the three slash-command sources the runtime
5
- * exposes so the five wiring sites (interactive UI, ACP, RPC, print, child
6
- * task executor) cannot drift:
5
+ * exposes so the interactive UI, ACP, SDK, print, and child task executor wiring
6
+ * sites cannot drift:
7
7
  * - extension-registered hook commands (`source: "extension"`)
8
8
  * - prompt commands loaded as `LoadedCustomCommand` — user/project/bundled
9
9
  * custom commands and MCP prompts (`source: "prompt"`)
@@ -1,4 +1,5 @@
1
1
  import type { ThinkingLevel } from "@gajae-code/agent-core";
2
+ import type { UsageReport } from "@gajae-code/ai";
2
3
  import { EventBus } from "../../utils/event-bus";
3
4
  import type { Extension, ExtensionFactory, ExtensionRuntime as IExtensionRuntime, LoadExtensionsResult } from "./types";
4
5
  export declare class ExtensionRuntimeNotInitializedError extends Error {
@@ -16,7 +17,7 @@ export declare class ExtensionRuntime implements IExtensionRuntime {
16
17
  sourceId: string;
17
18
  }>;
18
19
  sendMessage(): void;
19
- sendUserMessage(): void;
20
+ sendUserMessage(): Promise<void>;
20
21
  appendEntry(): void;
21
22
  setLabel(): void;
22
23
  getActiveTools(): string[];
@@ -26,6 +27,14 @@ export declare class ExtensionRuntime implements IExtensionRuntime {
26
27
  setModel(): Promise<boolean>;
27
28
  getThinkingLevel(): ThinkingLevel;
28
29
  setThinkingLevel(): void;
30
+ getThinkingVisibility(): "visible" | "hidden";
31
+ setThinkingVisibility(): void;
32
+ cycleThinkingLevel(): ThinkingLevel | undefined;
33
+ setThinkingLevelForControl(): Promise<void>;
34
+ setThinkingVisibilityForControl(): Promise<void>;
35
+ setModelTemporaryForControl(): Promise<boolean>;
36
+ fetchUsageReportsForControl(): Promise<UsageReport[] | null>;
37
+ getThinkingScopeForControl(): "session" | "global config";
29
38
  getSessionName(): string | undefined;
30
39
  setSessionName(): Promise<void>;
31
40
  }
@@ -68,8 +68,8 @@ export declare class ExtensionRunner {
68
68
  * Forward a `credential_disabled` event from `AuthStorage` to extension handlers.
69
69
  *
70
70
  * If {@link initialize} has not yet run, the event is buffered and replayed once
71
- * initialize wires the runtime/UI context. This matters because mode controllers
72
- * (interactive, RPC, ACP, print, subagent) call `initialize()` AFTER `createAgentSession`
71
+ * initialize wires the runtime/UI context. This matters because session frontends
72
+ * (interactive, ACP, print, and subagent) call `initialize()` AFTER `createAgentSession`
73
73
  * returns, but `AuthStorage` can fire `credential_disabled` during startup model probes
74
74
  * inside `createAgentSession()`. Without deferral, extension handlers would observe
75
75
  * `hasUI=false`, an unset model, and no-op runtime actions on exactly the headline
@@ -126,7 +126,7 @@ export declare class ExtensionRunner {
126
126
  }>;
127
127
  }>;
128
128
  /** Emit input event. Transforms chain, "handled" short-circuits. */
129
- emitInput(text: string, images: ImageContent[] | undefined, source: "interactive" | "rpc" | "extension"): Promise<InputEventResult>;
129
+ emitInput(text: string, images: ImageContent[] | undefined, source: "interactive" | "sdk" | "extension"): Promise<InputEventResult>;
130
130
  emitContext(messages: AgentMessage[]): Promise<AgentMessage[]>;
131
131
  emitBeforeProviderRequest(payload: unknown): Promise<BeforeProviderRequestEventResult>;
132
132
  emitAfterProviderResponse(response: ProviderResponseMetadata, _model?: Model): Promise<void>;
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel } from "@gajae-code/agent-core";
11
11
  import type { CompactionResult } from "@gajae-code/agent-core/compaction";
12
- import type { Api, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Model, ProviderResponseMetadata, SimpleStreamOptions, Static, TextContent, TSchema } from "@gajae-code/ai";
12
+ import type { Api, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Model, ProviderResponseMetadata, SimpleStreamOptions, Static, TextContent, TSchema, UsageReport } from "@gajae-code/ai";
13
13
  import type { OAuthCredentials, OAuthLoginCallbacks } from "@gajae-code/ai/utils/oauth/types";
14
14
  import type * as piCodingAgent from "@gajae-code/coding-agent";
15
15
  import type { AutocompleteItem, Component, EditorTheme, KeyId, TUI } from "@gajae-code/tui";
@@ -20,8 +20,9 @@ import type { PythonResult } from "../../eval/py/executor";
20
20
  import type { BashResult } from "../../exec/bash-executor";
21
21
  import type { ExecOptions, ExecResult } from "../../exec/exec";
22
22
  import type { CustomEditor } from "../../modes/components/custom-editor";
23
- import type { WorkflowGateEmitter } from "../../modes/shared/agent-wire/unattended-session";
23
+ import type { WorkflowGateEmitter } from "../../modes/shared/agent-wire/workflow-gate-broker";
24
24
  import type { Theme } from "../../modes/theme/theme";
25
+ import type { ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "../../session/client-bridge";
25
26
  import type { CustomMessage } from "../../session/messages";
26
27
  import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
27
28
  import type { BashToolDetails, BashToolInput, FindToolDetails, FindToolInput, ReadToolDetails, ReadToolInput, SearchToolDetails, SearchToolInput, WriteToolInput } from "../../tools";
@@ -54,7 +55,7 @@ export interface ExtensionUIDialogOptions {
54
55
  /**
55
56
  * For interactive TUI select dialogs, render the focused option across
56
57
  * multiple rows instead of truncating it. This is a select-only rendering
57
- * hint; non-TUI bridges (RPC, ACP) drop it and do not serialize it.
58
+ * hint; non-TUI clients (SDK, ACP) drop it and do not serialize it.
58
59
  */
59
60
  wrapFocused?: boolean;
60
61
  /**
@@ -68,7 +69,7 @@ export interface ExtensionUIDialogOptions {
68
69
  * inline: selecting it keeps the title and option list on screen and opens
69
70
  * a free-text input below the list. Submitting calls `onSubmit` with the
70
71
  * typed text and resolves the select with `optionLabel`; Escape returns to
71
- * option selection. Non-TUI bridges (RPC, ACP) drop it; callers must keep
72
+ * option selection. Non-TUI clients (SDK, ACP) drop it; callers must keep
72
73
  * a fallback path for selects that resolve `optionLabel` without invoking
73
74
  * `onSubmit`.
74
75
  */
@@ -104,7 +105,7 @@ export type ExtensionUiComponentFactory = (tui: TUI, theme: Theme) => ExtensionU
104
105
  export type ExtensionWidgetContent = string[] | ExtensionUiComponentFactory | undefined;
105
106
  /**
106
107
  * UI context for extensions to request interactive UI.
107
- * Each mode (interactive, RPC, print) provides its own implementation.
108
+ * Interactive, SDK, and headless callers provide their own implementation.
108
109
  */
109
110
  export interface ExtensionUIContext {
110
111
  /** Show a selector and return the user's choice. */
@@ -175,6 +176,13 @@ export interface ExtensionUIContext {
175
176
  /** Set tool output expansion state. */
176
177
  setToolsExpanded(expanded: boolean): void;
177
178
  }
179
+ export interface ExtensionTranscriptEntry {
180
+ id: string;
181
+ role: string;
182
+ textSummary: string;
183
+ ts: string;
184
+ body?: string;
185
+ }
178
186
  export interface ContextUsage {
179
187
  /** Context tokens, or null if unknown (e.g. right after compaction, before next LLM response). */
180
188
  tokens: number | null;
@@ -204,7 +212,7 @@ export interface ExtensionContext {
204
212
  getContextUsage(): ContextUsage | undefined;
205
213
  /** Compact the session context (interactive mode shows UI). */
206
214
  compact(instructionsOrOptions?: string | CompactOptions): Promise<void>;
207
- /** Whether UI is available (false in print/RPC mode) */
215
+ /** Whether an interactive UI is available */
208
216
  hasUI: boolean;
209
217
  /** Current working directory */
210
218
  cwd: string;
@@ -222,17 +230,60 @@ export interface ExtensionContext {
222
230
  abort(): void;
223
231
  /** Whether there are queued messages waiting */
224
232
  hasPendingMessages(): boolean;
233
+ /** Typed pending-message counts per queue (steering, follow-up, next-turn). */
234
+ getPendingMessageCounts(): {
235
+ steering: number;
236
+ followUp: number;
237
+ nextTurn: number;
238
+ };
239
+ /** Read-only session data exposed to extensions and the SDK host. */
240
+ getTranscript(): ExtensionTranscriptEntry[];
241
+ getTranscriptBody(entryId: string): string | undefined;
242
+ getGoalState(): unknown;
243
+ getTodoState(): unknown;
244
+ getQueuedMessages(): unknown[];
245
+ getActiveTools(): string[];
246
+ getAllTools(): string[];
247
+ /** Session control seams used by the SDK host. */
248
+ cycleModel(): Promise<{
249
+ model: Model;
250
+ thinkingLevel: ThinkingLevel | undefined;
251
+ } | undefined>;
252
+ cycleThinkingLevel(): ThinkingLevel | undefined;
253
+ setQueueMode(kind: "steering" | "follow_up" | "interrupt", mode: unknown): boolean;
254
+ getSkillState(): unknown;
255
+ getConfigItems(): unknown;
256
+ getBranchCandidates(): unknown;
257
+ getExtensions(): unknown;
258
+ getArtifact(id: string): Uint8Array | string | undefined | Promise<Uint8Array | string | undefined>;
259
+ getArtifactRange?(id: string, offset: number, length: number): {
260
+ bytes: Uint8Array;
261
+ totalBytes: number;
262
+ } | undefined | Promise<{
263
+ bytes: Uint8Array;
264
+ totalBytes: number;
265
+ } | undefined>;
266
+ getJobs(): unknown;
267
+ /** Typed skill and mode controls exposed to the SDK host. */
268
+ invokeSkill?(name: string, args?: string): Promise<unknown>;
269
+ setPlanMode?(on: boolean): unknown;
270
+ operateGoal?(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
271
+ /** Typed nonvisual session controls exposed to the SDK host. */
272
+ sdkControl?(operation: string, input: Record<string, unknown>): unknown | Promise<unknown>;
273
+ /** Install a permission callback backed by a live SDK reverse provider lease. */
274
+ setSdkPermissionProvider?(provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined): void;
275
+ /** Names of session SDK seams actually installed by the active runtime. */
276
+ sdkBindings?(): readonly string[];
225
277
  /** Gracefully shutdown and exit. */
226
278
  shutdown(): void;
227
279
  /** Get the current effective system prompt. */
228
280
  getSystemPrompt(): string[];
229
281
  /** @deprecated Use hasPendingMessages() instead */
230
282
  hasQueuedMessages(): boolean;
231
- /**
232
- * Unattended workflow-gate bridge. Present only when the session runs in
233
- * unattended/RPC mode; `undefined` in interactive/TUI mode (notify-only).
234
- */
283
+ /** SDK workflow-gate bridge, when a session has a remote gate responder. */
235
284
  workflowGate?: WorkflowGateEmitter;
285
+ /** Clear the active conversation while preserving the saved session identity. */
286
+ clearContext(): Promise<boolean>;
236
287
  }
237
288
  /**
238
289
  * Extended context for command handlers.
@@ -419,12 +470,12 @@ export interface UserPythonEvent {
419
470
  /** Current working directory */
420
471
  cwd: string;
421
472
  }
422
- /** Fired when the user submits input (interactive mode only). */
473
+ /** Fired when input enters through an interactive, SDK, or extension source. */
423
474
  export interface InputEvent {
424
475
  type: "input";
425
476
  text: string;
426
477
  images?: ImageContent[];
427
- source: "interactive" | "rpc" | "extension";
478
+ source: "interactive" | "sdk" | "extension";
428
479
  }
429
480
  interface ToolCallEventBase {
430
481
  type: "tool_call";
@@ -662,7 +713,8 @@ export interface ExtensionAPI {
662
713
  /** Send a user message to the agent, or queue it when deliverAs is set. */
663
714
  sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
664
715
  deliverAs?: "steer" | "followUp";
665
- }): void;
716
+ onPreflightAccepted?: () => void;
717
+ }): Promise<void>;
666
718
  /** Append a custom entry to the session for state persistence (not sent to LLM). */
667
719
  appendEntry<T = unknown>(customType: string, data?: T): void;
668
720
  /** Execute a shell command. */
@@ -680,7 +732,23 @@ export interface ExtensionAPI {
680
732
  /** Get current thinking level. */
681
733
  getThinkingLevel(): ThinkingLevel | undefined;
682
734
  /** Set thinking level for the current session. */
683
- setThinkingLevel(level: ThinkingLevel): void;
735
+ setThinkingLevel(level: ThinkingLevel, persist?: boolean): void;
736
+ /** Get whether thinking output is visible in the current session. */
737
+ getThinkingVisibility(): "visible" | "hidden";
738
+ /** Set whether thinking output is visible for the current session. */
739
+ setThinkingVisibility(visibility: "visible" | "hidden", persist?: boolean): void;
740
+ /** Cycle the current model's available thinking levels. */
741
+ cycleThinkingLevel(): ThinkingLevel | undefined;
742
+ /** Set thinking level from a session or durable global control surface. */
743
+ setThinkingLevelForControl(level: ThinkingLevel, persist: boolean): Promise<void>;
744
+ /** Set thinking visibility from a session or durable global control surface. */
745
+ setThinkingVisibilityForControl(visibility: "visible" | "hidden", persist: boolean): Promise<void>;
746
+ /** Set the model for this session only. Returns false when it is unavailable. */
747
+ setModelTemporaryForControl(model: Model, expectedSessionId?: string): Promise<boolean>;
748
+ /** Fetch provider usage through the session's canonical provider resolution. */
749
+ fetchUsageReportsForControl(): Promise<UsageReport[] | null>;
750
+ /** Report whether the current effort follows global config or a session override. */
751
+ getThinkingScopeForControl(): "session" | "global config";
684
752
  /** Get the current session name. */
685
753
  getSessionName(): string | undefined;
686
754
  /** Set the session name. Persists to the session file. */
@@ -816,15 +884,24 @@ options?: {
816
884
  }) => void;
817
885
  export type SendUserMessageHandler = (content: string | (TextContent | ImageContent)[], options?: {
818
886
  deliverAs?: "steer" | "followUp";
819
- }) => void;
887
+ onPreflightAccepted?: () => void;
888
+ }) => void | Promise<void>;
820
889
  export type AppendEntryHandler = <T = unknown>(customType: string, data?: T) => void;
821
890
  export type GetActiveToolsHandler = () => string[];
822
891
  export type GetAllToolsHandler = () => string[];
823
892
  export type GetCommandsHandler = () => SlashCommandInfo[];
824
893
  export type SetActiveToolsHandler = (toolNames: string[]) => Promise<void>;
825
894
  export type SetModelHandler = (model: Model) => Promise<boolean>;
895
+ export type CycleThinkingLevelHandler = () => ThinkingLevel | undefined;
896
+ export type SetThinkingLevelForControlHandler = (level: ThinkingLevel, persist: boolean) => Promise<void>;
897
+ export type SetThinkingVisibilityForControlHandler = (visibility: "visible" | "hidden", persist: boolean) => Promise<void>;
898
+ export type SetModelTemporaryForControlHandler = (model: Model, expectedSessionId?: string) => Promise<boolean>;
899
+ export type FetchUsageReportsForControlHandler = () => Promise<UsageReport[] | null>;
900
+ export type GetThinkingScopeForControlHandler = () => "session" | "global config";
826
901
  export type GetThinkingLevelHandler = () => ThinkingLevel | undefined;
827
902
  export type SetThinkingLevelHandler = (level: ThinkingLevel, persist?: boolean) => void;
903
+ export type GetThinkingVisibilityHandler = () => "visible" | "hidden";
904
+ export type SetThinkingVisibilityHandler = (visibility: "visible" | "hidden", persist?: boolean) => void;
828
905
  /** Shared state created by loader, used during registration and runtime. */
829
906
  export interface ExtensionRuntimeState {
830
907
  flagValues: Map<string, boolean | string>;
@@ -848,6 +925,14 @@ export interface ExtensionActions {
848
925
  setModel: SetModelHandler;
849
926
  getThinkingLevel: GetThinkingLevelHandler;
850
927
  setThinkingLevel: SetThinkingLevelHandler;
928
+ getThinkingVisibility: GetThinkingVisibilityHandler;
929
+ setThinkingVisibility: SetThinkingVisibilityHandler;
930
+ cycleThinkingLevel: CycleThinkingLevelHandler;
931
+ setThinkingLevelForControl: SetThinkingLevelForControlHandler;
932
+ setThinkingVisibilityForControl: SetThinkingVisibilityForControlHandler;
933
+ setModelTemporaryForControl: SetModelTemporaryForControlHandler;
934
+ fetchUsageReportsForControl: FetchUsageReportsForControlHandler;
935
+ getThinkingScopeForControl: GetThinkingScopeForControlHandler;
851
936
  getSessionName: () => string | undefined;
852
937
  setSessionName: (name: string) => Promise<void>;
853
938
  }
@@ -857,12 +942,52 @@ export interface ExtensionContextActions {
857
942
  isIdle: () => boolean;
858
943
  abort: () => void;
859
944
  hasPendingMessages: () => boolean;
945
+ /** Typed pending-message counts per queue; optional for embedders without a counted queue. */
946
+ getPendingMessageCounts?: () => {
947
+ steering: number;
948
+ followUp: number;
949
+ nextTurn: number;
950
+ };
951
+ getTranscript?: () => ExtensionTranscriptEntry[];
952
+ getTranscriptBody?: (entryId: string) => string | undefined;
953
+ getGoalState?: () => unknown;
954
+ getTodoState?: () => unknown;
955
+ getQueuedMessages?: () => unknown[];
956
+ getActiveTools?: () => string[];
957
+ getAllTools?: () => string[];
860
958
  shutdown: () => void;
861
959
  getContextUsage: () => ContextUsage | undefined;
862
960
  compact: (instructionsOrOptions?: string | CompactOptions) => Promise<void>;
863
961
  getSystemPrompt: () => string[];
864
- /** Unattended workflow-gate bridge (present only in unattended/RPC mode). */
962
+ /** SDK workflow-gate bridge, when a session has a remote gate responder. */
865
963
  getWorkflowGate?: () => WorkflowGateEmitter | undefined;
964
+ /** Clear the active conversation while preserving the saved session identity. */
965
+ clearContext?: () => Promise<boolean>;
966
+ /** Session control and query seams exposed to the per-session SDK host. */
967
+ cycleModel?: () => Promise<{
968
+ model: Model;
969
+ thinkingLevel: ThinkingLevel | undefined;
970
+ } | undefined>;
971
+ cycleThinkingLevel?: () => ThinkingLevel | undefined;
972
+ setQueueMode?: (kind: "steering" | "follow_up" | "interrupt", mode: unknown) => boolean;
973
+ getSkillState?: () => unknown;
974
+ getConfigItems?: () => unknown;
975
+ getBranchCandidates?: () => unknown;
976
+ getExtensions?: () => unknown;
977
+ getArtifact?: (id: string) => Uint8Array | string | undefined | Promise<Uint8Array | string | undefined>;
978
+ getArtifactRange?: (id: string, offset: number, length: number) => {
979
+ bytes: Uint8Array;
980
+ totalBytes: number;
981
+ } | undefined | Promise<{
982
+ bytes: Uint8Array;
983
+ totalBytes: number;
984
+ } | undefined>;
985
+ getJobs?: () => unknown;
986
+ setSdkPermissionProvider?: (provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined) => void;
987
+ sdkControl?: (operation: string, input: Record<string, unknown>) => unknown | Promise<unknown>;
988
+ invokeSkill?: (name: string, args?: string) => Promise<unknown>;
989
+ setPlanMode?: (on: boolean) => unknown;
990
+ operateGoal?: (op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string) => Promise<unknown>;
866
991
  }
867
992
  /** Actions for ExtensionCommandContext (ctx.* in command handlers). */
868
993
  export interface ExtensionCommandContextActions {
@@ -11,7 +11,7 @@ import type { AgentEndEvent, AgentStartEvent, AutoCompactionEndEvent, AutoCompac
11
11
  export type { ExecOptions, ExecResult } from "../../exec/exec";
12
12
  /**
13
13
  * UI context for hooks to request interactive UI from the harness.
14
- * Each mode (interactive, RPC, print) provides its own implementation.
14
+ * Interactive and headless callers provide their own implementation.
15
15
  */
16
16
  export interface HookUIContext {
17
17
  /**
@@ -1,8 +1,9 @@
1
1
  import type { Args } from "../cli/args";
2
2
  import { buildGjcTmuxExactSessionTarget, buildGjcTmuxProfileCommands, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, type GjcTmuxProfileCommand } from "./tmux-common";
3
3
  import { type OwnerIsolationProbeSync } from "./tmux-owner-isolation";
4
- export { buildGjcTmuxExactSessionTarget, buildGjcTmuxProfileCommands, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, };
5
- export declare const GJC_TMUX_LAUNCHED_ENV = "GJC_TMUX_LAUNCHED";
4
+ import { buildWindowsPowerShellInnerCommand, GJC_TMUX_LAUNCHED_ENV, type WindowsPowerShellInnerCommandOptions } from "./windows-powershell-command";
5
+ export type { WindowsPowerShellInnerCommandOptions };
6
+ export { buildGjcTmuxExactSessionTarget, buildGjcTmuxProfileCommands, buildWindowsPowerShellInnerCommand, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_LAUNCHED_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, };
6
7
  export declare const GJC_LAUNCH_POLICY_ENV = "GJC_LAUNCH_POLICY";
7
8
  export declare const GJC_TMUX_WINDOW_LABEL_MAX_WIDTH = 48;
8
9
  interface TtyState {
@@ -36,6 +36,9 @@ export type PsmuxSpawnRunner = (command: string, args: string[]) => {
36
36
  export type BinaryResolver = (candidate: string) => string | null;
37
37
  /** @internal Test-only seam; production code never calls this. */
38
38
  export declare function __setBinaryResolverForTests(resolver: BinaryResolver | null): void;
39
+ export type ExecutableIdentityResolver = (path: string) => string | null;
40
+ /** @internal Test-only seam; production code never calls this. */
41
+ export declare function __setExecutableIdentityResolverForTests(resolver: ExecutableIdentityResolver | null): void;
39
42
  export declare function envDisabled(value: string | undefined): boolean;
40
43
  /**
41
44
  * Decide whether command resolves to a psmux binary by probing its version
@@ -41,6 +41,8 @@ export interface RuntimeStateContext {
41
41
  sessionId: string;
42
42
  cwd: string;
43
43
  sessionFile?: string | null;
44
+ /** Optional platform seam for deterministic cross-platform path identity checks. */
45
+ platform?: NodeJS.Platform;
44
46
  branch?: string | null;
45
47
  /** Public-safe owner metadata used to persist the canonical terminal verdict. */
46
48
  ownerTerminal?: OwnerTerminalContext | null;
@@ -60,6 +62,7 @@ export declare function readTerminalRuntimeStateMarker(input: {
60
62
  sessionId?: string | null;
61
63
  cwd?: string | null;
62
64
  sessionFile?: string | null;
65
+ platform?: NodeJS.Platform;
63
66
  }): Promise<TerminalRuntimeStateStatus>;
64
67
  export declare function stateForEvent(event: RuntimeStateEvent): RuntimeState | null;
65
68
  export declare function eventAffectsCoordinatorRuntimeState(event: RuntimeStateEvent): boolean;
@@ -146,7 +146,7 @@ export interface GjcTeamWorkerLifecycle {
146
146
  }
147
147
  export type GjcTeamNotificationDeliveryState = "pending" | "sent" | "queued" | "deferred" | "failed" | "delivered" | "acknowledged";
148
148
  export type GjcTeamPaneAttemptResult = "sent" | "queued" | "deferred" | "failed";
149
- export type GjcTeamMailboxDeliveryTransportKind = "notifications_sdk" | "pane";
149
+ export type GjcTeamMailboxDeliveryTransportKind = "sdk" | "pane";
150
150
  export interface GjcTeamNotification {
151
151
  id: string;
152
152
  kind: "mailbox_message" | "worker_lifecycle" | "invalid_attempt";
@@ -175,7 +175,7 @@ export interface GjcTeamMailboxDeliveryInput {
175
175
  env: NodeJS.ProcessEnv;
176
176
  }
177
177
  export type GjcTeamMailboxDeliveryResult = {
178
- transport: "notifications_sdk";
178
+ transport: "sdk";
179
179
  state: GjcTeamNotificationDeliveryState;
180
180
  reason?: string;
181
181
  } | {
@@ -314,8 +314,7 @@ export declare function resolveWorkerWorktreePath(input: {
314
314
  platform: NodeJS.Platform;
315
315
  isPsmux: boolean;
316
316
  }): string;
317
- type CommandPathResolver = (command: string) => string | null;
318
- export declare function resolveGjcWorkerCommand(cwd?: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, argv?: string[], execPath?: string, which?: CommandPathResolver): string;
317
+ export declare function resolveGjcWorkerCommand(cwd?: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, argv?: string[], execPath?: string): string;
319
318
  /** @internal Exported for unit tests. */
320
319
  export declare function buildWorkerCommand(config: GjcTeamConfig, worker: GjcTeamWorker, platform?: NodeJS.Platform): string;
321
320
  export type GjcWorkerCheckpointClassification = {
@@ -1,5 +1,18 @@
1
+ import { type TmuxServerProof } from "./tmux-owner-isolation";
1
2
  /** Matches the sole argv shape allowed to enter the owner-isolation JSON-line protocol. */
2
3
  export declare function isTmuxOwnerIsolationCliArgv(argv: readonly string[]): boolean;
4
+ interface TmuxListSessionsResult {
5
+ exitCode: number | null;
6
+ stdout: string;
7
+ stderr: string;
8
+ }
9
+ interface TmuxServerProofOptions {
10
+ platform?: NodeJS.Platform;
11
+ runListSessions?: (argv: string[]) => TmuxListSessionsResult;
12
+ }
13
+ /** Probes a tmux server using an injectable list-sessions runner for platform-bounded callers. */
14
+ export declare function tmuxServerProof(socketKey: string, tmuxControlArgv?: string[], options?: TmuxServerProofOptions): Promise<TmuxServerProof>;
3
15
  /** Reads exactly one bounded JSON line and writes exactly one JSON response line. */
4
16
  export declare function runTmuxOwnerIsolationCli(stdin: string): Promise<string>;
5
17
  export declare function runTmuxOwnerIsolationCliFromStdin(): Promise<void>;
18
+ export {};
@@ -65,6 +65,9 @@ export interface ForceCloseOwnerDependencies {
65
65
  sleep(ms: number): Promise<void>;
66
66
  listPanePids(sessionName: string, env: NodeJS.ProcessEnv): number[];
67
67
  }
68
+ export interface CreateGjcTmuxSessionOptions {
69
+ platform?: NodeJS.Platform;
70
+ }
68
71
  export type CreateOwnerIsolationTestDependencies = {
69
72
  probe?: Partial<OwnerIsolationProbeSync>;
70
73
  execute?: (plan: PlanResponse, deps: TmuxOwnerIsolationExecutionDependencies) => TmuxOwnerIsolationExecutionResult;
@@ -80,7 +83,7 @@ export declare function findGjcTmuxSessionByBranch(branch: string, env?: NodeJS.
80
83
  export declare function findGjcTmuxSessionByName(sessionName: string, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus | undefined;
81
84
  export declare function findGjcTmuxSessionByScope(project: string, branch: string | null | undefined, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus | undefined;
82
85
  export declare function statusGjcTmuxSession(sessionName: string, env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus;
83
- export declare function createGjcTmuxSession(env?: NodeJS.ProcessEnv): GjcTmuxSessionStatus;
86
+ export declare function createGjcTmuxSession(env?: NodeJS.ProcessEnv, options?: CreateGjcTmuxSessionOptions): GjcTmuxSessionStatus;
84
87
  /** Proves a managed reusable name still resolves to one immutable session on one server. */
85
88
  export declare function proveGjcTmuxSessionMutationTarget(sessionName: string, env?: NodeJS.ProcessEnv): ProvenTmuxSessionIdentity;
86
89
  /** @internal */
@@ -0,0 +1,9 @@
1
+ export declare const GJC_TMUX_LAUNCHED_ENV = "GJC_TMUX_LAUNCHED";
2
+ export interface WindowsPowerShellInnerCommandOptions {
3
+ command: readonly string[];
4
+ args?: readonly string[];
5
+ environment?: Record<string, string>;
6
+ tmuxExitMarkerPath?: string;
7
+ }
8
+ /** Builds the shared BOM-free UTF-16LE command for native Windows tmux-compatible panes. */
9
+ export declare function buildWindowsPowerShellInnerCommand({ command, args, environment, tmuxExitMarkerPath, }: WindowsPowerShellInnerCommandOptions): string;