agent-conveyor 0.1.13 → 0.1.15

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.
@@ -0,0 +1,438 @@
1
+ import { randomUUID } from "node:crypto";
2
+ export class CampaignStateError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = "CampaignStateError";
6
+ }
7
+ }
8
+ export function createCampaignSync(database, options) {
9
+ const timestamp = options.now ?? new Date().toISOString();
10
+ const campaignId = options.campaignId ?? `campaign-${randomUUID()}`;
11
+ database.prepare(`
12
+ insert into campaigns(id, name, objective, status, metadata_json, created_at, updated_at)
13
+ values (?, ?, ?, ?, ?, ?, ?)
14
+ `).run(campaignId, options.name, options.objective, options.status ?? "active", json(options.metadata), timestamp, timestamp);
15
+ return campaignId;
16
+ }
17
+ export function addCampaignWorkerSlotSync(database, options) {
18
+ const campaign = campaignRow(database, options.campaign);
19
+ if (options.sessionId) {
20
+ requireWorkerSession(database, options.sessionId);
21
+ }
22
+ const timestamp = options.now ?? new Date().toISOString();
23
+ const slotId = options.slotId ?? `campaign-slot-${randomUUID()}`;
24
+ database.prepare(`
25
+ insert into campaign_worker_slots(
26
+ id, campaign_id, slot_key, role_label, channel, session_id,
27
+ codex_app_thread_id, codex_app_thread_title, state, metadata_json,
28
+ created_at, updated_at
29
+ )
30
+ values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
31
+ `).run(slotId, campaign.id, options.slotKey, options.roleLabel, options.channel ?? null, options.sessionId ?? null, options.codexAppThreadId ?? null, options.codexAppThreadTitle ?? null, options.state ?? "planned", json(options.metadata), timestamp, timestamp);
32
+ return slotId;
33
+ }
34
+ export function updateCampaignWorkerSlotLifecycleSync(database, options) {
35
+ const campaign = campaignRow(database, options.campaign);
36
+ const slot = slotRow(database, options.slot);
37
+ requireSameCampaign(campaign.id, slot.campaign_id, "slot");
38
+ if (options.expectedThreadId !== undefined && slot.codex_app_thread_id !== options.expectedThreadId) {
39
+ throw new CampaignStateError("campaign worker slot thread guard does not match");
40
+ }
41
+ if (options.sessionId) {
42
+ requireWorkerSession(database, options.sessionId);
43
+ }
44
+ const timestamp = options.now ?? new Date().toISOString();
45
+ const nextSessionId = options.sessionId !== undefined ? options.sessionId : slot.session_id;
46
+ const nextThreadId = options.codexAppThreadId !== undefined ? options.codexAppThreadId : slot.codex_app_thread_id;
47
+ const nextThreadTitle = options.codexAppThreadTitle !== undefined ? options.codexAppThreadTitle : slot.codex_app_thread_title;
48
+ const nextState = options.state ?? slot.state;
49
+ const nextMetadata = options.metadata ?? parseJson(slot.metadata_json);
50
+ database.prepare(`
51
+ update campaign_worker_slots
52
+ set session_id = ?,
53
+ codex_app_thread_id = ?,
54
+ codex_app_thread_title = ?,
55
+ state = ?,
56
+ metadata_json = ?,
57
+ updated_at = ?
58
+ where id = ?
59
+ `).run(nextSessionId, nextThreadId, nextThreadTitle, nextState, json(nextMetadata), timestamp, slot.id);
60
+ return slotRecord(slotRow(database, slot.id));
61
+ }
62
+ export function upsertCampaignChannelBriefSync(database, options) {
63
+ const campaign = campaignRow(database, options.campaign);
64
+ const timestamp = options.now ?? new Date().toISOString();
65
+ const existing = database.prepare(`
66
+ select id
67
+ from campaign_channel_briefs
68
+ where campaign_id = ? and channel = ?
69
+ `).get(campaign.id, options.channel);
70
+ const briefId = existing?.id ?? `campaign-brief-${randomUUID()}`;
71
+ database.prepare(`
72
+ insert into campaign_channel_briefs(id, campaign_id, channel, brief_json, created_at, updated_at)
73
+ values (?, ?, ?, ?, ?, ?)
74
+ on conflict(campaign_id, channel) do update set
75
+ brief_json = excluded.brief_json,
76
+ updated_at = excluded.updated_at
77
+ `).run(briefId, campaign.id, options.channel, json(options.brief), timestamp, timestamp);
78
+ return briefId;
79
+ }
80
+ export function createCampaignAssignmentSync(database, options) {
81
+ const campaign = campaignRow(database, options.campaign);
82
+ const slot = slotRow(database, options.slot);
83
+ requireSameCampaign(campaign.id, slot.campaign_id, "slot");
84
+ const timestamp = options.now ?? new Date().toISOString();
85
+ const assignmentId = options.assignmentId ?? `campaign-assignment-${randomUUID()}`;
86
+ database.prepare(`
87
+ insert into campaign_assignments(
88
+ id, campaign_id, slot_id, title, instructions, status, metadata_json,
89
+ created_at, updated_at, completed_at
90
+ )
91
+ values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
92
+ `).run(assignmentId, campaign.id, slot.id, options.title, options.instructions, options.status ?? "queued", json(options.metadata), timestamp, timestamp, options.status === "done" ? timestamp : null);
93
+ return assignmentId;
94
+ }
95
+ export function recordCampaignAssetReceiptSync(database, options) {
96
+ const campaign = campaignRow(database, options.campaign);
97
+ const slot = slotRow(database, options.slot);
98
+ requireSameCampaign(campaign.id, slot.campaign_id, "slot");
99
+ if (options.assignment) {
100
+ const assignment = assignmentRow(database, options.assignment);
101
+ requireSameCampaign(campaign.id, assignment.campaign_id, "assignment");
102
+ if (assignment.slot_id !== slot.id) {
103
+ throw new CampaignStateError("assignment does not belong to the provided campaign worker slot");
104
+ }
105
+ }
106
+ const timestamp = options.now ?? new Date().toISOString();
107
+ const receiptId = options.assetReceiptId ?? `campaign-asset-${randomUUID()}`;
108
+ database.prepare(`
109
+ insert into campaign_asset_receipts(
110
+ id, campaign_id, slot_id, assignment_id, asset_type, channel, status,
111
+ title, prompt_summary, artifact_path, metadata_json, review_notes, created_at
112
+ )
113
+ values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
114
+ `).run(receiptId, campaign.id, slot.id, options.assignment ?? null, options.assetType, options.channel ?? slot.channel, options.status ?? "draft", options.title, options.promptSummary ?? null, options.artifactPath ?? null, json(options.metadata), options.reviewNotes ?? null, timestamp);
115
+ return receiptId;
116
+ }
117
+ export function campaignStatusSync(database, campaignNameOrId) {
118
+ const campaign = campaignRecord(campaignRow(database, campaignNameOrId));
119
+ const slots = database.prepare(`
120
+ select *
121
+ from campaign_worker_slots
122
+ where campaign_id = ?
123
+ order by created_at, slot_key
124
+ `).all(campaign.id).map((row) => ({
125
+ ...slotRecord(row),
126
+ active_assignments: Number(database.prepare(`
127
+ select count(*) as count
128
+ from campaign_assignments
129
+ where slot_id = ? and status in ('queued','active','blocked')
130
+ `).get(row.id).count),
131
+ asset_receipts: Number(database.prepare(`
132
+ select count(*) as count
133
+ from campaign_asset_receipts
134
+ where slot_id = ?
135
+ `).get(row.id).count),
136
+ }));
137
+ const channelBriefs = database.prepare(`
138
+ select *
139
+ from campaign_channel_briefs
140
+ where campaign_id = ?
141
+ order by channel
142
+ `).all(campaign.id).map(channelBriefRecord);
143
+ return {
144
+ asset_counts: countByStatus(database, "campaign_asset_receipts", campaign.id, ["approved", "draft", "needs_review", "published", "rejected"]),
145
+ assignment_counts: countByStatus(database, "campaign_assignments", campaign.id, ["active", "blocked", "cancelled", "done", "queued"]),
146
+ campaign,
147
+ channel_briefs: channelBriefs,
148
+ slots,
149
+ };
150
+ }
151
+ export function campaignDashboardSync(database, campaignNameOrId, options = {}) {
152
+ const status = campaignStatusSync(database, campaignNameOrId);
153
+ const now = Date.parse(options.now ?? new Date().toISOString());
154
+ const staleAfterSeconds = options.staleAfterSeconds ?? 300;
155
+ const slots = status.slots.map((slot) => campaignDashboardSlot(database, slot, { now, staleAfterSeconds }));
156
+ const blockers = slots.flatMap((slot) => slot.blockers);
157
+ const blockedAssignments = status.assignment_counts.blocked;
158
+ const blockedSlots = slots.filter((slot) => slot.state === "blocked").length;
159
+ const staleSlots = slots.filter((slot) => slot.lifecycle.stale).length;
160
+ return {
161
+ approvals: {
162
+ approved: status.asset_counts.approved,
163
+ needs_review: status.asset_counts.needs_review,
164
+ published: status.asset_counts.published,
165
+ rejected: status.asset_counts.rejected,
166
+ },
167
+ asset_counts: status.asset_counts,
168
+ assignment_counts: status.assignment_counts,
169
+ blockers,
170
+ campaign: status.campaign,
171
+ channel_briefs: status.channel_briefs,
172
+ next_manager_action: campaignNextManagerAction({
173
+ assetCounts: status.asset_counts,
174
+ assignmentCounts: status.assignment_counts,
175
+ blockedAssignments,
176
+ blockedSlots,
177
+ slots,
178
+ staleSlots,
179
+ }),
180
+ slots,
181
+ summary: {
182
+ active_slots: slots.filter((slot) => slot.state === "active").length,
183
+ archived_slots: slots.filter((slot) => slot.state === "archived").length,
184
+ assignment_total: Object.values(status.assignment_counts).reduce((sum, count) => sum + count, 0),
185
+ asset_total: Object.values(status.asset_counts).reduce((sum, count) => sum + count, 0),
186
+ blocked_assignments: blockedAssignments,
187
+ blocked_slots: blockedSlots,
188
+ channel_briefs: status.channel_briefs.length,
189
+ stale_slots: staleSlots,
190
+ },
191
+ };
192
+ }
193
+ function requireWorkerSession(database, sessionId) {
194
+ const row = database.prepare("select role from sessions where id = ?").get(sessionId);
195
+ if (!row) {
196
+ throw new CampaignStateError(`unknown session: ${sessionId}`);
197
+ }
198
+ if (row.role !== "worker") {
199
+ throw new CampaignStateError(`campaign worker slot requires a worker session, got ${row.role}`);
200
+ }
201
+ }
202
+ function campaignDashboardSlot(database, slot, options) {
203
+ const assignments = database.prepare(`
204
+ select *
205
+ from campaign_assignments
206
+ where slot_id = ?
207
+ order by created_at, title
208
+ `).all(slot.id).map(assignmentRecord);
209
+ const assets = database.prepare(`
210
+ select *
211
+ from campaign_asset_receipts
212
+ where slot_id = ?
213
+ order by created_at, title
214
+ `).all(slot.id).map(assetReceiptRecord);
215
+ const session = slot.session_id ? sessionRecord(database, slot.session_id) : null;
216
+ const lifecycle = campaignSlotLifecycle(slot, session, options);
217
+ const blockers = [
218
+ slot.state === "blocked" ? `worker slot ${slot.slot_key} is blocked` : null,
219
+ lifecycle.state === "needs_session" ? `worker slot ${slot.slot_key} has no registered worker session` : null,
220
+ lifecycle.state === "needs_thread" ? `worker slot ${slot.slot_key} has no Codex app thread id` : null,
221
+ lifecycle.state === "stale" ? `worker slot ${slot.slot_key} heartbeat is stale` : null,
222
+ ...assignments.filter((assignment) => assignment.status === "blocked").map((assignment) => `assignment ${assignment.title} is blocked`),
223
+ ...assets.filter((asset) => asset.status === "rejected").map((asset) => `asset ${asset.title} is rejected`),
224
+ ].filter((item) => item !== null);
225
+ return {
226
+ ...slot,
227
+ assignments,
228
+ assets,
229
+ blockers,
230
+ lifecycle,
231
+ session,
232
+ };
233
+ }
234
+ function campaignSlotLifecycle(slot, session, options) {
235
+ if (slot.state === "archived") {
236
+ return { operator_message: "Worker slot is archived.", stale: false, stale_seconds: null, state: "archived" };
237
+ }
238
+ if (slot.state === "blocked") {
239
+ return { operator_message: "Worker slot is marked blocked.", stale: false, stale_seconds: null, state: "blocked" };
240
+ }
241
+ if (!slot.codex_app_thread_id) {
242
+ return { operator_message: "Record the Codex app worker thread id for this slot.", stale: false, stale_seconds: null, state: "needs_thread" };
243
+ }
244
+ if (!slot.session_id || !session) {
245
+ if (slot.state === "idle") {
246
+ return { operator_message: "Codex app worker slot is idle and ready for assignment.", stale: false, stale_seconds: null, state: "idle" };
247
+ }
248
+ if (slot.state === "planned") {
249
+ return { operator_message: "Codex app worker slot is planned and needs activation.", stale: false, stale_seconds: null, state: "planned" };
250
+ }
251
+ return { operator_message: "Codex app worker slot is active.", stale: false, stale_seconds: null, state: "active" };
252
+ }
253
+ const staleSeconds = heartbeatAgeSeconds(session.last_heartbeat_at, options.now);
254
+ const stale = staleSeconds === null || staleSeconds > options.staleAfterSeconds;
255
+ if (stale) {
256
+ return { operator_message: "Wake or rotate this worker before assigning more work.", stale: true, stale_seconds: staleSeconds, state: "stale" };
257
+ }
258
+ if (slot.state === "idle") {
259
+ return { operator_message: "Worker slot is idle and ready for assignment.", stale: false, stale_seconds: staleSeconds, state: "idle" };
260
+ }
261
+ if (slot.state === "planned") {
262
+ return { operator_message: "Worker slot is planned and needs activation.", stale: false, stale_seconds: staleSeconds, state: "planned" };
263
+ }
264
+ return { operator_message: "Worker slot is active.", stale: false, stale_seconds: staleSeconds, state: "active" };
265
+ }
266
+ function heartbeatAgeSeconds(value, now) {
267
+ if (!value) {
268
+ return null;
269
+ }
270
+ const parsed = Date.parse(value);
271
+ if (!Number.isFinite(parsed) || !Number.isFinite(now)) {
272
+ return null;
273
+ }
274
+ return Math.max(0, Math.round((now - parsed) / 1000));
275
+ }
276
+ function campaignNextManagerAction(options) {
277
+ if (options.slots.length === 0) {
278
+ return { action: "add_worker_slots", reason: "Campaign has no worker slots." };
279
+ }
280
+ if (options.blockedSlots > 0) {
281
+ return { action: "resolve_worker_blockers", reason: "One or more worker slots are blocked." };
282
+ }
283
+ if (options.staleSlots > 0 || options.slots.some((slot) => slot.lifecycle.state === "needs_session" || slot.lifecycle.state === "needs_thread")) {
284
+ return { action: "wake_or_rotate_workers", reason: "One or more worker slots are stale or missing session/thread metadata." };
285
+ }
286
+ if (options.blockedAssignments > 0) {
287
+ return { action: "resolve_assignment_blockers", reason: "One or more assignments are blocked." };
288
+ }
289
+ if (options.assetCounts.needs_review > 0 || options.assetCounts.rejected > 0) {
290
+ return { action: "review_assets", reason: "Assets need review or rejection follow-up." };
291
+ }
292
+ if (options.assignmentCounts.queued > 0 || options.assignmentCounts.active > 0) {
293
+ return { action: "monitor_workers", reason: "Assignments are queued or active." };
294
+ }
295
+ if (options.assetCounts.approved > 0 || options.assetCounts.published > 0) {
296
+ return { action: "close_campaign", reason: "No active work remains and approved/published assets exist." };
297
+ }
298
+ return { action: "assign_work", reason: "Worker slots exist but no assignments or reviewable assets are present." };
299
+ }
300
+ function campaignRow(database, nameOrId) {
301
+ const row = database.prepare(`
302
+ select *
303
+ from campaigns
304
+ where id = ? or name = ?
305
+ order by created_at desc
306
+ limit 1
307
+ `).get(nameOrId, nameOrId);
308
+ if (!row) {
309
+ throw new CampaignStateError(`unknown campaign: ${nameOrId}`);
310
+ }
311
+ return row;
312
+ }
313
+ function slotRow(database, id) {
314
+ const row = database.prepare("select * from campaign_worker_slots where id = ?").get(id);
315
+ if (!row) {
316
+ throw new CampaignStateError(`unknown campaign worker slot: ${id}`);
317
+ }
318
+ return row;
319
+ }
320
+ function assignmentRow(database, id) {
321
+ const row = database.prepare("select * from campaign_assignments where id = ?").get(id);
322
+ if (!row) {
323
+ throw new CampaignStateError(`unknown campaign assignment: ${id}`);
324
+ }
325
+ return row;
326
+ }
327
+ function requireSameCampaign(expectedCampaignId, actualCampaignId, subject) {
328
+ if (expectedCampaignId !== actualCampaignId) {
329
+ throw new CampaignStateError(`${subject} does not belong to campaign ${expectedCampaignId}`);
330
+ }
331
+ }
332
+ function countByStatus(database, table, campaignId, statuses) {
333
+ const result = Object.fromEntries(statuses.map((status) => [status, 0]));
334
+ const rows = database.prepare(`
335
+ select status, count(*) as count
336
+ from ${table}
337
+ where campaign_id = ?
338
+ group by status
339
+ `).all(campaignId);
340
+ for (const row of rows) {
341
+ result[row.status] = row.count;
342
+ }
343
+ return result;
344
+ }
345
+ function campaignRecord(row) {
346
+ return {
347
+ created_at: row.created_at,
348
+ id: row.id,
349
+ metadata: parseJson(row.metadata_json),
350
+ name: row.name,
351
+ objective: row.objective,
352
+ status: row.status,
353
+ updated_at: row.updated_at,
354
+ };
355
+ }
356
+ function slotRecord(row) {
357
+ return {
358
+ campaign_id: row.campaign_id,
359
+ channel: row.channel,
360
+ codex_app_thread_id: row.codex_app_thread_id,
361
+ codex_app_thread_title: row.codex_app_thread_title,
362
+ created_at: row.created_at,
363
+ id: row.id,
364
+ metadata: parseJson(row.metadata_json),
365
+ role_label: row.role_label,
366
+ session_id: row.session_id,
367
+ slot_key: row.slot_key,
368
+ state: row.state,
369
+ updated_at: row.updated_at,
370
+ };
371
+ }
372
+ function channelBriefRecord(row) {
373
+ return {
374
+ brief: parseJson(row.brief_json),
375
+ campaign_id: row.campaign_id,
376
+ channel: row.channel,
377
+ created_at: row.created_at,
378
+ id: row.id,
379
+ updated_at: row.updated_at,
380
+ };
381
+ }
382
+ function assignmentRecord(row) {
383
+ return {
384
+ campaign_id: row.campaign_id,
385
+ completed_at: row.completed_at,
386
+ created_at: row.created_at,
387
+ id: row.id,
388
+ instructions: row.instructions,
389
+ metadata: parseJson(row.metadata_json),
390
+ slot_id: row.slot_id,
391
+ status: row.status,
392
+ title: row.title,
393
+ updated_at: row.updated_at,
394
+ };
395
+ }
396
+ function assetReceiptRecord(row) {
397
+ return {
398
+ artifact_path: row.artifact_path,
399
+ asset_type: row.asset_type,
400
+ assignment_id: row.assignment_id,
401
+ campaign_id: row.campaign_id,
402
+ channel: row.channel,
403
+ created_at: row.created_at,
404
+ id: row.id,
405
+ metadata: parseJson(row.metadata_json),
406
+ prompt_summary: row.prompt_summary,
407
+ review_notes: row.review_notes,
408
+ slot_id: row.slot_id,
409
+ status: row.status,
410
+ title: row.title,
411
+ };
412
+ }
413
+ function sessionRecord(database, sessionId) {
414
+ const row = database.prepare(`
415
+ select id, name, role, state, last_heartbeat_at, codex_app_thread_id, codex_app_thread_title
416
+ from sessions
417
+ where id = ?
418
+ `).get(sessionId);
419
+ if (!row) {
420
+ return null;
421
+ }
422
+ return {
423
+ codex_app_thread_id: row.codex_app_thread_id,
424
+ codex_app_thread_title: row.codex_app_thread_title,
425
+ id: row.id,
426
+ last_heartbeat_at: row.last_heartbeat_at,
427
+ name: row.name,
428
+ role: row.role,
429
+ state: row.state,
430
+ };
431
+ }
432
+ function parseJson(value) {
433
+ return JSON.parse(value);
434
+ }
435
+ function json(value) {
436
+ return JSON.stringify(value ?? {});
437
+ }
438
+ //# sourceMappingURL=campaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/runtime/campaigns.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  const MANAGER_PERMISSION_TAXONOMY = {
2
2
  communication: new Set(["comment_on_pr", "notify_operator"]),
