@resolveio/server-lib 22.3.166 → 22.3.167

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.166",
3
+ "version": "22.3.167",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -28,6 +28,7 @@
28
28
  "method-publication-generator-test": "node --require ts-node/register tests/method-publication-generator.test.ts",
29
29
  "ai-run-evidence-test": "node --require ts-node/register tests/ai-run-evidence.test.ts",
30
30
  "ai-run-eval-test": "node --require ts-node/register tests/ai-run-eval.test.ts",
31
+ "support-runner-v5-test": "node --require ts-node/register tests/support-runner-v5.test.ts",
31
32
  "ai-assistant-nightly-eval": "npm run ai-assistant-corpus-build && npm run ai-assistant-data-parity-e2e && npm run ai-assistant-corpus-replay-e2e && npm run ai-assistant-eval-triage"
32
33
  },
33
34
  "author": "",
@@ -505,6 +505,21 @@ export interface ResolveIOSupportV5ContinuationDecision {
505
505
  recoveryAction: ResolveIOAIManagerRecoveryActionPacket;
506
506
  }
507
507
  export type ResolveIOSupportV5AutonomousNextAction = 'run_diagnosis_gate' | 'ask_customer_clarification' | 'repair_infra_only' | 'revise_diagnosis_scope' | 'run_owner_scoped_repair' | 'run_business_proof_qa' | 'repair_release_hotfix_first' | 'collect_new_evidence' | 'draft_customer_reply' | 'ready_for_release_gate' | 'park_manual';
508
+ export type ResolveIOSupportContinuationProofCheckpointStatus = 'waiting_for_state_transition' | 'waiting_for_proof' | 'waiting_for_new_evidence' | 'ready_to_continue';
509
+ export interface ResolveIOSupportContinuationProofCheckpoint {
510
+ required: boolean;
511
+ status: ResolveIOSupportContinuationProofCheckpointStatus;
512
+ action: ResolveIOSupportV5AutonomousNextAction;
513
+ reason: string;
514
+ startingFailureClass: string;
515
+ startingBlockerFingerprint: string;
516
+ startingEvidenceHash: string;
517
+ requiredEvidence: string[];
518
+ requiredResetEvidence: string[];
519
+ successRequiresNewEvidence: boolean;
520
+ blocksProductRepairUntilChangedEvidence: boolean;
521
+ nextAction: string;
522
+ }
508
523
  export type ResolveIOSupportRootCauseReadinessStatus = 'diagnosis_required' | 'customer_clarification_required' | 'infra_repair_only' | 'scope_revision_required' | 'owner_scoped_repair_ready' | 'business_proof_required' | 'release_hotfix_required' | 'release_gate_ready' | 'customer_reply_draft_ready' | 'collect_new_evidence' | 'parked';
