@resolveio/server-lib 22.3.128 → 22.3.130

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.128",
3
+ "version": "22.3.130",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
package/public_api.d.ts CHANGED
@@ -98,6 +98,7 @@ export * from './util/ai-run-evidence';
98
98
  export * from './util/ai-run-evidence-adapters';
99
99
  export * from './util/ai-run-evidence-dashboard';
100
100
  export * from './util/ai-run-evidence-eval';
101
+ export * from './util/ai-runner-manager-policy';
101
102
  export * from './util/ai-runner-artifacts';
102
103
  export * from './util/ai-runner-qa-auth';
103
104
  export * from './util/ai-runner-qa-tools';
package/public_api.js CHANGED
@@ -114,6 +114,7 @@ __exportStar(require("./util/ai-run-evidence"), exports);
114
114
  __exportStar(require("./util/ai-run-evidence-adapters"), exports);
115
115
  __exportStar(require("./util/ai-run-evidence-dashboard"), exports);
116
116
  __exportStar(require("./util/ai-run-evidence-eval"), exports);
117
+ __exportStar(require("./util/ai-runner-manager-policy"), exports);
117
118
  __exportStar(require("./util/ai-runner-artifacts"), exports);
118
119
  __exportStar(require("./util/ai-runner-qa-auth"), exports);
119
120
  __exportStar(require("./util/ai-runner-qa-tools"), exports);
package/public_api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,uEAAqD;AACrD,8EAA4D;AAC5D,qFAAmE;AACnE,oFAAkE;AAClE,oFAAkE;AAClE,+EAA6D;AAC7D,kEAAgD;AAChD,mEAAiD;AACjD,oFAAkE;AAClE,iFAA+D;AAC/D,gFAA8D;AAC9D,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,uEAAqD;AACrD,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,uEAAqD;AACrD,4EAA0D;AAC1D,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,+EAA6D;AAC7D,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,2DAAyC;AACzC,oEAAkD;AAClD,qEAAmD;AACnD,gFAA8D;AAC9D,yEAAuD;AACvD,gEAA8C;AAC9C,mFAAiE;AACjE,0EAAwD;AACxD,4DAA0C;AAC1C,6DAA2C;AAC3C,0EAAwD;AACxD,0EAAwD;AACxD,qEAAmD;AACnD,wDAAsC;AACtC,yEAAuD;AACvD,qEAAmD;AACnD,sEAAoD;AACpD,yDAAuC;AACvC,0EAAwD;AACxD,uEAAqD;AACrD,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,gEAA8C;AAC9C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,uDAAqC;AACrC,4DAA0C;AAC1C,yEAAuD;AACvD,0EAAwD;AACxD,yDAAuC;AACvC,2DAAyC;AACzC,0DAAwC;AACxC,gDAA8B;AAC9B,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,kEAAgD;AAChD,mEAAiD;AACjD,8DAA4C;AAC5C,6DAA2C;AAC3C,2DAAyC;AACzC,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,2DAAyC;AACzC,mDAAiC","file":"public_api.js","sourcesContent":["export * from './collections/app-status.collection';\nexport * from './collections/app-setting.collection';\nexport * from './ai/resolveio-platform-intelligence';\nexport * from './ai/resolveio-platform-intelligence-memory';\nexport * from './ai/resolveio-platform-intelligence-memory-corpus';\nexport * from './collections/ai-terminal-issue-report.collection';\nexport * from './collections/ai-terminal-conversation.collection';\nexport * from './collections/ai-terminal-message.collection';\nexport * from './collections/ai-run.collection';\nexport * from './collections/counter.collection';\nexport * from './collections/customer-portal-password.collection';\nexport * from './collections/customer-notification.collection';\nexport * from './collections/communication-metric.collection';\nexport * from './collections/cron-job-history.collection';\nexport * from './collections/cron-job.collection';\nexport * from './collections/email-history.collection';\nexport * from './collections/email-verified.collection';\nexport * from './collections/file.collection';\nexport * from './collections/flag-update.collection';\nexport * from './collections/flag.collection';\nexport * from './collections/log-method-latency.collection';\nexport * from './collections/log-subscription.collection';\nexport * from './collections/log.collection';\nexport * from './collections/logged-in-users.collection';\nexport * from './collections/monitor-cpu.collection';\nexport * from './collections/monitor-function.collection';\nexport * from './collections/monitor-memory.collection';\nexport * from './collections/monitor-mongo.collection';\nexport * from './collections/notification.collection';\nexport * from './collections/openai-usage-ledger.collection';\nexport * from './collections/report-builder-library.collection';\nexport * from './collections/report-builder-report.collection';\nexport * from './collections/user-group.collection';\nexport * from './collections/user-guide.collection';\nexport * from './collections/user.collection';\nexport * from './managers/mongo.manager';\nexport * from './managers/error-auto-fix.manager';\nexport * from './managers/ai-run-evidence.manager';\nexport * from './managers/ai-assistant-codex-manager.manager';\nexport * from './managers/slow-query-verifier.manager';\nexport * from './managers/slow-query.manager';\nexport * from './managers/customer-notification-content.manager';\nexport * from './managers/diagnostic-manager-bootstrap';\nexport * from './models/app-status.model';\nexport * from './models/app-setting.model';\nexport * from './models/ai-terminal-issue-report.model';\nexport * from './models/ai-terminal-conversation.model';\nexport * from './models/ai-terminal-message.model';\nexport * from './models/ai-run.model';\nexport * from './models/billing-logged-in-users.model';\nexport * from './models/collection-document.model';\nexport * from './models/communication-metric.model';\nexport * from './models/counter.model';\nexport * from './models/customer-portal-password.model';\nexport * from './models/customer-notification.model';\nexport * from './models/cron-job-history.model';\nexport * from './models/cron-job.model';\nexport * from './models/dialog.model';\nexport * from './models/email-history.model';\nexport * from './models/email-verified.model';\nexport * from './models/file.model';\nexport * from './models/flag-update.model';\nexport * from './models/flag.model';\nexport * from './models/log-method-latency.model';\nexport * from './models/log-subscription.model';\nexport * from './models/log.model';\nexport * from './models/logged-in-users.model';\nexport * from './models/method-response.model';\nexport * from './models/method.model';\nexport * from './models/monitor-cpu.model';\nexport * from './models/monitor-memory.model';\nexport * from './models/monitor-mongo.model';\nexport * from './models/notification.model';\nexport * from './models/openai-usage-ledger.model';\nexport * from './models/pagination.model';\nexport * from './models/permission.model';\nexport * from './models/report-builder-library.model';\nexport * from './models/report-builder-report.model';\nexport * from './models/report-builder.model';\nexport * from './models/select-data-label.model';\nexport * from './models/server-message.model';\nexport * from './models/subscription.model';\nexport * from './models/support-ticket.model';\nexport * from './models/user-group.model';\nexport * from './models/user-guide.model';\nexport * from './models/user.model';\nexport * from './types/error-report';\nexport * from './types/slow-query-report';\nexport * from './managers/openai-usage-ledger.manager';\nexport * from './managers/communication-metric.manager';\nexport * from './resolveio-server-app';\nexport * from './services/openai-client';\nexport * from './services/codex-client';\nexport * from './util/common';\nexport * from './util/customer-portal-password';\nexport * from './util/ai-qa-policy';\nexport * from './util/ai-run-evidence';\nexport * from './util/ai-run-evidence-adapters';\nexport * from './util/ai-run-evidence-dashboard';\nexport * from './util/ai-run-evidence-eval';\nexport * from './util/ai-runner-artifacts';\nexport * from './util/ai-runner-qa-auth';\nexport * from './util/ai-runner-qa-tools';\nexport * from './util/aicoder-runner-v6';\nexport * from './util/runner-process-janitor';\nexport * from './util/support-runner-v5';\nexport * from './util/tokenizer';\n"]}
1
+ {"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,uEAAqD;AACrD,8EAA4D;AAC5D,qFAAmE;AACnE,oFAAkE;AAClE,oFAAkE;AAClE,+EAA6D;AAC7D,kEAAgD;AAChD,mEAAiD;AACjD,oFAAkE;AAClE,iFAA+D;AAC/D,gFAA8D;AAC9D,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,uEAAqD;AACrD,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,uEAAqD;AACrD,4EAA0D;AAC1D,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,+EAA6D;AAC7D,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,2DAAyC;AACzC,oEAAkD;AAClD,qEAAmD;AACnD,gFAA8D;AAC9D,yEAAuD;AACvD,gEAA8C;AAC9C,mFAAiE;AACjE,0EAAwD;AACxD,4DAA0C;AAC1C,6DAA2C;AAC3C,0EAAwD;AACxD,0EAAwD;AACxD,qEAAmD;AACnD,wDAAsC;AACtC,yEAAuD;AACvD,qEAAmD;AACnD,sEAAoD;AACpD,yDAAuC;AACvC,0EAAwD;AACxD,uEAAqD;AACrD,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,gEAA8C;AAC9C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,uDAAqC;AACrC,4DAA0C;AAC1C,yEAAuD;AACvD,0EAAwD;AACxD,yDAAuC;AACvC,2DAAyC;AACzC,0DAAwC;AACxC,gDAA8B;AAC9B,kEAAgD;AAChD,sDAAoC;AACpC,yDAAuC;AACvC,kEAAgD;AAChD,mEAAiD;AACjD,8DAA4C;AAC5C,kEAAgD;AAChD,6DAA2C;AAC3C,2DAAyC;AACzC,4DAA0C;AAC1C,2DAAyC;AACzC,gEAA8C;AAC9C,2DAAyC;AACzC,mDAAiC","file":"public_api.js","sourcesContent":["export * from './collections/app-status.collection';\nexport * from './collections/app-setting.collection';\nexport * from './ai/resolveio-platform-intelligence';\nexport * from './ai/resolveio-platform-intelligence-memory';\nexport * from './ai/resolveio-platform-intelligence-memory-corpus';\nexport * from './collections/ai-terminal-issue-report.collection';\nexport * from './collections/ai-terminal-conversation.collection';\nexport * from './collections/ai-terminal-message.collection';\nexport * from './collections/ai-run.collection';\nexport * from './collections/counter.collection';\nexport * from './collections/customer-portal-password.collection';\nexport * from './collections/customer-notification.collection';\nexport * from './collections/communication-metric.collection';\nexport * from './collections/cron-job-history.collection';\nexport * from './collections/cron-job.collection';\nexport * from './collections/email-history.collection';\nexport * from './collections/email-verified.collection';\nexport * from './collections/file.collection';\nexport * from './collections/flag-update.collection';\nexport * from './collections/flag.collection';\nexport * from './collections/log-method-latency.collection';\nexport * from './collections/log-subscription.collection';\nexport * from './collections/log.collection';\nexport * from './collections/logged-in-users.collection';\nexport * from './collections/monitor-cpu.collection';\nexport * from './collections/monitor-function.collection';\nexport * from './collections/monitor-memory.collection';\nexport * from './collections/monitor-mongo.collection';\nexport * from './collections/notification.collection';\nexport * from './collections/openai-usage-ledger.collection';\nexport * from './collections/report-builder-library.collection';\nexport * from './collections/report-builder-report.collection';\nexport * from './collections/user-group.collection';\nexport * from './collections/user-guide.collection';\nexport * from './collections/user.collection';\nexport * from './managers/mongo.manager';\nexport * from './managers/error-auto-fix.manager';\nexport * from './managers/ai-run-evidence.manager';\nexport * from './managers/ai-assistant-codex-manager.manager';\nexport * from './managers/slow-query-verifier.manager';\nexport * from './managers/slow-query.manager';\nexport * from './managers/customer-notification-content.manager';\nexport * from './managers/diagnostic-manager-bootstrap';\nexport * from './models/app-status.model';\nexport * from './models/app-setting.model';\nexport * from './models/ai-terminal-issue-report.model';\nexport * from './models/ai-terminal-conversation.model';\nexport * from './models/ai-terminal-message.model';\nexport * from './models/ai-run.model';\nexport * from './models/billing-logged-in-users.model';\nexport * from './models/collection-document.model';\nexport * from './models/communication-metric.model';\nexport * from './models/counter.model';\nexport * from './models/customer-portal-password.model';\nexport * from './models/customer-notification.model';\nexport * from './models/cron-job-history.model';\nexport * from './models/cron-job.model';\nexport * from './models/dialog.model';\nexport * from './models/email-history.model';\nexport * from './models/email-verified.model';\nexport * from './models/file.model';\nexport * from './models/flag-update.model';\nexport * from './models/flag.model';\nexport * from './models/log-method-latency.model';\nexport * from './models/log-subscription.model';\nexport * from './models/log.model';\nexport * from './models/logged-in-users.model';\nexport * from './models/method-response.model';\nexport * from './models/method.model';\nexport * from './models/monitor-cpu.model';\nexport * from './models/monitor-memory.model';\nexport * from './models/monitor-mongo.model';\nexport * from './models/notification.model';\nexport * from './models/openai-usage-ledger.model';\nexport * from './models/pagination.model';\nexport * from './models/permission.model';\nexport * from './models/report-builder-library.model';\nexport * from './models/report-builder-report.model';\nexport * from './models/report-builder.model';\nexport * from './models/select-data-label.model';\nexport * from './models/server-message.model';\nexport * from './models/subscription.model';\nexport * from './models/support-ticket.model';\nexport * from './models/user-group.model';\nexport * from './models/user-guide.model';\nexport * from './models/user.model';\nexport * from './types/error-report';\nexport * from './types/slow-query-report';\nexport * from './managers/openai-usage-ledger.manager';\nexport * from './managers/communication-metric.manager';\nexport * from './resolveio-server-app';\nexport * from './services/openai-client';\nexport * from './services/codex-client';\nexport * from './util/common';\nexport * from './util/customer-portal-password';\nexport * from './util/ai-qa-policy';\nexport * from './util/ai-run-evidence';\nexport * from './util/ai-run-evidence-adapters';\nexport * from './util/ai-run-evidence-dashboard';\nexport * from './util/ai-run-evidence-eval';\nexport * from './util/ai-runner-manager-policy';\nexport * from './util/ai-runner-artifacts';\nexport * from './util/ai-runner-qa-auth';\nexport * from './util/ai-runner-qa-tools';\nexport * from './util/aicoder-runner-v6';\nexport * from './util/runner-process-janitor';\nexport * from './util/support-runner-v5';\nexport * from './util/tokenizer';\n"]}
@@ -21,6 +21,31 @@ var __values = (this && this.__values) || function(o) {
21
21
  };
