@gajae-code/coding-agent 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/CHANGELOG.md +70 -2
  2. package/dist/types/append-only-mode.d.ts +1 -1
  3. package/dist/types/cli/args.d.ts +4 -5
  4. package/dist/types/cli/daemon-cli.d.ts +12 -1
  5. package/dist/types/cli/notify-cli.d.ts +21 -1
  6. package/dist/types/cli.d.ts +3 -0
  7. package/dist/types/commands/daemon.d.ts +39 -0
  8. package/dist/types/commands/launch.d.ts +3 -0
  9. package/dist/types/commands/notify.d.ts +28 -1
  10. package/dist/types/commands/sdk.d.ts +33 -0
  11. package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
  12. package/dist/types/config/model-profile-activation.d.ts +35 -15
  13. package/dist/types/config/model-profiles.d.ts +11 -5
  14. package/dist/types/config/model-registry.d.ts +3 -3
  15. package/dist/types/config/model-resolver.d.ts +39 -6
  16. package/dist/types/config/model-selector-value.d.ts +17 -0
  17. package/dist/types/config/models-config-schema.d.ts +10 -6
  18. package/dist/types/config/settings-schema.d.ts +133 -6
  19. package/dist/types/config/settings.d.ts +63 -35
  20. package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
  21. package/dist/types/coordinator-mcp/server.d.ts +6 -49
  22. package/dist/types/daemon/builtin.d.ts +6 -5
  23. package/dist/types/daemon/control-types.d.ts +1 -1
  24. package/dist/types/discovery/mcp-json.d.ts +12 -1
  25. package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
  26. package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
  27. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
  28. package/dist/types/extensibility/extensions/loader.d.ts +10 -1
  29. package/dist/types/extensibility/extensions/runner.d.ts +3 -3
  30. package/dist/types/extensibility/extensions/types.d.ts +141 -16
  31. package/dist/types/extensibility/hooks/types.d.ts +1 -1
  32. package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
  33. package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
  34. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
  35. package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
  36. package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
  37. package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
  38. package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
  39. package/dist/types/harness-control-plane/operate.d.ts +5 -5
  40. package/dist/types/harness-control-plane/owner.d.ts +18 -4
  41. package/dist/types/harness-control-plane/receipts.d.ts +0 -1
  42. package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
  43. package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
  44. package/dist/types/harness-control-plane/types.d.ts +3 -4
  45. package/dist/types/lsp/index.d.ts +1 -1
  46. package/dist/types/main.d.ts +32 -38
  47. package/dist/types/modes/acp/acp-agent.d.ts +224 -53
  48. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
  49. package/dist/types/modes/acp/acp-mode.d.ts +6 -15
  50. package/dist/types/modes/acp/permission-mode.d.ts +4 -0
  51. package/dist/types/modes/acp/startup-options.d.ts +6 -0
  52. package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
  53. package/dist/types/modes/components/gajae-pet-widget.d.ts +1 -0
  54. package/dist/types/modes/components/model-selector.d.ts +1 -0
  55. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  56. package/dist/types/modes/components/pet-capability.d.ts +37 -0
  57. package/dist/types/modes/components/pet-selector.d.ts +1 -1
  58. package/dist/types/modes/components/settings-selector.d.ts +15 -4
  59. package/dist/types/modes/components/welcome.d.ts +1 -1
  60. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  61. package/dist/types/modes/index.d.ts +0 -4
  62. package/dist/types/modes/interactive-mode.d.ts +5 -1
  63. package/dist/types/modes/runtime-init.d.ts +2 -2
  64. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  65. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  66. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  67. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  68. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  69. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +169 -30
  70. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  71. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  72. package/dist/types/modes/types.d.ts +16 -1
  73. package/dist/types/runtime-mcp/client.d.ts +2 -0
  74. package/dist/types/runtime-mcp/config.d.ts +5 -1
  75. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  76. package/dist/types/runtime-mcp/types.d.ts +4 -0
  77. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  78. package/dist/types/sdk/acp/index.d.ts +2 -0
  79. package/dist/types/sdk/broker/broker.d.ts +53 -0
  80. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  81. package/dist/types/sdk/broker/ensure.d.ts +33 -0
  82. package/dist/types/sdk/broker/identity.d.ts +3 -0
  83. package/dist/types/sdk/broker/index.d.ts +8 -0
  84. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  85. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  86. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  87. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  88. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  89. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  90. package/dist/types/sdk/broker/transport.d.ts +9 -0
  91. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  92. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  93. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  94. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  95. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  96. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  97. package/dist/types/sdk/bus/config.d.ts +274 -0
  98. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  99. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  100. package/dist/types/sdk/bus/discord-daemon.d.ts +45 -0
  101. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  102. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  103. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  104. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  105. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  106. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  107. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  108. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  109. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  110. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  111. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  112. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  113. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  114. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  115. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  116. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  117. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  118. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  119. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  120. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +55 -17
  121. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  122. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  123. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  124. package/dist/types/sdk/cli/index.d.ts +1 -0
  125. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  126. package/dist/types/sdk/client/client.d.ts +1 -0
  127. package/dist/types/sdk/client/discovery.d.ts +27 -0
  128. package/dist/types/sdk/client/index.d.ts +2 -0
  129. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  130. package/dist/types/sdk/host/control/index.d.ts +2 -0
  131. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  132. package/dist/types/sdk/host/events.d.ts +35 -0
  133. package/dist/types/sdk/host/host.d.ts +35 -0
  134. package/dist/types/sdk/host/index.d.ts +4 -0
  135. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  136. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  137. package/dist/types/sdk/host/query/index.d.ts +3 -0
  138. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  139. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  140. package/dist/types/sdk/host/types.d.ts +32 -0
  141. package/dist/types/sdk/index.d.ts +6 -0
  142. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  143. package/dist/types/sdk/mcp/index.d.ts +1 -0
  144. package/dist/types/sdk/mcp/server.d.ts +37 -0
  145. package/dist/types/sdk/models.d.ts +44 -0
  146. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  147. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  148. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  149. package/dist/types/sdk/startup-capability.d.ts +50 -0
  150. package/dist/types/session/agent-session.d.ts +114 -21
  151. package/dist/types/session/default-model-selection.d.ts +25 -0
  152. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  153. package/dist/types/session/session-manager.d.ts +58 -1
  154. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  155. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  156. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  157. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  158. package/dist/types/tools/browser/launch.d.ts +22 -0
  159. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  160. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  161. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  162. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  163. package/dist/types/tools/browser/registry.d.ts +19 -0
  164. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  165. package/dist/types/tools/index.d.ts +8 -8
  166. package/package.json +34 -13
  167. package/scripts/build-sdk-package-smoke.ts +94 -0
  168. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  169. package/scripts/compile-args.ts +4 -2
  170. package/scripts/g005-daemon-smoke.ts +4 -5
  171. package/scripts/g011-daemon-path-smoke.ts +5 -5
  172. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  173. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  174. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  175. package/scripts/manifest-schema.ts +124 -0
  176. package/scripts/run-test-manifest.ts +153 -0
  177. package/scripts/run-threat-model-check.ts +157 -0
  178. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  179. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  180. package/src/append-only-mode.ts +1 -1
  181. package/src/cli/args.ts +43 -12
  182. package/src/cli/auth-gateway-cli.ts +2 -2
  183. package/src/cli/config-cli.ts +2 -1
  184. package/src/cli/daemon-cli.ts +63 -14
  185. package/src/cli/list-models.ts +1 -1
  186. package/src/cli/notify-cli.ts +288 -286
  187. package/src/cli.ts +21 -2
  188. package/src/commands/daemon.ts +50 -6
  189. package/src/commands/harness.ts +93 -36
  190. package/src/commands/launch.ts +5 -2
  191. package/src/commands/mcp-serve.ts +19 -12
  192. package/src/commands/notify.ts +36 -3
  193. package/src/commands/sdk.ts +426 -0
  194. package/src/commit/agentic/agent.ts +1 -0
  195. package/src/config/atomic-yaml-patch.ts +423 -0
  196. package/src/config/model-profile-activation.ts +240 -89
  197. package/src/config/model-profiles.ts +37 -34
  198. package/src/config/model-registry.ts +51 -26
  199. package/src/config/model-resolver.ts +138 -51
  200. package/src/config/model-selector-value.ts +50 -0
  201. package/src/config/models-config-schema.ts +14 -21
  202. package/src/config/settings-schema.ts +128 -10
  203. package/src/config/settings.ts +1120 -158
  204. package/src/coordinator-mcp/model-preset.ts +74 -20
  205. package/src/coordinator-mcp/server.ts +1597 -3052
  206. package/src/daemon/builtin.ts +8 -5
  207. package/src/daemon/control-types.ts +1 -1
  208. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  209. package/src/discovery/mcp-json.ts +327 -20
  210. package/src/extensibility/custom-tools/types.ts +1 -1
  211. package/src/extensibility/extensions/compact-handler.ts +3 -3
  212. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  213. package/src/extensibility/extensions/loader.ts +69 -5
  214. package/src/extensibility/extensions/runner.ts +112 -4
  215. package/src/extensibility/extensions/types.ts +176 -17
  216. package/src/extensibility/hooks/types.ts +1 -1
  217. package/src/extensibility/slash-commands.ts +3 -3
  218. package/src/gjc-runtime/launch-tmux.ts +170 -86
  219. package/src/gjc-runtime/psmux-detect.ts +82 -4
  220. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  221. package/src/gjc-runtime/team-runtime.ts +54 -35
  222. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  223. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -2
  224. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  225. package/src/gjc-runtime/ultragoal-guard.ts +53 -6
  226. package/src/gjc-runtime/ultragoal-runtime.ts +155 -3
  227. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  228. package/src/harness-control-plane/operate.ts +9 -9
  229. package/src/harness-control-plane/owner.ts +283 -39
  230. package/src/harness-control-plane/receipts.ts +0 -1
  231. package/src/harness-control-plane/sdk-transport.ts +395 -0
  232. package/src/harness-control-plane/session-transport.ts +94 -0
  233. package/src/harness-control-plane/types.ts +1 -1
  234. package/src/internal-urls/docs-index.generated.ts +36 -37
  235. package/src/lsp/client.ts +42 -6
  236. package/src/lsp/index.ts +2 -2
  237. package/src/main.ts +299 -204
  238. package/src/modes/DESIGN.md +258 -0
  239. package/src/modes/acp/acp-agent.ts +1228 -2612
  240. package/src/modes/acp/acp-client-bridge.ts +2 -20
  241. package/src/modes/acp/acp-event-mapper.ts +18 -2
  242. package/src/modes/acp/acp-mode.ts +8 -36
  243. package/src/modes/acp/permission-mode.ts +25 -0
  244. package/src/modes/acp/startup-options.ts +6 -0
  245. package/src/modes/components/agent-dashboard.ts +37 -17
  246. package/src/modes/components/custom-editor.ts +1 -0
  247. package/src/modes/components/gajae-pet-widget.ts +169 -20
  248. package/src/modes/components/model-selector.ts +93 -35
  249. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  250. package/src/modes/components/pet-capability.ts +115 -0
  251. package/src/modes/components/pet-selector.ts +4 -6
  252. package/src/modes/components/settings-selector.ts +86 -11
  253. package/src/modes/components/welcome.ts +4 -4
  254. package/src/modes/controllers/command-controller.ts +1 -2
  255. package/src/modes/controllers/event-controller.ts +11 -16
  256. package/src/modes/controllers/extension-ui-controller.ts +357 -12
  257. package/src/modes/controllers/input-controller.ts +43 -13
  258. package/src/modes/controllers/selector-controller.ts +671 -44
  259. package/src/modes/index.ts +0 -22
  260. package/src/modes/interactive-mode.ts +108 -24
  261. package/src/modes/runtime-init.ts +298 -6
  262. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  263. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  264. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  265. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  266. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  267. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1254 -87
  268. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  269. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  270. package/src/modes/types.ts +16 -1
  271. package/src/runtime-mcp/client.ts +94 -19
  272. package/src/runtime-mcp/config.ts +27 -15
  273. package/src/runtime-mcp/manager.ts +343 -105
  274. package/src/runtime-mcp/oauth-flow.ts +42 -12
  275. package/src/runtime-mcp/transports/http.ts +49 -19
  276. package/src/runtime-mcp/transports/stdio.ts +47 -28
  277. package/src/runtime-mcp/types.ts +10 -0
  278. package/src/sdk/acp/adapter.ts +418 -0
  279. package/src/sdk/acp/index.ts +2 -0
  280. package/src/sdk/broker/broker.ts +642 -0
  281. package/src/sdk/broker/discovery.ts +94 -0
  282. package/src/sdk/broker/ensure.ts +249 -0
  283. package/src/sdk/broker/identity.ts +42 -0
  284. package/src/sdk/broker/index.ts +8 -0
  285. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  286. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  287. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  288. package/src/sdk/broker/lifecycle.ts +2157 -0
  289. package/src/sdk/broker/process-incarnation.ts +159 -0
  290. package/src/sdk/broker/runtime.ts +164 -0
  291. package/src/sdk/broker/session-index.ts +318 -0
  292. package/src/sdk/broker/state-version.ts +23 -0
  293. package/src/sdk/broker/transport.ts +125 -0
  294. package/src/sdk/bus/chat-command-policy.ts +107 -0
  295. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  296. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  297. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  298. package/src/sdk/bus/chat-effect-journal.ts +353 -0
  299. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  300. package/src/sdk/bus/config.ts +433 -0
  301. package/src/sdk/bus/conversation-store.ts +391 -0
  302. package/src/sdk/bus/discord-conversation.ts +85 -0
  303. package/src/sdk/bus/discord-daemon.ts +2275 -0
  304. package/src/sdk/bus/discord-live-provider.ts +521 -0
  305. package/src/sdk/bus/discord-provider.ts +56 -0
  306. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  307. package/src/sdk/bus/index.ts +3943 -0
  308. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  309. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  310. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  311. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  312. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  313. package/src/sdk/bus/natives-augment.d.ts +38 -0
  314. package/src/sdk/bus/notification-orchestration.ts +535 -0
  315. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  316. package/src/sdk/bus/session-control.ts +333 -0
  317. package/src/sdk/bus/slack-conversation.ts +74 -0
  318. package/src/sdk/bus/slack-daemon.ts +2144 -0
  319. package/src/sdk/bus/slack-live-provider.ts +380 -0
  320. package/src/sdk/bus/slack-provider.ts +76 -0
  321. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  322. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  323. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  324. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  325. package/src/{notifications → sdk/bus}/telegram-daemon.ts +502 -54
  326. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  327. package/src/sdk/bus/telegram-setup.ts +663 -0
  328. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  329. package/src/sdk/cli/index.ts +1 -0
  330. package/src/sdk/cli/session-cli.ts +275 -0
  331. package/src/sdk/client/client.ts +1 -0
  332. package/src/sdk/client/discovery.ts +108 -0
  333. package/src/sdk/client/index.ts +2 -0
  334. package/src/sdk/host/control/dispatch.ts +367 -0
  335. package/src/sdk/host/control/index.ts +10 -0
  336. package/src/sdk/host/control/operations.ts +63 -0
  337. package/src/sdk/host/events.ts +91 -0
  338. package/src/sdk/host/host.ts +296 -0
  339. package/src/sdk/host/index.ts +4 -0
  340. package/src/sdk/host/query/cursor.ts +189 -0
  341. package/src/sdk/host/query/handlers.ts +533 -0
  342. package/src/sdk/host/query/index.ts +3 -0
  343. package/src/sdk/host/query/revision-store.ts +1126 -0
  344. package/src/sdk/host/reverse-leases.ts +325 -0
  345. package/src/sdk/host/types.ts +29 -0
  346. package/src/sdk/index.ts +13 -0
  347. package/src/sdk/lifecycle-session.ts +39 -0
  348. package/src/sdk/mcp/index.ts +1 -0
  349. package/src/sdk/mcp/server.ts +332 -0
  350. package/src/sdk/models.ts +168 -0
  351. package/src/sdk/protocol/adapter-validation.ts +48 -0
  352. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  353. package/src/sdk/protocol/operation-registry.ts +312 -0
  354. package/src/{sdk.ts → sdk/session.ts} +339 -212
  355. package/src/sdk/startup-capability.ts +189 -0
  356. package/src/session/agent-session.ts +2470 -866
  357. package/src/session/default-model-selection.ts +93 -0
  358. package/src/session/fallback-chain-controller.ts +136 -0
  359. package/src/session/session-manager.ts +447 -13
  360. package/src/session/session-storage.ts +8 -1
  361. package/src/setup/credential-auto-import.ts +290 -35
  362. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  363. package/src/slash-commands/builtin-registry.ts +33 -30
  364. package/src/task/executor.ts +62 -13
  365. package/src/tools/ask-answer-registry.ts +1 -1
  366. package/src/tools/ask.ts +13 -8
  367. package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
  368. package/src/tools/browser/benchmark/detector-report.ts +157 -0
  369. package/src/tools/browser/benchmark/run-suite.ts +39 -0
  370. package/src/tools/browser/launch.ts +124 -19
  371. package/src/tools/browser/profile-discovery.ts +63 -0
  372. package/src/tools/browser/profile-posture.ts +59 -0
  373. package/src/tools/browser/profile-reuse.ts +102 -0
  374. package/src/tools/browser/profile-warmup.ts +109 -0
  375. package/src/tools/browser/registry.ts +87 -11
  376. package/src/tools/browser/tab-protocol.ts +1 -0
  377. package/src/tools/browser/tab-supervisor.ts +1 -0
  378. package/src/tools/browser/tab-worker.ts +1 -1
  379. package/src/tools/browser.ts +6 -0
  380. package/src/tools/index.ts +8 -8
  381. package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
  382. package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
  383. package/src/tools/telegram-send.ts +2 -2
  384. package/vendor/insane-search/MANIFEST.json +2 -1
  385. package/vendor/insane-search/engine/bias_check.py +4 -1
  386. package/vendor/insane-search/engine/phase0.py +26 -1
  387. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  388. package/dist/types/modes/bridge/auth.d.ts +0 -12
  389. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  390. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  391. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  392. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  393. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  394. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  395. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  396. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  397. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  398. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  399. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  400. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  401. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  402. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  403. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  404. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  405. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  406. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  407. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  408. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  409. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  410. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  411. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  412. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  413. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  414. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  415. package/dist/types/notifications/config.d.ts +0 -132
  416. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  417. package/src/modes/bridge/auth.ts +0 -41
  418. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  419. package/src/modes/bridge/bridge-mode.ts +0 -675
  420. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  421. package/src/modes/bridge/event-stream.ts +0 -70
  422. package/src/modes/rpc/host-tools.ts +0 -1
  423. package/src/modes/rpc/host-uris.ts +0 -1
  424. package/src/modes/rpc/rpc-client.ts +0 -1166
  425. package/src/modes/rpc/rpc-mode.ts +0 -1029
  426. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  427. package/src/modes/rpc/rpc-types.ts +0 -637
  428. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  429. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  430. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  431. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  432. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  433. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  434. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  435. package/src/modes/shared/agent-wire/responses.ts +0 -17
  436. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  437. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  438. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  439. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  440. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  441. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  442. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  443. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  444. package/src/notifications/config.ts +0 -219
  445. package/src/notifications/index.ts +0 -1835
  446. package/src/notifications/telegram-daemon-cli.ts +0 -243
  447. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  448. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  449. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  450. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  453. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  454. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  455. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  456. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  457. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  458. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  459. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  460. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  461. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  462. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  463. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  466. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  467. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  468. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  469. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  470. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  471. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  472. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  473. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  474. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -0,0 +1,4 @@
