@gajae-code/coding-agent 0.13.3 → 0.14.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 (599) hide show
  1. package/CHANGELOG.md +184 -2
  2. package/README.md +2 -0
  3. package/bin/gajaessi.js +4 -0
  4. package/dist/types/async/job-manager.d.ts +55 -2
  5. package/dist/types/async/support.d.ts +14 -0
  6. package/dist/types/capability/mcp.d.ts +6 -0
  7. package/dist/types/capability/types.d.ts +6 -0
  8. package/dist/types/cli/accounts-cli.d.ts +19 -0
  9. package/dist/types/cli/args.d.ts +3 -0
  10. package/dist/types/cli/config-cli.d.ts +6 -0
  11. package/dist/types/cli/crash-cli.d.ts +10 -0
  12. package/dist/types/cli/customize-doctor.d.ts +145 -0
  13. package/dist/types/cli/daemon-cli.d.ts +3 -1
  14. package/dist/types/cli/mcp-cli.d.ts +11 -0
  15. package/dist/types/cli/notify-cli.d.ts +1 -1
  16. package/dist/types/cli/root-flags.d.ts +12 -0
  17. package/dist/types/cli/setup-cli.d.ts +3 -1
  18. package/dist/types/cli/skills-cli.d.ts +2 -1
  19. package/dist/types/cli/update-cli.d.ts +19 -1
  20. package/dist/types/cli.d.ts +6 -0
  21. package/dist/types/commands/accounts.d.ts +40 -0
  22. package/dist/types/commands/crash.d.ts +24 -0
  23. package/dist/types/commands/customize.d.ts +22 -0
  24. package/dist/types/commands/daemon.d.ts +1 -1
  25. package/dist/types/commands/launch.d.ts +6 -0
  26. package/dist/types/commands/setup.d.ts +6 -0
  27. package/dist/types/commands/skills.d.ts +6 -1
  28. package/dist/types/commands/update.d.ts +7 -0
  29. package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
  30. package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
  31. package/dist/types/config/config-schema-version.d.ts +10 -0
  32. package/dist/types/config/file-lock.d.ts +18 -0
  33. package/dist/types/config/model-profile-activation.d.ts +3 -1
  34. package/dist/types/config/model-registry.d.ts +9 -1
  35. package/dist/types/config/models-config-schema.d.ts +2 -0
  36. package/dist/types/config/settings-schema.d.ts +70 -6
  37. package/dist/types/config/settings.d.ts +63 -0
  38. package/dist/types/config/skill-settings-defaults.d.ts +26 -0
  39. package/dist/types/config/task-delegation.d.ts +39 -0
  40. package/dist/types/config/update-channel.d.ts +10 -0
  41. package/dist/types/coordinator-mcp/server.d.ts +5 -1
  42. package/dist/types/crash/index-store.d.ts +87 -0
  43. package/dist/types/crash/nudge.d.ts +50 -0
  44. package/dist/types/crash/record-loader.d.ts +17 -0
  45. package/dist/types/crash/report.d.ts +134 -0
  46. package/dist/types/crash/sanitize.d.ts +25 -0
  47. package/dist/types/cursor.d.ts +13 -2
  48. package/dist/types/customization/import.d.ts +37 -0
  49. package/dist/types/customization/index.d.ts +4 -0
  50. package/dist/types/customization/inventory.d.ts +25 -0
  51. package/dist/types/customization/mutations.d.ts +32 -0
  52. package/dist/types/customization/types.d.ts +115 -0
  53. package/dist/types/daemon/control-types.d.ts +8 -1
  54. package/dist/types/daemon/operator-contract.d.ts +4 -4
  55. package/dist/types/discovery/claude.d.ts +39 -1
  56. package/dist/types/discovery/codex.d.ts +39 -1
  57. package/dist/types/discovery/index.d.ts +2 -0
  58. package/dist/types/discovery/mcp-compat.d.ts +30 -0
  59. package/dist/types/edit/renderer.d.ts +23 -0
  60. package/dist/types/extensibility/extensions/runner.d.ts +3 -0
  61. package/dist/types/extensibility/extensions/types.d.ts +21 -4
  62. package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
  63. package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
  64. package/dist/types/extensibility/hooks/loader.d.ts +19 -5
  65. package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
  66. package/dist/types/extensibility/skill-management.d.ts +107 -0
  67. package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
  68. package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
  69. package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
  70. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
  71. package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
  72. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
  73. package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
  74. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
  75. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
  76. package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
  77. package/dist/types/hooks/events.d.ts +60 -0
  78. package/dist/types/hooks/normalize.d.ts +83 -0
  79. package/dist/types/hooks/skill-state.d.ts +9 -2
  80. package/dist/types/main.d.ts +1 -1
  81. package/dist/types/modes/acp/abort-scope.d.ts +13 -0
  82. package/dist/types/modes/acp/acp-agent.d.ts +7 -4
  83. package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
  84. package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
  85. package/dist/types/modes/components/customization/index.d.ts +1 -0
  86. package/dist/types/modes/components/gajae-pet-widget.d.ts +8 -30
  87. package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
  88. package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
  89. package/dist/types/modes/components/oauth-selector.d.ts +10 -4
  90. package/dist/types/modes/components/pet-capability.d.ts +11 -25
  91. package/dist/types/modes/components/status-line/gh.d.ts +6 -2
  92. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
  93. package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
  94. package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
  95. package/dist/types/modes/interactive-mode.d.ts +1 -0
  96. package/dist/types/modes/types.d.ts +1 -0
  97. package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
  98. package/dist/types/runtime-mcp/config.d.ts +9 -0
  99. package/dist/types/runtime-mcp/manager.d.ts +26 -1
  100. package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
  101. package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
  102. package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
  103. package/dist/types/runtime-mcp/protocol.d.ts +278 -0
  104. package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
  105. package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
  106. package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
  107. package/dist/types/runtime-mcp/types.d.ts +102 -10
  108. package/dist/types/sdk/acp/adapter.d.ts +26 -5
  109. package/dist/types/sdk/broker/broker.d.ts +3 -55
  110. package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
  111. package/dist/types/sdk/broker/session-index.d.ts +14 -5
  112. package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
  113. package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
  114. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
  115. package/dist/types/sdk/bus/config.d.ts +11 -0
  116. package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
  117. package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
  118. package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
  119. package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
  120. package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
  121. package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
  122. package/dist/types/sdk/bus/index.d.ts +85 -99
  123. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
  124. package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
  125. package/dist/types/sdk/bus/notification-service.d.ts +52 -0
  126. package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
  127. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
  128. package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
  129. package/dist/types/sdk/bus/session-control.d.ts +25 -1
  130. package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
  131. package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
  132. package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
  133. package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
  134. package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
  135. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
  136. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
  137. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
  138. package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
  139. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
  140. package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
  141. package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
  142. package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
  143. package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
  144. package/dist/types/sdk/cli/rows.d.ts +2 -11
  145. package/dist/types/sdk/cli/session-cli.d.ts +15 -25
  146. package/dist/types/sdk/client/client.d.ts +97 -1
  147. package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
  148. package/dist/types/sdk/host/control/index.d.ts +1 -1
  149. package/dist/types/sdk/host/control/operations.d.ts +18 -5
  150. package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
  151. package/dist/types/sdk/host/host.d.ts +15 -1
  152. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  153. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  154. package/dist/types/sdk/host/session-runtime.d.ts +127 -7
  155. package/dist/types/sdk/host/types.d.ts +1 -1
  156. package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
  157. package/dist/types/sdk/index.d.ts +2 -1
  158. package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
  159. package/dist/types/sdk/lifecycle/client.d.ts +59 -0
  160. package/dist/types/sdk/lifecycle/index.d.ts +3 -0
  161. package/dist/types/sdk/lifecycle/service.d.ts +232 -0
  162. package/dist/types/sdk/mcp/server.d.ts +9 -6
  163. package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
  164. package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
  165. package/dist/types/sdk/prompt-status.d.ts +10 -3
  166. package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
  167. package/dist/types/sdk/receipt-state.d.ts +17 -0
  168. package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
  169. package/dist/types/sdk/router/index.d.ts +1 -0
  170. package/dist/types/sdk/router/session-router.d.ts +152 -0
  171. package/dist/types/sdk/session-list.d.ts +22 -0
  172. package/dist/types/sdk/session-reconnect.d.ts +43 -1
  173. package/dist/types/sdk/session.d.ts +34 -1
  174. package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
  175. package/dist/types/session/account-inventory.d.ts +86 -0
  176. package/dist/types/session/agent-session.d.ts +145 -6
  177. package/dist/types/session/agent-storage.d.ts +10 -0
  178. package/dist/types/session/coordinator-tool-label.d.ts +28 -0
  179. package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
  180. package/dist/types/session/messages.d.ts +1 -1
  181. package/dist/types/session/secure-token-file.d.ts +3 -0
  182. package/dist/types/session/session-manager.d.ts +40 -1
  183. package/dist/types/session/startup-auth-config.d.ts +44 -0
  184. package/dist/types/session/terminal-abort.d.ts +378 -0
  185. package/dist/types/session/yield-queue.d.ts +7 -0
  186. package/dist/types/session-import/claude.d.ts +26 -0
  187. package/dist/types/session-import/codex.d.ts +88 -0
  188. package/dist/types/session-import/command.d.ts +35 -0
  189. package/dist/types/session-import/detect.d.ts +22 -0
  190. package/dist/types/session-import/index.d.ts +7 -0
  191. package/dist/types/session-import/provider-codex.d.ts +22 -0
  192. package/dist/types/session-import/provider-service.d.ts +38 -0
  193. package/dist/types/session-import/redact.d.ts +23 -0
  194. package/dist/types/session-import/service.d.ts +47 -0
  195. package/dist/types/session-import/types.d.ts +120 -0
  196. package/dist/types/setup/paseo/check.d.ts +16 -0
  197. package/dist/types/setup/paseo/install-saga.d.ts +115 -0
  198. package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
  199. package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
  200. package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
  201. package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
  202. package/dist/types/setup/paseo/provider-config.d.ts +35 -0
  203. package/dist/types/setup/paseo/remove.d.ts +14 -0
  204. package/dist/types/setup/paseo/result-types.d.ts +59 -0
  205. package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
  206. package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
  207. package/dist/types/skill-state/active-state.d.ts +5 -1
  208. package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
  209. package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
  210. package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
  211. package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
  212. package/dist/types/slash-commands/types.d.ts +7 -1
  213. package/dist/types/task/executor.d.ts +10 -0
  214. package/dist/types/task/index.d.ts +3 -1
  215. package/dist/types/tools/ask-answer-registry.d.ts +6 -3
  216. package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
  217. package/dist/types/tools/bash.d.ts +2 -6
  218. package/dist/types/tools/browser/attach.d.ts +11 -0
  219. package/dist/types/tools/browser/launch.d.ts +20 -0
  220. package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
  221. package/dist/types/tools/browser/render.d.ts +1 -0
  222. package/dist/types/tools/browser.d.ts +3 -1
  223. package/dist/types/tools/image-gen.d.ts +9 -2
  224. package/dist/types/tools/index.d.ts +8 -0
  225. package/dist/types/tools/monitor.d.ts +1 -1
  226. package/dist/types/tools/skill-discovery.d.ts +8 -1
  227. package/dist/types/tools/subagent.d.ts +2 -0
  228. package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
  229. package/dist/types/utils/herdr-pane.d.ts +76 -0
  230. package/package.json +19 -9
  231. package/scripts/build-binary.ts +2 -1
  232. package/scripts/build-sdk-package-smoke.ts +2 -13
  233. package/scripts/capture-sticky-viewport-showcase.ts +0 -1
  234. package/scripts/compile-args.ts +2 -0
  235. package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
  236. package/scripts/generate-sdk-operation-inventory.ts +28 -0
  237. package/scripts/generate-telegram-baseline-manifest.ts +1 -0
  238. package/scripts/generate-tool-catalog.ts +6 -4
  239. package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
  240. package/src/async/job-manager.ts +352 -17
  241. package/src/async/support.ts +25 -0
  242. package/src/autoresearch/dashboard.ts +28 -13
  243. package/src/capability/index.ts +3 -1
  244. package/src/capability/mcp.ts +6 -0
  245. package/src/capability/types.ts +6 -0
  246. package/src/cli/accounts-cli.ts +395 -0
  247. package/src/cli/args.ts +23 -0
  248. package/src/cli/auth-broker-cli.ts +136 -66
  249. package/src/cli/auth-gateway-cli.ts +94 -70
  250. package/src/cli/config-cli.ts +27 -2
  251. package/src/cli/crash-cli.ts +78 -0
  252. package/src/cli/customize-doctor.ts +1605 -0
  253. package/src/cli/daemon-cli.ts +12 -3
  254. package/src/cli/fast-help.ts +1 -0
  255. package/src/cli/mcp-cli.ts +128 -60
  256. package/src/cli/notify-cli.ts +8 -14
  257. package/src/cli/root-flags.ts +8 -0
  258. package/src/cli/setup-cli.ts +145 -0
  259. package/src/cli/skills-cli.ts +38 -2
  260. package/src/cli/update-cli.ts +167 -12
  261. package/src/cli.ts +4 -0
  262. package/src/commands/accounts.ts +71 -0
  263. package/src/commands/crash.ts +35 -0
  264. package/src/commands/customize.ts +84 -0
  265. package/src/commands/daemon.ts +2 -2
  266. package/src/commands/deep-interview.ts +2 -0
  267. package/src/commands/launch.ts +1 -0
  268. package/src/commands/mcp.ts +12 -7
  269. package/src/commands/ralplan.ts +2 -0
  270. package/src/commands/sdk.ts +65 -32
  271. package/src/commands/setup.ts +5 -0
  272. package/src/commands/skills.ts +14 -4
  273. package/src/commands/ultragoal.ts +10 -1
  274. package/src/commands/update.ts +26 -15
  275. package/src/config/atomic-yaml-patch-worker.ts +57 -0
  276. package/src/config/atomic-yaml-patch.ts +769 -29
  277. package/src/config/config-schema-version.ts +10 -0
  278. package/src/config/file-lock.ts +70 -1
  279. package/src/config/mcp-schema.json +52 -14
  280. package/src/config/model-profile-activation.ts +20 -1
  281. package/src/config/model-profiles.ts +29 -19
  282. package/src/config/model-registry.ts +132 -21
  283. package/src/config/models-config-schema.ts +1 -1
  284. package/src/config/settings-schema.ts +76 -6
  285. package/src/config/settings.ts +4038 -199
  286. package/src/config/skill-settings-defaults.ts +41 -3
  287. package/src/config/task-delegation.ts +87 -0
  288. package/src/config/update-channel.ts +23 -0
  289. package/src/coordinator-mcp/server.ts +377 -308
  290. package/src/crash/index-store.ts +723 -0
  291. package/src/crash/nudge.ts +89 -0
  292. package/src/crash/record-loader.ts +149 -0
  293. package/src/crash/report.ts +551 -0
  294. package/src/crash/sanitize.ts +129 -0
  295. package/src/cursor.ts +36 -10
  296. package/src/customization/import.ts +946 -0
  297. package/src/customization/index.ts +4 -0
  298. package/src/customization/inventory.ts +335 -0
  299. package/src/customization/mutations.ts +141 -0
  300. package/src/customization/types.ts +223 -0
  301. package/src/daemon/control-types.ts +8 -1
  302. package/src/daemon/operator-contract.ts +6 -6
  303. package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
  304. package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
  305. package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
  306. package/src/discovery/claude-hooks.ts +38 -0
  307. package/src/discovery/claude.ts +142 -209
  308. package/src/discovery/codex-hooks.ts +38 -0
  309. package/src/discovery/codex.ts +132 -198
  310. package/src/discovery/helpers.ts +8 -1
  311. package/src/discovery/index.ts +2 -0
  312. package/src/discovery/mcp-compat.ts +234 -0
  313. package/src/discovery/mcp-json.ts +6 -0
  314. package/src/edit/renderer.ts +40 -0
  315. package/src/edit/streaming.ts +4 -2
  316. package/src/exec/bash-executor.ts +24 -20
  317. package/src/export/html/index.ts +51 -2
  318. package/src/extensibility/extensions/loader.ts +9 -1
  319. package/src/extensibility/extensions/runner.ts +17 -4
  320. package/src/extensibility/extensions/types.ts +31 -6
  321. package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
  322. package/src/extensibility/gjc-plugins/installer.ts +9 -5
  323. package/src/extensibility/gjc-plugins/observability.ts +8 -2
  324. package/src/extensibility/gjc-plugins/registry.ts +13 -2
  325. package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
  326. package/src/extensibility/gjc-plugins/schema.ts +222 -39
  327. package/src/extensibility/hooks/loader.ts +154 -10
  328. package/src/extensibility/runtime-skill-discovery.ts +257 -60
  329. package/src/extensibility/skill-management.ts +368 -0
  330. package/src/extensibility/skills.ts +52 -16
  331. package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
  332. package/src/gjc-runtime/launch-worktree.ts +56 -2
  333. package/src/gjc-runtime/linux-proc.ts +7 -1
  334. package/src/gjc-runtime/ralplan-runtime.ts +100 -164
  335. package/src/gjc-runtime/session-state-lock.ts +992 -0
  336. package/src/gjc-runtime/session-state-sidecar.ts +644 -142
  337. package/src/gjc-runtime/state-writer.ts +39 -14
  338. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
  339. package/src/gjc-runtime/ultragoal-guard.ts +11 -4
  340. package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
  341. package/src/gjc-runtime/workflow-settings.ts +596 -0
  342. package/src/goals/tools/goal-tool.ts +6 -1
  343. package/src/hooks/events.ts +291 -0
  344. package/src/hooks/native-skill-hook.ts +4 -0
  345. package/src/hooks/normalize.ts +369 -0
  346. package/src/hooks/skill-state.ts +165 -46
  347. package/src/internal-urls/docs-index.generated.ts +40 -32
  348. package/src/main.ts +32 -5
  349. package/src/migrate/mcp-mapper.ts +25 -2
  350. package/src/modes/acp/abort-scope.ts +29 -0
  351. package/src/modes/acp/acp-agent.ts +423 -98
  352. package/src/modes/components/assistant-message.ts +6 -1
  353. package/src/modes/components/customization/customization-dashboard.ts +443 -0
  354. package/src/modes/components/customization/import-wizard.ts +372 -0
  355. package/src/modes/components/customization/index.ts +1 -0
  356. package/src/modes/components/gajae-pet-widget.ts +539 -213
  357. package/src/modes/components/irc-sidebar.ts +11 -0
  358. package/src/modes/components/iterm-pet-transport.ts +585 -0
  359. package/src/modes/components/oauth-selector.ts +277 -86
  360. package/src/modes/components/pet-capability.ts +39 -40
  361. package/src/modes/components/settings-selector.ts +9 -0
  362. package/src/modes/components/status-line/gh.ts +45 -1
  363. package/src/modes/components/status-line/segments.ts +16 -1
  364. package/src/modes/components/tool-status-header.ts +13 -3
  365. package/src/modes/controllers/command-controller.ts +20 -8
  366. package/src/modes/controllers/extension-ui-controller.ts +56 -257
  367. package/src/modes/controllers/input-controller.ts +10 -0
  368. package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
  369. package/src/modes/controllers/selector-controller.ts +177 -72
  370. package/src/modes/controllers/stt-controller.ts +3 -3
  371. package/src/modes/interactive-mode.ts +88 -16
  372. package/src/modes/print-mode.ts +35 -6
  373. package/src/modes/runtime-init.ts +21 -68
  374. package/src/modes/types.ts +1 -0
  375. package/src/modes/utils/injected-user-submission.ts +25 -0
  376. package/src/modes/utils/terminal-bell.ts +15 -1
  377. package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
  378. package/src/prompts/agent-fragments/restricted-bash.md +1 -1
  379. package/src/prompts/agents/critic.md +1 -1
  380. package/src/prompts/system/rlm-research.md +1 -1
  381. package/src/prompts/system/system-prompt.md +0 -2
  382. package/src/prompts/tools/bash.md +7 -1
  383. package/src/prompts/tools/browser.md +1 -1
  384. package/src/prompts/tools/cron.md +6 -6
  385. package/src/prompts/tools/read.md +0 -2
  386. package/src/prompts/tools/skill-discovery.md +4 -2
  387. package/src/runtime-mcp/client.ts +427 -23
  388. package/src/runtime-mcp/config.ts +37 -5
  389. package/src/runtime-mcp/manager-pool.test.ts +56 -0
  390. package/src/runtime-mcp/manager.ts +52 -2
  391. package/src/runtime-mcp/oauth-discovery.ts +13 -0
  392. package/src/runtime-mcp/oauth-flow.ts +46 -1
  393. package/src/runtime-mcp/pool-key.ts +5 -1
  394. package/src/runtime-mcp/pool.test.ts +9 -0
  395. package/src/runtime-mcp/protocol.test.ts +353 -0
  396. package/src/runtime-mcp/protocol.ts +624 -0
  397. package/src/runtime-mcp/scope-config.ts +78 -0
  398. package/src/runtime-mcp/tool-bridge.ts +44 -10
  399. package/src/runtime-mcp/transports/http.ts +84 -13
  400. package/src/runtime-mcp/types.ts +123 -12
  401. package/src/sdk/acp/adapter.ts +328 -97
  402. package/src/sdk/broker/broker.ts +160 -741
  403. package/src/sdk/broker/ensure.ts +9 -1
  404. package/src/sdk/broker/lifecycle.ts +510 -116
  405. package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
  406. package/src/sdk/broker/process-incarnation.ts +19 -0
  407. package/src/sdk/broker/session-index.ts +516 -117
  408. package/src/sdk/broker/startup-failure.ts +28 -5
  409. package/src/sdk/broker/transport.ts +1 -13
  410. package/src/sdk/bus/chat-daemon-cli.ts +4 -2
  411. package/src/sdk/bus/chat-daemon-control.ts +67 -6
  412. package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
  413. package/src/sdk/bus/config.ts +13 -0
  414. package/src/sdk/bus/conversation-store.ts +59 -171
  415. package/src/sdk/bus/daemon-paths.ts +20 -0
  416. package/src/sdk/bus/discord-conversation.ts +2 -0
  417. package/src/sdk/bus/discord-daemon.ts +524 -126
  418. package/src/sdk/bus/discord-live-provider.ts +206 -79
  419. package/src/sdk/bus/existing-thread-readiness.ts +4 -97
  420. package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
  421. package/src/sdk/bus/index.ts +2480 -456
  422. package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
  423. package/src/sdk/bus/lifecycle-commands.ts +2 -2
  424. package/src/sdk/bus/managed-daemon.ts +2 -145
  425. package/src/sdk/bus/notification-service.ts +196 -0
  426. package/src/sdk/bus/operator-runtime.ts +1 -1
  427. package/src/sdk/bus/prompt-reconciliation.ts +24 -15
  428. package/src/sdk/bus/reconciliation-store.ts +553 -24
  429. package/src/sdk/bus/session-control.ts +49 -3
  430. package/src/sdk/bus/slack-conversation.ts +4 -0
  431. package/src/sdk/bus/slack-daemon.ts +733 -134
  432. package/src/sdk/bus/slack-live-provider.ts +65 -15
  433. package/src/sdk/bus/slack-provider.ts +4 -0
  434. package/src/sdk/bus/slack-thread-binding.ts +9 -104
  435. package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
  436. package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
  437. package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
  438. package/src/sdk/bus/telegram-daemon-control.ts +3 -13
  439. package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
  440. package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
  441. package/src/sdk/bus/telegram-daemon.ts +2552 -2280
  442. package/src/sdk/bus/telegram-reference.ts +1 -226
  443. package/src/sdk/bus/telegram-setup.ts +2 -2
  444. package/src/sdk/bus/threaded-render.ts +1 -0
  445. package/src/sdk/bus/topic-registry.ts +279 -146
  446. package/src/sdk/cli/rows.ts +2 -35
  447. package/src/sdk/cli/session-cli.ts +776 -700
  448. package/src/sdk/client/client.ts +892 -1
  449. package/src/sdk/host/control/dispatch.ts +93 -58
  450. package/src/sdk/host/control/index.ts +1 -1
  451. package/src/sdk/host/control/operations.ts +18 -10
  452. package/src/sdk/host/control/runtime-gate.ts +40 -0
  453. package/src/sdk/host/host.ts +63 -12
  454. package/src/sdk/host/query/handlers.ts +66 -7
  455. package/src/sdk/host/reverse-leases.ts +2 -2
  456. package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
  457. package/src/sdk/host/session-runtime.test.ts +2787 -34
  458. package/src/sdk/host/session-runtime.ts +1489 -101
  459. package/src/sdk/host/surface-policy.ts +12 -8
  460. package/src/sdk/host/types.ts +1 -1
  461. package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
  462. package/src/sdk/host/websocket-transport.ts +85 -50
  463. package/src/sdk/index.ts +2 -1
  464. package/src/sdk/lifecycle/broker-client.ts +53 -0
  465. package/src/sdk/lifecycle/client.ts +234 -0
  466. package/src/sdk/lifecycle/index.ts +3 -0
  467. package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
  468. package/src/sdk/lifecycle/service.ts +720 -0
  469. package/src/sdk/mcp/server.ts +226 -188
  470. package/src/sdk/prompt-deadline-lease.ts +55 -0
  471. package/src/sdk/prompt-deadline-manager.ts +148 -0
  472. package/src/sdk/prompt-status.ts +11 -3
  473. package/src/sdk/protocol/operation-inventory.generated.json +272 -129
  474. package/src/sdk/protocol/operation-registry.ts +71 -8
  475. package/src/sdk/receipt-state.ts +43 -0
  476. package/src/sdk/reconciliation-extensions.ts +14 -0
  477. package/src/sdk/router/index.ts +1 -0
  478. package/src/sdk/router/session-router.ts +1658 -0
  479. package/src/sdk/session-list.ts +93 -0
  480. package/src/sdk/session-reconnect.ts +45 -1
  481. package/src/sdk/session.ts +716 -120
  482. package/src/sdk/transport/serve-cli.ts +18 -34
  483. package/src/session/account-inventory.ts +603 -0
  484. package/src/session/agent-session.ts +2857 -582
  485. package/src/session/agent-storage.ts +35 -0
  486. package/src/session/blob-store.ts +32 -1
  487. package/src/session/coordinator-tool-label.ts +40 -0
  488. package/src/session/internal/managed-session-scope.ts +4 -0
  489. package/src/session/internal/managed-session-storage.ts +173 -12
  490. package/src/session/messages.ts +1 -1
  491. package/src/session/secure-token-file.ts +80 -0
  492. package/src/session/session-manager.ts +730 -58
  493. package/src/session/session-storage.ts +25 -16
  494. package/src/session/startup-auth-config.ts +297 -0
  495. package/src/session/terminal-abort.ts +1253 -0
  496. package/src/session/yield-queue.ts +57 -15
  497. package/src/session-import/claude.ts +334 -0
  498. package/src/session-import/codex.ts +1033 -0
  499. package/src/session-import/command.ts +77 -0
  500. package/src/session-import/detect.ts +133 -0
  501. package/src/session-import/index.ts +7 -0
  502. package/src/session-import/provider-codex.ts +327 -0
  503. package/src/session-import/provider-service.ts +457 -0
  504. package/src/session-import/redact.ts +128 -0
  505. package/src/session-import/service.ts +1264 -0
  506. package/src/session-import/types.ts +148 -0
  507. package/src/setup/paseo/check.ts +213 -0
  508. package/src/setup/paseo/install-saga.ts +293 -0
  509. package/src/setup/paseo/json-publisher.ts +263 -0
  510. package/src/setup/paseo/orchestration-preferences.ts +86 -0
  511. package/src/setup/paseo/paseo-ownership.ts +224 -0
  512. package/src/setup/paseo/paseo-setup.ts +253 -0
  513. package/src/setup/paseo/provider-config.ts +139 -0
  514. package/src/setup/paseo/remove.ts +183 -0
  515. package/src/setup/paseo/result-types.ts +79 -0
  516. package/src/setup/paseo/setup-deps.ts +175 -0
  517. package/src/setup/paseo/skills-bridge.ts +260 -0
  518. package/src/skill-state/active-state.ts +21 -11
  519. package/src/slash-commands/acp-builtins.ts +9 -1
  520. package/src/slash-commands/builtin-registry.ts +98 -16
  521. package/src/slash-commands/helpers/credential-switch.ts +143 -0
  522. package/src/slash-commands/helpers/mcp.ts +9 -3
  523. package/src/slash-commands/helpers/usage-report.ts +61 -56
  524. package/src/slash-commands/types.ts +7 -2
  525. package/src/task/executor.ts +30 -11
  526. package/src/task/index.ts +66 -7
  527. package/src/task/render.ts +23 -9
  528. package/src/tools/ask-answer-registry.ts +23 -7
  529. package/src/tools/ask.ts +8 -4
  530. package/src/tools/bash-sleep-advisory.ts +115 -0
  531. package/src/tools/bash.ts +98 -18
  532. package/src/tools/browser/attach.ts +71 -3
  533. package/src/tools/browser/launch.ts +86 -13
  534. package/src/tools/browser/profile-discovery.ts +57 -7
  535. package/src/tools/browser/render.ts +8 -1
  536. package/src/tools/browser.ts +130 -21
  537. package/src/tools/computer.enforcement.test.ts +1 -1
  538. package/src/tools/computer.ts +3 -2
  539. package/src/tools/cron.ts +12 -1
  540. package/src/tools/image-gen.ts +27 -16
  541. package/src/tools/index.ts +8 -0
  542. package/src/tools/job.ts +33 -6
  543. package/src/tools/monitor.ts +41 -2
  544. package/src/tools/skill-discovery.ts +21 -29
  545. package/src/tools/subagent.ts +142 -24
  546. package/src/tools/tool-catalog.generated.ts +6 -6
  547. package/src/tools/ultragoal-ask-guard.ts +10 -3
  548. package/src/utils/herdr-pane.ts +345 -0
  549. package/src/utils/title-generator.ts +2 -0
  550. package/src/web/scrapers/index.ts +6 -4
  551. package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
  552. package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
  553. package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
  554. package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
  555. package/dist/types/runtime/lazy-service.test.d.ts +0 -1
  556. package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
  557. package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
  558. package/dist/types/runtime-mcp/config.test.d.ts +0 -1
  559. package/dist/types/runtime-mcp/http.test.d.ts +0 -1
  560. package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
  561. package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
  562. package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
  563. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
  564. package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
  565. package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
  566. package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
  567. package/dist/types/sdk/elevation/audit.d.ts +0 -93
  568. package/dist/types/sdk/elevation/capability.d.ts +0 -3
  569. package/dist/types/sdk/elevation/digest.d.ts +0 -72
  570. package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
  571. package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
  572. package/dist/types/sdk/elevation/owner.d.ts +0 -48
  573. package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
  574. package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
  575. package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
  576. package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
  577. package/dist/types/session/auth-broker-config.d.ts +0 -13
  578. package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
  579. package/dist/types/skills/skills.test.d.ts +0 -1
  580. package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
  581. package/dist/types/task/token-log.test.d.ts +0 -1
  582. package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
  583. package/dist/types/tools/descriptors.test.d.ts +0 -1
  584. package/scripts/g005-daemon-smoke.ts +0 -180
  585. package/scripts/g011-daemon-path-smoke.ts +0 -153
  586. package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
  587. package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
  588. package/src/sdk/bus/telegram-cli.ts +0 -212
  589. package/src/sdk/elevation/allowlist.ts +0 -54
  590. package/src/sdk/elevation/audit.ts +0 -208
  591. package/src/sdk/elevation/capability.ts +0 -41
  592. package/src/sdk/elevation/digest.ts +0 -129
  593. package/src/sdk/elevation/dispatch-receipt.ts +0 -184
  594. package/src/sdk/elevation/grant-ledger.ts +0 -1142
  595. package/src/sdk/elevation/owner.ts +0 -109
  596. package/src/session/auth-broker-config.ts +0 -109
  597. /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
  598. /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
  599. /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
