@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.
Files changed (175) hide show
  1. package/README.md +173 -44
  2. package/config.example.yml +10 -3
  3. package/dist/api/index.d.ts +1 -1
  4. package/dist/api/index.js +1 -1
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/api/task-properties.d.ts +1 -0
  7. package/dist/api/task-properties.js +5 -0
  8. package/dist/api/task-properties.js.map +1 -1
  9. package/dist/cli/agent-cli-aliases.d.ts +21 -0
  10. package/dist/cli/agent-cli-aliases.js +57 -0
  11. package/dist/cli/agent-cli-aliases.js.map +1 -0
  12. package/dist/cli/application.js +5 -0
  13. package/dist/cli/application.js.map +1 -1
  14. package/dist/cli/cancellation.d.ts +1 -1
  15. package/dist/cli/cancellation.js.map +1 -1
  16. package/dist/cli/codex-agent-environment.d.ts +5 -0
  17. package/dist/cli/codex-agent-environment.js +28 -0
  18. package/dist/cli/codex-agent-environment.js.map +1 -0
  19. package/dist/cli/commands.js +1 -0
  20. package/dist/cli/commands.js.map +1 -1
  21. package/dist/cli/schema.d.ts +5 -1
  22. package/dist/cli/schema.js.map +1 -1
  23. package/dist/commands/controller/archive-upload.d.ts +9 -0
  24. package/dist/commands/controller/archive-upload.js +137 -0
  25. package/dist/commands/controller/archive-upload.js.map +1 -0
  26. package/dist/commands/controller/definition.d.ts +1 -0
  27. package/dist/commands/controller/definition.js +9 -1
  28. package/dist/commands/controller/definition.js.map +1 -1
  29. package/dist/commands/controller/independent-archive.d.ts +7 -0
  30. package/dist/commands/controller/independent-archive.js +71 -0
  31. package/dist/commands/controller/independent-archive.js.map +1 -0
  32. package/dist/commands/controller/independent.js +51 -25
  33. package/dist/commands/controller/independent.js.map +1 -1
  34. package/dist/commands/controller/index.js +14 -1
  35. package/dist/commands/controller/index.js.map +1 -1
  36. package/dist/commands/controller/journal-format.d.ts +4 -0
  37. package/dist/commands/controller/journal-format.js +66 -0
  38. package/dist/commands/controller/journal-format.js.map +1 -0
  39. package/dist/commands/controller/launch-ticket.js +3 -2
  40. package/dist/commands/controller/launch-ticket.js.map +1 -1
  41. package/dist/commands/controller/lifecycle-store.d.ts +7 -5
  42. package/dist/commands/controller/lifecycle-store.js +132 -91
  43. package/dist/commands/controller/lifecycle-store.js.map +1 -1
  44. package/dist/commands/controller/local-content.d.ts +11 -6
  45. package/dist/commands/controller/local-content.js +29 -21
  46. package/dist/commands/controller/local-content.js.map +1 -1
  47. package/dist/commands/controller/paths.d.ts +2 -0
  48. package/dist/commands/controller/paths.js +34 -0
  49. package/dist/commands/controller/paths.js.map +1 -0
  50. package/dist/commands/controller/pending-content.d.ts +20 -0
  51. package/dist/commands/controller/pending-content.js +159 -0
  52. package/dist/commands/controller/pending-content.js.map +1 -0
  53. package/dist/commands/controller/providers/codex.js +5 -1
  54. package/dist/commands/controller/providers/codex.js.map +1 -1
  55. package/dist/commands/controller/providers/types.d.ts +4 -0
  56. package/dist/commands/controller/resume-lease-format.d.ts +4 -0
  57. package/dist/commands/controller/resume-lease-format.js +35 -0
  58. package/dist/commands/controller/resume-lease-format.js.map +1 -0
  59. package/dist/commands/controller/resume.js +88 -23
  60. package/dist/commands/controller/resume.js.map +1 -1
  61. package/dist/commands/controller/runtime.js +11 -1
  62. package/dist/commands/controller/runtime.js.map +1 -1
  63. package/dist/commands/controller/sqlite/journal/001-baseline.sql +17 -0
  64. package/dist/commands/controller/sqlite/journal/002-projection.sql +8 -0
  65. package/dist/commands/controller/sqlite/journal/003-operation-acknowledgements.sql +1 -0
  66. package/dist/commands/controller/sqlite/journal/004-projection-gap.sql +1 -0
  67. package/dist/commands/controller/sqlite/journal/005-resources.sql +7 -0
  68. package/dist/commands/controller/sqlite/journal/006-pending-content.sql +12 -0
  69. package/dist/commands/controller/sqlite/resume-lease/001-baseline.sql +7 -0
  70. package/dist/commands/project/definition.js +1 -1
  71. package/dist/commands/project/definition.js.map +1 -1
  72. package/dist/commands/review/definition.js +3 -3
  73. package/dist/commands/review/definition.js.map +1 -1
  74. package/dist/commands/review/listing.js +1 -1
  75. package/dist/commands/review/listing.js.map +1 -1
  76. package/dist/commands/review/runtime.js +3 -1
  77. package/dist/commands/review/runtime.js.map +1 -1
  78. package/dist/commands/review/sqlite/001-baseline.sql +65 -0
  79. package/dist/commands/review/sqlite/002-publications.sql +15 -0
  80. package/dist/commands/review/store-format.d.ts +2 -0
  81. package/dist/commands/review/store-format.js +35 -0
  82. package/dist/commands/review/store-format.js.map +1 -0
  83. package/dist/commands/review/store.d.ts +8 -1
  84. package/dist/commands/review/store.js +46 -176
  85. package/dist/commands/review/store.js.map +1 -1
  86. package/dist/commands/skill/read.d.ts +2 -0
  87. package/dist/commands/skill/read.js +36 -0
  88. package/dist/commands/skill/read.js.map +1 -0
  89. package/dist/commands/skill/skills/using-daynight/references/authorization.md +1 -0
  90. package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +19 -7
  91. package/dist/commands/skill/skills/using-daynight/references/goal.md +33 -8
  92. package/dist/commands/skill/skills/using-daynight/references/run-task.md +1 -1
  93. package/dist/commands/skill/skills/using-daynight/references/task-content.md +1 -0
  94. package/dist/commands/skill/usage.md +162 -0
  95. package/dist/commands/task/definition.js +1 -1
  96. package/dist/commands/task/definition.js.map +1 -1
  97. package/dist/commands/worker/backends/sqlite/001-baseline.sql +4 -0
  98. package/dist/commands/worker/backends/web-process.js +11 -11
  99. package/dist/commands/worker/backends/web-process.js.map +1 -1
  100. package/dist/commands/worker/backends/web-record.d.ts +11 -0
  101. package/dist/commands/worker/backends/web-record.js +151 -0
  102. package/dist/commands/worker/backends/web-record.js.map +1 -0
  103. package/dist/commands/worker/backends/web-store-format.d.ts +2 -0
  104. package/dist/commands/worker/backends/web-store-format.js +33 -0
  105. package/dist/commands/worker/backends/web-store-format.js.map +1 -0
  106. package/dist/commands/worker/backends/web-store.d.ts +5 -1
  107. package/dist/commands/worker/backends/web-store.js +44 -170
  108. package/dist/commands/worker/backends/web-store.js.map +1 -1
  109. package/dist/commands/worker/backends/web.d.ts +1 -0
  110. package/dist/commands/worker/backends/web.js +13 -4
  111. package/dist/commands/worker/backends/web.js.map +1 -1
  112. package/dist/commands/worker/cleanup.d.ts +1 -1
  113. package/dist/commands/worker/cleanup.js.map +1 -1
  114. package/dist/commands/worker/coordinator.js +1 -1
  115. package/dist/commands/worker/coordinator.js.map +1 -1
  116. package/dist/commands/worker/definition.js +2 -2
  117. package/dist/commands/worker/definition.js.map +1 -1
  118. package/dist/commands/worker/diagnostics.d.ts +3 -0
  119. package/dist/commands/worker/diagnostics.js +15 -0
  120. package/dist/commands/worker/diagnostics.js.map +1 -1
  121. package/dist/commands/worker/execution.d.ts +2 -0
  122. package/dist/commands/worker/execution.js +17 -4
  123. package/dist/commands/worker/execution.js.map +1 -1
  124. package/dist/commands/worker/herdr/agents.d.ts +9 -1
  125. package/dist/commands/worker/herdr/agents.js +22 -6
  126. package/dist/commands/worker/herdr/agents.js.map +1 -1
  127. package/dist/commands/worker/herdr/arguments.d.ts +4 -0
  128. package/dist/commands/worker/herdr/arguments.js +17 -0
  129. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  130. package/dist/commands/worker/herdr/codex-config.d.ts +8 -0
  131. package/dist/commands/worker/herdr/codex-config.js +75 -0
  132. package/dist/commands/worker/herdr/codex-config.js.map +1 -0
  133. package/dist/commands/worker/herdr/preflight.js +1 -18
  134. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  135. package/dist/commands/worker/herdr.d.ts +6 -2
  136. package/dist/commands/worker/herdr.js +3 -2
  137. package/dist/commands/worker/herdr.js.map +1 -1
  138. package/dist/commands/worker/prompts.js +7 -2
  139. package/dist/commands/worker/prompts.js.map +1 -1
  140. package/dist/commands/worker/runtime.js +68 -7
  141. package/dist/commands/worker/runtime.js.map +1 -1
  142. package/dist/commands/worker/sqlite/005-baseline.sql +18 -0
  143. package/dist/commands/worker/store-format.d.ts +2 -0
  144. package/dist/commands/worker/store-format.js +35 -0
  145. package/dist/commands/worker/store-format.js.map +1 -0
  146. package/dist/commands/worker/store.d.ts +2 -0
  147. package/dist/commands/worker/store.js +36 -69
  148. package/dist/commands/worker/store.js.map +1 -1
  149. package/dist/config/agent-cli-aliases.d.ts +5 -0
  150. package/dist/config/agent-cli-aliases.js +37 -0
  151. package/dist/config/agent-cli-aliases.js.map +1 -0
  152. package/dist/config/paths.d.ts +1 -1
  153. package/dist/config/paths.js +6 -2
  154. package/dist/config/paths.js.map +1 -1
  155. package/dist/platform/diagnostics.js +3 -0
  156. package/dist/platform/diagnostics.js.map +1 -1
  157. package/dist/platform/instance-lock.d.ts +15 -0
  158. package/dist/platform/instance-lock.js +45 -3
  159. package/dist/platform/instance-lock.js.map +1 -1
  160. package/dist/platform/sqlite-access.d.ts +40 -0
  161. package/dist/platform/sqlite-access.js +333 -0
  162. package/dist/platform/sqlite-access.js.map +1 -0
  163. package/dist/platform/sqlite-error.d.ts +39 -0
  164. package/dist/platform/sqlite-error.js +36 -0
  165. package/dist/platform/sqlite-error.js.map +1 -0
  166. package/dist/platform/sqlite-format.d.ts +31 -0
  167. package/dist/platform/sqlite-format.js +98 -0
  168. package/dist/platform/sqlite-format.js.map +1 -0
  169. package/dist/platform/sqlite-sql.d.ts +12 -0
  170. package/dist/platform/sqlite-sql.js +61 -0
  171. package/dist/platform/sqlite-sql.js.map +1 -0
  172. package/dist/session/archive.d.ts +25 -0
  173. package/dist/session/archive.js +100 -0
  174. package/dist/session/archive.js.map +1 -0
  175. 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) => JSON.parse(String(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
- const atomic = (action) => db.transaction(action).immediate();
23
- try {
24
- atomic(() => {
25
- const version = db.pragma("user_version", { simple: true });
26
- if (version !== 0 && version !== 1 && version !== 2 && version !== 3 && version !== 4 && version !== 5)
27
- throw new Error("Unsupported controller journal version.");
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
- catch (error) {
76
- db.close();
77
- throw error;
78
- }
79
- const getSnapshot = () => json(db.prepare("SELECT snapshot FROM execution WHERE id=1").get().snapshot);
80
- const getOperation = (operationId) => { const row = db.prepare("SELECT value FROM operations WHERE id=?").get(operationId); return row === undefined ? null : json(row.value); };
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(db, ticket.sessionId);
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 = db.prepare("SELECT content_hash, CAST(revision AS TEXT) AS revision, CAST(rowid AS TEXT) AS entrySeq FROM projection WHERE id=?").get(entry.entryId);
166
- if (previous?.content_hash === contentHash)
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 ?? db.prepare("SELECT CAST(COALESCE(MAX(rowid),0)+1 AS TEXT) AS value FROM projection").get().value;
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
- db.prepare("INSERT INTO projection(id,content_hash,revision,value) VALUES(?,?,?,?) ON CONFLICT(id) DO UPDATE SET content_hash=excluded.content_hash,revision=excluded.revision,value=excluded.value").run(entry.entryId, contentHash, BigInt(revision), JSON.stringify(payload));
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: () => { if (closed)
224
- return; db.prepare("UPDATE execution SET owner_pid=NULL WHERE id=1 AND owner_pid=?").run(process.pid); db.close(); closed = true; },
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
- /** Read-only recovery never acquires the native writer lease. */
228
- export const readControllerSnapshot = (file) => {
229
- let db;
230
- try {
231
- db = new Database(file, { readonly: true, fileMustExist: true });
232
- }
233
- catch (error) {
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
- try {
255
- return db.transaction(() => {
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 stopped = { ...observed, lifecycle: "stopped", nativeStopped: true, stoppedAt: observed.stoppedAt ?? new Date().toISOString(), activity: "stopped", capabilities: { send: false, steer: false, cancel: false, respond: false } };
260
- db.prepare("UPDATE execution SET snapshot=?,owner_pid=NULL WHERE id=1").run(JSON.stringify(stopped));
261
- return stopped;
262
- }).immediate();
263
- }
264
- finally {
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":"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"}
@@ -1,4 +1,4 @@
1
- import type Database from "better-sqlite3";
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
- export declare const createLocalSessionContent: (db: Database.Database, sessionId: string) => {
11
- readTimeline(query: LocalTimelineQuery): Omit<TimelinePage, "sessionId" | "lastEventSeq"> & {
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(): TimelineEntry[];
15
- saveResource(resource: SessionResource, content?: Uint8Array): void;
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 { parseTimelineEntry, parseSessionResource } from "../../session/protocol.js";
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 = (db, sessionId) => {
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 = db.prepare("SELECT descriptor FROM resources WHERE id=?").get(id);
20
- return row ? [parseSessionResource(JSON.parse(row.descriptor))] : [];
19
+ const row = store.resources.get(id);
20
+ return row ? [row.resource] : [];
21
21
  });
22
22
  };
23
- return {
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 rows = db.prepare(`SELECT CAST(rowid AS TEXT) AS seq, value FROM projection ${where} ORDER BY rowid ${ascending ? "ASC" : "DESC"} LIMIT ?`).all(...(query.direction === "tail" ? [query.limit] : [pivot, query.limit]));
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(parseTimelineEntry({ ...JSON.parse(row.value), entrySeq: row.seq }));
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 && db.prepare("SELECT 1 FROM projection WHERE rowid < ? LIMIT 1").get(sequence(first)) !== undefined;
67
- const hasAfter = last !== undefined && db.prepare("SELECT 1 FROM projection WHERE rowid > ? LIMIT 1").get(sequence(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 = db.prepare("SELECT CAST(rowid AS TEXT) AS seq,value FROM projection WHERE json_extract(value,'$.kind')='interaction' AND json_extract(value,'$.interaction.state')='pending' ORDER BY rowid LIMIT 101").all();
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.map(row => parseTimelineEntry({ ...JSON.parse(row.value), entrySeq: row.seq }));
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 = db.prepare("SELECT descriptor FROM resources WHERE id=?").get(resource.resourceId);
81
+ const previous = store.resources.get(resource.resourceId);
81
82
  if (previous) {
82
- const old = parseSessionResource(JSON.parse(previous.descriptor));
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
- db.prepare("INSERT INTO resources(id,descriptor,content) VALUES(?,?,?) ON CONFLICT(id) DO UPDATE SET descriptor=excluded.descriptor,content=COALESCE(excluded.content,resources.content)").run(resource.resourceId, JSON.stringify(resource), content ? Buffer.from(content) : null);
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 = db.prepare("SELECT descriptor,content FROM resources WHERE id=?").get(resourceId);
93
- if (!row?.content)
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 = parseSessionResource(JSON.parse(row.descriptor));
96
- if (resource.status !== "available" || position > BigInt(row.content.length))
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, row.content.length);
99
- return { kind: "resource", resource, offset, data: row.content.subarray(Number(position), end).toString("base64"), eof: end === row.content.length };
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":"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"}
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,oBAAoB,EAA4C,MAAM,2BAA2B,CAAC;AAI3G,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE;IACzC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,oBAAoB;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACtI,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAqB,EAAE,SAAiB,EAAE,YAAiC,EAAE,EAAE;IACvH,MAAM,YAAY,GAAG,CAAC,KAA+B,EAAqB,EAAE;QAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9I,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;oBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,OAAO,GAAG;QACd,YAAY,CAAC,KAAyB;YACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC1L,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAC5I,IAAI,CAAC;oBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC5F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;wBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;oBACrK,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAAC,CAAC;YAChE,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC;YAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAC1J,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAoB,EAAE,CAAC;YAClC,wEAAwE;YACxE,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/E,IAAI,KAAK,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;oBAC1F,MAAM;gBACR,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,KAAK,IAAI,IAAI,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,SAAS;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;YAChE,MAAM,MAAM,GAAG,CAAC,GAAuB,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9K,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3G,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACjN,CAAC;QACD,mBAAmB;YACjB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpM,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACtG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,YAAY,CAAC,QAAyB,EAAE,OAAoB;YAC1D,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAClQ,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC7J,CAAC;YACD,KAAK,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QACrH,CAAC;QACD,YAAY,CAAC,UAAkB,EAAE,MAAc,EAAE,KAAa;YAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACxH,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvG,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACpI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/I,CAAC;KACF,CAAC;IACF,OAAO;QACL,YAAY,EAAE,CAAC,KAAyB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjG,mBAAmB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACjF,YAAY,EAAE,CAAC,QAAyB,EAAE,KAAkB,EAAQ,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtI,YAAY,EAAE,CAAC,UAAkB,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;KAC9I,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const resolveControllerIpcEndpoint: (home: string, launchId: string, platform?: NodeJS.Platform) => string;
2
+ export declare const prepareControllerIpcEndpoint: (home: string, launchId: string) => Promise<string>;