@claudexor/cli 3.5.0 → 3.8.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 (157) hide show
  1. package/dist/accounts-projection.d.ts +22 -14
  2. package/dist/accounts-projection.d.ts.map +1 -1
  3. package/dist/accounts-projection.js +112 -60
  4. package/dist/accounts-projection.js.map +1 -1
  5. package/dist/accounts-services.d.ts +140 -128
  6. package/dist/accounts-services.d.ts.map +1 -1
  7. package/dist/accounts-services.js +22 -9
  8. package/dist/accounts-services.js.map +1 -1
  9. package/dist/accounts-unified-migration.d.ts +110 -0
  10. package/dist/accounts-unified-migration.d.ts.map +1 -0
  11. package/dist/accounts-unified-migration.js +422 -0
  12. package/dist/accounts-unified-migration.js.map +1 -0
  13. package/dist/agy-quota-source.d.ts +1 -0
  14. package/dist/agy-quota-source.d.ts.map +1 -1
  15. package/dist/agy-quota-source.js +61 -108
  16. package/dist/agy-quota-source.js.map +1 -1
  17. package/dist/auth-login-harnesses.d.ts +7 -5
  18. package/dist/auth-login-harnesses.d.ts.map +1 -1
  19. package/dist/auth-login-harnesses.js +10 -9
  20. package/dist/auth-login-harnesses.js.map +1 -1
  21. package/dist/capabilities.d.ts.map +1 -1
  22. package/dist/capabilities.js +6 -1
  23. package/dist/capabilities.js.map +1 -1
  24. package/dist/claude-oauth-usage.d.ts.map +1 -1
  25. package/dist/claude-oauth-usage.js +9 -3
  26. package/dist/claude-oauth-usage.js.map +1 -1
  27. package/dist/claude-statusline.d.ts.map +1 -1
  28. package/dist/claude-statusline.js +14 -1
  29. package/dist/claude-statusline.js.map +1 -1
  30. package/dist/claudexord-entry.d.ts +7 -2
  31. package/dist/claudexord-entry.d.ts.map +1 -1
  32. package/dist/claudexord-entry.js +33 -11
  33. package/dist/claudexord-entry.js.map +1 -1
  34. package/dist/claudexord.d.ts.map +1 -1
  35. package/dist/claudexord.js +25 -37
  36. package/dist/claudexord.js.map +1 -1
  37. package/dist/cli.js +2 -1
  38. package/dist/cli.js.map +1 -1
  39. package/dist/codex-quota-source.d.ts.map +1 -1
  40. package/dist/codex-quota-source.js +8 -3
  41. package/dist/codex-quota-source.js.map +1 -1
  42. package/dist/command-flags.d.ts.map +1 -1
  43. package/dist/command-flags.js +1 -0
  44. package/dist/command-flags.js.map +1 -1
  45. package/dist/control-services.d.ts +206 -188
  46. package/dist/control-services.d.ts.map +1 -1
  47. package/dist/control-services.js +54 -122
  48. package/dist/control-services.js.map +1 -1
  49. package/dist/credential-commands.d.ts +16 -0
  50. package/dist/credential-commands.d.ts.map +1 -1
  51. package/dist/credential-commands.js +93 -39
  52. package/dist/credential-commands.js.map +1 -1
  53. package/dist/credential-profile-mutations.d.ts +70 -0
  54. package/dist/credential-profile-mutations.d.ts.map +1 -0
  55. package/dist/credential-profile-mutations.js +219 -0
  56. package/dist/credential-profile-mutations.js.map +1 -0
  57. package/dist/credential-status-invalidation.d.ts +11 -0
  58. package/dist/credential-status-invalidation.d.ts.map +1 -0
  59. package/dist/credential-status-invalidation.js +36 -0
  60. package/dist/credential-status-invalidation.js.map +1 -0
  61. package/dist/daemon-admission-runtime.d.ts +5 -0
  62. package/dist/daemon-admission-runtime.d.ts.map +1 -1
  63. package/dist/daemon-admission-runtime.js +1 -0
  64. package/dist/daemon-admission-runtime.js.map +1 -1
  65. package/dist/delegation-belt-descriptor.d.ts +2 -1
  66. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  67. package/dist/delegation-belt-descriptor.js +2 -1
  68. package/dist/delegation-belt-descriptor.js.map +1 -1
  69. package/dist/harness-command-specs.d.ts.map +1 -1
  70. package/dist/harness-command-specs.js +4 -4
  71. package/dist/harness-command-specs.js.map +1 -1
  72. package/dist/harness-command.d.ts +5 -3
  73. package/dist/harness-command.d.ts.map +1 -1
  74. package/dist/harness-command.js +5 -3
  75. package/dist/harness-command.js.map +1 -1
  76. package/dist/harness-install-lease.d.ts +11 -0
  77. package/dist/harness-install-lease.d.ts.map +1 -0
  78. package/dist/harness-install-lease.js +98 -0
  79. package/dist/harness-install-lease.js.map +1 -0
  80. package/dist/harness-install-proof.d.ts +36 -0
  81. package/dist/harness-install-proof.d.ts.map +1 -0
  82. package/dist/harness-install-proof.js +148 -0
  83. package/dist/harness-install-proof.js.map +1 -0
  84. package/dist/harness-install-recipes.d.ts +80 -0
  85. package/dist/harness-install-recipes.d.ts.map +1 -0
  86. package/dist/harness-install-recipes.js +130 -0
  87. package/dist/harness-install-recipes.js.map +1 -0
  88. package/dist/harness-installer.d.ts +45 -46
  89. package/dist/harness-installer.d.ts.map +1 -1
  90. package/dist/harness-installer.js +248 -156
  91. package/dist/harness-installer.js.map +1 -1
  92. package/dist/mcp-run-projections.d.ts +1 -1
  93. package/dist/native-login.d.ts +7 -0
  94. package/dist/native-login.d.ts.map +1 -1
  95. package/dist/native-login.js +40 -17
  96. package/dist/native-login.js.map +1 -1
  97. package/dist/profile-registration.d.ts +15 -1
  98. package/dist/profile-registration.d.ts.map +1 -1
  99. package/dist/profile-registration.js +124 -7
  100. package/dist/profile-registration.js.map +1 -1
  101. package/dist/quota-services.d.ts +4 -4
  102. package/dist/quota-subject-universe.d.ts.map +1 -1
  103. package/dist/quota-subject-universe.js +6 -0
  104. package/dist/quota-subject-universe.js.map +1 -1
  105. package/dist/remote-command.d.ts +0 -2
  106. package/dist/remote-command.d.ts.map +1 -1
  107. package/dist/remote-command.js +3 -74
  108. package/dist/remote-command.js.map +1 -1
  109. package/dist/run-orchestrator.d.ts +28 -0
  110. package/dist/run-orchestrator.d.ts.map +1 -0
  111. package/dist/run-orchestrator.js +43 -0
  112. package/dist/run-orchestrator.js.map +1 -0
  113. package/dist/settings-service.d.ts +1 -1
  114. package/dist/settings-service.js +3 -3
  115. package/dist/settings-service.js.map +1 -1
  116. package/dist/setup-attach-command.d.ts +30 -0
  117. package/dist/setup-attach-command.d.ts.map +1 -0
  118. package/dist/setup-attach-command.js +118 -0
  119. package/dist/setup-attach-command.js.map +1 -0
  120. package/dist/setup-job-store.d.ts +2 -2
  121. package/dist/setup-job-support.d.ts +36 -9
  122. package/dist/setup-job-support.d.ts.map +1 -1
  123. package/dist/setup-job-support.js +81 -10
  124. package/dist/setup-job-support.js.map +1 -1
  125. package/dist/setup-jobs.d.ts +4 -4
  126. package/dist/setup-jobs.d.ts.map +1 -1
  127. package/dist/setup-jobs.js +50 -47
  128. package/dist/setup-jobs.js.map +1 -1
  129. package/dist/setup-login-capability.d.ts +37 -0
  130. package/dist/setup-login-capability.d.ts.map +1 -0
  131. package/dist/setup-login-capability.js +96 -0
  132. package/dist/setup-login-capability.js.map +1 -0
  133. package/dist/setup-login-io.d.ts +4 -1
  134. package/dist/setup-login-io.d.ts.map +1 -1
  135. package/dist/setup-login-io.js +22 -3
  136. package/dist/setup-login-io.js.map +1 -1
  137. package/dist/setup-login-pty.d.ts +64 -22
  138. package/dist/setup-login-pty.d.ts.map +1 -1
  139. package/dist/setup-login-pty.js +289 -48
  140. package/dist/setup-login-pty.js.map +1 -1
  141. package/dist/setup-login-runner-support.d.ts +12 -0
  142. package/dist/setup-login-runner-support.d.ts.map +1 -0
  143. package/dist/setup-login-runner-support.js +65 -0
  144. package/dist/setup-login-runner-support.js.map +1 -0
  145. package/dist/setup-login-runner.d.ts +2 -0
  146. package/dist/setup-login-runner.d.ts.map +1 -1
  147. package/dist/setup-login-runner.js +119 -116
  148. package/dist/setup-login-runner.js.map +1 -1
  149. package/dist/setup-runner-outcome.d.ts +10 -0
  150. package/dist/setup-runner-outcome.d.ts.map +1 -0
  151. package/dist/setup-runner-outcome.js +49 -0
  152. package/dist/setup-runner-outcome.js.map +1 -0
  153. package/dist/thread-continuity-context.d.ts +24 -0
  154. package/dist/thread-continuity-context.d.ts.map +1 -1
  155. package/dist/thread-continuity-context.js +17 -0
  156. package/dist/thread-continuity-context.js.map +1 -1
  157. package/package.json +24 -24
