@resolveio/server-lib 22.3.194 → 22.3.195
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.
|
@@ -582,6 +582,46 @@ export interface ResolveIOAIManagerRecoveryExecutionDirective {
|
|
|
582
582
|
releasePolicy?: ResolveIOAIManagerHotfixFirstReleasePolicy;
|
|
583
583
|
createdAt: string;
|
|
584
584
|
}
|
|
585
|
+
export type ResolveIOAIManagerRecoveryExecutionProofStatus = 'proof_ready' | 'waiting_for_execution' | 'waiting_for_new_evidence' | 'blocked_same_evidence' | 'manual_handoff';
|
|
586
|
+
export interface ResolveIOAIManagerRecoveryExecutionProofContractInput {
|
|
587
|
+
directive?: ResolveIOAIManagerRecoveryExecutionDirective;
|
|
588
|
+
previous?: ResolveIOAIManagerFailureRecord;
|
|
589
|
+
current?: ResolveIOAIManagerFailureRecord;
|
|
590
|
+
requiredEvidence?: any;
|
|
591
|
+
now?: Date | string;
|
|
592
|
+
}
|
|
593
|
+
export interface ResolveIOAIManagerRecoveryExecutionProofContract {
|
|
594
|
+
contractId: string;
|
|
595
|
+
directiveId: string;
|
|
596
|
+
surface: string;
|
|
597
|
+
dispatchAction: ResolveIOAIManagerRecoveryActionDispatchAction;
|
|
598
|
+
phase: ResolveIOAIManagerRecoveryExecutionPhase;
|
|
599
|
+
status: ResolveIOAIManagerRecoveryExecutionProofStatus;
|
|
600
|
+
canContinueRun: boolean;
|
|
601
|
+
canRunProductRepair: boolean;
|
|
602
|
+
canRunExpensiveModel: boolean;
|
|
603
|
+
canResetLoopBudget: boolean;
|
|
604
|
+
proofRequiredBeforeContinuation: boolean;
|
|
605
|
+
requiresNewEvidence: boolean;
|
|
606
|
+
newEvidence: boolean;
|
|
607
|
+
materialEvidence: boolean;
|
|
608
|
+
evidenceStrength: ResolveIOAIManagerEvidenceStrength;
|
|
609
|
+
evidenceSignals: string[];
|
|
610
|
+
startingFailureClass: string;
|
|
611
|
+
startingBlockerFingerprint: string;
|
|
612
|
+
startingEvidenceHash: string;
|
|
613
|
+
latestFailureClass: string;
|
|
614
|
+
latestBlockerFingerprint: string;
|
|
615
|
+
latestEvidenceHash: string;
|
|
616
|
+
requiredEvidence: string[];
|
|
617
|
+
missingEvidence: string[];
|
|
618
|
+
artifactPaths: string[];
|
|
619
|
+
changedFiles: string[];
|
|
620
|
+
blockers: string[];
|
|
621
|
+
nextAllowedAction: string;
|
|
622
|
+
forbiddenActions: string[];
|
|
623
|
+
createdAt: string;
|
|
624
|
+
}
|
|
585
625
|
export interface ResolveIOAIManagerRecoveryCheckpointInput {
|
|
586
626
|
plan: ResolveIOAIManagerRecoveryPlan;
|
|
587
627
|
current?: ResolveIOAIManagerFailureRecord;
|
|
@@ -713,6 +753,13 @@ export declare function buildResolveIOAIManagerRecoveryActionPacket(input: Resol
|
|
|
713
753
|
export declare function decideResolveIOAIManagerRecoveryActionDispatch(input: ResolveIOAIManagerRecoveryActionDispatchInput): ResolveIOAIManagerRecoveryActionDispatchDecision;
|
|
714
754
|
export declare function appendResolveIOAIManagerRecoveryActionDispatch(history: ResolveIOAIManagerRecoveryActionDispatchRecord[] | undefined, record: ResolveIOAIManagerRecoveryActionDispatchRecord | undefined, limit?: number): ResolveIOAIManagerRecoveryActionDispatchRecord[];
|
|
715
755
|
export declare function buildResolveIOAIManagerRecoveryExecutionDirective(input: ResolveIOAIManagerRecoveryExecutionDirectiveInput): ResolveIOAIManagerRecoveryExecutionDirective;
|
|
756
|
+
export declare function buildResolveIOAIManagerRecoveryExecutionProofContract(input?: ResolveIOAIManagerRecoveryExecutionProofContractInput): ResolveIOAIManagerRecoveryExecutionProofContract;
|
|
757
|
+
export declare function validateResolveIOAIManagerRecoveryExecutionProofContract(value: any): {
|
|
758
|
+
valid: boolean;
|
|
759
|
+
status: ResolveIOAIManagerRecoveryExecutionProofStatus | 'blocked';
|
|
760
|
+
blockers: string[];
|
|
761
|
+
normalized: ResolveIOAIManagerRecoveryExecutionProofContract;
|
|
762
|
+
};
|
|
716
763
|
export declare function assessResolveIOAIManagerEvidenceChange(previous: (ResolveIOAIManagerFailureRecord | ResolveIOAIManagerRecoveryCheckpoint | undefined), current: ResolveIOAIManagerFailureRecord | undefined, fallbackObjective?: string): ResolveIOAIManagerEvidenceAssessment;
|
|
717
764
|
export declare function decideResolveIOAIManagerRecoveryGate(input: ResolveIOAIManagerRecoveryGateInput): ResolveIOAIManagerRecoveryGateDecision;
|
|
718
765
|
export declare function buildResolveIOAIManagerRecoveryPlan(input?: ResolveIOAIManagerRecoveryPlanInput): ResolveIOAIManagerRecoveryPlan;
|
|
@@ -67,6 +67,8 @@ exports.buildResolveIOAIManagerRecoveryActionPacket = buildResolveIOAIManagerRec
|
|
|
67
67
|
exports.decideResolveIOAIManagerRecoveryActionDispatch = decideResolveIOAIManagerRecoveryActionDispatch;
|
|
68
68
|
exports.appendResolveIOAIManagerRecoveryActionDispatch = appendResolveIOAIManagerRecoveryActionDispatch;
|
|
69
69
|
exports.buildResolveIOAIManagerRecoveryExecutionDirective = buildResolveIOAIManagerRecoveryExecutionDirective;
|
|
70
|
+
exports.buildResolveIOAIManagerRecoveryExecutionProofContract = buildResolveIOAIManagerRecoveryExecutionProofContract;
|
|
71
|
+
exports.validateResolveIOAIManagerRecoveryExecutionProofContract = validateResolveIOAIManagerRecoveryExecutionProofContract;
|
|
70
72
|
exports.assessResolveIOAIManagerEvidenceChange = assessResolveIOAIManagerEvidenceChange;
|
|
71
73
|
exports.decideResolveIOAIManagerRecoveryGate = decideResolveIOAIManagerRecoveryGate;
|
|
72
74
|
exports.buildResolveIOAIManagerRecoveryPlan = buildResolveIOAIManagerRecoveryPlan;
|
|
@@ -2320,6 +2322,178 @@ function buildResolveIOAIManagerRecoveryExecutionDirective(input) {
|
|
|
2320
2322
|
'Do not run product-code repair from this directive unless canRunProductRepair is true.'
|
|
2321
2323
|
], __read((((_e = action === null || action === void 0 ? void 0 : action.releasePolicy) === null || _e === void 0 ? void 0 : _e.forbiddenActions) || [])), false))).slice(0, 20) }), (dispatchDecision.dispatchRecord ? { dispatchRecord: dispatchDecision.dispatchRecord } : {})), ((action === null || action === void 0 ? void 0 : action.releasePolicy) ? { releasePolicy: action.releasePolicy } : {})), { createdAt: now });
|
|
2322
2324
|
}
|
|
2325
|
+
function failureRecordFromDirectiveStart(directive, previous) {
|
|
2326
|
+
if (previous) {
|
|
2327
|
+
return previous;
|
|
2328
|
+
}
|
|
2329
|
+
var dispatchRecord = directive === null || directive === void 0 ? void 0 : directive.dispatchRecord;
|
|
2330
|
+
return {
|
|
2331
|
+
lane: directive === null || directive === void 0 ? void 0 : directive.lane,
|
|
2332
|
+
stepType: directive === null || directive === void 0 ? void 0 : directive.stepType,
|
|
2333
|
+
failureClass: '',
|
|
2334
|
+
blockerFingerprint: dispatchRecord === null || dispatchRecord === void 0 ? void 0 : dispatchRecord.blockerFingerprint,
|
|
2335
|
+
evidenceHash: dispatchRecord === null || dispatchRecord === void 0 ? void 0 : dispatchRecord.evidenceHash,
|
|
2336
|
+
artifactPaths: (dispatchRecord === null || dispatchRecord === void 0 ? void 0 : dispatchRecord.artifactPaths) || [],
|
|
2337
|
+
recordedAt: (dispatchRecord === null || dispatchRecord === void 0 ? void 0 : dispatchRecord.createdAt) || (directive === null || directive === void 0 ? void 0 : directive.createdAt)
|
|
2338
|
+
};
|
|
2339
|
+
}
|
|
2340
|
+
function recoveryExecutionProofStatus(input) {
|
|
2341
|
+
var directive = input.directive;
|
|
2342
|
+
if (!directive || directive.allowed !== true || directive.dispatchAction === 'park_manual') {
|
|
2343
|
+
return 'manual_handoff';
|
|
2344
|
+
}
|
|
2345
|
+
if (!input.hasCurrent) {
|
|
2346
|
+
return 'waiting_for_execution';
|
|
2347
|
+
}
|
|
2348
|
+
if (directive.requiresNewEvidence === true && input.assessment.changed !== true) {
|
|
2349
|
+
return 'blocked_same_evidence';
|
|
2350
|
+
}
|
|
2351
|
+
if (directive.proofRequiredBeforeContinuation === true && input.assessment.material !== true) {
|
|
2352
|
+
return 'waiting_for_new_evidence';
|
|
2353
|
+
}
|
|
2354
|
+
return 'proof_ready';
|
|
2355
|
+
}
|
|
2356
|
+
function buildResolveIOAIManagerRecoveryExecutionProofContract(input) {
|
|
2357
|
+
if (input === void 0) { input = {}; }
|
|
2358
|
+
var directive = input.directive;
|
|
2359
|
+
var previous = failureRecordFromDirectiveStart(directive, input.previous);
|
|
2360
|
+
var current = input.current || {};
|
|
2361
|
+
var hasCurrent = !!input.current;
|
|
2362
|
+
var assessment = hasCurrent
|
|
2363
|
+
? assessResolveIOAIManagerEvidenceChange(previous, current, directive === null || directive === void 0 ? void 0 : directive.requiredStateTransition)
|
|
2364
|
+
: {
|
|
2365
|
+
changed: false,
|
|
2366
|
+
material: false,
|
|
2367
|
+
strength: 'none',
|
|
2368
|
+
signals: [],
|
|
2369
|
+
evidenceHash: hashResolveIOAIManagerEvidence(previous),
|
|
2370
|
+
blockerFingerprint: resolveResolveIOAIManagerBlockerFingerprint(previous, directive === null || directive === void 0 ? void 0 : directive.requiredStateTransition)
|
|
2371
|
+
};
|
|
2372
|
+
var status = recoveryExecutionProofStatus({ directive: directive, hasCurrent: hasCurrent, assessment: assessment });
|
|
2373
|
+
var canContinueRun = status === 'proof_ready';
|
|
2374
|
+
var requiredEvidence = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(cleanList(input.requiredEvidence, 30, 500)), false), __read(cleanList(directive === null || directive === void 0 ? void 0 : directive.requiredArtifacts, 30, 500)), false), __read(cleanList(directive === null || directive === void 0 ? void 0 : directive.successCriteria, 30, 500)), false).filter(Boolean)));
|
|
2375
|
+
var missingEvidence = (directive === null || directive === void 0 ? void 0 : directive.proofRequiredBeforeContinuation) === true && status !== 'proof_ready'
|
|
2376
|
+
? (requiredEvidence.length ? requiredEvidence : ['new material evidence or passed proof artifact'])
|
|
2377
|
+
: [];
|
|
2378
|
+
var artifactPaths = cleanList(current.artifactPaths || previous.artifactPaths, 80, 500);
|
|
2379
|
+
var changedFiles = cleanList(current.changedFiles, 80, 500);
|
|
2380
|
+
var startingFailureClass = normalizeResolveIOAIManagerFailureClass(previous.failureClass);
|
|
2381
|
+
var latestFailureClass = normalizeResolveIOAIManagerFailureClass(current.failureClass || previous.failureClass);
|
|
2382
|
+
var startingBlockerFingerprint = cleanText(previous.blockerFingerprint, 160)
|
|
2383
|
+
|| resolveResolveIOAIManagerBlockerFingerprint(previous, directive === null || directive === void 0 ? void 0 : directive.requiredStateTransition);
|
|
2384
|
+
var startingEvidenceHash = cleanText(previous.evidenceHash, 160)
|
|
2385
|
+
|| hashResolveIOAIManagerEvidence(previous);
|
|
2386
|
+
var blockers = [
|
|
2387
|
+
status === 'manual_handoff' ? ((directive === null || directive === void 0 ? void 0 : directive.reason) || 'recovery_execution_requires_manual_handoff') : '',
|
|
2388
|
+
status === 'waiting_for_execution' ? 'recovery_execution_waiting_for_current_evidence' : '',
|
|
2389
|
+
status === 'blocked_same_evidence' ? 'recovery_execution_same_evidence_after_dispatch' : '',
|
|
2390
|
+
status === 'waiting_for_new_evidence' ? 'recovery_execution_missing_material_evidence' : ''
|
|
2391
|
+
].filter(Boolean);
|
|
2392
|
+
var createdAt = isoNow(input.now);
|
|
2393
|
+
return {
|
|
2394
|
+
contractId: stableHash('mgr-execution-proof', {
|
|
2395
|
+
directiveId: (directive === null || directive === void 0 ? void 0 : directive.directiveId) || '',
|
|
2396
|
+
dispatchAction: (directive === null || directive === void 0 ? void 0 : directive.dispatchAction) || 'park_manual',
|
|
2397
|
+
status: status,
|
|
2398
|
+
startingEvidenceHash: startingEvidenceHash,
|
|
2399
|
+
latestEvidenceHash: assessment.evidenceHash,
|
|
2400
|
+
createdAt: createdAt.slice(0, 16)
|
|
2401
|
+
}),
|
|
2402
|
+
directiveId: cleanText(directive === null || directive === void 0 ? void 0 : directive.directiveId, 180),
|
|
2403
|
+
surface: cleanText(directive === null || directive === void 0 ? void 0 : directive.surface, 120) || 'runner',
|
|
2404
|
+
dispatchAction: (directive === null || directive === void 0 ? void 0 : directive.dispatchAction) || 'park_manual',
|
|
2405
|
+
phase: (directive === null || directive === void 0 ? void 0 : directive.phase) || 'manual',
|
|
2406
|
+
status: status,
|
|
2407
|
+
canContinueRun: canContinueRun,
|
|
2408
|
+
canRunProductRepair: canContinueRun && (directive === null || directive === void 0 ? void 0 : directive.canRunProductRepair) === true,
|
|
2409
|
+
canRunExpensiveModel: canContinueRun && (directive === null || directive === void 0 ? void 0 : directive.canRunExpensiveModel) === true,
|
|
2410
|
+
canResetLoopBudget: canContinueRun && assessment.material === true,
|
|
2411
|
+
proofRequiredBeforeContinuation: (directive === null || directive === void 0 ? void 0 : directive.proofRequiredBeforeContinuation) === true,
|
|
2412
|
+
requiresNewEvidence: (directive === null || directive === void 0 ? void 0 : directive.requiresNewEvidence) === true,
|
|
2413
|
+
newEvidence: assessment.changed,
|
|
2414
|
+
materialEvidence: assessment.material,
|
|
2415
|
+
evidenceStrength: assessment.strength,
|
|
2416
|
+
evidenceSignals: assessment.signals,
|
|
2417
|
+
startingFailureClass: startingFailureClass,
|
|
2418
|
+
startingBlockerFingerprint: startingBlockerFingerprint,
|
|
2419
|
+
startingEvidenceHash: startingEvidenceHash,
|
|
2420
|
+
latestFailureClass: latestFailureClass,
|
|
2421
|
+
latestBlockerFingerprint: assessment.blockerFingerprint,
|
|
2422
|
+
latestEvidenceHash: assessment.evidenceHash,
|
|
2423
|
+
requiredEvidence: requiredEvidence,
|
|
2424
|
+
missingEvidence: missingEvidence,
|
|
2425
|
+
artifactPaths: artifactPaths,
|
|
2426
|
+
changedFiles: changedFiles,
|
|
2427
|
+
blockers: blockers,
|
|
2428
|
+
nextAllowedAction: canContinueRun ? ((directive === null || directive === void 0 ? void 0 : directive.nextCommands[0]) || 'continue_gate') : 'collect_required_recovery_proof',
|
|
2429
|
+
forbiddenActions: Array.from(new Set(__spreadArray([
|
|
2430
|
+
'Do not continue product-code repair until recovery execution proof is proof_ready.'
|
|
2431
|
+
], __read(cleanList(directive === null || directive === void 0 ? void 0 : directive.forbiddenActions, 30, 500)), false))),
|
|
2432
|
+
createdAt: createdAt
|
|
2433
|
+
};
|
|
2434
|
+
}
|
|
2435
|
+
function validateResolveIOAIManagerRecoveryExecutionProofContract(value) {
|
|
2436
|
+
var source = value || {};
|
|
2437
|
+
var validStatuses = [
|
|
2438
|
+
'proof_ready',
|
|
2439
|
+
'waiting_for_execution',
|
|
2440
|
+
'waiting_for_new_evidence',
|
|
2441
|
+
'blocked_same_evidence',
|
|
2442
|
+
'manual_handoff'
|
|
2443
|
+
];
|
|
2444
|
+
var status = cleanText(source.status, 120);
|
|
2445
|
+
var normalized = {
|
|
2446
|
+
contractId: cleanText(source.contractId || source.contract_id, 180),
|
|
2447
|
+
directiveId: cleanText(source.directiveId || source.directive_id, 180),
|
|
2448
|
+
surface: cleanText(source.surface, 120),
|
|
2449
|
+
dispatchAction: cleanText(source.dispatchAction || source.dispatch_action, 120),
|
|
2450
|
+
phase: cleanText(source.phase, 120),
|
|
2451
|
+
status: validStatuses.includes(status) ? status : 'manual_handoff',
|
|
2452
|
+
canContinueRun: source.canContinueRun === true || source.can_continue_run === true,
|
|
2453
|
+
canRunProductRepair: source.canRunProductRepair === true || source.can_run_product_repair === true,
|
|
2454
|
+
canRunExpensiveModel: source.canRunExpensiveModel === true || source.can_run_expensive_model === true,
|
|
2455
|
+
canResetLoopBudget: source.canResetLoopBudget === true || source.can_reset_loop_budget === true,
|
|
2456
|
+
proofRequiredBeforeContinuation: source.proofRequiredBeforeContinuation === true || source.proof_required_before_continuation === true,
|
|
2457
|
+
requiresNewEvidence: source.requiresNewEvidence === true || source.requires_new_evidence === true,
|
|
2458
|
+
newEvidence: source.newEvidence === true || source.new_evidence === true,
|
|
2459
|
+
materialEvidence: source.materialEvidence === true || source.material_evidence === true,
|
|
2460
|
+
evidenceStrength: cleanText(source.evidenceStrength || source.evidence_strength, 120),
|
|
2461
|
+
evidenceSignals: cleanList(source.evidenceSignals || source.evidence_signals, 30, 200),
|
|
2462
|
+
startingFailureClass: cleanText(source.startingFailureClass || source.starting_failure_class, 120),
|
|
2463
|
+
startingBlockerFingerprint: cleanText(source.startingBlockerFingerprint || source.starting_blocker_fingerprint, 180),
|
|
2464
|
+
startingEvidenceHash: cleanText(source.startingEvidenceHash || source.starting_evidence_hash, 180),
|
|
2465
|
+
latestFailureClass: cleanText(source.latestFailureClass || source.latest_failure_class, 120),
|
|
2466
|
+
latestBlockerFingerprint: cleanText(source.latestBlockerFingerprint || source.latest_blocker_fingerprint, 180),
|
|
2467
|
+
latestEvidenceHash: cleanText(source.latestEvidenceHash || source.latest_evidence_hash, 180),
|
|
2468
|
+
requiredEvidence: cleanList(source.requiredEvidence || source.required_evidence, 30, 500),
|
|
2469
|
+
missingEvidence: cleanList(source.missingEvidence || source.missing_evidence, 30, 500),
|
|
2470
|
+
artifactPaths: cleanList(source.artifactPaths || source.artifact_paths, 80, 500),
|
|
2471
|
+
changedFiles: cleanList(source.changedFiles || source.changed_files, 80, 500),
|
|
2472
|
+
blockers: cleanList(source.blockers, 30, 500),
|
|
2473
|
+
nextAllowedAction: cleanText(source.nextAllowedAction || source.next_allowed_action, 180),
|
|
2474
|
+
forbiddenActions: cleanList(source.forbiddenActions || source.forbidden_actions, 30, 500),
|
|
2475
|
+
createdAt: cleanText(source.createdAt || source.created_at, 120)
|
|
2476
|
+
};
|
|
2477
|
+
var blockers = [
|
|
2478
|
+
normalized.contractId ? '' : 'Recovery execution proof is missing contractId.',
|
|
2479
|
+
normalized.directiveId || normalized.status === 'manual_handoff' ? '' : 'Recovery execution proof is missing directiveId.',
|
|
2480
|
+
normalized.dispatchAction ? '' : 'Recovery execution proof is missing dispatchAction.',
|
|
2481
|
+
validStatuses.includes(status) ? '' : 'Recovery execution proof has an invalid status.',
|
|
2482
|
+
normalized.canContinueRun && normalized.status !== 'proof_ready' ? 'Recovery execution cannot continue unless status=proof_ready.' : '',
|
|
2483
|
+
normalized.status === 'proof_ready' && normalized.proofRequiredBeforeContinuation && !normalized.materialEvidence ? 'Proof-ready recovery requires materialEvidence=true when proof is required.' : '',
|
|
2484
|
+
normalized.status === 'proof_ready' && normalized.requiresNewEvidence && !normalized.newEvidence ? 'Proof-ready recovery requires newEvidence=true when new evidence is required.' : '',
|
|
2485
|
+
normalized.canRunProductRepair && !normalized.canContinueRun ? 'Product repair cannot run before recovery proof can continue.' : '',
|
|
2486
|
+
normalized.canRunExpensiveModel && !normalized.canContinueRun ? 'Expensive model cannot run before recovery proof can continue.' : '',
|
|
2487
|
+
normalized.status !== 'proof_ready' && normalized.missingEvidence.length === 0 && normalized.proofRequiredBeforeContinuation ? 'Blocked recovery proof must list missingEvidence.' : '',
|
|
2488
|
+
normalized.forbiddenActions.length ? '' : 'Recovery execution proof must include forbiddenActions.'
|
|
2489
|
+
].filter(Boolean);
|
|
2490
|
+
return {
|
|
2491
|
+
valid: blockers.length === 0,
|
|
2492
|
+
status: blockers.length ? 'blocked' : normalized.status,
|
|
2493
|
+
blockers: blockers,
|
|
2494
|
+
normalized: normalized
|
|
2495
|
+
};
|
|
2496
|
+
}
|
|
2323
2497
|
function newListEntries(current, previous) {
|
|
2324
2498
|
var existing = new Set(previous.map(function (entry) { return cleanText(entry, 500); }).filter(Boolean));
|
|
2325
2499
|
return current
|