@gajae-code/coding-agent 0.13.2 → 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 (610) hide show
  1. package/CHANGELOG.md +215 -8
  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 +10 -1
  35. package/dist/types/config/models-config-schema.d.ts +2 -0
  36. package/dist/types/config/settings-schema.d.ts +73 -9
  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 +2 -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/dynamic-theme-text.d.ts +9 -0
  87. package/dist/types/modes/components/gajae-pet-widget.d.ts +6 -28
  88. package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
  89. package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
  90. package/dist/types/modes/components/oauth-selector.d.ts +10 -4
  91. package/dist/types/modes/components/pet-capability.d.ts +7 -21
  92. package/dist/types/modes/components/settings-selector.d.ts +5 -0
  93. package/dist/types/modes/components/status-line/gh.d.ts +6 -2
  94. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
  95. package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
  96. package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
  97. package/dist/types/modes/interactive-mode.d.ts +1 -0
  98. package/dist/types/modes/theme/defaults/index.d.ts +118 -0
  99. package/dist/types/modes/types.d.ts +1 -0
  100. package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
  101. package/dist/types/runtime-mcp/config.d.ts +9 -0
  102. package/dist/types/runtime-mcp/manager.d.ts +26 -1
  103. package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
  104. package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
  105. package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
  106. package/dist/types/runtime-mcp/protocol.d.ts +278 -0
  107. package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
  108. package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
  109. package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
  110. package/dist/types/runtime-mcp/types.d.ts +102 -10
  111. package/dist/types/sdk/acp/adapter.d.ts +26 -5
  112. package/dist/types/sdk/broker/broker.d.ts +3 -55
  113. package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
  114. package/dist/types/sdk/broker/session-index.d.ts +14 -5
  115. package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
  116. package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
  117. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
  118. package/dist/types/sdk/bus/config.d.ts +11 -0
  119. package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
  120. package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
  121. package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
  122. package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
  123. package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
  124. package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
  125. package/dist/types/sdk/bus/index.d.ts +85 -99
  126. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
  127. package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
  128. package/dist/types/sdk/bus/notification-service.d.ts +52 -0
  129. package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
  130. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
  131. package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
  132. package/dist/types/sdk/bus/session-control.d.ts +25 -1
  133. package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
  134. package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
  135. package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
  136. package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
  137. package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
  138. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
  139. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
  140. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
  141. package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
  142. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
  143. package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
  144. package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
  145. package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
  146. package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
  147. package/dist/types/sdk/cli/rows.d.ts +2 -11
  148. package/dist/types/sdk/cli/session-cli.d.ts +15 -25
  149. package/dist/types/sdk/client/client.d.ts +97 -1
  150. package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
  151. package/dist/types/sdk/host/control/index.d.ts +1 -1
  152. package/dist/types/sdk/host/control/operations.d.ts +18 -5
  153. package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
  154. package/dist/types/sdk/host/host.d.ts +15 -1
  155. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  156. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  157. package/dist/types/sdk/host/session-runtime.d.ts +127 -7
  158. package/dist/types/sdk/host/types.d.ts +1 -1
  159. package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
  160. package/dist/types/sdk/index.d.ts +2 -1
  161. package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
  162. package/dist/types/sdk/lifecycle/client.d.ts +59 -0
  163. package/dist/types/sdk/lifecycle/index.d.ts +3 -0
  164. package/dist/types/sdk/lifecycle/service.d.ts +232 -0
  165. package/dist/types/sdk/mcp/server.d.ts +9 -6
  166. package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
  167. package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
  168. package/dist/types/sdk/prompt-status.d.ts +10 -3
  169. package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
  170. package/dist/types/sdk/receipt-state.d.ts +17 -0
  171. package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
  172. package/dist/types/sdk/router/index.d.ts +1 -0
  173. package/dist/types/sdk/router/session-router.d.ts +152 -0
  174. package/dist/types/sdk/session-list.d.ts +22 -0
  175. package/dist/types/sdk/session-reconnect.d.ts +43 -1
  176. package/dist/types/sdk/session.d.ts +34 -1
  177. package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
  178. package/dist/types/session/account-inventory.d.ts +86 -0
  179. package/dist/types/session/agent-session.d.ts +145 -6
  180. package/dist/types/session/agent-storage.d.ts +10 -0
  181. package/dist/types/session/coordinator-tool-label.d.ts +28 -0
  182. package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
  183. package/dist/types/session/messages.d.ts +1 -1
  184. package/dist/types/session/secure-token-file.d.ts +3 -0
  185. package/dist/types/session/session-manager.d.ts +47 -1
  186. package/dist/types/session/startup-auth-config.d.ts +44 -0
  187. package/dist/types/session/terminal-abort.d.ts +378 -0
  188. package/dist/types/session/yield-queue.d.ts +7 -0
  189. package/dist/types/session-import/claude.d.ts +26 -0
  190. package/dist/types/session-import/codex.d.ts +88 -0
  191. package/dist/types/session-import/command.d.ts +35 -0
  192. package/dist/types/session-import/detect.d.ts +22 -0
  193. package/dist/types/session-import/index.d.ts +7 -0
  194. package/dist/types/session-import/provider-codex.d.ts +22 -0
  195. package/dist/types/session-import/provider-service.d.ts +38 -0
  196. package/dist/types/session-import/redact.d.ts +23 -0
  197. package/dist/types/session-import/service.d.ts +47 -0
  198. package/dist/types/session-import/types.d.ts +120 -0
  199. package/dist/types/setup/paseo/check.d.ts +16 -0
  200. package/dist/types/setup/paseo/install-saga.d.ts +115 -0
  201. package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
  202. package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
  203. package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
  204. package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
  205. package/dist/types/setup/paseo/provider-config.d.ts +35 -0
  206. package/dist/types/setup/paseo/remove.d.ts +14 -0
  207. package/dist/types/setup/paseo/result-types.d.ts +59 -0
  208. package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
  209. package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
  210. package/dist/types/skill-state/active-state.d.ts +5 -1
  211. package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
  212. package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
  213. package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
  214. package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
  215. package/dist/types/slash-commands/types.d.ts +7 -1
  216. package/dist/types/task/executor.d.ts +10 -0
  217. package/dist/types/task/index.d.ts +3 -1
  218. package/dist/types/tools/ask-answer-registry.d.ts +6 -3
  219. package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
  220. package/dist/types/tools/bash.d.ts +2 -6
  221. package/dist/types/tools/browser/attach.d.ts +11 -0
  222. package/dist/types/tools/browser/launch.d.ts +20 -0
  223. package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
  224. package/dist/types/tools/browser/render.d.ts +1 -0
  225. package/dist/types/tools/browser.d.ts +3 -1
  226. package/dist/types/tools/image-gen.d.ts +10 -2
  227. package/dist/types/tools/index.d.ts +8 -0
  228. package/dist/types/tools/monitor.d.ts +1 -1
  229. package/dist/types/tools/skill-discovery.d.ts +8 -1
  230. package/dist/types/tools/subagent.d.ts +2 -0
  231. package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
  232. package/dist/types/utils/herdr-pane.d.ts +76 -0
  233. package/package.json +19 -9
  234. package/scripts/build-binary.ts +2 -1
  235. package/scripts/build-sdk-package-smoke.ts +2 -13
  236. package/scripts/capture-sticky-viewport-showcase.ts +0 -1
  237. package/scripts/compile-args.ts +2 -0
  238. package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
  239. package/scripts/generate-sdk-operation-inventory.ts +28 -0
  240. package/scripts/generate-telegram-baseline-manifest.ts +1 -0
  241. package/scripts/generate-tool-catalog.ts +6 -4
  242. package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
  243. package/src/async/job-manager.ts +352 -17
  244. package/src/async/support.ts +25 -0
  245. package/src/autoresearch/dashboard.ts +28 -13
  246. package/src/capability/index.ts +3 -1
  247. package/src/capability/mcp.ts +6 -0
  248. package/src/capability/types.ts +6 -0
  249. package/src/cli/accounts-cli.ts +395 -0
  250. package/src/cli/args.ts +23 -0
  251. package/src/cli/auth-broker-cli.ts +136 -66
  252. package/src/cli/auth-gateway-cli.ts +94 -70
  253. package/src/cli/config-cli.ts +27 -2
  254. package/src/cli/crash-cli.ts +78 -0
  255. package/src/cli/customize-doctor.ts +1605 -0
  256. package/src/cli/daemon-cli.ts +12 -3
  257. package/src/cli/fast-help.ts +1 -0
  258. package/src/cli/mcp-cli.ts +128 -60
  259. package/src/cli/notify-cli.ts +8 -14
  260. package/src/cli/root-flags.ts +8 -0
  261. package/src/cli/setup-cli.ts +145 -0
  262. package/src/cli/skills-cli.ts +38 -2
  263. package/src/cli/update-cli.ts +167 -12
  264. package/src/cli.ts +4 -0
  265. package/src/commands/accounts.ts +71 -0
  266. package/src/commands/crash.ts +35 -0
  267. package/src/commands/customize.ts +84 -0
  268. package/src/commands/daemon.ts +2 -2
  269. package/src/commands/deep-interview.ts +2 -0
  270. package/src/commands/launch.ts +1 -0
  271. package/src/commands/mcp.ts +12 -7
  272. package/src/commands/ralplan.ts +2 -0
  273. package/src/commands/sdk.ts +65 -32
  274. package/src/commands/setup.ts +5 -0
  275. package/src/commands/skills.ts +14 -4
  276. package/src/commands/ultragoal.ts +10 -1
  277. package/src/commands/update.ts +26 -15
  278. package/src/config/atomic-yaml-patch-worker.ts +57 -0
  279. package/src/config/atomic-yaml-patch.ts +769 -29
  280. package/src/config/config-schema-version.ts +10 -0
  281. package/src/config/file-lock.ts +70 -1
  282. package/src/config/mcp-schema.json +52 -14
  283. package/src/config/model-profile-activation.ts +23 -2
  284. package/src/config/model-profiles.ts +88 -21
  285. package/src/config/model-registry.ts +147 -21
  286. package/src/config/models-config-schema.ts +1 -1
  287. package/src/config/settings-schema.ts +77 -7
  288. package/src/config/settings.ts +4038 -199
  289. package/src/config/skill-settings-defaults.ts +41 -3
  290. package/src/config/task-delegation.ts +87 -0
  291. package/src/config/update-channel.ts +23 -0
  292. package/src/coordinator-mcp/server.ts +377 -308
  293. package/src/crash/index-store.ts +723 -0
  294. package/src/crash/nudge.ts +89 -0
  295. package/src/crash/record-loader.ts +149 -0
  296. package/src/crash/report.ts +551 -0
  297. package/src/crash/sanitize.ts +129 -0
  298. package/src/cursor.ts +36 -10
  299. package/src/customization/import.ts +946 -0
  300. package/src/customization/index.ts +4 -0
  301. package/src/customization/inventory.ts +335 -0
  302. package/src/customization/mutations.ts +141 -0
  303. package/src/customization/types.ts +223 -0
  304. package/src/daemon/control-types.ts +8 -1
  305. package/src/daemon/operator-contract.ts +6 -6
  306. package/src/defaults/gjc/extensions/grok-cli-vendor/src/models/catalog.ts +31 -6
  307. package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
  308. package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
  309. package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
  310. package/src/discovery/claude-hooks.ts +38 -0
  311. package/src/discovery/claude.ts +142 -209
  312. package/src/discovery/codex-hooks.ts +38 -0
  313. package/src/discovery/codex.ts +132 -198
  314. package/src/discovery/helpers.ts +8 -1
  315. package/src/discovery/index.ts +2 -0
  316. package/src/discovery/mcp-compat.ts +234 -0
  317. package/src/discovery/mcp-json.ts +6 -0
  318. package/src/edit/renderer.ts +40 -0
  319. package/src/edit/streaming.ts +4 -2
  320. package/src/exec/bash-executor.ts +24 -20
  321. package/src/export/html/index.ts +51 -2
  322. package/src/extensibility/extensions/loader.ts +9 -1
  323. package/src/extensibility/extensions/runner.ts +17 -4
  324. package/src/extensibility/extensions/types.ts +31 -6
  325. package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
  326. package/src/extensibility/gjc-plugins/installer.ts +9 -5
  327. package/src/extensibility/gjc-plugins/observability.ts +8 -2
  328. package/src/extensibility/gjc-plugins/registry.ts +13 -2
  329. package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
  330. package/src/extensibility/gjc-plugins/schema.ts +222 -39
  331. package/src/extensibility/hooks/loader.ts +154 -10
  332. package/src/extensibility/runtime-skill-discovery.ts +257 -60
  333. package/src/extensibility/skill-management.ts +368 -0
  334. package/src/extensibility/skills.ts +52 -16
  335. package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
  336. package/src/gjc-runtime/launch-worktree.ts +56 -2
  337. package/src/gjc-runtime/linux-proc.ts +7 -1
  338. package/src/gjc-runtime/ralplan-runtime.ts +100 -164
  339. package/src/gjc-runtime/session-state-lock.ts +992 -0
  340. package/src/gjc-runtime/session-state-sidecar.ts +644 -142
  341. package/src/gjc-runtime/state-writer.ts +39 -14
  342. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
  343. package/src/gjc-runtime/ultragoal-guard.ts +11 -4
  344. package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
  345. package/src/gjc-runtime/workflow-settings.ts +596 -0
  346. package/src/goals/tools/goal-tool.ts +6 -1
  347. package/src/hooks/events.ts +291 -0
  348. package/src/hooks/native-skill-hook.ts +4 -0
  349. package/src/hooks/normalize.ts +369 -0
  350. package/src/hooks/skill-state.ts +165 -46
  351. package/src/internal-urls/docs-index.generated.ts +41 -32
  352. package/src/main.ts +36 -5
  353. package/src/migrate/mcp-mapper.ts +25 -2
  354. package/src/modes/acp/abort-scope.ts +29 -0
  355. package/src/modes/acp/acp-agent.ts +423 -98
  356. package/src/modes/components/assistant-message.ts +6 -1
  357. package/src/modes/components/chrome.ts +4 -3
  358. package/src/modes/components/customization/customization-dashboard.ts +443 -0
  359. package/src/modes/components/customization/import-wizard.ts +372 -0
  360. package/src/modes/components/customization/index.ts +1 -0
  361. package/src/modes/components/dynamic-theme-text.ts +22 -0
  362. package/src/modes/components/gajae-pet-widget.ts +607 -193
  363. package/src/modes/components/irc-sidebar.ts +11 -0
  364. package/src/modes/components/iterm-pet-transport.ts +585 -0
  365. package/src/modes/components/model-selector.ts +1 -6
  366. package/src/modes/components/oauth-selector.ts +277 -86
  367. package/src/modes/components/pet-capability.ts +35 -31
  368. package/src/modes/components/settings-selector.ts +29 -5
  369. package/src/modes/components/status-line/gh.ts +45 -1
  370. package/src/modes/components/status-line/segments.ts +19 -4
  371. package/src/modes/components/tool-status-header.ts +13 -3
  372. package/src/modes/controllers/command-controller.ts +20 -8
  373. package/src/modes/controllers/extension-ui-controller.ts +56 -257
  374. package/src/modes/controllers/input-controller.ts +10 -0
  375. package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
  376. package/src/modes/controllers/selector-controller.ts +238 -77
  377. package/src/modes/controllers/stt-controller.ts +3 -3
  378. package/src/modes/interactive-mode.ts +88 -16
  379. package/src/modes/print-mode.ts +35 -6
  380. package/src/modes/runtime-init.ts +21 -68
  381. package/src/modes/theme/defaults/index.ts +2 -0
  382. package/src/modes/theme/defaults/ouroboros.json +118 -0
  383. package/src/modes/types.ts +1 -0
  384. package/src/modes/utils/injected-user-submission.ts +25 -0
  385. package/src/modes/utils/terminal-bell.ts +15 -1
  386. package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
  387. package/src/prompts/agent-fragments/restricted-bash.md +1 -1
  388. package/src/prompts/agents/critic.md +1 -1
  389. package/src/prompts/system/rlm-research.md +1 -1
  390. package/src/prompts/system/system-prompt.md +0 -2
  391. package/src/prompts/tools/bash.md +7 -1
  392. package/src/prompts/tools/browser.md +1 -1
  393. package/src/prompts/tools/cron.md +6 -6
  394. package/src/prompts/tools/read.md +0 -2
  395. package/src/prompts/tools/skill-discovery.md +4 -2
  396. package/src/runtime-mcp/client.ts +427 -23
  397. package/src/runtime-mcp/config.ts +37 -5
  398. package/src/runtime-mcp/manager-pool.test.ts +56 -0
  399. package/src/runtime-mcp/manager.ts +52 -2
  400. package/src/runtime-mcp/oauth-discovery.ts +13 -0
  401. package/src/runtime-mcp/oauth-flow.ts +46 -1
  402. package/src/runtime-mcp/pool-key.ts +5 -1
  403. package/src/runtime-mcp/pool.test.ts +9 -0
  404. package/src/runtime-mcp/protocol.test.ts +353 -0
  405. package/src/runtime-mcp/protocol.ts +624 -0
  406. package/src/runtime-mcp/scope-config.ts +78 -0
  407. package/src/runtime-mcp/tool-bridge.ts +44 -10
  408. package/src/runtime-mcp/transports/http.ts +84 -13
  409. package/src/runtime-mcp/types.ts +123 -12
  410. package/src/sdk/acp/adapter.ts +328 -97
  411. package/src/sdk/broker/broker.ts +160 -741
  412. package/src/sdk/broker/ensure.ts +9 -1
  413. package/src/sdk/broker/lifecycle.ts +510 -116
  414. package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
  415. package/src/sdk/broker/process-incarnation.ts +19 -0
  416. package/src/sdk/broker/session-index.ts +516 -117
  417. package/src/sdk/broker/startup-failure.ts +28 -5
  418. package/src/sdk/broker/transport.ts +1 -13
  419. package/src/sdk/bus/chat-daemon-cli.ts +4 -2
  420. package/src/sdk/bus/chat-daemon-control.ts +67 -6
  421. package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
  422. package/src/sdk/bus/config.ts +13 -0
  423. package/src/sdk/bus/conversation-store.ts +59 -171
  424. package/src/sdk/bus/daemon-paths.ts +20 -0
  425. package/src/sdk/bus/discord-conversation.ts +2 -0
  426. package/src/sdk/bus/discord-daemon.ts +524 -126
  427. package/src/sdk/bus/discord-live-provider.ts +206 -79
  428. package/src/sdk/bus/existing-thread-readiness.ts +4 -97
  429. package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
  430. package/src/sdk/bus/index.ts +2480 -456
  431. package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
  432. package/src/sdk/bus/lifecycle-commands.ts +2 -2
  433. package/src/sdk/bus/managed-daemon.ts +2 -145
  434. package/src/sdk/bus/notification-service.ts +196 -0
  435. package/src/sdk/bus/operator-runtime.ts +1 -1
  436. package/src/sdk/bus/prompt-reconciliation.ts +24 -15
  437. package/src/sdk/bus/reconciliation-store.ts +553 -24
  438. package/src/sdk/bus/session-control.ts +49 -3
  439. package/src/sdk/bus/slack-conversation.ts +4 -0
  440. package/src/sdk/bus/slack-daemon.ts +733 -134
  441. package/src/sdk/bus/slack-live-provider.ts +65 -15
  442. package/src/sdk/bus/slack-provider.ts +4 -0
  443. package/src/sdk/bus/slack-thread-binding.ts +9 -104
  444. package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
  445. package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
  446. package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
  447. package/src/sdk/bus/telegram-daemon-control.ts +3 -13
  448. package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
  449. package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
  450. package/src/sdk/bus/telegram-daemon.ts +2552 -2280
  451. package/src/sdk/bus/telegram-reference.ts +1 -226
  452. package/src/sdk/bus/telegram-setup.ts +2 -2
  453. package/src/sdk/bus/threaded-render.ts +1 -0
  454. package/src/sdk/bus/topic-registry.ts +279 -146
  455. package/src/sdk/cli/rows.ts +2 -35
  456. package/src/sdk/cli/session-cli.ts +776 -700
  457. package/src/sdk/client/client.ts +892 -1
  458. package/src/sdk/host/control/dispatch.ts +93 -58
  459. package/src/sdk/host/control/index.ts +1 -1
  460. package/src/sdk/host/control/operations.ts +18 -10
  461. package/src/sdk/host/control/runtime-gate.ts +40 -0
  462. package/src/sdk/host/host.ts +63 -12
  463. package/src/sdk/host/query/handlers.ts +66 -7
  464. package/src/sdk/host/reverse-leases.ts +2 -2
  465. package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
  466. package/src/sdk/host/session-runtime.test.ts +2787 -34
  467. package/src/sdk/host/session-runtime.ts +1489 -101
  468. package/src/sdk/host/surface-policy.ts +12 -8
  469. package/src/sdk/host/types.ts +1 -1
  470. package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
  471. package/src/sdk/host/websocket-transport.ts +85 -50
  472. package/src/sdk/index.ts +2 -1
  473. package/src/sdk/lifecycle/broker-client.ts +53 -0
  474. package/src/sdk/lifecycle/client.ts +234 -0
  475. package/src/sdk/lifecycle/index.ts +3 -0
  476. package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
  477. package/src/sdk/lifecycle/service.ts +720 -0
  478. package/src/sdk/mcp/server.ts +226 -188
  479. package/src/sdk/prompt-deadline-lease.ts +55 -0
  480. package/src/sdk/prompt-deadline-manager.ts +148 -0
  481. package/src/sdk/prompt-status.ts +11 -3
  482. package/src/sdk/protocol/operation-inventory.generated.json +272 -129
  483. package/src/sdk/protocol/operation-registry.ts +71 -8
  484. package/src/sdk/receipt-state.ts +43 -0
  485. package/src/sdk/reconciliation-extensions.ts +14 -0
  486. package/src/sdk/router/index.ts +1 -0
  487. package/src/sdk/router/session-router.ts +1658 -0
  488. package/src/sdk/session-list.ts +93 -0
  489. package/src/sdk/session-reconnect.ts +45 -1
  490. package/src/sdk/session.ts +716 -120
  491. package/src/sdk/transport/serve-cli.ts +18 -34
  492. package/src/session/account-inventory.ts +603 -0
  493. package/src/session/agent-session.ts +2873 -559
  494. package/src/session/agent-storage.ts +35 -0
  495. package/src/session/blob-store.ts +32 -1
  496. package/src/session/coordinator-tool-label.ts +40 -0
  497. package/src/session/internal/managed-session-scope.ts +4 -0
  498. package/src/session/internal/managed-session-storage.ts +199 -31
  499. package/src/session/messages.ts +1 -1
  500. package/src/session/secure-token-file.ts +80 -0
  501. package/src/session/session-manager.ts +757 -57
  502. package/src/session/session-storage.ts +25 -16
  503. package/src/session/startup-auth-config.ts +297 -0
  504. package/src/session/terminal-abort.ts +1253 -0
  505. package/src/session/yield-queue.ts +57 -15
  506. package/src/session-import/claude.ts +334 -0
  507. package/src/session-import/codex.ts +1033 -0
  508. package/src/session-import/command.ts +77 -0
  509. package/src/session-import/detect.ts +133 -0
  510. package/src/session-import/index.ts +7 -0
  511. package/src/session-import/provider-codex.ts +327 -0
  512. package/src/session-import/provider-service.ts +457 -0
  513. package/src/session-import/redact.ts +128 -0
  514. package/src/session-import/service.ts +1264 -0
  515. package/src/session-import/types.ts +148 -0
  516. package/src/setup/paseo/check.ts +213 -0
  517. package/src/setup/paseo/install-saga.ts +293 -0
  518. package/src/setup/paseo/json-publisher.ts +263 -0
  519. package/src/setup/paseo/orchestration-preferences.ts +86 -0
  520. package/src/setup/paseo/paseo-ownership.ts +224 -0
  521. package/src/setup/paseo/paseo-setup.ts +253 -0
  522. package/src/setup/paseo/provider-config.ts +139 -0
  523. package/src/setup/paseo/remove.ts +183 -0
  524. package/src/setup/paseo/result-types.ts +79 -0
  525. package/src/setup/paseo/setup-deps.ts +175 -0
  526. package/src/setup/paseo/skills-bridge.ts +260 -0
  527. package/src/skill-state/active-state.ts +21 -11
  528. package/src/slash-commands/acp-builtins.ts +9 -1
  529. package/src/slash-commands/builtin-registry.ts +117 -19
  530. package/src/slash-commands/helpers/credential-switch.ts +143 -0
  531. package/src/slash-commands/helpers/mcp.ts +9 -3
  532. package/src/slash-commands/helpers/usage-report.ts +61 -56
  533. package/src/slash-commands/types.ts +7 -2
  534. package/src/task/executor.ts +30 -11
  535. package/src/task/index.ts +66 -7
  536. package/src/task/render.ts +23 -9
  537. package/src/tools/ask-answer-registry.ts +23 -7
  538. package/src/tools/ask.ts +8 -4
  539. package/src/tools/bash-sleep-advisory.ts +115 -0
  540. package/src/tools/bash.ts +98 -18
  541. package/src/tools/browser/attach.ts +71 -3
  542. package/src/tools/browser/launch.ts +86 -13
  543. package/src/tools/browser/profile-discovery.ts +57 -7
  544. package/src/tools/browser/render.ts +8 -1
  545. package/src/tools/browser.ts +130 -21
  546. package/src/tools/computer.enforcement.test.ts +1 -1
  547. package/src/tools/computer.ts +3 -2
  548. package/src/tools/cron.ts +12 -1
  549. package/src/tools/image-gen.ts +349 -142
  550. package/src/tools/index.ts +8 -0
  551. package/src/tools/job.ts +33 -6
  552. package/src/tools/monitor.ts +41 -2
  553. package/src/tools/skill-discovery.ts +21 -29
  554. package/src/tools/subagent.ts +142 -24
  555. package/src/tools/todo-contract.ts +55 -3
  556. package/src/tools/todo-write.ts +4 -3
  557. package/src/tools/tool-catalog.generated.ts +6 -6
  558. package/src/tools/ultragoal-ask-guard.ts +10 -3
  559. package/src/utils/herdr-pane.ts +345 -0
  560. package/src/utils/title-generator.ts +2 -0
  561. package/src/web/scrapers/index.ts +6 -4
  562. package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
  563. package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
  564. package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
  565. package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
  566. package/dist/types/runtime/lazy-service.test.d.ts +0 -1
  567. package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
  568. package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
  569. package/dist/types/runtime-mcp/config.test.d.ts +0 -1
  570. package/dist/types/runtime-mcp/http.test.d.ts +0 -1
  571. package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
  572. package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
  573. package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
  574. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
  575. package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
  576. package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
  577. package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
  578. package/dist/types/sdk/elevation/audit.d.ts +0 -93
  579. package/dist/types/sdk/elevation/capability.d.ts +0 -3
  580. package/dist/types/sdk/elevation/digest.d.ts +0 -72
  581. package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
  582. package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
  583. package/dist/types/sdk/elevation/owner.d.ts +0 -48
  584. package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
  585. package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
  586. package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
  587. package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
  588. package/dist/types/session/auth-broker-config.d.ts +0 -13
  589. package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
  590. package/dist/types/skills/skills.test.d.ts +0 -1
  591. package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
  592. package/dist/types/task/token-log.test.d.ts +0 -1
  593. package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
  594. package/dist/types/tools/descriptors.test.d.ts +0 -1
  595. package/scripts/g005-daemon-smoke.ts +0 -180
  596. package/scripts/g011-daemon-path-smoke.ts +0 -153
  597. package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
  598. package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
  599. package/src/sdk/bus/telegram-cli.ts +0 -212
  600. package/src/sdk/elevation/allowlist.ts +0 -54
  601. package/src/sdk/elevation/audit.ts +0 -208
  602. package/src/sdk/elevation/capability.ts +0 -41
  603. package/src/sdk/elevation/digest.ts +0 -129
  604. package/src/sdk/elevation/dispatch-receipt.ts +0 -184
  605. package/src/sdk/elevation/grant-ledger.ts +0 -1142
  606. package/src/sdk/elevation/owner.ts +0 -109
  607. package/src/session/auth-broker-config.ts +0 -109
  608. /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
  609. /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
  610. /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
