agent-conveyor 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { randomUUID } from "node:crypto";
1
2
  export class RoutedNotificationError extends Error {
2
3
  constructor(message) {
3
4
  super(message);
@@ -110,7 +111,61 @@ export function consumeNextSessionInboxItemSync(database, options) {
110
111
  return null;
111
112
  }
112
113
  const consumed = database.prepare(sessionInboxQuery("rn.id = ?")).get(row.id);
113
- return consumed ? sessionInboxRecord(consumed) : null;
114
+ if (!consumed) {
115
+ return null;
116
+ }
117
+ const record = sessionInboxRecord(consumed);
118
+ advanceRalphLoopIterationOnConsumeSync(database, {
119
+ consumed: record,
120
+ now: options.now ?? new Date().toISOString(),
121
+ });
122
+ return record;
123
+ }
124
+ function advanceRalphLoopIterationOnConsumeSync(database, options) {
125
+ if (options.consumed.signal_type !== "continue_iteration") {
126
+ return;
127
+ }
128
+ const loopPayload = isRecord(options.consumed.payload.ralph_loop)
129
+ ? options.consumed.payload.ralph_loop
130
+ : null;
131
+ const runId = typeof loopPayload?.run_id === "string" ? loopPayload.run_id : null;
132
+ const requestedIteration = integerMetadata(loopPayload?.requested_iteration);
133
+ if (!runId || requestedIteration === null) {
134
+ return;
135
+ }
136
+ const row = database.prepare(`
137
+ select task_id, metadata_json
138
+ from runs
139
+ where id = ?
140
+ `).get(runId);
141
+ if (!row || row.task_id !== options.consumed.task_id) {
142
+ return;
143
+ }
144
+ const metadata = parseJsonObject(row.metadata_json);
145
+ const previousIteration = integerMetadata(metadata.current_iteration);
146
+ const maxIterations = integerMetadata(metadata.max_iterations);
147
+ if (previousIteration === null
148
+ || maxIterations === null
149
+ || requestedIteration <= previousIteration
150
+ || requestedIteration > maxIterations) {
151
+ return;
152
+ }
153
+ metadata.current_iteration = requestedIteration;
154
+ database.prepare("update runs set metadata_json = ? where id = ?")
155
+ .run(stableJson(metadata), runId);
156
+ emitLoopIterationAdvancedTelemetry(database, {
157
+ commandId: options.consumed.command_id,
158
+ consumedBySessionId: options.consumed.consumed_by_session_id,
159
+ correlationId: options.consumed.correlation_id,
160
+ currentIteration: requestedIteration,
161
+ notificationId: options.consumed.id,
162
+ previousIteration,
163
+ requestedIteration,
164
+ runId,
165
+ targetSessionName: options.consumed.target_session_name,
166
+ taskId: options.consumed.task_id,
167
+ timestamp: options.now,
168
+ });
114
169
  }
115
170
  function routedNotificationSelect() {
116
171
  return `
@@ -191,6 +246,52 @@ function sessionRow(database, sessionName) {
191
246
  }
192
247
  return row;
193
248
  }
249
+ function emitLoopIterationAdvancedTelemetry(database, options) {
250
+ const eventId = `telemetry-${randomUUID()}`;
251
+ const attributes = {
252
+ consumed_by_session_id: options.consumedBySessionId,
253
+ current_iteration: options.currentIteration,
254
+ previous_iteration: options.previousIteration,
255
+ requested_iteration: options.requestedIteration,
256
+ target_session_name: options.targetSessionName,
257
+ };
258
+ const correlation = {
259
+ command_id: options.commandId,
260
+ correlation_id: options.correlationId,
261
+ notification_id: options.notificationId,
262
+ run_id: options.runId,
263
+ };
264
+ const attributesJson = stableJson(attributes);
265
+ database.prepare(`
266
+ insert into telemetry_events(
267
+ id, run_id, task_id, timestamp, actor, event_type, severity,
268
+ summary, correlation_json, attributes_json
269
+ )
270
+ values (?, ?, ?, ?, 'dispatch', 'ralph_loop_iteration_advanced', 'info', ?, ?, ?)
271
+ `).run(eventId, options.runId, options.taskId, options.timestamp, `Ralph loop advanced to iteration ${options.currentIteration}.`, stableJson(correlation), attributesJson);
272
+ database.prepare(`
273
+ insert into telemetry_events_fts(
274
+ event_id, task_id, run_id, actor, event_type, summary, attributes
275
+ )
276
+ values (?, ?, ?, 'dispatch', 'ralph_loop_iteration_advanced', ?, ?)
277
+ `).run(eventId, options.taskId, options.runId, `Ralph loop advanced to iteration ${options.currentIteration}.`, attributesJson);
278
+ }
279
+ function parseJsonObject(json) {
280
+ const value = JSON.parse(json);
281
+ return isRecord(value) ? value : {};
282
+ }
283
+ function integerMetadata(value) {
284
+ if (typeof value === "number" && Number.isInteger(value)) {
285
+ return value;
286
+ }
287
+ if (typeof value === "string" && /^-?\d+$/.test(value)) {
288
+ return Number(value);
289
+ }
290
+ return null;
291
+ }
292
+ function isRecord(value) {
293
+ return value !== null && typeof value === "object" && !Array.isArray(value);
294
+ }
194
295
  function stableJson(value) {
195
296
  return JSON.stringify(sortJson(value));
196
297
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/runtime/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/runtime/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA0CzC,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAsB,EAAE,eAAuB;IAC9F,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,eAAe,CAErF,CAAC;IACd,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAsB,EACtB,OAkBC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,uBAAuB,CAAC,8CAA8C,YAAY,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;;GAQ/B,CAAC,CAAC,GAAG,CACJ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,IAAI,IAAI,EAC7B,OAAO,CAAC,oBAAoB,IAAI,IAAI,EACpC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,SAAS,IAAI,IAAI,EACzB,SAAS,EACT,KAAK,EACL,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAC3B,OAAO,CAAC,SAAS,IAAI,IAAI,EACzB,SAAS,EACT,OAAO,CAAC,cAAc,IAAI,IAAI,EAC9B,YAAY,CACb,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAsB,EACtB,OAMC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IACjF,QAAQ,CAAC,OAAO,CAAC;;;;GAIhB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,2CAA2C,CACzD,QAAsB,EACtB,OAKC;IAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC5E,QAAQ,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACrH,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,CAAC;;;;;;;GAOhB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,2CAA2C,CACzD,QAAsB,EACtB,OAAkD;IAElD,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;GAUhB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAsB,EAAE,OAAoC;IAClG,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM;QAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,wBAAwB,EAAE,gCAAgC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuC;QAC3I,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,wBAAwB,EAAE,cAAc,CAAC,CAAC,GAAG,EAAwC,CAAC;IAC9G,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAsB,EACtB,OAA2E;IAE3E,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe;QACnC,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC,gFAAgF,CAAC;IACrF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CACtE,OAAO,CAAC,EAAE,EACV,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CACD,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,QAAsB,EACtB,OAA8C;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;;GAQ5B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAA+B,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;GAO/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAgC,CAAC;IAC7G,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC5C,sCAAsC,CAAC,QAAQ,EAAE;QAC/C,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC7C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sCAAsC,CAC7C,QAAsB,EACtB,OAAsD;IAEtD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,oBAAoB,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;QACrC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,OAAO,WAAW,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,kBAAkB,GAAG,eAAe,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;GAI5B,CAAC,CAAC,GAAG,CAAC,KAAK,CAA2D,CAAC;IACxE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC/D,IACE,iBAAiB,KAAK,IAAI;WACvB,aAAa,KAAK,IAAI;WACtB,kBAAkB,IAAI,iBAAiB;WACvC,kBAAkB,GAAG,aAAa,EACrC,CAAC;QACD,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,gDAAgD,CAAC;SAC/D,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,kCAAkC,CAAC,QAAQ,EAAE;QAC3C,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;QACtC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,sBAAsB;QAC5D,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc;QAC9C,gBAAgB,EAAE,kBAAkB;QACpC,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;QACnC,iBAAiB;QACjB,kBAAkB;QAClB,KAAK;QACL,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB;QACvD,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QAChC,SAAS,EAAE,OAAO,CAAC,GAAG;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;;;;;;;;GAQN,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,OAAO;;;;;;;;;;;;;;;;;YAiBG,WAAW;;GAEpB,CAAC;AACJ,CAAC;AAsCD,SAAS,kBAAkB,CAAC,GAAoB;IAC9C,OAAO;QACL,GAAG,wBAAwB,CAAC,GAAG,CAAC;QAChC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,GAA0B;IAC1D,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;QAClD,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;QACxD,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACzD,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACrD,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;QAClD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,QAAsB,EAAE,WAAmB;IAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,WAAW,CAIrF,CAAC;IACd,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,uBAAuB,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kCAAkC,CACzC,QAAsB,EACtB,OAYC;IAED,MAAM,OAAO,GAAG,aAAa,UAAU,EAAE,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG;QACjB,sBAAsB,EAAE,OAAO,CAAC,mBAAmB;QACnD,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;QAC3C,kBAAkB,EAAE,OAAO,CAAC,iBAAiB;QAC7C,mBAAmB,EAAE,OAAO,CAAC,kBAAkB;QAC/C,mBAAmB,EAAE,OAAO,CAAC,iBAAiB;KAC/C,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,cAAc,EAAE,OAAO,CAAC,aAAa;QACrC,eAAe,EAAE,OAAO,CAAC,cAAc;QACvC,MAAM,EAAE,OAAO,CAAC,KAAK;KACtB,CAAC;IACF,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC;;;;;;GAMhB,CAAC,CAAC,GAAG,CACJ,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,EACjB,oCAAoC,OAAO,CAAC,gBAAgB,GAAG,EAC/D,UAAU,CAAC,WAAW,CAAC,EACvB,cAAc,CACf,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC;;;;;GAKhB,CAAC,CAAC,GAAG,CACJ,OAAO,EACP,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,EACb,oCAAoC,OAAO,CAAC,gBAAgB,GAAG,EAC/D,cAAc,CACf,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { mkdirSync } from "node:fs";
2
- import { spawnSync } from "node:child_process";
3
2
  import { dirname } from "node:path";
4
3
  import { DatabaseSync } from "node:sqlite";
5
4
  import { defaultDbPath } from "./files.js";
@@ -35,7 +34,7 @@ export function initializeDatabaseSync(database) {
35
34
  return;
36
35
  }
37
36
  if (userVersion !== 0 || hasUserTables(database)) {
38
- delegateLegacyMigrationToPython(database, userVersion);
37
+ migrateLegacySchemaSync(database, userVersion);
39
38
  return;
40
39
  }
41
40
  database.exec(SCHEMA_V23_SQL);
@@ -43,32 +42,132 @@ export function initializeDatabaseSync(database) {
43
42
  database.prepare("insert or ignore into schema_migrations(version, applied_at) values (?, ?)").run(SCHEMA_VERSION, now);
44
43
  database.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
45
44
  }
46
- function delegateLegacyMigrationToPython(database, userVersion) {
47
- const path = databasePath(database);
48
- if (!path) {
45
+ function migrateLegacySchemaSync(database, userVersion) {
46
+ if (!databasePath(database)) {
49
47
  throw new WorkerctlDatabaseError(`Migrating existing schema version ${userVersion} requires a file-backed database`);
50
48
  }
51
- const script = `
52
- from pathlib import Path
53
- from workerctl import db
54
- conn = db.connect(Path(${JSON.stringify(path)}))
55
- try:
56
- db.initialize_database(conn)
57
- finally:
58
- conn.close()
59
- `;
60
- const result = spawnSync("python3", ["-c", script], {
61
- cwd: process.cwd(),
62
- encoding: "utf8",
63
- });
64
- if (result.status !== 0) {
65
- const detail = (result.stderr || result.stdout || "unknown migration error").trim();
66
- throw new WorkerctlDatabaseError(`Python legacy migration failed: ${detail}`);
49
+ database.exec("PRAGMA foreign_keys = OFF");
50
+ try {
51
+ migrateCommandsBlockedStateSync(database);
52
+ migrateCommandAttemptsBlockedStateSync(database);
53
+ database.exec(idempotentSchemaSql());
54
+ addColumnIfMissing(database, "manager_configs", "recipe_name", "text");
55
+ addColumnIfMissing(database, "sessions", "codex_app_thread_id", "text");
56
+ addColumnIfMissing(database, "sessions", "codex_app_thread_title", "text");
57
+ database.prepare("insert or ignore into schema_migrations(version, applied_at) values (?, ?)").run(SCHEMA_VERSION, new Date().toISOString());
58
+ database.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
67
59
  }
68
- const migratedVersion = pragmaNumber(database, "user_version");
69
- if (migratedVersion !== SCHEMA_VERSION) {
70
- throw new WorkerctlDatabaseError(`Python legacy migration left schema version ${migratedVersion}; expected ${SCHEMA_VERSION}`);
60
+ finally {
61
+ database.exec("PRAGMA foreign_keys = ON");
71
62
  }
63
+ if (pragmaNumber(database, "foreign_keys") !== 1) {
64
+ throw new WorkerctlDatabaseError("SQLite foreign key enforcement is not enabled after legacy migration");
65
+ }
66
+ }
67
+ function migrateCommandsBlockedStateSync(database) {
68
+ if (!hasTable(database, "commands") || tableSql(database, "commands").includes("'blocked'")) {
69
+ return;
70
+ }
71
+ const columns = tableColumns(database, "commands");
72
+ database.exec(`
73
+ create table commands_v22(
74
+ id text primary key,
75
+ idempotency_key text unique not null,
76
+ created_at text not null,
77
+ updated_at text not null,
78
+ task_id text references tasks(id),
79
+ worker_id text references workers(id),
80
+ manager_id text references managers(id),
81
+ correlation_id text,
82
+ type text not null,
83
+ state text not null check (state in ('pending','attempted','succeeded','failed','blocked')),
84
+ available_at text,
85
+ claimed_by text,
86
+ claimed_at text,
87
+ claim_expires_at text,
88
+ attempts integer not null default 0 check (attempts >= 0),
89
+ max_attempts integer not null default 1 check (max_attempts > 0),
90
+ required_permission text,
91
+ payload_json text not null check (json_valid(payload_json)),
92
+ result_json text check (result_json is null or json_valid(result_json)),
93
+ error text
94
+ );
95
+
96
+ insert into commands_v22(
97
+ id, idempotency_key, created_at, updated_at, task_id, worker_id,
98
+ manager_id, correlation_id, type, state, available_at, claimed_by,
99
+ claimed_at, claim_expires_at, attempts, max_attempts,
100
+ required_permission, payload_json, result_json, error
101
+ )
102
+ select
103
+ ${selectColumnOrDefault(columns, "id", "lower(hex(randomblob(16)))")},
104
+ ${selectColumnOrDefault(columns, "idempotency_key", "lower(hex(randomblob(16)))")},
105
+ ${selectColumnOrDefault(columns, "created_at", "datetime('now')")},
106
+ ${selectColumnOrDefault(columns, "updated_at", "datetime('now')")},
107
+ ${selectColumnOrDefault(columns, "task_id", "null")},
108
+ ${selectColumnOrDefault(columns, "worker_id", "null")},
109
+ ${selectColumnOrDefault(columns, "manager_id", "null")},
110
+ ${selectColumnOrDefault(columns, "correlation_id", "null")},
111
+ ${selectColumnOrDefault(columns, "type", "'notify_manager'")},
112
+ ${selectColumnOrDefault(columns, "state", "'pending'")},
113
+ ${selectColumnOrDefault(columns, "available_at", "null")},
114
+ ${selectColumnOrDefault(columns, "claimed_by", "null")},
115
+ ${selectColumnOrDefault(columns, "claimed_at", "null")},
116
+ ${selectColumnOrDefault(columns, "claim_expires_at", "null")},
117
+ ${selectColumnOrDefault(columns, "attempts", "0")},
118
+ ${selectColumnOrDefault(columns, "max_attempts", "1")},
119
+ ${selectColumnOrDefault(columns, "required_permission", "null")},
120
+ ${selectColumnOrDefault(columns, "payload_json", "'{}'")},
121
+ ${selectColumnOrDefault(columns, "result_json", "null")},
122
+ ${selectColumnOrDefault(columns, "error", "null")}
123
+ from commands;
124
+
125
+ drop table commands;
126
+ alter table commands_v22 rename to commands;
127
+ `);
128
+ }
129
+ function migrateCommandAttemptsBlockedStateSync(database) {
130
+ if (!hasTable(database, "command_attempts") || tableSql(database, "command_attempts").includes("'blocked'")) {
131
+ return;
132
+ }
133
+ const columns = tableColumns(database, "command_attempts");
134
+ database.exec(`
135
+ create table command_attempts_v22(
136
+ id integer primary key autoincrement,
137
+ command_id text not null references commands(id),
138
+ correlation_id text not null,
139
+ dispatcher_id text not null,
140
+ started_at text not null,
141
+ finished_at text,
142
+ state text not null check (state in ('running','succeeded','failed','abandoned','blocked')),
143
+ result_json text check (result_json is null or json_valid(result_json)),
144
+ error text,
145
+ side_effect_started integer not null default 0 check (side_effect_started in (0, 1)),
146
+ side_effect_completed integer not null default 0 check (side_effect_completed in (0, 1))
147
+ );
148
+
149
+ insert into command_attempts_v22(
150
+ id, command_id, correlation_id, dispatcher_id, started_at,
151
+ finished_at, state, result_json, error, side_effect_started,
152
+ side_effect_completed
153
+ )
154
+ select
155
+ ${selectColumnOrDefault(columns, "id", "null")},
156
+ ${selectColumnOrDefault(columns, "command_id", "''")},
157
+ ${selectColumnOrDefault(columns, "correlation_id", "lower(hex(randomblob(16)))")},
158
+ ${selectColumnOrDefault(columns, "dispatcher_id", "'legacy-migration'")},
159
+ ${selectColumnOrDefault(columns, "started_at", "datetime('now')")},
160
+ ${selectColumnOrDefault(columns, "finished_at", "null")},
161
+ ${selectColumnOrDefault(columns, "state", "'running'")},
162
+ ${selectColumnOrDefault(columns, "result_json", "null")},
163
+ ${selectColumnOrDefault(columns, "error", "null")},
164
+ ${selectColumnOrDefault(columns, "side_effect_started", "0")},
165
+ ${selectColumnOrDefault(columns, "side_effect_completed", "0")}
166
+ from command_attempts;
167
+
168
+ drop table command_attempts;
169
+ alter table command_attempts_v22 rename to command_attempts;
170
+ `);
72
171
  }
73
172
  export function databaseHealthSync(database) {
74
173
  const foreignKeys = pragmaNumber(database, "foreign_keys");
@@ -112,6 +211,45 @@ function hasUserTables(database) {
112
211
  `).get();
113
212
  return row.count > 0;
114
213
  }
