@claudexor/cli 3.19.0 → 3.22.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 (169) hide show
  1. package/dist/account-catalog.d.ts +5 -6
  2. package/dist/account-catalog.d.ts.map +1 -1
  3. package/dist/account-catalog.js +24 -9
  4. package/dist/account-catalog.js.map +1 -1
  5. package/dist/account-observations.d.ts +31 -0
  6. package/dist/account-observations.d.ts.map +1 -0
  7. package/dist/account-observations.js +135 -0
  8. package/dist/account-observations.js.map +1 -0
  9. package/dist/accounts-projection.d.ts +5 -9
  10. package/dist/accounts-projection.d.ts.map +1 -1
  11. package/dist/accounts-projection.js +22 -41
  12. package/dist/accounts-projection.js.map +1 -1
  13. package/dist/accounts-services.d.ts +10 -1
  14. package/dist/accounts-services.d.ts.map +1 -1
  15. package/dist/accounts-services.js +50 -34
  16. package/dist/accounts-services.js.map +1 -1
  17. package/dist/acp-surface-runner.d.ts.map +1 -1
  18. package/dist/acp-surface-runner.js +2 -0
  19. package/dist/acp-surface-runner.js.map +1 -1
  20. package/dist/agy-quota-source.d.ts.map +1 -1
  21. package/dist/agy-quota-source.js +19 -33
  22. package/dist/agy-quota-source.js.map +1 -1
  23. package/dist/claude-oauth-credential.d.ts +16 -0
  24. package/dist/claude-oauth-credential.d.ts.map +1 -0
  25. package/dist/claude-oauth-credential.js +82 -0
  26. package/dist/claude-oauth-credential.js.map +1 -0
  27. package/dist/claude-oauth-fetch.d.ts +9 -0
  28. package/dist/claude-oauth-fetch.d.ts.map +1 -0
  29. package/dist/claude-oauth-fetch.js +67 -0
  30. package/dist/claude-oauth-fetch.js.map +1 -0
  31. package/dist/claude-oauth-usage.d.ts +7 -38
  32. package/dist/claude-oauth-usage.d.ts.map +1 -1
  33. package/dist/claude-oauth-usage.js +166 -180
  34. package/dist/claude-oauth-usage.js.map +1 -1
  35. package/dist/claudexord.d.ts.map +1 -1
  36. package/dist/claudexord.js +2 -2
  37. package/dist/claudexord.js.map +1 -1
  38. package/dist/cli-io.d.ts +2 -0
  39. package/dist/cli-io.d.ts.map +1 -1
  40. package/dist/cli-io.js +6 -5
  41. package/dist/cli-io.js.map +1 -1
  42. package/dist/codex-quota-source.d.ts +6 -2
  43. package/dist/codex-quota-source.d.ts.map +1 -1
  44. package/dist/codex-quota-source.js +62 -95
  45. package/dist/codex-quota-source.js.map +1 -1
  46. package/dist/continue-from-run.d.ts +27 -0
  47. package/dist/continue-from-run.d.ts.map +1 -0
  48. package/dist/continue-from-run.js +77 -0
  49. package/dist/continue-from-run.js.map +1 -0
  50. package/dist/control-services.d.ts +36 -3
  51. package/dist/control-services.d.ts.map +1 -1
  52. package/dist/control-services.js +15 -20
  53. package/dist/control-services.js.map +1 -1
  54. package/dist/credential-commands.d.ts.map +1 -1
  55. package/dist/credential-commands.js +12 -6
  56. package/dist/credential-commands.js.map +1 -1
  57. package/dist/daemon-agent-runner.d.ts.map +1 -1
  58. package/dist/daemon-agent-runner.js +4 -6
  59. package/dist/daemon-agent-runner.js.map +1 -1
  60. package/dist/gc-receipt-notes.d.ts +14 -0
  61. package/dist/gc-receipt-notes.d.ts.map +1 -0
  62. package/dist/gc-receipt-notes.js +28 -0
  63. package/dist/gc-receipt-notes.js.map +1 -0
  64. package/dist/harness-command-specs.d.ts +1 -1
  65. package/dist/harness-command-specs.d.ts.map +1 -1
  66. package/dist/harness-command-specs.js +8 -1
  67. package/dist/harness-command-specs.js.map +1 -1
  68. package/dist/harness-install-proof.d.ts.map +1 -1
  69. package/dist/harness-install-proof.js +14 -18
  70. package/dist/harness-install-proof.js.map +1 -1
  71. package/dist/harness-install-recipes.d.ts +2 -1
  72. package/dist/harness-install-recipes.d.ts.map +1 -1
  73. package/dist/harness-install-recipes.js +12 -9
  74. package/dist/harness-install-recipes.js.map +1 -1
  75. package/dist/harness-installer.d.ts +1 -1
  76. package/dist/harness-installer.d.ts.map +1 -1
  77. package/dist/harness-installer.js +8 -9
  78. package/dist/harness-installer.js.map +1 -1
  79. package/dist/live.d.ts.map +1 -1
  80. package/dist/live.js +8 -7
  81. package/dist/live.js.map +1 -1
  82. package/dist/mcp-catalog-query.js +3 -3
  83. package/dist/mcp-catalog-query.js.map +1 -1
  84. package/dist/mcp-run-projections.d.ts +17 -1
  85. package/dist/mcp-run-projections.d.ts.map +1 -1
  86. package/dist/mcp-run-projections.js +27 -1
  87. package/dist/mcp-run-projections.js.map +1 -1
  88. package/dist/model-account-evidence.d.ts +18 -0
  89. package/dist/model-account-evidence.d.ts.map +1 -0
  90. package/dist/model-account-evidence.js +71 -0
  91. package/dist/model-account-evidence.js.map +1 -0
  92. package/dist/model-services.d.ts.map +1 -1
  93. package/dist/model-services.js +78 -83
  94. package/dist/model-services.js.map +1 -1
  95. package/dist/native-login.d.ts +5 -0
  96. package/dist/native-login.d.ts.map +1 -1
  97. package/dist/native-login.js +18 -2
  98. package/dist/native-login.js.map +1 -1
  99. package/dist/ops-commands.d.ts.map +1 -1
  100. package/dist/ops-commands.js +22 -25
  101. package/dist/ops-commands.js.map +1 -1
  102. package/dist/orphan-sweeper.d.ts.map +1 -1
  103. package/dist/orphan-sweeper.js +11 -1
  104. package/dist/orphan-sweeper.js.map +1 -1
  105. package/dist/plugins.js +1 -1
  106. package/dist/plugins.js.map +1 -1
  107. package/dist/quota-command.js +3 -4
  108. package/dist/quota-command.js.map +1 -1
  109. package/dist/quota-refresh-diagnostics.d.ts +33 -0
  110. package/dist/quota-refresh-diagnostics.d.ts.map +1 -0
  111. package/dist/quota-refresh-diagnostics.js +9 -0
  112. package/dist/quota-refresh-diagnostics.js.map +1 -0
  113. package/dist/quota-refreshers.d.ts +5 -4
  114. package/dist/quota-refreshers.d.ts.map +1 -1
  115. package/dist/quota-refreshers.js +11 -4
  116. package/dist/quota-refreshers.js.map +1 -1
  117. package/dist/quota-services.d.ts +20 -2
  118. package/dist/quota-services.d.ts.map +1 -1
  119. package/dist/registry.d.ts +1 -1
  120. package/dist/registry.d.ts.map +1 -1
  121. package/dist/registry.js +6 -2
  122. package/dist/registry.js.map +1 -1
  123. package/dist/retention-service.d.ts +7 -1
  124. package/dist/retention-service.d.ts.map +1 -1
  125. package/dist/retention-service.js +84 -5
  126. package/dist/retention-service.js.map +1 -1
  127. package/dist/run-orchestrator.d.ts +0 -6
  128. package/dist/run-orchestrator.d.ts.map +1 -1
  129. package/dist/run-orchestrator.js +41 -10
  130. package/dist/run-orchestrator.js.map +1 -1
  131. package/dist/settings-service.d.ts +14 -6
  132. package/dist/settings-service.d.ts.map +1 -1
  133. package/dist/settings-service.js +11 -5
  134. package/dist/settings-service.js.map +1 -1
  135. package/dist/setup-jobs.js +6 -6
  136. package/dist/setup-jobs.js.map +1 -1
  137. package/dist/setup-login-capability.d.ts.map +1 -1
  138. package/dist/setup-login-capability.js +6 -2
  139. package/dist/setup-login-capability.js.map +1 -1
  140. package/dist/setup-login-child-lifecycle.d.ts.map +1 -1
  141. package/dist/setup-login-child-lifecycle.js +16 -4
  142. package/dist/setup-login-child-lifecycle.js.map +1 -1
  143. package/dist/setup-login-fallback.d.ts +54 -0
  144. package/dist/setup-login-fallback.d.ts.map +1 -0
  145. package/dist/setup-login-fallback.js +95 -0
  146. package/dist/setup-login-fallback.js.map +1 -0
  147. package/dist/setup-login-inline.d.ts +8 -46
  148. package/dist/setup-login-inline.d.ts.map +1 -1
  149. package/dist/setup-login-inline.js +79 -104
  150. package/dist/setup-login-inline.js.map +1 -1
  151. package/dist/setup-login-input-prompt.d.ts +7 -0
  152. package/dist/setup-login-input-prompt.d.ts.map +1 -0
  153. package/dist/setup-login-input-prompt.js +27 -0
  154. package/dist/setup-login-input-prompt.js.map +1 -0
  155. package/dist/setup-login-runner.d.ts.map +1 -1
  156. package/dist/setup-login-runner.js +15 -11
  157. package/dist/setup-login-runner.js.map +1 -1
  158. package/dist/status-projection-cache.d.ts +3 -0
  159. package/dist/status-projection-cache.d.ts.map +1 -1
  160. package/dist/status-projection-cache.js +4 -1
  161. package/dist/status-projection-cache.js.map +1 -1
  162. package/dist/thread-delivery.d.ts.map +1 -1
  163. package/dist/thread-delivery.js +14 -13
  164. package/dist/thread-delivery.js.map +1 -1
  165. package/dist/thread-purge.d.ts +52 -0
  166. package/dist/thread-purge.d.ts.map +1 -0
  167. package/dist/thread-purge.js +27 -0
  168. package/dist/thread-purge.js.map +1 -0
  169. package/package.json +25 -24
