instar 1.3.727 → 1.3.729
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +93 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +11 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +11 -0
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/IntelligenceRouter.d.ts +57 -0
- package/dist/core/IntelligenceRouter.d.ts.map +1 -1
- package/dist/core/IntelligenceRouter.js +135 -20
- package/dist/core/IntelligenceRouter.js.map +1 -1
- package/dist/core/LocalSessionOwnershipStore.d.ts +5 -0
- package/dist/core/LocalSessionOwnershipStore.d.ts.map +1 -1
- package/dist/core/LocalSessionOwnershipStore.js +13 -0
- package/dist/core/LocalSessionOwnershipStore.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +17 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionBuildContextStore.d.ts +20 -0
- package/dist/core/SessionBuildContextStore.d.ts.map +1 -1
- package/dist/core/SessionBuildContextStore.js +20 -3
- package/dist/core/SessionBuildContextStore.js.map +1 -1
- package/dist/core/SessionManager.d.ts +5 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +3 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/SessionOwnershipRegistry.d.ts +16 -0
- package/dist/core/SessionOwnershipRegistry.d.ts.map +1 -1
- package/dist/core/SessionOwnershipRegistry.js +13 -0
- package/dist/core/SessionOwnershipRegistry.js.map +1 -1
- package/dist/core/StateManager.d.ts +20 -0
- package/dist/core/StateManager.d.ts.map +1 -1
- package/dist/core/StateManager.js +72 -4
- package/dist/core/StateManager.js.map +1 -1
- package/dist/core/WriteAdmission.d.ts +277 -0
- package/dist/core/WriteAdmission.d.ts.map +1 -0
- package/dist/core/WriteAdmission.js +514 -0
- package/dist/core/WriteAdmission.js.map +1 -0
- package/dist/core/WriteDomainRegistry.d.ts +132 -0
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -0
- package/dist/core/WriteDomainRegistry.js +186 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +65 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +18 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +3 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +6 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +79 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +2 -1
- package/upgrades/{1.3.727.md → 1.3.728.md} +73 -1
- package/upgrades/1.3.729.md +92 -0
- package/upgrades/side-effects/per-target-swap-timeout.md +120 -0
- package/upgrades/side-effects/standby-write-reconciliation.md +62 -0
|
@@ -30,6 +30,11 @@ import { type OwnershipAction, type OwnershipReason, type SessionOwnershipRecord
|
|
|
30
30
|
*/
|
|
31
31
|
export declare class InMemorySessionOwnershipStore {
|
|
32
32
|
private recs;
|
|
33
|
+
/** Interface-level commit hook (standby-write-reconciliation §3.2, round-2
|
|
34
|
+
* S4): fired at THIS substrate's own mutation point (`casWrite` — it has no
|
|
35
|
+
* `persist()` funnel), so a WriteAdmission ownership index warmed against
|
|
36
|
+
* this store is never warm-once-then-permanently-stale. */
|
|
37
|
+
onCommit?: (record: import('./SessionOwnership.js').SessionOwnershipRecord) => void;
|
|
33
38
|
read(sessionKey: string): SessionOwnershipRecord | null;
|
|
34
39
|
casWrite(candidate: import('./SessionOwnership.js').SessionOwnershipRecord): {
|
|
35
40
|
ok: boolean;
|
|
@@ -57,6 +62,17 @@ export interface SessionOwnershipStore {
|
|
|
57
62
|
* implement it.
|
|
58
63
|
*/
|
|
59
64
|
all?(): SessionOwnershipRecord[];
|
|
65
|
+
/**
|
|
66
|
+
* Interface-level commit hook (standby-write-reconciliation §3.2, round-2
|
|
67
|
+
* S4): assignable listener each substrate fires at its OWN mutation point —
|
|
68
|
+
* `LocalSessionOwnershipStore` inside `persist()` (after `cache.set`),
|
|
69
|
+
* `InMemorySessionOwnershipStore` inside `casWrite()` at its `recs.set`.
|
|
70
|
+
* BOTH mutation paths (`registry.cas()` and `OwnershipApplier`) funnel
|
|
71
|
+
* through the store's commit point, so a consumer (the WriteAdmission
|
|
72
|
+
* ownership index) can never miss a transition the local store saw.
|
|
73
|
+
* A listener throw must never fail the CAS (substrates guard the call).
|
|
74
|
+
*/
|
|
75
|
+
onCommit?: (record: SessionOwnershipRecord) => void;
|
|
60
76
|
}
|
|
61
77
|
export interface SessionOwnershipRegistryDeps {
|
|
62
78
|
store: SessionOwnershipStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionOwnershipRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SessionOwnershipRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,IAAI,CAA6E;IACzF,IAAI,CAAC,UAAU,EAAE,MAAM;IAGvB,QAAQ,CAAC,SAAS,EAAE,OAAO,uBAAuB,EAAE,sBAAsB;;;;
|
|
1
|
+
{"version":3,"file":"SessionOwnershipRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SessionOwnershipRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,11 @@ import { applyOwnershipAction, ownershipNonceKey, } from './SessionOwnership.js'
|
|
|
30
30
|
*/
|
|
31
31
|
export class InMemorySessionOwnershipStore {
|
|
32
32
|
recs = new Map();
|
|
33
|
+
/** Interface-level commit hook (standby-write-reconciliation §3.2, round-2
|
|
34
|
+
* S4): fired at THIS substrate's own mutation point (`casWrite` — it has no
|
|
35
|
+
* `persist()` funnel), so a WriteAdmission ownership index warmed against
|
|
36
|
+
* this store is never warm-once-then-permanently-stale. */
|
|
37
|
+
onCommit;
|
|
33
38
|
read(sessionKey) {
|
|
34
39
|
return this.recs.get(sessionKey) ?? null;
|
|
35
40
|
}
|
|
@@ -44,6 +49,14 @@ export class InMemorySessionOwnershipStore {
|
|
|
44
49
|
// and proposes an epoch ≤ the landed one).
|
|
45
50
|
if (candidate.ownershipEpoch > curEpoch) {
|
|
46
51
|
this.recs.set(candidate.sessionKey, candidate);
|
|
52
|
+
try {
|
|
53
|
+
this.onCommit?.(candidate);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
/* @silent-fallback-ok — the commit hook is an observability consumer
|
|
57
|
+
(WriteAdmission ownership index); a listener throw must never fail the
|
|
58
|
+
ownership CAS itself. The index's own ingest never throws by design. */
|
|
59
|
+
}
|
|
47
60
|
return { ok: true, observed: candidate };
|
|
48
61
|
}
|
|
49
62
|
return { ok: false, observed: current };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionOwnershipRegistry.js","sourceRoot":"","sources":["../../src/core/SessionOwnershipRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAIlB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,OAAO,6BAA6B;IAChC,IAAI,GAAG,IAAI,GAAG,EAAkE,CAAC;IACzF,IAAI,CAAC,UAAkB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IACD,QAAQ,CAAC,SAAiE;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QAC5D,MAAM,QAAQ,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,CAAC;QAC9C,4EAA4E;QAC5E,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,2CAA2C;QAC3C,IAAI,SAAS,CAAC,cAAc,GAAG,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IACD,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"SessionOwnershipRegistry.js","sourceRoot":"","sources":["../../src/core/SessionOwnershipRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* and not require running a DB server.
|
|
7
7
|
*/
|
|
8
8
|
import type { Session, JobState, ActivityEvent } from './types.js';
|
|
9
|
+
import { type WriteAdmission } from './WriteAdmission.js';
|
|
9
10
|
export declare class StateManager {
|
|
10
11
|
private stateDir;
|
|
11
12
|
private _readOnly;
|
|
@@ -19,6 +20,9 @@ export declare class StateManager {
|
|
|
19
20
|
* write so spawns/terminations remain instantly visible. */
|
|
20
21
|
private _sessionsCache;
|
|
21
22
|
private _sessionsCacheAt;
|
|
23
|
+
/** Standby-write reconciliation (§3.3): when attached, guardWrite delegates
|
|
24
|
+
* to the ownership-scoped admission layer. One-way — never detached. */
|
|
25
|
+
private _writeAdmission;
|
|
22
26
|
constructor(stateDir: string, opts?: {
|
|
23
27
|
now?: () => number;
|
|
24
28
|
});
|
|
@@ -52,6 +56,22 @@ export declare class StateManager {
|
|
|
52
56
|
* Default false → a pure one-awake standby remains fully read-only (unchanged).
|
|
53
57
|
*/
|
|
54
58
|
setSessionPoolActive(active: boolean): void;
|
|
59
|
+
/** Whether the active-active session pool is live on this machine (read by
|
|
60
|
+
* the WriteAdmission decision table's pool-inactive clause, §3.2). */
|
|
61
|
+
get sessionPoolActive(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* ONE-WAY attach of the standby-write-reconciliation admission layer
|
|
64
|
+
* (docs/specs/standby-write-reconciliation.md §3.2 pre-construction window):
|
|
65
|
+
* StateManager exists and takes writes long before the pool block that
|
|
66
|
+
* constructs WriteAdmission runs; during that window guardWrite runs the
|
|
67
|
+
* LEGACY blanket verdict — exactly today's behavior. Attachment happens
|
|
68
|
+
* BEFORE routes are wired and is never detached at runtime, so no HTTP
|
|
69
|
+
* mutating route can ever observe a half-attached state. A second attach is
|
|
70
|
+
* a wiring bug and fails loudly.
|
|
71
|
+
*/
|
|
72
|
+
attachWriteAdmission(admission: WriteAdmission): void;
|
|
73
|
+
/** The attached admission layer (wiring-integrity tests; null pre-attach). */
|
|
74
|
+
get writeAdmission(): WriteAdmission | null;
|
|
55
75
|
/**
|
|
56
76
|
* Guard that throws in read-only mode. `sessionScoped` marks a write that targets a
|
|
57
77
|
* single owned session's own file (state/sessions/<id>.json) — permitted on a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateManager.d.ts","sourceRoot":"","sources":["../../src/core/StateManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"StateManager.d.ts","sourceRoot":"","sources":["../../src/core/StateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import fs from 'node:fs';
|
|
|
9
9
|
import path from 'node:path';
|
|
10
10
|
import { DegradationReporter } from '../monitoring/DegradationReporter.js';
|
|
11
11
|
import { SafeFsExecutor } from './SafeFsExecutor.js';
|
|
12
|
+
import { WriteRefusedError } from './WriteAdmission.js';
|
|
12
13
|
/**
|
|
13
14
|
* Discriminate filesystem read errors into operator-actionable categories.
|
|
14
15
|
*
|
|
@@ -58,6 +59,9 @@ export class StateManager {
|
|
|
58
59
|
* write so spawns/terminations remain instantly visible. */
|
|
59
60
|
_sessionsCache = null;
|
|
60
61
|
_sessionsCacheAt = 0;
|
|
62
|
+
/** Standby-write reconciliation (§3.3): when attached, guardWrite delegates
|
|
63
|
+
* to the ownership-scoped admission layer. One-way — never detached. */
|
|
64
|
+
_writeAdmission = null;
|
|
61
65
|
constructor(stateDir, opts) {
|
|
62
66
|
this.stateDir = stateDir;
|
|
63
67
|
this._now = opts?.now ?? (() => Date.now());
|
|
@@ -106,6 +110,31 @@ export class StateManager {
|
|
|
106
110
|
setSessionPoolActive(active) {
|
|
107
111
|
this._sessionPoolActive = active;
|
|
108
112
|
}
|
|
113
|
+
/** Whether the active-active session pool is live on this machine (read by
|
|
114
|
+
* the WriteAdmission decision table's pool-inactive clause, §3.2). */
|
|
115
|
+
get sessionPoolActive() {
|
|
116
|
+
return this._sessionPoolActive;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* ONE-WAY attach of the standby-write-reconciliation admission layer
|
|
120
|
+
* (docs/specs/standby-write-reconciliation.md §3.2 pre-construction window):
|
|
121
|
+
* StateManager exists and takes writes long before the pool block that
|
|
122
|
+
* constructs WriteAdmission runs; during that window guardWrite runs the
|
|
123
|
+
* LEGACY blanket verdict — exactly today's behavior. Attachment happens
|
|
124
|
+
* BEFORE routes are wired and is never detached at runtime, so no HTTP
|
|
125
|
+
* mutating route can ever observe a half-attached state. A second attach is
|
|
126
|
+
* a wiring bug and fails loudly.
|
|
127
|
+
*/
|
|
128
|
+
attachWriteAdmission(admission) {
|
|
129
|
+
if (this._writeAdmission) {
|
|
130
|
+
throw new Error('attachWriteAdmission: WriteAdmission is already attached (one-way attach — never re-attach at runtime)');
|
|
131
|
+
}
|
|
132
|
+
this._writeAdmission = admission;
|
|
133
|
+
}
|
|
134
|
+
/** The attached admission layer (wiring-integrity tests; null pre-attach). */
|
|
135
|
+
get writeAdmission() {
|
|
136
|
+
return this._writeAdmission;
|
|
137
|
+
}
|
|
109
138
|
/**
|
|
110
139
|
* Guard that throws in read-only mode. `sessionScoped` marks a write that targets a
|
|
111
140
|
* single owned session's own file (state/sessions/<id>.json) — permitted on a
|
|
@@ -115,6 +144,41 @@ export class StateManager {
|
|
|
115
144
|
* no opts and stay blocked.
|
|
116
145
|
*/
|
|
117
146
|
guardWrite(operation, opts) {
|
|
147
|
+
// Standby-write reconciliation (§3.3): when the admission layer is
|
|
148
|
+
// attached, it resolves the op's write DOMAIN (registry, exact-key for kv)
|
|
149
|
+
// and runs the §3.2 decision table. Authority ladder: in dry-run it
|
|
150
|
+
// returns 'legacy' (evaluate + log only) and the blanket verdict below
|
|
151
|
+
// keeps enforcing; at live it admits/refuses. An admission-layer throw
|
|
152
|
+
// falls back to the LEGACY verdict (§5 store-seam fail direction).
|
|
153
|
+
const wa = this._writeAdmission;
|
|
154
|
+
if (wa) {
|
|
155
|
+
try {
|
|
156
|
+
const v = wa.guardStoreWrite(operation, {
|
|
157
|
+
key: opts?.key,
|
|
158
|
+
scope: opts?.scope,
|
|
159
|
+
legacySessionScoped: opts?.sessionScoped,
|
|
160
|
+
});
|
|
161
|
+
if (v.enforce === 'admit')
|
|
162
|
+
return;
|
|
163
|
+
if (v.enforce === 'refuse')
|
|
164
|
+
throw new WriteRefusedError(v.refusal, operation);
|
|
165
|
+
// 'legacy' → fall through to the blanket verdict below.
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (err instanceof WriteRefusedError)
|
|
169
|
+
throw err;
|
|
170
|
+
// Fail toward TODAY (§5): the legacy blanket guard verdict below —
|
|
171
|
+
// exactly the current behavior — and the broken guard is recorded
|
|
172
|
+
// (never log-only-invisible, §6).
|
|
173
|
+
try {
|
|
174
|
+
wa.noteStoreSeamError(operation, err);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
/* @silent-fallback-ok — recording a broken-guard occurrence is observability;
|
|
178
|
+
it must never mask the legacy verdict this seam is falling back to. */
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
118
182
|
if (!this._readOnly)
|
|
119
183
|
return;
|
|
120
184
|
if (opts?.sessionScoped && this._sessionPoolActive)
|
|
@@ -179,7 +243,9 @@ export class StateManager {
|
|
|
179
243
|
}
|
|
180
244
|
}
|
|
181
245
|
saveSession(session) {
|
|
182
|
-
|
|
246
|
+
// Scope resolution is the CALLER's job with data already in hand (§3.1
|
|
247
|
+
// keying note): the tmux session name keys the in-memory topic binding.
|
|
248
|
+
this.guardWrite('saveSession', { sessionScoped: true, scope: { sessionId: session.tmuxSession || session.id } });
|
|
183
249
|
this.validateKey(session.id, 'sessionId');
|
|
184
250
|
// One-running-record-per-tmux invariant (ghost-record fix): registering a
|
|
185
251
|
// record as live for a tmux name supersedes any OTHER record still marked
|
|
@@ -342,7 +408,9 @@ export class StateManager {
|
|
|
342
408
|
return sessions;
|
|
343
409
|
}
|
|
344
410
|
removeSession(sessionId) {
|
|
345
|
-
|
|
411
|
+
// Only the record id is in hand here; a binding miss on it resolves to the
|
|
412
|
+
// UNBOUND arm (admit — today-equivalent to the sessionScoped carve-out).
|
|
413
|
+
this.guardWrite('removeSession', { sessionScoped: true, scope: { sessionId } });
|
|
346
414
|
this.validateKey(sessionId, 'sessionId');
|
|
347
415
|
const filePath = path.join(this.stateDir, 'state', 'sessions', `${sessionId}.json`);
|
|
348
416
|
if (!fs.existsSync(filePath))
|
|
@@ -461,7 +529,7 @@ export class StateManager {
|
|
|
461
529
|
}
|
|
462
530
|
}
|
|
463
531
|
set(key, value) {
|
|
464
|
-
this.guardWrite('set');
|
|
532
|
+
this.guardWrite('set', { key });
|
|
465
533
|
this.validateKey(key, 'state key');
|
|
466
534
|
const filePath = path.join(this.stateDir, 'state', `${key}.json`);
|
|
467
535
|
const dir = path.dirname(filePath);
|
|
@@ -469,7 +537,7 @@ export class StateManager {
|
|
|
469
537
|
this.atomicWrite(filePath, JSON.stringify(value, null, 2));
|
|
470
538
|
}
|
|
471
539
|
delete(key) {
|
|
472
|
-
this.guardWrite('delete');
|
|
540
|
+
this.guardWrite('delete', { key });
|
|
473
541
|
this.validateKey(key, 'state key');
|
|
474
542
|
const filePath = path.join(this.stateDir, 'state', `${key}.json`);
|
|
475
543
|
if (!fs.existsSync(filePath))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../src/core/StateManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../src/core/StateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WriteAdmission — ONE synchronous, in-memory decision point that classifies
|
|
3
|
+
* every write into a domain (machine-local / session-scoped / topic-scoped /
|
|
4
|
+
* cluster-shared) and admits or TYPED-refuses it, replacing the blanket
|
|
5
|
+
* lease-boolean standby guard with ownership-scoped write admission.
|
|
6
|
+
*
|
|
7
|
+
* Spec: docs/specs/standby-write-reconciliation.md (§3.2 decision table,
|
|
8
|
+
* §3.4 typed-refusal contract, §5 fail directions, §6 observability).
|
|
9
|
+
*
|
|
10
|
+
* Hard properties (invariant I2): the admission path is synchronous and
|
|
11
|
+
* in-memory ONLY — no fs, no network, no LLM, no await. It reads (a) the
|
|
12
|
+
* lease view the coordinator already maintains in memory (via injected
|
|
13
|
+
* `isReadOnly`), (b) the ownership index (boot-warmed + onCommit-updated,
|
|
14
|
+
* never `registry.read()`), (c) the domain registry. Refusal log rows are
|
|
15
|
+
* BUFFERED in memory and flushed off the admission path (a timer), so even
|
|
16
|
+
* observability never puts fs on the decision path.
|
|
17
|
+
*
|
|
18
|
+
* Authority ladder (§7): the layer only gains refusal authority at
|
|
19
|
+
* `dryRun:false` AND after the wave-2 write-surface inventory is complete
|
|
20
|
+
* (WRITE_SURFACE_INVENTORY_COMPLETE — the §9.14 ladder gate). Until then it
|
|
21
|
+
* evaluates + logs would-verdicts while the LEGACY blanket guard keeps
|
|
22
|
+
* enforcing (§9.6).
|
|
23
|
+
*/
|
|
24
|
+
import type { SessionOwnershipRecord, SessionOwnershipStatus } from './SessionOwnership.js';
|
|
25
|
+
import { type KvEntry, type OpEntry, type RouteEntry, type WriteDomain, type WriteDomainRegistry } from './WriteDomainRegistry.js';
|
|
26
|
+
export type WriteRefusalCode = 'not-owner' | 'lease-required' | 'ownership-unresolved' | 'read-only-standby' | 'admission-error';
|
|
27
|
+
/** §3.4 — a refusal is TYPED: distinguishable from success, a crash, and garbage. */
|
|
28
|
+
export interface TypedWriteRefusal {
|
|
29
|
+
error: 'write-refused';
|
|
30
|
+
code: WriteRefusalCode;
|
|
31
|
+
domain: WriteDomain;
|
|
32
|
+
scope?: WriteScope;
|
|
33
|
+
thisMachine: {
|
|
34
|
+
machineId: string | null;
|
|
35
|
+
nickname: string | null;
|
|
36
|
+
};
|
|
37
|
+
owner: {
|
|
38
|
+
machineId: string;
|
|
39
|
+
nickname: string | null;
|
|
40
|
+
} | null;
|
|
41
|
+
leaseHolder: string | null;
|
|
42
|
+
asOf: string;
|
|
43
|
+
retryable: boolean;
|
|
44
|
+
/** Advisory prose for a HUMAN reader — never an instruction, never a
|
|
45
|
+
* runnable command (§3.4: moving a topic is consent-gated). */
|
|
46
|
+
hint: string;
|
|
47
|
+
}
|
|
48
|
+
export interface WriteScope {
|
|
49
|
+
topicId?: number | string;
|
|
50
|
+
sessionId?: string;
|
|
51
|
+
}
|
|
52
|
+
export type AdmitVerdict = {
|
|
53
|
+
admit: true;
|
|
54
|
+
} | {
|
|
55
|
+
admit: false;
|
|
56
|
+
refusal: TypedWriteRefusal;
|
|
57
|
+
};
|
|
58
|
+
/** Legacy message preserved for log-scraping continuity (§7 migration parity). */
|
|
59
|
+
export declare function legacyReadOnlyMessage(operation: string): string;
|
|
60
|
+
/** Thrown at the store seam for a refused write. Callers that today
|
|
61
|
+
* catch-and-log the string keep working — the legacy message is preserved. */
|
|
62
|
+
export declare class WriteRefusedError extends Error {
|
|
63
|
+
readonly refusal: TypedWriteRefusal;
|
|
64
|
+
constructor(refusal: TypedWriteRefusal, operation: string);
|
|
65
|
+
}
|
|
66
|
+
type IndexLookup = {
|
|
67
|
+
state: 'unwarmed';
|
|
68
|
+
} | {
|
|
69
|
+
state: 'none';
|
|
70
|
+
} | {
|
|
71
|
+
state: 'malformed';
|
|
72
|
+
} | {
|
|
73
|
+
state: 'record';
|
|
74
|
+
owner: string;
|
|
75
|
+
status: SessionOwnershipStatus;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* The ownership index (§3.2, decided — was OQ1): owned by WriteAdmission,
|
|
79
|
+
* warmed by ONE synchronous `store.all()` scan at construction, updated via
|
|
80
|
+
* the `onCommit` hook at each substrate's own commit point. `admitWrite`
|
|
81
|
+
* NEVER calls `registry.read()` — negative answers come from memory.
|
|
82
|
+
*/
|
|
83
|
+
export declare class OwnershipIndex {
|
|
84
|
+
private readonly entries;
|
|
85
|
+
private warmed;
|
|
86
|
+
private _lastCasTransitionAt;
|
|
87
|
+
/** Ingest validation (round-2 L1): `ownerMachineId` must be a string and
|
|
88
|
+
* `status` a known FSM status — REGARDLESS of which store path surfaced the
|
|
89
|
+
* record (the warm-scan `all()` validates weaker than `loadOne`). A record
|
|
90
|
+
* failing ingest classifies malformed ⇒ fail-closed `ownership-unresolved`
|
|
91
|
+
* for that scope — never `not-owner` with `owner: null`. */
|
|
92
|
+
ingest(record: unknown, opts?: {
|
|
93
|
+
fromCommit?: boolean;
|
|
94
|
+
}): void;
|
|
95
|
+
/** Boot warm — ONE synchronous scan result, off the request path. */
|
|
96
|
+
warmFrom(records: unknown[]): void;
|
|
97
|
+
lookup(sessionKey: string): IndexLookup;
|
|
98
|
+
get isWarmed(): boolean;
|
|
99
|
+
stats(): {
|
|
100
|
+
entries: number;
|
|
101
|
+
lastCasTransitionAt: string | null;
|
|
102
|
+
};
|
|
103
|
+
/** Test-parity helper: the full keyed view (never on the admission path). */
|
|
104
|
+
snapshot(): Map<string, {
|
|
105
|
+
owner: string;
|
|
106
|
+
status: SessionOwnershipStatus;
|
|
107
|
+
} | 'malformed'>;
|
|
108
|
+
}
|
|
109
|
+
export interface WriteAdmissionDeps {
|
|
110
|
+
/** Coordinator/mesh identity machine id (null on identity-less installs). */
|
|
111
|
+
thisMachineId: string | null;
|
|
112
|
+
/** The lease view the coordinator maintains in memory (StateManager._readOnly). */
|
|
113
|
+
isReadOnly: () => boolean;
|
|
114
|
+
/** Whether the active-active session pool is live (§3.2 pool-inactive clause). */
|
|
115
|
+
isPoolActive: () => boolean;
|
|
116
|
+
/** Domain registry (§3.5) — the SAME map the server wires and tests read. */
|
|
117
|
+
registry: WriteDomainRegistry;
|
|
118
|
+
/** dryRun (§7): true ⇒ the layer logs would-verdicts, legacy guard enforces. */
|
|
119
|
+
dryRun: boolean;
|
|
120
|
+
/** In-memory session→topic binding (TelegramAdapter.getTopicForSession —
|
|
121
|
+
* the in-memory map ONLY; the disk fallback is forbidden on the admission
|
|
122
|
+
* path, I2). Sync + in-memory by contract. */
|
|
123
|
+
resolveTopicForSession?: (sessionId: string) => number | string | null;
|
|
124
|
+
/** Local lease-holder knowledge for refusal bodies (I7 — in-memory only). */
|
|
125
|
+
leaseHolder?: () => string | null;
|
|
126
|
+
/** Nickname decoration for refusal bodies (in-memory only). */
|
|
127
|
+
nicknameOf?: (machineId: string) => string | null;
|
|
128
|
+
selfNickname?: () => string | null;
|
|
129
|
+
/** One deduped aggregate attention item per (route/op, code) window (§6). */
|
|
130
|
+
raiseAttention?: (item: {
|
|
131
|
+
id: string;
|
|
132
|
+
title: string;
|
|
133
|
+
body: string;
|
|
134
|
+
}) => void;
|
|
135
|
+
/** ≥N refusals of one (surface, code) within the window ⇒ ONE aggregate item. */
|
|
136
|
+
refusalAggregateThreshold?: number;
|
|
137
|
+
/** Where logs/write-admission.jsonl lives (dir). Omit ⇒ no file logging. */
|
|
138
|
+
logDir?: string;
|
|
139
|
+
now?: () => number;
|
|
140
|
+
/** Test seam: event-loop histogram + flush timer control. */
|
|
141
|
+
disableTimers?: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* TEST SEAM ONLY — overrides the wave-2 inventory latch
|
|
144
|
+
* (WRITE_SURFACE_INVENTORY_COMPLETE, §9.14) so the LIVE refusal machinery is
|
|
145
|
+
* provable by tests before wave 2 flips the real constant. Production wiring
|
|
146
|
+
* NEVER passes this: the compiled constant governs, so `dryRun:false` in
|
|
147
|
+
* config cannot grant refusal authority until the reviewed inventory lands.
|
|
148
|
+
*/
|
|
149
|
+
inventoryComplete?: boolean;
|
|
150
|
+
}
|
|
151
|
+
interface DomainCounters {
|
|
152
|
+
admitted: number;
|
|
153
|
+
refused: number;
|
|
154
|
+
wouldRefuse: number;
|
|
155
|
+
wouldAdmitChanged: number;
|
|
156
|
+
}
|
|
157
|
+
/** The ownership store surface WriteAdmission consumes (§3.2): the one-time
|
|
158
|
+
* boot-warm scan + the interface-level onCommit hook (round-2 S4). */
|
|
159
|
+
export interface AdmissionOwnershipStore {
|
|
160
|
+
all?(): SessionOwnershipRecord[];
|
|
161
|
+
onCommit?: (record: SessionOwnershipRecord) => void;
|
|
162
|
+
}
|
|
163
|
+
export declare class WriteAdmission {
|
|
164
|
+
private readonly d;
|
|
165
|
+
readonly index: OwnershipIndex;
|
|
166
|
+
private readonly counters;
|
|
167
|
+
private readonly recentRefusals;
|
|
168
|
+
private readonly aggregate;
|
|
169
|
+
private readonly logBuffer;
|
|
170
|
+
private logStore;
|
|
171
|
+
private flushTimer;
|
|
172
|
+
private histogram;
|
|
173
|
+
private gaugeTimer;
|
|
174
|
+
private starvedWindows;
|
|
175
|
+
private lastGauge;
|
|
176
|
+
constructor(deps: WriteAdmissionDeps, ownershipStore?: AdmissionOwnershipStore | null);
|
|
177
|
+
/** The onCommit hook target (§3.2.2) — wire on BOTH shipped substrates. */
|
|
178
|
+
onOwnershipCommit(record: SessionOwnershipRecord): void;
|
|
179
|
+
/** legacy = layer constructed but... never (construction implies enabled);
|
|
180
|
+
* dry-run = evaluating + logging, legacy guard enforcing;
|
|
181
|
+
* live = refusal authority (dryRun:false AND inventory complete — §9.14). */
|
|
182
|
+
mode(): 'dry-run' | 'live';
|
|
183
|
+
get isLive(): boolean;
|
|
184
|
+
get dryRun(): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Pure, synchronous, in-memory verdict (I2). Reads only the injected
|
|
187
|
+
* in-memory lease view, the ownership index, and the registry entry.
|
|
188
|
+
*/
|
|
189
|
+
evaluate(domain: WriteDomain, scope?: WriteScope, entry?: OpEntry | KvEntry | RouteEntry | null): AdmitVerdict;
|
|
190
|
+
private legacyBooleanVerdict;
|
|
191
|
+
private refusal;
|
|
192
|
+
/**
|
|
193
|
+
* Verdict for StateManager.guardWrite. Returns:
|
|
194
|
+
* - 'admit' — pass (live authority admitted the write)
|
|
195
|
+
* - 'refuse' — throw the carried WriteRefusedError (live authority refused)
|
|
196
|
+
* - 'legacy' — dry-run/ladder-gated: caller runs today's legacy verdict
|
|
197
|
+
* A throw ANYWHERE inside is caught by the caller ⇒ legacy verdict (§5).
|
|
198
|
+
*/
|
|
199
|
+
guardStoreWrite(op: string, opts?: {
|
|
200
|
+
key?: string;
|
|
201
|
+
scope?: WriteScope;
|
|
202
|
+
legacySessionScoped?: boolean;
|
|
203
|
+
}): {
|
|
204
|
+
enforce: 'admit';
|
|
205
|
+
} | {
|
|
206
|
+
enforce: 'refuse';
|
|
207
|
+
refusal: TypedWriteRefusal;
|
|
208
|
+
} | {
|
|
209
|
+
enforce: 'legacy';
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Verdict for a mutating HTTP route. Returns:
|
|
213
|
+
* - 'proceed' — route continues into today's exact flow
|
|
214
|
+
* - 'refuse' — respond 409 + Retry-After with the typed body
|
|
215
|
+
* An unwired route (no registry entry) always proceeds (I8). An admission-
|
|
216
|
+
* layer throw splits by domain (§9.16): machine-local PROCEEDS (fail toward
|
|
217
|
+
* delivery), scoped/cluster-shared REFUSE typed `admission-error` (fail
|
|
218
|
+
* closed). Both directions are logged + join the §6 aggregate.
|
|
219
|
+
*/
|
|
220
|
+
guardRouteWrite(method: string, routePath: string, scope?: WriteScope): {
|
|
221
|
+
action: 'proceed';
|
|
222
|
+
} | {
|
|
223
|
+
action: 'refuse';
|
|
224
|
+
refusal: TypedWriteRefusal;
|
|
225
|
+
status: 409;
|
|
226
|
+
retryAfterSeconds: number;
|
|
227
|
+
};
|
|
228
|
+
private record;
|
|
229
|
+
private recordDryRun;
|
|
230
|
+
private bumpAggregate;
|
|
231
|
+
/** Admission-layer throw at the STORE seam (§5): the caller fell back to the
|
|
232
|
+
* legacy verdict; record it so a broken guard is never log-only-invisible. */
|
|
233
|
+
noteStoreSeamError(op: string, err: unknown): void;
|
|
234
|
+
private log;
|
|
235
|
+
/** Flush buffered rows to logs/write-admission.jsonl — OFF the admission
|
|
236
|
+
* path (I2: even observability never puts fs on the decision path).
|
|
237
|
+
* Routed through JsonlStore (Bounded Accumulation: bounded + rotated). */
|
|
238
|
+
flushLog(): void;
|
|
239
|
+
private sampleGauge;
|
|
240
|
+
eventLoopStats(): {
|
|
241
|
+
p50: number;
|
|
242
|
+
p99: number;
|
|
243
|
+
max: number;
|
|
244
|
+
starvedWindows24h: number;
|
|
245
|
+
};
|
|
246
|
+
/** The GET /write-admission body (§6). */
|
|
247
|
+
status(): {
|
|
248
|
+
enabled: true;
|
|
249
|
+
dryRun: boolean;
|
|
250
|
+
mode: 'dry-run' | 'live';
|
|
251
|
+
inventoryComplete: boolean;
|
|
252
|
+
domains: Array<{
|
|
253
|
+
domain: WriteDomain;
|
|
254
|
+
} & DomainCounters>;
|
|
255
|
+
recentRefusals: Array<Omit<TypedWriteRefusal, 'hint'> & {
|
|
256
|
+
seam: string;
|
|
257
|
+
surface: string;
|
|
258
|
+
}>;
|
|
259
|
+
refusedClassifications: Array<{
|
|
260
|
+
reason: string;
|
|
261
|
+
}>;
|
|
262
|
+
ownershipIndex: {
|
|
263
|
+
entries: number;
|
|
264
|
+
lastCasTransitionAt: string | null;
|
|
265
|
+
};
|
|
266
|
+
eventLoop: {
|
|
267
|
+
p50: number;
|
|
268
|
+
p99: number;
|
|
269
|
+
max: number;
|
|
270
|
+
starvedWindows24h: number;
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
/** Tear down timers/histogram (tests + shutdown). */
|
|
274
|
+
stop(): void;
|
|
275
|
+
}
|
|
276
|
+
export {};
|
|
277
|
+
//# sourceMappingURL=WriteAdmission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WriteAdmission.d.ts","sourceRoot":"","sources":["../../src/core/WriteAdmission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,CAAC;AAEtB,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACnE,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB;oEACgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE1F,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;+EAC+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBACxB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM;CAK1D;AAMD,KAAK,WAAW,GACZ;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GACrB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsF;IAC9G,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,oBAAoB,CAAuB;IAEnD;;;;iEAI6D;IAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAY9D,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAKlC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAQvC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAIhE,6EAA6E;IAC7E,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,GAAG,WAAW,CAAC;CAGzF;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mFAAmF;IACnF,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,kFAAkF;IAClF,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC;IAChB;;mDAE+C;IAC/C,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvE,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,iFAAiF;IACjF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAQD;uEACuE;AACvE,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,IAAI,sBAAsB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAqB;IACvC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkF;IACjH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8E;IACxG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,SAAS,CAAyE;gBAE9E,IAAI,EAAE,kBAAkB,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,IAAI;IA2CrF,2EAA2E;IAC3E,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAIvD;;kFAE8E;IAC9E,IAAI,IAAI,SAAS,GAAG,MAAM;IAK1B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAID;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,GAAG,YAAY;IAqE9G,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,OAAO;IA8Cf;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,GAClG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GACpB;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAA;KAAE,GACjD;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE;IAmBzB;;;;;;;;OAQG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GACjE;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,GACrB;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAoC5F,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,aAAa;IA0BrB;mFAC+E;IAC/E,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAKlD,OAAO,CAAC,GAAG;IAOX;;+EAE2E;IAC3E,QAAQ,IAAI,IAAI;IAYhB,OAAO,CAAC,WAAW;IAiBnB,cAAc,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAItF,0CAA0C;IAC1C,MAAM,IAAI;QACR,OAAO,EAAE,IAAI,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QACzB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,WAAW,CAAA;SAAE,GAAG,cAAc,CAAC,CAAC;QACzD,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3F,sBAAsB,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClD,cAAc,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QACxE,SAAS,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,CAAA;SAAE,CAAC;KACjF;IAcD,qDAAqD;IACrD,IAAI,IAAI,IAAI;CASb"}
|