@oh-my-matrix/autopilot 3.0.2 → 3.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"continuation-engine.js","sourceRoot":"","sources":["../../src/continuation-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continuation-engine.js","sourceRoot":"","sources":["../../src/continuation-engine.ts"],"names":[],"mappings":";;AAoCA,wDAMC;AAED,gDAuDC;AAMD,sDAiCC;AAzID,+DAA4E;AAC5E,6DAA2D;AAO3D;;;;;;;;;GASG;AACH,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC;;;;;;;;GAQG;AACH,MAAM,oCAAoC,GAAG,CAAC,CAAC;AAE/C;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,KAAqB;IAC1D,MAAM,qBAAqB,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpF,IAAI,qBAAqB,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QAC3D,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB,CAChC,KAAqB,EACrB,KAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,IAAA,oCAAc,EAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACrE,oEAAoE;QACpE,kEAAkE;QAClE,8CAA8C;QAC9C,IAAI,KAAK,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,mMAAmM;aACtN,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,8DAA8D;IAC9D,+EAA+E;IAC/E,4EAA4E;IAC5E,6EAA6E;IAC7E,4DAA4D;IAC5D,IAAI,IAAA,yCAAmB,EAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,IAAA,wCAAmB,EAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC5D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,qBAAqB,CAAC,KAAK,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,SAAgB,qBAAqB,CAAC,KAAqB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,UAAU,CAAC;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACzD,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,2DAA2D;IAC3D,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAE5D,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,iBAAiB,CAAC,QAAoC;IAC7D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SAC9D,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAEjC,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,uCAAuC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC,EAAE,CAAC;IAC/G,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,2DAA2D;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACtC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,KAAe;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,4EAA4E;IAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IACxG,IAAI,gBAAgB,IAAI,EAAE,EAAE,CAAC;QAC3B,uFAAuF;QACvF,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC1E,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,gBAAgB,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;AAClE,CAAC"}
@@ -9,6 +9,14 @@
9
9
  *
10
10
  * JSON mode emits one JSON object per line: { ts, level, msg, ...ctx }
11
11
  * Text mode emits plain string args (backward-compatible with existing behavior).
12
+ *
13
+ * DRIFT REFERENCE: this logger is intentionally byte-equivalent in its
14
+ * safety-relevant parts (emitJson try/catch + fallback shape, splitArgs) to
15
+ * packages/dynamic-workflows/src/logger.ts. If you change the try/catch or
16
+ * fallback here, change the sibling too. The two per-package logger tests
17
+ * (tests/p0-structured-logger.test.ts here, dynamic-workflows/tests/logger.test.ts)
18
+ * are the drift guard until a third consumer justifies extracting createLogger()
19
+ * (boundary doc §5.2). The logger must NEVER throw into a hook.
12
20
  */
13
21
  type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