509
524
  export interface ResolveIOSupportRootCauseReadiness {
510
525
  status: ResolveIOSupportRootCauseReadinessStatus;
@@ -590,6 +605,7 @@ export interface ResolveIOSupportV5AutonomousDecision {
590
605
  businessProofReadiness: ResolveIOSupportBusinessProofReadiness;
591
606
  evidenceFreshness: ResolveIOSupportEvidenceFreshness;
592
607
  rootCauseReadiness: ResolveIOSupportRootCauseReadiness;
608
+ continuationProofCheckpoint: ResolveIOSupportContinuationProofCheckpoint;
593
609
  humanReviewPacket: ResolveIOSupportHumanReviewPacket;
594
610
  hotfixContinuation?: ResolveIOAIManagerHotfixContinuationDecision;
595
611
  recordedAt: string;
@@ -619,6 +635,14 @@ export declare function evaluateResolveIOSupportEvidenceFreshness(input: {
619
635
  limit?: number;
620
636
  ignoreInfra?: boolean;
621
637
  }): ResolveIOSupportEvidenceFreshness;
638
+ export declare function buildResolveIOSupportContinuationProofCheckpoint(input: {
639
+ action: ResolveIOSupportV5AutonomousNextAction;
640
+ reason?: any;
641
+ evidenceFreshness?: ResolveIOSupportEvidenceFreshness;
642
+ requiredEvidence?: any;
643
+ requiredResetEvidence?: any;
644
+ blocksProductRepair?: boolean;
645
+ }): ResolveIOSupportContinuationProofCheckpoint;
622
646
  export declare function changedFilesOutsideResolveIOSupportDiagnosisOwnerFiles(diagnosisGate: any, changedFiles: any, options?: {
623
647
  allowTests?: boolean;
624
648
  }): string[];
@@ -58,6 +58,7 @@ exports.buildResolveIOSupportIssueClassProbes = buildResolveIOSupportIssueClassP
58
58
  exports.hashResolveIOSupportV5Evidence = hashResolveIOSupportV5Evidence;
59
59
  exports.decideResolveIOSupportV5RepeatedFailureStop = decideResolveIOSupportV5RepeatedFailureStop;
60
60
  exports.evaluateResolveIOSupportEvidenceFreshness = evaluateResolveIOSupportEvidenceFreshness;
61
+ exports.buildResolveIOSupportContinuationProofCheckpoint = buildResolveIOSupportContinuationProofCheckpoint;
61
62
  exports.changedFilesOutsideResolveIOSupportDiagnosisOwnerFiles = changedFilesOutsideResolveIOSupportDiagnosisOwnerFiles;
62
63
  exports.decideResolveIOSupportV5RepairGate = decideResolveIOSupportV5RepairGate;
63
64
  exports.applyResolveIOSupportDiagnosisGateToMicrotasks = applyResolveIOSupportDiagnosisGateToMicrotasks;
@@ -1697,6 +1698,63 @@ function evaluateResolveIOSupportEvidenceFreshness(input) {
1697
1698
  artifactPaths: artifactPaths
1698
1699
  };
1699
1700
  }
1701
+ function buildResolveIOSupportContinuationProofCheckpoint(input) {
1702
+ var evidenceFreshness = input.evidenceFreshness;
1703
+ var action = input.action;
1704
+ var requiredEvidence = cleanList(input.requiredEvidence, 20, 500);
1705
+ var requiredResetEvidence = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(cleanList(input.requiredResetEvidence, 20, 500)), false), __read(cleanList(evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.requiredResetEvidence, 20, 500)), false), __read((action === 'run_diagnosis_gate'
1706
+ ? [
1707
+ 'accepted SupportDiagnosisGate with reproduced/blocked issue case',
1708
+ 'bounded owner_files and before/action/after proof_plan'
1709
+ ]
1710
+ : [])), false), __read((action === 'collect_new_evidence'
1711
+ ? [
1712
+ 'fresh issue-class probe artifact',
1713
+ 'changed blockerFingerprint or evidenceHash',
1714
+ 'AIQaBusinessAssertion or before/action/after blocker artifact'
1715
+ ]
1716
+ : [])), false), __read((action === 'repair_infra_only'
1717
+ ? [
1718
+ 'infra or compile gate passes, or failureClass changes',
1719
+ 'new evidenceHash from fresh preflight/build artifact'
1720
+ ]
1721
+ : [])), false), __read((action === 'repair_release_hotfix_first'
1722
+ ? [
1723
+ 'GitHub commit proof recorded before live backend hotfix',
1724
+ 'release gate or hotfix durability evidence refreshed'
1725
+ ]
1726
+ : [])), false))).slice(0, 20);
1727
+ var blocksProductRepair = input.blocksProductRepair === true
1728
+ || action === 'collect_new_evidence'
1729
+ || action === 'run_diagnosis_gate'
1730
+ || action === 'ask_customer_clarification'
1731
+ || action === 'repair_infra_only'
1732
+ || action === 'revise_diagnosis_scope';
1733
+ var waitingForNewEvidence = (evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.mustCollectNewEvidence) === true
1734
+ || action === 'collect_new_evidence';
1735
+ var proofRequired = requiredEvidence.length > 0 || requiredResetEvidence.length > 0;
1736
+ var status = waitingForNewEvidence
1737
+ ? 'waiting_for_new_evidence'
1738
+ : proofRequired
1739
+ ? 'waiting_for_proof'
1740
+ : 'waiting_for_state_transition';
1741
+ return {
1742
+ required: true,
1743
+ status: status,
1744
+ action: action,
1745
+ reason: cleanText(input.reason || (evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.reason) || '', 1000),
1746
+ startingFailureClass: cleanText(evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.failureClass, 120),
1747
+ startingBlockerFingerprint: cleanText(evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.blockerFingerprint, 160),
1748
+ startingEvidenceHash: cleanText(evidenceFreshness === null || evidenceFreshness === void 0 ? void 0 : evidenceFreshness.evidenceHash, 160),
1749
+ requiredEvidence: requiredEvidence,
1750
+ requiredResetEvidence: requiredResetEvidence,
1751
+ successRequiresNewEvidence: waitingForNewEvidence || blocksProductRepair,
1752
+ blocksProductRepairUntilChangedEvidence: blocksProductRepair,
1753
+ nextAction: waitingForNewEvidence
1754
+ ? 'collect_required_reset_evidence'
1755
+ : action
1756
+ };
1757
+ }
1700
1758
  function changedFilesOutsideResolveIOSupportDiagnosisOwnerFiles(diagnosisGate, changedFiles, options) {
1701
1759
  if (options === void 0) { options = {}; }
1702
1760
  var validation = validateResolveIOSupportDiagnosisGate(diagnosisGate);
@@ -2466,6 +2524,14 @@ function decideResolveIOSupportV5AutonomousNextAction(input) {
2466
2524
  'Do not broaden owner_files without revised diagnosis evidence.',
2467
2525
  'Do not accept route-load, screenshot-only, scorecard-only, or model-claim proof.'
2468
2526
  ], __read((fields.forbiddenActions || [])), false)));
