@gajae-code/coding-agent 0.18.11 → 0.19.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 (462) hide show
  1. package/CHANGELOG.md +760 -0
  2. package/dist/types/async/job-manager.d.ts +7 -3
  3. package/dist/types/async/result-formatting.d.ts +2 -0
  4. package/dist/types/autoresearch/git.d.ts +1 -1
  5. package/dist/types/capability/fs.d.ts +2 -2
  6. package/dist/types/capability/rule.d.ts +7 -2
  7. package/dist/types/cli/accounts-cli.d.ts +2 -2
  8. package/dist/types/cli/append-system-prompt.d.ts +6 -0
  9. package/dist/types/cli/args.d.ts +7 -2
  10. package/dist/types/cli/customize-doctor-precedence.d.ts +16 -0
  11. package/dist/types/cli/customize-doctor.d.ts +4 -3
  12. package/dist/types/cli/doctor/install-repairs.d.ts +4 -1
  13. package/dist/types/cli/install-activation.d.ts +10 -4
  14. package/dist/types/cli/public-command-errors.d.ts +2 -0
  15. package/dist/types/cli/root-flags.d.ts +0 -12
  16. package/dist/types/cli/update-cli.d.ts +21 -3
  17. package/dist/types/cli-main.d.ts +0 -6
  18. package/dist/types/cli-ordinary.d.ts +2 -2
  19. package/dist/types/commands/accounts.d.ts +2 -1
  20. package/dist/types/commands/launch.d.ts +0 -6
  21. package/dist/types/commands/migrate.d.ts +1 -1
  22. package/dist/types/commands/sdk.d.ts +13 -0
  23. package/dist/types/commit/changelog/index.d.ts +1 -0
  24. package/dist/types/commit/map-reduce/index.d.ts +4 -4
  25. package/dist/types/config/autorouting-tier-map.d.ts +53 -1
  26. package/dist/types/config/config-hot-reload-trust.d.ts +12 -0
  27. package/dist/types/config/config-hot-reload.d.ts +44 -0
  28. package/dist/types/config/file-lock.d.ts +52 -3
  29. package/dist/types/config/model-discovery-manager.d.ts +2 -0
  30. package/dist/types/config/model-profile-activation.d.ts +79 -9
  31. package/dist/types/config/model-registry.d.ts +72 -8
  32. package/dist/types/config/model-resolver.d.ts +7 -4
  33. package/dist/types/config/models-config-schema.d.ts +10 -0
  34. package/dist/types/config/settings-schema.d.ts +57 -4
  35. package/dist/types/config/settings.d.ts +33 -1
  36. package/dist/types/coordinator-mcp/server.d.ts +4 -0
  37. package/dist/types/customization/import.d.ts +2 -0
  38. package/dist/types/customization/types.d.ts +1 -1
  39. package/dist/types/dap/config.d.ts +8 -4
  40. package/dist/types/dap/session.d.ts +11 -2
  41. package/dist/types/debug/system-info.d.ts +6 -1
  42. package/dist/types/discovery/helpers.d.ts +7 -2
  43. package/dist/types/discovery/mcp-compat.d.ts +3 -1
  44. package/dist/types/edit/index.d.ts +5 -0
  45. package/dist/types/edit/modes/patch.d.ts +14 -0
  46. package/dist/types/edit/modes/replace.d.ts +3 -0
  47. package/dist/types/eval/py/runtime.d.ts +9 -0
  48. package/dist/types/exec/bash-executor.d.ts +12 -0
  49. package/dist/types/export/ttsr.d.ts +19 -0
  50. package/dist/types/extensibility/extensions/types.d.ts +5 -1
  51. package/dist/types/extensibility/slash-commands.d.ts +1 -0
  52. package/dist/types/gjc-runtime/managed-owner-admission.d.ts +3 -0
  53. package/dist/types/gjc-runtime/ralplan-current-final.d.ts +54 -0
  54. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +5 -0
  55. package/dist/types/gjc-runtime/session-state-lock.d.ts +2 -0
  56. package/dist/types/gjc-runtime/state-runtime.d.ts +0 -2
  57. package/dist/types/gjc-runtime/tmux-sessions.d.ts +24 -0
  58. package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +6 -0
  59. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +1 -0
  60. package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
  61. package/dist/types/hindsight/content.d.ts +5 -6
  62. package/dist/types/internal-urls/types.d.ts +2 -0
  63. package/dist/types/lsp/clients/swiftlint-client.d.ts +0 -4
  64. package/dist/types/main.d.ts +23 -18
  65. package/dist/types/migrate/action-planner.d.ts +10 -1
  66. package/dist/types/migrate/adapters/codex.d.ts +2 -1
  67. package/dist/types/migrate/adapters/index.d.ts +42 -1
  68. package/dist/types/migrate/executor.d.ts +3 -1
  69. package/dist/types/migrate/hook-module.d.ts +23 -0
  70. package/dist/types/migrate/report.d.ts +2 -1
  71. package/dist/types/migrate/types.d.ts +82 -3
  72. package/dist/types/modes/components/agent-dashboard.d.ts +1 -1
  73. package/dist/types/modes/components/model-selector.d.ts +43 -0
  74. package/dist/types/modes/components/settings-selector.d.ts +6 -0
  75. package/dist/types/modes/controllers/selector-controller.d.ts +2 -0
  76. package/dist/types/modes/prompt-suggestion-controller.d.ts +1 -1
  77. package/dist/types/modes/theme/theme.d.ts +1 -0
  78. package/dist/types/modes/utils/host-status.d.ts +15 -11
  79. package/dist/types/runtime-mcp/content-limits.d.ts +4 -0
  80. package/dist/types/runtime-mcp/manager.d.ts +7 -0
  81. package/dist/types/runtime-mcp/plugin-mcp-name-filter.d.ts +22 -0
  82. package/dist/types/runtime-mcp/project-host-values.d.ts +11 -5
  83. package/dist/types/runtime-mcp/tool-bridge.d.ts +4 -0
  84. package/dist/types/sdk/broker/broker-exit.d.ts +3 -3
  85. package/dist/types/sdk/broker/broker.d.ts +29 -2
  86. package/dist/types/sdk/broker/daemon-entry.d.ts +11 -1
  87. package/dist/types/sdk/broker/doctor-restart.d.ts +1 -1
  88. package/dist/types/sdk/broker/ensure.d.ts +141 -9
  89. package/dist/types/sdk/broker/hop.d.ts +45 -0
  90. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +18 -10
  91. package/dist/types/sdk/broker/lifecycle.d.ts +22 -0
  92. package/dist/types/sdk/broker/lock-host-identity.d.ts +5 -0
  93. package/dist/types/sdk/broker/session-index.d.ts +6 -1
  94. package/dist/types/sdk/broker/transport.d.ts +2 -0
  95. package/dist/types/sdk/bus/chat-command-policy.d.ts +2 -1
  96. package/dist/types/sdk/bus/index.d.ts +44 -0
  97. package/dist/types/sdk/bus/reconciliation-store.d.ts +10 -0
  98. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -1
  99. package/dist/types/sdk/bus/telegram-daemon.d.ts +2 -0
  100. package/dist/types/sdk/bus/threaded-render.d.ts +2 -1
  101. package/dist/types/sdk/cli/session-cli.d.ts +0 -1
  102. package/dist/types/sdk/host/control/operations.d.ts +5 -1
  103. package/dist/types/sdk/host/events.d.ts +4 -0
  104. package/dist/types/sdk/host/host.d.ts +2 -1
  105. package/dist/types/sdk/host/prompt-image-upload.d.ts +43 -0
  106. package/dist/types/sdk/host/session-runtime.d.ts +40 -8
  107. package/dist/types/sdk/host/surface-policy.d.ts +2 -1
  108. package/dist/types/sdk/lifecycle/service.d.ts +12 -0
  109. package/dist/types/sdk/prompt-deadline-flush.d.ts +42 -4
  110. package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -0
  111. package/dist/types/sdk/prompt-status.d.ts +11 -4
  112. package/dist/types/sdk/protocol/adapter-validation.d.ts +10 -4
  113. package/dist/types/sdk/reconciliation-extensions.d.ts +1 -1
  114. package/dist/types/sdk/session-list.d.ts +1 -1
  115. package/dist/types/session/agent-session.d.ts +107 -9
  116. package/dist/types/session/internal/managed-session-scope.d.ts +2 -2
  117. package/dist/types/session/internal/managed-session-storage.d.ts +1 -1
  118. package/dist/types/session/internal/native-publish-outcome.d.ts +1 -1
  119. package/dist/types/session/messages.d.ts +5 -1
  120. package/dist/types/session/session-manager.d.ts +29 -3
  121. package/dist/types/session/startup-auth-config.d.ts +24 -2
  122. package/dist/types/session/streaming-output.d.ts +11 -0
  123. package/dist/types/session/terminal-abort.d.ts +3 -1
  124. package/dist/types/session-import/service.d.ts +1 -1
  125. package/dist/types/skill-state/workflow-mutation-guard.d.ts +20 -4
  126. package/dist/types/slash-commands/helpers/mcp.d.ts +5 -0
  127. package/dist/types/slash-commands/helpers/provider-auth-status.d.ts +8 -0
  128. package/dist/types/ssh/ssh-executor.d.ts +8 -1
  129. package/dist/types/system-prompt.d.ts +3 -2
  130. package/dist/types/task/executor.d.ts +19 -2
  131. package/dist/types/task/role-body.d.ts +11 -0
  132. package/dist/types/tools/ast-edit-write-path.d.ts +10 -0
  133. package/dist/types/tools/atomic-file-write.d.ts +9 -7
  134. package/dist/types/tools/awaiting-input.d.ts +28 -0
  135. package/dist/types/tools/bash-allowed-prefixes.d.ts +17 -0
  136. package/dist/types/tools/bash-skill-urls.d.ts +4 -0
  137. package/dist/types/tools/bash.d.ts +7 -0
  138. package/dist/types/tools/descriptors.d.ts +15 -2
  139. package/dist/types/tools/fetch.d.ts +7 -1
  140. package/dist/types/tools/index.d.ts +2 -0
  141. package/dist/types/tools/irc.d.ts +5 -3
  142. package/dist/types/tools/python.d.ts +1 -1
  143. package/dist/types/tools/report-issue.d.ts +41 -0
  144. package/dist/types/tools/subagent.d.ts +23 -0
  145. package/dist/types/tools/tmux-self-injection-guard.d.ts +2 -0
  146. package/dist/types/tools/ultragoal-ask-guard.d.ts +1 -1
  147. package/dist/types/tools/write.d.ts +2 -0
  148. package/dist/types/utils/file-mentions.d.ts +5 -0
  149. package/dist/types/utils/image-limits.d.ts +7 -0
  150. package/dist/types/utils/image-loading.d.ts +0 -1
  151. package/dist/types/utils/open.d.ts +0 -1
  152. package/dist/types/utils/pasted-image-loading.d.ts +1 -5
  153. package/dist/types/utils/prompt-suggestion.d.ts +2 -2
  154. package/dist/types/utils/shell-snapshot.d.ts +2 -0
  155. package/dist/types/utils/title-generator.d.ts +13 -3
  156. package/dist/types/web/scrapers/types.d.ts +8 -1
  157. package/dist/types/web/search/providers/codex.d.ts +6 -7
  158. package/dist/types/web/search/providers/insane.d.ts +7 -1
  159. package/dist/types/web/search/providers/searxng.d.ts +5 -0
  160. package/package.json +10 -9
  161. package/scripts/acp-conformance-agent.ts +12 -2
  162. package/scripts/build-binary.ts +2 -1
  163. package/scripts/capture-subagent-compact-panel-showcase.ts +105 -0
  164. package/scripts/generate-docs-index.ts +8 -1
  165. package/scripts/generate-sdk-operation-inventory.ts +38 -4
  166. package/src/async/job-manager.ts +356 -56
  167. package/src/async/result-formatting.ts +40 -0
  168. package/src/autoresearch/git.ts +9 -2
  169. package/src/autoresearch/prompts/prompt-setup.md +1 -1
  170. package/src/capability/fs.ts +58 -22
  171. package/src/capability/index.ts +2 -2
  172. package/src/capability/rule.ts +11 -2
  173. package/src/cli/accounts-cli.ts +176 -8
  174. package/src/cli/append-system-prompt.ts +12 -0
  175. package/src/cli/args.ts +11 -7
  176. package/src/cli/auth-broker-cli.ts +21 -11
  177. package/src/cli/customize-doctor-precedence.ts +31 -0
  178. package/src/cli/customize-doctor.ts +49 -39
  179. package/src/cli/doctor/install-repairs.ts +35 -5
  180. package/src/cli/fast-help.ts +1 -3
  181. package/src/cli/install-activation.ts +47 -4
  182. package/src/cli/migrate-cli.ts +19 -6
  183. package/src/cli/public-command-errors.ts +6 -0
  184. package/src/cli/root-flags.ts +2 -4
  185. package/src/cli/stats-cli.ts +9 -5
  186. package/src/cli/update-cli.ts +471 -13
  187. package/src/cli-ordinary.ts +7 -2
  188. package/src/commands/accounts.ts +10 -5
  189. package/src/commands/harness.ts +25 -15
  190. package/src/commands/migrate.ts +3 -3
  191. package/src/commands/sdk.ts +277 -50
  192. package/src/commands/ultragoal.ts +16 -8
  193. package/src/commit/agentic/agent.ts +6 -6
  194. package/src/commit/analysis/conventional.ts +14 -5
  195. package/src/commit/changelog/index.ts +39 -1
  196. package/src/commit/map-reduce/index.ts +7 -7
  197. package/src/commit/message.ts +10 -3
  198. package/src/commit/pipeline.ts +12 -12
  199. package/src/config/autorouting-tier-map.ts +50 -1
  200. package/src/config/config-file.ts +106 -3
  201. package/src/config/config-hot-reload-trust.ts +148 -0
  202. package/src/config/config-hot-reload.ts +742 -0
  203. package/src/config/file-lock.ts +1615 -328
  204. package/src/config/keybindings.ts +154 -7
  205. package/src/config/model-bindings-applier.ts +85 -47
  206. package/src/config/model-discovery-manager.ts +10 -0
  207. package/src/config/model-profile-activation.ts +889 -148
  208. package/src/config/model-registry.ts +1706 -205
  209. package/src/config/model-resolver.ts +52 -22
  210. package/src/config/models-config-schema.ts +6 -0
  211. package/src/config/settings-schema.ts +73 -4
  212. package/src/config/settings.ts +460 -24
  213. package/src/coordinator-mcp/policy.ts +26 -1
  214. package/src/coordinator-mcp/server.ts +37 -2
  215. package/src/crash/sanitize.ts +7 -1
  216. package/src/customization/import.ts +279 -8
  217. package/src/customization/inventory.ts +24 -8
  218. package/src/customization/types.ts +1 -0
  219. package/src/dap/client.ts +3 -2
  220. package/src/dap/config.ts +31 -11
  221. package/src/dap/defaults.json +1 -1
  222. package/src/dap/session.ts +161 -36
  223. package/src/debug/crash-diagnostics.ts +89 -6
  224. package/src/debug/report-bundle.ts +90 -2
  225. package/src/debug/system-info.ts +8 -3
  226. package/src/defaults/gjc/extensions/grok-cli-vendor/src/shared/base-url.ts +21 -7
  227. package/src/discovery/agents-md.ts +1 -1
  228. package/src/discovery/builtin.ts +4 -3
  229. package/src/discovery/helpers.ts +25 -16
  230. package/src/discovery/mcp-compat.ts +120 -17
  231. package/src/edit/apply-patch/index.ts +12 -1
  232. package/src/edit/index.ts +204 -22
  233. package/src/edit/modes/patch.ts +214 -8
  234. package/src/edit/modes/replace.ts +136 -0
  235. package/src/eval/js/context-manager.ts +29 -3
  236. package/src/eval/js/worker-entry.ts +51 -18
  237. package/src/eval/py/executor.ts +14 -4
  238. package/src/eval/py/runner.py +144 -5
  239. package/src/eval/py/runtime.ts +44 -4
  240. package/src/exec/bash-executor.ts +81 -4
  241. package/src/exec/bash-shell-guardian.ts +4 -1
  242. package/src/exec/bash-shell-supervisor.ts +8 -4
  243. package/src/exec/isolated-shell.ts +5 -1
  244. package/src/exec/non-interactive-env.ts +0 -1
  245. package/src/export/html/index.ts +86 -6
  246. package/src/export/ttsr.ts +176 -1
  247. package/src/extensibility/custom-tools/wrapper.ts +3 -1
  248. package/src/extensibility/extensions/loader.ts +10 -1
  249. package/src/extensibility/extensions/ouroboros-ooo-bridge.ts +63 -1
  250. package/src/extensibility/extensions/types.ts +5 -1
  251. package/src/extensibility/hooks/loader.ts +10 -2
  252. package/src/extensibility/plugins/marketplace/fetcher.ts +2 -2
  253. package/src/extensibility/plugins/marketplace/manager.ts +36 -10
  254. package/src/extensibility/slash-commands.ts +5 -0
  255. package/src/gjc-runtime/gc-runtime.ts +37 -7
  256. package/src/gjc-runtime/launch-tmux.ts +30 -15
  257. package/src/gjc-runtime/launch-worktree.test.ts +148 -0
  258. package/src/gjc-runtime/launch-worktree.ts +101 -14
  259. package/src/gjc-runtime/managed-owner-admission.ts +46 -2
  260. package/src/gjc-runtime/ralplan-current-final.ts +294 -0
  261. package/src/gjc-runtime/ralplan-runtime.ts +95 -1
  262. package/src/gjc-runtime/session-resolution.ts +38 -6
  263. package/src/gjc-runtime/session-state-lock.ts +59 -14
  264. package/src/gjc-runtime/state-runtime.ts +23 -19
  265. package/src/gjc-runtime/state-writer.ts +109 -5
  266. package/src/gjc-runtime/tmux-sessions.ts +93 -13
  267. package/src/gjc-runtime/ultragoal-change-set.ts +90 -11
  268. package/src/gjc-runtime/ultragoal-guard.ts +9 -1
  269. package/src/gjc-runtime/ultragoal-runtime.ts +15 -5
  270. package/src/harness-control-plane/finalize.ts +11 -0
  271. package/src/harness-control-plane/receipt-spool.ts +105 -28
  272. package/src/harness-control-plane/storage.ts +124 -6
  273. package/src/hindsight/content.ts +116 -16
  274. package/src/hindsight/mental-models.ts +22 -10
  275. package/src/hindsight/state.ts +7 -4
  276. package/src/hooks/native-skill-hook.ts +17 -12
  277. package/src/internal-urls/artifact-protocol.ts +3 -1
  278. package/src/internal-urls/docs-index.generated.ts +23 -22
  279. package/src/internal-urls/local-protocol.ts +167 -8
  280. package/src/internal-urls/types.ts +2 -0
  281. package/src/lsp/client.ts +2 -1
  282. package/src/lsp/clients/biome-client.ts +2 -0
  283. package/src/lsp/clients/swiftlint-client.ts +2 -0
  284. package/src/lsp/index.ts +29 -0
  285. package/src/lsp/workspace-path.ts +23 -0
  286. package/src/main.ts +330 -92
  287. package/src/memories/index.ts +25 -2
  288. package/src/migrate/action-planner.ts +574 -2
  289. package/src/migrate/adapters/claude-code.ts +162 -5
  290. package/src/migrate/adapters/codex.ts +77 -7
  291. package/src/migrate/adapters/index.ts +258 -5
  292. package/src/migrate/adapters/opencode.ts +10 -1
  293. package/src/migrate/executor.ts +222 -7
  294. package/src/migrate/hook-module.ts +193 -0
  295. package/src/migrate/report.ts +63 -2
  296. package/src/migrate/types.ts +84 -4
  297. package/src/modes/DESIGN.md +51 -0
  298. package/src/modes/acp/acp-agent.ts +10 -1
  299. package/src/modes/acp/permission-mode.ts +18 -1
  300. package/src/modes/components/agent-dashboard.ts +20 -4
  301. package/src/modes/components/assistant-message.ts +55 -1
  302. package/src/modes/components/customization/customization-dashboard.ts +7 -0
  303. package/src/modes/components/customization/import-wizard.ts +29 -3
  304. package/src/modes/components/model-selector.ts +157 -103
  305. package/src/modes/components/settings-selector.ts +103 -37
  306. package/src/modes/components/welcome.ts +3 -1
  307. package/src/modes/controllers/command-controller.ts +300 -9
  308. package/src/modes/controllers/event-controller.ts +1 -1
  309. package/src/modes/controllers/extension-ui-controller.ts +31 -1
  310. package/src/modes/controllers/goal-mode-controller.ts +79 -10
  311. package/src/modes/controllers/input-controller.ts +2 -0
  312. package/src/modes/controllers/plan-mode-controller.ts +66 -11
  313. package/src/modes/controllers/runtime-mcp-command-controller.ts +7 -6
  314. package/src/modes/controllers/selector-controller.ts +76 -7
  315. package/src/modes/interactive-mode.ts +123 -4
  316. package/src/modes/prompt-suggestion-controller.ts +1 -1
  317. package/src/modes/runtime-init.ts +5 -1
  318. package/src/modes/theme/theme.ts +15 -0
  319. package/src/modes/utils/host-status.ts +21 -10
  320. package/src/prompts/agent-fragments/browser-aside.md +2 -2
  321. package/src/prompts/system/irc-incoming.md +3 -1
  322. package/src/prompts/tools/debug.md +1 -1
  323. package/src/prompts/tools/irc.md +1 -1
  324. package/src/prompts/tools/read.md +1 -1
  325. package/src/prompts/tools/report-issue.md +13 -0
  326. package/src/prompts/tools/task.md +1 -1
  327. package/src/runtime-credential-selector.ts +2 -2
  328. package/src/runtime-mcp/content-limits.ts +7 -0
  329. package/src/runtime-mcp/manager-pool.test.ts +5 -4
  330. package/src/runtime-mcp/manager.ts +40 -3
  331. package/src/runtime-mcp/oauth-flow.ts +32 -6
  332. package/src/runtime-mcp/plugin-mcp-name-filter.ts +62 -0
  333. package/src/runtime-mcp/project-host-values.ts +12 -8
  334. package/src/runtime-mcp/render.ts +16 -1
  335. package/src/runtime-mcp/tool-bridge.ts +194 -21
  336. package/src/runtime-mcp/transports/stdio.ts +2 -1
  337. package/src/sdk/broker/broker-exit.ts +10 -5
  338. package/src/sdk/broker/broker.ts +484 -85
  339. package/src/sdk/broker/daemon-entry.ts +338 -116
  340. package/src/sdk/broker/doctor-restart.ts +2 -1
  341. package/src/sdk/broker/ensure.ts +1214 -268
  342. package/src/sdk/broker/hop.ts +286 -0
  343. package/src/sdk/broker/lifecycle-ledger.ts +38 -11
  344. package/src/sdk/broker/lifecycle.ts +102 -6
  345. package/src/sdk/broker/lock-host-identity.ts +29 -0
  346. package/src/sdk/broker/session-index.ts +91 -16
  347. package/src/sdk/broker/transport.ts +17 -1
  348. package/src/sdk/bus/chat-command-policy.ts +16 -3
  349. package/src/sdk/bus/chat-daemon-control.ts +2 -2
  350. package/src/sdk/bus/index.ts +460 -35
  351. package/src/sdk/bus/reconciliation-store.ts +201 -8
  352. package/src/sdk/bus/session-control.ts +2 -0
  353. package/src/sdk/bus/slack-daemon.ts +105 -9
  354. package/src/sdk/bus/telegram-daemon-contract.ts +9 -1
  355. package/src/sdk/bus/telegram-daemon.ts +10 -2
  356. package/src/sdk/bus/threaded-render.ts +20 -1
  357. package/src/sdk/cli/session-cli.ts +23 -6
  358. package/src/sdk/host/control/dispatch.ts +13 -1
  359. package/src/sdk/host/control/operations.ts +10 -1
  360. package/src/sdk/host/events.ts +67 -4
  361. package/src/sdk/host/host.ts +8 -2
  362. package/src/sdk/host/prompt-image-upload.ts +438 -0
  363. package/src/sdk/host/sdk-surface-parity.test.ts +15 -0
  364. package/src/sdk/host/session-runtime.test.ts +1737 -129
  365. package/src/sdk/host/session-runtime.ts +684 -83
  366. package/src/sdk/host/surface-policy.ts +4 -0
  367. package/src/sdk/host/websocket-transport.lifecycle.test.ts +90 -2
  368. package/src/sdk/host/websocket-transport.ts +19 -7
  369. package/src/sdk/lifecycle/service.ts +15 -1
  370. package/src/sdk/prompt-deadline-flush.ts +78 -5
  371. package/src/sdk/prompt-deadline-manager.ts +68 -14
  372. package/src/sdk/prompt-status.ts +6 -4
  373. package/src/sdk/protocol/adapter-validation.ts +81 -12
  374. package/src/sdk/protocol/operation-inventory.generated.json +261 -2
  375. package/src/sdk/protocol/operation-registry.ts +33 -3
  376. package/src/sdk/reconciliation-extensions.ts +1 -0
  377. package/src/sdk/session-list.ts +1 -0
  378. package/src/sdk/session.ts +237 -97
  379. package/src/session/agent-session.ts +2726 -479
  380. package/src/session/history-storage.ts +182 -12
  381. package/src/session/internal/managed-session-scope.ts +173 -57
  382. package/src/session/internal/managed-session-storage.ts +85 -12
  383. package/src/session/internal/native-publish-outcome.ts +5 -1
  384. package/src/session/messages.ts +47 -6
  385. package/src/session/session-manager.ts +326 -19
  386. package/src/session/startup-auth-config.ts +116 -8
  387. package/src/session/streaming-output.ts +262 -4
  388. package/src/session/terminal-abort.ts +14 -2
  389. package/src/session-import/redact.ts +53 -2
  390. package/src/session-import/service.ts +1 -0
  391. package/src/skill-state/workflow-mutation-guard.ts +2145 -206
  392. package/src/slash-commands/builtin-registry.ts +21 -6
  393. package/src/slash-commands/helpers/credential-switch.ts +10 -5
  394. package/src/slash-commands/helpers/mcp.ts +11 -3
  395. package/src/slash-commands/helpers/provider-auth-status.ts +456 -0
  396. package/src/ssh/ssh-executor.ts +9 -2
  397. package/src/stt/recorder.ts +26 -9
  398. package/src/system-prompt.ts +61 -16
  399. package/src/task/executor.ts +115 -20
  400. package/src/task/index.ts +389 -175
  401. package/src/task/role-body.ts +84 -0
  402. package/src/task/token-log-mode.test.ts +162 -0
  403. package/src/task/token-log.ts +91 -2
  404. package/src/tools/archive-reader.ts +650 -37
  405. package/src/tools/ask.ts +1 -0
  406. package/src/tools/ast-edit-write-path.ts +64 -0
  407. package/src/tools/ast-edit.ts +18 -1
  408. package/src/tools/ast-grep.ts +7 -2
  409. package/src/tools/atomic-file-write.ts +46 -15
  410. package/src/tools/auto-generated-guard.ts +15 -3
  411. package/src/tools/awaiting-input.ts +114 -0
  412. package/src/tools/bash-allowed-prefixes.ts +214 -6
  413. package/src/tools/bash-interactive.ts +14 -2
  414. package/src/tools/bash-skill-urls.ts +58 -5
  415. package/src/tools/bash.ts +113 -26
  416. package/src/tools/browser/tab-worker.ts +39 -13
  417. package/src/tools/browser.ts +17 -7
  418. package/src/tools/cron.ts +10 -1
  419. package/src/tools/debug.ts +16 -8
  420. package/src/tools/descriptors.test.ts +44 -0
  421. package/src/tools/descriptors.ts +50 -6
  422. package/src/tools/eval.ts +15 -0
  423. package/src/tools/fetch.ts +93 -4
  424. package/src/tools/gh.ts +27 -12
  425. package/src/tools/image-gen.ts +20 -6
  426. package/src/tools/index.ts +2 -0
  427. package/src/tools/irc.ts +5 -3
  428. package/src/tools/monitor.ts +9 -1
  429. package/src/tools/output-meta.ts +74 -5
  430. package/src/tools/python.ts +1 -1
  431. package/src/tools/read.ts +26 -37
  432. package/src/tools/recipe/runner.ts +23 -12
  433. package/src/tools/render-utils.ts +2 -2
  434. package/src/tools/report-issue.ts +184 -0
  435. package/src/tools/search.ts +3 -2
  436. package/src/tools/ssh.ts +274 -8
  437. package/src/tools/subagent-render.ts +114 -12
  438. package/src/tools/subagent.ts +118 -5
  439. package/src/tools/tmux-self-injection-guard.ts +3301 -122
  440. package/src/tools/todo-write.ts +41 -3
  441. package/src/tools/tool-catalog.generated.ts +32 -4
  442. package/src/tools/ultragoal-ask-guard.ts +13 -1
  443. package/src/tools/write.ts +42 -3
  444. package/src/tui/tree-list.ts +15 -1
  445. package/src/utils/commit-message-generator.ts +12 -4
  446. package/src/utils/external-editor.ts +21 -7
  447. package/src/utils/file-mentions.ts +75 -7
  448. package/src/utils/git.ts +38 -7
  449. package/src/utils/image-limits.ts +8 -0
  450. package/src/utils/image-loading.ts +1 -1
  451. package/src/utils/open.ts +73 -4
  452. package/src/utils/pasted-image-loading.ts +9 -8
  453. package/src/utils/prompt-suggestion.ts +5 -4
  454. package/src/utils/shell-snapshot.ts +9 -1
  455. package/src/utils/title-generator.ts +72 -22
  456. package/src/web/scrapers/index.ts +3 -1
  457. package/src/web/scrapers/types.ts +8 -0
  458. package/src/web/scrapers/youtube.ts +3 -2
  459. package/src/web/search/index.ts +2 -1
  460. package/src/web/search/providers/codex.ts +29 -32
  461. package/src/web/search/providers/insane.ts +91 -28
  462. package/src/web/search/providers/searxng.ts +62 -10
