@gajae-code/coding-agent 0.16.7 → 0.17.1

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 (321) hide show
  1. package/CHANGELOG.md +180 -1
  2. package/dist/types/capability/fs.d.ts +37 -4
  3. package/dist/types/capability/index.d.ts +19 -0
  4. package/dist/types/capability/types.d.ts +9 -0
  5. package/dist/types/cli/doctor/args.d.ts +36 -0
  6. package/dist/types/cli/doctor/checks.d.ts +18 -0
  7. package/dist/types/cli/doctor/config-repairs.d.ts +38 -0
  8. package/dist/types/cli/doctor/context.d.ts +89 -0
  9. package/dist/types/cli/doctor/files.d.ts +27 -0
  10. package/dist/types/cli/doctor/ids.d.ts +20 -0
  11. package/dist/types/cli/doctor/install-repairs.d.ts +94 -0
  12. package/dist/types/cli/doctor/journal.d.ts +43 -0
  13. package/dist/types/cli/doctor/managed-link.d.ts +39 -0
  14. package/dist/types/cli/doctor/native-probe.d.ts +2 -0
  15. package/dist/types/cli/doctor/permission-repairs.d.ts +25 -0
  16. package/dist/types/cli/doctor/plugin-quarantine.d.ts +77 -0
  17. package/dist/types/cli/doctor/plugin-restore.d.ts +40 -0
  18. package/dist/types/cli/doctor/plugin-targets.d.ts +11 -0
  19. package/dist/types/cli/doctor/probe-client.d.ts +9 -0
  20. package/dist/types/cli/doctor/probe-types.d.ts +18 -0
  21. package/dist/types/cli/doctor/probe.d.ts +3 -0
  22. package/dist/types/cli/doctor/projection-probe.d.ts +2 -0
  23. package/dist/types/cli/doctor/repairs.d.ts +28 -0
  24. package/dist/types/cli/doctor/report.d.ts +27 -0
  25. package/dist/types/cli/doctor/runner.d.ts +4 -0
  26. package/dist/types/cli/doctor/safety.d.ts +10 -0
  27. package/dist/types/cli/doctor/service-repairs.d.ts +8 -0
  28. package/dist/types/cli/doctor/service-targets.d.ts +41 -0
  29. package/dist/types/cli/doctor/types.d.ts +145 -0
  30. package/dist/types/cli/doctor-cli.d.ts +7 -0
  31. package/dist/types/cli/doctor-supervisor.d.ts +121 -0
  32. package/dist/types/cli/doctor-worker.d.ts +29 -0
  33. package/dist/types/cli/install-activation.d.ts +158 -0
  34. package/dist/types/cli/macos-community-app.d.ts +41 -0
  35. package/dist/types/cli/mcp-cli.d.ts +0 -11
  36. package/dist/types/cli/update-cli.d.ts +41 -4
  37. package/dist/types/cli-main.d.ts +174 -0
  38. package/dist/types/cli.d.ts +1 -171
  39. package/dist/types/commands/doctor.d.ts +7 -0
  40. package/dist/types/commands/sdk.d.ts +17 -8
  41. package/dist/types/config/autorouting-tier-map.d.ts +19 -0
  42. package/dist/types/config/file-lock.d.ts +27 -3
  43. package/dist/types/config/model-preset-registry.d.ts +1 -0
  44. package/dist/types/config/model-registry.d.ts +12 -5
  45. package/dist/types/config/model-resolver.d.ts +16 -3
  46. package/dist/types/config/models-config-schema.d.ts +2 -0
  47. package/dist/types/config/settings-schema.d.ts +1 -1
  48. package/dist/types/coordinator-mcp/question-gate-codec.d.ts +1 -1
  49. package/dist/types/coordinator-mcp/session-reaper.d.ts +15 -5
  50. package/dist/types/cursor.d.ts +9 -9
  51. package/dist/types/discovery/agents-md.d.ts +6 -1
  52. package/dist/types/discovery/helpers.d.ts +36 -7
  53. package/dist/types/discovery/index.d.ts +1 -1
  54. package/dist/types/discovery/mcp-json.d.ts +2 -0
  55. package/dist/types/extensibility/extensions/loader.d.ts +22 -1
  56. package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +14 -1
  57. package/dist/types/extensibility/gjc-plugins/paths.d.ts +2 -1
  58. package/dist/types/extensibility/gjc-plugins/types.d.ts +25 -0
  59. package/dist/types/extensibility/plugins/manager.d.ts +33 -4
  60. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +6 -0
  61. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +186 -0
  62. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +27 -0
  63. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +16 -1
  64. package/dist/types/extensibility/runtime-skill-discovery.d.ts +16 -3
  65. package/dist/types/gjc-runtime/autoresearch-runtime.d.ts +6 -0
  66. package/dist/types/gjc-runtime/launch-worktree.d.ts +53 -0
  67. package/dist/types/gjc-runtime/session-layout.d.ts +8 -0
  68. package/dist/types/gjc-runtime/session-state-lock.d.ts +15 -0
  69. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +13 -0
  70. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +6 -0
  71. package/dist/types/main.d.ts +19 -1
  72. package/dist/types/modes/acp/acp-agent.d.ts +40 -0
  73. package/dist/types/modes/components/agent-dashboard.d.ts +1 -0
  74. package/dist/types/modes/components/model-selector.d.ts +2 -0
  75. package/dist/types/modes/interactive-mode.d.ts +1 -1
  76. package/dist/types/runtime-mcp/config-writer.d.ts +47 -0
  77. package/dist/types/runtime-mcp/policy-json-edit.d.ts +60 -0
  78. package/dist/types/runtime-mcp/startup-policy.d.ts +4 -0
  79. package/dist/types/runtime-mcp/types.d.ts +2 -2
  80. package/dist/types/sdk/acp/adapter.d.ts +5 -1
  81. package/dist/types/sdk/broker/broker.d.ts +51 -0
  82. package/dist/types/sdk/broker/daemon-entry.d.ts +39 -0
  83. package/dist/types/sdk/broker/discovery.d.ts +38 -0
  84. package/dist/types/sdk/broker/doctor-restart.d.ts +79 -0
  85. package/dist/types/sdk/broker/endpoint-authority.d.ts +7 -0
  86. package/dist/types/sdk/broker/ensure.d.ts +14 -0
  87. package/dist/types/sdk/broker/lifecycle.d.ts +2 -0
  88. package/dist/types/sdk/broker/process-incarnation.d.ts +50 -0
  89. package/dist/types/sdk/broker/runtime.d.ts +26 -0
  90. package/dist/types/sdk/broker/session-index.d.ts +13 -4
  91. package/dist/types/sdk/broker/worktree-occupancy.d.ts +14 -0
  92. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +16 -0
  93. package/dist/types/sdk/bus/chat-daemon-control.d.ts +101 -6
  94. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +16 -0
  95. package/dist/types/sdk/bus/daemon-startup-exclusion.d.ts +43 -0
  96. package/dist/types/sdk/bus/doctor-daemon-restart-client.d.ts +51 -0
  97. package/dist/types/sdk/bus/doctor-daemon-restart.d.ts +39 -0
  98. package/dist/types/sdk/bus/index.d.ts +2 -0
  99. package/dist/types/sdk/bus/notification-service.d.ts +3 -0
  100. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +11 -0
  101. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +1 -1
  102. package/dist/types/sdk/bus/telegram-daemon-control.d.ts +5 -0
  103. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +1 -0
  104. package/dist/types/sdk/bus/telegram-daemon.d.ts +36 -5
  105. package/dist/types/sdk/cli/session-cli.d.ts +1 -0
  106. package/dist/types/sdk/host/session-runtime.d.ts +4 -0
  107. package/dist/types/sdk/host/surface-policy.d.ts +3 -1
  108. package/dist/types/sdk/lifecycle/service.d.ts +44 -10
  109. package/dist/types/sdk/prompt-deadline-lease.d.ts +6 -3
  110. package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -2
  111. package/dist/types/sdk/prompt-failure.d.ts +47 -0
  112. package/dist/types/sdk/prompt-status.d.ts +19 -0
  113. package/dist/types/sdk/router/session-router.d.ts +3 -4
  114. package/dist/types/sdk/service-artifact-paths.d.ts +16 -0
  115. package/dist/types/sdk/session-authority.d.ts +9 -0
  116. package/dist/types/sdk/session.d.ts +3 -1
  117. package/dist/types/session/agent-session.d.ts +1 -1
  118. package/dist/types/session/blob-store.d.ts +1 -1
  119. package/dist/types/session/fallback-chain-controller.d.ts +3 -6
  120. package/dist/types/session/internal/managed-session-scope.d.ts +44 -0
  121. package/dist/types/session/primary-control-surface.d.ts +4 -0
  122. package/dist/types/session/session-manager.d.ts +6 -0
  123. package/dist/types/system-prompt.d.ts +6 -0
  124. package/dist/types/tools/ask.d.ts +25 -0
  125. package/dist/types/tools/image-gen.d.ts +0 -4
  126. package/dist/types/tools/skill-discovery.d.ts +7 -5
  127. package/dist/types/tools/ultragoal-ask-guard.d.ts +7 -4
  128. package/dist/types/utils/changelog.d.ts +0 -9
  129. package/dist/types/utils/mupdf-wasm.d.ts +1 -0
  130. package/package.json +9 -8
  131. package/scripts/compile-args.ts +8 -4
  132. package/src/capability/fs.ts +395 -17
  133. package/src/capability/index.ts +273 -10
  134. package/src/capability/types.ts +9 -0
  135. package/src/cli/customize-doctor.ts +18 -12
  136. package/src/cli/doctor/args.ts +236 -0
  137. package/src/cli/doctor/checks.ts +431 -0
  138. package/src/cli/doctor/config-repairs.ts +517 -0
  139. package/src/cli/doctor/context.ts +149 -0
  140. package/src/cli/doctor/files.ts +149 -0
  141. package/src/cli/doctor/ids.ts +115 -0
  142. package/src/cli/doctor/install-repairs.ts +335 -0
  143. package/src/cli/doctor/journal.ts +423 -0
  144. package/src/cli/doctor/managed-link.ts +514 -0
  145. package/src/cli/doctor/native-probe.ts +13 -0
  146. package/src/cli/doctor/permission-repairs.ts +242 -0
  147. package/src/cli/doctor/plugin-quarantine.ts +377 -0
  148. package/src/cli/doctor/plugin-restore.ts +59 -0
  149. package/src/cli/doctor/plugin-targets.ts +373 -0
  150. package/src/cli/doctor/probe-client.ts +195 -0
  151. package/src/cli/doctor/probe-types.ts +21 -0
  152. package/src/cli/doctor/probe.ts +42 -0
  153. package/src/cli/doctor/projection-probe.ts +249 -0
  154. package/src/cli/doctor/repairs.ts +1157 -0
  155. package/src/cli/doctor/report.ts +176 -0
  156. package/src/cli/doctor/runner.ts +342 -0
  157. package/src/cli/doctor/safety.ts +40 -0
  158. package/src/cli/doctor/service-repairs.ts +452 -0
  159. package/src/cli/doctor/service-targets.ts +274 -0
  160. package/src/cli/doctor/types.ts +164 -0
  161. package/src/cli/doctor-cli.ts +62 -0
  162. package/src/cli/doctor-supervisor.ts +571 -0
  163. package/src/cli/doctor-worker.ts +181 -0
  164. package/src/cli/install-activation.ts +666 -0
  165. package/src/cli/macos-community-app.ts +1449 -0
  166. package/src/cli/mcp-cli.ts +11 -21
  167. package/src/cli/nofile-limit.ts +5 -1
  168. package/src/cli/plugin-cli.ts +6 -1
  169. package/src/cli/update-cli.ts +362 -264
  170. package/src/cli-main.ts +517 -0
  171. package/src/cli.ts +64 -433
  172. package/src/commands/autoresearch.ts +11 -5
  173. package/src/commands/completion.ts +1 -1
  174. package/src/commands/doctor.ts +13 -0
  175. package/src/commands/sdk.ts +58 -10
  176. package/src/commands/ultragoal.ts +11 -5
  177. package/src/config/autorouting-tier-map.ts +7 -0
  178. package/src/config/file-lock.ts +736 -71
  179. package/src/config/mcp-schema.json +3 -3
  180. package/src/config/model-preset-registry.ts +1 -0
  181. package/src/config/model-registry.ts +80 -27
  182. package/src/config/model-resolver.ts +33 -4
  183. package/src/config/models-config-schema.ts +2 -0
  184. package/src/config/settings-schema.ts +6 -2
  185. package/src/coordinator-mcp/question-gate-codec.ts +1 -0
  186. package/src/coordinator-mcp/server.ts +534 -51
  187. package/src/coordinator-mcp/session-reaper.ts +64 -8
  188. package/src/cursor.ts +223 -53
  189. package/src/discovery/agents-md.ts +74 -8
  190. package/src/discovery/agents.ts +32 -7
  191. package/src/discovery/builtin.ts +184 -75
  192. package/src/discovery/claude-plugins.ts +85 -17
  193. package/src/discovery/cline.ts +38 -10
  194. package/src/discovery/cursor.ts +19 -6
  195. package/src/discovery/gemini.ts +62 -22
  196. package/src/discovery/github.ts +13 -3
  197. package/src/discovery/helpers.ts +483 -89
  198. package/src/discovery/index.ts +1 -0
  199. package/src/discovery/mcp-json.ts +36 -10
  200. package/src/discovery/opencode.ts +36 -19
  201. package/src/discovery/ssh.ts +11 -8
  202. package/src/discovery/windsurf.ts +12 -3
  203. package/src/exec/bash-executor.ts +10 -3
  204. package/src/exec/isolated-shell.ts +15 -2
  205. package/src/extensibility/extensions/loader.ts +88 -26
  206. package/src/extensibility/gjc-plugins/lifecycle.ts +189 -0
  207. package/src/extensibility/gjc-plugins/paths.ts +4 -1
  208. package/src/extensibility/gjc-plugins/types.ts +27 -0
  209. package/src/extensibility/plugins/manager.ts +200 -22
  210. package/src/extensibility/plugins/marketplace/cache.ts +55 -2
  211. package/src/extensibility/plugins/marketplace/manager.ts +1262 -162
  212. package/src/extensibility/plugins/marketplace/registry.ts +153 -0
  213. package/src/extensibility/plugins/marketplace/source-resolver.ts +116 -10
  214. package/src/extensibility/runtime-skill-discovery.ts +61 -9
  215. package/src/extensibility/skill-management.ts +7 -1
  216. package/src/gjc-runtime/autoresearch-runtime.ts +10 -1
  217. package/src/gjc-runtime/launch-worktree.test.ts +248 -0
  218. package/src/gjc-runtime/launch-worktree.ts +275 -38
  219. package/src/gjc-runtime/repository-binding.ts +26 -1
  220. package/src/gjc-runtime/session-layout.ts +10 -0
  221. package/src/gjc-runtime/session-state-lock.ts +330 -23
  222. package/src/gjc-runtime/session-state-sidecar.ts +328 -80
  223. package/src/gjc-runtime/ultragoal-runtime.ts +10 -1
  224. package/src/harness-control-plane/session-lease.ts +2 -2
  225. package/src/internal-urls/docs-index.generated.ts +28 -26
  226. package/src/main.ts +150 -29
  227. package/src/memories/index.ts +24 -2
  228. package/src/modes/acp/acp-agent.ts +522 -68
  229. package/src/modes/components/agent-dashboard.ts +3 -1
  230. package/src/modes/components/model-selector.ts +28 -19
  231. package/src/modes/components/plugin-settings.ts +2 -1
  232. package/src/modes/controllers/selector-controller.ts +15 -9
  233. package/src/modes/interactive-mode.ts +21 -3
  234. package/src/prompts/system/system-prompt.md +5 -1
  235. package/src/prompts/tools/browser.md +1 -1
  236. package/src/prompts/tools/move-session.md +4 -0
  237. package/src/prompts/tools/read.md +2 -1
  238. package/src/prompts/tools/skill-discovery.md +6 -5
  239. package/src/prompts/tools/task.md +1 -0
  240. package/src/runtime-mcp/config-writer.ts +228 -0
  241. package/src/runtime-mcp/oauth-discovery.ts +114 -14
  242. package/src/runtime-mcp/policy-json-edit.ts +129 -0
  243. package/src/runtime-mcp/startup-policy.ts +14 -0
  244. package/src/runtime-mcp/types.ts +2 -2
  245. package/src/sdk/acp/adapter.ts +27 -12
  246. package/src/sdk/broker/broker.ts +273 -44
  247. package/src/sdk/broker/daemon-entry.ts +119 -0
  248. package/src/sdk/broker/discovery.ts +173 -20
  249. package/src/sdk/broker/doctor-restart.ts +206 -0
  250. package/src/sdk/broker/endpoint-authority.ts +36 -0
  251. package/src/sdk/broker/ensure.ts +49 -14
  252. package/src/sdk/broker/lifecycle.ts +174 -42
  253. package/src/sdk/broker/process-incarnation.ts +86 -2
  254. package/src/sdk/broker/runtime.ts +145 -21
  255. package/src/sdk/broker/session-index.ts +136 -22
  256. package/src/sdk/broker/spawn-substrate.ts +4 -1
  257. package/src/sdk/broker/transport.ts +5 -0
  258. package/src/sdk/broker/worktree-occupancy.ts +21 -1
  259. package/src/sdk/bus/chat-daemon-cli.ts +63 -0
  260. package/src/sdk/bus/chat-daemon-control.ts +260 -64
  261. package/src/sdk/bus/chat-daemon-runtime.ts +141 -25
  262. package/src/sdk/bus/daemon-startup-exclusion.ts +119 -0
  263. package/src/sdk/bus/doctor-daemon-restart-client.ts +291 -0
  264. package/src/sdk/bus/doctor-daemon-restart.ts +92 -0
  265. package/src/sdk/bus/index.ts +252 -51
  266. package/src/sdk/bus/kind-aware-reconciliation.ts +76 -41
  267. package/src/sdk/bus/notification-service.ts +21 -3
  268. package/src/sdk/bus/reconciliation-store.ts +17 -11
  269. package/src/sdk/bus/telegram-daemon-cli.ts +91 -5
  270. package/src/sdk/bus/telegram-daemon-contract.ts +1 -1
  271. package/src/sdk/bus/telegram-daemon-control.ts +47 -0
  272. package/src/sdk/bus/telegram-daemon-owner-registry.ts +1 -1
  273. package/src/sdk/bus/telegram-daemon.ts +178 -13
  274. package/src/sdk/cli/session-cli.ts +100 -12
  275. package/src/sdk/host/host.ts +2 -7
  276. package/src/sdk/host/session-runtime.test.ts +329 -8
  277. package/src/sdk/host/session-runtime.ts +202 -50
  278. package/src/sdk/host/surface-policy.ts +8 -1
  279. package/src/sdk/lifecycle/service.ts +199 -22
  280. package/src/sdk/mcp/server.ts +1 -1
  281. package/src/sdk/prompt-deadline-lease.ts +12 -4
  282. package/src/sdk/prompt-deadline-manager.ts +5 -7
  283. package/src/sdk/prompt-failure.ts +148 -0
  284. package/src/sdk/prompt-status.ts +30 -1
  285. package/src/sdk/prompt-watchdog.ts +11 -3
  286. package/src/sdk/protocol/operation-inventory.generated.json +18 -0
  287. package/src/sdk/protocol/operation-registry.ts +20 -8
  288. package/src/sdk/router/session-router.ts +8 -3
  289. package/src/sdk/service-artifact-paths.ts +26 -0
  290. package/src/sdk/session-authority.ts +10 -0
  291. package/src/sdk/session.ts +361 -194
  292. package/src/session/agent-session.ts +398 -93
  293. package/src/session/blob-store.ts +9 -9
  294. package/src/session/fallback-chain-controller.ts +3 -7
  295. package/src/session/internal/managed-session-scope.ts +445 -29
  296. package/src/session/internal/managed-session-storage.ts +38 -6
  297. package/src/session/primary-control-surface.ts +12 -0
  298. package/src/session/session-manager.ts +11 -3
  299. package/src/session/session-storage.ts +1 -1
  300. package/src/session-import/codex.ts +6 -1
  301. package/src/session-import/redact.ts +7 -0
  302. package/src/skill-state/workflow-mutation-guard.ts +645 -39
  303. package/src/slash-commands/builtin-registry.ts +7 -3
  304. package/src/system-prompt.ts +8 -0
  305. package/src/task/executor.ts +36 -3
  306. package/src/task/types.ts +27 -5
  307. package/src/tools/ask.ts +114 -34
  308. package/src/tools/browser/actions.ts +2 -2
  309. package/src/tools/browser/tab-worker.ts +11 -8
  310. package/src/tools/descriptors.ts +6 -1
  311. package/src/tools/fetch.ts +7 -2
  312. package/src/tools/image-gen.ts +33 -34
  313. package/src/tools/read.ts +78 -32
  314. package/src/tools/skill-discovery.ts +17 -7
  315. package/src/tools/tool-catalog.generated.ts +8 -8
  316. package/src/tools/ultragoal-ask-guard.ts +16 -26
  317. package/src/utils/changelog.ts +7 -1
  318. package/src/utils/git.ts +3 -1
  319. package/src/utils/markit.ts +24 -2
  320. package/src/utils/mupdf-wasm.ts +26 -0
  321. package/src/web/search/providers/openai-compatible.ts +191 -14