14
22
  /** Log an informational message (gated by AUTOPILOT_LOG_LEVEL >= info) */
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAqE/D,0EAA0E;AAC1E,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI5C;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI7C;AAED,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,IAAI,CAQN"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAqE/D,0EAA0E;AAC1E,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI5C;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI7C;AAED,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,IAAI,CAQN"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import type { AutopilotState } from './types';
2
+ import type { WorkspaceRecord, RetryEntry, WorkflowConfig } from './types';
3
+ export declare function getCheckpointWriteFailureCount(): number;
4
+ export declare function _resetCheckpointFailureCountForTest(): void;
5
+ export declare function _disableCheckpointingForTest(): void;
6
+ export declare function _enableCheckpointingForTest(): void;
7
+ export declare function _isCheckpointingDisabledForTest(): boolean;
8
+ /**
9
+ * The slim persisted shape. Intentionally a SUBSET of AutopilotState — we do NOT
10
+ * persist permissionAudit (it has its own JSONL via audit-persister), nor status
11
+ * (re-derived on load). Large/ephemeral fields (canaryFired, noUsageWarned) are
12
+ * session-scoped and never persisted.
13
+ */
14
+ export interface AutopilotCheckpoint {
15
+ runId: string;
16
+ sessionKey: string;
17
+ orchestrationState?: AutopilotState['orchestrationState'];
18
+ blockedReason?: AutopilotState['blockedReason'];
19
+ goal?: string;
20
+ goalSnapshot?: string;
21
+ progress?: string;
22
+ progressSnapshot?: string;
23
+ turnAttempts: number;
24
+ totalContinuations: number;
25
+ maxAttemptsPerTurn: number;
26
+ maxTotalContinuations: number;
27
+ needsCrossTurnResume: boolean;
28
+ enabled: boolean;
29
+ totalTokensUsed: number;
30
+ tokenBudget?: number;
31
+ inputTokensUsed?: number;
32
+ outputTokensUsed?: number;
33
+ evidenceStatus?: AutopilotState['evidence'] extends infer E ? (E extends {
34
+ status: infer S;
35
+ } ? S : undefined) : undefined;
36
+ startedAt?: number;
37
+ lastActivityAt?: number;
38
+ /** Forensic only — loaders overwrite with deriveStatus(). Never trusted. */
39
+ status?: AutopilotState['status'];
40
+ workspaceRoot?: string;
41
+ workspacePath?: string;
42
+ /** Full workspace record (Reviewer #1 Finding 2a fix): restored runs MUST retain
43
+ * their permission-containment boundary + checkpoint-root. Persisting flat fields
44
+ * alone left state.workspace undefined after restore, widening the tool-call
45
+ * containment to process.cwd() — a security regression. */
46
+ workspace?: WorkspaceRecord;
47
+ /** Retry entry (Reviewer #1 Finding 2b fix): without this, restored retry_queued
48
+ * runs lose state.retry → the stall interval's retry_due guard
49
+ * (state.retry?.nextRetryAt != null) is never satisfied → the run wedges forever. */
50
+ retry?: RetryEntry;
51
+ /** Workflow config (Reviewer #1 Finding 2c fix): restored runs otherwise skip
52
+ * validation commands, reset stallTimeoutMs, and lose modelRouting. */
53
+ workflow?: WorkflowConfig;
54
+ /** Enhancement C (ADR-019): per-run trust decision; without this a crashed
55
+ * trusted-verifiable run silently degrades the early-completion threshold
56
+ * (3 -> 2) on recovery. Must be in the allowlist, not auto-serialized. */
57
+ trustWorkspace?: boolean;
58
+ /** Millisecond epoch of the checkpoint write. */
59
+ savedAt: number;
60
+ }
61
+ /**
62
+ * Build a slim checkpoint from a full AutopilotState. Extracts only the fields
63
+ * needed to resume a run; drops the bulky/ephemeral ones.
64
+ */
65
+ export declare function buildCheckpoint(state: AutopilotState, runId: string, workspaceRoot: string): AutopilotCheckpoint;
66
+ /**
67
+ * Persist a checkpoint + update the sessionKey→runId index. Fail-silent.
68
+ * Serialized per-runId so concurrent setState firings don't interleave writes.
69
+ *
70
+ * Returns a Promise (rather than sync) because the lock chain is async; callers
71
+ * that don't need to await (the common case from setState) fire-and-forget via
72
+ * void. The internal _writeSyncLocked does the actual sync I/O under the lock.
73
+ */
74
+ export declare function saveCheckpoint(state: AutopilotState, runId: string, workspaceRoot: string): void;
75
+ /**
76
+ * Load a checkpoint and rebuild an AutopilotState. ADR-016 BLOCKER #1 fix:
77
+ * `status` is NEVER trusted from the persisted field — always re-derived.
78
+ *
79
+ * Returns null if the checkpoint is missing, corrupt, or fails workspace
80
+ * validation (Review #4 #4: stale-run guard).
81
+ */
82
+ export declare function loadCheckpoint(runId: string, workspaceRoot: string, options?: {
83
+ validateWorkspace?: boolean;
84
+ }): AutopilotState | null;
85
+ /**
86
+ * Delete a checkpoint file (Review #4 #6: called on terminal transitions to
87
+ * prevent done-run file leaks). Fail-silent.
88
+ */
89
+ export declare function deleteCheckpoint(runId: string, workspaceRoot: string): void;
90
+ /**
91
+ * Remove a sessionKey→runId entry from the index. Used when a run terminates
92
+ * so a future session_start for the same sessionKey doesn't resurrect a dead run.
93
+ */
94
+ export declare function clearSessionIndexEntry(workspaceRoot: string, sessionKey: string): void;
95
+ /**
96
+ * Look up runId by sessionKey from the durable index. Returns null if the
97
+ * index is missing, corrupt, or has no entry. This is BLOCKER #2's recovery
98
+ * path: after a process restart, the in-memory sessionKeyToRunId Map is empty,
99
+ * so session_start must consult this file to find the checkpoint.
100
+ */
101
+ export declare function lookupRunIdBySessionKey(workspaceRoot: string, sessionKey: string): string | null;
102
+ /**
103
+ * Scan the checkpoints directory and return all runIds whose checkpoint is
104
+ * resumable (orchestrationState in the active family) and whose workspace still
105
+ * exists. Used by register() at process init to restore ALL resumable runs,
106
+ * not just the one whose session_start fired (Review #3 multi-run gap).
107
+ *
108
+ * Also sweeps terminal checkpoints older than TERMINAL_CHECKPOINT_TTL_MS to
109
+ * reclaim disk (Review #4 #6c).
110
+ */
111
+ export declare function listResumableCheckpoints(workspaceRoot: string): string[];
112
+ /** Test-only: clear the write-lock map between tests. */
113
+ export declare function _clearWriteLocksForTest(): void;
114
+ /**
115
+ * Test-only: deterministically await all in-flight checkpoint writes. Reviewer
116
+ * #2 Finding 5 fix — replaces the fragile "two setImmediate ticks" drain with
117
+ * `Promise.all` over the lock map so tests don't flake if the lock chain grows
118
+ * another async hop.
119
+ */
120
+ export declare function _flushAllWritesForTest(): Promise<void>;
121
+ //# sourceMappingURL=state-persister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-persister.d.ts","sourceRoot":"","sources":["../../src/state-persister.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getCheckpointWriteFailureCount = getCheckpointWriteFailureCount;
37
+ exports._resetCheckpointFailureCountForTest = _resetCheckpointFailureCountForTest;
38
+ exports._disableCheckpointingForTest = _disableCheckpointingForTest;
39
+ exports._enableCheckpointingForTest = _enableCheckpointingForTest;
40
+ exports._isCheckpointingDisabledForTest = _isCheckpointingDisabledForTest;
41
+ exports.buildCheckpoint = buildCheckpoint;
42
+ exports.saveCheckpoint = saveCheckpoint;
43
+ exports.loadCheckpoint = loadCheckpoint;
44
+ exports.deleteCheckpoint = deleteCheckpoint;
45
+ exports.clearSessionIndexEntry = clearSessionIndexEntry;
46
+ exports.lookupRunIdBySessionKey = lookupRunIdBySessionKey;
47
+ exports.listResumableCheckpoints = listResumableCheckpoints;
48
+ exports._clearWriteLocksForTest = _clearWriteLocksForTest;
49
+ exports._flushAllWritesForTest = _flushAllWritesForTest;
50
+ /**
51
+ * Crash-recovery checkpoint persistence for autopilot run state.
52
+ *
53
+ * Writes a SLIM pointer of AutopilotState to
54
+ * {workspaceRoot}/.autopilot/checkpoints/{runId}.json
55
+ * plus a sessionKey→runId index at
56
+ * {workspaceRoot}/.autopilot/checkpoints/session-index.json
57
+ *
58
+ * Design (mirrors @oh-my-matrix/permission-policy/src/audit-persister.ts):
59
+ * - synchronous file I/O (plugin runs in main process; simplicity > async)
60
+ * - fail-silent (never throws; persistence is best-effort recovery, not authoritative)
61
+ * - no external dependencies
62
+ *
63
+ * ADR-016 invariant (status sole-writer): `status` is NEVER trusted from disk.
64
+ * On load, status is re-derived via deriveStatus(). We persist a `status` field
65
+ * only as a forensic hint; loaders MUST overwrite it with the derived value.
66
+ * This prevents the H1 false-completion class from recurring via stale checkpoints.
67
+ *
68
+ * Review #4 BLOCKERs addressed here:
69
+ * #1 (status re-derive) — loadCheckpoint re-derives via deriveStatus
70
+ * #2 (runId recovery) — session-index.json maps sessionKey→runId durably
71
+ * #3 (write concurrency) — per-runId Promise lock serializes writes
72
+ * #5 (atomic same-dir write) — tmp written next to target, not os.tmpdir()
73
+ * #6 (done-run leak) — deleteCheckpoint called on terminal transitions
74
+ */
75
+ const fs = __importStar(require("fs"));
76
+ const path = __importStar(require("path"));
77
+ const orchestrator_1 = require("./orchestrator");
78
+ const CHECKPOINT_SUBDIR = path.join('.autopilot', 'checkpoints');
79
+ const SESSION_INDEX_FILE = 'session-index.json';
80
+ const TERMINAL_CHECKPOINT_TTL_MS = 24 * 60 * 60 * 1000; // sweep terminal checkpoints older than 24h
81
+ let _writeFailureCount = 0;
82
+ function getCheckpointWriteFailureCount() { return _writeFailureCount; }
83
+ function _resetCheckpointFailureCountForTest() { _writeFailureCount = 0; }
84
+ /**
85
+ * Test-only kill switch. When true, saveCheckpoint/deleteCheckpoint/listResumableCheckpoints
86
+ * become no-ops so the existing 50+ test suite (which runs in the repo root and would
87
+ * otherwise leak checkpoint files across tests, polluting stateByRun via the
88
+ * register()-time restore) stays isolated. Production never sets this. Flipped to
89
+ * true by index.ts _resetForTest(); flipped back false by _enableCheckpointingForTest()
90
+ * in tests that exercise persistence (state-persister.test.ts).
91
+ */
92
+ let _checkpointingDisabledForTest = false;
93
+ function _disableCheckpointingForTest() { _checkpointingDisabledForTest = true; }
94
+ function _enableCheckpointingForTest() { _checkpointingDisabledForTest = false; }
95
+ function _isCheckpointingDisabledForTest() { return _checkpointingDisabledForTest; }
96
+ /**
97
+ * Resolve the checkpoint directory for a workspace root, following symlinks
98
+ * (S12: same canonical-path discipline as audit-persister).
99
+ */
100
+ function getCheckpointDir(workspaceRoot) {
101
+ let resolved = workspaceRoot;
102
+ try {
103
+ resolved = fs.realpathSync(workspaceRoot);
104
+ }
105
+ catch {
106
+ // Path may not exist yet (mkdirSync creates it downstream).
107
+ }
108
+ return path.join(resolved, CHECKPOINT_SUBDIR);
109
+ }
110
+ function getCheckpointPath(workspaceRoot, runId) {
111
+ return path.join(getCheckpointDir(workspaceRoot), `${runId}.json`);
112
+ }
113
+ function getSessionIndexPath(workspaceRoot) {
114
+ return path.join(getCheckpointDir(workspaceRoot), SESSION_INDEX_FILE);
115
+ }
116
+ /**
117
+ * Build a slim checkpoint from a full AutopilotState. Extracts only the fields
118
+ * needed to resume a run; drops the bulky/ephemeral ones.
119
+ */
120
+ function buildCheckpoint(state, runId, workspaceRoot) {
121
+ return {
122
+ runId,
123
+ sessionKey: state.sessionKey,
124
+ orchestrationState: state.orchestrationState,
125
+ blockedReason: state.blockedReason,
126
+ goal: state.goal,
127
+ goalSnapshot: state.goalSnapshot,
128
+ progress: state.progress,
129
+ progressSnapshot: state.progressSnapshot,
130
+ turnAttempts: state.turnAttempts,
131
+ totalContinuations: state.totalContinuations,
132
+ maxAttemptsPerTurn: state.maxAttemptsPerTurn,
133
+ maxTotalContinuations: state.maxTotalContinuations,
134
+ needsCrossTurnResume: state.needsCrossTurnResume,
135
+ enabled: state.enabled,
136
+ totalTokensUsed: state.totalTokensUsed,
137
+ tokenBudget: state.tokenBudget,
138
+ inputTokensUsed: state.inputTokensUsed,
139
+ outputTokensUsed: state.outputTokensUsed,
140
+ evidenceStatus: state.evidence?.status,
141
+ startedAt: state.startedAt,
142
+ lastActivityAt: state.lastActivityAt,
143
+ // Forensic hint only — loadCheckpoint overwrites this with deriveStatus().
144
+ status: state.status,
145
+ workspaceRoot,
146
+ workspacePath: state.workspace?.path,
147
+ workspace: state.workspace,
148
+ retry: state.retry,
149
+ workflow: state.workflow,
150
+ trustWorkspace: state.trustWorkspace,
151
+ savedAt: Date.now(),
152
+ };
153
+ }
154
+ // ─── Per-runId write lock (Review #4 #3a) ──────────────────────────────
155
+ // Serializes concurrent saveCheckpoint calls for the same runId across the
156
+ // 60s stall timer context and async hook handler contexts. A bare Map<runId,
157
+ // Promise> chain — each write awaits the previous one before starting.
158
+ const writeLocks = new Map();
159
+ /**
160
+ * Atomic write: tmp file in the SAME directory as the target (NOT os.tmpdir(),
161
+ * which can be on a different volume on Windows → EXDEV). renameSync is atomic
162
+ * on POSIX same-filesystem; Node ≥10 overwrites the target.
163
+ */
164
+ function atomicWriteFileSync(targetPath, data) {
165
+ const dir = path.dirname(targetPath);
166
+ fs.mkdirSync(dir, { recursive: true });
167
+ // PID + random suffix guards against same-dir tmp collisions under concurrency.
168
+ const tmpPath = `${targetPath}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`;
169
+ fs.writeFileSync(tmpPath, data, 'utf-8');
170
+ fs.renameSync(tmpPath, targetPath);
171
+ }
172
+ /**
173
+ * Persist a checkpoint + update the sessionKey→runId index. Fail-silent.
174
+ * Serialized per-runId so concurrent setState firings don't interleave writes.
175
+ *
176
+ * Returns a Promise (rather than sync) because the lock chain is async; callers
177
+ * that don't need to await (the common case from setState) fire-and-forget via
178
+ * void. The internal _writeSyncLocked does the actual sync I/O under the lock.
179
+ */
180
+ function saveCheckpoint(state, runId, workspaceRoot) {
181
+ if (_checkpointingDisabledForTest)
182
+ return; // test isolation: don't touch disk
183
+ const checkpoint = buildCheckpoint(state, runId, workspaceRoot);
184
+ const targetPath = getCheckpointPath(workspaceRoot, runId);
185
+ // Chain onto any in-flight write for this runId.
186
+ const prev = writeLocks.get(runId) ?? Promise.resolve();
187
+ const next = prev.then(() => {
188
+ try {
189
+ atomicWriteFileSync(targetPath, JSON.stringify(checkpoint));
190
+ updateSessionIndex(workspaceRoot, checkpoint.sessionKey, runId);
191
+ }
192
+ catch (e) {
193
+ _writeFailureCount++;
194
+ try {
195
+ console.error('[autopilot] checkpoint save failed:', e);
196
+ }
197
+ catch { /* noop */ }
198
+ }
199
+ }).catch(() => {
200
+ // Lock chain errors are already logged inside _writeSyncLocked; swallow to
201
+ // keep the chain alive for the next write.
202
+ });
203
+ writeLocks.set(runId, next);
204
+ // Auto-clean the lock entry once settled so the Map doesn't grow unbounded.
205
+ void next.then(() => {
206
+ if (writeLocks.get(runId) === next)
207
+ writeLocks.delete(runId);
208
+ });
209
+ }
210
+ /** Update the sessionKey→runId index atomically. Fail-silent. */
211
+ function updateSessionIndex(workspaceRoot, sessionKey, runId) {
212
+ const indexPath = getSessionIndexPath(workspaceRoot);
213
+ let index = {};
214
+ try {
215
+ if (fs.existsSync(indexPath)) {
216
+ index = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
217
+ }
218
+ }
219
+ catch {
220
+ // Corrupt index — start fresh rather than crash.
221
+ index = {};
222
+ }
223
+ if (index[sessionKey] === runId)
224
+ return; // no-op if unchanged
225
+ index[sessionKey] = runId;
226
+ try {
227
+ atomicWriteFileSync(indexPath, JSON.stringify(index));
228
+ }
229
+ catch (e) {
230
+ _writeFailureCount++;
231
+ try {
232
+ console.error('[autopilot] session-index update failed:', e);
233
+ }
234
+ catch { /* noop */ }
235
+ }
236
+ }
237
+ /**
238
+ * Load a checkpoint and rebuild an AutopilotState. ADR-016 BLOCKER #1 fix:
239
+ * `status` is NEVER trusted from the persisted field — always re-derived.
240
+ *
241
+ * Returns null if the checkpoint is missing, corrupt, or fails workspace
242
+ * validation (Review #4 #4: stale-run guard).
243
+ */
244
+ function loadCheckpoint(runId, workspaceRoot, options) {
245
+ const cpPath = getCheckpointPath(workspaceRoot, runId);
246
+ let cp;
247
+ try {
248
+ const raw = fs.readFileSync(cpPath, 'utf-8');
249
+ cp = JSON.parse(raw);
250
+ }
251
+ catch {
252
+ return null; // missing or corrupt — nothing to resume
253
+ }
254
+ // Review #4 #4: stale-run guard. If the workspace path recorded at checkpoint
255
+ // time no longer exists (deleted between crash and restart), refuse to resume
256
+ // rather than resurrecting a run against a vanished workspace.
257
+ if (options?.validateWorkspace !== false && cp.workspacePath) {
258
+ try {
259
+ const stat = fs.statSync(cp.workspacePath);
260
+ if (!stat.isDirectory())
261
+ return null;
262
+ }
263
+ catch {
264
+ return null;
265
+ }
266
+ }
267
+ // Rebuild a minimal AutopilotState. Many fields have safe defaults; the
268
+ // load-bearing ones (orchestrationState, blockedReason, goal, counters,
269
+ // workspace, retry, workflow) come from the checkpoint.
270
+ const partial = {
271
+ sessionKey: cp.sessionKey,
272
+ runId: cp.runId,
273
+ orchestrationState: cp.orchestrationState,
274
+ blockedReason: cp.blockedReason,
275
+ goal: cp.goal,
276
+ goalSnapshot: cp.goalSnapshot,
277
+ progress: cp.progress,
278
+ progressSnapshot: cp.progressSnapshot,
279
+ turnAttempts: cp.turnAttempts,
280
+ totalContinuations: cp.totalContinuations,
281
+ maxAttemptsPerTurn: cp.maxAttemptsPerTurn,
282
+ maxTotalContinuations: cp.maxTotalContinuations,
283
+ maxConcurrentAutopilot: 5, // default; per-run override not persisted
284
+ needsCrossTurnResume: cp.needsCrossTurnResume,
285
+ enabled: cp.enabled,
286
+ totalTokensUsed: cp.totalTokensUsed,
287
+ tokenBudget: cp.tokenBudget,
288
+ inputTokensUsed: cp.inputTokensUsed,
289
+ outputTokensUsed: cp.outputTokensUsed,
290
+ startedAt: cp.startedAt,
291
+ lastActivityAt: cp.lastActivityAt,
292
+ degraded: true, // mark resumed runs — operators can tell a restored run
293
+ toolErrorCount: 0,
294
+ toolErrorThreshold: 5,
295
+ // Reviewer #1 Finding 2a/2b/2c fixes: restore the three load-bearing
296
+ // objects the original "slim pointer" design dropped. Without workspace,
297
+ // the permission containment boundary widens to process.cwd(); without
298
+ // retry, retry_queued runs wedge; without workflow, validation is skipped.
299
+ workspace: cp.workspace,
300
+ retry: cp.retry,
301
+ workflow: cp.workflow,
302
+ trustWorkspace: cp.trustWorkspace,
303
+ };
304
+ // BLOCKER #1: re-derive status. Never trust cp.status.
305
+ const derivedStatus = (0, orchestrator_1.deriveStatus)(partial);
306
+ return { ...partial, status: derivedStatus };
307
+ }
308
+ /**
309
+ * Delete a checkpoint file (Review #4 #6: called on terminal transitions to
310
+ * prevent done-run file leaks). Fail-silent.
311
+ */
312
+ function deleteCheckpoint(runId, workspaceRoot) {
313
+ if (_checkpointingDisabledForTest)
314
+ return; // test isolation: don't touch disk
315
+ const cpPath = getCheckpointPath(workspaceRoot, runId);
316
+ try {
317
+ if (fs.existsSync(cpPath))
318
+ fs.unlinkSync(cpPath);
319
+ }
320
+ catch (e) {
321
+ try {
322
+ console.error('[autopilot] checkpoint delete failed:', e);
323
+ }
324
+ catch { /* noop */ }
325
+ }
326
+ // Best-effort index cleanup — leave stale sessionKey→runId entries; they're
327
+ // cheap and the index is rewritten on every save. A full GC pass would risk
328
+ // racing an in-flight save for a different runId.
329
+ }
330
+ /**
331
+ * Remove a sessionKey→runId entry from the index. Used when a run terminates
332
+ * so a future session_start for the same sessionKey doesn't resurrect a dead run.
333
+ */
334
+ function clearSessionIndexEntry(workspaceRoot, sessionKey) {
335
+ const indexPath = getSessionIndexPath(workspaceRoot);
336
+ try {
337
+ if (!fs.existsSync(indexPath))
338
+ return;
339
+ const index = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
340
+ if (!(sessionKey in index))
341
+ return;
342
+ delete index[sessionKey];
343
+ atomicWriteFileSync(indexPath, JSON.stringify(index));
344
+ }
345
+ catch {
346
+ // fail-silent
347
+ }
348
+ }
349
+ /**
350
+ * Look up runId by sessionKey from the durable index. Returns null if the
351
+ * index is missing, corrupt, or has no entry. This is BLOCKER #2's recovery
352
+ * path: after a process restart, the in-memory sessionKeyToRunId Map is empty,
353
+ * so session_start must consult this file to find the checkpoint.
354
+ */
355
+ function lookupRunIdBySessionKey(workspaceRoot, sessionKey) {
356
+ const indexPath = getSessionIndexPath(workspaceRoot);
357
+ try {
358
+ if (!fs.existsSync(indexPath))
359
+ return null;
360
+ const index = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
361
+ return index[sessionKey] ?? null;
362
+ }
363
+ catch {
364
+ return null;
365
+ }
366
+ }
367
+ /**
368
+ * Scan the checkpoints directory and return all runIds whose checkpoint is
369
+ * resumable (orchestrationState in the active family) and whose workspace still
370
+ * exists. Used by register() at process init to restore ALL resumable runs,
371
+ * not just the one whose session_start fired (Review #3 multi-run gap).
372
+ *
373
+ * Also sweeps terminal checkpoints older than TERMINAL_CHECKPOINT_TTL_MS to
374
+ * reclaim disk (Review #4 #6c).
375
+ */
376
+ function listResumableCheckpoints(workspaceRoot) {
377
+ if (_checkpointingDisabledForTest)
378
+ return []; // test isolation: don't read disk
379
+ const dir = getCheckpointDir(workspaceRoot);
380
+ if (!fs.existsSync(dir))
381
+ return [];
382
+ let files;
383
+ try {
384
+ files = fs.readdirSync(dir).filter(f => f.endsWith('.json') && f !== SESSION_INDEX_FILE);
385
+ }
386
+ catch {
387
+ return [];
388
+ }
389
+ const resumable = [];
390
+ const now = Date.now();
391
+ for (const f of files) {
392
+ const runId = f.replace(/\.json$/, '');
393
+ const fullPath = path.join(dir, f);
394
+ try {
395
+ const cp = JSON.parse(fs.readFileSync(fullPath, 'utf-8'));
396
+ const orch = cp.orchestrationState;
397
+ const isResumable = orch === 'running' || orch === 'claimed' || orch === 'retry_queued' || orch === 'released' || orch === 'unclaimed';
398
+ const isTerminal = orch === 'done' || (orch === 'blocked' && cp.blockedReason && !isResumableBlockedReason(cp.blockedReason));
399
+ if (isTerminal) {
400
+ // Review #4 #6c: sweep stale terminal checkpoints.
401
+ if (cp.savedAt && (now - cp.savedAt) > TERMINAL_CHECKPOINT_TTL_MS) {
402
+ try {
403
+ fs.unlinkSync(fullPath);
404
+ }
405
+ catch { /* fail-silent */ }
406
+ }
407
+ continue;
408
+ }
409
+ if (isResumable) {
410
+ // Validate workspace still exists before offering to resume.
411
+ if (cp.workspacePath) {
412
+ try {
413
+ const stat = fs.statSync(cp.workspacePath);
414
+ if (!stat.isDirectory())
415
+ continue;
416
+ }
417
+ catch {
418
+ continue; // workspace gone — skip
419
+ }
420
+ }
421
+ resumable.push(runId);
422
+ }
423
+ }
424
+ catch {
425
+ // corrupt checkpoint — skip
426
+ }
427
+ }
428
+ return resumable;
429
+ }
430
+ // Mirror of RESUMABLE_BLOCKED_REASONS from orchestrator.ts (kept local to avoid
431
+ // a circular import: orchestrator.ts imports nothing from this module, and we
432
+ // don't want to widen its dep surface). If the set in orchestrator.ts changes,
433
+ // update this too. (Documented linkage, not duplication-for-its-own-sake.)
434
+ const RESUMABLE_BLOCKED_LOCAL = new Set([
435
+ 'stalled',
436
+ 'validation_failed',
437
+ 'evidence_missing',
438
+ 'injection_rejected',
439
+ ]);
440
+ function isResumableBlockedReason(reason) {
441
+ return RESUMABLE_BLOCKED_LOCAL.has(reason);
442
+ }
443
+ /** Test-only: clear the write-lock map between tests. */
444
+ function _clearWriteLocksForTest() {
445
+ writeLocks.clear();
446
+ }
447
+ /**
448
+ * Test-only: deterministically await all in-flight checkpoint writes. Reviewer
449
+ * #2 Finding 5 fix — replaces the fragile "two setImmediate ticks" drain with
450
+ * `Promise.all` over the lock map so tests don't flake if the lock chain grows
451
+ * another async hop.
452
+ */
453
+ async function _flushAllWritesForTest() {
454
+ await Promise.all([...writeLocks.values()]);
455
+ }
456
+ //# sourceMappingURL=state-persister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-persister.js","sourceRoot":"","sources":["../../src/state-persister.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,wEAAuF;AACvF,kFAAuF;AAWvF,oEAA8F;AAC9F,kEAA8F;AAC9F,0EAAoG;AAgFpG,0CAiCC;AA8BD,wCAwBC;AA+BD,wCAmEC;AAMD,4CAWC;AAMD,wDAWC;AAQD,0DASC;AAWD,4DA6CC;AAiBD,0DAEC;AAQD,wDAEC;AAncD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,uCAAyB;AACzB,2CAA6B;AAG7B,iDAA8C;AAE9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACjE,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,4CAA4C;AAEpG,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAC3B,SAAgB,8BAA8B,KAAa,OAAO,kBAAkB,CAAC,CAAC,CAAC;AACvF,SAAgB,mCAAmC,KAAW,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;AAEvF;;;;;;;GAOG;AACH,IAAI,6BAA6B,GAAG,KAAK,CAAC;AAC1C,SAAgB,4BAA4B,KAAW,6BAA6B,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9F,SAAgB,2BAA2B,KAAW,6BAA6B,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9F,SAAgB,+BAA+B,KAAc,OAAO,6BAA6B,CAAC,CAAC,CAAC;AAEpG;;;GAGG;AACH,SAAS,gBAAgB,CAAC,aAAqB;IAC7C,IAAI,QAAQ,GAAG,aAAa,CAAC;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAqB,EAAE,KAAa;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAqB;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACxE,CAAC;AAsDD;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAqB,EAAE,KAAa,EAAE,aAAqB;IACzF,OAAO;QACL,KAAK;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,2EAA2E;QAC3E,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa;QACb,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,uEAAuE;AACvE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,UAAkB,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,gFAAgF;IAChF,MAAM,OAAO,GAAG,GAAG,UAAU,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,KAAqB,EAAE,KAAa,EAAE,aAAqB;IACxF,IAAI,6BAA6B;QAAE,OAAO,CAAC,mCAAmC;IAC9E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAE3D,iDAAiD;IACjD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC1B,IAAI,CAAC;YACH,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,kBAAkB,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kBAAkB,EAAE,CAAC;YACrB,IAAI,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACZ,2EAA2E;QAC3E,2CAA2C;IAC7C,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,4EAA4E;IAC5E,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAClB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI;YAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,aAAqB,EAAE,UAAkB,EAAE,KAAa;IAClF,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,KAAK,GAA2B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAA2B,CAAC;QACpF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;QACjD,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK;QAAE,OAAO,CAAC,qBAAqB;IAC9D,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kBAAkB,EAAE,CAAC;QACrB,IAAI,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,KAAa,EACb,aAAqB,EACrB,OAAyC;IAEzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,EAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,yCAAyC;IACxD,CAAC;IAED,8EAA8E;IAC9E,8EAA8E;IAC9E,+DAA+D;IAC/D,IAAI,OAAO,EAAE,iBAAiB,KAAK,KAAK,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,OAAO,GAAG;QACd,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,aAAa,EAAE,EAAE,CAAC,aAAa;QAC/B,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,qBAAqB,EAAE,EAAE,CAAC,qBAAqB;QAC/C,sBAAsB,EAAE,CAAC,EAAE,0CAA0C;QACrE,oBAAoB,EAAE,EAAE,CAAC,oBAAoB;QAC7C,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,cAAc,EAAE,EAAE,CAAC,cAAc;QACjC,QAAQ,EAAE,IAAI,EAAE,wDAAwD;QACxE,cAAc,EAAE,CAAC;QACjB,kBAAkB,EAAE,CAAC;QACrB,qEAAqE;QACrE,yEAAyE;QACzE,uEAAuE;QACvE,2EAA2E;QAC3E,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,cAAc,EAAE,EAAE,CAAC,cAAc;KAChB,CAAC;IAEpB,uDAAuD;IACvD,MAAM,aAAa,GAAG,IAAA,2BAAY,EAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa,EAAE,aAAqB;IACnE,IAAI,6BAA6B;QAAE,OAAO,CAAC,mCAAmC;IAC9E,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,kDAAkD;AACpD,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,aAAqB,EAAE,UAAkB;IAC9E,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAA2B,CAAC;QACxF,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC;YAAE,OAAO;QACnC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,aAAqB,EAAE,UAAkB;IAC/E,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAA2B,CAAC;QACxF,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CAAC,aAAqB;IAC5D,IAAI,6BAA6B;QAAE,OAAO,EAAE,CAAC,CAAC,kCAAkC;IAChF,MAAM,GAAG,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAwB,CAAC;YACjF,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC;YACvI,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,aAAa,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;YAE9H,IAAI,UAAU,EAAE,CAAC;gBACf,mDAAmD;gBACnD,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,0BAA0B,EAAE,CAAC;oBAClE,IAAI,CAAC;wBAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC9D,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,6DAA6D;gBAC7D,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;wBAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;4BAAE,SAAS;oBACpC,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS,CAAC,wBAAwB;oBACpC,CAAC;gBACH,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAC3D,SAAS;IACT,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC,CAAC;AACH,SAAS,wBAAwB,CAAC,MAAc;IAC9C,OAAO,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,yDAAyD;AACzD,SAAgB,uBAAuB;IACrC,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB;IAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC"}