@jungjaehoon/mama-os 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +3 -1
  3. package/dist/agent/agent-loop.d.ts +0 -3
  4. package/dist/agent/agent-loop.d.ts.map +1 -1
  5. package/dist/agent/agent-loop.js +49 -34
  6. package/dist/agent/agent-loop.js.map +1 -1
  7. package/dist/agent/gateway-tool-executor.d.ts +18 -0
  8. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  9. package/dist/agent/gateway-tool-executor.js +185 -6
  10. package/dist/agent/gateway-tool-executor.js.map +1 -1
  11. package/dist/agent/gateway-tools.md +10 -5
  12. package/dist/agent/role-manager.d.ts +22 -1
  13. package/dist/agent/role-manager.d.ts.map +1 -1
  14. package/dist/agent/role-manager.js +39 -2
  15. package/dist/agent/role-manager.js.map +1 -1
  16. package/dist/agent/tool-registry.d.ts.map +1 -1
  17. package/dist/agent/tool-registry.js +35 -5
  18. package/dist/agent/tool-registry.js.map +1 -1
  19. package/dist/agent/types.d.ts +9 -1
  20. package/dist/agent/types.d.ts.map +1 -1
  21. package/dist/agent/types.js.map +1 -1
  22. package/dist/api/graph-api.d.ts.map +1 -1
  23. package/dist/api/graph-api.js +43 -33
  24. package/dist/api/graph-api.js.map +1 -1
  25. package/dist/api/operator-tasks-handler.d.ts.map +1 -1
  26. package/dist/api/operator-tasks-handler.js +6 -2
  27. package/dist/api/operator-tasks-handler.js.map +1 -1
  28. package/dist/cli/commands/start.d.ts.map +1 -1
  29. package/dist/cli/commands/start.js +185 -2
  30. package/dist/cli/commands/start.js.map +1 -1
  31. package/dist/cli/config/config-manager.d.ts +0 -5
  32. package/dist/cli/config/config-manager.d.ts.map +1 -1
  33. package/dist/cli/config/config-manager.js +57 -2
  34. package/dist/cli/config/config-manager.js.map +1 -1
  35. package/dist/cli/config/types.d.ts.map +1 -1
  36. package/dist/cli/config/types.js +35 -0
  37. package/dist/cli/config/types.js.map +1 -1
  38. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  39. package/dist/cli/runtime/agent-loop-init.js +96 -51
  40. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  41. package/dist/cli/runtime/api-routes-init.d.ts +3 -0
  42. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  43. package/dist/cli/runtime/api-routes-init.js +226 -51
  44. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  45. package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
  46. package/dist/cli/runtime/gateway-init.js +5 -0
  47. package/dist/cli/runtime/gateway-init.js.map +1 -1
  48. package/dist/envelope/reactive-config.d.ts.map +1 -1
  49. package/dist/envelope/reactive-config.js +26 -1
  50. package/dist/envelope/reactive-config.js.map +1 -1
  51. package/dist/gateways/message-router.d.ts +18 -1
  52. package/dist/gateways/message-router.d.ts.map +1 -1
  53. package/dist/gateways/message-router.js +155 -22
  54. package/dist/gateways/message-router.js.map +1 -1
  55. package/dist/gateways/telegram.d.ts.map +1 -1
  56. package/dist/gateways/telegram.js +13 -0
  57. package/dist/gateways/telegram.js.map +1 -1
  58. package/dist/gateways/types.d.ts +3 -0
  59. package/dist/gateways/types.d.ts.map +1 -1
  60. package/dist/memory/history-extractor.d.ts +0 -24
  61. package/dist/memory/history-extractor.d.ts.map +1 -1
  62. package/dist/memory/history-extractor.js +0 -132
  63. package/dist/memory/history-extractor.js.map +1 -1
  64. package/dist/memory/save-candidate-extractor.d.ts +3 -0
  65. package/dist/memory/save-candidate-extractor.d.ts.map +1 -1
  66. package/dist/memory/save-candidate-extractor.js +12 -1
  67. package/dist/memory/save-candidate-extractor.js.map +1 -1
  68. package/dist/memory/secret-filter.d.ts +22 -0
  69. package/dist/memory/secret-filter.d.ts.map +1 -0
  70. package/dist/memory/secret-filter.js +77 -0
  71. package/dist/memory/secret-filter.js.map +1 -0
  72. package/dist/observability/code-audit.d.ts +4 -0
  73. package/dist/observability/code-audit.d.ts.map +1 -1
  74. package/dist/observability/code-audit.js +69 -0
  75. package/dist/observability/code-audit.js.map +1 -1
  76. package/dist/operator/briefs.d.ts +26 -0
  77. package/dist/operator/briefs.d.ts.map +1 -0
  78. package/dist/operator/briefs.js +128 -0
  79. package/dist/operator/briefs.js.map +1 -0
  80. package/dist/operator/operator-trigger-loop.d.ts +24 -0
  81. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  82. package/dist/operator/operator-trigger-loop.js +71 -12
  83. package/dist/operator/operator-trigger-loop.js.map +1 -1
  84. package/dist/operator/report-carry.d.ts +29 -0
  85. package/dist/operator/report-carry.d.ts.map +1 -0
  86. package/dist/operator/report-carry.js +81 -0
  87. package/dist/operator/report-carry.js.map +1 -0
  88. package/dist/operator/shadow-capture.d.ts +20 -0
  89. package/dist/operator/shadow-capture.d.ts.map +1 -0
  90. package/dist/operator/shadow-capture.js +34 -0
  91. package/dist/operator/shadow-capture.js.map +1 -0
  92. package/dist/operator/situation-report.d.ts +6 -0
  93. package/dist/operator/situation-report.d.ts.map +1 -1
  94. package/dist/operator/situation-report.js +13 -0
  95. package/dist/operator/situation-report.js.map +1 -1
  96. package/dist/operator/task-ledger.d.ts +90 -2
  97. package/dist/operator/task-ledger.d.ts.map +1 -1
  98. package/dist/operator/task-ledger.js +359 -23
  99. package/dist/operator/task-ledger.js.map +1 -1
  100. package/dist/operator/worker-run.d.ts +59 -0
  101. package/dist/operator/worker-run.d.ts.map +1 -0
  102. package/dist/operator/worker-run.js +64 -0
  103. package/dist/operator/worker-run.js.map +1 -0
  104. package/dist/operator/workorder-consumer.d.ts +118 -0
  105. package/dist/operator/workorder-consumer.d.ts.map +1 -0
  106. package/dist/operator/workorder-consumer.js +248 -0
  107. package/dist/operator/workorder-consumer.js.map +1 -0
  108. package/dist/operator/workorder-hooks.d.ts +30 -0
  109. package/dist/operator/workorder-hooks.d.ts.map +1 -0
  110. package/dist/operator/workorder-hooks.js +70 -0
  111. package/dist/operator/workorder-hooks.js.map +1 -0
  112. package/dist/operator/workorder-publishers.d.ts +68 -0
  113. package/dist/operator/workorder-publishers.d.ts.map +1 -0
  114. package/dist/operator/workorder-publishers.js +150 -0
  115. package/dist/operator/workorder-publishers.js.map +1 -0
  116. package/dist/security/security-monitor.d.ts +7 -0
  117. package/dist/security/security-monitor.d.ts.map +1 -1
  118. package/dist/security/security-monitor.js +17 -0
  119. package/dist/security/security-monitor.js.map +1 -1
  120. package/dist/utils/untrusted-content.d.ts +13 -0
  121. package/dist/utils/untrusted-content.d.ts.map +1 -1
  122. package/dist/utils/untrusted-content.js +43 -0
  123. package/dist/utils/untrusted-content.js.map +1 -1
  124. package/package.json +2 -2
