@claudexor/cli 3.24.0 → 4.0.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 (281) hide show
  1. package/dist/account-management.d.ts +17 -0
  2. package/dist/account-management.d.ts.map +1 -0
  3. package/dist/account-management.js +35 -0
  4. package/dist/account-management.js.map +1 -0
  5. package/dist/account-reset-command.d.ts +3 -0
  6. package/dist/account-reset-command.d.ts.map +1 -0
  7. package/dist/account-reset-command.js +32 -0
  8. package/dist/account-reset-command.js.map +1 -0
  9. package/dist/account-reset-services.d.ts +341 -0
  10. package/dist/account-reset-services.d.ts.map +1 -0
  11. package/dist/account-reset-services.js +183 -0
  12. package/dist/account-reset-services.js.map +1 -0
  13. package/dist/account-resource-query.d.ts +18 -0
  14. package/dist/account-resource-query.d.ts.map +1 -0
  15. package/dist/account-resource-query.js +62 -0
  16. package/dist/account-resource-query.js.map +1 -0
  17. package/dist/accounts-services.d.ts +1 -0
  18. package/dist/accounts-services.d.ts.map +1 -1
  19. package/dist/accounts-services.js +4 -2
  20. package/dist/accounts-services.js.map +1 -1
  21. package/dist/claude-account-resources.d.ts +5 -0
  22. package/dist/claude-account-resources.d.ts.map +1 -0
  23. package/dist/claude-account-resources.js +134 -0
  24. package/dist/claude-account-resources.js.map +1 -0
  25. package/dist/claude-oauth-codec.d.ts +4 -0
  26. package/dist/claude-oauth-codec.d.ts.map +1 -0
  27. package/dist/claude-oauth-codec.js +71 -0
  28. package/dist/claude-oauth-codec.js.map +1 -0
  29. package/dist/claude-oauth-credential.d.ts +6 -0
  30. package/dist/claude-oauth-credential.d.ts.map +1 -1
  31. package/dist/claude-oauth-credential.js +18 -0
  32. package/dist/claude-oauth-credential.js.map +1 -1
  33. package/dist/claude-oauth-fetch.d.ts +1 -1
  34. package/dist/claude-oauth-fetch.d.ts.map +1 -1
  35. package/dist/claude-oauth-fetch.js +3 -2
  36. package/dist/claude-oauth-fetch.js.map +1 -1
  37. package/dist/claude-oauth-usage.d.ts +5 -4
  38. package/dist/claude-oauth-usage.d.ts.map +1 -1
  39. package/dist/claude-oauth-usage.js +47 -75
  40. package/dist/claude-oauth-usage.js.map +1 -1
  41. package/dist/claude-resource-source.d.ts +18 -0
  42. package/dist/claude-resource-source.d.ts.map +1 -0
  43. package/dist/claude-resource-source.js +108 -0
  44. package/dist/claude-resource-source.js.map +1 -0
  45. package/dist/claude-resource-transport.d.ts +12 -0
  46. package/dist/claude-resource-transport.d.ts.map +1 -0
  47. package/dist/claude-resource-transport.js +47 -0
  48. package/dist/claude-resource-transport.js.map +1 -0
  49. package/dist/claude-statusline.d.ts +2 -4
  50. package/dist/claude-statusline.d.ts.map +1 -1
  51. package/dist/claude-statusline.js +6 -5
  52. package/dist/claude-statusline.js.map +1 -1
  53. package/dist/claudexord-entry.d.ts +7 -2
  54. package/dist/claudexord-entry.d.ts.map +1 -1
  55. package/dist/claudexord-entry.js +10 -3
  56. package/dist/claudexord-entry.js.map +1 -1
  57. package/dist/claudexord.d.ts +0 -1
  58. package/dist/claudexord.d.ts.map +1 -1
  59. package/dist/claudexord.js +308 -239
  60. package/dist/claudexord.js.map +1 -1
  61. package/dist/cli-error.js +3 -3
  62. package/dist/cli-error.js.map +1 -1
  63. package/dist/cli.js +7 -49
  64. package/dist/cli.js.map +1 -1
  65. package/dist/codex-quota-source.d.ts +7 -2
  66. package/dist/codex-quota-source.d.ts.map +1 -1
  67. package/dist/codex-quota-source.js +74 -14
  68. package/dist/codex-quota-source.js.map +1 -1
  69. package/dist/command-flags.d.ts.map +1 -1
  70. package/dist/command-flags.js +6 -0
  71. package/dist/command-flags.js.map +1 -1
  72. package/dist/command-registry.js +1 -1
  73. package/dist/command-registry.js.map +1 -1
  74. package/dist/continue-from-run.d.ts +7 -8
  75. package/dist/continue-from-run.d.ts.map +1 -1
  76. package/dist/continue-from-run.js +3 -4
  77. package/dist/continue-from-run.js.map +1 -1
  78. package/dist/control-api-address.d.ts +6 -0
  79. package/dist/control-api-address.d.ts.map +1 -0
  80. package/dist/control-api-address.js +53 -0
  81. package/dist/control-api-address.js.map +1 -0
  82. package/dist/control-services.d.ts +400 -230
  83. package/dist/control-services.d.ts.map +1 -1
  84. package/dist/control-services.js +11 -32
  85. package/dist/control-services.js.map +1 -1
  86. package/dist/daemon-admission-runtime.d.ts +0 -60
  87. package/dist/daemon-admission-runtime.d.ts.map +1 -1
  88. package/dist/daemon-admission-runtime.js +3 -168
  89. package/dist/daemon-admission-runtime.js.map +1 -1
  90. package/dist/daemon-agent-runner.d.ts +6 -3
  91. package/dist/daemon-agent-runner.d.ts.map +1 -1
  92. package/dist/daemon-agent-runner.js +2 -1
  93. package/dist/daemon-agent-runner.js.map +1 -1
  94. package/dist/daemon-lifecycle.d.ts +10 -3
  95. package/dist/daemon-lifecycle.d.ts.map +1 -1
  96. package/dist/daemon-lifecycle.js +16 -7
  97. package/dist/daemon-lifecycle.js.map +1 -1
  98. package/dist/daemon-owner.d.ts +7 -0
  99. package/dist/daemon-owner.d.ts.map +1 -0
  100. package/dist/daemon-owner.js +39 -0
  101. package/dist/daemon-owner.js.map +1 -0
  102. package/dist/daemon-run.d.ts +8 -1
  103. package/dist/daemon-run.d.ts.map +1 -1
  104. package/dist/daemon-run.js +31 -3
  105. package/dist/daemon-run.js.map +1 -1
  106. package/dist/daemon-runtime-shutdown.d.ts +1 -1
  107. package/dist/daemon-runtime-shutdown.d.ts.map +1 -1
  108. package/dist/daemon-runtime-shutdown.js +2 -2
  109. package/dist/daemon-runtime-shutdown.js.map +1 -1
  110. package/dist/daemon-startup.d.ts +5 -42
  111. package/dist/daemon-startup.d.ts.map +1 -1
  112. package/dist/daemon-startup.js +7 -85
  113. package/dist/daemon-startup.js.map +1 -1
  114. package/dist/daemon-status-report.d.ts +4 -0
  115. package/dist/daemon-status-report.d.ts.map +1 -0
  116. package/dist/daemon-status-report.js +39 -0
  117. package/dist/daemon-status-report.js.map +1 -0
  118. package/dist/engine-skew.d.ts +1 -0
  119. package/dist/engine-skew.d.ts.map +1 -1
  120. package/dist/engine-skew.js +6 -2
  121. package/dist/engine-skew.js.map +1 -1
  122. package/dist/harness-maintenance-service.d.ts +9 -222
  123. package/dist/harness-maintenance-service.d.ts.map +1 -1
  124. package/dist/harness-maintenance-service.js +7 -37
  125. package/dist/harness-maintenance-service.js.map +1 -1
  126. package/dist/live.d.ts +2 -5
  127. package/dist/live.d.ts.map +1 -1
  128. package/dist/live.js +2 -44
  129. package/dist/live.js.map +1 -1
  130. package/dist/mcp-catalog-query.d.ts +2 -1
  131. package/dist/mcp-catalog-query.d.ts.map +1 -1
  132. package/dist/mcp-catalog-query.js +6 -5
  133. package/dist/mcp-catalog-query.js.map +1 -1
  134. package/dist/mcp-daemon-unavailable.d.ts.map +1 -1
  135. package/dist/mcp-daemon-unavailable.js +4 -3
  136. package/dist/mcp-daemon-unavailable.js.map +1 -1
  137. package/dist/mcp-journal-recovery.d.ts.map +1 -1
  138. package/dist/mcp-journal-recovery.js +4 -4
  139. package/dist/mcp-journal-recovery.js.map +1 -1
  140. package/dist/mcp-runner.d.ts +1 -1
  141. package/dist/mcp-runner.d.ts.map +1 -1
  142. package/dist/mcp-runner.js +11 -4
  143. package/dist/mcp-runner.js.map +1 -1
  144. package/dist/mcp-thread-query.d.ts +1 -1
  145. package/dist/mcp-thread-query.d.ts.map +1 -1
  146. package/dist/mcp-thread-query.js +2 -2
  147. package/dist/mcp-thread-query.js.map +1 -1
  148. package/dist/model-operation-control.d.ts +375 -0
  149. package/dist/model-operation-control.d.ts.map +1 -0
  150. package/dist/model-operation-control.js +16 -0
  151. package/dist/model-operation-control.js.map +1 -0
  152. package/dist/model-services.d.ts +302 -91
  153. package/dist/model-services.d.ts.map +1 -1
  154. package/dist/model-services.js +5 -7
  155. package/dist/model-services.js.map +1 -1
  156. package/dist/ops-command-specs.d.ts.map +1 -1
  157. package/dist/ops-command-specs.js +11 -2
  158. package/dist/ops-command-specs.js.map +1 -1
  159. package/dist/ops-commands.d.ts +1 -8
  160. package/dist/ops-commands.d.ts.map +1 -1
  161. package/dist/ops-commands.js +13 -16
  162. package/dist/ops-commands.js.map +1 -1
  163. package/dist/orphan-reaper.d.ts +18 -0
  164. package/dist/orphan-reaper.d.ts.map +1 -1
  165. package/dist/orphan-reaper.js +50 -0
  166. package/dist/orphan-reaper.js.map +1 -1
  167. package/dist/plugin-cli.d.ts +3 -0
  168. package/dist/plugin-cli.d.ts.map +1 -0
  169. package/dist/plugin-cli.js +57 -0
  170. package/dist/plugin-cli.js.map +1 -0
  171. package/dist/plugin-mcp.d.ts +3 -0
  172. package/dist/plugin-mcp.d.ts.map +1 -0
  173. package/dist/plugin-mcp.js +116 -0
  174. package/dist/plugin-mcp.js.map +1 -0
  175. package/dist/plugin-runtime.d.ts +24 -0
  176. package/dist/plugin-runtime.d.ts.map +1 -0
  177. package/dist/plugin-runtime.js +113 -0
  178. package/dist/plugin-runtime.js.map +1 -0
  179. package/dist/plugins.d.ts +2 -0
  180. package/dist/plugins.d.ts.map +1 -1
  181. package/dist/plugins.js +92 -184
  182. package/dist/plugins.js.map +1 -1
  183. package/dist/project-command.d.ts +4 -1
  184. package/dist/project-command.d.ts.map +1 -1
  185. package/dist/project-command.js +14 -5
  186. package/dist/project-command.js.map +1 -1
  187. package/dist/quota-command.d.ts.map +1 -1
  188. package/dist/quota-command.js +38 -2
  189. package/dist/quota-command.js.map +1 -1
  190. package/dist/quota-refreshers.d.ts +3 -1
  191. package/dist/quota-refreshers.d.ts.map +1 -1
  192. package/dist/quota-refreshers.js +6 -2
  193. package/dist/quota-refreshers.js.map +1 -1
  194. package/dist/quota-services.d.ts +236 -2
  195. package/dist/quota-services.d.ts.map +1 -1
  196. package/dist/quota-services.js +84 -4
  197. package/dist/quota-services.js.map +1 -1
  198. package/dist/recovery-control-services.d.ts +99 -0
  199. package/dist/recovery-control-services.d.ts.map +1 -0
  200. package/dist/recovery-control-services.js +32 -0
  201. package/dist/recovery-control-services.js.map +1 -0
  202. package/dist/remote-filesystem.d.ts +3 -3
  203. package/dist/remote-filesystem.d.ts.map +1 -1
  204. package/dist/remote-filesystem.js.map +1 -1
  205. package/dist/request-preflight.d.ts +2 -2
  206. package/dist/request-preflight.d.ts.map +1 -1
  207. package/dist/request-preflight.js.map +1 -1
  208. package/dist/retention-service.d.ts +3 -3
  209. package/dist/retention-service.d.ts.map +1 -1
  210. package/dist/settings-command.d.ts.map +1 -1
  211. package/dist/settings-command.js +7 -2
  212. package/dist/settings-command.js.map +1 -1
  213. package/dist/settings-service.d.ts +66 -6
  214. package/dist/settings-service.d.ts.map +1 -1
  215. package/dist/settings-service.js +1 -1
  216. package/dist/settings-service.js.map +1 -1
  217. package/dist/setup-client-pty.js +1 -1
  218. package/dist/setup-client-pty.js.map +1 -1
  219. package/dist/setup-credential-window.d.ts +4 -4
  220. package/dist/setup-credential-window.d.ts.map +1 -1
  221. package/dist/setup-credential-window.js +1 -1
  222. package/dist/setup-credential-window.js.map +1 -1
  223. package/dist/setup-device-code-disclosure.js +1 -1
  224. package/dist/setup-device-code-disclosure.js.map +1 -1
  225. package/dist/setup-job-persistence.d.ts +30 -0
  226. package/dist/setup-job-persistence.d.ts.map +1 -0
  227. package/dist/setup-job-persistence.js +3 -0
  228. package/dist/setup-job-persistence.js.map +1 -0
  229. package/dist/{setup-job-store.d.ts → setup-job-projection.d.ts} +9 -17
  230. package/dist/setup-job-projection.d.ts.map +1 -0
  231. package/dist/{setup-job-store.js → setup-job-projection.js} +29 -68
  232. package/dist/setup-job-projection.js.map +1 -0
  233. package/dist/setup-job-support.js +1 -1
  234. package/dist/setup-job-support.js.map +1 -1
  235. package/dist/setup-jobs.d.ts +3 -4
  236. package/dist/setup-jobs.d.ts.map +1 -1
  237. package/dist/setup-jobs.js +3 -3
  238. package/dist/setup-jobs.js.map +1 -1
  239. package/dist/setup-lifecycle-binding.js +1 -1
  240. package/dist/setup-lifecycle-binding.js.map +1 -1
  241. package/dist/setup-login-completion.js +1 -1
  242. package/dist/setup-login-completion.js.map +1 -1
  243. package/dist/sql-daemon-queries.d.ts +24 -0
  244. package/dist/sql-daemon-queries.d.ts.map +1 -0
  245. package/dist/sql-daemon-queries.js +41 -0
  246. package/dist/sql-daemon-queries.js.map +1 -0
  247. package/dist/sql-daemon-runtime.d.ts +1415 -0
  248. package/dist/sql-daemon-runtime.d.ts.map +1 -0
  249. package/dist/sql-daemon-runtime.js +94 -0
  250. package/dist/sql-daemon-runtime.js.map +1 -0
  251. package/dist/sql-daemon-storage.d.ts +40 -0
  252. package/dist/sql-daemon-storage.d.ts.map +1 -0
  253. package/dist/sql-daemon-storage.js +203 -0
  254. package/dist/sql-daemon-storage.js.map +1 -0
  255. package/dist/sql-import-publication.d.ts +19 -0
  256. package/dist/sql-import-publication.d.ts.map +1 -0
  257. package/dist/sql-import-publication.js +54 -0
  258. package/dist/sql-import-publication.js.map +1 -0
  259. package/dist/sql-setup-lifecycle.d.ts +15 -0
  260. package/dist/sql-setup-lifecycle.d.ts.map +1 -0
  261. package/dist/sql-setup-lifecycle.js +28 -0
  262. package/dist/sql-setup-lifecycle.js.map +1 -0
  263. package/dist/sql-setup-store.d.ts +7 -0
  264. package/dist/sql-setup-store.d.ts.map +1 -0
  265. package/dist/sql-setup-store.js +102 -0
  266. package/dist/sql-setup-store.js.map +1 -0
  267. package/dist/sql-startup-storage.d.ts +15 -0
  268. package/dist/sql-startup-storage.d.ts.map +1 -0
  269. package/dist/sql-startup-storage.js +75 -0
  270. package/dist/sql-startup-storage.js.map +1 -0
  271. package/dist/thread-delivery.d.ts +2 -2
  272. package/dist/thread-purge.d.ts +8 -2
  273. package/dist/thread-purge.d.ts.map +1 -1
  274. package/dist/thread-purge.js +37 -8
  275. package/dist/thread-purge.js.map +1 -1
  276. package/dist/thread-turn-services.d.ts +2 -2
  277. package/dist/thread-turn-services.d.ts.map +1 -1
  278. package/dist/thread-turn-services.js.map +1 -1
  279. package/package.json +25 -26
  280. package/dist/setup-job-store.d.ts.map +0 -1
  281. package/dist/setup-job-store.js.map +0 -1
