@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.
Files changed (41) hide show
  1. package/dist/task-controller.d.ts +41 -1
  2. package/dist/task-controller.d.ts.map +1 -1
  3. package/dist/task-controller.js +202 -32
  4. package/dist/task-controller.js.map +1 -1
  5. package/dist/workflow-controller.d.ts +12 -0
  6. package/dist/workflow-controller.d.ts.map +1 -1
  7. package/dist/workflow-controller.js +95 -11
  8. package/dist/workflow-controller.js.map +1 -1
  9. package/package.json +8 -8
  10. package/dist/circuit-breaker.test.d.ts +0 -2
  11. package/dist/circuit-breaker.test.d.ts.map +0 -1
  12. package/dist/circuit-breaker.test.js +0 -51
  13. package/dist/circuit-breaker.test.js.map +0 -1
  14. package/dist/payload-cipher.test.d.ts +0 -2
  15. package/dist/payload-cipher.test.d.ts.map +0 -1
  16. package/dist/payload-cipher.test.js +0 -33
  17. package/dist/payload-cipher.test.js.map +0 -1
  18. package/dist/retry-guard.test.d.ts +0 -2
  19. package/dist/retry-guard.test.d.ts.map +0 -1
  20. package/dist/retry-guard.test.js +0 -45
  21. package/dist/retry-guard.test.js.map +0 -1
  22. package/dist/task-controller.test.d.ts +0 -2
  23. package/dist/task-controller.test.d.ts.map +0 -1
  24. package/dist/task-controller.test.js +0 -486
  25. package/dist/task-controller.test.js.map +0 -1
  26. package/dist/verification-gate.test.d.ts +0 -2
  27. package/dist/verification-gate.test.d.ts.map +0 -1
  28. package/dist/verification-gate.test.js +0 -42
  29. package/dist/verification-gate.test.js.map +0 -1
  30. package/dist/workflow-controller.test.d.ts +0 -2
  31. package/dist/workflow-controller.test.d.ts.map +0 -1
  32. package/dist/workflow-controller.test.js +0 -785
  33. package/dist/workflow-controller.test.js.map +0 -1
  34. package/dist/workflow-events.test.d.ts +0 -2
  35. package/dist/workflow-events.test.d.ts.map +0 -1
  36. package/dist/workflow-events.test.js +0 -113
  37. package/dist/workflow-events.test.js.map +0 -1
  38. package/dist/workflow-graph.test.d.ts +0 -2
  39. package/dist/workflow-graph.test.d.ts.map +0 -1
  40. package/dist/workflow-graph.test.js +0 -169
  41. 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":"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"}
1
+ {"version":3,"file":"task-controller.d.ts","sourceRoot":"","sources":["../src/task-controller.ts"],"names":[],"mappings":"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"}
@@ -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
- return evaluatePolicy("00000000-0000-4000-8000-000000000000", parsed, this.policy).decision;
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
- task.status = aborted
252
- ? budgetExhausted
253
- ? "budget_exhausted"
254
- : "cancelled"
255
- : "failed";
256
- task.error = budgetExhausted ? "task_budget_exhausted" : message;
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
- summary: budgetExhausted ? "task_budget_exhausted" : message,
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, budgetExhausted ? "task_budget_exhausted" : message);
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
- if (task.idempotencyKey !== undefined &&
317
- this.store.getIdempotencyCommit(task.idempotencyKey) ===
318
- undefined) {
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
- const maximumAttempts = effect === "read" ? request.budget.maxRetries + 1 : 1;
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;AAYtD,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;IAiDjD,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;IA6KnB,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;YAmBA,WAAW;YAyLX,OAAO;YAwCP,aAAa;YA+Bb,WAAW;YAmCX,OAAO;IAwDrB,OAAO,CAAC,YAAY;CAmDrB"}
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"}