@@ -20,7 +20,7 @@
20
20
  * (start.ts opens and closes it once) - deliberately no close() here.
21
21
  */
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.TaskLedger = exports.TASK_PRIORITIES = exports.TASK_STATUSES = void 0;
23
+ exports.TaskLedger = exports.WORKORDER_CHANNEL_PREFIX = exports.WORKORDER_KINDS = exports.TASK_KINDS = exports.TASK_PRIORITIES = exports.TASK_STATUSES = void 0;
24
24
  const node_crypto_1 = require("node:crypto");
25
25
  exports.TASK_STATUSES = [
26
26
  'pending',
@@ -29,8 +29,15 @@ exports.TASK_STATUSES = [
29
29
  'blocked',
30
30
  'done',
31
31
  'cancelled',
32
+ // System-only terminal for workorder rows. Owner rows can never reach it:
33
+ // external create/update guards reject it, so it stays out of owner surfaces.
34
+ 'failed',
32
35
  ];
33
36
  exports.TASK_PRIORITIES = ['high', 'normal', 'low'];
37
+ exports.TASK_KINDS = ['owner', 'system'];
38
+ exports.WORKORDER_KINDS = ['board', 'wiki', 'memory-curation'];
39
+ /** source_channel namespace for workorder rows: 'workorder:<workKind>'. */
40
+ exports.WORKORDER_CHANNEL_PREFIX = 'workorder:';
34
41
  const ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
35
42
  function isoToEpochMs(iso) {
36
43
  if (!iso)
@@ -61,6 +68,7 @@ function rowToRecord(row) {
61
68
  title: row.title,
62
69
  status: row.status,
63
70
  priority: row.priority,
71
+ kind: (row.kind ?? 'owner'),
64
72
  deadline: isoToEpochMs(row.deadline),
65
73
  deadlineIso: row.deadline,
66
74
  assignee: row.assignee,
@@ -80,13 +88,33 @@ class TaskLedger {
80
88
  this.runMigration();
81
89
  }
82
90
  runMigration() {
91
+ // Both construction sites (start.ts boot + operator-handler lazy) run this;
92
+ // busy_timeout here covers BOTH connections against the rebuild race.
93
+ this.db.pragma('busy_timeout = 5000');
83
94
  this.db.exec(`
84
- CREATE TABLE IF NOT EXISTS operator_tasks (
95
+ CREATE TABLE IF NOT EXISTS operator_tasks (${TaskLedger.TABLE_COLUMNS_SQL});
96
+ ${TaskLedger.INDEXES_SQL}
97
+
98
+ CREATE TABLE IF NOT EXISTS operator_no_update_notes (
99
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
100
+ scope TEXT NOT NULL,
101
+ reason TEXT NOT NULL,
102
+ created_at INTEGER NOT NULL
103
+ );
104
+ CREATE INDEX IF NOT EXISTS idx_operator_no_update_scope
105
+ ON operator_no_update_notes(scope, id);
106
+ `);
107
+ this.upgradeSchema();
108
+ }
109
+ /** Full current column set - single source for CREATE and the rebuild copy. */
110
+ static TABLE_COLUMNS_SQL = `
85
111
  id INTEGER PRIMARY KEY AUTOINCREMENT,
86
112
  title TEXT NOT NULL,
87
113
  status TEXT NOT NULL DEFAULT 'pending'
88
- CHECK (status IN ('pending','in_progress','review','blocked','done','cancelled')),
114
+ CHECK (status IN ('pending','in_progress','review','blocked','done','cancelled','failed')),
89
115
  priority TEXT NOT NULL DEFAULT 'normal' CHECK (priority IN ('high','normal','low')),
116
+ kind TEXT NOT NULL DEFAULT 'owner' CHECK (kind IN ('owner','system')),
117
+ payload TEXT,
90
118
  assignee TEXT,
91
119
  deadline TEXT,
92
120
  source_channel TEXT,
@@ -95,23 +123,82 @@ class TaskLedger {
95
123
  auto_created INTEGER NOT NULL DEFAULT 1,
96
124
  confirmed INTEGER NOT NULL DEFAULT 0,
97
125
  created_at INTEGER NOT NULL,
98
- updated_at INTEGER NOT NULL
99
- );
126
+ updated_at INTEGER NOT NULL`;
127
+ // Unique-index predicate excludes terminal rows so a terminal keyed workorder
128
+ // frees its idempotency slot for a fresh insert (plan M1); owner upsert is a
129
+ // SELECT probe, unaffected.
130
+ static INDEXES_SQL = `
100
131
  CREATE UNIQUE INDEX IF NOT EXISTS idx_operator_tasks_source
101
132
  ON operator_tasks(source_channel, source_event_id)
102
- WHERE source_event_id IS NOT NULL;
133
+ WHERE source_event_id IS NOT NULL
134
+ AND status NOT IN ('done','failed','cancelled');
103
135
  CREATE INDEX IF NOT EXISTS idx_operator_tasks_status ON operator_tasks(status);
104
- CREATE INDEX IF NOT EXISTS idx_operator_tasks_deadline ON operator_tasks(deadline);
105
-
106
- CREATE TABLE IF NOT EXISTS operator_no_update_notes (
107
- id INTEGER PRIMARY KEY AUTOINCREMENT,
108
- scope TEXT NOT NULL,
109
- reason TEXT NOT NULL,
110
- created_at INTEGER NOT NULL
111
- );
112
- CREATE INDEX IF NOT EXISTS idx_operator_no_update_scope
113
- ON operator_no_update_notes(scope, id);
114
- `);
136
+ CREATE INDEX IF NOT EXISTS idx_operator_tasks_deadline ON operator_tasks(deadline);`;
137
+ /**
138
+ * Stage-2 in-place upgrade for pre-existing tables. Guards are re-checked
139
+ * INSIDE `BEGIN IMMEDIATE`: two connections construct TaskLedger (boot +
140
+ * lazy API handler) and both run this - the loser must see the winner's
141
+ * finished work, not rebuild an already-migrated table.
142
+ */
143
+ upgradeSchema() {
144
+ this.db.exec('BEGIN IMMEDIATE');
145
+ try {
146
+ const cols = this.db.prepare(`PRAGMA table_info(operator_tasks)`).all();
147
+ if (!cols.some((c) => c.name === 'kind')) {
148
+ this.db.exec(`ALTER TABLE operator_tasks ADD COLUMN kind TEXT NOT NULL DEFAULT 'owner'
149
+ CHECK (kind IN ('owner','system'))`);
150
+ }
151
+ if (!cols.some((c) => c.name === 'payload')) {
152
+ this.db.exec(`ALTER TABLE operator_tasks ADD COLUMN payload TEXT`);
153
+ }
154
+ // 'failed' lives in an inline CHECK -> table rebuild (copy-swap) required.
155
+ const tableSql = this.db
156
+ .prepare(`SELECT sql FROM sqlite_master WHERE type='table' AND name='operator_tasks'`)
157
+ .get().sql;
158
+ if (!tableSql.includes(`'failed'`)) {
159
+ const seqRow = this.db
160
+ .prepare(`SELECT seq FROM sqlite_sequence WHERE name='operator_tasks'`)
161
+ .get();
162
+ this.db.exec(`
163
+ CREATE TABLE operator_tasks_new (${TaskLedger.TABLE_COLUMNS_SQL});
164
+ INSERT INTO operator_tasks_new
165
+ (id, title, status, priority, kind, payload, assignee, deadline, source_channel,
166
+ source_event_id, latest_event, auto_created, confirmed, created_at, updated_at)
167
+ SELECT id, title, status, priority, kind, payload, assignee, deadline,
168
+ source_channel, source_event_id, latest_event, auto_created, confirmed,
169
+ created_at, updated_at
170
+ FROM operator_tasks;
171
+ DROP TABLE operator_tasks;
172
+ ALTER TABLE operator_tasks_new RENAME TO operator_tasks;
173
+ `);
174
+ if (seqRow) {
175
+ // sqlite_sequence has NO unique key on name - INSERT OR REPLACE
176
+ // would APPEND a duplicate row (review m2). UPDATE first; insert
177
+ // only when the rename left no row behind.
178
+ const updated = this.db
179
+ .prepare(`UPDATE sqlite_sequence SET seq = ? WHERE name = 'operator_tasks'`)
180
+ .run(seqRow.seq);
181
+ if (updated.changes === 0) {
182
+ this.db
183
+ .prepare(`INSERT INTO sqlite_sequence (name, seq) VALUES ('operator_tasks', ?)`)
184
+ .run(seqRow.seq);
185
+ }
186
+ }
187
+ }
188
+ // Old-predicate unique index (no terminal exclusion) -> swap in place.
189
+ const idxRow = this.db
190
+ .prepare(`SELECT sql FROM sqlite_master WHERE type='index' AND name='idx_operator_tasks_source'`)
191
+ .get();
192
+ if (!idxRow || !idxRow.sql.includes('status NOT IN')) {
193
+ this.db.exec(`DROP INDEX IF EXISTS idx_operator_tasks_source;`);
194
+ }
195
+ this.db.exec(TaskLedger.INDEXES_SQL);
196
+ this.db.exec('COMMIT');
197
+ }
198
+ catch (error) {
199
+ this.db.exec('ROLLBACK');
200
+ throw error;
201
+ }
115
202
  }
116
203
  /** TaskSource conformance: open items in canonical board order. */
117
204
  getTasks() {
@@ -121,14 +208,17 @@ class TaskLedger {
121
208
  const row = this.db
122
209
  .prepare(`SELECT COUNT(*) AS count
123
210
  FROM operator_tasks
124
- WHERE auto_created = 1
211
+ WHERE kind = 'owner'
212
+ AND auto_created = 1
125
213
  AND confirmed = 0
126
214
  AND status NOT IN ('done', 'cancelled')`)
127
215
  .get();
128
216
  return row.count;
129
217
  }
130
218
  list(filter = {}) {
131
- const where = [];
219
+ // Owner surface only - system workorder rows never appear in board/REST/
220
+ // gateway listings (Stage-2 kind filter; workorders have dedicated readers).
221
+ const where = [`kind = 'owner'`];
132
222
  const params = [];
133
223
  if (filter.status) {
134
224
  where.push('status = ?');
@@ -159,7 +249,13 @@ class TaskLedger {
159
249
  .all(...params, limit);
160
250
  return rows.map(rowToRecord);
161
251
  }
252
+ /** Owner rows only - system workorder rows are invisible to external reads. */
162
253
  getById(id) {
254
+ const record = this.getRowById(id);
255
+ return record && record.kind === 'owner' ? record : null;
256
+ }
257
+ /** Internal fetch without the kind filter (guards and workorder paths). */
258
+ getRowById(id) {
163
259
  const row = this.db.prepare(`SELECT * FROM operator_tasks WHERE id = ?`).get(id);
164
260
  return row ? rowToRecord(row) : null;
165
261
  }
@@ -174,14 +270,27 @@ class TaskLedger {
174
270
  }
175
271
  if (input.status !== undefined)
176
272
  assertEnum(input.status, exports.TASK_STATUSES, 'status');
273
+ if (input.status === 'failed') {
274
+ throw new Error(`task_create: 'failed' is a system-only status`);
275
+ }
276
+ // Namespace reservation (review m3): the occurrence keys are deterministic
277
+ // (epoch slots, readable from OSS source) - an agent-created owner row on
278
+ // a 'workorder:' (channel,event) pair would collide with the system
279
+ // INSERT via the shared unique index and DoS that schedule slot.
280
+ if (input.source_channel?.startsWith(exports.WORKORDER_CHANNEL_PREFIX)) {
281
+ throw new Error(`task_create: source_channel namespace '${exports.WORKORDER_CHANNEL_PREFIX}*' is reserved for system workorders`);
282
+ }
177
283
  if (input.priority !== undefined)
178
284
  assertEnum(input.priority, exports.TASK_PRIORITIES, 'priority');
179
285
  if (input.deadline !== undefined)
180
286
  assertIsoDate(input.deadline, 'deadline');
181
287
  const now = Date.now();
182
288
  if (input.source_channel && input.source_event_id) {
289
+ // kind='owner' probe: an agent-supplied (channel, event) pair can never
290
+ // reach a system workorder row (Stage-2 tamper guard).
183
291
  const existing = this.db
184
- .prepare(`SELECT * FROM operator_tasks WHERE source_channel = ? AND source_event_id = ?`)
292
+ .prepare(`SELECT * FROM operator_tasks
293
+ WHERE source_channel = ? AND source_event_id = ? AND kind = 'owner'`)
185
294
  .get(input.source_channel, input.source_event_id);
186
295
  if (existing) {
187
296
  // Upsert carries every provided field EXCEPT title (the original naming
@@ -208,9 +317,19 @@ class TaskLedger {
208
317
  return created;
209
318
  }
210
319
  update(id, patch) {
211
- const existing = this.getById(id);
320
+ const existing = this.getRowById(id);
212
321
  if (!existing)
213
322
  throw new Error(`task_update: no task with id ${id}`);
323
+ // Stage-2 tamper guards: system workorder rows are host-managed (their
324
+ // transitions go through the workorder API only), and 'failed' can never
325
+ // be set on an owner task from any external surface (REST PATCH + gateway
326
+ // task_update both land here).
327
+ if (existing.kind === 'system') {
328
+ throw new Error(`task_update: task ${id} is a system workorder row (host-managed)`);
329
+ }
330
+ if (patch.status === 'failed') {
331
+ throw new Error(`task_update: 'failed' is a system-only status`);
332
+ }
214
333
  if (patch.status !== undefined)
215
334
  assertEnum(patch.status, exports.TASK_STATUSES, 'status');
216
335
  if (patch.priority !== undefined)
@@ -244,15 +363,232 @@ class TaskLedger {
244
363
  this.db.prepare(`UPDATE operator_tasks SET ${sets.join(', ')} WHERE id = ?`).run(...params, id);
245
364
  return this.getById(id);
246
365
  }
247
- /** Stable hash over ordered rows - the Phase-2 verifier's ledger snapshot. */
366
+ /**
367
+ * Stable hash over ordered OWNER rows - the Phase-2 verifier's ledger
368
+ * snapshot. kind filter keeps concurrent system enqueues from shaking the
369
+ * hash mid-bracket (evidence-only signal, but noise is noise).
370
+ */
248
371
  payloadHash() {
249
372
  const rows = this.db
250
373
  .prepare(`SELECT id, title, status, priority, assignee, deadline, latest_event, confirmed,
251
374
  updated_at
252
- FROM operator_tasks ORDER BY id ASC`)
375
+ FROM operator_tasks WHERE kind = 'owner' ORDER BY id ASC`)
253
376
  .all();
254
377
  return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(rows)).digest('hex');