@@ -1,7 +1,9 @@
1
- import type { NativeDirectoryTreeResult, NativeExactUnlinkResult } from "@gajae-code/natives";
1
+ import type { NativeDirectoryTreeResult, NativeDirectoryTreeSnapshot, NativeExactUnlinkResult } from "@gajae-code/natives";
2
2
  import { renameDirectoryNoReplacePathAsync, renameNoReplacePathAsync } from "@gajae-code/natives";
3
3
  export interface FileLockOptions {
4
4
  staleMs?: number;
5
+ /** Age after which an ownerless removal transition may be adopted; defaults to `staleMs`. */
6
+ orphanTransitionAgeMs?: number;
5
7
  retries?: number;
6
8
  retryDelayMs?: number;
7
9
  signal?: AbortSignal;
@@ -13,6 +15,7 @@ export interface FileLockOptions {
13
15
  previousOwnerHostIds?: readonly string[];
14
16
  }
15
17
  export type FileLockAcquireReason = "acquire_timeout" | "orphan_transition";
18
+ export type FileLockPublicationFailureCode = "access_denied" | "sharing_violation";
16
19
  /**
17
20
  * Why the acquire path could not retire a lock directory whose owner it had already
18
21
  * proven dead. Attached to `FileLockAcquireError` so a host whose lock-removal path
@@ -38,20 +41,57 @@ export declare class FileLockAcquireError extends Error {
38
41
  readonly reason: FileLockAcquireReason;
39
42
  readonly orphanPath?: string | undefined;
40
43
  readonly removalFailure?: FileLockStaleRemovalFailure | undefined;
44
+ readonly publicationFailureCode?: FileLockPublicationFailureCode | undefined;
45
+ /** True only when exhaustion proved a same-host owner process is live. */
46
+ readonly holderIsLive: boolean;
41
47
  readonly code: FileLockAcquireReason;
42
- constructor(filePath: string, lockPath: string, attempts: number, holder: string, reason?: FileLockAcquireReason, orphanPath?: string | undefined, removalFailure?: FileLockStaleRemovalFailure | undefined);
48
+ constructor(filePath: string, lockPath: string, attempts: number, holder: string, reason?: FileLockAcquireReason, orphanPath?: string | undefined, removalFailure?: FileLockStaleRemovalFailure | undefined, publicationFailureCode?: FileLockPublicationFailureCode | undefined,
49
+ /** True only when exhaustion proved a same-host owner process is live. */
50
+ holderIsLive?: boolean);
51
+ }
52
+ export declare class FileLockStagingCleanupError extends Error {
53
+ readonly lockPath: string;
54
+ readonly stagingPath: string;
55
+ readonly code: string | undefined;
56
+ constructor(lockPath: string, stagingPath: string, cause: unknown);
43
57
  }
