@melra/runtime-core 0.3.0-alpha.10 → 0.3.0-alpha.12
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/dist/task-controller.d.ts +41 -1
- package/dist/task-controller.d.ts.map +1 -1
- package/dist/task-controller.js +202 -32
- package/dist/task-controller.js.map +1 -1
- package/dist/workflow-controller.d.ts +12 -0
- package/dist/workflow-controller.d.ts.map +1 -1
- package/dist/workflow-controller.js +95 -11
- package/dist/workflow-controller.js.map +1 -1
- package/package.json +8 -8
- package/dist/circuit-breaker.test.d.ts +0 -2
- package/dist/circuit-breaker.test.d.ts.map +0 -1
- package/dist/circuit-breaker.test.js +0 -51
- package/dist/circuit-breaker.test.js.map +0 -1
- package/dist/payload-cipher.test.d.ts +0 -2
- package/dist/payload-cipher.test.d.ts.map +0 -1
- package/dist/payload-cipher.test.js +0 -33
- package/dist/payload-cipher.test.js.map +0 -1
- package/dist/retry-guard.test.d.ts +0 -2
- package/dist/retry-guard.test.d.ts.map +0 -1
- package/dist/retry-guard.test.js +0 -45
- package/dist/retry-guard.test.js.map +0 -1
- package/dist/task-controller.test.d.ts +0 -2
- package/dist/task-controller.test.d.ts.map +0 -1
- package/dist/task-controller.test.js +0 -486
- package/dist/task-controller.test.js.map +0 -1
- package/dist/verification-gate.test.d.ts +0 -2
- package/dist/verification-gate.test.d.ts.map +0 -1
- package/dist/verification-gate.test.js +0 -42
- package/dist/verification-gate.test.js.map +0 -1
- package/dist/workflow-controller.test.d.ts +0 -2
- package/dist/workflow-controller.test.d.ts.map +0 -1
- package/dist/workflow-controller.test.js +0 -785
- package/dist/workflow-controller.test.js.map +0 -1
- package/dist/workflow-events.test.d.ts +0 -2
- package/dist/workflow-events.test.d.ts.map +0 -1
- package/dist/workflow-events.test.js +0 -113
- package/dist/workflow-events.test.js.map +0 -1
- package/dist/workflow-graph.test.d.ts +0 -2
- package/dist/workflow-graph.test.d.ts.map +0 -1
- package/dist/workflow-graph.test.js +0 -169
- package/dist/workflow-graph.test.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApprovalResponse, EffectContract, EvidencePredicate, Operation, PolicyDecision, TaskRecord, TaskRequest } from "@melra/protocol";
|
|
2
|
-
import { type LocalPolicy } from "@melra/policy-core";
|
|
2
|
+
import { type CapabilityUsageReader, type LocalPolicy } from "@melra/policy-core";
|
|
3
3
|
import { type ActionReceipt, type EvidenceItem, type ExecutionCertificate } from "@melra/receipt-schema";
|
|
4
4
|
import { SqliteStore } from "@melra/storage-sqlite";
|
|
5
5
|
import { Verifier } from "@melra/verifier-core";
|
|
@@ -19,6 +19,14 @@ export interface TaskPlanOptions {
|
|
|
19
19
|
idempotencyKey?: string;
|
|
20
20
|
attempt?: number;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A grant's durable draw-down, the way policy wants to read it.
|
|
24
|
+
*
|
|
25
|
+
* Exported because `melra policy test` previews the same decision from outside
|
|
26
|
+
* this class, and a preview that counted differently from the server it is
|
|
27
|
+
* previewing would be worse than none.
|
|
28
|
+
*/
|
|
29
|
+
export declare function capabilityUsageReader(store: SqliteStore): CapabilityUsageReader;
|
|
22
30
|
export declare class TaskController {
|
|
23
31
|
private readonly store;
|
|
24
32
|
private readonly policy;
|
|
@@ -28,6 +36,15 @@ export declare class TaskController {
|
|
|
28
36
|
private readonly active;
|
|
29
37
|
private readonly breaker;
|
|
30
38
|
constructor(store: SqliteStore, policy: LocalPolicy, executor: OperationExecutor, verifier: Verifier, payloadCipher: PayloadCipher, breaker?: CircuitBreaker);
|
|
39
|
+
/**
|
|
40
|
+
* The durable draw-down on each grant, as policy sees it.
|
|
41
|
+
*
|
|
42
|
+
* Handed to every `evaluatePolicy` call in this class so a metered grant is
|
|
43
|
+
* counted the same at plan time, at the re-check before execution, and in a
|
|
44
|
+
* preflight — a bound that only one of the three enforced would be a bound
|
|
45
|
+
* with a way around it.
|
|
46
|
+
*/
|
|
47
|
+
private readonly capabilityUsage;
|
|
31
48
|
plan(request: TaskRequest, options?: TaskPlanOptions): TaskRecord & {
|
|
32
49
|
contract: EffectContract;
|
|
33
50
|
};
|
|
@@ -43,6 +60,29 @@ export declare class TaskController {
|
|
|
43
60
|
verified: boolean;
|
|
44
61
|
evidence: EvidenceItem[];
|
|
45
62
|
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Ask the provider whether an effect MELRA could not observe actually
|
|
65
|
+
* happened.
|
|
66
|
+
*
|
|
67
|
+
* Reachable only from `recovery_required`, the one status that says "unknown"
|
|
68
|
+
* rather than a result. The predicates are read against the facts that were
|
|
69
|
+
* true *before* the call — the idempotency key that went out, the destination
|
|
70
|
+
* — because a request that was never answered left no response to
|
|
71
|
+
* interpolate a verification URL from.
|
|
72
|
+
*
|
|
73
|
+
* Three answers, and the third is the point: it happened, it did not, or the
|
|
74
|
+
* provider could not be reached and the task stays exactly where it was.
|
|
75
|
+
*/
|
|
76
|
+
reconcile(taskId: string): Promise<ExecutionResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Settle a task as done on evidence gathered after the fact.
|
|
79
|
+
*
|
|
80
|
+
* Shared by restart recovery and reconciliation because the two differ only
|
|
81
|
+
* in where the evidence came from. Everything an ordinary success does has to
|
|
82
|
+
* happen here too — the idempotency commit *and* the capability draw-down —
|
|
83
|
+
* or an effect settled this way would be free to run again and free to spend.
|
|
84
|
+
*/
|
|
85
|
+
private resolveAsVerified;
|
|
46
86
|
recoverInterrupted(): Promise<TaskRecord[]>;
|
|
47
87
|
receipts(input: {
|
|
48
88
|
taskId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-controller.d.ts","sourceRoot":"","sources":["../src/task-controller.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,UAAU,EACV,WAAW,EACZ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-controller.d.ts","sourceRoot":"","sources":["../src/task-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/task-controller.js
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
// Copyright 2026 XAGI Labs Private Limited
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
|
-
import { delegationChain, effectContract, LOCAL_IDENTITY, TaskRequestSchema, } from "@melra/protocol";
|
|
5
|
-
import { classifyOperation, defaultEvidenceFor, evaluatePolicy, validateApproval, } from "@melra/policy-core";
|
|
6
|
-
import { createCertificate, createReceiptId, redactStructuredValue, sha256, } from "@melra/receipt-schema";
|
|
4
|
+
import { allowsRetry, delegationChain, effectContract, executionGuaranteeFor, isOutcomeUnknown, LOCAL_IDENTITY, TaskRequestSchema, } from "@melra/protocol";
|
|
5
|
+
import { CAPABILITY_DAY_MS, classifyOperation, defaultEvidenceFor, evaluatePolicy, validateApproval, } from "@melra/policy-core";
|
|
6
|
+
import { createCertificate, createReceiptId, evidenceStrength, redactStructuredValue, sha256, } from "@melra/receipt-schema";
|
|
7
7
|
import { CircuitBreaker } from "./circuit-breaker.js";
|
|
8
8
|
function now() {
|
|
9
9
|
return new Date().toISOString();
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* What was true before the call went out.
|
|
13
|
+
*
|
|
14
|
+
* A request that was never answered left no response, so the only handle on
|
|
15
|
+
* what the provider was asked to do is the key MELRA itself sent. Shaped like
|
|
16
|
+
* an adapter result so one predicate type reads the same on both paths.
|
|
17
|
+
*/
|
|
18
|
+
function reconciliationFacts(task, operation) {
|
|
19
|
+
return {
|
|
20
|
+
taskId: task.id,
|
|
21
|
+
...(operation.kind === "http"
|
|
22
|
+
? {
|
|
23
|
+
url: operation.url,
|
|
24
|
+
method: operation.method,
|
|
25
|
+
...(operation.idempotencyKey === undefined
|
|
26
|
+
? {}
|
|
27
|
+
: { idempotencyKey: operation.idempotencyKey }),
|
|
28
|
+
}
|
|
29
|
+
: {}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
11
32
|
function certificateResult(task) {
|
|
12
33
|
switch (task.status) {
|
|
13
34
|
case "verified_success":
|
|
@@ -24,6 +45,10 @@ function certificateResult(task) {
|
|
|
24
45
|
return "POLICY_BLOCKED";
|
|
25
46
|
case "budget_exhausted":
|
|
26
47
|
return "BUDGET_EXHAUSTED";
|
|
48
|
+
// Without this case a parked task certified as FAILED — exactly the claim
|
|
49
|
+
// the status exists to stop MELRA from making.
|
|
50
|
+
case "recovery_required":
|
|
51
|
+
return "RECOVERY_REQUIRED";
|
|
27
52
|
default:
|
|
28
53
|
return "FAILED";
|
|
29
54
|
}
|
|
@@ -44,6 +69,20 @@ function withDefaultEvidence(request) {
|
|
|
44
69
|
return request;
|
|
45
70
|
return { ...request, requiredEvidence: derived };
|
|
46
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* A grant's durable draw-down, the way policy wants to read it.
|
|
74
|
+
*
|
|
75
|
+
* Exported because `melra policy test` previews the same decision from outside
|
|
76
|
+
* this class, and a preview that counted differently from the server it is
|
|
77
|
+
* previewing would be worse than none.
|
|
78
|
+
*/
|
|
79
|
+
export function capabilityUsageReader(store) {
|
|
80
|
+
return (grantId) => {
|
|
81
|
+
const since = new Date(Date.now() - CAPABILITY_DAY_MS).toISOString();
|
|
82
|
+
const drawn = store.capabilityUsage(grantId, since);
|
|
83
|
+
return { operations: drawn.operations, amountToday: drawn.amountInWindow };
|
|
84
|
+
};
|
|
85
|
+
}
|
|
47
86
|
export class TaskController {
|
|
48
87
|
store;
|
|
49
88
|
policy;
|
|
@@ -65,6 +104,15 @@ export class TaskController {
|
|
|
65
104
|
breaker ??
|
|
66
105
|
new CircuitBreaker(policy.unhinged ? { threshold: 0, cooldownMs: 0 } : policy.circuitBreaker);
|
|
67
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* The durable draw-down on each grant, as policy sees it.
|
|
109
|
+
*
|
|
110
|
+
* Handed to every `evaluatePolicy` call in this class so a metered grant is
|
|
111
|
+
* counted the same at plan time, at the re-check before execution, and in a
|
|
112
|
+
* preflight — a bound that only one of the three enforced would be a bound
|
|
113
|
+
* with a way around it.
|
|
114
|
+
*/
|
|
115
|
+
capabilityUsage = (grantId) => capabilityUsageReader(this.store)(grantId);
|
|
68
116
|
plan(request, options = {}) {
|
|
69
117
|
const parsedRequest = withDefaultEvidence(TaskRequestSchema.parse(request));
|
|
70
118
|
if (options.idempotencyKey !== undefined &&
|
|
@@ -77,7 +125,7 @@ export class TaskController {
|
|
|
77
125
|
}
|
|
78
126
|
this.preflight(parsedRequest);
|
|
79
127
|
const id = randomUUID();
|
|
80
|
-
const policy = evaluatePolicy(id, parsedRequest, this.policy);
|
|
128
|
+
const policy = evaluatePolicy(id, parsedRequest, this.policy, this.capabilityUsage);
|
|
81
129
|
const timestamp = now();
|
|
82
130
|
const sanitizedRequest = redactStructuredValue(parsedRequest)
|
|
83
131
|
.value;
|
|
@@ -119,7 +167,14 @@ export class TaskController {
|
|
|
119
167
|
!capabilities.has(parsed.operation.kind)) {
|
|
120
168
|
throw new Error(`operation_capability_unavailable:${parsed.operation.kind}`);
|
|
121
169
|
}
|
|
122
|
-
|
|
170
|
+
// Refused before anything is approved: a mutation run against evidence no
|
|
171
|
+
// registered verifier can check would end `partial` after the effect.
|
|
172
|
+
for (const predicate of parsed.requiredEvidence) {
|
|
173
|
+
if (!this.verifier.supports(predicate)) {
|
|
174
|
+
throw new Error(`evidence_verifier_unavailable:${predicate.type === "custom" ? predicate.verifier : predicate.type}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return evaluatePolicy("00000000-0000-4000-8000-000000000000", parsed, this.policy, this.capabilityUsage).decision;
|
|
123
178
|
}
|
|
124
179
|
status(taskId) {
|
|
125
180
|
const task = this.store.getTask(taskId);
|
|
@@ -132,6 +187,12 @@ export class TaskController {
|
|
|
132
187
|
if (task.status === "policy_blocked") {
|
|
133
188
|
return { task };
|
|
134
189
|
}
|
|
190
|
+
// Re-running the adapter is the one thing that must not happen to a parked
|
|
191
|
+
// task: it may already have run. `reconcile` asks the provider instead, so
|
|
192
|
+
// a caller retrying the obvious way gets the safe thing.
|
|
193
|
+
if (task.status === "recovery_required") {
|
|
194
|
+
return await this.reconcile(taskId);
|
|
195
|
+
}
|
|
135
196
|
if (!["planned", "awaiting_approval"].includes(task.status)) {
|
|
136
197
|
throw new Error(`task_not_executable:${task.status}`);
|
|
137
198
|
}
|
|
@@ -145,12 +206,13 @@ export class TaskController {
|
|
|
145
206
|
{
|
|
146
207
|
type: "idempotency",
|
|
147
208
|
passed: false,
|
|
209
|
+
strength: evidenceStrength("idempotency"),
|
|
148
210
|
summary: "duplicate_attempt_prevented",
|
|
149
211
|
},
|
|
150
212
|
]);
|
|
151
213
|
}
|
|
152
214
|
const request = this.loadRequest(taskId);
|
|
153
|
-
const rechecked = evaluatePolicy(task.id, request, this.policy);
|
|
215
|
+
const rechecked = evaluatePolicy(task.id, request, this.policy, this.capabilityUsage);
|
|
154
216
|
if (rechecked.decision.outcome === "deny") {
|
|
155
217
|
task.status = "policy_blocked";
|
|
156
218
|
task.policyDecision = rechecked.decision;
|
|
@@ -209,6 +271,7 @@ export class TaskController {
|
|
|
209
271
|
{
|
|
210
272
|
type: "operation_completed",
|
|
211
273
|
passed: actionSucceeded,
|
|
274
|
+
strength: evidenceStrength("operation_completed"),
|
|
212
275
|
summary: actionSucceeded
|
|
213
276
|
? "read-only operation completed"
|
|
214
277
|
: "operation reported failure",
|
|
@@ -223,6 +286,15 @@ export class TaskController {
|
|
|
223
286
|
task.status = "cancelled";
|
|
224
287
|
task.error = "duplicate_attempt_prevented";
|
|
225
288
|
}
|
|
289
|
+
// Metered here and nowhere else: the same point idempotency commits, so a
|
|
290
|
+
// grant is drawn down by work that actually happened and was verified.
|
|
291
|
+
// A refusal, a failed verification, a duplicate collapsed just above —
|
|
292
|
+
// none of them reach this line, and none of them cost the caller a draw.
|
|
293
|
+
if (verified &&
|
|
294
|
+
task.status !== "cancelled" &&
|
|
295
|
+
rechecked.grantId !== undefined) {
|
|
296
|
+
this.store.recordCapabilityUse(rechecked.grantId, task.id, classified.spend?.amount ?? 0, now());
|
|
297
|
+
}
|
|
226
298
|
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, startedAt, actionSucceeded, result, evidence, approval);
|
|
227
299
|
this.store.saveReceipt(receipt);
|
|
228
300
|
task.receiptIds.push(receipt.receiptId);
|
|
@@ -248,21 +320,39 @@ export class TaskController {
|
|
|
248
320
|
if (!shortCircuited && (!aborted || budgetExhausted)) {
|
|
249
321
|
this.breaker.recordFailure(classified.target);
|
|
250
322
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
323
|
+
// Checked on the raw message and ahead of every other outcome, because it
|
|
324
|
+
// is the strongest thing known: the adapter says the effect may already
|
|
325
|
+
// have happened. `failed`, `cancelled` and `budget_exhausted` all assert
|
|
326
|
+
// more than that. Reads are exempt — a read that may or may not have run
|
|
327
|
+
// changed nothing either way, so there is nothing to reconcile.
|
|
328
|
+
const unknownOutcome = classified.effect !== "read" && isOutcomeUnknown(rawMessage);
|
|
329
|
+
task.status = unknownOutcome
|
|
330
|
+
? "recovery_required"
|
|
331
|
+
: aborted
|
|
332
|
+
? budgetExhausted
|
|
333
|
+
? "budget_exhausted"
|
|
334
|
+
: "cancelled"
|
|
335
|
+
: "failed";
|
|
336
|
+
task.error = unknownOutcome
|
|
337
|
+
? message
|
|
338
|
+
: budgetExhausted
|
|
339
|
+
? "task_budget_exhausted"
|
|
340
|
+
: message;
|
|
257
341
|
task.updatedAt = now();
|
|
258
342
|
const evidence = [
|
|
259
343
|
{
|
|
260
344
|
type: "execution_error",
|
|
261
345
|
passed: false,
|
|
262
|
-
|
|
346
|
+
// The adapter could not say, so neither can the receipt. Without this
|
|
347
|
+
// the item reads as proof the effect did not happen.
|
|
348
|
+
...(unknownOutcome ? { inconclusive: true } : {}),
|
|
349
|
+
strength: evidenceStrength("execution_error"),
|
|
350
|
+
summary: budgetExhausted && !unknownOutcome
|
|
351
|
+
? "task_budget_exhausted"
|
|
352
|
+
: message,
|
|
263
353
|
},
|
|
264
354
|
];
|
|
265
|
-
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, startedAt, false, {}, evidence, approval,
|
|
355
|
+
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, startedAt, false, {}, evidence, approval, task.error);
|
|
266
356
|
this.store.saveReceipt(receipt);
|
|
267
357
|
task.receiptIds.push(receipt.receiptId);
|
|
268
358
|
this.store.saveTask(task);
|
|
@@ -302,6 +392,87 @@ export class TaskController {
|
|
|
302
392
|
async verifyStandalone(predicates) {
|
|
303
393
|
return await this.verifier.verify(predicates, {});
|
|
304
394
|
}
|
|
395
|
+
/**
|
|
396
|
+
* Ask the provider whether an effect MELRA could not observe actually
|
|
397
|
+
* happened.
|
|
398
|
+
*
|
|
399
|
+
* Reachable only from `recovery_required`, the one status that says "unknown"
|
|
400
|
+
* rather than a result. The predicates are read against the facts that were
|
|
401
|
+
* true *before* the call — the idempotency key that went out, the destination
|
|
402
|
+
* — because a request that was never answered left no response to
|
|
403
|
+
* interpolate a verification URL from.
|
|
404
|
+
*
|
|
405
|
+
* Three answers, and the third is the point: it happened, it did not, or the
|
|
406
|
+
* provider could not be reached and the task stays exactly where it was.
|
|
407
|
+
*/
|
|
408
|
+
async reconcile(taskId) {
|
|
409
|
+
const task = this.status(taskId);
|
|
410
|
+
if (task.status !== "recovery_required") {
|
|
411
|
+
throw new Error(`task_not_reconcilable:${task.status}`);
|
|
412
|
+
}
|
|
413
|
+
const request = this.loadRequest(taskId);
|
|
414
|
+
const classified = classifyOperation(request.operation);
|
|
415
|
+
const park = (reason) => {
|
|
416
|
+
task.error = reason;
|
|
417
|
+
task.updatedAt = now();
|
|
418
|
+
this.store.saveTask(task);
|
|
419
|
+
return { task };
|
|
420
|
+
};
|
|
421
|
+
if (request.reconciliation.length === 0) {
|
|
422
|
+
return park("reconciliation_not_declared");
|
|
423
|
+
}
|
|
424
|
+
const verification = await this.verifier.verify(request.reconciliation, reconciliationFacts(task, request.operation));
|
|
425
|
+
// An unreachable provider did not say no. Resolving on this would be the
|
|
426
|
+
// same lie as the `failed` this whole path exists to avoid.
|
|
427
|
+
if (verification.evidence.some((item) => item.inconclusive === true)) {
|
|
428
|
+
return park("reconciliation_inconclusive");
|
|
429
|
+
}
|
|
430
|
+
if (verification.verified) {
|
|
431
|
+
return this.resolveAsVerified(task, request, classified, verification.evidence, { reconciliation: "provider_state_confirms_effect" });
|
|
432
|
+
}
|
|
433
|
+
// The provider answered, and the answer is that it never happened. Only now
|
|
434
|
+
// is `failed` a claim MELRA is entitled to make.
|
|
435
|
+
task.status = "failed";
|
|
436
|
+
task.error = "reconciliation_confirms_effect_not_applied";
|
|
437
|
+
task.updatedAt = now();
|
|
438
|
+
this.store.saveTask(task);
|
|
439
|
+
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, task.updatedAt, false, { reconciliation: "provider_state_denies_effect" }, verification.evidence, undefined, task.error);
|
|
440
|
+
this.store.saveReceipt(receipt);
|
|
441
|
+
task.receiptIds.push(receipt.receiptId);
|
|
442
|
+
const certificate = this.createAndSaveCertificate(task, verification.evidence);
|
|
443
|
+
return { task, receipt, certificate };
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Settle a task as done on evidence gathered after the fact.
|
|
447
|
+
*
|
|
448
|
+
* Shared by restart recovery and reconciliation because the two differ only
|
|
449
|
+
* in where the evidence came from. Everything an ordinary success does has to
|
|
450
|
+
* happen here too — the idempotency commit *and* the capability draw-down —
|
|
451
|
+
* or an effect settled this way would be free to run again and free to spend.
|
|
452
|
+
*/
|
|
453
|
+
resolveAsVerified(task, request, classified, evidence, observed) {
|
|
454
|
+
if (task.idempotencyKey !== undefined &&
|
|
455
|
+
this.store.getIdempotencyCommit(task.idempotencyKey) === undefined) {
|
|
456
|
+
this.store.commitIdempotency(task.idempotencyKey, task.id, task.attempt ?? 1, now());
|
|
457
|
+
}
|
|
458
|
+
// Read for the grant id only. The work is already done, so this is
|
|
459
|
+
// accounting rather than permission — a grant that has since run out still
|
|
460
|
+
// pays for what it authorised.
|
|
461
|
+
const { grantId } = evaluatePolicy(task.id, request, this.policy, this.capabilityUsage);
|
|
462
|
+
if (grantId !== undefined) {
|
|
463
|
+
this.store.recordCapabilityUse(grantId, task.id, classified.spend?.amount ?? 0, now());
|
|
464
|
+
}
|
|
465
|
+
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, task.updatedAt, true, observed, evidence, task.approval === undefined
|
|
466
|
+
? undefined
|
|
467
|
+
: { approvalId: task.approval.approvalId, phrase: "recovered" });
|
|
468
|
+
this.store.saveReceipt(receipt);
|
|
469
|
+
task.receiptIds.push(receipt.receiptId);
|
|
470
|
+
task.status = "verified_success";
|
|
471
|
+
delete task.error;
|
|
472
|
+
task.updatedAt = now();
|
|
473
|
+
const certificate = this.createAndSaveCertificate(task, evidence);
|
|
474
|
+
return { task, receipt, certificate };
|
|
475
|
+
}
|
|
305
476
|
async recoverInterrupted() {
|
|
306
477
|
const recovered = [];
|
|
307
478
|
for (const task of this.store.listInterruptedTasks()) {
|
|
@@ -313,23 +484,9 @@ export class TaskController {
|
|
|
313
484
|
request.requiredEvidence.every((predicate) => ["file_exists", "file_absent", "file_hash"].includes(predicate.type))) {
|
|
314
485
|
const verification = await this.verifier.verify(request.requiredEvidence, {});
|
|
315
486
|
if (verification.verified) {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
this.store.commitIdempotency(task.idempotencyKey, task.id, task.attempt ?? 1, now());
|
|
320
|
-
}
|
|
321
|
-
const receipt = this.createReceipt(task, request, classified.capability, classified.target, classified.effect, task.updatedAt, true, { recovery: "independent_reobservation" }, verification.evidence, task.approval === undefined
|
|
322
|
-
? undefined
|
|
323
|
-
: {
|
|
324
|
-
approvalId: task.approval.approvalId,
|
|
325
|
-
phrase: "recovered",
|
|
326
|
-
});
|
|
327
|
-
this.store.saveReceipt(receipt);
|
|
328
|
-
task.receiptIds.push(receipt.receiptId);
|
|
329
|
-
task.status = "verified_success";
|
|
330
|
-
delete task.error;
|
|
331
|
-
task.updatedAt = now();
|
|
332
|
-
this.createAndSaveCertificate(task, verification.evidence);
|
|
487
|
+
this.resolveAsVerified(task, request, classified, verification.evidence, {
|
|
488
|
+
recovery: "independent_reobservation",
|
|
489
|
+
});
|
|
333
490
|
recovered.push(task);
|
|
334
491
|
continue;
|
|
335
492
|
}
|
|
@@ -342,6 +499,13 @@ export class TaskController {
|
|
|
342
499
|
: "interrupted_mutation_requires_reconciliation";
|
|
343
500
|
task.updatedAt = now();
|
|
344
501
|
this.store.saveTask(task);
|
|
502
|
+
// A crash mid-flight is the same unknown a dropped reply is, so a task
|
|
503
|
+
// that declared how to settle one gets asked here rather than waiting for
|
|
504
|
+
// someone to notice it. Still parked if the provider cannot answer.
|
|
505
|
+
if (task.status === "recovery_required" && request.reconciliation.length > 0) {
|
|
506
|
+
recovered.push((await this.reconcile(task.id)).task);
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
345
509
|
recovered.push(task);
|
|
346
510
|
}
|
|
347
511
|
return recovered;
|
|
@@ -381,6 +545,8 @@ export class TaskController {
|
|
|
381
545
|
capability,
|
|
382
546
|
principal: delegationChain(request.identity ?? LOCAL_IDENTITY),
|
|
383
547
|
effect,
|
|
548
|
+
executionGuarantee: executionGuaranteeFor(effect, request.reconciliation.length > 0),
|
|
549
|
+
mode: this.policy.mode,
|
|
384
550
|
policyDecision: {
|
|
385
551
|
outcome: task.policyDecision.outcome,
|
|
386
552
|
policyVersion: task.policyDecision.policyVersion,
|
|
@@ -404,7 +570,11 @@ export class TaskController {
|
|
|
404
570
|
return TaskRequestSchema.parse(this.payloadCipher.open(sealed, `task:${taskId}:request`));
|
|
405
571
|
}
|
|
406
572
|
async executeWithRetries(task, request, effect, signal) {
|
|
407
|
-
|
|
573
|
+
// Asked of the guarantee rather than re-derived from the effect, so the
|
|
574
|
+
// promise the plan published is the same rule the loop obeys.
|
|
575
|
+
const maximumAttempts = allowsRetry(executionGuaranteeFor(effect, request.reconciliation.length > 0))
|
|
576
|
+
? request.budget.maxRetries + 1
|
|
577
|
+
: 1;
|
|
408
578
|
let lastError;
|
|
409
579
|
for (let attempt = 1; attempt <= maximumAttempts; attempt += 1) {
|
|
410
580
|
if (signal.aborted)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-controller.js","sourceRoot":"","sources":["../src/task-controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-controller.js","sourceRoot":"","sources":["../src/task-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,18 @@ export declare class WorkflowController {
|
|
|
30
30
|
private transition;
|
|
31
31
|
private loadDefinition;
|
|
32
32
|
private replay;
|
|
33
|
+
/**
|
|
34
|
+
* Run declared compensations one at a time, newest effect first, stopping at
|
|
35
|
+
* the first that does not land `compensated`.
|
|
36
|
+
*
|
|
37
|
+
* `nodeIds` is already in unwind order. Nothing here is special-cased for the
|
|
38
|
+
* provider a compensation talks to: each one is an ordinary request through
|
|
39
|
+
* `runTask`, so undoing a charge at one host and a shipment at another is the
|
|
40
|
+
* same code path as undoing two at the same host — policy, approval, and the
|
|
41
|
+
* compensation's own declared evidence all still apply, and a delegate saying
|
|
42
|
+
* "reversed" without evidence still does not count.
|
|
43
|
+
*/
|
|
44
|
+
private unwind;
|
|
33
45
|
private advanceNode;
|
|
34
46
|
private runTask;
|
|
35
47
|
private runSequential;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-controller.d.ts","sourceRoot":"","sources":["../src/workflow-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-controller.d.ts","sourceRoot":"","sources":["../src/workflow-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgBtD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAeD,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAPlC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;IAC9E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAGvC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,aAAa,EAC5B,eAAe,SAAS;IAG3C,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,WAAW;IA6DjD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAMvC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,aAAa,EAAE;IAKxD,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,gBAAgB,EAAO,EAClC,MAAM,GAAE,aAAa,EAAO,GAC3B,OAAO,CAAC,qBAAqB,CAAC;YAyBnB,aAAa;YAmCb,WAAW;IAuOnB,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA+ElD,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAItC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAIxC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAsBvC,OAAO,CAAC,IAAI;IAmBZ,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IA+BvC,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,MAAM;IAmBd;;;;;;;;;;OAUG;YACW,MAAM;YAwBN,WAAW;YAyLX,OAAO;YAwCP,aAAa;YA+Bb,WAAW;YAmCX,OAAO;IAwDrB,OAAO,CAAC,YAAY;CAmErB"}
|