@jungjaehoon/mama-os 0.24.2 → 0.25.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 (113) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +9 -6
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +8 -0
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/code-act/constants.js +2 -2
  7. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  8. package/dist/agent/code-act/host-bridge.js +37 -4
  9. package/dist/agent/code-act/host-bridge.js.map +1 -1
  10. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  11. package/dist/agent/code-act/type-definition-generator.js +2 -4
  12. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  13. package/dist/agent/context-compile-service.d.ts +2 -0
  14. package/dist/agent/context-compile-service.d.ts.map +1 -1
  15. package/dist/agent/context-compile-service.js +26 -7
  16. package/dist/agent/context-compile-service.js.map +1 -1
  17. package/dist/agent/gateway-tool-executor.d.ts +2 -0
  18. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  19. package/dist/agent/gateway-tool-executor.js +312 -18
  20. package/dist/agent/gateway-tool-executor.js.map +1 -1
  21. package/dist/agent/gateway-tools.md +4 -3
  22. package/dist/agent/tool-registry.d.ts.map +1 -1
  23. package/dist/agent/tool-registry.js +9 -3
  24. package/dist/agent/tool-registry.js.map +1 -1
  25. package/dist/agent/types.d.ts +27 -6
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/agent/types.js.map +1 -1
  28. package/dist/api/operator-tasks-handler.d.ts.map +1 -1
  29. package/dist/api/operator-tasks-handler.js +23 -1
  30. package/dist/api/operator-tasks-handler.js.map +1 -1
  31. package/dist/cli/commands/start.d.ts +7 -3
  32. package/dist/cli/commands/start.d.ts.map +1 -1
  33. package/dist/cli/commands/start.js +113 -65
  34. package/dist/cli/commands/start.js.map +1 -1
  35. package/dist/cli/runtime/agent-loop-init.d.ts +2 -0
  36. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  37. package/dist/cli/runtime/agent-loop-init.js +37 -12
  38. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  39. package/dist/cli/runtime/api-routes-init.js +3 -3
  40. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  41. package/dist/cli/runtime/temporal-init.d.ts +28 -0
  42. package/dist/cli/runtime/temporal-init.d.ts.map +1 -0
  43. package/dist/cli/runtime/temporal-init.js +74 -0
  44. package/dist/cli/runtime/temporal-init.js.map +1 -0
  45. package/dist/db/migrations/operator-task-temporal.d.ts +8 -0
  46. package/dist/db/migrations/operator-task-temporal.d.ts.map +1 -0
  47. package/dist/db/migrations/operator-task-temporal.js +209 -0
  48. package/dist/db/migrations/operator-task-temporal.js.map +1 -0
  49. package/dist/envelope/enforcer.d.ts.map +1 -1
  50. package/dist/envelope/enforcer.js +6 -6
  51. package/dist/envelope/enforcer.js.map +1 -1
  52. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  53. package/dist/multi-agent/dashboard-agent-persona.js +9 -4
  54. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  55. package/dist/operator/action-verifier.d.ts +23 -0
  56. package/dist/operator/action-verifier.d.ts.map +1 -1
  57. package/dist/operator/action-verifier.js +76 -0
  58. package/dist/operator/action-verifier.js.map +1 -1
  59. package/dist/operator/board-reconcile.d.ts.map +1 -1
  60. package/dist/operator/board-reconcile.js +3 -0
  61. package/dist/operator/board-reconcile.js.map +1 -1
  62. package/dist/operator/board-slot-instructions.d.ts +3 -3
  63. package/dist/operator/board-slot-instructions.d.ts.map +1 -1
  64. package/dist/operator/board-slot-instructions.js +17 -8
  65. package/dist/operator/board-slot-instructions.js.map +1 -1
  66. package/dist/operator/briefs.d.ts.map +1 -1
  67. package/dist/operator/briefs.js +3 -0
  68. package/dist/operator/briefs.js.map +1 -1
  69. package/dist/operator/task-ledger.d.ts +134 -8
  70. package/dist/operator/task-ledger.d.ts.map +1 -1
  71. package/dist/operator/task-ledger.js +1166 -65
  72. package/dist/operator/task-ledger.js.map +1 -1
  73. package/dist/operator/task-temporal.d.ts +21 -0
  74. package/dist/operator/task-temporal.d.ts.map +1 -0
  75. package/dist/operator/task-temporal.js +111 -0
  76. package/dist/operator/task-temporal.js.map +1 -0
  77. package/dist/operator/temporal-effect.d.ts +62 -0
  78. package/dist/operator/temporal-effect.d.ts.map +1 -0
  79. package/dist/operator/temporal-effect.js +71 -0
  80. package/dist/operator/temporal-effect.js.map +1 -0
  81. package/dist/operator/temporal-reconcile.d.ts +48 -0
  82. package/dist/operator/temporal-reconcile.d.ts.map +1 -0
  83. package/dist/operator/temporal-reconcile.js +215 -0
  84. package/dist/operator/temporal-reconcile.js.map +1 -0
  85. package/dist/operator/temporal-runtime.d.ts +54 -0
  86. package/dist/operator/temporal-runtime.d.ts.map +1 -0
  87. package/dist/operator/temporal-runtime.js +110 -0
  88. package/dist/operator/temporal-runtime.js.map +1 -0
  89. package/dist/operator/temporal-worker.d.ts +19 -0
  90. package/dist/operator/temporal-worker.d.ts.map +1 -0
  91. package/dist/operator/temporal-worker.js +105 -0
  92. package/dist/operator/temporal-worker.js.map +1 -0
  93. package/dist/operator/worker-run.d.ts +6 -2
  94. package/dist/operator/worker-run.d.ts.map +1 -1
  95. package/dist/operator/worker-run.js +14 -0
  96. package/dist/operator/worker-run.js.map +1 -1
  97. package/dist/operator/workorder-consumer.d.ts +27 -10
  98. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  99. package/dist/operator/workorder-consumer.js +195 -14
  100. package/dist/operator/workorder-consumer.js.map +1 -1
  101. package/dist/operator/workorder-hooks.d.ts +3 -0
  102. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  103. package/dist/operator/workorder-hooks.js +23 -0
  104. package/dist/operator/workorder-hooks.js.map +1 -1
  105. package/dist/operator/workorder-publishers.d.ts +10 -1
  106. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  107. package/dist/operator/workorder-publishers.js +40 -3
  108. package/dist/operator/workorder-publishers.js.map +1 -1
  109. package/package.json +1 -1
  110. package/public/ui/assets/{index-OSgiwL24.js → index-BDXDGEV6.js} +15 -15
  111. package/public/ui/assets/index-po2tN0xq.css +1 -0
  112. package/public/ui/index.html +2 -2
  113. package/public/ui/assets/index-CKOJQYXA.css +0 -1