22
22
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
23
  };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
24
49
  Object.defineProperty(exports, "__esModule", { value: true });
25
50
  exports.buildSupportAIRunFromEvidence = buildSupportAIRunFromEvidence;
26
51
  exports.buildAICoderAIRunFromEvidence = buildAICoderAIRunFromEvidence;
@@ -383,8 +408,131 @@ function buildQaFromEvidence(evidence, now) {
383
408
  now: now
384
409
  });
385
410
  }
386
- function evidenceObject() {
411
+ function isoNow(value) {
412
+ if (value instanceof Date) {
413
+ return value.toISOString();
414
+ }
415
+ if (value) {
416
+ var parsed = new Date(value);
417
+ if (!Number.isNaN(parsed.getTime())) {
418
+ return parsed.toISOString();
419
+ }
420
+ }
421
+ return new Date().toISOString();
422
+ }
423
+ function normalizeMatchText(value) {
424
+ return cleanText(value, 3000)
425
+ .toLowerCase()
426
+ .replace(/[^a-z0-9]+/g, ' ')
427
+ .replace(/\s+/g, ' ')
428
+ .trim();
429
+ }
430
+ function importantTokens(value) {
431
+ var stopWords = new Set([
432
+ 'the', 'and', 'that', 'with', 'from', 'after', 'before', 'when', 'then', 'this', 'must',
433
+ 'should', 'will', 'only', 'into', 'have', 'has', 'are', 'was', 'were', 'been'
434
+ ]);
435
+ return new Set(normalizeMatchText(value).split(' ')
436
+ .filter(function (token) { return token.length >= 4 && !stopWords.has(token); }));
437
+ }
438
+ function businessAssertionPassed(assertion) {
439
+ return /^(pass|passed|success|ok|done)$/i.test(cleanText(assertion.status, 40));
440
+ }
441
+ function supportAssertionMatchesDiagnosisProof(assertion, proofPlan) {
387
442
  var e_11, _a;
443
+ var metadata = assertion.metadata || {};
444
+ if (metadata.diagnosisProofPlanMatched === true || metadata.proofPlanMatched === true || metadata.supportDiagnosisProof === true) {
445
+ return true;
446
+ }
447
+ var requiredBusinessAssertion = proofPlan.business_assertion || proofPlan.businessAssertion;
448
+ var proofParts = [
449
+ requiredBusinessAssertion,
450
+ proofPlan.after,
451
+ proofPlan.data_assertion || proofPlan.dataAssertion,
452
+ proofPlan.artifact_expectation || proofPlan.artifactExpectation
453
+ ].map(function (part) { return normalizeMatchText(part); }).filter(function (part) { return part.length >= 16; });
454
+ if (!proofParts.length) {
455
+ return true;
456
+ }
457
+ var assertionText = normalizeMatchText([
458
+ assertion.assertion,
459
+ assertion.workflow,
460
+ assertion.action,
461
+ assertion.expected,
462
+ assertion.observed,
463
+ assertion.dataProof,
464
+ assertion.message
465
+ ].filter(Boolean).join(' '));
466
+ if (proofParts.some(function (part) { return assertionText.includes(part); })) {
467
+ return true;
468
+ }
469
+ var proofTokens = importantTokens([
470
+ requiredBusinessAssertion,
471
+ proofPlan.after,
472
+ proofPlan.data_assertion || proofPlan.dataAssertion
473
+ ].filter(Boolean).join(' '));
474
+ var assertionTokens = importantTokens(assertionText);
475
+ if (!proofTokens.size) {
476
+ return true;
477
+ }
478
+ var overlap = 0;
479
+ try {
480
+ for (var proofTokens_1 = __values(proofTokens), proofTokens_1_1 = proofTokens_1.next(); !proofTokens_1_1.done; proofTokens_1_1 = proofTokens_1.next()) {
481
+ var token = proofTokens_1_1.value;
482
+ if (assertionTokens.has(token)) {
483
+ overlap += 1;
484
+ }
485
+ }
486
+ }
487
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
488
+ finally {
489
+ try {
490
+ if (proofTokens_1_1 && !proofTokens_1_1.done && (_a = proofTokens_1.return)) _a.call(proofTokens_1);
491
+ }
492
+ finally { if (e_11) throw e_11.error; }
493
+ }
494
+ return overlap >= Math.min(4, Math.max(3, Math.ceil(proofTokens.size * 0.45)));
495
+ }
496
+ function supportDiagnosisProofGateResult(diagnosisGate, now) {
497
+ var proofPlan = diagnosisGate.proof_plan || diagnosisGate.proofPlan || {};
498
+ return {
499
+ key: 'support_diagnosis_business_proof',
500
+ label: 'Diagnosis proof plan',
501
+ status: 'blocked',
502
+ reason: 'Support business assertion did not map to the diagnosis proof_plan. Route proof or generic workflow proof cannot accept the ticket.',
503
+ evidenceRefs: [],
504
+ recordedAt: isoNow(now),
505
+ metadata: {
506
+ issueClass: cleanText(diagnosisGate.issue_class || diagnosisGate.issueClass, 120),
507
+ requiredBusinessAssertion: cleanText(proofPlan.business_assertion || proofPlan.businessAssertion, 1000),
508
+ requiredAfter: cleanText(proofPlan.after, 1000),
509
+ requiredDataAssertion: cleanText(proofPlan.data_assertion || proofPlan.dataAssertion, 1000)
510
+ }
511
+ };
512
+ }
513
+ function applySupportDiagnosisProofGate(qa, diagnosisGate, now) {
514
+ var proofPlan = diagnosisGate.proof_plan || diagnosisGate.proofPlan || {};
515
+ var requiredBusinessAssertion = cleanText(proofPlan.business_assertion || proofPlan.businessAssertion, 1000);
516
+ var requiredAfter = cleanText(proofPlan.after, 1000);
517
+ if (!Object.keys(proofPlan).length || (!requiredBusinessAssertion && !requiredAfter)) {
518
+ return qa;
519
+ }
520
+ var passedAssertions = qa.businessAssertions.filter(businessAssertionPassed);
521
+ if (!passedAssertions.length) {
522
+ return qa;
523
+ }
524
+ if (passedAssertions.some(function (assertion) { return supportAssertionMatchesDiagnosisProof(assertion, proofPlan); })) {
525
+ return qa;
526
+ }
527
+ var gate = supportDiagnosisProofGateResult(diagnosisGate, now);
528
+ return __assign(__assign({}, qa), { outcome: qa.routeProbes.some(function (probe) { return /^(pass|passed|success|ok|done)$/i.test(cleanText(probe.status, 40)); })
529
+ ? 'route_only_pass'
530
+ : 'incomplete', gateResults: __spreadArray(__spreadArray([], __read(qa.gateResults.filter(function (existing) { return !(existing.key === 'qa_business_assertion' && existing.status === 'pass'); })), false), [
531
+ gate
532
+ ], false) });
533
+ }
534
+ function evidenceObject() {
535
+ var e_12, _a;
388
536
  var values = [];
389
537
  for (var _i = 0; _i < arguments.length; _i++) {
390
538
  values[_i] = arguments[_i];
@@ -397,17 +545,17 @@ function evidenceObject() {
397
545
  }
398
546
  }
399
547
  }
400
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
548
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
401
549
  finally {
402
550
  try {
403
551
  if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
404
552
  }
405
- finally { if (e_11) throw e_11.error; }
553
+ finally { if (e_12) throw e_12.error; }
406
554
  }
407
555
  return {};
408
556
  }