@@ -15,6 +15,13 @@ export interface LoadMCPConfigsOptions {
15
15
  filterBrowser?: boolean;
16
16
  /** Only include startup-eligible servers; exact-config sessions always enforce autoload !== false. */
17
17
  autoloadOnly?: boolean;
18
+ /**
19
+ * Restrict discovery to GJC's own native config (`.gjc/` project and
20
+ * `~/.gjc/agent/` user scopes). Conventional standalone sessions use this
21
+ * mode: Claude Code/Codex project/global MCP files are explicit import
22
+ * sources into `.gjc`, not implicit competing runtime authorities.
23
+ */
24
+ nativeOnly?: boolean;
18
25
  /** Load only this explicit MCP config file. */
19
26
  configPath?: string;
20
27
  }
@@ -28,6 +35,8 @@ export interface LoadMCPConfigsResult {
28
35
  sources: Record<string, SourceMeta>;
29
36
  /** Whether the explicit configuration was unavailable or contained invalid entries. */
30
37
  configurationWarning: boolean;
38
+ /** Provider warnings surfaced during discovery (parse/skip diagnostics). */
39
+ warnings: string[];
31
40
  }
32
41
  /**
33
42
  * Load all MCP server configs from standard locations.
@@ -9,9 +9,10 @@ import type { SourceMeta } from "../capability/types";
9
9
  import type { CustomTool } from "../extensibility/custom-tools/types";
10
10
  import type { AuthStorage } from "../session/auth-storage";
11
11
  import { MCPConnectionPool, type MCPPoolLease } from "./pool";
12
+ import type { MCPProtocolObservation } from "./protocol";
12
13
  import type { MCPToolDetails } from "./tool-bridge";
13
14
  import type { MCPToolCache } from "./tool-cache";
14
- import type { MCPGetPromptResult, MCPPrompt, MCPRequestOptions, MCPResource, MCPResourceReadResult, MCPResourceTemplate, MCPServerConfig, MCPServerConnection } from "./types";
15
+ import type { MCPGetPromptResult, MCPInputRequestHandler, MCPPrompt, MCPRequestOptions, MCPResource, MCPResourceReadResult, MCPResourceTemplate, MCPServerConfig, MCPServerConnection } from "./types";
15
16
  export declare function resolveStartupTimeoutMs(configs: MCPServerConfig[], maxStartupTimeoutMs?: number): number;
16
17
  export declare function resolveExactConfigStartupTimeoutMs(configs: MCPServerConfig[]): number;
17
18
  export declare class MCPManagerLifecycleError extends Error {
@@ -54,6 +55,12 @@ export interface MCPDiscoverOptions {
54
55
  filterBrowser?: boolean;
55
56
  /** Only connect servers with autoload !== false (default: false) */