3
3
  context: new Set(["spawn_reviewer", "fetch_prs", "fetch_issues"]),
4
- repo: new Set(["open_pr", "push_branch", "merge_green_pr"]),
4
+ repo: new Set(["merge_green_pr", "monitor_ci", "open_pr", "push_branch", "resolve_conflicts"]),
5
5
  verification: new Set(["run_playwright", "run_xcodebuild", "run_pytest", "run_cargo"]),
6
6
  worker_session: new Set(["compact", "clear", "interrupt", "stop"]),
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"manager-permissions.js","sourceRoot":"","sources":["../../src/runtime/manager-permissions.ts"],"names":[],"mappings":"AAIA,MAAM,2BAA2B,GAAmD;IAClF,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC5D,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IACjE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC3D,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACtF,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAA4B;IACpE,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IAC5C,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACzC,CAAC,4BAA4B,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;IAClF,CAAC,sBAAsB,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CACxC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAC3E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAC7D,CAAC,CACH,CAAC;AAEF,SAAS,uBAAuB;IAC9B,OAAO;QACL,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAY;IAC1D,MAAM,KAAK,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAuD;IACjG,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,2BAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/E,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAuD;IAC/F,MAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,WAAuD,EAAE,MAAc;IAC9G,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,kBAAiC;IAC1E,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,kBAAkB,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,sBAAsB,CAAC,UAA8B,EAAE,IAAY;IAC1E,KAAK,MAAM,SAAS,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5G,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"manager-permissions.js","sourceRoot":"","sources":["../../src/runtime/manager-permissions.ts"],"names":[],"mappings":"AAIA,MAAM,2BAA2B,GAAmD;IAClF,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC5D,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IACjE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC9F,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACtF,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAA4B;IACpE,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IAC5C,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACzC,CAAC,4BAA4B,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;IAClF,CAAC,sBAAsB,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CACxC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAC3E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAC7D,CAAC,CACH,CAAC;AAEF,SAAS,uBAAuB;IAC9B,OAAO;QACL,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAY;IAC1D,MAAM,KAAK,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAuD;IACjG,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,2BAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/E,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAuD;IAC/F,MAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,WAAuD,EAAE,MAAc;IAC9G,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,kBAAiC;IAC1E,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,kBAAkB,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,sBAAsB,CAAC,UAA8B,EAAE,IAAY;IAC1E,KAAK,MAAM,SAAS,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5G,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- // Generated from the archived Agent Conveyor v24 database schema.
1
+ // Generated from the archived Agent Conveyor v25 database schema.
2
2
  // Regenerate deliberately when SCHEMA_VERSION changes.