2527
+ var continuationProofCheckpoint = buildResolveIOSupportContinuationProofCheckpoint({
2528
+ action: action,
2529
+ reason: reason,
2530
+ evidenceFreshness: evidenceFreshness,
2531
+ requiredEvidence: requiredEvidence,
2532
+ requiredResetEvidence: fields.requiredEvidence,
2533
+ blocksProductRepair: evidenceFreshness.mustCollectNewEvidence === true
2534
+ });
2469
2535
  var humanReviewPacket = fields.humanReviewPacket
2470
2536
  || (action === 'draft_customer_reply' && customerReplyPolicy.humanReviewPacket ? customerReplyPolicy.humanReviewPacket : undefined)
2471
2537
  || buildResolveIOSupportHumanReviewPacket({
@@ -2523,6 +2589,7 @@ function decideResolveIOSupportV5AutonomousNextAction(input) {
2523
2589
  businessProofReadiness: businessProofReadiness,
2524
2590
  evidenceFreshness: evidenceFreshness,
2525
2591
  rootCauseReadiness: rootCauseReadiness,
2592
+ continuationProofCheckpoint: continuationProofCheckpoint,
2526
2593
  humanReviewPacket: humanReviewPacket,
2527
2594
  hotfixContinuation: fields.hotfixContinuation,
2528
2595
  recordedAt: isoNow(input.now)
@@ -2635,6 +2702,23 @@ function decideResolveIOSupportV5AutonomousNextAction(input) {
2635
2702
  forbiddenActions: ['Do not run another repair loop until new material evidence exists.']
2636
2703
  });
2637
2704
  }
2705
+ if (evidenceFreshness.mustCollectNewEvidence === true && repairGate.action === 'allow_product_repair') {
2706
+ return makeDecision('collect_new_evidence', 'Collect New Evidence', 'support_v5_no_blind_loop_requires_changed_evidence', {
2707
+ canRunAutonomously: true,
2708
+ canRunModel: false,
2709
+ canRunQa: true,
2710
+ canEditProductCode: false,
2711
+ lane: (activeMicrotask === null || activeMicrotask === void 0 ? void 0 : activeMicrotask.lane) || 'qa',
2712
+ stepType: activeStepType,
2713
+ primaryCommand: 'run_support_v5_recovery_evidence_probe',
2714
+ nextCommands: ['execute_issue_class_probe', 'record_changed_blocker_or_business_proof', 'write_aiqa_business_assertion_or_blocker_artifact'],
2715
+ requiredEvidence: evidenceFreshness.requiredResetEvidence.length
2716
+ ? evidenceFreshness.requiredResetEvidence
2717
+ : ['changed blockerFingerprint or evidenceHash', 'fresh issue-specific business proof artifact'],
2718
+ blockers: [evidenceFreshness.reason || 'Repeated failure needs fresh evidence before owner-scoped repair.'],
2719
+ forbiddenActions: ['Do not edit product code in this recovery; collect changed browser/data/business-proof evidence only.']
2720
+ });
2721
+ }
2638
2722
  if (supportReleaseLooksBlocked(input.releaseStatus)) {
2639
2723
  var releaseBlocker = cleanList(input.unresolvedBlockers, 20, 500).join('; ')
2640
2724
  || cleanText(input.blocker || input.releaseStatus, 1000)