44
58
  export declare function isFileLockAcquireTimeout(error: unknown): error is FileLockAcquireError;
59
+ type FileLockStagingFileIdentity = {
60
+ dev: string;
61
+ ino: string;
62
+ };
63
+ type FileLockStagingRootIdentity = {
64
+ rootDev: string;
65
+ rootIno: string;
66
+ treeSnapshot?: NativeDirectoryTreeSnapshot;
67
+ infoFileIdentity?: FileLockStagingFileIdentity;
68
+ };
69
+ export declare const FILE_LOCK_ORPHAN_TRANSITION_ADOPTION_AGE_MS: number;
45
70
  /** Release retries cover transient handle denial and a competing exact-removal quarantine cleanup. */
46
71
  export declare const FILE_LOCK_RELEASE_RETRY_ATTEMPTS = 20;
47
72
  export declare const FILE_LOCK_RELEASE_RETRY_DELAY_MS = 25;
48
73
  export declare const FileLockTestHooks: {
49
74
  afterParentMkdir?: (lockPath: string) => void | Promise<void>;
75
+ afterStagingInfoWrite?: (stagingPath: string) => void | Promise<void>;
76
+ stagingInfoIdentity?: (infoPath: string, capture: () => Promise<FileLockStagingFileIdentity>) => Promise<FileLockStagingFileIdentity>;
77
+ stagingInfoCleanup?: (infoPath: string, callerFd: number, quarantineName: string) => NativeExactUnlinkResult | Promise<NativeExactUnlinkResult>;
78
+ beforeDetachedLockCleanup?: (detachedPath: string) => boolean | Promise<boolean>;
79
+ afterRemovalOwnerPublish?: (transitionPath: string) => void | Promise<void>;
80
+ afterRemovalTransitionMissing?: (transitionPath: string) => void | Promise<void>;
81
+ afterForeignTransitionMissing?: (transitionPath: string) => void | Promise<void>;
82
+ beforeRemovalRecordUnlink?: (recordPath: string) => boolean | Promise<boolean>;
50
83
  beforeRemovalOwnerPublish?: (transitionPath: string) => void | Promise<void>;
84
+ cleanupPendingStaging?: (stagingPath: string) => Promise<void>;
85
+ stagingRootIdentity?: (stagingPath: string) => FileLockStagingRootIdentity | Promise<FileLockStagingRootIdentity>;
51
86
  nativePublicationBindings?: () => {
52
87
  renameNoReplacePathAsync: typeof renameNoReplacePathAsync;
53
88
  renameDirectoryNoReplacePathAsync: typeof renameDirectoryNoReplacePathAsync;
54
89
  };
90
+ stagingIdentityEvidence?: () => {
91
+ processIncarnation: string | null;
92
+ startTime: string | null;
93
+ };
94
+ processIncarnation?: (pid: number) => string | null;
55
95
  nativeQuarantineBindings?: () => NativeFileLockBindings;
56
96
  nativeExactRemovalProbe?: () => boolean | Promise<boolean>;
57
97
  };