@@ -1,25 +1,288 @@
1
- import { type OperatorDecisionRecord, JournalManager, InteractionRegistry, LiveInputRegistry, ProjectPartitions, ProjectStore, ResourceStore, QuotaRegistry } from "@claudexor/daemon";
1
+ import { type OperatorDecisionRecord, PartitionControlPort, InteractionRegistry, LiveInputRegistry, ProjectControlPort, ProjectStorePort, ResourceStorePort, QuotaRegistry } from "@claudexor/daemon";
2
2
  import { listTrustService, updateTrustService } from "./trust-services.js";
3
3
  import { type ResourceAttachmentRef, type ControlRunStartRequest, type LiveMessageInput, type RuntimeConcurrencyCaps } from "@claudexor/schema";
4
4
  import { AuthReadinessService } from "@claudexor/gateway";
5
5
  import { type HarnessListInput } from "./accounts-services.js";
6
6
  import { createSetupJobManager } from "./setup-jobs.js";
7
- import { SetupJobStore } from "./setup-job-store.js";
7
+ import type { SetupJobStorePort } from "./setup-job-projection.js";
8
8
  import { SetupLifecycleBinding } from "./setup-lifecycle-binding.js";
9
9
  import { type ThreadApplyOptions } from "./thread-delivery.js";