@@ -13,18 +13,20 @@
13
13
  * plan G4). Blocking bound = the runner's per-request timeout x maxTurns; no
14
14
  * consumer-level watchdog (plan N2).
15
15
  *
16
- * Failure policy (plan G5/M4): failWorkOrder marks the row, then per-kind
17
- * maxAttempts decides requeue (fresh row, attempts+1, same occurrence key)
18
- * vs retries-exhausted (owner alarm, deduped per kind). Boot recovery routes
19
- * stale in_progress claims (crash artifacts) through the SAME policy, with a
20
- * separate stale-claim alarm.
16
+ * Failure policy (plan G5/M4): ordinary kinds use failWorkOrder plus per-kind
17
+ * retry limits. Temporal attempts instead run durable generation arbitration,
18
+ * so a committed effect wins over runner transport failure and retries remain
19
+ * tied to one generation. Boot recovery routes stale in_progress claims
20
+ * through the matching policy and emits a separate stale-claim alarm.
21
21
  *
22
22
  * Completion hooks (plan E3/E4): per-kind before/after seams re-home the
23
23
  * post-run host effects the legacy closures owned (board bracket
24
24
  * verification, promotion event re-emission, wiki noUpdate reading). Hook
25
- * errors are LOUD but never fail a completed run (observe, never block).
25
+ * errors remain observe-only for existing kinds. Temporal work opts into a
26
+ * blocking verdict, with its durable receipt still authoritative over runner
27
+ * or verifier transport failures.
26
28
  */
27
- import type { WorkOrderKind, WorkOrderRecord, EnqueueWorkOrderInput } from './task-ledger.js';
29
+ import { type WorkOrderKind, type WorkOrderRecord, type EnqueueWorkOrderInput, type TemporalAttemptState, type TemporalWorkFailureResult } from './task-ledger.js';
28
30
  import { type WorkerRunner } from './worker-run.js';