@@ -1,21 +1,20 @@
1
1
  import { type HarnessAdapter } from "@claudexor/core";
2
- import { type AccountCatalogAvailability, type CredentialProfile, type CredentialUnusableObservation, type GlobalConfig, type QuotaAbsence, type QuotaSnapshot } from "@claudexor/schema";
2
+ import { type VendorQuotaObservations } from "@claudexor/orchestrator";
3
+ import { type AccountCatalogAvailability, type CredentialProfile, type CredentialUnusableObservation, type GlobalConfig } from "@claudexor/schema";
3
4
  export interface AccountCatalogContext {
4
5
  config: GlobalConfig;
5
- quota: {
6
- snapshots: readonly QuotaSnapshot[];
7
- absences: readonly QuotaAbsence[];
8
- };
6
+ quota: VendorQuotaObservations;
9
7
  unusable?: readonly CredentialUnusableObservation[];
10
8
  }
11
9
  /** Display membership uses the durable enabled registry, never the inference pool selector. */
12
10
  export declare function catalogProfiles(context: AccountCatalogContext, harnessId: string, credentialProfileId?: string, managedLoginOnly?: boolean): CredentialProfile[];
13
- /** Each account keeps its own failure and observation; there is no catalog cache or quota refresh. */
11
+ /** Each account retains its own cold display acquisition, including failure. */
14
12
  export declare function enumerateAccountCatalogs<T>(input: {
15
13
  context: AccountCatalogContext;
16
14
  adapter: HarnessAdapter | undefined;
17
15
  profiles: readonly CredentialProfile[];
18
16
  read(profile: CredentialProfile, canReadCatalog: boolean): Promise<T | null>;
17
+ observationKey: string;
19
18
  }): Promise<Array<AccountCatalogAvailability & {
20
19
  catalog: T | null;
21
20
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"account-catalog.d.ts","sourceRoot":"","sources":["../src/account-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASpF,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE;QAAE,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;KAAE,CAAC;IAClF,QAAQ,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;CACrD;AAMD,+FAA+F;AAC/F,wBAAgB,eAAe,CAC7B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,gBAAgB,UAAQ,GACvB,iBAAiB,EAAE,CAmBrB;AA2ED,sGAAsG;AACtG,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE;IACvD,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9E,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG;IAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CA4CrE"}
1
+ {"version":3,"file":"account-catalog.d.ts","sourceRoot":"","sources":["../src/account-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;CACrD;AAMD,+FAA+F;AAC/F,wBAAgB,eAAe,CAC7B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,gBAAgB,UAAQ,GACvB,iBAAiB,EAAE,CAmBrB;AAoFD,gFAAgF;AAChF,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE;IACvD,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7E,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG;IAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAgDrE"}
@@ -1,7 +1,8 @@
1
1
  import { credentialProfilePolicyState } from "@claudexor/core";
2
- import { liveUnusableFor, profileQuotaBlock, probeCredentialProfileStatus, profileStatusAdmits, resolveCredentialProfile, vendorVerifiedProfileStatus, } from "@claudexor/orchestrator";
2
+ import { composeCredentialProfileEvidence, applicableCredentialUnusable, profileQuotaBlock, profileStatusAdmits, resolveCredentialProfile, } from "@claudexor/orchestrator";
3
3
  import { ControlProblem, } from "@claudexor/schema";
4
4
  import { redactSecrets } from "@claudexor/util";
5
+ import { accountObservations, displayAccountObservation } from "./account-observations.js";
5
6
  function catalogProblem(code, message, context = {}) {
6
7
  return ControlProblem.parse({ code, message, retryable: false, context });
7
8
  }
@@ -38,17 +39,31 @@ async function accountAvailability(context, adapter, profile) {
38
39
  });
39
40
  if (cardinality.ambiguous && profile.credential_kind !== "api_key")
40
41
  return unavailable(catalogProblem("credential_profile_ambiguous", "The enabled profile set exceeds this platform's credential policy"));
41
- const dead = liveUnusableFor(context.unusable ?? [], profile.harness_id, profile.profile_id);
42
- if (dead)
43
- return unavailable(catalogProblem(dead.code === "auth_revoked" ? "auth_required" : "credential_unusable", "Current vendor evidence marks this credential unavailable", { observedAt: dead.observed_at }));
44
- const status = vendorVerifiedProfileStatus(await probeCredentialProfileStatus(profile, adapter?.probeCredentialProfile?.bind(adapter)), context.quota);
42
+ const evidence = {
43
+ quota: context.quota,
44
+ unusable: context.unusable ?? [],
45
+ model: null,
46
+ route: profile.credential_kind === "api_key"
47
+ ? "managed_api_key"
48
+ : "vendor_native",
49
+ };
50
+ const status = composeCredentialProfileEvidence((await displayAccountObservation(profile, adapter)).status, evidence);
45
51
  if (!profileStatusAdmits(profile, status)) {
46
- const revoked = status.verification_source === "vendor" && status.verification === "failed";
52
+ const refusal = applicableCredentialUnusable(status, evidence);
53
+ const revoked = refusal
54
+ ? refusal.code === "auth_revoked"
55
+ : status.verification_source === "vendor" && status.verification === "failed";
47
56
  const unknown = !revoked && (status.availability === "unknown" || status.stale === true);
48
57
  return {
49
58
  ...row,
50
59
  availability: unknown ? "unknown" : "unavailable",
51
- problem: catalogProblem(unknown ? "catalog_account_status_unknown" : revoked ? "auth_required" : "auth_unavailable", "The account has no verified current catalog credential", { observedAt: status.last_verified_at }),
60
+ problem: catalogProblem(unknown
61
+ ? "catalog_account_status_unknown"
62
+ : revoked
63
+ ? "auth_required"
64
+ : refusal
65
+ ? "credential_unusable"
66
+ : "auth_unavailable", "The account has no verified current catalog credential", { observedAt: status.last_verified_at }),
52
67
  canReadCatalog: false,
53
68
  };
54
69
  }
@@ -65,12 +80,12 @@ async function accountAvailability(context, adapter, profile) {
65
80
  canReadCatalog: true,
66
81
  };
67
82
  }
