@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,88 @@
|
|
|
1
|
+
import { buildAssistantWorkflowSerializedToolSelectionDecisionBatch, parseAssistantWorkflowSerializedToolSelectionDecisionLines, } from "./tool-selection-json.js";
|
|
2
|
+
import { buildAssistantWorkflowToolSelectionEvaluationBatch, buildAssistantWorkflowToolSelectionEvaluationBatchTracePayload, buildAssistantWorkflowToolSelectionAuthorityAllowListProposal, buildAssistantWorkflowToolSelectionAuthorityAllowListProposalTracePayload, buildAssistantWorkflowToolSelectionMigrationReport, buildAssistantWorkflowToolSelectionMigrationReportTracePayload, buildAssistantWorkflowToolSelectionMigrationReviewArtifact, buildAssistantWorkflowToolSelectionMigrationReviewArtifactTracePayload, } from "./tool-selection-evaluation.js";
|
|
3
|
+
export function runAssistantWorkflowToolSelectionReplayLines(input, options = {}) {
|
|
4
|
+
const decisionParse = parseAssistantWorkflowSerializedToolSelectionDecisionLines(input.decisionLines);
|
|
5
|
+
const batch = buildAssistantWorkflowSerializedToolSelectionDecisionBatch(decisionParse.decisions, options);
|
|
6
|
+
const evaluation = buildAssistantWorkflowToolSelectionEvaluationBatch(batch.decisions, options);
|
|
7
|
+
const migration = buildAssistantWorkflowToolSelectionMigrationReport(evaluation, {
|
|
8
|
+
...(options.minMigrationDecisionCount !== undefined
|
|
9
|
+
? { minDecisionCount: options.minMigrationDecisionCount }
|
|
10
|
+
: {}),
|
|
11
|
+
});
|
|
12
|
+
const migrationProposal = buildAssistantWorkflowToolSelectionAuthorityAllowListProposal(migration, {
|
|
13
|
+
...(options.currentAuthorityIntentIds !== undefined
|
|
14
|
+
? { currentAuthorityIntentIds: options.currentAuthorityIntentIds }
|
|
15
|
+
: {}),
|
|
16
|
+
...(options.currentAuthoritySegmentKeys !== undefined
|
|
17
|
+
? { currentAuthoritySegmentKeys: options.currentAuthoritySegmentKeys }
|
|
18
|
+
: {}),
|
|
19
|
+
});
|
|
20
|
+
const migrationReviewArtifact = buildAssistantWorkflowToolSelectionMigrationReviewArtifact({
|
|
21
|
+
report: migration,
|
|
22
|
+
proposal: migrationProposal,
|
|
23
|
+
}, {
|
|
24
|
+
...(options.migrationReviewTitle !== undefined ? { title: options.migrationReviewTitle } : {}),
|
|
25
|
+
...(options.migrationReviewPatchTargets !== undefined
|
|
26
|
+
? { patchTargets: options.migrationReviewPatchTargets }
|
|
27
|
+
: {}),
|
|
28
|
+
...(options.migrationReviewRequiredTestIds !== undefined
|
|
29
|
+
? { requiredTestIds: options.migrationReviewRequiredTestIds }
|
|
30
|
+
: {}),
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
decisionParse,
|
|
34
|
+
parseErrorCount: decisionParse.errorCount,
|
|
35
|
+
batch,
|
|
36
|
+
evaluation,
|
|
37
|
+
migration,
|
|
38
|
+
migrationProposal,
|
|
39
|
+
migrationReviewArtifact,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function buildAssistantWorkflowToolSelectionReplayLinesTracePayload(result) {
|
|
43
|
+
return {
|
|
44
|
+
decisionParse: {
|
|
45
|
+
lineCount: result.decisionParse.lineCount,
|
|
46
|
+
decisionCount: result.decisionParse.decisionCount,
|
|
47
|
+
errorCount: result.decisionParse.errorCount,
|
|
48
|
+
errors: result.decisionParse.errors.map((error) => ({
|
|
49
|
+
lineNumber: error.lineNumber,
|
|
50
|
+
reason: error.reason,
|
|
51
|
+
preview: error.preview,
|
|
52
|
+
})),
|
|
53
|
+
},
|
|
54
|
+
parseErrorCount: result.parseErrorCount,
|
|
55
|
+
batch: {
|
|
56
|
+
generatedAt: result.batch.generatedAt,
|
|
57
|
+
sourceDecisionCount: result.batch.sourceDecisionCount,
|
|
58
|
+
decisionCount: result.batch.decisionCount,
|
|
59
|
+
summary: {
|
|
60
|
+
generatedAt: result.batch.summary.generatedAt,
|
|
61
|
+
sourceDecisionCount: result.batch.summary.sourceDecisionCount,
|
|
62
|
+
decisionCount: result.batch.summary.decisionCount,
|
|
63
|
+
interestingDecisionCount: result.batch.summary.interestingDecisionCount,
|
|
64
|
+
workflowAuthorityCount: result.batch.summary.workflowAuthorityCount,
|
|
65
|
+
legacyAuthorityCount: result.batch.summary.legacyAuthorityCount,
|
|
66
|
+
authoritySourceCounts: serializeCounts(result.batch.summary.authoritySourceCounts),
|
|
67
|
+
authorityReasonCounts: serializeCounts(result.batch.summary.authorityReasonCounts),
|
|
68
|
+
workflowStatusCounts: serializeCounts(result.batch.summary.workflowStatusCounts),
|
|
69
|
+
effectiveReasonCounts: serializeCounts(result.batch.summary.effectiveReasonCounts),
|
|
70
|
+
optionalToolModeCounts: serializeCounts(result.batch.summary.optionalToolModeCounts),
|
|
71
|
+
effectiveToolCounts: serializeCounts(result.batch.summary.effectiveToolCounts),
|
|
72
|
+
workflowSuggestedToolCounts: serializeCounts(result.batch.summary.workflowSuggestedToolCounts),
|
|
73
|
+
workflowSelectionCandidateToolCounts: serializeCounts(result.batch.summary.workflowSelectionCandidateToolCounts),
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
evaluation: buildAssistantWorkflowToolSelectionEvaluationBatchTracePayload(result.evaluation),
|
|
77
|
+
migration: buildAssistantWorkflowToolSelectionMigrationReportTracePayload(result.migration),
|
|
78
|
+
migrationProposal: buildAssistantWorkflowToolSelectionAuthorityAllowListProposalTracePayload(result.migrationProposal),
|
|
79
|
+
migrationReviewArtifact: buildAssistantWorkflowToolSelectionMigrationReviewArtifactTracePayload(result.migrationReviewArtifact),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function serializeCounts(counts) {
|
|
83
|
+
return counts.map((count) => ({
|
|
84
|
+
key: count.key,
|
|
85
|
+
count: count.count,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=tool-selection-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-selection-replay.js","sourceRoot":"","sources":["../src/tool-selection-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildAssistantWorkflowSerializedToolSelectionDecisionBatch,\n parseAssistantWorkflowSerializedToolSelectionDecisionLines,\n type AssistantWorkflowSerializedToolSelectionDecisionBatch,\n type AssistantWorkflowSerializedToolSelectionDecisionBatchCount,\n type AssistantWorkflowSerializedToolSelectionDecisionBatchOptions,\n type AssistantWorkflowSerializedToolSelectionDecisionLinesParseResult,\n} from \"./tool-selection-json.js\";\nimport type { AssistantWorkflowJsonValue } from \"./run-report-json.js\";\nimport {\n buildAssistantWorkflowToolSelectionEvaluationBatch,\n buildAssistantWorkflowToolSelectionEvaluationBatchTracePayload,\n buildAssistantWorkflowToolSelectionAuthorityAllowListProposal,\n buildAssistantWorkflowToolSelectionAuthorityAllowListProposalTracePayload,\n buildAssistantWorkflowToolSelectionMigrationReport,\n buildAssistantWorkflowToolSelectionMigrationReportTracePayload,\n buildAssistantWorkflowToolSelectionMigrationReviewArtifact,\n buildAssistantWorkflowToolSelectionMigrationReviewArtifactTracePayload,\n type AssistantWorkflowToolSelectionAuthorityAllowListProposal,\n type AssistantWorkflowToolSelectionEvaluationBatch,\n type AssistantWorkflowToolSelectionMigrationReport,\n type AssistantWorkflowToolSelectionMigrationReviewArtifact,\n} from \"./tool-selection-evaluation.js\";\n\nexport type AssistantWorkflowToolSelectionReplayLinesOptions =\n AssistantWorkflowSerializedToolSelectionDecisionBatchOptions & {\n minMigrationDecisionCount?: number | null;\n currentAuthorityIntentIds?: readonly string[] | null;\n currentAuthoritySegmentKeys?: readonly string[] | null;\n migrationReviewPatchTargets?: readonly string[] | null;\n migrationReviewRequiredTestIds?: readonly string[] | null;\n migrationReviewTitle?: string | null;\n };\n\nexport type AssistantWorkflowToolSelectionReplayLinesInput = {\n decisionLines: string;\n};\n\nexport type AssistantWorkflowToolSelectionReplayLinesResult = {\n decisionParse: AssistantWorkflowSerializedToolSelectionDecisionLinesParseResult;\n parseErrorCount: number;\n batch: AssistantWorkflowSerializedToolSelectionDecisionBatch;\n evaluation: AssistantWorkflowToolSelectionEvaluationBatch;\n migration: AssistantWorkflowToolSelectionMigrationReport;\n migrationProposal: AssistantWorkflowToolSelectionAuthorityAllowListProposal;\n migrationReviewArtifact: AssistantWorkflowToolSelectionMigrationReviewArtifact;\n};\n\nexport function runAssistantWorkflowToolSelectionReplayLines(\n input: AssistantWorkflowToolSelectionReplayLinesInput,\n options: AssistantWorkflowToolSelectionReplayLinesOptions = {},\n): AssistantWorkflowToolSelectionReplayLinesResult {\n const decisionParse = parseAssistantWorkflowSerializedToolSelectionDecisionLines(input.decisionLines);\n const batch = buildAssistantWorkflowSerializedToolSelectionDecisionBatch(\n decisionParse.decisions,\n options,\n );\n const evaluation = buildAssistantWorkflowToolSelectionEvaluationBatch(\n batch.decisions,\n options,\n );\n const migration = buildAssistantWorkflowToolSelectionMigrationReport(evaluation, {\n ...(options.minMigrationDecisionCount !== undefined\n ? { minDecisionCount: options.minMigrationDecisionCount }\n : {}),\n });\n const migrationProposal = buildAssistantWorkflowToolSelectionAuthorityAllowListProposal(migration, {\n ...(options.currentAuthorityIntentIds !== undefined\n ? { currentAuthorityIntentIds: options.currentAuthorityIntentIds }\n : {}),\n ...(options.currentAuthoritySegmentKeys !== undefined\n ? { currentAuthoritySegmentKeys: options.currentAuthoritySegmentKeys }\n : {}),\n });\n const migrationReviewArtifact = buildAssistantWorkflowToolSelectionMigrationReviewArtifact({\n report: migration,\n proposal: migrationProposal,\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 return {\n decisionParse,\n parseErrorCount: decisionParse.errorCount,\n batch,\n evaluation,\n migration,\n migrationProposal,\n migrationReviewArtifact,\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionReplayLinesTracePayload(\n result: AssistantWorkflowToolSelectionReplayLinesResult,\n): Record<string, AssistantWorkflowJsonValue> {\n return {\n decisionParse: {\n lineCount: result.decisionParse.lineCount,\n decisionCount: result.decisionParse.decisionCount,\n errorCount: result.decisionParse.errorCount,\n errors: result.decisionParse.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 sourceDecisionCount: result.batch.sourceDecisionCount,\n decisionCount: result.batch.decisionCount,\n summary: {\n generatedAt: result.batch.summary.generatedAt,\n sourceDecisionCount: result.batch.summary.sourceDecisionCount,\n decisionCount: result.batch.summary.decisionCount,\n interestingDecisionCount: result.batch.summary.interestingDecisionCount,\n workflowAuthorityCount: result.batch.summary.workflowAuthorityCount,\n legacyAuthorityCount: result.batch.summary.legacyAuthorityCount,\n authoritySourceCounts: serializeCounts(result.batch.summary.authoritySourceCounts),\n authorityReasonCounts: serializeCounts(result.batch.summary.authorityReasonCounts),\n workflowStatusCounts: serializeCounts(result.batch.summary.workflowStatusCounts),\n effectiveReasonCounts: serializeCounts(result.batch.summary.effectiveReasonCounts),\n optionalToolModeCounts: serializeCounts(result.batch.summary.optionalToolModeCounts),\n effectiveToolCounts: serializeCounts(result.batch.summary.effectiveToolCounts),\n workflowSuggestedToolCounts: serializeCounts(result.batch.summary.workflowSuggestedToolCounts),\n workflowSelectionCandidateToolCounts: serializeCounts(\n result.batch.summary.workflowSelectionCandidateToolCounts,\n ),\n },\n },\n evaluation: buildAssistantWorkflowToolSelectionEvaluationBatchTracePayload(result.evaluation),\n migration: buildAssistantWorkflowToolSelectionMigrationReportTracePayload(result.migration),\n migrationProposal: buildAssistantWorkflowToolSelectionAuthorityAllowListProposalTracePayload(\n result.migrationProposal,\n ),\n migrationReviewArtifact: buildAssistantWorkflowToolSelectionMigrationReviewArtifactTracePayload(\n result.migrationReviewArtifact,\n ),\n };\n}\n\nfunction serializeCounts(\n counts: readonly AssistantWorkflowSerializedToolSelectionDecisionBatchCount[],\n): Record<string, AssistantWorkflowJsonValue>[] {\n return counts.map((count) => ({\n key: count.key,\n count: count.count,\n }));\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type AssistantWorkflowToolSelectionSignalState<TSignal extends string = string> = Partial<Record<TSignal, boolean>>;
|
|
2
|
+
export type AssistantWorkflowToolSelectionRuleCondition<TSignal extends string = string> = {
|
|
3
|
+
allSignals?: readonly TSignal[];
|
|
4
|
+
anySignals?: readonly TSignal[];
|
|
5
|
+
notSignals?: readonly TSignal[];
|
|
6
|
+
minHop?: number;
|
|
7
|
+
maxHop?: number;
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type AssistantWorkflowToolSelectionRule<TSignal extends string = string> = {
|
|
11
|
+
id: string;
|
|
12
|
+
toolNames: readonly string[];
|
|
13
|
+
condition?: AssistantWorkflowToolSelectionRuleCondition<TSignal>;
|
|
14
|
+
terminal?: boolean;
|
|
15
|
+
terminalReason?: string;
|
|
16
|
+
};
|
|
17
|
+
export type AssistantWorkflowRuleBasedToolSelectionReasons = {
|
|
18
|
+
noTools?: string;
|
|
19
|
+
disabled?: string;
|
|
20
|
+
emptySelection?: string;
|
|
21
|
+
selected?: string;
|
|
22
|
+
};
|
|
23
|
+
export type AssistantWorkflowRuleBasedToolSelectionInput<TTool, TSignal extends string = string> = {
|
|
24
|
+
allTools: readonly TTool[];
|
|
25
|
+
pruningEnabled: boolean;
|
|
26
|
+
hop?: number | null;
|
|
27
|
+
signals?: AssistantWorkflowToolSelectionSignalState<TSignal> | null;
|
|
28
|
+
classifierSuggestedToolNames?: readonly string[] | null;
|
|
29
|
+
rules?: readonly AssistantWorkflowToolSelectionRule<TSignal>[] | null;
|
|
30
|
+
fallbackToolNames?: readonly string[] | null;
|
|
31
|
+
postFallbackRules?: readonly AssistantWorkflowToolSelectionRule<TSignal>[] | null;
|
|
32
|
+
getToolName?: (tool: TTool) => string | null | undefined;
|
|
33
|
+
estimateToolCost?: (tool: TTool) => number;
|
|
34
|
+
reasons?: AssistantWorkflowRuleBasedToolSelectionReasons;
|
|
35
|
+
};
|
|
36
|
+
export type AssistantWorkflowRuleBasedToolSelectionResult<TTool> = {
|
|
37
|
+
tools: TTool[];
|
|
38
|
+
mode: "full" | "pruned";
|
|
39
|
+
reason: string;
|
|
40
|
+
approxSchemaChars: number;
|
|
41
|
+
toolNames: string[];
|
|
42
|
+
appliedRuleIds: string[];
|
|
43
|
+
};
|
|
44
|
+
export declare function estimateAssistantWorkflowToolSchemaChars<TTool>(tools: readonly TTool[], estimateToolCost?: (tool: TTool) => number): number;
|
|
45
|
+
export declare function selectAssistantWorkflowToolsByRules<TTool, TSignal extends string = string>(input: AssistantWorkflowRuleBasedToolSelectionInput<TTool, TSignal>): AssistantWorkflowRuleBasedToolSelectionResult<TTool>;
|
|
46
|
+
//# sourceMappingURL=tool-selection-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-selection-rules.d.ts","sourceRoot":"","sources":["../src/tool-selection-rules.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yCAAyC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IACnF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpC,MAAM,MAAM,2CAA2C,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACzF,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kCAAkC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,2CAA2C,CAAC,OAAO,CAAC,CAAC;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,8CAA8C,GAAG;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,4CAA4C,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACjG,QAAQ,EAAE,SAAS,KAAK,EAAE,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,yCAAyC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpE,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACxD,KAAK,CAAC,EAAE,SAAS,kCAAkC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;IACtE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,SAAS,kCAAkC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;IAClF,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,8CAA8C,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,6CAA6C,CAAC,KAAK,IAAI;IACjE,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,wBAAgB,wCAAwC,CAAC,KAAK,EAC5D,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,gBAAgB,GAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAgC,GAClE,MAAM,CAIR;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,EACxF,KAAK,EAAE,4CAA4C,CAAC,KAAK,EAAE,OAAO,CAAC,GAClE,6CAA6C,CAAC,KAAK,CAAC,CAyFtD"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
export function estimateAssistantWorkflowToolSchemaChars(tools, estimateToolCost = estimateDefaultToolCost) {
|
|
2
|
+
let total = 0;
|
|
3
|
+
for (const tool of tools)
|
|
4
|
+
total += estimateToolCost(tool);
|
|
5
|
+
return total;
|
|
6
|
+
}
|
|
7
|
+
export function selectAssistantWorkflowToolsByRules(input) {
|
|
8
|
+
const reasons = {
|
|
9
|
+
noTools: input.reasons?.noTools ?? "no_tools",
|
|
10
|
+
disabled: input.reasons?.disabled ?? "disabled",
|
|
11
|
+
emptySelection: input.reasons?.emptySelection ?? "empty_selection",
|
|
12
|
+
selected: input.reasons?.selected ?? "intent_pruned",
|
|
13
|
+
};
|
|
14
|
+
const getToolName = input.getToolName ?? defaultGetToolName;
|
|
15
|
+
const estimateToolCost = input.estimateToolCost ?? estimateDefaultToolCost;
|
|
16
|
+
const allTools = [...input.allTools];
|
|
17
|
+
if (!allTools.length) {
|
|
18
|
+
return {
|
|
19
|
+
tools: [],
|
|
20
|
+
mode: "full",
|
|
21
|
+
reason: reasons.noTools,
|
|
22
|
+
approxSchemaChars: 0,
|
|
23
|
+
toolNames: [],
|
|
24
|
+
appliedRuleIds: [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (!input.pruningEnabled) {
|
|
28
|
+
return {
|
|
29
|
+
tools: allTools,
|
|
30
|
+
mode: "full",
|
|
31
|
+
reason: reasons.disabled,
|
|
32
|
+
approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(allTools, estimateToolCost),
|
|
33
|
+
toolNames: allTools.map((tool) => normalizeToolName(getToolName(tool)) || "unknown"),
|
|
34
|
+
appliedRuleIds: [],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const selectedNames = new Set();
|
|
38
|
+
const appliedRuleIds = [];
|
|
39
|
+
addToolNames(selectedNames, input.classifierSuggestedToolNames ?? []);
|
|
40
|
+
if ((input.classifierSuggestedToolNames ?? []).length > 0) {
|
|
41
|
+
appliedRuleIds.push("classifier_suggested");
|
|
42
|
+
}
|
|
43
|
+
const terminal = applyRules({
|
|
44
|
+
selectedNames,
|
|
45
|
+
appliedRuleIds,
|
|
46
|
+
rules: input.rules ?? [],
|
|
47
|
+
signals: input.signals ?? {},
|
|
48
|
+
hop: input.hop ?? null,
|
|
49
|
+
allTools,
|
|
50
|
+
getToolName,
|
|
51
|
+
estimateToolCost,
|
|
52
|
+
});
|
|
53
|
+
if (terminal)
|
|
54
|
+
return terminal;
|
|
55
|
+
if (selectedNames.size === 0 && (input.fallbackToolNames ?? []).length > 0) {
|
|
56
|
+
addToolNames(selectedNames, input.fallbackToolNames ?? []);
|
|
57
|
+
appliedRuleIds.push("fallback");
|
|
58
|
+
}
|
|
59
|
+
const postFallbackTerminal = applyRules({
|
|
60
|
+
selectedNames,
|
|
61
|
+
appliedRuleIds,
|
|
62
|
+
rules: input.postFallbackRules ?? [],
|
|
63
|
+
signals: input.signals ?? {},
|
|
64
|
+
hop: input.hop ?? null,
|
|
65
|
+
allTools,
|
|
66
|
+
getToolName,
|
|
67
|
+
estimateToolCost,
|
|
68
|
+
});
|
|
69
|
+
if (postFallbackTerminal)
|
|
70
|
+
return postFallbackTerminal;
|
|
71
|
+
const selected = filterSelectedTools(allTools, selectedNames, getToolName);
|
|
72
|
+
if (!selected.tools.length) {
|
|
73
|
+
return {
|
|
74
|
+
tools: allTools,
|
|
75
|
+
mode: "full",
|
|
76
|
+
reason: reasons.emptySelection,
|
|
77
|
+
approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(allTools, estimateToolCost),
|
|
78
|
+
toolNames: allTools.map((tool) => normalizeToolName(getToolName(tool)) || "unknown"),
|
|
79
|
+
appliedRuleIds,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
tools: selected.tools,
|
|
84
|
+
mode: "pruned",
|
|
85
|
+
reason: reasons.selected,
|
|
86
|
+
approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(selected.tools, estimateToolCost),
|
|
87
|
+
toolNames: selected.toolNames,
|
|
88
|
+
appliedRuleIds,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function applyRules(input) {
|
|
92
|
+
for (const rule of input.rules) {
|
|
93
|
+
if (!ruleMatches(rule.condition, input.signals, input.hop))
|
|
94
|
+
continue;
|
|
95
|
+
addToolNames(input.selectedNames, rule.toolNames);
|
|
96
|
+
input.appliedRuleIds.push(rule.id);
|
|
97
|
+
if (rule.terminal) {
|
|
98
|
+
const selected = filterSelectedTools(input.allTools, input.selectedNames, input.getToolName);
|
|
99
|
+
if (!selected.tools.length)
|
|
100
|
+
continue;
|
|
101
|
+
return {
|
|
102
|
+
tools: selected.tools,
|
|
103
|
+
mode: "pruned",
|
|
104
|
+
reason: rule.terminalReason ?? rule.id,
|
|
105
|
+
approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(selected.tools, input.estimateToolCost),
|
|
106
|
+
toolNames: selected.toolNames,
|
|
107
|
+
appliedRuleIds: [...input.appliedRuleIds],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
function ruleMatches(condition, signals, hop) {
|
|
114
|
+
if (!condition)
|
|
115
|
+
return true;
|
|
116
|
+
if (condition.enabled === false)
|
|
117
|
+
return false;
|
|
118
|
+
if (condition.minHop !== undefined && (hop === null || hop < condition.minHop))
|
|
119
|
+
return false;
|
|
120
|
+
if (condition.maxHop !== undefined && (hop === null || hop > condition.maxHop))
|
|
121
|
+
return false;
|
|
122
|
+
if ((condition.allSignals ?? []).some((signal) => signals[signal] !== true))
|
|
123
|
+
return false;
|
|
124
|
+
if ((condition.anySignals ?? []).length > 0 && !(condition.anySignals ?? []).some((signal) => signals[signal] === true)) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if ((condition.notSignals ?? []).some((signal) => signals[signal] === true))
|
|
128
|
+
return false;
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
function filterSelectedTools(tools, selectedNames, getToolName) {
|
|
132
|
+
const selectedTools = [];
|
|
133
|
+
const toolNames = [];
|
|
134
|
+
for (const tool of tools) {
|
|
135
|
+
const name = normalizeToolName(getToolName(tool));
|
|
136
|
+
if (!name || !selectedNames.has(name))
|
|
137
|
+
continue;
|
|
138
|
+
selectedTools.push(tool);
|
|
139
|
+
toolNames.push(name);
|
|
140
|
+
}
|
|
141
|
+
return { tools: selectedTools, toolNames };
|
|
142
|
+
}
|
|
143
|
+
function addToolNames(target, toolNames) {
|
|
144
|
+
for (const toolName of toolNames) {
|
|
145
|
+
const normalized = normalizeToolName(toolName);
|
|
146
|
+
if (normalized)
|
|
147
|
+
target.add(normalized);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function defaultGetToolName(tool) {
|
|
151
|
+
if (!isRecord(tool))
|
|
152
|
+
return null;
|
|
153
|
+
const functionDefinition = tool["function"];
|
|
154
|
+
if (isRecord(functionDefinition) && typeof functionDefinition["name"] === "string") {
|
|
155
|
+
return functionDefinition["name"];
|
|
156
|
+
}
|
|
157
|
+
if (typeof tool["name"] === "string")
|
|
158
|
+
return tool["name"];
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
function estimateDefaultToolCost(tool) {
|
|
162
|
+
if (!isRecord(tool))
|
|
163
|
+
return 0;
|
|
164
|
+
const functionDefinition = tool["function"];
|
|
165
|
+
if (isRecord(functionDefinition)) {
|
|
166
|
+
const name = typeof functionDefinition["name"] === "string" ? functionDefinition["name"] : "";
|
|
167
|
+
const description = typeof functionDefinition["description"] === "string" ? functionDefinition["description"] : "";
|
|
168
|
+
const parameters = functionDefinition["parameters"] ?? {};
|
|
169
|
+
return name.length + description.length + JSON.stringify(parameters).length;
|
|
170
|
+
}
|
|
171
|
+
const name = typeof tool["name"] === "string" ? tool["name"] : "";
|
|
172
|
+
return name.length + JSON.stringify(tool).length;
|
|
173
|
+
}
|
|
174
|
+
function normalizeToolName(value) {
|
|
175
|
+
if (typeof value !== "string")
|
|
176
|
+
return null;
|
|
177
|
+
const trimmed = value.trim();
|
|
178
|
+
return trimmed.length ? trimmed : null;
|
|
179
|
+
}
|
|
180
|
+
function isRecord(value) {
|
|
181
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=tool-selection-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-selection-rules.js","sourceRoot":"","sources":["../src/tool-selection-rules.ts"],"names":[],"mappings":"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","sourcesContent":["export type AssistantWorkflowToolSelectionSignalState<TSignal extends string = string> =\n Partial<Record<TSignal, boolean>>;\n\nexport type AssistantWorkflowToolSelectionRuleCondition<TSignal extends string = string> = {\n allSignals?: readonly TSignal[];\n anySignals?: readonly TSignal[];\n notSignals?: readonly TSignal[];\n minHop?: number;\n maxHop?: number;\n enabled?: boolean;\n};\n\nexport type AssistantWorkflowToolSelectionRule<TSignal extends string = string> = {\n id: string;\n toolNames: readonly string[];\n condition?: AssistantWorkflowToolSelectionRuleCondition<TSignal>;\n terminal?: boolean;\n terminalReason?: string;\n};\n\nexport type AssistantWorkflowRuleBasedToolSelectionReasons = {\n noTools?: string;\n disabled?: string;\n emptySelection?: string;\n selected?: string;\n};\n\nexport type AssistantWorkflowRuleBasedToolSelectionInput<TTool, TSignal extends string = string> = {\n allTools: readonly TTool[];\n pruningEnabled: boolean;\n hop?: number | null;\n signals?: AssistantWorkflowToolSelectionSignalState<TSignal> | null;\n classifierSuggestedToolNames?: readonly string[] | null;\n rules?: readonly AssistantWorkflowToolSelectionRule<TSignal>[] | null;\n fallbackToolNames?: readonly string[] | null;\n postFallbackRules?: readonly AssistantWorkflowToolSelectionRule<TSignal>[] | null;\n getToolName?: (tool: TTool) => string | null | undefined;\n estimateToolCost?: (tool: TTool) => number;\n reasons?: AssistantWorkflowRuleBasedToolSelectionReasons;\n};\n\nexport type AssistantWorkflowRuleBasedToolSelectionResult<TTool> = {\n tools: TTool[];\n mode: \"full\" | \"pruned\";\n reason: string;\n approxSchemaChars: number;\n toolNames: string[];\n appliedRuleIds: string[];\n};\n\nexport function estimateAssistantWorkflowToolSchemaChars<TTool>(\n tools: readonly TTool[],\n estimateToolCost: (tool: TTool) => number = estimateDefaultToolCost,\n): number {\n let total = 0;\n for (const tool of tools) total += estimateToolCost(tool);\n return total;\n}\n\nexport function selectAssistantWorkflowToolsByRules<TTool, TSignal extends string = string>(\n input: AssistantWorkflowRuleBasedToolSelectionInput<TTool, TSignal>,\n): AssistantWorkflowRuleBasedToolSelectionResult<TTool> {\n const reasons = {\n noTools: input.reasons?.noTools ?? \"no_tools\",\n disabled: input.reasons?.disabled ?? \"disabled\",\n emptySelection: input.reasons?.emptySelection ?? \"empty_selection\",\n selected: input.reasons?.selected ?? \"intent_pruned\",\n };\n const getToolName = input.getToolName ?? defaultGetToolName;\n const estimateToolCost = input.estimateToolCost ?? estimateDefaultToolCost;\n const allTools = [...input.allTools];\n\n if (!allTools.length) {\n return {\n tools: [],\n mode: \"full\",\n reason: reasons.noTools,\n approxSchemaChars: 0,\n toolNames: [],\n appliedRuleIds: [],\n };\n }\n\n if (!input.pruningEnabled) {\n return {\n tools: allTools,\n mode: \"full\",\n reason: reasons.disabled,\n approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(allTools, estimateToolCost),\n toolNames: allTools.map((tool) => normalizeToolName(getToolName(tool)) || \"unknown\"),\n appliedRuleIds: [],\n };\n }\n\n const selectedNames = new Set<string>();\n const appliedRuleIds: string[] = [];\n addToolNames(selectedNames, input.classifierSuggestedToolNames ?? []);\n if ((input.classifierSuggestedToolNames ?? []).length > 0) {\n appliedRuleIds.push(\"classifier_suggested\");\n }\n\n const terminal = applyRules({\n selectedNames,\n appliedRuleIds,\n rules: input.rules ?? [],\n signals: input.signals ?? {},\n hop: input.hop ?? null,\n allTools,\n getToolName,\n estimateToolCost,\n });\n if (terminal) return terminal;\n\n if (selectedNames.size === 0 && (input.fallbackToolNames ?? []).length > 0) {\n addToolNames(selectedNames, input.fallbackToolNames ?? []);\n appliedRuleIds.push(\"fallback\");\n }\n\n const postFallbackTerminal = applyRules({\n selectedNames,\n appliedRuleIds,\n rules: input.postFallbackRules ?? [],\n signals: input.signals ?? {},\n hop: input.hop ?? null,\n allTools,\n getToolName,\n estimateToolCost,\n });\n if (postFallbackTerminal) return postFallbackTerminal;\n\n const selected = filterSelectedTools(allTools, selectedNames, getToolName);\n if (!selected.tools.length) {\n return {\n tools: allTools,\n mode: \"full\",\n reason: reasons.emptySelection,\n approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(allTools, estimateToolCost),\n toolNames: allTools.map((tool) => normalizeToolName(getToolName(tool)) || \"unknown\"),\n appliedRuleIds,\n };\n }\n\n return {\n tools: selected.tools,\n mode: \"pruned\",\n reason: reasons.selected,\n approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(selected.tools, estimateToolCost),\n toolNames: selected.toolNames,\n appliedRuleIds,\n };\n}\n\nfunction applyRules<TTool, TSignal extends string>(input: {\n selectedNames: Set<string>;\n appliedRuleIds: string[];\n rules: readonly AssistantWorkflowToolSelectionRule<TSignal>[];\n signals: AssistantWorkflowToolSelectionSignalState<TSignal>;\n hop: number | null;\n allTools: readonly TTool[];\n getToolName: (tool: TTool) => string | null | undefined;\n estimateToolCost: (tool: TTool) => number;\n}): AssistantWorkflowRuleBasedToolSelectionResult<TTool> | null {\n for (const rule of input.rules) {\n if (!ruleMatches(rule.condition, input.signals, input.hop)) continue;\n addToolNames(input.selectedNames, rule.toolNames);\n input.appliedRuleIds.push(rule.id);\n if (rule.terminal) {\n const selected = filterSelectedTools(input.allTools, input.selectedNames, input.getToolName);\n if (!selected.tools.length) continue;\n return {\n tools: selected.tools,\n mode: \"pruned\",\n reason: rule.terminalReason ?? rule.id,\n approxSchemaChars: estimateAssistantWorkflowToolSchemaChars(selected.tools, input.estimateToolCost),\n toolNames: selected.toolNames,\n appliedRuleIds: [...input.appliedRuleIds],\n };\n }\n }\n return null;\n}\n\nfunction ruleMatches<TSignal extends string>(\n condition: AssistantWorkflowToolSelectionRuleCondition<TSignal> | undefined,\n signals: AssistantWorkflowToolSelectionSignalState<TSignal>,\n hop: number | null,\n): boolean {\n if (!condition) return true;\n if (condition.enabled === false) return false;\n if (condition.minHop !== undefined && (hop === null || hop < condition.minHop)) return false;\n if (condition.maxHop !== undefined && (hop === null || hop > condition.maxHop)) return false;\n if ((condition.allSignals ?? []).some((signal) => signals[signal] !== true)) return false;\n if ((condition.anySignals ?? []).length > 0 && !(condition.anySignals ?? []).some((signal) => signals[signal] === true)) {\n return false;\n }\n if ((condition.notSignals ?? []).some((signal) => signals[signal] === true)) return false;\n return true;\n}\n\nfunction filterSelectedTools<TTool>(\n tools: readonly TTool[],\n selectedNames: ReadonlySet<string>,\n getToolName: (tool: TTool) => string | null | undefined,\n): { tools: TTool[]; toolNames: string[] } {\n const selectedTools: TTool[] = [];\n const toolNames: string[] = [];\n for (const tool of tools) {\n const name = normalizeToolName(getToolName(tool));\n if (!name || !selectedNames.has(name)) continue;\n selectedTools.push(tool);\n toolNames.push(name);\n }\n return { tools: selectedTools, toolNames };\n}\n\nfunction addToolNames(target: Set<string>, toolNames: readonly string[]): void {\n for (const toolName of toolNames) {\n const normalized = normalizeToolName(toolName);\n if (normalized) target.add(normalized);\n }\n}\n\nfunction defaultGetToolName<TTool>(tool: TTool): string | null {\n if (!isRecord(tool)) return null;\n const functionDefinition = tool[\"function\"];\n if (isRecord(functionDefinition) && typeof functionDefinition[\"name\"] === \"string\") {\n return functionDefinition[\"name\"];\n }\n if (typeof tool[\"name\"] === \"string\") return tool[\"name\"];\n return null;\n}\n\nfunction estimateDefaultToolCost<TTool>(tool: TTool): number {\n if (!isRecord(tool)) return 0;\n const functionDefinition = tool[\"function\"];\n if (isRecord(functionDefinition)) {\n const name = typeof functionDefinition[\"name\"] === \"string\" ? functionDefinition[\"name\"] : \"\";\n const description = typeof functionDefinition[\"description\"] === \"string\" ? functionDefinition[\"description\"] : \"\";\n const parameters = functionDefinition[\"parameters\"] ?? {};\n return name.length + description.length + JSON.stringify(parameters).length;\n }\n const name = typeof tool[\"name\"] === \"string\" ? tool[\"name\"] : \"\";\n return name.length + JSON.stringify(tool).length;\n}\n\nfunction normalizeToolName(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length ? trimmed : null;\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,37 @@
|
|
|
1
|
+
import type { AssistantWorkflowJsonValue } from "./run-report-json.js";
|
|
2
|
+
import { type AssistantWorkflowTraceEvent } from "./trace-events.js";
|
|
3
|
+
import type { AssistantWorkflowDefinition, AssistantWorkflowToolContextRequirement } from "./definition.js";
|
|
4
|
+
import { type AssistantWorkflowEvalCase, type AssistantWorkflowToolSelectionEvalCaseOptions } from "./eval-case.js";
|
|
5
|
+
import { type AssistantWorkflowSerializedToolSelectionDecision } from "./tool-selection-json.js";
|
|
6
|
+
export type AssistantWorkflowToolSelectionTraceExportResult = {
|
|
7
|
+
traceEventCount: number;
|
|
8
|
+
candidateEventCount: number;
|
|
9
|
+
decisionCount: number;
|
|
10
|
+
skippedCandidateEventCount: number;
|
|
11
|
+
decisions: AssistantWorkflowSerializedToolSelectionDecision[];
|
|
12
|
+
};
|
|
13
|
+
export type AssistantWorkflowToolSelectionTraceEvalCaseOptions = Omit<AssistantWorkflowToolSelectionEvalCaseOptions, "prompt"> & {
|
|
14
|
+
prompt?: string | null;
|
|
15
|
+
};
|
|
16
|
+
export type AssistantWorkflowToolSelectionTraceEvalCaseExportResult = AssistantWorkflowToolSelectionTraceExportResult & {
|
|
17
|
+
prompt: string | null;
|
|
18
|
+
evalCaseCount: number;
|
|
19
|
+
missingPromptCount: number;
|
|
20
|
+
cases: AssistantWorkflowEvalCase[];
|
|
21
|
+
};
|
|
22
|
+
export type AssistantWorkflowToolSelectionTraceCurrentReplayOptions = {
|
|
23
|
+
workflow: AssistantWorkflowDefinition<string, string, string, string>;
|
|
24
|
+
availableToolNames?: readonly string[] | null;
|
|
25
|
+
availableContext?: readonly AssistantWorkflowToolContextRequirement[] | null;
|
|
26
|
+
workflowAuthorityIntentIds?: readonly string[] | null;
|
|
27
|
+
workflowAuthoritySegmentKeys?: readonly string[] | null;
|
|
28
|
+
includeWorkflowToolCapabilities?: boolean;
|
|
29
|
+
};
|
|
30
|
+
export declare function buildAssistantWorkflowSerializedToolSelectionDecisionFromTraceEvent(event: AssistantWorkflowTraceEvent): AssistantWorkflowSerializedToolSelectionDecision | null;
|
|
31
|
+
export declare function buildAssistantWorkflowSerializedToolSelectionDecisionsFromTraceEvents(events: readonly AssistantWorkflowTraceEvent[]): AssistantWorkflowToolSelectionTraceExportResult;
|
|
32
|
+
export declare function buildAssistantWorkflowCurrentSerializedToolSelectionDecisionsFromTraceEvents(events: readonly AssistantWorkflowTraceEvent[], options: AssistantWorkflowToolSelectionTraceCurrentReplayOptions): AssistantWorkflowToolSelectionTraceExportResult;
|
|
33
|
+
export declare function buildAssistantWorkflowCurrentSerializedToolSelectionDecisionFromTraceEvent(event: AssistantWorkflowTraceEvent, classifierPayload: Record<string, unknown> | null, options: AssistantWorkflowToolSelectionTraceCurrentReplayOptions): AssistantWorkflowSerializedToolSelectionDecision | null;
|
|
34
|
+
export declare function buildAssistantWorkflowToolSelectionEvalCasesFromTraceEvents(events: readonly AssistantWorkflowTraceEvent[], options?: AssistantWorkflowToolSelectionTraceEvalCaseOptions): AssistantWorkflowToolSelectionTraceEvalCaseExportResult;
|
|
35
|
+
export declare function buildAssistantWorkflowToolSelectionTraceExportPayload(result: AssistantWorkflowToolSelectionTraceExportResult): Record<string, AssistantWorkflowJsonValue>;
|
|
36
|
+
export declare function buildAssistantWorkflowToolSelectionTraceEvalCaseExportPayload(result: AssistantWorkflowToolSelectionTraceEvalCaseExportResult): Record<string, AssistantWorkflowJsonValue>;
|
|
37
|
+
//# sourceMappingURL=tool-selection-trace-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-selection-trace-export.d.ts","sourceRoot":"","sources":["../src/tool-selection-trace-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAOL,KAAK,2BAA2B,EACjC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,2BAA2B,EAC3B,uCAAuC,EACxC,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,6CAA6C,EACnD,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,gDAAgD,EACtD,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,+CAA+C,GAAG;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,MAAM,CAAC;IACnC,SAAS,EAAE,gDAAgD,EAAE,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,kDAAkD,GAC5D,IAAI,CAAC,6CAA6C,EAAE,QAAQ,CAAC,GAAG;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEJ,MAAM,MAAM,uDAAuD,GACjE,+CAA+C,GAAG;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC,CAAC;AAEJ,MAAM,MAAM,uDAAuD,GAAG;IACpE,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,SAAS,uCAAuC,EAAE,GAAG,IAAI,CAAC;IAC7E,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACtD,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAC3C,CAAC;AAEF,wBAAgB,mEAAmE,CACjF,KAAK,EAAE,2BAA2B,GACjC,gDAAgD,GAAG,IAAI,CAuCzD;AAED,wBAAgB,qEAAqE,CACnF,MAAM,EAAE,SAAS,2BAA2B,EAAE,GAC7C,+CAA+C,CAuBjD;AAED,wBAAgB,4EAA4E,CAC1F,MAAM,EAAE,SAAS,2BAA2B,EAAE,EAC9C,OAAO,EAAE,uDAAuD,GAC/D,+CAA+C,CAiCjD;AAED,wBAAgB,0EAA0E,CACxF,KAAK,EAAE,2BAA2B,EAClC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACjD,OAAO,EAAE,uDAAuD,GAC/D,gDAAgD,GAAG,IAAI,CAkDzD;AAED,wBAAgB,2DAA2D,CACzE,MAAM,EAAE,SAAS,2BAA2B,EAAE,EAC9C,OAAO,GAAE,kDAAuD,GAC/D,uDAAuD,CA2BzD;AAED,wBAAgB,qDAAqD,CACnE,MAAM,EAAE,+CAA+C,GACtD,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAO5C;AAED,wBAAgB,6DAA6D,CAC3E,MAAM,EAAE,uDAAuD,GAC9D,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAO5C"}
|