@@ -1,29 +1,30 @@
1
1
  /** Bind typed control operations to daemon stores and engine entrypoints. */
2
- import { existsSync, mkdirSync, realpathSync, rmSync } from "node:fs";
3
- import { join, sep } from "node:path";
4
- import { loadConfig, updateGlobalConfig } from "@claudexor/config";
2
+ import { mkdirSync, realpathSync } from "node:fs";
3
+ import { loadConfig } from "@claudexor/config";
5
4
  import { listTrustService, updateTrustService } from "./trust-services.js";
6
5
  import { SecretStore, isManagedSecretName } from "@claudexor/secrets";
7
- import { probeGitCapability, purgeProfileLanes, purgeThreadLanes, purgeThreadWorktree, } from "@claudexor/workspace";
8
- import { claudexorOwnedRoot, noProjectRepoRoot } from "@claudexor/util";
9
- import { ControlCredentialProfileCreateRequest, ControlSettingsUpdateRequest, RunScope, TERMINAL_LIFECYCLES, } from "@claudexor/schema";
6
+ import { probeGitCapability, purgeThreadLanes, purgeThreadWorktree } from "@claudexor/workspace";
7
+ import { noProjectRepoRoot } from "@claudexor/util";
8
+ import { ControlAccountsMigrationRollbackRequest, ControlCredentialProfileCreateRequest, ControlSettingsUpdateRequest, RunScope, TERMINAL_LIFECYCLES, } from "@claudexor/schema";
9
+ import { rollbackAccountsUnifiedMigration } from "./accounts-unified-migration.js";
10
+ import { credentialProfileMutations } from "./credential-profile-mutations.js";
10
11
  import { quotaControlServices } from "./quota-services.js";
11
- import { registerConfigDirProfile, removeProfileFromRegistry } from "./profile-registration.js";
12
- import { StatusProjectionCache, globalConfigVersion, invalidateStatusProjections, } from "./status-projection-cache.js";
12
+ import { registerConfigDirProfile } from "./profile-registration.js";
13
+ import { StatusProjectionCache, globalConfigVersion } from "./status-projection-cache.js";
13
14
  import { vendorVerifiedProfileStatus } from "@claudexor/orchestrator";
14
15
  import { profileDoctorStatus } from "./accounts-projection.js";
15
16
  import { createRetentionRunner } from "./retention-service.js";
16
- import { canonicalIsolationLocator, invalidateDoctorCache, normalizeThroughExistingAncestor, } from "@claudexor/core";
17
17
  import { buildGateway, harnessModels } from "./registry.js";
18
18
  import { createCredentialProfilesService, projectHarnessStatuses, } from "./accounts-services.js";
19
19
  import { buildAgentCapabilityCatalog } from "./capabilities.js";
20
20
  import { commitSettingsUpdate, settingsSnapshot } from "./settings-service.js";