10
+ import { type ThreadPurgeDurability } from "./thread-purge.js";
10
11
  type SetupJobManager = ReturnType<typeof createSetupJobManager>;
11
- type SetupBinding = SetupLifecycleBinding<SetupJobStore, SetupJobManager>;
12
- export declare function controlServices(interactions: InteractionRegistry, liveInputs: LiveInputRegistry, projects: () => ProjectStore, threads: ProjectPartitions, setupBinding: SetupBinding, journalManager: JournalManager, authReadiness: AuthReadinessService,
12
+ type SetupBinding = Pick<SetupLifecycleBinding<SetupJobStorePort, SetupJobManager>, "current" | "isBoundToCurrentGeneration" | "replaceAfter">;
13
+ export declare function controlServices(interactions: InteractionRegistry, liveInputs: LiveInputRegistry, projects: () => ProjectStorePort, threads: ProjectControlPort, setupBinding: SetupBinding, journalManager: PartitionControlPort, authReadiness: AuthReadinessService,
13
14
  /** Lazy accessor (C5b): the store mkdirs on construction and only product
14
15
  * routes touch it, so the recovery plane must never materialize it. */
15
- resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs: () => Array<{
16
+ resources: () => ResourceStorePort, quotaRegistry: () => QuotaRegistry, daemonJobs: () => Array<{
16
17
  runId?: string;
17
18
  state: string;
18
19
  finishedAt?: string;
19
20
  params?: unknown;
20
- }>, effectiveConcurrencyCaps?: RuntimeConcurrencyCaps): {
21
+ }>, effectiveConcurrencyCaps?: RuntimeConcurrencyCaps, purgeDurability?: ThreadPurgeDurability): {
22
+ quota: (input?: import("@claudexor/schema").ControlQuotaReadRequest) => Promise<{
23
+ snapshots: {
24
+ subject: {
25
+ harness: string;
26
+ credential_route: "local" | "managed_api_key" | "vendor_native";
27
+ plan_label: string | null;
28
+ subject_id: string | null;
29
+ };
30
+ constraints: {
31
+ id: string;
32
+ label: string;
33
+ applies_to_models?: string[] | null | undefined;
34
+ applies_to_model_prefixes?: string[] | undefined;
35
+ applies_to_unspecified_model?: boolean | undefined;
36
+ used_ratio: number | null;
37
+ window_seconds: number | null;
38
+ resets_at: string | null;
39
+ cooldown_until: string | null;
40
+ }[];
41
+ source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
42
+ observed_at: string;
43
+ freshness: "fresh" | "stale" | "unknown";
44
+ snapshot_id?: string | undefined;
45
+ availability?: {
46
+ state: "available" | "cooldown" | "exhausted";
47
+ blocking_constraints: string[];
48
+ resets_at: string | null;
49
+ model_scoped_exhaustions: {
50
+ constraint_id: string;
51
+ applies_to_models: string[];
52
+ applies_to_model_prefixes?: string[] | undefined;
53
+ resets_at: string | null;
54
+ }[];
55
+ } | undefined;
56
+ }[];
57
+ absences: {
58
+ subject: {
59
+ harness: string;
60
+ credential_route: "local" | "managed_api_key" | "vendor_native";
61
+ plan_label: string | null;
62
+ subject_id: string | null;
63
+ };
64
+ reason: "auth_revoked" | "credential_profile_ambiguous" | "no_source" | "not_logged_in" | "platform_unsupported" | "poll_paced" | "probe_skipped_rate_limited" | "rate_limited" | "refresh_failed" | "transport_unavailable";
65
+ detail: string | null;
66
+ observed_at: string;
67
+ retry_after_ms?: number | undefined;
68
+ }[];
69
+ refreshed_at: string | null;
70
+ refresh_skipped?: {
71
+ vendor: string;
72
+ subject?: {
73
+ harness: string;
74
+ credential_route: "local" | "managed_api_key" | "vendor_native";
75
+ plan_label: string | null;
76
+ subject_id: string | null;
77
+ } | undefined;
78
+ not_before: string;
79
+ }[] | undefined;
80
+ }>;
81
+ refreshQuota: (input?: import("@claudexor/schema").ControlQuotaRefreshRequest & {
82
+ view?: "resources";
83
+ }) => Promise<{
84
+ snapshots: {
85
+ subject: {
86
+ harness: string;
87
+ credential_route: "local" | "managed_api_key" | "vendor_native";
88
+ plan_label: string | null;
89
+ subject_id: string | null;
90
+ };
91
+ constraints: {
92
+ id: string;
93
+ label: string;
94
+ applies_to_models?: string[] | null | undefined;
95
+ applies_to_model_prefixes?: string[] | undefined;
96
+ applies_to_unspecified_model?: boolean | undefined;
97
+ used_ratio: number | null;
98
+ window_seconds: number | null;
99
+ resets_at: string | null;
100
+ cooldown_until: string | null;
101
+ }[];
102
+ source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
103
+ observed_at: string;
104
+ freshness: "fresh" | "stale" | "unknown";
105
+ snapshot_id?: string | undefined;
106
+ availability?: {
107
+ state: "available" | "cooldown" | "exhausted";
108
+ blocking_constraints: string[];
109
+ resets_at: string | null;
110
+ model_scoped_exhaustions: {
111
+ constraint_id: string;
112
+ applies_to_models: string[];
113
+ applies_to_model_prefixes?: string[] | undefined;
114
+ resets_at: string | null;
115
+ }[];
116
+ } | undefined;
117
+ }[];
118
+ absences: {
119
+ subject: {
120
+ harness: string;
121
+ credential_route: "local" | "managed_api_key" | "vendor_native";
122
+ plan_label: string | null;
123
+ subject_id: string | null;
124
+ };
125
+ reason: "auth_revoked" | "credential_profile_ambiguous" | "no_source" | "not_logged_in" | "platform_unsupported" | "poll_paced" | "probe_skipped_rate_limited" | "rate_limited" | "refresh_failed" | "transport_unavailable";
126
+ detail: string | null;
127
+ observed_at: string;
128
+ retry_after_ms?: number | undefined;
129
+ }[];
130
+ refreshed_at: string | null;
131
+ refresh_skipped?: {
132
+ vendor: string;
133
+ subject?: {
134
+ harness: string;
135
+ credential_route: "local" | "managed_api_key" | "vendor_native";
136
+ plan_label: string | null;
137
+ subject_id: string | null;
138
+ } | undefined;
139
+ not_before: string;
140
+ }[] | undefined;
141
+ } | {
142
+ snapshots: {
143
+ subject: {
144
+ harness: string;
145
+ credential_route: "local" | "managed_api_key" | "vendor_native";
146
+ plan_label: string | null;
147
+ subject_id: string | null;
148
+ };
149
+ constraints: {
150
+ id: string;
151
+ label: string;
152
+ applies_to_models?: string[] | null | undefined;
153
+ applies_to_model_prefixes?: string[] | undefined;
154
+ applies_to_unspecified_model?: boolean | undefined;
155
+ used_ratio: number | null;
156
+ window_seconds: number | null;
157
+ resets_at: string | null;
158
+ cooldown_until: string | null;
159
+ }[];
160
+ source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
161
+ observed_at: string;
162
+ freshness: "fresh" | "stale" | "unknown";
163
+ snapshot_id?: string | undefined;
164
+ availability?: {
165
+ state: "available" | "cooldown" | "exhausted";
166
+ blocking_constraints: string[];
167
+ resets_at: string | null;
168
+ model_scoped_exhaustions: {
169
+ constraint_id: string;
170
+ applies_to_models: string[];
171
+ applies_to_model_prefixes?: string[] | undefined;
172
+ resets_at: string | null;
173
+ }[];
174
+ } | undefined;
175
+ }[];
176
+ absences: {
177
+ subject: {
178
+ harness: string;
179
+ credential_route: "local" | "managed_api_key" | "vendor_native";
180
+ plan_label: string | null;
181
+ subject_id: string | null;
182
+ };
183
+ reason: "auth_revoked" | "credential_profile_ambiguous" | "no_source" | "not_logged_in" | "platform_unsupported" | "poll_paced" | "probe_skipped_rate_limited" | "rate_limited" | "refresh_failed" | "transport_unavailable";
184
+ detail: string | null;
185
+ observed_at: string;
186
+ retry_after_ms?: number | undefined;
187
+ }[];
188
+ refreshed_at: string | null;
189
+ refresh_skipped?: {
190
+ vendor: string;
191
+ subject?: {
192
+ harness: string;
193
+ credential_route: "local" | "managed_api_key" | "vendor_native";
194
+ plan_label: string | null;
195
+ subject_id: string | null;
196
+ } | undefined;
197
+ not_before: string;
198
+ }[] | undefined;
199
+ resources: {
200
+ target: {
201
+ harness: string;
202
+ profile_id: string;
203
+ };
204
+ balances: {
205
+ value: {
206
+ id: string;
207
+ label: string;
208
+ amount: string | null;
209
+ unit: string;
210
+ currency: string | null;
211
+ decimal_places: number | null;
212
+ has_balance: boolean | null;
213
+ unlimited: boolean | null;
214
+ }[] | null;
215
+ source: string | null;
216
+ observed_at: string | null;
217
+ freshness: "fresh" | "stale" | "unknown";
218
+ last_attempt_at: string | null;
219
+ last_error: string | null;
220
+ };
221
+ spending: {
222
+ value: {
223
+ id: string;
224
+ label: string;
225
+ enabled: boolean | null;
226
+ used: string | null;
227
+ limit: string | null;
228
+ unit: string;
229
+ currency: string | null;
230
+ decimal_places: number | null;
231
+ resets_at: string | null;
232
+ reason: string | null;
233
+ }[] | null;
234
+ source: string | null;
235
+ observed_at: string | null;
236
+ freshness: "fresh" | "stale" | "unknown";
237
+ last_attempt_at: string | null;
238
+ last_error: string | null;
239
+ };
240
+ resets: {
241
+ value: {
242
+ id: string;
243
+ kind: "granted_reset" | "session_refill";
244
+ label: string;
245
+ description: string | null;
246
+ available_count: number | null;
247
+ eligible: boolean | null;
248
+ usable_now: boolean | null;
249
+ reason: string | null;
250
+ resets_at: string | null;
251
+ weekly_limit_applies: boolean;
252
+ grants: {
253
+ id: string;
254
+ label: string;
255
+ description: string | null;
256
+ available_count: number | null;
257
+ total_count: number | null;
258
+ usable_now: boolean | null;
259
+ starts_at: string | null;
260
+ expires_at: string | null;
261
+ clears: string[];
262
+ }[] | null;
263
+ }[] | null;
264
+ source: string | null;
265
+ observed_at: string | null;
266
+ freshness: "fresh" | "stale" | "unknown";
267
+ last_attempt_at: string | null;
268
+ last_error: string | null;
269
+ };
270
+ diagnostics: {
271
+ value: {
272
+ code: string;
273
+ detail: string | null;
274
+ }[] | null;
275
+ source: string | null;
276
+ observed_at: string | null;
277
+ freshness: "fresh" | "stale" | "unknown";
278
+ last_attempt_at: string | null;
279
+ last_error: string | null;
280
+ };
281
+ }[];
282
+ }>;
21
283
  credentialProfiles: (input?: {
22
284
  snapshot?: boolean;
285
+ view?: "resources";
23
286
  }) => Promise<{
24
287
  profiles: {
25
288
  profile: import("@claudexor/schema").CredentialProfile;
@@ -212,124 +475,6 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
212
475
  scope: "os_user" | "profile";
213
476
  } | undefined;
214
477
  }>;
215
- quota: () => Promise<{
216
- snapshots: {
217
- subject: {
218
- harness: string;
219
- credential_route: "local" | "managed_api_key" | "vendor_native";
220
- plan_label: string | null;
221
- subject_id: string | null;
222
- };
223
- constraints: {
224
- id: string;
225
- label: string;
226
- applies_to_models?: string[] | null | undefined;
227
- applies_to_model_prefixes?: string[] | undefined;
228
- applies_to_unspecified_model?: boolean | undefined;
229
- used_ratio: number | null;
230
- window_seconds: number | null;
231
- resets_at: string | null;
232
- cooldown_until: string | null;
233
- }[];
234
- source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
235
- observed_at: string;
236
- freshness: "fresh" | "stale" | "unknown";
237
- snapshot_id?: string | undefined;
238
- availability?: {
239
- state: "available" | "cooldown" | "exhausted";
240
- blocking_constraints: string[];
241
- resets_at: string | null;
242
- model_scoped_exhaustions: {
243
- constraint_id: string;
244
- applies_to_models: string[];
245
- applies_to_model_prefixes?: string[] | undefined;
246
- resets_at: string | null;
247
- }[];
248
- } | undefined;
249
- }[];
250
- absences: {
251
- subject: {
252
- harness: string;
253
- credential_route: "local" | "managed_api_key" | "vendor_native";
254
- plan_label: string | null;
255
- subject_id: string | null;
256
- };
257
- reason: "auth_revoked" | "credential_profile_ambiguous" | "no_source" | "not_logged_in" | "platform_unsupported" | "poll_paced" | "probe_skipped_rate_limited" | "rate_limited" | "refresh_failed" | "transport_unavailable";
258
- detail: string | null;
259
- observed_at: string;
260
- retry_after_ms?: number | undefined;
261
- }[];
262
- refreshed_at: string | null;
263
- refresh_skipped?: {
264
- vendor: string;
265
- subject?: {
266
- harness: string;
267
- credential_route: "local" | "managed_api_key" | "vendor_native";
268
- plan_label: string | null;
269
- subject_id: string | null;
270
- } | undefined;
271
- not_before: string;
272
- }[] | undefined;
273
- }>;
274
- refreshQuota: (input?: unknown) => Promise<{
275
- snapshots: {
276
- subject: {
277
- harness: string;
278
- credential_route: "local" | "managed_api_key" | "vendor_native";
279
- plan_label: string | null;
280
- subject_id: string | null;
281
- };
282
- constraints: {
283
- id: string;
284
- label: string;
285
- applies_to_models?: string[] | null | undefined;
286
- applies_to_model_prefixes?: string[] | undefined;
287
- applies_to_unspecified_model?: boolean | undefined;
288
- used_ratio: number | null;
289
- window_seconds: number | null;
290
- resets_at: string | null;
291
- cooldown_until: string | null;
292
- }[];
293
- source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
294
- observed_at: string;
295
- freshness: "fresh" | "stale" | "unknown";
296
- snapshot_id?: string | undefined;
297
- availability?: {
298
- state: "available" | "cooldown" | "exhausted";
299
- blocking_constraints: string[];
300
- resets_at: string | null;
301
- model_scoped_exhaustions: {
302
- constraint_id: string;
303
- applies_to_models: string[];
304
- applies_to_model_prefixes?: string[] | undefined;
305
- resets_at: string | null;
306
- }[];
307
- } | undefined;
308
- }[];
309
- absences: {
310
- subject: {
311
- harness: string;
312
- credential_route: "local" | "managed_api_key" | "vendor_native";
313
- plan_label: string | null;
314
- subject_id: string | null;
315
- };
316
- reason: "auth_revoked" | "credential_profile_ambiguous" | "no_source" | "not_logged_in" | "platform_unsupported" | "poll_paced" | "probe_skipped_rate_limited" | "rate_limited" | "refresh_failed" | "transport_unavailable";
317
- detail: string | null;
318
- observed_at: string;
319
- retry_after_ms?: number | undefined;
320
- }[];
321
- refreshed_at: string | null;
322
- refresh_skipped?: {
323
- vendor: string;
324
- subject?: {
325
- harness: string;
326
- credential_route: "local" | "managed_api_key" | "vendor_native";
327
- plan_label: string | null;
328
- subject_id: string | null;
329
- } | undefined;
330
- not_before: string;
331
- }[] | undefined;
332
- }>;
333
478
  settings: () => Promise<{
334
479
  sources: string[];
335
480
  interactionTimeoutMs: number | null;
@@ -359,16 +504,36 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
359
504
  harnessInactivityTimeoutMs: number;
360
505
  concurrency?: {
361
506
  configured: {
362
- maxConcurrent: number;
507
+ maxConcurrent: number | "unlimited";
508
+ maxConcurrentNonModelJobs: number | "unlimited";
509
+ maxConcurrentModelOperations: number | "unlimited";
363
510
  maxParallelCandidates: number;
364
511
  maxDeepScanWidth: number;
365
512
  maxCouncilMembers: number;
513
+ sources?: {
514
+ max_concurrent: "config" | "default" | "embedder" | "environment" | "unknown";
515
+ max_concurrent_non_model_jobs: "config" | "default" | "embedder" | "environment" | "unknown";
516
+ max_concurrent_model_operations: "config" | "default" | "embedder" | "environment" | "unknown";
517
+ max_parallel_candidates: "config" | "default" | "embedder" | "environment" | "unknown";
518
+ max_deep_scan_width: "config" | "default" | "embedder" | "environment" | "unknown";
519
+ max_council_members: "config" | "default" | "embedder" | "environment" | "unknown";
520
+ } | undefined;
366
521
  };
367
522
  effective: {
368
- maxConcurrent: number;
523
+ maxConcurrent: number | "unlimited";
524
+ maxConcurrentNonModelJobs: number | "unlimited";
525
+ maxConcurrentModelOperations: number | "unlimited";
369
526
  maxParallelCandidates: number;
370
527
  maxDeepScanWidth: number;
371
528
  maxCouncilMembers: number;
529
+ sources?: {
530
+ max_concurrent: "config" | "default" | "embedder" | "environment" | "unknown";
531
+ max_concurrent_non_model_jobs: "config" | "default" | "embedder" | "environment" | "unknown";
532
+ max_concurrent_model_operations: "config" | "default" | "embedder" | "environment" | "unknown";
533
+ max_parallel_candidates: "config" | "default" | "embedder" | "environment" | "unknown";
534
+ max_deep_scan_width: "config" | "default" | "embedder" | "environment" | "unknown";
535
+ max_council_members: "config" | "default" | "embedder" | "environment" | "unknown";
536
+ } | undefined;
372
537
  };
373
538
  restartRequired: boolean;
374
539
  } | undefined;
@@ -424,16 +589,36 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
424
589
  harnessInactivityTimeoutMs: number;
425
590
  concurrency?: {
426
591
  configured: {
427
- maxConcurrent: number;
592
+ maxConcurrent: number | "unlimited";
593
+ maxConcurrentNonModelJobs: number | "unlimited";
594
+ maxConcurrentModelOperations: number | "unlimited";
428
595
  maxParallelCandidates: number;
429
596
  maxDeepScanWidth: number;
430
597
  maxCouncilMembers: number;
598
+ sources?: {
599
+ max_concurrent: "config" | "default" | "embedder" | "environment" | "unknown";
600
+ max_concurrent_non_model_jobs: "config" | "default" | "embedder" | "environment" | "unknown";
601
+ max_concurrent_model_operations: "config" | "default" | "embedder" | "environment" | "unknown";
602
+ max_parallel_candidates: "config" | "default" | "embedder" | "environment" | "unknown";
603
+ max_deep_scan_width: "config" | "default" | "embedder" | "environment" | "unknown";
604
+ max_council_members: "config" | "default" | "embedder" | "environment" | "unknown";
605
+ } | undefined;
431
606
  };
432
607
  effective: {
433
- maxConcurrent: number;
608
+ maxConcurrent: number | "unlimited";
609
+ maxConcurrentNonModelJobs: number | "unlimited";
610
+ maxConcurrentModelOperations: number | "unlimited";
434
611
  maxParallelCandidates: number;
435
612
  maxDeepScanWidth: number;
436
613
  maxCouncilMembers: number;
614
+ sources?: {
615
+ max_concurrent: "config" | "default" | "embedder" | "environment" | "unknown";
616
+ max_concurrent_non_model_jobs: "config" | "default" | "embedder" | "environment" | "unknown";
617
+ max_concurrent_model_operations: "config" | "default" | "embedder" | "environment" | "unknown";
618
+ max_parallel_candidates: "config" | "default" | "embedder" | "environment" | "unknown";
619
+ max_deep_scan_width: "config" | "default" | "embedder" | "environment" | "unknown";
620
+ max_council_members: "config" | "default" | "embedder" | "environment" | "unknown";
621
+ } | undefined;
437
622
  };
438
623
  restartRequired: boolean;
439
624
  } | undefined;
@@ -2518,6 +2703,88 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
2518
2703
  observedAt: string;
2519
2704
  } | undefined;
2520
2705
  }>;
2706
+ journalEvents: (name: string, cursor?: string) => Promise<{
2707
+ schemaVersion: 1;
2708
+ cursor: string;
2709
+ partition: string;
2710
+ type: string;
2711
+ observedAt: string;
2712
+ payload?: unknown;
2713
+ }[]>;
2714
+ recoveryInspectPartition: (name: string) => Promise<{
2715
+ schemaVersion: 1;
2716
+ partition: string;
2717
+ generation: number;
2718
+ status: "ready" | "recovery_required";
2719
+ recovery: {
2720
+ status: "ready";
2721
+ discardedTailBytes: number;
2722
+ } | {
2723
+ status: "recovery_required";
2724
+ location: {
2725
+ kind: "byte";
2726
+ byteOffset: number;
2727
+ } | {
2728
+ kind: "cursor";
2729
+ epoch: string;
2730
+ seq: number;
2731
+ };
2732
+ reason: string;
2733
+ discardedTailBytes: number;
2734
+ };
2735
+ fingerprint: string;
2736
+ observedAt: string;
2737
+ evidenceRefs: string[];
2738
+ }>;
2739
+ recoveryValidatePartition: (name: string) => Promise<{
2740
+ schemaVersion: 1;
2741
+ partition: string;
2742
+ generation: number;
2743
+ status: "ready" | "recovery_required";
2744
+ recovery: {
2745
+ status: "ready";
2746
+ discardedTailBytes: number;
2747
+ } | {
2748
+ status: "recovery_required";
2749
+ location: {
2750
+ kind: "byte";
2751
+ byteOffset: number;
2752
+ } | {
2753
+ kind: "cursor";
2754
+ epoch: string;
2755
+ seq: number;
2756
+ };
2757
+ reason: string;
2758
+ discardedTailBytes: number;
2759
+ };
2760
+ fingerprint: string;
2761
+ observedAt: string;
2762
+ evidenceRefs: string[];
2763
+ projectionStatus: {
2764
+ name: string;
2765
+ status: "invalid" | "valid";
2766
+ detail: string | null;
2767
+ }[];
2768
+ }>;
2769
+ recoveryExportPartition: (name: string) => Promise<{
2770
+ schemaVersion: 1;
2771
+ exportId: string;
2772
+ partition: string;
2773
+ fingerprint: string;
2774
+ bundlePath: string;
2775
+ manifestSha256: string;
2776
+ createdAt: string;
2777
+ }>;
2778
+ recoveryQuarantinePartition: (name: string, input: unknown) => Promise<{
2779
+ schemaVersion: 1;
2780
+ operationId: string;
2781
+ partition: string;
2782
+ previousFingerprint: string;
2783
+ quarantineArtifactId: string;
2784
+ quarantinePath: string;
2785
+ newEpoch: string;
2786
+ completedAt: string;
2787
+ } | null>;
2521
2788
  listDirectory?: (path?: string) => Promise<import("@claudexor/schema").ControlDirectoryListing>;
2522
2789
  fetchProjectFile?: (projectId: string, path: string, binding?: import("./remote-filesystem.js").RunWorkspaceBinding) => Promise<import("./remote-filesystem.js").ScopedProjectFile>;
2523
2790
  findThreadCreation: (input: unknown) => Promise<{
@@ -2694,17 +2961,18 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
2694
2961
  listProjects: () => Promise<{
2695
2962
  projects: unknown[];
2696
2963
  }>;
2697
- registerProject: (input: Parameters<ProjectStore["register"]>[0]) => Promise<{
2964
+ registerProject: (input: Parameters<ProjectStorePort["register"]>[0]) => Promise<{
2698
2965
  schema_version: 2;
2699
2966
  id: string;
2700
2967
  root: string;
2701
2968
  created_at: string;
2702
2969
  updated_at: string;
2703
2970
  nesting: {
2704
- relation: "inside" | "contains";
2971
+ relation: "contains" | "inside";
2705
2972
  root: string;
2706
2973
  projectId: string;
2707
2974
  }[];
2975
+ created: boolean;
2708
2976
  }>;
2709
2977
  relinkProject: (id: string, root: string) => Promise<{
2710
2978
  schema_version: 2;
@@ -2713,7 +2981,7 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
2713
2981
  created_at: string;
2714
2982
  updated_at: string;
2715
2983
  nesting: {
2716
- relation: "inside" | "contains";
2984
+ relation: "contains" | "inside";
2717
2985
  root: string;
2718
2986
  projectId: string;
2719
2987
  }[];
@@ -2943,23 +3211,7 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
2943
3211
  client: string;
2944
3212
  operation: string;
2945
3213
  request: unknown;
2946
- }) => Promise<{
2947
- id: string;
2948
- state: "cancelled" | "failed" | "interrupted" | "queued" | "running" | "succeeded";
2949
- params: unknown;
2950
- result?: unknown;
2951
- error?: string;
2952
- errorCode?: string;
2953
- errorStatus?: number;
2954
- errorRetryable?: boolean;
2955
- errorRequiredActions?: string[];
2956
- errorContext?: Record<string, unknown>;
2957
- createdAt: string;
2958
- runId?: string;
2959
- taskId?: string;
2960
- runDir?: string;
2961
- startedAt?: string;
2962
- finishedAt?: string;
3214
+ }) => Promise<import("@claudexor/daemon").JobRecord & {
2963
3215
  reused: boolean;
2964
3216
  }>;
2965
3217
  completeDelivery: (id: string, result: unknown) => Promise<void>;
@@ -3236,88 +3488,6 @@ resources: () => ResourceStore, quotaRegistry: () => QuotaRegistry, daemonJobs:
3236
3488
  };
