@resolveio/server-lib 22.3.145 → 22.3.147

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.145",
3
+ "version": "22.3.147",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -22,6 +22,9 @@ export interface ResolveIOAIManagerAutopilotLoopGuard {
22
22
  blocker: string;
23
23
  blockerFingerprint: string;
24
24
  evidenceHash: string;
25
+ materialEvidence: boolean;
26
+ evidenceStrength: string;
27
+ evidenceSignals: string[];
25
28
  sameEvidenceDispatchCount: number;
26
29
  sameEvidenceAlreadyAttempted: boolean;
27
30
  loopCount: number;
@@ -12,6 +12,7 @@ var __values = (this && this.__values) || function(o) {
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.buildResolveIOAIManagerAutopilotSnapshot = buildResolveIOAIManagerAutopilotSnapshot;
15
+ var ai_runner_manager_policy_1 = require("./ai-runner-manager-policy");
15
16
  function cleanText(value, max) {
16
17
  if (max === void 0) { max = 1000; }
17
18
  return String(value || '').replace(/\s+/g, ' ').trim().slice(0, max);
@@ -202,6 +203,14 @@ function buildResolveIOAIManagerAutopilotSnapshot(input) {
202
203
  var sameEvidenceDispatchCount = countSameEvidenceDispatches(input, dispatchAction);
203
204
  var sameEvidenceAlreadyAttempted = requiresNewEvidence && sameEvidenceDispatchCount > 0 && ((_z = input.recoveryDirective) === null || _z === void 0 ? void 0 : _z.newEvidence) !== true;
204
205
  var checkpointStatus = cleanText((_0 = input.recoveryCheckpoint) === null || _0 === void 0 ? void 0 : _0.status, 80);
206
+ var evidenceAssessment = input.recoveryCheckpoint && input.current
207
+ ? (0, ai_runner_manager_policy_1.assessResolveIOAIManagerEvidenceChange)(input.recoveryCheckpoint, input.current, input.recoveryCheckpoint.objective)
208
+ : {
209
+ changed: false,
210
+ material: false,
211
+ strength: 'none',
212
+ signals: []
213
+ };
205
214
  var loopState = checkpointStatus === 'manual_handoff'
206
215
  ? 'manual_handoff'
207
216
  : checkpointStatus === 'complete'
@@ -264,6 +273,9 @@ function buildResolveIOAIManagerAutopilotSnapshot(input) {
264
273
  blocker: cleanText(((_26 = input.current) === null || _26 === void 0 ? void 0 : _26.blocker) || ((_27 = input.current) === null || _27 === void 0 ? void 0 : _27.summary), 1000),
265
274
  blockerFingerprint: cleanText(((_28 = input.current) === null || _28 === void 0 ? void 0 : _28.blockerFingerprint) || ((_29 = input.recoveryCheckpoint) === null || _29 === void 0 ? void 0 : _29.blockerFingerprint), 160),
266
275
  evidenceHash: cleanText(((_30 = input.current) === null || _30 === void 0 ? void 0 : _30.evidenceHash) || ((_31 = input.recoveryCheckpoint) === null || _31 === void 0 ? void 0 : _31.evidenceHash), 160),
276
+ materialEvidence: evidenceAssessment.material === true,
277
+ evidenceStrength: cleanText(evidenceAssessment.strength, 40),
278
+ evidenceSignals: cleanList(evidenceAssessment.signals, 12, 120),
267
279
  sameEvidenceDispatchCount: sameEvidenceDispatchCount,
268
280
  sameEvidenceAlreadyAttempted: sameEvidenceAlreadyAttempted,
269
281
  loopCount: cleanNumber(input.loopCount),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/ai-runner-manager-autopilot.ts"],"names":[],"mappings":"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","file":"ai-runner-manager-autopilot.js","sourcesContent":["import {\n\tResolveIOAIManagerFailureRecord,\n\tResolveIOAIManagerRecoveryActionDispatchRecord,\n\tResolveIOAIManagerRecoveryActionPacket,\n\tResolveIOAIManagerRecoveryCheckpoint,\n\tResolveIOAIManagerRecoveryExecutionDirective,\n\tResolveIOAIManagerRecoveryEvidenceProbe,\n\tResolveIOAIManagerRecoveryPlan\n} from './ai-runner-manager-policy';\n\nexport type ResolveIOAIManagerAutopilotSafetyLevel = 'low' | 'medium' | 'high' | 'blocked';\n\nexport interface ResolveIOAIManagerAutopilotRecommendedAction {\n\taction: string;\n\tlabel: string;\n\treason: string;\n\tsafety: ResolveIOAIManagerAutopilotSafetyLevel;\n\tenabled: boolean;\n\tautoRunnable: boolean;\n\texpectedResult: string;\n\trequiresNewEvidence: boolean;\n\tcanRunProductRepair: boolean;\n\tcanRunExpensiveModel: boolean;\n\tcanResetLoopAfterEvidence: boolean;\n\tdispatchAction?: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotLoopGuard {\n\tstate: 'clear' | 'collecting_evidence' | 'parked' | 'manual_handoff' | 'complete';\n\tblocked: boolean;\n\treason: string;\n\tfailureClass: string;\n\tblocker: string;\n\tblockerFingerprint: string;\n\tevidenceHash: string;\n\tsameEvidenceDispatchCount: number;\n\tsameEvidenceAlreadyAttempted: boolean;\n\tloopCount: number;\n\tmaxLoopCount: number;\n\tattempts: number;\n\tmaxAttemptsBeforePark: number;\n\tcanResetLoopAfterEvidence: boolean;\n\tresetRequires: string[];\n}\n\nexport interface ResolveIOAIManagerAutopilotRecentDispatch {\n\tdispatchId: string;\n\tactionId: string;\n\tcheckpointId: string;\n\tprobeId: string;\n\tmode: string;\n\tdispatchAction: string;\n\tstatus: string;\n\treason: string;\n\tevidenceHash: string;\n\tblockerFingerprint: string;\n\tartifactPaths: string[];\n\tstartedAt: string;\n\tcompletedAt: string;\n\tcreatedAt: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotSnapshot {\n\tsurface: string;\n\trunId: string;\n\ttitle: string;\n\tstatus: string;\n\tphase: string;\n\tlane: string;\n\tstepType: string;\n\trunKind: string;\n\trecommendedAction: ResolveIOAIManagerAutopilotRecommendedAction;\n\tloopGuard: ResolveIOAIManagerAutopilotLoopGuard;\n\trecovery: {\n\t\tcheckpointId: string;\n\t\trecoveryClass: string;\n\t\tdispatchAction: string;\n\t\tdirectiveAllowed: boolean;\n\t\tevidenceOnly: boolean;\n\t\tproductRepairAllowed: boolean;\n\t\texpensiveModelAllowed: boolean;\n\t\trequiredArtifacts: string[];\n\t\tnextCommands: string[];\n\t\tsuccessCriteria: string[];\n\t\tforbiddenActions: string[];\n\t};\n\trecentDispatches: ResolveIOAIManagerAutopilotRecentDispatch[];\n\tcost: {\n\t\tcurrentRunUsd: number;\n\t\ttotalUsd: number;\n\t\tcurrentRunTokens: number;\n\t\ttotalTokens: number;\n\t\tuntrackedWarning: string;\n\t};\n\tupdatedAt: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotSnapshotInput {\n\tsurface: string;\n\trunId?: string;\n\ttitle?: string;\n\tstatus?: string;\n\tphase?: string;\n\tlane?: string;\n\tstepType?: string;\n\trunKind?: string;\n\tcurrent?: ResolveIOAIManagerFailureRecord;\n\trecoveryPlan?: ResolveIOAIManagerRecoveryPlan;\n\trecoveryCheckpoint?: ResolveIOAIManagerRecoveryCheckpoint;\n\trecoveryEvidenceProbe?: ResolveIOAIManagerRecoveryEvidenceProbe;\n\trecoveryAction?: ResolveIOAIManagerRecoveryActionPacket;\n\trecoveryDirective?: ResolveIOAIManagerRecoveryExecutionDirective;\n\trecoveryDispatchHistory?: ResolveIOAIManagerRecoveryActionDispatchRecord[];\n\tloopCount?: number;\n\tmaxLoopCount?: number;\n\tcurrentRunUsd?: number;\n\ttotalUsd?: number;\n\tcurrentRunTokens?: number;\n\ttotalTokens?: number;\n\tuntrackedCostWarning?: string;\n\tupdatedAt?: Date | string;\n}\n\nfunction cleanText(value: any, max = 1000): string {\n\treturn String(value || '').replace(/\\s+/g, ' ').trim().slice(0, max);\n}\n\nfunction cleanList(value: any, limit = 20, max = 500): string[] {\n\tconst raw = Array.isArray(value) ? value : [];\n\tconst output: string[] = [];\n\tfor (const entry of raw) {\n\t\tconst cleaned = cleanText(entry, max);\n\t\tif (cleaned && !output.includes(cleaned)) {\n\t\t\toutput.push(cleaned);\n\t\t}\n\t\tif (output.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn output;\n}\n\nfunction cleanNumber(value: any): number {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : 0;\n}\n\nfunction isoNow(value?: Date | string): string {\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tconst parsed = value ? new Date(value) : new Date();\n\treturn Number.isFinite(parsed.getTime()) ? parsed.toISOString() : new Date().toISOString();\n}\n\nfunction defaultLabelForAction(action: string): string {\n\tswitch (action) {\n\t\tcase 'run_evidence_probe':\n\t\t\treturn 'Collect New Evidence';\n\t\tcase 'run_read_only_diagnosis':\n\t\t\treturn 'Run Diagnosis';\n\t\tcase 'run_infra_repair':\n\t\t\treturn 'Repair Infra';\n\t\tcase 'run_compile_repair':\n\t\t\treturn 'Repair Compile';\n\t\tcase 'run_journey_contract_repair':\n\t\t\treturn 'Repair Journey';\n\t\tcase 'run_business_assertion_repair':\n\t\t\treturn 'Repair Business Proof';\n\t\tcase 'run_release_repair':\n\t\t\treturn 'Repair Release';\n\t\tcase 'run_targeted_product_repair':\n\t\t\treturn 'Run Targeted Repair';\n\t\tcase 'advance':\n\t\t\treturn 'Advance';\n\t\tcase 'continue_gate':\n\t\t\treturn 'Continue Gate';\n\t\tcase 'park_manual':\n\t\t\treturn 'Attach New Evidence';\n\t\tdefault:\n\t\t\treturn action ? cleanText(action.replace(/_/g, ' '), 120) : 'Review Manager State';\n\t}\n}\n\nfunction expectedResultForAction(action: string, evidenceOnly: boolean): string {\n\tif (action === 'park_manual') {\n\t\treturn 'Runner stays parked until new evidence, operator approval, or a changed blocker is recorded.';\n\t}\n\tif (evidenceOnly || action === 'run_evidence_probe' || action === 'run_read_only_diagnosis') {\n\t\treturn 'Runner records a new artifact path or changed evidence hash before any more product repair.';\n\t}\n\tif (action === 'run_infra_repair' || action === 'run_compile_repair' || action === 'run_release_repair') {\n\t\treturn 'Runner repairs only the named deterministic gate and reruns that gate.';\n\t}\n\tif (action === 'run_targeted_product_repair') {\n\t\treturn 'Runner performs one bounded owner-scope repair and then returns to deterministic proof.';\n\t}\n\treturn 'Runner advances only after the current gate has proof.';\n}\n\nfunction safetyFor(input: {\n\taction: string;\n\tenabled: boolean;\n\tevidenceOnly: boolean;\n\tproductRepairAllowed: boolean;\n\texpensiveModelAllowed: boolean;\n}): ResolveIOAIManagerAutopilotSafetyLevel {\n\tif (!input.enabled || input.action === 'park_manual') {\n\t\treturn 'blocked';\n\t}\n\tif (input.evidenceOnly || input.action === 'run_evidence_probe' || input.action === 'run_read_only_diagnosis') {\n\t\treturn 'low';\n\t}\n\tif (input.expensiveModelAllowed || input.action === 'run_targeted_product_repair') {\n\t\treturn 'high';\n\t}\n\tif (input.productRepairAllowed) {\n\t\treturn 'medium';\n\t}\n\treturn 'medium';\n}\n\nfunction resolveDispatchAction(input: ResolveIOAIManagerAutopilotSnapshotInput): string {\n\tconst directiveAction = cleanText(input.recoveryDirective?.dispatchAction, 120);\n\tif (directiveAction) {\n\t\treturn directiveAction;\n\t}\n\tconst actionMode = cleanText(input.recoveryAction?.mode, 120);\n\tswitch (actionMode) {\n\t\tcase 'collect_evidence':\n\t\t\treturn 'run_evidence_probe';\n\t\tcase 'read_only_diagnosis':\n\t\t\treturn 'run_read_only_diagnosis';\n\t\tcase 'repair_infra':\n\t\t\treturn 'run_infra_repair';\n\t\tcase 'repair_compile':\n\t\t\treturn 'run_compile_repair';\n\t\tcase 'repair_journey_contract':\n\t\t\treturn 'run_journey_contract_repair';\n\t\tcase 'repair_business_assertion':\n\t\t\treturn 'run_business_assertion_repair';\n\t\tcase 'repair_release':\n\t\t\treturn 'run_release_repair';\n\t\tcase 'targeted_product_repair':\n\t\t\treturn 'run_targeted_product_repair';\n\t\tcase 'advance':\n\t\t\treturn 'advance';\n\t\tcase 'continue_gate':\n\t\t\treturn 'continue_gate';\n\t\tcase 'manual_review':\n\t\t\treturn 'park_manual';\n\t\tdefault:\n\t\t\treturn input.recoveryCheckpoint?.status === 'parked' ? 'run_evidence_probe' : 'continue_gate';\n\t}\n}\n\nfunction countSameEvidenceDispatches(input: ResolveIOAIManagerAutopilotSnapshotInput, dispatchAction: string): number {\n\tconst checkpointId = cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160);\n\tconst actionId = cleanText(input.recoveryAction?.actionId, 160);\n\tconst evidenceHash = cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160);\n\tconst blockerFingerprint = cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160);\n\tconst history = Array.isArray(input.recoveryDispatchHistory) ? input.recoveryDispatchHistory : [];\n\treturn history.filter((entry) => {\n\t\tconst sameCheckpoint = checkpointId && cleanText(entry?.checkpointId, 160) === checkpointId;\n\t\tconst sameAction = actionId && cleanText(entry?.actionId, 160) === actionId;\n\t\tconst sameEvidence = !evidenceHash || cleanText(entry?.evidenceHash, 160) === evidenceHash;\n\t\tconst sameBlocker = !blockerFingerprint || cleanText(entry?.blockerFingerprint, 160) === blockerFingerprint;\n\t\tconst sameDispatchAction = !dispatchAction\n\t\t\t|| dispatchAction === 'park_manual'\n\t\t\t|| cleanText(entry?.dispatchAction, 120) === dispatchAction\n\t\t\t|| cleanText(entry?.dispatchAction, 120) === 'park_manual';\n\t\treturn (sameCheckpoint || sameAction) && sameEvidence && sameBlocker && sameDispatchAction;\n\t}).length;\n}\n\nfunction normalizeRecentDispatches(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined): ResolveIOAIManagerAutopilotRecentDispatch[] {\n\tconst source = Array.isArray(history) ? history.filter(Boolean) : [];\n\treturn source.slice(-5).reverse().map((entry) => ({\n\t\tdispatchId: cleanText(entry?.dispatchId, 160),\n\t\tactionId: cleanText(entry?.actionId, 160),\n\t\tcheckpointId: cleanText(entry?.checkpointId, 160),\n\t\tprobeId: cleanText(entry?.probeId, 160),\n\t\tmode: cleanText(entry?.mode, 120),\n\t\tdispatchAction: cleanText(entry?.dispatchAction, 120),\n\t\tstatus: cleanText(entry?.status, 80),\n\t\treason: cleanText(entry?.reason, 500),\n\t\tevidenceHash: cleanText(entry?.evidenceHash, 160),\n\t\tblockerFingerprint: cleanText(entry?.blockerFingerprint, 160),\n\t\tartifactPaths: cleanList(entry?.artifactPaths, 8, 500),\n\t\tstartedAt: cleanText(entry?.startedAt, 80),\n\t\tcompletedAt: cleanText(entry?.completedAt, 80),\n\t\tcreatedAt: cleanText(entry?.createdAt, 80)\n\t}));\n}\n\nexport function buildResolveIOAIManagerAutopilotSnapshot(\n\tinput: ResolveIOAIManagerAutopilotSnapshotInput\n): ResolveIOAIManagerAutopilotSnapshot {\n\tconst dispatchAction = resolveDispatchAction(input);\n\tconst directiveAllowed = input.recoveryDirective\n\t\t? input.recoveryDirective.allowed === true\n\t\t: input.recoveryAction?.autoRunnable === true;\n\tconst evidenceOnly = input.recoveryDirective?.evidenceOnly === true\n\t\t|| input.recoveryAction?.evidenceOnly === true\n\t\t|| input.recoveryEvidenceProbe?.evidenceOnly === true\n\t\t|| input.recoveryCheckpoint?.status === 'parked';\n\tconst productRepairAllowed = (input.recoveryDirective?.canRunProductRepair ?? input.recoveryDirective?.productRepairAllowed ?? input.recoveryAction?.productRepairAllowed ?? input.recoveryCheckpoint?.productRepairAllowed) === true;\n\tconst expensiveModelAllowed = (input.recoveryDirective?.canRunExpensiveModel ?? input.recoveryDirective?.expensiveModelAllowed ?? input.recoveryAction?.expensiveModelAllowed ?? input.recoveryCheckpoint?.expensiveModelAllowed) === true;\n\tconst requiresNewEvidence = input.recoveryDirective?.requiresNewEvidence === true\n\t\t|| input.recoveryAction?.retryPolicy?.requireNewEvidence === true\n\t\t|| input.recoveryCheckpoint?.status === 'parked';\n\tconst sameEvidenceDispatchCount = countSameEvidenceDispatches(input, dispatchAction);\n\tconst sameEvidenceAlreadyAttempted = requiresNewEvidence && sameEvidenceDispatchCount > 0 && input.recoveryDirective?.newEvidence !== true;\n\tconst checkpointStatus = cleanText(input.recoveryCheckpoint?.status, 80);\n\tconst loopState = checkpointStatus === 'manual_handoff'\n\t\t? 'manual_handoff'\n\t\t: checkpointStatus === 'complete'\n\t\t\t? 'complete'\n\t\t\t: sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false\n\t\t\t\t? 'parked'\n\t\t\t\t: evidenceOnly && requiresNewEvidence\n\t\t\t\t\t? 'collecting_evidence'\n\t\t\t\t\t: 'clear';\n\tconst enabled = directiveAllowed && !sameEvidenceAlreadyAttempted && loopState !== 'manual_handoff';\n\tconst recommendedAction = sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false\n\t\t? 'park_manual'\n\t\t: dispatchAction;\n\tconst label = cleanText(\n\t\tsameEvidenceAlreadyAttempted\n\t\t\t? 'Attach New Evidence'\n\t\t\t: input.recoveryDirective?.nextActionLabel || input.recoveryAction?.label || defaultLabelForAction(recommendedAction),\n\t\t140\n\t);\n\tconst reason = cleanText(\n\t\tsameEvidenceAlreadyAttempted\n\t\t\t? 'The same recovery action already ran against the same evidence; a new artifact path or changed evidence hash is required.'\n\t\t\t: input.recoveryDirective?.reason || input.recoveryAction?.blockedReason || input.recoveryPlan?.objective || input.current?.blocker || 'Manager can continue the current gate.',\n\t\t1000\n\t);\n\tconst canResetLoopAfterEvidence = input.recoveryDirective?.canResetLoopAfterEvidence === true\n\t\t|| input.recoveryAction?.canResetLoopAfterEvidence === true\n\t\t|| cleanList(input.recoveryCheckpoint?.loopResetEvidence, 20, 500).length > 0;\n\tconst resetRequires = cleanList(\n\t\tinput.recoveryAction?.retryPolicy?.resetLoopWhen?.length\n\t\t\t? input.recoveryAction.retryPolicy.resetLoopWhen\n\t\t\t: input.recoveryCheckpoint?.loopResetEvidence,\n\t\t20,\n\t\t500\n\t);\n\treturn {\n\t\tsurface: cleanText(input.surface || 'unknown', 120),\n\t\trunId: cleanText(input.runId, 160),\n\t\ttitle: cleanText(input.title, 240),\n\t\tstatus: cleanText(input.status || input.recoveryCheckpoint?.status, 80),\n\t\tphase: cleanText(input.phase || input.recoveryDirective?.phase, 80),\n\t\tlane: cleanText(input.lane || input.recoveryDirective?.lane || input.recoveryCheckpoint?.lane || input.current?.lane, 120),\n\t\tstepType: cleanText(input.stepType || input.recoveryDirective?.stepType || input.recoveryCheckpoint?.stepType || input.current?.stepType, 120),\n\t\trunKind: cleanText(input.runKind, 120),\n\t\trecommendedAction: {\n\t\t\taction: recommendedAction,\n\t\t\tlabel,\n\t\t\treason,\n\t\t\tsafety: safetyFor({\n\t\t\t\taction: recommendedAction,\n\t\t\t\tenabled,\n\t\t\t\tevidenceOnly,\n\t\t\t\tproductRepairAllowed,\n\t\t\t\texpensiveModelAllowed\n\t\t\t}),\n\t\t\tenabled,\n\t\t\tautoRunnable: enabled && input.recoveryAction?.autoRunnable !== false,\n\t\t\texpectedResult: expectedResultForAction(recommendedAction, evidenceOnly),\n\t\t\trequiresNewEvidence,\n\t\t\tcanRunProductRepair: enabled && productRepairAllowed,\n\t\t\tcanRunExpensiveModel: enabled && expensiveModelAllowed,\n\t\t\tcanResetLoopAfterEvidence,\n\t\t\tdispatchAction\n\t\t},\n\t\tloopGuard: {\n\t\t\tstate: loopState,\n\t\t\tblocked: loopState === 'parked' || loopState === 'manual_handoff',\n\t\t\treason,\n\t\t\tfailureClass: cleanText(input.current?.failureClass, 120),\n\t\t\tblocker: cleanText(input.current?.blocker || input.current?.summary, 1000),\n\t\t\tblockerFingerprint: cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160),\n\t\t\tevidenceHash: cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160),\n\t\t\tsameEvidenceDispatchCount,\n\t\t\tsameEvidenceAlreadyAttempted,\n\t\t\tloopCount: cleanNumber(input.loopCount),\n\t\t\tmaxLoopCount: cleanNumber(input.maxLoopCount),\n\t\t\tattempts: cleanNumber(input.recoveryCheckpoint?.attempts),\n\t\t\tmaxAttemptsBeforePark: cleanNumber(input.recoveryCheckpoint?.maxAttemptsBeforePark),\n\t\t\tcanResetLoopAfterEvidence,\n\t\t\tresetRequires\n\t\t},\n\t\trecovery: {\n\t\t\tcheckpointId: cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160),\n\t\t\trecoveryClass: cleanText(input.recoveryCheckpoint?.recoveryClass || input.recoveryAction?.recoveryClass || input.recoveryPlan?.recoveryClass, 120),\n\t\t\tdispatchAction,\n\t\t\tdirectiveAllowed,\n\t\t\tevidenceOnly,\n\t\t\tproductRepairAllowed,\n\t\t\texpensiveModelAllowed,\n\t\t\trequiredArtifacts: cleanList(input.recoveryDirective?.requiredArtifacts?.length ? input.recoveryDirective.requiredArtifacts : input.recoveryAction?.requiredArtifacts, 20, 500),\n\t\t\tnextCommands: cleanList(input.recoveryDirective?.nextCommands?.length ? input.recoveryDirective.nextCommands : input.recoveryAction?.nextCommands, 20, 500),\n\t\t\tsuccessCriteria: cleanList(input.recoveryDirective?.successCriteria?.length ? input.recoveryDirective.successCriteria : input.recoveryAction?.successCriteria, 20, 500),\n\t\t\tforbiddenActions: cleanList(input.recoveryDirective?.forbiddenActions?.length ? input.recoveryDirective.forbiddenActions : input.recoveryAction?.retryPolicy?.stopWhen, 20, 500)\n\t\t},\n\t\trecentDispatches: normalizeRecentDispatches(input.recoveryDispatchHistory),\n\t\tcost: {\n\t\t\tcurrentRunUsd: cleanNumber(input.currentRunUsd),\n\t\t\ttotalUsd: cleanNumber(input.totalUsd),\n\t\t\tcurrentRunTokens: cleanNumber(input.currentRunTokens),\n\t\t\ttotalTokens: cleanNumber(input.totalTokens),\n\t\t\tuntrackedWarning: cleanText(input.untrackedCostWarning || 'Manual Codex sessions outside this runner are not included unless recorded in the usage ledger.', 500)\n\t\t},\n\t\tupdatedAt: isoNow(input.updatedAt)\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../src/util/ai-runner-manager-autopilot.ts"],"names":[],"mappings":"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","file":"ai-runner-manager-autopilot.js","sourcesContent":["import {\n\tassessResolveIOAIManagerEvidenceChange,\n\tResolveIOAIManagerFailureRecord,\n\tResolveIOAIManagerRecoveryActionDispatchRecord,\n\tResolveIOAIManagerRecoveryActionPacket,\n\tResolveIOAIManagerRecoveryCheckpoint,\n\tResolveIOAIManagerRecoveryExecutionDirective,\n\tResolveIOAIManagerRecoveryEvidenceProbe,\n\tResolveIOAIManagerRecoveryPlan\n} from './ai-runner-manager-policy';\n\nexport type ResolveIOAIManagerAutopilotSafetyLevel = 'low' | 'medium' | 'high' | 'blocked';\n\nexport interface ResolveIOAIManagerAutopilotRecommendedAction {\n\taction: string;\n\tlabel: string;\n\treason: string;\n\tsafety: ResolveIOAIManagerAutopilotSafetyLevel;\n\tenabled: boolean;\n\tautoRunnable: boolean;\n\texpectedResult: string;\n\trequiresNewEvidence: boolean;\n\tcanRunProductRepair: boolean;\n\tcanRunExpensiveModel: boolean;\n\tcanResetLoopAfterEvidence: boolean;\n\tdispatchAction?: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotLoopGuard {\n\tstate: 'clear' | 'collecting_evidence' | 'parked' | 'manual_handoff' | 'complete';\n\tblocked: boolean;\n\treason: string;\n\tfailureClass: string;\n\tblocker: string;\n\tblockerFingerprint: string;\n\tevidenceHash: string;\n\tmaterialEvidence: boolean;\n\tevidenceStrength: string;\n\tevidenceSignals: string[];\n\tsameEvidenceDispatchCount: number;\n\tsameEvidenceAlreadyAttempted: boolean;\n\tloopCount: number;\n\tmaxLoopCount: number;\n\tattempts: number;\n\tmaxAttemptsBeforePark: number;\n\tcanResetLoopAfterEvidence: boolean;\n\tresetRequires: string[];\n}\n\nexport interface ResolveIOAIManagerAutopilotRecentDispatch {\n\tdispatchId: string;\n\tactionId: string;\n\tcheckpointId: string;\n\tprobeId: string;\n\tmode: string;\n\tdispatchAction: string;\n\tstatus: string;\n\treason: string;\n\tevidenceHash: string;\n\tblockerFingerprint: string;\n\tartifactPaths: string[];\n\tstartedAt: string;\n\tcompletedAt: string;\n\tcreatedAt: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotSnapshot {\n\tsurface: string;\n\trunId: string;\n\ttitle: string;\n\tstatus: string;\n\tphase: string;\n\tlane: string;\n\tstepType: string;\n\trunKind: string;\n\trecommendedAction: ResolveIOAIManagerAutopilotRecommendedAction;\n\tloopGuard: ResolveIOAIManagerAutopilotLoopGuard;\n\trecovery: {\n\t\tcheckpointId: string;\n\t\trecoveryClass: string;\n\t\tdispatchAction: string;\n\t\tdirectiveAllowed: boolean;\n\t\tevidenceOnly: boolean;\n\t\tproductRepairAllowed: boolean;\n\t\texpensiveModelAllowed: boolean;\n\t\trequiredArtifacts: string[];\n\t\tnextCommands: string[];\n\t\tsuccessCriteria: string[];\n\t\tforbiddenActions: string[];\n\t};\n\trecentDispatches: ResolveIOAIManagerAutopilotRecentDispatch[];\n\tcost: {\n\t\tcurrentRunUsd: number;\n\t\ttotalUsd: number;\n\t\tcurrentRunTokens: number;\n\t\ttotalTokens: number;\n\t\tuntrackedWarning: string;\n\t};\n\tupdatedAt: string;\n}\n\nexport interface ResolveIOAIManagerAutopilotSnapshotInput {\n\tsurface: string;\n\trunId?: string;\n\ttitle?: string;\n\tstatus?: string;\n\tphase?: string;\n\tlane?: string;\n\tstepType?: string;\n\trunKind?: string;\n\tcurrent?: ResolveIOAIManagerFailureRecord;\n\trecoveryPlan?: ResolveIOAIManagerRecoveryPlan;\n\trecoveryCheckpoint?: ResolveIOAIManagerRecoveryCheckpoint;\n\trecoveryEvidenceProbe?: ResolveIOAIManagerRecoveryEvidenceProbe;\n\trecoveryAction?: ResolveIOAIManagerRecoveryActionPacket;\n\trecoveryDirective?: ResolveIOAIManagerRecoveryExecutionDirective;\n\trecoveryDispatchHistory?: ResolveIOAIManagerRecoveryActionDispatchRecord[];\n\tloopCount?: number;\n\tmaxLoopCount?: number;\n\tcurrentRunUsd?: number;\n\ttotalUsd?: number;\n\tcurrentRunTokens?: number;\n\ttotalTokens?: number;\n\tuntrackedCostWarning?: string;\n\tupdatedAt?: Date | string;\n}\n\nfunction cleanText(value: any, max = 1000): string {\n\treturn String(value || '').replace(/\\s+/g, ' ').trim().slice(0, max);\n}\n\nfunction cleanList(value: any, limit = 20, max = 500): string[] {\n\tconst raw = Array.isArray(value) ? value : [];\n\tconst output: string[] = [];\n\tfor (const entry of raw) {\n\t\tconst cleaned = cleanText(entry, max);\n\t\tif (cleaned && !output.includes(cleaned)) {\n\t\t\toutput.push(cleaned);\n\t\t}\n\t\tif (output.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn output;\n}\n\nfunction cleanNumber(value: any): number {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : 0;\n}\n\nfunction isoNow(value?: Date | string): string {\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tconst parsed = value ? new Date(value) : new Date();\n\treturn Number.isFinite(parsed.getTime()) ? parsed.toISOString() : new Date().toISOString();\n}\n\nfunction defaultLabelForAction(action: string): string {\n\tswitch (action) {\n\t\tcase 'run_evidence_probe':\n\t\t\treturn 'Collect New Evidence';\n\t\tcase 'run_read_only_diagnosis':\n\t\t\treturn 'Run Diagnosis';\n\t\tcase 'run_infra_repair':\n\t\t\treturn 'Repair Infra';\n\t\tcase 'run_compile_repair':\n\t\t\treturn 'Repair Compile';\n\t\tcase 'run_journey_contract_repair':\n\t\t\treturn 'Repair Journey';\n\t\tcase 'run_business_assertion_repair':\n\t\t\treturn 'Repair Business Proof';\n\t\tcase 'run_release_repair':\n\t\t\treturn 'Repair Release';\n\t\tcase 'run_targeted_product_repair':\n\t\t\treturn 'Run Targeted Repair';\n\t\tcase 'advance':\n\t\t\treturn 'Advance';\n\t\tcase 'continue_gate':\n\t\t\treturn 'Continue Gate';\n\t\tcase 'park_manual':\n\t\t\treturn 'Attach New Evidence';\n\t\tdefault:\n\t\t\treturn action ? cleanText(action.replace(/_/g, ' '), 120) : 'Review Manager State';\n\t}\n}\n\nfunction expectedResultForAction(action: string, evidenceOnly: boolean): string {\n\tif (action === 'park_manual') {\n\t\treturn 'Runner stays parked until new evidence, operator approval, or a changed blocker is recorded.';\n\t}\n\tif (evidenceOnly || action === 'run_evidence_probe' || action === 'run_read_only_diagnosis') {\n\t\treturn 'Runner records a new artifact path or changed evidence hash before any more product repair.';\n\t}\n\tif (action === 'run_infra_repair' || action === 'run_compile_repair' || action === 'run_release_repair') {\n\t\treturn 'Runner repairs only the named deterministic gate and reruns that gate.';\n\t}\n\tif (action === 'run_targeted_product_repair') {\n\t\treturn 'Runner performs one bounded owner-scope repair and then returns to deterministic proof.';\n\t}\n\treturn 'Runner advances only after the current gate has proof.';\n}\n\nfunction safetyFor(input: {\n\taction: string;\n\tenabled: boolean;\n\tevidenceOnly: boolean;\n\tproductRepairAllowed: boolean;\n\texpensiveModelAllowed: boolean;\n}): ResolveIOAIManagerAutopilotSafetyLevel {\n\tif (!input.enabled || input.action === 'park_manual') {\n\t\treturn 'blocked';\n\t}\n\tif (input.evidenceOnly || input.action === 'run_evidence_probe' || input.action === 'run_read_only_diagnosis') {\n\t\treturn 'low';\n\t}\n\tif (input.expensiveModelAllowed || input.action === 'run_targeted_product_repair') {\n\t\treturn 'high';\n\t}\n\tif (input.productRepairAllowed) {\n\t\treturn 'medium';\n\t}\n\treturn 'medium';\n}\n\nfunction resolveDispatchAction(input: ResolveIOAIManagerAutopilotSnapshotInput): string {\n\tconst directiveAction = cleanText(input.recoveryDirective?.dispatchAction, 120);\n\tif (directiveAction) {\n\t\treturn directiveAction;\n\t}\n\tconst actionMode = cleanText(input.recoveryAction?.mode, 120);\n\tswitch (actionMode) {\n\t\tcase 'collect_evidence':\n\t\t\treturn 'run_evidence_probe';\n\t\tcase 'read_only_diagnosis':\n\t\t\treturn 'run_read_only_diagnosis';\n\t\tcase 'repair_infra':\n\t\t\treturn 'run_infra_repair';\n\t\tcase 'repair_compile':\n\t\t\treturn 'run_compile_repair';\n\t\tcase 'repair_journey_contract':\n\t\t\treturn 'run_journey_contract_repair';\n\t\tcase 'repair_business_assertion':\n\t\t\treturn 'run_business_assertion_repair';\n\t\tcase 'repair_release':\n\t\t\treturn 'run_release_repair';\n\t\tcase 'targeted_product_repair':\n\t\t\treturn 'run_targeted_product_repair';\n\t\tcase 'advance':\n\t\t\treturn 'advance';\n\t\tcase 'continue_gate':\n\t\t\treturn 'continue_gate';\n\t\tcase 'manual_review':\n\t\t\treturn 'park_manual';\n\t\tdefault:\n\t\t\treturn input.recoveryCheckpoint?.status === 'parked' ? 'run_evidence_probe' : 'continue_gate';\n\t}\n}\n\nfunction countSameEvidenceDispatches(input: ResolveIOAIManagerAutopilotSnapshotInput, dispatchAction: string): number {\n\tconst checkpointId = cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160);\n\tconst actionId = cleanText(input.recoveryAction?.actionId, 160);\n\tconst evidenceHash = cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160);\n\tconst blockerFingerprint = cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160);\n\tconst history = Array.isArray(input.recoveryDispatchHistory) ? input.recoveryDispatchHistory : [];\n\treturn history.filter((entry) => {\n\t\tconst sameCheckpoint = checkpointId && cleanText(entry?.checkpointId, 160) === checkpointId;\n\t\tconst sameAction = actionId && cleanText(entry?.actionId, 160) === actionId;\n\t\tconst sameEvidence = !evidenceHash || cleanText(entry?.evidenceHash, 160) === evidenceHash;\n\t\tconst sameBlocker = !blockerFingerprint || cleanText(entry?.blockerFingerprint, 160) === blockerFingerprint;\n\t\tconst sameDispatchAction = !dispatchAction\n\t\t\t|| dispatchAction === 'park_manual'\n\t\t\t|| cleanText(entry?.dispatchAction, 120) === dispatchAction\n\t\t\t|| cleanText(entry?.dispatchAction, 120) === 'park_manual';\n\t\treturn (sameCheckpoint || sameAction) && sameEvidence && sameBlocker && sameDispatchAction;\n\t}).length;\n}\n\nfunction normalizeRecentDispatches(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined): ResolveIOAIManagerAutopilotRecentDispatch[] {\n\tconst source = Array.isArray(history) ? history.filter(Boolean) : [];\n\treturn source.slice(-5).reverse().map((entry) => ({\n\t\tdispatchId: cleanText(entry?.dispatchId, 160),\n\t\tactionId: cleanText(entry?.actionId, 160),\n\t\tcheckpointId: cleanText(entry?.checkpointId, 160),\n\t\tprobeId: cleanText(entry?.probeId, 160),\n\t\tmode: cleanText(entry?.mode, 120),\n\t\tdispatchAction: cleanText(entry?.dispatchAction, 120),\n\t\tstatus: cleanText(entry?.status, 80),\n\t\treason: cleanText(entry?.reason, 500),\n\t\tevidenceHash: cleanText(entry?.evidenceHash, 160),\n\t\tblockerFingerprint: cleanText(entry?.blockerFingerprint, 160),\n\t\tartifactPaths: cleanList(entry?.artifactPaths, 8, 500),\n\t\tstartedAt: cleanText(entry?.startedAt, 80),\n\t\tcompletedAt: cleanText(entry?.completedAt, 80),\n\t\tcreatedAt: cleanText(entry?.createdAt, 80)\n\t}));\n}\n\nexport function buildResolveIOAIManagerAutopilotSnapshot(\n\tinput: ResolveIOAIManagerAutopilotSnapshotInput\n): ResolveIOAIManagerAutopilotSnapshot {\n\tconst dispatchAction = resolveDispatchAction(input);\n\tconst directiveAllowed = input.recoveryDirective\n\t\t? input.recoveryDirective.allowed === true\n\t\t: input.recoveryAction?.autoRunnable === true;\n\tconst evidenceOnly = input.recoveryDirective?.evidenceOnly === true\n\t\t|| input.recoveryAction?.evidenceOnly === true\n\t\t|| input.recoveryEvidenceProbe?.evidenceOnly === true\n\t\t|| input.recoveryCheckpoint?.status === 'parked';\n\tconst productRepairAllowed = (input.recoveryDirective?.canRunProductRepair ?? input.recoveryDirective?.productRepairAllowed ?? input.recoveryAction?.productRepairAllowed ?? input.recoveryCheckpoint?.productRepairAllowed) === true;\n\tconst expensiveModelAllowed = (input.recoveryDirective?.canRunExpensiveModel ?? input.recoveryDirective?.expensiveModelAllowed ?? input.recoveryAction?.expensiveModelAllowed ?? input.recoveryCheckpoint?.expensiveModelAllowed) === true;\n\tconst requiresNewEvidence = input.recoveryDirective?.requiresNewEvidence === true\n\t\t|| input.recoveryAction?.retryPolicy?.requireNewEvidence === true\n\t\t|| input.recoveryCheckpoint?.status === 'parked';\n\tconst sameEvidenceDispatchCount = countSameEvidenceDispatches(input, dispatchAction);\n\tconst sameEvidenceAlreadyAttempted = requiresNewEvidence && sameEvidenceDispatchCount > 0 && input.recoveryDirective?.newEvidence !== true;\n\tconst checkpointStatus = cleanText(input.recoveryCheckpoint?.status, 80);\n\tconst evidenceAssessment = input.recoveryCheckpoint && input.current\n\t\t? assessResolveIOAIManagerEvidenceChange(input.recoveryCheckpoint, input.current, input.recoveryCheckpoint.objective)\n\t\t: {\n\t\t\tchanged: false,\n\t\t\tmaterial: false,\n\t\t\tstrength: 'none',\n\t\t\tsignals: [] as string[]\n\t\t};\n\tconst loopState = checkpointStatus === 'manual_handoff'\n\t\t? 'manual_handoff'\n\t\t: checkpointStatus === 'complete'\n\t\t\t? 'complete'\n\t\t\t: sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false\n\t\t\t\t? 'parked'\n\t\t\t\t: evidenceOnly && requiresNewEvidence\n\t\t\t\t\t? 'collecting_evidence'\n\t\t\t\t\t: 'clear';\n\tconst enabled = directiveAllowed && !sameEvidenceAlreadyAttempted && loopState !== 'manual_handoff';\n\tconst recommendedAction = sameEvidenceAlreadyAttempted || input.recoveryDirective?.allowed === false\n\t\t? 'park_manual'\n\t\t: dispatchAction;\n\tconst label = cleanText(\n\t\tsameEvidenceAlreadyAttempted\n\t\t\t? 'Attach New Evidence'\n\t\t\t: input.recoveryDirective?.nextActionLabel || input.recoveryAction?.label || defaultLabelForAction(recommendedAction),\n\t\t140\n\t);\n\tconst reason = cleanText(\n\t\tsameEvidenceAlreadyAttempted\n\t\t\t? 'The same recovery action already ran against the same evidence; a new artifact path or changed evidence hash is required.'\n\t\t\t: input.recoveryDirective?.reason || input.recoveryAction?.blockedReason || input.recoveryPlan?.objective || input.current?.blocker || 'Manager can continue the current gate.',\n\t\t1000\n\t);\n\tconst canResetLoopAfterEvidence = input.recoveryDirective?.canResetLoopAfterEvidence === true\n\t\t|| input.recoveryAction?.canResetLoopAfterEvidence === true\n\t\t|| cleanList(input.recoveryCheckpoint?.loopResetEvidence, 20, 500).length > 0;\n\tconst resetRequires = cleanList(\n\t\tinput.recoveryAction?.retryPolicy?.resetLoopWhen?.length\n\t\t\t? input.recoveryAction.retryPolicy.resetLoopWhen\n\t\t\t: input.recoveryCheckpoint?.loopResetEvidence,\n\t\t20,\n\t\t500\n\t);\n\treturn {\n\t\tsurface: cleanText(input.surface || 'unknown', 120),\n\t\trunId: cleanText(input.runId, 160),\n\t\ttitle: cleanText(input.title, 240),\n\t\tstatus: cleanText(input.status || input.recoveryCheckpoint?.status, 80),\n\t\tphase: cleanText(input.phase || input.recoveryDirective?.phase, 80),\n\t\tlane: cleanText(input.lane || input.recoveryDirective?.lane || input.recoveryCheckpoint?.lane || input.current?.lane, 120),\n\t\tstepType: cleanText(input.stepType || input.recoveryDirective?.stepType || input.recoveryCheckpoint?.stepType || input.current?.stepType, 120),\n\t\trunKind: cleanText(input.runKind, 120),\n\t\trecommendedAction: {\n\t\t\taction: recommendedAction,\n\t\t\tlabel,\n\t\t\treason,\n\t\t\tsafety: safetyFor({\n\t\t\t\taction: recommendedAction,\n\t\t\t\tenabled,\n\t\t\t\tevidenceOnly,\n\t\t\t\tproductRepairAllowed,\n\t\t\t\texpensiveModelAllowed\n\t\t\t}),\n\t\t\tenabled,\n\t\t\tautoRunnable: enabled && input.recoveryAction?.autoRunnable !== false,\n\t\t\texpectedResult: expectedResultForAction(recommendedAction, evidenceOnly),\n\t\t\trequiresNewEvidence,\n\t\t\tcanRunProductRepair: enabled && productRepairAllowed,\n\t\t\tcanRunExpensiveModel: enabled && expensiveModelAllowed,\n\t\t\tcanResetLoopAfterEvidence,\n\t\t\tdispatchAction\n\t\t},\n\t\tloopGuard: {\n\t\t\tstate: loopState,\n\t\t\tblocked: loopState === 'parked' || loopState === 'manual_handoff',\n\t\t\treason,\n\t\t\tfailureClass: cleanText(input.current?.failureClass, 120),\n\t\t\tblocker: cleanText(input.current?.blocker || input.current?.summary, 1000),\n\t\t\tblockerFingerprint: cleanText(input.current?.blockerFingerprint || input.recoveryCheckpoint?.blockerFingerprint, 160),\n\t\t\tevidenceHash: cleanText(input.current?.evidenceHash || input.recoveryCheckpoint?.evidenceHash, 160),\n\t\t\tmaterialEvidence: evidenceAssessment.material === true,\n\t\t\tevidenceStrength: cleanText(evidenceAssessment.strength, 40),\n\t\t\tevidenceSignals: cleanList(evidenceAssessment.signals, 12, 120),\n\t\t\tsameEvidenceDispatchCount,\n\t\t\tsameEvidenceAlreadyAttempted,\n\t\t\tloopCount: cleanNumber(input.loopCount),\n\t\t\tmaxLoopCount: cleanNumber(input.maxLoopCount),\n\t\t\tattempts: cleanNumber(input.recoveryCheckpoint?.attempts),\n\t\t\tmaxAttemptsBeforePark: cleanNumber(input.recoveryCheckpoint?.maxAttemptsBeforePark),\n\t\t\tcanResetLoopAfterEvidence,\n\t\t\tresetRequires\n\t\t},\n\t\trecovery: {\n\t\t\tcheckpointId: cleanText(input.recoveryCheckpoint?.checkpointId || input.recoveryAction?.checkpointId, 160),\n\t\t\trecoveryClass: cleanText(input.recoveryCheckpoint?.recoveryClass || input.recoveryAction?.recoveryClass || input.recoveryPlan?.recoveryClass, 120),\n\t\t\tdispatchAction,\n\t\t\tdirectiveAllowed,\n\t\t\tevidenceOnly,\n\t\t\tproductRepairAllowed,\n\t\t\texpensiveModelAllowed,\n\t\t\trequiredArtifacts: cleanList(input.recoveryDirective?.requiredArtifacts?.length ? input.recoveryDirective.requiredArtifacts : input.recoveryAction?.requiredArtifacts, 20, 500),\n\t\t\tnextCommands: cleanList(input.recoveryDirective?.nextCommands?.length ? input.recoveryDirective.nextCommands : input.recoveryAction?.nextCommands, 20, 500),\n\t\t\tsuccessCriteria: cleanList(input.recoveryDirective?.successCriteria?.length ? input.recoveryDirective.successCriteria : input.recoveryAction?.successCriteria, 20, 500),\n\t\t\tforbiddenActions: cleanList(input.recoveryDirective?.forbiddenActions?.length ? input.recoveryDirective.forbiddenActions : input.recoveryAction?.retryPolicy?.stopWhen, 20, 500)\n\t\t},\n\t\trecentDispatches: normalizeRecentDispatches(input.recoveryDispatchHistory),\n\t\tcost: {\n\t\t\tcurrentRunUsd: cleanNumber(input.currentRunUsd),\n\t\t\ttotalUsd: cleanNumber(input.totalUsd),\n\t\t\tcurrentRunTokens: cleanNumber(input.currentRunTokens),\n\t\t\ttotalTokens: cleanNumber(input.totalTokens),\n\t\t\tuntrackedWarning: cleanText(input.untrackedCostWarning || 'Manual Codex sessions outside this runner are not included unless recorded in the usage ledger.', 500)\n\t\t},\n\t\tupdatedAt: isoNow(input.updatedAt)\n\t};\n}\n"]}
@@ -12,6 +12,15 @@ export interface ResolveIOAIManagerFailureRecord {
12
12
  summary?: string;
13
13
  recordedAt?: Date | string;
14
14
  }
15
+ export type ResolveIOAIManagerEvidenceStrength = 'none' | 'weak' | 'material' | 'proof';
16
+ export interface ResolveIOAIManagerEvidenceAssessment {
17
+ changed: boolean;
18
+ material: boolean;
19
+ strength: ResolveIOAIManagerEvidenceStrength;
20
+ signals: string[];
21
+ evidenceHash: string;
22
+ blockerFingerprint: string;
23
+ }
15
24
  export type ResolveIOAIManagerRecoveryClass = 'advance_after_proof' | 'diagnosis_only' | 'diagnosis_revision' | 'infra_repair' | 'compile_repair' | 'journey_contract_repair' | 'business_proof_repair' | 'release_repair' | 'product_code_repair' | 'blocked_until_new_evidence' | 'manual_handoff' | 'continue';
16
25
  export interface ResolveIOAIManagerRecoveryPlan {
17
26
  recoveryClass: ResolveIOAIManagerRecoveryClass;
@@ -90,6 +99,72 @@ export interface ResolveIOAIManagerRecoveryActionRetryPolicy {
90
99
  resetLoopWhen: string[];
91
100
  stopWhen: string[];
92
101
  }
102
+ export type ResolveIOAIManagerHotfixFirstReleaseAction = 'wait_for_active_deploy' | 'block_duplicate_deploy' | 'block_duplicate_publish' | 'review_force_deploy' | 'hotfix_release_artifact' | 'deploy_new_artifact_after_release_gate' | 'build_artifact_first';
103
+ export type ResolveIOAIManagerHotfixChannel = 'static_ui' | 'backend_js' | 'config' | 'seed_data' | 'cache_invalidation' | 'service_restart' | 'release_artifact' | 'force_deploy_review' | 'new_artifact_deploy' | 'artifact_build';
104
+ export interface ResolveIOAIManagerHotfixPlanStep {
105
+ id: string;
106
+ label: string;
107
+ channel: ResolveIOAIManagerHotfixChannel;
108
+ safeToAutoRun: boolean;
109
+ requiresFullDeploy: boolean;
110
+ requiredEvidence: string[];
111
+ successEvidence: string[];
112
+ blockedBy: string[];
113
+ }
114
+ export interface ResolveIOAIManagerHotfixPlan {
115
+ planId: string;
116
+ label: string;
117
+ recommendedChannel: ResolveIOAIManagerHotfixChannel;
118
+ reason: string;
119
+ fullDeployAvoided: boolean;
120
+ steps: ResolveIOAIManagerHotfixPlanStep[];
121
+ acceptanceEvidence: string[];
122
+ escalationTriggers: string[];
123
+ }
124
+ export interface ResolveIOAIManagerHotfixFirstReleasePolicyInput {
125
+ surface?: string;
126
+ activeDeploy?: boolean;
127
+ deployFingerprint?: string;
128
+ lastDeployFingerprint?: string;
129
+ publishFingerprint?: string;
130
+ lastPublishFingerprint?: string;
131
+ deployStatus?: string;
132
+ publishStatus?: string;
133
+ sampleDataStatus?: string;
134
+ forceDeploy?: boolean;
135
+ forcePublish?: boolean;
136
+ hasNewArtifact?: boolean;
137
+ }
138
+ export interface ResolveIOAIManagerHotfixFirstReleasePolicy {
139
+ policy: 'hotfix_first';
140
+ surface: string;
141
+ recommendedAction: ResolveIOAIManagerHotfixFirstReleaseAction;
142
+ label: string;
143
+ reason: string;
144
+ hotfixPreferred: boolean;
145
+ fullDeployAllowed: boolean;
146
+ duplicateDeployBlocked: boolean;
147
+ duplicatePublishBlocked: boolean;
148
+ forceDeployRequiredToRepeat: boolean;
149
+ forcePublishRequiredToRepeat: boolean;
150
+ statuses: {
151
+ deploy: string;
152
+ publish: string;
153
+ sampleData: string;
154
+ };
155
+ fingerprints: {
156
+ current: string;
157
+ last: string;
158
+ matchesLast: boolean;
159
+ publishCurrent: string;
160
+ publishLast: string;
161
+ publishMatchesLast: boolean;
162
+ };
163
+ hotfixPlan: ResolveIOAIManagerHotfixPlan;
164
+ allowedActions: string[];
165
+ forbiddenActions: string[];
166
+ requiredEvidence: string[];
167
+ }
93
168
  export interface ResolveIOAIManagerRecoveryActionPacket {
94
169
  actionId: string;
95
170
  checkpointId: string;
@@ -111,10 +186,20 @@ export interface ResolveIOAIManagerRecoveryActionPacket {
111
186
  nextCommands: string[];
112
187
  successCriteria: string[];
113
188
  retryPolicy: ResolveIOAIManagerRecoveryActionRetryPolicy;
189
+ releasePolicy?: ResolveIOAIManagerHotfixFirstReleasePolicy;
114
190
  blockedReason?: string;
115
191
  createdAt: string;
116
192
  }
117
193
  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';
194
+ export interface ResolveIOAIManagerAutoDispatchPolicyInput {
195
+ dispatchAction?: ResolveIOAIManagerRecoveryActionDispatchAction | string;
196
+ directive?: Partial<ResolveIOAIManagerRecoveryExecutionDirective>;
197
+ action?: Partial<ResolveIOAIManagerRecoveryActionPacket>;
198
+ includeJourneyContractRepair?: boolean;
199
+ includeReleaseRepair?: boolean;
200
+ includeBusinessProofRepair?: boolean;
201
+ includeProductRepair?: boolean;
202
+ }
118
203
  export type ResolveIOAIManagerRecoveryActionDispatchStatus = 'queued' | 'started' | 'completed' | 'failed' | 'parked';
119
204
  export interface ResolveIOAIManagerRecoveryActionDispatchRecord {
120
205
  dispatchId: string;
@@ -188,6 +273,7 @@ export interface ResolveIOAIManagerRecoveryExecutionDirective {
188
273
  successCriteria: string[];
189
274
  forbiddenActions: string[];
190
275
  dispatchRecord?: ResolveIOAIManagerRecoveryActionDispatchRecord;
276
+ releasePolicy?: ResolveIOAIManagerHotfixFirstReleasePolicy;
191
277
  createdAt: string;
192
278
  }
193
279
  export interface ResolveIOAIManagerRecoveryCheckpointInput {
@@ -212,6 +298,9 @@ export interface ResolveIOAIManagerRecoveryGateDecision {
212
298
  shouldResetLoopBudget: boolean;
213
299
  shouldIncrementAttempt: boolean;
214
300
  newEvidence: boolean;
301
+ materialEvidence: boolean;
302
+ evidenceStrength: ResolveIOAIManagerEvidenceStrength;
303
+ evidenceSignals: string[];
215
304
  blockerFingerprint: string;
216
305
  evidenceHash: string;
217
306
  missingEvidence: string[];
@@ -261,6 +350,9 @@ export interface ResolveIOAIManagerPolicyDecision {
261
350
  sameFailureCount: number;
262
351
  pingPongCount: number;
263
352
  newEvidence: boolean;
353
+ materialEvidence: boolean;
354
+ evidenceStrength: ResolveIOAIManagerEvidenceStrength;
355
+ evidenceSignals: string[];
264
356
  loopBudgetShouldReset: boolean;
265
357
  productRepairFailure: boolean;
266
358
  recoveryPlan: ResolveIOAIManagerRecoveryPlan;
@@ -268,6 +360,33 @@ export interface ResolveIOAIManagerPolicyDecision {
268
360
  recoveryEvidenceProbe: ResolveIOAIManagerRecoveryEvidenceProbe;
269
361
  recoveryAction: ResolveIOAIManagerRecoveryActionPacket;
270
362
  }
363
+ export interface ResolveIOAIManagerRecoveryReplayMatrixInput {
364
+ surface?: string;
365
+ includeJourneyContractRepair?: boolean;
366
+ includeReleaseRepair?: boolean;
367
+ includeProductRepair?: boolean;
368
+ maxSameFailureRepeats?: number;
369
+ }
370
+ export interface ResolveIOAIManagerRecoveryReplayCase {
371
+ caseId: string;
372
+ surface: string;
373
+ pass: boolean;
374
+ action: string;
375
+ reason: string;
376
+ recoveryClass: string;
377
+ dispatchAction: string;
378
+ safeAutoDispatch: boolean;
379
+ expectedSafeAutoDispatch: boolean;
380
+ productRepairAllowed: boolean;
381
+ loopBudgetShouldReset: boolean;
382
+ materialEvidence: boolean;
383
+ evidenceStrength: ResolveIOAIManagerEvidenceStrength;
384
+ hotfixFirst?: boolean;
385
+ fullDeployAllowed?: boolean;
386
+ details?: Record<string, any>;
387
+ }
388
+ export declare function buildResolveIOAIManagerHotfixFirstReleasePolicy(input?: ResolveIOAIManagerHotfixFirstReleasePolicyInput): ResolveIOAIManagerHotfixFirstReleasePolicy;
389
+ export declare function isResolveIOAIManagerSafeAutoDispatch(input: ResolveIOAIManagerAutoDispatchPolicyInput | ResolveIOAIManagerRecoveryActionDispatchAction | string | undefined): boolean;
271
390
  export declare function normalizeResolveIOAIManagerFailureClass(value: any): string;
272
391
  export declare function fingerprintResolveIOAIManagerBlocker(value: any): string;
273
392
  export declare function hashResolveIOAIManagerEvidence(record: ResolveIOAIManagerFailureRecord | undefined): string;
@@ -277,6 +396,8 @@ export declare function buildResolveIOAIManagerRecoveryActionPacket(input: Resol
277
396
  export declare function decideResolveIOAIManagerRecoveryActionDispatch(input: ResolveIOAIManagerRecoveryActionDispatchInput): ResolveIOAIManagerRecoveryActionDispatchDecision;
278
397
  export declare function appendResolveIOAIManagerRecoveryActionDispatch(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined, record: ResolveIOAIManagerRecoveryActionDispatchRecord | undefined, limit?: number): ResolveIOAIManagerRecoveryActionDispatchRecord[];
279
398
  export declare function buildResolveIOAIManagerRecoveryExecutionDirective(input: ResolveIOAIManagerRecoveryExecutionDirectiveInput): ResolveIOAIManagerRecoveryExecutionDirective;
399
+ export declare function assessResolveIOAIManagerEvidenceChange(previous: (ResolveIOAIManagerFailureRecord | ResolveIOAIManagerRecoveryCheckpoint | undefined), current: ResolveIOAIManagerFailureRecord | undefined, fallbackObjective?: string): ResolveIOAIManagerEvidenceAssessment;
280
400
  export declare function decideResolveIOAIManagerRecoveryGate(input: ResolveIOAIManagerRecoveryGateInput): ResolveIOAIManagerRecoveryGateDecision;
281
401
  export declare function buildResolveIOAIManagerRecoveryPlan(input?: ResolveIOAIManagerRecoveryPlanInput): ResolveIOAIManagerRecoveryPlan;
282
402
  export declare function decideResolveIOAIManagerPolicy(input: ResolveIOAIManagerPolicyInput): ResolveIOAIManagerPolicyDecision;
403
+ export declare function buildResolveIOAIManagerRecoveryReplayMatrix(input?: ResolveIOAIManagerRecoveryReplayMatrixInput): ResolveIOAIManagerRecoveryReplayCase[];