@sentropic/llm-mesh 0.32.4 → 0.34.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.
- package/dist/enrollment/index.d.ts +4 -0
- package/dist/enrollment/index.d.ts.map +1 -1
- package/dist/enrollment/index.js +2 -0
- package/dist/enrollment/index.js.map +1 -1
- package/dist/enrollment/muse-code.d.ts +9 -0
- package/dist/enrollment/muse-code.d.ts.map +1 -1
- package/dist/enrollment/muse-code.js +22 -1
- package/dist/enrollment/muse-code.js.map +1 -1
- package/dist/enrollment/seat-onboarding-projections.d.ts +44 -0
- package/dist/enrollment/seat-onboarding-projections.d.ts.map +1 -0
- package/dist/enrollment/seat-onboarding-projections.js +113 -0
- package/dist/enrollment/seat-onboarding-projections.js.map +1 -0
- package/dist/enrollment/seat-onboarding.d.ts +161 -0
- package/dist/enrollment/seat-onboarding.d.ts.map +1 -0
- package/dist/enrollment/seat-onboarding.js +698 -0
- package/dist/enrollment/seat-onboarding.js.map +1 -0
- package/dist/node/index.d.ts +8 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +4 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/seat-onboarding-capture.d.ts +47 -0
- package/dist/node/seat-onboarding-capture.d.ts.map +1 -0
- package/dist/node/seat-onboarding-capture.js +164 -0
- package/dist/node/seat-onboarding-capture.js.map +1 -0
- package/dist/node/seat-onboarding-cell-compose.d.ts +25 -0
- package/dist/node/seat-onboarding-cell-compose.d.ts.map +1 -0
- package/dist/node/seat-onboarding-cell-compose.js +117 -0
- package/dist/node/seat-onboarding-cell-compose.js.map +1 -0
- package/dist/node/seat-onboarding-erase.d.ts +8 -0
- package/dist/node/seat-onboarding-erase.d.ts.map +1 -0
- package/dist/node/seat-onboarding-erase.js +31 -0
- package/dist/node/seat-onboarding-erase.js.map +1 -0
- package/dist/node/seat-onboarding-materialize.d.ts +6 -0
- package/dist/node/seat-onboarding-materialize.d.ts.map +1 -0
- package/dist/node/seat-onboarding-materialize.js +11 -0
- package/dist/node/seat-onboarding-materialize.js.map +1 -0
- package/dist/node/seat-onboarding-record.d.ts +11 -0
- package/dist/node/seat-onboarding-record.d.ts.map +1 -0
- package/dist/node/seat-onboarding-record.js +86 -0
- package/dist/node/seat-onboarding-record.js.map +1 -0
- package/dist/node/seat-onboarding-stage1.d.ts +11 -0
- package/dist/node/seat-onboarding-stage1.d.ts.map +1 -0
- package/dist/node/seat-onboarding-stage1.js +121 -0
- package/dist/node/seat-onboarding-stage1.js.map +1 -0
- package/dist/node/seat-onboarding-stage2.d.ts +10 -0
- package/dist/node/seat-onboarding-stage2.d.ts.map +1 -0
- package/dist/node/seat-onboarding-stage2.js +110 -0
- package/dist/node/seat-onboarding-stage2.js.map +1 -0
- package/dist/node/seat-onboarding-types.d.ts +106 -0
- package/dist/node/seat-onboarding-types.d.ts.map +1 -0
- package/dist/node/seat-onboarding-types.js +6 -0
- package/dist/node/seat-onboarding-types.js.map +1 -0
- package/dist/node/seat-stage-write.d.ts +25 -0
- package/dist/node/seat-stage-write.d.ts.map +1 -0
- package/dist/node/seat-stage-write.js +93 -0
- package/dist/node/seat-stage-write.js.map +1 -0
- package/dist/service/custodian-refresh.d.ts +52 -0
- package/dist/service/custodian-refresh.d.ts.map +1 -0
- package/dist/service/custodian-refresh.js +51 -0
- package/dist/service/custodian-refresh.js.map +1 -0
- package/dist/service/facade.d.ts +28 -0
- package/dist/service/facade.d.ts.map +1 -1
- package/dist/service/facade.js +18 -1
- package/dist/service/facade.js.map +1 -1
- package/dist/service/local-account-transport-service.d.ts +127 -2
- package/dist/service/local-account-transport-service.d.ts.map +1 -1
- package/dist/service/local-account-transport-service.js +540 -10
- package/dist/service/local-account-transport-service.js.map +1 -1
- package/dist/service/reauth-alert.d.ts +29 -0
- package/dist/service/reauth-alert.d.ts.map +1 -0
- package/dist/service/reauth-alert.js +2 -0
- package/dist/service/reauth-alert.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive custodian refresh policy (Lot 1).
|
|
3
|
+
*
|
|
4
|
+
* The custodian used to refresh only reactively, when an access token was
|
|
5
|
+
* already expired at acquire time. This module decides when a mesh-managed
|
|
6
|
+
* account must be renewed *before* expiry: inside a skew window computed
|
|
7
|
+
* from the credential TTL (25 % of TTL remaining by default, at least
|
|
8
|
+
* 10 minutes). A refresh failure flips the account to `reauth_required`
|
|
9
|
+
* early, so the route diagnostics carry the reauth signal without waiting
|
|
10
|
+
* for a business call to fail.
|
|
11
|
+
*
|
|
12
|
+
* Pure functions only: the service owns clocks, providers and persistence.
|
|
13
|
+
*/
|
|
14
|
+
export interface CustodianRefreshPolicy {
|
|
15
|
+
/** Fraction of TTL remaining that opens the refresh window (0.25). */
|
|
16
|
+
skewRatio: number;
|
|
17
|
+
/** Floor for the refresh window in ms (600_000 = 10 min). */
|
|
18
|
+
minSkewMs: number;
|
|
19
|
+
}
|
|
20
|
+
export declare const DEFAULT_CUSTODIAN_REFRESH_POLICY: CustodianRefreshPolicy;
|
|
21
|
+
/** Clamp a host-supplied policy to safe bounds; invalid fields fall back. */
|
|
22
|
+
export declare function sanitizeCustodianRefreshPolicy(policy?: CustodianRefreshPolicy): CustodianRefreshPolicy;
|
|
23
|
+
export interface RefreshWindowInput {
|
|
24
|
+
expiresAtMs: number;
|
|
25
|
+
/** Credential issuance instant; NaN/undefined falls back to the floor window. */
|
|
26
|
+
issuedAtMs?: number;
|
|
27
|
+
nowMs: number;
|
|
28
|
+
}
|
|
29
|
+
/** Width of the proactive refresh window for a credential TTL. */
|
|
30
|
+
export declare function refreshSkewMs(ttlMs: number, policy?: CustodianRefreshPolicy): number;
|
|
31
|
+
/** True when the credential must be renewed now, before it expires. */
|
|
32
|
+
export declare function shouldRefreshProactively(input: RefreshWindowInput, policy?: CustodianRefreshPolicy): boolean;
|
|
33
|
+
export type CustodianAccountAction = 'refreshed' | 'refresh-failed-reauth' | 'refresh-deferred-retry' | 'refresh-in-flight' | 'expired-no-grant' | 'skipped-healthy' | 'skipped-external' | 'skipped-no-grant' | 'skipped-no-expiry' | 'already-reauth';
|
|
34
|
+
export interface CustodianAccountReport {
|
|
35
|
+
/** Diagnostic hash of the account id; never the raw id, never a secret. */
|
|
36
|
+
accountRef: string;
|
|
37
|
+
transportProviderId: string;
|
|
38
|
+
ownerScopeRef: string;
|
|
39
|
+
action: CustodianAccountAction;
|
|
40
|
+
readiness: 'ready' | 'reauth-required';
|
|
41
|
+
expiredAt?: string;
|
|
42
|
+
/** Upcoming expiry (future): the plannable rotation window for grant-less credentials. */
|
|
43
|
+
expiresAt?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CustodianRefreshReport {
|
|
46
|
+
at: string;
|
|
47
|
+
checked: number;
|
|
48
|
+
refreshed: number;
|
|
49
|
+
reauthRequired: number;
|
|
50
|
+
accounts: CustodianAccountReport[];
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=custodian-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custodian-refresh.d.ts","sourceRoot":"","sources":["../../src/service/custodian-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAG9C,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,sBAAsB,GAC9B,sBAAsB,CAYxB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,sBAAyD,GAChE,MAAM,CAGR;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,GAAE,sBAAyD,GAChE,OAAO,CAST;AAED,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive custodian refresh policy (Lot 1).
|
|
3
|
+
*
|
|
4
|
+
* The custodian used to refresh only reactively, when an access token was
|
|
5
|
+
* already expired at acquire time. This module decides when a mesh-managed
|
|
6
|
+
* account must be renewed *before* expiry: inside a skew window computed
|
|
7
|
+
* from the credential TTL (25 % of TTL remaining by default, at least
|
|
8
|
+
* 10 minutes). A refresh failure flips the account to `reauth_required`
|
|
9
|
+
* early, so the route diagnostics carry the reauth signal without waiting
|
|
10
|
+
* for a business call to fail.
|
|
11
|
+
*
|
|
12
|
+
* Pure functions only: the service owns clocks, providers and persistence.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_CUSTODIAN_REFRESH_POLICY = {
|
|
15
|
+
skewRatio: 0.25,
|
|
16
|
+
minSkewMs: 600_000,
|
|
17
|
+
};
|
|
18
|
+
/** Clamp a host-supplied policy to safe bounds; invalid fields fall back. */
|
|
19
|
+
export function sanitizeCustodianRefreshPolicy(policy) {
|
|
20
|
+
const fallback = DEFAULT_CUSTODIAN_REFRESH_POLICY;
|
|
21
|
+
const skewRatio = policy?.skewRatio;
|
|
22
|
+
const minSkewMs = policy?.minSkewMs;
|
|
23
|
+
return {
|
|
24
|
+
skewRatio: Number.isFinite(skewRatio) && skewRatio > 0 && skewRatio <= 1
|
|
25
|
+
? skewRatio
|
|
26
|
+
: fallback.skewRatio,
|
|
27
|
+
minSkewMs: Number.isFinite(minSkewMs) && minSkewMs >= 0
|
|
28
|
+
? minSkewMs
|
|
29
|
+
: fallback.minSkewMs,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Width of the proactive refresh window for a credential TTL. */
|
|
33
|
+
export function refreshSkewMs(ttlMs, policy = DEFAULT_CUSTODIAN_REFRESH_POLICY) {
|
|
34
|
+
if (!Number.isFinite(ttlMs) || ttlMs <= 0)
|
|
35
|
+
return policy.minSkewMs;
|
|
36
|
+
return Math.min(ttlMs, Math.max(policy.minSkewMs, ttlMs * policy.skewRatio));
|
|
37
|
+
}
|
|
38
|
+
/** True when the credential must be renewed now, before it expires. */
|
|
39
|
+
export function shouldRefreshProactively(input, policy = DEFAULT_CUSTODIAN_REFRESH_POLICY) {
|
|
40
|
+
const { expiresAtMs, nowMs } = input;
|
|
41
|
+
if (!Number.isFinite(expiresAtMs))
|
|
42
|
+
return false;
|
|
43
|
+
if (expiresAtMs <= nowMs)
|
|
44
|
+
return true;
|
|
45
|
+
const issuedAtMs = input.issuedAtMs;
|
|
46
|
+
const ttlMs = issuedAtMs !== undefined && Number.isFinite(issuedAtMs)
|
|
47
|
+
? expiresAtMs - issuedAtMs
|
|
48
|
+
: Number.NaN;
|
|
49
|
+
return expiresAtMs - nowMs <= refreshSkewMs(ttlMs, policy);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=custodian-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custodian-refresh.js","sourceRoot":"","sources":["../../src/service/custodian-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,CAAC,MAAM,gCAAgC,GAA2B;IACtE,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,8BAA8B,CAC5C,MAA+B;IAE/B,MAAM,QAAQ,GAAG,gCAAgC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAK,SAAoB,GAAG,CAAC,IAAK,SAAoB,IAAI,CAAC;YAC9F,CAAC,CAAE,SAAoB;YACvB,CAAC,CAAC,QAAQ,CAAC,SAAS;QACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAK,SAAoB,IAAI,CAAC;YACjE,CAAC,CAAE,SAAoB;YACvB,CAAC,CAAC,QAAQ,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC;AASD,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,SAAiC,gCAAgC;IAEjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,wBAAwB,CACtC,KAAyB,EACzB,SAAiC,gCAAgC;IAEjE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,WAAW,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnE,CAAC,CAAC,WAAW,GAAG,UAAU;QAC1B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACf,OAAO,WAAW,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/service/facade.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { AccountTransportAcquireInput, AccountTransportAcquisition } from '../account-transports.js';
|
|
2
2
|
import type { AccountTransportProviderId } from '../auth.js';
|
|
3
3
|
import type { AccountPublic, EnrollmentCompletion, EnrollmentSession, StartEnrollmentInput } from '../enrollment/contracts.js';
|
|
4
|
+
import type { SeatBundleV1 } from '../enrollment/seat-bundle.js';
|
|
5
|
+
import type { SeatOnboardingV1 } from '../enrollment/seat-onboarding.js';
|
|
4
6
|
import type { LlmMesh } from '../mesh.js';
|
|
5
7
|
import { type InMemoryRoutePlannerOptions } from '../route-planner.js';
|
|
6
8
|
import type { RoutePlanner } from '../routing-contracts.js';
|
|
9
|
+
import type { CustodianRefreshPolicy, CustodianRefreshReport } from './custodian-refresh.js';
|
|
10
|
+
import type { ReauthAlertSink } from './reauth-alert.js';
|
|
11
|
+
export type { CustodianAccountAction, CustodianAccountReport, CustodianRefreshPolicy, CustodianRefreshReport, } from './custodian-refresh.js';
|
|
12
|
+
export type { ReauthAlertEvent, ReauthAlertReason, ReauthAlertSink, } from './reauth-alert.js';
|
|
13
|
+
export type { LocalAccountTransportServiceOptions } from './local-account-transport-service.js';
|
|
7
14
|
export interface ProviderRequest {
|
|
8
15
|
modelId: string;
|
|
9
16
|
contents: unknown[];
|
|
@@ -57,12 +64,22 @@ export interface KeyringAdapter {
|
|
|
57
64
|
export interface ConfigResolver {
|
|
58
65
|
resolveConfig(configRef: string): Promise<Record<string, unknown>>;
|
|
59
66
|
}
|
|
67
|
+
export interface CustodianOptions {
|
|
68
|
+
/** Injected clock (ms); defaults to Date.now. Tests pin it. */
|
|
69
|
+
now?: () => number;
|
|
70
|
+
/** Reauth alert sink (D4: conductor h2a + owner re-auth); never receives secrets. */
|
|
71
|
+
reauthAlert?: ReauthAlertSink;
|
|
72
|
+
/** Proactive refresh skew policy; defaults to 25 % TTL / 10 min floor. */
|
|
73
|
+
refreshPolicy?: CustodianRefreshPolicy;
|
|
74
|
+
}
|
|
60
75
|
export interface FacadeOptions {
|
|
61
76
|
configResolver: ConfigResolver;
|
|
62
77
|
keyring?: KeyringAdapter;
|
|
63
78
|
mode: 'cli' | 'portal';
|
|
64
79
|
/** Explicit owner used only to bind pre-ownerScope local keyring records. */
|
|
65
80
|
legacyAccountOwnerScopeRef?: string;
|
|
81
|
+
/** Lot 1 custodian loop options (clock, reauth sink, skew policy). */
|
|
82
|
+
custodian?: CustodianOptions;
|
|
66
83
|
}
|
|
67
84
|
export interface AccountOwnerInput {
|
|
68
85
|
ownerScope: string;
|
|
@@ -74,6 +91,9 @@ export interface RemoveAccountResult {
|
|
|
74
91
|
export interface LlmMeshAccountAdministration {
|
|
75
92
|
listAccounts(input: AccountOwnerInput): Promise<readonly AccountPublic[]>;
|
|
76
93
|
removeAccount(accountId: string, input: AccountOwnerInput): Promise<RemoveAccountResult>;
|
|
94
|
+
runCustodianRefreshCycle(): Promise<CustodianRefreshReport>;
|
|
95
|
+
startCustodianLoop(intervalMs: number, onReport?: (report: CustodianRefreshReport) => void, onError?: (error: unknown) => void): () => void;
|
|
96
|
+
stopCustodianLoop(): void;
|
|
77
97
|
}
|
|
78
98
|
export interface LlmMeshFacade {
|
|
79
99
|
/** Trusted in-process inputs only; keep codes and credential JSON out of agent tools. */
|
|
@@ -88,12 +108,20 @@ export interface LlmMeshFacade {
|
|
|
88
108
|
importSeatBundle(input: {
|
|
89
109
|
bundle: unknown;
|
|
90
110
|
ownerScope: string;
|
|
111
|
+
onboarding?: unknown;
|
|
91
112
|
}): Promise<{
|
|
92
113
|
accountId: string;
|
|
93
114
|
seatRef: string;
|
|
94
115
|
generation: number;
|
|
95
116
|
idempotent: boolean;
|
|
96
117
|
}>;
|
|
118
|
+
exportSeatBundle(input: {
|
|
119
|
+
accountId: string;
|
|
120
|
+
ownerScope: string;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
bundle: SeatBundleV1;
|
|
123
|
+
onboarding: SeatOnboardingV1 | null;
|
|
124
|
+
}>;
|
|
97
125
|
cancel(enrollmentId: string): Promise<void>;
|
|
98
126
|
acquire(input: AccountTransportAcquireInput): Promise<AccountTransportAcquisition>;
|
|
99
127
|
release(acquisition: AccountTransportAcquisition): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAEpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"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"}
|
package/dist/service/facade.js
CHANGED
|
@@ -29,7 +29,12 @@ export function createLlmMeshFacade(options) {
|
|
|
29
29
|
['muse-code', new MuseCodeEnrollmentProvider()],
|
|
30
30
|
['mistral-vibe', new MistralVibeEnrollmentProvider()],
|
|
31
31
|
]);
|
|
32
|
-
const
|
|
32
|
+
const serviceOptions = {
|
|
33
|
+
...(options.custodian?.now ? { now: options.custodian.now } : {}),
|
|
34
|
+
...(options.custodian?.reauthAlert ? { reauthAlert: options.custodian.reauthAlert } : {}),
|
|
35
|
+
...(options.custodian?.refreshPolicy ? { refreshPolicy: options.custodian.refreshPolicy } : {}),
|
|
36
|
+
};
|
|
37
|
+
const service = new LocalAccountTransportService(keyring, providers, options.configResolver, options.legacyAccountOwnerScopeRef, serviceOptions);
|
|
33
38
|
return {
|
|
34
39
|
async completeClaudeEnrollment(enrollmentId, code, ownerScopeRef) {
|
|
35
40
|
return service.completeClaudeEnrollment(enrollmentId, code, ownerScopeRef);
|
|
@@ -58,6 +63,9 @@ export function createLlmMeshFacade(options) {
|
|
|
58
63
|
async importSeatBundle(input) {
|
|
59
64
|
return service.importSeatBundle(input);
|
|
60
65
|
},
|
|
66
|
+
async exportSeatBundle(input) {
|
|
67
|
+
return service.exportSeatBundle(input);
|
|
68
|
+
},
|
|
61
69
|
async cancel(enrollmentId) {
|
|
62
70
|
return service.cancel(enrollmentId);
|
|
63
71
|
},
|
|
@@ -73,6 +81,15 @@ export function createLlmMeshFacade(options) {
|
|
|
73
81
|
async release(acquisition) {
|
|
74
82
|
return service.release(acquisition);
|
|
75
83
|
},
|
|
84
|
+
async runCustodianRefreshCycle() {
|
|
85
|
+
return service.runCustodianRefreshCycle();
|
|
86
|
+
},
|
|
87
|
+
startCustodianLoop(intervalMs, onReport, onError) {
|
|
88
|
+
return service.startCustodianLoop(intervalMs, onReport, onError);
|
|
89
|
+
},
|
|
90
|
+
stopCustodianLoop() {
|
|
91
|
+
service.stopCustodianLoop();
|
|
92
|
+
},
|
|
76
93
|
getAdapter(providerId) {
|
|
77
94
|
if (providerId === 'cloud-code') {
|
|
78
95
|
return new CloudCodeProviderAdapter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/service/facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,47 @@
|
|
|
1
|
-
import { type AccountTransportAccount, type AccountTransportAcquireInput, type AccountTransportAcquisition } from '../account-transports.js';
|
|
1
|
+
import { AccountTransportAcquireError, type AccountTransportAccount, type AccountTransportAcquireInput, type AccountTransportAcquisition } from '../account-transports.js';
|
|
2
2
|
import type { AccountPublic, EnrollmentCompletion, EnrollmentProvider, EnrollmentSession, StartEnrollmentInput } from '../enrollment/contracts.js';
|
|
3
3
|
import type { ConfigResolver, KeyringAdapter } from './facade.js';
|
|
4
4
|
import type { LlmMesh } from '../mesh.js';
|
|
5
|
+
import { type SeatBundleV1 } from '../enrollment/seat-bundle.js';
|
|
6
|
+
import { type SeatOnboardingV1 } from '../enrollment/seat-onboarding.js';
|
|
5
7
|
import type { AccountDirectoryPort } from '../routing-contracts.js';
|
|
8
|
+
import { type CustodianRefreshPolicy, type CustodianRefreshReport } from './custodian-refresh.js';
|
|
9
|
+
import type { ReauthAlertSink } from './reauth-alert.js';
|
|
10
|
+
export interface LocalAccountTransportServiceOptions {
|
|
11
|
+
/** Injected clock (ms); defaults to Date.now. Tests pin it. */
|
|
12
|
+
now?: () => number;
|
|
13
|
+
/** Reauth alert sink (D4); never called with secrets. Defaults to no-op. */
|
|
14
|
+
reauthAlert?: ReauthAlertSink;
|
|
15
|
+
/** Proactive refresh skew policy; defaults to 25 % TTL / 10 min floor. */
|
|
16
|
+
refreshPolicy?: CustodianRefreshPolicy;
|
|
17
|
+
}
|
|
18
|
+
export type SeatExportUnavailableReason = 'not-a-seat' | 'record-missing' | 'lineage-mismatch' | 'owner-mismatch' | 'record-invalid';
|
|
19
|
+
/**
|
|
20
|
+
* A refresh failure that must NOT flip the account: the grant was provably
|
|
21
|
+
* not consumed (an explicit 429/5xx token-endpoint response, or a typed local
|
|
22
|
+
* preparation failure before any provider request), so a retry is safe.
|
|
23
|
+
* Extends {@link AccountTransportAcquireError} so `acquire()` callers keep
|
|
24
|
+
* their handling unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare class RefreshDeferredError extends AccountTransportAcquireError {
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
29
|
+
/** Typed refusal for exportSeatBundle; the code is `seat-export-unavailable:<reason>`. */
|
|
30
|
+
export declare class SeatExportUnavailableError extends Error {
|
|
31
|
+
readonly code: string;
|
|
32
|
+
constructor(reason: SeatExportUnavailableReason, detail: string);
|
|
33
|
+
}
|
|
34
|
+
/** Versioned seat record persisted beside the envelope/public pair (design §6 item 1). */
|
|
35
|
+
export interface StoredSeatRecord {
|
|
36
|
+
version: 1;
|
|
37
|
+
bundle: SeatBundleV1;
|
|
38
|
+
onboarding: SeatOnboardingV1 | null;
|
|
39
|
+
storedAt: string;
|
|
40
|
+
}
|
|
41
|
+
export interface SeatExport {
|
|
42
|
+
bundle: SeatBundleV1;
|
|
43
|
+
onboarding: SeatOnboardingV1 | null;
|
|
44
|
+
}
|
|
6
45
|
export declare class LocalAccountTransportService {
|
|
7
46
|
private readonly keyring;
|
|
8
47
|
private readonly providers;
|
|
@@ -18,11 +57,26 @@ export declare class LocalAccountTransportService {
|
|
|
18
57
|
private readonly claimedOwnerScopes;
|
|
19
58
|
/** enrollmentId → providerId, so poll completion reaches the owning provider. */
|
|
20
59
|
private readonly enrollmentProviders;
|
|
60
|
+
/**
|
|
61
|
+
* Last credential issuance per account (enrollment, restore, or refresh).
|
|
62
|
+
* The proactive window is derived from this issuance age, never from the
|
|
63
|
+
* enrollment age: a refreshed credential restarts its own TTL.
|
|
64
|
+
*/
|
|
65
|
+
private readonly credentialIssuedAtMs;
|
|
21
66
|
private readonly pendingClaudeAccounts;
|
|
22
67
|
private claudePersistenceTail;
|
|
23
68
|
private readonly claudeSessions;
|
|
24
69
|
private routeAttemptSequence;
|
|
25
|
-
|
|
70
|
+
/** Account ids already alerted for their current reauth_required epoch. */
|
|
71
|
+
private readonly alertedReauth;
|
|
72
|
+
/** Account ids already warned about an upcoming no-grant expiry (once per enrollment). */
|
|
73
|
+
private readonly warnedExpiringNoGrant;
|
|
74
|
+
private custodianTimer;
|
|
75
|
+
private custodianTickInFlight;
|
|
76
|
+
private custodianLoopGeneration;
|
|
77
|
+
private readonly serviceOptions;
|
|
78
|
+
constructor(keyring: KeyringAdapter, providers: Map<string, EnrollmentProvider>, configResolver: ConfigResolver, legacyAccountOwnerScopeRef?: string | undefined, options?: LocalAccountTransportServiceOptions);
|
|
79
|
+
private nowMs;
|
|
26
80
|
enroll(providerId: string, input: StartEnrollmentInput): Promise<EnrollmentSession>;
|
|
27
81
|
completeClaudeEnrollment(enrollmentId: string, code: string, ownerScopeRef: string): Promise<EnrollmentCompletion>;
|
|
28
82
|
completeClaudeCredentialImport(credentialJson: string, ownerScopeRef: string): Promise<EnrollmentCompletion>;
|
|
@@ -43,12 +97,32 @@ export declare class LocalAccountTransportService {
|
|
|
43
97
|
importSeatBundle(input: {
|
|
44
98
|
bundle: unknown;
|
|
45
99
|
ownerScope: string;
|
|
100
|
+
onboarding?: unknown;
|
|
46
101
|
}): Promise<{
|
|
47
102
|
accountId: string;
|
|
48
103
|
seatRef: string;
|
|
49
104
|
generation: number;
|
|
50
105
|
idempotent: boolean;
|
|
51
106
|
}>;
|
|
107
|
+
/**
|
|
108
|
+
* L5 facade export beside importSeatBundle. Trusted in-process use only.
|
|
109
|
+
* Refuses with a typed `seat-export-unavailable:<reason>` unless the
|
|
110
|
+
* account carries the external seat marker and a seat record whose
|
|
111
|
+
* lineage equals the current marker tuple. On success the stored bundle
|
|
112
|
+
* and block are re-validated (consumer authority, refresh-material scan,
|
|
113
|
+
* block binding) and returned verbatim from the record — no synthesized
|
|
114
|
+
* field, no refresh material, no native files, ever.
|
|
115
|
+
*/
|
|
116
|
+
exportSeatBundle(input: {
|
|
117
|
+
accountId: string;
|
|
118
|
+
ownerScope: string;
|
|
119
|
+
}): Promise<SeatExport>;
|
|
120
|
+
/** §3.4 binding of an onboarding block against its bundle; null when bound. */
|
|
121
|
+
private onboardingBindingError;
|
|
122
|
+
private seatRecordKey;
|
|
123
|
+
private writeSeatRecord;
|
|
124
|
+
private readSeatRecord;
|
|
125
|
+
private backfillSeatRecordIfMissing;
|
|
52
126
|
private hasClaudeGrant;
|
|
53
127
|
private persistClaudeCompletion;
|
|
54
128
|
cancel(enrollmentId: string): Promise<void>;
|
|
@@ -96,5 +170,56 @@ export declare class LocalAccountTransportService {
|
|
|
96
170
|
private readPublicRecord;
|
|
97
171
|
private restorePersistedAccounts;
|
|
98
172
|
private markReauthRequired;
|
|
173
|
+
/** Secret-free custody event for an account (diagnostic ref only). */
|
|
174
|
+
private buildCustodyAlertEvent;
|
|
175
|
+
/**
|
|
176
|
+
* Emit the D4 reauth alert once per reauth_required epoch. The event is
|
|
177
|
+
* secret-free (diagnostic account ref only); a throwing sink never breaks
|
|
178
|
+
* the custodian. A fresh `active` status clears the epoch.
|
|
179
|
+
*/
|
|
180
|
+
private emitReauthAlert;
|
|
181
|
+
/**
|
|
182
|
+
* Warn once per enrollment that a grant-less credential is about to
|
|
183
|
+
* expire. Re-enrollment is the only rotation path, so the warning opens
|
|
184
|
+
* the plannable window the expiry flip alone cannot give. It uses its own
|
|
185
|
+
* epoch: the later `expired-no-grant` flip must still alert.
|
|
186
|
+
*/
|
|
187
|
+
private emitExpiringNoGrantWarning;
|
|
188
|
+
/**
|
|
189
|
+
* Proactive custodian cycle (Lot 1): refresh every mesh-managed account
|
|
190
|
+
* inside its skew window before expiry, flip `reauth_required` early on
|
|
191
|
+
* definitive refresh failure and alert (D4). Only provably unconsumed
|
|
192
|
+
* failures defer without flipping: explicit 429/5xx token-endpoint
|
|
193
|
+
* responses and typed local preparation failures. Timeouts, resets,
|
|
194
|
+
* mint/persistence failures after a possible rotation, and unknown shapes
|
|
195
|
+
* flip fail-closed: the grant may already be consumed.
|
|
196
|
+
*
|
|
197
|
+
* Externally custodied seats never refresh here and are skipped; an
|
|
198
|
+
* unknown or elapsed expiry reads reauth-required (it awaits the next
|
|
199
|
+
* import) without flipping a status the custodian never owns. A
|
|
200
|
+
* CLI-imported Muse credential carries no refresh grant yet IS renewable
|
|
201
|
+
* (the mesh re-reads the CLI store), so it follows the grant path. Static
|
|
202
|
+
* keys with no refresh grant (Vibe long-lived keys, Muse direct keys)
|
|
203
|
+
* are skipped: their rotation path is re-enrollment, not refresh. They
|
|
204
|
+
* warn once inside the refresh window (`expiring-no-grant`, with the
|
|
205
|
+
* upcoming expiry in the report) and flip on expiry.
|
|
206
|
+
*/
|
|
207
|
+
runCustodianRefreshCycle(): Promise<CustodianRefreshReport>;
|
|
208
|
+
/**
|
|
209
|
+
* Start the custodian loop: an immediate cycle, then one every `intervalMs`
|
|
210
|
+
* with a small random stagger (two replicas started together must not fire
|
|
211
|
+
* in lockstep on single-use refresh grants). Ticks never overlap; the timer
|
|
212
|
+
* is unref'd so it cannot hold the process open.
|
|
213
|
+
*
|
|
214
|
+
* The host MUST run exactly one loop per owner scope: this library holds no
|
|
215
|
+
* distributed lock, so two live loops would race on rotating grants
|
|
216
|
+
* (multi-replica custody belongs to the Lot 2 host). Cycle and
|
|
217
|
+
* report-listener failures surface through `onError`; without it a dead
|
|
218
|
+
* keyring would tick silently.
|
|
219
|
+
*
|
|
220
|
+
* Returns a stop function; `stopCustodianLoop()` stops it as well.
|
|
221
|
+
*/
|
|
222
|
+
startCustodianLoop(intervalMs: number, onReport?: (report: CustodianRefreshReport) => void, onError?: (error: unknown) => void): () => void;
|
|
223
|
+
stopCustodianLoop(): void;
|
|
99
224
|
}
|
|
100
225
|
//# sourceMappingURL=local-account-transport-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-account-transport-service.d.ts","sourceRoot":"","sources":["../../src/service/local-account-transport-service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"local-account-transport-service.d.ts","sourceRoot":"","sources":["../../src/service/local-account-transport-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAE5B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,aAAa,EAGb,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAGjB,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAS1C,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAuC,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9F,MAAM,WAAW,mCAAmC;IAClD,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC;AAyBD,MAAM,MAAM,2BAA2B,GACnC,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,4BAA4B;;CAIrE;AA0BD,0FAA0F;AAC1F,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM;CAKhE;AAED,0FAA0F;AAC1F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAwCD,qBAAa,4BAA4B;IA+BrC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAjC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAuC;IAC9E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkD;IAClF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6B;IACjE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,qBAAqB,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8C;IAC7E,OAAO,CAAC,oBAAoB,CAAK;IACjC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;gBAGlD,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC1C,cAAc,EAAE,cAAc,EAC9B,0BAA0B,CAAC,oBAAQ,EACpD,OAAO,CAAC,EAAE,mCAAmC;IAM/C,OAAO,CAAC,KAAK;IAKP,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBnF,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAC/D,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyBjD,8BAA8B,CAAC,cAAc,EAAE,MAAM,EACzD,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAcjD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiEpE,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6DtE,kBAAkB,CACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC;IAyD1B,wBAAwB,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC;IA8D1B,wBAAwB,CAC5B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,WAAW,SAAK,GACf,OAAO,CAAC,oBAAoB,CAAC;IAoEhC;;;;;;;;OAQG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IA+H5F;;;;;;;;OAQG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwEvB,+EAA+E;IAC/E,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,aAAa;YAIP,eAAe;YAcf,cAAc;YAoBd,2BAA2B;YAS3B,cAAc;YAoBd,uBAAuB;IAuD/B,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC;IA0BnE,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAuChD,eAAe,CACb,OAAO,EAAE,uBAAuB,EAChC,aAAa,SAAW,EACxB,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI;IAsBD,OAAO,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IA2ElF,OAAO,CAAC,WAAW,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG,oBAAoB;YAsB3E,oBAAoB;IAoDlC,OAAO,CAAC,mBAAmB;IAM3B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;YAOR,iBAAiB;IAgC/B,OAAO,CAAC,YAAY;IAgDpB,OAAO,CAAC,oBAAoB;YAOd,kBAAkB;YAIlB,YAAY;YAiGZ,iBAAiB;YA6CjB,iBAAiB;YAajB,mBAAmB;IA8BjC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;YAIP,cAAc;YAiBd,iBAAiB;YAgBjB,uBAAuB;YAgBvB,oBAAoB;YAkBpB,gBAAgB;YAMhB,qBAAqB;YAOrB,6BAA6B;YAK7B,2BAA2B;IAqBzC,OAAO,CAAC,oBAAoB;YAMd,yBAAyB;YAazB,gBAAgB;YAmBhB,wBAAwB;YAkFxB,kBAAkB;IAkBhC,sEAAsE;IACtE,OAAO,CAAC,sBAAsB;IAuB9B;;;;OAIG;YACW,eAAe;IAiB7B;;;;;OAKG;YACW,0BAA0B;IAexC;;;;;;;;;;;;;;;;;;OAkBG;IACG,wBAAwB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAkIjE;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,EACnD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,MAAM,IAAI;IA4Cb,iBAAiB,IAAI,IAAI;CAO1B"}
|