255
378
  }
379
+ // ── Workorder API (Stage 2) ─────────────────────────────────────────────
380
+ // System rows only. These are the ONLY paths that create or transition
381
+ // kind='system' rows; external create/update guards reject everything else.
382
+ /**
383
+ * Enqueue a workorder. Idempotent per occurrence key: an open (pending or
384
+ * in_progress) keyed row dedups; a terminal keyed row frees the slot (the
385
+ * unique index excludes terminal statuses) and a fresh row is inserted.
386
+ */
387
+ enqueueWorkOrder(order) {
388
+ assertEnum(order.workKind, exports.WORKORDER_KINDS, 'workKind');
389
+ if (order.priority !== undefined) {
390
+ assertEnum(order.priority, exports.TASK_PRIORITIES, 'priority');
391
+ }
392
+ if (!order.idempotencyKey || order.idempotencyKey.trim() === '') {
393
+ throw new Error('enqueueWorkOrder: idempotencyKey must be non-empty');
394
+ }
395
+ const channel = `${exports.WORKORDER_CHANNEL_PREFIX}${order.workKind}`;
396
+ const open = this.db
397
+ .prepare(`SELECT * FROM operator_tasks
398
+ WHERE kind = 'system' AND source_channel = ? AND source_event_id = ?
399
+ AND status IN ('pending','in_progress')`)
400
+ .get(channel, order.idempotencyKey);
401
+ if (open) {
402
+ return this.rowToWorkOrder(open);
403
+ }
404
+ const attempts = typeof order.input.attempts === 'number' && order.input.attempts >= 1
405
+ ? order.input.attempts
406
+ : 1;
407
+ const payload = JSON.stringify({ ...order.input, attempts });
408
+ const now = Date.now();
409
+ const result = this.db
410
+ .prepare(`INSERT INTO operator_tasks
411
+ (title, status, priority, kind, payload, source_channel, source_event_id,
412
+ auto_created, confirmed, created_at, updated_at)
413
+ VALUES (?, 'pending', ?, 'system', ?, ?, ?, 1, 0, ?, ?)`)
414
+ .run(`workorder:${order.workKind}`, order.priority ?? 'normal', payload, channel, order.idempotencyKey, now, now);
415
+ return this.getWorkOrderById(Number(result.lastInsertRowid));
416
+ }
417
+ /**
418
+ * Claim the next pending workorder: priority high>normal>low, then id ASC
419
+ * (plan D2/E2 - CASE mapping, never lexicographic on the TEXT enum).
420
+ * pending -> in_progress. Single serial consumer; transaction for atomicity.
421
+ */
422
+ claimNextWorkOrder() {
423
+ let claimedId = null;
424
+ this.db.exec('BEGIN IMMEDIATE');
425
+ try {
426
+ const row = this.db
427
+ .prepare(`SELECT * FROM operator_tasks
428
+ WHERE kind = 'system' AND status = 'pending'
429
+ ORDER BY CASE priority WHEN 'high' THEN 0 WHEN 'normal' THEN 1 ELSE 2 END ASC,
430
+ id ASC
431
+ LIMIT 1`)
432
+ .get();
433
+ if (row) {
434
+ this.db
435
+ .prepare(`UPDATE operator_tasks SET status = 'in_progress', updated_at = ? WHERE id = ?`)
436
+ .run(Date.now(), row.id);
437
+ claimedId = row.id;
438
+ }
439
+ this.db.exec('COMMIT');
440
+ }
441
+ catch (error) {
442
+ this.db.exec('ROLLBACK');
443
+ throw error;
444
+ }
445
+ // Read-back OUTSIDE the try: a throw here (corrupt payload) must not
446
+ // trigger ROLLBACK after COMMIT (PR bot round - masked error class).
447
+ return claimedId === null ? null : this.getWorkOrderById(claimedId);
448
+ }
449
+ /**
450
+ * Atomic fail-and-requeue (PR bot round): the failure mark and the
451
+ * replacement row commit together - a crash between the two would lose
452
+ * the retry (the old row terminal, the new one never inserted). The
453
+ * replacement can only be inserted AFTER the old row leaves the partial
454
+ * unique index, hence one transaction, not two calls.
455
+ */
456
+ requeueWorkOrder(wo, reason) {
457
+ this.db.exec('BEGIN IMMEDIATE');
458
+ try {
459
+ this.transitionWorkOrder(wo.id, 'failed', reason);
460
+ const replacement = this.enqueueWorkOrder({
461
+ workKind: wo.workKind,
462
+ idempotencyKey: wo.idempotencyKey,
463
+ input: { ...wo.payload, attempts: wo.payload.attempts + 1 },
464
+ priority: wo.priority,
465
+ });
466
+ this.db.exec('COMMIT');
467
+ return replacement;
468
+ }
469
+ catch (error) {
470
+ this.db.exec('ROLLBACK');
471
+ throw error;
472
+ }
473
+ }
474
+ completeWorkOrder(id) {
475
+ this.transitionWorkOrder(id, 'done', null);
476
+ }
477
+ failWorkOrder(id, reason) {
478
+ this.transitionWorkOrder(id, 'failed', reason);
479
+ }
480
+ countPendingWorkOrders() {
481
+ const row = this.db
482
+ .prepare(`SELECT COUNT(*) AS count FROM operator_tasks WHERE kind = 'system' AND status = 'pending'`)
483
+ .get();
484
+ return row.count;
485
+ }
486
+ /** In-progress system rows at boot = crash artifacts (single serial consumer). */
487
+ listStaleClaims() {
488
+ const rows = this.db
489
+ .prepare(`SELECT * FROM operator_tasks WHERE kind = 'system' AND status = 'in_progress'`)
490
+ .all();
491
+ return rows.map((row) => this.rowToWorkOrder(row));
492
+ }
493
+ /**
494
+ * Boot cleanup (plan D3 + review N4): open system rows -> cancelled. A
495
+ * rollback is not a failure - excluded from failed counters/alarms; caller
496
+ * logs ONE summary line with the returned count. `onlyKinds` scopes the
497
+ * cancellation (shadow rollback cancels non-board orders only).
498
+ */
499
+ cancelOpenWorkOrders(reason, onlyKinds) {
500
+ // An explicit empty scope means "cancel nothing", never "cancel all"
501
+ // (review F2 - the fall-through would silently widen a scoped call).
502
+ if (onlyKinds !== undefined && onlyKinds.length === 0) {
503
+ return 0;
504
+ }
505
+ const kindFilter = onlyKinds && onlyKinds.length > 0
506
+ ? ` AND source_channel IN (${onlyKinds.map(() => '?').join(',')})`
507
+ : '';
508
+ const kindParams = (onlyKinds ?? []).map((kind) => `${exports.WORKORDER_CHANNEL_PREFIX}${kind}`);
509
+ const result = this.db
510
+ .prepare(`UPDATE operator_tasks
511
+ SET status = 'cancelled', latest_event = ?, updated_at = ?
512
+ WHERE kind = 'system' AND status IN ('pending','in_progress')${kindFilter}`)
513
+ .run(reason, Date.now(), ...kindParams);
514
+ return result.changes;
515
+ }
516
+ /** Per-kind stats for the workorder_status surface. */
517
+ workOrderStats() {
518
+ return exports.WORKORDER_KINDS.map((workKind) => {
519
+ const channel = `${exports.WORKORDER_CHANNEL_PREFIX}${workKind}`;
520
+ const last = this.db
521
+ .prepare(`SELECT status, updated_at FROM operator_tasks
522
+ WHERE kind = 'system' AND source_channel = ?
523
+ ORDER BY updated_at DESC, id DESC LIMIT 1`)
524
+ .get(channel);
525
+ const failed = this.db
526
+ .prepare(`SELECT COUNT(*) AS count FROM operator_tasks
527
+ WHERE kind = 'system' AND source_channel = ? AND status = 'failed'`)
528
+ .get(channel);
529
+ const lastFailure = this.db
530
+ .prepare(`SELECT latest_event FROM operator_tasks
531
+ WHERE kind = 'system' AND source_channel = ? AND status = 'failed'
532
+ ORDER BY updated_at DESC, id DESC LIMIT 1`)
533
+ .get(channel);
534
+ return {
535
+ workKind,
536
+ lastRunAt: last?.updated_at ?? null,
537
+ lastStatus: last?.status ?? null,
538
+ failedCount: failed.count,
539
+ lastFailureReason: lastFailure?.latest_event ?? null,
540
+ };
541
+ });
542
+ }
543
+ getWorkOrderById(id) {
544
+ const row = this.db
545
+ .prepare(`SELECT * FROM operator_tasks WHERE id = ? AND kind = 'system'`)
546
+ .get(id);
547
+ return row ? this.rowToWorkOrder(row) : null;
548
+ }
549
+ transitionWorkOrder(id, status, reason) {
550
+ const row = this.getWorkOrderById(id);
551
+ if (!row)
552
+ throw new Error(`workorder transition: no system row with id ${id}`);
553
+ if (row.status !== 'in_progress') {
554
+ throw new Error(`workorder transition: row ${id} is '${row.status}', expected in_progress`);
555
+ }
556
+ this.db
557
+ .prepare(`UPDATE operator_tasks SET status = ?, latest_event = COALESCE(?, latest_event),
558
+ updated_at = ? WHERE id = ?`)
559
+ .run(status, reason, Date.now(), id);
560
+ }
561
+ rowToWorkOrder(row) {
562
+ const workKind = (row.source_channel ?? '').slice(exports.WORKORDER_CHANNEL_PREFIX.length);
563
+ assertEnum(workKind, exports.WORKORDER_KINDS, 'workKind');
564
+ let payload;
565
+ try {
566
+ payload = row.payload ? JSON.parse(row.payload) : {};
567
+ }
568
+ catch (error) {
569
+ // No-fallback: a corrupt payload is a real fault, surface it loudly.
570
+ throw new Error(`workorder ${row.id}: corrupt payload JSON (${error instanceof Error ? error.message : String(error)})`);
571
+ }
572
+ // Strict reads (PR bot round): silently normalizing corrupt ownership or
573
+ // retry metadata would mask a real fault - every row here was written by
574
+ // enqueueWorkOrder, which guarantees both fields.
575
+ if (typeof payload.attempts !== 'number' || payload.attempts < 1) {
576
+ throw new Error(`workorder ${row.id}: invalid attempts in payload (${String(payload.attempts)})`);
577
+ }
578
+ if (!row.source_event_id) {
579
+ throw new Error(`workorder ${row.id}: missing idempotency key (source_event_id)`);
580
+ }
581
+ return {
582
+ id: row.id,
583
+ workKind: workKind,
584
+ status: row.status,
585
+ priority: row.priority,
586
+ idempotencyKey: row.source_event_id,
587
+ payload: { ...payload, attempts: payload.attempts },
588
+ createdAt: row.created_at,
589
+ updatedAt: row.updated_at,
590
+ };
591
+ }
256
592
  /** contract_no_update: silence as a verifiable judgment, scoped to one reconcile run. */