@@ -0,0 +1,278 @@
1
+ /**
2
+ * MCP protocol generation model ("MCP v2", specification 2026-07-28).
3
+ *
4
+ * Canonical authority (verified against the primary sources, not secondary
5
+ * summaries):
6
+ * - https://modelcontextprotocol.io/specification/2026-07-28/basic
7
+ * - https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http
8
+ * - https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning
9
+ * - https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/mrtr
10
+ * - https://modelcontextprotocol.io/specification/2026-07-28/server/discover
11
+ * - https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/caching
12
+ * - schema source of truth: modelcontextprotocol/specification schema/2026-07-28/schema.ts
13
+ *
14
+ * 2026-07-28 ("modern" era) removes the initialize/initialized handshake,
15
+ * protocol sessions (`Mcp-Session-Id`), the standalone GET SSE stream, and
16
+ * `Last-Event-ID` replay from the core request path. Every request carries its
17
+ * protocol version, client identity, and client capabilities in `_meta`, and
18
+ * Streamable HTTP mirrors selected fields into `MCP-Protocol-Version`,
19
+ * `Mcp-Method`, and `Mcp-Name` headers.
20
+ */
21
+ /** The modern (stateless) protocol revision implemented by this client. */
22
+ export declare const MCP_PROTOCOL_VERSION_2026_07_28 = "2026-07-28";
23
+ /** Legacy (initialize handshake) revision this client speaks for compatibility. */
24
+ export declare const MCP_PROTOCOL_VERSION_LEGACY = "2025-03-26";
25
+ /** Modern-era revisions this client can speak, most preferred first. */
26
+ export declare const MCP_MODERN_PROTOCOL_VERSIONS: readonly string[];
27
+ /** Protocol generation: modern = per-request metadata (2026-07-28+), legacy = initialize handshake. */
28
+ export type MCPProtocolEra = "modern" | "legacy";
29
+ /**
30
+ * Per-server protocol preference from configuration.
31
+ * - `auto`: attempt modern first; bounded, observable legacy fallback per the
32
+ * specification's era-detection rules. Default when unset.
33
+ * - `2026-07-28`: strict modern-only; never initializes a legacy session.
34
+ * - `legacy`: bounded compatibility mode; always uses the legacy handshake.
35
+ */
36
+ export type MCPProtocolPreference = "auto" | "2026-07-28" | "legacy";
37
+ export declare const MCP_PROTOCOL_PREFERENCES: readonly MCPProtocolPreference[];
38
+ export declare function isMCPProtocolPreference(value: unknown): value is MCPProtocolPreference;
39
+ /** Resolve the effective preference; `auto` when unset. */
40
+ export declare function resolveMCPProtocolPreference(value: MCPProtocolPreference | undefined): MCPProtocolPreference;
41
+ /** True when a version string names a modern-era revision (date-based, >= 2026-07-28). */
42
+ export declare function isModernProtocolVersion(version: string): boolean;
43
+ /** Headers do not match the request body, or required headers are missing/malformed. */
44
+ export declare const MCP_ERROR_HEADER_MISMATCH = -32020;
45
+ /** The request requires a client capability the client did not declare. */
46
+ export declare const MCP_ERROR_MISSING_REQUIRED_CLIENT_CAPABILITY = -32021;
47
+ /** The server does not implement the requested protocol version. */
48
+ export declare const MCP_ERROR_UNSUPPORTED_PROTOCOL_VERSION = -32022;
49
+ /** Standard JSON-RPC method-not-found (modern servers pair it with HTTP 404). */
50
+ export declare const JSONRPC_ERROR_METHOD_NOT_FOUND = -32601;
51
+ /** Standard JSON-RPC invalid-params (modern servers reject missing `_meta` with it). */
52
+ export declare const JSONRPC_ERROR_INVALID_PARAMS = -32602;
53
+ export declare const MCP_META_PROTOCOL_VERSION = "io.modelcontextprotocol/protocolVersion";
54
+ export declare const MCP_META_CLIENT_INFO = "io.modelcontextprotocol/clientInfo";
55
+ export declare const MCP_META_CLIENT_CAPABILITIES = "io.modelcontextprotocol/clientCapabilities";
56
+ export declare const MCP_META_SERVER_INFO = "io.modelcontextprotocol/serverInfo";
57
+ /** Client identity advertised in modern per-request `_meta`. */
58
+ export interface MCPModernClientContext {
59
+ protocolVersion: string;
60
+ clientInfo: {
61
+ name: string;
62
+ version: string;
63
+ };
64
+ /** Capabilities relevant to requests, e.g. `{ roots: {...}, elicitation: {...} }`. */
65
+ capabilities: Record<string, unknown>;
66
+ }
67
+ /**
68
+ * Build the `_meta` object every modern request MUST carry. Callers merge this
69
+ * into `params._meta`, preserving any pre-existing keys (e.g. `progressToken`).
70
+ */
71
+ export declare function buildModernRequestMeta(context: MCPModernClientContext): Record<string, unknown>;
72
+ /** Merge modern `_meta` into request params without clobbering existing keys. */
73
+ export declare function withModernMeta(params: Record<string, unknown>, context: MCPModernClientContext): Record<string, unknown>;
74
+ /** RFC 9110 field-value safe set: visible ASCII, space, and horizontal tab. */
75
+ export declare function isPlainAsciiHeaderValue(value: string): boolean;
76
+ /**
77
+ * Encode a value for `Mcp-Name` / `Mcp-Param-{Name}` headers: plain ASCII when
78
+ * safe, otherwise the `=?base64?<base64-utf8>?=` sentinel. Values already
79
+ * matching the sentinel pattern MUST also be encoded to avoid ambiguity.
80
+ */
81
+ export declare function encodeMcpHeaderValue(value: string): string;
82
+ /**
83
+ * Build the mirrored headers a modern Streamable HTTP request MUST carry:
84
+ * `MCP-Protocol-Version` (must equal the `_meta` version), `Mcp-Method`, and —
85
+ * for `tools/call`, `resources/read`, `prompts/get` — `Mcp-Name`.
86
+ */
87
+ export declare function buildModernMcpHeaders(input: {
88
+ protocolVersion: string;
89
+ method: string;
90
+ params?: Record<string, unknown>;
91
+ }): Record<string, string>;
92
+ /** A validated binding from a tool inputSchema property to an `Mcp-Param-*` header. */
93
+ export interface McpHeaderParamBinding {
94
+ /** Exact property path (chain of `properties` keys) in the call arguments. */
95
+ propertyPath: string[];
96
+ /** The `name` portion of the `Mcp-Param-{name}` header. */
97
+ headerName: string;
98
+ /** Primitive type of the annotated property. */
99
+ propertyType: "string" | "integer" | "boolean";
100
+ }
101
+ export interface XMcpHeaderBindingsResult {
102
+ bindings: McpHeaderParamBinding[];
103
+ /** Human-readable reasons the tool definition is invalid for HTTP mirroring. */
104
+ violations: string[];
105
+ }
106
+ /**
107
+ * Collect `x-mcp-header` bindings from a tool `inputSchema`, enforcing the
108
+ * specification constraints: field-name token syntax, primitive (non-number)
109
+ * types, case-insensitive uniqueness, and static reachability via `properties`
110
+ * chains only. Any violation invalidates the tool definition for HTTP clients.
111
+ */
112
+ export declare function collectXMcpHeaderBindings(inputSchema: unknown): XMcpHeaderBindingsResult;
113
+ /**
114
+ * Extract `Mcp-Param-{name}` headers from tool call arguments per validated
115
+ * bindings. Missing or null values omit the header, per the specification.
116
+ */
117
+ export declare function buildXMcpParamHeaders(bindings: readonly McpHeaderParamBinding[], args: Record<string, unknown>): Record<string, string>;
118
+ /** Failure classes for a modern probe request. */
119
+ export type MCPProbeFailureClass =
120
+ /** Recognized modern JSON-RPC error: the server speaks a modern revision. */
121
+ "modern-error"
122
+ /** 4xx without a recognized modern error body: legacy-era server signal. */
123
+ | "legacy-signal"
124
+ /** 401/403 (and WWW-Authenticate challenges): never a downgrade signal. */
125
+ | "auth-failure"
126
+ /** Anything else (5xx, network, malformed payload): not a downgrade signal. */
127
+ | "other-failure";
128
+ export interface MCPProbeClassification {
129
+ class: MCPProbeFailureClass;
130
+ /** Protocol-defined modern error code when recognized. */
131
+ modernErrorCode?: number;
132
+ /** `data.supported` from an UnsupportedProtocolVersionError, when present. */
133
+ supportedVersions?: string[];
134
+ /** `data.requested` from an UnsupportedProtocolVersionError, when present. */
135
+ requestedVersion?: string;
136
+ }
137
+ /**
138
+ * Classify a failed modern probe per the specification's era-detection rules:
139
+ * recognized modern JSON-RPC errors identify a modern server; a 400/404/405
140
+ * without one identifies a legacy server; auth and security failures are never
141
+ * era signals and must never authorize a downgrade.
142
+ */
143
+ export declare function classifyMcpProbeFailure(status: number, parsedBody: unknown): MCPProbeClassification;
144
+ /** Lifecycle state of a protocol feature, mirroring the specification's feature lifecycle. */
145
+ export type MCPFeatureLifecycle = "active" | "deprecated" | "removed";
146
+ export interface MCPProtocolFeatureState {
147
+ feature: string;
148
+ lifecycle: MCPFeatureLifecycle;
149
+ /** Secret-free explanation shown in diagnostics. */
150
+ note?: string;
151
+ }
152
+ /** How the effective era/version was reached. */
153
+ export type MCPNegotiationState =
154
+ /** No negotiation attempt has completed yet. */
155
+ "pending"
156
+ /** Modern era confirmed (probe or direct modern request succeeded). */
157
+ | "modern"
158
+ /** Modern era after selecting a mutually supported version from UnsupportedProtocolVersionError. */
159
+ | "modern-version-retry"
160
+ /** Legacy era via era detection (legacy server signal) under `auto`. */
161
+ | "legacy-fallback"
162
+ /** Legacy era because configuration forced it (`legacy`) or the transport is stdio. */
163
+ | "legacy-forced"
164
+ /** Negotiation failed; the connection could not be established. */
165
+ | "failed";
166
+ /** Machine-readable reasons a legacy fallback was engaged (never auth/security driven). */
167
+ export type MCPDowngradeReason =
168
+ /** `protocol: "legacy"` configured explicitly. */
169
+ "preference-legacy"
170
+ /** stdio transport has no per-request HTTP signals; legacy handshake retained. */
171
+ | "stdio-transport"
172
+ /** Probe returned 400/404/405 without a recognized modern error body. */
173
+ | "legacy-server-signal"
174
+ /** A modern server advertised only legacy-era versions in `supported`. */
175
+ | "server-advertised-legacy-only";
176
+ /**
177
+ * One authoritative, secret-free observation of a server's negotiated protocol
178
+ * state. Consumed by `/extensions` (#4291) and customization doctor (#4288);
179
+ * contains no credentials, tokens, metadata documents, or header values.
180
+ */
181
+ export interface MCPProtocolObservation {
182
+ /** Configured preference (defaults to `auto`). */
183
+ preference: MCPProtocolPreference;
184
+ /** Effective protocol version in use, once negotiated. */
185
+ effectiveVersion: string | null;
186
+ /** Effective era, once negotiated. */
187
+ era: MCPProtocolEra | null;
188
+ /** How the effective state was reached. */
189
+ negotiation: MCPNegotiationState;
190
+ /** Why a legacy fallback engaged; null unless `negotiation` is a legacy state. */
191
+ downgradeReason: MCPDowngradeReason | null;
192
+ /** Versions the server advertised (via server/discover or version errors). */
193
+ supportedVersions: string[];
194
+ /** Self-reported server identity (display only; never security-relevant). */
195
+ serverInfo: {
196
+ name: string;
197
+ version: string;
198
+ } | null;
199
+ /** Lifecycle visibility for protocol features (legacy session behavior, etc). */
200
+ features: MCPProtocolFeatureState[];
201
+ /** v2 capability state observed for this connection. */
202
+ capabilities: {
203
+ /** server/discover answered (optional per spec; absence does not block calls). */
204
+ discover: "yes" | "no" | "unknown";
205
+ /** Server advertised tools capability. */
206
+ tools: boolean;
207
+ /** Server advertised resources capability. */
208
+ resources: boolean;
209
+ /** Server advertised prompts capability. */
210
+ prompts: boolean;
211
+ };
212
+ }
213
+ /** Initial observation before negotiation completes. */
214
+ export declare function createMCPProtocolObservation(preference: MCPProtocolPreference): MCPProtocolObservation;
215
+ /** Legacy session/transport features reported as deprecated under the feature lifecycle. */
216
+ export declare function legacyEraFeatureStates(): MCPProtocolFeatureState[];
217
+ /** Finalize an observation for a negotiated modern connection. */
218
+ export declare function modernEraObservation(input: {
219
+ preference: MCPProtocolPreference;
220
+ effectiveVersion: string;
221
+ negotiation: "modern" | "modern-version-retry";
222
+ supportedVersions?: string[];
223
+ serverInfo?: {
224
+ name: string;
225
+ version: string;
226
+ } | null;
227
+ capabilities?: {
228
+ tools?: boolean;
229
+ resources?: boolean;
230
+ prompts?: boolean;
231
+ };
232
+ discover: "yes" | "no" | "unknown";
233
+ }): MCPProtocolObservation;
234
+ /** Finalize an observation for a negotiated legacy connection. */
235
+ export declare function legacyEraObservation(input: {
236
+ preference: MCPProtocolPreference;
237
+ effectiveVersion: string;
238
+ negotiation: "legacy-fallback" | "legacy-forced";
239
+ downgradeReason: MCPDowngradeReason;
240
+ serverInfo?: {
241
+ name: string;
242
+ version: string;
243
+ } | null;
244
+ capabilities?: {
245
+ tools?: boolean;
246
+ resources?: boolean;
247
+ prompts?: boolean;
248
+ };
249
+ }): MCPProtocolObservation;
250
+ /** Cache scope hint: public results may cross authorization contexts; private must not. */
251
+ export type MCPCacheScope = "public" | "private";
252
+ /** Server-supplied caching hints carried on cacheable `complete` results. */
253
+ export interface MCPCacheHints {
254
+ /** Milliseconds the result may be considered fresh; absent/negative means 0. */
255
+ ttlMs?: number;
256
+ cacheScope?: MCPCacheScope;
257
+ }
258
+ /** Normalize raw hints: negative ttlMs is treated as 0 per the specification. */
259
+ export declare function normalizeMcpCacheHints(raw: unknown): MCPCacheHints | undefined;
260
+ /** Result type marker for interim input requests. */
261
+ export declare const MCP_RESULT_TYPE_INPUT_REQUIRED = "input_required";
262
+ export declare const MCP_RESULT_TYPE_COMPLETE = "complete";
263
+ /** Input request methods a server may embed in an InputRequiredResult. */
264
+ export declare const MCP_INPUT_REQUEST_METHODS: Set<string>;
265
+ export interface MCPInputRequiredData {
266
+ inputRequests: Record<string, {
267
+ method: string;
268
+ params?: Record<string, unknown>;
269
+ }>;
270
+ requestState?: string;
271
+ }
272
+ /**
273
+ * Extract MRTR input data from a JSON-RPC result. Returns null when the result
274
+ * is a normal `complete` result (including legacy results with no resultType,
275
+ * which the specification requires clients to treat as `"complete"`).
276
+ * Throws on a malformed `input_required` payload.
277
+ */
278
+ export declare function extractMcpInputRequired(result: unknown): MCPInputRequiredData | null;
@@ -0,0 +1,29 @@
1
+ import { type UpsertMCPServerResult } from "./config-writer";
2
+ import type { MCPConfigFile, MCPServerConfig } from "./types";
3
+ export type MCPConfigScope = "user" | "project";
4
+ /** Resolved scope + path + parsed config (provenance for diagnostics). */
5
+ export interface ScopeMCPConfigSnapshot {
6
+ scope: MCPConfigScope;
7
+ path: string;
8
+ config: MCPConfigFile;
9
+ }
10
+ /** Resolve the canonical file path for a native MCP config scope. */
11
+ export declare function resolveScopeMCPConfigPath(scope: MCPConfigScope, cwd?: string): string;
12
+ /** Read a native MCP config for a scope. Returns an empty config when absent. */
13
+ export declare function readScopeMCPConfig(scope: MCPConfigScope, cwd?: string): Promise<ScopeMCPConfigSnapshot>;
14
+ /** Add a server, or overwrite an existing one only when `force` is set. */
15
+ export declare function upsertScopeMCPServer(scope: MCPConfigScope, name: string, config: MCPServerConfig, options?: {
16
+ force?: boolean;
17
+ }, cwd?: string): Promise<ScopeMCPConfigSnapshot & {
18
+ result: UpsertMCPServerResult;
19
+ }>;
20
+ /** Remove a server from a scope (throws when the name does not exist). */
21
+ export declare function removeScopeMCPServer(scope: MCPConfigScope, name: string, cwd?: string): Promise<ScopeMCPConfigSnapshot>;
22
+ /** Get a specific server config from a scope. */
23
+ export declare function getScopeMCPServer(scope: MCPConfigScope, name: string, cwd?: string): Promise<{
24
+ scope: MCPConfigScope;
25
+ path: string;
26
+ config: MCPServerConfig | undefined;
27
+ }>;
28
+ /** Read the disabled-servers denylist for a scope. */
29
+ export declare function readScopeDisabledServers(scope: MCPConfigScope, cwd?: string): Promise<string[]>;
@@ -9,10 +9,20 @@ import type { SourceMeta } from "../capability/types";
9
9
  import type { CustomTool, CustomToolContext, CustomToolResult, RenderResultOptions } from "../extensibility/custom-tools/types";