@@ -0,0 +1,174 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * CLI entry point — registers all commands explicitly and delegates to the
4
+ * lightweight CLI runner from pi-utils.
5
+ */
6
+ import "@gajae-code/utils/postmortem";
7
+ import { Command, type CommandEntry } from "@gajae-code/utils/cli";
8
+ export declare const commands: CommandEntry[];
9
+ export declare function interactiveBootstrapText(argv: readonly string[], stdinIsTTY?: boolean, stdoutIsTTY?: boolean): string | undefined;
10
+ type MemoryGuardNativeSmokeLoad = () => Record<string, unknown>;
11
+ export declare function isMemoryGuardNativeSmokeFastPath(argv: readonly string[]): boolean;
12
+ export declare function runMemoryGuardNativeSmokeFastPath(options?: {
13
+ loadNative?: MemoryGuardNativeSmokeLoad;
14
+ writeStdout?: (text: string) => void;
15
+ }): void;
16
+ export declare class RootHelpCommand extends Command {
17
+ static description: string;
18
+ static hidden: boolean;
19
+ static args: {
20
+ messages: import("@gajae-code/utils/cli").ArgDescriptor & {
21
+ description: string;
22
+ required: false;
23
+ multiple: true;
24
+ };
25
+ };
26
+ static flags: {
27
+ model: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
28
+ description: string;
29
+ };
30
+ smol: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
31
+ description: string;
32
+ };
33
+ slow: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
34
+ description: string;
35
+ };
36
+ plan: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
37
+ description: string;
38
+ };
39
+ mpreset: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
40
+ description: string;
41
+ };
42
+ default: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
43
+ description: string;
44
+ };
45
+ provider: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
46
+ description: string;
47
+ };
48
+ "api-key": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
49
+ description: string;
50
+ };
51
+ credential: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
52
+ description: string;
53
+ };
54
+ "prefer-credential": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
55
+ description: string;
56
+ };
57
+ "system-prompt": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
58
+ description: string;
59
+ };
60
+ "append-system-prompt": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
61
+ description: string;
62
+ };
63
+ "mcp-config": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
64
+ description: string;
65
+ };
66
+ "no-mcp": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
67
+ description: string;
68
+ };
69
+ "clipboard-transport": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
70
+ description: string;
71
+ options: string[];
72
+ };
73
+ "clipboard-ssh-host": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
74
+ description: string;
75
+ };
76
+ "allow-home": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
77
+ description: string;
78
+ };
79
+ mode: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
80
+ description: string;
81
+ options: string[];
82
+ };
83
+ print: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
84
+ char: string;
85
+ description: string;
86
+ };
87
+ continue: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
88
+ char: string;
89
+ description: string;
90
+ };
91
+ resume: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
92
+ char: string;
93
+ description: string;
94
+ optionalValue: true;
95
+ };
96
+ fork: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
97
+ description: string;
98
+ };
99
+ worktree: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
100
+ char: string;
101
+ description: string;
102
+ optionalValue: true;
103
+ };
104
+ "session-dir": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
105
+ description: string;
106
+ };
107
+ "no-session": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
108
+ description: string;
109
+ };
110
+ models: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
111
+ description: string;
112
+ };
113
+ "no-tools": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
114
+ description: string;
115
+ };
116
+ "no-lsp": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
117
+ description: string;
118
+ };
119
+ "no-pty": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
120
+ description: string;
121
+ };
122
+ tmux: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
123
+ description: string;
124
+ };
125
+ tools: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
126
+ description: string;
127
+ };
128
+ thinking: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
129
+ description: string;
130
+ options: readonly ["off", ...import("@gajae-code/ai").Effort[]];
131
+ };
132
+ "no-rules": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
133
+ description: string;
134
+ };
135
+ export: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
136
+ description: string;
137
+ };
138
+ "list-models": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
139
+ description: string;
140
+ optionalValue: true;
141
+ };
142
+ "no-title": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
143
+ description: string;
144
+ };
145
+ master: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
146
+ description: string;
147
+ };
148
+ scope: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
149
+ description: string;
150
+ options: string[];
151
+ };
152
+ };
153
+ static examples: string[];
154
+ static strict: boolean;
155
+ run(): Promise<void>;
156
+ }
157
+ /** Normalize the sole `gjc resume` alias into the value-less launch intent. */
158
+ export declare function normalizeResumeAlias(argv: readonly string[]): string[];
159
+ /**
160
+ * Map the common mistaken `models` subcommand spelling to non-agent listing.
161
+ *
162
+ * Agents frequently run `gjc models` from the bash tool expecting a catalog.
163
+ * Without this route, `models` was a positional launch prompt and nested agents
164
+ * re-invoked `gjc models`, spawning an unbounded process chain (#3857).
165
+ * Always rewrite to `launch --list-models` so the invocation exits after a
166
+ * bounded listing and never starts an interactive agent session.
167
+ */
168
+ export declare function routeModelsAlias(argv: readonly string[]): string[] | undefined;
169
+ /** Apply the same default-launch routing used by runCli after root fast paths. */
170
+ export declare function routeRootArgv(argv: readonly string[]): string[];
171
+ /** Run the CLI with the given argv (no `process.argv` prefix). */
172
+ export declare function runCliAfterAdmission(argv: string[]): Promise<void>;
173
+ export declare const runCli: typeof runCliAfterAdmission;
174
+ export {};
@@ -1,173 +1,3 @@
1
1
  #!/usr/bin/env bun