@@ -170,6 +210,15 @@ type NativeFileLockBindings = {
170
210
  }, detachOnly?: boolean): NativeExactUnlinkResult;
171
211
  };
172
212
  export declare function acquireFileLock(filePath: string, options?: FileLockOptions): Promise<() => Promise<void>>;
213
+ /**
214
+ * Describes the retained removal transition blocking `filePath`, if one exists.
215
+ *
216
+ * `acquireFileLock` reports this on exhaustion, but a caller whose own budget
217
+ * aborts the acquisition first would otherwise never learn that a stale
218
+ * transition — not ordinary contention — is what blocked it. Such a caller can
219
+ * ask directly after an abort so the block is surfaced instead of swallowed.
220
+ */
221
+ export declare function describeRetainedLockTransition(filePath: string, options?: FileLockOptions): Promise<FileLockAcquireError | undefined>;
173
222
  /**
174
223
  * Serializes all contenders, including callers in the same process. Because this
175
224
  * API exposes no ownership token, recursive acquisition is indistinguishable
@@ -177,7 +226,7 @@ export declare function acquireFileLock(filePath: string, options?: FileLockOpti
177
226
  * that fact through its own `lockHeld` path instead of acquiring it again.
178
227
  */
179
228
  export declare function withFileLock<T>(filePath: string, fn: () => Promise<T>, options?: FileLockOptions): Promise<T>;