56
57
  autoloadOnly?: boolean;
58
+ /**
59
+ * Restrict discovery to GJC's native `.gjc` scopes (user + project).
60
+ * Runtime MCP authority for GJC sessions; Claude Code/Codex files are
61
+ * explicit import sources into `.gjc`, not implicit runtime authorities.
62
+ */
63
+ nativeOnly?: boolean;
57
64
  /** Called when starting to connect to servers */
58
65
  onConnecting?: (serverNames: string[]) => void;
59
66
  /** Load only this explicit MCP config file. */
@@ -125,6 +132,13 @@ export declare class MCPManager {
125
132
  * Set the auth storage for resolving OAuth credentials.
126
133
  */
127
134
  setAuthStorage(authStorage: AuthStorage): void;
135
+ /**
136
+ * Register the handler for modern MRTR `input_required` results (structured
137
+ * elicitation/roots/sampling input requests). Runtimes with an interactive
138
+ * question surface (e.g. ACP `elicitation/create`) register here; without a
139
+ * handler, `input_required` fails explicitly instead of hanging.
140
+ */
141
+ setInputRequestHandler(handler: MCPInputRequestHandler | null): void;
128
142
  /**
129
143
  * Discover and connect to all MCP servers from .mcp.json files.
130
144
  * Returns tools and any connection errors.
@@ -147,6 +161,17 @@ export declare class MCPManager {
147
161
  * Get current connection status for a server.
148
162
  */
149
163
  getConnectionStatus(name: string): "connected" | "connecting" | "disconnected";
164
+ /**
165
+ * Get the authoritative protocol observation for a connected server
166
+ * (preference, negotiated era/version, downgrade decision, deprecation state).
167
+ * Secret-free; the single observation model consumed by customization doctor
168
+ * (#4288) and /extensions (#4291). Returns undefined when not connected.
169
+ */
170
+ getProtocolObservation(name: string): MCPProtocolObservation | undefined;
171
+ /**
172
+ * Snapshot of protocol observations for all connected servers.
173
+ */
174
+ getProtocolObservations(): ReadonlyMap<string, MCPProtocolObservation>;
150
175
  /**
151
176
  * Get the source metadata for a server.
152
177
  */
@@ -10,6 +10,10 @@ export interface OAuthEndpoints {
10
10
  tokenUrl: string;
11
11
  clientId?: string;
12
12
  scopes?: string;
13
+ /** Issuer recorded from the validated metadata document (RFC 9207). */
14
+ issuer?: string;
15
+ /** `authorization_response_iss_parameter_supported` from the same metadata. */
16
+ authorizationResponseIssSupported?: boolean;
13
17
  }
14
18
  export interface AuthDetectionResult {
15
19
  requiresAuth: boolean;
@@ -6,12 +6,22 @@
6
6
  */
7
7
  import { OAuthCallbackFlow } from "@gajae-code/ai/utils/oauth/callback-server";
8
8
  import type { OAuthController, OAuthCredentials } from "@gajae-code/ai/utils/oauth/types";
9
+ /**
10
+ * Canonical MCP server resource URI per RFC 8707 §2: absolute URI, lowercase
11
+ * scheme/host, no fragment, no trailing slash on an empty path.
12
+ */
13
+ export declare function canonicalMCPResourceUri(raw: string): string | undefined;
9
14
  export interface MCPOAuthConfig {
10
15
  /** Authorization endpoint URL */
11
16
  authorizationUrl: string;
12
17
  /** Token endpoint URL */
13
18
  tokenUrl: string;
14
- /** Client ID (optional when already embedded in authorization URL) */
19
+ /**
20
+ * Client ID (optional when already embedded in authorization URL). An
21
+ * HTTPS URL here is a Client ID Metadata Document (CIMD) reference per
22
+ * MCP 2026-07-28 and is used as-is; Dynamic Client Registration is only a
23
+ * deprecated backwards-compatibility fallback when no client id exists.
24
+ */
15
25
  clientId?: string;
16
26
  /** Client secret (optional for PKCE flows) */
17
27
  clientSecret?: string;
@@ -23,6 +33,19 @@ export interface MCPOAuthConfig {
23
33
  callbackPort?: number;
24
34
  /** Custom callback path (default: /callback or redirectUri pathname) */
25
35
  callbackPath?: string;
36
+ /**
37
+ * Canonical URI of the target MCP server (RFC 8707). Sent as the `resource`
38
+ * parameter on BOTH the authorization and token requests, regardless of
39
+ * authorization-server support.
40
+ */
41
+ resource?: string;
42
+ /**
43
+ * Expected authorization-server issuer recorded from validated discovery
44
+ * metadata (RFC 9207 / MCP 2026-07-28). Validation fails closed on mismatch.
45
+ */
46
+ issuer?: string;
47
+ /** `authorization_response_iss_parameter_supported` from the same metadata. */
48
+ issuerResponseIssSupported?: boolean;
26
49
  }
27
50
  /**
28
51
  * Generic OAuth flow for MCP servers.
@@ -48,6 +48,8 @@ export interface MCPPoolKeyIdentity {
48
48
  authScopeId: string;
49
49
  pluginNetworkPolicyId: string;
50
50
  capabilityProfile: MCPPoolCapabilityProfile;
51
+ /** Resolved protocol preference (auto | 2026-07-28 | legacy); partitions protocol generations. */
52
+ protocolPreference: string;
51
53
  sessionId?: string;
52
54
  }
53
55
  /**
@@ -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.