3
3
  export const SCHEMA_V23_SQL = String.raw `
4
4
  CREATE TABLE acceptance_criteria(
@@ -49,6 +49,71 @@ CREATE TABLE budgets(
49
49
  check (nudges_used <= max_nudges)
50
50
  );
51
51
 
52
+ CREATE TABLE campaigns(
53
+ id text primary key,
54
+ name text unique not null,
55
+ objective text not null,
56
+ status text not null check (status in ('active','paused','done','blocked','archived')),
57
+ metadata_json text not null check (json_valid(metadata_json)),
58
+ created_at text not null,
59
+ updated_at text not null
60
+ );
61
+
62
+ CREATE TABLE campaign_worker_slots(
63
+ id text primary key,
64
+ campaign_id text not null references campaigns(id),
65
+ slot_key text not null,
66
+ role_label text not null,
67
+ channel text,
68
+ session_id text references sessions(id),
69
+ codex_app_thread_id text,
70
+ codex_app_thread_title text,
71
+ state text not null check (state in ('planned','active','idle','blocked','archived')),
72
+ metadata_json text not null check (json_valid(metadata_json)),
73
+ created_at text not null,
74
+ updated_at text not null,
75
+ unique(campaign_id, slot_key)
76
+ );
77
+
78
+ CREATE TABLE campaign_assignments(
79
+ id text primary key,
80
+ campaign_id text not null references campaigns(id),
81
+ slot_id text not null references campaign_worker_slots(id),
82
+ title text not null,
83
+ instructions text not null,
84
+ status text not null check (status in ('queued','active','blocked','done','cancelled')),
85
+ metadata_json text not null check (json_valid(metadata_json)),
86
+ created_at text not null,
87
+ updated_at text not null,
88
+ completed_at text
89
+ );
90
+
91
+ CREATE TABLE campaign_channel_briefs(
92
+ id text primary key,
93
+ campaign_id text not null references campaigns(id),
94
+ channel text not null,
95
+ brief_json text not null check (json_valid(brief_json)),
96
+ created_at text not null,
97
+ updated_at text not null,
98
+ unique(campaign_id, channel)
99
+ );
100
+
101
+ CREATE TABLE campaign_asset_receipts(
102
+ id text primary key,
103
+ campaign_id text not null references campaigns(id),
104
+ slot_id text not null references campaign_worker_slots(id),
105
+ assignment_id text references campaign_assignments(id),
106
+ asset_type text not null check (asset_type in ('image','video','hyperframes','copy','audio','other')),
107
+ channel text,
108
+ status text not null check (status in ('draft','needs_review','approved','rejected','published')),
109
+ title text not null,
110
+ prompt_summary text,
111
+ artifact_path text,
112
+ metadata_json text not null check (json_valid(metadata_json)),
113
+ review_notes text,
114
+ created_at text not null
115
+ );
116
+
52
117
  CREATE TABLE codex_events(
53
118
  id integer primary key autoincrement,
54
119
  session_id text not null references sessions(id),
@@ -466,6 +531,27 @@ CREATE INDEX commands_task_state_created
466
531
  CREATE INDEX continuation_reviews_task
467
532
  on continuation_reviews(task_id, id);
468
533
 
534
+ CREATE INDEX campaign_asset_receipts_assignment
535
+ on campaign_asset_receipts(assignment_id, id);
536
+
537
+ CREATE INDEX campaign_asset_receipts_campaign_status
538
+ on campaign_asset_receipts(campaign_id, status, created_at, id);
539
+
540
+ CREATE INDEX campaign_assignments_campaign_status
541
+ on campaign_assignments(campaign_id, status, created_at, id);
542
+
543
+ CREATE UNIQUE INDEX campaign_channel_briefs_campaign_channel
544
+ on campaign_channel_briefs(campaign_id, channel);
545
+
546
+ CREATE UNIQUE INDEX campaign_worker_slots_campaign_slot
547
+ on campaign_worker_slots(campaign_id, slot_key);
548
+
549
+ CREATE INDEX campaign_worker_slots_session
550
+ on campaign_worker_slots(session_id);
551
+
552
+ CREATE UNIQUE INDEX campaigns_name
553
+ on campaigns(name);
554
+
469
555
  CREATE INDEX epilogue_runs_task_step
470
556
  on epilogue_runs(task_id, step_name, id);
471
557
 
@@ -1 +1 @@
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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2oBvC,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const SCHEMA_VERSION = 24;
1
+ export declare const SCHEMA_VERSION = 25;
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,9 +1,14 @@
1
- export const SCHEMA_VERSION = 24;
1
+ export const SCHEMA_VERSION = 25;
2
2
  export const REQUIRED_TABLES = new Set([
3
3
  "acceptance_criteria",
4
4
  "agent_observations",
5
5
  "bindings",
6
6
  "budgets",
7
+ "campaign_asset_receipts",
8
+ "campaign_assignments",
9
+ "campaign_channel_briefs",
10
+ "campaign_worker_slots",
11
+ "campaigns",
7
12
  "codex_events",
8
13
  "command_attempts",
9
14
  "commands",
@@ -43,6 +48,13 @@ export const REQUIRED_INDEXES = new Set([
43
48
  "commands_claimable",
44
49
  "commands_task_state_created",
45
50
  "continuation_reviews_task",
51
+ "campaign_asset_receipts_assignment",
52
+ "campaign_asset_receipts_campaign_status",
53
+ "campaign_assignments_campaign_status",
54
+ "campaign_channel_briefs_campaign_channel",
55
+ "campaign_worker_slots_campaign_slot",
56
+ "campaign_worker_slots_session",
57
+ "campaigns_name",
46
58
  "epilogue_runs_task_step",
47
59
  "events_task_id",
48
60
  "manager_configs_task_id",
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-contract.js","sourceRoot":"","sources":["../../src/state/sqlite-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,qBAAqB;IACrB,oBAAoB;IACpB,UAAU;IACV,SAAS;IACT,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;IACrB,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,sBAAsB;IACtB,MAAM;IACN,mBAAmB;IACnB,UAAU;IACV,UAAU;IACV,uBAAuB;IACvB,oBAAoB;IACpB,OAAO;IACP,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,2CAA2C;IAC3C,iCAAiC;IACjC,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;IAC7B,iCAAiC;IACjC,oBAAoB;IACpB,6BAA6B;IAC7B,2BAA2B;IAC3B,yBAAyB;IACzB,gBAAgB;IAChB,yBAAyB;IACzB,iCAAiC;IACjC,0BAA0B;IAC1B,wCAAwC;IACxC,6BAA6B;IAC7B,+BAA+B;IAC/B,uCAAuC;IACvC,6BAA6B;IAC7B,yBAAyB;IACzB,gCAAgC;IAChC,iCAAiC;IACjC,mCAAmC;IACnC,mCAAmC;IACnC,kBAAkB;IAClB,oBAAoB;IACpB,0CAA0C;IAC1C,uCAAuC;IACvC,kCAAkC;IAClC,gCAAgC;IAChC,iCAAiC;IACjC,iCAAiC;IACjC,6BAA6B;IAC7B,+BAA+B;IAC/B,+BAA+B;IAC/B,yBAAyB;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,kBAAkB;IAClB,kBAAkB;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"sqlite-contract.js","sourceRoot":"","sources":["../../src/state/sqlite-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,qBAAqB;IACrB,oBAAoB;IACpB,UAAU;IACV,SAAS;IACT,yBAAyB;IACzB,sBAAsB;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,WAAW;IACX,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;IACrB,mBAAmB;IACnB,UAAU;IACV,SAAS;IACT,sBAAsB;IACtB,MAAM;IACN,mBAAmB;IACnB,UAAU;IACV,UAAU;IACV,uBAAuB;IACvB,oBAAoB;IACpB,OAAO;IACP,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,2CAA2C;IAC3C,iCAAiC;IACjC,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;IAC7B,iCAAiC;IACjC,oBAAoB;IACpB,6BAA6B;IAC7B,2BAA2B;IAC3B,oCAAoC;IACpC,yCAAyC;IACzC,sCAAsC;IACtC,0CAA0C;IAC1C,qCAAqC;IACrC,+BAA+B;IAC/B,gBAAgB;IAChB,yBAAyB;IACzB,gBAAgB;IAChB,yBAAyB;IACzB,iCAAiC;IACjC,0BAA0B;IAC1B,wCAAwC;IACxC,6BAA6B;IAC7B,+BAA+B;IAC/B,uCAAuC;IACvC,6BAA6B;IAC7B,yBAAyB;IACzB,gCAAgC;IAChC,iCAAiC;IACjC,mCAAmC;IACnC,mCAAmC;IACnC,kBAAkB;IAClB,oBAAoB;IACpB,0CAA0C;IAC1C,uCAAuC;IACvC,kCAAkC;IAClC,gCAAgC;IAChC,iCAAiC;IACjC,iCAAiC;IACjC,6BAA6B;IAC7B,+BAA+B;IAC/B,+BAA+B;IAC/B,yBAAyB;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,kBAAkB;IAClB,kBAAkB;CACnB,CAAC,CAAC"}