@claudexor/cli 3.1.2 → 3.3.7-rc.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 (244) hide show
  1. package/dist/about-command.d.ts.map +1 -1
  2. package/dist/accounts-projection.d.ts +8 -1
  3. package/dist/accounts-projection.d.ts.map +1 -1
  4. package/dist/accounts-projection.js +33 -20
  5. package/dist/accounts-projection.js.map +1 -1
  6. package/dist/accounts-services.d.ts +208 -0
  7. package/dist/accounts-services.d.ts.map +1 -0
  8. package/dist/accounts-services.js +88 -0
  9. package/dist/accounts-services.js.map +1 -0
  10. package/dist/acp-surface-runner.d.ts +39 -0
  11. package/dist/acp-surface-runner.d.ts.map +1 -1
  12. package/dist/acp-surface-runner.js +104 -30
  13. package/dist/acp-surface-runner.js.map +1 -1
  14. package/dist/attachment-upload.d.ts +5 -0
  15. package/dist/attachment-upload.d.ts.map +1 -0
  16. package/dist/attachment-upload.js +64 -0
  17. package/dist/attachment-upload.js.map +1 -0
  18. package/dist/capabilities.d.ts.map +1 -1
  19. package/dist/capabilities.js +6 -1
  20. package/dist/capabilities.js.map +1 -1
  21. package/dist/choice-input.d.ts +7 -0
  22. package/dist/choice-input.d.ts.map +1 -0
  23. package/dist/choice-input.js +17 -0
  24. package/dist/choice-input.js.map +1 -0
  25. package/dist/claude-oauth-usage.d.ts.map +1 -1
  26. package/dist/claude-oauth-usage.js +13 -1
  27. package/dist/claude-oauth-usage.js.map +1 -1
  28. package/dist/claudexord-entry.js.map +1 -1
  29. package/dist/claudexord.d.ts +1 -13
  30. package/dist/claudexord.d.ts.map +1 -1
  31. package/dist/claudexord.js +57 -94
  32. package/dist/claudexord.js.map +1 -1
  33. package/dist/cli-error.d.ts.map +1 -1
  34. package/dist/cli-error.js +21 -11
  35. package/dist/cli-error.js.map +1 -1
  36. package/dist/cli.js +143 -163
  37. package/dist/cli.js.map +1 -1
  38. package/dist/codex-device-login.js.map +1 -1
  39. package/dist/codex-quota-source.js.map +1 -1
  40. package/dist/command-flags.d.ts +16 -1
  41. package/dist/command-flags.d.ts.map +1 -1
  42. package/dist/command-flags.js +41 -19
  43. package/dist/command-flags.js.map +1 -1
  44. package/dist/command-registry.d.ts +21 -8
  45. package/dist/command-registry.d.ts.map +1 -1
  46. package/dist/command-registry.js +59 -116
  47. package/dist/command-registry.js.map +1 -1
  48. package/dist/command-scope.d.ts +13 -0
  49. package/dist/command-scope.d.ts.map +1 -0
  50. package/dist/command-scope.js +61 -0
  51. package/dist/command-scope.js.map +1 -0
  52. package/dist/control-services.d.ts +1638 -1003
  53. package/dist/control-services.d.ts.map +1 -1
  54. package/dist/control-services.js +49 -67
  55. package/dist/control-services.js.map +1 -1
  56. package/dist/credential-commands.d.ts.map +1 -1
  57. package/dist/credential-commands.js +13 -3
  58. package/dist/credential-commands.js.map +1 -1
  59. package/dist/daemon-lifecycle.d.ts.map +1 -1
  60. package/dist/daemon-outcome.d.ts +3 -5
  61. package/dist/daemon-outcome.d.ts.map +1 -1
  62. package/dist/daemon-outcome.js +7 -19
  63. package/dist/daemon-outcome.js.map +1 -1
  64. package/dist/daemon-run.d.ts +21 -12
  65. package/dist/daemon-run.d.ts.map +1 -1
  66. package/dist/daemon-run.js +59 -40
  67. package/dist/daemon-run.js.map +1 -1
  68. package/dist/daemon-runtime-shutdown.d.ts +7 -0
  69. package/dist/daemon-runtime-shutdown.d.ts.map +1 -1
  70. package/dist/daemon-runtime-shutdown.js +29 -0
  71. package/dist/daemon-runtime-shutdown.js.map +1 -1
  72. package/dist/delegation-belt-descriptor.js.map +1 -1
  73. package/dist/delegation-output.d.ts +2 -0
  74. package/dist/delegation-output.d.ts.map +1 -1
  75. package/dist/delegation-output.js +3 -1
  76. package/dist/delegation-output.js.map +1 -1
  77. package/dist/harness-command.d.ts +13 -0
  78. package/dist/harness-command.d.ts.map +1 -0
  79. package/dist/harness-command.js +35 -0
  80. package/dist/harness-command.js.map +1 -0
  81. package/dist/harness-installer.d.ts +79 -0
  82. package/dist/harness-installer.d.ts.map +1 -0
  83. package/dist/harness-installer.js +256 -0
  84. package/dist/harness-installer.js.map +1 -0
  85. package/dist/interaction-prompt.d.ts +19 -0
  86. package/dist/interaction-prompt.d.ts.map +1 -0
  87. package/dist/interaction-prompt.js +114 -0
  88. package/dist/interaction-prompt.js.map +1 -0
  89. package/dist/live.d.ts +2 -6
  90. package/dist/live.d.ts.map +1 -1
  91. package/dist/live.js +88 -75
  92. package/dist/live.js.map +1 -1
  93. package/dist/mcp-daemon-unavailable.d.ts +6 -0
  94. package/dist/mcp-daemon-unavailable.d.ts.map +1 -0
  95. package/dist/mcp-daemon-unavailable.js +16 -0
  96. package/dist/mcp-daemon-unavailable.js.map +1 -0
  97. package/dist/mcp-run-projections.d.ts +30 -0
  98. package/dist/mcp-run-projections.d.ts.map +1 -1
  99. package/dist/mcp-run-projections.js +17 -17
  100. package/dist/mcp-run-projections.js.map +1 -1
  101. package/dist/mcp-runner.d.ts.map +1 -1
  102. package/dist/mcp-runner.js +81 -39
  103. package/dist/mcp-runner.js.map +1 -1
  104. package/dist/native-login.js.map +1 -1
  105. package/dist/ops-command-specs.d.ts +64 -0
  106. package/dist/ops-command-specs.d.ts.map +1 -0
  107. package/dist/ops-command-specs.js +146 -0
  108. package/dist/ops-command-specs.js.map +1 -0
  109. package/dist/ops-commands.d.ts.map +1 -1
  110. package/dist/ops-commands.js +23 -5
  111. package/dist/ops-commands.js.map +1 -1
  112. package/dist/orphan-reaper.js.map +1 -1
  113. package/dist/output-mode.d.ts +11 -0
  114. package/dist/output-mode.d.ts.map +1 -0
  115. package/dist/output-mode.js +28 -0
  116. package/dist/output-mode.js.map +1 -0
  117. package/dist/plan-question-loop.d.ts.map +1 -1
  118. package/dist/plan-question-loop.js +17 -13
  119. package/dist/plan-question-loop.js.map +1 -1
  120. package/dist/plugins.js +1 -1
  121. package/dist/plugins.js.map +1 -1
  122. package/dist/primary-output.d.ts +9 -4
  123. package/dist/primary-output.d.ts.map +1 -1
  124. package/dist/primary-output.js +50 -2
  125. package/dist/primary-output.js.map +1 -1
  126. package/dist/quota-subject-universe.d.ts +6 -0
  127. package/dist/quota-subject-universe.d.ts.map +1 -0
  128. package/dist/quota-subject-universe.js +31 -0
  129. package/dist/quota-subject-universe.js.map +1 -0
  130. package/dist/registry.js.map +1 -1
  131. package/dist/release-command.d.ts +1 -1
  132. package/dist/release-command.js +2 -2
  133. package/dist/remote-command-specs.d.ts +45 -0
  134. package/dist/remote-command-specs.d.ts.map +1 -0
  135. package/dist/remote-command-specs.js +29 -0
  136. package/dist/remote-command-specs.js.map +1 -0
  137. package/dist/remote-command.d.ts +11 -0
  138. package/dist/remote-command.d.ts.map +1 -0
  139. package/dist/remote-command.js +262 -0
  140. package/dist/remote-command.js.map +1 -0
  141. package/dist/remote-filesystem.d.ts +33 -0
  142. package/dist/remote-filesystem.d.ts.map +1 -0
  143. package/dist/remote-filesystem.js +280 -0
  144. package/dist/remote-filesystem.js.map +1 -0
  145. package/dist/repo-asset-authority.js.map +1 -1
  146. package/dist/request-preflight.d.ts +11 -2
  147. package/dist/request-preflight.d.ts.map +1 -1
  148. package/dist/request-preflight.js +36 -13
  149. package/dist/request-preflight.js.map +1 -1
  150. package/dist/retention-service.d.ts.map +1 -1
  151. package/dist/retention-service.js +6 -1
  152. package/dist/retention-service.js.map +1 -1
  153. package/dist/retry-command-specs.d.ts.map +1 -1
  154. package/dist/retry-command-specs.js +2 -0
  155. package/dist/retry-command-specs.js.map +1 -1
  156. package/dist/run-applicability.d.ts +74 -0
  157. package/dist/run-applicability.d.ts.map +1 -0
  158. package/dist/run-applicability.js +80 -0
  159. package/dist/run-applicability.js.map +1 -0
  160. package/dist/run-detail-projections.d.ts +23 -0
  161. package/dist/run-detail-projections.d.ts.map +1 -1
  162. package/dist/run-detail-projections.js +32 -1
  163. package/dist/run-detail-projections.js.map +1 -1
  164. package/dist/run-detail-response.d.ts +7 -0
  165. package/dist/run-detail-response.d.ts.map +1 -0
  166. package/dist/run-detail-response.js +23 -0
  167. package/dist/run-detail-response.js.map +1 -0
  168. package/dist/run-facts-projection.d.ts +22 -0
  169. package/dist/run-facts-projection.d.ts.map +1 -0
  170. package/dist/run-facts-projection.js +86 -0
  171. package/dist/run-facts-projection.js.map +1 -0
  172. package/dist/runtime-replacement-stop.d.ts +25 -0
  173. package/dist/runtime-replacement-stop.d.ts.map +1 -0
  174. package/dist/runtime-replacement-stop.js +145 -0
  175. package/dist/runtime-replacement-stop.js.map +1 -0
  176. package/dist/settings-command.d.ts +1 -0
  177. package/dist/settings-command.d.ts.map +1 -1
  178. package/dist/settings-command.js +27 -21
  179. package/dist/settings-command.js.map +1 -1
  180. package/dist/settings-service.d.ts +7 -7
  181. package/dist/settings-service.d.ts.map +1 -1
  182. package/dist/settings-service.js +3 -3
  183. package/dist/settings-service.js.map +1 -1
  184. package/dist/setup-client-pty.d.ts +14 -0
  185. package/dist/setup-client-pty.d.ts.map +1 -0
  186. package/dist/setup-client-pty.js +61 -0
  187. package/dist/setup-client-pty.js.map +1 -0
  188. package/dist/setup-device-code-disclosure.d.ts +15 -0
  189. package/dist/setup-device-code-disclosure.d.ts.map +1 -0
  190. package/dist/setup-device-code-disclosure.js +52 -0
  191. package/dist/setup-device-code-disclosure.js.map +1 -0
  192. package/dist/setup-job-reducer.d.ts.map +1 -1
  193. package/dist/setup-job-reducer.js +1 -0
  194. package/dist/setup-job-reducer.js.map +1 -1
  195. package/dist/setup-job-store.d.ts +275 -75
  196. package/dist/setup-job-store.d.ts.map +1 -1
  197. package/dist/setup-job-store.js.map +1 -1
  198. package/dist/setup-job-support.js.map +1 -1
  199. package/dist/setup-jobs.d.ts +517 -137
  200. package/dist/setup-jobs.d.ts.map +1 -1
  201. package/dist/setup-jobs.js +68 -118
  202. package/dist/setup-jobs.js.map +1 -1
  203. package/dist/setup-lifecycle-binding.d.ts +7 -0
  204. package/dist/setup-lifecycle-binding.d.ts.map +1 -1
  205. package/dist/setup-lifecycle-binding.js +6 -0
  206. package/dist/setup-lifecycle-binding.js.map +1 -1
  207. package/dist/setup-login-child-lifecycle.d.ts +13 -0
  208. package/dist/setup-login-child-lifecycle.d.ts.map +1 -0
  209. package/dist/setup-login-child-lifecycle.js +45 -0
  210. package/dist/setup-login-child-lifecycle.js.map +1 -0
  211. package/dist/setup-login-inline.d.ts +11 -12
  212. package/dist/setup-login-inline.d.ts.map +1 -1
  213. package/dist/setup-login-inline.js +26 -15
  214. package/dist/setup-login-inline.js.map +1 -1
  215. package/dist/setup-login-permit.d.ts +10 -0
  216. package/dist/setup-login-permit.d.ts.map +1 -0
  217. package/dist/setup-login-permit.js +52 -0
  218. package/dist/setup-login-permit.js.map +1 -0
  219. package/dist/setup-login-protocol.d.ts.map +1 -1
  220. package/dist/setup-login-protocol.js +9 -2
  221. package/dist/setup-login-protocol.js.map +1 -1
  222. package/dist/setup-login-runner.d.ts +1 -0
  223. package/dist/setup-login-runner.d.ts.map +1 -1
  224. package/dist/setup-login-runner.js +20 -31
  225. package/dist/setup-login-runner.js.map +1 -1
  226. package/dist/setup-supervisor.d.ts.map +1 -1
  227. package/dist/setup-supervisor.js.map +1 -1
  228. package/dist/terminal-run-output.d.ts +12 -0
  229. package/dist/terminal-run-output.d.ts.map +1 -0
  230. package/dist/terminal-run-output.js +33 -0
  231. package/dist/terminal-run-output.js.map +1 -0
  232. package/dist/thread-continuity-context.d.ts +36 -0
  233. package/dist/thread-continuity-context.d.ts.map +1 -0
  234. package/dist/thread-continuity-context.js +33 -0
  235. package/dist/thread-continuity-context.js.map +1 -0
  236. package/dist/thread-execution-workspace.d.ts +15 -0
  237. package/dist/thread-execution-workspace.d.ts.map +1 -1
  238. package/dist/thread-execution-workspace.js +39 -5
  239. package/dist/thread-execution-workspace.js.map +1 -1
  240. package/dist/thread-turn-services.d.ts +107 -0
  241. package/dist/thread-turn-services.d.ts.map +1 -0
  242. package/dist/thread-turn-services.js +28 -0
  243. package/dist/thread-turn-services.js.map +1 -0
  244. package/package.json +23 -23
