@uns-kit/assistant-workflow 2.0.79 → 2.0.80
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/dist/decision.d.ts +1 -0
- package/dist/decision.d.ts.map +1 -1
- package/dist/decision.js +5 -0
- package/dist/decision.js.map +1 -1
- package/dist/definition-diagnostics.js +14 -5
- package/dist/definition-diagnostics.js.map +1 -1
- package/dist/definition.d.ts +2 -0
- package/dist/definition.d.ts.map +1 -1
- package/dist/definition.js +12 -3
- package/dist/definition.js.map +1 -1
- package/dist/tool-selection-policy.d.ts +1 -1
- package/dist/tool-selection-policy.d.ts.map +1 -1
- package/dist/tool-selection-policy.js +5 -0
- package/dist/tool-selection-policy.js.map +1 -1
- package/package.json +1 -1
package/dist/decision.d.ts
CHANGED
package/dist/decision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,4CAA4C,EACjD,KAAK,yCAAyC,EAC/C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,qCAAqC,EAC3C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,yCAAyC,CAAC,UAAU,CAAC,CAAC;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACrD,kBAAkB,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC/D,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,YAAY,EAAE,qCAAqC,CAAC;IACpD,mBAAmB,EAAE,4CAA4C,CAAC;IAClE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrE,cAAc,EAAE,8BAA8B,GAAG,IAAI,GAAG,SAAS,EACjE,kBAAkB,GAAE,SAAS,MAAM,EAAO,GACzC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,4CAA4C,EACjD,KAAK,yCAAyC,EAC/C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,qCAAqC,EAC3C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,yCAAyC,CAAC,UAAU,CAAC,CAAC;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACrD,kBAAkB,EAAE,mCAAmC,GAAG,IAAI,CAAC;IAC/D,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,YAAY,EAAE,qCAAqC,CAAC;IACpD,mBAAmB,EAAE,4CAA4C,CAAC;IAClE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrE,cAAc,EAAE,8BAA8B,GAAG,IAAI,GAAG,SAAS,EACjE,kBAAkB,GAAE,SAAS,MAAM,EAAO,GACzC,yBAAyB,CAyD3B;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,yBAAyB,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzB;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrE,QAAQ,EAAE,OAAO,GAChB,OAAO,CAET"}
|
package/dist/decision.js
CHANGED
|
@@ -6,6 +6,9 @@ export function buildAssistantWorkflowDecision(workflow, classification, availab
|
|
|
6
6
|
const intent = typeof classification?.intent === "string" && classification.intent.trim().length
|
|
7
7
|
? classification.intent.trim().toLowerCase()
|
|
8
8
|
: null;
|
|
9
|
+
const subintent = typeof classification?.subintent === "string" && classification.subintent.trim().length
|
|
10
|
+
? classification.subintent.trim().toLowerCase()
|
|
11
|
+
: null;
|
|
9
12
|
const intentDefinition = intent ? findAssistantWorkflowIntent(workflow, intent) : null;
|
|
10
13
|
const availableSet = new Set(availableToolNames);
|
|
11
14
|
const classifierTools = uniqueNonEmptyStrings(classification?.toolsToExpose ?? [])
|
|
@@ -29,6 +32,7 @@ export function buildAssistantWorkflowDecision(workflow, classification, availab
|
|
|
29
32
|
});
|
|
30
33
|
return {
|
|
31
34
|
intent,
|
|
35
|
+
subintent,
|
|
32
36
|
matchedIntent: intentDefinition !== null,
|
|
33
37
|
defaultPresentation: intentDefinition?.defaultPresentation ?? null,
|
|
34
38
|
effectivePresentation: typeof classification?.presentation === "string" && classification.presentation.trim().length
|
|
@@ -52,6 +56,7 @@ export function buildAssistantWorkflowDecision(workflow, classification, availab
|
|
|
52
56
|
export function buildAssistantWorkflowDecisionTracePayload(decision) {
|
|
53
57
|
return {
|
|
54
58
|
intent: decision.intent,
|
|
59
|
+
subintent: decision.subintent,
|
|
55
60
|
matchedIntent: decision.matchedIntent,
|
|
56
61
|
defaultPresentation: decision.defaultPresentation,
|
|
57
62
|
effectivePresentation: decision.effectivePresentation,
|
package/dist/decision.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildAssistantWorkflowClarificationPolicy,\n type AssistantWorkflowResolvedClarificationPolicy,\n type AssistantWorkflowClarificationPolicyInput,\n} from \"./clarification-policy.js\";\nimport {\n findAssistantWorkflowIntent,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowExecutionBias,\n type AssistantWorkflowFirstHopToolPolicy,\n type AssistantWorkflowMemoryUse,\n} from \"./definition.js\";\nimport {\n buildAssistantWorkflowMemoryPolicy,\n type AssistantWorkflowResolvedMemoryPolicy,\n} from \"./memory-policy.js\";\nimport {\n buildAssistantWorkflowPlan,\n type AssistantWorkflowPlan,\n} from \"./planning.js\";\n\nexport type AssistantWorkflowDecisionInput = {\n intent?: string | null;\n subintent?: string | null;\n presentation?: string | null;\n toolsToExpose?: readonly string[] | null;\n confidence?: number | null;\n resolvedScope?: boolean;\n entities?: AssistantWorkflowClarificationPolicyInput[\"entities\"];\n timeWindowHint?: string | null;\n};\n\nexport type AssistantWorkflowDecision = {\n intent: string | null;\n matchedIntent: boolean;\n defaultPresentation: string | null;\n effectivePresentation: string | null;\n executionBias: AssistantWorkflowExecutionBias | null;\n firstHopToolPolicy: AssistantWorkflowFirstHopToolPolicy | null;\n memoryUse: AssistantWorkflowMemoryUse[];\n memoryPolicy: AssistantWorkflowResolvedMemoryPolicy;\n clarificationPolicy: AssistantWorkflowResolvedClarificationPolicy;\n plan: AssistantWorkflowPlan;\n requiredToolHints: string[];\n missingRequiredToolHints: string[];\n toolHints: string[];\n missingToolHints: string[];\n classifierTools: string[];\n workflowSuggestedTools: string[];\n extraClassifierTools: string[];\n};\n\nexport function buildAssistantWorkflowDecision(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n classification: AssistantWorkflowDecisionInput | null | undefined,\n availableToolNames: readonly string[] = [],\n): AssistantWorkflowDecision {\n const intent = typeof classification?.intent === \"string\" && classification.intent.trim().length\n ? classification.intent.trim().toLowerCase()\n : null;\n const intentDefinition = intent ? findAssistantWorkflowIntent(workflow, intent) : null;\n const availableSet = new Set(availableToolNames);\n const classifierTools = uniqueNonEmptyStrings(classification?.toolsToExpose ?? [])\n .filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const toolHintsRaw = uniqueNonEmptyStrings(intentDefinition?.toolHints ?? []);\n const requiredToolHintsRaw = uniqueNonEmptyStrings(intentDefinition?.requiredToolHints ?? []);\n const toolHints = toolHintsRaw.filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const requiredToolHints = requiredToolHintsRaw.filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const missingToolHints = availableSet.size === 0 ? [] : toolHintsRaw.filter((tool) => !availableSet.has(tool));\n const missingRequiredToolHints =\n availableSet.size === 0 ? [] : requiredToolHintsRaw.filter((tool) => !availableSet.has(tool));\n const workflowSuggestedTools = uniqueNonEmptyStrings([...classifierTools, ...requiredToolHints, ...toolHints]);\n const workflowHintSet = new Set([...requiredToolHints, ...toolHints]);\n const memoryPolicy = buildAssistantWorkflowMemoryPolicy(workflow, intent);\n const clarificationPolicy = buildAssistantWorkflowClarificationPolicy(\n workflow,\n intent,\n buildClarificationPolicyInput(classification),\n );\n const plan = buildAssistantWorkflowPlan(workflow, intent, availableToolNames, {\n ...(typeof classification?.subintent === \"string\" ? { subintent: classification.subintent } : {}),\n ...(typeof classification?.presentation === \"string\" ? { presentation: classification.presentation } : {}),\n ...(typeof classification?.timeWindowHint === \"string\" ? { timeWindowHint: classification.timeWindowHint } : {}),\n ...(Array.isArray(classification?.toolsToExpose) ? { toolsToExpose: classification.toolsToExpose } : {}),\n ...(typeof classification?.confidence === \"number\" ? { confidence: classification.confidence } : {}),\n });\n\n return {\n intent,\n matchedIntent: intentDefinition !== null,\n defaultPresentation: intentDefinition?.defaultPresentation ?? null,\n effectivePresentation:\n typeof classification?.presentation === \"string\" && classification.presentation.trim().length\n ? classification.presentation.trim().toLowerCase()\n : intentDefinition?.defaultPresentation ?? null,\n executionBias: intentDefinition?.executionBias ?? null,\n firstHopToolPolicy: intentDefinition ? intentDefinition.firstHopToolPolicy ?? \"auto\" : null,\n memoryUse: uniqueNonEmptyStrings(intentDefinition?.memoryUse ?? []) as AssistantWorkflowMemoryUse[],\n memoryPolicy,\n clarificationPolicy,\n plan,\n requiredToolHints,\n missingRequiredToolHints,\n toolHints,\n missingToolHints,\n classifierTools,\n workflowSuggestedTools,\n extraClassifierTools: classifierTools.filter((tool) => !workflowHintSet.has(tool)),\n };\n}\n\nexport function buildAssistantWorkflowDecisionTracePayload(\n decision: AssistantWorkflowDecision,\n): Record<string, unknown> {\n return {\n intent: decision.intent,\n matchedIntent: decision.matchedIntent,\n defaultPresentation: decision.defaultPresentation,\n effectivePresentation: decision.effectivePresentation,\n executionBias: decision.executionBias,\n firstHopToolPolicy: decision.firstHopToolPolicy,\n memoryUse: decision.memoryUse,\n memoryPolicy: decision.memoryPolicy,\n clarificationPolicy: decision.clarificationPolicy,\n plan: decision.plan,\n classifierTools: decision.classifierTools,\n requiredToolHints: decision.requiredToolHints,\n missingRequiredToolHints: decision.missingRequiredToolHints,\n toolHints: decision.toolHints,\n missingToolHints: decision.missingToolHints,\n workflowSuggestedTools: decision.workflowSuggestedTools,\n extraClassifierTools: decision.extraClassifierTools,\n };\n}\n\nexport function shouldRequireAssistantWorkflowFirstHopTool(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n): boolean {\n return findAssistantWorkflowIntent(workflow, intentId)?.firstHopToolPolicy === \"require-tool\";\n}\n\nfunction uniqueNonEmptyStrings(values: readonly unknown[]): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const trimmed = value.trim();\n if (!trimmed.length || seen.has(trimmed)) continue;\n seen.add(trimmed);\n out.push(trimmed);\n }\n return out;\n}\n\nfunction buildClarificationPolicyInput(\n classification: AssistantWorkflowDecisionInput | null | undefined,\n): AssistantWorkflowClarificationPolicyInput {\n if (!classification) return {};\n return {\n ...(typeof classification.confidence === \"number\" ? { confidence: classification.confidence } : {}),\n ...(classification.resolvedScope === true ? { resolvedScope: true } : {}),\n ...(classification.entities !== undefined ? { entities: classification.entities } : {}),\n ...(classification.timeWindowHint !== undefined ? { timeWindowHint: classification.timeWindowHint } : {}),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildAssistantWorkflowClarificationPolicy,\n type AssistantWorkflowResolvedClarificationPolicy,\n type AssistantWorkflowClarificationPolicyInput,\n} from \"./clarification-policy.js\";\nimport {\n findAssistantWorkflowIntent,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowExecutionBias,\n type AssistantWorkflowFirstHopToolPolicy,\n type AssistantWorkflowMemoryUse,\n} from \"./definition.js\";\nimport {\n buildAssistantWorkflowMemoryPolicy,\n type AssistantWorkflowResolvedMemoryPolicy,\n} from \"./memory-policy.js\";\nimport {\n buildAssistantWorkflowPlan,\n type AssistantWorkflowPlan,\n} from \"./planning.js\";\n\nexport type AssistantWorkflowDecisionInput = {\n intent?: string | null;\n subintent?: string | null;\n presentation?: string | null;\n toolsToExpose?: readonly string[] | null;\n confidence?: number | null;\n resolvedScope?: boolean;\n entities?: AssistantWorkflowClarificationPolicyInput[\"entities\"];\n timeWindowHint?: string | null;\n};\n\nexport type AssistantWorkflowDecision = {\n intent: string | null;\n subintent: string | null;\n matchedIntent: boolean;\n defaultPresentation: string | null;\n effectivePresentation: string | null;\n executionBias: AssistantWorkflowExecutionBias | null;\n firstHopToolPolicy: AssistantWorkflowFirstHopToolPolicy | null;\n memoryUse: AssistantWorkflowMemoryUse[];\n memoryPolicy: AssistantWorkflowResolvedMemoryPolicy;\n clarificationPolicy: AssistantWorkflowResolvedClarificationPolicy;\n plan: AssistantWorkflowPlan;\n requiredToolHints: string[];\n missingRequiredToolHints: string[];\n toolHints: string[];\n missingToolHints: string[];\n classifierTools: string[];\n workflowSuggestedTools: string[];\n extraClassifierTools: string[];\n};\n\nexport function buildAssistantWorkflowDecision(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n classification: AssistantWorkflowDecisionInput | null | undefined,\n availableToolNames: readonly string[] = [],\n): AssistantWorkflowDecision {\n const intent = typeof classification?.intent === \"string\" && classification.intent.trim().length\n ? classification.intent.trim().toLowerCase()\n : null;\n const subintent = typeof classification?.subintent === \"string\" && classification.subintent.trim().length\n ? classification.subintent.trim().toLowerCase()\n : null;\n const intentDefinition = intent ? findAssistantWorkflowIntent(workflow, intent) : null;\n const availableSet = new Set(availableToolNames);\n const classifierTools = uniqueNonEmptyStrings(classification?.toolsToExpose ?? [])\n .filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const toolHintsRaw = uniqueNonEmptyStrings(intentDefinition?.toolHints ?? []);\n const requiredToolHintsRaw = uniqueNonEmptyStrings(intentDefinition?.requiredToolHints ?? []);\n const toolHints = toolHintsRaw.filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const requiredToolHints = requiredToolHintsRaw.filter((tool) => availableSet.size === 0 || availableSet.has(tool));\n const missingToolHints = availableSet.size === 0 ? [] : toolHintsRaw.filter((tool) => !availableSet.has(tool));\n const missingRequiredToolHints =\n availableSet.size === 0 ? [] : requiredToolHintsRaw.filter((tool) => !availableSet.has(tool));\n const workflowSuggestedTools = uniqueNonEmptyStrings([...classifierTools, ...requiredToolHints, ...toolHints]);\n const workflowHintSet = new Set([...requiredToolHints, ...toolHints]);\n const memoryPolicy = buildAssistantWorkflowMemoryPolicy(workflow, intent);\n const clarificationPolicy = buildAssistantWorkflowClarificationPolicy(\n workflow,\n intent,\n buildClarificationPolicyInput(classification),\n );\n const plan = buildAssistantWorkflowPlan(workflow, intent, availableToolNames, {\n ...(typeof classification?.subintent === \"string\" ? { subintent: classification.subintent } : {}),\n ...(typeof classification?.presentation === \"string\" ? { presentation: classification.presentation } : {}),\n ...(typeof classification?.timeWindowHint === \"string\" ? { timeWindowHint: classification.timeWindowHint } : {}),\n ...(Array.isArray(classification?.toolsToExpose) ? { toolsToExpose: classification.toolsToExpose } : {}),\n ...(typeof classification?.confidence === \"number\" ? { confidence: classification.confidence } : {}),\n });\n\n return {\n intent,\n subintent,\n matchedIntent: intentDefinition !== null,\n defaultPresentation: intentDefinition?.defaultPresentation ?? null,\n effectivePresentation:\n typeof classification?.presentation === \"string\" && classification.presentation.trim().length\n ? classification.presentation.trim().toLowerCase()\n : intentDefinition?.defaultPresentation ?? null,\n executionBias: intentDefinition?.executionBias ?? null,\n firstHopToolPolicy: intentDefinition ? intentDefinition.firstHopToolPolicy ?? \"auto\" : null,\n memoryUse: uniqueNonEmptyStrings(intentDefinition?.memoryUse ?? []) as AssistantWorkflowMemoryUse[],\n memoryPolicy,\n clarificationPolicy,\n plan,\n requiredToolHints,\n missingRequiredToolHints,\n toolHints,\n missingToolHints,\n classifierTools,\n workflowSuggestedTools,\n extraClassifierTools: classifierTools.filter((tool) => !workflowHintSet.has(tool)),\n };\n}\n\nexport function buildAssistantWorkflowDecisionTracePayload(\n decision: AssistantWorkflowDecision,\n): Record<string, unknown> {\n return {\n intent: decision.intent,\n subintent: decision.subintent,\n matchedIntent: decision.matchedIntent,\n defaultPresentation: decision.defaultPresentation,\n effectivePresentation: decision.effectivePresentation,\n executionBias: decision.executionBias,\n firstHopToolPolicy: decision.firstHopToolPolicy,\n memoryUse: decision.memoryUse,\n memoryPolicy: decision.memoryPolicy,\n clarificationPolicy: decision.clarificationPolicy,\n plan: decision.plan,\n classifierTools: decision.classifierTools,\n requiredToolHints: decision.requiredToolHints,\n missingRequiredToolHints: decision.missingRequiredToolHints,\n toolHints: decision.toolHints,\n missingToolHints: decision.missingToolHints,\n workflowSuggestedTools: decision.workflowSuggestedTools,\n extraClassifierTools: decision.extraClassifierTools,\n };\n}\n\nexport function shouldRequireAssistantWorkflowFirstHopTool(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n): boolean {\n return findAssistantWorkflowIntent(workflow, intentId)?.firstHopToolPolicy === \"require-tool\";\n}\n\nfunction uniqueNonEmptyStrings(values: readonly unknown[]): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const trimmed = value.trim();\n if (!trimmed.length || seen.has(trimmed)) continue;\n seen.add(trimmed);\n out.push(trimmed);\n }\n return out;\n}\n\nfunction buildClarificationPolicyInput(\n classification: AssistantWorkflowDecisionInput | null | undefined,\n): AssistantWorkflowClarificationPolicyInput {\n if (!classification) return {};\n return {\n ...(typeof classification.confidence === \"number\" ? { confidence: classification.confidence } : {}),\n ...(classification.resolvedScope === true ? { resolvedScope: true } : {}),\n ...(classification.entities !== undefined ? { entities: classification.entities } : {}),\n ...(classification.timeWindowHint !== undefined ? { timeWindowHint: classification.timeWindowHint } : {}),\n };\n}\n"]}
|
|
@@ -199,7 +199,7 @@ function validateReferences(workflow, diagnostics) {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
for (const [index, intent] of workflow.intents.entries()) {
|
|
202
|
-
validateIntentToolSelectionProfiles(intent, index, toolNames, diagnostics);
|
|
202
|
+
validateIntentToolSelectionProfiles(intent, index, toolNames, subintentIds, diagnostics);
|
|
203
203
|
validateIntentPlanningStepProfiles(intent, index, planningStepIds, toolNames, subintentIds, presentationIds, diagnostics);
|
|
204
204
|
if (intent.defaultPresentation && !presentationIds.has(intent.defaultPresentation)) {
|
|
205
205
|
addDiagnostic(diagnostics, "error", "unknown_presentation", `intents[${index}].defaultPresentation`, `Assistant workflow intent ${intent.id} references unknown presentation: ${intent.defaultPresentation}.`);
|
|
@@ -275,7 +275,7 @@ function validateIntentPlanningStepProfiles(intent, intentIndex, planningStepIds
|
|
|
275
275
|
validatePlanningStepProfileCondition(intent.id, profile, profilePath, diagnostics);
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
|
-
function validateIntentToolSelectionProfiles(intent, intentIndex, toolNames, diagnostics) {
|
|
278
|
+
function validateIntentToolSelectionProfiles(intent, intentIndex, toolNames, subintentIds, diagnostics) {
|
|
279
279
|
const seen = new Map();
|
|
280
280
|
for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {
|
|
281
281
|
const profilePath = `intents[${intentIndex}].toolSelectionProfiles[${profileIndex}]`;
|
|
@@ -305,7 +305,7 @@ function validateIntentToolSelectionProfiles(intent, intentIndex, toolNames, dia
|
|
|
305
305
|
addDiagnostic(diagnostics, "error", "unknown_tool_capability", `${profilePath}.toolHints`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} references unknown tool capability: ${toolName}.`);
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
|
-
validateToolSelectionProfileCondition(intent.id, profile, profilePath, diagnostics);
|
|
308
|
+
validateToolSelectionProfileCondition(intent.id, profile, profilePath, subintentIds, diagnostics);
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
311
|
function validatePlanningStepProfileCondition(intentId, profile, profilePath, diagnostics) {
|
|
@@ -332,8 +332,8 @@ function validatePlanningStepProfileCondition(intentId, profile, profilePath, di
|
|
|
332
332
|
addDiagnostic(diagnostics, "error", "invalid_planning_step_profile_condition", `${profilePath}.condition.requiredTools`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} requiredTools must not be empty.`);
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
|
-
function validateToolSelectionProfileCondition(intentId, profile, profilePath, diagnostics) {
|
|
336
|
-
const { minHop, maxHop, selectedReason } = profile.condition ?? {};
|
|
335
|
+
function validateToolSelectionProfileCondition(intentId, profile, profilePath, subintentIds, diagnostics) {
|
|
336
|
+
const { minHop, maxHop, selectedReason, subintent } = profile.condition ?? {};
|
|
337
337
|
if (minHop !== undefined && (!Number.isInteger(minHop) || minHop < 0)) {
|
|
338
338
|
addDiagnostic(diagnostics, "error", "invalid_tool_selection_profile_condition", `${profilePath}.condition.minHop`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must be a non-negative integer.`);
|
|
339
339
|
}
|
|
@@ -343,6 +343,15 @@ function validateToolSelectionProfileCondition(intentId, profile, profilePath, d
|
|
|
343
343
|
if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {
|
|
344
344
|
addDiagnostic(diagnostics, "error", "invalid_tool_selection_profile_condition", `${profilePath}.condition`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`);
|
|
345
345
|
}
|
|
346
|
+
if (subintent !== undefined && subintent !== null) {
|
|
347
|
+
const normalizedSubintent = subintent.trim();
|
|
348
|
+
if (!normalizedSubintent.length) {
|
|
349
|
+
addDiagnostic(diagnostics, "error", "invalid_tool_selection_profile_condition", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} subintent must not be empty.`);
|
|
350
|
+
}
|
|
351
|
+
else if (subintentIds.size > 0 && !subintentIds.has(normalizedSubintent)) {
|
|
352
|
+
addDiagnostic(diagnostics, "error", "missing_id", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown subintent: ${normalizedSubintent}.`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
346
355
|
if (selectedReason !== undefined && !selectedReason.trim().length) {
|
|
347
356
|
addDiagnostic(diagnostics, "error", "invalid_tool_selection_profile_condition", `${profilePath}.condition.selectedReason`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} selectedReason must not be empty.`);
|
|
348
357
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-diagnostics.js","sourceRoot":"","sources":["../src/definition-diagnostics.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n normalizeAssistantWorkflowId,\n type AssistantWorkflowClarificationRuleDefinition,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowDirectRouteDefinition,\n type AssistantWorkflowMemorySlotDefinition,\n type AssistantWorkflowPlanningStepDefinition,\n type AssistantWorkflowToolBindingDefinition,\n type AssistantWorkflowToolCapabilityDefinition,\n type AssistantWorkflowVocabularyItem,\n} from \"./definition.js\";\n\nexport type AssistantWorkflowDefinitionDiagnosticSeverity = \"error\" | \"warning\";\n\nexport type AssistantWorkflowDefinitionDiagnosticCode =\n | \"missing_workflow_id\"\n | \"invalid_workflow_version\"\n | \"missing_intents\"\n | \"missing_id\"\n | \"unnormalized_id\"\n | \"duplicate_id\"\n | \"missing_description\"\n | \"missing_tool_hints\"\n | \"missing_tool_output_kinds\"\n | \"missing_binding_field\"\n | \"invalid_http_method\"\n | \"invalid_tool_selection_profile_condition\"\n | \"invalid_planning_step_profile_condition\"\n | \"missing_repl_target\"\n | \"unknown_tool_capability\"\n | \"tool_provider_mismatch\"\n | \"unknown_presentation\"\n | \"unknown_memory_slot\"\n | \"unknown_planning_step\"\n | \"unknown_clarification_rule\"\n | \"invalid_confidence_threshold\"\n | \"unbound_tool_capability\"\n | \"binding_without_capability\";\n\nexport type AssistantWorkflowDefinitionDiagnostic = {\n severity: AssistantWorkflowDefinitionDiagnosticSeverity;\n code: AssistantWorkflowDefinitionDiagnosticCode;\n path: string;\n message: string;\n};\n\nexport type AssistantWorkflowDefinitionValidationResult = {\n valid: boolean;\n errorCount: number;\n warningCount: number;\n diagnostics: AssistantWorkflowDefinitionDiagnostic[];\n};\n\nexport function validateAssistantWorkflowDefinition(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): AssistantWorkflowDefinitionValidationResult {\n const diagnostics: AssistantWorkflowDefinitionDiagnostic[] = [];\n\n validateHeader(workflow, diagnostics);\n validateVocabulary(\"intent\", \"intents\", workflow.intents, diagnostics);\n validateVocabulary(\"subintent\", \"subintents\", workflow.subintents ?? [], diagnostics);\n validateVocabulary(\"presentation\", \"presentations\", workflow.presentations ?? [], diagnostics);\n validateVocabulary(\"derived transform\", \"derivedTransforms\", workflow.derivedTransforms ?? [], diagnostics);\n validateToolCapabilities(workflow.tools ?? [], diagnostics);\n validateToolBindings(workflow.toolBindings ?? [], diagnostics);\n validateMemorySlots(workflow.memorySlots ?? [], diagnostics);\n validatePlanningSteps(workflow.planningSteps ?? [], diagnostics);\n validateClarificationRules(workflow.clarificationRules ?? [], diagnostics);\n validateDirectRoutes(workflow.directRoutes ?? [], diagnostics);\n validateReferences(workflow, diagnostics);\n\n const errorCount = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\").length;\n const warningCount = diagnostics.filter((diagnostic) => diagnostic.severity === \"warning\").length;\n return {\n valid: errorCount === 0,\n errorCount,\n warningCount,\n diagnostics,\n };\n}\n\nfunction validateHeader(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n if (!workflow.id.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_workflow_id\", \"id\", \"Assistant workflow id is required.\");\n }\n if (!Number.isInteger(workflow.version) || workflow.version < 1) {\n addDiagnostic(diagnostics, \"error\", \"invalid_workflow_version\", \"version\", \"Assistant workflow version must be a positive integer.\");\n }\n if (!workflow.intents.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_intents\", \"intents\", \"Assistant workflow must define at least one intent.\");\n }\n}\n\nfunction validateVocabulary(\n kind: string,\n path: string,\n items: readonly AssistantWorkflowVocabularyItem[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, item] of items.entries()) {\n const itemPath = `${path}[${index}]`;\n const normalized = normalizeAssistantWorkflowId(item.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${itemPath}.id`, `Assistant workflow ${kind} id is required.`);\n continue;\n }\n if (normalized !== item.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${itemPath}.id`, `Assistant workflow ${kind} id must already be normalized: ${item.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${itemPath}.id`, `Duplicate assistant workflow ${kind} id: ${normalized}; first seen at ${path}[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n if (!item.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${itemPath}.description`, `Assistant workflow ${kind} ${normalized} description is required.`);\n }\n }\n}\n\nfunction validateToolCapabilities(\n tools: readonly AssistantWorkflowToolCapabilityDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, tool] of tools.entries()) {\n const path = `tools[${index}]`;\n const normalized = normalizeAssistantWorkflowId(tool.name);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${path}.name`, \"Assistant workflow tool capability name is required.\");\n continue;\n }\n if (normalized !== tool.name) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${path}.name`, `Assistant workflow tool capability name must already be normalized: ${tool.name}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${path}.name`, `Duplicate assistant workflow tool capability: ${normalized}; first seen at tools[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n if (!tool.outputKinds.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_tool_output_kinds\", `${path}.outputKinds`, `Assistant workflow tool capability ${normalized} must define at least one output kind.`);\n }\n }\n}\n\nfunction validateToolBindings(\n bindings: readonly AssistantWorkflowToolBindingDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, binding] of bindings.entries()) {\n const path = `toolBindings[${index}]`;\n const normalized = normalizeAssistantWorkflowId(binding.name);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${path}.name`, \"Assistant workflow tool binding name is required.\");\n continue;\n }\n if (normalized !== binding.name) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${path}.name`, `Assistant workflow tool binding name must already be normalized: ${binding.name}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${path}.name`, `Duplicate assistant workflow tool binding: ${normalized}; first seen at toolBindings[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n validateToolBindingTarget(binding, path, diagnostics);\n }\n}\n\nfunction validateToolBindingTarget(\n binding: AssistantWorkflowToolBindingDefinition,\n path: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n switch (binding.provider) {\n case \"local-function\":\n validateRequiredField(binding.handlerId, `${path}.handlerId`, binding.name, \"handlerId\", diagnostics);\n return;\n case \"http\":\n validateRequiredField(binding.path, `${path}.path`, binding.name, \"path\", diagnostics);\n if (binding.method !== undefined && binding.method !== binding.method.toUpperCase()) {\n addDiagnostic(diagnostics, \"error\", \"invalid_http_method\", `${path}.method`, `Assistant workflow tool binding ${binding.name} HTTP method must be uppercase.`);\n }\n return;\n case \"openai-hosted\":\n validateRequiredField(binding.hostedToolType, `${path}.hostedToolType`, binding.name, \"hostedToolType\", diagnostics);\n return;\n case \"mcp\":\n validateRequiredField(binding.serverId, `${path}.serverId`, binding.name, \"serverId\", diagnostics);\n validateRequiredField(binding.toolName, `${path}.toolName`, binding.name, \"toolName\", diagnostics);\n return;\n case \"repl\":\n validateRequiredField(binding.runtimeId, `${path}.runtimeId`, binding.name, \"runtimeId\", diagnostics);\n if (!binding.functionName?.trim().length && !binding.commandTemplate?.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_repl_target\", path, `Assistant workflow tool binding ${binding.name} must define functionName or commandTemplate.`);\n }\n return;\n }\n}\n\nfunction validateRequiredField(\n value: string,\n path: string,\n toolName: string,\n fieldName: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n if (!value.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_binding_field\", path, `Assistant workflow tool binding ${toolName} ${fieldName} is required.`);\n }\n}\n\nfunction validateMemorySlots(\n slots: readonly AssistantWorkflowMemorySlotDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"memory slot\", \"memorySlots\", slots, diagnostics);\n}\n\nfunction validatePlanningSteps(\n steps: readonly AssistantWorkflowPlanningStepDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"planning step\", \"planningSteps\", steps, diagnostics);\n}\n\nfunction validateClarificationRules(\n rules: readonly AssistantWorkflowClarificationRuleDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"clarification rule\", \"clarificationRules\", rules, diagnostics);\n for (const [index, rule] of rules.entries()) {\n if (\n rule.condition === \"low_confidence\" &&\n rule.confidenceBelow !== undefined &&\n (!Number.isFinite(rule.confidenceBelow) || rule.confidenceBelow < 0 || rule.confidenceBelow > 1)\n ) {\n addDiagnostic(diagnostics, \"error\", \"invalid_confidence_threshold\", `clarificationRules[${index}].confidenceBelow`, `Assistant workflow clarification rule ${rule.id} confidenceBelow must be between 0 and 1.`);\n }\n }\n}\n\nfunction validateDirectRoutes(\n routes: readonly AssistantWorkflowDirectRouteDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"direct route\", \"directRoutes\", routes, diagnostics);\n for (const [routeIndex, route] of routes.entries()) {\n validateVocabulary(\n `direct route ${route.id} strategy`,\n `directRoutes[${routeIndex}].strategies`,\n route.strategies ?? [],\n diagnostics,\n );\n }\n}\n\nfunction validateReferences(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const toolCapabilities = new Map((workflow.tools ?? []).map((tool) => [tool.name, tool] as const));\n const toolBindings = new Map((workflow.toolBindings ?? []).map((binding) => [binding.name, binding] as const));\n const toolNames = new Set(toolCapabilities.keys());\n const presentationIds = new Set((workflow.presentations ?? []).map((presentation) => presentation.id));\n const subintentIds = new Set((workflow.subintents ?? []).map((subintent) => subintent.id));\n const memorySlotIds = new Set((workflow.memorySlots ?? []).map((slot) => slot.id));\n const planningStepIds = new Set((workflow.planningSteps ?? []).map((step) => step.id));\n const clarificationRuleIds = new Set((workflow.clarificationRules ?? []).map((rule) => rule.id));\n\n for (const [index, binding] of (workflow.toolBindings ?? []).entries()) {\n const capability = toolCapabilities.get(binding.name);\n if (toolCapabilities.size > 0 && !capability) {\n addDiagnostic(diagnostics, \"error\", \"binding_without_capability\", `toolBindings[${index}].name`, `Assistant workflow tool binding references unknown tool capability: ${binding.name}.`);\n }\n if (capability && capability.provider !== binding.provider) {\n addDiagnostic(diagnostics, \"error\", \"tool_provider_mismatch\", `toolBindings[${index}].provider`, `Assistant workflow tool binding ${binding.name} provider ${binding.provider} does not match capability provider ${capability.provider}.`);\n }\n }\n for (const [index, tool] of (workflow.tools ?? []).entries()) {\n if (!toolBindings.has(tool.name)) {\n addDiagnostic(diagnostics, \"warning\", \"unbound_tool_capability\", `tools[${index}].name`, `Assistant workflow tool capability ${tool.name} has no binding.`);\n }\n }\n\n for (const [index, step] of (workflow.planningSteps ?? []).entries()) {\n for (const toolName of [...(step.toolHints ?? []), ...(step.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `planningSteps[${index}].toolHints`, `Assistant workflow planning step ${step.id} references unknown tool capability: ${toolName}.`);\n }\n }\n for (const slotId of [...(step.readsMemory ?? []), ...(step.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `planningSteps[${index}].readsMemory`, `Assistant workflow planning step ${step.id} references unknown memory slot: ${slotId}.`);\n }\n }\n }\n\n for (const [index, rule] of (workflow.clarificationRules ?? []).entries()) {\n for (const slotId of [...(rule.readsMemory ?? []), ...(rule.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `clarificationRules[${index}].readsMemory`, `Assistant workflow clarification rule ${rule.id} references unknown memory slot: ${slotId}.`);\n }\n }\n }\n\n for (const [index, intent] of workflow.intents.entries()) {\n validateIntentToolSelectionProfiles(intent, index, toolNames, diagnostics);\n validateIntentPlanningStepProfiles(intent, index, planningStepIds, toolNames, subintentIds, presentationIds, diagnostics);\n if (intent.defaultPresentation && !presentationIds.has(intent.defaultPresentation)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_presentation\", `intents[${index}].defaultPresentation`, `Assistant workflow intent ${intent.id} references unknown presentation: ${intent.defaultPresentation}.`);\n }\n for (const toolName of [...(intent.toolHints ?? []), ...(intent.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `intents[${index}].toolHints`, `Assistant workflow intent ${intent.id} references unknown tool capability: ${toolName}.`);\n }\n }\n for (const slotId of [\n ...(intent.memoryPolicy?.read ?? []),\n ...(intent.memoryPolicy?.write ?? []),\n ...(intent.memoryPolicy?.inject ?? []),\n ]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `intents[${index}].memoryPolicy`, `Assistant workflow intent ${intent.id} references unknown memory slot: ${slotId}.`);\n }\n }\n for (const stepId of intent.planningSteps ?? []) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `intents[${index}].planningSteps`, `Assistant workflow intent ${intent.id} references unknown planning step: ${stepId}.`);\n }\n }\n for (const ruleId of intent.clarificationRules ?? []) {\n if (clarificationRuleIds.size > 0 && !clarificationRuleIds.has(ruleId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_clarification_rule\", `intents[${index}].clarificationRules`, `Assistant workflow intent ${intent.id} references unknown clarification rule: ${ruleId}.`);\n }\n }\n }\n}\n\nfunction validateIntentPlanningStepProfiles(\n intent: AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number],\n intentIndex: number,\n planningStepIds: ReadonlySet<string>,\n toolNames: ReadonlySet<string>,\n subintentIds: ReadonlySet<string>,\n presentationIds: ReadonlySet<string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [profileIndex, profile] of (intent.planningStepProfiles ?? []).entries()) {\n const profilePath = `intents[${intentIndex}].planningStepProfiles[${profileIndex}]`;\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} planning step profile id is required.`);\n continue;\n }\n if (normalized !== profile.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} planning step profile id must already be normalized: ${profile.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${profilePath}.id`, `Duplicate assistant workflow intent ${intent.id} planning step profile: ${normalized}; first seen at intents[${intentIndex}].planningStepProfiles[${firstIndex}].`);\n } else {\n seen.set(normalized, profileIndex);\n }\n if (!profile.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${profilePath}.description`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} description is required.`);\n }\n if (!profile.planningSteps.length) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `${profilePath}.planningSteps`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} must define at least one planning step.`);\n }\n for (const stepId of profile.planningSteps) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `${profilePath}.planningSteps`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown planning step: ${stepId}.`);\n }\n }\n for (const toolName of profile.condition?.requiredTools ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `${profilePath}.condition.requiredTools`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown required tool: ${toolName}.`);\n }\n }\n const condition = profile.condition;\n if (condition?.subintent && subintentIds.size > 0 && !subintentIds.has(condition.subintent)) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown subintent: ${condition.subintent}.`);\n }\n if (condition?.presentation && presentationIds.size > 0 && !presentationIds.has(condition.presentation)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_presentation\", `${profilePath}.condition.presentation`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown presentation: ${condition.presentation}.`);\n }\n validatePlanningStepProfileCondition(intent.id, profile, profilePath, diagnostics);\n }\n}\n\nfunction validateIntentToolSelectionProfiles(\n intent: AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number],\n intentIndex: number,\n toolNames: ReadonlySet<string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {\n const profilePath = `intents[${intentIndex}].toolSelectionProfiles[${profileIndex}]`;\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} tool selection profile id is required.`);\n continue;\n }\n if (normalized !== profile.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} tool selection profile id must already be normalized: ${profile.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${profilePath}.id`, `Duplicate assistant workflow intent ${intent.id} tool selection profile: ${normalized}; first seen at intents[${intentIndex}].toolSelectionProfiles[${firstIndex}].`);\n } else {\n seen.set(normalized, profileIndex);\n }\n if (!profile.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${profilePath}.description`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} description is required.`);\n }\n if (!profile.toolHints.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_tool_hints\", `${profilePath}.toolHints`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} must define at least one tool hint.`);\n }\n for (const toolName of profile.toolHints) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `${profilePath}.toolHints`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} references unknown tool capability: ${toolName}.`);\n }\n }\n validateToolSelectionProfileCondition(intent.id, profile, profilePath, diagnostics);\n }\n}\n\nfunction validatePlanningStepProfileCondition(\n intentId: string,\n profile: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"planningStepProfiles\"]>[number],\n profilePath: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const { minConfidence, maxConfidence, subintent, presentation, timeWindowHint, requiredTools } = profile.condition ?? {};\n if (minConfidence !== undefined && (!Number.isFinite(minConfidence) || minConfidence < 0 || minConfidence > 1)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.minConfidence`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must be between 0 and 1.`);\n }\n if (maxConfidence !== undefined && (!Number.isFinite(maxConfidence) || maxConfidence < 0 || maxConfidence > 1)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.maxConfidence`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} maxConfidence must be between 0 and 1.`);\n }\n if (minConfidence !== undefined && maxConfidence !== undefined && minConfidence > maxConfidence) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must not exceed maxConfidence.`);\n }\n if (subintent !== undefined && !subintent.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} subintent must not be empty.`);\n }\n if (presentation !== undefined && !presentation.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.presentation`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} presentation must not be empty.`);\n }\n if (timeWindowHint !== undefined && !timeWindowHint.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.timeWindowHint`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} timeWindowHint must not be empty.`);\n }\n if (requiredTools !== undefined && requiredTools.length === 0) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.requiredTools`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} requiredTools must not be empty.`);\n }\n}\n\nfunction validateToolSelectionProfileCondition(\n intentId: string,\n profile: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"toolSelectionProfiles\"]>[number],\n profilePath: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const { minHop, maxHop, selectedReason } = profile.condition ?? {};\n if (minHop !== undefined && (!Number.isInteger(minHop) || minHop < 0)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.minHop`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must be a non-negative integer.`);\n }\n if (maxHop !== undefined && (!Number.isInteger(maxHop) || maxHop < 0)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.maxHop`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxHop must be a non-negative integer.`);\n }\n if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`);\n }\n if (selectedReason !== undefined && !selectedReason.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.selectedReason`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} selectedReason must not be empty.`);\n }\n}\n\nfunction addDiagnostic(\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n severity: AssistantWorkflowDefinitionDiagnosticSeverity,\n code: AssistantWorkflowDefinitionDiagnosticCode,\n path: string,\n message: string,\n): void {\n diagnostics.push({ severity, code, path, message });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definition-diagnostics.js","sourceRoot":"","sources":["../src/definition-diagnostics.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n normalizeAssistantWorkflowId,\n type AssistantWorkflowClarificationRuleDefinition,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowDirectRouteDefinition,\n type AssistantWorkflowMemorySlotDefinition,\n type AssistantWorkflowPlanningStepDefinition,\n type AssistantWorkflowToolBindingDefinition,\n type AssistantWorkflowToolCapabilityDefinition,\n type AssistantWorkflowVocabularyItem,\n} from \"./definition.js\";\n\nexport type AssistantWorkflowDefinitionDiagnosticSeverity = \"error\" | \"warning\";\n\nexport type AssistantWorkflowDefinitionDiagnosticCode =\n | \"missing_workflow_id\"\n | \"invalid_workflow_version\"\n | \"missing_intents\"\n | \"missing_id\"\n | \"unnormalized_id\"\n | \"duplicate_id\"\n | \"missing_description\"\n | \"missing_tool_hints\"\n | \"missing_tool_output_kinds\"\n | \"missing_binding_field\"\n | \"invalid_http_method\"\n | \"invalid_tool_selection_profile_condition\"\n | \"invalid_planning_step_profile_condition\"\n | \"missing_repl_target\"\n | \"unknown_tool_capability\"\n | \"tool_provider_mismatch\"\n | \"unknown_presentation\"\n | \"unknown_memory_slot\"\n | \"unknown_planning_step\"\n | \"unknown_clarification_rule\"\n | \"invalid_confidence_threshold\"\n | \"unbound_tool_capability\"\n | \"binding_without_capability\";\n\nexport type AssistantWorkflowDefinitionDiagnostic = {\n severity: AssistantWorkflowDefinitionDiagnosticSeverity;\n code: AssistantWorkflowDefinitionDiagnosticCode;\n path: string;\n message: string;\n};\n\nexport type AssistantWorkflowDefinitionValidationResult = {\n valid: boolean;\n errorCount: number;\n warningCount: number;\n diagnostics: AssistantWorkflowDefinitionDiagnostic[];\n};\n\nexport function validateAssistantWorkflowDefinition(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): AssistantWorkflowDefinitionValidationResult {\n const diagnostics: AssistantWorkflowDefinitionDiagnostic[] = [];\n\n validateHeader(workflow, diagnostics);\n validateVocabulary(\"intent\", \"intents\", workflow.intents, diagnostics);\n validateVocabulary(\"subintent\", \"subintents\", workflow.subintents ?? [], diagnostics);\n validateVocabulary(\"presentation\", \"presentations\", workflow.presentations ?? [], diagnostics);\n validateVocabulary(\"derived transform\", \"derivedTransforms\", workflow.derivedTransforms ?? [], diagnostics);\n validateToolCapabilities(workflow.tools ?? [], diagnostics);\n validateToolBindings(workflow.toolBindings ?? [], diagnostics);\n validateMemorySlots(workflow.memorySlots ?? [], diagnostics);\n validatePlanningSteps(workflow.planningSteps ?? [], diagnostics);\n validateClarificationRules(workflow.clarificationRules ?? [], diagnostics);\n validateDirectRoutes(workflow.directRoutes ?? [], diagnostics);\n validateReferences(workflow, diagnostics);\n\n const errorCount = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\").length;\n const warningCount = diagnostics.filter((diagnostic) => diagnostic.severity === \"warning\").length;\n return {\n valid: errorCount === 0,\n errorCount,\n warningCount,\n diagnostics,\n };\n}\n\nfunction validateHeader(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n if (!workflow.id.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_workflow_id\", \"id\", \"Assistant workflow id is required.\");\n }\n if (!Number.isInteger(workflow.version) || workflow.version < 1) {\n addDiagnostic(diagnostics, \"error\", \"invalid_workflow_version\", \"version\", \"Assistant workflow version must be a positive integer.\");\n }\n if (!workflow.intents.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_intents\", \"intents\", \"Assistant workflow must define at least one intent.\");\n }\n}\n\nfunction validateVocabulary(\n kind: string,\n path: string,\n items: readonly AssistantWorkflowVocabularyItem[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, item] of items.entries()) {\n const itemPath = `${path}[${index}]`;\n const normalized = normalizeAssistantWorkflowId(item.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${itemPath}.id`, `Assistant workflow ${kind} id is required.`);\n continue;\n }\n if (normalized !== item.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${itemPath}.id`, `Assistant workflow ${kind} id must already be normalized: ${item.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${itemPath}.id`, `Duplicate assistant workflow ${kind} id: ${normalized}; first seen at ${path}[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n if (!item.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${itemPath}.description`, `Assistant workflow ${kind} ${normalized} description is required.`);\n }\n }\n}\n\nfunction validateToolCapabilities(\n tools: readonly AssistantWorkflowToolCapabilityDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, tool] of tools.entries()) {\n const path = `tools[${index}]`;\n const normalized = normalizeAssistantWorkflowId(tool.name);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${path}.name`, \"Assistant workflow tool capability name is required.\");\n continue;\n }\n if (normalized !== tool.name) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${path}.name`, `Assistant workflow tool capability name must already be normalized: ${tool.name}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${path}.name`, `Duplicate assistant workflow tool capability: ${normalized}; first seen at tools[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n if (!tool.outputKinds.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_tool_output_kinds\", `${path}.outputKinds`, `Assistant workflow tool capability ${normalized} must define at least one output kind.`);\n }\n }\n}\n\nfunction validateToolBindings(\n bindings: readonly AssistantWorkflowToolBindingDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [index, binding] of bindings.entries()) {\n const path = `toolBindings[${index}]`;\n const normalized = normalizeAssistantWorkflowId(binding.name);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${path}.name`, \"Assistant workflow tool binding name is required.\");\n continue;\n }\n if (normalized !== binding.name) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${path}.name`, `Assistant workflow tool binding name must already be normalized: ${binding.name}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${path}.name`, `Duplicate assistant workflow tool binding: ${normalized}; first seen at toolBindings[${firstIndex}].`);\n } else {\n seen.set(normalized, index);\n }\n validateToolBindingTarget(binding, path, diagnostics);\n }\n}\n\nfunction validateToolBindingTarget(\n binding: AssistantWorkflowToolBindingDefinition,\n path: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n switch (binding.provider) {\n case \"local-function\":\n validateRequiredField(binding.handlerId, `${path}.handlerId`, binding.name, \"handlerId\", diagnostics);\n return;\n case \"http\":\n validateRequiredField(binding.path, `${path}.path`, binding.name, \"path\", diagnostics);\n if (binding.method !== undefined && binding.method !== binding.method.toUpperCase()) {\n addDiagnostic(diagnostics, \"error\", \"invalid_http_method\", `${path}.method`, `Assistant workflow tool binding ${binding.name} HTTP method must be uppercase.`);\n }\n return;\n case \"openai-hosted\":\n validateRequiredField(binding.hostedToolType, `${path}.hostedToolType`, binding.name, \"hostedToolType\", diagnostics);\n return;\n case \"mcp\":\n validateRequiredField(binding.serverId, `${path}.serverId`, binding.name, \"serverId\", diagnostics);\n validateRequiredField(binding.toolName, `${path}.toolName`, binding.name, \"toolName\", diagnostics);\n return;\n case \"repl\":\n validateRequiredField(binding.runtimeId, `${path}.runtimeId`, binding.name, \"runtimeId\", diagnostics);\n if (!binding.functionName?.trim().length && !binding.commandTemplate?.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_repl_target\", path, `Assistant workflow tool binding ${binding.name} must define functionName or commandTemplate.`);\n }\n return;\n }\n}\n\nfunction validateRequiredField(\n value: string,\n path: string,\n toolName: string,\n fieldName: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n if (!value.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_binding_field\", path, `Assistant workflow tool binding ${toolName} ${fieldName} is required.`);\n }\n}\n\nfunction validateMemorySlots(\n slots: readonly AssistantWorkflowMemorySlotDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"memory slot\", \"memorySlots\", slots, diagnostics);\n}\n\nfunction validatePlanningSteps(\n steps: readonly AssistantWorkflowPlanningStepDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"planning step\", \"planningSteps\", steps, diagnostics);\n}\n\nfunction validateClarificationRules(\n rules: readonly AssistantWorkflowClarificationRuleDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"clarification rule\", \"clarificationRules\", rules, diagnostics);\n for (const [index, rule] of rules.entries()) {\n if (\n rule.condition === \"low_confidence\" &&\n rule.confidenceBelow !== undefined &&\n (!Number.isFinite(rule.confidenceBelow) || rule.confidenceBelow < 0 || rule.confidenceBelow > 1)\n ) {\n addDiagnostic(diagnostics, \"error\", \"invalid_confidence_threshold\", `clarificationRules[${index}].confidenceBelow`, `Assistant workflow clarification rule ${rule.id} confidenceBelow must be between 0 and 1.`);\n }\n }\n}\n\nfunction validateDirectRoutes(\n routes: readonly AssistantWorkflowDirectRouteDefinition[],\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n validateVocabulary(\"direct route\", \"directRoutes\", routes, diagnostics);\n for (const [routeIndex, route] of routes.entries()) {\n validateVocabulary(\n `direct route ${route.id} strategy`,\n `directRoutes[${routeIndex}].strategies`,\n route.strategies ?? [],\n diagnostics,\n );\n }\n}\n\nfunction validateReferences(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const toolCapabilities = new Map((workflow.tools ?? []).map((tool) => [tool.name, tool] as const));\n const toolBindings = new Map((workflow.toolBindings ?? []).map((binding) => [binding.name, binding] as const));\n const toolNames = new Set(toolCapabilities.keys());\n const presentationIds = new Set((workflow.presentations ?? []).map((presentation) => presentation.id));\n const subintentIds = new Set((workflow.subintents ?? []).map((subintent) => subintent.id));\n const memorySlotIds = new Set((workflow.memorySlots ?? []).map((slot) => slot.id));\n const planningStepIds = new Set((workflow.planningSteps ?? []).map((step) => step.id));\n const clarificationRuleIds = new Set((workflow.clarificationRules ?? []).map((rule) => rule.id));\n\n for (const [index, binding] of (workflow.toolBindings ?? []).entries()) {\n const capability = toolCapabilities.get(binding.name);\n if (toolCapabilities.size > 0 && !capability) {\n addDiagnostic(diagnostics, \"error\", \"binding_without_capability\", `toolBindings[${index}].name`, `Assistant workflow tool binding references unknown tool capability: ${binding.name}.`);\n }\n if (capability && capability.provider !== binding.provider) {\n addDiagnostic(diagnostics, \"error\", \"tool_provider_mismatch\", `toolBindings[${index}].provider`, `Assistant workflow tool binding ${binding.name} provider ${binding.provider} does not match capability provider ${capability.provider}.`);\n }\n }\n for (const [index, tool] of (workflow.tools ?? []).entries()) {\n if (!toolBindings.has(tool.name)) {\n addDiagnostic(diagnostics, \"warning\", \"unbound_tool_capability\", `tools[${index}].name`, `Assistant workflow tool capability ${tool.name} has no binding.`);\n }\n }\n\n for (const [index, step] of (workflow.planningSteps ?? []).entries()) {\n for (const toolName of [...(step.toolHints ?? []), ...(step.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `planningSteps[${index}].toolHints`, `Assistant workflow planning step ${step.id} references unknown tool capability: ${toolName}.`);\n }\n }\n for (const slotId of [...(step.readsMemory ?? []), ...(step.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `planningSteps[${index}].readsMemory`, `Assistant workflow planning step ${step.id} references unknown memory slot: ${slotId}.`);\n }\n }\n }\n\n for (const [index, rule] of (workflow.clarificationRules ?? []).entries()) {\n for (const slotId of [...(rule.readsMemory ?? []), ...(rule.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `clarificationRules[${index}].readsMemory`, `Assistant workflow clarification rule ${rule.id} references unknown memory slot: ${slotId}.`);\n }\n }\n }\n\n for (const [index, intent] of workflow.intents.entries()) {\n validateIntentToolSelectionProfiles(intent, index, toolNames, subintentIds, diagnostics);\n validateIntentPlanningStepProfiles(intent, index, planningStepIds, toolNames, subintentIds, presentationIds, diagnostics);\n if (intent.defaultPresentation && !presentationIds.has(intent.defaultPresentation)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_presentation\", `intents[${index}].defaultPresentation`, `Assistant workflow intent ${intent.id} references unknown presentation: ${intent.defaultPresentation}.`);\n }\n for (const toolName of [...(intent.toolHints ?? []), ...(intent.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `intents[${index}].toolHints`, `Assistant workflow intent ${intent.id} references unknown tool capability: ${toolName}.`);\n }\n }\n for (const slotId of [\n ...(intent.memoryPolicy?.read ?? []),\n ...(intent.memoryPolicy?.write ?? []),\n ...(intent.memoryPolicy?.inject ?? []),\n ]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_memory_slot\", `intents[${index}].memoryPolicy`, `Assistant workflow intent ${intent.id} references unknown memory slot: ${slotId}.`);\n }\n }\n for (const stepId of intent.planningSteps ?? []) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `intents[${index}].planningSteps`, `Assistant workflow intent ${intent.id} references unknown planning step: ${stepId}.`);\n }\n }\n for (const ruleId of intent.clarificationRules ?? []) {\n if (clarificationRuleIds.size > 0 && !clarificationRuleIds.has(ruleId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_clarification_rule\", `intents[${index}].clarificationRules`, `Assistant workflow intent ${intent.id} references unknown clarification rule: ${ruleId}.`);\n }\n }\n }\n}\n\nfunction validateIntentPlanningStepProfiles(\n intent: AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number],\n intentIndex: number,\n planningStepIds: ReadonlySet<string>,\n toolNames: ReadonlySet<string>,\n subintentIds: ReadonlySet<string>,\n presentationIds: ReadonlySet<string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [profileIndex, profile] of (intent.planningStepProfiles ?? []).entries()) {\n const profilePath = `intents[${intentIndex}].planningStepProfiles[${profileIndex}]`;\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} planning step profile id is required.`);\n continue;\n }\n if (normalized !== profile.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} planning step profile id must already be normalized: ${profile.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${profilePath}.id`, `Duplicate assistant workflow intent ${intent.id} planning step profile: ${normalized}; first seen at intents[${intentIndex}].planningStepProfiles[${firstIndex}].`);\n } else {\n seen.set(normalized, profileIndex);\n }\n if (!profile.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${profilePath}.description`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} description is required.`);\n }\n if (!profile.planningSteps.length) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `${profilePath}.planningSteps`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} must define at least one planning step.`);\n }\n for (const stepId of profile.planningSteps) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_planning_step\", `${profilePath}.planningSteps`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown planning step: ${stepId}.`);\n }\n }\n for (const toolName of profile.condition?.requiredTools ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `${profilePath}.condition.requiredTools`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown required tool: ${toolName}.`);\n }\n }\n const condition = profile.condition;\n if (condition?.subintent && subintentIds.size > 0 && !subintentIds.has(condition.subintent)) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown subintent: ${condition.subintent}.`);\n }\n if (condition?.presentation && presentationIds.size > 0 && !presentationIds.has(condition.presentation)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_presentation\", `${profilePath}.condition.presentation`, `Assistant workflow intent ${intent.id} planning step profile ${normalized} references unknown presentation: ${condition.presentation}.`);\n }\n validatePlanningStepProfileCondition(intent.id, profile, profilePath, diagnostics);\n }\n}\n\nfunction validateIntentToolSelectionProfiles(\n intent: AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number],\n intentIndex: number,\n toolNames: ReadonlySet<string>,\n subintentIds: ReadonlySet<string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const seen = new Map<string, number>();\n for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {\n const profilePath = `intents[${intentIndex}].toolSelectionProfiles[${profileIndex}]`;\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} tool selection profile id is required.`);\n continue;\n }\n if (normalized !== profile.id) {\n addDiagnostic(diagnostics, \"error\", \"unnormalized_id\", `${profilePath}.id`, `Assistant workflow intent ${intent.id} tool selection profile id must already be normalized: ${profile.id}.`);\n }\n const firstIndex = seen.get(normalized);\n if (firstIndex !== undefined) {\n addDiagnostic(diagnostics, \"error\", \"duplicate_id\", `${profilePath}.id`, `Duplicate assistant workflow intent ${intent.id} tool selection profile: ${normalized}; first seen at intents[${intentIndex}].toolSelectionProfiles[${firstIndex}].`);\n } else {\n seen.set(normalized, profileIndex);\n }\n if (!profile.description.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"missing_description\", `${profilePath}.description`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} description is required.`);\n }\n if (!profile.toolHints.length) {\n addDiagnostic(diagnostics, \"error\", \"missing_tool_hints\", `${profilePath}.toolHints`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} must define at least one tool hint.`);\n }\n for (const toolName of profile.toolHints) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n addDiagnostic(diagnostics, \"error\", \"unknown_tool_capability\", `${profilePath}.toolHints`, `Assistant workflow intent ${intent.id} tool selection profile ${normalized} references unknown tool capability: ${toolName}.`);\n }\n }\n validateToolSelectionProfileCondition(intent.id, profile, profilePath, subintentIds, diagnostics);\n }\n}\n\nfunction validatePlanningStepProfileCondition(\n intentId: string,\n profile: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"planningStepProfiles\"]>[number],\n profilePath: string,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const { minConfidence, maxConfidence, subintent, presentation, timeWindowHint, requiredTools } = profile.condition ?? {};\n if (minConfidence !== undefined && (!Number.isFinite(minConfidence) || minConfidence < 0 || minConfidence > 1)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.minConfidence`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must be between 0 and 1.`);\n }\n if (maxConfidence !== undefined && (!Number.isFinite(maxConfidence) || maxConfidence < 0 || maxConfidence > 1)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.maxConfidence`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} maxConfidence must be between 0 and 1.`);\n }\n if (minConfidence !== undefined && maxConfidence !== undefined && minConfidence > maxConfidence) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must not exceed maxConfidence.`);\n }\n if (subintent !== undefined && !subintent.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} subintent must not be empty.`);\n }\n if (presentation !== undefined && !presentation.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.presentation`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} presentation must not be empty.`);\n }\n if (timeWindowHint !== undefined && !timeWindowHint.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.timeWindowHint`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} timeWindowHint must not be empty.`);\n }\n if (requiredTools !== undefined && requiredTools.length === 0) {\n addDiagnostic(diagnostics, \"error\", \"invalid_planning_step_profile_condition\", `${profilePath}.condition.requiredTools`, `Assistant workflow intent ${intentId} planning step profile ${profile.id} requiredTools must not be empty.`);\n }\n}\n\nfunction validateToolSelectionProfileCondition(\n intentId: string,\n profile: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"toolSelectionProfiles\"]>[number],\n profilePath: string,\n subintentIds: ReadonlySet<string>,\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n): void {\n const { minHop, maxHop, selectedReason, subintent } = profile.condition ?? {};\n if (minHop !== undefined && (!Number.isInteger(minHop) || minHop < 0)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.minHop`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must be a non-negative integer.`);\n }\n if (maxHop !== undefined && (!Number.isInteger(maxHop) || maxHop < 0)) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.maxHop`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxHop must be a non-negative integer.`);\n }\n if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`);\n }\n if (subintent !== undefined && subintent !== null) {\n const normalizedSubintent = subintent.trim();\n if (!normalizedSubintent.length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} subintent must not be empty.`);\n } else if (subintentIds.size > 0 && !subintentIds.has(normalizedSubintent)) {\n addDiagnostic(diagnostics, \"error\", \"missing_id\", `${profilePath}.condition.subintent`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown subintent: ${normalizedSubintent}.`);\n }\n }\n if (selectedReason !== undefined && !selectedReason.trim().length) {\n addDiagnostic(diagnostics, \"error\", \"invalid_tool_selection_profile_condition\", `${profilePath}.condition.selectedReason`, `Assistant workflow intent ${intentId} tool selection profile ${profile.id} selectedReason must not be empty.`);\n }\n}\n\nfunction addDiagnostic(\n diagnostics: AssistantWorkflowDefinitionDiagnostic[],\n severity: AssistantWorkflowDefinitionDiagnosticSeverity,\n code: AssistantWorkflowDefinitionDiagnosticCode,\n path: string,\n message: string,\n): void {\n diagnostics.push({ severity, code, path, message });\n}\n"]}
|
package/dist/definition.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type AssistantWorkflowToolSelectionProfileCondition = {
|
|
|
5
5
|
minHop?: number;
|
|
6
6
|
maxHop?: number;
|
|
7
7
|
selectedReason?: string;
|
|
8
|
+
/** `null` explicitly matches classifications without a subintent. */
|
|
9
|
+
subintent?: string | null;
|
|
8
10
|
resolvedScope?: boolean;
|
|
9
11
|
minAttributeCount?: number;
|
|
10
12
|
maxAttributeCount?: number;
|
package/dist/definition.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
|
package/dist/definition.js
CHANGED
|
@@ -151,7 +151,7 @@ function assertIntentReferences(workflow) {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {
|
|
154
|
-
assertToolSelectionProfileCondition(intent.id, profile, toolNames);
|
|
154
|
+
assertToolSelectionProfileCondition(intent.id, profile, toolNames, subintentIds);
|
|
155
155
|
for (const toolName of profile.toolHints) {
|
|
156
156
|
if (toolNames.size > 0 && !toolNames.has(toolName)) {
|
|
157
157
|
throw new Error(`Assistant workflow intent ${intent.id} tool selection profile ${profile.id} references unknown tool capability: ${toolName}.`);
|
|
@@ -265,8 +265,8 @@ function assertUniquePlanningStepProfiles(intent) {
|
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
|
-
function assertToolSelectionProfileCondition(intentId, profile, knownToolNames) {
|
|
269
|
-
const { minHop, maxHop, selectedReason, minAttributeCount, maxAttributeCount, requiredClassifierTools, } = profile.condition ?? {};
|
|
268
|
+
function assertToolSelectionProfileCondition(intentId, profile, knownToolNames, knownSubintentIds) {
|
|
269
|
+
const { minHop, maxHop, selectedReason, subintent, minAttributeCount, maxAttributeCount, requiredClassifierTools, } = profile.condition ?? {};
|
|
270
270
|
if (profile.toolExclusions !== undefined) {
|
|
271
271
|
const normalizedExcludedTools = profile.toolExclusions
|
|
272
272
|
.filter((toolName) => typeof toolName === "string")
|
|
@@ -294,6 +294,15 @@ function assertToolSelectionProfileCondition(intentId, profile, knownToolNames)
|
|
|
294
294
|
if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {
|
|
295
295
|
throw new Error(`Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`);
|
|
296
296
|
}
|
|
297
|
+
if (subintent !== undefined && subintent !== null) {
|
|
298
|
+
const normalizedSubintent = subintent.trim();
|
|
299
|
+
if (!normalizedSubintent.length) {
|
|
300
|
+
throw new Error(`Assistant workflow intent ${intentId} tool selection profile ${profile.id} subintent must not be empty.`);
|
|
301
|
+
}
|
|
302
|
+
if (knownSubintentIds.size > 0 && !knownSubintentIds.has(normalizedSubintent)) {
|
|
303
|
+
throw new Error(`Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown subintent: ${normalizedSubintent}.`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
297
306
|
if (minAttributeCount !== undefined && (!Number.isInteger(minAttributeCount) || minAttributeCount < 0)) {
|
|
298
307
|
throw new Error(`Assistant workflow intent ${intentId} tool selection profile ${profile.id} minAttributeCount must be a non-negative integer.`);
|
|
299
308
|
}
|
package/dist/definition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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","sourcesContent":["export type AssistantWorkflowExecutionBias = \"allow-shortcuts\" | \"llm-first\";\n\nexport type AssistantWorkflowFirstHopToolPolicy = \"auto\" | \"require-tool\";\n\nexport type AssistantWorkflowOptionalToolSelectionMode =\n | \"classifier-confirmed\"\n | \"workflow-suggested\";\n\nexport type AssistantWorkflowToolSelectionProfileCondition = {\n minHop?: number;\n maxHop?: number;\n selectedReason?: string;\n resolvedScope?: boolean;\n minAttributeCount?: number;\n maxAttributeCount?: number;\n requiredClassifierTools?: readonly string[];\n};\n\nexport type AssistantWorkflowToolSelectionProfile = AssistantWorkflowVocabularyItem & {\n toolHints: readonly string[];\n toolExclusions?: readonly string[];\n condition?: AssistantWorkflowToolSelectionProfileCondition;\n optionalToolSelectionMode?: AssistantWorkflowOptionalToolSelectionMode;\n};\n\nexport type AssistantWorkflowMemoryUse =\n | \"thread-profile-read\"\n | \"thread-profile-write\"\n | \"thread-profile-inject\";\n\nexport type AssistantWorkflowMemoryStorage =\n | \"thread-profile\"\n | \"thread-state\"\n | \"turn\";\n\nexport type AssistantWorkflowMemoryOperation = \"read\" | \"write\" | \"inject\";\n\nexport type AssistantWorkflowMemorySlotDefinition = {\n id: string;\n description: string;\n storage: AssistantWorkflowMemoryStorage;\n profileField?: string;\n maxChars?: number;\n};\n\nexport type AssistantWorkflowMemoryPolicy = {\n read?: readonly string[];\n write?: readonly string[];\n inject?: readonly string[];\n};\n\nexport type AssistantWorkflowPlanningStepKind =\n | \"classify\"\n | \"resolve\"\n | \"retrieve\"\n | \"fetch\"\n | \"derive\"\n | \"build_artifact\"\n | \"ask_clarification\"\n | \"synthesize\"\n | \"generate\";\n\nexport type AssistantWorkflowPlanningStepDefinition = AssistantWorkflowVocabularyItem & {\n kind: AssistantWorkflowPlanningStepKind;\n toolHints?: readonly string[];\n requiredToolHints?: readonly string[];\n readsMemory?: readonly string[];\n writesMemory?: readonly string[];\n optional?: boolean;\n};\n\nexport type AssistantWorkflowPlanningStepProfileCondition = {\n subintent?: string;\n presentation?: string;\n timeWindowHint?: string;\n minConfidence?: number;\n maxConfidence?: number;\n requiredTools?: readonly string[];\n};\n\nexport type AssistantWorkflowPlanningStepProfile = AssistantWorkflowVocabularyItem & {\n planningSteps: readonly string[];\n condition?: AssistantWorkflowPlanningStepProfileCondition;\n};\n\nexport type AssistantWorkflowEntityKind =\n | \"container\"\n | \"attribute\"\n | \"full_topic_path\"\n | \"time_window\";\n\nexport type AssistantWorkflowClarificationCondition =\n | \"low_confidence\"\n | \"missing_required_entity\"\n | \"multiple_entity_candidates\"\n | \"resolver_candidates_ambiguous\"\n | \"fallback_intent\";\n\nexport type AssistantWorkflowClarificationQuestionStyle =\n | \"confirm_intent\"\n | \"choose_entity\"\n | \"ask_scope\"\n | \"ask_next_step\";\n\nexport type AssistantWorkflowClarificationRuleDefinition = AssistantWorkflowVocabularyItem & {\n condition: AssistantWorkflowClarificationCondition;\n questionStyle: AssistantWorkflowClarificationQuestionStyle;\n priority?: number;\n blocksExecution?: boolean;\n /** A host-provided resolved scope satisfies this rule without model-text inference. */\n satisfiedByResolvedScope?: boolean;\n confidenceBelow?: number;\n requiredEntityKinds?: readonly AssistantWorkflowEntityKind[];\n readsMemory?: readonly string[];\n writesMemory?: readonly string[];\n};\n\nexport type AssistantWorkflowToolProvider =\n | \"local-function\"\n | \"http\"\n | \"openai-hosted\"\n | \"mcp\"\n | \"repl\";\n\nexport type AssistantWorkflowToolEffect = \"read\" | \"compute\" | \"write\";\n\nexport type AssistantWorkflowToolSideEffectRisk = \"low\" | \"medium\" | \"high\";\n\nexport type AssistantWorkflowToolCacheability =\n | \"cacheable\"\n | \"request-scoped\"\n | \"not-cacheable\";\n\nexport type AssistantWorkflowToolRetryClass = \"safe\" | \"bounded\" | \"never\";\n\nexport type AssistantWorkflowToolOutputKind =\n | \"catalog\"\n | \"resolver\"\n | \"data\"\n | \"table\"\n | \"chart\"\n | \"link\"\n | \"artifact\"\n | \"evidence\"\n | \"schema\"\n | \"time\"\n | \"text\";\n\nexport type AssistantWorkflowToolContextRequirement =\n | \"auth\"\n | \"topic-scope\"\n | \"document-scope\"\n | \"confirmed-path\"\n | \"dashboard-id\"\n | \"schema-key\";\n\nexport type AssistantWorkflowDirectRouteEffect = \"read\" | \"compute\" | \"write\";\n\nexport type AssistantWorkflowDirectRouteStrategyDefinition = AssistantWorkflowVocabularyItem & {\n requiredToolHints?: readonly string[];\n};\n\nexport type AssistantWorkflowDirectRouteDefinition = AssistantWorkflowVocabularyItem & {\n effect: AssistantWorkflowDirectRouteEffect;\n outcomeRoute?: string;\n requiredToolHints?: readonly string[];\n strategies?: readonly AssistantWorkflowDirectRouteStrategyDefinition[];\n requiresConfirmation?: boolean;\n};\n\nexport type AssistantWorkflowHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport type AssistantWorkflowVocabularyItem<TId extends string = string> = {\n id: TId;\n description: string;\n};\n\nexport type AssistantWorkflowToolCapabilityDefinition = {\n name: string;\n provider: AssistantWorkflowToolProvider;\n effect: AssistantWorkflowToolEffect;\n sideEffectRisk: AssistantWorkflowToolSideEffectRisk;\n cacheability: AssistantWorkflowToolCacheability;\n retryClass: AssistantWorkflowToolRetryClass;\n outputKinds: readonly AssistantWorkflowToolOutputKind[];\n requiredContext?: readonly AssistantWorkflowToolContextRequirement[];\n requiresConfirmation?: boolean;\n};\n\nexport type AssistantWorkflowLocalFunctionToolBinding = {\n name: string;\n provider: \"local-function\";\n handlerId: string;\n};\n\nexport type AssistantWorkflowHttpToolBinding = {\n name: string;\n provider: \"http\";\n method?: AssistantWorkflowHttpMethod;\n path: string;\n baseUrlRef?: string;\n operationId?: string;\n};\n\nexport type AssistantWorkflowOpenAIHostedToolBinding = {\n name: string;\n provider: \"openai-hosted\";\n hostedToolType: string;\n toolName?: string;\n};\n\nexport type AssistantWorkflowMcpToolBinding = {\n name: string;\n provider: \"mcp\";\n serverId: string;\n toolName: string;\n};\n\nexport type AssistantWorkflowReplToolBinding = {\n name: string;\n provider: \"repl\";\n runtimeId: string;\n functionName?: string;\n commandTemplate?: string;\n allowFilesystem?: boolean;\n allowNetwork?: boolean;\n};\n\nexport type AssistantWorkflowToolBindingDefinition =\n | AssistantWorkflowLocalFunctionToolBinding\n | AssistantWorkflowHttpToolBinding\n | AssistantWorkflowOpenAIHostedToolBinding\n | AssistantWorkflowMcpToolBinding\n | AssistantWorkflowReplToolBinding;\n\nexport type AssistantWorkflowIntentDefinition<\n TIntent extends string = string,\n TPresentation extends string = string,\n> = AssistantWorkflowVocabularyItem<TIntent> & {\n defaultPresentation?: TPresentation | null;\n executionBias?: AssistantWorkflowExecutionBias | null;\n firstHopToolPolicy?: AssistantWorkflowFirstHopToolPolicy | null;\n optionalToolSelectionMode?: AssistantWorkflowOptionalToolSelectionMode;\n toolHints?: readonly string[];\n requiredToolHints?: readonly string[];\n toolSelectionProfiles?: readonly AssistantWorkflowToolSelectionProfile[];\n planningStepProfiles?: readonly AssistantWorkflowPlanningStepProfile[];\n memoryUse?: readonly AssistantWorkflowMemoryUse[];\n memoryPolicy?: AssistantWorkflowMemoryPolicy;\n directRoutes?: readonly string[];\n planningSteps?: readonly string[];\n clarificationRules?: readonly string[];\n plannerInstructions?: readonly string[];\n};\n\nexport type AssistantWorkflowDefinition<\n TIntent extends string = string,\n TSubintent extends string = string,\n TPresentation extends string = string,\n TDerivedTransform extends string = string,\n> = {\n id: string;\n version: number;\n description?: string;\n intents: readonly AssistantWorkflowIntentDefinition<TIntent, TPresentation>[];\n tools?: readonly AssistantWorkflowToolCapabilityDefinition[];\n toolBindings?: readonly AssistantWorkflowToolBindingDefinition[];\n directRoutes?: readonly AssistantWorkflowDirectRouteDefinition[];\n memorySlots?: readonly AssistantWorkflowMemorySlotDefinition[];\n planningSteps?: readonly AssistantWorkflowPlanningStepDefinition[];\n clarificationRules?: readonly AssistantWorkflowClarificationRuleDefinition[];\n subintents?: readonly AssistantWorkflowVocabularyItem<TSubintent>[];\n presentations?: readonly AssistantWorkflowVocabularyItem<TPresentation>[];\n derivedTransforms?: readonly AssistantWorkflowVocabularyItem<TDerivedTransform>[];\n};\n\nexport type AssistantWorkflowPromptFacts = {\n intents: string;\n subintents: string;\n presentations: string;\n derivedTransforms: string;\n};\n\nexport function defineAssistantWorkflow<\n TIntent extends string,\n TSubintent extends string = never,\n TPresentation extends string = never,\n TDerivedTransform extends string = never,\n>(\n definition: AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform>,\n): AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform> {\n assertWorkflowHeader(definition);\n assertUniqueVocabulary(\"intent\", definition.intents);\n assertUniqueVocabulary(\"subintent\", definition.subintents ?? []);\n assertUniqueVocabulary(\"presentation\", definition.presentations ?? []);\n assertUniqueVocabulary(\"derived transform\", definition.derivedTransforms ?? []);\n assertUniqueToolCapabilities(definition.tools ?? []);\n assertUniqueToolBindings(definition.toolBindings ?? []);\n assertUniqueDirectRoutes(definition.directRoutes ?? []);\n assertUniqueMemorySlots(definition.memorySlots ?? []);\n assertUniquePlanningSteps(definition.planningSteps ?? []);\n assertUniqueClarificationRules(definition.clarificationRules ?? []);\n assertIntentReferences(definition);\n return definition;\n}\n\nexport function normalizeAssistantWorkflowId(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value.trim().toLowerCase();\n return normalized.length ? normalized : null;\n}\n\nexport function getAssistantWorkflowIntentIds<TIntent extends string>(\n workflow: AssistantWorkflowDefinition<TIntent, string, string, string>,\n): readonly TIntent[] {\n return workflow.intents.map((intent) => intent.id);\n}\n\nexport function getAssistantWorkflowSubintentIds<TSubintent extends string>(\n workflow: AssistantWorkflowDefinition<string, TSubintent, string, string>,\n): readonly TSubintent[] {\n return (workflow.subintents ?? []).map((subintent) => subintent.id);\n}\n\nexport function getAssistantWorkflowPresentationIds<TPresentation extends string>(\n workflow: AssistantWorkflowDefinition<string, string, TPresentation, string>,\n): readonly TPresentation[] {\n return (workflow.presentations ?? []).map((presentation) => presentation.id);\n}\n\nexport function getAssistantWorkflowDerivedTransformIds<TDerivedTransform extends string>(\n workflow: AssistantWorkflowDefinition<string, string, string, TDerivedTransform>,\n): readonly TDerivedTransform[] {\n return (workflow.derivedTransforms ?? []).map((transform) => transform.id);\n}\n\nexport function findAssistantWorkflowIntent<TIntent extends string, TPresentation extends string>(\n workflow: AssistantWorkflowDefinition<TIntent, string, TPresentation, string>,\n intentId: unknown,\n): AssistantWorkflowIntentDefinition<TIntent, TPresentation> | null {\n const normalized = normalizeAssistantWorkflowId(intentId);\n if (!normalized) return null;\n return workflow.intents.find((intent) => intent.id === normalized) ?? null;\n}\n\nexport function getAssistantWorkflowToolHints(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n availableToolNames?: readonly string[],\n): string[] {\n const intent = findAssistantWorkflowIntent(workflow, intentId);\n if (!intent) return [];\n return filterWorkflowToolNames(intent.toolHints ?? [], availableToolNames);\n}\n\nexport function getAssistantWorkflowRequiredToolHints(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n availableToolNames?: readonly string[],\n): string[] {\n const intent = findAssistantWorkflowIntent(workflow, intentId);\n if (!intent) return [];\n return filterWorkflowToolNames(intent.requiredToolHints ?? [], availableToolNames);\n}\n\nexport function formatAssistantWorkflowVocabulary(\n items: readonly AssistantWorkflowVocabularyItem[],\n options: { includeDescriptions?: boolean } = {},\n): string {\n const includeDescriptions = options.includeDescriptions ?? true;\n return items\n .map((item) => {\n const id = item.id.trim();\n const description = item.description.trim();\n return includeDescriptions && description.length ? `${id} = ${description}` : id;\n })\n .filter((entry) => entry.length > 0)\n .join(\"; \");\n}\n\nexport function buildAssistantWorkflowPromptFacts(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): AssistantWorkflowPromptFacts {\n return {\n intents: formatAssistantWorkflowVocabulary(workflow.intents),\n subintents: formatAssistantWorkflowVocabulary(workflow.subintents ?? []),\n presentations: formatAssistantWorkflowVocabulary(workflow.presentations ?? [], { includeDescriptions: false }),\n derivedTransforms: formatAssistantWorkflowVocabulary(workflow.derivedTransforms ?? [], { includeDescriptions: false }),\n };\n}\n\nfunction assertWorkflowHeader(workflow: AssistantWorkflowDefinition<string, string, string, string>): void {\n if (!workflow.id.trim().length) {\n throw new Error(\"Assistant workflow id is required.\");\n }\n if (!Number.isInteger(workflow.version) || workflow.version < 1) {\n throw new Error(\"Assistant workflow version must be a positive integer.\");\n }\n if (!workflow.intents.length) {\n throw new Error(\"Assistant workflow must define at least one intent.\");\n }\n}\n\nfunction assertUniqueVocabulary(\n kind: string,\n items: readonly AssistantWorkflowVocabularyItem[],\n): void {\n const seen = new Set<string>();\n for (const item of items) {\n const normalized = normalizeAssistantWorkflowId(item.id);\n if (!normalized) {\n throw new Error(`Assistant workflow ${kind} id is required.`);\n }\n if (normalized !== item.id) {\n throw new Error(`Assistant workflow ${kind} id must already be normalized: ${item.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow ${kind} id: ${normalized}.`);\n }\n seen.add(normalized);\n }\n}\n\nfunction assertIntentReferences(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): void {\n const toolCapabilities = new Map((workflow.tools ?? []).map((tool) => [tool.name, tool] as const));\n const presentationIds = new Set((workflow.presentations ?? []).map((presentation) => presentation.id));\n const toolNames = new Set(toolCapabilities.keys());\n const directRouteIds = new Set((workflow.directRoutes ?? []).map((route) => route.id));\n const memorySlotIds = new Set((workflow.memorySlots ?? []).map((slot) => slot.id));\n const planningStepIds = new Set((workflow.planningSteps ?? []).map((step) => step.id));\n const clarificationRuleIds = new Set((workflow.clarificationRules ?? []).map((rule) => rule.id));\n const subintentIds = new Set((workflow.subintents ?? []).map((subintent) => subintent.id));\n for (const binding of workflow.toolBindings ?? []) {\n const capability = toolCapabilities.get(binding.name);\n if (toolCapabilities.size > 0 && !capability) {\n throw new Error(`Assistant workflow tool binding references unknown tool capability: ${binding.name}.`);\n }\n if (capability && capability.provider !== binding.provider) {\n throw new Error(\n `Assistant workflow tool binding ${binding.name} provider ${binding.provider} does not match capability provider ${capability.provider}.`,\n );\n }\n }\n for (const step of workflow.planningSteps ?? []) {\n for (const toolName of [...(step.toolHints ?? []), ...(step.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow planning step ${step.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n for (const slotId of [...(step.readsMemory ?? []), ...(step.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow planning step ${step.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n }\n for (const rule of workflow.clarificationRules ?? []) {\n for (const slotId of [...(rule.readsMemory ?? []), ...(rule.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow clarification rule ${rule.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n }\n for (const route of workflow.directRoutes ?? []) {\n for (const toolName of route.requiredToolHints ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow direct route ${route.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n }\n for (const intent of workflow.intents) {\n assertUniqueToolSelectionProfiles(intent);\n assertUniquePlanningStepProfiles(intent);\n if (intent.defaultPresentation && !presentationIds.has(intent.defaultPresentation)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown presentation: ${intent.defaultPresentation}.`,\n );\n }\n for (const toolName of [...(intent.toolHints ?? []), ...(intent.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {\n assertToolSelectionProfileCondition(intent.id, profile, toolNames);\n for (const toolName of profile.toolHints) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile ${profile.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n if (!profile.toolHints.length) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile ${profileIndex} must define at least one tool hint.`,\n );\n }\n }\n for (const [profileIndex, profile] of (intent.planningStepProfiles ?? []).entries()) {\n assertPlanningStepProfileCondition(intent.id, profile);\n if (!profile.planningSteps.length) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profileIndex} must define at least one planning step.`,\n );\n }\n for (const stepId of profile.planningSteps) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown planning step: ${stepId}.`,\n );\n }\n }\n for (const toolName of profile.condition?.requiredTools ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown required tool: ${toolName}.`,\n );\n }\n }\n const condition = profile.condition;\n if (condition?.subintent && subintentIds.size > 0 && !subintentIds.has(condition.subintent)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown subintent: ${condition.subintent}.`,\n );\n }\n if (condition?.presentation && presentationIds.size > 0 && !presentationIds.has(condition.presentation)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown presentation: ${condition.presentation}.`,\n );\n }\n }\n for (const slotId of [\n ...(intent.memoryPolicy?.read ?? []),\n ...(intent.memoryPolicy?.write ?? []),\n ...(intent.memoryPolicy?.inject ?? []),\n ]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n for (const routeId of intent.directRoutes ?? []) {\n if (directRouteIds.size > 0 && !directRouteIds.has(routeId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown direct route: ${routeId}.`,\n );\n }\n }\n for (const stepId of intent.planningSteps ?? []) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown planning step: ${stepId}.`,\n );\n }\n }\n for (const ruleId of intent.clarificationRules ?? []) {\n if (clarificationRuleIds.size > 0 && !clarificationRuleIds.has(ruleId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown clarification rule: ${ruleId}.`,\n );\n }\n }\n }\n}\n\nfunction assertUniqueDirectRoutes(routes: readonly AssistantWorkflowDirectRouteDefinition[]): void {\n assertUniqueVocabulary(\"direct route\", routes);\n for (const route of routes) {\n if (route.outcomeRoute !== undefined && !normalizeAssistantWorkflowId(route.outcomeRoute)) {\n throw new Error(`Assistant workflow direct route ${route.id} outcomeRoute must be non-empty when provided.`);\n }\n if (route.outcomeRoute !== undefined && normalizeAssistantWorkflowId(route.outcomeRoute) !== route.outcomeRoute) {\n throw new Error(\n `Assistant workflow direct route ${route.id} outcomeRoute must already be normalized: ${route.outcomeRoute}.`,\n );\n }\n assertUniqueVocabulary(`direct route ${route.id} strategy`, route.strategies ?? []);\n for (const strategy of route.strategies ?? []) {\n if (strategy.id !== normalizeAssistantWorkflowId(strategy.id)) {\n throw new Error(\n `Assistant workflow direct route ${route.id} strategy id must already be normalized: ${strategy.id}.`,\n );\n }\n }\n }\n}\n\nfunction assertUniqueToolSelectionProfiles(intent: AssistantWorkflowIntentDefinition): void {\n const seen = new Set<string>();\n for (const profile of intent.toolSelectionProfiles ?? []) {\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n throw new Error(`Assistant workflow intent ${intent.id} tool selection profile id is required.`);\n }\n if (normalized !== profile.id) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile id must already be normalized: ${profile.id}.`,\n );\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow intent ${intent.id} tool selection profile: ${normalized}.`);\n }\n seen.add(normalized);\n if (!profile.description.trim().length) {\n throw new Error(`Assistant workflow intent ${intent.id} tool selection profile ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniquePlanningStepProfiles(intent: AssistantWorkflowIntentDefinition): void {\n const seen = new Set<string>();\n for (const profile of intent.planningStepProfiles ?? []) {\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n throw new Error(`Assistant workflow intent ${intent.id} planning step profile id is required.`);\n }\n if (normalized !== profile.id) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile id must already be normalized: ${profile.id}.`,\n );\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow intent ${intent.id} planning step profile: ${normalized}.`);\n }\n seen.add(normalized);\n if (!profile.description.trim().length) {\n throw new Error(`Assistant workflow intent ${intent.id} planning step profile ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertToolSelectionProfileCondition(\n intentId: string,\n profile: AssistantWorkflowToolSelectionProfile,\n knownToolNames: ReadonlySet<string>,\n): void {\n const {\n minHop,\n maxHop,\n selectedReason,\n minAttributeCount,\n maxAttributeCount,\n requiredClassifierTools,\n } = profile.condition ?? {};\n if (profile.toolExclusions !== undefined) {\n const normalizedExcludedTools = profile.toolExclusions\n .filter((toolName): toolName is string => typeof toolName === \"string\")\n .map((toolName) => toolName.trim())\n .filter((toolName) => toolName.length > 0);\n if (!normalizedExcludedTools.length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} toolExclusions must contain at least one tool.`,\n );\n }\n const profileToolHints = new Set(profile.toolHints.map((toolName) => toolName.trim()));\n for (const toolName of normalizedExcludedTools) {\n if (!knownToolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown excluded tool capability: ${toolName}.`,\n );\n }\n if (profileToolHints.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} must not both hint and exclude tool capability: ${toolName}.`,\n );\n }\n }\n }\n if (minHop !== undefined && (!Number.isInteger(minHop) || minHop < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must be a non-negative integer.`,\n );\n }\n if (maxHop !== undefined && (!Number.isInteger(maxHop) || maxHop < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxHop must be a non-negative integer.`,\n );\n }\n if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`,\n );\n }\n if (minAttributeCount !== undefined && (!Number.isInteger(minAttributeCount) || minAttributeCount < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minAttributeCount must be a non-negative integer.`,\n );\n }\n if (maxAttributeCount !== undefined && (!Number.isInteger(maxAttributeCount) || maxAttributeCount < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxAttributeCount must be a non-negative integer.`,\n );\n }\n if (\n minAttributeCount !== undefined &&\n maxAttributeCount !== undefined &&\n minAttributeCount > maxAttributeCount\n ) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minAttributeCount must not exceed maxAttributeCount.`,\n );\n }\n if (requiredClassifierTools !== undefined) {\n const normalizedRequiredTools = requiredClassifierTools\n .filter((toolName): toolName is string => typeof toolName === \"string\")\n .map((toolName) => toolName.trim())\n .filter((toolName) => toolName.length > 0);\n if (!normalizedRequiredTools.length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} requiredClassifierTools must contain at least one tool.`,\n );\n }\n for (const toolName of normalizedRequiredTools) {\n if (!knownToolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown classifier tool capability: ${toolName}.`,\n );\n }\n }\n }\n if (selectedReason !== undefined && !selectedReason.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} selectedReason must not be empty.`,\n );\n }\n}\n\nfunction assertPlanningStepProfileCondition(\n intentId: string,\n profile: AssistantWorkflowPlanningStepProfile,\n): void {\n const { minConfidence, maxConfidence, subintent, presentation, timeWindowHint, requiredTools } = profile.condition ?? {};\n if (minConfidence !== undefined && (!Number.isFinite(minConfidence) || minConfidence < 0 || minConfidence > 1)) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must be between 0 and 1.`,\n );\n }\n if (maxConfidence !== undefined && (!Number.isFinite(maxConfidence) || maxConfidence < 0 || maxConfidence > 1)) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} maxConfidence must be between 0 and 1.`,\n );\n }\n if (minConfidence !== undefined && maxConfidence !== undefined && minConfidence > maxConfidence) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must not exceed maxConfidence.`,\n );\n }\n if (subintent !== undefined && !subintent.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} subintent must not be empty.`,\n );\n }\n if (presentation !== undefined && !presentation.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} presentation must not be empty.`,\n );\n }\n if (timeWindowHint !== undefined && !timeWindowHint.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} timeWindowHint must not be empty.`,\n );\n }\n if (requiredTools !== undefined && requiredTools.length === 0) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} requiredTools must not be empty.`,\n );\n }\n}\n\nfunction assertUniqueClarificationRules(\n rules: readonly AssistantWorkflowClarificationRuleDefinition[],\n): void {\n const seen = new Set<string>();\n for (const rule of rules) {\n const normalized = normalizeAssistantWorkflowId(rule.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow clarification rule id is required.\");\n }\n if (normalized !== rule.id) {\n throw new Error(`Assistant workflow clarification rule id must already be normalized: ${rule.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow clarification rule: ${normalized}.`);\n }\n seen.add(normalized);\n if (!rule.description.trim().length) {\n throw new Error(`Assistant workflow clarification rule ${normalized} description is required.`);\n }\n if (\n rule.condition === \"low_confidence\" &&\n rule.confidenceBelow !== undefined &&\n (!Number.isFinite(rule.confidenceBelow) || rule.confidenceBelow < 0 || rule.confidenceBelow > 1)\n ) {\n throw new Error(`Assistant workflow clarification rule ${normalized} confidenceBelow must be between 0 and 1.`);\n }\n }\n}\n\nfunction assertUniquePlanningSteps(\n steps: readonly AssistantWorkflowPlanningStepDefinition[],\n): void {\n const seen = new Set<string>();\n for (const step of steps) {\n const normalized = normalizeAssistantWorkflowId(step.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow planning step id is required.\");\n }\n if (normalized !== step.id) {\n throw new Error(`Assistant workflow planning step id must already be normalized: ${step.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow planning step: ${normalized}.`);\n }\n seen.add(normalized);\n if (!step.description.trim().length) {\n throw new Error(`Assistant workflow planning step ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniqueMemorySlots(\n slots: readonly AssistantWorkflowMemorySlotDefinition[],\n): void {\n const seen = new Set<string>();\n for (const slot of slots) {\n const normalized = normalizeAssistantWorkflowId(slot.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow memory slot id is required.\");\n }\n if (normalized !== slot.id) {\n throw new Error(`Assistant workflow memory slot id must already be normalized: ${slot.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow memory slot: ${normalized}.`);\n }\n seen.add(normalized);\n if (!slot.description.trim().length) {\n throw new Error(`Assistant workflow memory slot ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniqueToolCapabilities(\n tools: readonly AssistantWorkflowToolCapabilityDefinition[],\n): void {\n const seen = new Set<string>();\n for (const tool of tools) {\n const normalized = normalizeAssistantWorkflowId(tool.name);\n if (!normalized) {\n throw new Error(\"Assistant workflow tool capability name is required.\");\n }\n if (normalized !== tool.name) {\n throw new Error(`Assistant workflow tool capability name must already be normalized: ${tool.name}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow tool capability: ${normalized}.`);\n }\n seen.add(normalized);\n if (!tool.outputKinds.length) {\n throw new Error(`Assistant workflow tool capability ${normalized} must define at least one output kind.`);\n }\n }\n}\n\nfunction assertUniqueToolBindings(\n bindings: readonly AssistantWorkflowToolBindingDefinition[],\n): void {\n const seen = new Set<string>();\n for (const binding of bindings) {\n const normalized = normalizeAssistantWorkflowId(binding.name);\n if (!normalized) {\n throw new Error(\"Assistant workflow tool binding name is required.\");\n }\n if (normalized !== binding.name) {\n throw new Error(`Assistant workflow tool binding name must already be normalized: ${binding.name}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow tool binding: ${normalized}.`);\n }\n seen.add(normalized);\n assertToolBindingTarget(binding);\n }\n}\n\nfunction assertToolBindingTarget(binding: AssistantWorkflowToolBindingDefinition): void {\n switch (binding.provider) {\n case \"local-function\":\n assertNonEmptyBindingField(binding.name, \"handlerId\", binding.handlerId);\n return;\n case \"http\":\n assertNonEmptyBindingField(binding.name, \"path\", binding.path);\n if (binding.method !== undefined && binding.method !== binding.method.toUpperCase()) {\n throw new Error(`Assistant workflow tool binding ${binding.name} HTTP method must be uppercase.`);\n }\n return;\n case \"openai-hosted\":\n assertNonEmptyBindingField(binding.name, \"hostedToolType\", binding.hostedToolType);\n return;\n case \"mcp\":\n assertNonEmptyBindingField(binding.name, \"serverId\", binding.serverId);\n assertNonEmptyBindingField(binding.name, \"toolName\", binding.toolName);\n return;\n case \"repl\":\n assertNonEmptyBindingField(binding.name, \"runtimeId\", binding.runtimeId);\n if (!binding.functionName?.trim().length && !binding.commandTemplate?.trim().length) {\n throw new Error(\n `Assistant workflow tool binding ${binding.name} must define functionName or commandTemplate.`,\n );\n }\n return;\n }\n}\n\nfunction assertNonEmptyBindingField(toolName: string, fieldName: string, value: string): void {\n if (!value.trim().length) {\n throw new Error(`Assistant workflow tool binding ${toolName} ${fieldName} is required.`);\n }\n}\n\nfunction filterWorkflowToolNames(\n rawTools: readonly string[],\n availableToolNames?: readonly string[],\n): string[] {\n const availableSet = availableToolNames ? new Set(availableToolNames) : null;\n const out: string[] = [];\n const seen = new Set<string>();\n for (const rawTool of rawTools) {\n const tool = rawTool.trim();\n if (!tool.length || seen.has(tool)) continue;\n if (availableSet && !availableSet.has(tool)) continue;\n seen.add(tool);\n out.push(tool);\n }\n return out;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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","sourcesContent":["export type AssistantWorkflowExecutionBias = \"allow-shortcuts\" | \"llm-first\";\n\nexport type AssistantWorkflowFirstHopToolPolicy = \"auto\" | \"require-tool\";\n\nexport type AssistantWorkflowOptionalToolSelectionMode =\n | \"classifier-confirmed\"\n | \"workflow-suggested\";\n\nexport type AssistantWorkflowToolSelectionProfileCondition = {\n minHop?: number;\n maxHop?: number;\n selectedReason?: string;\n /** `null` explicitly matches classifications without a subintent. */\n subintent?: string | null;\n resolvedScope?: boolean;\n minAttributeCount?: number;\n maxAttributeCount?: number;\n requiredClassifierTools?: readonly string[];\n};\n\nexport type AssistantWorkflowToolSelectionProfile = AssistantWorkflowVocabularyItem & {\n toolHints: readonly string[];\n toolExclusions?: readonly string[];\n condition?: AssistantWorkflowToolSelectionProfileCondition;\n optionalToolSelectionMode?: AssistantWorkflowOptionalToolSelectionMode;\n};\n\nexport type AssistantWorkflowMemoryUse =\n | \"thread-profile-read\"\n | \"thread-profile-write\"\n | \"thread-profile-inject\";\n\nexport type AssistantWorkflowMemoryStorage =\n | \"thread-profile\"\n | \"thread-state\"\n | \"turn\";\n\nexport type AssistantWorkflowMemoryOperation = \"read\" | \"write\" | \"inject\";\n\nexport type AssistantWorkflowMemorySlotDefinition = {\n id: string;\n description: string;\n storage: AssistantWorkflowMemoryStorage;\n profileField?: string;\n maxChars?: number;\n};\n\nexport type AssistantWorkflowMemoryPolicy = {\n read?: readonly string[];\n write?: readonly string[];\n inject?: readonly string[];\n};\n\nexport type AssistantWorkflowPlanningStepKind =\n | \"classify\"\n | \"resolve\"\n | \"retrieve\"\n | \"fetch\"\n | \"derive\"\n | \"build_artifact\"\n | \"ask_clarification\"\n | \"synthesize\"\n | \"generate\";\n\nexport type AssistantWorkflowPlanningStepDefinition = AssistantWorkflowVocabularyItem & {\n kind: AssistantWorkflowPlanningStepKind;\n toolHints?: readonly string[];\n requiredToolHints?: readonly string[];\n readsMemory?: readonly string[];\n writesMemory?: readonly string[];\n optional?: boolean;\n};\n\nexport type AssistantWorkflowPlanningStepProfileCondition = {\n subintent?: string;\n presentation?: string;\n timeWindowHint?: string;\n minConfidence?: number;\n maxConfidence?: number;\n requiredTools?: readonly string[];\n};\n\nexport type AssistantWorkflowPlanningStepProfile = AssistantWorkflowVocabularyItem & {\n planningSteps: readonly string[];\n condition?: AssistantWorkflowPlanningStepProfileCondition;\n};\n\nexport type AssistantWorkflowEntityKind =\n | \"container\"\n | \"attribute\"\n | \"full_topic_path\"\n | \"time_window\";\n\nexport type AssistantWorkflowClarificationCondition =\n | \"low_confidence\"\n | \"missing_required_entity\"\n | \"multiple_entity_candidates\"\n | \"resolver_candidates_ambiguous\"\n | \"fallback_intent\";\n\nexport type AssistantWorkflowClarificationQuestionStyle =\n | \"confirm_intent\"\n | \"choose_entity\"\n | \"ask_scope\"\n | \"ask_next_step\";\n\nexport type AssistantWorkflowClarificationRuleDefinition = AssistantWorkflowVocabularyItem & {\n condition: AssistantWorkflowClarificationCondition;\n questionStyle: AssistantWorkflowClarificationQuestionStyle;\n priority?: number;\n blocksExecution?: boolean;\n /** A host-provided resolved scope satisfies this rule without model-text inference. */\n satisfiedByResolvedScope?: boolean;\n confidenceBelow?: number;\n requiredEntityKinds?: readonly AssistantWorkflowEntityKind[];\n readsMemory?: readonly string[];\n writesMemory?: readonly string[];\n};\n\nexport type AssistantWorkflowToolProvider =\n | \"local-function\"\n | \"http\"\n | \"openai-hosted\"\n | \"mcp\"\n | \"repl\";\n\nexport type AssistantWorkflowToolEffect = \"read\" | \"compute\" | \"write\";\n\nexport type AssistantWorkflowToolSideEffectRisk = \"low\" | \"medium\" | \"high\";\n\nexport type AssistantWorkflowToolCacheability =\n | \"cacheable\"\n | \"request-scoped\"\n | \"not-cacheable\";\n\nexport type AssistantWorkflowToolRetryClass = \"safe\" | \"bounded\" | \"never\";\n\nexport type AssistantWorkflowToolOutputKind =\n | \"catalog\"\n | \"resolver\"\n | \"data\"\n | \"table\"\n | \"chart\"\n | \"link\"\n | \"artifact\"\n | \"evidence\"\n | \"schema\"\n | \"time\"\n | \"text\";\n\nexport type AssistantWorkflowToolContextRequirement =\n | \"auth\"\n | \"topic-scope\"\n | \"document-scope\"\n | \"confirmed-path\"\n | \"dashboard-id\"\n | \"schema-key\";\n\nexport type AssistantWorkflowDirectRouteEffect = \"read\" | \"compute\" | \"write\";\n\nexport type AssistantWorkflowDirectRouteStrategyDefinition = AssistantWorkflowVocabularyItem & {\n requiredToolHints?: readonly string[];\n};\n\nexport type AssistantWorkflowDirectRouteDefinition = AssistantWorkflowVocabularyItem & {\n effect: AssistantWorkflowDirectRouteEffect;\n outcomeRoute?: string;\n requiredToolHints?: readonly string[];\n strategies?: readonly AssistantWorkflowDirectRouteStrategyDefinition[];\n requiresConfirmation?: boolean;\n};\n\nexport type AssistantWorkflowHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport type AssistantWorkflowVocabularyItem<TId extends string = string> = {\n id: TId;\n description: string;\n};\n\nexport type AssistantWorkflowToolCapabilityDefinition = {\n name: string;\n provider: AssistantWorkflowToolProvider;\n effect: AssistantWorkflowToolEffect;\n sideEffectRisk: AssistantWorkflowToolSideEffectRisk;\n cacheability: AssistantWorkflowToolCacheability;\n retryClass: AssistantWorkflowToolRetryClass;\n outputKinds: readonly AssistantWorkflowToolOutputKind[];\n requiredContext?: readonly AssistantWorkflowToolContextRequirement[];\n requiresConfirmation?: boolean;\n};\n\nexport type AssistantWorkflowLocalFunctionToolBinding = {\n name: string;\n provider: \"local-function\";\n handlerId: string;\n};\n\nexport type AssistantWorkflowHttpToolBinding = {\n name: string;\n provider: \"http\";\n method?: AssistantWorkflowHttpMethod;\n path: string;\n baseUrlRef?: string;\n operationId?: string;\n};\n\nexport type AssistantWorkflowOpenAIHostedToolBinding = {\n name: string;\n provider: \"openai-hosted\";\n hostedToolType: string;\n toolName?: string;\n};\n\nexport type AssistantWorkflowMcpToolBinding = {\n name: string;\n provider: \"mcp\";\n serverId: string;\n toolName: string;\n};\n\nexport type AssistantWorkflowReplToolBinding = {\n name: string;\n provider: \"repl\";\n runtimeId: string;\n functionName?: string;\n commandTemplate?: string;\n allowFilesystem?: boolean;\n allowNetwork?: boolean;\n};\n\nexport type AssistantWorkflowToolBindingDefinition =\n | AssistantWorkflowLocalFunctionToolBinding\n | AssistantWorkflowHttpToolBinding\n | AssistantWorkflowOpenAIHostedToolBinding\n | AssistantWorkflowMcpToolBinding\n | AssistantWorkflowReplToolBinding;\n\nexport type AssistantWorkflowIntentDefinition<\n TIntent extends string = string,\n TPresentation extends string = string,\n> = AssistantWorkflowVocabularyItem<TIntent> & {\n defaultPresentation?: TPresentation | null;\n executionBias?: AssistantWorkflowExecutionBias | null;\n firstHopToolPolicy?: AssistantWorkflowFirstHopToolPolicy | null;\n optionalToolSelectionMode?: AssistantWorkflowOptionalToolSelectionMode;\n toolHints?: readonly string[];\n requiredToolHints?: readonly string[];\n toolSelectionProfiles?: readonly AssistantWorkflowToolSelectionProfile[];\n planningStepProfiles?: readonly AssistantWorkflowPlanningStepProfile[];\n memoryUse?: readonly AssistantWorkflowMemoryUse[];\n memoryPolicy?: AssistantWorkflowMemoryPolicy;\n directRoutes?: readonly string[];\n planningSteps?: readonly string[];\n clarificationRules?: readonly string[];\n plannerInstructions?: readonly string[];\n};\n\nexport type AssistantWorkflowDefinition<\n TIntent extends string = string,\n TSubintent extends string = string,\n TPresentation extends string = string,\n TDerivedTransform extends string = string,\n> = {\n id: string;\n version: number;\n description?: string;\n intents: readonly AssistantWorkflowIntentDefinition<TIntent, TPresentation>[];\n tools?: readonly AssistantWorkflowToolCapabilityDefinition[];\n toolBindings?: readonly AssistantWorkflowToolBindingDefinition[];\n directRoutes?: readonly AssistantWorkflowDirectRouteDefinition[];\n memorySlots?: readonly AssistantWorkflowMemorySlotDefinition[];\n planningSteps?: readonly AssistantWorkflowPlanningStepDefinition[];\n clarificationRules?: readonly AssistantWorkflowClarificationRuleDefinition[];\n subintents?: readonly AssistantWorkflowVocabularyItem<TSubintent>[];\n presentations?: readonly AssistantWorkflowVocabularyItem<TPresentation>[];\n derivedTransforms?: readonly AssistantWorkflowVocabularyItem<TDerivedTransform>[];\n};\n\nexport type AssistantWorkflowPromptFacts = {\n intents: string;\n subintents: string;\n presentations: string;\n derivedTransforms: string;\n};\n\nexport function defineAssistantWorkflow<\n TIntent extends string,\n TSubintent extends string = never,\n TPresentation extends string = never,\n TDerivedTransform extends string = never,\n>(\n definition: AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform>,\n): AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform> {\n assertWorkflowHeader(definition);\n assertUniqueVocabulary(\"intent\", definition.intents);\n assertUniqueVocabulary(\"subintent\", definition.subintents ?? []);\n assertUniqueVocabulary(\"presentation\", definition.presentations ?? []);\n assertUniqueVocabulary(\"derived transform\", definition.derivedTransforms ?? []);\n assertUniqueToolCapabilities(definition.tools ?? []);\n assertUniqueToolBindings(definition.toolBindings ?? []);\n assertUniqueDirectRoutes(definition.directRoutes ?? []);\n assertUniqueMemorySlots(definition.memorySlots ?? []);\n assertUniquePlanningSteps(definition.planningSteps ?? []);\n assertUniqueClarificationRules(definition.clarificationRules ?? []);\n assertIntentReferences(definition);\n return definition;\n}\n\nexport function normalizeAssistantWorkflowId(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value.trim().toLowerCase();\n return normalized.length ? normalized : null;\n}\n\nexport function getAssistantWorkflowIntentIds<TIntent extends string>(\n workflow: AssistantWorkflowDefinition<TIntent, string, string, string>,\n): readonly TIntent[] {\n return workflow.intents.map((intent) => intent.id);\n}\n\nexport function getAssistantWorkflowSubintentIds<TSubintent extends string>(\n workflow: AssistantWorkflowDefinition<string, TSubintent, string, string>,\n): readonly TSubintent[] {\n return (workflow.subintents ?? []).map((subintent) => subintent.id);\n}\n\nexport function getAssistantWorkflowPresentationIds<TPresentation extends string>(\n workflow: AssistantWorkflowDefinition<string, string, TPresentation, string>,\n): readonly TPresentation[] {\n return (workflow.presentations ?? []).map((presentation) => presentation.id);\n}\n\nexport function getAssistantWorkflowDerivedTransformIds<TDerivedTransform extends string>(\n workflow: AssistantWorkflowDefinition<string, string, string, TDerivedTransform>,\n): readonly TDerivedTransform[] {\n return (workflow.derivedTransforms ?? []).map((transform) => transform.id);\n}\n\nexport function findAssistantWorkflowIntent<TIntent extends string, TPresentation extends string>(\n workflow: AssistantWorkflowDefinition<TIntent, string, TPresentation, string>,\n intentId: unknown,\n): AssistantWorkflowIntentDefinition<TIntent, TPresentation> | null {\n const normalized = normalizeAssistantWorkflowId(intentId);\n if (!normalized) return null;\n return workflow.intents.find((intent) => intent.id === normalized) ?? null;\n}\n\nexport function getAssistantWorkflowToolHints(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n availableToolNames?: readonly string[],\n): string[] {\n const intent = findAssistantWorkflowIntent(workflow, intentId);\n if (!intent) return [];\n return filterWorkflowToolNames(intent.toolHints ?? [], availableToolNames);\n}\n\nexport function getAssistantWorkflowRequiredToolHints(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n availableToolNames?: readonly string[],\n): string[] {\n const intent = findAssistantWorkflowIntent(workflow, intentId);\n if (!intent) return [];\n return filterWorkflowToolNames(intent.requiredToolHints ?? [], availableToolNames);\n}\n\nexport function formatAssistantWorkflowVocabulary(\n items: readonly AssistantWorkflowVocabularyItem[],\n options: { includeDescriptions?: boolean } = {},\n): string {\n const includeDescriptions = options.includeDescriptions ?? true;\n return items\n .map((item) => {\n const id = item.id.trim();\n const description = item.description.trim();\n return includeDescriptions && description.length ? `${id} = ${description}` : id;\n })\n .filter((entry) => entry.length > 0)\n .join(\"; \");\n}\n\nexport function buildAssistantWorkflowPromptFacts(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): AssistantWorkflowPromptFacts {\n return {\n intents: formatAssistantWorkflowVocabulary(workflow.intents),\n subintents: formatAssistantWorkflowVocabulary(workflow.subintents ?? []),\n presentations: formatAssistantWorkflowVocabulary(workflow.presentations ?? [], { includeDescriptions: false }),\n derivedTransforms: formatAssistantWorkflowVocabulary(workflow.derivedTransforms ?? [], { includeDescriptions: false }),\n };\n}\n\nfunction assertWorkflowHeader(workflow: AssistantWorkflowDefinition<string, string, string, string>): void {\n if (!workflow.id.trim().length) {\n throw new Error(\"Assistant workflow id is required.\");\n }\n if (!Number.isInteger(workflow.version) || workflow.version < 1) {\n throw new Error(\"Assistant workflow version must be a positive integer.\");\n }\n if (!workflow.intents.length) {\n throw new Error(\"Assistant workflow must define at least one intent.\");\n }\n}\n\nfunction assertUniqueVocabulary(\n kind: string,\n items: readonly AssistantWorkflowVocabularyItem[],\n): void {\n const seen = new Set<string>();\n for (const item of items) {\n const normalized = normalizeAssistantWorkflowId(item.id);\n if (!normalized) {\n throw new Error(`Assistant workflow ${kind} id is required.`);\n }\n if (normalized !== item.id) {\n throw new Error(`Assistant workflow ${kind} id must already be normalized: ${item.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow ${kind} id: ${normalized}.`);\n }\n seen.add(normalized);\n }\n}\n\nfunction assertIntentReferences(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): void {\n const toolCapabilities = new Map((workflow.tools ?? []).map((tool) => [tool.name, tool] as const));\n const presentationIds = new Set((workflow.presentations ?? []).map((presentation) => presentation.id));\n const toolNames = new Set(toolCapabilities.keys());\n const directRouteIds = new Set((workflow.directRoutes ?? []).map((route) => route.id));\n const memorySlotIds = new Set((workflow.memorySlots ?? []).map((slot) => slot.id));\n const planningStepIds = new Set((workflow.planningSteps ?? []).map((step) => step.id));\n const clarificationRuleIds = new Set((workflow.clarificationRules ?? []).map((rule) => rule.id));\n const subintentIds = new Set((workflow.subintents ?? []).map((subintent) => subintent.id));\n for (const binding of workflow.toolBindings ?? []) {\n const capability = toolCapabilities.get(binding.name);\n if (toolCapabilities.size > 0 && !capability) {\n throw new Error(`Assistant workflow tool binding references unknown tool capability: ${binding.name}.`);\n }\n if (capability && capability.provider !== binding.provider) {\n throw new Error(\n `Assistant workflow tool binding ${binding.name} provider ${binding.provider} does not match capability provider ${capability.provider}.`,\n );\n }\n }\n for (const step of workflow.planningSteps ?? []) {\n for (const toolName of [...(step.toolHints ?? []), ...(step.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow planning step ${step.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n for (const slotId of [...(step.readsMemory ?? []), ...(step.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow planning step ${step.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n }\n for (const rule of workflow.clarificationRules ?? []) {\n for (const slotId of [...(rule.readsMemory ?? []), ...(rule.writesMemory ?? [])]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow clarification rule ${rule.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n }\n for (const route of workflow.directRoutes ?? []) {\n for (const toolName of route.requiredToolHints ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow direct route ${route.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n }\n for (const intent of workflow.intents) {\n assertUniqueToolSelectionProfiles(intent);\n assertUniquePlanningStepProfiles(intent);\n if (intent.defaultPresentation && !presentationIds.has(intent.defaultPresentation)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown presentation: ${intent.defaultPresentation}.`,\n );\n }\n for (const toolName of [...(intent.toolHints ?? []), ...(intent.requiredToolHints ?? [])]) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n for (const [profileIndex, profile] of (intent.toolSelectionProfiles ?? []).entries()) {\n assertToolSelectionProfileCondition(intent.id, profile, toolNames, subintentIds);\n for (const toolName of profile.toolHints) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile ${profile.id} references unknown tool capability: ${toolName}.`,\n );\n }\n }\n if (!profile.toolHints.length) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile ${profileIndex} must define at least one tool hint.`,\n );\n }\n }\n for (const [profileIndex, profile] of (intent.planningStepProfiles ?? []).entries()) {\n assertPlanningStepProfileCondition(intent.id, profile);\n if (!profile.planningSteps.length) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profileIndex} must define at least one planning step.`,\n );\n }\n for (const stepId of profile.planningSteps) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown planning step: ${stepId}.`,\n );\n }\n }\n for (const toolName of profile.condition?.requiredTools ?? []) {\n if (toolNames.size > 0 && !toolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown required tool: ${toolName}.`,\n );\n }\n }\n const condition = profile.condition;\n if (condition?.subintent && subintentIds.size > 0 && !subintentIds.has(condition.subintent)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown subintent: ${condition.subintent}.`,\n );\n }\n if (condition?.presentation && presentationIds.size > 0 && !presentationIds.has(condition.presentation)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile ${profile.id} references unknown presentation: ${condition.presentation}.`,\n );\n }\n }\n for (const slotId of [\n ...(intent.memoryPolicy?.read ?? []),\n ...(intent.memoryPolicy?.write ?? []),\n ...(intent.memoryPolicy?.inject ?? []),\n ]) {\n if (memorySlotIds.size > 0 && !memorySlotIds.has(slotId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown memory slot: ${slotId}.`,\n );\n }\n }\n for (const routeId of intent.directRoutes ?? []) {\n if (directRouteIds.size > 0 && !directRouteIds.has(routeId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown direct route: ${routeId}.`,\n );\n }\n }\n for (const stepId of intent.planningSteps ?? []) {\n if (planningStepIds.size > 0 && !planningStepIds.has(stepId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown planning step: ${stepId}.`,\n );\n }\n }\n for (const ruleId of intent.clarificationRules ?? []) {\n if (clarificationRuleIds.size > 0 && !clarificationRuleIds.has(ruleId)) {\n throw new Error(\n `Assistant workflow intent ${intent.id} references unknown clarification rule: ${ruleId}.`,\n );\n }\n }\n }\n}\n\nfunction assertUniqueDirectRoutes(routes: readonly AssistantWorkflowDirectRouteDefinition[]): void {\n assertUniqueVocabulary(\"direct route\", routes);\n for (const route of routes) {\n if (route.outcomeRoute !== undefined && !normalizeAssistantWorkflowId(route.outcomeRoute)) {\n throw new Error(`Assistant workflow direct route ${route.id} outcomeRoute must be non-empty when provided.`);\n }\n if (route.outcomeRoute !== undefined && normalizeAssistantWorkflowId(route.outcomeRoute) !== route.outcomeRoute) {\n throw new Error(\n `Assistant workflow direct route ${route.id} outcomeRoute must already be normalized: ${route.outcomeRoute}.`,\n );\n }\n assertUniqueVocabulary(`direct route ${route.id} strategy`, route.strategies ?? []);\n for (const strategy of route.strategies ?? []) {\n if (strategy.id !== normalizeAssistantWorkflowId(strategy.id)) {\n throw new Error(\n `Assistant workflow direct route ${route.id} strategy id must already be normalized: ${strategy.id}.`,\n );\n }\n }\n }\n}\n\nfunction assertUniqueToolSelectionProfiles(intent: AssistantWorkflowIntentDefinition): void {\n const seen = new Set<string>();\n for (const profile of intent.toolSelectionProfiles ?? []) {\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n throw new Error(`Assistant workflow intent ${intent.id} tool selection profile id is required.`);\n }\n if (normalized !== profile.id) {\n throw new Error(\n `Assistant workflow intent ${intent.id} tool selection profile id must already be normalized: ${profile.id}.`,\n );\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow intent ${intent.id} tool selection profile: ${normalized}.`);\n }\n seen.add(normalized);\n if (!profile.description.trim().length) {\n throw new Error(`Assistant workflow intent ${intent.id} tool selection profile ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniquePlanningStepProfiles(intent: AssistantWorkflowIntentDefinition): void {\n const seen = new Set<string>();\n for (const profile of intent.planningStepProfiles ?? []) {\n const normalized = normalizeAssistantWorkflowId(profile.id);\n if (!normalized) {\n throw new Error(`Assistant workflow intent ${intent.id} planning step profile id is required.`);\n }\n if (normalized !== profile.id) {\n throw new Error(\n `Assistant workflow intent ${intent.id} planning step profile id must already be normalized: ${profile.id}.`,\n );\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow intent ${intent.id} planning step profile: ${normalized}.`);\n }\n seen.add(normalized);\n if (!profile.description.trim().length) {\n throw new Error(`Assistant workflow intent ${intent.id} planning step profile ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertToolSelectionProfileCondition(\n intentId: string,\n profile: AssistantWorkflowToolSelectionProfile,\n knownToolNames: ReadonlySet<string>,\n knownSubintentIds: ReadonlySet<string>,\n): void {\n const {\n minHop,\n maxHop,\n selectedReason,\n subintent,\n minAttributeCount,\n maxAttributeCount,\n requiredClassifierTools,\n } = profile.condition ?? {};\n if (profile.toolExclusions !== undefined) {\n const normalizedExcludedTools = profile.toolExclusions\n .filter((toolName): toolName is string => typeof toolName === \"string\")\n .map((toolName) => toolName.trim())\n .filter((toolName) => toolName.length > 0);\n if (!normalizedExcludedTools.length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} toolExclusions must contain at least one tool.`,\n );\n }\n const profileToolHints = new Set(profile.toolHints.map((toolName) => toolName.trim()));\n for (const toolName of normalizedExcludedTools) {\n if (!knownToolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown excluded tool capability: ${toolName}.`,\n );\n }\n if (profileToolHints.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} must not both hint and exclude tool capability: ${toolName}.`,\n );\n }\n }\n }\n if (minHop !== undefined && (!Number.isInteger(minHop) || minHop < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must be a non-negative integer.`,\n );\n }\n if (maxHop !== undefined && (!Number.isInteger(maxHop) || maxHop < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxHop must be a non-negative integer.`,\n );\n }\n if (minHop !== undefined && maxHop !== undefined && minHop > maxHop) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minHop must not exceed maxHop.`,\n );\n }\n if (subintent !== undefined && subintent !== null) {\n const normalizedSubintent = subintent.trim();\n if (!normalizedSubintent.length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} subintent must not be empty.`,\n );\n }\n if (knownSubintentIds.size > 0 && !knownSubintentIds.has(normalizedSubintent)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown subintent: ${normalizedSubintent}.`,\n );\n }\n }\n if (minAttributeCount !== undefined && (!Number.isInteger(minAttributeCount) || minAttributeCount < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minAttributeCount must be a non-negative integer.`,\n );\n }\n if (maxAttributeCount !== undefined && (!Number.isInteger(maxAttributeCount) || maxAttributeCount < 0)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} maxAttributeCount must be a non-negative integer.`,\n );\n }\n if (\n minAttributeCount !== undefined &&\n maxAttributeCount !== undefined &&\n minAttributeCount > maxAttributeCount\n ) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} minAttributeCount must not exceed maxAttributeCount.`,\n );\n }\n if (requiredClassifierTools !== undefined) {\n const normalizedRequiredTools = requiredClassifierTools\n .filter((toolName): toolName is string => typeof toolName === \"string\")\n .map((toolName) => toolName.trim())\n .filter((toolName) => toolName.length > 0);\n if (!normalizedRequiredTools.length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} requiredClassifierTools must contain at least one tool.`,\n );\n }\n for (const toolName of normalizedRequiredTools) {\n if (!knownToolNames.has(toolName)) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} references unknown classifier tool capability: ${toolName}.`,\n );\n }\n }\n }\n if (selectedReason !== undefined && !selectedReason.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} tool selection profile ${profile.id} selectedReason must not be empty.`,\n );\n }\n}\n\nfunction assertPlanningStepProfileCondition(\n intentId: string,\n profile: AssistantWorkflowPlanningStepProfile,\n): void {\n const { minConfidence, maxConfidence, subintent, presentation, timeWindowHint, requiredTools } = profile.condition ?? {};\n if (minConfidence !== undefined && (!Number.isFinite(minConfidence) || minConfidence < 0 || minConfidence > 1)) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must be between 0 and 1.`,\n );\n }\n if (maxConfidence !== undefined && (!Number.isFinite(maxConfidence) || maxConfidence < 0 || maxConfidence > 1)) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} maxConfidence must be between 0 and 1.`,\n );\n }\n if (minConfidence !== undefined && maxConfidence !== undefined && minConfidence > maxConfidence) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} minConfidence must not exceed maxConfidence.`,\n );\n }\n if (subintent !== undefined && !subintent.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} subintent must not be empty.`,\n );\n }\n if (presentation !== undefined && !presentation.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} presentation must not be empty.`,\n );\n }\n if (timeWindowHint !== undefined && !timeWindowHint.trim().length) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} timeWindowHint must not be empty.`,\n );\n }\n if (requiredTools !== undefined && requiredTools.length === 0) {\n throw new Error(\n `Assistant workflow intent ${intentId} planning step profile ${profile.id} requiredTools must not be empty.`,\n );\n }\n}\n\nfunction assertUniqueClarificationRules(\n rules: readonly AssistantWorkflowClarificationRuleDefinition[],\n): void {\n const seen = new Set<string>();\n for (const rule of rules) {\n const normalized = normalizeAssistantWorkflowId(rule.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow clarification rule id is required.\");\n }\n if (normalized !== rule.id) {\n throw new Error(`Assistant workflow clarification rule id must already be normalized: ${rule.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow clarification rule: ${normalized}.`);\n }\n seen.add(normalized);\n if (!rule.description.trim().length) {\n throw new Error(`Assistant workflow clarification rule ${normalized} description is required.`);\n }\n if (\n rule.condition === \"low_confidence\" &&\n rule.confidenceBelow !== undefined &&\n (!Number.isFinite(rule.confidenceBelow) || rule.confidenceBelow < 0 || rule.confidenceBelow > 1)\n ) {\n throw new Error(`Assistant workflow clarification rule ${normalized} confidenceBelow must be between 0 and 1.`);\n }\n }\n}\n\nfunction assertUniquePlanningSteps(\n steps: readonly AssistantWorkflowPlanningStepDefinition[],\n): void {\n const seen = new Set<string>();\n for (const step of steps) {\n const normalized = normalizeAssistantWorkflowId(step.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow planning step id is required.\");\n }\n if (normalized !== step.id) {\n throw new Error(`Assistant workflow planning step id must already be normalized: ${step.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow planning step: ${normalized}.`);\n }\n seen.add(normalized);\n if (!step.description.trim().length) {\n throw new Error(`Assistant workflow planning step ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniqueMemorySlots(\n slots: readonly AssistantWorkflowMemorySlotDefinition[],\n): void {\n const seen = new Set<string>();\n for (const slot of slots) {\n const normalized = normalizeAssistantWorkflowId(slot.id);\n if (!normalized) {\n throw new Error(\"Assistant workflow memory slot id is required.\");\n }\n if (normalized !== slot.id) {\n throw new Error(`Assistant workflow memory slot id must already be normalized: ${slot.id}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow memory slot: ${normalized}.`);\n }\n seen.add(normalized);\n if (!slot.description.trim().length) {\n throw new Error(`Assistant workflow memory slot ${normalized} description is required.`);\n }\n }\n}\n\nfunction assertUniqueToolCapabilities(\n tools: readonly AssistantWorkflowToolCapabilityDefinition[],\n): void {\n const seen = new Set<string>();\n for (const tool of tools) {\n const normalized = normalizeAssistantWorkflowId(tool.name);\n if (!normalized) {\n throw new Error(\"Assistant workflow tool capability name is required.\");\n }\n if (normalized !== tool.name) {\n throw new Error(`Assistant workflow tool capability name must already be normalized: ${tool.name}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow tool capability: ${normalized}.`);\n }\n seen.add(normalized);\n if (!tool.outputKinds.length) {\n throw new Error(`Assistant workflow tool capability ${normalized} must define at least one output kind.`);\n }\n }\n}\n\nfunction assertUniqueToolBindings(\n bindings: readonly AssistantWorkflowToolBindingDefinition[],\n): void {\n const seen = new Set<string>();\n for (const binding of bindings) {\n const normalized = normalizeAssistantWorkflowId(binding.name);\n if (!normalized) {\n throw new Error(\"Assistant workflow tool binding name is required.\");\n }\n if (normalized !== binding.name) {\n throw new Error(`Assistant workflow tool binding name must already be normalized: ${binding.name}.`);\n }\n if (seen.has(normalized)) {\n throw new Error(`Duplicate assistant workflow tool binding: ${normalized}.`);\n }\n seen.add(normalized);\n assertToolBindingTarget(binding);\n }\n}\n\nfunction assertToolBindingTarget(binding: AssistantWorkflowToolBindingDefinition): void {\n switch (binding.provider) {\n case \"local-function\":\n assertNonEmptyBindingField(binding.name, \"handlerId\", binding.handlerId);\n return;\n case \"http\":\n assertNonEmptyBindingField(binding.name, \"path\", binding.path);\n if (binding.method !== undefined && binding.method !== binding.method.toUpperCase()) {\n throw new Error(`Assistant workflow tool binding ${binding.name} HTTP method must be uppercase.`);\n }\n return;\n case \"openai-hosted\":\n assertNonEmptyBindingField(binding.name, \"hostedToolType\", binding.hostedToolType);\n return;\n case \"mcp\":\n assertNonEmptyBindingField(binding.name, \"serverId\", binding.serverId);\n assertNonEmptyBindingField(binding.name, \"toolName\", binding.toolName);\n return;\n case \"repl\":\n assertNonEmptyBindingField(binding.name, \"runtimeId\", binding.runtimeId);\n if (!binding.functionName?.trim().length && !binding.commandTemplate?.trim().length) {\n throw new Error(\n `Assistant workflow tool binding ${binding.name} must define functionName or commandTemplate.`,\n );\n }\n return;\n }\n}\n\nfunction assertNonEmptyBindingField(toolName: string, fieldName: string, value: string): void {\n if (!value.trim().length) {\n throw new Error(`Assistant workflow tool binding ${toolName} ${fieldName} is required.`);\n }\n}\n\nfunction filterWorkflowToolNames(\n rawTools: readonly string[],\n availableToolNames?: readonly string[],\n): string[] {\n const availableSet = availableToolNames ? new Set(availableToolNames) : null;\n const out: string[] = [];\n const seen = new Set<string>();\n for (const rawTool of rawTools) {\n const tool = rawTool.trim();\n if (!tool.length || seen.has(tool)) continue;\n if (availableSet && !availableSet.has(tool)) continue;\n seen.add(tool);\n out.push(tool);\n }\n return out;\n}\n"]}
|
|
@@ -14,7 +14,7 @@ export type AssistantWorkflowToolSelectionCandidate = {
|
|
|
14
14
|
};
|
|
15
15
|
export type AssistantWorkflowToolSelectionCandidateInput = {
|
|
16
16
|
workflow: AssistantWorkflowDefinition<string, string, string, string>;
|
|
17
|
-
decision: Pick<AssistantWorkflowDecision, "intent" | "classifierTools" | "requiredToolHints" | "toolHints" | "workflowSuggestedTools">;
|
|
17
|
+
decision: Pick<AssistantWorkflowDecision, "intent" | "subintent" | "classifierTools" | "requiredToolHints" | "toolHints" | "workflowSuggestedTools">;
|
|
18
18
|
availableToolNames?: readonly string[] | null;
|
|
19
19
|
hop?: number | null;
|
|
20
20
|
selectedReason?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection-policy.d.ts","sourceRoot":"","sources":["../src/tool-selection-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,0CAA0C,EAC/C,KAAK,uCAAuC,EAC7C,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAW/F,YAAY,EAAE,0CAA0C,EAAE,MAAM,iBAAiB,CAAC;AAElF,MAAM,MAAM,uCAAuC,GAAG;IACpD,yBAAyB,EAAE,0CAA0C,CAAC;IACtE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG;IACzD,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,QAAQ,EAAE,IAAI,CACZ,yBAAyB,EACzB,QAAQ,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,WAAW,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"tool-selection-policy.d.ts","sourceRoot":"","sources":["../src/tool-selection-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export function buildAssistantWorkflowToolSelectionCandidate(input) {
|
|
|
15
15
|
.filter((profile) => toolSelectionProfileConditionMatches(profile.condition, {
|
|
16
16
|
hop: input.hop ?? null,
|
|
17
17
|
selectedReason: input.selectedReason ?? null,
|
|
18
|
+
subintent: input.decision.subintent,
|
|
18
19
|
resolvedScope: input.resolvedScope === true,
|
|
19
20
|
attributeCount: input.attributeCount ?? null,
|
|
20
21
|
classifierToolNames: classifierToolSet,
|
|
@@ -186,6 +187,10 @@ function toolSelectionProfileConditionMatches(condition, input) {
|
|
|
186
187
|
if (expectedReason === null || normalizeNullableString(input.selectedReason) !== expectedReason)
|
|
187
188
|
return false;
|
|
188
189
|
}
|
|
190
|
+
if (condition.subintent !== undefined &&
|
|
191
|
+
normalizeNullableString(condition.subintent) !== normalizeNullableString(input.subintent)) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
189
194
|
if (condition.resolvedScope !== undefined && condition.resolvedScope !== input.resolvedScope)
|
|
190
195
|
return false;
|
|
191
196
|
if (condition.minAttributeCount !== undefined &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection-policy.js","sourceRoot":"","sources":["../src/tool-selection-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n findAssistantWorkflowIntent,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowOptionalToolSelectionMode,\n type AssistantWorkflowToolContextRequirement,\n} from \"./definition.js\";\nimport type { AssistantWorkflowDecision, AssistantWorkflowDecisionInput } from \"./decision.js\";\nimport {\n buildAssistantWorkflowRun,\n buildAssistantWorkflowRunTracePayload,\n} from \"./run.js\";\nimport { summarizeAssistantWorkflowToolCapabilities } from \"./tool-capabilities.js\";\nimport {\n readAssistantWorkflowString as normalizeNullableString,\n readAssistantWorkflowStringArray as readStringArray,\n} from \"./value-readers.js\";\n\nexport type { AssistantWorkflowOptionalToolSelectionMode } from \"./definition.js\";\n\nexport type AssistantWorkflowToolSelectionCandidate = {\n optionalToolSelectionMode: AssistantWorkflowOptionalToolSelectionMode;\n toolNames: string[];\n classifierToolNames: string[];\n requiredToolNames: string[];\n optionalToolNames: string[];\n excludedOptionalToolNames: string[];\n activeProfileIds: string[];\n profileToolNames: string[];\n profileExcludedToolNames: string[];\n};\n\nexport type AssistantWorkflowToolSelectionCandidateInput = {\n workflow: AssistantWorkflowDefinition<string, string, string, string>;\n decision: Pick<\n AssistantWorkflowDecision,\n \"intent\" | \"classifierTools\" | \"requiredToolHints\" | \"toolHints\" | \"workflowSuggestedTools\"\n >;\n availableToolNames?: readonly string[] | null;\n hop?: number | null;\n selectedReason?: string | null;\n resolvedScope?: boolean;\n attributeCount?: number | null;\n};\n\nexport type AssistantWorkflowToolSelectionAuthoritySource = \"workflow\" | \"legacy-pruner\";\n\nexport type AssistantWorkflowToolSelectionAuthorityReason =\n | \"workflow_equivalent\"\n | \"workflow_authority_enabled\"\n | \"workflow_unavailable\"\n | \"workflow_authority_not_enabled\"\n | \"workflow_blocked\"\n | \"workflow_selection_not_exercised\"\n | \"workflow_differs\";\n\nexport type AssistantWorkflowToolSelectionAuthority = {\n source: AssistantWorkflowToolSelectionAuthoritySource;\n reason: AssistantWorkflowToolSelectionAuthorityReason;\n selectedToolNames: string[];\n workflowSuggestedToolNames: string[];\n workflowStatus: string | null;\n};\n\nexport type AssistantWorkflowToolSelectionAuthorityInput = {\n selectedToolNames: readonly string[];\n workflowAvailable: boolean;\n /** False when the caller deliberately exposed the complete legacy tool set. */\n selectionExercised?: boolean | null;\n workflowSuggestedToolNames?: readonly string[] | null;\n workflowSelectionCandidateToolNames?: readonly string[] | null;\n workflowStatus?: string | null;\n workflowAuthorityEnabled?: boolean | null;\n};\n\nexport type AssistantWorkflowToolSelectionComparisonInput = {\n workflow: AssistantWorkflowDefinition<string, string, string, string>;\n classification?: AssistantWorkflowDecisionInput | null;\n availableToolNames?: readonly string[] | null;\n selectedToolNames: readonly string[];\n selectedMode?: string | null;\n selectedReason?: string | null;\n hop?: number | null;\n pruningEnabled?: boolean | null;\n availableContext?: readonly AssistantWorkflowToolContextRequirement[] | null;\n resolvedScope?: boolean;\n workflowAuthorityIntentIds?: readonly string[] | null;\n workflowAuthoritySegmentKeys?: readonly string[] | null;\n workflowAuthorityProfileKeys?: readonly string[] | null;\n};\n\nexport type AssistantWorkflowToolSelectionDecisionInput = AssistantWorkflowToolSelectionComparisonInput;\n\nexport type AssistantWorkflowToolSelectionDecision = {\n comparisonPayload: Record<string, unknown> | null;\n authority: AssistantWorkflowToolSelectionAuthority;\n effectiveToolNames: string[];\n effectiveReason: string | null;\n};\n\nexport function buildAssistantWorkflowToolSelectionCandidate(\n input: AssistantWorkflowToolSelectionCandidateInput,\n): AssistantWorkflowToolSelectionCandidate {\n const intent = findAssistantWorkflowIntent(input.workflow, input.decision.intent);\n const optionalToolSelectionMode = intent?.optionalToolSelectionMode ?? \"classifier-confirmed\";\n const classifierToolNames = uniqueStrings(input.decision.classifierTools);\n const requiredToolNames = uniqueStrings(input.decision.requiredToolHints);\n const optionalToolNames = uniqueStrings(input.decision.toolHints)\n .filter((toolName) => !requiredToolNames.includes(toolName));\n const classifierToolSet = new Set(classifierToolNames);\n const availableToolNameSet = buildOptionalToolNameSet(input.availableToolNames);\n const activeProfiles = (intent?.toolSelectionProfiles ?? [])\n .filter((profile) => toolSelectionProfileConditionMatches(profile.condition, {\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n resolvedScope: input.resolvedScope === true,\n attributeCount: input.attributeCount ?? null,\n classifierToolNames: classifierToolSet,\n }));\n const activeProfileIds = uniqueStrings(activeProfiles.map((profile) => profile.id));\n const profileToolNames = uniqueStrings(activeProfiles.flatMap((profile) => {\n const mode = profile.optionalToolSelectionMode ?? \"workflow-suggested\";\n const profileToolHints = uniqueStrings(profile.toolHints)\n .filter((toolName) => !availableToolNameSet || availableToolNameSet.has(toolName));\n return mode === \"workflow-suggested\"\n ? profileToolHints\n : profileToolHints.filter((toolName) => classifierToolSet.has(toolName));\n }));\n const profileExcludedToolNames = uniqueStrings(activeProfiles.flatMap((profile) => profile.toolExclusions ?? []));\n const requiredToolSet = new Set(requiredToolNames);\n const profileExcludedToolSet = new Set(profileExcludedToolNames.filter((toolName) => !requiredToolSet.has(toolName)));\n const allowedOptionalToolNames = optionalToolSelectionMode === \"workflow-suggested\"\n ? optionalToolNames\n : optionalToolNames.filter((toolName) => classifierToolSet.has(toolName));\n const allowedOptionalToolSet = new Set(allowedOptionalToolNames);\n const allowedSet = new Set([\n ...classifierToolNames,\n ...requiredToolNames,\n ...allowedOptionalToolNames,\n ...profileToolNames,\n ]);\n const toolNames = orderToolNamesByAvailableCatalog(uniqueStrings([\n ...input.decision.workflowSuggestedTools.filter((toolName) => allowedSet.has(toolName)),\n ...classifierToolNames,\n ...requiredToolNames,\n ...allowedOptionalToolNames,\n ...profileToolNames,\n ]).filter((toolName) => !profileExcludedToolSet.has(toolName)), input.availableToolNames);\n\n return {\n optionalToolSelectionMode,\n toolNames,\n classifierToolNames,\n requiredToolNames,\n optionalToolNames,\n excludedOptionalToolNames: uniqueStrings([\n ...optionalToolNames.filter((toolName) => !allowedOptionalToolSet.has(toolName)),\n ...optionalToolNames.filter((toolName) => profileExcludedToolSet.has(toolName)),\n ]),\n activeProfileIds,\n profileToolNames: orderToolNamesByAvailableCatalog(profileToolNames, input.availableToolNames),\n profileExcludedToolNames: orderToolNamesByAvailableCatalog(profileExcludedToolNames, input.availableToolNames),\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionDecision(\n input: AssistantWorkflowToolSelectionDecisionInput,\n): AssistantWorkflowToolSelectionDecision {\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const comparisonPayload = buildAssistantWorkflowToolSelectionComparisonPayload(input);\n const workflowAuthorityEnabled = comparisonPayload\n ? isWorkflowAuthorityEnabled(input, comparisonPayload)\n : false;\n const authority = comparisonPayload\n ? buildAssistantWorkflowToolSelectionAuthority({\n selectedToolNames,\n workflowAvailable: true,\n workflowSuggestedToolNames: readStringArray(comparisonPayload[\"workflowSuggestedTools\"]),\n workflowSelectionCandidateToolNames: readStringArray(comparisonPayload[\"workflowSelectionCandidateTools\"]),\n workflowStatus: readWorkflowStatus(comparisonPayload),\n workflowAuthorityEnabled,\n selectionExercised: input.pruningEnabled !== false,\n })\n : buildAssistantWorkflowToolSelectionAuthority({\n selectedToolNames,\n workflowAvailable: false,\n });\n const gatedAuthority = applyWorkflowAuthorityIntentGate(authority, input, comparisonPayload);\n const effectiveReason = gatedAuthority.source === \"workflow\"\n ? gatedAuthority.reason\n : normalizeNullableString(input.selectedReason);\n const effectiveToolNames = gatedAuthority.source === \"workflow\"\n ? [...gatedAuthority.selectedToolNames]\n : selectedToolNames;\n\n return {\n comparisonPayload: comparisonPayload\n ? {\n ...comparisonPayload,\n selectedReason: effectiveReason,\n selectedToolCount: effectiveToolNames.length,\n workflowAuthoritySegmentKey: buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: normalizeNullableString(input.classification?.intent) ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n }),\n workflowAuthorityIntentIds: normalizeOptionalStringList(input.workflowAuthorityIntentIds),\n workflowAuthoritySegmentKeys: normalizeOptionalStringList(input.workflowAuthoritySegmentKeys),\n workflowAuthorityProfileKeys: normalizeOptionalStringList(input.workflowAuthorityProfileKeys),\n authority: gatedAuthority,\n }\n : null,\n authority: gatedAuthority,\n effectiveToolNames,\n effectiveReason,\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionComparisonPayload(\n input: AssistantWorkflowToolSelectionComparisonInput,\n): Record<string, unknown> | null {\n if (!input.classification) return null;\n\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const workflowRun = buildAssistantWorkflowRun(input.workflow, {\n classification: {\n ...input.classification,\n ...(input.resolvedScope === true ? { resolvedScope: true } : {}),\n },\n availableToolNames: input.availableToolNames ?? [],\n availableContext: input.availableContext ?? null,\n });\n const workflowDecision = workflowRun.decision;\n const workflowSelectionCandidate = buildAssistantWorkflowToolSelectionCandidate({\n workflow: input.workflow,\n decision: workflowDecision,\n availableToolNames: input.availableToolNames ?? [],\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n resolvedScope: input.resolvedScope === true,\n attributeCount: countDistinctAttributes(input.classification?.entities?.attributes),\n });\n const selectedSet = new Set(selectedToolNames);\n const workflowSet = new Set(workflowDecision.workflowSuggestedTools);\n const workflowSelectionCandidateSet = new Set(workflowSelectionCandidate.toolNames);\n const workflowAuthorityProfileKey = buildAssistantWorkflowToolSelectionProfileKey({\n intentId: workflowDecision.intent,\n profileIds: workflowSelectionCandidate.activeProfileIds,\n });\n const runTrace = buildAssistantWorkflowRunTracePayload(workflowRun);\n const decisionTrace = runTrace[\"decision\"] as Record<string, unknown>;\n const executionPlanTrace = runTrace[\"executionPlan\"] as Record<string, unknown>;\n\n return {\n ...(typeof input.hop === \"number\" ? { hop: input.hop } : {}),\n ...(typeof input.pruningEnabled === \"boolean\" ? { pruningEnabled: input.pruningEnabled } : {}),\n // Keep workflow identity flat so bounded trace payload sanitizers retain it\n // even when the detailed workflowRun object is omitted.\n workflowId: workflowRun.workflowId,\n workflowVersion: workflowRun.workflowVersion,\n resolvedScope: input.resolvedScope === true,\n ...(input.selectedMode ? { selectedMode: input.selectedMode } : {}),\n ...(input.selectedReason ? { selectedReason: input.selectedReason } : {}),\n selectedToolCount: selectedToolNames.length,\n ...decisionTrace,\n workflowRun: runTrace,\n executionPlan: executionPlanTrace,\n workflowSelectionCandidateTools: workflowSelectionCandidate.toolNames,\n workflowSelectionOptionalToolMode: workflowSelectionCandidate.optionalToolSelectionMode,\n workflowSelectionExcludedOptionalTools: workflowSelectionCandidate.excludedOptionalToolNames,\n workflowSelectionActiveProfileIds: workflowSelectionCandidate.activeProfileIds,\n workflowSelectionProfileTools: workflowSelectionCandidate.profileToolNames,\n workflowSelectionProfileExcludedTools: workflowSelectionCandidate.profileExcludedToolNames,\n ...(workflowAuthorityProfileKey ? { workflowAuthorityProfileKey } : {}),\n missingWorkflowSuggestedTools: workflowDecision.workflowSuggestedTools.filter((tool) => !selectedSet.has(tool)),\n missingWorkflowSelectionCandidateTools: workflowSelectionCandidate.toolNames.filter((tool) => !selectedSet.has(tool)),\n selectedOutsideWorkflowSuggestions: selectedToolNames.filter((tool) => !workflowSet.has(tool)),\n selectedOutsideWorkflowSelectionCandidate: selectedToolNames.filter((tool) => !workflowSelectionCandidateSet.has(tool)),\n selectedToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n selectedToolNames,\n ),\n workflowSuggestedToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n workflowDecision.workflowSuggestedTools,\n ),\n workflowSelectionCandidateToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n workflowSelectionCandidate.toolNames,\n ),\n };\n}\n\nfunction toolSelectionProfileConditionMatches(\n condition: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"toolSelectionProfiles\"]>[number][\"condition\"],\n input: {\n hop: number | null;\n selectedReason: string | null;\n resolvedScope: boolean;\n attributeCount: number | null;\n classifierToolNames: ReadonlySet<string>;\n },\n): boolean {\n if (!condition) return true;\n if (condition.minHop !== undefined && (input.hop === null || input.hop < condition.minHop)) return false;\n if (condition.maxHop !== undefined && (input.hop === null || input.hop > condition.maxHop)) return false;\n if (condition.selectedReason !== undefined) {\n const expectedReason = normalizeNullableString(condition.selectedReason);\n if (expectedReason === null || normalizeNullableString(input.selectedReason) !== expectedReason) return false;\n }\n if (condition.resolvedScope !== undefined && condition.resolvedScope !== input.resolvedScope) return false;\n if (\n condition.minAttributeCount !== undefined &&\n (input.attributeCount === null || input.attributeCount < condition.minAttributeCount)\n ) {\n return false;\n }\n if (\n condition.maxAttributeCount !== undefined &&\n (input.attributeCount === null || input.attributeCount > condition.maxAttributeCount)\n ) {\n return false;\n }\n if (\n condition.requiredClassifierTools !== undefined &&\n !condition.requiredClassifierTools.every((toolName) => input.classifierToolNames.has(toolName))\n ) {\n return false;\n }\n return true;\n}\n\nfunction countDistinctAttributes(values: readonly string[] | null | undefined): number | null {\n if (!Array.isArray(values)) return null;\n return new Set(\n values\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim().toLocaleLowerCase())\n .filter((value) => value.length > 0),\n ).size;\n}\n\nfunction buildOptionalToolNameSet(values: readonly unknown[] | null | undefined): Set<string> | null {\n const toolNames = normalizeOptionalStringList(values);\n return toolNames === null || toolNames.length === 0 ? null : new Set(toolNames);\n}\n\nfunction orderToolNamesByAvailableCatalog(\n toolNames: string[],\n availableToolNames: readonly unknown[] | null | undefined,\n): string[] {\n const availableOrder = normalizeOptionalStringList(availableToolNames);\n if (!availableOrder?.length) return toolNames;\n const toolNameSet = new Set(toolNames);\n const ordered = availableOrder.filter((toolName) => toolNameSet.has(toolName));\n return uniqueStrings([\n ...ordered,\n ...toolNames.filter((toolName) => !ordered.includes(toolName)),\n ]);\n}\n\nexport function buildAssistantWorkflowToolSelectionAuthority(\n input: AssistantWorkflowToolSelectionAuthorityInput,\n): AssistantWorkflowToolSelectionAuthority {\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const workflowSuggestedToolNames = uniqueStrings(input.workflowSuggestedToolNames ?? []);\n const workflowSelectionCandidateToolNames = uniqueStrings(input.workflowSelectionCandidateToolNames ?? []);\n const workflowStatus = normalizeNullableString(input.workflowStatus);\n const comparableWorkflowToolNames = workflowSelectionCandidateToolNames.length > 0\n ? workflowSelectionCandidateToolNames\n : workflowSuggestedToolNames;\n\n if (!input.workflowAvailable) {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_unavailable\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus: null,\n };\n }\n\n if (workflowStatus === \"blocked\" || workflowStatus === \"needs-clarification\") {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_blocked\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (input.workflowAuthorityEnabled && comparableWorkflowToolNames.length > 0) {\n return {\n source: \"workflow\",\n reason: sameStringSet(selectedToolNames, comparableWorkflowToolNames)\n ? \"workflow_equivalent\"\n : \"workflow_authority_enabled\",\n selectedToolNames: comparableWorkflowToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (input.selectionExercised === false) {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_selection_not_exercised\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (comparableWorkflowToolNames.length > 0 && sameStringSet(selectedToolNames, comparableWorkflowToolNames)) {\n return {\n source: \"workflow\",\n reason: \"workflow_equivalent\",\n selectedToolNames: comparableWorkflowToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_differs\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionSegmentKey(input: {\n intentId: string | null;\n hop: number | null;\n selectedReason: string | null;\n}): string {\n return `${normalizeNullableString(input.intentId) ?? \"unknown\"}|hop:${input.hop ?? \"unknown\"}|${\n normalizeNullableString(input.selectedReason) ?? \"unknown\"\n }`;\n}\n\n/**\n * Exact active profile combinations are authority scopes. A single profile can\n * be safe in one combination and unsafe in another, so profile ids are sorted\n * and retained together with the intent.\n */\nexport function buildAssistantWorkflowToolSelectionProfileKey(input: {\n intentId: string | null;\n profileIds: readonly unknown[] | null | undefined;\n}): string | null {\n const intentId = normalizeNullableString(input.intentId);\n const profileIds = uniqueStrings(input.profileIds ?? []).sort((left, right) => left.localeCompare(right));\n if (!intentId || !profileIds.length) return null;\n return `${intentId}|profiles:${profileIds.join(\",\")}`;\n}\n\nfunction uniqueStrings(values: readonly unknown[]): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const trimmed = value.trim();\n if (!trimmed.length || seen.has(trimmed)) continue;\n seen.add(trimmed);\n out.push(trimmed);\n }\n return out;\n}\n\nfunction applyWorkflowAuthorityIntentGate(\n authority: AssistantWorkflowToolSelectionAuthority,\n input: AssistantWorkflowToolSelectionDecisionInput,\n comparisonPayload: Record<string, unknown> | null,\n): AssistantWorkflowToolSelectionAuthority {\n const enabledIntentIds = normalizeOptionalStringList(input.workflowAuthorityIntentIds);\n const enabledSegmentKeys = normalizeOptionalStringList(input.workflowAuthoritySegmentKeys);\n const enabledProfileKeys = normalizeOptionalStringList(input.workflowAuthorityProfileKeys);\n if (enabledIntentIds === null && enabledSegmentKeys === null && enabledProfileKeys === null) return authority;\n if (authority.source !== \"workflow\") return authority;\n const intentId = normalizeNullableString(input.classification?.intent);\n if (intentId && enabledIntentIds?.includes(intentId)) return authority;\n const segmentKey = buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: intentId ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n });\n if (enabledSegmentKeys?.includes(segmentKey)) return authority;\n const profileKey = comparisonPayload\n ? normalizeNullableString(comparisonPayload[\"workflowAuthorityProfileKey\"])\n : null;\n if (profileKey && enabledProfileKeys?.includes(profileKey)) return authority;\n\n return {\n ...authority,\n source: \"legacy-pruner\",\n reason: \"workflow_authority_not_enabled\",\n };\n}\n\nfunction isWorkflowAuthorityEnabled(\n input: AssistantWorkflowToolSelectionDecisionInput,\n comparisonPayload: Record<string, unknown>,\n): boolean {\n const enabledIntentIds = normalizeOptionalStringList(input.workflowAuthorityIntentIds);\n const enabledSegmentKeys = normalizeOptionalStringList(input.workflowAuthoritySegmentKeys);\n const enabledProfileKeys = normalizeOptionalStringList(input.workflowAuthorityProfileKeys);\n if (enabledIntentIds === null && enabledSegmentKeys === null && enabledProfileKeys === null) return false;\n const intentId = normalizeNullableString(input.classification?.intent);\n if (intentId && enabledIntentIds?.includes(intentId)) return true;\n const segmentKey = buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: intentId ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n });\n if (enabledSegmentKeys?.includes(segmentKey)) return true;\n const profileKey = normalizeNullableString(comparisonPayload[\"workflowAuthorityProfileKey\"]);\n return profileKey !== null && (enabledProfileKeys?.includes(profileKey) ?? false);\n}\n\nfunction normalizeOptionalStringList(values: readonly unknown[] | null | undefined): string[] | null {\n if (values === null || values === undefined) return null;\n return uniqueStrings(values);\n}\n\nfunction readWorkflowStatus(payload: Record<string, unknown>): string | null {\n const workflowRun = isRecord(payload[\"workflowRun\"]) ? payload[\"workflowRun\"] : null;\n return normalizeNullableString(workflowRun?.[\"status\"]);\n}\n\nfunction sameStringSet(left: readonly string[], right: readonly string[]): boolean {\n if (left.length !== right.length) return false;\n const rightSet = new Set(right);\n return left.every((item) => rightSet.has(item));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tool-selection-policy.js","sourceRoot":"","sources":["../src/tool-selection-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n findAssistantWorkflowIntent,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowOptionalToolSelectionMode,\n type AssistantWorkflowToolContextRequirement,\n} from \"./definition.js\";\nimport type { AssistantWorkflowDecision, AssistantWorkflowDecisionInput } from \"./decision.js\";\nimport {\n buildAssistantWorkflowRun,\n buildAssistantWorkflowRunTracePayload,\n} from \"./run.js\";\nimport { summarizeAssistantWorkflowToolCapabilities } from \"./tool-capabilities.js\";\nimport {\n readAssistantWorkflowString as normalizeNullableString,\n readAssistantWorkflowStringArray as readStringArray,\n} from \"./value-readers.js\";\n\nexport type { AssistantWorkflowOptionalToolSelectionMode } from \"./definition.js\";\n\nexport type AssistantWorkflowToolSelectionCandidate = {\n optionalToolSelectionMode: AssistantWorkflowOptionalToolSelectionMode;\n toolNames: string[];\n classifierToolNames: string[];\n requiredToolNames: string[];\n optionalToolNames: string[];\n excludedOptionalToolNames: string[];\n activeProfileIds: string[];\n profileToolNames: string[];\n profileExcludedToolNames: string[];\n};\n\nexport type AssistantWorkflowToolSelectionCandidateInput = {\n workflow: AssistantWorkflowDefinition<string, string, string, string>;\n decision: Pick<\n AssistantWorkflowDecision,\n \"intent\" | \"subintent\" | \"classifierTools\" | \"requiredToolHints\" | \"toolHints\" | \"workflowSuggestedTools\"\n >;\n availableToolNames?: readonly string[] | null;\n hop?: number | null;\n selectedReason?: string | null;\n resolvedScope?: boolean;\n attributeCount?: number | null;\n};\n\nexport type AssistantWorkflowToolSelectionAuthoritySource = \"workflow\" | \"legacy-pruner\";\n\nexport type AssistantWorkflowToolSelectionAuthorityReason =\n | \"workflow_equivalent\"\n | \"workflow_authority_enabled\"\n | \"workflow_unavailable\"\n | \"workflow_authority_not_enabled\"\n | \"workflow_blocked\"\n | \"workflow_selection_not_exercised\"\n | \"workflow_differs\";\n\nexport type AssistantWorkflowToolSelectionAuthority = {\n source: AssistantWorkflowToolSelectionAuthoritySource;\n reason: AssistantWorkflowToolSelectionAuthorityReason;\n selectedToolNames: string[];\n workflowSuggestedToolNames: string[];\n workflowStatus: string | null;\n};\n\nexport type AssistantWorkflowToolSelectionAuthorityInput = {\n selectedToolNames: readonly string[];\n workflowAvailable: boolean;\n /** False when the caller deliberately exposed the complete legacy tool set. */\n selectionExercised?: boolean | null;\n workflowSuggestedToolNames?: readonly string[] | null;\n workflowSelectionCandidateToolNames?: readonly string[] | null;\n workflowStatus?: string | null;\n workflowAuthorityEnabled?: boolean | null;\n};\n\nexport type AssistantWorkflowToolSelectionComparisonInput = {\n workflow: AssistantWorkflowDefinition<string, string, string, string>;\n classification?: AssistantWorkflowDecisionInput | null;\n availableToolNames?: readonly string[] | null;\n selectedToolNames: readonly string[];\n selectedMode?: string | null;\n selectedReason?: string | null;\n hop?: number | null;\n pruningEnabled?: boolean | null;\n availableContext?: readonly AssistantWorkflowToolContextRequirement[] | null;\n resolvedScope?: boolean;\n workflowAuthorityIntentIds?: readonly string[] | null;\n workflowAuthoritySegmentKeys?: readonly string[] | null;\n workflowAuthorityProfileKeys?: readonly string[] | null;\n};\n\nexport type AssistantWorkflowToolSelectionDecisionInput = AssistantWorkflowToolSelectionComparisonInput;\n\nexport type AssistantWorkflowToolSelectionDecision = {\n comparisonPayload: Record<string, unknown> | null;\n authority: AssistantWorkflowToolSelectionAuthority;\n effectiveToolNames: string[];\n effectiveReason: string | null;\n};\n\nexport function buildAssistantWorkflowToolSelectionCandidate(\n input: AssistantWorkflowToolSelectionCandidateInput,\n): AssistantWorkflowToolSelectionCandidate {\n const intent = findAssistantWorkflowIntent(input.workflow, input.decision.intent);\n const optionalToolSelectionMode = intent?.optionalToolSelectionMode ?? \"classifier-confirmed\";\n const classifierToolNames = uniqueStrings(input.decision.classifierTools);\n const requiredToolNames = uniqueStrings(input.decision.requiredToolHints);\n const optionalToolNames = uniqueStrings(input.decision.toolHints)\n .filter((toolName) => !requiredToolNames.includes(toolName));\n const classifierToolSet = new Set(classifierToolNames);\n const availableToolNameSet = buildOptionalToolNameSet(input.availableToolNames);\n const activeProfiles = (intent?.toolSelectionProfiles ?? [])\n .filter((profile) => toolSelectionProfileConditionMatches(profile.condition, {\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n subintent: input.decision.subintent,\n resolvedScope: input.resolvedScope === true,\n attributeCount: input.attributeCount ?? null,\n classifierToolNames: classifierToolSet,\n }));\n const activeProfileIds = uniqueStrings(activeProfiles.map((profile) => profile.id));\n const profileToolNames = uniqueStrings(activeProfiles.flatMap((profile) => {\n const mode = profile.optionalToolSelectionMode ?? \"workflow-suggested\";\n const profileToolHints = uniqueStrings(profile.toolHints)\n .filter((toolName) => !availableToolNameSet || availableToolNameSet.has(toolName));\n return mode === \"workflow-suggested\"\n ? profileToolHints\n : profileToolHints.filter((toolName) => classifierToolSet.has(toolName));\n }));\n const profileExcludedToolNames = uniqueStrings(activeProfiles.flatMap((profile) => profile.toolExclusions ?? []));\n const requiredToolSet = new Set(requiredToolNames);\n const profileExcludedToolSet = new Set(profileExcludedToolNames.filter((toolName) => !requiredToolSet.has(toolName)));\n const allowedOptionalToolNames = optionalToolSelectionMode === \"workflow-suggested\"\n ? optionalToolNames\n : optionalToolNames.filter((toolName) => classifierToolSet.has(toolName));\n const allowedOptionalToolSet = new Set(allowedOptionalToolNames);\n const allowedSet = new Set([\n ...classifierToolNames,\n ...requiredToolNames,\n ...allowedOptionalToolNames,\n ...profileToolNames,\n ]);\n const toolNames = orderToolNamesByAvailableCatalog(uniqueStrings([\n ...input.decision.workflowSuggestedTools.filter((toolName) => allowedSet.has(toolName)),\n ...classifierToolNames,\n ...requiredToolNames,\n ...allowedOptionalToolNames,\n ...profileToolNames,\n ]).filter((toolName) => !profileExcludedToolSet.has(toolName)), input.availableToolNames);\n\n return {\n optionalToolSelectionMode,\n toolNames,\n classifierToolNames,\n requiredToolNames,\n optionalToolNames,\n excludedOptionalToolNames: uniqueStrings([\n ...optionalToolNames.filter((toolName) => !allowedOptionalToolSet.has(toolName)),\n ...optionalToolNames.filter((toolName) => profileExcludedToolSet.has(toolName)),\n ]),\n activeProfileIds,\n profileToolNames: orderToolNamesByAvailableCatalog(profileToolNames, input.availableToolNames),\n profileExcludedToolNames: orderToolNamesByAvailableCatalog(profileExcludedToolNames, input.availableToolNames),\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionDecision(\n input: AssistantWorkflowToolSelectionDecisionInput,\n): AssistantWorkflowToolSelectionDecision {\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const comparisonPayload = buildAssistantWorkflowToolSelectionComparisonPayload(input);\n const workflowAuthorityEnabled = comparisonPayload\n ? isWorkflowAuthorityEnabled(input, comparisonPayload)\n : false;\n const authority = comparisonPayload\n ? buildAssistantWorkflowToolSelectionAuthority({\n selectedToolNames,\n workflowAvailable: true,\n workflowSuggestedToolNames: readStringArray(comparisonPayload[\"workflowSuggestedTools\"]),\n workflowSelectionCandidateToolNames: readStringArray(comparisonPayload[\"workflowSelectionCandidateTools\"]),\n workflowStatus: readWorkflowStatus(comparisonPayload),\n workflowAuthorityEnabled,\n selectionExercised: input.pruningEnabled !== false,\n })\n : buildAssistantWorkflowToolSelectionAuthority({\n selectedToolNames,\n workflowAvailable: false,\n });\n const gatedAuthority = applyWorkflowAuthorityIntentGate(authority, input, comparisonPayload);\n const effectiveReason = gatedAuthority.source === \"workflow\"\n ? gatedAuthority.reason\n : normalizeNullableString(input.selectedReason);\n const effectiveToolNames = gatedAuthority.source === \"workflow\"\n ? [...gatedAuthority.selectedToolNames]\n : selectedToolNames;\n\n return {\n comparisonPayload: comparisonPayload\n ? {\n ...comparisonPayload,\n selectedReason: effectiveReason,\n selectedToolCount: effectiveToolNames.length,\n workflowAuthoritySegmentKey: buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: normalizeNullableString(input.classification?.intent) ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n }),\n workflowAuthorityIntentIds: normalizeOptionalStringList(input.workflowAuthorityIntentIds),\n workflowAuthoritySegmentKeys: normalizeOptionalStringList(input.workflowAuthoritySegmentKeys),\n workflowAuthorityProfileKeys: normalizeOptionalStringList(input.workflowAuthorityProfileKeys),\n authority: gatedAuthority,\n }\n : null,\n authority: gatedAuthority,\n effectiveToolNames,\n effectiveReason,\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionComparisonPayload(\n input: AssistantWorkflowToolSelectionComparisonInput,\n): Record<string, unknown> | null {\n if (!input.classification) return null;\n\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const workflowRun = buildAssistantWorkflowRun(input.workflow, {\n classification: {\n ...input.classification,\n ...(input.resolvedScope === true ? { resolvedScope: true } : {}),\n },\n availableToolNames: input.availableToolNames ?? [],\n availableContext: input.availableContext ?? null,\n });\n const workflowDecision = workflowRun.decision;\n const workflowSelectionCandidate = buildAssistantWorkflowToolSelectionCandidate({\n workflow: input.workflow,\n decision: workflowDecision,\n availableToolNames: input.availableToolNames ?? [],\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n resolvedScope: input.resolvedScope === true,\n attributeCount: countDistinctAttributes(input.classification?.entities?.attributes),\n });\n const selectedSet = new Set(selectedToolNames);\n const workflowSet = new Set(workflowDecision.workflowSuggestedTools);\n const workflowSelectionCandidateSet = new Set(workflowSelectionCandidate.toolNames);\n const workflowAuthorityProfileKey = buildAssistantWorkflowToolSelectionProfileKey({\n intentId: workflowDecision.intent,\n profileIds: workflowSelectionCandidate.activeProfileIds,\n });\n const runTrace = buildAssistantWorkflowRunTracePayload(workflowRun);\n const decisionTrace = runTrace[\"decision\"] as Record<string, unknown>;\n const executionPlanTrace = runTrace[\"executionPlan\"] as Record<string, unknown>;\n\n return {\n ...(typeof input.hop === \"number\" ? { hop: input.hop } : {}),\n ...(typeof input.pruningEnabled === \"boolean\" ? { pruningEnabled: input.pruningEnabled } : {}),\n // Keep workflow identity flat so bounded trace payload sanitizers retain it\n // even when the detailed workflowRun object is omitted.\n workflowId: workflowRun.workflowId,\n workflowVersion: workflowRun.workflowVersion,\n resolvedScope: input.resolvedScope === true,\n ...(input.selectedMode ? { selectedMode: input.selectedMode } : {}),\n ...(input.selectedReason ? { selectedReason: input.selectedReason } : {}),\n selectedToolCount: selectedToolNames.length,\n ...decisionTrace,\n workflowRun: runTrace,\n executionPlan: executionPlanTrace,\n workflowSelectionCandidateTools: workflowSelectionCandidate.toolNames,\n workflowSelectionOptionalToolMode: workflowSelectionCandidate.optionalToolSelectionMode,\n workflowSelectionExcludedOptionalTools: workflowSelectionCandidate.excludedOptionalToolNames,\n workflowSelectionActiveProfileIds: workflowSelectionCandidate.activeProfileIds,\n workflowSelectionProfileTools: workflowSelectionCandidate.profileToolNames,\n workflowSelectionProfileExcludedTools: workflowSelectionCandidate.profileExcludedToolNames,\n ...(workflowAuthorityProfileKey ? { workflowAuthorityProfileKey } : {}),\n missingWorkflowSuggestedTools: workflowDecision.workflowSuggestedTools.filter((tool) => !selectedSet.has(tool)),\n missingWorkflowSelectionCandidateTools: workflowSelectionCandidate.toolNames.filter((tool) => !selectedSet.has(tool)),\n selectedOutsideWorkflowSuggestions: selectedToolNames.filter((tool) => !workflowSet.has(tool)),\n selectedOutsideWorkflowSelectionCandidate: selectedToolNames.filter((tool) => !workflowSelectionCandidateSet.has(tool)),\n selectedToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n selectedToolNames,\n ),\n workflowSuggestedToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n workflowDecision.workflowSuggestedTools,\n ),\n workflowSelectionCandidateToolCapabilitySummary: summarizeAssistantWorkflowToolCapabilities(\n input.workflow,\n workflowSelectionCandidate.toolNames,\n ),\n };\n}\n\nfunction toolSelectionProfileConditionMatches(\n condition: NonNullable<AssistantWorkflowDefinition<string, string, string, string>[\"intents\"][number][\"toolSelectionProfiles\"]>[number][\"condition\"],\n input: {\n hop: number | null;\n selectedReason: string | null;\n subintent: string | null;\n resolvedScope: boolean;\n attributeCount: number | null;\n classifierToolNames: ReadonlySet<string>;\n },\n): boolean {\n if (!condition) return true;\n if (condition.minHop !== undefined && (input.hop === null || input.hop < condition.minHop)) return false;\n if (condition.maxHop !== undefined && (input.hop === null || input.hop > condition.maxHop)) return false;\n if (condition.selectedReason !== undefined) {\n const expectedReason = normalizeNullableString(condition.selectedReason);\n if (expectedReason === null || normalizeNullableString(input.selectedReason) !== expectedReason) return false;\n }\n if (\n condition.subintent !== undefined &&\n normalizeNullableString(condition.subintent) !== normalizeNullableString(input.subintent)\n ) {\n return false;\n }\n if (condition.resolvedScope !== undefined && condition.resolvedScope !== input.resolvedScope) return false;\n if (\n condition.minAttributeCount !== undefined &&\n (input.attributeCount === null || input.attributeCount < condition.minAttributeCount)\n ) {\n return false;\n }\n if (\n condition.maxAttributeCount !== undefined &&\n (input.attributeCount === null || input.attributeCount > condition.maxAttributeCount)\n ) {\n return false;\n }\n if (\n condition.requiredClassifierTools !== undefined &&\n !condition.requiredClassifierTools.every((toolName) => input.classifierToolNames.has(toolName))\n ) {\n return false;\n }\n return true;\n}\n\nfunction countDistinctAttributes(values: readonly string[] | null | undefined): number | null {\n if (!Array.isArray(values)) return null;\n return new Set(\n values\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim().toLocaleLowerCase())\n .filter((value) => value.length > 0),\n ).size;\n}\n\nfunction buildOptionalToolNameSet(values: readonly unknown[] | null | undefined): Set<string> | null {\n const toolNames = normalizeOptionalStringList(values);\n return toolNames === null || toolNames.length === 0 ? null : new Set(toolNames);\n}\n\nfunction orderToolNamesByAvailableCatalog(\n toolNames: string[],\n availableToolNames: readonly unknown[] | null | undefined,\n): string[] {\n const availableOrder = normalizeOptionalStringList(availableToolNames);\n if (!availableOrder?.length) return toolNames;\n const toolNameSet = new Set(toolNames);\n const ordered = availableOrder.filter((toolName) => toolNameSet.has(toolName));\n return uniqueStrings([\n ...ordered,\n ...toolNames.filter((toolName) => !ordered.includes(toolName)),\n ]);\n}\n\nexport function buildAssistantWorkflowToolSelectionAuthority(\n input: AssistantWorkflowToolSelectionAuthorityInput,\n): AssistantWorkflowToolSelectionAuthority {\n const selectedToolNames = uniqueStrings(input.selectedToolNames);\n const workflowSuggestedToolNames = uniqueStrings(input.workflowSuggestedToolNames ?? []);\n const workflowSelectionCandidateToolNames = uniqueStrings(input.workflowSelectionCandidateToolNames ?? []);\n const workflowStatus = normalizeNullableString(input.workflowStatus);\n const comparableWorkflowToolNames = workflowSelectionCandidateToolNames.length > 0\n ? workflowSelectionCandidateToolNames\n : workflowSuggestedToolNames;\n\n if (!input.workflowAvailable) {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_unavailable\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus: null,\n };\n }\n\n if (workflowStatus === \"blocked\" || workflowStatus === \"needs-clarification\") {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_blocked\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (input.workflowAuthorityEnabled && comparableWorkflowToolNames.length > 0) {\n return {\n source: \"workflow\",\n reason: sameStringSet(selectedToolNames, comparableWorkflowToolNames)\n ? \"workflow_equivalent\"\n : \"workflow_authority_enabled\",\n selectedToolNames: comparableWorkflowToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (input.selectionExercised === false) {\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_selection_not_exercised\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n if (comparableWorkflowToolNames.length > 0 && sameStringSet(selectedToolNames, comparableWorkflowToolNames)) {\n return {\n source: \"workflow\",\n reason: \"workflow_equivalent\",\n selectedToolNames: comparableWorkflowToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n }\n\n return {\n source: \"legacy-pruner\",\n reason: \"workflow_differs\",\n selectedToolNames,\n workflowSuggestedToolNames,\n workflowStatus,\n };\n}\n\nexport function buildAssistantWorkflowToolSelectionSegmentKey(input: {\n intentId: string | null;\n hop: number | null;\n selectedReason: string | null;\n}): string {\n return `${normalizeNullableString(input.intentId) ?? \"unknown\"}|hop:${input.hop ?? \"unknown\"}|${\n normalizeNullableString(input.selectedReason) ?? \"unknown\"\n }`;\n}\n\n/**\n * Exact active profile combinations are authority scopes. A single profile can\n * be safe in one combination and unsafe in another, so profile ids are sorted\n * and retained together with the intent.\n */\nexport function buildAssistantWorkflowToolSelectionProfileKey(input: {\n intentId: string | null;\n profileIds: readonly unknown[] | null | undefined;\n}): string | null {\n const intentId = normalizeNullableString(input.intentId);\n const profileIds = uniqueStrings(input.profileIds ?? []).sort((left, right) => left.localeCompare(right));\n if (!intentId || !profileIds.length) return null;\n return `${intentId}|profiles:${profileIds.join(\",\")}`;\n}\n\nfunction uniqueStrings(values: readonly unknown[]): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const trimmed = value.trim();\n if (!trimmed.length || seen.has(trimmed)) continue;\n seen.add(trimmed);\n out.push(trimmed);\n }\n return out;\n}\n\nfunction applyWorkflowAuthorityIntentGate(\n authority: AssistantWorkflowToolSelectionAuthority,\n input: AssistantWorkflowToolSelectionDecisionInput,\n comparisonPayload: Record<string, unknown> | null,\n): AssistantWorkflowToolSelectionAuthority {\n const enabledIntentIds = normalizeOptionalStringList(input.workflowAuthorityIntentIds);\n const enabledSegmentKeys = normalizeOptionalStringList(input.workflowAuthoritySegmentKeys);\n const enabledProfileKeys = normalizeOptionalStringList(input.workflowAuthorityProfileKeys);\n if (enabledIntentIds === null && enabledSegmentKeys === null && enabledProfileKeys === null) return authority;\n if (authority.source !== \"workflow\") return authority;\n const intentId = normalizeNullableString(input.classification?.intent);\n if (intentId && enabledIntentIds?.includes(intentId)) return authority;\n const segmentKey = buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: intentId ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n });\n if (enabledSegmentKeys?.includes(segmentKey)) return authority;\n const profileKey = comparisonPayload\n ? normalizeNullableString(comparisonPayload[\"workflowAuthorityProfileKey\"])\n : null;\n if (profileKey && enabledProfileKeys?.includes(profileKey)) return authority;\n\n return {\n ...authority,\n source: \"legacy-pruner\",\n reason: \"workflow_authority_not_enabled\",\n };\n}\n\nfunction isWorkflowAuthorityEnabled(\n input: AssistantWorkflowToolSelectionDecisionInput,\n comparisonPayload: Record<string, unknown>,\n): boolean {\n const enabledIntentIds = normalizeOptionalStringList(input.workflowAuthorityIntentIds);\n const enabledSegmentKeys = normalizeOptionalStringList(input.workflowAuthoritySegmentKeys);\n const enabledProfileKeys = normalizeOptionalStringList(input.workflowAuthorityProfileKeys);\n if (enabledIntentIds === null && enabledSegmentKeys === null && enabledProfileKeys === null) return false;\n const intentId = normalizeNullableString(input.classification?.intent);\n if (intentId && enabledIntentIds?.includes(intentId)) return true;\n const segmentKey = buildAssistantWorkflowToolSelectionSegmentKey({\n intentId: intentId ?? \"unknown\",\n hop: input.hop ?? null,\n selectedReason: input.selectedReason ?? null,\n });\n if (enabledSegmentKeys?.includes(segmentKey)) return true;\n const profileKey = normalizeNullableString(comparisonPayload[\"workflowAuthorityProfileKey\"]);\n return profileKey !== null && (enabledProfileKeys?.includes(profileKey) ?? false);\n}\n\nfunction normalizeOptionalStringList(values: readonly unknown[] | null | undefined): string[] | null {\n if (values === null || values === undefined) return null;\n return uniqueStrings(values);\n}\n\nfunction readWorkflowStatus(payload: Record<string, unknown>): string | null {\n const workflowRun = isRecord(payload[\"workflowRun\"]) ? payload[\"workflowRun\"] : null;\n return normalizeNullableString(workflowRun?.[\"status\"]);\n}\n\nfunction sameStringSet(left: readonly string[], right: readonly string[]): boolean {\n if (left.length !== right.length) return false;\n const rightSet = new Set(right);\n return left.every((item) => rightSet.has(item));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
package/package.json
CHANGED