214
+ function idempotentSchemaSql() {
215
+ return SCHEMA_V23_SQL
216
+ .replaceAll("CREATE TABLE ", "CREATE TABLE IF NOT EXISTS ")
217
+ .replaceAll("CREATE VIRTUAL TABLE ", "CREATE VIRTUAL TABLE IF NOT EXISTS ")
218
+ .replaceAll("CREATE UNIQUE INDEX ", "CREATE UNIQUE INDEX IF NOT EXISTS ")
219
+ .replaceAll("CREATE INDEX ", "CREATE INDEX IF NOT EXISTS ")
220
+ .replaceAll("CREATE TRIGGER ", "CREATE TRIGGER IF NOT EXISTS ");
221
+ }
222
+ function hasTable(database, table) {
223
+ const row = database.prepare(`
224
+ select count(*) as count
225
+ from sqlite_master
226
+ where type = 'table'
227
+ and name = ?
228
+ `).get(table);
229
+ return row.count > 0;
230
+ }
231
+ function tableSql(database, table) {
232
+ const row = database.prepare(`
233
+ select sql
234
+ from sqlite_master
235
+ where type = 'table'
236
+ and name = ?
237
+ `).get(table);
238
+ return row?.sql ?? "";
239
+ }
240
+ function tableColumns(database, table) {
241
+ const rows = database.prepare(`PRAGMA table_info(${table})`).all();
242
+ return new Set(rows.map((row) => row.name));
243
+ }
244
+ function addColumnIfMissing(database, table, column, definition) {
245
+ if (!hasTable(database, table) || tableColumns(database, table).has(column)) {
246
+ return;
247
+ }
248
+ database.exec(`alter table ${table} add column ${column} ${definition}`);
249
+ }
250
+ function selectColumnOrDefault(columns, column, fallbackSql) {
251
+ return columns.has(column) ? column : fallbackSql;
252
+ }
115
253
  function schemaNames(database, type) {
116
254
  const rows = database.prepare(`
117
255
  select name
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/state/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiBjD,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,aAAa,EAAE;IACrD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAsB;IAC5D,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,sBAAsB,CAAC,+CAA+C,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAsB;IAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,WAAW,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,IAAI,sBAAsB,CAC9B,2BAA2B,WAAW,sCAAsC,cAAc,GAAG,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IACD,IAAI,WAAW,KAAK,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,+BAA+B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CACd,4EAA4E,CAC7E,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,+BAA+B,CAAC,QAAsB,EAAE,WAAmB;IAClF,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,sBAAsB,CAC9B,qCAAqC,WAAW,kCAAkC,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG;;;yBAGQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;CAK5C,CAAC;IACA,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QAClD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,MAAM,IAAI,sBAAsB,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,eAAe,KAAK,cAAc,EAAE,CAAC;QACvC,MAAM,IAAI,sBAAsB,CAC9B,+CAA+C,eAAe,cAAc,cAAc,EAAE,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACvD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,QAAQ;SAC3B,OAAO,CAAC,uDAAuD,CAAC;SAChE,GAAG,EAAgC,CAAC;IAEvC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;;;GAGnC,CAAC,CAAC,GAAG,EAAE,CAAC;IAET,MAAM,MAAM,GAAoB;QAC9B,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;QACnE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;QACjG,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,IAAI,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;QACrE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,CAAC,OAAO,KAAK,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;QACtG,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,KAAK,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE;QAChF,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE;QAC7G,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAClH,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE;QACvH,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,EAAE;KACvE,CAAC;IAEF,OAAO;QACL,MAAM;QACN,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,cAAc,EAAE,aAAa,CAAC,OAAO;QACrC,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAsB;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;GAK5B,CAAC,CAAC,GAAG,EAAuB,CAAC;IAC9B,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,QAAsB,EAAE,IAAmC;IAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;GAK7B,CAAC,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;IACxC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,QAAsB;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAuB,CAAC;IAChF,OAAO,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,QAAsB,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,QAAsB,EAAE,IAAY;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,EAAqC,CAAC;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,OAAO,CAAC,QAAqB,EAAE,MAAmB;IACzD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,QAAQ,CAAC,QAAqB,EAAE,MAAmB;IAC1D,OAAO,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/state/database.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- // Generated from a Python-created Agent Conveyor v22 database schema.
2
- // Regenerate deliberately when workerctl/db.py SCHEMA_VERSION changes.
1
+ // Generated from the archived Agent Conveyor v24 database schema.
2
+ // Regenerate deliberately when SCHEMA_VERSION changes.
3
3
  export const SCHEMA_V23_SQL = String.raw `
4
4
  CREATE TABLE acceptance_criteria(
5
5
  id integer primary key autoincrement,
@@ -287,6 +287,8 @@ CREATE TABLE sessions(
287
287
  tmux_pane_id text,
288
288
  codex_session_path text,
289
289
  codex_session_id text,
290
+ codex_app_thread_id text,
291
+ codex_app_thread_title text,
290
292
  pid integer,
291
293
  cwd text not null,
292
294
  registered_at text not null,
@@ -1 +1 @@
1
- {"version":3,"file":"schema-v23.js","sourceRoot":"","sources":["../../src/state/schema-v23.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmjBvC,CAAC"}
1
+ {"version":3,"file":"schema-v23.js","sourceRoot":"","sources":["../../src/state/schema-v23.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,uDAAuD;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqjBvC,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const SCHEMA_VERSION = 23;
1
+ export declare const SCHEMA_VERSION = 24;
2
2
  export declare const REQUIRED_TABLES: Set<string>;
3
3
  export declare const REQUIRED_INDEXES: Set<string>;
4
4
  export declare const REQUIRED_TRIGGERS: Set<string>;
@@ -1,4 +1,4 @@
1
- export const SCHEMA_VERSION = 23;
1
+ export const SCHEMA_VERSION = 24;
2
2
  export const REQUIRED_TABLES = new Set([
3
3
  "acceptance_criteria",
4
4
  "agent_observations",