@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 @@
|
|
|
1
|
+
{"version":3,"file":"definition-tuning-promotion.js","sourceRoot":"","sources":["../src/definition-tuning-promotion.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AssistantWorkflowDefinitionTuningReviewArtifact,\n AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary,\n} from \"./definition-tuning-review-artifact.js\";\nimport type { AssistantWorkflowJsonValue } from \"./run-report-json.js\";\nimport {\n readAssistantWorkflowBoolean as readBoolean,\n readAssistantWorkflowNumber as readNumber,\n readAssistantWorkflowRecord as readRecord,\n readAssistantWorkflowString,\n readAssistantWorkflowStringArray,\n} from \"./value-readers.js\";\n\nexport type AssistantWorkflowDefinitionTuningPromotionStatus =\n | \"promotable\"\n | \"needs_review\"\n | \"blocked\";\n\nexport type AssistantWorkflowDefinitionTuningPromotionReasonSeverity =\n | \"warning\"\n | \"blocked\";\n\nexport type AssistantWorkflowDefinitionTuningPromotionReasonCode =\n | \"workflow_id_mismatch\"\n | \"workflow_version_mismatch\"\n | \"patched_definition_invalid\"\n | \"missing_review_status\"\n | \"review_blocked\"\n | \"review_warning\"\n | \"no_change\"\n | \"missing_smoke\"\n | \"smoke_required_failures\"\n | \"smoke_failures\"\n | \"missing_applied_suggestion_details\"\n | \"unapproved_suggestions\"\n | \"deferred_review_signals\";\n\nexport type AssistantWorkflowDefinitionTuningPromotionReason = {\n severity: AssistantWorkflowDefinitionTuningPromotionReasonSeverity;\n code: AssistantWorkflowDefinitionTuningPromotionReasonCode;\n message: string;\n details: Record<string, AssistantWorkflowJsonValue>;\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionOptions = {\n expectedWorkflowId?: string;\n expectedFromVersion?: number;\n expectedToVersion?: number;\n allowReviewWarnings?: boolean;\n requireSmoke?: boolean;\n requireApprovedSuggestions?: boolean;\n approvedSuggestionIds?: readonly string[];\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionSummary = {\n workflowId: string;\n workflowVersion: number;\n reviewStatus: string | null;\n changed: boolean | null;\n fromVersion: number | null;\n toVersion: number | null;\n appliedCount: number | null;\n changedIntentCount: number | null;\n smokeCaseCount: number | null;\n smokeFailCount: number | null;\n smokeRequiredFailCount: number | null;\n patchedDefinitionValid: boolean;\n appliedSuggestionIds: string[];\n appliedSuggestionCount: number;\n};\n\ntype NormalizedPromotionOptions = {\n expectedWorkflowId: string;\n expectedFromVersion: number;\n expectedToVersion: number;\n allowReviewWarnings: boolean;\n requireSmoke: boolean;\n requireApprovedSuggestions: boolean;\n approvedSuggestionIds: string[];\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotion = {\n status: AssistantWorkflowDefinitionTuningPromotionStatus;\n summary: AssistantWorkflowDefinitionTuningPromotionSummary;\n options: NormalizedPromotionOptions;\n reasons: AssistantWorkflowDefinitionTuningPromotionReason[];\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBriefSuggestion = {\n id: string;\n action: string;\n intentId: string | null;\n toolName: string | null;\n count: number;\n requestIds: string[];\n rationale: string;\n suggestedAction: string;\n approved: boolean | null;\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBriefIntentChange = {\n intentId: string;\n addedToolHints: string[];\n addedPlanningSteps: string[];\n addedToolSelectionProfileIds: string[];\n addedPlanningStepProfileIds: string[];\n appliedSuggestions: AssistantWorkflowDefinitionTuningPromotionBriefSuggestion[];\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBriefDirectRouteChange = {\n routeId: string;\n addedStrategyIds: string[];\n appliedSuggestions: AssistantWorkflowDefinitionTuningPromotionBriefSuggestion[];\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBriefDeferredSuggestion = {\n id: string;\n action: string;\n intentId: string | null;\n toolName: string | null;\n signal: string | null;\n count: number;\n requestIds: string[];\n rationale: string;\n suggestedAction: string;\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBriefSkippedSuggestion = {\n id: string;\n reason: string;\n suggestion: AssistantWorkflowDefinitionTuningPromotionBriefDeferredSuggestion | null;\n};\n\nexport type AssistantWorkflowDefinitionTuningPromotionBrief = {\n workflowId: string;\n fromVersion: number | null;\n toVersion: number | null;\n status: AssistantWorkflowDefinitionTuningPromotionStatus;\n changedIntentCount: number;\n changedDirectRouteCount: number;\n addedToolHintCount: number;\n addedDirectRouteStrategyCount: number;\n appliedSuggestionCount: number;\n changes: AssistantWorkflowDefinitionTuningPromotionBriefIntentChange[];\n directRouteChanges: AssistantWorkflowDefinitionTuningPromotionBriefDirectRouteChange[];\n suggestionSummary: AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary;\n skippedSuggestions: AssistantWorkflowDefinitionTuningPromotionBriefSkippedSuggestion[];\n reviewOnlySuggestions: AssistantWorkflowDefinitionTuningPromotionBriefDeferredSuggestion[];\n reviewReasons: {\n severity: string;\n code: string;\n message: string;\n details: Record<string, AssistantWorkflowJsonValue>;\n }[];\n reasons: AssistantWorkflowDefinitionTuningPromotionReason[];\n};\n\nexport function buildAssistantWorkflowDefinitionTuningPromotion(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n options: AssistantWorkflowDefinitionTuningPromotionOptions = {},\n): AssistantWorkflowDefinitionTuningPromotion {\n const normalizedOptions = normalizePromotionOptions(artifact, options);\n const summary = buildPromotionSummary(artifact);\n const reasons = buildPromotionReasons(artifact, summary, normalizedOptions);\n const status = reasons.some((reason) => reason.severity === \"blocked\")\n ? \"blocked\"\n : reasons.some((reason) => reason.severity === \"warning\")\n ? \"needs_review\"\n : \"promotable\";\n\n return {\n status,\n summary,\n options: normalizedOptions,\n reasons,\n };\n}\n\nexport function buildAssistantWorkflowDefinitionTuningPromotionBrief(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n promotion: AssistantWorkflowDefinitionTuningPromotion = buildAssistantWorkflowDefinitionTuningPromotion(artifact),\n): AssistantWorkflowDefinitionTuningPromotionBrief {\n const intentDiffs = readIntentDiffs(artifact);\n const directRouteDiffs = readDirectRouteDiffs(artifact);\n const approvedIds = promotion.options.requireApprovedSuggestions\n ? new Set(promotion.options.approvedSuggestionIds)\n : null;\n const appliedSuggestions = artifact.suggestions.applied.map((suggestion) => ({\n id: suggestion.id,\n action: suggestion.action,\n intentId: suggestion.intentId,\n toolName: suggestion.toolName,\n count: suggestion.count,\n requestIds: [...suggestion.requestIds],\n rationale: suggestion.rationale,\n suggestedAction: suggestion.suggestedAction,\n approved: approvedIds ? approvedIds.has(suggestion.id) : null,\n }));\n const suggestionsByIntent = new Map<string, AssistantWorkflowDefinitionTuningPromotionBriefSuggestion[]>();\n const suggestionsByDirectRoute = new Map<string, AssistantWorkflowDefinitionTuningPromotionBriefSuggestion[]>();\n\n for (const suggestion of appliedSuggestions) {\n if (suggestion.action === \"add_direct_route_strategy\" && suggestion.intentId) {\n const suggestions = suggestionsByDirectRoute.get(suggestion.intentId) ?? [];\n suggestions.push(suggestion);\n suggestionsByDirectRoute.set(suggestion.intentId, suggestions);\n continue;\n }\n if (suggestion.intentId) {\n const suggestions = suggestionsByIntent.get(suggestion.intentId) ?? [];\n suggestions.push(suggestion);\n suggestionsByIntent.set(suggestion.intentId, suggestions);\n }\n }\n\n const changes = intentDiffs.map((intentDiff) => ({\n intentId: intentDiff.intentId,\n addedToolHints: intentDiff.addedToolHints,\n addedPlanningSteps: intentDiff.addedPlanningSteps,\n addedToolSelectionProfileIds: intentDiff.addedToolSelectionProfileIds,\n addedPlanningStepProfileIds: intentDiff.addedPlanningStepProfileIds,\n appliedSuggestions: suggestionsByIntent.get(intentDiff.intentId) ?? [],\n }));\n const directRouteChanges = directRouteDiffs.map((routeDiff) => ({\n routeId: routeDiff.routeId,\n addedStrategyIds: routeDiff.addedStrategyIds,\n appliedSuggestions: suggestionsByDirectRoute.get(routeDiff.routeId) ?? [],\n }));\n\n return {\n workflowId: artifact.workflowId,\n fromVersion: promotion.summary.fromVersion,\n toVersion: promotion.summary.toVersion,\n status: promotion.status,\n changedIntentCount: changes.length,\n changedDirectRouteCount: directRouteChanges.length,\n addedToolHintCount: changes.reduce((total, change) => total + change.addedToolHints.length, 0),\n addedDirectRouteStrategyCount: directRouteChanges.reduce(\n (total, change) => total + change.addedStrategyIds.length,\n 0,\n ),\n appliedSuggestionCount: appliedSuggestions.length,\n changes,\n directRouteChanges,\n suggestionSummary: cloneSuggestionSummary(artifact.suggestions.summary),\n skippedSuggestions: artifact.suggestions.skipped.map((skipped) => ({\n id: skipped.id,\n reason: skipped.reason,\n suggestion: skipped.suggestion ? toBriefDeferredSuggestion(skipped.suggestion) : null,\n })),\n reviewOnlySuggestions: artifact.suggestions.reviewOnly.map(toBriefDeferredSuggestion),\n reviewReasons: readReviewReasons(artifact),\n reasons: promotion.reasons,\n };\n}\n\nexport function buildAssistantWorkflowDefinitionTuningPromotionBriefTracePayload(\n brief: AssistantWorkflowDefinitionTuningPromotionBrief,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n workflowId: brief.workflowId,\n fromVersion: brief.fromVersion,\n toVersion: brief.toVersion,\n status: brief.status,\n changedIntentCount: brief.changedIntentCount,\n changedDirectRouteCount: brief.changedDirectRouteCount,\n addedToolHintCount: brief.addedToolHintCount,\n addedDirectRouteStrategyCount: brief.addedDirectRouteStrategyCount,\n appliedSuggestionCount: brief.appliedSuggestionCount,\n changes: brief.changes.map((change) => ({\n intentId: change.intentId,\n addedToolHints: change.addedToolHints,\n addedPlanningSteps: change.addedPlanningSteps,\n addedToolSelectionProfileIds: change.addedToolSelectionProfileIds,\n addedPlanningStepProfileIds: change.addedPlanningStepProfileIds,\n appliedSuggestions: change.appliedSuggestions.map((suggestion) => ({\n id: suggestion.id,\n action: suggestion.action,\n intentId: suggestion.intentId,\n toolName: suggestion.toolName,\n count: suggestion.count,\n requestIds: suggestion.requestIds,\n rationale: suggestion.rationale,\n suggestedAction: suggestion.suggestedAction,\n approved: suggestion.approved,\n })),\n })),\n directRouteChanges: brief.directRouteChanges.map((change) => ({\n routeId: change.routeId,\n addedStrategyIds: change.addedStrategyIds,\n appliedSuggestions: change.appliedSuggestions.map((suggestion) => ({\n id: suggestion.id,\n action: suggestion.action,\n intentId: suggestion.intentId,\n toolName: suggestion.toolName,\n count: suggestion.count,\n requestIds: suggestion.requestIds,\n rationale: suggestion.rationale,\n suggestedAction: suggestion.suggestedAction,\n approved: suggestion.approved,\n })),\n })),\n suggestionSummary: {\n appliedCount: brief.suggestionSummary.appliedCount,\n skippedCount: brief.suggestionSummary.skippedCount,\n reviewOnlyCount: brief.suggestionSummary.reviewOnlyCount,\n skipReasonCounts: brief.suggestionSummary.skipReasonCounts.map((count) => ({\n key: count.key,\n count: count.count,\n })),\n reviewOnlyActionCounts: brief.suggestionSummary.reviewOnlyActionCounts.map((count) => ({\n key: count.key,\n count: count.count,\n })),\n reviewOnlySignalCounts: brief.suggestionSummary.reviewOnlySignalCounts.map((count) => ({\n key: count.key,\n count: count.count,\n })),\n },\n skippedSuggestions: brief.skippedSuggestions.map((skipped) => ({\n id: skipped.id,\n reason: skipped.reason,\n suggestion: skipped.suggestion ? serializeBriefDeferredSuggestion(skipped.suggestion) : null,\n })),\n reviewOnlySuggestions: brief.reviewOnlySuggestions.map(serializeBriefDeferredSuggestion),\n reviewReasons: brief.reviewReasons.map((reason) => ({\n severity: reason.severity,\n code: reason.code,\n message: reason.message,\n details: reason.details,\n })),\n reasons: brief.reasons.map((reason) => ({\n severity: reason.severity,\n code: reason.code,\n message: reason.message,\n details: reason.details,\n })),\n };\n}\n\nfunction toBriefDeferredSuggestion(\n suggestion: AssistantWorkflowDefinitionTuningReviewArtifact[\"suggestions\"][\"reviewOnly\"][number],\n): AssistantWorkflowDefinitionTuningPromotionBriefDeferredSuggestion {\n return {\n id: suggestion.id,\n action: suggestion.action,\n intentId: suggestion.intentId,\n toolName: suggestion.toolName,\n signal: suggestion.signal,\n count: suggestion.count,\n requestIds: [...suggestion.requestIds],\n rationale: suggestion.rationale,\n suggestedAction: suggestion.suggestedAction,\n };\n}\n\nfunction serializeBriefDeferredSuggestion(\n suggestion: AssistantWorkflowDefinitionTuningPromotionBriefDeferredSuggestion,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n id: suggestion.id,\n action: suggestion.action,\n intentId: suggestion.intentId,\n toolName: suggestion.toolName,\n signal: suggestion.signal,\n count: suggestion.count,\n requestIds: suggestion.requestIds,\n rationale: suggestion.rationale,\n suggestedAction: suggestion.suggestedAction,\n };\n}\n\nfunction cloneSuggestionSummary(\n summary: AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary,\n): AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary {\n return {\n appliedCount: summary.appliedCount,\n skippedCount: summary.skippedCount,\n reviewOnlyCount: summary.reviewOnlyCount,\n skipReasonCounts: summary.skipReasonCounts.map((count) => ({ ...count })),\n reviewOnlyActionCounts: summary.reviewOnlyActionCounts.map((count) => ({ ...count })),\n reviewOnlySignalCounts: summary.reviewOnlySignalCounts.map((count) => ({ ...count })),\n };\n}\n\nfunction readReviewReasons(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n): AssistantWorkflowDefinitionTuningPromotionBrief[\"reviewReasons\"] {\n const rawReasons = artifact.review[\"reasons\"];\n if (!Array.isArray(rawReasons)) return [];\n return rawReasons.flatMap((value) => {\n const rawReason = readRecord(value);\n if (!rawReason) return [];\n const severity = readString(rawReason[\"severity\"]);\n const code = readString(rawReason[\"code\"]);\n const message = readString(rawReason[\"message\"]);\n const details = readRecord<Record<string, AssistantWorkflowJsonValue>>(rawReason[\"details\"]) ?? {};\n if (!severity || !code || !message) return [];\n return [{ severity, code, message, details }];\n });\n}\n\nexport function buildAssistantWorkflowDefinitionTuningPromotionTracePayload(\n promotion: AssistantWorkflowDefinitionTuningPromotion,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n status: promotion.status,\n summary: {\n workflowId: promotion.summary.workflowId,\n workflowVersion: promotion.summary.workflowVersion,\n reviewStatus: promotion.summary.reviewStatus,\n changed: promotion.summary.changed,\n fromVersion: promotion.summary.fromVersion,\n toVersion: promotion.summary.toVersion,\n appliedCount: promotion.summary.appliedCount,\n changedIntentCount: promotion.summary.changedIntentCount,\n smokeCaseCount: promotion.summary.smokeCaseCount,\n smokeFailCount: promotion.summary.smokeFailCount,\n smokeRequiredFailCount: promotion.summary.smokeRequiredFailCount,\n patchedDefinitionValid: promotion.summary.patchedDefinitionValid,\n appliedSuggestionIds: promotion.summary.appliedSuggestionIds,\n appliedSuggestionCount: promotion.summary.appliedSuggestionCount,\n },\n options: {\n expectedWorkflowId: promotion.options.expectedWorkflowId,\n expectedFromVersion: promotion.options.expectedFromVersion,\n expectedToVersion: promotion.options.expectedToVersion,\n allowReviewWarnings: promotion.options.allowReviewWarnings,\n requireSmoke: promotion.options.requireSmoke,\n requireApprovedSuggestions: promotion.options.requireApprovedSuggestions,\n approvedSuggestionIds: promotion.options.approvedSuggestionIds,\n },\n reasons: promotion.reasons.map((reason) => ({\n severity: reason.severity,\n code: reason.code,\n message: reason.message,\n details: reason.details,\n })),\n };\n}\n\nfunction readIntentDiffs(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n): {\n intentId: string;\n addedToolHints: string[];\n addedPlanningSteps: string[];\n addedToolSelectionProfileIds: string[];\n addedPlanningStepProfileIds: string[];\n}[] {\n const diff = readRecord(artifact.apply[\"diff\"]);\n const intentDiffs = diff?.[\"intentDiffs\"];\n if (!Array.isArray(intentDiffs)) return [];\n\n return intentDiffs.flatMap((value) => {\n const intentDiff = readRecord(value);\n if (!intentDiff) return [];\n const intentId = readString(intentDiff[\"intentId\"]);\n const addedToolHints = readStringArray(intentDiff[\"addedToolHints\"]);\n const addedPlanningSteps = readStringArray(intentDiff[\"addedPlanningSteps\"]);\n const addedToolSelectionProfileIds = readStringArray(intentDiff[\"addedToolSelectionProfileIds\"]);\n const addedPlanningStepProfileIds = readStringArray(intentDiff[\"addedPlanningStepProfileIds\"]);\n if (\n !intentId ||\n (\n addedToolHints.length === 0 &&\n addedPlanningSteps.length === 0 &&\n addedToolSelectionProfileIds.length === 0 &&\n addedPlanningStepProfileIds.length === 0\n )\n ) {\n return [];\n }\n return [{\n intentId,\n addedToolHints,\n addedPlanningSteps,\n addedToolSelectionProfileIds,\n addedPlanningStepProfileIds,\n }];\n });\n}\n\nfunction readDirectRouteDiffs(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n): {\n routeId: string;\n addedStrategyIds: string[];\n}[] {\n const diff = readRecord(artifact.apply[\"diff\"]);\n const directRouteDiffs = diff?.[\"directRouteDiffs\"];\n if (!Array.isArray(directRouteDiffs)) return [];\n\n return directRouteDiffs.flatMap((value) => {\n const routeDiff = readRecord(value);\n if (!routeDiff) return [];\n const routeId = readString(routeDiff[\"routeId\"]);\n const addedStrategyIds = readStringArray(routeDiff[\"addedStrategyIds\"]);\n if (!routeId || addedStrategyIds.length === 0) return [];\n return [{\n routeId,\n addedStrategyIds,\n }];\n });\n}\n\nfunction buildPromotionSummary(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n): AssistantWorkflowDefinitionTuningPromotionSummary {\n const reviewSummary = readRecord(artifact.review[\"summary\"]);\n const smoke = readRecord(artifact.smoke);\n const smokeSummary = smoke ? readRecord(smoke[\"summary\"]) : null;\n const applyDiff = readRecord(artifact.apply[\"diff\"]);\n\n return {\n workflowId: artifact.workflowId,\n workflowVersion: artifact.workflowVersion,\n reviewStatus: readString(artifact.review[\"status\"]),\n changed: readBoolean(artifact.apply[\"changed\"]),\n fromVersion: applyDiff ? readNumber(applyDiff[\"fromVersion\"]) : null,\n toVersion: applyDiff ? readNumber(applyDiff[\"toVersion\"]) : null,\n appliedCount: readNumber(artifact.apply[\"appliedCount\"]),\n changedIntentCount: reviewSummary ? readNumber(reviewSummary[\"changedIntentCount\"]) : null,\n smokeCaseCount: smokeSummary ? readNumber(smokeSummary[\"caseCount\"]) : null,\n smokeFailCount: smokeSummary ? readNumber(smokeSummary[\"failCount\"]) : null,\n smokeRequiredFailCount: smokeSummary ? readNumber(smokeSummary[\"requiredFailCount\"]) : null,\n patchedDefinitionValid: artifact.patchedDefinition.summary.valid,\n appliedSuggestionIds: artifact.suggestions.applied.map((suggestion) => suggestion.id),\n appliedSuggestionCount: artifact.suggestions.applied.length,\n };\n}\n\nfunction buildPromotionReasons(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n summary: AssistantWorkflowDefinitionTuningPromotionSummary,\n options: NormalizedPromotionOptions,\n): AssistantWorkflowDefinitionTuningPromotionReason[] {\n const reasons: AssistantWorkflowDefinitionTuningPromotionReason[] = [];\n\n if (summary.workflowId !== options.expectedWorkflowId) {\n reasons.push(reason(\n \"blocked\",\n \"workflow_id_mismatch\",\n `Artifact workflow id ${summary.workflowId} does not match expected workflow id ${options.expectedWorkflowId}.`,\n {\n workflowId: summary.workflowId,\n expectedWorkflowId: options.expectedWorkflowId,\n },\n ));\n }\n\n if (summary.fromVersion !== options.expectedFromVersion) {\n reasons.push(reason(\n \"blocked\",\n \"workflow_version_mismatch\",\n `Artifact source version ${summary.fromVersion ?? \"unknown\"} does not match expected source version ${options.expectedFromVersion}.`,\n {\n fromVersion: summary.fromVersion,\n expectedFromVersion: options.expectedFromVersion,\n },\n ));\n }\n\n if (summary.toVersion !== options.expectedToVersion || summary.workflowVersion !== options.expectedToVersion) {\n reasons.push(reason(\n \"blocked\",\n \"workflow_version_mismatch\",\n `Artifact target version ${summary.toVersion ?? \"unknown\"} does not match expected target version ${options.expectedToVersion}.`,\n {\n workflowVersion: summary.workflowVersion,\n toVersion: summary.toVersion,\n expectedToVersion: options.expectedToVersion,\n },\n ));\n }\n\n if (!summary.patchedDefinitionValid) {\n reasons.push(reason(\n \"blocked\",\n \"patched_definition_invalid\",\n \"Patched workflow definition is not valid.\",\n {},\n ));\n }\n\n if (summary.reviewStatus === null) {\n reasons.push(reason(\n \"blocked\",\n \"missing_review_status\",\n \"Review artifact does not contain a review status.\",\n {},\n ));\n } else if (summary.reviewStatus === \"blocked\") {\n reasons.push(reason(\n \"blocked\",\n \"review_blocked\",\n \"Review decision is blocked.\",\n {\n reviewStatus: summary.reviewStatus,\n },\n ));\n } else if (summary.reviewStatus === \"warning\" && !options.allowReviewWarnings) {\n reasons.push(reason(\n \"warning\",\n \"review_warning\",\n \"Review decision contains warnings and warning promotion is not allowed.\",\n {\n reviewStatus: summary.reviewStatus,\n },\n ));\n }\n\n if (summary.changed !== true) {\n reasons.push(reason(\n \"blocked\",\n \"no_change\",\n \"Artifact does not contain an applied definition change.\",\n {\n changed: summary.changed,\n },\n ));\n }\n\n if (options.requireSmoke && summary.smokeCaseCount === null) {\n reasons.push(reason(\n \"blocked\",\n \"missing_smoke\",\n \"Promotion requires smoke results, but the artifact does not contain a smoke summary.\",\n {},\n ));\n }\n\n if ((summary.smokeRequiredFailCount ?? 0) > 0) {\n reasons.push(reason(\n \"blocked\",\n \"smoke_required_failures\",\n `${summary.smokeRequiredFailCount} required smoke cases failed.`,\n {\n smokeRequiredFailCount: summary.smokeRequiredFailCount,\n },\n ));\n } else if ((summary.smokeFailCount ?? 0) > 0) {\n reasons.push(reason(\n \"warning\",\n \"smoke_failures\",\n `${summary.smokeFailCount} optional smoke cases failed.`,\n {\n smokeFailCount: summary.smokeFailCount,\n },\n ));\n }\n\n if (options.requireApprovedSuggestions) {\n if ((summary.appliedCount ?? 0) > 0 && summary.appliedSuggestionIds.length === 0) {\n reasons.push(reason(\n \"blocked\",\n \"missing_applied_suggestion_details\",\n \"Promotion requires approved suggestion ids, but the artifact does not include applied suggestion details.\",\n {\n appliedCount: summary.appliedCount,\n },\n ));\n } else {\n const approvedIds = new Set(options.approvedSuggestionIds);\n const unapprovedSuggestionIds = summary.appliedSuggestionIds.filter((id) => !approvedIds.has(id));\n if (unapprovedSuggestionIds.length > 0) {\n reasons.push(reason(\n \"blocked\",\n \"unapproved_suggestions\",\n `${unapprovedSuggestionIds.length} applied suggestion(s) are not approved for promotion.`,\n {\n unapprovedSuggestionIds,\n approvedSuggestionIds: options.approvedSuggestionIds,\n },\n ));\n }\n }\n }\n\n if (!options.allowReviewWarnings) {\n const deferredSignals = buildDeferredReviewSignalWarnings(artifact);\n if (deferredSignals.length > 0) {\n reasons.push(reason(\n \"warning\",\n \"deferred_review_signals\",\n `${deferredSignals.length} intent(s) have applied suggestions alongside deferred review-only trace signals.`,\n {\n intents: deferredSignals,\n },\n ));\n }\n }\n\n return reasons;\n}\n\nfunction buildDeferredReviewSignalWarnings(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n): Record<string, AssistantWorkflowJsonValue>[] {\n const appliedIntentIds = new Set(\n artifact.suggestions.applied\n .map((suggestion) => suggestion.intentId)\n .filter((intentId): intentId is string => typeof intentId === \"string\" && intentId.length > 0),\n );\n const signalsByIntent = new Map<string, Set<string>>();\n\n for (const suggestion of artifact.suggestions.reviewOnly) {\n if (!suggestion.intentId || !appliedIntentIds.has(suggestion.intentId)) continue;\n const signals = signalsByIntent.get(suggestion.intentId) ?? new Set<string>();\n signals.add(suggestion.signal ?? suggestion.action);\n signalsByIntent.set(suggestion.intentId, signals);\n }\n\n return [...signalsByIntent.entries()]\n .map(([intentId, signals]) => ({\n intentId,\n signals: [...signals].sort(),\n }))\n .sort((left, right) => String(left.intentId).localeCompare(String(right.intentId)));\n}\n\nfunction reason(\n severity: AssistantWorkflowDefinitionTuningPromotionReasonSeverity,\n code: AssistantWorkflowDefinitionTuningPromotionReasonCode,\n message: string,\n details: Record<string, AssistantWorkflowJsonValue>,\n): AssistantWorkflowDefinitionTuningPromotionReason {\n return { severity, code, message, details };\n}\n\nfunction normalizePromotionOptions(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n options: AssistantWorkflowDefinitionTuningPromotionOptions,\n): NormalizedPromotionOptions {\n const applyDiff = readRecord(artifact.apply[\"diff\"]);\n const fromVersion = applyDiff ? readNumber(applyDiff[\"fromVersion\"]) : null;\n const toVersion = applyDiff ? readNumber(applyDiff[\"toVersion\"]) : null;\n\n return {\n expectedWorkflowId: options.expectedWorkflowId ?? artifact.workflowId,\n expectedFromVersion: options.expectedFromVersion ?? fromVersion ?? artifact.workflowVersion - 1,\n expectedToVersion: options.expectedToVersion ?? toVersion ?? artifact.workflowVersion,\n allowReviewWarnings: options.allowReviewWarnings === true,\n requireSmoke: options.requireSmoke !== false,\n requireApprovedSuggestions: options.requireApprovedSuggestions === true,\n approvedSuggestionIds: uniqueStrings(options.approvedSuggestionIds ?? []),\n };\n}\n\nfunction readString(value: unknown): string | null {\n return readAssistantWorkflowString(value, { trim: false, allowEmpty: true });\n}\n\nfunction readStringArray(value: unknown): string[] {\n return readAssistantWorkflowStringArray(value, { trim: false, allowEmpty: true, unique: false });\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n const out: string[] = [];\n for (const value of values) {\n if (!value.length || out.includes(value)) continue;\n out.push(value);\n }\n return out;\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AssistantWorkflowSerializedDefinitionTuningBatch, type AssistantWorkflowSerializedDefinitionTuningBatchOptions, type AssistantWorkflowSerializedDefinitionTuningSuggestionLinesParseResult } from "./definition-tuning-json.js";
|
|
2
|
+
import type { AssistantWorkflowJsonValue } from "./run-report-json.js";
|
|
3
|
+
export type AssistantWorkflowDefinitionTuningReplayLinesOptions = AssistantWorkflowSerializedDefinitionTuningBatchOptions;
|
|
4
|
+
export type AssistantWorkflowDefinitionTuningReplayLinesInput = {
|
|
5
|
+
suggestionLines: string;
|
|
6
|
+
};
|
|
7
|
+
export type AssistantWorkflowDefinitionTuningReplayLinesResult = {
|
|
8
|
+
suggestionParse: AssistantWorkflowSerializedDefinitionTuningSuggestionLinesParseResult;
|
|
9
|
+
parseErrorCount: number;
|
|
10
|
+
batch: AssistantWorkflowSerializedDefinitionTuningBatch;
|
|
11
|
+
};
|
|
12
|
+
export declare function runAssistantWorkflowDefinitionTuningReplayLines(input: AssistantWorkflowDefinitionTuningReplayLinesInput, options?: AssistantWorkflowDefinitionTuningReplayLinesOptions): AssistantWorkflowDefinitionTuningReplayLinesResult;
|
|
13
|
+
export declare function buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload(result: AssistantWorkflowDefinitionTuningReplayLinesResult): Record<string, AssistantWorkflowJsonValue>;
|
|
14
|
+
//# sourceMappingURL=definition-tuning-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-tuning-replay.d.ts","sourceRoot":"","sources":["../src/definition-tuning-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gDAAgD,EAErD,KAAK,uDAAuD,EAC5D,KAAK,qEAAqE,EAC3E,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,mDAAmD,GAC7D,uDAAuD,CAAC;AAE1D,MAAM,MAAM,iDAAiD,GAAG;IAC9D,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kDAAkD,GAAG;IAC/D,eAAe,EAAE,qEAAqE,CAAC;IACvF,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,gDAAgD,CAAC;CACzD,CAAC;AAEF,wBAAgB,+CAA+C,CAC7D,KAAK,EAAE,iDAAiD,EACxD,OAAO,GAAE,mDAAwD,GAChE,kDAAkD,CAYpD;AAED,wBAAgB,6DAA6D,CAC3E,MAAM,EAAE,kDAAkD,GACzD,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAgC5C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { buildAssistantWorkflowSerializedDefinitionTuningBatch, parseAssistantWorkflowSerializedDefinitionTuningSuggestionLines, } from "./definition-tuning-json.js";
|
|
2
|
+
export function runAssistantWorkflowDefinitionTuningReplayLines(input, options = {}) {
|
|
3
|
+
const suggestionParse = parseAssistantWorkflowSerializedDefinitionTuningSuggestionLines(input.suggestionLines);
|
|
4
|
+
const batch = buildAssistantWorkflowSerializedDefinitionTuningBatch(suggestionParse.suggestions, options);
|
|
5
|
+
return {
|
|
6
|
+
suggestionParse,
|
|
7
|
+
parseErrorCount: suggestionParse.errorCount,
|
|
8
|
+
batch,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload(result) {
|
|
12
|
+
return {
|
|
13
|
+
suggestionParse: {
|
|
14
|
+
lineCount: result.suggestionParse.lineCount,
|
|
15
|
+
suggestionCount: result.suggestionParse.suggestionCount,
|
|
16
|
+
errorCount: result.suggestionParse.errorCount,
|
|
17
|
+
errors: result.suggestionParse.errors.map((error) => ({
|
|
18
|
+
lineNumber: error.lineNumber,
|
|
19
|
+
reason: error.reason,
|
|
20
|
+
preview: error.preview,
|
|
21
|
+
})),
|
|
22
|
+
},
|
|
23
|
+
parseErrorCount: result.parseErrorCount,
|
|
24
|
+
batch: {
|
|
25
|
+
generatedAt: result.batch.generatedAt,
|
|
26
|
+
sourceSuggestionCount: result.batch.sourceSuggestionCount,
|
|
27
|
+
suggestionCount: result.batch.suggestionCount,
|
|
28
|
+
summary: {
|
|
29
|
+
generatedAt: result.batch.summary.generatedAt,
|
|
30
|
+
sourceSuggestionCount: result.batch.summary.sourceSuggestionCount,
|
|
31
|
+
suggestionCount: result.batch.summary.suggestionCount,
|
|
32
|
+
applicableSuggestionCount: result.batch.summary.applicableSuggestionCount,
|
|
33
|
+
reviewOnlySuggestionCount: result.batch.summary.reviewOnlySuggestionCount,
|
|
34
|
+
warningCount: result.batch.summary.warningCount,
|
|
35
|
+
actionCounts: serializeCounts(result.batch.summary.actionCounts),
|
|
36
|
+
severityCounts: serializeCounts(result.batch.summary.severityCounts),
|
|
37
|
+
patchKindCounts: serializeCounts(result.batch.summary.patchKindCounts),
|
|
38
|
+
intentCounts: serializeCounts(result.batch.summary.intentCounts),
|
|
39
|
+
toolCounts: serializeCounts(result.batch.summary.toolCounts),
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function serializeCounts(counts) {
|
|
45
|
+
return counts.map((count) => ({
|
|
46
|
+
key: count.key,
|
|
47
|
+
count: count.count,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=definition-tuning-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-tuning-replay.js","sourceRoot":"","sources":["../src/definition-tuning-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qDAAqD,EACrD,+DAA+D,GAKhE,MAAM,6BAA6B,CAAC;AAgBrC,MAAM,UAAU,+CAA+C,CAC7D,KAAwD,EACxD,UAA+D,EAAE;IAEjE,MAAM,eAAe,GAAG,+DAA+D,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,qDAAqD,CACjE,eAAe,CAAC,WAAW,EAC3B,OAAO,CACR,CAAC;IAEF,OAAO;QACL,eAAe;QACf,eAAe,EAAE,eAAe,CAAC,UAAU;QAC3C,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6DAA6D,CAC3E,MAA0D;IAE1D,OAAO;QACL,eAAe,EAAE;YACf,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,SAAS;YAC3C,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,eAAe;YACvD,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,UAAU;YAC7C,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;SACJ;QACD,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,KAAK,EAAE;YACL,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;YACrC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB;YACzD,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;YAC7C,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;gBAC7C,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB;gBACjE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe;gBACrD,yBAAyB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB;gBACzE,yBAAyB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB;gBACzE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC/C,YAAY,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAChE,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;gBACpE,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;gBACtE,YAAY,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAChE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;aAC7D;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,MAAwE;IAExE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {\n buildAssistantWorkflowSerializedDefinitionTuningBatch,\n parseAssistantWorkflowSerializedDefinitionTuningSuggestionLines,\n type AssistantWorkflowSerializedDefinitionTuningBatch,\n type AssistantWorkflowSerializedDefinitionTuningBatchCount,\n type AssistantWorkflowSerializedDefinitionTuningBatchOptions,\n type AssistantWorkflowSerializedDefinitionTuningSuggestionLinesParseResult,\n} from \"./definition-tuning-json.js\";\nimport type { AssistantWorkflowJsonValue } from \"./run-report-json.js\";\n\nexport type AssistantWorkflowDefinitionTuningReplayLinesOptions =\n AssistantWorkflowSerializedDefinitionTuningBatchOptions;\n\nexport type AssistantWorkflowDefinitionTuningReplayLinesInput = {\n suggestionLines: string;\n};\n\nexport type AssistantWorkflowDefinitionTuningReplayLinesResult = {\n suggestionParse: AssistantWorkflowSerializedDefinitionTuningSuggestionLinesParseResult;\n parseErrorCount: number;\n batch: AssistantWorkflowSerializedDefinitionTuningBatch;\n};\n\nexport function runAssistantWorkflowDefinitionTuningReplayLines(\n input: AssistantWorkflowDefinitionTuningReplayLinesInput,\n options: AssistantWorkflowDefinitionTuningReplayLinesOptions = {},\n): AssistantWorkflowDefinitionTuningReplayLinesResult {\n const suggestionParse = parseAssistantWorkflowSerializedDefinitionTuningSuggestionLines(input.suggestionLines);\n const batch = buildAssistantWorkflowSerializedDefinitionTuningBatch(\n suggestionParse.suggestions,\n options,\n );\n\n return {\n suggestionParse,\n parseErrorCount: suggestionParse.errorCount,\n batch,\n };\n}\n\nexport function buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload(\n result: AssistantWorkflowDefinitionTuningReplayLinesResult,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n suggestionParse: {\n lineCount: result.suggestionParse.lineCount,\n suggestionCount: result.suggestionParse.suggestionCount,\n errorCount: result.suggestionParse.errorCount,\n errors: result.suggestionParse.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 sourceSuggestionCount: result.batch.sourceSuggestionCount,\n suggestionCount: result.batch.suggestionCount,\n summary: {\n generatedAt: result.batch.summary.generatedAt,\n sourceSuggestionCount: result.batch.summary.sourceSuggestionCount,\n suggestionCount: result.batch.summary.suggestionCount,\n applicableSuggestionCount: result.batch.summary.applicableSuggestionCount,\n reviewOnlySuggestionCount: result.batch.summary.reviewOnlySuggestionCount,\n warningCount: result.batch.summary.warningCount,\n actionCounts: serializeCounts(result.batch.summary.actionCounts),\n severityCounts: serializeCounts(result.batch.summary.severityCounts),\n patchKindCounts: serializeCounts(result.batch.summary.patchKindCounts),\n intentCounts: serializeCounts(result.batch.summary.intentCounts),\n toolCounts: serializeCounts(result.batch.summary.toolCounts),\n },\n },\n };\n}\n\nfunction serializeCounts(\n counts: readonly AssistantWorkflowSerializedDefinitionTuningBatchCount[],\n): Record<string, AssistantWorkflowJsonValue>[] {\n return counts.map((count) => ({\n key: count.key,\n count: count.count,\n }));\n}\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type AssistantWorkflowDefinitionPackage } from "./definition-package.js";
|
|
2
|
+
import { type AssistantWorkflowDefinitionPackageSmokeSuiteResult } from "./definition-package-smoke.js";
|
|
3
|
+
import { type AssistantWorkflowSerializedDefinition } from "./definition-json.js";
|
|
4
|
+
import { type AssistantWorkflowSerializedDefinitionTuningSuggestion } from "./definition-tuning-json.js";
|
|
5
|
+
import { type AssistantWorkflowDefinitionTuningApplySkippedSuggestion, type AssistantWorkflowDefinitionTuningApplyResult } from "./definition-tuning.js";
|
|
6
|
+
import { type AssistantWorkflowDefinitionTuningReplayLinesResult } from "./definition-tuning-replay.js";
|
|
7
|
+
import { type AssistantWorkflowDefinitionTuningReview } from "./definition-tuning-review.js";
|
|
8
|
+
import type { AssistantWorkflowJsonValue } from "./run-report-json.js";
|
|
9
|
+
export declare const ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION = 1;
|
|
10
|
+
export type AssistantWorkflowDefinitionTuningReviewArtifact = {
|
|
11
|
+
schemaVersion: typeof ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION;
|
|
12
|
+
generatedAt: string;
|
|
13
|
+
workflowId: string;
|
|
14
|
+
workflowVersion: number;
|
|
15
|
+
reviewContext: Record<string, AssistantWorkflowJsonValue>;
|
|
16
|
+
suggestions: {
|
|
17
|
+
summary: AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary;
|
|
18
|
+
applied: AssistantWorkflowSerializedDefinitionTuningSuggestion[];
|
|
19
|
+
skipped: AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[];
|
|
20
|
+
reviewOnly: AssistantWorkflowSerializedDefinitionTuningSuggestion[];
|
|
21
|
+
};
|
|
22
|
+
replay: Record<string, AssistantWorkflowJsonValue>;
|
|
23
|
+
apply: Record<string, AssistantWorkflowJsonValue>;
|
|
24
|
+
patchedDefinition: AssistantWorkflowSerializedDefinition;
|
|
25
|
+
patchedPackage: Record<string, AssistantWorkflowJsonValue>;
|
|
26
|
+
smoke: Record<string, AssistantWorkflowJsonValue> | null;
|
|
27
|
+
review: Record<string, AssistantWorkflowJsonValue>;
|
|
28
|
+
};
|
|
29
|
+
export type AssistantWorkflowDefinitionTuningReviewArtifactInput = {
|
|
30
|
+
replay: AssistantWorkflowDefinitionTuningReplayLinesResult;
|
|
31
|
+
applyResult: AssistantWorkflowDefinitionTuningApplyResult;
|
|
32
|
+
definitionPackage: AssistantWorkflowDefinitionPackage;
|
|
33
|
+
smoke?: AssistantWorkflowDefinitionPackageSmokeSuiteResult | null;
|
|
34
|
+
review: AssistantWorkflowDefinitionTuningReview;
|
|
35
|
+
reviewContext?: Record<string, AssistantWorkflowJsonValue>;
|
|
36
|
+
generatedAt?: string;
|
|
37
|
+
};
|
|
38
|
+
export type AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion = AssistantWorkflowDefinitionTuningApplySkippedSuggestion & {
|
|
39
|
+
suggestion: AssistantWorkflowSerializedDefinitionTuningSuggestion | null;
|
|
40
|
+
};
|
|
41
|
+
export type AssistantWorkflowDefinitionTuningReviewArtifactCount = {
|
|
42
|
+
key: string;
|
|
43
|
+
count: number;
|
|
44
|
+
};
|
|
45
|
+
export type AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary = {
|
|
46
|
+
appliedCount: number;
|
|
47
|
+
skippedCount: number;
|
|
48
|
+
reviewOnlyCount: number;
|
|
49
|
+
skipReasonCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];
|
|
50
|
+
reviewOnlyActionCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];
|
|
51
|
+
reviewOnlySignalCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];
|
|
52
|
+
};
|
|
53
|
+
export declare function buildAssistantWorkflowDefinitionTuningReviewArtifact(input: AssistantWorkflowDefinitionTuningReviewArtifactInput): AssistantWorkflowDefinitionTuningReviewArtifact;
|
|
54
|
+
export declare function stringifyAssistantWorkflowDefinitionTuningReviewArtifact(artifact: AssistantWorkflowDefinitionTuningReviewArtifact, space?: number): string;
|
|
55
|
+
export declare function parseAssistantWorkflowDefinitionTuningReviewArtifact(value: unknown): AssistantWorkflowDefinitionTuningReviewArtifact | null;
|
|
56
|
+
//# sourceMappingURL=definition-tuning-review-artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-tuning-review-artifact.d.ts","sourceRoot":"","sources":["../src/definition-tuning-review-artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { buildAssistantWorkflowDefinitionPackageTracePayload, } from "./definition-package.js";
|
|
2
|
+
import { buildAssistantWorkflowDefinitionPackageSmokeSuiteTracePayload, } from "./definition-package-smoke.js";
|
|
3
|
+
import { parseAssistantWorkflowSerializedDefinition, serializeAssistantWorkflowDefinition, } from "./definition-json.js";
|
|
4
|
+
import { parseAssistantWorkflowSerializedDefinitionTuningSuggestion, } from "./definition-tuning-json.js";
|
|
5
|
+
import { buildAssistantWorkflowDefinitionTuningApplyTracePayload, } from "./definition-tuning.js";
|
|
6
|
+
import { buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload, } from "./definition-tuning-replay.js";
|
|
7
|
+
import { buildAssistantWorkflowDefinitionTuningReviewTracePayload, } from "./definition-tuning-review.js";
|
|
8
|
+
export const ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION = 1;
|
|
9
|
+
const APPLY_SKIP_REASONS = new Set([
|
|
10
|
+
"not_selected",
|
|
11
|
+
"unsupported_patch",
|
|
12
|
+
"missing_intent",
|
|
13
|
+
"missing_direct_route",
|
|
14
|
+
"tool_hint_exists",
|
|
15
|
+
"direct_route_strategy_exists",
|
|
16
|
+
"intent_apply_limit",
|
|
17
|
+
]);
|
|
18
|
+
export function buildAssistantWorkflowDefinitionTuningReviewArtifact(input) {
|
|
19
|
+
const generatedAt = normalizeGeneratedAt(input.generatedAt) ?? new Date().toISOString();
|
|
20
|
+
const applied = buildAppliedSuggestions(input);
|
|
21
|
+
const skipped = buildSkippedSuggestions(input);
|
|
22
|
+
const reviewOnly = buildReviewOnlySuggestions(input);
|
|
23
|
+
return {
|
|
24
|
+
schemaVersion: ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION,
|
|
25
|
+
generatedAt,
|
|
26
|
+
workflowId: input.applyResult.definition.id,
|
|
27
|
+
workflowVersion: input.applyResult.definition.version,
|
|
28
|
+
reviewContext: cloneJsonRecord(input.reviewContext ?? {}),
|
|
29
|
+
suggestions: {
|
|
30
|
+
summary: buildSuggestionSummary(applied, skipped, reviewOnly),
|
|
31
|
+
applied,
|
|
32
|
+
skipped,
|
|
33
|
+
reviewOnly,
|
|
34
|
+
},
|
|
35
|
+
replay: buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload(input.replay),
|
|
36
|
+
apply: buildAssistantWorkflowDefinitionTuningApplyTracePayload(input.applyResult),
|
|
37
|
+
patchedDefinition: serializeAssistantWorkflowDefinition(input.applyResult.definition),
|
|
38
|
+
patchedPackage: cloneJsonRecord(buildAssistantWorkflowDefinitionPackageTracePayload(input.definitionPackage)),
|
|
39
|
+
smoke: input.smoke
|
|
40
|
+
? cloneJsonRecord(buildAssistantWorkflowDefinitionPackageSmokeSuiteTracePayload(input.smoke))
|
|
41
|
+
: null,
|
|
42
|
+
review: buildAssistantWorkflowDefinitionTuningReviewTracePayload(input.review),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function buildSuggestionSummary(applied, skipped, reviewOnly) {
|
|
46
|
+
return {
|
|
47
|
+
appliedCount: applied.length,
|
|
48
|
+
skippedCount: skipped.length,
|
|
49
|
+
reviewOnlyCount: reviewOnly.length,
|
|
50
|
+
skipReasonCounts: countStrings(skipped.map((suggestion) => suggestion.reason)),
|
|
51
|
+
reviewOnlyActionCounts: countStrings(reviewOnly.map((suggestion) => suggestion.action)),
|
|
52
|
+
reviewOnlySignalCounts: countStrings(reviewOnly.map((suggestion) => suggestion.signal ?? "none")),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function stringifyAssistantWorkflowDefinitionTuningReviewArtifact(artifact, space) {
|
|
56
|
+
return JSON.stringify(artifact, null, space);
|
|
57
|
+
}
|
|
58
|
+
export function parseAssistantWorkflowDefinitionTuningReviewArtifact(value) {
|
|
59
|
+
if (!isJsonRecord(value))
|
|
60
|
+
return null;
|
|
61
|
+
if (value["schemaVersion"] !== ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION)
|
|
62
|
+
return null;
|
|
63
|
+
if (typeof value["generatedAt"] !== "string" || !value["generatedAt"].trim().length)
|
|
64
|
+
return null;
|
|
65
|
+
if (typeof value["workflowId"] !== "string" || !value["workflowId"].trim().length)
|
|
66
|
+
return null;
|
|
67
|
+
if (typeof value["workflowVersion"] !== "number" || !Number.isFinite(value["workflowVersion"]))
|
|
68
|
+
return null;
|
|
69
|
+
if (!isJsonRecord(value["reviewContext"]))
|
|
70
|
+
return null;
|
|
71
|
+
const suggestions = parseArtifactSuggestions(value["suggestions"]);
|
|
72
|
+
if (!suggestions)
|
|
73
|
+
return null;
|
|
74
|
+
if (!isJsonRecord(value["replay"]))
|
|
75
|
+
return null;
|
|
76
|
+
if (!isJsonRecord(value["apply"]))
|
|
77
|
+
return null;
|
|
78
|
+
const patchedDefinition = parseAssistantWorkflowSerializedDefinition(value["patchedDefinition"]);
|
|
79
|
+
if (!patchedDefinition)
|
|
80
|
+
return null;
|
|
81
|
+
if (!isJsonRecord(value["patchedPackage"]))
|
|
82
|
+
return null;
|
|
83
|
+
if (value["smoke"] !== null && !isJsonRecord(value["smoke"]))
|
|
84
|
+
return null;
|
|
85
|
+
if (!isJsonRecord(value["review"]))
|
|
86
|
+
return null;
|
|
87
|
+
return {
|
|
88
|
+
schemaVersion: ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION,
|
|
89
|
+
generatedAt: value["generatedAt"],
|
|
90
|
+
workflowId: value["workflowId"],
|
|
91
|
+
workflowVersion: value["workflowVersion"],
|
|
92
|
+
reviewContext: value["reviewContext"],
|
|
93
|
+
suggestions,
|
|
94
|
+
replay: value["replay"],
|
|
95
|
+
apply: value["apply"],
|
|
96
|
+
patchedDefinition,
|
|
97
|
+
patchedPackage: value["patchedPackage"],
|
|
98
|
+
smoke: value["smoke"],
|
|
99
|
+
review: value["review"],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function buildAppliedSuggestions(input) {
|
|
103
|
+
const appliedIds = new Set(input.applyResult.appliedSuggestionIds);
|
|
104
|
+
return input.replay.batch.suggestions
|
|
105
|
+
.filter((suggestion) => appliedIds.has(suggestion.id))
|
|
106
|
+
.map((suggestion) => ({ ...suggestion, requestIds: [...suggestion.requestIds], sourceSuggestionIds: [...suggestion.sourceSuggestionIds] }));
|
|
107
|
+
}
|
|
108
|
+
function buildSkippedSuggestions(input) {
|
|
109
|
+
const suggestionsById = new Map(input.replay.batch.suggestions.map((suggestion) => [suggestion.id, suggestion]));
|
|
110
|
+
return input.applyResult.skippedSuggestions.map((skipped) => {
|
|
111
|
+
const suggestion = suggestionsById.get(skipped.id) ?? null;
|
|
112
|
+
return {
|
|
113
|
+
id: skipped.id,
|
|
114
|
+
reason: skipped.reason,
|
|
115
|
+
suggestion: suggestion
|
|
116
|
+
? {
|
|
117
|
+
...suggestion,
|
|
118
|
+
requestIds: [...suggestion.requestIds],
|
|
119
|
+
sourceSuggestionIds: [...suggestion.sourceSuggestionIds],
|
|
120
|
+
}
|
|
121
|
+
: null,
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function buildReviewOnlySuggestions(input) {
|
|
126
|
+
return input.replay.batch.suggestions
|
|
127
|
+
.filter((suggestion) => suggestion.patchPreview.kind === "none")
|
|
128
|
+
.map((suggestion) => ({
|
|
129
|
+
...suggestion,
|
|
130
|
+
requestIds: [...suggestion.requestIds],
|
|
131
|
+
sourceSuggestionIds: [...suggestion.sourceSuggestionIds],
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
function parseArtifactSuggestions(value) {
|
|
135
|
+
if (value === undefined) {
|
|
136
|
+
return {
|
|
137
|
+
summary: buildSuggestionSummary([], [], []),
|
|
138
|
+
applied: [],
|
|
139
|
+
skipped: [],
|
|
140
|
+
reviewOnly: [],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (!isJsonRecord(value))
|
|
144
|
+
return null;
|
|
145
|
+
const applied = value["applied"];
|
|
146
|
+
if (!Array.isArray(applied))
|
|
147
|
+
return null;
|
|
148
|
+
const parsed = applied.map(parseAssistantWorkflowSerializedDefinitionTuningSuggestion);
|
|
149
|
+
if (parsed.some((suggestion) => suggestion === null))
|
|
150
|
+
return null;
|
|
151
|
+
const skipped = parseSkippedSuggestions(value["skipped"]);
|
|
152
|
+
if (!skipped)
|
|
153
|
+
return null;
|
|
154
|
+
const reviewOnly = parseSerializedSuggestions(value["reviewOnly"]);
|
|
155
|
+
if (!reviewOnly)
|
|
156
|
+
return null;
|
|
157
|
+
const summary = parseSuggestionSummary(value["summary"]) ??
|
|
158
|
+
buildSuggestionSummary(parsed.filter((suggestion) => suggestion !== null), skipped, reviewOnly);
|
|
159
|
+
return {
|
|
160
|
+
summary,
|
|
161
|
+
applied: parsed.filter((suggestion) => suggestion !== null).map((suggestion) => ({
|
|
162
|
+
...suggestion,
|
|
163
|
+
requestIds: [...suggestion.requestIds],
|
|
164
|
+
sourceSuggestionIds: [...suggestion.sourceSuggestionIds],
|
|
165
|
+
})),
|
|
166
|
+
skipped,
|
|
167
|
+
reviewOnly,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function parseSuggestionSummary(value) {
|
|
171
|
+
if (value === undefined)
|
|
172
|
+
return null;
|
|
173
|
+
if (!isJsonRecord(value))
|
|
174
|
+
return null;
|
|
175
|
+
if (!isNonNegativeFiniteNumber(value["appliedCount"]))
|
|
176
|
+
return null;
|
|
177
|
+
if (!isNonNegativeFiniteNumber(value["skippedCount"]))
|
|
178
|
+
return null;
|
|
179
|
+
if (!isNonNegativeFiniteNumber(value["reviewOnlyCount"]))
|
|
180
|
+
return null;
|
|
181
|
+
const skipReasonCounts = parseCounts(value["skipReasonCounts"]);
|
|
182
|
+
const reviewOnlyActionCounts = parseCounts(value["reviewOnlyActionCounts"]);
|
|
183
|
+
const reviewOnlySignalCounts = parseCounts(value["reviewOnlySignalCounts"]);
|
|
184
|
+
if (!skipReasonCounts || !reviewOnlyActionCounts || !reviewOnlySignalCounts)
|
|
185
|
+
return null;
|
|
186
|
+
return {
|
|
187
|
+
appliedCount: value["appliedCount"],
|
|
188
|
+
skippedCount: value["skippedCount"],
|
|
189
|
+
reviewOnlyCount: value["reviewOnlyCount"],
|
|
190
|
+
skipReasonCounts,
|
|
191
|
+
reviewOnlyActionCounts,
|
|
192
|
+
reviewOnlySignalCounts,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function parseSkippedSuggestions(value) {
|
|
196
|
+
if (value === undefined)
|
|
197
|
+
return [];
|
|
198
|
+
if (!Array.isArray(value))
|
|
199
|
+
return null;
|
|
200
|
+
const skipped = [];
|
|
201
|
+
for (const item of value) {
|
|
202
|
+
if (!isJsonRecord(item))
|
|
203
|
+
return null;
|
|
204
|
+
if (typeof item["id"] !== "string" || !item["id"].trim().length)
|
|
205
|
+
return null;
|
|
206
|
+
if (!isApplySkipReason(item["reason"]))
|
|
207
|
+
return null;
|
|
208
|
+
const suggestion = item["suggestion"] === null
|
|
209
|
+
? null
|
|
210
|
+
: parseAssistantWorkflowSerializedDefinitionTuningSuggestion(item["suggestion"]);
|
|
211
|
+
if (item["suggestion"] !== null && !suggestion)
|
|
212
|
+
return null;
|
|
213
|
+
skipped.push({
|
|
214
|
+
id: item["id"],
|
|
215
|
+
reason: item["reason"],
|
|
216
|
+
suggestion: suggestion
|
|
217
|
+
? {
|
|
218
|
+
...suggestion,
|
|
219
|
+
requestIds: [...suggestion.requestIds],
|
|
220
|
+
sourceSuggestionIds: [...suggestion.sourceSuggestionIds],
|
|
221
|
+
}
|
|
222
|
+
: null,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return skipped;
|
|
226
|
+
}
|
|
227
|
+
function isApplySkipReason(value) {
|
|
228
|
+
return typeof value === "string" && APPLY_SKIP_REASONS.has(value);
|
|
229
|
+
}
|
|
230
|
+
function parseSerializedSuggestions(value) {
|
|
231
|
+
if (value === undefined)
|
|
232
|
+
return [];
|
|
233
|
+
if (!Array.isArray(value))
|
|
234
|
+
return null;
|
|
235
|
+
const parsed = value.map(parseAssistantWorkflowSerializedDefinitionTuningSuggestion);
|
|
236
|
+
if (parsed.some((suggestion) => suggestion === null))
|
|
237
|
+
return null;
|
|
238
|
+
return parsed
|
|
239
|
+
.filter((suggestion) => suggestion !== null)
|
|
240
|
+
.map((suggestion) => ({
|
|
241
|
+
...suggestion,
|
|
242
|
+
requestIds: [...suggestion.requestIds],
|
|
243
|
+
sourceSuggestionIds: [...suggestion.sourceSuggestionIds],
|
|
244
|
+
}));
|
|
245
|
+
}
|
|
246
|
+
function parseCounts(value) {
|
|
247
|
+
if (!Array.isArray(value))
|
|
248
|
+
return null;
|
|
249
|
+
const counts = [];
|
|
250
|
+
for (const item of value) {
|
|
251
|
+
if (!isJsonRecord(item))
|
|
252
|
+
return null;
|
|
253
|
+
if (typeof item["key"] !== "string" || !item["key"].trim().length)
|
|
254
|
+
return null;
|
|
255
|
+
if (!isNonNegativeFiniteNumber(item["count"]))
|
|
256
|
+
return null;
|
|
257
|
+
counts.push({
|
|
258
|
+
key: item["key"],
|
|
259
|
+
count: item["count"],
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
return counts;
|
|
263
|
+
}
|
|
264
|
+
function countStrings(values) {
|
|
265
|
+
const counts = new Map();
|
|
266
|
+
for (const value of values) {
|
|
267
|
+
counts.set(value, (counts.get(value) ?? 0) + 1);
|
|
268
|
+
}
|
|
269
|
+
return [...counts.entries()]
|
|
270
|
+
.map(([key, count]) => ({ key, count }))
|
|
271
|
+
.sort((a, b) => b.count - a.count || a.key.localeCompare(b.key));
|
|
272
|
+
}
|
|
273
|
+
function isNonNegativeFiniteNumber(value) {
|
|
274
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
275
|
+
}
|
|
276
|
+
function normalizeGeneratedAt(value) {
|
|
277
|
+
if (!value)
|
|
278
|
+
return null;
|
|
279
|
+
const date = new Date(value);
|
|
280
|
+
return Number.isNaN(date.getTime()) ? null : date.toISOString();
|
|
281
|
+
}
|
|
282
|
+
function cloneJsonRecord(value) {
|
|
283
|
+
const cloned = JSON.parse(JSON.stringify(value));
|
|
284
|
+
return isJsonRecord(cloned) ? cloned : {};
|
|
285
|
+
}
|
|
286
|
+
function isJsonRecord(value) {
|
|
287
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
288
|
+
return false;
|
|
289
|
+
return Object.values(value).every(isJsonValue);
|
|
290
|
+
}
|
|
291
|
+
function isJsonValue(value) {
|
|
292
|
+
if (value === null)
|
|
293
|
+
return true;
|
|
294
|
+
if (typeof value === "string" || typeof value === "boolean")
|
|
295
|
+
return true;
|
|
296
|
+
if (typeof value === "number")
|
|
297
|
+
return Number.isFinite(value);
|
|
298
|
+
if (Array.isArray(value))
|
|
299
|
+
return value.every(isJsonValue);
|
|
300
|
+
return isJsonRecord(value);
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=definition-tuning-review-artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-tuning-review-artifact.js","sourceRoot":"","sources":["../src/definition-tuning-review-artifact.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildAssistantWorkflowDefinitionPackageTracePayload,\n type AssistantWorkflowDefinitionPackage,\n} from \"./definition-package.js\";\nimport {\n buildAssistantWorkflowDefinitionPackageSmokeSuiteTracePayload,\n type AssistantWorkflowDefinitionPackageSmokeSuiteResult,\n} from \"./definition-package-smoke.js\";\nimport {\n parseAssistantWorkflowSerializedDefinition,\n serializeAssistantWorkflowDefinition,\n type AssistantWorkflowSerializedDefinition,\n} from \"./definition-json.js\";\nimport {\n parseAssistantWorkflowSerializedDefinitionTuningSuggestion,\n type AssistantWorkflowSerializedDefinitionTuningSuggestion,\n} from \"./definition-tuning-json.js\";\nimport {\n buildAssistantWorkflowDefinitionTuningApplyTracePayload,\n type AssistantWorkflowDefinitionTuningApplySkipReason,\n type AssistantWorkflowDefinitionTuningApplySkippedSuggestion,\n type AssistantWorkflowDefinitionTuningApplyResult,\n} from \"./definition-tuning.js\";\nimport {\n buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload,\n type AssistantWorkflowDefinitionTuningReplayLinesResult,\n} from \"./definition-tuning-replay.js\";\nimport {\n buildAssistantWorkflowDefinitionTuningReviewTracePayload,\n type AssistantWorkflowDefinitionTuningReview,\n} from \"./definition-tuning-review.js\";\nimport type { AssistantWorkflowJsonValue } from \"./run-report-json.js\";\n\nexport const ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION = 1;\n\nexport type AssistantWorkflowDefinitionTuningReviewArtifact = {\n schemaVersion: typeof ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION;\n generatedAt: string;\n workflowId: string;\n workflowVersion: number;\n reviewContext: Record<string, AssistantWorkflowJsonValue>;\n suggestions: {\n summary: AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary;\n applied: AssistantWorkflowSerializedDefinitionTuningSuggestion[];\n skipped: AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[];\n reviewOnly: AssistantWorkflowSerializedDefinitionTuningSuggestion[];\n };\n replay: Record<string, AssistantWorkflowJsonValue>;\n apply: Record<string, AssistantWorkflowJsonValue>;\n patchedDefinition: AssistantWorkflowSerializedDefinition;\n patchedPackage: Record<string, AssistantWorkflowJsonValue>;\n smoke: Record<string, AssistantWorkflowJsonValue> | null;\n review: Record<string, AssistantWorkflowJsonValue>;\n};\n\nexport type AssistantWorkflowDefinitionTuningReviewArtifactInput = {\n replay: AssistantWorkflowDefinitionTuningReplayLinesResult;\n applyResult: AssistantWorkflowDefinitionTuningApplyResult;\n definitionPackage: AssistantWorkflowDefinitionPackage;\n smoke?: AssistantWorkflowDefinitionPackageSmokeSuiteResult | null;\n review: AssistantWorkflowDefinitionTuningReview;\n reviewContext?: Record<string, AssistantWorkflowJsonValue>;\n generatedAt?: string;\n};\n\nexport type AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion =\n AssistantWorkflowDefinitionTuningApplySkippedSuggestion & {\n suggestion: AssistantWorkflowSerializedDefinitionTuningSuggestion | null;\n };\n\nexport type AssistantWorkflowDefinitionTuningReviewArtifactCount = {\n key: string;\n count: number;\n};\n\nexport type AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary = {\n appliedCount: number;\n skippedCount: number;\n reviewOnlyCount: number;\n skipReasonCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];\n reviewOnlyActionCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];\n reviewOnlySignalCounts: AssistantWorkflowDefinitionTuningReviewArtifactCount[];\n};\n\nconst APPLY_SKIP_REASONS = new Set<AssistantWorkflowDefinitionTuningApplySkipReason>([\n \"not_selected\",\n \"unsupported_patch\",\n \"missing_intent\",\n \"missing_direct_route\",\n \"tool_hint_exists\",\n \"direct_route_strategy_exists\",\n \"intent_apply_limit\",\n]);\n\nexport function buildAssistantWorkflowDefinitionTuningReviewArtifact(\n input: AssistantWorkflowDefinitionTuningReviewArtifactInput,\n): AssistantWorkflowDefinitionTuningReviewArtifact {\n const generatedAt = normalizeGeneratedAt(input.generatedAt) ?? new Date().toISOString();\n const applied = buildAppliedSuggestions(input);\n const skipped = buildSkippedSuggestions(input);\n const reviewOnly = buildReviewOnlySuggestions(input);\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION,\n generatedAt,\n workflowId: input.applyResult.definition.id,\n workflowVersion: input.applyResult.definition.version,\n reviewContext: cloneJsonRecord(input.reviewContext ?? {}),\n suggestions: {\n summary: buildSuggestionSummary(applied, skipped, reviewOnly),\n applied,\n skipped,\n reviewOnly,\n },\n replay: buildAssistantWorkflowDefinitionTuningReplayLinesTracePayload(input.replay),\n apply: buildAssistantWorkflowDefinitionTuningApplyTracePayload(input.applyResult),\n patchedDefinition: serializeAssistantWorkflowDefinition(input.applyResult.definition),\n patchedPackage: cloneJsonRecord(\n buildAssistantWorkflowDefinitionPackageTracePayload(input.definitionPackage),\n ),\n smoke: input.smoke\n ? cloneJsonRecord(buildAssistantWorkflowDefinitionPackageSmokeSuiteTracePayload(input.smoke))\n : null,\n review: buildAssistantWorkflowDefinitionTuningReviewTracePayload(input.review),\n };\n}\n\nfunction buildSuggestionSummary(\n applied: readonly AssistantWorkflowSerializedDefinitionTuningSuggestion[],\n skipped: readonly AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[],\n reviewOnly: readonly AssistantWorkflowSerializedDefinitionTuningSuggestion[],\n): AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary {\n return {\n appliedCount: applied.length,\n skippedCount: skipped.length,\n reviewOnlyCount: reviewOnly.length,\n skipReasonCounts: countStrings(skipped.map((suggestion) => suggestion.reason)),\n reviewOnlyActionCounts: countStrings(reviewOnly.map((suggestion) => suggestion.action)),\n reviewOnlySignalCounts: countStrings(reviewOnly.map((suggestion) => suggestion.signal ?? \"none\")),\n };\n}\n\nexport function stringifyAssistantWorkflowDefinitionTuningReviewArtifact(\n artifact: AssistantWorkflowDefinitionTuningReviewArtifact,\n space?: number,\n): string {\n return JSON.stringify(artifact, null, space);\n}\n\nexport function parseAssistantWorkflowDefinitionTuningReviewArtifact(\n value: unknown,\n): AssistantWorkflowDefinitionTuningReviewArtifact | null {\n if (!isJsonRecord(value)) return null;\n if (value[\"schemaVersion\"] !== ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION) return null;\n if (typeof value[\"generatedAt\"] !== \"string\" || !value[\"generatedAt\"].trim().length) 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 (!isJsonRecord(value[\"reviewContext\"])) return null;\n const suggestions = parseArtifactSuggestions(value[\"suggestions\"]);\n if (!suggestions) return null;\n if (!isJsonRecord(value[\"replay\"])) return null;\n if (!isJsonRecord(value[\"apply\"])) return null;\n const patchedDefinition = parseAssistantWorkflowSerializedDefinition(value[\"patchedDefinition\"]);\n if (!patchedDefinition) return null;\n if (!isJsonRecord(value[\"patchedPackage\"])) return null;\n if (value[\"smoke\"] !== null && !isJsonRecord(value[\"smoke\"])) return null;\n if (!isJsonRecord(value[\"review\"])) return null;\n\n return {\n schemaVersion: ASSISTANT_WORKFLOW_DEFINITION_TUNING_REVIEW_ARTIFACT_SCHEMA_VERSION,\n generatedAt: value[\"generatedAt\"],\n workflowId: value[\"workflowId\"],\n workflowVersion: value[\"workflowVersion\"],\n reviewContext: value[\"reviewContext\"],\n suggestions,\n replay: value[\"replay\"],\n apply: value[\"apply\"],\n patchedDefinition,\n patchedPackage: value[\"patchedPackage\"],\n smoke: value[\"smoke\"],\n review: value[\"review\"],\n };\n}\n\nfunction buildAppliedSuggestions(\n input: AssistantWorkflowDefinitionTuningReviewArtifactInput,\n): AssistantWorkflowSerializedDefinitionTuningSuggestion[] {\n const appliedIds = new Set(input.applyResult.appliedSuggestionIds);\n return input.replay.batch.suggestions\n .filter((suggestion) => appliedIds.has(suggestion.id))\n .map((suggestion) => ({ ...suggestion, requestIds: [...suggestion.requestIds], sourceSuggestionIds: [...suggestion.sourceSuggestionIds] }));\n}\n\nfunction buildSkippedSuggestions(\n input: AssistantWorkflowDefinitionTuningReviewArtifactInput,\n): AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[] {\n const suggestionsById = new Map(input.replay.batch.suggestions.map((suggestion) => [suggestion.id, suggestion]));\n return input.applyResult.skippedSuggestions.map((skipped) => {\n const suggestion = suggestionsById.get(skipped.id) ?? null;\n return {\n id: skipped.id,\n reason: skipped.reason,\n suggestion: suggestion\n ? {\n ...suggestion,\n requestIds: [...suggestion.requestIds],\n sourceSuggestionIds: [...suggestion.sourceSuggestionIds],\n }\n : null,\n };\n });\n}\n\nfunction buildReviewOnlySuggestions(\n input: AssistantWorkflowDefinitionTuningReviewArtifactInput,\n): AssistantWorkflowSerializedDefinitionTuningSuggestion[] {\n return input.replay.batch.suggestions\n .filter((suggestion) => suggestion.patchPreview.kind === \"none\")\n .map((suggestion) => ({\n ...suggestion,\n requestIds: [...suggestion.requestIds],\n sourceSuggestionIds: [...suggestion.sourceSuggestionIds],\n }));\n}\n\nfunction parseArtifactSuggestions(\n value: unknown,\n): AssistantWorkflowDefinitionTuningReviewArtifact[\"suggestions\"] | null {\n if (value === undefined) {\n return {\n summary: buildSuggestionSummary([], [], []),\n applied: [],\n skipped: [],\n reviewOnly: [],\n };\n }\n if (!isJsonRecord(value)) return null;\n const applied = value[\"applied\"];\n if (!Array.isArray(applied)) return null;\n const parsed = applied.map(parseAssistantWorkflowSerializedDefinitionTuningSuggestion);\n if (parsed.some((suggestion) => suggestion === null)) return null;\n const skipped = parseSkippedSuggestions(value[\"skipped\"]);\n if (!skipped) return null;\n const reviewOnly = parseSerializedSuggestions(value[\"reviewOnly\"]);\n if (!reviewOnly) return null;\n const summary = parseSuggestionSummary(value[\"summary\"]) ??\n buildSuggestionSummary(\n parsed.filter((suggestion): suggestion is AssistantWorkflowSerializedDefinitionTuningSuggestion => suggestion !== null),\n skipped,\n reviewOnly,\n );\n return {\n summary,\n applied: parsed.filter((suggestion): suggestion is AssistantWorkflowSerializedDefinitionTuningSuggestion => suggestion !== null).map((suggestion) => ({\n ...suggestion,\n requestIds: [...suggestion.requestIds],\n sourceSuggestionIds: [...suggestion.sourceSuggestionIds],\n })),\n skipped,\n reviewOnly,\n };\n}\n\nfunction parseSuggestionSummary(\n value: unknown,\n): AssistantWorkflowDefinitionTuningReviewArtifactSuggestionSummary | null {\n if (value === undefined) return null;\n if (!isJsonRecord(value)) return null;\n if (!isNonNegativeFiniteNumber(value[\"appliedCount\"])) return null;\n if (!isNonNegativeFiniteNumber(value[\"skippedCount\"])) return null;\n if (!isNonNegativeFiniteNumber(value[\"reviewOnlyCount\"])) return null;\n const skipReasonCounts = parseCounts(value[\"skipReasonCounts\"]);\n const reviewOnlyActionCounts = parseCounts(value[\"reviewOnlyActionCounts\"]);\n const reviewOnlySignalCounts = parseCounts(value[\"reviewOnlySignalCounts\"]);\n if (!skipReasonCounts || !reviewOnlyActionCounts || !reviewOnlySignalCounts) return null;\n return {\n appliedCount: value[\"appliedCount\"],\n skippedCount: value[\"skippedCount\"],\n reviewOnlyCount: value[\"reviewOnlyCount\"],\n skipReasonCounts,\n reviewOnlyActionCounts,\n reviewOnlySignalCounts,\n };\n}\n\nfunction parseSkippedSuggestions(\n value: unknown,\n): AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[] | null {\n if (value === undefined) return [];\n if (!Array.isArray(value)) return null;\n const skipped: AssistantWorkflowDefinitionTuningReviewArtifactSkippedSuggestion[] = [];\n for (const item of value) {\n if (!isJsonRecord(item)) return null;\n if (typeof item[\"id\"] !== \"string\" || !item[\"id\"].trim().length) return null;\n if (!isApplySkipReason(item[\"reason\"])) return null;\n const suggestion = item[\"suggestion\"] === null\n ? null\n : parseAssistantWorkflowSerializedDefinitionTuningSuggestion(item[\"suggestion\"]);\n if (item[\"suggestion\"] !== null && !suggestion) return null;\n skipped.push({\n id: item[\"id\"],\n reason: item[\"reason\"],\n suggestion: suggestion\n ? {\n ...suggestion,\n requestIds: [...suggestion.requestIds],\n sourceSuggestionIds: [...suggestion.sourceSuggestionIds],\n }\n : null,\n });\n }\n return skipped;\n}\n\nfunction isApplySkipReason(value: unknown): value is AssistantWorkflowDefinitionTuningApplySkipReason {\n return typeof value === \"string\" && APPLY_SKIP_REASONS.has(value as AssistantWorkflowDefinitionTuningApplySkipReason);\n}\n\nfunction parseSerializedSuggestions(\n value: unknown,\n): AssistantWorkflowSerializedDefinitionTuningSuggestion[] | null {\n if (value === undefined) return [];\n if (!Array.isArray(value)) return null;\n const parsed = value.map(parseAssistantWorkflowSerializedDefinitionTuningSuggestion);\n if (parsed.some((suggestion) => suggestion === null)) return null;\n return parsed\n .filter((suggestion): suggestion is AssistantWorkflowSerializedDefinitionTuningSuggestion => suggestion !== null)\n .map((suggestion) => ({\n ...suggestion,\n requestIds: [...suggestion.requestIds],\n sourceSuggestionIds: [...suggestion.sourceSuggestionIds],\n }));\n}\n\nfunction parseCounts(value: unknown): AssistantWorkflowDefinitionTuningReviewArtifactCount[] | null {\n if (!Array.isArray(value)) return null;\n const counts: AssistantWorkflowDefinitionTuningReviewArtifactCount[] = [];\n for (const item of value) {\n if (!isJsonRecord(item)) return null;\n if (typeof item[\"key\"] !== \"string\" || !item[\"key\"].trim().length) return null;\n if (!isNonNegativeFiniteNumber(item[\"count\"])) return null;\n counts.push({\n key: item[\"key\"],\n count: item[\"count\"],\n });\n }\n return counts;\n}\n\nfunction countStrings(values: readonly string[]): AssistantWorkflowDefinitionTuningReviewArtifactCount[] {\n const counts = new Map<string, number>();\n for (const value of values) {\n counts.set(value, (counts.get(value) ?? 0) + 1);\n }\n return [...counts.entries()]\n .map(([key, count]) => ({ key, count }))\n .sort((a, b) => b.count - a.count || a.key.localeCompare(b.key));\n}\n\nfunction isNonNegativeFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0;\n}\n\nfunction normalizeGeneratedAt(value: string | undefined): string | null {\n if (!value) return null;\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date.toISOString();\n}\n\nfunction cloneJsonRecord(\n value: Record<string, unknown>,\n): Record<string, AssistantWorkflowJsonValue> {\n const cloned = JSON.parse(JSON.stringify(value)) as unknown;\n return isJsonRecord(cloned) ? cloned : {};\n}\n\nfunction isJsonRecord(value: unknown): value is Record<string, AssistantWorkflowJsonValue> {\n if (!value || typeof value !== \"object\" || Array.isArray(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"]}
|