@@ -1 +1 @@
1
- {"version":3,"file":"about-command.d.ts","sourceRoot":"","sources":["../src/about-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWnD"}
1
+ {"version":3,"file":"about-command.d.ts","sourceRoot":"","sources":["../src/about-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,WAAW;aACtB,QAAQ,EAAE,yBAAyB;aACnC,CAAC,EAAE,0BAA0B;aAC7B,UAAU,EAAE,sCAAsC;CAC1C,CAAC;AAEX,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWnD"}
@@ -9,6 +9,7 @@
9
9
  * + quota, so it can never disagree with run-time admission.
10
10
  */
11
11
  import type { AccountIdentity, ControlHarnessAccounts, CredentialProfile, CredentialProfileStatus, QuotaSnapshot } from "@claudexor/schema";
12
+ import type { HarnessStatus } from "@claudexor/gateway";
12
13
  /**
13
14
  * Non-secret {email, plan} of a config_dir_login PROFILE, read daemon-side from
14
15
  * the profile's OWN isolation-locator store (INV-067) — never the ordinary
@@ -22,5 +23,11 @@ export declare function profileAccountIdentity(profile: CredentialProfile): Acco
22
23
  * Adapters without profile support report an honest unknown.
23
24
  */
24
25
  export declare function profileDoctorStatus(profile: CredentialProfile): Promise<CredentialProfileStatus>;
25
- export declare function harnessAccountsProjection(repoRoot: string, quotaSnapshots?: readonly QuotaSnapshot[]): Promise<ControlHarnessAccounts[]>;
26
+ export declare function harnessAccountsProjection(repoRoot: string, quotaSnapshots?: readonly QuotaSnapshot[], snapshot?: {
27
+ statuses?: readonly HarnessStatus[];
28
+ profiles?: readonly {
29
+ profile: CredentialProfile;
30
+ status: CredentialProfileStatus;
31
+ }[];
32
+ }): Promise<ControlHarnessAccounts[]>;
26
33
  //# sourceMappingURL=accounts-projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-projection.d.ts","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAmB3B;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAKzF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAYlC;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,SAAS,aAAa,EAAO,GAC5C,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA4CnC"}
1
+ {"version":3,"file":"accounts-projection.d.ts","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAiBxD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAKzF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAGlC;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,SAAS,aAAa,EAAO,EAC7C,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,EAAE,CAAC;CACvF,GACA,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8DnC"}
@@ -1,5 +1,5 @@
1
1
  import { loadConfig } from "@claudexor/config";
2
- import { nextUpIdentity } from "@claudexor/orchestrator";
2
+ import { defaultCredentialRoute, effectiveAuthPreference, nextUpIdentity, probeCredentialProfileStatus, profileStatusAdmits, } from "@claudexor/orchestrator";
3
3
  import { codexAccountIdentity, defaultNativeCodexHome } from "@claudexor/harness-codex";
4
4
  import { claudeAccountIdentity, defaultNativeClaudeConfigDir } from "@claudexor/harness-claude";
5
5
  import { buildGateway, buildRegistry } from "./registry.js";
@@ -38,34 +38,44 @@ export function profileAccountIdentity(profile) {
38
38
  */
39
39
  export async function profileDoctorStatus(profile) {
40
40
  const adapter = buildRegistry().get(profile.harness_id);
41
- return adapter?.probeCredentialProfile
42
- ? adapter.probeCredentialProfile(profile)
43
- : {
44
- profile_id: profile.profile_id,
45
- harness_id: profile.harness_id,
46
- availability: "unknown",
47
- verification: "not_run",
48
- detail: `harness "${profile.harness_id}" has no profile probe`,
49
- last_verified_at: null,
50
- };
41
+ return probeCredentialProfileStatus(profile, adapter?.probeCredentialProfile?.bind(adapter));
51
42
  }
52
- export async function harnessAccountsProjection(repoRoot, quotaSnapshots = []) {
43
+ export async function harnessAccountsProjection(repoRoot, quotaSnapshots = [], snapshot) {
53
44
  const cfg = loadConfig(repoRoot).global;
54
45
  const harnessIds = [...buildRegistry({ includeFakes: false }).keys()].sort();
55
46
  const nativeDetected = new Map();
56
- try {
57
- const statuses = await buildGateway({ includeFakes: false }).statusAll({ cwd: repoRoot, fresh: false }, harnessIds);
58
- for (const s of statuses) {
59
- nativeDetected.set(s.id, s.authSources.some((src) => src.source === "native_session" && src.availability === "available"));
47
+ let statuses = snapshot?.statuses ?? [];
48
+ if (!snapshot?.statuses) {
49
+ try {
50
+ statuses = await buildGateway({ includeFakes: false }).statusAll({ cwd: repoRoot, fresh: true }, harnessIds);
51
+ }
52
+ catch {
53
+ statuses = [];
60
54
  }
61
55
  }
62
- catch {
63
- // Doctor probe unavailable: every harness reports "native not detected"
64
- // rather than failing the whole accounts listing.
56
+ const defaultRoutes = new Map();
57
+ for (const s of statuses) {
58
+ const native = s.authSources.find((source) => source.source === "native_session");
59
+ const detected = native?.availability === "available";
60
+ nativeDetected.set(s.id, detected);
61
+ const harness = cfg.harnesses[s.id];
62
+ const route = defaultCredentialRoute(s, effectiveAuthPreference(harness?.auth_preference, cfg.routing.auth_preference));
63
+ if (route)
64
+ defaultRoutes.set(s.id, route);
65
+ }
66
+ const readyProfiles = new Map();
67
+ for (const entry of snapshot?.profiles ?? []) {
68
+ if (!entry.profile.enabled || !profileStatusAdmits(entry.profile, entry.status))
69
+ continue;
70
+ const ready = readyProfiles.get(entry.profile.harness_id) ?? new Set();
71
+ ready.add(entry.profile.profile_id);
72
+ readyProfiles.set(entry.profile.harness_id, ready);
65
73
  }
66
74
  return harnessIds.map((harnessId) => {
67
75
  const h = cfg.harnesses[harnessId];
68
76
  const nativeEnabled = h?.native_credentials_enabled ?? true;
77
+ const defaultEnabled = (h?.enabled ?? true) && nativeEnabled;
78
+ const defaultRoute = defaultRoutes.get(harnessId) ?? null;
69
79
  return {
70
80
  harness_id: harnessId,
71
81
  native_credentials_enabled: nativeEnabled,
@@ -82,7 +92,10 @@ export async function harnessAccountsProjection(repoRoot, quotaSnapshots = []) {
82
92
  headroom_threshold: 0.9,
83
93
  },
84
94
  snapshots: quotaSnapshots,
85
- nativeEnabled,
95
+ defaultEnabled,
96
+ defaultReady: defaultRoute !== null,
97
+ defaultRoute,
98
+ readyProfileIds: readyProfiles.get(harnessId) ?? new Set(),
86
99
  }),
87
100
  };
88
101
  });
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-projection.js","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts-projection.js","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ import type { QuotaRegistry } from "@claudexor/daemon";
2
+ import { type HarnessStatus } from "@claudexor/gateway";
3
+ export type HarnessListInput = {
4
+ fresh?: boolean;
5
+ includeFakes?: boolean;
6
+ harnessIds?: string[];
7
+ };
8
+ export declare function projectHarnessStatuses(statuses: readonly HarnessStatus[]): Promise<{
9
+ id: string;
10
+ available: boolean;
11
+ status: "ok" | "degraded" | "unavailable";
12
+ manifest: import("@claudexor/schema").HarnessManifest | null;
13
+ enabledIntents: import("@claudexor/schema").Intent[];
14
+ routableIntents: import("@claudexor/schema").Intent[];
15
+ disabledIntents: import("@claudexor/schema").Intent[];
16
+ checks: import("@claudexor/schema").ConformanceCheck[];
17
+ reasons: string[];
18
+ authSources: import("@claudexor/schema").AuthSourceReadiness[];
19
+ configuredModel: string | null;
20
+ configuredModelCheck: {
21
+ status: "ok" | "rejected";
22
+ message?: string | null;
23
+ } | null;
24
+ delegation: {
25
+ available: boolean;
26
+ reason: "manifest_unsupported" | "ready" | "runtime_unavailable";
27
+ remediation: string | null;
28
+ requiresFullAccess: boolean;
29
+ };
30
+ readiness: {
31
+ id: string;
32
+ kind: "auth" | "binary" | "model" | "probe" | "smoke";
33
+ title: string;
34
+ status: "fail" | "pass" | "skip";
35
+ detail: string | null;
36
+ }[];
37
+ }[]>;
38
+ /** One server-owned Accounts response builder. The opt-in form refreshes quota
39
+ * first and then derives next_up from that exact returned response; no client
40
+ * can accidentally pair a newer quota card with an older routing identity. */
41
+ export declare function createCredentialProfilesService(quotaRegistry: () => QuotaRegistry): (input?: {
42
+ snapshot?: boolean;
43
+ }) => Promise<{
44
+ profiles: {
45
+ profile: {
46
+ profile_id: string;
47
+ harness_id: string;
48
+ display_name: string;
49
+ credential_kind: "api_key" | "config_dir_login" | "oauth_token";
50
+ isolation_locator: string | null;
51
+ secret_ref: string | null;
52
+ enabled: boolean;
53
+ created_at: string | null;
54
+ };
55
+ status: {
56
+ profile_id: string;
57
+ harness_id: string;
58
+ availability: "available" | "unavailable" | "unknown";
59
+ verification: "failed" | "not_run" | "passed";
60
+ verification_source: "local_store" | "vendor";
61
+ detail?: string | undefined;
62
+ last_verified_at: string | null;
63
+ };
64
+ identity: {
65
+ email?: string | undefined;
66
+ plan?: string | undefined;
67
+ } | null;
68
+ }[];
69
+ harnessAccounts: {
70
+ harness_id: string;
71
+ native_credentials_enabled: boolean;
72
+ native_login_detected: boolean;
73
+ identity: {
74
+ email?: string | undefined;
75
+ plan?: string | undefined;
76
+ } | null;
77
+ next_up: {
78
+ kind: "profile";
79
+ profileId: string;
80
+ } | {
81
+ kind: "native";
82
+ route?: "api_key" | "local_session" | undefined;
83
+ } | {
84
+ kind: "none";
85
+ reason: string;
86
+ };
87
+ }[];
88
+ harnesses: {
89
+ id: string;
90
+ available: boolean;
91
+ status: "ok" | "degraded" | "unavailable";
92
+ manifest: import("@claudexor/schema").HarnessManifest | null;
93
+ enabledIntents: import("@claudexor/schema").Intent[];
94
+ routableIntents: import("@claudexor/schema").Intent[];
95
+ disabledIntents: import("@claudexor/schema").Intent[];
96
+ checks: import("@claudexor/schema").ConformanceCheck[];
97
+ reasons: string[];
98
+ authSources: import("@claudexor/schema").AuthSourceReadiness[];
99
+ configuredModel: string | null;
100
+ configuredModelCheck: {
101
+ status: "ok" | "rejected";
102
+ message?: string | null;
103
+ } | null;
104
+ delegation: {
105
+ available: boolean;
106
+ reason: "manifest_unsupported" | "ready" | "runtime_unavailable";
107
+ remediation: string | null;
108
+ requiresFullAccess: boolean;
109
+ };
110
+ readiness: {
111
+ id: string;
112
+ kind: "auth" | "binary" | "model" | "probe" | "smoke";
113
+ title: string;
114
+ status: "fail" | "pass" | "skip";
115
+ detail: string | null;
116
+ }[];
117
+ }[];
118
+ git: {
119
+ status: "available" | "developer_tools_stub" | "failed" | "missing";
120
+ version: string | null;
121
+ detail: string | null;
122
+ remediation: string | null;
123
+ };
124
+ quota: {
125
+ snapshots: {
126
+ subject: {
127
+ harness: string;
128
+ credential_route: "local" | "managed_api_key" | "vendor_native";
129
+ plan_label: string | null;
130
+ subject_id: string | null;
131
+ };
132
+ constraints: {
133
+ id: string;
134
+ label: string;
135
+ used_ratio: number | null;
136
+ window_seconds: number | null;
137
+ resets_at: string | null;
138
+ cooldown_until: string | null;
139
+ }[];
140
+ source: "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
141
+ observed_at: string;
142
+ freshness: "fresh" | "stale" | "unknown";
143
+ }[];
144
+ absences: {
145
+ subject: {
146
+ harness: string;
147
+ credential_route: "local" | "managed_api_key" | "vendor_native";
148
+ plan_label: string | null;
149
+ subject_id: string | null;
150
+ };
151
+ reason: "auth_revoked" | "no_source" | "not_logged_in" | "platform_unsupported" | "refresh_failed" | "transport_unavailable";
152
+ detail: string | null;
153
+ observed_at: string;
154
+ }[];
155
+ refreshed_at: string | null;
156
+ };
157
+ quotaEventCursor: string;
158
+ } | {
159
+ harnesses?: undefined;
160
+ git?: undefined;
161
+ quota?: undefined;
162
+ quotaEventCursor?: undefined;
163
+ profiles: {
164
+ profile: {
165
+ profile_id: string;
166
+ harness_id: string;
167
+ display_name: string;
168
+ credential_kind: "api_key" | "config_dir_login" | "oauth_token";
169
+ isolation_locator: string | null;
170
+ secret_ref: string | null;
171
+ enabled: boolean;
172
+ created_at: string | null;
173
+ };
174
+ status: {
175
+ profile_id: string;
176
+ harness_id: string;
177
+ availability: "available" | "unavailable" | "unknown";
178
+ verification: "failed" | "not_run" | "passed";
179
+ verification_source: "local_store" | "vendor";
180
+ detail?: string | undefined;
181
+ last_verified_at: string | null;
182
+ };
183
+ identity: {
184
+ email?: string | undefined;
185
+ plan?: string | undefined;
186
+ } | null;
187
+ }[];
188
+ harnessAccounts: {
189
+ harness_id: string;
190
+ native_credentials_enabled: boolean;
191
+ native_login_detected: boolean;
192
+ identity: {
193
+ email?: string | undefined;
194
+ plan?: string | undefined;
195
+ } | null;
196
+ next_up: {
197
+ kind: "profile";
198
+ profileId: string;
199
+ } | {
200
+ kind: "native";
201
+ route?: "api_key" | "local_session" | undefined;
202
+ } | {
203
+ kind: "none";
204
+ reason: string;
205
+ };
206
+ }[];
207
+ }>;
208
+ //# sourceMappingURL=accounts-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-services.d.ts","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqB5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE;;;;;;;;;;;;;gBAKpD,IAAI,GAAG,UAAU;kBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;KAuBpE;AAED;;8EAE8E;AAC9E,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,aAAa,YAC1D;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA7BnB,IAAI,GAAG,UAAU;sBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEpE"}
@@ -0,0 +1,88 @@
1
+ import { loadConfig } from "@claudexor/config";
2
+ import { normalizeReadiness } from "@claudexor/gateway";
3
+ import { probeGitCapability } from "@claudexor/workspace";
4
+ import { noProjectRepoRoot } from "@claudexor/util";
5
+ import { validateModel } from "@claudexor/core";
6
+ import { vendorVerifiedProfileStatus } from "@claudexor/orchestrator";
7
+ import { harnessAccountsProjection, profileAccountIdentity, profileDoctorStatus, } from "./accounts-projection.js";
8
+ import { buildGateway, harnessModels } from "./registry.js";
9
+ import { delegationCapabilityFor } from "./delegation-capability.js";
10
+ const NO_PROJECT_ROOT = noProjectRepoRoot();
11
+ export async function projectHarnessStatuses(statuses) {
12
+ const cfg = loadConfig(NO_PROJECT_ROOT);
13
+ return Promise.all(statuses.map(async (status) => {
14
+ const configured = cfg.global.harnesses[status.id]?.default_model ?? null;
15
+ let check = null;
16
+ if (configured) {
17
+ const truth = await harnessModels(status.id, NO_PROJECT_ROOT, true);
18
+ check = validateModel(configured, truth.models.map((model) => model.id), truth.source === "api" ? "api" : "manifest");
19
+ }
20
+ return {
21
+ ...status,
22
+ configuredModel: configured,
23
+ configuredModelCheck: check,
24
+ delegation: delegationCapabilityFor(status.manifest),
25
+ readiness: normalizeReadiness({
26
+ checks: status.checks,
27
+ authSources: status.authSources,
28
+ configuredModel: configured,
29
+ configuredModelCheck: check,
30
+ }),
31
+ };
32
+ }));
33
+ }
34
+ /** One server-owned Accounts response builder. The opt-in form refreshes quota
35
+ * first and then derives next_up from that exact returned response; no client
36
+ * can accidentally pair a newer quota card with an older routing identity. */
37
+ export function createCredentialProfilesService(quotaRegistry) {
38
+ return async (input) => {
39
+ const profiles = loadConfig(NO_PROJECT_ROOT).global.credential_profiles;
40
+ const projectedProfiles = Promise.all(profiles.map(async (profile) => ({
41
+ profile,
42
+ status: await profileDoctorStatus(profile),
43
+ identity: profileAccountIdentity(profile),
44
+ })));
45
+ if (input?.snapshot === true) {
46
+ const [probed, statuses, git, fencedQuota] = await Promise.all([
47
+ projectedProfiles,
48
+ buildGateway({ includeFakes: false }).statusAll({ cwd: NO_PROJECT_ROOT, fresh: true }),
49
+ probeGitCapability(),
50
+ quotaRegistry().refreshWithCursor(),
51
+ ]);
52
+ const quota = fencedQuota.response;
53
+ const out = withVendorVerification(probed, quota);
54
+ return {
55
+ profiles: out,
56
+ harnessAccounts: await harnessAccountsProjection(NO_PROJECT_ROOT, quota.snapshots, {
57
+ profiles: out,
58
+ statuses,
59
+ }),
60
+ harnesses: await projectHarnessStatuses(statuses),
61
+ git,
62
+ quota,
63
+ quotaEventCursor: fencedQuota.quotaEventCursor,
64
+ };
65
+ }
66
+ const quota = quotaRegistry().read();
67
+ const out = withVendorVerification(await projectedProfiles, quota);
68
+ return {
69
+ profiles: out,
70
+ harnessAccounts: await harnessAccountsProjection(NO_PROJECT_ROOT, quota.snapshots, {
71
+ profiles: out,
72
+ }),
73
+ };
74
+ };
75
+ }
76
+ /**
77
+ * Replace each profile's LOCAL verification verdict with the vendor's, wherever
78
+ * the quota poller already has one. Applied before `harnessAccounts` is built
79
+ * so the routing identity (`next_up`) and the listed status can never disagree:
80
+ * a revoked profile must not be advertised as who the next run routes to.
81
+ */
82
+ function withVendorVerification(entries, quota) {
83
+ return entries.map((entry) => ({
84
+ ...entry,
85
+ status: vendorVerifiedProfileStatus(entry.status, quota),
86
+ }));
87
+ }
88
+ //# sourceMappingURL=accounts-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-services.js","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AAQ5C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAkC;IAC7E,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,aAAa,IAAI,IAAI,CAAC;QAC1E,IAAI,KAAK,GAAkE,IAAI,CAAC;QAChF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YACpE,KAAK,GAAG,aAAa,CACnB,UAAU,EACV,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACrC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,eAAe,EAAE,UAAU;YAC3B,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpD,SAAS,EAAE,kBAAkB,CAAC;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,eAAe,EAAE,UAAU;gBAC3B,oBAAoB,EAAE,KAAK;aAC5B,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;8EAE8E;AAC9E,MAAM,UAAU,+BAA+B,CAAC,aAAkC;IAChF,OAAO,KAAK,EAAE,KAA8B,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACxE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CACnC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,OAAO;YACP,MAAM,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC;YAC1C,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC,CACJ,CAAC;QACF,IAAI,KAAK,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC7D,iBAAiB;gBACjB,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACtF,kBAAkB,EAAE;gBACpB,aAAa,EAAE,CAAC,iBAAiB,EAAE;aACpC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;YACnC,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO;gBACL,QAAQ,EAAE,GAAG;gBACb,eAAe,EAAE,MAAM,yBAAyB,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE;oBACjF,QAAQ,EAAE,GAAG;oBACb,QAAQ;iBACT,CAAC;gBACF,SAAS,EAAE,MAAM,sBAAsB,CAAC,QAAQ,CAAC;gBACjD,GAAG;gBACH,KAAK;gBACL,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO;YACL,QAAQ,EAAE,GAAG;YACb,eAAe,EAAE,MAAM,yBAAyB,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE;gBACjF,QAAQ,EAAE,GAAG;aACd,CAAC;SACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAG7B,OAAY,EACZ,KAAiF;IAEjF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,GAAG,KAAK;QACR,MAAM,EAAE,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;KACzD,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { type ControlPrimaryOutput, type ModeKind, type RunFailure, type RunOutcomeFacts } from "@claudexor/schema";
1
2
  import { type ControlApiAddress } from "./live.js";
3
+ import { type RunDetailProblem } from "./run-detail-projections.js";
2
4
  export declare const ACP_MAX_REPLAY_TURNS = 50;
3
5
  /** Bound the load-replay to the most recent ACP_MAX_REPLAY_TURNS turns, and
4
6
  * report how many older turns were omitted (disclosed to the client, never
@@ -7,10 +9,47 @@ export declare function selectReplayTurns<T>(rawTurns: readonly T[]): {
7
9
  replayTurns: T[];
8
10
  omittedTurnCount: number;
9
11
  };
12
+ /** One post-terminal GET /runs/:id for the ACP turn result (INV-120), DEGRADING
13
+ * on failure: a finished turn must never become a JSON-RPC error that loses
14
+ * the runId. Missing/legacy detail projects null fields; a raised typed
15
+ * problem (e.g. 500 run_facts_invalid) rides the result as `detailProblem`
16
+ * so the client still receives the terminal answer plus the typed reason its
17
+ * detail projections are absent. Exported for test. */
18
+ export declare function projectTerminalTurnDetail(addr: ControlApiAddress, runId: string): Promise<{
19
+ applyEligibility: unknown;
20
+ planReadiness: unknown;
21
+ planQuestions: unknown[];
22
+ failure: RunFailure | null;
23
+ primaryOutput: ControlPrimaryOutput | null;
24
+ outcomeFacts: RunOutcomeFacts | null;
25
+ outcomeBanner: string | null;
26
+ detailProblem?: RunDetailProblem;
27
+ }>;
28
+ type AcpTerminalRecord = {
29
+ state: string;
30
+ error?: string;
31
+ params?: unknown;
32
+ };
33
+ /** Effective mode persisted on the daemon job after the thread-turn funnel. */
34
+ export declare function acpTerminalRecordMode(record: Pick<AcpTerminalRecord, "params">): ModeKind | undefined;
35
+ /**
36
+ * ACP terminal text consumes the Control API's canonical bounded/redacted
37
+ * primaryOutput. Local artifact discovery exists only as a degrading fallback
38
+ * when that one detail read failed; its mode comes from the durable daemon job,
39
+ * never from an ACP default or a hard-coded Agent assumption.
40
+ */
41
+ export declare function acpTerminalSummary(input: {
42
+ runId: string;
43
+ runDir: string;
44
+ record: AcpTerminalRecord;
45
+ detail: Awaited<ReturnType<typeof projectTerminalTurnDetail>>;
46
+ }): string;
10
47
  /** A machine-ish reason for a failed per-turn run-detail fetch: prefer the
11
48
  * typed control-API `code` (e.g. run_expired_by_retention), then the HTTP
12
49
  * status, then a generic marker — never the raw English message. */
13
50
  export declare function typedFetchReason(error: unknown): string;
51
+ /** Translate ACP aliases into the strict Control API run-start vocabulary. */
52
+ export declare function projectAcpRunControls(input: Record<string, unknown>): Record<string, unknown>;
14
53
  type Hooks = {
15
54
  onInteraction?: (ctx: any) => Promise<any | null>;
16
55
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"acp-surface-runner.d.ts","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"AAUA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAWpE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;mDAEmD;AACnD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG;IAC5D,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAKA;AAED;;qEAEqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOvD;AAED,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,KAChB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,EAAE,CACZ,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KACvC,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,CAAC,EAAE,GAAG,EACN,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CA0MlB"}
1
+ {"version":3,"file":"acp-surface-runner.d.ts","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AAWrC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;mDAEmD;AACnD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG;IAC5D,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAKA;AAED;;;;;wDAKwD;AACxD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IACT,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC,CAAC,CA+BD;AAED,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GACxC,QAAQ,GAAG,SAAS,CAMtB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC;CAC/D,GAAG,MAAM,CAsBT;AAED;;qEAEqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOvD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB7F;AAED,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,KAChB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,EAAE,CACZ,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KACvC,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,CAAC,EAAE,GAAG,EACN,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CA+KlB"}