29
31
  export interface WorkOrderLedgerPort {
30
32
  claimNextWorkOrder(): WorkOrderRecord | null;
@@ -32,6 +34,8 @@ export interface WorkOrderLedgerPort {
32
34
  failWorkOrder(id: number, reason: string): void;
33
35
  /** Atomic fail+replacement (retry) - one transaction (PR bot round). */
34
36
  requeueWorkOrder(wo: WorkOrderRecord, reason: string): WorkOrderRecord;
37
+ inspectTemporalAttempt(attemptId: number): TemporalAttemptState;
38
+ failTemporalWorkOrder(attemptId: number, reason: string): TemporalWorkFailureResult;
35
39
  enqueueWorkOrder(order: EnqueueWorkOrderInput): WorkOrderRecord;
36
40
  listStaleClaims(): WorkOrderRecord[];
37
41
  countPendingWorkOrders(): number;
@@ -41,14 +45,22 @@ export interface OpsAlarmSink {
41
45
  configured: boolean;
42
46
  send(line: string): Promise<void>;
43
47
  }
48
+ export type WorkOrderEffectVerdict = {
49
+ disposition: 'complete';
50
+ } | {
51
+ disposition: 'fail';
52
+ reason: string;
53
+ };
44
54
  export interface WorkOrderHook {
45
55
  /** Bracket 'before' state (e.g. verifier snapshot at claim time). */
46
- before?: (wo: WorkOrderRecord) => unknown;
56
+ before?: (wo: WorkOrderRecord) => unknown | Promise<unknown>;
47
57
  /** Post-run effects (verification, event re-emission, outcome reading). */
48
- after?: (wo: WorkOrderRecord, response: string, beforeState: unknown) => void;
58
+ after?: (wo: WorkOrderRecord, response: string, beforeState: unknown) => WorkOrderEffectVerdict | void | Promise<WorkOrderEffectVerdict | void>;
59
+ /** Opt-in only: a missing, malformed, or negative verdict blocks completion. */
60
+ verdictRequired?: boolean;
49
61
  }
50
62
  export interface WorkOrderConsumerEvent {
51
- type: 'complete' | 'failed' | 'requeued' | 'exhausted' | 'stale-claim';
63
+ type: 'complete' | 'failed' | 'requeued' | 'exhausted' | 'stale-claim' | 'superseded';
52
64
  workKind: WorkOrderKind;
53
65
  workOrderId: number;
54
66
  reason?: string;
@@ -83,6 +95,7 @@ export declare class WorkOrderConsumer {
83
95
  private readonly deps;
84
96
  private readonly hooks;
85
97
  private readonly lastAlarmAt;
98
+ private readonly unresolvedTemporalEffects;
86
99
  private timer;
87
100
  private consuming;
88
101
  private activeTick;
@@ -113,6 +126,10 @@ export declare class WorkOrderConsumer {
113
126
  * retries-exhausted with an owner alarm.
114
127
  */
115
128
  private handleFailure;
129
+ /** Durable row+generation+receipt state always wins over runner prose/errors. */
130
+ private arbitrateTemporalAttempt;
131
+ private deferTemporalArbitration;
132
+ private recheckUnresolvedTemporalEffects;
116
133
  /** Owner alarm: passive notice + active telegram, deduped per kind (6h). */
117
134
  private alarm;
118
135
  private emitEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"workorder-consumer.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workorder-consumer.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-consumer.ts"],"names":[],"mappings":"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"}
@@ -14,19 +14,23 @@
14
14
  * plan G4). Blocking bound = the runner's per-request timeout x maxTurns; no
15
15
  * consumer-level watchdog (plan N2).
16
16
  *
17
- * Failure policy (plan G5/M4): failWorkOrder marks the row, then per-kind
18
- * maxAttempts decides requeue (fresh row, attempts+1, same occurrence key)
19
- * vs retries-exhausted (owner alarm, deduped per kind). Boot recovery routes
20
- * stale in_progress claims (crash artifacts) through the SAME policy, with a
21
- * separate stale-claim alarm.
17
+ * Failure policy (plan G5/M4): ordinary kinds use failWorkOrder plus per-kind
18
+ * retry limits. Temporal attempts instead run durable generation arbitration,
19
+ * so a committed effect wins over runner transport failure and retries remain
20
+ * tied to one generation. Boot recovery routes stale in_progress claims
21
+ * through the matching policy and emits a separate stale-claim alarm.
22
22
  *
23
23
  * Completion hooks (plan E3/E4): per-kind before/after seams re-home the
24
24
  * post-run host effects the legacy closures owned (board bracket
25
25
  * verification, promotion event re-emission, wiki noUpdate reading). Hook
26
- * errors are LOUD but never fail a completed run (observe, never block).
26
+ * errors remain observe-only for existing kinds. Temporal work opts into a
27
+ * blocking verdict, with its durable receipt still authoritative over runner
28
+ * or verifier transport failures.
27
29
  */
28
30
  Object.defineProperty(exports, "__esModule", { value: true });
29
31
  exports.WorkOrderConsumer = exports.WORKORDER_MAX_ATTEMPTS = void 0;
32
+ const node_crypto_1 = require("node:crypto");
33
+ const task_ledger_js_1 = require("./task-ledger.js");
30
34
  const worker_run_js_1 = require("./worker-run.js");
31
35
  /** Per-kind retry budget: attempts start at 1; board/promotion self-heal on
32
36
  * the next publish cycle, wiki events do not re-fire so it retries once. */
@@ -34,13 +38,16 @@ exports.WORKORDER_MAX_ATTEMPTS = {
34
38
  board: 1,
35
39
  wiki: 2,
36
40
  'memory-curation': 1,
41
+ temporal: task_ledger_js_1.TEMPORAL_WORKORDER_MAX_ATTEMPTS,
37
42
  };
38
43
  const DEFAULT_TICK_MS = 60_000;
39
44
  const ALARM_DEDUP_MS = 6 * 60 * 60 * 1000;
45
+ const MAX_EFFECT_VERDICT_REASON_LENGTH = 500;
40
46
  class WorkOrderConsumer {
41
47
  deps;
42
48
  hooks = new Map();
43
49
  lastAlarmAt = new Map();
50
+ unresolvedTemporalEffects = new Map();
44
51
  timer = null;
45
52
  consuming = false;
46
53
  activeTick = null;
@@ -63,8 +70,10 @@ class WorkOrderConsumer {
63
70
  for (const wo of this.deps.ledger.listStaleClaims()) {
64
71
  this.log(`[workorder-consumer] stale claim recovered: ${wo.workKind}#${wo.id}`);
65
72
  this.emitEvent({ type: 'stale-claim', workKind: wo.workKind, workOrderId: wo.id });
66
- this.alarm(wo.workKind, `workorder ${wo.workKind}#${wo.id} stale claim (daemon crash?)`);
73
+ this.alarm(wo.workKind, `workorder ${wo.workKind}#${wo.id} stale claim (daemon crash?)`, wo.workKind === 'temporal' ? 'temporal-stale-claim' : wo.workKind);
67
74
  this.handleFailure(wo, 'stale-claim');
75
+ if (this.unresolvedTemporalEffects.size > 0)
76
+ break;
68
77
  }
69
78
  }
70
79
  start() {
@@ -109,6 +118,12 @@ class WorkOrderConsumer {
109
118
  return 'skipped';
110
119
  this.consuming = true;
111
120
  try {
121
+ // Unknown durable state is a hard claim barrier. Recheck it before any
122
+ // new model work so a database outage cannot produce duplicate effects.
123
+ if (this.unresolvedTemporalEffects.size > 0) {
124
+ this.recheckUnresolvedTemporalEffects();
125
+ return 'drained';
126
+ }
112
127
  // Drain is BOUNDED by the pending count at tick start: a row requeued
113
128
  // by this tick's failure policy waits for the NEXT tick (natural
114
129
  // backoff - otherwise a failing order retries in a tight loop).
@@ -119,6 +134,8 @@ class WorkOrderConsumer {
119
134
  break;
120
135
  await this.runOne(wo);
121
136
  remaining--;
137
+ if (this.unresolvedTemporalEffects.size > 0)
138
+ break;
122
139
  }
123
140
  return 'drained';
124
141
  }
@@ -146,7 +163,7 @@ class WorkOrderConsumer {
146
163
  let beforeState;
147
164
  if (hook?.before) {
148
165
  try {
149
- beforeState = hook.before(wo);
166
+ beforeState = await hook.before(wo);
150
167
  }
151
168
  catch (err) {
152
169
  // A broken before-hook must not strand the claim: fail the order loudly.
@@ -171,16 +188,50 @@ class WorkOrderConsumer {
171
188
  this.handleFailure(wo, errMessage(err));
172
189
  return;
173
190
  }
191
+ let verdict = undefined;
174
192
  if (hook?.after) {
175
193
  try {
176
- hook.after(wo, response, beforeState);
194
+ verdict = await hook.after(wo, response, beforeState);
177
195
  }
178
196
  catch (err) {
179
- // Observe, never block: a verification/emission failure is loud but
180
- // does not fail a run that completed.
197
+ if (hook.verdictRequired) {
198
+ this.handleFailure(wo, boundedEffectFailure('after-hook: ', err));
199
+ return;
200
+ }
201
+ // Existing kinds remain observe-only: a verification/emission failure
202
+ // is loud but does not fail a run that completed.
181
203
  this.log(`[workorder-consumer] after-hook error (${wo.workKind}#${wo.id}): ${errMessage(err)}`);
182
204
  }
183
205
  }
206
+ if (hook?.verdictRequired) {
207
+ if (verdict === undefined) {
208
+ this.handleFailure(wo, 'effect-verdict-missing');
209
+ return;
210
+ }
211
+ if (typeof verdict !== 'object' || verdict === null || Array.isArray(verdict)) {
212
+ this.handleFailure(wo, 'effect-verdict-invalid');
213
+ return;
214
+ }
215
+ if (verdict.disposition === 'fail') {
216
+ const reason = typeof verdict.reason === 'string' ? verdict.reason.trim() : '';
217
+ if (!reason || reason.length > MAX_EFFECT_VERDICT_REASON_LENGTH) {
218
+ this.handleFailure(wo, 'effect-verdict-invalid');
219
+ return;
220
+ }
221
+ this.handleFailure(wo, reason);
222
+ return;
223
+ }
224
+ if (verdict.disposition !== 'complete') {
225
+ this.handleFailure(wo, 'effect-verdict-invalid');
226
+ return;
227
+ }
228
+ }
229
+ if (wo.workKind === 'temporal') {
230
+ // Temporal responses may contain private task or connector evidence.
231
+ // The durable receipt is authoritative, so never log model prose here.
232
+ this.arbitrateTemporalAttempt(wo, 'temporal-effect-missing');
233
+ return;
234
+ }
184
235
  // Shadow-gate diagnostics (§8.2): the worker's actual output decides
185
236
  // whether the tool path works - log a bounded head, never the full body.
186
237
  this.log(`[workorder-consumer] ${wo.workKind}#${wo.id} response head: ${response.slice(0, 200).replace(/\n/g, ' | ')}`);
@@ -194,6 +245,10 @@ class WorkOrderConsumer {
194
245
  * retries-exhausted with an owner alarm.
195
246
  */
196
247
  handleFailure(wo, reason) {
248
+ if (wo.workKind === 'temporal') {
249
+ this.arbitrateTemporalAttempt(wo, reason);
250
+ return;
251
+ }
197
252
  const maxAttempts = exports.WORKORDER_MAX_ATTEMPTS[wo.workKind];
198
253
  if (wo.payload.attempts < maxAttempts) {
199
254
  // Atomic fail+requeue (PR bot round): a crash between separate fail and
@@ -210,15 +265,132 @@ class WorkOrderConsumer {
210
265
  this.emitEvent({ type: 'exhausted', workKind: wo.workKind, workOrderId: wo.id, reason });
211
266
  this.alarm(wo.workKind, `workorder ${wo.workKind}#${wo.id} retries exhausted (${wo.payload.attempts}/${maxAttempts}): ${reason}`);
212
267
  }
268
+ /** Durable row+generation+receipt state always wins over runner prose/errors. */
269
+ arbitrateTemporalAttempt(wo, reason) {
270
+ const auditReason = temporalFailureAuditReason(reason);
271
+ let state;
272
+ try {
273
+ state = this.deps.ledger.inspectTemporalAttempt(wo.id);
274
+ }
275
+ catch (err) {
276
+ this.deferTemporalArbitration(wo, auditReason, err);
277
+ return;
278
+ }
279
+ if (state.workOrder.status === 'done' && state.receipt) {
280
+ this.unresolvedTemporalEffects.delete(wo.id);
281
+ this.emitEvent({ type: 'complete', workKind: 'temporal', workOrderId: wo.id });
282
+ this.log(`[workorder-consumer] completed temporal#${wo.id} from receipt (${state.receipt.outcome})`);
283
+ return;
284
+ }
285
+ if (state.generation.disposition === 'superseded') {
286
+ this.unresolvedTemporalEffects.delete(wo.id);
287
+ this.emitEvent({ type: 'superseded', workKind: 'temporal', workOrderId: wo.id });
288
+ this.log(`[workorder-consumer] temporal#${wo.id} superseded; no retry required`);
289
+ return;
290
+ }
291
+ if (state.workOrder.status === 'failed' &&
292
+ state.generation.disposition === 'active' &&
293
+ state.generation.lastWorkOrderId !== null &&
294
+ state.generation.lastWorkOrderId !== wo.id) {
295
+ this.unresolvedTemporalEffects.delete(wo.id);
296
+ this.emitEvent({
297
+ type: 'failed',
298
+ workKind: 'temporal',
299
+ workOrderId: wo.id,
300
+ reason: auditReason,
301
+ });
302
+ this.emitEvent({
303
+ type: 'requeued',
304
+ workKind: 'temporal',
305
+ workOrderId: state.generation.lastWorkOrderId,
306
+ });
307
+ this.log(`[workorder-consumer] temporal#${wo.id} retry was already committed as #${state.generation.lastWorkOrderId}`);
308
+ return;
309
+ }
310
+ if (state.workOrder.status === 'failed' &&
311
+ state.generation.disposition === 'exhausted' &&
312
+ state.generation.lastWorkOrderId === wo.id) {
313
+ this.unresolvedTemporalEffects.delete(wo.id);
314
+ this.emitEvent({
315
+ type: 'failed',
316
+ workKind: 'temporal',
317
+ workOrderId: wo.id,
318
+ reason: auditReason,
319
+ });
320
+ this.emitEvent({
321
+ type: 'exhausted',
322
+ workKind: 'temporal',
323
+ workOrderId: wo.id,
324
+ reason: auditReason,
325
+ });
326
+ this.log(`[workorder-consumer] temporal#${wo.id} exhaustion was already committed`);
327
+ this.alarm('temporal', `workorder temporal#${wo.id} retries exhausted (${wo.payload.attempts}/${exports.WORKORDER_MAX_ATTEMPTS.temporal}): ${auditReason}`);
328
+ return;
329
+ }
330
+ if (state.workOrder.status !== 'in_progress') {
331
+ this.deferTemporalArbitration(wo, auditReason, new Error(`attempt is '${state.workOrder.status}' with generation '${state.generation.disposition}'`));
332
+ return;
333
+ }
334
+ let result;
335
+ try {
336
+ result = this.deps.ledger.failTemporalWorkOrder(wo.id, auditReason);
337
+ }
338
+ catch (err) {
339
+ // A competing effect/supersession may have won after the read. Do not
340
+ // guess which transition won; force another authoritative read first.
341
+ this.deferTemporalArbitration(wo, auditReason, err);
342
+ return;
343
+ }
344
+ this.unresolvedTemporalEffects.delete(wo.id);
345
+ if (result.disposition === 'superseded') {
346
+ this.emitEvent({ type: 'superseded', workKind: 'temporal', workOrderId: wo.id });
347
+ this.log(`[workorder-consumer] temporal#${wo.id} superseded during failure arbitration`);
348
+ return;
349
+ }
350
+ this.emitEvent({
351
+ type: 'failed',
352
+ workKind: 'temporal',
353
+ workOrderId: wo.id,
354
+ reason: auditReason,
355
+ });
356
+ if (result.disposition === 'requeued') {
357
+ this.emitEvent({
358
+ type: 'requeued',
359
+ workKind: 'temporal',
360
+ workOrderId: result.replacement.id,
361
+ });
362
+ this.log(`[workorder-consumer] failed temporal#${wo.id} (${auditReason}) -> requeued #${result.replacement.id} (attempt ${result.attempt + 1}/${result.maxAttempts})`);
363
+ return;
364
+ }
365
+ this.log(`[workorder-consumer] failed temporal#${wo.id}: ${auditReason}`);
366
+ this.emitEvent({
367
+ type: 'exhausted',
368
+ workKind: 'temporal',
369
+ workOrderId: wo.id,
370
+ reason: auditReason,
371
+ });
372
+ this.alarm('temporal', `workorder temporal#${wo.id} retries exhausted (${result.attempt}/${result.maxAttempts}): ${auditReason}`);
373
+ }
374
+ deferTemporalArbitration(wo, reason, err) {
375
+ this.unresolvedTemporalEffects.set(wo.id, { workOrder: wo, reason });
376
+ const message = `workorder temporal#${wo.id} effect state unresolved: ${errMessage(err)}`;
377
+ this.log(`[workorder-consumer] ${message}`);
378
+ this.alarm('temporal', message, 'temporal-state-unresolved');
379
+ }
380
+ recheckUnresolvedTemporalEffects() {
381
+ for (const pending of [...this.unresolvedTemporalEffects.values()]) {
382
+ this.arbitrateTemporalAttempt(pending.workOrder, pending.reason);
383
+ }
384
+ }
213
385
  /** Owner alarm: passive notice + active telegram, deduped per kind (6h). */
214
- alarm(kind, message) {
386
+ alarm(kind, message, dedupeKey = kind) {
215
387
  const now = this.deps.now?.() ?? Date.now();
216
- const last = this.lastAlarmAt.get(kind);
388
+ const last = this.lastAlarmAt.get(dedupeKey);
217
389
  if (last !== undefined && now - last < ALARM_DEDUP_MS) {
218
390
  this.log(`[workorder-consumer] alarm deduped (${kind}): ${message}`);
219
391
  return;
220
392
  }
221
- this.lastAlarmAt.set(kind, now);
393
+ this.lastAlarmAt.set(dedupeKey, now);
222
394
  try {
223
395
  this.deps.noticeOwner(message);
224
396
  }
@@ -250,4 +422,13 @@ exports.WorkOrderConsumer = WorkOrderConsumer;
250
422
  function errMessage(err) {
251
423
  return err instanceof Error ? err.message : String(err);
252
424
  }
425
+ function temporalFailureAuditReason(reason) {
426
+ if (/^temporal-worker-failure;sha256=[a-f0-9]{64};length=\d+$/.test(reason)) {
427
+ return reason;
428
+ }
429
+ return `temporal-worker-failure;sha256=${(0, node_crypto_1.createHash)('sha256').update(reason).digest('hex')};length=${reason.length}`;
430
+ }
431
+ function boundedEffectFailure(prefix, err) {
432
+ return `${prefix}${errMessage(err)}`.slice(0, MAX_EFFECT_VERDICT_REASON_LENGTH);
433
+ }
253
434
  //# sourceMappingURL=workorder-consumer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workorder-consumer.js","sourceRoot":"","sources":["../../src/operator/workorder-consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workorder-consumer.js","sourceRoot":"","sources":["../../src/operator/workorder-consumer.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@
14
14
  */
15
15
  import type { SQLiteDatabase } from '../sqlite.js';
16
16
  import type { WorkOrderRecord } from './task-ledger.js';
17
+ import { type TemporalVerifierDeps } from './action-verifier.js';
18
+ import type { WorkOrderHook } from './workorder-consumer.js';
17
19
  export interface WorkerTraceQueries {
18
20
  getTraceMaxId: () => number;
19
21
  countObligatedTraceRowsSince: (maxId: number) => number;
@@ -27,4 +29,5 @@ export interface PromotionHookEvents {
27
29
  /** The wiki ingress chain's second link: losing this parse severs memory:promoted. */
28
30
  export declare function buildPromotionAfterHook(events: PromotionHookEvents): (wo: WorkOrderRecord, response: string) => void;
29
31
  export declare function buildWikiAfterHook(log: (line: string) => void): (wo: WorkOrderRecord, response: string) => void;
32
+ export declare function buildTemporalWorkOrderHook(deps: TemporalVerifierDeps): WorkOrderHook;
30
33
  //# sourceMappingURL=workorder-hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workorder-hooks.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GAAG,SAAS,EACtC,eAAe,EAAE,MAAM,GACtB,kBAAkB,CA0BpB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,sFAAsF;AACtF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAC1B,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAcjD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAQjD"}
1
+ {"version":3,"file":"workorder-hooks.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GAAG,SAAS,EACtC,eAAe,EAAE,MAAM,GACtB,kBAAkB,CA0BpB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,sFAAsF;AACtF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAC1B,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAcjD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAQjD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAsBpF"}
@@ -17,7 +17,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.buildWorkerTraceQueries = buildWorkerTraceQueries;
18
18
  exports.buildPromotionAfterHook = buildPromotionAfterHook;
19
19
  exports.buildWikiAfterHook = buildWikiAfterHook;
20
+ exports.buildTemporalWorkOrderHook = buildTemporalWorkOrderHook;
20
21
  const action_verifier_js_1 = require("./action-verifier.js");
22
+ const action_verifier_js_2 = require("./action-verifier.js");
21
23
  const TRACE_TOOL_LIST = action_verifier_js_1.OBLIGATED_TOOLS.map((t) => `'${t}'`).join(',');
22
24
  function buildWorkerTraceQueries(sessionsDb, workerChannelId) {
23
25
  return {
@@ -67,4 +69,25 @@ function buildWikiAfterHook(log) {
67
69
  }
68
70
  };
69
71
  }
72
+ function buildTemporalWorkOrderHook(deps) {
73
+ return {
74
+ verdictRequired: true,
75
+ before: (workOrder) => (0, action_verifier_js_2.captureTemporalEffectSnapshot)(deps, workOrder.id),
76
+ after: (workOrder, _response, beforeState) => {
77
+ if (typeof beforeState !== 'object' ||
78
+ beforeState === null ||
79
+ !('attemptId' in beforeState)) {
80
+ return { disposition: 'fail', reason: 'temporal effect snapshot missing' };
81
+ }
82
+ const snapshot = beforeState;
83
+ if (snapshot.attemptId !== workOrder.id) {
84
+ return { disposition: 'fail', reason: 'temporal effect snapshot attempt mismatch' };
85
+ }
86
+ const result = (0, action_verifier_js_2.verifyTemporalEffect)(deps, snapshot);
87
+ return result.verified
88
+ ? { disposition: 'complete' }
89
+ : { disposition: 'fail', reason: result.reason };
90
+ },
91
+ };
92
+ }
70
93
  //# sourceMappingURL=workorder-hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workorder-hooks.js","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAaH,0DA6BC;AASD,0DAgBC;AAED,gDAUC;AA5ED,6DAAuD;AAGvD,MAAM,eAAe,GAAG,oCAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAOvE,SAAgB,uBAAuB,CACrC,UAAsC,EACtC,eAAuB;IAEvB,OAAO;QACL,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,UAAU;iBACnB,OAAO,CACN;;2DAEiD,CAClD;iBACA,GAAG,CAAC,eAAe,CAA8B,CAAC;YACrD,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,4BAA4B,EAAE,CAAC,KAAa,EAAE,EAAE;YAC9C,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,UAAU;iBACnB,OAAO,CACN;;;wDAG8C,eAAe,0BAA0B,eAAe,IAAI,CAC3G;iBACA,GAAG,CAAC,eAAe,EAAE,KAAK,CAAkB,CAAC;YAChD,OAAO,GAAG,CAAC,CAAC,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAQD,sFAAsF;AACtF,SAAgB,uBAAuB,CACrC,MAA2B;IAE3B,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QACvB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,eAAe,CACpB,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAClD,kBAAkB,KAAK,QAAQ,CAChC,CAAC;QACF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,EAAE,CAAC,uCAAuC,KAAK,oBAAoB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAA2B;IAE3B,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QACvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,4CAA4C,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workorder-hooks.js","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"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"}
@@ -59,10 +59,19 @@ export interface WikiPayload {
59
59
  export interface PromotionPayload {
60
60
  scheduledAt: string;
61
61
  }
62
+ export interface TemporalPayload {
63
+ generationKey: string;
64
+ taskId: number;
65
+ temporalEpoch: number;
66
+ occurrenceKey: string;
67
+ checkAt: number;
68
+ sourceChannel: string | null;
69
+ sourceEventId: string | null;
70
+ }
62
71
  /**
63
72
  * Validate a payload at enqueue time. Unknown fields are rejected LOUDLY -
64
73
  * a misspelled field silently dropped would surface as a wrong run later.
65
- * (`attempts` is ledger-managed and allowed everywhere.)
74
+ * `attempts` is ledger-managed and is never valid publisher input.
66
75
  */
67
76
  export declare function validateWorkOrderPayload(kind: WorkOrderKind, payload: Record<string, unknown>): void;
68
77
  //# sourceMappingURL=workorder-publishers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workorder-publishers.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-publishers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,eAAO,MAAM,YAAY,kCAAmC,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,CAS/E;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,CAKzF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAE7E;AAUD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;qEACqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CA2CN"}
1
+ {"version":3,"file":"workorder-publishers.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-publishers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,eAAO,MAAM,YAAY,kCAAmC,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,CAS/E;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,CAKzF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAE7E;AAUD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;qEACqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAiBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAsEN"}
@@ -98,16 +98,28 @@ const PAYLOAD_KEYS = {
98
98
  board: ['mode', 'force', 'channelKey', 'deltaLines'],
99
99
  wiki: ['batchId', 'events'],
100
100
  'memory-curation': ['scheduledAt'],
101
+ temporal: [
102
+ 'generationKey',
103
+ 'taskId',
104
+ 'temporalEpoch',
105
+ 'occurrenceKey',
106
+ 'checkAt',
107
+ 'sourceChannel',
108
+ 'sourceEventId',
109
+ ],
101
110
  };
102
111
  /**
103
112
  * Validate a payload at enqueue time. Unknown fields are rejected LOUDLY -
104
113
  * a misspelled field silently dropped would surface as a wrong run later.
105
- * (`attempts` is ledger-managed and allowed everywhere.)
114
+ * `attempts` is ledger-managed and is never valid publisher input.
106
115
  */
107
116
  function validateWorkOrderPayload(kind, payload) {
117
+ if (Object.prototype.hasOwnProperty.call(payload, 'attempts')) {
118
+ throw new Error(`workorder payload (${kind}): attempts is ledger-managed`);
119
+ }
108
120
  const allowed = PAYLOAD_KEYS[kind];
109
121
  for (const key of Object.keys(payload)) {
110
- if (key !== 'attempts' && !allowed.includes(key)) {
122
+ if (!allowed.includes(key)) {
111
123
  throw new Error(`workorder payload (${kind}): unknown field '${key}'`);
112
124
  }
113
125
  }
@@ -141,10 +153,35 @@ function validateWorkOrderPayload(kind, payload) {
141
153
  throw new Error(`workorder payload (wiki): events[] of strings required`);
142
154
  }
143
155
  }
144
- else {
156
+ else if (kind === 'memory-curation') {
145
157
  if (typeof payload.scheduledAt !== 'string' || payload.scheduledAt === '') {
146
158
  throw new Error(`workorder payload (memory-curation): scheduledAt required`);
147
159
  }
148
160
  }
161
+ else {
162
+ const boundedString = (field, max) => {
163
+ const value = payload[field];
164
+ if (typeof value !== 'string' || value.length < 1 || value.length > max) {
165
+ throw new Error(`workorder payload (temporal): ${field} must contain 1-${max} characters`);
166
+ }
167
+ };
168
+ boundedString('generationKey', 500);
169
+ boundedString('occurrenceKey', 300);
170
+ if (!Number.isSafeInteger(payload.taskId) || payload.taskId < 1) {
171
+ throw new Error(`workorder payload (temporal): taskId must be a positive integer`);
172
+ }
173
+ if (!Number.isSafeInteger(payload.temporalEpoch) || payload.temporalEpoch < 0) {
174
+ throw new Error(`workorder payload (temporal): temporalEpoch must be a non-negative integer`);
175
+ }
176
+ if (!Number.isSafeInteger(payload.checkAt)) {
177
+ throw new Error(`workorder payload (temporal): checkAt must be an epoch millisecond integer`);
178
+ }
179
+ for (const field of ['sourceChannel', 'sourceEventId']) {
180
+ const value = payload[field];
181
+ if (value !== null && (typeof value !== 'string' || value.length < 1 || value.length > 300)) {
182
+ throw new Error(`workorder payload (temporal): ${field} must be null or 1-300 characters`);
183
+ }
184
+ }
185
+ }
149
186
  }
150
187
  //# sourceMappingURL=workorder-publishers.js.map