@resolveio/server-lib 22.3.206 → 22.3.208

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.206",
3
+ "version": "22.3.208",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -79,6 +79,12 @@ function cleanStringList(value, limit, max) {
79
79
  function plainObject(value) {
80
80
  return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
81
81
  }
82
+ function objectList(value) {
83
+ if (Array.isArray(value)) {
84
+ return value.filter(function (entry) { return entry && typeof entry === 'object' && !Array.isArray(entry); });
85
+ }
86
+ return value && typeof value === 'object' && !Array.isArray(value) ? [value] : [];
87
+ }
82
88
  function firstText(source, fields, max) {
83
89
  var e_1, _a;
84
90
  if (max === void 0) { max = 1000; }
@@ -1276,7 +1282,7 @@ function collectRouteProbes(evidence) {
1276
1282
  function collectBusinessAssertions(evidence) {
1277
1283
  var e_25, _a;
1278
1284
  var assertions = [];
1279
- var rows = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.businessAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.business_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.workflowAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.workflow_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.qaRows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.qa_rows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.rows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.supportQaAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.support_qa_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.aiQaBusinessAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.ai_qa_business_assertions)), false);
1285
+ var rows = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.businessAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.business_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.workflowAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.workflow_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.qaRows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.qa_rows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.rows)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.supportQaAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.support_qa_assertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.aiQaBusinessAssertions)), false), __read(asArray(evidence === null || evidence === void 0 ? void 0 : evidence.ai_qa_business_assertions)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.supportQaBusinessAssertion)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.support_qa_business_assertion)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.aiQaBusinessAssertion)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.aiqaBusinessAssertion)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.ai_qa_business_assertion)), false), __read(objectList(evidence === null || evidence === void 0 ? void 0 : evidence.aiqa_business_assertion)), false);
1280
1286
  try {
1281
1287
  for (var rows_2 = __values(rows), rows_2_1 = rows_2.next(); !rows_2_1.done; rows_2_1 = rows_2.next()) {
1282
1288
  var entry = rows_2_1.value;
@@ -1764,17 +1770,25 @@ function mergeEvidenceRecords() {
1764
1770
  return merged;
1765
1771
  }
1766
1772
  function buildSupportQaEvidence(input) {
1773
+ var _a, _b, _c, _d;
1767
1774
  var job = input.job || {};
1768
1775
  var ticket = input.ticket || {};
1776
+ var inputQaEvidence = plainObject(input.qaEvidence);
1769
1777
  var qaCursor = plainObject(job.supportQaValidationCursor || job.support_qa_validation_cursor);
1770
1778
  var autonomousDecision = plainObject(job.supportV5AutonomousDecision || job.support_v5_autonomous_decision);
1771
1779
  var ticketAutomation = plainObject(ticket.automation);
1772
1780
  var ticketManager = plainObject(ticketAutomation.manager || ticket.manager);
1773
1781
  var preflightGate = supportPreflightGateObject(ticket, job, __assign(__assign({}, plainObject(input.qaEvidence)), { supportV5AutonomousDecision: autonomousDecision }));
1774
- var businessProofReadiness = plainObject(autonomousDecision.businessProofReadiness
1775
- || autonomousDecision.business_proof_readiness
1782
+ var businessProofReadiness = plainObject(inputQaEvidence.businessProofReadiness
1783
+ || inputQaEvidence.business_proof_readiness
1784
+ || ((_a = inputQaEvidence.supportV5AutonomousDecision) === null || _a === void 0 ? void 0 : _a.businessProofReadiness)
1785
+ || ((_b = inputQaEvidence.supportV5AutonomousDecision) === null || _b === void 0 ? void 0 : _b.business_proof_readiness)
1786
+ || ((_c = inputQaEvidence.support_v5_autonomous_decision) === null || _c === void 0 ? void 0 : _c.businessProofReadiness)
1787
+ || ((_d = inputQaEvidence.support_v5_autonomous_decision) === null || _d === void 0 ? void 0 : _d.business_proof_readiness)
1776
1788
  || job.businessProofReadiness
1777
- || job.business_proof_readiness);
1789
+ || job.business_proof_readiness
1790
+ || autonomousDecision.businessProofReadiness
1791
+ || autonomousDecision.business_proof_readiness);
1778
1792
  var customerReplyPolicy = plainObject(autonomousDecision.customerReplyPolicy
1779
1793
  || autonomousDecision.customer_reply_policy
1780
1794
  || job.customerReplyPolicy
@@ -1799,9 +1813,9 @@ function buildSupportQaEvidence(input) {
1799
1813
  || customerReplyPolicy.human_review_packet
1800
1814
  || job.humanReviewPacket
1801
1815
  || job.human_review_packet);
1802
- var evidence = mergeEvidenceRecords(qaCursor, job.qaEvidence, job.qa_evidence, ticket.qaEvidence, ticket.qa_evidence, input.qaEvidence);
1816
+ var evidence = mergeEvidenceRecords(qaCursor, job.qaEvidence, job.qa_evidence, ticket.qaEvidence, ticket.qa_evidence, inputQaEvidence);
1803
1817
  evidence.supportQaAssertions = __spreadArray(__spreadArray(__spreadArray([], __read(asArray(job.supportQaAssertions)), false), __read(asArray(job.support_qa_assertions)), false), __read(asArray(evidence.supportQaAssertions)), false);
1804
- evidence.aiQaBusinessAssertions = __spreadArray(__spreadArray(__spreadArray([], __read(asArray(job.aiQaBusinessAssertions)), false), __read(asArray(job.ai_qa_business_assertions)), false), __read(asArray(evidence.aiQaBusinessAssertions)), false);
1818
+ evidence.aiQaBusinessAssertions = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(asArray(job.aiQaBusinessAssertions)), false), __read(asArray(job.ai_qa_business_assertions)), false), __read(objectList(job.aiQaBusinessAssertion)), false), __read(objectList(job.aiqaBusinessAssertion)), false), __read(objectList(job.ai_qa_business_assertion)), false), __read(objectList(job.aiqa_business_assertion)), false), __read(objectList(job.supportQaBusinessAssertion)), false), __read(objectList(job.support_qa_business_assertion)), false), __read(asArray(evidence.aiQaBusinessAssertions)), false);
1805
1819
  evidence.runnerEvidenceArtifacts = __spreadArray(__spreadArray(__spreadArray([], __read(asArray(job.runnerEvidenceArtifacts)), false), __read(asArray(job.runner_evidence_artifacts)), false), __read(asArray(evidence.runnerEvidenceArtifacts)), false);
