@jungjaehoon/mama-os 0.24.1 → 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.
- package/CHANGELOG.md +14 -0
- package/README.md +9 -6
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +8 -0
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/code-act/constants.js +2 -2
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +37 -4
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
- package/dist/agent/code-act/type-definition-generator.js +2 -4
- package/dist/agent/code-act/type-definition-generator.js.map +1 -1
- package/dist/agent/context-compile-service.d.ts +2 -0
- package/dist/agent/context-compile-service.d.ts.map +1 -1
- package/dist/agent/context-compile-service.js +26 -7
- package/dist/agent/context-compile-service.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +2 -0
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +312 -18
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +4 -3
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +9 -3
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +27 -6
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/operator-tasks-handler.d.ts.map +1 -1
- package/dist/api/operator-tasks-handler.js +23 -1
- package/dist/api/operator-tasks-handler.js.map +1 -1
- package/dist/cli/commands/start.d.ts +7 -3
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +113 -65
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts +2 -0
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
- package/dist/cli/runtime/agent-loop-init.js +37 -12
- package/dist/cli/runtime/agent-loop-init.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +3 -3
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/temporal-init.d.ts +28 -0
- package/dist/cli/runtime/temporal-init.d.ts.map +1 -0
- package/dist/cli/runtime/temporal-init.js +74 -0
- package/dist/cli/runtime/temporal-init.js.map +1 -0
- package/dist/db/migrations/operator-task-temporal.d.ts +8 -0
- package/dist/db/migrations/operator-task-temporal.d.ts.map +1 -0
- package/dist/db/migrations/operator-task-temporal.js +209 -0
- package/dist/db/migrations/operator-task-temporal.js.map +1 -0
- package/dist/envelope/enforcer.d.ts.map +1 -1
- package/dist/envelope/enforcer.js +6 -6
- package/dist/envelope/enforcer.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +9 -4
- package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
- package/dist/operator/action-verifier.d.ts +23 -0
- package/dist/operator/action-verifier.d.ts.map +1 -1
- package/dist/operator/action-verifier.js +76 -0
- package/dist/operator/action-verifier.js.map +1 -1
- package/dist/operator/board-reconcile.d.ts.map +1 -1
- package/dist/operator/board-reconcile.js +3 -0
- package/dist/operator/board-reconcile.js.map +1 -1
- package/dist/operator/board-slot-instructions.d.ts +3 -3
- package/dist/operator/board-slot-instructions.d.ts.map +1 -1
- package/dist/operator/board-slot-instructions.js +17 -8
- package/dist/operator/board-slot-instructions.js.map +1 -1
- package/dist/operator/briefs.d.ts.map +1 -1
- package/dist/operator/briefs.js +3 -0
- package/dist/operator/briefs.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +134 -8
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +1181 -74
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/task-temporal.d.ts +21 -0
- package/dist/operator/task-temporal.d.ts.map +1 -0
- package/dist/operator/task-temporal.js +111 -0
- package/dist/operator/task-temporal.js.map +1 -0
- package/dist/operator/temporal-effect.d.ts +62 -0
- package/dist/operator/temporal-effect.d.ts.map +1 -0
- package/dist/operator/temporal-effect.js +71 -0
- package/dist/operator/temporal-effect.js.map +1 -0
- package/dist/operator/temporal-reconcile.d.ts +48 -0
- package/dist/operator/temporal-reconcile.d.ts.map +1 -0
- package/dist/operator/temporal-reconcile.js +215 -0
- package/dist/operator/temporal-reconcile.js.map +1 -0
- package/dist/operator/temporal-runtime.d.ts +54 -0
- package/dist/operator/temporal-runtime.d.ts.map +1 -0
- package/dist/operator/temporal-runtime.js +110 -0
- package/dist/operator/temporal-runtime.js.map +1 -0
- package/dist/operator/temporal-worker.d.ts +19 -0
- package/dist/operator/temporal-worker.d.ts.map +1 -0
- package/dist/operator/temporal-worker.js +105 -0
- package/dist/operator/temporal-worker.js.map +1 -0
- package/dist/operator/worker-run.d.ts +6 -2
- package/dist/operator/worker-run.d.ts.map +1 -1
- package/dist/operator/worker-run.js +14 -0
- package/dist/operator/worker-run.js.map +1 -1
- package/dist/operator/workorder-consumer.d.ts +27 -10
- package/dist/operator/workorder-consumer.d.ts.map +1 -1
- package/dist/operator/workorder-consumer.js +195 -14
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +3 -0
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +23 -0
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +10 -1
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +40 -3
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/package.json +1 -1
- package/public/ui/assets/{index-OSgiwL24.js → index-BDXDGEV6.js} +15 -15
- package/public/ui/assets/index-po2tN0xq.css +1 -0
- package/public/ui/index.html +2 -2
- 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):
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
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
|
|
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
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"workorder-consumer.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IACvE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAChE,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAAC;IACpF,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,eAAe,CAAC;IAChE,eAAe,IAAI,eAAe,EAAE,CAAC;IACrC,sBAAsB,IAAI,MAAM,CAAC;CAClC;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,WAAW,EAAE,UAAU,CAAA;CAAE,GAC3B;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,2EAA2E;IAC3E,KAAK,CAAC,EAAE,CACN,EAAE,EAAE,eAAe,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,KACjB,sBAAsB,GAAG,IAAI,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC5E,gFAAgF;IAChF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;IACtF,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD,2EAA2E;IAC3E,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,YAAY,CAAC;IACvB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAClD;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CACd,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACxF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;6EAC6E;AAC7E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAKhE,CAAC;AAMF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAGtC;IACJ,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAiC;gBAEvC,IAAI,EAAE,qBAAqB;IAIvC,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAO5D;;;;;OAKG;IACH,WAAW,IAAI,IAAI;IAcnB,KAAK,IAAI,IAAI;IAkBb,SAAS,IAAI,OAAO;IAIpB;2EACuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YA2B9B,MAAM;IAsGpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA6BrB,iFAAiF;IACjF,OAAO,CAAC,wBAAwB;IAgIhC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,gCAAgC;IAMxC,4EAA4E;IAC5E,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -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):
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
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
|
|
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
|
-
|
|
180
|
-
|
|
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(
|
|
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(
|
|
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;
|
|
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;;
|
|
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
|
-
*
|
|
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;
|
|
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
|
-
*
|
|
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 (
|
|
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
|