180
- /** Strictly recognize the staging names emitted by tryAcquireLock. */
229
+ /** Return a name-encoded staging PID for GC discovery. */
181
230
  export declare function fileLockStagingOwnerPid(name: string): number | null;
182
231
  export interface FileLockStagingResult {
183
232
  path: string;
@@ -53,6 +53,8 @@ export declare class ModelDiscoveryManager<TProvider extends DiscoveryProvider>
53
53
  get providers(): readonly TProvider[];
54
54
  providerIds(): Set<string>;
55
55
  getState(provider: string): ProviderDiscoveryState | undefined;
56
+ /** Retain accepted discovery evidence for unchanged providers during a local reload. */
57
+ retainStatesFrom(source: ModelDiscoveryManager<TProvider>, providers: ReadonlySet<string>): void;
56
58
  invalidate(provider: string): void;
57
59
  loadCached(provider: TProvider, cacheDbPath?: string, expectedProvenance?: string): readonly Model<Api>[];
58
60
  beginRefresh(provider: string): DiscoveryRefreshToken;
@@ -1,6 +1,6 @@
1
1
  import { ThinkingLevel } from "@gajae-code/agent-core";
2
2
  import { type Api, type Model } from "@gajae-code/ai/core";
3
- import type { AgentSession, DefaultFallbackRuntimeState } from "../session/agent-session";
3
+ import type { AgentSession, AgentSessionProfileInstalledOverrideState, DefaultFallbackRuntimeState } from "../session/agent-session";
4
4
  import { type ModelProfileDefinition } from "./model-profiles";
5
5
  export { resolveModelProfileName } from "./model-profile-contract";
6
6
  import { type GjcModelAssignmentTargetId, type ModelRegistry } from "./model-registry";
@@ -13,10 +13,20 @@ type UserCanonicalVariantSelection = {
13
13
  type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel" | "sessionId" | "getConfiguredModelChain" | "setConfiguredModelChain"> & {
14
14
  credentialSessionId?: string;
15
15
  setModelTemporary?: AgentSession["setModelTemporary"];
16
- setActiveModelProfile?: (name: string | undefined) => void;
16
+ setActiveModelProfile?: (name: string | undefined, activatedByThisProcess?: boolean) => void;
17
17
  getActiveModelProfile?: () => string | undefined;
18
+ getActivatedModelProfile?: () => string | undefined;
18
19
  /** Record which runtime override keys this activation installed (session-scoped). */
19
- noteProfileInstalledOverrides?: (modelRoles: readonly string[], agentModelOverrides: readonly string[], preProfileModel: Model<Api> | undefined) => void;
20
+ noteProfileInstalledOverrides?: (modelRoles: readonly string[], agentModelOverrides: readonly string[], preProfileModel: Model<Api> | undefined, baseline?: {
21
+ modelRoles: Readonly<Record<string, ModelSelectorValue>>;
22
+ agentModelOverrides: Readonly<Record<string, ModelSelectorValue>>;
23
+ }, installed?: {
24
+ modelRoles: Readonly<Record<string, ModelSelectorValue>>;
25
+ agentModelOverrides: Readonly<Record<string, ModelSelectorValue>>;
26
+ }, manual?: {
27
+ modelRoles: readonly string[];
28
+ agentModelOverrides: readonly string[];
29
+ }, configuredDefaultChain?: readonly string[]) => void;
20
30
  /** Drop the recorded profile-installed override keys (e.g. after materialization). */
21
31
  clearProfileInstalledOverrides?: () => void;
22
32
  /** Current profile-installed override keys, for deriving the activation base. */
@@ -24,11 +34,15 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
24
34
  modelRoles: readonly string[];
25
35
  agentModelOverrides: readonly string[];
26
36
  };
37
+ /** Profile-installed baselines, preserved when a refreshed profile drops an assignment. */
38
+ getProfileInstalledOverrideState?: () => AgentSessionProfileInstalledOverrideState;
39
+ restoreProfileInstalledOverrideState?: (state: AgentSessionProfileInstalledOverrideState) => void;
27
40
  /** Re-apply vendor-separated delegation (task tool + prompt) after the role layer changed. */
28
41
  syncEagerDelegation?: () => Promise<void>;
29
42
  getSessionDefaultModelSelector?: () => string | undefined;
30
43
  recordResumeDefaultModel?: (selector: string | undefined) => void;
31
44
  getUserCanonicalVariantSelection?: () => UserCanonicalVariantSelection;
45
+ getUserModelSelectionRevision?: () => number;
32
46
  seedDefaultFallbackResolution?: (activeIndex: number, skips: Array<{
33
47
  selector: string;
34
48
  reason: string;
@@ -36,7 +50,10 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
36
50
  getDefaultFallbackRuntimeState?: () => DefaultFallbackRuntimeState;
37
51
  restoreDefaultFallbackRuntimeState?: (state: DefaultFallbackRuntimeState) => void;
38
52
  restoreModelSelectionForRollback?: AgentSession["restoreModelSelectionForRollback"];
39
- modelRegistry?: Pick<ModelRegistry, "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "clearCanonicalVariant" | "getAvailable" | "lookupAliasExists" | "resolveModelByLookupAlias" | "authStorage" | "isCredentiallessProvider">;
53
+ prepareModelSelectionForProfileActivation?: AgentSession["prepareModelSelectionForProfileActivation"];
54
+ commitPreparedProfileModelSelection?: AgentSession["commitPreparedProfileModelSelection"];
55
+ finishPreparedProfileModelSelection?: AgentSession["finishPreparedProfileModelSelection"];
56
+ modelRegistry?: Pick<ModelRegistry, "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "clearCanonicalVariant" | "getModelProfile" | "getAvailable" | "lookupAliasExists" | "resolveModelByLookupAlias" | "authStorage" | "isCredentiallessProvider"> & Partial<Pick<ModelRegistry, "seedCanonicalVariant">>;
40
57
  getConfiguredModelChainState?: (role: string) => ConfiguredModelChainState | undefined;
41
58
  };
42
59
  type ConfiguredModelChainState = {
@@ -45,18 +62,46 @@ type ConfiguredModelChainState = {
45
62
  identity?: string;
46
63
  explicitHead: boolean;
47
64
  };
65
+ type PublishedModelProfileActivationState = {
66
+ model: Model<Api> | undefined;
67
+ thinkingLevel: ThinkingLevel | undefined;
68
+ modelRolesOverride: Readonly<Record<string, ModelSelectorValue>> | undefined;
69
+ agentModelOverridesOverride: Readonly<Record<string, ModelSelectorValue>> | undefined;
70
+ defaultChainState: ConfiguredModelChainState | undefined;
71
+ defaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
72
+ activeModelProfile: string | undefined;
73
+ activatedModelProfile: string | undefined;
74
+ profileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
75
+ sessionDefaultModel: string | undefined;
76
+ persistedModelRoles: Readonly<Record<string, ModelSelectorValue>> | undefined;
77
+ persistedAgentModelOverrides: Readonly<Record<string, ModelSelectorValue>> | undefined;
78
+ persistedDefaultProfile: string | undefined;
79
+ persistedDefaultThinkingLevel: Exclude<ThinkingLevel, "inherit"> | undefined;
80
+ defaultThinkingLevelOverride: Exclude<ThinkingLevel, "inherit"> | undefined;
81
+ defaultProfileOverride: string | undefined;
82
+ };
48
83
  export interface PrepareModelProfileActivationOptions {
49
84
  session: ModelProfileActivationSession;
50
- modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId" | "isSelectorCircuitOpen"> & Partial<Pick<ModelRegistry, "getAvailable" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds" | "isKnownProvider">> & {
85
+ modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId" | "isSelectorCircuitOpen"> & Partial<Pick<ModelRegistry, "getAvailable" | "hasUsableAuthForProvider" | "isStagedReloadCandidate" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds" | "getConfiguredModelBindings" | "isKnownProvider">> & {
51
86
  getError?: ModelRegistry["getError"];
52
87
  authStorage?: ModelRegistry["authStorage"];
53
88
  };
54
89
  settings: Pick<Settings, "get" | "getGlobal" | "getOverride">;
90
+ /** Live mutation target when `settings` is a validated staged view. */
91
+ settingsForApply?: Settings;
92
+ prepareSessionModelSelection?: boolean;
93
+ preserveManualOverrides?: boolean;
94
+ preserveCanonicalVariant?: boolean;
95
+ signal?: AbortSignal;
55
96
  profileName: string;
56
97
  }
57
98
  export interface ApplyModelProfileActivationOptions {
58
99
  persistDefault?: boolean;
59
100
  thinkingLevelOverride?: ThinkingLevel;
101
+ preserveDefaultModelSelection?: boolean;
102
+ preserveLiveModelSelection?: boolean;
103
+ deferRuntimePublication?: boolean;
104
+ signal?: AbortSignal;
60
105
  /** Cancels deferred activation if a newer user model selection exists. */
61
106
  isCurrent?: () => boolean;
62
107
  }
@@ -77,11 +122,16 @@ export interface PreparedModelProfileActivation {
77
122
  previousDefaultProfileOverride: string | undefined;
78
123
  previousPersistedDefaultProfile: string | undefined;
79
124
  previousPersistedDefaultThinkingLevel: Exclude<ThinkingLevel, "inherit"> | undefined;
80
- previousDefaultThinkingLevelOverride: ThinkingLevel | undefined;
125
+ previousDefaultThinkingLevelOverride: Exclude<ThinkingLevel, "inherit"> | undefined;
81
126
  baseAgentModelOverrides: Record<string, ModelSelectorValue>;
82
127
  baseModelRoles: Record<string, ModelSelectorValue>;
83
128
  previousDefaultChain: readonly string[] | undefined;
84
129
  previousDefaultChainState: ConfiguredModelChainState | undefined;
130
+ previousProfileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
131
+ preparedDefaultModelSelection: Awaited<ReturnType<NonNullable<ModelProfileActivationSession["prepareModelSelectionForProfileActivation"]>>> | undefined;
132
+ defaultChainPublished: boolean;
133
+ defaultModelPublished: boolean;
134
+ publishedState: PublishedModelProfileActivationState | undefined;
85
135
  previousDefaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
86
136
  defaultModel: Model<Api> | undefined;
87
137
  defaultThinkingLevel: ThinkingLevel | undefined;
@@ -96,7 +146,10 @@ export interface PreparedModelProfileActivation {
96
146
  }>;
97
147
  modelRoles: Record<string, ModelSelectorValue>;
98
148
  agentModelOverrides: Record<string, ModelSelectorValue>;
149
+ manualModelRoleOverrides: ReadonlySet<string>;
150
+ manualAgentModelOverrides: ReadonlySet<string>;
99
151
  previousActiveModelProfile: string | undefined;
152
+ previousActivatedModelProfile: string | undefined;
100
153
  /**
101
154
  * The session resume default ("provider/id") captured BEFORE activation —
102
155
  * the model resume would restore prior to this profile. Snapshotted
@@ -119,16 +172,26 @@ export interface PreparedModelProfileActivation {
119
172
  modelRegistry: PrepareModelProfileActivationOptions["modelRegistry"];
120
173
  }
121
174
  export interface MaterializeModelProfileAssignmentOptions {
122
- session: Pick<ModelProfileActivationSession, "model" | "thinkingLevel" | "sessionId" | "credentialSessionId" | "getConfiguredModelChain" | "getConfiguredModelChainState" | "setConfiguredModelChain" | "setActiveModelProfile" | "getActiveModelProfile" | "getDefaultFallbackRuntimeState" | "restoreDefaultFallbackRuntimeState" | "modelRegistry" | "clearProfileInstalledOverrides">;
175
+ session: Pick<ModelProfileActivationSession, "model" | "thinkingLevel" | "sessionId" | "credentialSessionId" | "getConfiguredModelChain" | "getConfiguredModelChainState" | "setConfiguredModelChain" | "setActiveModelProfile" | "getActiveModelProfile" | "getActivatedModelProfile" | "getProfileInstalledOverrideState" | "getDefaultFallbackRuntimeState" | "restoreDefaultFallbackRuntimeState" | "modelRegistry" | "clearProfileInstalledOverrides">;
123
176
  settings: Pick<Settings, "clearOverride" | "get" | "getGlobal" | "getOverride" | "override" | "set" | "unset">;
124
177
  role: GjcModelAssignmentTargetId;
125
178
  selector: string;
126
179
  }
127
180
  export interface MaterializeModelProfileAssignmentsOptions {
128
- session: Pick<ModelProfileActivationSession, "model" | "thinkingLevel" | "sessionId" | "credentialSessionId" | "getConfiguredModelChain" | "getConfiguredModelChainState" | "setConfiguredModelChain" | "setActiveModelProfile" | "getActiveModelProfile" | "getDefaultFallbackRuntimeState" | "restoreDefaultFallbackRuntimeState" | "modelRegistry" | "clearProfileInstalledOverrides">;
181
+ session: Pick<ModelProfileActivationSession, "model" | "thinkingLevel" | "sessionId" | "credentialSessionId" | "getConfiguredModelChain" | "getConfiguredModelChainState" | "setConfiguredModelChain" | "setActiveModelProfile" | "getActiveModelProfile" | "getActivatedModelProfile" | "getProfileInstalledOverrideState" | "getDefaultFallbackRuntimeState" | "restoreDefaultFallbackRuntimeState" | "modelRegistry" | "clearProfileInstalledOverrides">;
129
182
  settings: Pick<Settings, "clearOverride" | "get" | "getGlobal" | "getOverride" | "override" | "set" | "unset">;
130
183
  assignments: ReadonlyMap<GjcModelAssignmentTargetId, string> | Partial<Record<GjcModelAssignmentTargetId, string>>;
131
184
  }
185
+ /**
186
+ * Resolve the profile a materialization may consume.
187
+ *
188
+ * Only a profile this process actually activated owns role-only materialization.
189
+ * A persisted profile whose activation failed or was only restored from history
190
+ * stays in place. An explicit default selection may supersede that durable profile.
191
+ */
192
+ export declare function resolveMaterializationProfileIdentity(activatedProfile: string | undefined, durableProfile: string | undefined, includesDefault: boolean): string | undefined;
193
+ /** Resolve startup-override materialization in activated-chain, profile, then global-default order. */
194
+ export declare function resolveMaterializedDefaultSelector(activatedDefaultChain: readonly string[] | undefined, profileDefault: ModelSelectorValue | undefined, globalDefault: ModelSelectorValue | undefined): ModelSelectorValue | undefined;
132
195
  export declare function materializeActiveModelProfileAssignment(options: MaterializeModelProfileAssignmentOptions): boolean;
133
196
  export declare function materializeActiveModelProfileAssignments(options: MaterializeModelProfileAssignmentsOptions): boolean;
134
197
  export declare class ModelProfileCredentialError extends Error {
@@ -253,7 +316,12 @@ export declare function resolveModelProfileDefaultChain(options: {
253
316
  }>;
254
317
  export declare function rewriteSelectorForProxy(selector: string, proxyProvider: string, proxyMode: ModelProfileProxyMode, allModels: Model<Api>[], directlyAuthenticated: ReadonlySet<string>, routableProviders: ReadonlySet<string>): string;
255
318
  export declare function prepareModelProfileActivation(options: PrepareModelProfileActivationOptions): Promise<PreparedModelProfileActivation>;
319
+ /** Publish the prepared model selection and role layer without awaiting. */
320
+ export declare function publishPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: Pick<ApplyModelProfileActivationOptions, "preserveDefaultModelSelection" | "preserveLiveModelSelection">): void;
321
+ export declare function finishPreparedModelProfileActivation(prepared: PreparedModelProfileActivation): Promise<void>;
256
322
  export declare function applyPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: ApplyModelProfileActivationOptions): Promise<void>;
323
+ /** Restore an applied activation when its enclosing settings/registry commit fails. */
324
+ export declare function rollbackPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: ApplyModelProfileActivationOptions): Promise<void>;
257
325
  export interface MaterializeModelProfileForDeletionResult {
258
326
  modelRoles: Record<string, ModelSelectorValue>;
259
327
  agentModelOverrides: Record<string, ModelSelectorValue>;
@@ -267,8 +335,10 @@ export interface MaterializeModelProfileForDeletionResult {
267
335
  previousDefaultProfile: string | undefined;
268
336
  previousPersistedDefaultProfile: string | undefined;
269
337
  previousActiveModelProfile: string | undefined;
338
+ previousActivatedModelProfile: string | undefined;
270
339
  previousDefaultChainState: ConfiguredModelChainState | undefined;
271
340
  previousDefaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
341
+ previousProfileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
272
342
  /**
273
343
  * Restores the session sticky canonical variant that was snapshotted before
274
344
  * materialization cleared it. Internal closure capturing the registry,
@@ -283,7 +353,7 @@ export declare function materializeModelProfileForDeletion(options: PrepareModel
283
353
  }): Promise<MaterializeModelProfileForDeletionResult>;
284
354
  export declare function restoreMaterializedModelProfileForDeletion(options: {
285
355
  settings: Pick<Settings, "clearOverride" | "flushOrThrow" | "override" | "set" | "unset">;
286
- session: Pick<ModelProfileActivationSession, "setActiveModelProfile" | "setConfiguredModelChain" | "restoreDefaultFallbackRuntimeState">;
356
+ session: Pick<ModelProfileActivationSession, "setActiveModelProfile" | "setConfiguredModelChain" | "restoreDefaultFallbackRuntimeState" | "restoreProfileInstalledOverrideState">;
287
357
  snapshot: MaterializeModelProfileForDeletionResult;
288
358
  }): Promise<void>;
289
359
  export declare function activateModelProfile(options: PrepareModelProfileActivationOptions, applyOptions?: ApplyModelProfileActivationOptions): Promise<void>;
@@ -5,15 +5,15 @@ import { type ActiveProviderDescriptor } from "../sdk/providers";
5
5
  import type { AuthStorage } from "../session/auth-storage";
6
6
  import type { ActiveSearchModelContext, WebSearchMode } from "../web/search/types";
7
7
  import { type BillingPath } from "./billing-path";
8
- import { ConfigError, ConfigFile } from "./config-file";
8
+ import { ConfigError, ConfigFile, type LoadResult } from "./config-file";
9
9
  import { isAuthenticated, kNoAuth } from "./model-auth";
10
10
  import { type ConfiguredModelBindings } from "./model-bindings-applier";
11
11
  import { type ProviderDiscoveryState } from "./model-discovery-manager";
12
- import { type ModelPresetRegistryDependencies, type ModelPresetRegistryRefreshResult } from "./model-preset-registry";
12
+ import { type AcceptedModelPresetRegistry, type ModelPresetRegistryDependencies, type ModelPresetRegistryRefreshResult } from "./model-preset-registry";
13
13
  export type { ProviderDiscoveryState, ProviderDiscoveryStatus } from "./model-discovery-manager";
14
14
  import { type CanonicalModelIndex, type CanonicalModelRecord, type CanonicalModelVariant, type ModelEquivalenceConfig } from "./model-equivalence";
15
15
  import { type ModelProfileDefinition } from "./model-profiles";
16
- import { GJC_MODEL_ASSIGNMENT_TARGET_IDS, type ModelProfileConfig } from "./models-config-schema";
16
+ import { GJC_MODEL_ASSIGNMENT_TARGET_IDS, type ModelProfileConfig, type ModelsConfig } from "./models-config-schema";
17
17
  import { type EffectiveProviderAuth } from "./provider-selection-policy";
18
18
  import { type Settings } from "./settings";
19
19
  export type { BillingPath, BillingPathKind } from "./billing-path";
@@ -78,6 +78,7 @@ export declare const ModelsConfigFile: ConfigFile<{
78
78
  sendSessionHeaders?: boolean | undefined;
79
79
  supportsResponsesSessionAffinity?: boolean | undefined;
80
80
  supportsServiceTier?: boolean | undefined;
81
+ supportsUltrafastTier?: boolean | undefined;
81
82
  supportsMultipleSystemMessages?: boolean | undefined;
82
83
  supportsReasoningEffort?: boolean | undefined;
83
84
  reasoningEffortMap?: {
@@ -163,6 +164,7 @@ export declare const ModelsConfigFile: ConfigFile<{
163
164
  sendSessionHeaders?: boolean | undefined;
164
165
  supportsResponsesSessionAffinity?: boolean | undefined;
165
166
  supportsServiceTier?: boolean | undefined;
167
+ supportsUltrafastTier?: boolean | undefined;
166
168
  supportsMultipleSystemMessages?: boolean | undefined;
167
169
  supportsReasoningEffort?: boolean | undefined;
168
170
  reasoningEffortMap?: {
@@ -212,6 +214,7 @@ export declare const ModelsConfigFile: ConfigFile<{
212
214
  extraBody?: Record<string, unknown> | undefined;
213
215
  } | undefined;
214
216
  cacheRetention?: "long" | "none" | "short" | undefined;
217
+ streamIdleTimeoutMs?: number | undefined;
215
218
  }[] | undefined;
216
219
  modelOverrides?: Record<string, {
217
220
  name?: string | undefined;
@@ -241,6 +244,7 @@ export declare const ModelsConfigFile: ConfigFile<{
241
244
  sendSessionHeaders?: boolean | undefined;
242
245
  supportsResponsesSessionAffinity?: boolean | undefined;
243
246
  supportsServiceTier?: boolean | undefined;
247
+ supportsUltrafastTier?: boolean | undefined;
244
248
  supportsMultipleSystemMessages?: boolean | undefined;
245
249
  supportsReasoningEffort?: boolean | undefined;
246
250
  reasoningEffortMap?: {
@@ -290,10 +294,12 @@ export declare const ModelsConfigFile: ConfigFile<{
290
294
  extraBody?: Record<string, unknown> | undefined;
291
295
  } | undefined;
292
296
  cacheRetention?: "long" | "none" | "short" | undefined;
297
+ streamIdleTimeoutMs?: number | undefined;
293
298
  }> | undefined;
294
299
  disableStrictTools?: boolean | undefined;
295
300
  transport?: "pi-native" | undefined;
296
301
  cacheRetention?: "long" | "none" | "short" | undefined;
302
+ streamIdleTimeoutMs?: number | undefined;
297
303
  openaiCompat?: {
298
304
  baseUrl: string;
299
305
  apiKey?: string | undefined;
@@ -325,6 +331,7 @@ interface ProviderOverride {
325
331
  transport?: Model<Api>["transport"];
326
332
  requestTransform?: ModelRequestTransform;
327
333
  cacheRetention?: CacheRetention;
334
+ streamIdleTimeoutMs?: number;
328
335
  isOAuth?: boolean;
329
336
  }
330
337
  /**
@@ -359,7 +366,7 @@ export declare function registrySelectorResolvesToModel(selector: string, index:
359
366
  * See `xiaomi-tp-discovery-merge.test.ts` and the `refresh()` baseUrl-override
360
367
  * regression in `model-registry.test.ts`.
361
368
  */
362
- export declare function mergeDiscoveredModel<TApi extends Api>(model: Model<TApi>, existing: Model<Api> | undefined, providerOverride?: Pick<ProviderOverride, "baseUrl" | "headers" | "transport" | "requestTransform" | "cacheRetention">): Model<TApi>;
369
+ export declare function mergeDiscoveredModel<TApi extends Api>(model: Model<TApi>, existing: Model<Api> | undefined, providerOverride?: Pick<ProviderOverride, "baseUrl" | "headers" | "transport" | "requestTransform" | "cacheRetention" | "streamIdleTimeoutMs">): Model<TApi>;
363
370
  export interface CanonicalModelQueryOptions {
364
371
  availableOnly?: boolean;
365
372
  candidates?: readonly Model<Api>[];
@@ -373,6 +380,27 @@ export interface CanonicalModelSelection {
373
380
  record: CanonicalModelRecord;
374
381
  model: Model<Api> | undefined;
375
382
  }
383
+ /** Internal pure parser shared by discovery; exported for regression coverage. */
384
+ export declare function extractGoogleOAuthProjectId(value: string | undefined, accessToken: string): string | undefined;
385
+ export interface ModelsConfigReloadCandidate {
386
+ readonly valid: boolean;
387
+ readonly changed: boolean;
388
+ readonly diagnostics: {
389
+ readonly valid: boolean;
390
+ readonly errors: readonly unknown[];
391
+ };
392
+ readonly registry: ModelRegistry;
393
+ isCurrent(): boolean;
394
+ commit(): void;
395
+ rollback(): void;
396
+ finalize(): void;
397
+ }
398
+ interface ModelRegistryInternalOptions {
399
+ readonly configFile: ConfigFile<ModelsConfig>;
400
+ readonly configSource: LoadResult<ModelsConfig>;
401
+ readonly runtimeSource: ModelRegistry;
402
+ readonly acceptedPresets: AcceptedModelPresetRegistry;
403
+ }
376
404
  /**
377
405
  * Model registry - loads and manages models, resolves API keys via AuthStorage.
378
406
  */
@@ -382,7 +410,15 @@ export declare class ModelRegistry {
382
410
  /**
383
411
  * @param authStorage - Auth storage for API key resolution
384
412
  */
385
- constructor(authStorage: AuthStorage, modelsPath?: string, registrySettings?: Pick<Settings, "get" | "getGlobal"> & Partial<Pick<Settings, "commitAtomicBatchWithCurrent">>, modelPresetRegistryDependencies?: ModelPresetRegistryDependencies);
413
+ constructor(authStorage: AuthStorage, modelsPath?: string, registrySettings?: Pick<Settings, "get" | "getGlobal"> & Partial<Pick<Settings, "commitAtomicBatchWithCurrent">>, modelPresetRegistryDependencies?: ModelPresetRegistryDependencies, internalOptions?: ModelRegistryInternalOptions);
414
+ getModelsConfigPath(): string | undefined;
415
+ stageModelsConfigReload(snapshot: {
416
+ path: string;
417
+ text: string | null;
418
+ identity: string;
419
+ }, registrySettings?: Pick<Settings, "get" | "getGlobal">): Promise<ModelsConfigReloadCandidate>;
420
+ withConsumerLease<T>(body: () => T | Promise<T>, signal?: AbortSignal): Promise<T>;
421
+ acquirePublicationFence(signal?: AbortSignal): Promise<() => void>;
386
422
  dispose(): Promise<void>;
387
423
  onCatalogChanged(listener: () => void): () => void;
388
424
  /** Replace the read-only settings snapshot used by profile-scoped resolution. */
@@ -426,11 +462,25 @@ export declare class ModelRegistry {
426
462
  getConfiguredModelBindings(): ConfiguredModelBindings | undefined;
427
463
  /**
428
464
  * Get all models (embedded + accepted registry + custom).
465
+ * Supplying a credential session selects only that session's Google OAuth discovery catalog.
429
466
  * If models.yml had errors, returns embedded plus accepted registry models.
430
467
  */
431
- getAll(): Model<Api>[];
468
+ getAll(credentialSessionId?: string): Model<Api>[];
432
469
  /** Provider ids declared in models.yml, including override-only providers. */
433
470
  getConfiguredProviderIds(): readonly string[];
471
+ /** Configured API-key sources in models.yml precedence order, excluding absent environment values. */
472
+ getProviderConfigApiKeySources(provider: string): Array<{
473
+ kind: "environment";
474
+ name: string;
475
+ provider: string;
476
+ } | {
477
+ kind: "models-yml";
478
+ provider: string;
479
+ }>;
480
+ /** Environment variable name for a provider API key supplied by runtime setup. */
481
+ getProviderRuntimeApiKeyEnvName(provider: string): string | undefined;
482
+ /** Whether a runtime extension's provider API key is currently installed in AuthStorage. */
483
+ hasRuntimeProviderApiKey(provider: string): boolean;
434
484
  /**
435
485
  * Whether this registry can serve a provider id from any active source.
436
486
  *
@@ -553,8 +603,9 @@ export declare class ModelRegistry {
553
603
  * is authoritative for visibility: live discovery only enriches entries and
554
604
  * adds unknown ids, and never removes a bundled model. A provider that cannot
555
605
  * serve a model reports its own error when the model is used.
606
+ * Without a credential session, project-scoped Google OAuth discoveries are omitted.
556
607
  */
557
- getAvailable(): Model<Api>[];
608
+ getAvailable(credentialSessionId?: string): Model<Api>[];
558
609
  getActiveProviders(): ActiveProviderDescriptor[];
559
610
  /**
560
611
  * Check whether auth is configured for a model's provider.
@@ -583,7 +634,7 @@ export declare class ModelRegistry {
583
634
  /**
584
635
  * Find a model by provider and ID.
585
636
  */
586
- find(provider: string, modelId: string): Model<Api> | undefined;
637
+ find(provider: string, modelId: string, credentialSessionId?: string): Model<Api> | undefined;
587
638
  /**
588
639
  * Get the base URL associated with a provider, if any model defines one.
589
640
  */
@@ -600,6 +651,15 @@ export declare class ModelRegistry {
600
651
  preferredCredentialSelector?: AuthCredentialSelector;
601
652
  signal?: AbortSignal;
602
653
  }): Promise<string | undefined>;
654
+ /** Get a model API key together with the stored row that resolved it, when any. */
655
+ getApiKeyWithCredentialRowId(model: Model<Api>, sessionId?: string, options?: {
656
+ credentialSelector?: AuthCredentialSelector;
657
+ preferredCredentialSelector?: AuthCredentialSelector;
658
+ signal?: AbortSignal;
659
+ }): Promise<{
660
+ apiKey: string | undefined;
661
+ credentialRowId: number | undefined;
662
+ }>;
603
663
  /**
604
664
  * Get API key for a provider (e.g., "openai").
605
665
  */
@@ -608,6 +668,10 @@ export declare class ModelRegistry {
608
668
  preferredCredentialSelector?: AuthCredentialSelector;
609
669
  signal?: AbortSignal;
610
670
  }): Promise<string | undefined>;
671
+ /** Check credential availability without resolving keys or refreshing OAuth tokens. */
672
+ hasUsableAuthForProvider(provider: string, sessionId?: string): boolean;
673
+ /** @internal Whether this registry is an unpublished staged reload candidate. */
674
+ isStagedReloadCandidate(): boolean;
611
675
  /**
612
676
  * Check if a model is using OAuth credentials (subscription).
613
677
  */
@@ -144,7 +144,7 @@ export declare function resolveModelFromSettings(options: {
144
144
  /**
145
145
  * Resolve a list of override patterns to the first matching model.
146
146
  */
147
- export declare function resolveModelOverride(modelPatterns: string[], modelRegistry: ModelLookupRegistry, settings?: Settings, sessionId?: string, aliasIntent?: "preset-equivalent" | "reject"): {
147
+ export declare function resolveModelOverride(modelPatterns: string[], modelRegistry: ModelLookupRegistry, settings?: Settings, sessionId?: string, aliasIntent?: "preset-equivalent" | "reject", credentialSessionId?: string): {
148
148
  model?: Model<Api>;
149
149
  thinkingLevel?: ThinkingLevel;
150
150
  explicitThinkingLevel: boolean;
@@ -164,6 +164,8 @@ export interface ModelChainResolutionOptions {
164
164
  canonicalSessionId?: string | null;
165
165
  credentialSessionId?: string;
166
166
  isCredentialUnavailable?: (provider: string) => boolean;
167
+ /** Read-only auth eligibility for staged profile preflight when no access token can be exposed. */
168
+ isProviderAuthAvailable?: (provider: string) => boolean;
167
169
  signal?: AbortSignal;
168
170
  }
169
171
  /**
@@ -245,7 +247,7 @@ export declare function resolveRoleSelection(roles: readonly string[], settings:
245
247
  * For each non-glob pattern, alias IDs are preferred over dated versions; otherwise
246
248
  * the latest dated version is selected.
247
249
  */
248
- export declare function resolveModelScope(patterns: string[], modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">, preferences?: ModelMatchPreferences): Promise<ScopedModel[]>;
250
+ export declare function resolveModelScope(patterns: string[], modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">, preferences?: ModelMatchPreferences, credentialSessionId?: string): Promise<ScopedModel[]>;
249
251
  /**
250
252
  * Resolve the set of models a session is allowed to use, given the active
251
253
  * settings. Starts from `modelRegistry.getAvailable()` (so disabled providers
@@ -258,7 +260,7 @@ export declare function resolveModelScope(patterns: string[], modelRegistry: Pic
258
260
  * model matches any pattern — callers MUST treat this as "no usable model"
259
261
  * rather than falling back to the global default (see issue #1022).
260
262
  */
261
- export declare function resolveAllowedModels(modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">, settings: Settings | undefined, preferences?: ModelMatchPreferences): Promise<Model<Api>[]>;
263
+ export declare function resolveAllowedModels(modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">, settings: Settings | undefined, preferences?: ModelMatchPreferences, credentialSessionId?: string): Promise<Model<Api>[]>;
262
264
  export interface ResolveCliModelResult {
263
265
  model: Model<Api> | undefined;
264
266
  selector?: string;
@@ -295,11 +297,12 @@ export declare function findInitialModel(options: {
295
297
  defaultModelId?: string;
296
298
  defaultThinkingSelector?: ThinkingLevel;
297
299
  modelRegistry: InitialModelRegistry;
300
+ credentialSessionId?: string;
298
301
  }): Promise<InitialModelResult>;
299
302
  /**
300
303
  * Restore model from session, with fallback to available models
301
304
  */
302
- export declare function restoreModelFromSession(savedProvider: string, savedModelId: string, currentModel: Model<Api> | undefined, shouldPrintMessages: boolean, modelRegistry: RestorableModelRegistry): Promise<{
305
+ export declare function restoreModelFromSession(savedProvider: string, savedModelId: string, currentModel: Model<Api> | undefined, shouldPrintMessages: boolean, modelRegistry: RestorableModelRegistry, credentialSessionId?: string): Promise<{
303
306
  model: Model<Api> | undefined;
304
307
  fallbackMessage: string | undefined;
305
308
  }>;
@@ -5,6 +5,7 @@ export declare const ModelCompatSchema: z.ZodObject<{
5
5
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
6
6
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
7
7
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
8
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
8
9
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
9
10
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
10
11
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -76,6 +77,7 @@ export declare const OpenAICompatSchema: z.ZodObject<{
76
77
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
77
78
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
78
79
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
80
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
79
81
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
80
82
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
81
83
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -265,6 +267,7 @@ export declare const ModelOverrideSchema: z.ZodObject<{
265
267
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
266
268
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
267
269
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
270
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
268
271
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
269
272
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
270
273
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -345,6 +348,7 @@ export declare const ModelOverrideSchema: z.ZodObject<{
345
348
  none: "none";
346
349
  short: "short";
347
350
  }>>;
351
+ streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
348
352
  }, z.core.$strict>;
349
353
  export type ModelOverride = z.infer<typeof ModelOverrideSchema>;
350
354
  export declare const ProviderDiscoverySchema: z.ZodObject<{
@@ -397,6 +401,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
397
401
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
398
402
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
399
403
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
404
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
400
405
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
401
406
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
402
407
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -582,6 +587,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
582
587
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
583
588
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
584
589
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
590
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
585
591
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
586
592
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
587
593
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -662,6 +668,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
662
668
  none: "none";
663
669
  short: "short";
664
670
  }>>;
671
+ streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
665
672
  }, z.core.$strict>>>;
666
673
  modelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
667
674
  name: z.ZodOptional<z.ZodString>;
@@ -731,6 +738,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
731
738
  sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
732
739
  supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
733
740
  supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
741
+ supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
734
742
  supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
735
743
  supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
736
744
  reasoningEffortMap: z.ZodOptional<z.ZodObject<{
@@ -811,6 +819,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
811
819
  none: "none";
812
820
  short: "short";
813
821
  }>>;
822
+ streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
814
823
  }, z.core.$strict>>>;
815
824
  disableStrictTools: z.ZodOptional<z.ZodBoolean>;
816
825
  transport: z.ZodOptional<z.ZodLiteral<"pi-native">>;
@@ -819,6 +828,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
819
828
  none: "none";
820
829
  short: "short";
821
830
  }>>;
831
+ streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
822
832
  openaiCompat: z.ZodOptional<z.ZodObject<{
823
833
  baseUrl: z.ZodString;
824
834
  apiKey: z.ZodOptional<z.ZodString>;