3237
3489
  };
3238
3490
  }>;
3239
- journalEvents: (partition: string, afterCursor?: string) => Promise<{
3240
- schemaVersion: 1;
3241
- cursor: string;
3242
- partition: string;
3243
- type: string;
3244
- observedAt: string;
3245
- payload?: unknown;
3246
- }[]>;
3247
- recoveryInspectPartition: (partition: string) => Promise<{
3248
- schemaVersion: 1;
3249
- partition: string;
3250
- generation: number;
3251
- status: "ready" | "recovery_required";
3252
- recovery: {
3253
- status: "ready";
3254
- discardedTailBytes: number;
3255
- } | {
3256
- status: "recovery_required";
3257
- location: {
3258
- kind: "byte";
3259
- byteOffset: number;
3260
- } | {
3261
- kind: "cursor";
3262
- epoch: string;
3263
- seq: number;
3264
- };
3265
- reason: string;
3266
- discardedTailBytes: number;
3267
- };
3268
- fingerprint: string;
3269
- observedAt: string;
3270
- evidenceRefs: string[];
3271
- }>;
3272
- recoveryValidatePartition: (partition: string) => Promise<{
3273
- schemaVersion: 1;
3274
- partition: string;
3275
- generation: number;
3276
- status: "ready" | "recovery_required";
3277
- recovery: {
3278
- status: "ready";
3279
- discardedTailBytes: number;
3280
- } | {
3281
- status: "recovery_required";
3282
- location: {
3283
- kind: "byte";
3284
- byteOffset: number;
3285
- } | {
3286
- kind: "cursor";
3287
- epoch: string;
3288
- seq: number;
3289
- };
3290
- reason: string;
3291
- discardedTailBytes: number;
3292
- };
3293
- fingerprint: string;
3294
- observedAt: string;
3295
- evidenceRefs: string[];
3296
- projectionStatus: {
3297
- name: string;
3298
- status: "invalid" | "valid";
3299
- detail: string | null;
3300
- }[];
3301
- }>;
3302
- recoveryExportPartition: (partition: string) => Promise<{
3303
- schemaVersion: 1;
3304
- exportId: string;
3305
- partition: string;
3306
- fingerprint: string;
3307
- bundlePath: string;
3308
- manifestSha256: string;
3309
- createdAt: string;
3310
- }>;
3311
- recoveryQuarantinePartition: (partition: string, input: unknown) => Promise<{
3312
- schemaVersion: 1;
3313
- operationId: string;
3314
- partition: string;
3315
- previousFingerprint: string;
3316
- quarantineArtifactId: string;
3317
- quarantinePath: string;
3318
- newEpoch: string;
3319
- completedAt: string;
3320
- } | null>;
3321
3491
  rollbackAccountsMigration: (input: unknown) => Promise<{
3322
3492
  rolledBack: import("./accounts-unified-migration.js").AccountsRollbackReceipt[];
3323
3493
  }>;