2
- /**
3
- * CLI entry point — registers all commands explicitly and delegates to the
4
- * lightweight CLI runner from pi-utils.
5
- */
6
- import "@gajae-code/utils/postmortem";
7
- import { Command, type CommandEntry } from "@gajae-code/utils/cli";
8
- export declare const commands: CommandEntry[];
9
- export declare function interactiveBootstrapText(argv: readonly string[], stdinIsTTY?: boolean, stdoutIsTTY?: boolean): string | undefined;
10
- type MemoryGuardNativeSmokeLoad = () => Record<string, unknown>;
11
- export declare function isMemoryGuardNativeSmokeFastPath(argv: readonly string[]): boolean;
12
- export declare function runMemoryGuardNativeSmokeFastPath(options?: {
13
- loadNative?: MemoryGuardNativeSmokeLoad;
14
- writeStdout?: (text: string) => void;
15
- }): void;
16
- export declare class RootHelpCommand extends Command {
17
- static description: string;
18
- static hidden: boolean;
19
- static args: {
20
- messages: import("@gajae-code/utils/cli").ArgDescriptor & {
21
- description: string;
22
- required: false;
23
- multiple: true;
24
- };
25
- };
26
- static flags: {
27
- model: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
28
- description: string;
29
- };
30
- smol: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
31
- description: string;
32
- };
33
- slow: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
34
- description: string;
35
- };
36
- plan: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
37
- description: string;
38
- };
39
- mpreset: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
40
- description: string;
41
- };
42
- default: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
43
- description: string;
44
- };
45
- provider: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
46
- description: string;
47
- };
48
- "api-key": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
49
- description: string;
50
- };
51
- credential: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
52
- description: string;
53
- };
54
- "prefer-credential": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
55
- description: string;
56
- };
57
- "system-prompt": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
58
- description: string;
59
- };
60
- "append-system-prompt": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
61
- description: string;
62
- };
63
- "mcp-config": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
64
- description: string;
65
- };
66
- "no-mcp": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
67
- description: string;
68
- };
69
- "clipboard-transport": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
70
- description: string;
71
- options: string[];
72
- };
73
- "clipboard-ssh-host": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
74
- description: string;
75
- };
76
- "allow-home": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
77
- description: string;
78
- };
79
- mode: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
80
- description: string;
81
- options: string[];
82
- };
83
- print: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
84
- char: string;
85
- description: string;
86
- };
87
- continue: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
88
- char: string;
89
- description: string;
90
- };
91
- resume: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
92
- char: string;
93
- description: string;
94
- optionalValue: true;
95
- };
96
- fork: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
97
- description: string;
98
- };
99
- worktree: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
100
- char: string;
101
- description: string;
102
- optionalValue: true;
103
- };
104
- "session-dir": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
105
- description: string;
106
- };
107
- "no-session": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
108
- description: string;
109
- };
110
- models: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
111
- description: string;
112
- };
113
- "no-tools": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
114
- description: string;
115
- };
116
- "no-lsp": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
117
- description: string;
118
- };
119
- "no-pty": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
120
- description: string;
121
- };
122
- tmux: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
123
- description: string;
124
- };
125
- tools: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
126
- description: string;
127
- };
128
- thinking: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
129
- description: string;
130
- options: readonly ["off", ...import("@gajae-code/ai").Effort[]];
131
- };
132
- "no-rules": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
133
- description: string;
134
- };
135
- export: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
136
- description: string;
137
- };
138
- "list-models": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
139
- description: string;
140
- optionalValue: true;
141
- };
142
- "no-title": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
143
- description: string;
144
- };
145
- master: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
146
- description: string;
147
- };
148
- scope: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
149
- description: string;
150
- options: string[];
151
- };
152
- };
153
- static examples: string[];
154
- static strict: boolean;
155
- run(): Promise<void>;
156
- }
157
- /** Normalize the sole `gjc resume` alias into the value-less launch intent. */
158
- export declare function normalizeResumeAlias(argv: readonly string[]): string[];
159
- /**
160
- * Map the common mistaken `models` subcommand spelling to non-agent listing.
161
- *
162
- * Agents frequently run `gjc models` from the bash tool expecting a catalog.
163
- * Without this route, `models` was a positional launch prompt and nested agents
164
- * re-invoked `gjc models`, spawning an unbounded process chain (#3857).
165
- * Always rewrite to `launch --list-models` so the invocation exits after a
166
- * bounded listing and never starts an interactive agent session.
167
- */
168
- export declare function routeModelsAlias(argv: readonly string[]): string[] | undefined;
169
- /** Apply the same default-launch routing used by runCli after root fast paths. */
170
- export declare function routeRootArgv(argv: readonly string[]): string[];
171
- /** Run the CLI with the given argv (no `process.argv` prefix). */
2
+ /** Run the CLI with argv excluding process.argv prefix. */
172
3
  export declare function runCli(argv: string[]): Promise<void>;