257
593
  recordNoUpdate(scope, reason) {
258
594
  if (!scope || !reason) {
@@ -1 +1 @@
1
- {"version":3,"file":"task-ledger.js","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-ledger.js","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,6CAAyC;AAI5B,QAAA,aAAa,GAAG;IAC3B,SAAS;IACT,aAAa;IACb,QAAQ;IACR,SAAS;IACT,MAAM;IACN,WAAW;IACX,0EAA0E;IAC1E,8EAA8E;IAC9E,QAAQ;CACA,CAAC;AAGE,QAAA,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGrD,QAAA,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC;AAG1C,QAAA,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAU,CAAC;AAG7E,2EAA2E;AAC9D,QAAA,wBAAwB,GAAG,YAAY,CAAC;AA0FrD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAE/C,SAAS,YAAY,CAAC,GAAkB;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,OAA0B,EAAE,KAAa;IAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,KAAa;IACjD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,WAAW,GACf,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC;IAClG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2CAA2C,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAoB;QAChC,QAAQ,EAAE,GAAG,CAAC,QAAwB;QACtC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAa;QACvC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,WAAW,EAAE,GAAG,CAAC,QAAQ;QACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY,KAAK,CAAC;QACnC,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC;QAC9B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,MAAa,UAAU;IACb,EAAE,CAAiB;IAE3B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,4EAA4E;QAC5E,sEAAsE;QACtE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;mDACkC,UAAU,CAAC,iBAAiB;QACvE,UAAU,CAAC,WAAW;;;;;;;;;;KAUzB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,+EAA+E;IACvE,MAAM,CAAU,iBAAiB,GAAG;;;;;;;;;;;;;;;;oCAgBV,CAAC;IAEnC,8EAA8E;IAC9E,6EAA6E;IAC7E,4BAA4B;IACpB,MAAM,CAAU,WAAW,GAAG;;;;;;0FAMkD,CAAC;IAEzF;;;;;OAKG;IACK,aAAa;QACnB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAEnE,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,EAAE,CAAC,IAAI,CACV;gDACsC,CACvC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACrE,CAAC;YAED,2EAA2E;YAC3E,MAAM,QAAQ,GACZ,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,4EAA4E,CAAC;iBACrF,GAAG,EACP,CAAC,GAAG,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;qBACnB,OAAO,CAAC,6DAA6D,CAAC;qBACtE,GAAG,EAAiC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;6CACwB,UAAU,CAAC,iBAAiB;;;;;;;;;;SAUhE,CAAC,CAAC;gBACH,IAAI,MAAM,EAAE,CAAC;oBACX,gEAAgE;oBAChE,iEAAiE;oBACjE,2CAA2C;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;yBACpB,OAAO,CAAC,kEAAkE,CAAC;yBAC3E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;wBAC1B,IAAI,CAAC,EAAE;6BACJ,OAAO,CAAC,sEAAsE,CAAC;6BAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CACN,uFAAuF,CACxF;iBACA,GAAG,EAAiC,CAAC;YACxC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;;mDAK2C,CAC5C;aACA,GAAG,EAAuB,CAAC;QAC9B,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,SAA0B,EAAE;QAC/B,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,KAAK,GAAa,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,KAAK,SAAS;YACxB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,mEAAmE;gBACnE,8DAA8D;gBAC9D;wFAC8E,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;WACG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;oBAC7C,KAAK;iBACR,CACV;aACA,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAc,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,EAAU;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,2EAA2E;IACnE,UAAU,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAElE,CAAC;QACd,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAsB;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAa,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,2EAA2E;QAC3E,0EAA0E;QAC1E,oEAAoE;QACpE,iEAAiE;QACjE,IAAI,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,gCAAwB,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,0CAA0C,gCAAwB,sCAAsC,CACzG,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAe,EAAE,UAAU,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAClD,wEAAwE;YACxE,uDAAuD;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;iBACrB,OAAO,CACN;+EACqE,CACtE;iBACA,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAwB,CAAC;YAC3E,IAAI,QAAQ,EAAE,CAAC;gBACb,wEAAwE;gBACxE,yEAAyE;gBACzE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/D,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;;qDAG6C,CAC9C;aACA,GAAG,CACF,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAClB,KAAK,CAAC,MAAM,IAAI,SAAS,EACzB,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAC1B,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,eAAe,IAAI,IAAI,EAC7B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,GAAG,EACH,GAAG,CACJ,CAAC;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,KAAsB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;QACrE,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,+BAA+B;QAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAa,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAe,EAAE,UAAU,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5D,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,IAAI,GAAa,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;YAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACjF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;kEAE0D,CAC3D;aACA,GAAG,EAAoC,CAAC;QAC3C,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,4EAA4E;IAE5E;;;;OAIG;IACH,gBAAgB,CAAC,KAA4B;QAC3C,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAe,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,uBAAe,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,gCAAwB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;mDAE2C,CAC5C;aACA,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAwB,CAAC;QAC7D,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;YACtB,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;;iEAGyD,CAC1D;aACA,GAAG,CACF,aAAa,KAAK,CAAC,QAAQ,EAAE,EAC7B,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAC1B,OAAO,EACP,OAAO,EACP,KAAK,CAAC,cAAc,EACpB,GAAG,EACH,GAAG,CACJ,CAAC;QACJ,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CACN;;;;mBAIS,CACV;iBACA,GAAG,EAAyB,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,EAAE;qBACJ,OAAO,CAAC,+EAA+E,CAAC;qBACxF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,qEAAqE;QACrE,qEAAqE;QACrE,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAmB,EAAE,MAAc;QAClD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACxC,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;gBAC3D,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,EAAU;QAC1B,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,MAAc;QACtC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,sBAAsB;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN,2FAA2F,CAC5F;aACA,GAAG,EAAuB,CAAC;QAC9B,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,kFAAkF;IAClF,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,EAAe,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,MAAc,EAAE,SAA2B;QAC9D,qEAAqE;QACrE,qEAAqE;QACrE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,UAAU,GACd,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,2BAA2B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAClE,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,gCAAwB,GAAG,IAAI,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;wEAEgE,UAAU,EAAE,CAC7E;aACA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,uDAAuD;IACvD,cAAc;QAOZ,OAAO,uBAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,GAAG,gCAAwB,GAAG,QAAQ,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN;;qDAE2C,CAC5C;iBACA,GAAG,CAAC,OAAO,CAAuD,CAAC;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CACN;8EACoE,CACrE;iBACA,GAAG,CAAC,OAAO,CAAsB,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE;iBACxB,OAAO,CACN;;qDAE2C,CAC5C;iBACA,GAAG,CAAC,OAAO,CAAgD,CAAC;YAC/D,OAAO;gBACL,QAAQ;gBACR,SAAS,EAAE,IAAI,EAAE,UAAU,IAAI,IAAI;gBACnC,UAAU,EAAG,IAAI,EAAE,MAAqB,IAAI,IAAI;gBAChD,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,iBAAiB,EAAE,WAAW,EAAE,YAAY,IAAI,IAAI;aACrD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,EAAU;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,+DAA+D,CAAC;aACxE,GAAG,CAAC,EAAE,CAAwB,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAEO,mBAAmB,CAAC,EAAU,EAAE,MAAyB,EAAE,MAAqB;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,QAAQ,GAAG,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;4CACoC,CACrC;aACA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,cAAc,CAAC,GAAY;QACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gCAAwB,CAAC,MAAM,CAAC,CAAC;QACnF,UAAU,CAAC,QAAQ,EAAE,uBAAe,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,OAAgC,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qEAAqE;YACrE,MAAM,IAAI,KAAK,CACb,aAAa,GAAG,CAAC,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CACxG,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,kDAAkD;QAClD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,aAAa,GAAG,CAAC,EAAE,kCAAkC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,6CAA6C,CAAC,CAAC;QACpF,CAAC;QACD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,QAAyB;YACnC,MAAM,EAAE,GAAG,CAAC,MAAoB;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAwB;YACtC,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;YACnD,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CAAC,mFAAmF,CAAC;aAC5F,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,+EAA+E;IAC/E,aAAa,CAAC,KAAc;QAC1B,MAAM,GAAG,GAAG,CACV,KAAK;YACH,CAAC,CAAC,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,wEAAwE,CAAC;iBACjF,GAAG,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,EAAE,CACvD,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACzB,CAAC;;AA1mBH,gCA2mBC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * workerRun - the operator's worker primitive (plan: owner-console v6 S0-T1).
3
+ *
4
+ * A worker is NOT a standing agent identity and NOT a delegate/native-Task
5
+ * subagent: it is a briefed, FRESH-session lane run - the same substrate the
6
+ * report lane already uses (LaneManager serialization, loud failure, result
7
+ * returned to the caller, gateway calls audited).
8
+ *
9
+ * CALLER CONTRACT (deadlock seal):
10
+ * - Callers must be HOST CODE running OUTSIDE any lane (scheduler ticks,
11
+ * work-order consumers, forwarder hooks).
12
+ * - NEVER call workerRun from inside an active lane run (an LLM run's tool
13
+ * handler, a report run, another worker): the parent holds its global lane
14
+ * slot for its whole duration, so a nested awaited lane run can queue
15
+ * behind its own parent forever.
16
+ *
17
+ * Concurrency: same-kind runs serialize on the `operator:worker:<kind>`
18
+ * session lane; ALL operator work (reports + workers) serializes on the
19
+ * 'operator' global lane, which is separate from chat 'main' so long worker
20
+ * runs never block owner replies.
21
+ */
22
+ import type { ContentBlock } from '../agent/types.js';
23
+ /** Identity fields workerRun owns - never overridable by callers (plan E7/G3). */
24
+ export interface WorkerIdentityOptions {
25
+ sessionKey: string;
26
+ source: string;
27
+ channelId: string;
28
+ freshSession: boolean;
29
+ }
30
+ export type WorkerRunnerOptions = WorkerIdentityOptions & Record<string, unknown>;
31
+ /** Minimal surface of AgentLoop.runWithContent that workerRun needs (DI seam). */
32
+ export interface WorkerRunner {
33
+ runWithContent(content: ContentBlock[], options: WorkerRunnerOptions): Promise<{
34
+ response: string;
35
+ }>;
36
+ }
37
+ export interface WorkerRunInput {
38
+ /** Worker kind (kebab-case, e.g. 'board', 'wiki', 'memory-curation'). */
39
+ kind: string;
40
+ /** Procedural brief (skill text) injected ahead of the work order. */
41
+ brief: string;
42
+ /** The work order payload the worker acts on. */
43
+ input: string;
44
+ /**
45
+ * Extra run options (e.g. the Stage-2 shadow capture-publisher override).
46
+ * Applied BEFORE the identity fields - identity always wins (plan E7/G3:
47
+ * an override must never move a worker onto another lane or reset another
48
+ * lane's fresh-session pool).
49
+ */
50
+ runOptions?: Record<string, unknown>;
51
+ }
52
+ export declare function buildWorkerSessionKey(kind: string): string;
53
+ /**
54
+ * Run a briefed worker on its own operator lane and return its output.
55
+ * Throws loudly on invalid input, runner failure, or an empty response -
56
+ * a worker never ends silently.
57
+ */
58
+ export declare function workerRun(runner: WorkerRunner, { kind, brief, input, runOptions }: WorkerRunInput): Promise<string>;
59
+ //# sourceMappingURL=worker-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-run.d.ts","sourceRoot":"","sources":["../../src/operator/worker-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElF,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,cAAc,CACZ,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,cAAc,GACjD,OAAO,CAAC,MAAM,CAAC,CA+BjB"}