@codetreker/daynight 0.29.0 → 0.32.1
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/README.md +173 -44
- package/config.example.yml +10 -3
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/task-properties.d.ts +1 -0
- package/dist/api/task-properties.js +5 -0
- package/dist/api/task-properties.js.map +1 -1
- package/dist/cli/agent-cli-aliases.d.ts +21 -0
- package/dist/cli/agent-cli-aliases.js +57 -0
- package/dist/cli/agent-cli-aliases.js.map +1 -0
- package/dist/cli/application.js +5 -0
- package/dist/cli/application.js.map +1 -1
- package/dist/cli/cancellation.d.ts +1 -1
- package/dist/cli/cancellation.js.map +1 -1
- package/dist/cli/codex-agent-environment.d.ts +5 -0
- package/dist/cli/codex-agent-environment.js +28 -0
- package/dist/cli/codex-agent-environment.js.map +1 -0
- package/dist/cli/commands.js +1 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/schema.d.ts +5 -1
- package/dist/cli/schema.js.map +1 -1
- package/dist/commands/controller/archive-upload.d.ts +9 -0
- package/dist/commands/controller/archive-upload.js +137 -0
- package/dist/commands/controller/archive-upload.js.map +1 -0
- package/dist/commands/controller/definition.d.ts +1 -0
- package/dist/commands/controller/definition.js +9 -1
- package/dist/commands/controller/definition.js.map +1 -1
- package/dist/commands/controller/independent-archive.d.ts +7 -0
- package/dist/commands/controller/independent-archive.js +71 -0
- package/dist/commands/controller/independent-archive.js.map +1 -0
- package/dist/commands/controller/independent.js +51 -25
- package/dist/commands/controller/independent.js.map +1 -1
- package/dist/commands/controller/index.js +14 -1
- package/dist/commands/controller/index.js.map +1 -1
- package/dist/commands/controller/journal-format.d.ts +4 -0
- package/dist/commands/controller/journal-format.js +66 -0
- package/dist/commands/controller/journal-format.js.map +1 -0
- package/dist/commands/controller/launch-ticket.js +3 -2
- package/dist/commands/controller/launch-ticket.js.map +1 -1
- package/dist/commands/controller/lifecycle-store.d.ts +7 -5
- package/dist/commands/controller/lifecycle-store.js +132 -91
- package/dist/commands/controller/lifecycle-store.js.map +1 -1
- package/dist/commands/controller/local-content.d.ts +11 -6
- package/dist/commands/controller/local-content.js +29 -21
- package/dist/commands/controller/local-content.js.map +1 -1
- package/dist/commands/controller/paths.d.ts +2 -0
- package/dist/commands/controller/paths.js +34 -0
- package/dist/commands/controller/paths.js.map +1 -0
- package/dist/commands/controller/pending-content.d.ts +20 -0
- package/dist/commands/controller/pending-content.js +159 -0
- package/dist/commands/controller/pending-content.js.map +1 -0
- package/dist/commands/controller/providers/codex.js +5 -1
- package/dist/commands/controller/providers/codex.js.map +1 -1
- package/dist/commands/controller/providers/types.d.ts +4 -0
- package/dist/commands/controller/resume-lease-format.d.ts +4 -0
- package/dist/commands/controller/resume-lease-format.js +35 -0
- package/dist/commands/controller/resume-lease-format.js.map +1 -0
- package/dist/commands/controller/resume.js +88 -23
- package/dist/commands/controller/resume.js.map +1 -1
- package/dist/commands/controller/runtime.js +11 -1
- package/dist/commands/controller/runtime.js.map +1 -1
- package/dist/commands/controller/sqlite/journal/001-baseline.sql +17 -0
- package/dist/commands/controller/sqlite/journal/002-projection.sql +8 -0
- package/dist/commands/controller/sqlite/journal/003-operation-acknowledgements.sql +1 -0
- package/dist/commands/controller/sqlite/journal/004-projection-gap.sql +1 -0
- package/dist/commands/controller/sqlite/journal/005-resources.sql +7 -0
- package/dist/commands/controller/sqlite/journal/006-pending-content.sql +12 -0
- package/dist/commands/controller/sqlite/resume-lease/001-baseline.sql +7 -0
- package/dist/commands/project/definition.js +1 -1
- package/dist/commands/project/definition.js.map +1 -1
- package/dist/commands/review/definition.js +3 -3
- package/dist/commands/review/definition.js.map +1 -1
- package/dist/commands/review/listing.js +1 -1
- package/dist/commands/review/listing.js.map +1 -1
- package/dist/commands/review/runtime.js +3 -1
- package/dist/commands/review/runtime.js.map +1 -1
- package/dist/commands/review/sqlite/001-baseline.sql +65 -0
- package/dist/commands/review/sqlite/002-publications.sql +15 -0
- package/dist/commands/review/store-format.d.ts +2 -0
- package/dist/commands/review/store-format.js +35 -0
- package/dist/commands/review/store-format.js.map +1 -0
- package/dist/commands/review/store.d.ts +8 -1
- package/dist/commands/review/store.js +46 -176
- package/dist/commands/review/store.js.map +1 -1
- package/dist/commands/skill/read.d.ts +2 -0
- package/dist/commands/skill/read.js +36 -0
- package/dist/commands/skill/read.js.map +1 -0
- package/dist/commands/skill/skills/using-daynight/references/authorization.md +1 -0
- package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +19 -7
- package/dist/commands/skill/skills/using-daynight/references/goal.md +33 -8
- package/dist/commands/skill/skills/using-daynight/references/run-task.md +1 -1
- package/dist/commands/skill/skills/using-daynight/references/task-content.md +1 -0
- package/dist/commands/skill/usage.md +162 -0
- package/dist/commands/task/definition.js +1 -1
- package/dist/commands/task/definition.js.map +1 -1
- package/dist/commands/worker/backends/sqlite/001-baseline.sql +4 -0
- package/dist/commands/worker/backends/web-process.js +11 -11
- package/dist/commands/worker/backends/web-process.js.map +1 -1
- package/dist/commands/worker/backends/web-record.d.ts +11 -0
- package/dist/commands/worker/backends/web-record.js +151 -0
- package/dist/commands/worker/backends/web-record.js.map +1 -0
- package/dist/commands/worker/backends/web-store-format.d.ts +2 -0
- package/dist/commands/worker/backends/web-store-format.js +33 -0
- package/dist/commands/worker/backends/web-store-format.js.map +1 -0
- package/dist/commands/worker/backends/web-store.d.ts +5 -1
- package/dist/commands/worker/backends/web-store.js +44 -170
- package/dist/commands/worker/backends/web-store.js.map +1 -1
- package/dist/commands/worker/backends/web.d.ts +1 -0
- package/dist/commands/worker/backends/web.js +13 -4
- package/dist/commands/worker/backends/web.js.map +1 -1
- package/dist/commands/worker/cleanup.d.ts +1 -1
- package/dist/commands/worker/cleanup.js.map +1 -1
- package/dist/commands/worker/coordinator.js +1 -1
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/definition.js +2 -2
- package/dist/commands/worker/definition.js.map +1 -1
- package/dist/commands/worker/diagnostics.d.ts +3 -0
- package/dist/commands/worker/diagnostics.js +15 -0
- package/dist/commands/worker/diagnostics.js.map +1 -1
- package/dist/commands/worker/execution.d.ts +2 -0
- package/dist/commands/worker/execution.js +17 -4
- package/dist/commands/worker/execution.js.map +1 -1
- package/dist/commands/worker/herdr/agents.d.ts +9 -1
- package/dist/commands/worker/herdr/agents.js +22 -6
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/arguments.d.ts +4 -0
- package/dist/commands/worker/herdr/arguments.js +17 -0
- package/dist/commands/worker/herdr/arguments.js.map +1 -1
- package/dist/commands/worker/herdr/codex-config.d.ts +8 -0
- package/dist/commands/worker/herdr/codex-config.js +75 -0
- package/dist/commands/worker/herdr/codex-config.js.map +1 -0
- package/dist/commands/worker/herdr/preflight.js +1 -18
- package/dist/commands/worker/herdr/preflight.js.map +1 -1
- package/dist/commands/worker/herdr.d.ts +6 -2
- package/dist/commands/worker/herdr.js +3 -2
- package/dist/commands/worker/herdr.js.map +1 -1
- package/dist/commands/worker/prompts.js +7 -2
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/runtime.js +68 -7
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/sqlite/005-baseline.sql +18 -0
- package/dist/commands/worker/store-format.d.ts +2 -0
- package/dist/commands/worker/store-format.js +35 -0
- package/dist/commands/worker/store-format.js.map +1 -0
- package/dist/commands/worker/store.d.ts +2 -0
- package/dist/commands/worker/store.js +36 -69
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/config/agent-cli-aliases.d.ts +5 -0
- package/dist/config/agent-cli-aliases.js +37 -0
- package/dist/config/agent-cli-aliases.js.map +1 -0
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.js +6 -2
- package/dist/config/paths.js.map +1 -1
- package/dist/platform/diagnostics.js +3 -0
- package/dist/platform/diagnostics.js.map +1 -1
- package/dist/platform/instance-lock.d.ts +15 -0
- package/dist/platform/instance-lock.js +45 -3
- package/dist/platform/instance-lock.js.map +1 -1
- package/dist/platform/sqlite-access.d.ts +40 -0
- package/dist/platform/sqlite-access.js +333 -0
- package/dist/platform/sqlite-access.js.map +1 -0
- package/dist/platform/sqlite-error.d.ts +39 -0
- package/dist/platform/sqlite-error.js +36 -0
- package/dist/platform/sqlite-error.js.map +1 -0
- package/dist/platform/sqlite-format.d.ts +31 -0
- package/dist/platform/sqlite-format.js +98 -0
- package/dist/platform/sqlite-format.js.map +1 -0
- package/dist/platform/sqlite-sql.d.ts +12 -0
- package/dist/platform/sqlite-sql.js +61 -0
- package/dist/platform/sqlite-sql.js.map +1 -0
- package/dist/session/archive.d.ts +25 -0
- package/dist/session/archive.js +100 -0
- package/dist/session/archive.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,12 +1,44 @@
|
|
|
1
1
|
import { sessionDisplayEntry } from "./wire-display.js";
|
|
2
2
|
import Database from "better-sqlite3";
|
|
3
|
+
import { openPendingContent, reconcilePendingContent } from "./pending-content.js";
|
|
4
|
+
import { closeSqliteDatabase, openSqliteDatabase, readSqliteDatabase, runSqliteImmediate, sqliteTransactionOutcome } from "../../platform/sqlite-access.js";
|
|
5
|
+
import { assertCurrentSqlite } from "../../platform/sqlite-format.js";
|
|
6
|
+
import { SqliteAccessError } from "../../platform/sqlite-error.js";
|
|
7
|
+
import { assertJournalMigrationAllowed, controllerJournalFormat } from "./journal-format.js";
|
|
3
8
|
import { createLocalSessionContent } from "./local-content.js";
|
|
4
|
-
import { chmodSync } from "node:fs";
|
|
9
|
+
import { chmodSync, existsSync } from "node:fs";
|
|
5
10
|
import { sessionBinding } from "../../session/protocol.js";
|
|
6
11
|
import { controllerPayloadHash, parseLaunchTicket } from "./launch-ticket.js";
|
|
7
12
|
import { parseSourceEvent } from "../../session/controller-protocol.js";
|
|
8
13
|
import { confirmControllerProcessesStopped } from "./process-proof.js";
|
|
9
|
-
const json = (value) =>
|
|
14
|
+
const json = (value) => {
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(String(value));
|
|
17
|
+
}
|
|
18
|
+
catch (cause) {
|
|
19
|
+
throw new SqliteAccessError("invalid-format", { database: controllerJournalFormat.name, phase: "decode" }, { cause });
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const closeJournal = (db, file, operation) => {
|
|
23
|
+
let failed = false, failure;
|
|
24
|
+
try {
|
|
25
|
+
operation();
|
|
26
|
+
}
|
|
27
|
+
catch (cause) {
|
|
28
|
+
failed = true;
|
|
29
|
+
failure = cause;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
closeSqliteDatabase(db, { file, format: controllerJournalFormat }, failed ? sqliteTransactionOutcome(failure) : "committed");
|
|
33
|
+
}
|
|
34
|
+
catch (close) {
|
|
35
|
+
if (failed)
|
|
36
|
+
throw new AggregateError([failure, close], "Controller journal operation and shutdown failed.");
|
|
37
|
+
throw close;
|
|
38
|
+
}
|
|
39
|
+
if (failed)
|
|
40
|
+
throw failure;
|
|
41
|
+
};
|
|
10
42
|
const validSequence = (value) => { if (!/^(0|[1-9][0-9]{0,18})$/.test(value) || BigInt(value) > 9223372036854775807n)
|
|
11
43
|
throw new Error("Invalid controller outbox sequence."); return BigInt(value); };
|
|
12
44
|
export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
@@ -14,27 +46,13 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
14
46
|
if (!Number.isSafeInteger(maxOutboxBytes) || maxOutboxBytes < 256)
|
|
15
47
|
throw new Error("Invalid controller outbox capacity.");
|
|
16
48
|
parseLaunchTicket(ticket);
|
|
17
|
-
const db = new Database(file);
|
|
18
|
-
chmodSync(file, 0o600);
|
|
19
|
-
db.pragma("journal_mode = WAL");
|
|
20
|
-
db.pragma("synchronous = FULL");
|
|
21
49
|
const initial = { executionId: ticket.executionId, ...sessionBinding(ticket), sessionId: ticket.sessionId, executionGeneration: ticket.executionGeneration, controllerInstanceId: ticket.controllerInstanceId, lifecycle: "starting", nativeSessionId: ticket.resumeNativeSessionId, initialInputState: ticket.initialInput === "none" ? "not_required" : "not_submitted", activity: "initializing", currentTurnId: null, capabilities: { send: false, steer: false, cancel: false, respond: false }, controllerProcess: null, nativeProcesses: [], nativeStopped: false, stoppedAt: null, error: null };
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (version === 0)
|
|
29
|
-
db.exec("CREATE TABLE execution (id INTEGER PRIMARY KEY CHECK(id=1), ticket_hash TEXT NOT NULL, owner_pid INTEGER, snapshot TEXT NOT NULL, last_sequence INTEGER NOT NULL DEFAULT 0); CREATE TABLE operations (id TEXT PRIMARY KEY, value TEXT NOT NULL); CREATE TABLE outbox (sequence INTEGER PRIMARY KEY, value TEXT NOT NULL); PRAGMA user_version=1;");
|
|
30
|
-
if (version < 2)
|
|
31
|
-
db.exec("ALTER TABLE execution ADD COLUMN last_acknowledged INTEGER NOT NULL DEFAULT 0; CREATE TABLE projection (id TEXT PRIMARY KEY, content_hash TEXT NOT NULL, revision INTEGER NOT NULL, value TEXT NOT NULL); PRAGMA user_version=2;");
|
|
32
|
-
if (version < 3)
|
|
33
|
-
db.exec("ALTER TABLE operations ADD COLUMN acknowledged INTEGER NOT NULL DEFAULT 0; PRAGMA user_version=3;");
|
|
34
|
-
if (version < 4)
|
|
35
|
-
db.exec("ALTER TABLE execution ADD COLUMN projection_gap TEXT; PRAGMA user_version=4;");
|
|
36
|
-
if (version < 5)
|
|
37
|
-
db.exec("ALTER TABLE execution ADD COLUMN source_floor INTEGER NOT NULL DEFAULT 0; CREATE TABLE resources (id TEXT PRIMARY KEY, descriptor TEXT NOT NULL, content BLOB); PRAGMA user_version=5;");
|
|
50
|
+
let pendingContent;
|
|
51
|
+
const db = openSqliteDatabase({ file, format: controllerJournalFormat, allowCreate: true,
|
|
52
|
+
...(options.onMigration === undefined ? {} : { onMigration: options.onMigration }),
|
|
53
|
+
assertMigrationAllowed: assertJournalMigrationAllowed,
|
|
54
|
+
onReady: (db) => {
|
|
55
|
+
chmodSync(file, 0o600);
|
|
38
56
|
const existing = db.prepare("SELECT ticket_hash, owner_pid, snapshot FROM execution WHERE id=1").get();
|
|
39
57
|
if (existing === undefined)
|
|
40
58
|
db.prepare("INSERT INTO execution(id,ticket_hash,owner_pid,snapshot) VALUES(1,?,?,?)").run(controllerPayloadHash(ticket), process.pid, JSON.stringify(initial));
|
|
@@ -70,14 +88,39 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
70
88
|
}
|
|
71
89
|
db.prepare("UPDATE execution SET owner_pid=? WHERE id=1").run(process.pid);
|
|
72
90
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
91
|
+
if (existing !== undefined && !existsSync(`${file}.pending-content/manifest.json`))
|
|
92
|
+
throw new Error("Pending archive source is missing.");
|
|
93
|
+
pendingContent = openPendingContent(file, ticket.sessionId);
|
|
94
|
+
if (existing === undefined && (pendingContent.entries.size !== 0 || pendingContent.resources.size !== 0))
|
|
95
|
+
throw new Error("Pending archive source has no original controller execution.");
|
|
96
|
+
reconcilePendingContent(db, pendingContent);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
const transaction = (action, mode) => {
|
|
100
|
+
let failed = false, primary;
|
|
101
|
+
try {
|
|
102
|
+
return db.transaction(() => {
|
|
103
|
+
try {
|
|
104
|
+
assertCurrentSqlite(db, controllerJournalFormat);
|
|
105
|
+
return action();
|
|
106
|
+
}
|
|
107
|
+
catch (cause) {
|
|
108
|
+
failed = true;
|
|
109
|
+
primary = cause;
|
|
110
|
+
throw cause;
|
|
111
|
+
}
|
|
112
|
+
})[mode]();
|
|
113
|
+
}
|
|
114
|
+
catch (cause) {
|
|
115
|
+
if (failed && cause !== primary)
|
|
116
|
+
throw new AggregateError([primary, cause], "Controller journal operation and rollback failed.");
|
|
117
|
+
throw cause;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const atomic = (action) => transaction(action, "immediate");
|
|
121
|
+
const read = (action) => transaction(action, "deferred");
|
|
122
|
+
const getSnapshot = () => read(() => json(db.prepare("SELECT snapshot FROM execution WHERE id=1").get().snapshot));
|
|
123
|
+
const getOperation = (operationId) => read(() => { const row = db.prepare("SELECT value FROM operations WHERE id=?").get(operationId); return row === undefined ? null : json(row.value); });
|
|
81
124
|
const writeOperation = (operation) => { db.prepare("INSERT INTO operations(id,value) VALUES(?,?) ON CONFLICT(id) DO UPDATE SET value=excluded.value,acknowledged=0").run(operation.operationId, JSON.stringify(operation)); return operation; };
|
|
82
125
|
const patchSnapshot = (patch) => atomic(() => {
|
|
83
126
|
const current = getSnapshot();
|
|
@@ -89,10 +132,10 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
89
132
|
db.prepare("UPDATE execution SET snapshot=? WHERE id=1").run(JSON.stringify(value));
|
|
90
133
|
return value;
|
|
91
134
|
});
|
|
92
|
-
const outboxBytes = () => db.prepare("SELECT COALESCE(SUM(length(CAST(value AS BLOB))),0) AS bytes FROM outbox").get().bytes;
|
|
135
|
+
const outboxBytes = () => read(() => db.prepare("SELECT COALESCE(SUM(length(CAST(value AS BLOB))),0) AS bytes FROM outbox").get().bytes);
|
|
93
136
|
const assertInputCapacity = () => { if (!options.contentOwnedLocally && outboxBytes() >= maxOutboxBytes * 0.8)
|
|
94
137
|
throw new Error("Controller outbox capacity reached; native input is paused until durable events are acknowledged."); };
|
|
95
|
-
const localContent = createLocalSessionContent(
|
|
138
|
+
const localContent = createLocalSessionContent(pendingContent, ticket.sessionId, { read, write: atomic });
|
|
96
139
|
const appendEvent = (payload) => atomic(() => {
|
|
97
140
|
if (options.contentOwnedLocally && payload && typeof payload === "object" && "kind" in payload && payload.kind === "resource" && "payload" in payload) {
|
|
98
141
|
const event = parseSourceEvent({ sourceSeq: "1", ...payload });
|
|
@@ -121,9 +164,9 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
121
164
|
return {
|
|
122
165
|
getSnapshot, patchSnapshot, getOperation, assertInputCapacity,
|
|
123
166
|
...localContent,
|
|
124
|
-
getSourceFloor: () => db.prepare("SELECT CAST(source_floor AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence,
|
|
125
|
-
getLastSourceSequence: () => db.prepare("SELECT CAST(last_sequence AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence,
|
|
126
|
-
markProjectionGap: (reason) => {
|
|
167
|
+
getSourceFloor: () => read(() => db.prepare("SELECT CAST(source_floor AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence),
|
|
168
|
+
getLastSourceSequence: () => read(() => db.prepare("SELECT CAST(last_sequence AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence),
|
|
169
|
+
markProjectionGap: (reason) => atomic(() => {
|
|
127
170
|
if (typeof reason !== "string" || reason.trim() === "")
|
|
128
171
|
throw new Error("Projection gap requires a reason.");
|
|
129
172
|
// A single bounded marker survives outbox exhaustion and controller generations.
|
|
@@ -133,8 +176,8 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
133
176
|
break;
|
|
134
177
|
safeReason += character;
|
|
135
178
|
}
|
|
136
|
-
db.prepare("UPDATE execution SET projection_gap=COALESCE(projection_gap,?) WHERE id=1").run(safeReason);
|
|
137
|
-
},
|
|
179
|
+
db.prepare("UPDATE execution SET projection_gap=COALESCE(projection_gap,?),archive_incomplete=1 WHERE id=1").run(safeReason);
|
|
180
|
+
}),
|
|
138
181
|
drainProjectionGap: () => atomic(() => {
|
|
139
182
|
const row = db.prepare("SELECT projection_gap AS reason FROM execution WHERE id=1").get();
|
|
140
183
|
if (row.reason === null)
|
|
@@ -147,29 +190,33 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
147
190
|
db.prepare("UPDATE execution SET projection_gap=NULL WHERE id=1").run();
|
|
148
191
|
return event;
|
|
149
192
|
}),
|
|
150
|
-
listOperations: () => db.prepare("SELECT value FROM operations ORDER BY rowid").all().map(row => json(row.value)),
|
|
151
|
-
listUnacknowledgedOperations: (limit = 100, afterOperationId) => {
|
|
193
|
+
listOperations: () => read(() => db.prepare("SELECT value FROM operations ORDER BY rowid").all().map(row => json(row.value))),
|
|
194
|
+
listUnacknowledgedOperations: (limit = 100, afterOperationId) => read(() => {
|
|
152
195
|
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100)
|
|
153
196
|
throw new Error("Invalid operation reconciliation page size.");
|
|
154
197
|
return db.prepare("SELECT value FROM operations WHERE acknowledged=0 AND rowid > COALESCE((SELECT rowid FROM operations WHERE id=?),0) ORDER BY rowid LIMIT ?").all(afterOperationId ?? null, limit).map(row => json(row.value));
|
|
155
|
-
},
|
|
156
|
-
markOperationAcknowledged: (id) => { const operation = getOperation(id); if (operation === null)
|
|
198
|
+
}),
|
|
199
|
+
markOperationAcknowledged: (id) => atomic(() => { const operation = getOperation(id); if (operation === null)
|
|
157
200
|
throw new Error("Cannot acknowledge an unknown operation."); if (["confirmed", "failed", "rejected", "expired"].includes(operation.state))
|
|
158
|
-
db.prepare("UPDATE operations SET acknowledged=1 WHERE id=?").run(id); },
|
|
159
|
-
getLastAcknowledgedSequence: () => db.prepare("SELECT CAST(last_acknowledged AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence,
|
|
201
|
+
db.prepare("UPDATE operations SET acknowledged=1 WHERE id=?").run(id); }),
|
|
202
|
+
getLastAcknowledgedSequence: () => read(() => db.prepare("SELECT CAST(last_acknowledged AS TEXT) AS sequence FROM execution WHERE id=1").get().sequence),
|
|
160
203
|
projectTimeline: (entry) => atomic(() => {
|
|
161
204
|
const { revision: ignored, entrySeq: ignoredSequence, ...content } = entry;
|
|
162
205
|
void ignored;
|
|
163
206
|
void ignoredSequence;
|
|
164
207
|
const contentHash = controllerPayloadHash(content);
|
|
165
|
-
const previous =
|
|
166
|
-
|
|
208
|
+
const previous = pendingContent.entries.get(entry.entryId);
|
|
209
|
+
const previousContent = previous ? (({ revision, entrySeq, ...value }) => { void revision; void entrySeq; return value; })(previous) : null;
|
|
210
|
+
if (previousContent !== null && controllerPayloadHash(previousContent) === contentHash)
|
|
167
211
|
return null;
|
|
168
212
|
const revision = String(previous === undefined ? 1n : BigInt(previous.revision) + 1n);
|
|
169
|
-
const entrySeq = previous?.entrySeq ??
|
|
213
|
+
const entrySeq = previous?.entrySeq ?? pendingContent.nextEntrySequence();
|
|
170
214
|
const payload = { ...content, revision, ...(options.contentOwnedLocally ? { entrySeq } : {}) };
|
|
171
215
|
parseSourceEvent({ sourceSeq: "1", kind: "timeline_upsert", payload });
|
|
172
|
-
|
|
216
|
+
// Durable file first: a failed SQL outbox commit still rehydrates the latest content.
|
|
217
|
+
const durableEntry = { ...payload, entrySeq };
|
|
218
|
+
pendingContent.saveEntry(durableEntry);
|
|
219
|
+
db.prepare("INSERT INTO content_index VALUES(?,?,?,?) ON CONFLICT(id) DO UPDATE SET content_hash=excluded.content_hash,revision=excluded.revision,entry_seq=excluded.entry_seq").run(entry.entryId, controllerPayloadHash(durableEntry), revision, entrySeq);
|
|
173
220
|
return appendEvent({ kind: "timeline_upsert", payload: options.contentOwnedLocally ? sessionDisplayEntry(payload) : payload });
|
|
174
221
|
}),
|
|
175
222
|
prepareOperation: (input) => atomic(() => {
|
|
@@ -207,11 +254,11 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
207
254
|
return writeOperation({ ...operation, state, result, error, updatedAt: Date.now() });
|
|
208
255
|
}),
|
|
209
256
|
appendEvent,
|
|
210
|
-
pendingEvents: (limit = 100) => {
|
|
257
|
+
pendingEvents: (limit = 100) => read(() => {
|
|
211
258
|
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1000)
|
|
212
259
|
throw new Error("Invalid controller outbox page size.");
|
|
213
260
|
return db.prepare("SELECT CAST(sequence AS TEXT) AS sequence,value FROM outbox ORDER BY outbox.sequence LIMIT ?").all(limit).map((row) => ({ sequence: row.sequence, payload: json(row.value) }));
|
|
214
|
-
},
|
|
261
|
+
}),
|
|
215
262
|
acknowledgeEvents: (sequence) => atomic(() => {
|
|
216
263
|
const value = validSequence(sequence);
|
|
217
264
|
const row = db.prepare("SELECT CAST(last_sequence AS TEXT) AS sequence FROM execution WHERE id=1").get();
|
|
@@ -220,29 +267,25 @@ export const openControllerLifecycleStore = (file, ticket, options = {}) => {
|
|
|
220
267
|
db.prepare("DELETE FROM outbox WHERE sequence<=?").run(value);
|
|
221
268
|
db.prepare("UPDATE execution SET last_acknowledged=MAX(last_acknowledged,?) WHERE id=1").run(value);
|
|
222
269
|
}),
|
|
223
|
-
close: () => {
|
|
224
|
-
|
|
270
|
+
close: () => {
|
|
271
|
+
if (closed)
|
|
272
|
+
return;
|
|
273
|
+
try {
|
|
274
|
+
closeJournal(db, file, () => { runSqliteImmediate(db, () => { assertCurrentSqlite(db, controllerJournalFormat); db.prepare("UPDATE execution SET owner_pid=NULL WHERE id=1 AND owner_pid=?").run(process.pid); }); });
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
closed = !db.open;
|
|
278
|
+
}
|
|
279
|
+
},
|
|
225
280
|
};
|
|
226
281
|
};
|
|
227
|
-
/**
|
|
228
|
-
export const readControllerSnapshot = (file) => {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (error instanceof Error && "code" in error && error.code === "SQLITE_CANTOPEN")
|
|
235
|
-
return null;
|
|
236
|
-
throw error;
|
|
237
|
-
}
|
|
238
|
-
try {
|
|
239
|
-
const row = db.prepare("SELECT snapshot FROM execution WHERE id=1").get();
|
|
240
|
-
return row === undefined ? null : json(row.snapshot);
|
|
241
|
-
}
|
|
242
|
-
finally {
|
|
243
|
-
db.close();
|
|
244
|
-
}
|
|
245
|
-
};
|
|
282
|
+
/** Recovery reads may upgrade the format without acquiring a native writer. */
|
|
283
|
+
export const readControllerSnapshot = (file) => readSqliteDatabase({
|
|
284
|
+
file, format: controllerJournalFormat, onMissing: () => null, assertMigrationAllowed: assertJournalMigrationAllowed,
|
|
285
|
+
}, db => {
|
|
286
|
+
const row = db.prepare("SELECT snapshot FROM execution WHERE id=1").get();
|
|
287
|
+
return row === undefined ? null : json(row.snapshot);
|
|
288
|
+
});
|
|
246
289
|
/** Only an independent worker may commit complete process-tree stop after the writer exits. */
|
|
247
290
|
export const recordStoppedControllerGeneration = async (file, ticket) => {
|
|
248
291
|
const observed = readControllerSnapshot(file);
|
|
@@ -250,29 +293,27 @@ export const recordStoppedControllerGeneration = async (file, ticket) => {
|
|
|
250
293
|
throw new Error("Original controller stop evidence is unavailable.");
|
|
251
294
|
if (!await confirmControllerProcessesStopped(observed.controllerProcess, observed.nativeProcesses))
|
|
252
295
|
throw new Error("The original controller or its descendants are still running.");
|
|
253
|
-
const db = new Database(file);
|
|
254
|
-
|
|
255
|
-
|
|
296
|
+
const db = new Database(file, { fileMustExist: true });
|
|
297
|
+
let stopped;
|
|
298
|
+
closeJournal(db, file, () => {
|
|
299
|
+
stopped = runSqliteImmediate(db, () => {
|
|
300
|
+
assertCurrentSqlite(db, controllerJournalFormat);
|
|
256
301
|
const row = db.prepare("SELECT snapshot FROM execution WHERE id=1").get();
|
|
257
302
|
if (row.snapshot !== JSON.stringify(observed))
|
|
258
303
|
throw new Error("The controller state changed during stop verification.");
|
|
259
|
-
const
|
|
260
|
-
db.prepare("UPDATE execution SET snapshot=?,owner_pid=NULL WHERE id=1").run(JSON.stringify(
|
|
261
|
-
return
|
|
262
|
-
})
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
db.close();
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
export const readControllerOperation = (file, operationId) => {
|
|
269
|
-
const db = new Database(file, { readonly: true, fileMustExist: true });
|
|
270
|
-
try {
|
|
271
|
-
const row = db.prepare("SELECT value FROM operations WHERE id=?").get(operationId);
|
|
272
|
-
return row === undefined ? null : json(row.value);
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
db.close();
|
|
276
|
-
}
|
|
304
|
+
const value = { ...observed, lifecycle: "stopped", nativeStopped: true, stoppedAt: observed.stoppedAt ?? new Date().toISOString(), activity: "stopped", capabilities: { send: false, steer: false, cancel: false, respond: false } };
|
|
305
|
+
db.prepare("UPDATE execution SET snapshot=?,owner_pid=NULL WHERE id=1").run(JSON.stringify(value));
|
|
306
|
+
return value;
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
return stopped;
|
|
277
310
|
};
|
|
311
|
+
export const readControllerOperation = (file, operationId) => readSqliteDatabase({
|
|
312
|
+
file, format: controllerJournalFormat,
|
|
313
|
+
onMissing: () => { throw new Error("The controller journal does not exist."); },
|
|
314
|
+
assertMigrationAllowed: assertJournalMigrationAllowed,
|
|
315
|
+
}, db => {
|
|
316
|
+
const row = db.prepare("SELECT value FROM operations WHERE id=?").get(operationId);
|
|
317
|
+
return row === undefined ? null : json(row.value);
|
|
318
|
+
});
|
|
278
319
|
//# sourceMappingURL=lifecycle-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-store.js","sourceRoot":"","sources":["../../../src/commands/controller/lifecycle-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle-store.js","sourceRoot":"","sources":["../../../src/commands/controller/lifecycle-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAgC,MAAM,iCAAiC,CAAC;AAC1L,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAA8F,MAAM,2BAA2B,CAAC;AACvJ,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAA+B,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAA4B,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,iCAAiC,EAAqB,MAAM,oBAAoB,CAAC;AAiB1F,MAAM,IAAI,GAAG,CAAI,KAAc,EAAK,EAAE;IACpC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAM,CAAC;IAAC,CAAC;IAC9C,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC;AAC1I,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,EAAqB,EAAE,IAAY,EAAE,SAAqB,EAAQ,EAAE;IACxF,IAAI,MAAM,GAAG,KAAK,EAAE,OAAgB,CAAC;IACrC,IAAI,CAAC;QAAC,SAAS,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,GAAG,KAAK,CAAC;IAAC,CAAC;IACtE,IAAI,CAAC;QAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAAC,CAAC;IACrI,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,mDAAmD,CAAC,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;IAC3I,IAAI,MAAM;QAAE,MAAM,OAAO,CAAC;AAC5B,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,oBAA0B;IAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5N,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAE,MAA8B,EAAE,OAAO,GAAsG,EAAE,EAAE,EAAE;IAC5M,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC1H,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAuB,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7lB,IAAI,cAAsD,CAAC;IAC3D,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI;QACtF,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAClF,sBAAsB,EAAE,6BAA6B;QACrD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;YACd,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,EAAqF,CAAC;YAC1L,IAAI,QAAQ,KAAK,SAAS;gBAAE,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;iBACvL,CAAC;gBACJ,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;oBAChC,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBAAC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;oBAAC,CAAC;oBACzH,OAAO,KAAK,EAAE,CAAC;wBAAC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;4BAAE,MAAM,KAAK,CAAC;oBAAC,CAAC;gBAC5G,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAqB,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC7D,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC9P,IAAI,QAAQ,CAAC,WAAW,KAAK,qBAAqB,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;gBACnN,IAAI,QAAQ,CAAC,WAAW,KAAK,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,IAAI,QAAQ,CAAC,eAAe,KAAK,MAAM,CAAC,qBAAqB;wBAAE,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;oBAChW,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE;4BACjN,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;4BACzF,uEAAuE;4BACvE,uEAAuE;4BACvE,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,+HAA+H,CAAC,CAAC,OAAO,EAA2C,EAAE,CAAC;gCACjN,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK;oCAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACrI,CAAC;4BACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACX,CAAC;gBACD,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,gCAAgC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC1I,cAAc,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC1L,uBAAuB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,CAAI,MAAe,EAAE,IAA8B,EAAK,EAAE;QAC5E,IAAI,MAAM,GAAG,KAAK,EAAE,OAAgB,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC;oBAAC,mBAAmB,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;oBAAC,OAAO,MAAM,EAAE,CAAC;gBAAC,CAAC;gBAC1E,OAAO,KAAK,EAAE,CAAC;oBAAC,MAAM,GAAG,IAAI,CAAC;oBAAC,OAAO,GAAG,KAAK,CAAC;oBAAC,MAAM,KAAK,CAAC;gBAAC,CAAC;YAChE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,IAAI,KAAK,KAAK,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,mDAAmD,CAAC,CAAC;YACjI,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAI,MAAe,EAAK,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,CAAI,MAAe,EAAK,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,GAAuB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjK,MAAM,YAAY,GAAG,CAAC,WAAmB,EAA8B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkC,CAAC,CAAC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClQ,MAAM,cAAc,GAAG,CAAC,SAA8B,EAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1R,MAAM,aAAa,GAAG,CAAC,KAAsJ,EAAsB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QAChN,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACzO,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrM,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,OAAO,KAAK,CAAC;IAC5I,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC,CAAC;IACxK,MAAM,mBAAmB,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,WAAW,EAAE,IAAI,cAAc,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7O,MAAM,YAAY,GAAG,yBAAyB,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1G,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAyB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QAC3E,IAAI,OAAO,CAAC,mBAAmB,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACtJ,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACrF,IAAI,WAAW,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,mBAAmB;gBAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnH,uEAAuE;YACvE,yEAAyE;YACzE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC;YACvC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,EAAE,CAAC;QACjF,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iHAAiH,CAAC,CAAC,GAAG,EAA0B,CAAC;QACxK,IAAI,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,cAAc;YAAE,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,EAAE,CAAC;;YAC1J,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACrG,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB;QAC7D,GAAG,YAAY;QACf,cAAc,EAAE,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,EAA2B,CAAC,QAAQ,CAAC;QACxK,qBAAqB,EAAE,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,EAA2B,CAAC,QAAQ,CAAC;QAChL,iBAAiB,EAAE,CAAC,MAAc,EAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC7G,iFAAiF;YACjF,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,UAAU,GAAG,SAAS,EAAC,EAAC,CAAC,CAAC,GAAG,GAAG;oBAAE,MAAM;gBACzG,UAAU,IAAI,SAAS,CAAC;YAC1B,CAAC;YACD,EAAE,CAAC,OAAO,CAAC,gGAAgG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/H,CAAC,CAAC;QACF,kBAAkB,EAAE,GAAiC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YAClE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,EAA0B,CAAC;YAClH,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACrC,MAAM,OAAO,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,EAAC,CAAC;YACzD,IAAI,WAAW,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,cAAc;gBAAE,OAAO,IAAI,CAAC;YAC7F,gBAAgB,CAAC,EAAC,SAAS,EAAC,GAAG,EAAC,GAAG,OAAO,EAAC,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACnC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,cAAc,EAAE,GAA0B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAsB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClM,4BAA4B,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE,gBAAyB,EAAyB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACzG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC7H,OAAQ,EAAE,CAAC,OAAO,CAAC,4IAA4I,CAAC,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,EAAE,KAAK,CAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAsB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjR,CAAC,CAAC;QACF,yBAAyB,EAAE,CAAC,EAAU,EAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChV,2BAA2B,EAAE,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,EAA2B,CAAC,QAAQ,CAAC;QAC1L,eAAe,EAAE,CAAC,KAA0B,EAAgC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACzF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;YAC3E,KAAK,OAAO,CAAC;YAAC,KAAK,eAAe,CAAC;YACnC,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5I,IAAI,eAAe,KAAK,IAAI,IAAI,qBAAqB,CAAC,eAAe,CAAC,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YACpG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAyB,CAAC;YACtH,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,sFAAsF;YACtF,MAAM,YAAY,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAuD,CAAC;YACnG,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACvC,EAAE,CAAC,OAAO,CAAC,oKAAoK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7P,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjI,CAAC,CAAC;QACF,gBAAgB,EAAE,CAAC,KAAoE,EAAuB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YAC3H,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC3G,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACnI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAAC,OAAO,QAAQ,CAAC;YAAC,CAAC;YAC1I,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAAE,mBAAmB,EAAE,CAAC;YACrM,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtM,CAAC,CAAC;QACF,eAAe,EAAE,CAAC,WAAmB,EAAuB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACzE,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YAAC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACzL,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBAAE,aAAa,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC;YACtF,OAAO,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC;QACF,eAAe,EAAE,CAAC,WAAmB,EAAE,KAAqB,EAAE,MAAM,GAAY,IAAI,EAAE,KAAK,GAAkB,IAAI,EAAuB,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACrJ,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YAAC,IAAI,SAAS,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAChI,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAClL,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACxJ,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBAAE,aAAa,CAAC,EAAE,iBAAiB,EAAE,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACvI,OAAO,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC;QACF,WAAW;QACX,aAAa,EAAE,CAAC,KAAK,GAAG,GAAG,EAA2B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACjE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACvH,OAAQ,EAAE,CAAC,OAAO,CAAC,8FAA8F,CAAC,CAAC,GAAG,CAAC,KAAK,CAA2C,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/O,CAAC,CAAC;QACF,iBAAiB,EAAE,CAAC,QAAgB,EAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,GAAG,EAA0B,CAAC;YACxK,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9D,EAAE,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtG,CAAC,CAAC;QACF,KAAK,EAAE,GAAS,EAAE;YAChB,IAAI,MAAM;gBAAE,OAAO;YACnB,IAAI,CAAC;gBAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;oBACtN,CAAC;gBAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAGF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAA6B,EAAE,CAAC,kBAAkB,CAAC;IACpG,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,6BAA6B;CACpH,EAAE,EAAE,CAAC,EAAE;IACN,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAAsC,CAAC;IAC9G,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAqB,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,+FAA+F;AAC/F,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,EAAE,IAAY,EAAE,MAA8B,EAA+B,EAAE;IACnI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,oBAAoB,KAAK,MAAM,CAAC,oBAAoB;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAChZ,IAAI,CAAC,MAAM,iCAAiC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,eAAe,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrL,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,OAAuC,CAAC;IAC5C,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;QAC1B,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE;YACpC,mBAAmB,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAA0B,CAAC;YAClG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACzH,MAAM,KAAK,GAAuB,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;YACzP,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACnG,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,OAAQ,CAAC;AAClB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,WAAmB,EAA8B,EAAE,CAAC,kBAAkB,CAAC;IAC3H,IAAI,EAAE,MAAM,EAAE,uBAAuB;IACrC,SAAS,EAAE,GAA+B,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;IAC3G,sBAAsB,EAAE,6BAA6B;CACtD,EAAE,EAAE,CAAC,EAAE;IACN,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkC,CAAC;IACpH,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAsB,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { PendingContent } from "./pending-content.js";
|
|
2
2
|
import { type TimelineEntry, type SessionResource } from "../../session/protocol.js";
|
|
3
3
|
import type { TimelinePage } from "../../session/controller-protocol.js";
|
|
4
4
|
export type LocalTimelineQuery = {
|
|
@@ -7,13 +7,17 @@ export type LocalTimelineQuery = {
|
|
|
7
7
|
cursor: string | null;
|
|
8
8
|
limit: number;
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
type ContentTransactions = {
|
|
11
|
+
read: <T>(action: () => T) => T;
|
|
12
|
+
write: <T>(action: () => T) => T;
|
|
13
|
+
};
|
|
14
|
+
export declare const createLocalSessionContent: (store: PendingContent, sessionId: string, transactions: ContentTransactions) => {
|
|
15
|
+
readTimeline: (query: LocalTimelineQuery) => Omit<TimelinePage, "lastEventSeq" | "sessionId"> & {
|
|
12
16
|
kind: "timeline";
|
|
13
17
|
};
|
|
14
|
-
pendingInteractions()
|
|
15
|
-
saveResource(resource: SessionResource,
|
|
16
|
-
readResource(resourceId: string, offset: string, limit: number)
|
|
18
|
+
pendingInteractions: () => TimelineEntry[];
|
|
19
|
+
saveResource: (resource: SessionResource, bytes?: Uint8Array) => void;
|
|
20
|
+
readResource: (resourceId: string, offset: string, limit: number) => {
|
|
17
21
|
kind: "resource";
|
|
18
22
|
resource: SessionResource;
|
|
19
23
|
offset: string;
|
|
@@ -21,3 +25,4 @@ export declare const createLocalSessionContent: (db: Database.Database, sessionI
|
|
|
21
25
|
eof: boolean;
|
|
22
26
|
};
|
|
23
27
|
};
|
|
28
|
+
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { sessionDisplayEntry, sessionWireBytes } from "./wire-display.js";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
-
import {
|
|
3
|
+
import { parseSessionResource } from "../../session/protocol.js";
|
|
4
4
|
const sequence = (value) => {
|
|
5
5
|
if (!/^(0|[1-9][0-9]{0,18})$/.test(value) || BigInt(value) > 9223372036854775807n)
|
|
6
6
|
throw new Error("Invalid local content sequence.");
|
|
7
7
|
return BigInt(value);
|
|
8
8
|
};
|
|
9
|
-
export const createLocalSessionContent = (
|
|
9
|
+
export const createLocalSessionContent = (store, sessionId, transactions) => {
|
|
10
10
|
const resourcesFor = (items) => {
|
|
11
11
|
const ids = new Set();
|
|
12
12
|
for (const item of items) {
|
|
@@ -16,11 +16,11 @@ export const createLocalSessionContent = (db, sessionId) => {
|
|
|
16
16
|
ids.add(part.resourceId);
|
|
17
17
|
}
|
|
18
18
|
return [...ids].flatMap(id => {
|
|
19
|
-
const row =
|
|
20
|
-
return row ? [
|
|
19
|
+
const row = store.resources.get(id);
|
|
20
|
+
return row ? [row.resource] : [];
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
|
-
|
|
23
|
+
const content = {
|
|
24
24
|
readTimeline(query) {
|
|
25
25
|
if (!Number.isSafeInteger(query.limit) || query.limit < 1 || query.limit > 200 || !["tail", "before", "after"].includes(query.direction))
|
|
26
26
|
throw new Error("Invalid local timeline page.");
|
|
@@ -42,14 +42,15 @@ export const createLocalSessionContent = (db, sessionId) => {
|
|
|
42
42
|
throw new Error("Invalid local timeline cursor.");
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
const where = query.direction === "tail" ? "" : query.direction === "before" ? "WHERE rowid < ?" : "WHERE rowid > ?";
|
|
46
45
|
const ascending = query.direction === "after";
|
|
47
|
-
const
|
|
46
|
+
const ordered = [...store.entries.values()].sort((a, b) => sequence(a.entrySeq) < sequence(b.entrySeq) ? -1 : 1);
|
|
47
|
+
const eligible = ordered.filter(entry => query.direction === "tail" || (ascending ? sequence(entry.entrySeq) > pivot : sequence(entry.entrySeq) < pivot));
|
|
48
|
+
const rows = (ascending ? eligible : eligible.reverse()).slice(0, query.limit);
|
|
48
49
|
const items = [];
|
|
49
50
|
// Leave room for the envelope and resource descriptors in the WS frame.
|
|
50
51
|
let bytes = 1024;
|
|
51
52
|
for (const row of rows) {
|
|
52
|
-
const entry = sessionDisplayEntry(
|
|
53
|
+
const entry = sessionDisplayEntry(row);
|
|
53
54
|
const size = sessionWireBytes(entry) + sessionWireBytes(resourcesFor([entry]));
|
|
54
55
|
if (bytes + size > 1_500_000) {
|
|
55
56
|
if (!items.length)
|
|
@@ -63,41 +64,48 @@ export const createLocalSessionContent = (db, sessionId) => {
|
|
|
63
64
|
items.reverse();
|
|
64
65
|
const first = items[0]?.entrySeq, last = items.at(-1)?.entrySeq;
|
|
65
66
|
const cursor = (seq) => seq === undefined ? null : Buffer.from(JSON.stringify([sessionId, query.historyEpoch, seq])).toString("base64url");
|
|
66
|
-
const hasBefore = first !== undefined &&
|
|
67
|
-
const hasAfter = last !== undefined &&
|
|
67
|
+
const hasBefore = first !== undefined && ordered.some(entry => sequence(entry.entrySeq) < sequence(first));
|
|
68
|
+
const hasAfter = last !== undefined && ordered.some(entry => sequence(entry.entrySeq) > sequence(last));
|
|
68
69
|
return { kind: "timeline", historyEpoch: query.historyEpoch, items, resources: resourcesFor(items), beforeCursor: cursor(first), afterCursor: cursor(last), hasMoreBefore: hasBefore, hasMoreAfter: hasAfter };
|
|
69
70
|
},
|
|
70
71
|
pendingInteractions() {
|
|
71
|
-
const rows =
|
|
72
|
+
const rows = [...store.entries.values()].filter(entry => entry.kind === "interaction" && entry.interaction.state === "pending").sort((a, b) => sequence(a.entrySeq) < sequence(b.entrySeq) ? -1 : 1);
|
|
72
73
|
if (rows.length > 100)
|
|
73
74
|
throw new Error("Too many pending native interactions to synchronize safely.");
|
|
74
|
-
return rows
|
|
75
|
+
return rows;
|
|
75
76
|
},
|
|
76
77
|
saveResource(resource, content) {
|
|
77
78
|
parseSessionResource(resource);
|
|
78
79
|
if (content && (content.byteLength > 8_388_608 || String(content.byteLength) !== resource.byteLength || createHash("sha256").update(content).digest("hex") !== resource.sha256))
|
|
79
80
|
throw new Error("Local session resource content does not match its descriptor.");
|
|
80
|
-
const previous =
|
|
81
|
+
const previous = store.resources.get(resource.resourceId);
|
|
81
82
|
if (previous) {
|
|
82
|
-
const old =
|
|
83
|
+
const old = previous.resource;
|
|
83
84
|
if (old.status === "available" && JSON.stringify(old) !== JSON.stringify(resource))
|
|
84
85
|
throw new Error("An available local resource cannot change identity.");
|
|
85
86
|
}
|
|
86
|
-
|
|
87
|
+
store.saveResource({ resource, data: content ? Buffer.from(content).toString("base64") : previous?.data ?? null });
|
|
87
88
|
},
|
|
88
89
|
readResource(resourceId, offset, limit) {
|
|
89
90
|
const position = sequence(offset);
|
|
90
91
|
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 524288)
|
|
91
92
|
throw new Error("Invalid local resource chunk limit.");
|
|
92
|
-
const row =
|
|
93
|
-
if (
|
|
93
|
+
const row = store.resources.get(resourceId);
|
|
94
|
+
if (row?.data === null || row === undefined)
|
|
94
95
|
throw new Error("Local session resource is unavailable.");
|
|
95
|
-
const resource =
|
|
96
|
-
|
|
96
|
+
const resource = row.resource;
|
|
97
|
+
const content = Buffer.from(row.data, "base64");
|
|
98
|
+
if (resource.status !== "available" || position > BigInt(content.length))
|
|
97
99
|
throw new Error("Local session resource is unavailable.");
|
|
98
|
-
const end = Math.min(Number(position) + limit,
|
|
99
|
-
return { kind: "resource", resource, offset, data:
|
|
100
|
+
const end = Math.min(Number(position) + limit, content.length);
|
|
101
|
+
return { kind: "resource", resource, offset, data: content.subarray(Number(position), end).toString("base64"), eof: end === content.length };
|
|
100
102
|
},
|
|
101
103
|
};
|
|
104
|
+
return {
|
|
105
|
+
readTimeline: (query) => transactions.read(() => content.readTimeline(query)),
|
|
106
|
+
pendingInteractions: () => transactions.read(() => content.pendingInteractions()),
|
|
107
|
+
saveResource: (resource, bytes) => transactions.write(() => content.saveResource(resource, bytes)),
|
|
108
|
+
readResource: (resourceId, offset, limit) => transactions.read(() => content.readResource(resourceId, offset, limit)),
|
|
109
|
+
};
|
|
102
110
|
};
|
|
103
111
|
//# sourceMappingURL=local-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-content.js","sourceRoot":"","sources":["../../../src/commands/controller/local-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"local-content.js","sourceRoot":"","sources":["../../../src/commands/controller/local-content.ts"],"names":[],"mappings":"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"}
|