10
10
  import type { Theme } from "../modes/theme/theme";
11
11
  import type { MCPPoolLease } from "./pool";
12
- import type { MCPContent, MCPServerConnection, MCPToolDefinition } from "./types";
12
+ import type { MCPContent, MCPInputRequestHandler, MCPServerConnection, MCPToolDefinition } from "./types";
13
13
  /** Reconnect callback: tears down stale connection, returns new one or null. */
14
14
  export type MCPReconnect = () => Promise<MCPServerConnection | null>;
15
15
  type MCPToolTarget = MCPServerConnection | MCPPoolLease;
16
+ /** Options shared by MCPTool and DeferredMCPTool. */
17
+ export interface MCPToolOptions {
18
+ /** Shared lease policy: never retry the original request after transport/auth failure. */
19
+ noReplay?: boolean;
20
+ /**
21
+ * Lazy resolver for the modern MRTR `input_required` handler, registered by the
22
+ * owning manager/runtime. Resolved per call so late registration still applies.
23
+ */
24
+ inputHandler?: () => MCPInputRequestHandler | undefined;
25
+ }
16
26
  export declare function isRetriableConnectionError(error: unknown): boolean;
17
27
  /** Details included in MCP tool results for rendering */
18
28
  export interface MCPToolDetails {
@@ -57,12 +67,8 @@ export declare class MCPTool implements CustomTool<TSchema, MCPToolDetails> {
57
67
  readonly mcpServerName: string;
58
68
  private connection;
59
69
  /** Create MCPTool instances for all tools from an MCP server lease/connection. */
60
- static fromTools(target: MCPToolTarget, tools: MCPToolDefinition[], reconnect?: MCPReconnect, options?: {
61
- noReplay?: boolean;
62
- }): MCPTool[];
63
- constructor(target: MCPToolTarget, tool: MCPToolDefinition, reconnect?: MCPReconnect | undefined, options?: {
64
- noReplay?: boolean;
65
- });
70
+ static fromTools(target: MCPToolTarget, tools: MCPToolDefinition[], reconnect?: MCPReconnect, options?: MCPToolOptions): MCPTool[];
71
+ constructor(target: MCPToolTarget, tool: MCPToolDefinition, reconnect?: MCPReconnect | undefined, options?: MCPToolOptions);
66
72
  renderCall(args: unknown, _options: RenderResultOptions, theme: Theme): import("@gajae-code/tui").Component;
67
73
  renderResult(result: CustomToolResult<MCPToolDetails>, options: RenderResultOptions, theme: Theme, args?: unknown): import("@gajae-code/tui").Component;
68
74
  execute(_toolCallId: string, params: unknown, _onUpdate: AgentToolUpdateCallback<MCPToolDetails> | undefined, _ctx: CustomToolContext, signal?: AbortSignal): Promise<CustomToolResult<MCPToolDetails>>;
@@ -85,12 +91,8 @@ export declare class DeferredMCPTool implements CustomTool<TSchema, MCPToolDetai
85
91
  /** Server name */
86
92
  readonly mcpServerName: string;
87
93
  /** Create DeferredMCPTool instances for all tools from an MCP server */
88
- static fromTools(serverName: string, tools: MCPToolDefinition[], getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect, options?: {
89
- noReplay?: boolean;
90
- }): DeferredMCPTool[];
91
- constructor(serverName: string, tool: MCPToolDefinition, getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect | undefined, options?: {
92
- noReplay?: boolean;
93
- });
94
+ static fromTools(serverName: string, tools: MCPToolDefinition[], getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect, options?: MCPToolOptions): DeferredMCPTool[];
95
+ constructor(serverName: string, tool: MCPToolDefinition, getConnection: () => Promise<MCPServerConnection>, source?: SourceMeta, reconnect?: MCPReconnect | undefined, options?: MCPToolOptions);
94
96
  renderCall(args: unknown, _options: RenderResultOptions, theme: Theme): import("@gajae-code/tui").Component;
95
97
  renderResult(result: CustomToolResult<MCPToolDetails>, options: RenderResultOptions, theme: Theme, args?: unknown): import("@gajae-code/tui").Component;
96
98
  execute(_toolCallId: string, params: unknown, _onUpdate: AgentToolUpdateCallback<MCPToolDetails> | undefined, _ctx: CustomToolContext, signal?: AbortSignal): Promise<CustomToolResult<MCPToolDetails>>;
@@ -1,4 +1,5 @@
1
1
  import type { MCPHttpServerConfig, MCPRequestOptions, MCPSseServerConfig, MCPTransport } from "../../runtime-mcp/types";
2
+ import { type MCPModernClientContext, type MCPProtocolEra } from "../protocol";
2
3
  /**
3
4
  * HTTP transport for MCP servers.
4
5
  * Uses POST for requests, supports SSE responses.
@@ -16,6 +17,14 @@ export declare class HttpTransport implements MCPTransport {
16
17
  get connected(): boolean;
17
18
  get closeBeforeReconnect(): false;
18
19
  get url(): string;
20
+ /** Negotiated protocol era (defaults to legacy until the client negotiates). */
21
+ get era(): MCPProtocolEra;
22
+ /**
23
+ * Select the protocol era. Modern mode requires the per-request client
24
+ * context (protocol version, identity, capabilities) mirrored into `_meta`
25
+ * and HTTP headers on every request.
26
+ */
27
+ setProtocolMode(era: MCPProtocolEra, modernContext?: MCPModernClientContext): void;
19
28
  /**
20
29
  * Mark transport as connected.
21
30
  * HTTP doesn't need persistent connection, but we track state.
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * MCP (Model Context Protocol) type definitions.
3
3
  *
4
- * Based on MCP specification 2025-03-26:
5
- * https://modelcontextprotocol.io/specification/2025-03-26/
4
+ * Legacy sessionful surface based on MCP specification 2025-03-26; the modern
5
+ * stateless generation (2026-07-28, "MCP v2") is modeled in ./protocol.ts.
6
+ * https://modelcontextprotocol.io/specification/2026-07-28/
6
7
  */
7
8
  import type { SourceMeta } from "../capability/types";
9
+ import type { MCPCacheHints, MCPProtocolObservation, MCPProtocolPreference } from "./protocol";
8
10
  export interface JsonRpcRequest {
9
11
  jsonrpc: "2.0";
10
12
  id: string | number;
@@ -47,15 +49,23 @@ export interface MCPServerConfigBase {
47
49
  enabled?: boolean;
48
50
  /**
49
51
  * Whether an explicit runtime MCP consumer should connect this server
50
- * automatically when that consumer starts (default: true). Normal standalone
51
- * `gjc`, `gjc --tmux`, and print-mode sessions do not consume `gjc mcp`
52
- * registrations today.
52
+ * automatically when that consumer starts (default: true). Ordinary
53
+ * standalone `gjc`, `gjc --tmux`, and print-mode sessions honor autoload for
54
+ * conventional registrations; `autoload: false` keeps a server configured
55
+ * for on-demand `/mcp` connection. `--no-mcp` opts a session out entirely.
53
56
  */
54
57
  autoload?: boolean;
55
58
  /** Connection timeout in milliseconds (default: 30000) */
56
59
  timeout?: number;
57
60
  /** Pool identity mode. W2 defaults to one physical connection per session. */
58
61
  sharing?: "per-session" | "shared";
62
+ /**
63
+ * Protocol preference for remote (http/sse) servers: `auto` (default) negotiates
64
+ * the modern 2026-07-28 stateless protocol first with a bounded, observable
65
+ * legacy fallback; `2026-07-28` is strict modern-only; `legacy` forces the
66
+ * bounded compatibility handshake. Ignored by stdio servers (always legacy-era).
67
+ */
68
+ protocol?: MCPProtocolPreference;
59
69
  /** Authentication configuration (optional) */
60
70
  auth?: MCPAuthConfig;
61
71
  /** OAuth configuration for servers requiring explicit client credentials */
@@ -113,6 +123,10 @@ export interface MCPClientCapabilities {
113
123
  listChanged?: boolean;
114
124
  };
115
125
  sampling?: Record<string, never>;
126
+ /** Form-mode elicitation support (modern MRTR `elicitation/create` input requests). */
127
+ elicitation?: {
128
+ form?: Record<string, never>;
129
+ };
116
130
  experimental?: Record<string, unknown>;
117
131
  }
118
132
  /** MCP server capabilities */
@@ -155,7 +169,7 @@ export interface MCPToolDefinition {
155
169
  };
156
170
  }
157
171
  /** tools/list response */
158
- export interface MCPToolsListResult {
172
+ export interface MCPToolsListResult extends MCPCacheHints {
159
173
  tools: MCPToolDefinition[];
160
174
  nextCursor?: string;
161
175
  }
@@ -195,12 +209,66 @@ export interface MCPToolCallResult {
195
209
  export declare class MCPExpectedFailure extends Error {
196
210
  constructor(cause?: unknown);
197
211
  }
212
+ /** HTTP-level request failure carrying structured detail for era classification. */
213
+ export declare class MCPHttpRequestError extends Error {
214
+ /** HTTP status code. */
215
+ readonly status: number;
216
+ /** Parsed JSON body when the error payload was JSON; undefined otherwise. */
217
+ readonly body: unknown;
218
+ constructor(status: number, message: string, body?: unknown);
219
+ }
220
+ /** JSON-RPC error response failure carrying the protocol error code. */
221
+ export declare class MCPJsonRpcError extends Error {
222
+ readonly code: number;
223
+ readonly data?: unknown;
224
+ constructor(code: number, message: string, data?: unknown);
225
+ }
198
226
  export interface MCPRequestOptions {
199
227
  /** Abort signal (e.g. Escape-to-interrupt) */
200
228
  signal?: AbortSignal;
201
229
  /** Shared lease policy: never retry the original request after transport/auth failure. */
202
230
  noReplay?: boolean;
231
+ /**
232
+ * Handler for modern MRTR `input_required` results (elicitation, roots, sampling).
233
+ * When absent, an `input_required` result fails explicitly instead of hanging.
234
+ */
235
+ inputHandler?: MCPInputRequestHandler;
236
+ /** Extra mirrored headers for modern requests (`Mcp-Param-*` from x-mcp-header bindings). */
237
+ mcpParamHeaders?: Record<string, string>;
238
+ }
239
+ /** Context for one server input request gathered during a modern MRTR exchange. */
240
+ export interface MCPInputRequestContext {
241
+ /** Server being called. */
242
+ serverName: string;
243
+ /** Original client request method (`tools/call`, `prompts/get`, `resources/read`). */
244
+ originMethod: string;
245
+ /**
246
+ * Stable correlation id shared by the initial request and its exactly-once
247
+ * retry, fencing the accepted input to this exchange.
248
+ */
249
+ correlationId: string;
250
+ /** Request-scoped abort signal (cancellation/timeout of the original call). */
251
+ signal?: AbortSignal;
203
252
  }
253
+ /**
254
+ * Outcome of gathering one server input request. `result` values are placed in
255
+ * the retry's `inputResponses` under the request key. `failed` outcomes abort
256
+ * the MRTR exchange with an explicit error — except elicitation decline/cancel,
257
+ * which the handler expresses as an ElicitResult-shaped `result`.
258
+ */
259
+ export type MCPInputRequestHandlerResult = {
260
+ kind: "result";
261
+ result: unknown;
262
+ } | {
263
+ kind: "failed";
264
+ reason: "declined" | "cancelled" | "timeout" | "unavailable" | "error";
265
+ message?: string;
266
+ };
267
+ /** Handler for one server input request inside an `input_required` result. */
268
+ export type MCPInputRequestHandler = (key: string, request: {
269
+ method: string;
270
+ params?: Record<string, unknown>;
271
+ }, context: MCPInputRequestContext) => Promise<MCPInputRequestHandlerResult>;
204
272
  /** Transport interface - abstracts stdio/http */
205
273
  export interface MCPTransport {
206
274
  /** Send a request and wait for response */
@@ -246,6 +314,15 @@ export interface MCPServerConnection {
246
314
  instructions?: string;
247
315
  /** Cached prompts (populated on demand) */
248
316
  prompts?: MCPPrompt[];
317
+ /**
318
+ * Authoritative protocol observation for this connection (preference,
319
+ * negotiated era/version, downgrade decision, deprecation state). Secret-free.
320
+ */
321
+ protocol: MCPProtocolObservation;
322
+ /** Freshness deadline (ms epoch) for the cached tool catalog, from server ttlMs hints. */
323
+ toolsFreshUntil?: number;
324
+ /** Cache scope of the cached tool catalog; private entries never cross credential identities. */
325
+ toolsCacheScope?: "public" | "private";
249
326
  }
250
327
  /** MCP tool with server context */
251
328
  export interface MCPToolWithServer {
@@ -278,12 +355,12 @@ export interface MCPResourceTemplate {
278
355
  annotations?: MCPAnnotations;
279
356
  }
280
357
  /** Result of resources/list */
281
- export interface MCPResourcesListResult {
358
+ export interface MCPResourcesListResult extends MCPCacheHints {
282
359
  resources: MCPResource[];
283
360
  nextCursor?: string;
284
361
  }
285
362
  /** Result of resources/templates/list */
286
- export interface MCPResourceTemplatesListResult {
363
+ export interface MCPResourceTemplatesListResult extends MCPCacheHints {
287
364
  resourceTemplates: MCPResourceTemplate[];
288
365
  nextCursor?: string;
289
366
  }
@@ -295,7 +372,7 @@ export interface MCPResourceContentItem {
295
372
  blob?: string;
296
373
  }
297
374
  /** Result of resources/read */
298
- export interface MCPResourceReadResult {
375
+ export interface MCPResourceReadResult extends MCPCacheHints {
299
376
  contents: MCPResourceContentItem[];
300
377
  }
301
378
  /** Params for resources/read */
@@ -320,7 +397,7 @@ export interface MCPPrompt {
320
397
  arguments?: MCPPromptArgument[];
321
398
  }
322
399
  /** Result of prompts/list */
323
- export interface MCPPromptsListResult {
400
+ export interface MCPPromptsListResult extends MCPCacheHints {
324
401
  prompts: MCPPrompt[];
325
402
  nextCursor?: string;
326
403
  }
@@ -347,6 +424,21 @@ export interface MCPGetPromptResult {
347
424
  description?: string;
348
425
  messages: MCPPromptMessage[];
349
426
  }
427
+ /** Result of the optional modern `server/discover` request. */
428
+ export interface MCPDiscoverResult extends MCPCacheHints {
429
+ /** Protocol versions the server supports. */
430
+ supportedVersions: string[];
431
+ /** Capabilities the server supports. */
432
+ capabilities: MCPServerCapabilities;
433
+ /** Optional natural-language usage guidance. */
434
+ instructions?: string;
435
+ /** Result metadata; `io.modelcontextprotocol/serverInfo` carries the identity. */
436
+ _meta?: Record<string, unknown>;
437
+ }
438
+ /** Decoded `server/discover` payload with the extracted server identity. */
439
+ export interface MCPDiscoverResultLite extends MCPDiscoverResult {
440
+ serverInfo?: MCPImplementation;
441
+ }
350
442
  /** MCP server notification method names */
351
443
  export declare const MCPNotificationMethods: {
352
444
  readonly TOOLS_LIST_CHANGED: "notifications/tools/list_changed";
@@ -1,4 +1,6 @@
1
- import { SdkClient, SdkClientError, type SdkFrame } from "../client";
1
+ import { type SdkClient, SdkClientError } from "../client";
2
+ import type { AbortScope } from "../host/control/operations";
3
+ import { type SessionAttachment, type SessionRouter } from "../router";
2
4
  import { ACP_SESSION_RECONNECT } from "../session-reconnect";
3
5
  import type { SessionLifecycleMcpServer } from "./mcp";
4
6
  type JsonObject = Record<string, unknown>;
@@ -14,9 +16,11 @@ export interface AcpProviderRegistration {
14
16
  definitions: unknown;
15
17
  }
16
18
  export interface AcpSdkAdapterOptions {
17
- url: string;
18
- token: string;
19
+ /** Broker lifecycle transport only. Live session work requires `router` plus an opaque attachment. */
19
20
  client?: SdkClient;
21
+ router?: SessionRouter;
22
+ attachment?: SessionAttachment;
23
+ sessionId?: string;
20
24
  connection?: AcpReverseConnection;
21
25
  providers?: AcpProviderRegistration[];
22
26
  /** Lease IDs persisted by the ACP host across a WebSocket reconnect. */
@@ -34,7 +38,7 @@ export declare class AcpSdkAdapterError extends Error {
34
38
  */
35
39
  export declare function acpMcpLaunchFailure(error: unknown, mcpServers: SessionLifecycleMcpServer[]): unknown;
36
40
  export type AcpReconnectFailedHandler = (error: SdkClientError) => void;
37
- export type AcpFrameHandler = (frame: SdkFrame) => void;
41
+ export type AcpFrameHandler = (frame: Record<string, unknown>) => void;
38
42
  export { ACP_SESSION_RECONNECT };
39
43
  /**
40
44
  * Pure ACP-to-SDK adapter. It deliberately owns neither an AgentSession nor an
@@ -44,6 +48,10 @@ export declare class AcpSdkAdapter {
44
48
  #private;
45
49
  constructor(options: AcpSdkAdapterOptions);
46
50
  static connect(options: AcpSdkAdapterOptions): Promise<AcpSdkAdapter>;
51
+ acceptAttachment(attachment: SessionAttachment): void;
52
+ revokeAttachment(attachment: SessionAttachment): void;
53
+ attachmentReady(attachment: SessionAttachment): Promise<void>;
54
+ acceptFrame(frame: Record<string, unknown>): void;
47
55
  get leaseIds(): ReadonlyMap<string, string>;
48
56
  get connectionId(): string | undefined;
49
57
  onReconnectFailed(handler: AcpReconnectFailedHandler): () => void;
@@ -51,11 +59,24 @@ export declare class AcpSdkAdapter {
51
59
  start(): Promise<void>;
52
60
  close(): Promise<void>;
53
61
  prompt(params: JsonObject | string): Promise<unknown>;
54
- cancel(): Promise<unknown>;
62
+ /**
63
+ * Ends the active turn with a C04 terminal abort. The default `scope:"turn"`
64
+ * only stops the current turn, matching the SDK `turn.abort` default and
65
+ * other ACP clients' cancel behavior; `scope:"owned"` additionally stops
66
+ * exact causal owned work (background Bash/task jobs, detached subagents) so
67
+ * an external client can terminate everything a turn spawned. Paseo keeps
68
+ * owned cancels through its provider config env
69
+ * (`GJC_ACP_ABORT_SCOPE=owned`) without source changes. A fresh bounded
70
+ * idempotency key per call keeps terminal-abort replay deterministic across
71
+ * retries.
72
+ */
73
+ cancel(scope?: AbortScope): Promise<unknown>;
55
74
  setModel(params: JsonObject | string): Promise<unknown>;
56
75
  control(operation: string, input?: JsonObject): Promise<unknown>;
57
76
  query(query: string, input?: JsonObject, cursor?: string): Promise<unknown>;
58
77
  global(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
78
+ /** Uses lifecycle endpoint credentials only inside the ACP session owner. */
79
+ lifecycle(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
59
80
  sdkControl(params: {
60
81
  operation: string;
61
82
  input?: JsonObject;