68
- /** Each account keeps its own failure and observation; there is no catalog cache or quota refresh. */
83
+ /** Each account retains its own cold display acquisition, including failure. */
69
84
  export async function enumerateAccountCatalogs(input) {
70
85
  return Promise.all(input.profiles.map(async (profile) => {
71
86
  const { canReadCatalog, ...facts } = await accountAvailability(input.context, input.adapter, profile);
72
87
  try {
73
- const catalog = await input.read(profile, canReadCatalog);
88
+ const { value: catalog } = await accountObservations.read(input.observationKey, profile, () => input.read(profile, canReadCatalog));
74
89
  return catalog === null && facts.problem === null
75
90
  ? {
76
91
  ...facts,
@@ -1 +1 @@
1
- {"version":3,"file":"account-catalog.js","sourceRoot":"","sources":["../src/account-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-catalog.js","sourceRoot":"","sources":["../src/account-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CredentialAccountProbeReceipt, HarnessAdapter } from "@claudexor/core";
2
+ import { type CredentialProfile } from "@claudexor/schema";
3
+ interface Observation<T> {
4
+ value: T;
5
+ at: number;
6
+ }
7
+ /** Display acquisition is cold-once, including failure. TTL ages evidence; it
8
+ * never schedules another vendor call. Credential invalidation and explicit
9
+ * Refresh discard it. Run admission does not read this display cache. */
10
+ declare class AccountObservations {
11
+ private entries;
12
+ generation: number;
13
+ constructor();
14
+ invalidate(): void;
15
+ invalidateCatalogs(): void;
16
+ observeProfile(profile: CredentialProfile, receipt: CredentialAccountProbeReceipt, generation: number): void;
17
+ read<T>(kind: string, profile: CredentialProfile, acquire: () => Promise<T>, fresh?: boolean): Promise<Observation<T>>;
18
+ }
19
+ export declare const accountObservations: AccountObservations;
20
+ /** Non-secret identity from this binding's owned store, never an ambient login. */
21
+ export declare function profileAccountIdentity(profile: CredentialProfile): {
22
+ email?: string | undefined;
23
+ plan?: string | undefined;
24
+ } | null;
25
+ /** One acquisition shared by profile hydration and account-catalog display. */
26
+ export declare function displayAccountObservation(profile: CredentialProfile, adapter?: HarnessAdapter, fresh?: boolean): Promise<CredentialAccountProbeReceipt>;
27
+ /** Existing necessary probes feed the same display owner; observing a run
28
+ * never starts an extra probe. A credential mutation rejects late receipts. */
29
+ export declare function retainAccountProbeObservations(adapter: HarnessAdapter): HarnessAdapter;
30
+ export {};
31
+ //# sourceMappingURL=account-observations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-observations.d.ts","sourceRoot":"","sources":["../src/account-observations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAK3B,UAAU,WAAW,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC;IACT,EAAE,EAAE,MAAM,CAAC;CACZ;AAOD;;yEAEyE;AACzE,cAAM,mBAAmB;IACvB,OAAO,CAAC,OAAO,CAA4B;IAC3C,UAAU,SAAK;IAEf,cAEC;IAED,UAAU,IAAI,IAAI,CAGjB;IAED,kBAAkB,IAAI,IAAI,CAGzB;IAED,cAAc,CACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,6BAA6B,EACtC,UAAU,EAAE,MAAM,GACjB,IAAI,CAiBN;IAED,IAAI,CAAC,CAAC,EACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,KAAK,UAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAmBzB;CACF;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC;AAE7D,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB;;;SAKhE;AAED,+EAA+E;AAC/E,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,cAAc,EACxB,KAAK,UAAQ,GACZ,OAAO,CAAC,6BAA6B,CAAC,CAuCxC;AAED;+EAC+E;AAC/E,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAkCtF"}
@@ -0,0 +1,135 @@
1
+ import { globalConfigPath } from "@claudexor/config";
2
+ import { probeCredentialProfileStatus } from "@claudexor/orchestrator";
3
+ import { AccountIdentity as AccountIdentitySchema, CredentialProfileStatus as ProfileStatusSchema, } from "@claudexor/schema";
4
+ import { claudeAccountIdentity } from "@claudexor/harness-claude";
5
+ import { codexAccountIdentity } from "@claudexor/harness-codex";
6
+ import { registerStatusProjection, STATUS_PROJECTION_TTL_MS } from "./status-projection-cache.js";
7
+ /** Display acquisition is cold-once, including failure. TTL ages evidence; it
8
+ * never schedules another vendor call. Credential invalidation and explicit
9
+ * Refresh discard it. Run admission does not read this display cache. */
10
+ class AccountObservations {
11
+ entries = new Map();
12
+ generation = 0;
13
+ constructor() {
14
+ registerStatusProjection(this);
15
+ }
16
+ invalidate() {
17
+ this.entries.clear();
18
+ this.generation += 1;
19
+ }
20
+ invalidateCatalogs() {
21
+ for (const key of this.entries.keys())
22
+ if (key.split("\0")[1] !== "profile")
23
+ this.entries.delete(key);
24
+ }
25
+ observeProfile(profile, receipt, generation) {
26
+ if (generation !== this.generation)
27
+ return;
28
+ const key = [globalConfigPath(), "profile", profile.harness_id, profile.profile_id].join("\0");
29
+ // The display acquisition already receives this same adapter response.
30
+ if (this.entries.get(key)?.pending)
31
+ return;
32
+ const status = ProfileStatusSchema.safeParse(receipt.status);
33
+ if (!status.success ||
34
+ status.data.profile_id !== profile.profile_id ||
35
+ status.data.harness_id !== profile.harness_id)
36
+ return;
37
+ this.entries.set(key, {
38
+ fingerprint: JSON.stringify(profile),
39
+ pending: false,
40
+ promise: Promise.resolve({ value: { ...receipt, status: status.data }, at: Date.now() }),
41
+ });
42
+ }
43
+ read(kind, profile, acquire, fresh = false) {
44
+ const key = [globalConfigPath(), kind, profile.harness_id, profile.profile_id].join("\0");
45
+ const fingerprint = JSON.stringify(profile);
46
+ const current = this.entries.get(key);
47
+ if (current?.fingerprint === fingerprint && (!fresh || current.pending))
48
+ return current.promise;
49
+ const entry = { fingerprint, pending: true, promise: Promise.resolve(null) };
50
+ entry.promise = Promise.resolve()
51
+ .then(acquire)
52
+ .then((value) => {
53
+ if (this.entries.get(key) !== entry)
54
+ throw new Error("Account observation changed during acquisition; refresh again");
55
+ return { value, at: Date.now() };
56
+ })
57
+ .finally(() => {
58
+ entry.pending = false;
59
+ });
60
+ this.entries.set(key, entry);
61
+ return entry.promise;
62
+ }
63
+ }
64
+ export const accountObservations = new AccountObservations();
65
+ /** Non-secret identity from this binding's owned store, never an ambient login. */
66
+ export function profileAccountIdentity(profile) {
67
+ if (!profile.isolation_locator)
68
+ return null;
69
+ if (profile.harness_id === "codex")
70
+ return codexAccountIdentity(profile.isolation_locator);
71
+ if (profile.harness_id === "claude")
72
+ return claudeAccountIdentity(profile.isolation_locator);
73
+ return null;
74
+ }
75
+ /** One acquisition shared by profile hydration and account-catalog display. */
76
+ export async function displayAccountObservation(profile, adapter, fresh = false) {
77
+ const observed = await accountObservations.read("profile", profile, async () => {
78
+ let identity = profileAccountIdentity(profile);
79
+ const status = await probeCredentialProfileStatus(profile, adapter?.probeCredentialAccount
80
+ ? async (candidate) => {
81
+ const receipt = await adapter.probeCredentialAccount(candidate);
82
+ if (receipt.status.profile_id !== candidate.profile_id ||
83
+ receipt.status.harness_id !== candidate.harness_id)
84
+ throw new Error("Account probe returned a different profile");
85
+ identity =
86
+ receipt.identity === null ? null : AccountIdentitySchema.parse(receipt.identity);
87
+ return receipt.status;
88
+ }
89
+ : adapter?.probeCredentialProfile?.bind(adapter));
90
+ return { status, identity };
91
+ }, fresh);
92
+ const age = Math.max(0, Date.now() - observed.at);
93
+ if (age <= STATUS_PROJECTION_TTL_MS)
94
+ return observed.value;
95
+ return {
96
+ ...observed.value,
97
+ status: {
98
+ ...observed.value.status,
99
+ // Retain what the probe observed. Display age does not revoke that fact
100
+ // or decide whether the binding may make its first catalog read. Actual
101
+ // run admission performs its own probe outside this display cache.
102
+ detail: `Last checked ${new Date(observed.at).toISOString()}; refresh to verify current readiness. ${observed.value.status.detail ?? ""}`.trim(),
103
+ },
104
+ };
105
+ }
106
+ /** Existing necessary probes feed the same display owner; observing a run
107
+ * never starts an extra probe. A credential mutation rejects late receipts. */
108
+ export function retainAccountProbeObservations(adapter) {
109
+ const profileProbe = adapter.probeCredentialProfile?.bind(adapter);
110
+ const accountProbe = adapter.probeCredentialAccount?.bind(adapter);
111
+ return {
112
+ ...adapter,
113
+ ...(profileProbe
114
+ ? {
115
+ probeCredentialProfile: async (...args) => {
116
+ const generation = accountObservations.generation;
117
+ const status = await profileProbe(...args);
118
+ accountObservations.observeProfile(args[0], { status, identity: profileAccountIdentity(args[0]) }, generation);
119
+ return status;
120
+ },
121
+ }
122
+ : {}),
123
+ ...(accountProbe
124
+ ? {
125
+ probeCredentialAccount: async (...args) => {
126
+ const generation = accountObservations.generation;
127
+ const receipt = await accountProbe(...args);
128
+ accountObservations.observeProfile(args[0], receipt, generation);
129
+ return receipt;
130
+ },
131
+ }
132
+ : {}),
133
+ };
134
+ }
135
+ //# sourceMappingURL=account-observations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-observations.js","sourceRoot":"","sources":["../src/account-observations.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,10 @@
8
8
  * detected default-store logins are auto-registered as ordinary rows at
9
9
  * daemon start.
10
10
  */
11
- import type { AccountIdentity, ControlHarnessAccountPool, CredentialProfile, CredentialProfileStatus, QuotaSnapshot } from "@claudexor/schema";
11
+ import type { AccountIdentity, ControlHarnessAccountPool, CredentialProfile, CredentialProfileStatus, CredentialUnusableObservation, QuotaSnapshot } from "@claudexor/schema";
12
+ import { type VendorQuotaObservations } from "@claudexor/orchestrator";
12
13
  import type { HarnessStatus } from "@claudexor/gateway";
13
14
  import { credentialProfilePolicyState } from "@claudexor/core";
14
- /**
15
- * Non-secret {email, plan} of a config_dir_login PROFILE, read daemon-side from
16
- * the profile's OWN isolation-locator store (INV-067) — never the ordinary
17
- * vendor home. Secret-ref profiles (no isolation_locator) and non-config_dir
18
- * families project no identity.
19
- */
20
- export declare function profileAccountIdentity(profile: CredentialProfile): AccountIdentity | null;
21
15
  /**
22
16
  * Doctor readiness projection for one credential profile (INV-135) — the ONE
23
17
  * live probe the accounts response and the profile mutation receipts share.
@@ -31,7 +25,7 @@ export declare function disabledProfileSharesOsUserCredential(state: ReturnType<
31
25
  * store identity path. A malformed rich receipt loses identity and fails
32
26
  * closed through the shared readiness wrapper.
33
27
  */
34
- export declare function profileAccountProjection(profile: CredentialProfile, registry?: readonly CredentialProfile[], platform?: NodeJS.Platform): Promise<{
28
+ export declare function profileAccountProjection(profile: CredentialProfile, registry?: readonly CredentialProfile[], platform?: NodeJS.Platform, fresh?: boolean): Promise<{
35
29
  profile: CredentialProfile;
36
30
  status: CredentialProfileStatus;
37
31
  identity: AccountIdentity | null;
@@ -49,5 +43,7 @@ export declare function accountPoolsProjection(repoRoot: string, quotaSnapshots?
49
43
  profile: CredentialProfile;
50
44
  status: CredentialProfileStatus;
51
45
  }[];
46
+ quota?: VendorQuotaObservations;
47
+ unusable?: readonly CredentialUnusableObservation[];
52
48
  }): Promise<ControlHarnessAccountPool[]>;
53
49
  //# sourceMappingURL=accounts-projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-projection.d.ts","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAY3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAM/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAKzF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,uBAAuB,CAAC,CAOlC;AAiBD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,GACrD,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,GAAE,SAAS,iBAAiB,EAAc,EAClD,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC;IACT,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,uBAAuB,CAAC;IAChC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC,CAAC,CA2CD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,SAAS,aAAa,EAAO,EAC7C,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,EAAE,CAAC;CACvF,GACA,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAqHtC"}
1
+ {"version":3,"file":"accounts-projection.d.ts","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAK/D;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,uBAAuB,CAAC,CAOlC;AAiBD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,GACrD,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,GAAE,SAAS,iBAAiB,EAAc,EAClD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,KAAK,UAAQ,GACZ,OAAO,CAAC;IACT,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,uBAAuB,CAAC;IAChC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC,CAAC,CAqBD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,SAAS,aAAa,EAAO,EAC7C,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS;QAAE,OAAO,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,EAAE,CAAC;IACtF,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;CACrD,GACA,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAmItC"}
@@ -1,26 +1,10 @@
1
- import { AccountIdentity as AccountIdentitySchema, estimateEffectiveAuthRoute, } from "@claudexor/schema";
1
+ import { estimateEffectiveAuthRoute } from "@claudexor/schema";
2
2
  import { loadConfig } from "@claudexor/config";
3
- import { effectiveAuthPreference, probeCredentialProfileStatus, profileStatusAdmits, selectFromAccountPool, } from "@claudexor/orchestrator";
3
+ import { effectiveAuthPreference, composeCredentialProfileEvidence, probeCredentialProfileStatus, profileStatusAdmits, selectFromAccountPool, } from "@claudexor/orchestrator";
4
4
  import { credentialProfilePolicyState } from "@claudexor/core";
5
- import { codexAccountIdentity } from "@claudexor/harness-codex";
6
- import { claudeAccountIdentity } from "@claudexor/harness-claude";
5
+ import { displayAccountObservation, profileAccountIdentity } from "./account-observations.js";
7
6
  import { buildGateway, buildRegistry } from "./registry.js";
8
- import { preProgressRefusalLedger } from "./run-orchestrator.js";
9
- /**
10
- * Non-secret {email, plan} of a config_dir_login PROFILE, read daemon-side from
11
- * the profile's OWN isolation-locator store (INV-067) — never the ordinary
12
- * vendor home. Secret-ref profiles (no isolation_locator) and non-config_dir
13
- * families project no identity.
14
- */
15
- export function profileAccountIdentity(profile) {
16
- if (!profile.isolation_locator)
17
- return null;
18
- if (profile.harness_id === "codex")
19
- return codexAccountIdentity(profile.isolation_locator);
20
- if (profile.harness_id === "claude")
21
- return claudeAccountIdentity(profile.isolation_locator);
22
- return null;
23
- }
7
+ import { credentialUnusableLedger, preProgressRefusalLedger } from "./run-orchestrator.js";
24
8
  /**
25
9
  * Doctor readiness projection for one credential profile (INV-135) — the ONE
26
10
  * live probe the accounts response and the profile mutation receipts share.
@@ -54,7 +38,7 @@ export function disabledProfileSharesOsUserCredential(state) {
54
38
  * store identity path. A malformed rich receipt loses identity and fails
55
39
  * closed through the shared readiness wrapper.
56
40
  */
57
- export async function profileAccountProjection(profile, registry = [profile], platform = process.platform) {
41
+ export async function profileAccountProjection(profile, registry = [profile], platform = process.platform, fresh = false) {
58
42
  const adapter = buildRegistry().get(profile.harness_id);
59
43
  const cardinality = credentialProfilePolicyState({ adapter, registry, platform });
60
44
  if (!profile.enabled && disabledProfileSharesOsUserCredential(cardinality)) {
@@ -71,24 +55,7 @@ export async function profileAccountProjection(profile, registry = [profile], pl
71
55
  identity: profileAccountIdentity(profile),
72
56
  };
73
57
  }
74
- if (!adapter?.probeCredentialAccount) {
75
- return {
76
- profile,
77
- status: await probeCredentialProfileStatus(profile, adapter?.probeCredentialProfile?.bind(adapter)),
78
- identity: profileAccountIdentity(profile),
79
- };
80
- }
81
- let identity = null;
82
- const status = await probeCredentialProfileStatus(profile, async (candidate) => {
83
- const receipt = await adapter.probeCredentialAccount(candidate);
84
- if (receipt.status.profile_id !== candidate.profile_id ||
85
- receipt.status.harness_id !== candidate.harness_id) {
86
- throw new Error("profile account probe returned a receipt for a different profile");
87
- }
88
- identity = receipt.identity === null ? null : AccountIdentitySchema.parse(receipt.identity);
89
- return receipt.status;
90
- });
91
- return { profile, status, identity };
58
+ return { profile, ...(await displayAccountObservation(profile, adapter, fresh)) };
92
59
  }
93
60
  /**
94
61
  * The per-harness pool routing verdict (`GET /v2/account-pools` and the
@@ -110,8 +77,22 @@ export async function accountPoolsProjection(repoRoot, quotaSnapshots = [], snap
110
77
  }
111
78
  }
112
79
  const statusById = new Map(statuses.map((status) => [status.id, status]));
80
+ const unusable = snapshot?.unusable ?? credentialUnusableLedger.live();
81
+ const profiles = (snapshot?.profiles ?? []).map((entry) => ({
82
+ ...entry,
83
+ status: composeCredentialProfileEvidence(entry.status, {
84
+ quota: snapshot?.quota ?? {
85
+ snapshots: quotaSnapshots,
86
+ absences: [],
87
+ honored: credentialUnusableLedger.honored(),
88
+ },
89
+ unusable,
90
+ model: cfg.harnesses[entry.profile.harness_id]?.default_model ?? null,
91
+ route: entry.profile.credential_kind === "api_key" ? "managed_api_key" : "vendor_native",
92
+ }),
93
+ }));
113
94
  const readyProfiles = new Map();
114
- for (const entry of snapshot?.profiles ?? []) {
95
+ for (const entry of profiles) {
115
96
  // next_up is an unpinned pool verdict: the same admission as pool routing.
116
97
  if (!entry.profile.enabled ||
117
98
  !profileStatusAdmits(entry.profile, entry.status, { unpinned: true }))
@@ -183,7 +164,7 @@ export async function accountPoolsProjection(repoRoot, quotaSnapshots = [], snap
183
164
  }
184
165
  // Enabled rows that are registered but not ready are named with what their
185
166
  // probe observed: an unanswered probe is unknown, never "not signed in".
186
- const unready = (snapshot?.profiles ?? []).filter((entry) => entry.profile.harness_id === harnessId &&
167
+ const unready = profiles.filter((entry) => entry.profile.harness_id === harnessId &&
187
168
  entry.profile.enabled &&
188
169
  entry.profile.credential_kind !== "api_key" &&
189
170
  !profileStatusAdmits(entry.profile, entry.status, { unpinned: true }));
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-projection.js","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts-projection.js","sourceRoot":"","sources":["../src/accounts-projection.ts"],"names":[],"mappings":"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"}
@@ -130,15 +130,17 @@ export declare function createCredentialProfilesService(quotaRegistry: () => Quo
130
130
  id: string;
131
131
  label: string;
132
132
  applies_to_models?: string[] | null | undefined;
133
+ applies_to_model_prefixes?: string[] | undefined;
133
134
  applies_to_unspecified_model?: boolean | undefined;
134
135
  used_ratio: number | null;
135
136
  window_seconds: number | null;
136
137
  resets_at: string | null;
137
138
  cooldown_until: string | null;
138
139
  }[];
139
- source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout" | "cursor_rate_limit";
140
+ 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";
140
141
  observed_at: string;
141
142
  freshness: "fresh" | "stale" | "unknown";
143
+ snapshot_id?: string | undefined;
142
144
  availability?: {
143
145
  state: "available" | "cooldown" | "exhausted";
144
146
  blocking_constraints: string[];
@@ -146,6 +148,7 @@ export declare function createCredentialProfilesService(quotaRegistry: () => Quo
146
148
  model_scoped_exhaustions: {
147
149
  constraint_id: string;
148
150
  applies_to_models: string[];
151
+ applies_to_model_prefixes?: string[] | undefined;
149
152
  resets_at: string | null;
150
153
  }[];
151
154
  } | undefined;
@@ -165,6 +168,12 @@ export declare function createCredentialProfilesService(quotaRegistry: () => Quo
165
168
  refreshed_at: string | null;
166
169
  refresh_skipped?: {
167
170
  vendor: string;
171
+ subject?: {
172
+ harness: string;
173
+ credential_route: "local" | "managed_api_key" | "vendor_native";
174
+ plan_label: string | null;
175
+ subject_id: string | null;
176
+ } | undefined;
168
177
  not_before: string;
169
178
  }[] | undefined;
170
179
  };
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-services.d.ts","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EAGxB,MAAM,mBAAmB,CAAC;AAU3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6B9E;AAED;;;;oEAIoE;AACpE,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,aAAa;iCAgCtC;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCjE"}
1
+ {"version":3,"file":"accounts-services.d.ts","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EAExB,MAAM,mBAAmB,CAAC;AAe3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6B9E;AAED;;;;oEAIoE;AACpE,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,aAAa;iCAmDtC;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCjE"}