173
- export {};
@@ -0,0 +1,7 @@
1
+ import { Command } from "@gajae-code/utils/cli";
2
+ export default class Doctor extends Command {
3
+ static description: string;
4
+ static strict: boolean;
5
+ static examples: string[];
6
+ run(): Promise<void>;
7
+ }
@@ -5,18 +5,27 @@ import { type SessionLifecycleLaunchRequest } from "../sdk/broker/lifecycle";
5
5
  import { SessionManager } from "../session/session-manager";
6
6
  export declare function lifecycleArgs(request: SessionLifecycleLaunchRequest, cwd: string, agentDir: string): Promise<ParsedArgs>;
7
7
  /**
8
- * How long a session host tolerates the complete absence of a live broker
9
- * publication before treating itself as orphaned. Hosts intentionally survive
10
- * broker restarts (a replacement broker republishes discovery within seconds),
11
- * so this must comfortably exceed a restart window while still bounding the
12
- * lifetime of hosts whose broker is gone for good — otherwise every crashed or
8
+ * How long a session host tolerates losing the broker it was launched under
9
+ * before treating itself as orphaned.
10
+ *
11
+ * A host is reachable only through its own broker: routing lives in the broker
12
+ * process and a replacement broker never adopts hosts from an earlier
13
+ * incarnation, so a host that outlives its broker is stranded no matter how
14
+ * healthy the agent directory looks afterwards. The grace still has to outlast
15
+ * a restart-shaped gap, because a broker that is merely slow to republish must
16
+ * never cost a live host — but it must stay finite, or every crashed or
13
17
  * torn-down broker leaks a detached multi-hundred-megabyte host forever.
14
18
  */