1
+ import type { ClientCapabilities } from "@agentclientprotocol/sdk";
2
+ export type AcpPermissionMode = "auto" | "prompt" | "always-allow";
3
+ /** Client metadata is authoritative; the process environment is only a fallback when that field is absent. */
4
+ export declare function resolveAcpPermissionMode(clientCapabilities: ClientCapabilities | undefined, env?: NodeJS.ProcessEnv): AcpPermissionMode;
@@ -0,0 +1,6 @@
1
+ /** Startup settings that ACP can apply through the canonical SDK control surface. */
2
+ export interface AcpStartupOptions {
3
+ modelId?: string;
4
+ modelPreset?: string;
5
+ thinkingLevel?: string;
6
+ }
@@ -1,11 +1,14 @@
1
1
  import { Container } from "@gajae-code/tui";
2
2
  import type { ModelRegistry } from "../../config/model-registry";
3
+ import { type ModelSelectorValue } from "../../config/model-selector-value";
3
4
  import { Settings } from "../../config/settings";
4
5
  interface AgentDashboardModelContext {
5
6
  modelRegistry?: ModelRegistry;
6
7
  activeModelPattern?: string;
7
8
  defaultModelPattern?: string;
8
9
  }
10
+ export declare function resolveAgentCreationModel(modelPatterns: string[], modelRegistry: ModelRegistry, settings: Settings | undefined): import("@gajae-code/ai").Model<import("@gajae-code/ai").Api>;
11
+ export declare function updateAgentModelOverride(overrides: Record<string, ModelSelectorValue>, agentName: string, rawValue: string): Record<string, ModelSelectorValue>;
9
12
  export declare class AgentDashboard extends Container {
10
13
  #private;
11
14
  private readonly cwd;
@@ -53,6 +53,7 @@ export declare class GajaePetWidget {
53
53
  * eye-roll it fires the signature burst once (RedGajae flex, BlueGajae para-para
54
54
  * then sob) so the selector demos the animation instead of waiting the random gap. */
55
55
  previewMode(mode: PetMode): void;
56
+ commitPreviewMode(mode: PetMode): void;
56
57
  dispose(): void;
57
58
  /** Re-mount the composer editor (framed when a skin is active) after an overlay. */
58
59
  remountComposer(): void;
@@ -47,6 +47,7 @@ export declare class ModelSelectorComponent extends Container {
47
47
  isCurrentModelFastModeActive?: () => boolean;
48
48
  currentThinkingLevel?: ThinkingLevel;
49
49
  activeModelProfile?: string;
50
+ configuredDefaultChain?: readonly string[];
50
51
  });
51
52
  refreshRoleAssignments(options?: {
52
53
  currentModel?: Model;
@@ -0,0 +1,135 @@
1
+ import { type Component, type Focusable, type SecretValue } from "@gajae-code/tui";
2
+ import type { CasReceipt } from "../../config/atomic-yaml-patch";
3
+ import type { BlockedTelegramRestoreResult, ProposedTelegramIdentity, TelegramDaemonReconnectOutcome } from "../../sdk/bus/notification-orchestration";
4
+ import type { NotificationHealthReport, NotificationRecoveryReport, NotificationStatusReport, NotificationTestResult } from "../../sdk/bus/notification-service";
5
+ import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../../sdk/bus/session-control";
6
+ /** Safe scalar notification preferences. Credentials and destination IDs are deliberately absent. */
7
+ export interface NotificationsEditorPreferences {
8
+ redact: boolean;
9
+ verbosity: "lean" | "verbose";
10
+ sessionScope: "all" | "primary";
11
+ richEnabled: boolean;
12
+ richDraftEnabled: boolean;
13
+ }
14
+ /** Secret-safe snapshot used to render the Notifications tab. */
15
+ export interface NotificationsEditorState {
16
+ status: NotificationStatusReport;
17
+ session: NotificationSessionStatus;
18
+ preferences: NotificationsEditorPreferences;
19
+ health?: NotificationHealthReport;
20
+ }
21
+ /**
22
+ * A one-way setup value accepted from the masked input. The operation adapter
23
+ * consumes the secret and returns a safe-to-render prepared draft.
24
+ */
25
+ export interface NotificationsEditorSetupInput {
26
+ token: SecretValue;
27
+ /** Optional: omit to use daemon-aware private-chat discovery when polling is safe. */
28
+ chatId?: string;
29
+ richEnabled: boolean;
30
+ richDraftEnabled: boolean;
31
+ }
32
+ /**
33
+ * Secret-safe setup draft. The adapter may retain its private credential while
34
+ * this object is live, but no raw token is exposed through this contract.
35
+ */
36
+ export interface PreparedTelegramConfiguration {
37
+ chatId: string;
38
+ tokenMask: string;
39
+ tokenFingerprint?: string;
40
+ richEnabled: boolean;
41
+ richDraftEnabled: boolean;
42
+ }
43
+ export interface NotificationsPreflightResult {
44
+ status: "ready" | "aborted" | "cancelled" | "error";
45
+ identity: ProposedTelegramIdentity;
46
+ message: string;
47
+ pairingSource?: "discovered" | "provided" | "reused";
48
+ draft?: PreparedTelegramConfiguration;
49
+ }
50
+ /** A successful configuration save always carries an opaque CAS receipt. */
51
+ export type NotificationsConfigureCommitResult = {
52
+ status: "saved";
53
+ receipt: CasReceipt;
54
+ message: string;
55
+ } | {
56
+ status: "blocked_identity";
57
+ receipt: CasReceipt;
58
+ message: string;
59
+ restore(): Promise<BlockedTelegramRestoreResult>;
60
+ retainCommitted(): void;
61
+ };
62
+ export interface NotificationsMutationResult {
63
+ message: string;
64
+ receipt?: CasReceipt;
65
+ }
66
+ export type NotificationsSaveInactiveResult = {
67
+ status: "saved_inactive";
68
+ receipt: CasReceipt;
69
+ message: string;
70
+ } | {
71
+ status: "unavailable";
72
+ guidance: string;
73
+ };
74
+ /**
75
+ * Controller-injected boundary for the direct Notifications editor.
76
+ *
77
+ * The component only renders this contract and sends user intent through it:
78
+ * it never reads Settings, starts a daemon, or calls notification services.
79
+ */
80
+ export interface NotificationsEditorOperations {
81
+ /** Combines a buildNotificationStatusReport-shaped status snapshot with the current session-control query. */
82
+ loadState(): Promise<NotificationsEditorState>;
83
+ /** Performs offline health refreshes and a non-cancellable reachability probe when requested. */
84
+ refreshHealth(input: {
85
+ probe: boolean;
86
+ signal?: AbortSignal;
87
+ }): Promise<NotificationHealthReport>;
88
+ sendTest(): Promise<NotificationTestResult>;
89
+ recover(): Promise<NotificationRecoveryReport>;
90
+ reconnect(): Promise<TelegramDaemonReconnectOutcome>;
91
+ /** Validates/discovers a Telegram destination and returns a secret-safe prepared draft. */
92
+ preflightProposedIdentity(input: NotificationsEditorSetupInput, signal: AbortSignal): Promise<NotificationsPreflightResult>;
93
+ /** Atomically persists a prepared Telegram configuration and returns its CAS-backed receipt. */
94
+ commitConfigure(draft: PreparedTelegramConfiguration): Promise<NotificationsConfigureCommitResult>;
95
+ /** Stores a prepared Telegram configuration inactive when the mixed-adapter rule permits it. */
96
+ saveInactive(draft: PreparedTelegramConfiguration): Promise<NotificationsSaveInactiveResult>;
97
+ /** Clears adapter-local ephemeral credential material for a prepared setup draft. Idempotent. */
98
+ discardConfigureDraft(draft: PreparedTelegramConfiguration): void;
99
+ /** Enables globally without requesting or exposing a credential. */
100
+ enableGlobally(): Promise<NotificationsMutationResult>;
101
+ disableGlobally(): Promise<NotificationsMutationResult>;
102
+ /** Removes only Telegram configuration; the adapter preserves Discord/Slack when configured. */
103
+ removeTelegram(): Promise<NotificationsMutationResult & {
104
+ globallyDisabled?: boolean;
105
+ }>;
106
+ setSessionLocal(enabled: boolean): Promise<NotificationSessionReconcileResult>;
107
+ /** Atomically persists the scalar preference draft. */
108
+ commitPreferences(preferences: NotificationsEditorPreferences): Promise<NotificationsMutationResult>;
109
+ /** Reconciles the current session after durable global configuration changes. */
110
+ reconcileCurrentSession(): Promise<NotificationSessionReconcileResult>;
111
+ }
112
+ export interface NotificationsSettingsEditorCallbacks {
113
+ onCancel?: () => void;
114
+ }
115
+ type EditorMode = "home" | "provider-selection" | "chat-entry" | "token-entry" | "pairing" | "review" | "preferences" | "confirmation";
116
+ /**
117
+ * Direct tab content for notification setup and operations. It is deliberately
118
+ * independent of Settings and notification services; WI7b injects the adapter.
119
+ */
120
+ export declare class NotificationsSettingsEditorComponent implements Component, Focusable {
121
+ #private;
122
+ private readonly operations;
123
+ private readonly callbacks;
124
+ focused: boolean;
125
+ constructor(operations: NotificationsEditorOperations, callbacks?: NotificationsSettingsEditorCallbacks);
126
+ /** True while a guarded operation or blocked restore/retain decision owns the editor. */
127
+ get navigationLocked(): boolean;
128
+ /** Current state is exposed for selector lifecycle coordination and focused tests. */
129
+ get mode(): EditorMode;
130
+ invalidate(): void;
131
+ dispose(): void;
132
+ render(width: number): string[];
133
+ handleInput(data: string): void;
134
+ }
135
+ export {};
@@ -0,0 +1,37 @@
1
+ import { type SelectItem } from "@gajae-code/tui";
2
+ export type PetPixelProtocol = "sixel" | "kitty";
3
+ export declare const PET_UNAVAILABLE_DESCRIPTION = "Unavailable: requires compatible Kitty or Sixel overlay rendering";
4
+ export declare const PET_SAVED_UNAVAILABLE_DESCRIPTION = "Saved, unavailable \u2014 requires compatible Kitty or Sixel overlay rendering";
5
+ export declare const PET_UNAVAILABLE_WARNING = "\u26A0 Pets aren\u2019t available in this terminal. Its image support isn\u2019t compatible with Gajae Pet\u2019s overlay rendering yet. Try Kitty, Ghostty, WezTerm, or a terminal with compatible Sixel support.";
6
+ export declare function getPetUnavailableWarning(env?: NodeJS.ProcessEnv): string;
7
+ export declare function getPetPixelProtocol(): PetPixelProtocol | null;
8
+ export declare function isPetAvailable(): boolean;
9
+ export declare function createPetSelectItems(options: ReadonlyArray<SelectItem>, currentValue: string, available: boolean): SelectItem[];
10
+ /**
11
+ * Grace period before declaring the terminal pet-incapable at startup. The
12
+ * asynchronous Sixel capability probe starts inside `TUI.start()` and answers
13
+ * within its own 250 ms deadline; this margin covers probe scheduling so a
14
+ * supported terminal is never told it is incompatible while the probe is
15
+ * still in flight.
16
+ */
17
+ export declare const PET_CAPABILITY_SETTLE_MS = 1000;
18
+ /**
19
+ * Whether the asynchronous startup Sixel capability probe may still enable
20
+ * graphics for this session, meaning current unavailability is not final.
21
+ */
22
+ export declare function isPetCapabilityProbePending(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): boolean;
23
+ /**
24
+ * Deliver the pet-unavailable startup warning only once the capability
25
+ * question is settled. With no probe pending, unavailability is final and
26
+ * `onUnavailable` fires immediately. While a probe may still enable
27
+ * graphics, the warning is deferred: a protocol-change event cancels it (the
28
+ * saved pet re-applies through the existing subscription), and only the
29
+ * settle deadline passing with the terminal still unavailable emits it.
30
+ * Returns a disposer that cancels the pending decision.
31
+ */
32
+ export declare function warnWhenPetCapabilitySettled(options: {
33
+ probePending: boolean;
34
+ isAvailable?: () => boolean;
35
+ onUnavailable: () => void;
36
+ settleMs?: number;
37
+ }): () => void;
@@ -6,6 +6,6 @@ import type { PetMode } from "./gajae-pet-widget";
6
6
  */
7
7
  export declare class PetSelectorComponent extends Container {
8
8
  #private;
9
- constructor(current: PetMode, onSelect: (mode: PetMode) => void, onCancel: () => void, onPreview: (mode: PetMode) => void);
9
+ constructor(current: PetMode, onSelect: (mode: PetMode) => void, onCancel: () => void, onPreview: (mode: PetMode) => void, available: boolean);
10
10
  getSelectList(): SelectList;
11
11
  }
@@ -1,9 +1,9 @@
1
1
  import { type ThinkingLevel as ThinkingLevelValue } from "@gajae-code/agent-core";
2
2
  import type { Effort } from "@gajae-code/ai";
3
- import { Container, SettingsList } from "@gajae-code/tui";
3
+ import { type Component, Container } from "@gajae-code/tui";
4
4
  import { type SettingPath } from "../../config/settings";
5
5
  import type { StatusLinePreset, StatusLineSegmentId, StatusLineSeparatorStyle } from "../../config/settings-schema";
6
- import { PluginSettingsComponent } from "./plugin-settings";
6
+ import { type NotificationsEditorOperations } from "./notifications-settings-editor";
7
7
  import type { StatusLineSegmentOptions } from "./status-line";
8
8
  /**
9
9
  * Dynamic context for settings that need runtime data.
@@ -20,6 +20,8 @@ export interface SettingsRuntimeContext {
20
20
  availableModelProfiles: string[];
21
21
  /** Working directory for plugins tab */
22
22
  cwd: string;
23
+ /** Whether this terminal can render the pet overlay. */
24
+ petAvailable?: boolean;
23
25
  }
24
26
  /** Status line settings subset for preview */
25
27
  export interface StatusLinePreviewSettings {
@@ -41,6 +43,13 @@ export interface SettingsCallbacks {
41
43
  onThemePreviewCancel?: (theme: string) => void | Promise<void>;
42
44
  /** Called to live-preview the gajae pet skin while browsing the pet setting. */
43
45
  onPetPreview?: (mode: string) => void;
46
+ /**
47
+ * Commit a pet mode through the shared result-returning policy. The policy
48
+ * rechecks capability immediately before mutation and owns persistence, so
49
+ * the settings surface never persists `pet.mode` ahead of acceptance.
50
+ * Returns whether the commit was accepted.
51
+ */
52
+ onPetCommit?: (mode: string) => boolean;
44
53
  /** Called for status line preview while configuring */
45
54
  onStatusLinePreview?: (settings: StatusLinePreviewSettings) => void;
46
55
  /** Get current rendered status line for inline preview */
@@ -58,7 +67,9 @@ export declare class SettingsSelectorComponent extends Container {
58
67
  #private;
59
68
  private readonly context;
60
69
  private readonly callbacks;
61
- constructor(context: SettingsRuntimeContext, callbacks: SettingsCallbacks);
62
- getFocusComponent(): SettingsList | PluginSettingsComponent;
70
+ private readonly notificationsOperations?;
71
+ constructor(context: SettingsRuntimeContext, callbacks: SettingsCallbacks, notificationsOperations?: NotificationsEditorOperations | undefined);
72
+ getFocusComponent(): Component;
73
+ dispose(): void;
63
74
  handleInput(data: string): void;
64
75
  }
@@ -5,7 +5,7 @@ export interface RecentSession {
5
5
  }
6
6
  export interface LspServerInfo {
7
7
  name: string;
8
- status: "ready" | "error" | "connecting";
8
+ status: "idle" | "ready" | "error" | "connecting";
9
9
  fileTypes: string[];
10
10
  }
11
11
  export type WelcomeLogoMode = "unicode" | "square" | "ascii";
@@ -2,6 +2,13 @@ import type { Component } from "@gajae-code/tui";
2
2
  import type { ModelProfileConfig } from "../../config/models-config-schema";
3
3
  import { type Settings } from "../../config/settings";
4
4
  import type { InteractiveModeContext, OAuthSelectorOptions } from "../../modes/types";
5
+ import { getNotificationConfig, maskToken } from "../../sdk/bus/config";
6
+ import { proposedTelegramIdentity, reconcileCommittedTelegramConfiguration, removeTelegramConfiguration, saveTelegramInactive } from "../../sdk/bus/notification-orchestration";
7
+ import { buildNotificationStatusReport, checkNotificationHealth, recoverNotifications, sanitizeDiagnostic, sendNotificationTest } from "../../sdk/bus/notification-service";
8
+ import { ensureTelegramDaemonRunningDetailed, unregisterNotificationRoot } from "../../sdk/bus/telegram-daemon";
9
+ import { runTelegramSetup } from "../../sdk/bus/telegram-setup";
10
+ import { type CredentialAutoImportStateStore } from "../../setup/credential-auto-import";
11
+ import type { NotificationsEditorOperations } from "../components/notifications-settings-editor";
5
12
  import type { StatusLineSettings } from "../components/status-line";
6
13
  import type { JobsObserver } from "../jobs-observer";
7
14
  import type { SessionObserverRegistry } from "../session-observer-registry";
@@ -11,10 +18,37 @@ import type { SessionObserverRegistry } from "../session-observer-registry";
11
18
  * previewed row count (and every other field) can never drift out of sync.
12
19
  */
13
20
  export declare function buildStatusLineSettings(settingsInstance: Settings): StatusLineSettings;
21
+ export interface NotificationsEditorAdapterContext {
22
+ settings: Settings;
23
+ session: Pick<InteractiveModeContext["session"], "notificationSessionController">;
24
+ sessionManager: Pick<InteractiveModeContext["sessionManager"], "getCwd" | "getSessionId">;
25
+ notifyConfigChanged?: () => Promise<void> | void;
26
+ }
27
+ export interface NotificationsEditorOperationDependencies {
28
+ getNotificationConfig: typeof getNotificationConfig;
29
+ maskToken: typeof maskToken;
30
+ buildNotificationStatusReport: typeof buildNotificationStatusReport;
31
+ checkNotificationHealth: typeof checkNotificationHealth;
32
+ sendNotificationTest: typeof sendNotificationTest;
33
+ recoverNotifications: typeof recoverNotifications;
34
+ sanitizeDiagnostic: typeof sanitizeDiagnostic;
35
+ ensureTelegramDaemonRunningDetailed: typeof ensureTelegramDaemonRunningDetailed;
36
+ runTelegramSetup: typeof runTelegramSetup;
37
+ proposedTelegramIdentity: typeof proposedTelegramIdentity;
38
+ reconcileCommittedTelegramConfiguration: typeof reconcileCommittedTelegramConfiguration;
39
+ saveTelegramInactive: typeof saveTelegramInactive;
40
+ removeTelegramConfiguration: typeof removeTelegramConfiguration;
41
+ unregisterNotificationRoot: typeof unregisterNotificationRoot;
42
+ }
43
+ /**
44
+ * Concrete service adapter for the direct Notifications settings tab. Secrets remain in this closure's
45
+ * WeakMap and are never exposed through the editor's safe draft contract.
46
+ */
47
+ export declare function createNotificationsEditorOperations(ctx: NotificationsEditorAdapterContext, overrides?: Partial<NotificationsEditorOperationDependencies>): NotificationsEditorOperations;
14
48
  export declare class SelectorController {
15
49
  #private;
16
50
  private ctx;
17
- constructor(ctx: InteractiveModeContext);
51
+ constructor(ctx: InteractiveModeContext, credentialAutoImportStateStore?: CredentialAutoImportStateStore);
18
52
  /**
19
53
  * Shows a selector component in place of the editor.
20
54
  * @param create Factory that receives a `done` callback and returns the component and focus target
@@ -2,9 +2,5 @@
2
2
  * Run modes for the coding agent.
3
3
  */
4
4
  export { runAcpMode } from "./acp";
5
- export { runBridgeMode } from "./bridge/bridge-mode";
6
5
  export { InteractiveMode, type InteractiveModeOptions } from "./interactive-mode";
7
6
  export { type PrintModeOptions, runPrintMode } from "./print-mode";
8
- export { defineRpcClientTool, type ModelInfo, RpcClient, type RpcClientCustomTool, type RpcClientOptions, type RpcClientToolContext, type RpcClientToolResult, type RpcEventListener, } from "./rpc/rpc-client";
9
- export { runRpcMode } from "./rpc/rpc-mode";
10
- export type { RpcCommand, RpcHostToolCallRequest, RpcHostToolCancelRequest, RpcHostToolDefinition, RpcHostToolResult, RpcHostToolUpdate, RpcResponse, RpcSessionState, } from "./rpc/rpc-types";
@@ -9,6 +9,7 @@ import type { ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetConte
9
9
  import type { CompactOptions } from "../extensibility/extensions/types";
10
10
  import { type Skill } from "../extensibility/skills";
11
11
  import { type PlanApprovalDetails } from "../plan-mode/approved-plan";
12
+ import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../sdk/bus/session-control";
12
13
  import type { AgentSession, AgentSessionEvent } from "../session/agent-session";
13
14
  import { HistoryStorage } from "../session/history-storage";
14
15
  import type { SessionContext, SessionManager } from "../session/session-manager";
@@ -119,6 +120,8 @@ export declare class InteractiveMode implements InteractiveModeContext {
119
120
  readonly lspServers: LspStartupServerInfo[] | undefined;
120
121
  mcpManager?: import("../runtime-mcp").MCPManager;
121
122
  constructor(session: AgentSession, version: string, changelogMarkdown?: string | undefined, setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void, lspServers?: LspStartupServerInfo[] | undefined, mcpManager?: import("../runtime-mcp").MCPManager, eventBus?: EventBus);
123
+ getCurrentSessionNotificationStatus(): NotificationSessionStatus | undefined;
124
+ setCurrentSessionNotificationsEnabled(enabled: boolean): Promise<NotificationSessionReconcileResult | undefined>;
122
125
  init(): Promise<void>;
123
126
  /** Reload slash commands and autocomplete for the provided working directory. */
124
127
  refreshSlashCommandState(cwd?: string): Promise<void>;
@@ -139,8 +142,9 @@ export declare class InteractiveMode implements InteractiveModeContext {
139
142
  updateEditorChrome(): void;
140
143
  updateEditorBorderColor(): void;
141
144
  updateEditorTopBorder(): void;
142
- setPetMode(mode: PetMode): void;
145
+ setPetMode(mode: PetMode): boolean;
143
146
  previewPetMode(mode: PetMode): void;
147
+ commitPetPreviewMode(mode: PetMode): boolean;
144
148
  restoreComposer(): void;
145
149
  rebuildChatFromMessages(policy: TranscriptRebuildPolicy): void;
146
150
  /** Apply any deferred model switch after the current stream ends. */
@@ -7,9 +7,9 @@ export interface InitializeExtensionsOptions {
7
7
  reportSendError: (action: ExtensionSendAction, error: Error) => void;
8
8
  /** Reports a runtime error surfaced through {@link ExtensionRunner.onError}. */
9
9
  reportRuntimeError: (error: ExtensionError) => void;
10
- /** Optional shutdown hook (rpc mode signals its loop; print mode is a no-op). */
10
+ /** Optional shutdown hook for caller-specific lifecycle signaling. */
11
11
  onShutdown?: () => void;
12
- /** Optional UI context (rpc supplies one; print runs headless). */
12
+ /** Optional interactive UI context; omitted for headless callers. */
13
13
  uiContext?: ExtensionUIContext;
14
14
  }
15
15
  /**
@@ -7,16 +7,13 @@
7
7
  * - ultragoal execution sign-off -> `workflow_gate` { kind: "execution" } whose
8
8
  * answer is approve / decline (+ optional reason).
9
9
  *
10
- * Gates remain mandatory; the external agent substitutes for the human at the
11
- * answer boundary only. Declining / requesting changes is honored and is NEVER
12
- * silently treated as approval.
10
+ * Gates remain mandatory; the remote SDK client answers at the gate boundary.
11
+ * Declining / requesting changes is honored and is NEVER silently treated as approval.
13
12
  *
14
- * This is the pure mapping primitive; routing ralplan/ultragoal through it when
15
- * an unattended controller + gate broker are attached is wired with the transport
16
- * in #321 and exercised end-to-end by #323.
13
+ * This is the pure mapping primitive used by SDK-native workflow gate emitters.
17
14
  */
18
- import type { RpcWorkflowGateContext } from "../../rpc/rpc-types";
19
15
  import type { OpenGateInput } from "./workflow-gate-broker";
16
+ import type { WorkflowGateContext } from "./workflow-gate-types";
20
17
  export type ApprovalDecision = "approve" | "request-changes" | "reject";
21
18
  export type ExecutionDecision = "approve" | "decline";
22
19
  export interface ApprovalGateAnswer {
@@ -42,9 +39,9 @@ export declare class ApprovalGateError extends Error {
42
39
  constructor(code: "invalid_answer_shape" | "unknown_decision" | "missing_comments", message: string);
43
40
  }
44
41
  /** Build the ralplan `pending approval` -> `workflow_gate { kind: "approval" }` open-input. */
45
- export declare function approvalGate(context?: RpcWorkflowGateContext): OpenGateInput;
42
+ export declare function approvalGate(context?: WorkflowGateContext): OpenGateInput;
46
43
  /** Build the ultragoal execution sign-off -> `workflow_gate { kind: "execution" }` open-input. */
47
- export declare function executionGate(context?: RpcWorkflowGateContext): OpenGateInput;
44
+ export declare function executionGate(context?: WorkflowGateContext): OpenGateInput;
48
45
  /**
49
46
  * Decode a ralplan approval answer. `request-changes` requires comments and is
50
47
  * NEVER treated as approval; only an explicit `approve` advances.
@@ -7,12 +7,10 @@
7
7
  * back into the exact QuestionResult shape the human path produces, so ambiguity
8
8
  * scoring/state updates proceed identically whether a human or an agent answers.
9
9
  *
10
- * This is the pure mapping primitive. Routing the ask tool through it (instead of
11
- * the interactive select/editor UI) when an unattended controller + gate broker
12
- * are attached is wired with the transport in #321 and exercised by #323.
10
+ * This is the pure mapping primitive used by SDK-native workflow gate emitters.
13
11
  */
14
- import type { RpcWorkflowGateKind, RpcWorkflowStage } from "../../rpc/rpc-types";
15
12
  import type { OpenGateInput } from "./workflow-gate-broker";
13
+ import type { WorkflowGateKind, WorkflowStage } from "./workflow-gate-types";
16
14
  /** "Other (type your own)" sentinel, mirroring the interactive ask tool. */
17
15
  export declare const GATE_OTHER_OPTION = "Other (type your own)";
18
16
  /** Optional structured deep-interview round metadata supplied by the agent. */
@@ -24,8 +22,8 @@ export interface AskGateDeepInterviewState {
24
22
  ambiguity: number;
25
23
  }
26
24
  export interface AskGateWorkflowGateMeta {
27
- stage: RpcWorkflowStage;
28
- kind: RpcWorkflowGateKind;
25
+ stage: WorkflowStage;
26
+ kind: WorkflowGateKind;
29
27
  }
30
28
  export interface AskGateQuestion {
31
29
  id: string;
@@ -3,8 +3,8 @@
3
3
  * for AgentSession events and bounded owner observations.
4
4
  *
5
5
  * Two distinct consumer-facing shapes, deliberately NOT collapsed into one:
6
- * - `AgentWireEventPayload`: rich, full `AgentSessionEvent` for renderers
7
- * (ACP SDK notifications, RPC/Bridge event frames).
6
+ * - `AgentWireEventPayload`: rich, full `AgentSessionEvent` for event
7
+ * consumers on any agent-wire transport.
8
8
  * - `AgentWireOwnerObservation`: bounded/redacted owner evidence for control
9
9
  * planes (Harness). Never carries assistant text, message deltas, raw tool
10
10
  * args, raw command output, raw tool results, answers, or oversize strings.
@@ -23,8 +23,8 @@ export type AgentWireEventType = AgentSessionEvent["type"];
23
23
  /** Every agent-session event type, derived from the exhaustive registry. */
24
24
  export declare const AGENT_WIRE_EVENT_TYPES: readonly AgentWireEventType[];
25
25
  /**
26
- * Rich event payload. Carries the full `AgentSessionEvent` so renderers (ACP,
27
- * RPC, Bridge) can present message content, tool args/results, todo state, etc.
26
+ * Rich event payload. Carries the full `AgentSessionEvent` so event consumers
27
+ * can present message content, tool args/results, todo state, and related data.
28
28
  */
29
29
  export interface AgentWireEventPayload {
30
30
  event_type: AgentWireEventType;
@@ -35,7 +35,7 @@ export type AgentWireCompactAssistantMessageEvent = AssistantMessageEvent extend
35
35
  } ? Omit<TEvent, "partial" | "message" | "error"> : never : never;
36
36
  export interface AgentWireCompactMessageUpdatePayload {
37
37
  event_type: "message_update";
38
- /** Compact RPC opt-in payload: delta-only update plus minimal routing metadata. */
38
+ /** Compact opt-in payload: delta-only update plus minimal routing metadata. */
39
39
  compact: true;
40
40
  message_id: string | null;
41
41
  content_index: number | null;
@@ -66,7 +66,7 @@ export interface AgentWireOwnerObservation {
66
66
  eventType?: AgentWireEventType;
67
67
  /** Set when this observation derives from a non-event wire frame. */
68
68
  frameType?: string;
69
- /** Owner event kind (e.g. `rpc_tool_started`). */
69
+ /** Owner event kind (for example, a tool-started observation). */
70
70
  kind: string;
71
71
  /** Bounded observed signal, or null when the frame carries no signal. */
72
72
  signal: AgentWireObservedSignal | null;
@@ -21,9 +21,6 @@ export declare class AgentWireFrameSequencer {
21
21
  /** Build the next envelope of the given type with a fresh seq + frame id. */
22
22
  next<TType extends AgentWireFrameType, TPayload>(type: TType, payload: TPayload, correlationId?: string): AgentWireFrameEnvelope<TType, TPayload>;
23
23
  }
24
- /** Back-compat alias for {@link AgentWireFrameSequencer}. */
25
- export declare const BridgeFrameSequencer: typeof AgentWireFrameSequencer;
26
- export type BridgeFrameSequencer = AgentWireFrameSequencer;
27
24
  /** Serialize a single `AgentSessionEvent` into a canonical `event` wire frame. */
28
25
  export declare function toAgentWireEventFrame(event: AgentSessionEvent, sequencer: AgentWireFrameSequencer): AgentWireEventFrame;
29
26
  /** Build the rich event payload (renderer-facing) for an `AgentSessionEvent`. */
@@ -35,13 +32,13 @@ export interface AgentWireCompactMessageUpdateOptions {
35
32
  checkpointInterval?: number;
36
33
  }
37
34
  /**
38
- * Stateful compact event serializer for opt-in RPC clients.
35
+ * Stateful compact event serializer for opt-in wire clients (e.g. the SDK).
39
36
  *
40
37
  * Only `message_update` changes shape: it carries the immutable provider delta
41
38
  * plus message/content identifiers, with periodic full-message checkpoints that
42
39
  * are cloned synchronously before the caller returns to the event loop. All other
43
- * event variants remain canonical full event frames so legacy bridge/RPC behavior
44
- * and terminal `message_end` reconstruction are unchanged.
40
+ * event variants remain canonical full event frames so downstream consumers and
41
+ * terminal `message_end` reconstruction are unchanged.
45
42
  */
46
43
  export declare class AgentWireCompactEventEncoder {
47
44
  #private;
@@ -49,12 +46,10 @@ export declare class AgentWireCompactEventEncoder {
49
46
  frame(event: AgentSessionEvent): AgentWireCompactEventFrame;
50
47
  }
51
48
  export declare function toAgentWireCompactEventFrame(event: AgentSessionEvent, encoder: AgentWireCompactEventEncoder): AgentWireCompactEventFrame;
52
- /** Back-compat alias for {@link toAgentWireEventFrame}. */
53
- export declare const toBridgeEventFrame: typeof toAgentWireEventFrame;
54
49
  /**
55
50
  * Serialize a `workflow_gate` event into a sequenced wire frame (#321). The
56
51
  * gate_id is stamped as the correlation id so the answer (posted to the
57
52
  * ui-responses endpoint) can be matched, and the monotonic `seq` gives replay
58
53
  * while `frame_id` + gate_id give idempotency.
59
54
  */
60
- export declare function toBridgeWorkflowGateFrame(gate: import("../../rpc/rpc-types").RpcWorkflowGate, sequencer: AgentWireFrameSequencer): import("./protocol").BridgeWorkflowGateFrame;
55
+ export declare function toAgentWireWorkflowGateFrame(gate: import("./workflow-gate-types").WorkflowGate, sequencer: AgentWireFrameSequencer): AgentWireFrameEnvelope<"workflow_gate", import("./workflow-gate-types").WorkflowGate>;
@@ -34,4 +34,4 @@ export declare function observeAgentWireEventPayload(payload: AgentWireEventPayl
34
34
  * frames delegate to {@link observeAgentWireEventPayload}; non-event frames are
35
35
  * mapped here so owners never re-parse protocol semantics privately.
36
36
  */
37
- export declare function observeRpcOutboundFrame(frame: Record<string, unknown>): AgentWireOwnerObservation | null;
37
+ export declare function observeAgentWireFrame(frame: Record<string, unknown>): AgentWireOwnerObservation | null;