409
557
  function buildSupportAIRunFromEvidence(input) {
410
- var e_12, _a, e_13, _b;
558
+ var e_13, _a, e_14, _b;
411
559
  var _c, _d, _e, _f;
412
560
  var ticket = input.ticket || {};
413
561
  var job = input.job || {};
@@ -434,12 +582,12 @@ function buildSupportAIRunFromEvidence(input) {
434
582
  });
435
583
  }
436
584
  }
437
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
585
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
438
586
  finally {
439
587
  try {
440
588
  if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
441
589
  }
442
- finally { if (e_12) throw e_12.error; }
590
+ finally { if (e_13) throw e_13.error; }
443
591
  }
444
592
  try {
445
593
  for (var _j = __values(asArray(input.aiJobs)), _k = _j.next(); !_k.done; _k = _j.next()) {
@@ -458,17 +606,17 @@ function buildSupportAIRunFromEvidence(input) {
458
606
  });
459
607
  }
460
608
  }
461
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
609
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
462
610
  finally {
463
611
  try {
464
612
  if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
465
613
  }
466
- finally { if (e_13) throw e_13.error; }
614
+ finally { if (e_14) throw e_14.error; }
467
615
  }
468
616
  collectCommitEvents(asArray(input.commits), events);
469
617
  var cost = collectUsageEvents(asArray(input.usageLedger), events);
470
- var qa = buildQaFromEvidence(evidence, input.now);
471
618
  var diagnosisGate = evidenceObject(job.supportV5DiagnosisGate, job.support_v5_diagnosis_gate, job.diagnosisGate, ticket.supportV5DiagnosisGate, ticket.diagnosisGate, evidence.diagnosisGate, evidence.supportV5DiagnosisGate);
619
+ var qa = applySupportDiagnosisProofGate(buildQaFromEvidence(evidence, input.now), diagnosisGate, input.now);
472
620
  var diagnosisOwnerFiles = asArray(diagnosisGate.owner_files || diagnosisGate.ownerFiles);
473
621
  var diagnosisIssueClass = cleanText(diagnosisGate.issue_class || diagnosisGate.issueClass, 120);
474
622
  if (Object.keys(diagnosisGate).length) {
@@ -518,7 +666,7 @@ function buildSupportAIRunFromEvidence(input) {
518
666
  });
519
667
  }
520
668
  function buildAICoderAIRunFromEvidence(input) {
521
- var e_14, _a;
669
+ var e_15, _a;
522
670
  var _b, _c, _d, _e, _f, _g, _h;
523
671
  var app = input.app || {};
524
672
  var job = input.job || {};
@@ -545,12 +693,12 @@ function buildAICoderAIRunFromEvidence(input) {
545
693
  });
546
694
  }
547
695
  }
548
- catch (e_14_1) { e_14 = { error: e_14_1 }; }
696
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
549
697
  finally {
550
698
  try {
551
699
  if (_k && !_k.done && (_a = _j.return)) _a.call(_j);
552
700
  }
553
- finally { if (e_14) throw e_14.error; }
701
+ finally { if (e_15) throw e_15.error; }
554
702
  }
555
703
  collectCommitEvents(asArray(input.commits), events);
556
704
  var cost = collectUsageEvents(asArray(input.usageLedger), events);
@@ -587,7 +735,7 @@ function buildAICoderAIRunFromEvidence(input) {
587
735
  });
588
736
  }
589
737
  function buildAssistantAIRunFromEvidence(input) {
590
- var e_15, _a, e_16, _b;
738
+ var e_16, _a, e_17, _b;
591
739
  var conversation = input.conversation || {};
592
740
  var events = [];
593
741
  var sourceIds = {};
@@ -609,12 +757,12 @@ function buildAssistantAIRunFromEvidence(input) {
609
757
  });
610
758
  }
611
759
  }
612
- catch (e_15_1) { e_15 = { error: e_15_1 }; }
760
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
613
761
  finally {
614
762
  try {
615
763
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
616
764
  }
617
- finally { if (e_15) throw e_15.error; }
765
+ finally { if (e_16) throw e_16.error; }
618
766
  }
619
767
  try {
620
768
  for (var _e = __values(asArray(input.issueReports)), _f = _e.next(); !_f.done; _f = _e.next()) {
@@ -632,12 +780,12 @@ function buildAssistantAIRunFromEvidence(input) {
632
780
  });
633
781
  }
634
782
  }
635
- catch (e_16_1) { e_16 = { error: e_16_1 }; }
783
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
636
784
  finally {
637
785
  try {
638
786
  if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
639
787
  }
640
- finally { if (e_16) throw e_16.error; }
788
+ finally { if (e_17) throw e_17.error; }
641
789
  }
642
790
  var cost = collectUsageEvents(asArray(input.usageLedger), events);