15
19
  export declare const SESSION_HOST_BROKER_ABSENCE_GRACE_MS: number;
16
20
  /**
17
- * Resolves only once no live broker publication has been observable in
18
- * `agentDir` for the full grace window. A reappearing broker (including a
19
- * replacement with a different pid) resets the window; an unreadable
21
+ * Resolves only once the broker this host was launched under has been
22
+ * unobservable for the full grace window.
23
+ *
24
+ * The first identifiable publication pins that broker. A later publication from
25
+ * a different incarnation is a replacement, and a replacement cannot route to
26
+ * this host — observing one is evidence of being stranded, not of being alive —
27
+ * so it accrues against the bound instead of resetting it. Only the pinned
28
+ * broker reappearing resets the window. An unreadable or unidentifiable
20
29
  * publication is not proof of orphanhood but accrues against the same bound.
21
30
  */
22
31
  export declare function watchSessionHostBrokerLiveness(deps: {
@@ -811,6 +811,9 @@ export declare const TIER_MAP_SKIP_LIST: {
811
811
  readonly "opencode-go/muse-spark-1.2-contributor": {
812
812
  readonly rationale: "post-rebase catalog addition from dev; not yet curated";
813
813
  };
814
+ readonly "opencode-go/muse-spark-1.3-contributor": {
815
+ readonly rationale: "catalog addition from PR #5485; not yet curated";
816
+ };
814
817
  readonly "opencode-go/qwen3.8-flash": {
815
818
  readonly rationale: "post-rebase catalog addition from dev; not yet curated";
816
819
  };
@@ -12157,6 +12160,14 @@ export declare const TIER_MAP_SKIP_LIST: {
12157
12160
  readonly baseline: true;
12158
12161
  readonly rationale: "multimodal catalog addition; not yet curated";
12159
12162
  };
12163
+ readonly "openai-codex/gpt-image-2.5-flare": {
12164
+ readonly baseline: true;
12165
+ readonly rationale: "multimodal catalog addition; not yet curated";
12166
+ };
12167
+ readonly "openai-codex/gpt-image-2.5-sunburst": {
12168
+ readonly baseline: true;
12169
+ readonly rationale: "multimodal catalog addition; not yet curated";
12170
+ };
12160
12171
  readonly "openai/codex-mini-latest": {
12161
12172
  readonly baseline: true;
12162
12173
  readonly rationale: "pre-feature baseline; not yet curated";
@@ -12317,6 +12328,14 @@ export declare const TIER_MAP_SKIP_LIST: {
12317
12328
  readonly baseline: true;
12318
12329
  readonly rationale: "multimodal catalog addition; not yet curated";
12319
12330
  };
12331
+ readonly "openai/gpt-image-2.5-flare": {
12332
+ readonly baseline: true;
12333
+ readonly rationale: "multimodal catalog addition; not yet curated";
12334
+ };
12335
+ readonly "openai/gpt-image-2.5-sunburst": {
12336
+ readonly baseline: true;
12337
+ readonly rationale: "multimodal catalog addition; not yet curated";
12338
+ };
12320
12339
  readonly "openai/gpt-realtime-2.1": {
12321
12340
  readonly baseline: true;
12322
12341
  readonly rationale: "pre-feature baseline; not yet curated";
@@ -11,14 +11,34 @@ export interface FileLockOptions {
11
11
  /** Previous local host identities accepted only when deciding stale-owner reclamation. */
12
12
  previousOwnerHostIds?: readonly string[];
13
13
  }
14
+ export type FileLockAcquireReason = "acquire_timeout" | "orphan_transition";
15
+ /**
16
+ * Why the acquire path could not retire a lock directory whose owner it had already
17
+ * proven dead. Attached to `FileLockAcquireError` so a host whose lock-removal path
18
+ * refuses the directory is not misreported as a live or unreaped owner. The acquire
19
+ * loop still contends after a refusal (a concurrent reclaimer may finish the same dead
20
+ * generation); this records the cause that exhaustion must report.
21
+ */
22
+ export interface FileLockStaleRemovalFailure {
23
+ /** Guarded-removal outcome the acquire path can record, or `"error"` when the removal attempt threw. */
24
+ outcome: "cleanup_failed" | "error";
25
+ /** Native/errno code carried by the refusal, when one was present. */
26
+ code?: string;
27
+ /** Human-readable cause surfaced to the operator at exhaustion. */
28
+ message: string;
29
+ }
14
30
  export declare class FileLockAcquireError extends Error {
15
31
  readonly filePath: string;
16
32
  readonly lockPath: string;
17
33
  readonly attempts: number;
18
34
  readonly holder: string;
19
- readonly code = "acquire_timeout";
20
- constructor(filePath: string, lockPath: string, attempts: number, holder: string);
35
+ readonly reason: FileLockAcquireReason;
36
+ readonly orphanPath?: string | undefined;
37
+ readonly removalFailure?: FileLockStaleRemovalFailure | undefined;
38
+ readonly code: FileLockAcquireReason;
39
+ constructor(filePath: string, lockPath: string, attempts: number, holder: string, reason?: FileLockAcquireReason, orphanPath?: string | undefined, removalFailure?: FileLockStaleRemovalFailure | undefined);
21
40
  }
41
+ export declare function isFileLockAcquireTimeout(error: unknown): error is FileLockAcquireError;
22
42
  /** Release retries cover transient handle denial and a competing exact-removal quarantine cleanup. */
23
43
  export declare const FILE_LOCK_RELEASE_RETRY_ATTEMPTS = 20;
24
44
  export declare const FILE_LOCK_RELEASE_RETRY_DELAY_MS = 25;
@@ -29,6 +49,7 @@ export declare const FileLockTestHooks: {
29
49
  renameDirectoryNoReplacePathAsync: typeof renameDirectoryNoReplacePathAsync;
30
50
  };
31
51
  nativeQuarantineBindings?: () => NativeFileLockBindings;
52
+ nativeExactRemovalProbe?: () => boolean | Promise<boolean>;
32
53
  };
33
54
  /**
34
55
  * Returns the OS-provided process start timestamp for PID-reuse detection.
@@ -131,7 +152,10 @@ export declare function genericFileLockDirIsStale(lockDir: string, staleMs: numb
131
152
  export declare function genericFileLockDirStaleVerdict(lockDir: string, staleMs: number, ownerHostId?: string): Promise<GenericFileLockDirStaleVerdict>;
132
153
  type NativeFileLockBindings = {
133
154
  snapshotDirectoryTree(lockPath: string): NativeDirectoryTreeResult;
134
- exactRemoveDirectoryTree(lockPath: string, snapshot: NonNullable<NativeDirectoryTreeResult["snapshot"]>): NativeExactUnlinkResult;
155
+ exactRemoveDirectoryTree(lockPath: string, snapshot: NonNullable<NativeDirectoryTreeResult["snapshot"]>, parentIdentity?: {
156
+ dev: bigint;
157
+ ino: bigint;
158
+ }, detachOnly?: boolean): NativeExactUnlinkResult;
135
159
  };
136
160
  export declare function acquireFileLock(filePath: string, options?: FileLockOptions): Promise<() => Promise<void>>;
137
161
  /**
@@ -125,6 +125,7 @@ export declare const ModelPresetRegistryPresetsSchema: z.ZodObject<{
125
125
  "azure-openai-responses": "azure-openai-responses";
126
126
  "bedrock-converse-stream": "bedrock-converse-stream";
127
127
  "cursor-agent": "cursor-agent";
128
+ "devin-acp": "devin-acp";
128
129
  "google-gemini-cli": "google-gemini-cli";
129
130
  "google-generative-ai": "google-generative-ai";
130
131
  "google-vertex": "google-vertex";
@@ -64,7 +64,7 @@ export declare const ModelsConfigFile: ConfigFile<{
64
64
  baseUrl?: string | undefined;
65
65
  apiKey?: string | undefined;
66
66
  apiKeyEnv?: string | undefined;
67
- api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "cursor-agent" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "ollama-chat" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
67
+ api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "cursor-agent" | "devin-acp" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "ollama-chat" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
68
68
  headers?: Record<string, string> | undefined;
69
69
  compat?: {
70
70
  supportsStore?: boolean | undefined;
@@ -129,7 +129,7 @@ export declare const ModelsConfigFile: ConfigFile<{
129
129
  models?: {
130
130
  id: string;
131
131
  name?: string | undefined;
132
- api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "cursor-agent" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "ollama-chat" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
132
+ api?: "anthropic-messages" | "azure-openai-responses" | "bedrock-converse-stream" | "cursor-agent" | "devin-acp" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "ollama-chat" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
133
133
  baseUrl?: string | undefined;
134
134
  reasoning?: boolean | undefined;
135
135
  thinking?: {
@@ -372,9 +372,9 @@ export declare class ModelRegistry {
372
372
  /**
373
373
  * Reload models from disk and refresh runtime provider discovery state.
374
374
  */
375
- refresh(strategy?: ModelRefreshStrategy): Promise<void>;
376
- refreshInBackground(strategy?: ModelRefreshStrategy): void;
377
- refreshProvider(providerId: string, strategy?: ModelRefreshStrategy): Promise<void>;
375
+ refresh(strategy?: ModelRefreshStrategy, credentialSessionId?: string): Promise<void>;
376
+ refreshInBackground(strategy?: ModelRefreshStrategy, credentialSessionId?: string): void;
377
+ refreshProvider(providerId: string, strategy?: ModelRefreshStrategy, credentialSessionId?: string): Promise<void>;
378
378
  admitCachedProviderForStoredLiteralCredential(providerId: string, selector: AuthCredentialSelector): boolean;
379
379
  /** @internal Validate an existing startup model without mutating a caller-supplied registry. */
380
380
  validateModelForStoredLiteralCredential(providerId: string, modelId: string, selector: AuthCredentialSelector): boolean;
@@ -541,6 +541,13 @@ export declare class ModelRegistry {
541
541
  hasConfiguredProviderAuth(provider: string): boolean;
542
542
  isCredentiallessProvider(provider: string): boolean;
543
543
  getDiscoverableProviders(): string[];
544
+ /**
545
+ * Providers whose catalogs can be filled by bounded official refresh:
546
+ * configured discovery, built-in special OAuth dynamics, and standard
547
+ * descriptor-backed providers. Unknown ids stay excluded. Disabled
548
+ * providers are omitted. UI tabs still use getDiscoverableProviders.
549
+ */
550
+ getRefreshableProviders(): string[];
544
551
  getProviderDiscoveryState(provider: string): ProviderDiscoveryState | undefined;
545
552
  /**
546
553
  * Find a model by provider and ID.
@@ -41,7 +41,7 @@ export declare function resolveStartupModelRefreshSelectors(options: {
41
41
  resume?: string | boolean;
42
42
  hasStartupProfile: boolean;
43
43
  }, settings: ModelRoleSettings): ModelSelectorValue | undefined;
44
- export declare function refreshMissingQualifiedModelProviders(selectors: ModelSelectorValue | undefined, modelRegistry: Pick<ModelRegistry, "getAvailable" | "getDiscoverableProviders" | "refreshProvider">): Promise<boolean>;
44
+ export declare function refreshMissingQualifiedModelProviders(selectors: ModelSelectorValue | undefined, modelRegistry: Pick<ModelRegistry, "getAvailable" | "getRefreshableProviders" | "refreshProvider">): Promise<boolean>;
45
45
  /**
46
46
  * Format a model as "provider/modelId" string.
47
47
  */
@@ -173,9 +173,12 @@ export declare function resolveModelChainWithAuth(modelPatterns: readonly string
173
173
  reason: string;
174
174
  }>;
175
175
  }>;
176
+ export declare function isExplicitProviderModelSelector(pattern: string): boolean;
177
+ export declare function isExplicitProviderModelOverride(modelPatterns: readonly string[]): boolean;
176
178
  /**
177
179
  * Resolve a list of override patterns to the first matching model, with an
178
- * auth-aware fallback to the parent session's active model.
180
+ * auth-aware fallback to the parent session's active model for unqualified
181
+ * aliases and role patterns.
179
182
  *
180
183
  * If the resolved subagent model has no working credentials (provider has no
181
184
  * usable auth), and the parent's active model resolves with working auth,
@@ -184,6 +187,14 @@ export declare function resolveModelChainWithAuth(modelPatterns: readonly string
184
187
  * `modelRoles.task` pointing at an unqualified id whose only available
185
188
  * provider variant has no configured credentials — see #985).
186
189
  *
190
+ * Explicit `provider/model` selectors (including user-specified chains of
191
+ * them) fail closed instead: a missing catalog entry or authentication
192
+ * failure must not substitute the parent session's model or another
193
+ * provider. Intentional chain tails still apply in order. Mixed chains that
194
+ * include any unqualified/role entry keep parent fallback for the whole
195
+ * chain, including explicit heads. Glob selectors (`*`, `?`, `[`) are not
196
+ * exact pins.
197
+ *
187
198
  * Keyless-by-design providers (llama.cpp, ollama, lm-studio) advertise the
188
199
  * `kNoAuth` sentinel from `getApiKey` to signal that they do not require
189
200
  * credentials. Those are treated as authenticated here so an explicitly
@@ -192,7 +203,9 @@ export declare function resolveModelChainWithAuth(modelPatterns: readonly string
192
203
  *
193
204
  * If neither the subagent nor the parent has working auth, returns the
194
205
  * primary resolution unchanged so the existing error path still surfaces
195
- * a meaningful failure downstream.
206
+ * a meaningful failure downstream. Explicit-only chains return no model
207
+ * so callers can surface an actionable error. Canonical parent seeding is
208
+ * independent of that fail-closed substitution guard.
196
209
  */
197
210
  export declare function resolveModelOverrideWithAuthFallback(modelPatterns: string[], parentActiveModelPattern: string | undefined, modelRegistry: ModelLookupRegistry & Pick<ModelRegistry, "getApiKey">, settings?: Settings, authSessionId?: string, options?: ModelChainResolutionOptions, canonicalSessionId?: string): Promise<{
198
211
  model?: Model<Api>;
@@ -381,6 +381,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
381
381
  "azure-openai-responses": "azure-openai-responses";
382
382
  "bedrock-converse-stream": "bedrock-converse-stream";
383
383
  "cursor-agent": "cursor-agent";
384
+ "devin-acp": "devin-acp";
384
385
  "google-gemini-cli": "google-gemini-cli";
385
386
  "google-generative-ai": "google-generative-ai";
386
387
  "google-vertex": "google-vertex";
@@ -505,6 +506,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
505
506
  "azure-openai-responses": "azure-openai-responses";
506
507
  "bedrock-converse-stream": "bedrock-converse-stream";
507
508
  "cursor-agent": "cursor-agent";
509
+ "devin-acp": "devin-acp";
508
510
  "google-gemini-cli": "google-gemini-cli";
509
511
  "google-generative-ai": "google-generative-ai";
510
512
  "google-vertex": "google-vertex";
@@ -209,7 +209,7 @@ export declare const SETTINGS_SCHEMA: {
209
209
  };
210
210
  readonly "sdk.promptDeadlineMs": {
211
211
  readonly type: "number";
212
- readonly default: 1800000;
212
+ readonly default: 3600000;
213
213
  readonly description: "SDK-owned prompt deadline; ACP has no separate timeout.";
214
214
  readonly validate: (value: number) => boolean;
215
215
  };
@@ -1,5 +1,5 @@
1
1
  import type { JsonSchema, WorkflowGate } from "../modes/shared/agent-wire/workflow-gate-types";
2
- export type PublicReason = "unsupported_gate" | "query_unavailable" | "pagination_malformed" | "row_unrepresentable" | "missing_runtime_turn" | "invalid_runtime_turn" | "invalid_gate_row" | "wrong_session" | "ownership_unavailable" | "ownership_conflict" | "gate_provenance_changed" | "turn_terminal" | "endpoint_changed" | "terminal_race" | "terminal_uncertain" | "session_closing" | "session_unavailable" | "reported_failure" | "validation_rejected" | "dispatch_admission_lost";
2
+ export type PublicReason = "unsupported_gate" | "query_unavailable" | "pagination_malformed" | "row_unrepresentable" | "missing_runtime_turn" | "pending_registration" | "invalid_runtime_turn" | "invalid_gate_row" | "wrong_session" | "ownership_unavailable" | "ownership_conflict" | "gate_provenance_changed" | "turn_terminal" | "endpoint_changed" | "terminal_race" | "terminal_uncertain" | "session_closing" | "session_unavailable" | "reported_failure" | "validation_rejected" | "dispatch_admission_lost";
3
3
  export type CoordinatorQuestionStatusV1 = "pending" | "answered" | "stale" | "uncertain";
4
4
  export interface CoordinatorQuestionOptionPublicV1 {
5
5
  id: string;