21
- import { activeProfileLoginJob } from "./setup-job-support.js";
22
- import { canonicalProfileLoginDir, isConfigDirLoginHarness } from "./config-dir-login-harnesses.js";
21
+ import { bustCredentialStatusCaches, } from "./credential-status-invalidation.js";
22
+ import { activeProfileLoginJob, preflightSetupJobCreateRequest } from "./setup-job-support.js";
23
+ import { assertSetupLoginAdmission, projectSetupLoginCapability, } from "./setup-login-capability.js";
23
24
  import { createRunRequirementsPreflight } from "./request-preflight.js";
24
25
  import { threadRunStartRequiresGit } from "./thread-execution-workspace.js";
25
26
  import { applyThreadDiff } from "./thread-delivery.js";
26
- import { assertCredentialProfileCompatibility, assertCredentialProfileRegistered, } from "./profile-compatibility.js";
27
+ import { assertCredentialProfileCompatibility } from "./profile-compatibility.js";
27
28
  import { remoteFilesystemServices } from "./remote-filesystem.js";
28
29
  import { projectRunApplicability } from "./run-applicability.js";
29
30
  import { threadTurnServices } from "./thread-turn-services.js";
@@ -63,11 +64,7 @@ resources, quotaRegistry, daemonJobs) {
63
64
  const harnessesPollCache = new StatusProjectionCache({
64
65
  versionOf: globalConfigVersion,
65
66
  });
66
- const bustStatusCaches = () => {
67
- invalidateDoctorCache();
68
- invalidateStatusProjections();
69
- quotaRegistry().noteCredentialChange();
70
- };
67
+ const bustStatusCaches = (subject) => bustCredentialStatusCaches(quotaRegistry, subject);
71
68
  const journalPartition = (partition) => partition === "global" ? journalManager : threads.journal(partition);
72
69
  const setupJobs = () => {
73
70
  try {
@@ -225,10 +222,20 @@ resources, quotaRegistry, daemonJobs) {
225
222
  authReadiness: async (input) => authReadiness.refresh(input.harnessId, input.request),
226
223
  agentCapabilities: async () => buildAgentCapabilityCatalog(),
227
224
  runApplicability: async (input) => projectRunApplicability(input.repoRoot),
228
- createSetupJob: async (input) => setupJobs().create(input.request, {
229
- key: input.idempotencyKey,
230
- client: input.clientId,
231
- }),
225
+ createSetupJob: async (input) => {
226
+ // No helper/vendor probe and no bootstrap/durable mutation can precede
227
+ // request, named-profile, required-profile, and D13 validation.
228
+ const request = preflightSetupJobCreateRequest(input.request);
229
+ const capability = await projectSetupLoginCapability(request.harness, {
230
+ transport: request.transport,
231
+ loginFlow: request.loginFlow,
232
+ });
233
+ assertSetupLoginAdmission(capability);
234
+ return setupJobs().create(request, {
235
+ key: input.idempotencyKey,
236
+ client: input.clientId,
237
+ });
238
+ },
232
239
  listSetupJobs: async (input) => {
233
240
  const jobs = setupJobs();
234
241
  return { jobs: jobs.list(input) };
@@ -259,105 +266,30 @@ resources, quotaRegistry, daemonJobs) {
259
266
  ...quotaControlServices(quotaRegistry),
260
267
  // INV-135: durable registry + live doctor projection, one probe per
261
268
  // profile; adapters without profile support report honest unknown.
262
- credentialProfiles: createCredentialProfilesService(quotaRegistry),
263
- // PATCH /credential-profiles/:harness/:id the Enabled toggle of the
264
- // accounts symmetry (INV-135). Flips the profile's durable `enabled` in the
265
- // registry (one locked write) and returns the refreshed doctor projection.
266
- updateCredentialProfile: async (input) => {
267
- const p = (input ?? {});
268
- const harnessId = typeof p["harnessId"] === "string" ? p["harnessId"] : "";
269
- const profileId = typeof p["profileId"] === "string" ? p["profileId"] : "";
270
- const enabled = typeof p["enabled"] === "boolean" ? p["enabled"] : undefined;
271
- if (!harnessId || !profileId || enabled === undefined) {
272
- throw Object.assign(new Error("harnessId, profileId and enabled are required"), {
273
- status: 400,
274
- });
275
- }
276
- assertCredentialProfileRegistered(loadConfig(NO_PROJECT_ROOT).global.credential_profiles, harnessId, profileId);
277
- let updated;
278
- updateGlobalConfig((config) => ({
279
- ...config,
280
- credential_profiles: config.credential_profiles.map((profile) => {
281
- if (profile.harness_id !== harnessId || profile.profile_id !== profileId)
282
- return profile;
283
- updated = { ...profile, enabled };
284
- return updated;
285
- }),
286
- }));
287
- if (!updated) {
288
- throw Object.assign(new Error("profile update did not persist"), { status: 500 });
289
- }
290
- bustStatusCaches();
291
- return {
292
- profile: updated,
293
- // Same vendor overlay the listing applies: a single-profile response
294
- // must not re-declare a revoked credential `passed` (INV-135 honesty).
295
- status: vendorVerifiedProfileStatus(await profileDoctorStatus(updated), quotaRegistry().read()),
296
- };
297
- },
298
- // INV-135 deletion: registry first; scoped material cleanup is fenced and disclosed.
299
- deleteCredentialProfile: async (input) => {
300
- const p = (input ?? {});
301
- const harnessId = typeof p["harnessId"] === "string" ? p["harnessId"] : "";
302
- const profileId = typeof p["profileId"] === "string" ? p["profileId"] : "";
303
- if (!harnessId || !profileId) {
304
- throw Object.assign(new Error("harnessId and profileId are required"), { status: 400 });
305
- }
306
- const activeLogin = activeProfileLoginJob(setupJobs, harnessId, profileId);
307
- if (activeLogin) {
308
- throw Object.assign(new Error(`a login for this account is in progress (${activeLogin.jobId}); cancel it before removing the account`), { status: 409 });
309
- }
310
- assertCredentialProfileRegistered(loadConfig(NO_PROJECT_ROOT).global.credential_profiles, harnessId, profileId);
311
- threads.invalidateCredentialProfile(harnessId, profileId);
312
- // INV-034 lifecycle owner (b): the deleted account's durable per-lane
313
- // read-only homes must not survive to be resumed. Sweep them across every
314
- // project a live thread anchors to (plus the no-project partition).
315
- const laneRoots = new Set([NO_PROJECT_ROOT]);
316
- for (const thread of threads.listThreads()) {
317
- if (thread.repo?.root)
318
- laneRoots.add(thread.repo.root);
319
- }
320
- for (const root of laneRoots)
321
- purgeProfileLanes(root, harnessId, profileId);
322
- quotaRegistry().removeSubject(harnessId, profileId);
323
- const entry = removeProfileFromRegistry(harnessId, profileId);
324
- let credentialCleanup = "none";
325
- const cleanupWarnings = [];
326
- try {
327
- if (entry.credential_kind === "config_dir_login" && entry.isolation_locator) {
328
- // Each member resolves through its OWN canonicalizer (the ladder
329
- // this used to hand-write let cursor and agy fall through to the
330
- // generic one, so a member whose canonicalizer adds a rule — claude
331
- // already refuses the default native dir — would silently delete
332
- // against a different path than its login wrote to).
333
- const dir = isConfigDirLoginHarness(harnessId)
334
- ? canonicalProfileLoginDir(harnessId, entry.isolation_locator)
335
- : canonicalIsolationLocator(entry.isolation_locator, "credential profile dir");
336
- // Recursive deletion is fenced to a strict descendant of the profiles tree.
337
- const profilesRoot = normalizeThroughExistingAncestor(join(claudexorOwnedRoot(), "profiles"));
338
- if (!dir.startsWith(profilesRoot + sep)) {
339
- throw new Error(`refusing to delete "${dir}": not inside the profiles tree ${profilesRoot}`);
340
- }
341
- if (existsSync(dir)) {
342
- rmSync(dir, { recursive: true, force: true });
343
- credentialCleanup = "config_dir_removed";
344
- }
345
- }
346
- else if (entry.secret_ref) {
347
- secretStore.delete(entry.secret_ref);
348
- credentialCleanup = "secret_deleted";
349
- }
350
- }
351
- catch (err) {
352
- cleanupWarnings.push(`registry entry removed, but credential cleanup failed: ${err instanceof Error ? err.message : String(err)}`);
353
- }
269
+ // The pool-authority read (GET /v2/account-pools) shares the same cached
270
+ // projection so the listing and the pool verdict cannot disagree.
271
+ ...createCredentialProfilesService(quotaRegistry),
272
+ // PATCH + DELETE /credential-profiles/:harness/:id the Enabled toggle
273
+ // (with the migrated row's native_credentials_enabled downgrade mirror)
274
+ // and the provable D-U4 removal, owned by credential-profile-mutations.ts.
275
+ ...credentialProfileMutations({
276
+ threads,
277
+ quotaRegistry,
278
+ secretStore,
279
+ bustStatusCaches,
280
+ activeLoginJob: (harnessId, profileId) => activeProfileLoginJob(setupJobs, harnessId, profileId),
281
+ }),
282
+ // POST /accounts-migration/rollback — the supported downgrade path's
283
+ // first step (unified account model): surgically reverses the startup
284
+ // migration (sessions/checkpoints/lane homes back to the engine-default
285
+ // keys, the auto-registered row out of the registry, its enabled state
286
+ // back onto the native_credentials_enabled mirror). Run BEFORE installing
287
+ // an engine whose canonicalizers refuse the native locator.
288
+ rollbackAccountsMigration: async (input) => {
289
+ const request = ControlAccountsMigrationRollbackRequest.parse(input ?? {});
290
+ const rolledBack = rollbackAccountsUnifiedMigration({ threads, quota: quotaRegistry() }, request.harnessId);
354
291
  bustStatusCaches();
355
- return {
356
- profile: entry,
357
- removed: true,
358
- credentialCleanup,
359
- ...(cleanupWarnings.length > 0 ? { cleanupWarning: cleanupWarnings.join("; ") } : {}),
360
- };
292
+ return { rolledBack };
361
293
  },
362
294
  // POST /credential-profiles: the SAME ONE registration owner the CLI's
363
295
  // `profiles add` uses (profile-registration.ts) — never a second write
@@ -370,7 +302,7 @@ resources, quotaRegistry, daemonJobs) {
370
302
  profileId: request.profileId,
371
303
  displayName: request.displayName,
372
304
  });
373
- bustStatusCaches();
305
+ bustStatusCaches({ harnessId: request.harnessId, profileId: request.profileId });
374
306
  return {
375
307
  profile,
376
308
  status: vendorVerifiedProfileStatus(await profileDoctorStatus(profile), quotaRegistry().read()),
@@ -405,7 +337,7 @@ resources, quotaRegistry, daemonJobs) {
405
337
  throw Object.assign(new Error(`secret name must be a managed name or managed:profile slot, got "${name}"`), { status: 400 });
406
338
  }
407
339
  const backend = secretStore.set(name, value);
408
- bustStatusCaches();
340
+ bustStatusCaches({ secretName: name });
409
341
  return {
410
342
  name,
411
343
  backend,
@@ -415,7 +347,7 @@ resources, quotaRegistry, daemonJobs) {
415
347
  },
416
348
  deleteSecret: async (name) => {
417
349
  secretStore.delete(name);
418
- bustStatusCaches();
350
+ bustStatusCaches({ secretName: name });
419
351
  return { name, deleted: true };
420
352
  },
421
353
  };
@@ -1 +1 @@
1
- {"version":3,"file":"control-services.js","sourceRoot":"","sources":["../src/control-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-services.js","sourceRoot":"","sources":["../src/control-services.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAUlD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAEL,uCAAuC,EACvC,qCAAqC,EACrC,4BAA4B,EAE5B,QAAQ,EACR,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,0BAA0B,GAE3B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAA2B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AAG5C;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,GAAyC;IACrE,MAAM,KAAK,GAAI,GAAG,CAAC,MAAiD,EAAE,KAAK,CAAC;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,0CAA0C,GAAG,CAAC,KAAK,+BAA+B,CAAC,EAC7F,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,EAAE,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,YAAiC,EACjC,QAA4B,EAC5B,OAA0B,EAC1B,YAA0B,EAC1B,cAA8B,EAC9B,aAAmC;AACnC;uEACuE;AACvE,SAA8B,EAC9B,aAAkC,EAClC,UAEC;IAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAwB,EAAE,EAAE;QACvD,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxC,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC,SAAS,CACpE,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,EACtD,KAAK,EAAE,UAAU,CAClB;YACD,kBAAkB,EAAE;SACrB,CAAC,CAAC;QACH,uEAAuE;QACvE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpE,CAAC,CAAC;IACF,+FAA+F;IAC/F,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAA4C;QAC9F,SAAS,EAAE,mBAAmB;KAC/B,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,CAAC,OAAmC,EAAE,EAAE,CAC/D,0BAA0B,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAkB,EAAE,CAC7D,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,GAAoB,EAAE;QACtC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK;gBACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,MAAM,IAAI,KAAK;gBACf,CAAE,KAA2B,CAAC,IAAI,KAAK,2BAA2B;oBAC/D,KAA2B,CAAC,IAAI,KAAK,0BAA0B,CAAC,EACnE,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAmC;QACpD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7C,CAAC;IACF,MAAM,mBAAmB,GAAG,CAAC,OAA+B,EAAW,EAAE;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,OAAO,yBAAyB,CAC9B,OAAO,EACP,MAAM,EACN,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CACrD,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,wBAAwB,GAAG,8BAA8B,CAAC,aAAa,EAAE,eAAe,EAAE;QAC9F,WAAW,EAAE,mBAAmB;KACjC,CAAC,CAAC;IACH,MAAM,8BAA8B,GAAG,8BAA8B,CACnE,aAAa,EACb,eAAe,EACf,EAAE,WAAW,EAAE,mBAAmB,EAAE,EACpC,EAAE,GAAG,EAAE,aAAa,EAAE,CACvB,CAAC;IACF,OAAO;QACL,wBAAwB;QACxB,8BAA8B;QAC9B,YAAY,EAAE,KAAK,EAAE,KAAc,EAAE,cAAsB,EAAE,EAAE,CAC7D,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC;QAC3C,WAAW,EAAE,KAAK,EAAE,QAAgB,EAAE,MAAiC,EAAE,EAAE,CACzE,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;QACrC,YAAY,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtE,YAAY,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtE,cAAc,EAAE,KAAK,EACnB,QAAgB,EAChB,cAAkC,EAClC,cAAsB,EACtB,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;QACnE,iBAAiB,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;YACzD,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,YAAY,EAAE,qBAAqB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACtE,oEAAoE;QACpE,8EAA8E;QAC9E,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAc;aAC5F,CAAC;QACJ,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,GAAG,wBAAwB,CAAC,QAAQ,CAAC;QACrC,eAAe,EAAE,KAAK,EAAE,KAA8C,EAAE,EAAE;YACxE,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,EAAU,EAAE,IAAY,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,uDAAuD;QACvD,aAAa,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YAClC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,MAAM,UAAU,EAAE,EAAE,CAAC;gBACrC,IAAK,mBAA2C,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC1E,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,IAAI,KAAK,IAAI;oBAAE,SAAS;gBAC5B,IAAI,CAAC;oBACH,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAqD,CAAC;YAClF,oCAAoC,CAClC,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,iBAAiB,IAAI,EAAE,EAC/B,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CACvD,CAAC;YACF,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,WAAW,EAAE,KAAK,IAAI,EAAE;YACtB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,IAAiB,EAAE,QAAQ,EAAE,QAAqB,EAAE,CAAC;QACzE,CAAC;QACD,GAAG,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC;QAC7C,YAAY,EAAE,KAAK,EACjB,EAAU,EACV,KAOC,EACD,EAAE;YACF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACvF,MAAM,SAAS,GACb,KAAK,CAAC,mBAAmB,KAAK,SAAS;gBACrC,CAAC,CAAC,OAAO,CAAC,qBAAqB;gBAC/B,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;YACnE,MAAM,OAAO,GACX,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;YACtF,IACE,KAAK,CAAC,mBAAmB,KAAK,SAAS;gBACvC,KAAK,CAAC,cAAc,KAAK,SAAS;gBAClC,KAAK,CAAC,iBAAiB,KAAK,SAAS,EACrC,CAAC;gBACD,oCAAoC,CAClC,SAAS,EACT,OAAO,EACP,IAAI,EACJ,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CACvD,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAY;gBACzB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;gBAC9C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,oEAAoE;gBACpE,yEAAyE;gBACzE,sEAAsE;gBACtE,sEAAsE;gBACtE,gEAAgE;gBAChE,MAAM,EAAE,KAAK,CAAC,MAAa;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,aAAa,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9D,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM;gBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACtF,uEAAuE;YACvE,uEAAuE;YACvE,wDAAwD;YACxD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxD,MAAM,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,sEAAsE;YACtE,0EAA0E;YAC1E,iCAAiC;YACjC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,eAAe,EAAE,EAAE,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,IAAwB,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC;QAC/F,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,kBAAkB;QAC/B,mBAAmB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC;QACzE,iBAAiB,EAAE,CAAC,KAAa,EAAE,aAAqB,EAAE,OAAgB,EAAE,EAAE,CAC5E,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC;QACpD,gBAAgB,EAAE,CAAC,KAAa,EAAE,MAAe,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;QAC7F,iCAAiC,EAAE,CACjC,KAAa,EACb,MAAe,EACf,WAA8D,EAC9D,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;QAC1E,sBAAsB,EAAE,CACtB,KAAa,EACb,MAAe,EACf,QAA+C,EAC/C,WAA+D,EAC/D,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,EAAE,WAAW,CAAC;QAChF,aAAa,EAAE,KAAK,EAClB,MAAe,EACf,KAA2E,EAC3E,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;QACzC,gBAAgB,EAAE,KAAK,EAAE,EAAU,EAAE,MAAe,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC;QAC7F,YAAY,EAAE,KAAK,EAAE,EAAU,EAAE,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC;QACnF,SAAS,EAAE,KAAK,EAAE,KAAwB,EAAE,EAAE,CAC5C,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM;YACjE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;YAChD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QAC1B,aAAa,EAAE,KAAK,EAAE,KAAiE,EAAE,EAAE,CACzF,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;QACpE,aAAa,EAAE,KAAK,EAAE,KAA8C,EAAE,EAAE,CACtE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QACvD,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,2BAA2B,EAAE;QAC5D,gBAAgB,EAAE,KAAK,EAAE,KAA2B,EAAE,EAAE,CACtD,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,cAAc,EAAE,KAAK,EAAE,KAItB,EAAE,EAAE;YACH,uEAAuE;YACvE,gEAAgE;YAChE,MAAM,OAAO,GAAG,8BAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,OAAO,EAAE;gBACpE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,yBAAyB,CAAC,UAAU,CAAC,CAAC;YACtC,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;gBACjC,GAAG,EAAE,KAAK,CAAC,cAAc;gBACzB,MAAM,EAAE,KAAK,CAAC,QAAQ;aACvB,CAAC,CAAC;QACL,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAwC,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,gBAAgB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvE,cAAc,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,cAAc,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,aAAa,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACjE,iBAAiB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;QACzE,cAAc,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,aAAa,EAAE,KAAK,EAAE,SAAiB,EAAE,WAAoB,EAAE,EAAE,CAC/D,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACjD,wBAAwB,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;QAC5F,yBAAyB,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;QAC9F,uBAAuB,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAE,CACnD,gBAAgB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;QAC9C,2BAA2B,EAAE,KAAK,EAAE,SAAiB,EAAE,KAAc,EAAE,EAAE;YACvE,MAAM,OAAO,GAAG,KAAiE,CAAC;YAClF,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,SAAS,GAAG,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9D,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW,IAAI,YAAY,CAAC,0BAA0B,EAAE,EAAE,CAAC;gBACvF,OAAO,SAAS,CAAC,OAAO,CAAC;YAC3B,CAAC;YACD,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC;QACvD,GAAG,oBAAoB,CAAC,aAAa,CAAC;QACtC,oEAAoE;QACpE,mEAAmE;QACnE,yEAAyE;QACzE,kEAAkE;QAClE,GAAG,+BAA+B,CAAC,aAAa,CAAC;QACjD,wEAAwE;QACxE,wEAAwE;QACxE,2EAA2E;QAC3E,GAAG,0BAA0B,CAAC;YAC5B,OAAO;YACP,aAAa;YACb,WAAW;YACX,gBAAgB;YAChB,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CACvC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;SACzD,CAAC;QACF,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;QACvE,0EAA0E;QAC1E,4DAA4D;QAC5D,yBAAyB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YAClD,MAAM,OAAO,GAAG,uCAAuC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,gCAAgC,CACjD,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EACnC,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,CAAC;QACD,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,yDAAyD;QACzD,uBAAuB,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,qCAAqC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACzE,MAAM,EAAE,OAAO,EAAE,GAAG,wBAAwB,CAAC;gBAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;YACH,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACjF,OAAO;gBACL,OAAO;gBACP,MAAM,EAAE,2BAA2B,CACjC,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAClC,aAAa,EAAE,CAAC,IAAI,EAAE,CACvB;aACF,CAAC;QACJ,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC1D,mEAAmE;YACnE,oEAAoE;YACpE,iEAAiE;YACjE,0EAA0E;YAC1E,0EAA0E;YAC1E,4DAA4D;YAC5D,MAAM,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAC/C,gBAAgB,EAAE,CAAC;YACnB,OAAO,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QACD,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACxB,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE;YACtC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;SAC5B,CAAC;QACF,SAAS,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACpE,uEAAuE;YACvE,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,oEAAoE,IAAI,GAAG,CAAC,EACtF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7C,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,OAAO;gBACL,IAAI;gBACJ,OAAO;gBACP,MAAM,EAAE,IAAI;gBACZ,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvF,CAAC;QACJ,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACnC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,9 +1,25 @@
1
+ /**
2
+ * Credential surfaces: the managed secret store and INV-135 credential
3
+ * profiles. Thin clients — the daemon owns storage and doctor probes; the
4
+ * profile login spawns the SAME vendor command the setup jobs run, in this
5
+ * interactive terminal, scoped to the profile's config dir.
6
+ */
7
+ import { spawnSync } from "node:child_process";
1
8
  import { type ParsedArgs } from "./args.js";
9
+ import { daemonGet } from "./ops-commands.js";
2
10
  /**
3
11
  * Thin client over the daemon's credential-profile listing (INV-135): the
4
12
  * durable registry lives in the global config; readiness is the daemon
5
13
  * doctor's projection — this command never probes vendors itself.
6
14
  */
7
15
  export declare function profilesCommand(args: ParsedArgs, json: boolean): Promise<number>;
16
+ export interface ProfilesCommandDeps {
17
+ daemonGet?: typeof daemonGet;
18
+ spawnSync?: typeof spawnSync;
19
+ platform?: NodeJS.Platform;
20
+ }
21
+ /** Injectable only at the process/vendor boundary so policy ordering has a
22
+ * zero-spawn regression test without contacting a daemon or vendor. */
23
+ export declare function profilesCommandWithDeps(args: ParsedArgs, json: boolean, deps?: ProfilesCommandDeps): Promise<number>;
8
24
  export declare function secretsCommand(args: ParsedArgs, json: boolean): Promise<number>;
9
25
  //# sourceMappingURL=credential-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-commands.d.ts","sourceRoot":"","sources":["../src/credential-commands.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,WAAW,CAAC;AAarD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAiRtF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0ErF"}
1
+ {"version":3,"file":"credential-commands.d.ts","sourceRoot":"","sources":["../src/credential-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAoB/C,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,WAAW,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAY9C;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtF;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED;uEACuE;AACvE,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAkUjB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0ErF"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { spawnSync } from "node:child_process";
8
8
  import { registerConfigDirProfile } from "./profile-registration.js";
9
- import { ControlCredentialProfileDeleteResponse, ControlCredentialProfileUpdateResponse, ControlCredentialProfilesResponse, ControlSecretListResponse, ControlSecretMutationResponse, ControlSecretSetRequest, ControlSetupJob, } from "@claudexor/schema";
9
+ import { ControlAccountsMigrationRollbackResponse, ControlCredentialProfileDeleteResponse, ControlCredentialProfileUpdateResponse, ControlCredentialProfilesResponse, ControlSecretListResponse, ControlSecretMutationResponse, ControlSecretSetRequest, ControlSetupJob, } from "@claudexor/schema";
10
10
  import { streamDurableCodexLogin, terminalLoginFallback } from "./setup-login-inline.js";
11
11
  import { MANAGED_SECRET_NAMES, isManagedSecretName } from "@claudexor/secrets";
12
12
  import { CONFIG_DIR_LOGIN_HARNESSES, canonicalProfileLoginDir, configDirLoginHarnessList, isConfigDirLoginHarness, } from "./config-dir-login-harnesses.js";
@@ -16,6 +16,9 @@ import { ensureDaemon } from "./daemon-run.js";
16
16
  import { controlApiFetch } from "./live.js";
17
17
  import { daemonGet } from "./ops-commands.js";
18
18
  import { nativeLoginEnv, nativeLoginSpec } from "./native-login.js";
19
+ import { credentialProfilePolicyProblem, credentialProfilePolicyState } from "@claudexor/core";
20
+ import { buildRegistry } from "./registry.js";
21
+ import { CliError, renderCliFailure } from "./cli-error.js";
19
22
  async function stdinText() {
20
23
  const chunks = [];
21
24
  for await (const chunk of process.stdin)
@@ -28,25 +31,53 @@ async function stdinText() {
28
31
  * doctor's projection — this command never probes vendors itself.
29
32
  */
30
33
  export async function profilesCommand(args, json) {
34
+ return profilesCommandWithDeps(args, json);
35
+ }
36
+ /** Injectable only at the process/vendor boundary so policy ordering has a
37
+ * zero-spawn regression test without contacting a daemon or vendor. */
38
+ export async function profilesCommandWithDeps(args, json, deps = {}) {
39
+ const get = deps.daemonGet ?? daemonGet;
40
+ const spawnVendor = deps.spawnSync ?? spawnSync;
31
41
  const sub = args._[1] ?? "list";
32
42
  if (sub === "login") {
33
43
  // INV-135 profile login: the SAME vendor login command the setup jobs run,
34
- // spawned interactively in THIS terminal with the profile's scoped config
35
- // dir. The default vendor store is never touched; the doctor probe after
36
- // exit is the verification truth.
44
+ // spawned interactively in THIS terminal with the profile's scoped state.
45
+ // Some platforms keep the vendor credential at OS-user scope; the doctor
46
+ // probe after exit is the verification truth.
37
47
  const harness = args._[2];
38
48
  const profileId = args._[3];
39
49
  if (!harness || !profileId) {
40
50
  return printUsageError(json, "usage: claudexor profiles login <harness> <profile-id>");
41
51
  }
42
- // Claude profile login is deliberately the vendor's interactive TTY flow.
43
- // Inheriting its stdout while also promising one JSON object would corrupt
44
- // the machine surface, so refuse before discovery, prose, or spawn. Codex
45
- // keeps its daemon-owned device-code JSON flow below.
52
+ const listing = ControlCredentialProfilesResponse.parse(await get("/credential-profiles"));
53
+ // The listing is the canonical registry projection. Apply the same static
54
+ // platform/cardinality gate as setup jobs before emitting interactive
55
+ // prose, spawning a vendor, or contacting any vendor surface. This closes
56
+ // the direct profile-login bypass without changing the valid TTY flow.
57
+ const adapter = buildRegistry({ includeFakes: false }).get(harness);
58
+ if (adapter) {
59
+ const state = credentialProfilePolicyState({
60
+ adapter,
61
+ registry: listing.profiles.map((row) => row.profile),
62
+ platform: deps.platform,
63
+ });
64
+ if (state.ambiguous) {
65
+ const problem = credentialProfilePolicyProblem(state, "credential_profile_ambiguous");
66
+ return renderCliFailure(json, new CliError("operational", problem.message, {
67
+ code: problem.code,
68
+ retryable: problem.retryable,
69
+ fieldErrors: problem.fieldErrors,
70
+ requiredActions: problem.requiredActions,
71
+ context: problem.context,
72
+ }));
73
+ }
74
+ }
75
+ // Non-Codex profile login is deliberately the vendor's interactive TTY
76
+ // flow. Refuse JSON only after the static registry policy above so JSON
77
+ // cannot bypass the same typed ambiguity disposition as human mode.
46
78
  if (json && harness !== "codex") {
47
79
  return printUsageError(true, `claudexor profiles login ${harness} is interactive and does not support --json`);
48
80
  }
49
- const listing = ControlCredentialProfilesResponse.parse(await daemonGet("/credential-profiles"));
50
81
  const entry = listing.profiles.find((p) => p.profile.harness_id === harness && p.profile.profile_id === profileId);
51
82
  if (!entry) {
52
83
  return printUsageError(json, `no credential profile "${profileId}" for harness "${harness}" (register it in the global config's credential_profiles)`);
@@ -109,14 +140,14 @@ export async function profilesCommand(args, json) {
109
140
  }
110
141
  const configDir = canonicalProfileLoginDir(harness, profile.isolation_locator ?? "");
111
142
  print(`running ${spec.displayCommand} into ${configDir}`);
112
- const child = spawnSync(spec.binary, spec.args, {
143
+ const child = spawnVendor(spec.binary, spec.args, {
113
144
  stdio: "inherit",
114
145
  env: nativeLoginEnv(harness, process.env, configDir),
115
146
  });
116
147
  if (child.status !== 0) {
117
148
  print(`login command exited with ${child.status ?? child.signal ?? "unknown"}`);
118
149
  }
119
- const after = ControlCredentialProfilesResponse.parse(await daemonGet("/credential-profiles")).profiles.find((p) => p.profile.harness_id === harness && p.profile.profile_id === profileId);
150
+ const after = ControlCredentialProfilesResponse.parse(await get("/credential-profiles")).profiles.find((p) => p.profile.harness_id === harness && p.profile.profile_id === profileId);
120
151
  const status = after?.status;
121
152
  if (json)
122
153
  printJson({ profile: after?.profile ?? profile, status: status ?? null });
@@ -188,8 +219,8 @@ export async function profilesCommand(args, json) {
188
219
  return printUsageError(json, "usage: claudexor profiles remove <harness> <profile-id>");
189
220
  }
190
221
  // Daemon-owned removal (one mutation path): registry entry + the profile's
191
- // own credential material (scoped login dir / namespaced secret); refuses
192
- // while a login job for the account is active.
222
+ // binding plus data Claudexor owns; vendor-owned OS-user credentials are
223
+ // reported explicitly and left untouched. Active login jobs still refuse.
193
224
  const { addr } = await ensureDaemon();
194
225
  const response = await controlApiFetch(addr, `/credential-profiles/${encodeURIComponent(harness)}/${encodeURIComponent(profileId)}`, { method: "DELETE", headers: { Authorization: `Bearer ${addr.token}` } });
195
226
  if (!response.ok) {
@@ -200,24 +231,56 @@ export async function profilesCommand(args, json) {
200
231
  printJson(receipt);
201
232
  else {
202
233
  print(`removed ${harness}/${profileId} (${receipt.credentialCleanup})`);
234
+ if (receipt.vendorCredentialDisposition) {
235
+ print("Claudexor removed the binding and any Claudexor-owned state or managed secret; it did not change any vendor credential for this OS user.");
236
+ }
203
237
  if (receipt.cleanupWarning)
204
238
  print(`warning: ${receipt.cleanupWarning}`);
205
239
  }
206
240
  return 0;
207
241
  }
242
+ if (sub === "rollback-migration") {
243
+ // The supported downgrade path of the unified-accounts startup migration:
244
+ // sessions/checkpoints/lane homes return to the engine-default keys and
245
+ // the auto-registered row leaves the registry. Run BEFORE installing an
246
+ // engine whose canonicalizers refuse the migrated row's native locator.
247
+ const harness = args._[2];
248
+ const { addr } = await ensureDaemon();
249
+ const response = await controlApiFetch(addr, "/accounts-migration/rollback", {
250
+ method: "POST",
251
+ headers: { Authorization: `Bearer ${addr.token}`, "content-type": "application/json" },
252
+ body: JSON.stringify(harness ? { harnessId: harness } : {}),
253
+ });
254
+ if (!response.ok) {
255
+ return printUsageError(json, `migration rollback failed (${response.status}): ${await response.text()}`);
256
+ }
257
+ const receipt = ControlAccountsMigrationRollbackResponse.parse(await response.json());
258
+ if (json)
259
+ printJson(receipt);
260
+ else if (receipt.rolledBack.length === 0)
261
+ print("nothing to roll back (no migrated harness)");
262
+ else {
263
+ for (const entry of receipt.rolledBack) {
264
+ print(`rolled back ${entry.harness_id} (row ${entry.row_id}): ${entry.sessions} sessions, ${entry.checkpoints} checkpoints, ${entry.lanes} lane homes`);
265
+ if (entry.skipped_partitions.length > 0) {
266
+ print(`warning: quarantined partition(s) not rolled back: ${entry.skipped_partitions.join(", ")} — recover them and rerun before downgrading`);
267
+ }
268
+ }
269
+ }
270
+ return 0;
271
+ }
208
272
  if (sub !== "list") {
209
- return printUsageError(json, "usage: claudexor profiles [list | add <harness> <profile-id> | login <harness> <profile-id> | enable <harness> <profile-id> | disable <harness> <profile-id> | remove <harness> <profile-id>]");
273
+ return printUsageError(json, "usage: claudexor profiles [list | add <harness> <profile-id> | login <harness> <profile-id> | enable <harness> <profile-id> | disable <harness> <profile-id> | remove <harness> <profile-id> | rollback-migration [harness]]");
210
274
  }
211
- const result = ControlCredentialProfilesResponse.parse(await daemonGet("/credential-profiles"));
275
+ const result = ControlCredentialProfilesResponse.parse(await get("/credential-profiles"));
212
276
  if (json) {
213
277
  printJson(result);
214
278
  return 0;
215
279
  }
216
- // Symmetric accounts rows (INV-135, D25): per harness, every credential
217
- // profile (the Enabled toggle the only routing control) plus the native
218
- // "CLI login" row, and an informational "next up" line naming who an unpinned
219
- // run would route to. The server owns native/next-up truth — this surface
220
- // never re-derives it.
280
+ // Unified account model (INV-135): every account is a named registry row
281
+ // with an Enabled toggle (the only routing control); routing facts come from
282
+ // the server-owned accountPools projection. This surface never re-derives
283
+ // pool truth, and there is no separate native/CLI-login pseudo-row.
221
284
  const byHarness = new Map();
222
285
  for (const entry of result.profiles) {
223
286
  const list = byHarness.get(entry.profile.harness_id) ?? [];
@@ -225,36 +288,27 @@ export async function profilesCommand(args, json) {
225
288
  byHarness.set(entry.profile.harness_id, list);
226
289
  }
227
290
  const harnessIds = [
228
- ...new Set([...result.harnessAccounts.map((h) => h.harness_id), ...byHarness.keys()]),
291
+ ...new Set([...result.accountPools.map((pool) => pool.harness_id), ...byHarness.keys()]),
229
292
  ].sort();
230
293
  if (harnessIds.length === 0) {
231
- print("no accounts (add credential_profiles entries to the global config, or log in a harness)");
294
+ print("no accounts (connect one with `claudexor auth login <harness>`)");
232
295
  return 0;
233
296
  }
234
297
  for (const harnessId of harnessIds) {
235
- const authority = result.harnessAccounts.find((h) => h.harness_id === harnessId);
236
298
  print(`${harnessId}:`);
237
- // The native "CLI login" pseudo-row: same Enabled toggle, no Delete.
238
- const nativeEnabled = authority?.native_credentials_enabled ?? true;
239
- const nativeState = !nativeEnabled
240
- ? "disabled"
241
- : authority?.native_login_detected
242
- ? "logged-in"
243
- : "not-logged-in";
244
- print(` CLI login [native] ${nativeState}`);
245
- for (const { profile, status } of byHarness.get(harnessId) ?? []) {
299
+ const rows = byHarness.get(harnessId) ?? [];
300
+ if (rows.length === 0)
301
+ print(" (no accounts)");
302
+ for (const { profile, status } of rows) {
246
303
  const state = profile.enabled ? status.availability : "disabled";
247
304
  print(` ${profile.profile_id} [${profile.credential_kind}] ${state}${status.detail ? ` — ${status.detail}` : ""}`);
248
305
  }
249
306
  // Informational: who an UNPINNED run routes to next (never a user setting).
250
- const nextUp = authority?.next_up;
251
- if (nextUp?.kind === "native") {
252
- print(nextUp.route === "api_key"
253
- ? ` next up: API key [default]`
254
- : ` next up: CLI login [native]`);
255
- }
256
- else if (nextUp?.kind === "profile")
307
+ const nextUp = result.accountPools.find((pool) => pool.harness_id === harnessId)?.next_up;
308
+ if (nextUp?.kind === "profile")
257
309
  print(` next up: ${nextUp.profileId}`);
310
+ else if (nextUp?.kind === "api_key_route")
311
+ print(` next up: API key (paid route)`);
258
312
  else if (nextUp?.kind === "none")
259
313
  print(` next up: nothing routable (${nextUp.reason})`);
260
314
  }