643
791
  var correctnessEvidence = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/ai-run-evidence-adapters.ts"],"names":[],"mappings":"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","file":"ai-run-evidence-adapters.js","sourcesContent":["import {\n\tAIRun,\n\tAIRunCost,\n\tAIRunEvent,\n\tAIQaArtifact,\n\tAIQaBusinessAssertion,\n\tAIQaCompileResult,\n\tAIQaInfraCheck,\n\tAIQaRouteProbe,\n\tbuildAIRun,\n\tbuildAIRunCost,\n\tbuildAIQaRun,\n\tnormalizeOpenAIUsageRowsForCosting\n} from './ai-run-evidence';\n\nexport interface SupportAIRunAdapterInput {\n\tticket?: Record<string, any>;\n\tjob?: Record<string, any>;\n\tversions?: Array<Record<string, any>>;\n\tbuildPlans?: Array<Record<string, any>>;\n\taiJobs?: Array<Record<string, any>>;\n\ttaskEvents?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcommits?: Array<Record<string, any>>;\n\tqaEvidence?: Record<string, any>;\n\tnow?: Date | string;\n}\n\nexport interface AICoderAIRunAdapterInput {\n\tapp?: Record<string, any>;\n\tjob?: Record<string, any>;\n\tlogs?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcommits?: Array<Record<string, any>>;\n\tqaEvidence?: Record<string, any>;\n\tnow?: Date | string;\n}\n\nexport interface AssistantAIRunAdapterInput {\n\tconversation?: Record<string, any>;\n\tmessages?: Array<Record<string, any>>;\n\tissueReports?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcorrectnessChecks?: Array<Record<string, any>>;\n\tnow?: 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 idText(value: any, max = 160): string | undefined {\n\tconst normalized = cleanText(value, max);\n\treturn normalized || undefined;\n}\n\nfunction asArray<T = any>(value: any): T[] {\n\treturn Array.isArray(value) ? value : [];\n}\n\nfunction firstText(source: Record<string, any> | undefined, fields: string[], max = 1000): string | undefined {\n\tfor (const field of fields) {\n\t\tconst value = source?.[field];\n\t\tconst normalized = idText(value, max);\n\t\tif (normalized) {\n\t\t\treturn normalized;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction dateValue(source: Record<string, any> | undefined, fields: string[]): Date | string | undefined {\n\tfor (const field of fields) {\n\t\tconst value = source?.[field];\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction addSourceId(sourceIds: Record<string, string>, key: string, value: any): void {\n\tconst normalized = idText(value);\n\tif (normalized) {\n\t\tsourceIds[key] = normalized;\n\t}\n}\n\nfunction pushEvent(events: AIRunEvent[], event: AIRunEvent): void {\n\tconst message = cleanText(event.message, 1800);\n\tconst metadata = event.metadata || {};\n\tif (!message && !Object.keys(metadata).length && !event.artifactPaths?.length) {\n\t\treturn;\n\t}\n\tevents.push({\n\t\t...event,\n\t\tmessage,\n\t\tartifactPaths: asArray<string>(event.artifactPaths).filter(Boolean).slice(0, 20)\n\t});\n}\n\nfunction eventDate(record: Record<string, any>): Date | string | undefined {\n\treturn dateValue(record, ['recordedAt', 'createdAt', 'updatedAt', 'timestamp', 'time', 'date']);\n}\n\nfunction collectUsageEvents(entries: Array<Record<string, any>>, events: AIRunEvent[]): AIRunCost | undefined {\n\tif (!entries.length) {\n\t\treturn undefined;\n\t}\n\tconst normalizedEntries = normalizeOpenAIUsageRowsForCosting(entries);\n\tfor (const entry of normalizedEntries) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'usage',\n\t\t\tcategory: cleanText(entry.category || entry.kind || entry.phase, 160) || 'usage',\n\t\t\tmessage: cleanText(entry.summary || entry.description || entry.model || 'Model usage recorded.', 800),\n\t\t\trecordedAt: eventDate(entry),\n\t\t\tmetadata: {\n\t\t\t\tmodel: entry.model,\n\t\t\t\tinputTokens: entry.inputTokens ?? entry.input_tokens,\n\t\t\t\toutputTokens: entry.outputTokens ?? entry.output_tokens,\n\t\t\t\ttotalTokens: entry.totalTokens ?? entry.total_tokens,\n\t\t\t\testimatedUsd: entry.estimatedUsd ?? entry.cost_estimate\n\t\t\t}\n\t\t});\n\t}\n\treturn buildAIRunCost(entries);\n}\n\nfunction collectCommitEvents(commits: Array<Record<string, any>>, events: AIRunEvent[]): void {\n\tfor (const commit of commits.slice(0, 80)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'git_commit',\n\t\t\tmessage: cleanText(commit.message || commit.subject || commit.title || commit.hash || commit.sha, 1200),\n\t\t\trecordedAt: eventDate(commit),\n\t\t\tmetadata: {\n\t\t\t\tsha: commit.sha || commit.hash,\n\t\t\t\tbranch: commit.branch,\n\t\t\t\tauthor: commit.author\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction statusFromBoolean(value: any, fallback?: string): string | undefined {\n\tif (value === true) {\n\t\treturn 'pass';\n\t}\n\tif (value === false) {\n\t\treturn 'fail';\n\t}\n\treturn fallback;\n}\n\nfunction collectArtifacts(evidence: Record<string, any> | undefined): AIQaArtifact[] {\n\tconst artifacts: AIQaArtifact[] = [];\n\tfor (const entry of asArray<any>(evidence?.artifacts)) {\n\t\tartifacts.push({\n\t\t\ttype: entry.type || 'other',\n\t\t\tpath: cleanText(entry.path || entry.file || entry.artifactPath, 500),\n\t\t\turl: cleanText(entry.url, 500),\n\t\t\ttitle: cleanText(entry.title || entry.name, 300),\n\t\t\tcaption: cleanText(entry.caption || entry.message, 800),\n\t\t\tmetadata: entry.metadata\n\t\t});\n\t}\n\tconst screenshots = asArray<any>(evidence?.screenshots || evidence?.qaScreenshots || evidence?.browserScreenshots);\n\tfor (const screenshot of screenshots.slice(0, 40)) {\n\t\tif (typeof screenshot === 'string') {\n\t\t\tartifacts.push({ type: 'screenshot', path: screenshot });\n\t\t} else {\n\t\t\tartifacts.push({\n\t\t\t\ttype: 'screenshot',\n\t\t\t\tpath: cleanText(screenshot.path || screenshot.file, 500),\n\t\t\t\turl: cleanText(screenshot.url, 500),\n\t\t\t\ttitle: cleanText(screenshot.title || screenshot.route, 300),\n\t\t\t\tcaption: cleanText(screenshot.caption || screenshot.message, 800),\n\t\t\t\tmetadata: screenshot.metadata\n\t\t\t});\n\t\t}\n\t}\n\treturn artifacts;\n}\n\nfunction collectInfraChecks(evidence: Record<string, any> | undefined): AIQaInfraCheck[] {\n\tconst checks: AIQaInfraCheck[] = [];\n\tfor (const entry of asArray<any>(evidence?.infraChecks || evidence?.preflightChecks)) {\n\t\tchecks.push({\n\t\t\tname: cleanText(entry.name || entry.check || entry.key, 160) || 'infra_check',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tmessage: cleanText(entry.message || entry.error || entry.reason, 1000),\n\t\t\tpath: cleanText(entry.path, 500),\n\t\t\tdurationMs: Number(entry.durationMs ?? entry.duration_ms) || undefined,\n\t\t\tmetadata: entry.metadata,\n\t\t\tcheckedAt: eventDate(entry)\n\t\t});\n\t}\n\tif (evidence?.preflightStatus) {\n\t\tchecks.push({\n\t\t\tname: 'qa_preflight',\n\t\t\tstatus: evidence.preflightStatus,\n\t\t\tmessage: cleanText(evidence.preflightMessage || evidence.preflightReason, 1000),\n\t\t\tpath: cleanText(evidence.preflightArtifactPath || evidence.preflightPath, 500)\n\t\t});\n\t}\n\treturn checks;\n}\n\nfunction collectCompileResult(evidence: Record<string, any> | undefined): AIQaCompileResult | undefined {\n\tconst build = evidence?.compile || evidence?.build || evidence?.buildEvidence || evidence?.buildResult;\n\tif (!build && evidence?.compileStatus === undefined && evidence?.buildStatus === undefined) {\n\t\treturn undefined;\n\t}\n\tconst status = build?.status\n\t\t|| evidence?.compileStatus\n\t\t|| evidence?.buildStatus\n\t\t|| statusFromBoolean(build?.passed ?? build?.allExpectedPassed ?? evidence?.buildPassed);\n\treturn {\n\t\tstatus,\n\t\tcommand: cleanText(build?.command || evidence?.buildCommand, 500),\n\t\tartifactPath: cleanText(build?.artifactPath || build?.logPath || evidence?.buildLogPath, 500),\n\t\tmessage: cleanText(build?.message || build?.error || evidence?.buildMessage, 1000),\n\t\tdurationMs: Number(build?.durationMs ?? build?.duration_ms) || undefined,\n\t\tstaleEvidence: build?.staleEvidence === true || evidence?.staleBuildEvidence === true,\n\t\trecordedAt: eventDate(build || evidence || {})\n\t};\n}\n\nfunction collectRouteProbes(evidence: Record<string, any> | undefined): AIQaRouteProbe[] {\n\tconst probes: AIQaRouteProbe[] = [];\n\tfor (const entry of asArray<any>(evidence?.routeProbes || evidence?.routes || evidence?.browserRoutes)) {\n\t\tprobes.push({\n\t\t\troute: cleanText(entry.route || entry.path || entry.url, 500) || '/',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tscreenshot: cleanText(entry.screenshot || entry.screenshotPath, 500),\n\t\t\tcaption: cleanText(entry.caption || entry.message, 1000),\n\t\t\tshellOnly: entry.shellOnly === true,\n\t\t\tauthenticated: entry.authenticated === true,\n\t\t\tconsoleErrors: asArray<string>(entry.consoleErrors),\n\t\t\tnetworkErrors: asArray<string>(entry.networkErrors),\n\t\t\tmessage: cleanText(entry.message || entry.error, 1000),\n\t\t\trecordedAt: eventDate(entry)\n\t\t});\n\t}\n\tconst screenshots = asArray<any>(evidence?.screenshots || evidence?.qaScreenshots || evidence?.browserScreenshots);\n\tfor (const screenshot of screenshots.slice(0, 20)) {\n\t\tif (typeof screenshot === 'string') {\n\t\t\tprobes.push({ route: '/', status: 'pass', screenshot, caption: 'Historical browser screenshot recorded.' });\n\t\t} else if (screenshot.route || screenshot.path || screenshot.url || screenshot.screenshot || screenshot.file) {\n\t\t\tprobes.push({\n\t\t\t\troute: cleanText(screenshot.route || screenshot.url || screenshot.path, 500) || '/',\n\t\t\t\tstatus: screenshot.status || statusFromBoolean(screenshot.passed, 'pass'),\n\t\t\t\tscreenshot: cleanText(screenshot.screenshot || screenshot.screenshotPath || screenshot.file || screenshot.path, 500),\n\t\t\t\tcaption: cleanText(screenshot.caption || screenshot.message, 1000),\n\t\t\t\tshellOnly: screenshot.shellOnly === true,\n\t\t\t\tauthenticated: screenshot.authenticated === true,\n\t\t\t\trecordedAt: eventDate(screenshot)\n\t\t\t});\n\t\t}\n\t}\n\treturn probes;\n}\n\nfunction collectBusinessAssertions(evidence: Record<string, any> | undefined): AIQaBusinessAssertion[] {\n\tconst assertions: AIQaBusinessAssertion[] = [];\n\tfor (const entry of asArray<any>(evidence?.businessAssertions || evidence?.workflowAssertions || evidence?.assertions)) {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(entry.assertion || entry.name || entry.workflow || entry.expected, 1000) || 'business assertion',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tworkflow: cleanText(entry.workflow, 400),\n\t\t\troute: cleanText(entry.route, 500),\n\t\t\taction: cleanText(entry.action, 500),\n\t\t\texpected: cleanText(entry.expected, 1000),\n\t\t\tobserved: cleanText(entry.observed || entry.actual, 1000),\n\t\t\tdataProof: cleanText(entry.dataProof || entry.proof, 1400),\n\t\t\tartifactPaths: asArray<string>(entry.artifactPaths || entry.artifacts),\n\t\t\tmessage: cleanText(entry.message || entry.error || entry.reason, 1000),\n\t\t\trecordedAt: eventDate(entry),\n\t\t\tmetadata: entry.metadata\n\t\t});\n\t}\n\tif (!assertions.length && evidence?.qaRunOutcome === 'business_assertion_passed') {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(evidence.aiRunOutcomeReason || evidence.reason || 'Historical business assertion passed.', 1000),\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: cleanText(evidence.aiRunOutcomeReason || evidence.reason, 1400)\n\t\t});\n\t}\n\tif (!assertions.length && evidence?.qaRunOutcome === 'business_assertion_failed') {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(evidence.aiRunOutcomeReason || evidence.reason || 'Historical business assertion failed.', 1000),\n\t\t\tstatus: 'fail',\n\t\t\tobserved: cleanText(evidence.aiRunOutcomeReason || evidence.reason, 1000)\n\t\t});\n\t}\n\treturn assertions;\n}\n\nfunction buildQaFromEvidence(evidence: Record<string, any> | undefined, now?: Date | string) {\n\treturn buildAIQaRun({\n\t\tinfraChecks: collectInfraChecks(evidence),\n\t\tcompile: collectCompileResult(evidence),\n\t\trouteProbes: collectRouteProbes(evidence),\n\t\tbusinessAssertions: collectBusinessAssertions(evidence),\n\t\tartifacts: collectArtifacts(evidence),\n\t\tnow\n\t});\n}\n\nfunction evidenceObject(...values: any[]): Record<string, any> {\n\tfor (const value of values) {\n\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn {};\n}\n\nexport function buildSupportAIRunFromEvidence(input: SupportAIRunAdapterInput): AIRun {\n\tconst ticket = input.ticket || {};\n\tconst job = input.job || {};\n\tconst evidence = evidenceObject(input.qaEvidence, job.qaEvidence, job.qa_evidence, ticket.qaEvidence, ticket.qa_evidence);\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'ticketId', ticket._id || ticket.id || job.ticketId || job.supportTicketId);\n\taddSourceId(sourceIds, 'ticketNumber', ticket.ticketNumber || ticket.number || job.ticketNumber);\n\taddSourceId(sourceIds, 'jobId', job._id || job.id || job.jobId);\n\taddSourceId(sourceIds, 'buildPlanId', job.buildPlanId || ticket.buildPlanId);\n\n\tfor (const event of asArray<Record<string, any>>(input.taskEvents)) {\n\t\tpushEvent(events, {\n\t\t\ttype: event.type === 'human_intervention' ? 'human_intervention' : 'log',\n\t\t\tcategory: cleanText(event.category || event.phase || event.type, 160),\n\t\t\tmessage: cleanText(event.message || event.summary || event.text || event.title, 1800),\n\t\t\trecordedAt: eventDate(event),\n\t\t\tmetadata: {\n\t\t\t\tstatus: event.status,\n\t\t\t\tphase: event.phase,\n\t\t\t\ttaskId: event.taskId || event._id || event.id\n\t\t\t}\n\t\t});\n\t}\n\tfor (const aiJob of asArray<Record<string, any>>(input.aiJobs)) {\n\t\tpushEvent(events, {\n\t\t\ttype: aiJob.model ? 'model_call' : 'log',\n\t\t\tcategory: cleanText(aiJob.category || aiJob.phase || aiJob.runner, 160),\n\t\t\tmessage: cleanText(aiJob.summary || aiJob.promptSummary || aiJob.status || aiJob.phase, 1800),\n\t\t\trecordedAt: eventDate(aiJob),\n\t\t\tmetadata: {\n\t\t\t\tid: aiJob._id || aiJob.id,\n\t\t\t\tmodel: aiJob.model,\n\t\t\t\tstatus: aiJob.status,\n\t\t\t\tphase: aiJob.phase\n\t\t\t}\n\t\t});\n\t}\n\tcollectCommitEvents(asArray<Record<string, any>>(input.commits), events);\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\n\tconst qa = buildQaFromEvidence(evidence, input.now);\n\tconst diagnosisGate = evidenceObject(\n\t\tjob.supportV5DiagnosisGate,\n\t\tjob.support_v5_diagnosis_gate,\n\t\tjob.diagnosisGate,\n\t\tticket.supportV5DiagnosisGate,\n\t\tticket.diagnosisGate,\n\t\tevidence.diagnosisGate,\n\t\tevidence.supportV5DiagnosisGate\n\t);\n\tconst diagnosisOwnerFiles = asArray<string>(diagnosisGate.owner_files || diagnosisGate.ownerFiles);\n\tconst diagnosisIssueClass = cleanText(diagnosisGate.issue_class || diagnosisGate.issueClass, 120);\n\tif (Object.keys(diagnosisGate).length) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'log',\n\t\t\tcategory: 'diagnosis_gate',\n\t\t\tmessage: cleanText(diagnosisGate.accepted_hypothesis?.statement || diagnosisGate.acceptedHypothesis?.statement || diagnosisGate.summary || 'Support diagnosis gate recorded.', 1800),\n\t\t\tmetadata: {\n\t\t\t\tstatus: diagnosisGate.status,\n\t\t\t\tissueClass: diagnosisIssueClass,\n\t\t\t\townerFiles: diagnosisOwnerFiles\n\t\t\t}\n\t\t});\n\t}\n\treturn buildAIRun({\n\t\tsource: 'support_ticket',\n\t\tsourceIds,\n\t\ttitle: firstText(ticket, ['title', 'subject', 'summary']) || firstText(job, ['title', 'summary']),\n\t\tstatus: firstText(job, ['status', 'state']) || firstText(ticket, ['status', 'state']),\n\t\tphase: firstText(job, ['phase', 'runnerPhase']),\n\t\tstartedAt: dateValue(job, ['startedAt', 'createdAt']) || dateValue(ticket, ['createdAt']),\n\t\tcompletedAt: dateValue(job, ['completedAt', 'finishedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\tscorecardPassed: evidence.scorecardPassed === true || evidence.scorecardStatus === 'pass',\n\t\tdeployStatus: evidence.deployStatus,\n\t\tpublishStatus: evidence.publishStatus,\n\t\tsampleDataStatus: evidence.sampleDataStatus,\n\t\tmanualHandoff: evidence.manualHandoff === true || job.manualHandoff === true,\n\t\tstopped: evidence.stopped === true || job.stopped === true,\n\t\trejected: evidence.rejected === true,\n\t\texplicitAccepted: evidence.explicitAccepted === true || ticket.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${job.status || ''} ${ticket.status || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tversionCount: asArray(input.versions).length,\n\t\t\tbuildPlanCount: asArray(input.buildPlans).length,\n\t\t\tdiagnosis: Object.keys(diagnosisGate).length ? {\n\t\t\t\tstatus: cleanText(diagnosisGate.status, 80),\n\t\t\t\tissueClass: diagnosisIssueClass,\n\t\t\t\townerFiles: diagnosisOwnerFiles,\n\t\t\t\tacceptedHypothesis: cleanText(diagnosisGate.accepted_hypothesis?.statement || diagnosisGate.acceptedHypothesis?.statement, 1000),\n\t\t\t\tproofPlan: diagnosisGate.proof_plan || diagnosisGate.proofPlan\n\t\t\t} : undefined\n\t\t}\n\t});\n}\n\nexport function buildAICoderAIRunFromEvidence(input: AICoderAIRunAdapterInput): AIRun {\n\tconst app = input.app || {};\n\tconst job = input.job || {};\n\tconst evidence = evidenceObject(input.qaEvidence, job.qaEvidence, job.qa_evidence, app.qaEvidence, app.qa_evidence);\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'appId', app._id || app.id || job.appId || job.aicoderAppId);\n\taddSourceId(sourceIds, 'jobId', job._id || job.id || job.jobId);\n\taddSourceId(sourceIds, 'domain', app.domain || app.customDomain || job.domain);\n\n\tfor (const log of asArray<Record<string, any>>(input.logs)) {\n\t\tpushEvent(events, {\n\t\t\ttype: log.type === 'scorecard' ? 'scorecard' : 'log',\n\t\t\tcategory: cleanText(log.category || log.phase || log.level, 160),\n\t\t\tmessage: cleanText(log.message || log.summary || log.text || log.title, 1800),\n\t\t\tartifactPaths: asArray<string>(log.artifactPaths || log.artifacts),\n\t\t\trecordedAt: eventDate(log),\n\t\t\tmetadata: {\n\t\t\t\tstatus: log.status,\n\t\t\t\tlevel: log.level,\n\t\t\t\tscore: log.score\n\t\t\t}\n\t\t});\n\t}\n\tcollectCommitEvents(asArray<Record<string, any>>(input.commits), events);\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\tconst qa = buildQaFromEvidence(evidence, input.now);\n\tconst scorecardPassed = evidence.scorecardPassed === true\n\t\t|| evidence.scorecardStatus === 'pass'\n\t\t|| (Number(evidence.score ?? evidence.qualityScore ?? 0) >= Number(evidence.scoreThreshold ?? job.scoreThreshold ?? 90));\n\n\treturn buildAIRun({\n\t\tsource: 'aicoder_app',\n\t\tsourceIds,\n\t\ttitle: firstText(app, ['name', 'title']) || firstText(job, ['appName', 'title', 'goal']),\n\t\tstatus: firstText(job, ['status', 'state']) || firstText(app, ['status', 'state']),\n\t\tphase: firstText(job, ['phase', 'runnerPhase']),\n\t\tstartedAt: dateValue(job, ['startedAt', 'createdAt']) || dateValue(app, ['createdAt']),\n\t\tcompletedAt: dateValue(job, ['completedAt', 'finishedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\tscorecardPassed,\n\t\tdeployStatus: evidence.deployStatus || statusFromBoolean(evidence.deployReady),\n\t\tpublishStatus: evidence.publishStatus || evidence.pullRequestStatus,\n\t\tsampleDataStatus: evidence.sampleDataStatus || statusFromBoolean(evidence.sampleDataReady ?? evidence.hasSampleData),\n\t\tmanualHandoff: evidence.manualHandoff === true || job.manualHandoff === true,\n\t\tstopped: evidence.stopped === true || job.stopped === true,\n\t\trejected: evidence.rejected === true,\n\t\texplicitAccepted: evidence.explicitAccepted === true || app.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${job.status || ''} ${job.phase || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tdomain: app.domain || app.customDomain || job.domain,\n\t\t\twowScore: evidence.wowScore ?? job.wowScore,\n\t\t\tscore: evidence.score ?? evidence.qualityScore\n\t\t}\n\t});\n}\n\nexport function buildAssistantAIRunFromEvidence(input: AssistantAIRunAdapterInput): AIRun {\n\tconst conversation = input.conversation || {};\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'conversationId', conversation._id || conversation.id || conversation.conversationId);\n\taddSourceId(sourceIds, 'userId', conversation.userId || conversation.ownerId);\n\n\tfor (const message of asArray<Record<string, any>>(input.messages)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'assistant_message',\n\t\t\tcategory: cleanText(message.role || message.authorRole || message.type, 160),\n\t\t\tmessage: cleanText(message.content || message.text || message.message || message.summary, 1800),\n\t\t\trecordedAt: eventDate(message),\n\t\t\tmetadata: {\n\t\t\t\tid: message._id || message.id,\n\t\t\t\trole: message.role,\n\t\t\t\tmodel: message.model\n\t\t\t}\n\t\t});\n\t}\n\tfor (const report of asArray<Record<string, any>>(input.issueReports)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'human_intervention',\n\t\t\tcategory: cleanText(report.category || report.status || 'issue_report', 160),\n\t\t\tmessage: cleanText(report.summary || report.description || report.message || report.title, 1800),\n\t\t\trecordedAt: eventDate(report),\n\t\t\tmetadata: {\n\t\t\t\tid: report._id || report.id,\n\t\t\t\tstatus: report.status,\n\t\t\t\tseverity: report.severity\n\t\t\t}\n\t\t});\n\t}\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\tconst correctnessEvidence = {\n\t\tbusinessAssertions: asArray<Record<string, any>>(input.correctnessChecks).map((check) => ({\n\t\t\tassertion: check.assertion || check.name || check.case || 'assistant correctness check',\n\t\t\tstatus: check.status || statusFromBoolean(check.passed),\n\t\t\texpected: check.expected,\n\t\t\tobserved: check.observed || check.actual,\n\t\t\tdataProof: check.dataProof || check.proof,\n\t\t\tartifactPaths: check.artifactPaths,\n\t\t\tmessage: check.message || check.reason,\n\t\t\tmetadata: check.metadata,\n\t\t\trecordedAt: eventDate(check)\n\t\t}))\n\t};\n\tconst qa = buildQaFromEvidence(correctnessEvidence, input.now);\n\tconst failedReports = asArray<Record<string, any>>(input.issueReports)\n\t\t.filter((report) => /open|new|fail|bug|wrong|incorrect|error/i.test(`${report.status || ''} ${report.category || ''} ${report.summary || ''}`));\n\n\treturn buildAIRun({\n\t\tsource: 'ai_assistant',\n\t\tsourceIds,\n\t\ttitle: firstText(conversation, ['title', 'subject', 'summary']) || 'AI assistant conversation',\n\t\tstatus: firstText(conversation, ['status', 'state']),\n\t\tphase: firstText(conversation, ['phase']),\n\t\tstartedAt: dateValue(conversation, ['startedAt', 'createdAt']),\n\t\tcompletedAt: dateValue(conversation, ['completedAt', 'closedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\trejected: failedReports.length > 0 || conversation.rejected === true,\n\t\tmanualHandoff: conversation.manualHandoff === true,\n\t\tstopped: conversation.stopped === true,\n\t\texplicitAccepted: conversation.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${conversation.status || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tissueReportCount: asArray(input.issueReports).length,\n\t\t\tcorrectnessCheckCount: asArray(input.correctnessChecks).length\n\t\t}\n\t});\n}\n"]}
1
+ {"version":3,"sources":["../../src/util/ai-run-evidence-adapters.ts"],"names":[],"mappings":"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","file":"ai-run-evidence-adapters.js","sourcesContent":["import {\n\tAIRun,\n\tAIRunCost,\n\tAIRunEvent,\n\tAIRunGateResult,\n\tAIQaArtifact,\n\tAIQaBusinessAssertion,\n\tAIQaCompileResult,\n\tAIQaInfraCheck,\n\tAIQaRun,\n\tAIQaRouteProbe,\n\tbuildAIRun,\n\tbuildAIRunCost,\n\tbuildAIQaRun,\n\tnormalizeOpenAIUsageRowsForCosting\n} from './ai-run-evidence';\n\nexport interface SupportAIRunAdapterInput {\n\tticket?: Record<string, any>;\n\tjob?: Record<string, any>;\n\tversions?: Array<Record<string, any>>;\n\tbuildPlans?: Array<Record<string, any>>;\n\taiJobs?: Array<Record<string, any>>;\n\ttaskEvents?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcommits?: Array<Record<string, any>>;\n\tqaEvidence?: Record<string, any>;\n\tnow?: Date | string;\n}\n\nexport interface AICoderAIRunAdapterInput {\n\tapp?: Record<string, any>;\n\tjob?: Record<string, any>;\n\tlogs?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcommits?: Array<Record<string, any>>;\n\tqaEvidence?: Record<string, any>;\n\tnow?: Date | string;\n}\n\nexport interface AssistantAIRunAdapterInput {\n\tconversation?: Record<string, any>;\n\tmessages?: Array<Record<string, any>>;\n\tissueReports?: Array<Record<string, any>>;\n\tusageLedger?: Array<Record<string, any>>;\n\tcorrectnessChecks?: Array<Record<string, any>>;\n\tnow?: 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 idText(value: any, max = 160): string | undefined {\n\tconst normalized = cleanText(value, max);\n\treturn normalized || undefined;\n}\n\nfunction asArray<T = any>(value: any): T[] {\n\treturn Array.isArray(value) ? value : [];\n}\n\nfunction firstText(source: Record<string, any> | undefined, fields: string[], max = 1000): string | undefined {\n\tfor (const field of fields) {\n\t\tconst value = source?.[field];\n\t\tconst normalized = idText(value, max);\n\t\tif (normalized) {\n\t\t\treturn normalized;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction dateValue(source: Record<string, any> | undefined, fields: string[]): Date | string | undefined {\n\tfor (const field of fields) {\n\t\tconst value = source?.[field];\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction addSourceId(sourceIds: Record<string, string>, key: string, value: any): void {\n\tconst normalized = idText(value);\n\tif (normalized) {\n\t\tsourceIds[key] = normalized;\n\t}\n}\n\nfunction pushEvent(events: AIRunEvent[], event: AIRunEvent): void {\n\tconst message = cleanText(event.message, 1800);\n\tconst metadata = event.metadata || {};\n\tif (!message && !Object.keys(metadata).length && !event.artifactPaths?.length) {\n\t\treturn;\n\t}\n\tevents.push({\n\t\t...event,\n\t\tmessage,\n\t\tartifactPaths: asArray<string>(event.artifactPaths).filter(Boolean).slice(0, 20)\n\t});\n}\n\nfunction eventDate(record: Record<string, any>): Date | string | undefined {\n\treturn dateValue(record, ['recordedAt', 'createdAt', 'updatedAt', 'timestamp', 'time', 'date']);\n}\n\nfunction collectUsageEvents(entries: Array<Record<string, any>>, events: AIRunEvent[]): AIRunCost | undefined {\n\tif (!entries.length) {\n\t\treturn undefined;\n\t}\n\tconst normalizedEntries = normalizeOpenAIUsageRowsForCosting(entries);\n\tfor (const entry of normalizedEntries) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'usage',\n\t\t\tcategory: cleanText(entry.category || entry.kind || entry.phase, 160) || 'usage',\n\t\t\tmessage: cleanText(entry.summary || entry.description || entry.model || 'Model usage recorded.', 800),\n\t\t\trecordedAt: eventDate(entry),\n\t\t\tmetadata: {\n\t\t\t\tmodel: entry.model,\n\t\t\t\tinputTokens: entry.inputTokens ?? entry.input_tokens,\n\t\t\t\toutputTokens: entry.outputTokens ?? entry.output_tokens,\n\t\t\t\ttotalTokens: entry.totalTokens ?? entry.total_tokens,\n\t\t\t\testimatedUsd: entry.estimatedUsd ?? entry.cost_estimate\n\t\t\t}\n\t\t});\n\t}\n\treturn buildAIRunCost(entries);\n}\n\nfunction collectCommitEvents(commits: Array<Record<string, any>>, events: AIRunEvent[]): void {\n\tfor (const commit of commits.slice(0, 80)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'git_commit',\n\t\t\tmessage: cleanText(commit.message || commit.subject || commit.title || commit.hash || commit.sha, 1200),\n\t\t\trecordedAt: eventDate(commit),\n\t\t\tmetadata: {\n\t\t\t\tsha: commit.sha || commit.hash,\n\t\t\t\tbranch: commit.branch,\n\t\t\t\tauthor: commit.author\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction statusFromBoolean(value: any, fallback?: string): string | undefined {\n\tif (value === true) {\n\t\treturn 'pass';\n\t}\n\tif (value === false) {\n\t\treturn 'fail';\n\t}\n\treturn fallback;\n}\n\nfunction collectArtifacts(evidence: Record<string, any> | undefined): AIQaArtifact[] {\n\tconst artifacts: AIQaArtifact[] = [];\n\tfor (const entry of asArray<any>(evidence?.artifacts)) {\n\t\tartifacts.push({\n\t\t\ttype: entry.type || 'other',\n\t\t\tpath: cleanText(entry.path || entry.file || entry.artifactPath, 500),\n\t\t\turl: cleanText(entry.url, 500),\n\t\t\ttitle: cleanText(entry.title || entry.name, 300),\n\t\t\tcaption: cleanText(entry.caption || entry.message, 800),\n\t\t\tmetadata: entry.metadata\n\t\t});\n\t}\n\tconst screenshots = asArray<any>(evidence?.screenshots || evidence?.qaScreenshots || evidence?.browserScreenshots);\n\tfor (const screenshot of screenshots.slice(0, 40)) {\n\t\tif (typeof screenshot === 'string') {\n\t\t\tartifacts.push({ type: 'screenshot', path: screenshot });\n\t\t} else {\n\t\t\tartifacts.push({\n\t\t\t\ttype: 'screenshot',\n\t\t\t\tpath: cleanText(screenshot.path || screenshot.file, 500),\n\t\t\t\turl: cleanText(screenshot.url, 500),\n\t\t\t\ttitle: cleanText(screenshot.title || screenshot.route, 300),\n\t\t\t\tcaption: cleanText(screenshot.caption || screenshot.message, 800),\n\t\t\t\tmetadata: screenshot.metadata\n\t\t\t});\n\t\t}\n\t}\n\treturn artifacts;\n}\n\nfunction collectInfraChecks(evidence: Record<string, any> | undefined): AIQaInfraCheck[] {\n\tconst checks: AIQaInfraCheck[] = [];\n\tfor (const entry of asArray<any>(evidence?.infraChecks || evidence?.preflightChecks)) {\n\t\tchecks.push({\n\t\t\tname: cleanText(entry.name || entry.check || entry.key, 160) || 'infra_check',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tmessage: cleanText(entry.message || entry.error || entry.reason, 1000),\n\t\t\tpath: cleanText(entry.path, 500),\n\t\t\tdurationMs: Number(entry.durationMs ?? entry.duration_ms) || undefined,\n\t\t\tmetadata: entry.metadata,\n\t\t\tcheckedAt: eventDate(entry)\n\t\t});\n\t}\n\tif (evidence?.preflightStatus) {\n\t\tchecks.push({\n\t\t\tname: 'qa_preflight',\n\t\t\tstatus: evidence.preflightStatus,\n\t\t\tmessage: cleanText(evidence.preflightMessage || evidence.preflightReason, 1000),\n\t\t\tpath: cleanText(evidence.preflightArtifactPath || evidence.preflightPath, 500)\n\t\t});\n\t}\n\treturn checks;\n}\n\nfunction collectCompileResult(evidence: Record<string, any> | undefined): AIQaCompileResult | undefined {\n\tconst build = evidence?.compile || evidence?.build || evidence?.buildEvidence || evidence?.buildResult;\n\tif (!build && evidence?.compileStatus === undefined && evidence?.buildStatus === undefined) {\n\t\treturn undefined;\n\t}\n\tconst status = build?.status\n\t\t|| evidence?.compileStatus\n\t\t|| evidence?.buildStatus\n\t\t|| statusFromBoolean(build?.passed ?? build?.allExpectedPassed ?? evidence?.buildPassed);\n\treturn {\n\t\tstatus,\n\t\tcommand: cleanText(build?.command || evidence?.buildCommand, 500),\n\t\tartifactPath: cleanText(build?.artifactPath || build?.logPath || evidence?.buildLogPath, 500),\n\t\tmessage: cleanText(build?.message || build?.error || evidence?.buildMessage, 1000),\n\t\tdurationMs: Number(build?.durationMs ?? build?.duration_ms) || undefined,\n\t\tstaleEvidence: build?.staleEvidence === true || evidence?.staleBuildEvidence === true,\n\t\trecordedAt: eventDate(build || evidence || {})\n\t};\n}\n\nfunction collectRouteProbes(evidence: Record<string, any> | undefined): AIQaRouteProbe[] {\n\tconst probes: AIQaRouteProbe[] = [];\n\tfor (const entry of asArray<any>(evidence?.routeProbes || evidence?.routes || evidence?.browserRoutes)) {\n\t\tprobes.push({\n\t\t\troute: cleanText(entry.route || entry.path || entry.url, 500) || '/',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tscreenshot: cleanText(entry.screenshot || entry.screenshotPath, 500),\n\t\t\tcaption: cleanText(entry.caption || entry.message, 1000),\n\t\t\tshellOnly: entry.shellOnly === true,\n\t\t\tauthenticated: entry.authenticated === true,\n\t\t\tconsoleErrors: asArray<string>(entry.consoleErrors),\n\t\t\tnetworkErrors: asArray<string>(entry.networkErrors),\n\t\t\tmessage: cleanText(entry.message || entry.error, 1000),\n\t\t\trecordedAt: eventDate(entry)\n\t\t});\n\t}\n\tconst screenshots = asArray<any>(evidence?.screenshots || evidence?.qaScreenshots || evidence?.browserScreenshots);\n\tfor (const screenshot of screenshots.slice(0, 20)) {\n\t\tif (typeof screenshot === 'string') {\n\t\t\tprobes.push({ route: '/', status: 'pass', screenshot, caption: 'Historical browser screenshot recorded.' });\n\t\t} else if (screenshot.route || screenshot.path || screenshot.url || screenshot.screenshot || screenshot.file) {\n\t\t\tprobes.push({\n\t\t\t\troute: cleanText(screenshot.route || screenshot.url || screenshot.path, 500) || '/',\n\t\t\t\tstatus: screenshot.status || statusFromBoolean(screenshot.passed, 'pass'),\n\t\t\t\tscreenshot: cleanText(screenshot.screenshot || screenshot.screenshotPath || screenshot.file || screenshot.path, 500),\n\t\t\t\tcaption: cleanText(screenshot.caption || screenshot.message, 1000),\n\t\t\t\tshellOnly: screenshot.shellOnly === true,\n\t\t\t\tauthenticated: screenshot.authenticated === true,\n\t\t\t\trecordedAt: eventDate(screenshot)\n\t\t\t});\n\t\t}\n\t}\n\treturn probes;\n}\n\nfunction collectBusinessAssertions(evidence: Record<string, any> | undefined): AIQaBusinessAssertion[] {\n\tconst assertions: AIQaBusinessAssertion[] = [];\n\tfor (const entry of asArray<any>(evidence?.businessAssertions || evidence?.workflowAssertions || evidence?.assertions)) {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(entry.assertion || entry.name || entry.workflow || entry.expected, 1000) || 'business assertion',\n\t\t\tstatus: entry.status || statusFromBoolean(entry.passed),\n\t\t\tworkflow: cleanText(entry.workflow, 400),\n\t\t\troute: cleanText(entry.route, 500),\n\t\t\taction: cleanText(entry.action, 500),\n\t\t\texpected: cleanText(entry.expected, 1000),\n\t\t\tobserved: cleanText(entry.observed || entry.actual, 1000),\n\t\t\tdataProof: cleanText(entry.dataProof || entry.proof, 1400),\n\t\t\tartifactPaths: asArray<string>(entry.artifactPaths || entry.artifacts),\n\t\t\tmessage: cleanText(entry.message || entry.error || entry.reason, 1000),\n\t\t\trecordedAt: eventDate(entry),\n\t\t\tmetadata: entry.metadata\n\t\t});\n\t}\n\tif (!assertions.length && evidence?.qaRunOutcome === 'business_assertion_passed') {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(evidence.aiRunOutcomeReason || evidence.reason || 'Historical business assertion passed.', 1000),\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: cleanText(evidence.aiRunOutcomeReason || evidence.reason, 1400)\n\t\t});\n\t}\n\tif (!assertions.length && evidence?.qaRunOutcome === 'business_assertion_failed') {\n\t\tassertions.push({\n\t\t\tassertion: cleanText(evidence.aiRunOutcomeReason || evidence.reason || 'Historical business assertion failed.', 1000),\n\t\t\tstatus: 'fail',\n\t\t\tobserved: cleanText(evidence.aiRunOutcomeReason || evidence.reason, 1000)\n\t\t});\n\t}\n\treturn assertions;\n}\n\nfunction buildQaFromEvidence(evidence: Record<string, any> | undefined, now?: Date | string): AIQaRun {\n\treturn buildAIQaRun({\n\t\tinfraChecks: collectInfraChecks(evidence),\n\t\tcompile: collectCompileResult(evidence),\n\t\trouteProbes: collectRouteProbes(evidence),\n\t\tbusinessAssertions: collectBusinessAssertions(evidence),\n\t\tartifacts: collectArtifacts(evidence),\n\t\tnow\n\t});\n}\n\nfunction isoNow(value?: Date | string): string {\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tif (value) {\n\t\tconst parsed = new Date(value);\n\t\tif (!Number.isNaN(parsed.getTime())) {\n\t\t\treturn parsed.toISOString();\n\t\t}\n\t}\n\treturn new Date().toISOString();\n}\n\nfunction normalizeMatchText(value: any): string {\n\treturn cleanText(value, 3000)\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]+/g, ' ')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim();\n}\n\nfunction importantTokens(value: any): Set<string> {\n\tconst stopWords = new Set([\n\t\t'the', 'and', 'that', 'with', 'from', 'after', 'before', 'when', 'then', 'this', 'must',\n\t\t'should', 'will', 'only', 'into', 'have', 'has', 'are', 'was', 'were', 'been'\n\t]);\n\treturn new Set(normalizeMatchText(value).split(' ')\n\t\t.filter((token) => token.length >= 4 && !stopWords.has(token)));\n}\n\nfunction businessAssertionPassed(assertion: AIQaBusinessAssertion): boolean {\n\treturn /^(pass|passed|success|ok|done)$/i.test(cleanText(assertion.status, 40));\n}\n\nfunction supportAssertionMatchesDiagnosisProof(assertion: AIQaBusinessAssertion, proofPlan: Record<string, any>): boolean {\n\tconst metadata = assertion.metadata || {};\n\tif (metadata.diagnosisProofPlanMatched === true || metadata.proofPlanMatched === true || metadata.supportDiagnosisProof === true) {\n\t\treturn true;\n\t}\n\tconst requiredBusinessAssertion = proofPlan.business_assertion || proofPlan.businessAssertion;\n\tconst proofParts = [\n\t\trequiredBusinessAssertion,\n\t\tproofPlan.after,\n\t\tproofPlan.data_assertion || proofPlan.dataAssertion,\n\t\tproofPlan.artifact_expectation || proofPlan.artifactExpectation\n\t].map((part) => normalizeMatchText(part)).filter((part) => part.length >= 16);\n\tif (!proofParts.length) {\n\t\treturn true;\n\t}\n\tconst assertionText = normalizeMatchText([\n\t\tassertion.assertion,\n\t\tassertion.workflow,\n\t\tassertion.action,\n\t\tassertion.expected,\n\t\tassertion.observed,\n\t\tassertion.dataProof,\n\t\tassertion.message\n\t].filter(Boolean).join(' '));\n\tif (proofParts.some((part) => assertionText.includes(part))) {\n\t\treturn true;\n\t}\n\tconst proofTokens = importantTokens([\n\t\trequiredBusinessAssertion,\n\t\tproofPlan.after,\n\t\tproofPlan.data_assertion || proofPlan.dataAssertion\n\t].filter(Boolean).join(' '));\n\tconst assertionTokens = importantTokens(assertionText);\n\tif (!proofTokens.size) {\n\t\treturn true;\n\t}\n\tlet overlap = 0;\n\tfor (const token of proofTokens) {\n\t\tif (assertionTokens.has(token)) {\n\t\t\toverlap += 1;\n\t\t}\n\t}\n\treturn overlap >= Math.min(4, Math.max(3, Math.ceil(proofTokens.size * 0.45)));\n}\n\nfunction supportDiagnosisProofGateResult(diagnosisGate: Record<string, any>, now?: Date | string): AIRunGateResult {\n\tconst proofPlan = diagnosisGate.proof_plan || diagnosisGate.proofPlan || {};\n\treturn {\n\t\tkey: 'support_diagnosis_business_proof',\n\t\tlabel: 'Diagnosis proof plan',\n\t\tstatus: 'blocked',\n\t\treason: 'Support business assertion did not map to the diagnosis proof_plan. Route proof or generic workflow proof cannot accept the ticket.',\n\t\tevidenceRefs: [],\n\t\trecordedAt: isoNow(now),\n\t\tmetadata: {\n\t\t\tissueClass: cleanText(diagnosisGate.issue_class || diagnosisGate.issueClass, 120),\n\t\t\trequiredBusinessAssertion: cleanText(proofPlan.business_assertion || proofPlan.businessAssertion, 1000),\n\t\t\trequiredAfter: cleanText(proofPlan.after, 1000),\n\t\t\trequiredDataAssertion: cleanText(proofPlan.data_assertion || proofPlan.dataAssertion, 1000)\n\t\t}\n\t};\n}\n\nfunction applySupportDiagnosisProofGate(qa: AIQaRun, diagnosisGate: Record<string, any>, now?: Date | string): AIQaRun {\n\tconst proofPlan = diagnosisGate.proof_plan || diagnosisGate.proofPlan || {};\n\tconst requiredBusinessAssertion = cleanText(proofPlan.business_assertion || proofPlan.businessAssertion, 1000);\n\tconst requiredAfter = cleanText(proofPlan.after, 1000);\n\tif (!Object.keys(proofPlan).length || (!requiredBusinessAssertion && !requiredAfter)) {\n\t\treturn qa;\n\t}\n\tconst passedAssertions = qa.businessAssertions.filter(businessAssertionPassed);\n\tif (!passedAssertions.length) {\n\t\treturn qa;\n\t}\n\tif (passedAssertions.some((assertion) => supportAssertionMatchesDiagnosisProof(assertion, proofPlan))) {\n\t\treturn qa;\n\t}\n\tconst gate = supportDiagnosisProofGateResult(diagnosisGate, now);\n\treturn {\n\t\t...qa,\n\t\toutcome: qa.routeProbes.some((probe) => /^(pass|passed|success|ok|done)$/i.test(cleanText(probe.status, 40)))\n\t\t\t? 'route_only_pass'\n\t\t\t: 'incomplete',\n\t\tgateResults: [\n\t\t\t...qa.gateResults.filter((existing) => !(existing.key === 'qa_business_assertion' && existing.status === 'pass')),\n\t\t\tgate\n\t\t]\n\t};\n}\n\nfunction evidenceObject(...values: any[]): Record<string, any> {\n\tfor (const value of values) {\n\t\tif (value && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn {};\n}\n\nexport function buildSupportAIRunFromEvidence(input: SupportAIRunAdapterInput): AIRun {\n\tconst ticket = input.ticket || {};\n\tconst job = input.job || {};\n\tconst evidence = evidenceObject(input.qaEvidence, job.qaEvidence, job.qa_evidence, ticket.qaEvidence, ticket.qa_evidence);\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'ticketId', ticket._id || ticket.id || job.ticketId || job.supportTicketId);\n\taddSourceId(sourceIds, 'ticketNumber', ticket.ticketNumber || ticket.number || job.ticketNumber);\n\taddSourceId(sourceIds, 'jobId', job._id || job.id || job.jobId);\n\taddSourceId(sourceIds, 'buildPlanId', job.buildPlanId || ticket.buildPlanId);\n\n\tfor (const event of asArray<Record<string, any>>(input.taskEvents)) {\n\t\tpushEvent(events, {\n\t\t\ttype: event.type === 'human_intervention' ? 'human_intervention' : 'log',\n\t\t\tcategory: cleanText(event.category || event.phase || event.type, 160),\n\t\t\tmessage: cleanText(event.message || event.summary || event.text || event.title, 1800),\n\t\t\trecordedAt: eventDate(event),\n\t\t\tmetadata: {\n\t\t\t\tstatus: event.status,\n\t\t\t\tphase: event.phase,\n\t\t\t\ttaskId: event.taskId || event._id || event.id\n\t\t\t}\n\t\t});\n\t}\n\tfor (const aiJob of asArray<Record<string, any>>(input.aiJobs)) {\n\t\tpushEvent(events, {\n\t\t\ttype: aiJob.model ? 'model_call' : 'log',\n\t\t\tcategory: cleanText(aiJob.category || aiJob.phase || aiJob.runner, 160),\n\t\t\tmessage: cleanText(aiJob.summary || aiJob.promptSummary || aiJob.status || aiJob.phase, 1800),\n\t\t\trecordedAt: eventDate(aiJob),\n\t\t\tmetadata: {\n\t\t\t\tid: aiJob._id || aiJob.id,\n\t\t\t\tmodel: aiJob.model,\n\t\t\t\tstatus: aiJob.status,\n\t\t\t\tphase: aiJob.phase\n\t\t\t}\n\t\t});\n\t}\n\tcollectCommitEvents(asArray<Record<string, any>>(input.commits), events);\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\n\tconst diagnosisGate = evidenceObject(\n\t\tjob.supportV5DiagnosisGate,\n\t\tjob.support_v5_diagnosis_gate,\n\t\tjob.diagnosisGate,\n\t\tticket.supportV5DiagnosisGate,\n\t\tticket.diagnosisGate,\n\t\tevidence.diagnosisGate,\n\t\tevidence.supportV5DiagnosisGate\n\t);\n\tconst qa = applySupportDiagnosisProofGate(buildQaFromEvidence(evidence, input.now), diagnosisGate, input.now);\n\tconst diagnosisOwnerFiles = asArray<string>(diagnosisGate.owner_files || diagnosisGate.ownerFiles);\n\tconst diagnosisIssueClass = cleanText(diagnosisGate.issue_class || diagnosisGate.issueClass, 120);\n\tif (Object.keys(diagnosisGate).length) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'log',\n\t\t\tcategory: 'diagnosis_gate',\n\t\t\tmessage: cleanText(diagnosisGate.accepted_hypothesis?.statement || diagnosisGate.acceptedHypothesis?.statement || diagnosisGate.summary || 'Support diagnosis gate recorded.', 1800),\n\t\t\tmetadata: {\n\t\t\t\tstatus: diagnosisGate.status,\n\t\t\t\tissueClass: diagnosisIssueClass,\n\t\t\t\townerFiles: diagnosisOwnerFiles\n\t\t\t}\n\t\t});\n\t}\n\treturn buildAIRun({\n\t\tsource: 'support_ticket',\n\t\tsourceIds,\n\t\ttitle: firstText(ticket, ['title', 'subject', 'summary']) || firstText(job, ['title', 'summary']),\n\t\tstatus: firstText(job, ['status', 'state']) || firstText(ticket, ['status', 'state']),\n\t\tphase: firstText(job, ['phase', 'runnerPhase']),\n\t\tstartedAt: dateValue(job, ['startedAt', 'createdAt']) || dateValue(ticket, ['createdAt']),\n\t\tcompletedAt: dateValue(job, ['completedAt', 'finishedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\tscorecardPassed: evidence.scorecardPassed === true || evidence.scorecardStatus === 'pass',\n\t\tdeployStatus: evidence.deployStatus,\n\t\tpublishStatus: evidence.publishStatus,\n\t\tsampleDataStatus: evidence.sampleDataStatus,\n\t\tmanualHandoff: evidence.manualHandoff === true || job.manualHandoff === true,\n\t\tstopped: evidence.stopped === true || job.stopped === true,\n\t\trejected: evidence.rejected === true,\n\t\texplicitAccepted: evidence.explicitAccepted === true || ticket.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${job.status || ''} ${ticket.status || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tversionCount: asArray(input.versions).length,\n\t\t\tbuildPlanCount: asArray(input.buildPlans).length,\n\t\t\tdiagnosis: Object.keys(diagnosisGate).length ? {\n\t\t\t\tstatus: cleanText(diagnosisGate.status, 80),\n\t\t\t\tissueClass: diagnosisIssueClass,\n\t\t\t\townerFiles: diagnosisOwnerFiles,\n\t\t\t\tacceptedHypothesis: cleanText(diagnosisGate.accepted_hypothesis?.statement || diagnosisGate.acceptedHypothesis?.statement, 1000),\n\t\t\t\tproofPlan: diagnosisGate.proof_plan || diagnosisGate.proofPlan\n\t\t\t} : undefined\n\t\t}\n\t});\n}\n\nexport function buildAICoderAIRunFromEvidence(input: AICoderAIRunAdapterInput): AIRun {\n\tconst app = input.app || {};\n\tconst job = input.job || {};\n\tconst evidence = evidenceObject(input.qaEvidence, job.qaEvidence, job.qa_evidence, app.qaEvidence, app.qa_evidence);\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'appId', app._id || app.id || job.appId || job.aicoderAppId);\n\taddSourceId(sourceIds, 'jobId', job._id || job.id || job.jobId);\n\taddSourceId(sourceIds, 'domain', app.domain || app.customDomain || job.domain);\n\n\tfor (const log of asArray<Record<string, any>>(input.logs)) {\n\t\tpushEvent(events, {\n\t\t\ttype: log.type === 'scorecard' ? 'scorecard' : 'log',\n\t\t\tcategory: cleanText(log.category || log.phase || log.level, 160),\n\t\t\tmessage: cleanText(log.message || log.summary || log.text || log.title, 1800),\n\t\t\tartifactPaths: asArray<string>(log.artifactPaths || log.artifacts),\n\t\t\trecordedAt: eventDate(log),\n\t\t\tmetadata: {\n\t\t\t\tstatus: log.status,\n\t\t\t\tlevel: log.level,\n\t\t\t\tscore: log.score\n\t\t\t}\n\t\t});\n\t}\n\tcollectCommitEvents(asArray<Record<string, any>>(input.commits), events);\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\tconst qa = buildQaFromEvidence(evidence, input.now);\n\tconst scorecardPassed = evidence.scorecardPassed === true\n\t\t|| evidence.scorecardStatus === 'pass'\n\t\t|| (Number(evidence.score ?? evidence.qualityScore ?? 0) >= Number(evidence.scoreThreshold ?? job.scoreThreshold ?? 90));\n\n\treturn buildAIRun({\n\t\tsource: 'aicoder_app',\n\t\tsourceIds,\n\t\ttitle: firstText(app, ['name', 'title']) || firstText(job, ['appName', 'title', 'goal']),\n\t\tstatus: firstText(job, ['status', 'state']) || firstText(app, ['status', 'state']),\n\t\tphase: firstText(job, ['phase', 'runnerPhase']),\n\t\tstartedAt: dateValue(job, ['startedAt', 'createdAt']) || dateValue(app, ['createdAt']),\n\t\tcompletedAt: dateValue(job, ['completedAt', 'finishedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\tscorecardPassed,\n\t\tdeployStatus: evidence.deployStatus || statusFromBoolean(evidence.deployReady),\n\t\tpublishStatus: evidence.publishStatus || evidence.pullRequestStatus,\n\t\tsampleDataStatus: evidence.sampleDataStatus || statusFromBoolean(evidence.sampleDataReady ?? evidence.hasSampleData),\n\t\tmanualHandoff: evidence.manualHandoff === true || job.manualHandoff === true,\n\t\tstopped: evidence.stopped === true || job.stopped === true,\n\t\trejected: evidence.rejected === true,\n\t\texplicitAccepted: evidence.explicitAccepted === true || app.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${job.status || ''} ${job.phase || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tdomain: app.domain || app.customDomain || job.domain,\n\t\t\twowScore: evidence.wowScore ?? job.wowScore,\n\t\t\tscore: evidence.score ?? evidence.qualityScore\n\t\t}\n\t});\n}\n\nexport function buildAssistantAIRunFromEvidence(input: AssistantAIRunAdapterInput): AIRun {\n\tconst conversation = input.conversation || {};\n\tconst events: AIRunEvent[] = [];\n\tconst sourceIds: Record<string, string> = {};\n\taddSourceId(sourceIds, 'conversationId', conversation._id || conversation.id || conversation.conversationId);\n\taddSourceId(sourceIds, 'userId', conversation.userId || conversation.ownerId);\n\n\tfor (const message of asArray<Record<string, any>>(input.messages)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'assistant_message',\n\t\t\tcategory: cleanText(message.role || message.authorRole || message.type, 160),\n\t\t\tmessage: cleanText(message.content || message.text || message.message || message.summary, 1800),\n\t\t\trecordedAt: eventDate(message),\n\t\t\tmetadata: {\n\t\t\t\tid: message._id || message.id,\n\t\t\t\trole: message.role,\n\t\t\t\tmodel: message.model\n\t\t\t}\n\t\t});\n\t}\n\tfor (const report of asArray<Record<string, any>>(input.issueReports)) {\n\t\tpushEvent(events, {\n\t\t\ttype: 'human_intervention',\n\t\t\tcategory: cleanText(report.category || report.status || 'issue_report', 160),\n\t\t\tmessage: cleanText(report.summary || report.description || report.message || report.title, 1800),\n\t\t\trecordedAt: eventDate(report),\n\t\t\tmetadata: {\n\t\t\t\tid: report._id || report.id,\n\t\t\t\tstatus: report.status,\n\t\t\t\tseverity: report.severity\n\t\t\t}\n\t\t});\n\t}\n\tconst cost = collectUsageEvents(asArray<Record<string, any>>(input.usageLedger), events);\n\tconst correctnessEvidence = {\n\t\tbusinessAssertions: asArray<Record<string, any>>(input.correctnessChecks).map((check) => ({\n\t\t\tassertion: check.assertion || check.name || check.case || 'assistant correctness check',\n\t\t\tstatus: check.status || statusFromBoolean(check.passed),\n\t\t\texpected: check.expected,\n\t\t\tobserved: check.observed || check.actual,\n\t\t\tdataProof: check.dataProof || check.proof,\n\t\t\tartifactPaths: check.artifactPaths,\n\t\t\tmessage: check.message || check.reason,\n\t\t\tmetadata: check.metadata,\n\t\t\trecordedAt: eventDate(check)\n\t\t}))\n\t};\n\tconst qa = buildQaFromEvidence(correctnessEvidence, input.now);\n\tconst failedReports = asArray<Record<string, any>>(input.issueReports)\n\t\t.filter((report) => /open|new|fail|bug|wrong|incorrect|error/i.test(`${report.status || ''} ${report.category || ''} ${report.summary || ''}`));\n\n\treturn buildAIRun({\n\t\tsource: 'ai_assistant',\n\t\tsourceIds,\n\t\ttitle: firstText(conversation, ['title', 'subject', 'summary']) || 'AI assistant conversation',\n\t\tstatus: firstText(conversation, ['status', 'state']),\n\t\tphase: firstText(conversation, ['phase']),\n\t\tstartedAt: dateValue(conversation, ['startedAt', 'createdAt']),\n\t\tcompletedAt: dateValue(conversation, ['completedAt', 'closedAt', 'updatedAt']),\n\t\tevents,\n\t\tqa,\n\t\tcost,\n\t\trejected: failedReports.length > 0 || conversation.rejected === true,\n\t\tmanualHandoff: conversation.manualHandoff === true,\n\t\tstopped: conversation.stopped === true,\n\t\texplicitAccepted: conversation.accepted === true,\n\t\tterminal: /complete|closed|resolved|done|failed|rejected/i.test(`${conversation.status || ''}`),\n\t\tnow: input.now,\n\t\tmetadata: {\n\t\t\tissueReportCount: asArray(input.issueReports).length,\n\t\t\tcorrectnessCheckCount: asArray(input.correctnessChecks).length\n\t\t}\n\t});\n}\n"]}