@uns-kit/assistant-workflow 2.0.72
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/LICENSE +21 -0
- package/README.md +37 -0
- package/dist/clarification-policy.d.ts +64 -0
- package/dist/clarification-policy.d.ts.map +1 -0
- package/dist/clarification-policy.js +174 -0
- package/dist/clarification-policy.js.map +1 -0
- package/dist/decision.d.ts +37 -0
- package/dist/decision.d.ts.map +1 -0
- package/dist/decision.js +100 -0
- package/dist/decision.js.map +1 -0
- package/dist/definition-catalog-replay.d.ts +25 -0
- package/dist/definition-catalog-replay.d.ts.map +1 -0
- package/dist/definition-catalog-replay.js +54 -0
- package/dist/definition-catalog-replay.js.map +1 -0
- package/dist/definition-catalog.d.ts +45 -0
- package/dist/definition-catalog.d.ts.map +1 -0
- package/dist/definition-catalog.js +97 -0
- package/dist/definition-catalog.js.map +1 -0
- package/dist/definition-diagnostics.d.ts +17 -0
- package/dist/definition-diagnostics.d.ts.map +1 -0
- package/dist/definition-diagnostics.js +353 -0
- package/dist/definition-diagnostics.js.map +1 -0
- package/dist/definition-diff.d.ts +51 -0
- package/dist/definition-diff.d.ts.map +1 -0
- package/dist/definition-diff.js +172 -0
- package/dist/definition-diff.js.map +1 -0
- package/dist/definition-json.d.ts +53 -0
- package/dist/definition-json.d.ts.map +1 -0
- package/dist/definition-json.js +186 -0
- package/dist/definition-json.js.map +1 -0
- package/dist/definition-manifest.d.ts +41 -0
- package/dist/definition-manifest.d.ts.map +1 -0
- package/dist/definition-manifest.js +119 -0
- package/dist/definition-manifest.js.map +1 -0
- package/dist/definition-package-execution-json.d.ts +64 -0
- package/dist/definition-package-execution-json.d.ts.map +1 -0
- package/dist/definition-package-execution-json.js +245 -0
- package/dist/definition-package-execution-json.js.map +1 -0
- package/dist/definition-package-execution-replay.d.ts +14 -0
- package/dist/definition-package-execution-replay.d.ts.map +1 -0
- package/dist/definition-package-execution-replay.js +47 -0
- package/dist/definition-package-execution-replay.js.map +1 -0
- package/dist/definition-package-executor.d.ts +52 -0
- package/dist/definition-package-executor.d.ts.map +1 -0
- package/dist/definition-package-executor.js +70 -0
- package/dist/definition-package-executor.js.map +1 -0
- package/dist/definition-package-loader.d.ts +36 -0
- package/dist/definition-package-loader.d.ts.map +1 -0
- package/dist/definition-package-loader.js +56 -0
- package/dist/definition-package-loader.js.map +1 -0
- package/dist/definition-package-replay.d.ts +28 -0
- package/dist/definition-package-replay.d.ts.map +1 -0
- package/dist/definition-package-replay.js +74 -0
- package/dist/definition-package-replay.js.map +1 -0
- package/dist/definition-package-resolver.d.ts +31 -0
- package/dist/definition-package-resolver.d.ts.map +1 -0
- package/dist/definition-package-resolver.js +60 -0
- package/dist/definition-package-resolver.js.map +1 -0
- package/dist/definition-package-review.d.ts +29 -0
- package/dist/definition-package-review.d.ts.map +1 -0
- package/dist/definition-package-review.js +74 -0
- package/dist/definition-package-review.js.map +1 -0
- package/dist/definition-package-run-report.d.ts +25 -0
- package/dist/definition-package-run-report.d.ts.map +1 -0
- package/dist/definition-package-run-report.js +37 -0
- package/dist/definition-package-run-report.js.map +1 -0
- package/dist/definition-package-run.d.ts +20 -0
- package/dist/definition-package-run.d.ts.map +1 -0
- package/dist/definition-package-run.js +41 -0
- package/dist/definition-package-run.js.map +1 -0
- package/dist/definition-package-selection.d.ts +29 -0
- package/dist/definition-package-selection.d.ts.map +1 -0
- package/dist/definition-package-selection.js +68 -0
- package/dist/definition-package-selection.js.map +1 -0
- package/dist/definition-package-smoke.d.ts +74 -0
- package/dist/definition-package-smoke.d.ts.map +1 -0
- package/dist/definition-package-smoke.js +184 -0
- package/dist/definition-package-smoke.js.map +1 -0
- package/dist/definition-package.d.ts +36 -0
- package/dist/definition-package.d.ts.map +1 -0
- package/dist/definition-package.js +114 -0
- package/dist/definition-package.js.map +1 -0
- package/dist/definition-tuning-approval.d.ts +39 -0
- package/dist/definition-tuning-approval.d.ts.map +1 -0
- package/dist/definition-tuning-approval.js +207 -0
- package/dist/definition-tuning-approval.js.map +1 -0
- package/dist/definition-tuning-json.d.ts +58 -0
- package/dist/definition-tuning-json.d.ts.map +1 -0
- package/dist/definition-tuning-json.js +276 -0
- package/dist/definition-tuning-json.js.map +1 -0
- package/dist/definition-tuning-promotion.d.ts +120 -0
- package/dist/definition-tuning-promotion.d.ts.map +1 -0
- package/dist/definition-tuning-promotion.js +460 -0
- package/dist/definition-tuning-promotion.js.map +1 -0
- package/dist/definition-tuning-replay.d.ts +14 -0
- package/dist/definition-tuning-replay.d.ts.map +1 -0
- package/dist/definition-tuning-replay.js +50 -0
- package/dist/definition-tuning-replay.js.map +1 -0
- package/dist/definition-tuning-review-artifact.d.ts +56 -0
- package/dist/definition-tuning-review-artifact.d.ts.map +1 -0
- package/dist/definition-tuning-review-artifact.js +302 -0
- package/dist/definition-tuning-review-artifact.js.map +1 -0
- package/dist/definition-tuning-review.d.ts +59 -0
- package/dist/definition-tuning-review.d.ts.map +1 -0
- package/dist/definition-tuning-review.js +213 -0
- package/dist/definition-tuning-review.js.map +1 -0
- package/dist/definition-tuning-source-patch.d.ts +43 -0
- package/dist/definition-tuning-source-patch.d.ts.map +1 -0
- package/dist/definition-tuning-source-patch.js +214 -0
- package/dist/definition-tuning-source-patch.js.map +1 -0
- package/dist/definition-tuning.d.ts +73 -0
- package/dist/definition-tuning.d.ts.map +1 -0
- package/dist/definition-tuning.js +426 -0
- package/dist/definition-tuning.js.map +1 -0
- package/dist/definition.d.ts +189 -0
- package/dist/definition.d.ts.map +1 -0
- package/dist/definition.js +494 -0
- package/dist/definition.js.map +1 -0
- package/dist/direct-route-invocation.d.ts +132 -0
- package/dist/direct-route-invocation.d.ts.map +1 -0
- package/dist/direct-route-invocation.js +325 -0
- package/dist/direct-route-invocation.js.map +1 -0
- package/dist/direct-route-policy.d.ts +25 -0
- package/dist/direct-route-policy.d.ts.map +1 -0
- package/dist/direct-route-policy.js +106 -0
- package/dist/direct-route-policy.js.map +1 -0
- package/dist/eval-case.d.ts +85 -0
- package/dist/eval-case.d.ts.map +1 -0
- package/dist/eval-case.js +366 -0
- package/dist/eval-case.js.map +1 -0
- package/dist/eval-replay.d.ts +18 -0
- package/dist/eval-replay.d.ts.map +1 -0
- package/dist/eval-replay.js +41 -0
- package/dist/eval-replay.js.map +1 -0
- package/dist/eval-result.d.ts +46 -0
- package/dist/eval-result.d.ts.map +1 -0
- package/dist/eval-result.js +183 -0
- package/dist/eval-result.js.map +1 -0
- package/dist/eval-runner.d.ts +30 -0
- package/dist/eval-runner.d.ts.map +1 -0
- package/dist/eval-runner.js +57 -0
- package/dist/eval-runner.js.map +1 -0
- package/dist/eval-suite.d.ts +43 -0
- package/dist/eval-suite.d.ts.map +1 -0
- package/dist/eval-suite.js +101 -0
- package/dist/eval-suite.js.map +1 -0
- package/dist/execution-plan.d.ts +43 -0
- package/dist/execution-plan.d.ts.map +1 -0
- package/dist/execution-plan.js +187 -0
- package/dist/execution-plan.js.map +1 -0
- package/dist/hosted-tool-policy.d.ts +70 -0
- package/dist/hosted-tool-policy.d.ts.map +1 -0
- package/dist/hosted-tool-policy.js +228 -0
- package/dist/hosted-tool-policy.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/memory-policy.d.ts +55 -0
- package/dist/memory-policy.d.ts.map +1 -0
- package/dist/memory-policy.js +187 -0
- package/dist/memory-policy.js.map +1 -0
- package/dist/memory-updates.d.ts +39 -0
- package/dist/memory-updates.d.ts.map +1 -0
- package/dist/memory-updates.js +110 -0
- package/dist/memory-updates.js.map +1 -0
- package/dist/outcome-trace.d.ts +79 -0
- package/dist/outcome-trace.d.ts.map +1 -0
- package/dist/outcome-trace.js +117 -0
- package/dist/outcome-trace.js.map +1 -0
- package/dist/outcome.d.ts +97 -0
- package/dist/outcome.d.ts.map +1 -0
- package/dist/outcome.js +160 -0
- package/dist/outcome.js.map +1 -0
- package/dist/planner-compiler.d.ts +14 -0
- package/dist/planner-compiler.d.ts.map +1 -0
- package/dist/planner-compiler.js +26 -0
- package/dist/planner-compiler.js.map +1 -0
- package/dist/planning.d.ts +36 -0
- package/dist/planning.d.ts.map +1 -0
- package/dist/planning.js +141 -0
- package/dist/planning.js.map +1 -0
- package/dist/policy-resolution.d.ts +10 -0
- package/dist/policy-resolution.d.ts.map +1 -0
- package/dist/policy-resolution.js +30 -0
- package/dist/policy-resolution.js.map +1 -0
- package/dist/run-evaluation.d.ts +29 -0
- package/dist/run-evaluation.d.ts.map +1 -0
- package/dist/run-evaluation.js +128 -0
- package/dist/run-evaluation.js.map +1 -0
- package/dist/run-parity.d.ts +24 -0
- package/dist/run-parity.d.ts.map +1 -0
- package/dist/run-parity.js +36 -0
- package/dist/run-parity.js.map +1 -0
- package/dist/run-report-batch.d.ts +150 -0
- package/dist/run-report-batch.d.ts.map +1 -0
- package/dist/run-report-batch.js +391 -0
- package/dist/run-report-batch.js.map +1 -0
- package/dist/run-report-json.d.ts +76 -0
- package/dist/run-report-json.d.ts.map +1 -0
- package/dist/run-report-json.js +451 -0
- package/dist/run-report-json.js.map +1 -0
- package/dist/run-report.d.ts +22 -0
- package/dist/run-report.d.ts.map +1 -0
- package/dist/run-report.js +46 -0
- package/dist/run-report.js.map +1 -0
- package/dist/run.d.ts +20 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +36 -0
- package/dist/run.js.map +1 -0
- package/dist/tool-bindings.d.ts +42 -0
- package/dist/tool-bindings.d.ts.map +1 -0
- package/dist/tool-bindings.js +124 -0
- package/dist/tool-bindings.js.map +1 -0
- package/dist/tool-capabilities.d.ts +37 -0
- package/dist/tool-capabilities.d.ts.map +1 -0
- package/dist/tool-capabilities.js +91 -0
- package/dist/tool-capabilities.js.map +1 -0
- package/dist/tool-executor.d.ts +63 -0
- package/dist/tool-executor.d.ts.map +1 -0
- package/dist/tool-executor.js +176 -0
- package/dist/tool-executor.js.map +1 -0
- package/dist/tool-fixtures.d.ts +18 -0
- package/dist/tool-fixtures.d.ts.map +1 -0
- package/dist/tool-fixtures.js +52 -0
- package/dist/tool-fixtures.js.map +1 -0
- package/dist/tool-invocations.d.ts +31 -0
- package/dist/tool-invocations.d.ts.map +1 -0
- package/dist/tool-invocations.js +79 -0
- package/dist/tool-invocations.js.map +1 -0
- package/dist/tool-provider-executors.d.ts +43 -0
- package/dist/tool-provider-executors.d.ts.map +1 -0
- package/dist/tool-provider-executors.js +59 -0
- package/dist/tool-provider-executors.js.map +1 -0
- package/dist/tool-result-cache.d.ts +37 -0
- package/dist/tool-result-cache.d.ts.map +1 -0
- package/dist/tool-result-cache.js +173 -0
- package/dist/tool-result-cache.js.map +1 -0
- package/dist/tool-results.d.ts +41 -0
- package/dist/tool-results.d.ts.map +1 -0
- package/dist/tool-results.js +137 -0
- package/dist/tool-results.js.map +1 -0
- package/dist/tool-runtime.d.ts +46 -0
- package/dist/tool-runtime.d.ts.map +1 -0
- package/dist/tool-runtime.js +163 -0
- package/dist/tool-runtime.js.map +1 -0
- package/dist/tool-selection-evaluation.d.ts +214 -0
- package/dist/tool-selection-evaluation.d.ts.map +1 -0
- package/dist/tool-selection-evaluation.js +773 -0
- package/dist/tool-selection-evaluation.js.map +1 -0
- package/dist/tool-selection-json.d.ts +71 -0
- package/dist/tool-selection-json.d.ts.map +1 -0
- package/dist/tool-selection-json.js +284 -0
- package/dist/tool-selection-json.js.map +1 -0
- package/dist/tool-selection-policy.d.ts +81 -0
- package/dist/tool-selection-policy.d.ts.map +1 -0
- package/dist/tool-selection-policy.js +376 -0
- package/dist/tool-selection-policy.js.map +1 -0
- package/dist/tool-selection-replay.d.ts +26 -0
- package/dist/tool-selection-replay.d.ts.map +1 -0
- package/dist/tool-selection-replay.js +88 -0
- package/dist/tool-selection-replay.js.map +1 -0
- package/dist/tool-selection-rules.d.ts +46 -0
- package/dist/tool-selection-rules.d.ts.map +1 -0
- package/dist/tool-selection-rules.js +183 -0
- package/dist/tool-selection-rules.js.map +1 -0
- package/dist/tool-selection-trace-export.d.ts +37 -0
- package/dist/tool-selection-trace-export.d.ts.map +1 -0
- package/dist/tool-selection-trace-export.js +324 -0
- package/dist/tool-selection-trace-export.js.map +1 -0
- package/dist/trace-events.d.ts +14 -0
- package/dist/trace-events.d.ts.map +1 -0
- package/dist/trace-events.js +65 -0
- package/dist/trace-events.js.map +1 -0
- package/dist/trace-payload.d.ts +24 -0
- package/dist/trace-payload.d.ts.map +1 -0
- package/dist/trace-payload.js +113 -0
- package/dist/trace-payload.js.map +1 -0
- package/dist/trace-replay.d.ts +276 -0
- package/dist/trace-replay.d.ts.map +1 -0
- package/dist/trace-replay.js +685 -0
- package/dist/trace-replay.js.map +1 -0
- package/dist/trace-report.d.ts +320 -0
- package/dist/trace-report.d.ts.map +1 -0
- package/dist/trace-report.js +1394 -0
- package/dist/trace-report.js.map +1 -0
- package/dist/trace-stages.d.ts +70 -0
- package/dist/trace-stages.d.ts.map +1 -0
- package/dist/trace-stages.js +103 -0
- package/dist/trace-stages.js.map +1 -0
- package/dist/value-readers.d.ts +20 -0
- package/dist/value-readers.d.ts.map +1 -0
- package/dist/value-readers.js +82 -0
- package/dist/value-readers.js.map +1 -0
- package/package.json +341 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
import { buildAssistantWorkflowPlanningProfileMigrationReport, buildAssistantWorkflowPlanningProfileMigrationReportTracePayload, buildAssistantWorkflowPlanningProfileMigrationReviewArtifact, buildAssistantWorkflowPlanningProfileMigrationReviewArtifactTracePayload, buildAssistantWorkflowRunReportBatch, buildAssistantWorkflowRunReportBatchTracePayload, } from "./run-report-batch.js";
|
|
2
|
+
import { buildAssistantWorkflowRunReportTracePayload, } from "./run-report.js";
|
|
3
|
+
import { readAssistantWorkflowBooleanOrDefault as readBoolean, readAssistantWorkflowNumberOrDefault as readNumber, readAssistantWorkflowString, readAssistantWorkflowStringArray as readStringArray, readAssistantWorkflowStringOrDefault, } from "./value-readers.js";
|
|
4
|
+
export const ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION = 1;
|
|
5
|
+
export function serializeAssistantWorkflowRunReport(report) {
|
|
6
|
+
const trace = buildAssistantWorkflowRunReportTracePayload(report);
|
|
7
|
+
return {
|
|
8
|
+
schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,
|
|
9
|
+
workflowId: report.workflowId,
|
|
10
|
+
workflowVersion: report.workflowVersion,
|
|
11
|
+
status: report.status,
|
|
12
|
+
run: toJsonRecord(trace["run"]),
|
|
13
|
+
toolExecution: trace["toolExecution"] === null ? null : toJsonRecord(trace["toolExecution"]),
|
|
14
|
+
outcome: toJsonRecord(trace["outcome"]),
|
|
15
|
+
evaluation: toJsonRecord(trace["evaluation"]),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function stringifyAssistantWorkflowRunReport(report, space) {
|
|
19
|
+
return JSON.stringify(serializeAssistantWorkflowRunReport(report), null, space);
|
|
20
|
+
}
|
|
21
|
+
export function serializeAssistantWorkflowRunReports(reports, options = {}) {
|
|
22
|
+
const selectedReports = options.onlyInteresting === true
|
|
23
|
+
? reports.filter(isInterestingReport)
|
|
24
|
+
: [...reports];
|
|
25
|
+
const batch = buildAssistantWorkflowRunReportBatch(reports, {
|
|
26
|
+
...(options.onlyInteresting !== undefined ? { onlyInteresting: options.onlyInteresting } : {}),
|
|
27
|
+
});
|
|
28
|
+
const generatedAt = normalizeGeneratedAt(options.generatedAt) ?? batch.generatedAt;
|
|
29
|
+
const summary = buildAssistantWorkflowRunReportBatchTracePayload({
|
|
30
|
+
...batch,
|
|
31
|
+
generatedAt,
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,
|
|
35
|
+
generatedAt,
|
|
36
|
+
sourceReportCount: reports.length,
|
|
37
|
+
reportCount: selectedReports.length,
|
|
38
|
+
summary: toJsonRecord(summary),
|
|
39
|
+
reports: selectedReports.map(serializeAssistantWorkflowRunReport),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function buildAssistantWorkflowRunReportBatchFromSerializedReports(reports, options = {}) {
|
|
43
|
+
const rows = (options.onlyInteresting === true
|
|
44
|
+
? reports.filter(isInterestingSerializedReport)
|
|
45
|
+
: [...reports]).map(toSerializedBatchRow);
|
|
46
|
+
const generatedAt = normalizeGeneratedAt(options.generatedAt) ?? new Date().toISOString();
|
|
47
|
+
return {
|
|
48
|
+
generatedAt,
|
|
49
|
+
sourceReportCount: reports.length,
|
|
50
|
+
rowCount: rows.length,
|
|
51
|
+
interestingRowCount: rows.filter(isInterestingSerializedRow).length,
|
|
52
|
+
warningRowCount: rows.filter((row) => row.warningCount > 0).length,
|
|
53
|
+
statusCounts: buildStringCounts(rows.map((row) => row.status)),
|
|
54
|
+
intentCounts: buildStringCounts(rows.map((row) => row.intent ?? "unknown")),
|
|
55
|
+
outcomeCounts: buildStringCounts(rows.map((row) => row.outcomeKind)),
|
|
56
|
+
toolResultStatusCounts: buildStringCounts(rows.map((row) => row.toolResultStatus ?? "none")),
|
|
57
|
+
toolProviderResultCounts: buildStringCounts(rows.flatMap((row) => row.toolResultProviders)),
|
|
58
|
+
activePlanningStepProfileCounts: buildStringCounts(rows.flatMap((row) => row.activePlanningStepProfileIds)),
|
|
59
|
+
profileStepCounts: buildStringCounts(rows.flatMap((row) => row.profileStepIds)),
|
|
60
|
+
directRouteDoneCounts: buildStringCounts(rows.flatMap((row) => row.directRouteDoneRoutes)),
|
|
61
|
+
directRouteRecoveredCounts: buildStringCounts(rows.flatMap((row) => row.directRouteRecoveredRoutes)),
|
|
62
|
+
directRouteErrorCounts: buildStringCounts(rows.flatMap((row) => row.directRouteErrorRoutes)),
|
|
63
|
+
directRouteSkipReasonCounts: buildStringCounts(rows.flatMap((row) => row.directRouteSkipReasons).filter(isActionableDirectRouteSkipReason)),
|
|
64
|
+
directRouteGapReasonCounts: buildStringCounts(rows.flatMap((row) => row.directRouteGapReasons)),
|
|
65
|
+
directRouteObservedStrategyCounts: buildStringCounts(rows.flatMap((row) => row.directRouteObservedStrategies)),
|
|
66
|
+
directRouteUndeclaredStrategyCounts: buildStringCounts(rows.flatMap((row) => row.directRouteUndeclaredStrategies)),
|
|
67
|
+
memoryChangedSlotCounts: buildStringCounts(rows.flatMap((row) => row.memoryChangedSlots)),
|
|
68
|
+
memoryChangedProfileFieldCounts: buildStringCounts(rows.flatMap((row) => row.memoryChangedProfileFields)),
|
|
69
|
+
memorySkippedPatchReasonCounts: buildStringCounts(rows.flatMap((row) => row.memorySkippedPatchReasons)),
|
|
70
|
+
threadProfileWriteSourceCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteSources)),
|
|
71
|
+
threadProfileWriteReasonCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteReasons)),
|
|
72
|
+
threadProfileWriteChangedFieldCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteChangedFields)),
|
|
73
|
+
signalCounts: buildSignalCounts(rows.flatMap((row) => row.signals)),
|
|
74
|
+
rows,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function serializeAssistantWorkflowSerializedRunReports(reports, options = {}) {
|
|
78
|
+
const selectedReports = options.onlyInteresting === true
|
|
79
|
+
? reports.filter(isInterestingSerializedReport)
|
|
80
|
+
: [...reports];
|
|
81
|
+
const batch = buildAssistantWorkflowRunReportBatchFromSerializedReports(reports, options);
|
|
82
|
+
const summary = buildAssistantWorkflowRunReportBatchTracePayload(batch);
|
|
83
|
+
return {
|
|
84
|
+
schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,
|
|
85
|
+
generatedAt: batch.generatedAt,
|
|
86
|
+
sourceReportCount: reports.length,
|
|
87
|
+
reportCount: selectedReports.length,
|
|
88
|
+
summary: toJsonRecord(summary),
|
|
89
|
+
reports: selectedReports,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function stringifyAssistantWorkflowRunReports(reports, options = {}, space) {
|
|
93
|
+
return JSON.stringify(serializeAssistantWorkflowRunReports(reports, options), null, space);
|
|
94
|
+
}
|
|
95
|
+
export function stringifyAssistantWorkflowRunReportLines(reports, options = {}) {
|
|
96
|
+
const selectedReports = options.onlyInteresting === true
|
|
97
|
+
? reports.filter(isInterestingReport)
|
|
98
|
+
: [...reports];
|
|
99
|
+
return stringifyAssistantWorkflowSerializedRunReportLines(selectedReports.map(serializeAssistantWorkflowRunReport), options);
|
|
100
|
+
}
|
|
101
|
+
export function stringifyAssistantWorkflowSerializedRunReportLines(reports, options = {}) {
|
|
102
|
+
const selectedReports = options.onlyInteresting === true
|
|
103
|
+
? reports.filter(isInterestingSerializedReport)
|
|
104
|
+
: [...reports];
|
|
105
|
+
const lines = selectedReports.map((report) => JSON.stringify(report));
|
|
106
|
+
if (!lines.length)
|
|
107
|
+
return "";
|
|
108
|
+
return options.trailingNewline === true ? `${lines.join("\n")}\n` : lines.join("\n");
|
|
109
|
+
}
|
|
110
|
+
export function parseAssistantWorkflowSerializedRunReport(value) {
|
|
111
|
+
if (!isRecord(value))
|
|
112
|
+
return null;
|
|
113
|
+
if (value["schemaVersion"] !== ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION)
|
|
114
|
+
return null;
|
|
115
|
+
if (typeof value["workflowId"] !== "string" || !value["workflowId"].trim().length)
|
|
116
|
+
return null;
|
|
117
|
+
if (typeof value["workflowVersion"] !== "number" || !Number.isFinite(value["workflowVersion"]))
|
|
118
|
+
return null;
|
|
119
|
+
if (!isRunReportStatus(value["status"]))
|
|
120
|
+
return null;
|
|
121
|
+
if (!isJsonRecord(value["run"]))
|
|
122
|
+
return null;
|
|
123
|
+
if (value["toolExecution"] !== null && !isJsonRecord(value["toolExecution"]))
|
|
124
|
+
return null;
|
|
125
|
+
if (!isJsonRecord(value["outcome"]))
|
|
126
|
+
return null;
|
|
127
|
+
if (!isJsonRecord(value["evaluation"]))
|
|
128
|
+
return null;
|
|
129
|
+
return {
|
|
130
|
+
schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,
|
|
131
|
+
workflowId: value["workflowId"],
|
|
132
|
+
workflowVersion: value["workflowVersion"],
|
|
133
|
+
status: value["status"],
|
|
134
|
+
run: value["run"],
|
|
135
|
+
toolExecution: value["toolExecution"],
|
|
136
|
+
outcome: value["outcome"],
|
|
137
|
+
evaluation: value["evaluation"],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function parseAssistantWorkflowSerializedRunReportLines(input) {
|
|
141
|
+
const reports = [];
|
|
142
|
+
const errors = [];
|
|
143
|
+
let lineCount = 0;
|
|
144
|
+
for (const [index, line] of input.split(/\r?\n/).entries()) {
|
|
145
|
+
const trimmed = line.trim();
|
|
146
|
+
if (!trimmed.length)
|
|
147
|
+
continue;
|
|
148
|
+
const lineNumber = index + 1;
|
|
149
|
+
lineCount += 1;
|
|
150
|
+
let parsed;
|
|
151
|
+
try {
|
|
152
|
+
parsed = JSON.parse(trimmed);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
errors.push({
|
|
156
|
+
lineNumber,
|
|
157
|
+
reason: "invalid_json",
|
|
158
|
+
preview: previewLine(trimmed),
|
|
159
|
+
});
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const report = parseAssistantWorkflowSerializedRunReport(parsed);
|
|
163
|
+
if (!report) {
|
|
164
|
+
errors.push({
|
|
165
|
+
lineNumber,
|
|
166
|
+
reason: "invalid_report",
|
|
167
|
+
preview: previewLine(trimmed),
|
|
168
|
+
});
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
reports.push(report);
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
lineCount,
|
|
175
|
+
reportCount: reports.length,
|
|
176
|
+
errorCount: errors.length,
|
|
177
|
+
reports,
|
|
178
|
+
errors,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export function parseAssistantWorkflowSerializedRunReportBatch(value) {
|
|
182
|
+
if (!isRecord(value))
|
|
183
|
+
return null;
|
|
184
|
+
if (value["schemaVersion"] !== ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION)
|
|
185
|
+
return null;
|
|
186
|
+
if (typeof value["generatedAt"] !== "string" || !value["generatedAt"].trim().length)
|
|
187
|
+
return null;
|
|
188
|
+
if (!isNonNegativeFiniteNumber(value["sourceReportCount"]))
|
|
189
|
+
return null;
|
|
190
|
+
if (!isNonNegativeFiniteNumber(value["reportCount"]))
|
|
191
|
+
return null;
|
|
192
|
+
if (!isJsonRecord(value["summary"]))
|
|
193
|
+
return null;
|
|
194
|
+
if (!Array.isArray(value["reports"]))
|
|
195
|
+
return null;
|
|
196
|
+
const reports = value["reports"].map(parseAssistantWorkflowSerializedRunReport);
|
|
197
|
+
if (reports.some((report) => report === null))
|
|
198
|
+
return null;
|
|
199
|
+
if (reports.length !== value["reportCount"])
|
|
200
|
+
return null;
|
|
201
|
+
return {
|
|
202
|
+
schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,
|
|
203
|
+
generatedAt: value["generatedAt"],
|
|
204
|
+
sourceReportCount: value["sourceReportCount"],
|
|
205
|
+
reportCount: value["reportCount"],
|
|
206
|
+
summary: value["summary"],
|
|
207
|
+
reports: reports.filter((report) => report !== null),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
export function runAssistantWorkflowRunReportReplayLines(input, options = {}) {
|
|
211
|
+
const reportParse = parseAssistantWorkflowSerializedRunReportLines(input.reportLines);
|
|
212
|
+
const runReportBatch = buildAssistantWorkflowRunReportBatchFromSerializedReports(reportParse.reports, options);
|
|
213
|
+
const batch = serializeAssistantWorkflowSerializedRunReports(reportParse.reports, options);
|
|
214
|
+
const planningProfileMigration = buildAssistantWorkflowPlanningProfileMigrationReport(runReportBatch, {
|
|
215
|
+
...(options.minPlanningProfileRunCount !== undefined
|
|
216
|
+
? { minRunCount: options.minPlanningProfileRunCount }
|
|
217
|
+
: {}),
|
|
218
|
+
...(options.currentRuntimePlanningProfileIds !== undefined
|
|
219
|
+
? { currentRuntimeProfileIds: options.currentRuntimePlanningProfileIds }
|
|
220
|
+
: {}),
|
|
221
|
+
generatedAt: runReportBatch.generatedAt,
|
|
222
|
+
});
|
|
223
|
+
const planningProfileMigrationReviewArtifact = buildAssistantWorkflowPlanningProfileMigrationReviewArtifact(planningProfileMigration, {
|
|
224
|
+
...(options.migrationReviewTitle !== undefined ? { title: options.migrationReviewTitle } : {}),
|
|
225
|
+
...(options.migrationReviewPatchTargets !== undefined
|
|
226
|
+
? { patchTargets: options.migrationReviewPatchTargets }
|
|
227
|
+
: {}),
|
|
228
|
+
...(options.migrationReviewRequiredTestIds !== undefined
|
|
229
|
+
? { requiredTestIds: options.migrationReviewRequiredTestIds }
|
|
230
|
+
: {}),
|
|
231
|
+
});
|
|
232
|
+
return {
|
|
233
|
+
reportParse,
|
|
234
|
+
parseErrorCount: reportParse.errorCount,
|
|
235
|
+
batch,
|
|
236
|
+
runReportBatch,
|
|
237
|
+
planningProfileMigration,
|
|
238
|
+
planningProfileMigrationReviewArtifact,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
export function buildAssistantWorkflowRunReportReplayLinesTracePayload(result) {
|
|
242
|
+
return {
|
|
243
|
+
reportParse: {
|
|
244
|
+
lineCount: result.reportParse.lineCount,
|
|
245
|
+
reportCount: result.reportParse.reportCount,
|
|
246
|
+
errorCount: result.reportParse.errorCount,
|
|
247
|
+
errors: result.reportParse.errors.map((error) => ({
|
|
248
|
+
lineNumber: error.lineNumber,
|
|
249
|
+
reason: error.reason,
|
|
250
|
+
preview: error.preview,
|
|
251
|
+
})),
|
|
252
|
+
},
|
|
253
|
+
parseErrorCount: result.parseErrorCount,
|
|
254
|
+
batch: {
|
|
255
|
+
generatedAt: result.batch.generatedAt,
|
|
256
|
+
sourceReportCount: result.batch.sourceReportCount,
|
|
257
|
+
reportCount: result.batch.reportCount,
|
|
258
|
+
summary: result.batch.summary,
|
|
259
|
+
},
|
|
260
|
+
planningProfileMigration: toJsonRecord(buildAssistantWorkflowPlanningProfileMigrationReportTracePayload(result.planningProfileMigration)),
|
|
261
|
+
planningProfileMigrationReviewArtifact: toJsonRecord(buildAssistantWorkflowPlanningProfileMigrationReviewArtifactTracePayload(result.planningProfileMigrationReviewArtifact)),
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function isInterestingReport(report) {
|
|
265
|
+
return report.status !== "completed" || report.evaluation.warningCount > 0 || report.evaluation.handled === false;
|
|
266
|
+
}
|
|
267
|
+
function isInterestingSerializedReport(report) {
|
|
268
|
+
return isInterestingSerializedRow(toSerializedBatchRow(report));
|
|
269
|
+
}
|
|
270
|
+
function isInterestingSerializedRow(row) {
|
|
271
|
+
return row.status !== "completed" || row.warningCount > 0 || row.handled === false;
|
|
272
|
+
}
|
|
273
|
+
function isActionableDirectRouteSkipReason(value) {
|
|
274
|
+
return !value.endsWith(":runtime_policy_disabled") && !value.endsWith(":runtime_disabled");
|
|
275
|
+
}
|
|
276
|
+
function toSerializedBatchRow(report) {
|
|
277
|
+
return {
|
|
278
|
+
workflowId: report.workflowId,
|
|
279
|
+
workflowVersion: report.workflowVersion,
|
|
280
|
+
status: report.status,
|
|
281
|
+
intent: readOptionalString(report.evaluation["intent"]),
|
|
282
|
+
outcomeKind: readString(report.evaluation["outcomeKind"], "unknown"),
|
|
283
|
+
handled: readBoolean(report.evaluation["handled"], false),
|
|
284
|
+
toolResultStatus: readOptionalString(report.evaluation["toolResultStatus"]),
|
|
285
|
+
toolResultProviders: readSerializedToolResultProviders(report.toolExecution),
|
|
286
|
+
activePlanningStepProfileIds: readStringArray(report.evaluation["activePlanningStepProfileIds"]),
|
|
287
|
+
profileStepIds: readStringArray(report.evaluation["profileStepIds"]),
|
|
288
|
+
directRouteDoneRoutes: readStringArray(report.evaluation["directRouteDoneRoutes"]),
|
|
289
|
+
directRouteRecoveredRoutes: readStringArray(report.evaluation["directRouteRecoveredRoutes"]),
|
|
290
|
+
directRouteErrorRoutes: readStringArray(report.evaluation["directRouteErrorRoutes"]),
|
|
291
|
+
directRouteSkipReasons: readStringArray(report.evaluation["directRouteSkipReasons"]),
|
|
292
|
+
directRouteGapReasons: readStringArray(report.evaluation["directRouteGapReasons"]),
|
|
293
|
+
directRouteObservedStrategies: readStringArray(report.evaluation["directRouteObservedStrategies"]),
|
|
294
|
+
directRouteUndeclaredStrategies: readStringArray(report.evaluation["directRouteUndeclaredStrategies"]),
|
|
295
|
+
memoryChangedSlots: readStringArray(report.evaluation["memoryChangedSlots"]),
|
|
296
|
+
memoryChangedProfileFields: readStringArray(report.evaluation["memoryChangedProfileFields"]),
|
|
297
|
+
memorySkippedPatchReasons: readStringArray(report.evaluation["memorySkippedPatchReasons"]),
|
|
298
|
+
threadProfileWriteSources: readStringArray(report.evaluation["threadProfileWriteSources"]),
|
|
299
|
+
threadProfileWriteReasons: readStringArray(report.evaluation["threadProfileWriteReasons"]),
|
|
300
|
+
threadProfileWriteChangedFields: readStringArray(report.evaluation["threadProfileWriteChangedFields"]),
|
|
301
|
+
signalCount: readNumber(report.evaluation["signalCount"], 0),
|
|
302
|
+
warningCount: readNumber(report.evaluation["warningCount"], 0),
|
|
303
|
+
signals: readRunEvaluationSignals(report.evaluation["signals"]),
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
function readSerializedToolResultProviders(toolExecution) {
|
|
307
|
+
if (!toolExecution || !Array.isArray(toolExecution["results"]))
|
|
308
|
+
return [];
|
|
309
|
+
return toolExecution["results"].flatMap((value) => {
|
|
310
|
+
if (!isJsonRecord(value))
|
|
311
|
+
return [];
|
|
312
|
+
const provider = readOptionalString(value["provider"]);
|
|
313
|
+
return provider ? [provider] : [];
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
function readRunEvaluationSignals(value) {
|
|
317
|
+
if (!Array.isArray(value))
|
|
318
|
+
return [];
|
|
319
|
+
const signals = [];
|
|
320
|
+
for (const item of value) {
|
|
321
|
+
if (!isJsonRecord(item))
|
|
322
|
+
continue;
|
|
323
|
+
const name = item["name"];
|
|
324
|
+
const severity = item["severity"];
|
|
325
|
+
if (!isRunEvaluationSignalName(name))
|
|
326
|
+
continue;
|
|
327
|
+
if (severity !== "info" && severity !== "warning")
|
|
328
|
+
continue;
|
|
329
|
+
signals.push({
|
|
330
|
+
name,
|
|
331
|
+
severity,
|
|
332
|
+
detail: readOptionalString(item["detail"]),
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return signals;
|
|
336
|
+
}
|
|
337
|
+
function isRunEvaluationSignalName(value) {
|
|
338
|
+
return (value === "run_not_handled" ||
|
|
339
|
+
value === "run_needs_clarification" ||
|
|
340
|
+
value === "run_degraded" ||
|
|
341
|
+
value === "run_failed" ||
|
|
342
|
+
value === "missing_required_tools" ||
|
|
343
|
+
value === "missing_tool_bindings" ||
|
|
344
|
+
value === "missing_context" ||
|
|
345
|
+
value === "clarification_policy_mismatch" ||
|
|
346
|
+
value === "tool_execution_failed" ||
|
|
347
|
+
value === "tool_execution_partial" ||
|
|
348
|
+
value === "outcome_unhandled");
|
|
349
|
+
}
|
|
350
|
+
function readString(value, fallback) {
|
|
351
|
+
return readAssistantWorkflowStringOrDefault(value, fallback, { trim: false });
|
|
352
|
+
}
|
|
353
|
+
function readOptionalString(value) {
|
|
354
|
+
return readAssistantWorkflowString(value, { trim: false });
|
|
355
|
+
}
|
|
356
|
+
function normalizeGeneratedAt(value) {
|
|
357
|
+
if (value === undefined)
|
|
358
|
+
return null;
|
|
359
|
+
const trimmed = value.trim();
|
|
360
|
+
return trimmed.length ? trimmed : null;
|
|
361
|
+
}
|
|
362
|
+
function previewLine(line) {
|
|
363
|
+
return line.length <= 160 ? line : `${line.slice(0, 157)}...`;
|
|
364
|
+
}
|
|
365
|
+
function toJsonRecord(value) {
|
|
366
|
+
if (!isJsonRecord(value)) {
|
|
367
|
+
throw new Error("Assistant workflow run report trace payload must be a JSON object.");
|
|
368
|
+
}
|
|
369
|
+
return value;
|
|
370
|
+
}
|
|
371
|
+
function isRunReportStatus(value) {
|
|
372
|
+
return (value === "completed" ||
|
|
373
|
+
value === "clarification" ||
|
|
374
|
+
value === "degraded" ||
|
|
375
|
+
value === "failed" ||
|
|
376
|
+
value === "not_handled");
|
|
377
|
+
}
|
|
378
|
+
function isJsonRecord(value) {
|
|
379
|
+
if (!isRecord(value))
|
|
380
|
+
return false;
|
|
381
|
+
return Object.values(value).every(isJsonValue);
|
|
382
|
+
}
|
|
383
|
+
function isJsonValue(value) {
|
|
384
|
+
if (value === null)
|
|
385
|
+
return true;
|
|
386
|
+
if (typeof value === "string" || typeof value === "boolean")
|
|
387
|
+
return true;
|
|
388
|
+
if (typeof value === "number")
|
|
389
|
+
return Number.isFinite(value);
|
|
390
|
+
if (Array.isArray(value))
|
|
391
|
+
return value.every(isJsonValue);
|
|
392
|
+
return isJsonRecord(value);
|
|
393
|
+
}
|
|
394
|
+
function isNonNegativeFiniteNumber(value) {
|
|
395
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
396
|
+
}
|
|
397
|
+
function uniqueNonEmptyStrings(values) {
|
|
398
|
+
const result = [];
|
|
399
|
+
const seen = new Set();
|
|
400
|
+
for (const value of values) {
|
|
401
|
+
const normalized = value.trim();
|
|
402
|
+
if (!normalized.length || seen.has(normalized))
|
|
403
|
+
continue;
|
|
404
|
+
seen.add(normalized);
|
|
405
|
+
result.push(normalized);
|
|
406
|
+
}
|
|
407
|
+
return result;
|
|
408
|
+
}
|
|
409
|
+
function buildStringCounts(values) {
|
|
410
|
+
const counts = new Map();
|
|
411
|
+
for (const value of values) {
|
|
412
|
+
if (!value.length)
|
|
413
|
+
continue;
|
|
414
|
+
counts.set(value, (counts.get(value) ?? 0) + 1);
|
|
415
|
+
}
|
|
416
|
+
return [...counts.entries()]
|
|
417
|
+
.map(([key, count]) => ({ key, count }))
|
|
418
|
+
.sort((left, right) => {
|
|
419
|
+
if (right.count !== left.count)
|
|
420
|
+
return right.count - left.count;
|
|
421
|
+
return left.key.localeCompare(right.key);
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
function buildSignalCounts(signals) {
|
|
425
|
+
const counts = new Map();
|
|
426
|
+
for (const signal of signals) {
|
|
427
|
+
const current = counts.get(signal.name);
|
|
428
|
+
if (current) {
|
|
429
|
+
current.count += 1;
|
|
430
|
+
if (signal.severity === "warning")
|
|
431
|
+
current.severity = "warning";
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
counts.set(signal.name, {
|
|
435
|
+
name: signal.name,
|
|
436
|
+
severity: signal.severity,
|
|
437
|
+
count: 1,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
return [...counts.values()].sort((left, right) => {
|
|
441
|
+
if (right.count !== left.count)
|
|
442
|
+
return right.count - left.count;
|
|
443
|
+
if (left.severity !== right.severity)
|
|
444
|
+
return left.severity === "warning" ? -1 : 1;
|
|
445
|
+
return left.name.localeCompare(right.name);
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
function isRecord(value) {
|
|
449
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=run-report-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report-json.js","sourceRoot":"","sources":["../src/run-report-json.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildAssistantWorkflowPlanningProfileMigrationReport,\n buildAssistantWorkflowPlanningProfileMigrationReportTracePayload,\n buildAssistantWorkflowPlanningProfileMigrationReviewArtifact,\n buildAssistantWorkflowPlanningProfileMigrationReviewArtifactTracePayload,\n buildAssistantWorkflowRunReportBatch,\n buildAssistantWorkflowRunReportBatchTracePayload,\n type AssistantWorkflowPlanningProfileMigrationReport,\n type AssistantWorkflowPlanningProfileMigrationReviewArtifact,\n type AssistantWorkflowRunReportBatch,\n type AssistantWorkflowRunReportBatchCount,\n type AssistantWorkflowRunReportBatchOptions,\n type AssistantWorkflowRunReportBatchSignalCount,\n} from \"./run-report-batch.js\";\nimport {\n buildAssistantWorkflowRunReportTracePayload,\n type AssistantWorkflowRunReport,\n type AssistantWorkflowRunReportStatus,\n} from \"./run-report.js\";\nimport type {\n AssistantWorkflowRunEvaluationSignal,\n AssistantWorkflowRunEvaluationSignalName,\n} from \"./run-evaluation.js\";\nimport {\n readAssistantWorkflowBooleanOrDefault as readBoolean,\n readAssistantWorkflowNumberOrDefault as readNumber,\n readAssistantWorkflowString,\n readAssistantWorkflowStringArray as readStringArray,\n readAssistantWorkflowStringOrDefault,\n} from \"./value-readers.js\";\n\nexport const ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION = 1;\n\nexport type AssistantWorkflowJsonPrimitive = string | number | boolean | null;\n\nexport type AssistantWorkflowJsonValue =\n | AssistantWorkflowJsonPrimitive\n | AssistantWorkflowJsonValue[]\n | { [key: string]: AssistantWorkflowJsonValue };\n\nexport type AssistantWorkflowSerializedRunReport = {\n schemaVersion: typeof ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION;\n workflowId: string;\n workflowVersion: number;\n status: AssistantWorkflowRunReportStatus;\n run: Record<string, AssistantWorkflowJsonValue>;\n toolExecution: Record<string, AssistantWorkflowJsonValue> | null;\n outcome: Record<string, AssistantWorkflowJsonValue>;\n evaluation: Record<string, AssistantWorkflowJsonValue>;\n};\n\nexport type AssistantWorkflowSerializedRunReportBatchOptions =\n AssistantWorkflowRunReportBatchOptions & {\n generatedAt?: string;\n };\n\nexport type AssistantWorkflowSerializedRunReportBatch = {\n schemaVersion: typeof ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION;\n generatedAt: string;\n sourceReportCount: number;\n reportCount: number;\n summary: Record<string, AssistantWorkflowJsonValue>;\n reports: AssistantWorkflowSerializedRunReport[];\n};\n\nexport type AssistantWorkflowSerializedRunReportLinesOptions =\n AssistantWorkflowRunReportBatchOptions & {\n trailingNewline?: boolean;\n };\n\nexport type AssistantWorkflowSerializedRunReportLineErrorReason =\n | \"invalid_json\"\n | \"invalid_report\";\n\nexport type AssistantWorkflowSerializedRunReportLineError = {\n lineNumber: number;\n reason: AssistantWorkflowSerializedRunReportLineErrorReason;\n preview: string;\n};\n\nexport type AssistantWorkflowSerializedRunReportLinesParseResult = {\n lineCount: number;\n reportCount: number;\n errorCount: number;\n reports: AssistantWorkflowSerializedRunReport[];\n errors: AssistantWorkflowSerializedRunReportLineError[];\n};\n\nexport type AssistantWorkflowRunReportReplayLinesOptions =\n AssistantWorkflowSerializedRunReportBatchOptions & {\n minPlanningProfileRunCount?: number | null;\n currentRuntimePlanningProfileIds?: readonly string[] | null;\n migrationReviewPatchTargets?: readonly string[] | null;\n migrationReviewRequiredTestIds?: readonly string[] | null;\n migrationReviewTitle?: string | null;\n };\n\nexport type AssistantWorkflowRunReportReplayLinesInput = {\n reportLines: string;\n};\n\nexport type AssistantWorkflowRunReportReplayLinesResult = {\n reportParse: AssistantWorkflowSerializedRunReportLinesParseResult;\n parseErrorCount: number;\n batch: AssistantWorkflowSerializedRunReportBatch;\n runReportBatch: AssistantWorkflowRunReportBatch;\n planningProfileMigration: AssistantWorkflowPlanningProfileMigrationReport;\n planningProfileMigrationReviewArtifact: AssistantWorkflowPlanningProfileMigrationReviewArtifact;\n};\n\nexport function serializeAssistantWorkflowRunReport(\n report: AssistantWorkflowRunReport,\n): AssistantWorkflowSerializedRunReport {\n const trace = buildAssistantWorkflowRunReportTracePayload(report);\n return {\n schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,\n workflowId: report.workflowId,\n workflowVersion: report.workflowVersion,\n status: report.status,\n run: toJsonRecord(trace[\"run\"]),\n toolExecution: trace[\"toolExecution\"] === null ? null : toJsonRecord(trace[\"toolExecution\"]),\n outcome: toJsonRecord(trace[\"outcome\"]),\n evaluation: toJsonRecord(trace[\"evaluation\"]),\n };\n}\n\nexport function stringifyAssistantWorkflowRunReport(\n report: AssistantWorkflowRunReport,\n space?: number,\n): string {\n return JSON.stringify(serializeAssistantWorkflowRunReport(report), null, space);\n}\n\nexport function serializeAssistantWorkflowRunReports(\n reports: readonly AssistantWorkflowRunReport[],\n options: AssistantWorkflowSerializedRunReportBatchOptions = {},\n): AssistantWorkflowSerializedRunReportBatch {\n const selectedReports = options.onlyInteresting === true\n ? reports.filter(isInterestingReport)\n : [...reports];\n const batch = buildAssistantWorkflowRunReportBatch(reports, {\n ...(options.onlyInteresting !== undefined ? { onlyInteresting: options.onlyInteresting } : {}),\n });\n const generatedAt = normalizeGeneratedAt(options.generatedAt) ?? batch.generatedAt;\n const summary = buildAssistantWorkflowRunReportBatchTracePayload({\n ...batch,\n generatedAt,\n });\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,\n generatedAt,\n sourceReportCount: reports.length,\n reportCount: selectedReports.length,\n summary: toJsonRecord(summary),\n reports: selectedReports.map(serializeAssistantWorkflowRunReport),\n };\n}\n\nexport function buildAssistantWorkflowRunReportBatchFromSerializedReports(\n reports: readonly AssistantWorkflowSerializedRunReport[],\n options: AssistantWorkflowSerializedRunReportBatchOptions = {},\n): AssistantWorkflowRunReportBatch {\n const rows = (\n options.onlyInteresting === true\n ? reports.filter(isInterestingSerializedReport)\n : [...reports]\n ).map(toSerializedBatchRow);\n const generatedAt = normalizeGeneratedAt(options.generatedAt) ?? new Date().toISOString();\n\n return {\n generatedAt,\n sourceReportCount: reports.length,\n rowCount: rows.length,\n interestingRowCount: rows.filter(isInterestingSerializedRow).length,\n warningRowCount: rows.filter((row) => row.warningCount > 0).length,\n statusCounts: buildStringCounts(rows.map((row) => row.status)),\n intentCounts: buildStringCounts(rows.map((row) => row.intent ?? \"unknown\")),\n outcomeCounts: buildStringCounts(rows.map((row) => row.outcomeKind)),\n toolResultStatusCounts: buildStringCounts(rows.map((row) => row.toolResultStatus ?? \"none\")),\n toolProviderResultCounts: buildStringCounts(rows.flatMap((row) => row.toolResultProviders)),\n activePlanningStepProfileCounts: buildStringCounts(rows.flatMap((row) => row.activePlanningStepProfileIds)),\n profileStepCounts: buildStringCounts(rows.flatMap((row) => row.profileStepIds)),\n directRouteDoneCounts: buildStringCounts(rows.flatMap((row) => row.directRouteDoneRoutes)),\n directRouteRecoveredCounts: buildStringCounts(rows.flatMap((row) => row.directRouteRecoveredRoutes)),\n directRouteErrorCounts: buildStringCounts(rows.flatMap((row) => row.directRouteErrorRoutes)),\n directRouteSkipReasonCounts: buildStringCounts(\n rows.flatMap((row) => row.directRouteSkipReasons).filter(isActionableDirectRouteSkipReason),\n ),\n directRouteGapReasonCounts: buildStringCounts(rows.flatMap((row) => row.directRouteGapReasons)),\n directRouteObservedStrategyCounts: buildStringCounts(rows.flatMap((row) => row.directRouteObservedStrategies)),\n directRouteUndeclaredStrategyCounts: buildStringCounts(rows.flatMap((row) => row.directRouteUndeclaredStrategies)),\n memoryChangedSlotCounts: buildStringCounts(rows.flatMap((row) => row.memoryChangedSlots)),\n memoryChangedProfileFieldCounts: buildStringCounts(rows.flatMap((row) => row.memoryChangedProfileFields)),\n memorySkippedPatchReasonCounts: buildStringCounts(rows.flatMap((row) => row.memorySkippedPatchReasons)),\n threadProfileWriteSourceCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteSources)),\n threadProfileWriteReasonCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteReasons)),\n threadProfileWriteChangedFieldCounts: buildStringCounts(rows.flatMap((row) => row.threadProfileWriteChangedFields)),\n signalCounts: buildSignalCounts(rows.flatMap((row) => row.signals)),\n rows,\n };\n}\n\nexport function serializeAssistantWorkflowSerializedRunReports(\n reports: readonly AssistantWorkflowSerializedRunReport[],\n options: AssistantWorkflowSerializedRunReportBatchOptions = {},\n): AssistantWorkflowSerializedRunReportBatch {\n const selectedReports = options.onlyInteresting === true\n ? reports.filter(isInterestingSerializedReport)\n : [...reports];\n const batch = buildAssistantWorkflowRunReportBatchFromSerializedReports(reports, options);\n const summary = buildAssistantWorkflowRunReportBatchTracePayload(batch);\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,\n generatedAt: batch.generatedAt,\n sourceReportCount: reports.length,\n reportCount: selectedReports.length,\n summary: toJsonRecord(summary),\n reports: selectedReports,\n };\n}\n\nexport function stringifyAssistantWorkflowRunReports(\n reports: readonly AssistantWorkflowRunReport[],\n options: AssistantWorkflowSerializedRunReportBatchOptions = {},\n space?: number,\n): string {\n return JSON.stringify(serializeAssistantWorkflowRunReports(reports, options), null, space);\n}\n\nexport function stringifyAssistantWorkflowRunReportLines(\n reports: readonly AssistantWorkflowRunReport[],\n options: AssistantWorkflowSerializedRunReportLinesOptions = {},\n): string {\n const selectedReports = options.onlyInteresting === true\n ? reports.filter(isInterestingReport)\n : [...reports];\n return stringifyAssistantWorkflowSerializedRunReportLines(\n selectedReports.map(serializeAssistantWorkflowRunReport),\n options,\n );\n}\n\nexport function stringifyAssistantWorkflowSerializedRunReportLines(\n reports: readonly AssistantWorkflowSerializedRunReport[],\n options: AssistantWorkflowSerializedRunReportLinesOptions = {},\n): string {\n const selectedReports = options.onlyInteresting === true\n ? reports.filter(isInterestingSerializedReport)\n : [...reports];\n const lines = selectedReports.map((report) => JSON.stringify(report));\n if (!lines.length) return \"\";\n return options.trailingNewline === true ? `${lines.join(\"\\n\")}\\n` : lines.join(\"\\n\");\n}\n\nexport function parseAssistantWorkflowSerializedRunReport(\n value: unknown,\n): AssistantWorkflowSerializedRunReport | null {\n if (!isRecord(value)) return null;\n if (value[\"schemaVersion\"] !== ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION) return null;\n if (typeof value[\"workflowId\"] !== \"string\" || !value[\"workflowId\"].trim().length) return null;\n if (typeof value[\"workflowVersion\"] !== \"number\" || !Number.isFinite(value[\"workflowVersion\"])) return null;\n if (!isRunReportStatus(value[\"status\"])) return null;\n if (!isJsonRecord(value[\"run\"])) return null;\n if (value[\"toolExecution\"] !== null && !isJsonRecord(value[\"toolExecution\"])) return null;\n if (!isJsonRecord(value[\"outcome\"])) return null;\n if (!isJsonRecord(value[\"evaluation\"])) return null;\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,\n workflowId: value[\"workflowId\"],\n workflowVersion: value[\"workflowVersion\"],\n status: value[\"status\"],\n run: value[\"run\"],\n toolExecution: value[\"toolExecution\"],\n outcome: value[\"outcome\"],\n evaluation: value[\"evaluation\"],\n };\n}\n\nexport function parseAssistantWorkflowSerializedRunReportLines(\n input: string,\n): AssistantWorkflowSerializedRunReportLinesParseResult {\n const reports: AssistantWorkflowSerializedRunReport[] = [];\n const errors: AssistantWorkflowSerializedRunReportLineError[] = [];\n let lineCount = 0;\n\n for (const [index, line] of input.split(/\\r?\\n/).entries()) {\n const trimmed = line.trim();\n if (!trimmed.length) continue;\n const lineNumber = index + 1;\n lineCount += 1;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n errors.push({\n lineNumber,\n reason: \"invalid_json\",\n preview: previewLine(trimmed),\n });\n continue;\n }\n\n const report = parseAssistantWorkflowSerializedRunReport(parsed);\n if (!report) {\n errors.push({\n lineNumber,\n reason: \"invalid_report\",\n preview: previewLine(trimmed),\n });\n continue;\n }\n reports.push(report);\n }\n\n return {\n lineCount,\n reportCount: reports.length,\n errorCount: errors.length,\n reports,\n errors,\n };\n}\n\nexport function parseAssistantWorkflowSerializedRunReportBatch(\n value: unknown,\n): AssistantWorkflowSerializedRunReportBatch | null {\n if (!isRecord(value)) return null;\n if (value[\"schemaVersion\"] !== ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION) return null;\n if (typeof value[\"generatedAt\"] !== \"string\" || !value[\"generatedAt\"].trim().length) return null;\n if (!isNonNegativeFiniteNumber(value[\"sourceReportCount\"])) return null;\n if (!isNonNegativeFiniteNumber(value[\"reportCount\"])) return null;\n if (!isJsonRecord(value[\"summary\"])) return null;\n if (!Array.isArray(value[\"reports\"])) return null;\n\n const reports = value[\"reports\"].map(parseAssistantWorkflowSerializedRunReport);\n if (reports.some((report) => report === null)) return null;\n if (reports.length !== value[\"reportCount\"]) return null;\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_RUN_REPORT_JSON_SCHEMA_VERSION,\n generatedAt: value[\"generatedAt\"],\n sourceReportCount: value[\"sourceReportCount\"],\n reportCount: value[\"reportCount\"],\n summary: value[\"summary\"],\n reports: reports.filter((report): report is AssistantWorkflowSerializedRunReport => report !== null),\n };\n}\n\nexport function runAssistantWorkflowRunReportReplayLines(\n input: AssistantWorkflowRunReportReplayLinesInput,\n options: AssistantWorkflowRunReportReplayLinesOptions = {},\n): AssistantWorkflowRunReportReplayLinesResult {\n const reportParse = parseAssistantWorkflowSerializedRunReportLines(input.reportLines);\n const runReportBatch = buildAssistantWorkflowRunReportBatchFromSerializedReports(reportParse.reports, options);\n const batch = serializeAssistantWorkflowSerializedRunReports(reportParse.reports, options);\n const planningProfileMigration = buildAssistantWorkflowPlanningProfileMigrationReport(runReportBatch, {\n ...(options.minPlanningProfileRunCount !== undefined\n ? { minRunCount: options.minPlanningProfileRunCount }\n : {}),\n ...(options.currentRuntimePlanningProfileIds !== undefined\n ? { currentRuntimeProfileIds: options.currentRuntimePlanningProfileIds }\n : {}),\n generatedAt: runReportBatch.generatedAt,\n });\n const planningProfileMigrationReviewArtifact = buildAssistantWorkflowPlanningProfileMigrationReviewArtifact(\n planningProfileMigration,\n {\n ...(options.migrationReviewTitle !== undefined ? { title: options.migrationReviewTitle } : {}),\n ...(options.migrationReviewPatchTargets !== undefined\n ? { patchTargets: options.migrationReviewPatchTargets }\n : {}),\n ...(options.migrationReviewRequiredTestIds !== undefined\n ? { requiredTestIds: options.migrationReviewRequiredTestIds }\n : {}),\n },\n );\n\n return {\n reportParse,\n parseErrorCount: reportParse.errorCount,\n batch,\n runReportBatch,\n planningProfileMigration,\n planningProfileMigrationReviewArtifact,\n };\n}\n\nexport function buildAssistantWorkflowRunReportReplayLinesTracePayload(\n result: AssistantWorkflowRunReportReplayLinesResult,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n reportParse: {\n lineCount: result.reportParse.lineCount,\n reportCount: result.reportParse.reportCount,\n errorCount: result.reportParse.errorCount,\n errors: result.reportParse.errors.map((error) => ({\n lineNumber: error.lineNumber,\n reason: error.reason,\n preview: error.preview,\n })),\n },\n parseErrorCount: result.parseErrorCount,\n batch: {\n generatedAt: result.batch.generatedAt,\n sourceReportCount: result.batch.sourceReportCount,\n reportCount: result.batch.reportCount,\n summary: result.batch.summary,\n },\n planningProfileMigration: toJsonRecord(\n buildAssistantWorkflowPlanningProfileMigrationReportTracePayload(result.planningProfileMigration),\n ),\n planningProfileMigrationReviewArtifact: toJsonRecord(\n buildAssistantWorkflowPlanningProfileMigrationReviewArtifactTracePayload(\n result.planningProfileMigrationReviewArtifact,\n ),\n ),\n };\n}\n\nfunction isInterestingReport(report: AssistantWorkflowRunReport): boolean {\n return report.status !== \"completed\" || report.evaluation.warningCount > 0 || report.evaluation.handled === false;\n}\n\nfunction isInterestingSerializedReport(report: AssistantWorkflowSerializedRunReport): boolean {\n return isInterestingSerializedRow(toSerializedBatchRow(report));\n}\n\nfunction isInterestingSerializedRow(\n row: AssistantWorkflowRunReportBatch[\"rows\"][number],\n): boolean {\n return row.status !== \"completed\" || row.warningCount > 0 || row.handled === false;\n}\n\nfunction isActionableDirectRouteSkipReason(value: string): boolean {\n return !value.endsWith(\":runtime_policy_disabled\") && !value.endsWith(\":runtime_disabled\");\n}\n\nfunction toSerializedBatchRow(\n report: AssistantWorkflowSerializedRunReport,\n): AssistantWorkflowRunReportBatch[\"rows\"][number] {\n return {\n workflowId: report.workflowId,\n workflowVersion: report.workflowVersion,\n status: report.status,\n intent: readOptionalString(report.evaluation[\"intent\"]),\n outcomeKind: readString(report.evaluation[\"outcomeKind\"], \"unknown\"),\n handled: readBoolean(report.evaluation[\"handled\"], false),\n toolResultStatus: readOptionalString(report.evaluation[\"toolResultStatus\"]),\n toolResultProviders: readSerializedToolResultProviders(report.toolExecution),\n activePlanningStepProfileIds: readStringArray(report.evaluation[\"activePlanningStepProfileIds\"]),\n profileStepIds: readStringArray(report.evaluation[\"profileStepIds\"]),\n directRouteDoneRoutes: readStringArray(report.evaluation[\"directRouteDoneRoutes\"]),\n directRouteRecoveredRoutes: readStringArray(report.evaluation[\"directRouteRecoveredRoutes\"]),\n directRouteErrorRoutes: readStringArray(report.evaluation[\"directRouteErrorRoutes\"]),\n directRouteSkipReasons: readStringArray(report.evaluation[\"directRouteSkipReasons\"]),\n directRouteGapReasons: readStringArray(report.evaluation[\"directRouteGapReasons\"]),\n directRouteObservedStrategies: readStringArray(report.evaluation[\"directRouteObservedStrategies\"]),\n directRouteUndeclaredStrategies: readStringArray(report.evaluation[\"directRouteUndeclaredStrategies\"]),\n memoryChangedSlots: readStringArray(report.evaluation[\"memoryChangedSlots\"]),\n memoryChangedProfileFields: readStringArray(report.evaluation[\"memoryChangedProfileFields\"]),\n memorySkippedPatchReasons: readStringArray(report.evaluation[\"memorySkippedPatchReasons\"]),\n threadProfileWriteSources: readStringArray(report.evaluation[\"threadProfileWriteSources\"]),\n threadProfileWriteReasons: readStringArray(report.evaluation[\"threadProfileWriteReasons\"]),\n threadProfileWriteChangedFields: readStringArray(report.evaluation[\"threadProfileWriteChangedFields\"]),\n signalCount: readNumber(report.evaluation[\"signalCount\"], 0),\n warningCount: readNumber(report.evaluation[\"warningCount\"], 0),\n signals: readRunEvaluationSignals(report.evaluation[\"signals\"]),\n };\n}\n\nfunction readSerializedToolResultProviders(\n toolExecution: Record<string, AssistantWorkflowJsonValue> | null,\n): string[] {\n if (!toolExecution || !Array.isArray(toolExecution[\"results\"])) return [];\n return toolExecution[\"results\"].flatMap((value) => {\n if (!isJsonRecord(value)) return [];\n const provider = readOptionalString(value[\"provider\"]);\n return provider ? [provider] : [];\n });\n}\n\nfunction readRunEvaluationSignals(value: AssistantWorkflowJsonValue | undefined): AssistantWorkflowRunEvaluationSignal[] {\n if (!Array.isArray(value)) return [];\n const signals: AssistantWorkflowRunEvaluationSignal[] = [];\n for (const item of value) {\n if (!isJsonRecord(item)) continue;\n const name = item[\"name\"];\n const severity = item[\"severity\"];\n if (!isRunEvaluationSignalName(name)) continue;\n if (severity !== \"info\" && severity !== \"warning\") continue;\n signals.push({\n name,\n severity,\n detail: readOptionalString(item[\"detail\"]),\n });\n }\n return signals;\n}\n\nfunction isRunEvaluationSignalName(value: unknown): value is AssistantWorkflowRunEvaluationSignalName {\n return (\n value === \"run_not_handled\" ||\n value === \"run_needs_clarification\" ||\n value === \"run_degraded\" ||\n value === \"run_failed\" ||\n value === \"missing_required_tools\" ||\n value === \"missing_tool_bindings\" ||\n value === \"missing_context\" ||\n value === \"clarification_policy_mismatch\" ||\n value === \"tool_execution_failed\" ||\n value === \"tool_execution_partial\" ||\n value === \"outcome_unhandled\"\n );\n}\n\nfunction readString(value: AssistantWorkflowJsonValue | undefined, fallback: string): string {\n return readAssistantWorkflowStringOrDefault(value, fallback, { trim: false });\n}\n\nfunction readOptionalString(value: AssistantWorkflowJsonValue | undefined): string | null {\n return readAssistantWorkflowString(value, { trim: false });\n}\n\nfunction normalizeGeneratedAt(value: string | undefined): string | null {\n if (value === undefined) return null;\n const trimmed = value.trim();\n return trimmed.length ? trimmed : null;\n}\n\nfunction previewLine(line: string): string {\n return line.length <= 160 ? line : `${line.slice(0, 157)}...`;\n}\n\nfunction toJsonRecord(value: unknown): Record<string, AssistantWorkflowJsonValue> {\n if (!isJsonRecord(value)) {\n throw new Error(\"Assistant workflow run report trace payload must be a JSON object.\");\n }\n return value;\n}\n\nfunction isRunReportStatus(value: unknown): value is AssistantWorkflowRunReportStatus {\n return (\n value === \"completed\" ||\n value === \"clarification\" ||\n value === \"degraded\" ||\n value === \"failed\" ||\n value === \"not_handled\"\n );\n}\n\nfunction isJsonRecord(value: unknown): value is Record<string, AssistantWorkflowJsonValue> {\n if (!isRecord(value)) return false;\n return Object.values(value).every(isJsonValue);\n}\n\nfunction isJsonValue(value: unknown): value is AssistantWorkflowJsonValue {\n if (value === null) return true;\n if (typeof value === \"string\" || typeof value === \"boolean\") return true;\n if (typeof value === \"number\") return Number.isFinite(value);\n if (Array.isArray(value)) return value.every(isJsonValue);\n return isJsonRecord(value);\n}\n\nfunction isNonNegativeFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0;\n}\n\nfunction uniqueNonEmptyStrings(values: readonly string[]): string[] {\n const result: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n const normalized = value.trim();\n if (!normalized.length || seen.has(normalized)) continue;\n seen.add(normalized);\n result.push(normalized);\n }\n return result;\n}\n\nfunction buildStringCounts(values: readonly string[]): AssistantWorkflowRunReportBatchCount[] {\n const counts = new Map<string, number>();\n for (const value of values) {\n if (!value.length) continue;\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n return [...counts.entries()]\n .map(([key, count]) => ({ key, count }))\n .sort((left, right) => {\n if (right.count !== left.count) return right.count - left.count;\n return left.key.localeCompare(right.key);\n });\n}\n\nfunction buildSignalCounts(\n signals: readonly AssistantWorkflowRunEvaluationSignal[],\n): AssistantWorkflowRunReportBatchSignalCount[] {\n const counts = new Map<string, AssistantWorkflowRunReportBatchSignalCount>();\n for (const signal of signals) {\n const current = counts.get(signal.name);\n if (current) {\n current.count += 1;\n if (signal.severity === \"warning\") current.severity = \"warning\";\n continue;\n }\n counts.set(signal.name, {\n name: signal.name,\n severity: signal.severity,\n count: 1,\n });\n }\n return [...counts.values()].sort((left, right) => {\n if (right.count !== left.count) return right.count - left.count;\n if (left.severity !== right.severity) return left.severity === \"warning\" ? -1 : 1;\n return left.name.localeCompare(right.name);\n });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AssistantWorkflowOutcome, type AssistantWorkflowOutcomeSummary } from "./outcome.js";
|
|
2
|
+
import { type AssistantWorkflowRun } from "./run.js";
|
|
3
|
+
import { type AssistantWorkflowRunEvaluation } from "./run-evaluation.js";
|
|
4
|
+
import { type AssistantWorkflowToolExecutionReport } from "./tool-executor.js";
|
|
5
|
+
export type AssistantWorkflowRunReportStatus = "completed" | "clarification" | "degraded" | "failed" | "not_handled";
|
|
6
|
+
export type AssistantWorkflowRunReport = {
|
|
7
|
+
workflowId: string;
|
|
8
|
+
workflowVersion: number;
|
|
9
|
+
status: AssistantWorkflowRunReportStatus;
|
|
10
|
+
run: AssistantWorkflowRun;
|
|
11
|
+
toolExecution: AssistantWorkflowToolExecutionReport | null;
|
|
12
|
+
outcome: AssistantWorkflowOutcome;
|
|
13
|
+
outcomeSummary: AssistantWorkflowOutcomeSummary;
|
|
14
|
+
evaluation: AssistantWorkflowRunEvaluation;
|
|
15
|
+
};
|
|
16
|
+
export declare function buildAssistantWorkflowRunReport(input: {
|
|
17
|
+
run: AssistantWorkflowRun;
|
|
18
|
+
outcome: AssistantWorkflowOutcome;
|
|
19
|
+
toolExecution?: AssistantWorkflowToolExecutionReport | null;
|
|
20
|
+
}): AssistantWorkflowRunReport;
|
|
21
|
+
export declare function buildAssistantWorkflowRunReportTracePayload(report: AssistantWorkflowRunReport): Record<string, unknown>;
|
|
22
|
+
//# sourceMappingURL=run-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EAErC,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,oCAAoC,EAC1C,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,gCAAgC,GACxC,WAAW,GACX,eAAe,GACf,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;AAElB,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,gCAAgC,CAAC;IACzC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,aAAa,EAAE,oCAAoC,GAAG,IAAI,CAAC;IAC3D,OAAO,EAAE,wBAAwB,CAAC;IAClC,cAAc,EAAE,+BAA+B,CAAC;IAChD,UAAU,EAAE,8BAA8B,CAAC;CAC5C,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,wBAAwB,CAAC;IAClC,aAAa,CAAC,EAAE,oCAAoC,GAAG,IAAI,CAAC;CAC7D,GAAG,0BAA0B,CAgB7B;AAED,wBAAgB,2CAA2C,CACzD,MAAM,EAAE,0BAA0B,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { buildAssistantWorkflowOutcomeTracePayload, summarizeAssistantWorkflowOutcome, } from "./outcome.js";
|
|
2
|
+
import { buildAssistantWorkflowRunTracePayload, } from "./run.js";
|
|
3
|
+
import { buildAssistantWorkflowRunEvaluationTracePayload, evaluateAssistantWorkflowRunReport, } from "./run-evaluation.js";
|
|
4
|
+
import { buildAssistantWorkflowToolExecutionTracePayload, } from "./tool-executor.js";
|
|
5
|
+
export function buildAssistantWorkflowRunReport(input) {
|
|
6
|
+
const outcomeSummary = summarizeAssistantWorkflowOutcome(input.outcome);
|
|
7
|
+
const reportWithoutEvaluation = {
|
|
8
|
+
workflowId: input.run.workflowId,
|
|
9
|
+
workflowVersion: input.run.workflowVersion,
|
|
10
|
+
status: resolveRunReportStatus(input.outcome, input.toolExecution ?? null),
|
|
11
|
+
run: input.run,
|
|
12
|
+
toolExecution: input.toolExecution ?? null,
|
|
13
|
+
outcome: input.outcome,
|
|
14
|
+
outcomeSummary,
|
|
15
|
+
};
|
|
16
|
+
const evaluation = evaluateAssistantWorkflowRunReport(reportWithoutEvaluation);
|
|
17
|
+
return {
|
|
18
|
+
...reportWithoutEvaluation,
|
|
19
|
+
evaluation,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function buildAssistantWorkflowRunReportTracePayload(report) {
|
|
23
|
+
return {
|
|
24
|
+
workflowId: report.workflowId,
|
|
25
|
+
workflowVersion: report.workflowVersion,
|
|
26
|
+
status: report.status,
|
|
27
|
+
run: buildAssistantWorkflowRunTracePayload(report.run),
|
|
28
|
+
toolExecution: report.toolExecution
|
|
29
|
+
? buildAssistantWorkflowToolExecutionTracePayload(report.toolExecution)
|
|
30
|
+
: null,
|
|
31
|
+
outcome: buildAssistantWorkflowOutcomeTracePayload(report.outcome),
|
|
32
|
+
evaluation: buildAssistantWorkflowRunEvaluationTracePayload(report.evaluation),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function resolveRunReportStatus(outcome, toolExecution) {
|
|
36
|
+
if (outcome.kind === "not_handled")
|
|
37
|
+
return "not_handled";
|
|
38
|
+
if (outcome.kind === "clarification")
|
|
39
|
+
return "clarification";
|
|
40
|
+
if (outcome.kind === "degraded")
|
|
41
|
+
return "degraded";
|
|
42
|
+
if (toolExecution?.summary.status === "failed")
|
|
43
|
+
return "failed";
|
|
44
|
+
return "completed";
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=run-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EAGzC,iCAAiC,GAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qCAAqC,GAEtC,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,GAEnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,+CAA+C,GAEhD,MAAM,oBAAoB,CAAC;AAoB5B,MAAM,UAAU,+BAA+B,CAAC,KAI/C;IACC,MAAM,cAAc,GAAG,iCAAiC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,uBAAuB,GAAG;QAC9B,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU;QAChC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe;QAC1C,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;QAC1E,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc;KACf,CAAC;IACF,MAAM,UAAU,GAAG,kCAAkC,CAAC,uBAAuB,CAAC,CAAC;IAC/E,OAAO;QACL,GAAG,uBAAuB;QAC1B,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2CAA2C,CACzD,MAAkC;IAElC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,qCAAqC,CAAC,MAAM,CAAC,GAAG,CAAC;QACtD,aAAa,EAAE,MAAM,CAAC,aAAa;YACjC,CAAC,CAAC,+CAA+C,CAAC,MAAM,CAAC,aAAa,CAAC;YACvE,CAAC,CAAC,IAAI;QACR,OAAO,EAAE,yCAAyC,CAAC,MAAM,CAAC,OAAO,CAAC;QAClE,UAAU,EAAE,+CAA+C,CAAC,MAAM,CAAC,UAAU,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAiC,EACjC,aAA0D;IAE1D,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACzD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,eAAe,CAAC;IAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACnD,IAAI,aAAa,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAChE,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import {\n buildAssistantWorkflowOutcomeTracePayload,\n type AssistantWorkflowOutcome,\n type AssistantWorkflowOutcomeSummary,\n summarizeAssistantWorkflowOutcome,\n} from \"./outcome.js\";\nimport {\n buildAssistantWorkflowRunTracePayload,\n type AssistantWorkflowRun,\n} from \"./run.js\";\nimport {\n buildAssistantWorkflowRunEvaluationTracePayload,\n evaluateAssistantWorkflowRunReport,\n type AssistantWorkflowRunEvaluation,\n} from \"./run-evaluation.js\";\nimport {\n buildAssistantWorkflowToolExecutionTracePayload,\n type AssistantWorkflowToolExecutionReport,\n} from \"./tool-executor.js\";\n\nexport type AssistantWorkflowRunReportStatus =\n | \"completed\"\n | \"clarification\"\n | \"degraded\"\n | \"failed\"\n | \"not_handled\";\n\nexport type AssistantWorkflowRunReport = {\n workflowId: string;\n workflowVersion: number;\n status: AssistantWorkflowRunReportStatus;\n run: AssistantWorkflowRun;\n toolExecution: AssistantWorkflowToolExecutionReport | null;\n outcome: AssistantWorkflowOutcome;\n outcomeSummary: AssistantWorkflowOutcomeSummary;\n evaluation: AssistantWorkflowRunEvaluation;\n};\n\nexport function buildAssistantWorkflowRunReport(input: {\n run: AssistantWorkflowRun;\n outcome: AssistantWorkflowOutcome;\n toolExecution?: AssistantWorkflowToolExecutionReport | null;\n}): AssistantWorkflowRunReport {\n const outcomeSummary = summarizeAssistantWorkflowOutcome(input.outcome);\n const reportWithoutEvaluation = {\n workflowId: input.run.workflowId,\n workflowVersion: input.run.workflowVersion,\n status: resolveRunReportStatus(input.outcome, input.toolExecution ?? null),\n run: input.run,\n toolExecution: input.toolExecution ?? null,\n outcome: input.outcome,\n outcomeSummary,\n };\n const evaluation = evaluateAssistantWorkflowRunReport(reportWithoutEvaluation);\n return {\n ...reportWithoutEvaluation,\n evaluation,\n };\n}\n\nexport function buildAssistantWorkflowRunReportTracePayload(\n report: AssistantWorkflowRunReport,\n): Record<string, unknown> {\n return {\n workflowId: report.workflowId,\n workflowVersion: report.workflowVersion,\n status: report.status,\n run: buildAssistantWorkflowRunTracePayload(report.run),\n toolExecution: report.toolExecution\n ? buildAssistantWorkflowToolExecutionTracePayload(report.toolExecution)\n : null,\n outcome: buildAssistantWorkflowOutcomeTracePayload(report.outcome),\n evaluation: buildAssistantWorkflowRunEvaluationTracePayload(report.evaluation),\n };\n}\n\nfunction resolveRunReportStatus(\n outcome: AssistantWorkflowOutcome,\n toolExecution: AssistantWorkflowToolExecutionReport | null,\n): AssistantWorkflowRunReportStatus {\n if (outcome.kind === \"not_handled\") return \"not_handled\";\n if (outcome.kind === \"clarification\") return \"clarification\";\n if (outcome.kind === \"degraded\") return \"degraded\";\n if (toolExecution?.summary.status === \"failed\") return \"failed\";\n return \"completed\";\n}\n"]}
|