@resolveio/server-lib 22.3.136 → 22.3.138

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "22.3.136",
3
+ "version": "22.3.138",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -83,6 +83,76 @@ export interface ResolveIOAIManagerRecoveryEvidenceProbe {
83
83
  loopResetEvidence: string[];
84
84
  createdAt: string;
85
85
  }
86
+ export type ResolveIOAIManagerRecoveryAutomationMode = 'advance' | 'collect_evidence' | 'read_only_diagnosis' | 'repair_infra' | 'repair_compile' | 'repair_journey_contract' | 'repair_business_assertion' | 'repair_release' | 'targeted_product_repair' | 'manual_review' | 'continue_gate';
87
+ export interface ResolveIOAIManagerRecoveryActionRetryPolicy {
88
+ allowImmediateRetry: boolean;
89
+ requireNewEvidence: boolean;
90
+ resetLoopWhen: string[];
91
+ stopWhen: string[];
92
+ }
93
+ export interface ResolveIOAIManagerRecoveryActionPacket {
94
+ actionId: string;
95
+ checkpointId: string;
96
+ probeId: string;
97
+ recoveryClass: ResolveIOAIManagerRecoveryClass;
98
+ mode: ResolveIOAIManagerRecoveryAutomationMode;
99
+ label: string;
100
+ lane: string;
101
+ stepType: string;
102
+ primaryStepKind: ResolveIOAIManagerRecoveryEvidenceProbeStepKind | 'none';
103
+ objective: string;
104
+ evidenceOnly: boolean;
105
+ autoRunnable: boolean;
106
+ productRepairAllowed: boolean;
107
+ expensiveModelAllowed: boolean;
108
+ canResetLoopAfterEvidence: boolean;
109
+ maxAttemptsBeforePark: number;
110
+ requiredArtifacts: string[];
111
+ nextCommands: string[];
112
+ successCriteria: string[];
113
+ retryPolicy: ResolveIOAIManagerRecoveryActionRetryPolicy;
114
+ blockedReason?: string;
115
+ createdAt: string;
116
+ }
117
+ export type ResolveIOAIManagerRecoveryActionDispatchAction = 'run_evidence_probe' | 'run_read_only_diagnosis' | 'run_infra_repair' | 'run_compile_repair' | 'run_journey_contract_repair' | 'run_business_assertion_repair' | 'run_release_repair' | 'run_targeted_product_repair' | 'advance' | 'continue_gate' | 'park_manual';
118
+ export type ResolveIOAIManagerRecoveryActionDispatchStatus = 'queued' | 'started' | 'completed' | 'failed' | 'parked';
119
+ export interface ResolveIOAIManagerRecoveryActionDispatchRecord {
120
+ dispatchId: string;
121
+ actionId: string;
122
+ checkpointId: string;
123
+ probeId: string;
124
+ mode: ResolveIOAIManagerRecoveryAutomationMode;
125
+ dispatchAction: ResolveIOAIManagerRecoveryActionDispatchAction;
126
+ status: ResolveIOAIManagerRecoveryActionDispatchStatus;
127
+ evidenceHash: string;
128
+ blockerFingerprint: string;
129
+ productRepairAllowed: boolean;
130
+ expensiveModelAllowed: boolean;
131
+ reason: string;
132
+ artifactPaths: string[];
133
+ startedAt?: string;
134
+ completedAt?: string;
135
+ createdAt: string;
136
+ }
137
+ export interface ResolveIOAIManagerRecoveryActionDispatchInput {
138
+ action?: ResolveIOAIManagerRecoveryActionPacket;
139
+ history?: ResolveIOAIManagerRecoveryActionDispatchRecord[];
140
+ current?: ResolveIOAIManagerFailureRecord;
141
+ operatorApproved?: boolean;
142
+ now?: Date | string;
143
+ }
144
+ export interface ResolveIOAIManagerRecoveryActionDispatchDecision {
145
+ dispatchAction: ResolveIOAIManagerRecoveryActionDispatchAction;
146
+ allowed: boolean;
147
+ reason: string;
148
+ status: ResolveIOAIManagerRecoveryActionDispatchStatus;
149
+ canRunProductRepair: boolean;
150
+ canRunExpensiveModel: boolean;
151
+ shouldRecordDispatch: boolean;
152
+ requiresNewEvidence: boolean;
153
+ newEvidence: boolean;
154
+ dispatchRecord?: ResolveIOAIManagerRecoveryActionDispatchRecord;
155
+ }
86
156
  export interface ResolveIOAIManagerRecoveryCheckpointInput {
87
157
  plan: ResolveIOAIManagerRecoveryPlan;
88
158
  current?: ResolveIOAIManagerFailureRecord;
@@ -115,6 +185,13 @@ export interface ResolveIOAIManagerRecoveryEvidenceProbeInput {
115
185
  current?: ResolveIOAIManagerFailureRecord;
116
186
  now?: Date | string;
117
187
  }
188
+ export interface ResolveIOAIManagerRecoveryActionPacketInput {
189
+ plan?: ResolveIOAIManagerRecoveryPlan;
190
+ checkpoint: ResolveIOAIManagerRecoveryCheckpoint;
191
+ probe?: ResolveIOAIManagerRecoveryEvidenceProbe;
192
+ current?: ResolveIOAIManagerFailureRecord;
193
+ now?: Date | string;
194
+ }
118
195
  export interface ResolveIOAIManagerRecoveryPlanInput {
119
196
  action?: ResolveIOAIManagerAction | string;
120
197
  reason?: string;
@@ -152,12 +229,16 @@ export interface ResolveIOAIManagerPolicyDecision {
152
229
  recoveryPlan: ResolveIOAIManagerRecoveryPlan;
153
230
  recoveryCheckpoint: ResolveIOAIManagerRecoveryCheckpoint;
154
231
  recoveryEvidenceProbe: ResolveIOAIManagerRecoveryEvidenceProbe;
232
+ recoveryAction: ResolveIOAIManagerRecoveryActionPacket;
155
233
  }
156
234
  export declare function normalizeResolveIOAIManagerFailureClass(value: any): string;
157
235
  export declare function fingerprintResolveIOAIManagerBlocker(value: any): string;
158
236
  export declare function hashResolveIOAIManagerEvidence(record: ResolveIOAIManagerFailureRecord | undefined): string;
159
237
  export declare function buildResolveIOAIManagerRecoveryCheckpoint(input: ResolveIOAIManagerRecoveryCheckpointInput): ResolveIOAIManagerRecoveryCheckpoint;
160
238
  export declare function buildResolveIOAIManagerRecoveryEvidenceProbe(input: ResolveIOAIManagerRecoveryEvidenceProbeInput): ResolveIOAIManagerRecoveryEvidenceProbe;
239
+ export declare function buildResolveIOAIManagerRecoveryActionPacket(input: ResolveIOAIManagerRecoveryActionPacketInput): ResolveIOAIManagerRecoveryActionPacket;
240
+ export declare function decideResolveIOAIManagerRecoveryActionDispatch(input: ResolveIOAIManagerRecoveryActionDispatchInput): ResolveIOAIManagerRecoveryActionDispatchDecision;
241
+ export declare function appendResolveIOAIManagerRecoveryActionDispatch(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined, record: ResolveIOAIManagerRecoveryActionDispatchRecord | undefined, limit?: number): ResolveIOAIManagerRecoveryActionDispatchRecord[];
161
242
  export declare function decideResolveIOAIManagerRecoveryGate(input: ResolveIOAIManagerRecoveryGateInput): ResolveIOAIManagerRecoveryGateDecision;
162
243
  export declare function buildResolveIOAIManagerRecoveryPlan(input?: ResolveIOAIManagerRecoveryPlanInput): ResolveIOAIManagerRecoveryPlan;
163
244
  export declare function decideResolveIOAIManagerPolicy(input: ResolveIOAIManagerPolicyInput): ResolveIOAIManagerPolicyDecision;
@@ -52,6 +52,9 @@ exports.fingerprintResolveIOAIManagerBlocker = fingerprintResolveIOAIManagerBloc
52
52
  exports.hashResolveIOAIManagerEvidence = hashResolveIOAIManagerEvidence;
53
53
  exports.buildResolveIOAIManagerRecoveryCheckpoint = buildResolveIOAIManagerRecoveryCheckpoint;
54
54
  exports.buildResolveIOAIManagerRecoveryEvidenceProbe = buildResolveIOAIManagerRecoveryEvidenceProbe;
55
+ exports.buildResolveIOAIManagerRecoveryActionPacket = buildResolveIOAIManagerRecoveryActionPacket;
56
+ exports.decideResolveIOAIManagerRecoveryActionDispatch = decideResolveIOAIManagerRecoveryActionDispatch;
57
+ exports.appendResolveIOAIManagerRecoveryActionDispatch = appendResolveIOAIManagerRecoveryActionDispatch;
55
58
  exports.decideResolveIOAIManagerRecoveryGate = decideResolveIOAIManagerRecoveryGate;
56
59
  exports.buildResolveIOAIManagerRecoveryPlan = buildResolveIOAIManagerRecoveryPlan;
57
60
  exports.decideResolveIOAIManagerPolicy = decideResolveIOAIManagerPolicy;
@@ -314,6 +317,251 @@ function buildResolveIOAIManagerRecoveryEvidenceProbe(input) {
314
317
  createdAt: now
315
318
  };
316
319
  }
320
+ function recoveryAutomationModeFor(checkpoint) {
321
+ if (checkpoint.status === 'manual_handoff' || checkpoint.recoveryClass === 'manual_handoff') {
322
+ return 'manual_review';
323
+ }
324
+ if (checkpoint.status === 'complete' || checkpoint.recoveryClass === 'advance_after_proof') {
325
+ return 'advance';
326
+ }
327
+ if (checkpoint.status === 'parked' || checkpoint.recoveryClass === 'blocked_until_new_evidence') {
328
+ return 'collect_evidence';
329
+ }
330
+ if (checkpoint.recoveryClass === 'diagnosis_only' || checkpoint.recoveryClass === 'diagnosis_revision') {
331
+ return 'read_only_diagnosis';
332
+ }
333
+ if (checkpoint.recoveryClass === 'infra_repair') {
334
+ return 'repair_infra';
335
+ }
336
+ if (checkpoint.recoveryClass === 'compile_repair') {
337
+ return 'repair_compile';
338
+ }
339
+ if (checkpoint.recoveryClass === 'journey_contract_repair') {
340
+ return 'repair_journey_contract';
341
+ }
342
+ if (checkpoint.recoveryClass === 'business_proof_repair') {
343
+ return 'repair_business_assertion';
344
+ }
345
+ if (checkpoint.recoveryClass === 'release_repair') {
346
+ return 'repair_release';
347
+ }
348
+ if (checkpoint.recoveryClass === 'product_code_repair') {
349
+ return 'targeted_product_repair';
350
+ }
351
+ return 'continue_gate';
352
+ }
353
+ function recoveryActionLabelFor(mode, checkpoint) {
354
+ var explicit = cleanText(checkpoint.nextActionLabel, 120);
355
+ if (explicit && mode !== 'collect_evidence') {
356
+ return explicit;
357
+ }
358
+ var labels = {
359
+ advance: 'Advance To Next Gate',
360
+ collect_evidence: 'Collect New Evidence',
361
+ read_only_diagnosis: 'Run Diagnosis Evidence Pass',
362
+ repair_infra: 'Repair Infra Gate',
363
+ repair_compile: 'Repair Compile Gate',
364
+ repair_journey_contract: 'Repair Journey Contract',
365
+ repair_business_assertion: 'Repair Business Proof',
366
+ repair_release: 'Repair Release Gate',
367
+ targeted_product_repair: 'Run Targeted Repair',
368
+ manual_review: 'Manual Review',
369
+ continue_gate: 'Continue Current Gate'
370
+ };
371
+ return labels[mode];
372
+ }
373
+ function recoveryActionAutoRunnable(mode, probe) {
374
+ if (mode === 'manual_review') {
375
+ return false;
376
+ }
377
+ if (mode === 'advance' || mode === 'continue_gate') {
378
+ return true;
379
+ }
380
+ if (mode === 'targeted_product_repair' || mode === 'read_only_diagnosis' || mode === 'repair_journey_contract' || mode === 'repair_business_assertion') {
381
+ return true;
382
+ }
383
+ return probe.steps.some(function (step) { return step.commandHint || step.kind === 'rerun_same_gate' || step.kind === 'release_status' || step.kind === 'diff_scope_check'; });
384
+ }
385
+ function buildResolveIOAIManagerRecoveryActionPacket(input) {
386
+ var checkpoint = input.checkpoint;
387
+ var probe = input.probe || buildResolveIOAIManagerRecoveryEvidenceProbe({
388
+ checkpoint: checkpoint,
389
+ current: input.current,
390
+ now: input.now
391
+ });
392
+ var mode = recoveryAutomationModeFor(checkpoint);
393
+ var primaryStep = probe.steps.find(function (step) { return step.required && step.id !== 'snapshot_current_blocker'; })
394
+ || probe.steps.find(function (step) { return step.required; })
395
+ || probe.steps[0];
396
+ var evidenceOnly = probe.evidenceOnly || mode === 'collect_evidence' || mode === 'repair_infra' || mode === 'repair_compile' || mode === 'repair_release';
397
+ var requireNewEvidence = mode === 'collect_evidence'
398
+ || checkpoint.status === 'parked'
399
+ || checkpoint.attempts >= checkpoint.maxAttemptsBeforePark;
400
+ var stopWhen = Array.from(new Set(__spreadArray(__spreadArray([], __read(probe.stopConditions), false), __read((requireNewEvidence ? ['same blocker fingerprint and same evidence hash after probe'] : [])), false).map(function (entry) { return cleanText(entry, 500); }).filter(Boolean))).slice(0, 30);
401
+ var resetLoopWhen = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(checkpoint.loopResetEvidence), false), __read(probe.loopResetEvidence), false), __read((requireNewEvidence ? ['changed evidence hash', 'new artifact path'] : [])), false).map(function (entry) { return cleanText(entry, 500); }).filter(Boolean))).slice(0, 30);
402
+ var nextCommands = probe.steps
403
+ .map(function (step) { return cleanText(step.commandHint || "".concat(step.kind, ":").concat(step.id), 500); })
404
+ .filter(Boolean)
405
+ .slice(0, 12);
406
+ var now = isoNow(input.now);
407
+ return __assign(__assign({ actionId: stableHash('mgr-action', {
408
+ checkpointId: checkpoint.checkpointId,
409
+ probeId: probe.probeId,
410
+ mode: mode,
411
+ evidenceHash: checkpoint.evidenceHash,
412
+ blockerFingerprint: checkpoint.blockerFingerprint
413
+ }), checkpointId: checkpoint.checkpointId, probeId: probe.probeId, recoveryClass: checkpoint.recoveryClass, mode: mode, label: recoveryActionLabelFor(mode, checkpoint), lane: checkpoint.lane, stepType: checkpoint.stepType, primaryStepKind: (primaryStep === null || primaryStep === void 0 ? void 0 : primaryStep.kind) || 'none', objective: mode === 'collect_evidence'
414
+ ? probe.objective
415
+ : cleanText(checkpoint.objective || probe.objective, 1000), evidenceOnly: evidenceOnly, autoRunnable: recoveryActionAutoRunnable(mode, probe), productRepairAllowed: checkpoint.productRepairAllowed && !evidenceOnly && checkpoint.status !== 'parked', expensiveModelAllowed: checkpoint.expensiveModelAllowed && checkpoint.status !== 'parked', canResetLoopAfterEvidence: resetLoopWhen.length > 0, maxAttemptsBeforePark: checkpoint.maxAttemptsBeforePark, requiredArtifacts: probe.requiredArtifacts.slice(0, 20), nextCommands: nextCommands, successCriteria: probe.acceptanceEvidence.slice(0, 20), retryPolicy: {
416
+ allowImmediateRetry: checkpoint.status !== 'parked' && mode !== 'manual_review',
417
+ requireNewEvidence: requireNewEvidence,
418
+ resetLoopWhen: resetLoopWhen,
419
+ stopWhen: stopWhen
420
+ } }, (mode === 'collect_evidence' ? { blockedReason: 'Manager parked this loop until the recovery action records new evidence.' } : {})), { createdAt: now });
421
+ }
422
+ function dispatchActionForMode(mode) {
423
+ var map = {
424
+ advance: 'advance',
425
+ collect_evidence: 'run_evidence_probe',
426
+ read_only_diagnosis: 'run_read_only_diagnosis',
427
+ repair_infra: 'run_infra_repair',
428
+ repair_compile: 'run_compile_repair',
429
+ repair_journey_contract: 'run_journey_contract_repair',
430
+ repair_business_assertion: 'run_business_assertion_repair',
431
+ repair_release: 'run_release_repair',
432
+ targeted_product_repair: 'run_targeted_product_repair',
433
+ manual_review: 'park_manual',
434
+ continue_gate: 'continue_gate'
435
+ };
436
+ return map[mode] || 'park_manual';
437
+ }
438
+ function buildRecoveryDispatchRecord(action, dispatchAction, status, reason, current, now) {
439
+ var evidenceHash = (current === null || current === void 0 ? void 0 : current.evidenceHash) || action.checkpointId || action.actionId;
440
+ var blockerFingerprint = resolveResolveIOAIManagerBlockerFingerprint(current, action.objective);
441
+ var artifactPaths = cleanList(current === null || current === void 0 ? void 0 : current.artifactPaths, 20, 500);
442
+ var createdAt = isoNow(now);
443
+ return __assign(__assign(__assign({ dispatchId: stableHash('mgr-dispatch', {
444
+ actionId: action.actionId,
445
+ dispatchAction: dispatchAction,
446
+ evidenceHash: evidenceHash,
447
+ blockerFingerprint: blockerFingerprint,
448
+ status: status
449
+ }), actionId: action.actionId, checkpointId: action.checkpointId, probeId: action.probeId, mode: action.mode, dispatchAction: dispatchAction, status: status, evidenceHash: evidenceHash, blockerFingerprint: blockerFingerprint, productRepairAllowed: action.productRepairAllowed && dispatchAction === 'run_targeted_product_repair', expensiveModelAllowed: action.expensiveModelAllowed && dispatchAction !== 'run_evidence_probe', reason: reason, artifactPaths: artifactPaths }, (status === 'started' ? { startedAt: createdAt } : {})), (status === 'completed' ? { completedAt: createdAt } : {})), { createdAt: createdAt });
450
+ }
451
+ function decideResolveIOAIManagerRecoveryActionDispatch(input) {
452
+ var action = input.action;
453
+ var history = Array.isArray(input.history) ? input.history.filter(Boolean).slice(-50) : [];
454
+ var current = input.current || {};
455
+ if (!action) {
456
+ return {
457
+ dispatchAction: 'park_manual',
458
+ allowed: false,
459
+ reason: 'recovery_dispatch_missing_action',
460
+ status: 'parked',
461
+ canRunProductRepair: false,
462
+ canRunExpensiveModel: false,
463
+ shouldRecordDispatch: false,
464
+ requiresNewEvidence: true,
465
+ newEvidence: false
466
+ };
467
+ }
468
+ var dispatchAction = dispatchActionForMode(action.mode);
469
+ var evidenceHash = current.evidenceHash || action.checkpointId || action.actionId;
470
+ var blockerFingerprint = resolveResolveIOAIManagerBlockerFingerprint(current, action.objective);
471
+ var sameActionHistory = history.filter(function (entry) { return entry.actionId === action.actionId; });
472
+ var sameEvidenceHistory = sameActionHistory.filter(function (entry) { return entry.evidenceHash === evidenceHash
473
+ && entry.blockerFingerprint === blockerFingerprint; });
474
+ var activeDispatch = sameEvidenceHistory.find(function (entry) { return entry.status === 'queued' || entry.status === 'started'; });
475
+ var completedDispatch = sameEvidenceHistory.find(function (entry) { return entry.status === 'completed' || entry.status === 'failed'; });
476
+ var newEvidence = sameActionHistory.length > 0 && sameEvidenceHistory.length === 0;
477
+ var requiresNewEvidence = action.retryPolicy.requireNewEvidence === true;
478
+ var manualOnly = action.mode === 'manual_review' || !action.autoRunnable;
479
+ var productDispatch = dispatchAction === 'run_targeted_product_repair';
480
+ var expensiveDispatch = !['run_evidence_probe', 'advance', 'continue_gate', 'park_manual'].includes(dispatchAction);
481
+ if (manualOnly && input.operatorApproved !== true) {
482
+ var record_1 = buildRecoveryDispatchRecord(action, 'park_manual', 'parked', 'recovery_dispatch_requires_manual_review', current, input.now);
483
+ return {
484
+ dispatchAction: 'park_manual',
485
+ allowed: false,
486
+ reason: record_1.reason,
487
+ status: 'parked',
488
+ canRunProductRepair: false,
489
+ canRunExpensiveModel: false,
490
+ shouldRecordDispatch: true,
491
+ requiresNewEvidence: requiresNewEvidence,
492
+ newEvidence: newEvidence,
493
+ dispatchRecord: record_1
494
+ };
495
+ }
496
+ if (productDispatch && action.productRepairAllowed !== true) {
497
+ var record_2 = buildRecoveryDispatchRecord(action, 'park_manual', 'parked', 'recovery_dispatch_product_repair_not_allowed', current, input.now);
498
+ return {
499
+ dispatchAction: 'park_manual',
500
+ allowed: false,
501
+ reason: record_2.reason,
502
+ status: 'parked',
503
+ canRunProductRepair: false,
504
+ canRunExpensiveModel: false,
505
+ shouldRecordDispatch: true,
506
+ requiresNewEvidence: true,
507
+ newEvidence: newEvidence,
508
+ dispatchRecord: record_2
509
+ };
510
+ }
511
+ if (activeDispatch) {
512
+ return {
513
+ dispatchAction: 'park_manual',
514
+ allowed: false,
515
+ reason: 'recovery_dispatch_already_running_for_same_evidence',
516
+ status: 'parked',
517
+ canRunProductRepair: false,
518
+ canRunExpensiveModel: false,
519
+ shouldRecordDispatch: false,
520
+ requiresNewEvidence: true,
521
+ newEvidence: false
522
+ };
523
+ }
524
+ if (completedDispatch && requiresNewEvidence && !newEvidence) {
525
+ var record_3 = buildRecoveryDispatchRecord(action, 'park_manual', 'parked', 'recovery_dispatch_same_evidence_already_attempted', current, input.now);
526
+ return {
527
+ dispatchAction: 'park_manual',
528
+ allowed: false,
529
+ reason: record_3.reason,
530
+ status: 'parked',
531
+ canRunProductRepair: false,
532
+ canRunExpensiveModel: false,
533
+ shouldRecordDispatch: true,
534
+ requiresNewEvidence: true,
535
+ newEvidence: false,
536
+ dispatchRecord: record_3
537
+ };
538
+ }
539
+ var status = dispatchAction === 'advance' || dispatchAction === 'continue_gate'
540
+ ? 'completed'
541
+ : 'started';
542
+ var record = buildRecoveryDispatchRecord(action, dispatchAction, status, 'recovery_dispatch_allowed', current, input.now);
543
+ return {
544
+ dispatchAction: dispatchAction,
545
+ allowed: true,
546
+ reason: 'recovery_dispatch_allowed',
547
+ status: status,
548
+ canRunProductRepair: productDispatch && action.productRepairAllowed === true,
549
+ canRunExpensiveModel: expensiveDispatch && action.expensiveModelAllowed === true,
550
+ shouldRecordDispatch: true,
551
+ requiresNewEvidence: requiresNewEvidence,
552
+ newEvidence: newEvidence,
553
+ dispatchRecord: record
554
+ };
555
+ }
556
+ function appendResolveIOAIManagerRecoveryActionDispatch(history, record, limit) {
557
+ if (limit === void 0) { limit = 50; }
558
+ var existing = Array.isArray(history) ? history.filter(Boolean) : [];
559
+ if (!record) {
560
+ return existing.slice(-limit);
561
+ }
562
+ var deduped = existing.filter(function (entry) { return entry.dispatchId !== record.dispatchId; });
563
+ return __spreadArray(__spreadArray([], __read(deduped), false), [record], false).slice(-limit);
564
+ }
317
565
  function listHasNewEntry(current, previous) {
318
566
  var existing = new Set(previous.map(function (entry) { return cleanText(entry, 500); }).filter(Boolean));
319
567
  return current.some(function (entry) {
@@ -651,8 +899,14 @@ function decideResolveIOAIManagerPolicy(input) {
651
899
  plan: recoveryPlan,
652
900
  current: current
653
901
  });
654
- return __assign(__assign({}, merged), { action: action, reason: reason, recoveryPlan: recoveryPlan, recoveryCheckpoint: recoveryCheckpoint, recoveryEvidenceProbe: buildResolveIOAIManagerRecoveryEvidenceProbe({
902
+ var recoveryEvidenceProbe = buildResolveIOAIManagerRecoveryEvidenceProbe({
903
+ checkpoint: recoveryCheckpoint,
904
+ current: current
905
+ });
906
+ return __assign(__assign({}, merged), { action: action, reason: reason, recoveryPlan: recoveryPlan, recoveryCheckpoint: recoveryCheckpoint, recoveryEvidenceProbe: recoveryEvidenceProbe, recoveryAction: buildResolveIOAIManagerRecoveryActionPacket({
907
+ plan: recoveryPlan,
655
908
  checkpoint: recoveryCheckpoint,
909
+ probe: recoveryEvidenceProbe,
656
910
  current: current
657
911
  }) });
658
912
  };