1806
1820
  evidence.supportQaArtifacts = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(asArray(job.supportQaArtifacts)), false), __read(asArray(job.support_qa_artifacts)), false), __read(asArray(job.qa_artifacts)), false), __read(asArray(evidence.supportQaArtifacts)), false);
1807
1821
  if (Object.keys(businessProofReadiness).length) {
@@ -2201,12 +2215,7 @@ function supportProofBackedCustomerReplySendGate(sendContract, sendGuard, now) {
2201
2215
  };
2202
2216
  }
2203
2217
  function supportAutonomyDecisionObject(ticket, job, evidence) {
2204
- return plainObject(job.supportV5AutonomousDecision
2205
- || job.support_v5_autonomous_decision
2206
- || evidence.supportV5AutonomousDecision
2207
- || evidence.support_v5_autonomous_decision
2208
- || ticket.supportV5AutonomousDecision
2209
- || ticket.support_v5_autonomous_decision);
2218
+ return mergeEvidenceRecords(ticket.supportV5AutonomousDecision, ticket.support_v5_autonomous_decision, job.supportV5AutonomousDecision, job.support_v5_autonomous_decision, evidence.supportV5AutonomousDecision, evidence.support_v5_autonomous_decision);
2210
2219
  }
2211
2220
  function supportAutonomyApprovalObject(ticket, job, evidence) {
2212
2221
  var ticketAutomation = plainObject(ticket.automation);
@@ -2419,14 +2428,18 @@ function supportAutonomyApprovalGate(approval, now) {
2419
2428
  || computedOwnerFilesRemoved.length > 0;
2420
2429
  var scopeFingerprint = cleanText(approval.scope_fingerprint || approval.scopeFingerprint, 180);
2421
2430
  var previousScopeFingerprint = cleanText(approval.previous_scope_fingerprint || approval.previousScopeFingerprint, 180);
2422
- var scopeChangedSinceApproval = approval.scope_changed_since_approval === true
2423
- || approval.scopeChangedSinceApproval === true
2424
- || (!!scopeFingerprint && !!previousScopeFingerprint && scopeFingerprint !== previousScopeFingerprint);
2425
2431
  var diagnosisScopeFingerprint = cleanText(approval.diagnosis_scope_fingerprint || approval.diagnosisScopeFingerprint, 180);
2426
2432
  var previousDiagnosisScopeFingerprint = cleanText(approval.previous_diagnosis_scope_fingerprint || approval.previousDiagnosisScopeFingerprint, 180);
2427
2433
  var diagnosisScopeChangedSinceApproval = approval.diagnosis_scope_changed_since_approval === true
2428
2434
  || approval.diagnosisScopeChangedSinceApproval === true
2429
2435
  || (!!diagnosisScopeFingerprint && !!previousDiagnosisScopeFingerprint && diagnosisScopeFingerprint !== previousDiagnosisScopeFingerprint);
2436
+ var aggregateScopeFingerprintChanged = approval.scope_changed_since_approval === true
2437
+ || approval.scopeChangedSinceApproval === true
2438
+ || (!!scopeFingerprint && !!previousScopeFingerprint && scopeFingerprint !== previousScopeFingerprint);
2439
+ var explicitScopeReapprovalRequired = approval.requires_scope_reapproval === true || approval.requiresScopeReapproval === true;
2440
+ var intakeChangedSinceApproval = approval.intake_edited_after_approval === true || approval.intakeEditedAfterApproval === true;
2441
+ var scopeChangedSinceApproval = explicitScopeReapprovalRequired
2442
+ || (aggregateScopeFingerprintChanged && (ownerFilesChangedSinceApproval || diagnosisScopeChangedSinceApproval || intakeChangedSinceApproval));
2430
2443
  var boundedAutopilotApproval = approval.after_approval_autopilot_until_a_grade === true
2431
2444
  || approval.afterApprovalAutopilotUntilAGrade === true
2432
2445
  || approval.autopilot_after_approval_until_a_grade === true
@@ -2438,7 +2451,7 @@ function supportAutonomyApprovalGate(approval, now) {
2438
2451
  if (approval.requires_over_limit_approval === true || approval.requiresOverLimitApproval === true) {
2439
2452
  blockers.push('Estimated work is over the automatic hour ceiling and requires operator approval.');
2440
2453
  }
2441
- if (approval.requires_scope_reapproval === true || approval.requiresScopeReapproval === true || scopeChangedSinceApproval) {
2454
+ if (explicitScopeReapprovalRequired || scopeChangedSinceApproval) {
2442
2455
  blockers.push('The approved support scope changed and requires on-the-fly reapproval.');
2443
2456
  }
2444
2457
  if (approval.requires_owner_file_reapproval === true || approval.requiresOwnerFileReapproval === true) {
@@ -2506,7 +2519,7 @@ function supportAutonomyApprovalGate(approval, now) {
2506
2519
  bugNotBugKnown: bugNotBugKnown,
2507
2520
  bugNotBugClassificationApproved: bugNotBugApproved,
2508
2521
  requiresOverLimitApproval: approval.requires_over_limit_approval === true || approval.requiresOverLimitApproval === true,
2509
- requiresScopeReapproval: approval.requires_scope_reapproval === true || approval.requiresScopeReapproval === true,
2522
+ requiresScopeReapproval: explicitScopeReapprovalRequired || scopeChangedSinceApproval,
2510
2523
  requiresOwnerFileReapproval: approval.requires_owner_file_reapproval === true || approval.requiresOwnerFileReapproval === true,
2511
2524
  requiresIntakeReapproval: approval.requires_intake_reapproval === true || approval.requiresIntakeReapproval === true,
2512
2525
  requiresDiagnosisScopeReapproval: approval.requires_diagnosis_scope_reapproval === true || approval.requiresDiagnosisScopeReapproval === true,
@@ -2714,6 +2727,28 @@ function supportAutoloopApprovalBlockGate(block, now) {
2714
2727
  }
2715
2728
  };
2716
2729
  }
2730
+ function downgradeStaleSupportRepairIntentApprovalBlock(gate, autonomyApprovalGate, productRepairDispatchGate) {
2731
+ if (!gate || gate.status !== 'blocked') {
2732
+ return gate;
2733
+ }
2734
+ var metadata = plainObject(gate.metadata);
2735
+ var blockers = cleanStringList(metadata.blockers, 20, 500);
2736
+ var onlyRepairIntentBlocker = metadata.requiresRepairIntent === true
2737
+ && metadata.requiresRepairIntentReapproval !== true
2738
+ && metadata.requiresOverLimitApproval !== true
2739
+ && metadata.requiresScopeReapproval !== true
2740
+ && metadata.requiresOwnerFileReapproval !== true
2741
+ && metadata.requiresDiagnosisScopeReapproval !== true
2742
+ && metadata.requiresClassificationApproval !== true
2743
+ && metadata.requiresEstimateHours !== true
2744
+ && metadata.requiresElapsedReapproval !== true
2745
+ && (blockers.length === 0 || blockers.every(function (blocker) { return /planned implementation intent|repair_intent_required/i.test(blocker); }));
2746
+ if (!onlyRepairIntentBlocker || (autonomyApprovalGate === null || autonomyApprovalGate === void 0 ? void 0 : autonomyApprovalGate.status) !== 'pass' || (productRepairDispatchGate === null || productRepairDispatchGate === void 0 ? void 0 : productRepairDispatchGate.status) !== 'pass') {
2747
+ return gate;
2748
+ }
2749
+ var reason = 'Stale repair-intent-only approval block downgraded because bounded autonomy and product-repair dispatch are already approved; continue to QA/business proof.';
2750
+ return __assign(__assign({}, gate), { status: 'warn', reason: reason, metadata: __assign(__assign({}, metadata), { staleRepairIntentOnlyBlockDowngraded: true, blockers: blockers, downgradeReason: reason }) });
2751
+ }
2717
2752
  function supportAutoloopNoProgressGate(record, now) {
2718
2753
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
2719
2754
  if (!record || !Object.keys(record).length) {
@@ -3192,7 +3227,7 @@ function supportPrReadinessContractObject(ticket, job, evidence) {
3192
3227
  var runnerConsole = plainObject(ticketAutomation.runner_console || ticketAutomation.runnerConsole);
3193
3228
  var autonomousDecision = supportAutonomyDecisionObject(ticket, job, evidence);
3194
3229
  var recovery = plainObject(autonomousDecision.managerRecovery || autonomousDecision.manager_recovery);
3195
- return evidenceObject(job.supportPrReadinessContract, job.support_pr_readiness_contract, job.prReadinessContract, job.pr_readiness_contract, evidence.supportPrReadinessContract, evidence.support_pr_readiness_contract, evidence.prReadinessContract, evidence.pr_readiness_contract, autonomousDecision.prReadinessContract, autonomousDecision.pr_readiness_contract, recovery.prReadinessContract, recovery.pr_readiness_contract, ticket.supportPrReadinessContract, ticket.support_pr_readiness_contract, ticket.prReadinessContract, ticket.pr_readiness_contract, runnerConsole.last_pr_readiness_contract, runnerConsole.lastPrReadinessContract, runnerConsole.pr_readiness_contract, runnerConsole.prReadinessContract, ticketManager.last_pr_readiness_contract, ticketManager.lastPrReadinessContract, ticketManager.pr_readiness_contract, ticketManager.prReadinessContract);
3230
+ return evidenceObject(evidence.supportPrReadinessContract, evidence.support_pr_readiness_contract, evidence.prReadinessContract, evidence.pr_readiness_contract, autonomousDecision.prReadinessContract, autonomousDecision.pr_readiness_contract, recovery.prReadinessContract, recovery.pr_readiness_contract, job.supportPrReadinessContract, job.support_pr_readiness_contract, job.prReadinessContract, job.pr_readiness_contract, ticket.supportPrReadinessContract, ticket.support_pr_readiness_contract, ticket.prReadinessContract, ticket.pr_readiness_contract, runnerConsole.last_pr_readiness_contract, runnerConsole.lastPrReadinessContract, runnerConsole.pr_readiness_contract, runnerConsole.prReadinessContract, ticketManager.last_pr_readiness_contract, ticketManager.lastPrReadinessContract, ticketManager.pr_readiness_contract, ticketManager.prReadinessContract);
3196
3231
  }
3197
3232
  function supportPrReadinessContractGate(contract, now) {
3198
3233
  var _a;
@@ -4185,7 +4220,7 @@ function supportManagerExecutionPacketGate(packet, now, required) {
4185
4220
  function supportDiagnosisEvidencePackObject(ticket, job, evidence) {
4186
4221
  var ticketAutomation = plainObject(ticket.automation);
4187
4222
  var ticketManager = plainObject(ticketAutomation.manager || ticket.manager);
4188
- return evidenceObject(job.supportV5DiagnosisEvidencePack, job.support_v5_diagnosis_evidence_pack, job.diagnosisEvidencePack, job.diagnosis_evidence_pack, evidence.supportV5DiagnosisEvidencePack, evidence.support_v5_diagnosis_evidence_pack, evidence.diagnosisEvidencePack, evidence.diagnosis_evidence_pack, ticket.supportV5DiagnosisEvidencePack, ticket.support_v5_diagnosis_evidence_pack, ticket.diagnosisEvidencePack, ticket.diagnosis_evidence_pack, ticketManager.diagnosisEvidencePack, ticketManager.diagnosis_evidence_pack);
4223
+ return evidenceObject(evidence.supportV5DiagnosisEvidencePack, evidence.support_v5_diagnosis_evidence_pack, evidence.diagnosisEvidencePack, evidence.diagnosis_evidence_pack, job.supportV5DiagnosisEvidencePack, job.support_v5_diagnosis_evidence_pack, job.diagnosisEvidencePack, job.diagnosis_evidence_pack, ticket.supportV5DiagnosisEvidencePack, ticket.support_v5_diagnosis_evidence_pack, ticket.diagnosisEvidencePack, ticket.diagnosis_evidence_pack, ticketManager.diagnosisEvidencePack, ticketManager.diagnosis_evidence_pack);
4189
4224
  }
4190
4225
  function supportIssueClassProbePlanObject(ticket, job, evidence) {
4191
4226
  var ticketAutomation = plainObject(ticket.automation);
@@ -5603,7 +5638,7 @@ function buildSupportAIRunFromEvidence(input) {
5603
5638
  });
5604
5639
  }
5605
5640
  var autoloopApprovalBlock = supportAutoloopApprovalBlockObject(ticket, job, evidence);
5606
- var autoloopApprovalBlockGate = supportAutoloopApprovalBlockGate(autoloopApprovalBlock, input.now);
5641
+ var autoloopApprovalBlockGate = downgradeStaleSupportRepairIntentApprovalBlock(supportAutoloopApprovalBlockGate(autoloopApprovalBlock, input.now), autonomyApprovalGate, productRepairDispatchGate);
5607
5642
  if (autoloopApprovalBlockGate) {
5608
5643
  gates.push(autoloopApprovalBlockGate);
5609
5644
  pushEvent(events, {