@uns-kit/assistant-workflow 2.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/clarification-policy.d.ts +64 -0
  4. package/dist/clarification-policy.d.ts.map +1 -0
  5. package/dist/clarification-policy.js +174 -0
  6. package/dist/clarification-policy.js.map +1 -0
  7. package/dist/decision.d.ts +37 -0
  8. package/dist/decision.d.ts.map +1 -0
  9. package/dist/decision.js +100 -0
  10. package/dist/decision.js.map +1 -0
  11. package/dist/definition-catalog-replay.d.ts +25 -0
  12. package/dist/definition-catalog-replay.d.ts.map +1 -0
  13. package/dist/definition-catalog-replay.js +54 -0
  14. package/dist/definition-catalog-replay.js.map +1 -0
  15. package/dist/definition-catalog.d.ts +45 -0
  16. package/dist/definition-catalog.d.ts.map +1 -0
  17. package/dist/definition-catalog.js +97 -0
  18. package/dist/definition-catalog.js.map +1 -0
  19. package/dist/definition-diagnostics.d.ts +17 -0
  20. package/dist/definition-diagnostics.d.ts.map +1 -0
  21. package/dist/definition-diagnostics.js +353 -0
  22. package/dist/definition-diagnostics.js.map +1 -0
  23. package/dist/definition-diff.d.ts +51 -0
  24. package/dist/definition-diff.d.ts.map +1 -0
  25. package/dist/definition-diff.js +172 -0
  26. package/dist/definition-diff.js.map +1 -0
  27. package/dist/definition-json.d.ts +53 -0
  28. package/dist/definition-json.d.ts.map +1 -0
  29. package/dist/definition-json.js +186 -0
  30. package/dist/definition-json.js.map +1 -0
  31. package/dist/definition-manifest.d.ts +41 -0
  32. package/dist/definition-manifest.d.ts.map +1 -0
  33. package/dist/definition-manifest.js +119 -0
  34. package/dist/definition-manifest.js.map +1 -0
  35. package/dist/definition-package-execution-json.d.ts +64 -0
  36. package/dist/definition-package-execution-json.d.ts.map +1 -0
  37. package/dist/definition-package-execution-json.js +245 -0
  38. package/dist/definition-package-execution-json.js.map +1 -0
  39. package/dist/definition-package-execution-replay.d.ts +14 -0
  40. package/dist/definition-package-execution-replay.d.ts.map +1 -0
  41. package/dist/definition-package-execution-replay.js +47 -0
  42. package/dist/definition-package-execution-replay.js.map +1 -0
  43. package/dist/definition-package-executor.d.ts +52 -0
  44. package/dist/definition-package-executor.d.ts.map +1 -0
  45. package/dist/definition-package-executor.js +70 -0
  46. package/dist/definition-package-executor.js.map +1 -0
  47. package/dist/definition-package-loader.d.ts +36 -0
  48. package/dist/definition-package-loader.d.ts.map +1 -0
  49. package/dist/definition-package-loader.js +56 -0
  50. package/dist/definition-package-loader.js.map +1 -0
  51. package/dist/definition-package-replay.d.ts +28 -0
  52. package/dist/definition-package-replay.d.ts.map +1 -0
  53. package/dist/definition-package-replay.js +74 -0
  54. package/dist/definition-package-replay.js.map +1 -0
  55. package/dist/definition-package-resolver.d.ts +31 -0
  56. package/dist/definition-package-resolver.d.ts.map +1 -0
  57. package/dist/definition-package-resolver.js +60 -0
  58. package/dist/definition-package-resolver.js.map +1 -0
  59. package/dist/definition-package-review.d.ts +29 -0
  60. package/dist/definition-package-review.d.ts.map +1 -0
  61. package/dist/definition-package-review.js +74 -0
  62. package/dist/definition-package-review.js.map +1 -0
  63. package/dist/definition-package-run-report.d.ts +25 -0
  64. package/dist/definition-package-run-report.d.ts.map +1 -0
  65. package/dist/definition-package-run-report.js +37 -0
  66. package/dist/definition-package-run-report.js.map +1 -0
  67. package/dist/definition-package-run.d.ts +20 -0
  68. package/dist/definition-package-run.d.ts.map +1 -0
  69. package/dist/definition-package-run.js +41 -0
  70. package/dist/definition-package-run.js.map +1 -0
  71. package/dist/definition-package-selection.d.ts +29 -0
  72. package/dist/definition-package-selection.d.ts.map +1 -0
  73. package/dist/definition-package-selection.js +68 -0
  74. package/dist/definition-package-selection.js.map +1 -0
  75. package/dist/definition-package-smoke.d.ts +74 -0
  76. package/dist/definition-package-smoke.d.ts.map +1 -0
  77. package/dist/definition-package-smoke.js +184 -0
  78. package/dist/definition-package-smoke.js.map +1 -0
  79. package/dist/definition-package.d.ts +36 -0
  80. package/dist/definition-package.d.ts.map +1 -0
  81. package/dist/definition-package.js +114 -0
  82. package/dist/definition-package.js.map +1 -0
  83. package/dist/definition-tuning-approval.d.ts +39 -0
  84. package/dist/definition-tuning-approval.d.ts.map +1 -0
  85. package/dist/definition-tuning-approval.js +207 -0
  86. package/dist/definition-tuning-approval.js.map +1 -0
  87. package/dist/definition-tuning-json.d.ts +58 -0
  88. package/dist/definition-tuning-json.d.ts.map +1 -0
  89. package/dist/definition-tuning-json.js +276 -0
  90. package/dist/definition-tuning-json.js.map +1 -0
  91. package/dist/definition-tuning-promotion.d.ts +120 -0
  92. package/dist/definition-tuning-promotion.d.ts.map +1 -0
  93. package/dist/definition-tuning-promotion.js +460 -0
  94. package/dist/definition-tuning-promotion.js.map +1 -0
  95. package/dist/definition-tuning-replay.d.ts +14 -0
  96. package/dist/definition-tuning-replay.d.ts.map +1 -0
  97. package/dist/definition-tuning-replay.js +50 -0
  98. package/dist/definition-tuning-replay.js.map +1 -0
  99. package/dist/definition-tuning-review-artifact.d.ts +56 -0
  100. package/dist/definition-tuning-review-artifact.d.ts.map +1 -0
  101. package/dist/definition-tuning-review-artifact.js +302 -0
  102. package/dist/definition-tuning-review-artifact.js.map +1 -0
  103. package/dist/definition-tuning-review.d.ts +59 -0
  104. package/dist/definition-tuning-review.d.ts.map +1 -0
  105. package/dist/definition-tuning-review.js +213 -0
  106. package/dist/definition-tuning-review.js.map +1 -0
  107. package/dist/definition-tuning-source-patch.d.ts +43 -0
  108. package/dist/definition-tuning-source-patch.d.ts.map +1 -0
  109. package/dist/definition-tuning-source-patch.js +214 -0
  110. package/dist/definition-tuning-source-patch.js.map +1 -0
  111. package/dist/definition-tuning.d.ts +73 -0
  112. package/dist/definition-tuning.d.ts.map +1 -0
  113. package/dist/definition-tuning.js +426 -0
  114. package/dist/definition-tuning.js.map +1 -0
  115. package/dist/definition.d.ts +189 -0
  116. package/dist/definition.d.ts.map +1 -0
  117. package/dist/definition.js +494 -0
  118. package/dist/definition.js.map +1 -0
  119. package/dist/direct-route-invocation.d.ts +132 -0
  120. package/dist/direct-route-invocation.d.ts.map +1 -0
  121. package/dist/direct-route-invocation.js +325 -0
  122. package/dist/direct-route-invocation.js.map +1 -0
  123. package/dist/direct-route-policy.d.ts +25 -0
  124. package/dist/direct-route-policy.d.ts.map +1 -0
  125. package/dist/direct-route-policy.js +106 -0
  126. package/dist/direct-route-policy.js.map +1 -0
  127. package/dist/eval-case.d.ts +85 -0
  128. package/dist/eval-case.d.ts.map +1 -0
  129. package/dist/eval-case.js +366 -0
  130. package/dist/eval-case.js.map +1 -0
  131. package/dist/eval-replay.d.ts +18 -0
  132. package/dist/eval-replay.d.ts.map +1 -0
  133. package/dist/eval-replay.js +41 -0
  134. package/dist/eval-replay.js.map +1 -0
  135. package/dist/eval-result.d.ts +46 -0
  136. package/dist/eval-result.d.ts.map +1 -0
  137. package/dist/eval-result.js +183 -0
  138. package/dist/eval-result.js.map +1 -0
  139. package/dist/eval-runner.d.ts +30 -0
  140. package/dist/eval-runner.d.ts.map +1 -0
  141. package/dist/eval-runner.js +57 -0
  142. package/dist/eval-runner.js.map +1 -0
  143. package/dist/eval-suite.d.ts +43 -0
  144. package/dist/eval-suite.d.ts.map +1 -0
  145. package/dist/eval-suite.js +101 -0
  146. package/dist/eval-suite.js.map +1 -0
  147. package/dist/execution-plan.d.ts +43 -0
  148. package/dist/execution-plan.d.ts.map +1 -0
  149. package/dist/execution-plan.js +187 -0
  150. package/dist/execution-plan.js.map +1 -0
  151. package/dist/hosted-tool-policy.d.ts +70 -0
  152. package/dist/hosted-tool-policy.d.ts.map +1 -0
  153. package/dist/hosted-tool-policy.js +228 -0
  154. package/dist/hosted-tool-policy.js.map +1 -0
  155. package/dist/index.d.ts +73 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +73 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/memory-policy.d.ts +55 -0
  160. package/dist/memory-policy.d.ts.map +1 -0
  161. package/dist/memory-policy.js +187 -0
  162. package/dist/memory-policy.js.map +1 -0
  163. package/dist/memory-updates.d.ts +39 -0
  164. package/dist/memory-updates.d.ts.map +1 -0
  165. package/dist/memory-updates.js +110 -0
  166. package/dist/memory-updates.js.map +1 -0
  167. package/dist/outcome-trace.d.ts +79 -0
  168. package/dist/outcome-trace.d.ts.map +1 -0
  169. package/dist/outcome-trace.js +117 -0
  170. package/dist/outcome-trace.js.map +1 -0
  171. package/dist/outcome.d.ts +97 -0
  172. package/dist/outcome.d.ts.map +1 -0
  173. package/dist/outcome.js +160 -0
  174. package/dist/outcome.js.map +1 -0
  175. package/dist/planner-compiler.d.ts +14 -0
  176. package/dist/planner-compiler.d.ts.map +1 -0
  177. package/dist/planner-compiler.js +26 -0
  178. package/dist/planner-compiler.js.map +1 -0
  179. package/dist/planning.d.ts +36 -0
  180. package/dist/planning.d.ts.map +1 -0
  181. package/dist/planning.js +141 -0
  182. package/dist/planning.js.map +1 -0
  183. package/dist/policy-resolution.d.ts +10 -0
  184. package/dist/policy-resolution.d.ts.map +1 -0
  185. package/dist/policy-resolution.js +30 -0
  186. package/dist/policy-resolution.js.map +1 -0
  187. package/dist/run-evaluation.d.ts +29 -0
  188. package/dist/run-evaluation.d.ts.map +1 -0
  189. package/dist/run-evaluation.js +128 -0
  190. package/dist/run-evaluation.js.map +1 -0
  191. package/dist/run-parity.d.ts +24 -0
  192. package/dist/run-parity.d.ts.map +1 -0
  193. package/dist/run-parity.js +36 -0
  194. package/dist/run-parity.js.map +1 -0
  195. package/dist/run-report-batch.d.ts +150 -0
  196. package/dist/run-report-batch.d.ts.map +1 -0
  197. package/dist/run-report-batch.js +391 -0
  198. package/dist/run-report-batch.js.map +1 -0
  199. package/dist/run-report-json.d.ts +76 -0
  200. package/dist/run-report-json.d.ts.map +1 -0
  201. package/dist/run-report-json.js +451 -0
  202. package/dist/run-report-json.js.map +1 -0
  203. package/dist/run-report.d.ts +22 -0
  204. package/dist/run-report.d.ts.map +1 -0
  205. package/dist/run-report.js +46 -0
  206. package/dist/run-report.js.map +1 -0
  207. package/dist/run.d.ts +20 -0
  208. package/dist/run.d.ts.map +1 -0
  209. package/dist/run.js +36 -0
  210. package/dist/run.js.map +1 -0
  211. package/dist/tool-bindings.d.ts +42 -0
  212. package/dist/tool-bindings.d.ts.map +1 -0
  213. package/dist/tool-bindings.js +124 -0
  214. package/dist/tool-bindings.js.map +1 -0
  215. package/dist/tool-capabilities.d.ts +37 -0
  216. package/dist/tool-capabilities.d.ts.map +1 -0
  217. package/dist/tool-capabilities.js +91 -0
  218. package/dist/tool-capabilities.js.map +1 -0
  219. package/dist/tool-executor.d.ts +63 -0
  220. package/dist/tool-executor.d.ts.map +1 -0
  221. package/dist/tool-executor.js +176 -0
  222. package/dist/tool-executor.js.map +1 -0
  223. package/dist/tool-fixtures.d.ts +18 -0
  224. package/dist/tool-fixtures.d.ts.map +1 -0
  225. package/dist/tool-fixtures.js +52 -0
  226. package/dist/tool-fixtures.js.map +1 -0
  227. package/dist/tool-invocations.d.ts +31 -0
  228. package/dist/tool-invocations.d.ts.map +1 -0
  229. package/dist/tool-invocations.js +79 -0
  230. package/dist/tool-invocations.js.map +1 -0
  231. package/dist/tool-provider-executors.d.ts +43 -0
  232. package/dist/tool-provider-executors.d.ts.map +1 -0
  233. package/dist/tool-provider-executors.js +59 -0
  234. package/dist/tool-provider-executors.js.map +1 -0
  235. package/dist/tool-result-cache.d.ts +37 -0
  236. package/dist/tool-result-cache.d.ts.map +1 -0
  237. package/dist/tool-result-cache.js +173 -0
  238. package/dist/tool-result-cache.js.map +1 -0
  239. package/dist/tool-results.d.ts +41 -0
  240. package/dist/tool-results.d.ts.map +1 -0
  241. package/dist/tool-results.js +137 -0
  242. package/dist/tool-results.js.map +1 -0
  243. package/dist/tool-runtime.d.ts +46 -0
  244. package/dist/tool-runtime.d.ts.map +1 -0
  245. package/dist/tool-runtime.js +163 -0
  246. package/dist/tool-runtime.js.map +1 -0
  247. package/dist/tool-selection-evaluation.d.ts +214 -0
  248. package/dist/tool-selection-evaluation.d.ts.map +1 -0
  249. package/dist/tool-selection-evaluation.js +773 -0
  250. package/dist/tool-selection-evaluation.js.map +1 -0
  251. package/dist/tool-selection-json.d.ts +71 -0
  252. package/dist/tool-selection-json.d.ts.map +1 -0
  253. package/dist/tool-selection-json.js +284 -0
  254. package/dist/tool-selection-json.js.map +1 -0
  255. package/dist/tool-selection-policy.d.ts +81 -0
  256. package/dist/tool-selection-policy.d.ts.map +1 -0
  257. package/dist/tool-selection-policy.js +376 -0
  258. package/dist/tool-selection-policy.js.map +1 -0
  259. package/dist/tool-selection-replay.d.ts +26 -0
  260. package/dist/tool-selection-replay.d.ts.map +1 -0
  261. package/dist/tool-selection-replay.js +88 -0
  262. package/dist/tool-selection-replay.js.map +1 -0
  263. package/dist/tool-selection-rules.d.ts +46 -0
  264. package/dist/tool-selection-rules.d.ts.map +1 -0
  265. package/dist/tool-selection-rules.js +183 -0
  266. package/dist/tool-selection-rules.js.map +1 -0
  267. package/dist/tool-selection-trace-export.d.ts +37 -0
  268. package/dist/tool-selection-trace-export.d.ts.map +1 -0
  269. package/dist/tool-selection-trace-export.js +324 -0
  270. package/dist/tool-selection-trace-export.js.map +1 -0
  271. package/dist/trace-events.d.ts +14 -0
  272. package/dist/trace-events.d.ts.map +1 -0
  273. package/dist/trace-events.js +65 -0
  274. package/dist/trace-events.js.map +1 -0
  275. package/dist/trace-payload.d.ts +24 -0
  276. package/dist/trace-payload.d.ts.map +1 -0
  277. package/dist/trace-payload.js +113 -0
  278. package/dist/trace-payload.js.map +1 -0
  279. package/dist/trace-replay.d.ts +276 -0
  280. package/dist/trace-replay.d.ts.map +1 -0
  281. package/dist/trace-replay.js +685 -0
  282. package/dist/trace-replay.js.map +1 -0
  283. package/dist/trace-report.d.ts +320 -0
  284. package/dist/trace-report.d.ts.map +1 -0
  285. package/dist/trace-report.js +1394 -0
  286. package/dist/trace-report.js.map +1 -0
  287. package/dist/trace-stages.d.ts +70 -0
  288. package/dist/trace-stages.d.ts.map +1 -0
  289. package/dist/trace-stages.js +103 -0
  290. package/dist/trace-stages.js.map +1 -0
  291. package/dist/value-readers.d.ts +20 -0
  292. package/dist/value-readers.d.ts.map +1 -0
  293. package/dist/value-readers.js +82 -0
  294. package/dist/value-readers.js.map +1 -0
  295. package/package.json +341 -0
@@ -0,0 +1,97 @@
1
+ export type AssistantWorkflowOutcome = AssistantWorkflowNotHandledOutcome | AssistantWorkflowFinalTextOutcome | AssistantWorkflowClarificationOutcome | AssistantWorkflowStructuredArtifactOutcome | AssistantWorkflowUnavailableOutcome | AssistantWorkflowDirectRouteOutcome | AssistantWorkflowDegradedOutcome;
2
+ export type AssistantWorkflowOutcomeKind = AssistantWorkflowOutcome["kind"];
3
+ export type AssistantWorkflowOutcomeDelivery = "stream" | "return";
4
+ export type AssistantWorkflowNotHandledOutcome = {
5
+ kind: "not_handled";
6
+ reason?: string;
7
+ };
8
+ export type AssistantWorkflowFinalTextOutcome = {
9
+ kind: "final_text";
10
+ content: string;
11
+ delivery?: AssistantWorkflowOutcomeDelivery;
12
+ };
13
+ export type AssistantWorkflowClarificationOutcome = {
14
+ kind: "clarification";
15
+ content: string;
16
+ ruleId?: string;
17
+ };
18
+ export type AssistantWorkflowStructuredArtifactOutcome = {
19
+ kind: "structured_artifact";
20
+ artifactKind: string;
21
+ payload: unknown;
22
+ content?: string;
23
+ };
24
+ /**
25
+ * A requested structured artifact cannot be produced from the available
26
+ * runtime evidence. The reason is application-defined but must come from a
27
+ * typed execution result, never inferred from final-answer prose.
28
+ */
29
+ export type AssistantWorkflowUnavailableOutcome = {
30
+ kind: "unavailable";
31
+ artifactKind: string;
32
+ reason: string;
33
+ content?: string;
34
+ };
35
+ export type AssistantWorkflowDirectRouteOutcome = {
36
+ kind: "direct_route";
37
+ route: string;
38
+ content?: string;
39
+ payload?: unknown;
40
+ artifactKind?: string;
41
+ reason?: string;
42
+ delivery?: AssistantWorkflowOutcomeDelivery;
43
+ };
44
+ export type AssistantWorkflowDirectRouteOutcomeOptions = {
45
+ content?: string;
46
+ payload?: unknown;
47
+ artifactKind?: string;
48
+ reason?: string;
49
+ delivery?: AssistantWorkflowOutcomeDelivery;
50
+ };
51
+ export type AssistantWorkflowDirectRouteOutcomeRouteSource = {
52
+ outcomeRoute?: string | null;
53
+ routeId?: string | null;
54
+ };
55
+ export type AssistantWorkflowDirectRouteInvocationOutcomeOptions = AssistantWorkflowDirectRouteOutcomeOptions & {
56
+ fallbackRoute?: string | null;
57
+ };
58
+ export type AssistantWorkflowDirectRouteInvocationNotHandledOptions = {
59
+ reason?: string;
60
+ fallbackRoute?: string | null;
61
+ };
62
+ export type AssistantWorkflowDegradedOutcome = {
63
+ kind: "degraded";
64
+ content: string;
65
+ reason: string;
66
+ };
67
+ export type AssistantWorkflowOutcomeSummary = {
68
+ kind: AssistantWorkflowOutcomeKind;
69
+ handled: boolean;
70
+ contentChars: number;
71
+ reason: string | null;
72
+ delivery: AssistantWorkflowOutcomeDelivery | null;
73
+ artifactKind: string | null;
74
+ route: string | null;
75
+ };
76
+ export type AssistantWorkflowOutcomeTraceEventPayloadInput = {
77
+ outcome: AssistantWorkflowOutcome;
78
+ source?: string;
79
+ layer?: string;
80
+ skipEvent?: string | null;
81
+ metadata?: Record<string, unknown>;
82
+ };
83
+ export declare function assistantWorkflowNotHandled(reason?: string): AssistantWorkflowNotHandledOutcome;
84
+ export declare function assistantWorkflowFinalText(content: string, delivery?: AssistantWorkflowOutcomeDelivery): AssistantWorkflowFinalTextOutcome;
85
+ export declare function assistantWorkflowClarification(content: string, ruleId?: string): AssistantWorkflowClarificationOutcome;
86
+ export declare function assistantWorkflowStructuredArtifact(artifactKind: string, payload: unknown, content?: string): AssistantWorkflowStructuredArtifactOutcome;
87
+ export declare function assistantWorkflowUnavailable(artifactKind: string, reason: string, content?: string): AssistantWorkflowUnavailableOutcome;
88
+ export declare function assistantWorkflowDirectRoute(route: string, options?: AssistantWorkflowDirectRouteOutcomeOptions): AssistantWorkflowDirectRouteOutcome;
89
+ export declare function getAssistantWorkflowDirectRouteOutcomeRoute(source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined, fallbackRoute?: string | null): string;
90
+ export declare function assistantWorkflowDirectRouteFromInvocation(source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined, options?: AssistantWorkflowDirectRouteInvocationOutcomeOptions): AssistantWorkflowDirectRouteOutcome;
91
+ export declare function assistantWorkflowDirectRouteNotHandledFromInvocation(source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined, options?: AssistantWorkflowDirectRouteInvocationNotHandledOptions): AssistantWorkflowNotHandledOutcome;
92
+ export declare function assistantWorkflowDegraded(content: string, reason: string): AssistantWorkflowDegradedOutcome;
93
+ export declare function isAssistantWorkflowHandledOutcome(outcome: AssistantWorkflowOutcome | null | undefined): boolean;
94
+ export declare function summarizeAssistantWorkflowOutcome(outcome: AssistantWorkflowOutcome): AssistantWorkflowOutcomeSummary;
95
+ export declare function buildAssistantWorkflowOutcomeTracePayload(outcome: AssistantWorkflowOutcome): Record<string, unknown>;
96
+ export declare function buildAssistantWorkflowOutcomeTraceEventPayload(input: AssistantWorkflowOutcomeTraceEventPayloadInput): Record<string, unknown>;
97
+ //# sourceMappingURL=outcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ export function assistantWorkflowNotHandled(reason) {
2
+ const normalizedReason = normalizeOptionalString(reason);
3
+ return normalizedReason ? { kind: "not_handled", reason: normalizedReason } : { kind: "not_handled" };
4
+ }
5
+ export function assistantWorkflowFinalText(content, delivery) {
6
+ return {
7
+ kind: "final_text",
8
+ content,
9
+ ...(delivery ? { delivery } : {}),
10
+ };
11
+ }
12
+ export function assistantWorkflowClarification(content, ruleId) {
13
+ const normalizedRuleId = normalizeOptionalString(ruleId);
14
+ return {
15
+ kind: "clarification",
16
+ content,
17
+ ...(normalizedRuleId ? { ruleId: normalizedRuleId } : {}),
18
+ };
19
+ }
20
+ export function assistantWorkflowStructuredArtifact(artifactKind, payload, content) {
21
+ const normalizedArtifactKind = normalizeRequiredString(artifactKind, "artifactKind");
22
+ const normalizedContent = normalizeOptionalString(content);
23
+ return {
24
+ kind: "structured_artifact",
25
+ artifactKind: normalizedArtifactKind,
26
+ payload,
27
+ ...(normalizedContent ? { content: normalizedContent } : {}),
28
+ };
29
+ }
30
+ export function assistantWorkflowUnavailable(artifactKind, reason, content) {
31
+ const normalizedArtifactKind = normalizeRequiredString(artifactKind, "artifactKind");
32
+ const normalizedReason = normalizeRequiredString(reason, "reason");
33
+ const normalizedContent = normalizeOptionalString(content);
34
+ return {
35
+ kind: "unavailable",
36
+ artifactKind: normalizedArtifactKind,
37
+ reason: normalizedReason,
38
+ ...(normalizedContent ? { content: normalizedContent } : {}),
39
+ };
40
+ }
41
+ export function assistantWorkflowDirectRoute(route, options = {}) {
42
+ const normalizedRoute = normalizeRequiredString(route, "route");
43
+ const normalizedContent = normalizeOptionalString(options.content);
44
+ const normalizedArtifactKind = normalizeOptionalString(options.artifactKind);
45
+ const normalizedReason = normalizeOptionalString(options.reason);
46
+ return {
47
+ kind: "direct_route",
48
+ route: normalizedRoute,
49
+ ...(normalizedContent ? { content: normalizedContent } : {}),
50
+ ...(options.payload !== undefined ? { payload: options.payload } : {}),
51
+ ...(normalizedArtifactKind ? { artifactKind: normalizedArtifactKind } : {}),
52
+ ...(normalizedReason ? { reason: normalizedReason } : {}),
53
+ ...(options.delivery ? { delivery: options.delivery } : {}),
54
+ };
55
+ }
56
+ export function getAssistantWorkflowDirectRouteOutcomeRoute(source, fallbackRoute) {
57
+ const route = normalizeOptionalString(source?.outcomeRoute) ??
58
+ normalizeOptionalString(source?.routeId) ??
59
+ normalizeOptionalString(fallbackRoute);
60
+ if (!route) {
61
+ throw new Error("Assistant workflow direct route outcome route is required.");
62
+ }
63
+ return route;
64
+ }
65
+ export function assistantWorkflowDirectRouteFromInvocation(source, options = {}) {
66
+ const { fallbackRoute, ...outcomeOptions } = options;
67
+ return assistantWorkflowDirectRoute(getAssistantWorkflowDirectRouteOutcomeRoute(source, fallbackRoute), outcomeOptions);
68
+ }
69
+ export function assistantWorkflowDirectRouteNotHandledFromInvocation(source, options = {}) {
70
+ const reason = normalizeOptionalString(options.reason);
71
+ if (reason)
72
+ return assistantWorkflowNotHandled(reason);
73
+ const route = getAssistantWorkflowDirectRouteOutcomeRoute(source, options.fallbackRoute);
74
+ return assistantWorkflowNotHandled(`${route}:not_handled`);
75
+ }
76
+ export function assistantWorkflowDegraded(content, reason) {
77
+ return {
78
+ kind: "degraded",
79
+ content,
80
+ reason: normalizeRequiredString(reason, "reason"),
81
+ };
82
+ }
83
+ export function isAssistantWorkflowHandledOutcome(outcome) {
84
+ return outcome !== null && outcome !== undefined && outcome.kind !== "not_handled";
85
+ }
86
+ export function summarizeAssistantWorkflowOutcome(outcome) {
87
+ return {
88
+ kind: outcome.kind,
89
+ handled: outcome.kind !== "not_handled",
90
+ contentChars: getOutcomeContent(outcome).length,
91
+ reason: getOutcomeReason(outcome),
92
+ delivery: outcome.kind === "final_text" || outcome.kind === "direct_route"
93
+ ? outcome.delivery ?? null
94
+ : null,
95
+ artifactKind: outcome.kind === "structured_artifact" || outcome.kind === "unavailable"
96
+ ? outcome.artifactKind
97
+ : outcome.kind === "direct_route"
98
+ ? outcome.artifactKind ?? null
99
+ : null,
100
+ route: outcome.kind === "direct_route" ? outcome.route : null,
101
+ };
102
+ }
103
+ export function buildAssistantWorkflowOutcomeTracePayload(outcome) {
104
+ return summarizeAssistantWorkflowOutcome(outcome);
105
+ }
106
+ export function buildAssistantWorkflowOutcomeTraceEventPayload(input) {
107
+ return {
108
+ ...(input.source !== undefined ? { source: input.source } : {}),
109
+ ...(input.layer !== undefined ? { layer: input.layer } : {}),
110
+ ...(input.skipEvent !== undefined ? { skipEvent: input.skipEvent } : {}),
111
+ ...(input.metadata ?? {}),
112
+ ...buildAssistantWorkflowOutcomeTracePayload(input.outcome),
113
+ };
114
+ }
115
+ function getOutcomeContent(outcome) {
116
+ switch (outcome.kind) {
117
+ case "final_text":
118
+ case "clarification":
119
+ case "degraded":
120
+ return outcome.content;
121
+ case "structured_artifact":
122
+ case "unavailable":
123
+ return outcome.content ?? "";
124
+ case "direct_route":
125
+ return outcome.content ?? "";
126
+ case "not_handled":
127
+ return "";
128
+ }
129
+ }
130
+ function getOutcomeReason(outcome) {
131
+ switch (outcome.kind) {
132
+ case "not_handled":
133
+ return outcome.reason ?? null;
134
+ case "clarification":
135
+ return outcome.ruleId ?? null;
136
+ case "degraded":
137
+ return outcome.reason;
138
+ case "unavailable":
139
+ return outcome.reason;
140
+ case "direct_route":
141
+ return outcome.reason ?? null;
142
+ case "final_text":
143
+ case "structured_artifact":
144
+ return null;
145
+ }
146
+ }
147
+ function normalizeOptionalString(value) {
148
+ if (value === undefined || value === null)
149
+ return null;
150
+ const trimmed = value.trim();
151
+ return trimmed.length ? trimmed : null;
152
+ }
153
+ function normalizeRequiredString(value, fieldName) {
154
+ const trimmed = value.trim();
155
+ if (!trimmed.length) {
156
+ throw new Error(`Assistant workflow outcome ${fieldName} is required.`);
157
+ }
158
+ return trimmed;
159
+ }
160
+ //# sourceMappingURL=outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.js","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"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","sourcesContent":["export type AssistantWorkflowOutcome =\n | AssistantWorkflowNotHandledOutcome\n | AssistantWorkflowFinalTextOutcome\n | AssistantWorkflowClarificationOutcome\n | AssistantWorkflowStructuredArtifactOutcome\n | AssistantWorkflowUnavailableOutcome\n | AssistantWorkflowDirectRouteOutcome\n | AssistantWorkflowDegradedOutcome;\n\nexport type AssistantWorkflowOutcomeKind = AssistantWorkflowOutcome[\"kind\"];\n\nexport type AssistantWorkflowOutcomeDelivery = \"stream\" | \"return\";\n\nexport type AssistantWorkflowNotHandledOutcome = {\n kind: \"not_handled\";\n reason?: string;\n};\n\nexport type AssistantWorkflowFinalTextOutcome = {\n kind: \"final_text\";\n content: string;\n delivery?: AssistantWorkflowOutcomeDelivery;\n};\n\nexport type AssistantWorkflowClarificationOutcome = {\n kind: \"clarification\";\n content: string;\n ruleId?: string;\n};\n\nexport type AssistantWorkflowStructuredArtifactOutcome = {\n kind: \"structured_artifact\";\n artifactKind: string;\n payload: unknown;\n content?: string;\n};\n\n/**\n * A requested structured artifact cannot be produced from the available\n * runtime evidence. The reason is application-defined but must come from a\n * typed execution result, never inferred from final-answer prose.\n */\nexport type AssistantWorkflowUnavailableOutcome = {\n kind: \"unavailable\";\n artifactKind: string;\n reason: string;\n content?: string;\n};\n\nexport type AssistantWorkflowDirectRouteOutcome = {\n kind: \"direct_route\";\n route: string;\n content?: string;\n payload?: unknown;\n artifactKind?: string;\n reason?: string;\n delivery?: AssistantWorkflowOutcomeDelivery;\n};\n\nexport type AssistantWorkflowDirectRouteOutcomeOptions = {\n content?: string;\n payload?: unknown;\n artifactKind?: string;\n reason?: string;\n delivery?: AssistantWorkflowOutcomeDelivery;\n};\n\nexport type AssistantWorkflowDirectRouteOutcomeRouteSource = {\n outcomeRoute?: string | null;\n routeId?: string | null;\n};\n\nexport type AssistantWorkflowDirectRouteInvocationOutcomeOptions =\n AssistantWorkflowDirectRouteOutcomeOptions & {\n fallbackRoute?: string | null;\n };\n\nexport type AssistantWorkflowDirectRouteInvocationNotHandledOptions = {\n reason?: string;\n fallbackRoute?: string | null;\n};\n\nexport type AssistantWorkflowDegradedOutcome = {\n kind: \"degraded\";\n content: string;\n reason: string;\n};\n\nexport type AssistantWorkflowOutcomeSummary = {\n kind: AssistantWorkflowOutcomeKind;\n handled: boolean;\n contentChars: number;\n reason: string | null;\n delivery: AssistantWorkflowOutcomeDelivery | null;\n artifactKind: string | null;\n route: string | null;\n};\n\nexport type AssistantWorkflowOutcomeTraceEventPayloadInput = {\n outcome: AssistantWorkflowOutcome;\n source?: string;\n layer?: string;\n skipEvent?: string | null;\n metadata?: Record<string, unknown>;\n};\n\nexport function assistantWorkflowNotHandled(reason?: string): AssistantWorkflowNotHandledOutcome {\n const normalizedReason = normalizeOptionalString(reason);\n return normalizedReason ? { kind: \"not_handled\", reason: normalizedReason } : { kind: \"not_handled\" };\n}\n\nexport function assistantWorkflowFinalText(\n content: string,\n delivery?: AssistantWorkflowOutcomeDelivery,\n): AssistantWorkflowFinalTextOutcome {\n return {\n kind: \"final_text\",\n content,\n ...(delivery ? { delivery } : {}),\n };\n}\n\nexport function assistantWorkflowClarification(\n content: string,\n ruleId?: string,\n): AssistantWorkflowClarificationOutcome {\n const normalizedRuleId = normalizeOptionalString(ruleId);\n return {\n kind: \"clarification\",\n content,\n ...(normalizedRuleId ? { ruleId: normalizedRuleId } : {}),\n };\n}\n\nexport function assistantWorkflowStructuredArtifact(\n artifactKind: string,\n payload: unknown,\n content?: string,\n): AssistantWorkflowStructuredArtifactOutcome {\n const normalizedArtifactKind = normalizeRequiredString(artifactKind, \"artifactKind\");\n const normalizedContent = normalizeOptionalString(content);\n return {\n kind: \"structured_artifact\",\n artifactKind: normalizedArtifactKind,\n payload,\n ...(normalizedContent ? { content: normalizedContent } : {}),\n };\n}\n\nexport function assistantWorkflowUnavailable(\n artifactKind: string,\n reason: string,\n content?: string,\n): AssistantWorkflowUnavailableOutcome {\n const normalizedArtifactKind = normalizeRequiredString(artifactKind, \"artifactKind\");\n const normalizedReason = normalizeRequiredString(reason, \"reason\");\n const normalizedContent = normalizeOptionalString(content);\n return {\n kind: \"unavailable\",\n artifactKind: normalizedArtifactKind,\n reason: normalizedReason,\n ...(normalizedContent ? { content: normalizedContent } : {}),\n };\n}\n\nexport function assistantWorkflowDirectRoute(\n route: string,\n options: AssistantWorkflowDirectRouteOutcomeOptions = {},\n): AssistantWorkflowDirectRouteOutcome {\n const normalizedRoute = normalizeRequiredString(route, \"route\");\n const normalizedContent = normalizeOptionalString(options.content);\n const normalizedArtifactKind = normalizeOptionalString(options.artifactKind);\n const normalizedReason = normalizeOptionalString(options.reason);\n return {\n kind: \"direct_route\",\n route: normalizedRoute,\n ...(normalizedContent ? { content: normalizedContent } : {}),\n ...(options.payload !== undefined ? { payload: options.payload } : {}),\n ...(normalizedArtifactKind ? { artifactKind: normalizedArtifactKind } : {}),\n ...(normalizedReason ? { reason: normalizedReason } : {}),\n ...(options.delivery ? { delivery: options.delivery } : {}),\n };\n}\n\nexport function getAssistantWorkflowDirectRouteOutcomeRoute(\n source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined,\n fallbackRoute?: string | null,\n): string {\n const route =\n normalizeOptionalString(source?.outcomeRoute) ??\n normalizeOptionalString(source?.routeId) ??\n normalizeOptionalString(fallbackRoute);\n if (!route) {\n throw new Error(\"Assistant workflow direct route outcome route is required.\");\n }\n return route;\n}\n\nexport function assistantWorkflowDirectRouteFromInvocation(\n source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined,\n options: AssistantWorkflowDirectRouteInvocationOutcomeOptions = {},\n): AssistantWorkflowDirectRouteOutcome {\n const { fallbackRoute, ...outcomeOptions } = options;\n return assistantWorkflowDirectRoute(\n getAssistantWorkflowDirectRouteOutcomeRoute(source, fallbackRoute),\n outcomeOptions,\n );\n}\n\nexport function assistantWorkflowDirectRouteNotHandledFromInvocation(\n source: AssistantWorkflowDirectRouteOutcomeRouteSource | null | undefined,\n options: AssistantWorkflowDirectRouteInvocationNotHandledOptions = {},\n): AssistantWorkflowNotHandledOutcome {\n const reason = normalizeOptionalString(options.reason);\n if (reason) return assistantWorkflowNotHandled(reason);\n const route = getAssistantWorkflowDirectRouteOutcomeRoute(source, options.fallbackRoute);\n return assistantWorkflowNotHandled(`${route}:not_handled`);\n}\n\nexport function assistantWorkflowDegraded(content: string, reason: string): AssistantWorkflowDegradedOutcome {\n return {\n kind: \"degraded\",\n content,\n reason: normalizeRequiredString(reason, \"reason\"),\n };\n}\n\nexport function isAssistantWorkflowHandledOutcome(outcome: AssistantWorkflowOutcome | null | undefined): boolean {\n return outcome !== null && outcome !== undefined && outcome.kind !== \"not_handled\";\n}\n\nexport function summarizeAssistantWorkflowOutcome(\n outcome: AssistantWorkflowOutcome,\n): AssistantWorkflowOutcomeSummary {\n return {\n kind: outcome.kind,\n handled: outcome.kind !== \"not_handled\",\n contentChars: getOutcomeContent(outcome).length,\n reason: getOutcomeReason(outcome),\n delivery: outcome.kind === \"final_text\" || outcome.kind === \"direct_route\"\n ? outcome.delivery ?? null\n : null,\n artifactKind: outcome.kind === \"structured_artifact\" || outcome.kind === \"unavailable\"\n ? outcome.artifactKind\n : outcome.kind === \"direct_route\"\n ? outcome.artifactKind ?? null\n : null,\n route: outcome.kind === \"direct_route\" ? outcome.route : null,\n };\n}\n\nexport function buildAssistantWorkflowOutcomeTracePayload(\n outcome: AssistantWorkflowOutcome,\n): Record<string, unknown> {\n return summarizeAssistantWorkflowOutcome(outcome);\n}\n\nexport function buildAssistantWorkflowOutcomeTraceEventPayload(\n input: AssistantWorkflowOutcomeTraceEventPayloadInput,\n): Record<string, unknown> {\n return {\n ...(input.source !== undefined ? { source: input.source } : {}),\n ...(input.layer !== undefined ? { layer: input.layer } : {}),\n ...(input.skipEvent !== undefined ? { skipEvent: input.skipEvent } : {}),\n ...(input.metadata ?? {}),\n ...buildAssistantWorkflowOutcomeTracePayload(input.outcome),\n };\n}\n\nfunction getOutcomeContent(outcome: AssistantWorkflowOutcome): string {\n switch (outcome.kind) {\n case \"final_text\":\n case \"clarification\":\n case \"degraded\":\n return outcome.content;\n case \"structured_artifact\":\n case \"unavailable\":\n return outcome.content ?? \"\";\n case \"direct_route\":\n return outcome.content ?? \"\";\n case \"not_handled\":\n return \"\";\n }\n}\n\nfunction getOutcomeReason(outcome: AssistantWorkflowOutcome): string | null {\n switch (outcome.kind) {\n case \"not_handled\":\n return outcome.reason ?? null;\n case \"clarification\":\n return outcome.ruleId ?? null;\n case \"degraded\":\n return outcome.reason;\n case \"unavailable\":\n return outcome.reason;\n case \"direct_route\":\n return outcome.reason ?? null;\n case \"final_text\":\n case \"structured_artifact\":\n return null;\n }\n}\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === undefined || value === null) return null;\n const trimmed = value.trim();\n return trimmed.length ? trimmed : null;\n}\n\nfunction normalizeRequiredString(value: string, fieldName: string): string {\n const trimmed = value.trim();\n if (!trimmed.length) {\n throw new Error(`Assistant workflow outcome ${fieldName} is required.`);\n }\n return trimmed;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { type AssistantWorkflowDefinition, type AssistantWorkflowPromptFacts } from "./definition.js";
2
+ export type AssistantWorkflowPlannerPromptFacts = AssistantWorkflowPromptFacts & {
3
+ intentInstructions: string;
4
+ };
5
+ export type AssistantWorkflowPlannerCompilation<TIntent extends string = string, TSubintent extends string = string, TPresentation extends string = string, TDerivedTransform extends string = string> = {
6
+ intentValues: readonly TIntent[];
7
+ subintentValues: readonly TSubintent[];
8
+ presentationValues: readonly TPresentation[];
9
+ derivedTransformValues: readonly TDerivedTransform[];
10
+ promptFacts: AssistantWorkflowPlannerPromptFacts;
11
+ };
12
+ export declare function compileAssistantWorkflowForPlanner<TIntent extends string, TSubintent extends string, TPresentation extends string, TDerivedTransform extends string>(workflow: AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform>): AssistantWorkflowPlannerCompilation<TIntent, TSubintent, TPresentation, TDerivedTransform>;
13
+ export declare function formatAssistantWorkflowIntentInstructions(workflow: AssistantWorkflowDefinition<string, string, string, string>): string;
14
+ //# sourceMappingURL=planner-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-compiler.d.ts","sourceRoot":"","sources":["../src/planner-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,mCAAmC,GAAG,4BAA4B,GAAG;IAC/E,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mCAAmC,CAC7C,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,aAAa,SAAS,MAAM,GAAG,MAAM,EACrC,iBAAiB,SAAS,MAAM,GAAG,MAAM,IACvC;IACF,YAAY,EAAE,SAAS,OAAO,EAAE,CAAC;IACjC,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,kBAAkB,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C,sBAAsB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,WAAW,EAAE,mCAAmC,CAAC;CAClD,CAAC;AAEF,wBAAgB,kCAAkC,CAChD,OAAO,SAAS,MAAM,EACtB,UAAU,SAAS,MAAM,EACzB,aAAa,SAAS,MAAM,EAC5B,iBAAiB,SAAS,MAAM,EAEhC,QAAQ,EAAE,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC,GAC3F,mCAAmC,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAW5F;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACpE,MAAM,CAWR"}
@@ -0,0 +1,26 @@
1
+ import { buildAssistantWorkflowPromptFacts, getAssistantWorkflowDerivedTransformIds, getAssistantWorkflowIntentIds, getAssistantWorkflowPresentationIds, getAssistantWorkflowSubintentIds, } from "./definition.js";
2
+ export function compileAssistantWorkflowForPlanner(workflow) {
3
+ return {
4
+ intentValues: getAssistantWorkflowIntentIds(workflow),
5
+ subintentValues: getAssistantWorkflowSubintentIds(workflow),
6
+ presentationValues: getAssistantWorkflowPresentationIds(workflow),
7
+ derivedTransformValues: getAssistantWorkflowDerivedTransformIds(workflow),
8
+ promptFacts: {
9
+ ...buildAssistantWorkflowPromptFacts(workflow),
10
+ intentInstructions: formatAssistantWorkflowIntentInstructions(workflow),
11
+ },
12
+ };
13
+ }
14
+ export function formatAssistantWorkflowIntentInstructions(workflow) {
15
+ return workflow.intents
16
+ .map((intent) => {
17
+ const parts = [
18
+ `${intent.id} = ${intent.description.trim()}`,
19
+ ...(intent.plannerInstructions ?? []).map((instruction) => instruction.trim()).filter(Boolean),
20
+ ];
21
+ return parts.join(" ");
22
+ })
23
+ .filter((entry) => entry.trim().length > 0)
24
+ .join(" ");
25
+ }
26
+ //# sourceMappingURL=planner-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-compiler.js","sourceRoot":"","sources":["../src/planner-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,uCAAuC,EACvC,6BAA6B,EAC7B,mCAAmC,EACnC,gCAAgC,GAGjC,MAAM,iBAAiB,CAAC;AAmBzB,MAAM,UAAU,kCAAkC,CAMhD,QAA4F;IAE5F,OAAO;QACL,YAAY,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QACrD,eAAe,EAAE,gCAAgC,CAAC,QAAQ,CAAC;QAC3D,kBAAkB,EAAE,mCAAmC,CAAC,QAAQ,CAAC;QACjE,sBAAsB,EAAE,uCAAuC,CAAC,QAAQ,CAAC;QACzE,WAAW,EAAE;YACX,GAAG,iCAAiC,CAAC,QAAQ,CAAC;YAC9C,kBAAkB,EAAE,yCAAyC,CAAC,QAAQ,CAAC;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,QAAqE;IAErE,OAAO,QAAQ,CAAC,OAAO;SACpB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,KAAK,GAAG;YACZ,GAAG,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;YAC7C,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;SAC/F,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC","sourcesContent":["import {\n buildAssistantWorkflowPromptFacts,\n getAssistantWorkflowDerivedTransformIds,\n getAssistantWorkflowIntentIds,\n getAssistantWorkflowPresentationIds,\n getAssistantWorkflowSubintentIds,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowPromptFacts,\n} from \"./definition.js\";\n\nexport type AssistantWorkflowPlannerPromptFacts = AssistantWorkflowPromptFacts & {\n intentInstructions: string;\n};\n\nexport type AssistantWorkflowPlannerCompilation<\n TIntent extends string = string,\n TSubintent extends string = string,\n TPresentation extends string = string,\n TDerivedTransform extends string = string,\n> = {\n intentValues: readonly TIntent[];\n subintentValues: readonly TSubintent[];\n presentationValues: readonly TPresentation[];\n derivedTransformValues: readonly TDerivedTransform[];\n promptFacts: AssistantWorkflowPlannerPromptFacts;\n};\n\nexport function compileAssistantWorkflowForPlanner<\n TIntent extends string,\n TSubintent extends string,\n TPresentation extends string,\n TDerivedTransform extends string,\n>(\n workflow: AssistantWorkflowDefinition<TIntent, TSubintent, TPresentation, TDerivedTransform>,\n): AssistantWorkflowPlannerCompilation<TIntent, TSubintent, TPresentation, TDerivedTransform> {\n return {\n intentValues: getAssistantWorkflowIntentIds(workflow),\n subintentValues: getAssistantWorkflowSubintentIds(workflow),\n presentationValues: getAssistantWorkflowPresentationIds(workflow),\n derivedTransformValues: getAssistantWorkflowDerivedTransformIds(workflow),\n promptFacts: {\n ...buildAssistantWorkflowPromptFacts(workflow),\n intentInstructions: formatAssistantWorkflowIntentInstructions(workflow),\n },\n };\n}\n\nexport function formatAssistantWorkflowIntentInstructions(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n): string {\n return workflow.intents\n .map((intent) => {\n const parts = [\n `${intent.id} = ${intent.description.trim()}`,\n ...(intent.plannerInstructions ?? []).map((instruction) => instruction.trim()).filter(Boolean),\n ];\n return parts.join(\" \");\n })\n .filter((entry) => entry.trim().length > 0)\n .join(\" \");\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import { type AssistantWorkflowDefinition, type AssistantWorkflowPlanningStepDefinition, type AssistantWorkflowPlanningStepKind } from "./definition.js";
2
+ export type AssistantWorkflowPlanStepTrace = {
3
+ id: string;
4
+ kind: AssistantWorkflowPlanningStepKind;
5
+ optional: boolean;
6
+ toolHints: string[];
7
+ requiredToolHints: string[];
8
+ };
9
+ export type AssistantWorkflowPlanExecutionHints = {
10
+ needsClarification: boolean;
11
+ needsSynthesis: boolean;
12
+ producesArtifact: boolean;
13
+ mayGenerate: boolean;
14
+ };
15
+ export type AssistantWorkflowPlan = {
16
+ stepIds: string[];
17
+ steps: AssistantWorkflowPlanStepTrace[];
18
+ activePlanningStepProfileIds: string[];
19
+ profileStepIds: string[];
20
+ toolHints: string[];
21
+ requiredToolHints: string[];
22
+ missingToolHints: string[];
23
+ missingRequiredToolHints: string[];
24
+ missingPlanningSteps: string[];
25
+ executionHints: AssistantWorkflowPlanExecutionHints;
26
+ };
27
+ export type AssistantWorkflowPlanContext = {
28
+ subintent?: string | null;
29
+ presentation?: string | null;
30
+ timeWindowHint?: string | null;
31
+ toolsToExpose?: readonly string[] | null;
32
+ confidence?: number | null;
33
+ };
34
+ export declare function findAssistantWorkflowPlanningStep(workflow: AssistantWorkflowDefinition<string, string, string, string>, stepId: unknown): AssistantWorkflowPlanningStepDefinition | null;
35
+ export declare function buildAssistantWorkflowPlan(workflow: AssistantWorkflowDefinition<string, string, string, string>, intentId: unknown, availableToolNames?: readonly string[], context?: AssistantWorkflowPlanContext): AssistantWorkflowPlan;
36
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../src/planning.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,2BAA2B,EAEhC,KAAK,uCAAuC,EAC5C,KAAK,iCAAiC,EACvC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iCAAiC,CAAC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACxC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,mCAAmC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrE,MAAM,EAAE,OAAO,GACd,uCAAuC,GAAG,IAAI,CAIhD;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrE,QAAQ,EAAE,OAAO,EACjB,kBAAkB,GAAE,SAAS,MAAM,EAAO,EAC1C,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAkEvB"}
@@ -0,0 +1,141 @@
1
+ import { findAssistantWorkflowIntent, normalizeAssistantWorkflowId, } from "./definition.js";
2
+ export function findAssistantWorkflowPlanningStep(workflow, stepId) {
3
+ const normalized = normalizeAssistantWorkflowId(stepId);
4
+ if (!normalized)
5
+ return null;
6
+ return (workflow.planningSteps ?? []).find((step) => step.id === normalized) ?? null;
7
+ }
8
+ export function buildAssistantWorkflowPlan(workflow, intentId, availableToolNames = [], context = {}) {
9
+ const intent = findAssistantWorkflowIntent(workflow, intentId);
10
+ const stepsById = new Map((workflow.planningSteps ?? []).map((step) => [step.id, step]));
11
+ const availableSet = new Set(availableToolNames);
12
+ const steps = [];
13
+ const missingPlanningSteps = [];
14
+ const activePlanningStepProfileIds = [];
15
+ const profileStepIds = [];
16
+ const seen = new Set();
17
+ const baseStepIds = [...(intent?.planningSteps ?? [])];
18
+ const conditionalStepIds = collectProfilePlanningStepIds(intent?.planningStepProfiles ?? [], context, activePlanningStepProfileIds);
19
+ const orderedStepIds = insertConditionalStepsBeforeSynthesis(baseStepIds, conditionalStepIds, stepsById);
20
+ for (const rawStepId of orderedStepIds) {
21
+ const stepId = normalizeAssistantWorkflowId(rawStepId);
22
+ if (!stepId || seen.has(stepId))
23
+ continue;
24
+ seen.add(stepId);
25
+ const step = stepsById.get(stepId);
26
+ if (step) {
27
+ steps.push(step);
28
+ if (!profileStepIds.includes(stepId) && activePlanningStepProfileIds.length > 0) {
29
+ const fromProfile = (intent?.planningStepProfiles ?? [])
30
+ .filter((profile) => activePlanningStepProfileIds.includes(profile.id))
31
+ .some((profile) => profile.planningSteps.includes(stepId));
32
+ if (fromProfile && !baseStepIds.includes(stepId)) {
33
+ profileStepIds.push(stepId);
34
+ }
35
+ }
36
+ }
37
+ else {
38
+ missingPlanningSteps.push(stepId);
39
+ }
40
+ }
41
+ const rawToolHints = uniqueStrings(steps.flatMap((step) => step.toolHints ?? []));
42
+ const rawRequiredToolHints = uniqueStrings(steps.flatMap((step) => step.requiredToolHints ?? []));
43
+ const toolHints = filterToolNames(rawToolHints, availableSet);
44
+ const requiredToolHints = filterToolNames(rawRequiredToolHints, availableSet);
45
+ return {
46
+ stepIds: steps.map((step) => step.id),
47
+ steps: steps.map((step) => ({
48
+ id: step.id,
49
+ kind: step.kind,
50
+ optional: step.optional === true,
51
+ toolHints: filterToolNames(step.toolHints ?? [], availableSet),
52
+ requiredToolHints: filterToolNames(step.requiredToolHints ?? [], availableSet),
53
+ })),
54
+ activePlanningStepProfileIds,
55
+ profileStepIds,
56
+ toolHints,
57
+ requiredToolHints,
58
+ missingToolHints: availableSet.size === 0 ? [] : rawToolHints.filter((tool) => !availableSet.has(tool)),
59
+ missingRequiredToolHints: availableSet.size === 0 ? [] : rawRequiredToolHints.filter((tool) => !availableSet.has(tool)),
60
+ missingPlanningSteps,
61
+ executionHints: {
62
+ needsClarification: steps.some((step) => step.kind === "ask_clarification"),
63
+ needsSynthesis: steps.some((step) => step.kind === "synthesize"),
64
+ producesArtifact: steps.some((step) => step.kind === "build_artifact" || step.kind === "generate"),
65
+ mayGenerate: steps.some((step) => step.kind === "generate"),
66
+ },
67
+ };
68
+ }
69
+ function insertConditionalStepsBeforeSynthesis(baseStepIds, conditionalStepIds, stepsById) {
70
+ if (!conditionalStepIds.length)
71
+ return [...baseStepIds];
72
+ const insertIndex = baseStepIds.findIndex((rawStepId) => {
73
+ const stepId = normalizeAssistantWorkflowId(rawStepId);
74
+ const kind = stepId ? stepsById.get(stepId)?.kind : null;
75
+ return kind === "build_artifact" || kind === "generate" || kind === "synthesize";
76
+ });
77
+ if (insertIndex < 0)
78
+ return [...baseStepIds, ...conditionalStepIds];
79
+ return [
80
+ ...baseStepIds.slice(0, insertIndex),
81
+ ...conditionalStepIds,
82
+ ...baseStepIds.slice(insertIndex),
83
+ ];
84
+ }
85
+ function collectProfilePlanningStepIds(profiles, context, activeProfileIds) {
86
+ const out = [];
87
+ for (const profile of profiles) {
88
+ if (!matchesPlanningStepProfile(profile, context))
89
+ continue;
90
+ activeProfileIds.push(profile.id);
91
+ out.push(...profile.planningSteps);
92
+ }
93
+ return out;
94
+ }
95
+ function matchesPlanningStepProfile(profile, context) {
96
+ const condition = profile.condition;
97
+ if (!condition)
98
+ return true;
99
+ if (condition.subintent !== undefined && normalizeAssistantWorkflowId(context.subintent) !== condition.subintent) {
100
+ return false;
101
+ }
102
+ if (condition.presentation !== undefined && normalizeAssistantWorkflowId(context.presentation) !== condition.presentation) {
103
+ return false;
104
+ }
105
+ if (condition.timeWindowHint !== undefined && normalizeAssistantWorkflowId(context.timeWindowHint) !== condition.timeWindowHint) {
106
+ return false;
107
+ }
108
+ if (condition.minConfidence !== undefined) {
109
+ if (typeof context.confidence !== "number" || context.confidence < condition.minConfidence)
110
+ return false;
111
+ }
112
+ if (condition.maxConfidence !== undefined) {
113
+ if (typeof context.confidence !== "number" || context.confidence > condition.maxConfidence)
114
+ return false;
115
+ }
116
+ const requiredTools = condition.requiredTools ?? [];
117
+ if (requiredTools.length > 0) {
118
+ const tools = new Set(uniqueStrings(context.toolsToExpose ?? []));
119
+ if (!requiredTools.every((tool) => tools.has(tool)))
120
+ return false;
121
+ }
122
+ return true;
123
+ }
124
+ function filterToolNames(rawTools, availableSet) {
125
+ if (availableSet.size === 0)
126
+ return uniqueStrings(rawTools);
127
+ return uniqueStrings(rawTools).filter((tool) => availableSet.has(tool));
128
+ }
129
+ function uniqueStrings(values) {
130
+ const out = [];
131
+ const seen = new Set();
132
+ for (const value of values) {
133
+ const normalized = normalizeAssistantWorkflowId(value);
134
+ if (!normalized || seen.has(normalized))
135
+ continue;
136
+ seen.add(normalized);
137
+ out.push(normalized);
138
+ }
139
+ return out;
140
+ }
141
+ //# sourceMappingURL=planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.js","sourceRoot":"","sources":["../src/planning.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n findAssistantWorkflowIntent,\n normalizeAssistantWorkflowId,\n type AssistantWorkflowDefinition,\n type AssistantWorkflowPlanningStepProfile,\n type AssistantWorkflowPlanningStepDefinition,\n type AssistantWorkflowPlanningStepKind,\n} from \"./definition.js\";\n\nexport type AssistantWorkflowPlanStepTrace = {\n id: string;\n kind: AssistantWorkflowPlanningStepKind;\n optional: boolean;\n toolHints: string[];\n requiredToolHints: string[];\n};\n\nexport type AssistantWorkflowPlanExecutionHints = {\n needsClarification: boolean;\n needsSynthesis: boolean;\n producesArtifact: boolean;\n mayGenerate: boolean;\n};\n\nexport type AssistantWorkflowPlan = {\n stepIds: string[];\n steps: AssistantWorkflowPlanStepTrace[];\n activePlanningStepProfileIds: string[];\n profileStepIds: string[];\n toolHints: string[];\n requiredToolHints: string[];\n missingToolHints: string[];\n missingRequiredToolHints: string[];\n missingPlanningSteps: string[];\n executionHints: AssistantWorkflowPlanExecutionHints;\n};\n\nexport type AssistantWorkflowPlanContext = {\n subintent?: string | null;\n presentation?: string | null;\n timeWindowHint?: string | null;\n toolsToExpose?: readonly string[] | null;\n confidence?: number | null;\n};\n\nexport function findAssistantWorkflowPlanningStep(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n stepId: unknown,\n): AssistantWorkflowPlanningStepDefinition | null {\n const normalized = normalizeAssistantWorkflowId(stepId);\n if (!normalized) return null;\n return (workflow.planningSteps ?? []).find((step) => step.id === normalized) ?? null;\n}\n\nexport function buildAssistantWorkflowPlan(\n workflow: AssistantWorkflowDefinition<string, string, string, string>,\n intentId: unknown,\n availableToolNames: readonly string[] = [],\n context: AssistantWorkflowPlanContext = {},\n): AssistantWorkflowPlan {\n const intent = findAssistantWorkflowIntent(workflow, intentId);\n const stepsById = new Map((workflow.planningSteps ?? []).map((step) => [step.id, step] as const));\n const availableSet = new Set(availableToolNames);\n const steps: AssistantWorkflowPlanningStepDefinition[] = [];\n const missingPlanningSteps: string[] = [];\n const activePlanningStepProfileIds: string[] = [];\n const profileStepIds: string[] = [];\n const seen = new Set<string>();\n const baseStepIds = [...(intent?.planningSteps ?? [])];\n const conditionalStepIds = collectProfilePlanningStepIds(\n intent?.planningStepProfiles ?? [],\n context,\n activePlanningStepProfileIds,\n );\n const orderedStepIds = insertConditionalStepsBeforeSynthesis(baseStepIds, conditionalStepIds, stepsById);\n\n for (const rawStepId of orderedStepIds) {\n const stepId = normalizeAssistantWorkflowId(rawStepId);\n if (!stepId || seen.has(stepId)) continue;\n seen.add(stepId);\n const step = stepsById.get(stepId);\n if (step) {\n steps.push(step);\n if (!profileStepIds.includes(stepId) && activePlanningStepProfileIds.length > 0) {\n const fromProfile = (intent?.planningStepProfiles ?? [])\n .filter((profile) => activePlanningStepProfileIds.includes(profile.id))\n .some((profile) => profile.planningSteps.includes(stepId));\n if (fromProfile && !baseStepIds.includes(stepId)) {\n profileStepIds.push(stepId);\n }\n }\n } else {\n missingPlanningSteps.push(stepId);\n }\n }\n\n const rawToolHints = uniqueStrings(steps.flatMap((step) => step.toolHints ?? []));\n const rawRequiredToolHints = uniqueStrings(steps.flatMap((step) => step.requiredToolHints ?? []));\n const toolHints = filterToolNames(rawToolHints, availableSet);\n const requiredToolHints = filterToolNames(rawRequiredToolHints, availableSet);\n\n return {\n stepIds: steps.map((step) => step.id),\n steps: steps.map((step) => ({\n id: step.id,\n kind: step.kind,\n optional: step.optional === true,\n toolHints: filterToolNames(step.toolHints ?? [], availableSet),\n requiredToolHints: filterToolNames(step.requiredToolHints ?? [], availableSet),\n })),\n activePlanningStepProfileIds,\n profileStepIds,\n toolHints,\n requiredToolHints,\n missingToolHints: availableSet.size === 0 ? [] : rawToolHints.filter((tool) => !availableSet.has(tool)),\n missingRequiredToolHints:\n availableSet.size === 0 ? [] : rawRequiredToolHints.filter((tool) => !availableSet.has(tool)),\n missingPlanningSteps,\n executionHints: {\n needsClarification: steps.some((step) => step.kind === \"ask_clarification\"),\n needsSynthesis: steps.some((step) => step.kind === \"synthesize\"),\n producesArtifact: steps.some((step) => step.kind === \"build_artifact\" || step.kind === \"generate\"),\n mayGenerate: steps.some((step) => step.kind === \"generate\"),\n },\n };\n}\n\nfunction insertConditionalStepsBeforeSynthesis(\n baseStepIds: readonly string[],\n conditionalStepIds: readonly string[],\n stepsById: ReadonlyMap<string, AssistantWorkflowPlanningStepDefinition>,\n): string[] {\n if (!conditionalStepIds.length) return [...baseStepIds];\n const insertIndex = baseStepIds.findIndex((rawStepId) => {\n const stepId = normalizeAssistantWorkflowId(rawStepId);\n const kind = stepId ? stepsById.get(stepId)?.kind : null;\n return kind === \"build_artifact\" || kind === \"generate\" || kind === \"synthesize\";\n });\n if (insertIndex < 0) return [...baseStepIds, ...conditionalStepIds];\n return [\n ...baseStepIds.slice(0, insertIndex),\n ...conditionalStepIds,\n ...baseStepIds.slice(insertIndex),\n ];\n}\n\nfunction collectProfilePlanningStepIds(\n profiles: readonly AssistantWorkflowPlanningStepProfile[],\n context: AssistantWorkflowPlanContext,\n activeProfileIds: string[],\n): string[] {\n const out: string[] = [];\n for (const profile of profiles) {\n if (!matchesPlanningStepProfile(profile, context)) continue;\n activeProfileIds.push(profile.id);\n out.push(...profile.planningSteps);\n }\n return out;\n}\n\nfunction matchesPlanningStepProfile(\n profile: AssistantWorkflowPlanningStepProfile,\n context: AssistantWorkflowPlanContext,\n): boolean {\n const condition = profile.condition;\n if (!condition) return true;\n if (condition.subintent !== undefined && normalizeAssistantWorkflowId(context.subintent) !== condition.subintent) {\n return false;\n }\n if (condition.presentation !== undefined && normalizeAssistantWorkflowId(context.presentation) !== condition.presentation) {\n return false;\n }\n if (condition.timeWindowHint !== undefined && normalizeAssistantWorkflowId(context.timeWindowHint) !== condition.timeWindowHint) {\n return false;\n }\n if (condition.minConfidence !== undefined) {\n if (typeof context.confidence !== \"number\" || context.confidence < condition.minConfidence) return false;\n }\n if (condition.maxConfidence !== undefined) {\n if (typeof context.confidence !== \"number\" || context.confidence > condition.maxConfidence) return false;\n }\n const requiredTools = condition.requiredTools ?? [];\n if (requiredTools.length > 0) {\n const tools = new Set(uniqueStrings(context.toolsToExpose ?? []));\n if (!requiredTools.every((tool) => tools.has(tool))) return false;\n }\n return true;\n}\n\nfunction filterToolNames(rawTools: readonly string[], availableSet: ReadonlySet<string>): string[] {\n if (availableSet.size === 0) return uniqueStrings(rawTools);\n return uniqueStrings(rawTools).filter((tool) => availableSet.has(tool));\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n const normalized = normalizeAssistantWorkflowId(value);\n if (!normalized || seen.has(normalized)) continue;\n seen.add(normalized);\n out.push(normalized);\n }\n return out;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export type AssistantWorkflowPolicyValueSource = "default" | "config" | "db_override";
2
+ export type AssistantWorkflowPolicyValuePresence<TPolicy> = (value: TPolicy | null | undefined) => boolean;
3
+ export declare function normalizeAssistantWorkflowPolicyString(value: unknown): string | null;
4
+ export declare function normalizeAssistantWorkflowPolicyBaseUrl(value: unknown): string | null;
5
+ export declare function hasAssistantWorkflowBooleanPolicyValue(value: unknown): boolean;
6
+ export declare function hasAssistantWorkflowStringPolicyValue(value: unknown): boolean;
7
+ export declare function getAssistantWorkflowPolicyValueSource<TPolicy>(configOverride: TPolicy | null | undefined, runtimeOverride: TPolicy | null | undefined, hasValue: AssistantWorkflowPolicyValuePresence<TPolicy>): AssistantWorkflowPolicyValueSource;
8
+ export declare function hasAssistantWorkflowPolicyOverride<TPolicy>(override: TPolicy | null | undefined, hasValueChecks: readonly AssistantWorkflowPolicyValuePresence<TPolicy>[]): boolean;
9
+ export declare function resolveAssistantWorkflowPolicyValue<TPolicy, TValue>(defaults: TPolicy, override: TPolicy | null | undefined, readValue: (value: TPolicy) => TValue, hasValue: AssistantWorkflowPolicyValuePresence<TPolicy>): TValue;
10
+ //# sourceMappingURL=policy-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-resolution.d.ts","sourceRoot":"","sources":["../src/policy-resolution.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kCAAkC,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtF,MAAM,MAAM,oCAAoC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,KAAK,OAAO,CAAC;AAE3G,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIpF;AAED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9E;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE7E;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAC3D,cAAc,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAC1C,eAAe,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,EAAE,oCAAoC,CAAC,OAAO,CAAC,GACtD,kCAAkC,CAIpC;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EACxD,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACpC,cAAc,EAAE,SAAS,oCAAoC,CAAC,OAAO,CAAC,EAAE,GACvE,OAAO,CAET;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,EACjE,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACpC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,EACrC,QAAQ,EAAE,oCAAoC,CAAC,OAAO,CAAC,GACtD,MAAM,CAER"}
@@ -0,0 +1,30 @@
1
+ export function normalizeAssistantWorkflowPolicyString(value) {
2
+ if (typeof value !== "string")
3
+ return null;
4
+ const trimmed = value.trim();
5
+ return trimmed.length ? trimmed : null;
6
+ }
7
+ export function normalizeAssistantWorkflowPolicyBaseUrl(value) {
8
+ const trimmed = normalizeAssistantWorkflowPolicyString(value);
9
+ return trimmed === null ? null : trimmed.replace(/\/+$/, "");
10
+ }
11
+ export function hasAssistantWorkflowBooleanPolicyValue(value) {
12
+ return typeof value === "boolean";
13
+ }
14
+ export function hasAssistantWorkflowStringPolicyValue(value) {
15
+ return normalizeAssistantWorkflowPolicyString(value) !== null;
16
+ }
17
+ export function getAssistantWorkflowPolicyValueSource(configOverride, runtimeOverride, hasValue) {
18
+ if (hasValue(runtimeOverride))
19
+ return "db_override";
20
+ if (hasValue(configOverride))
21
+ return "config";
22
+ return "default";
23
+ }
24
+ export function hasAssistantWorkflowPolicyOverride(override, hasValueChecks) {
25
+ return Boolean(override && hasValueChecks.some((hasValue) => hasValue(override)));
26
+ }
27
+ export function resolveAssistantWorkflowPolicyValue(defaults, override, readValue, hasValue) {
28
+ return hasValue(override) ? readValue(override) : readValue(defaults);
29
+ }
30
+ //# sourceMappingURL=policy-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-resolution.js","sourceRoot":"","sources":["../src/policy-resolution.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,sCAAsC,CAAC,KAAc;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,KAAc;IACpE,MAAM,OAAO,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAc;IACnE,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAAc;IAClE,OAAO,sCAAsC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,cAA0C,EAC1C,eAA2C,EAC3C,QAAuD;IAEvD,IAAI,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,aAAa,CAAC;IACpD,IAAI,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,QAAoC,EACpC,cAAwE;IAExE,OAAO,OAAO,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,QAAiB,EACjB,QAAoC,EACpC,SAAqC,EACrC,QAAuD;IAEvD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnF,CAAC","sourcesContent":["export type AssistantWorkflowPolicyValueSource = \"default\" | \"config\" | \"db_override\";\n\nexport type AssistantWorkflowPolicyValuePresence<TPolicy> = (value: TPolicy | null | undefined) => boolean;\n\nexport function normalizeAssistantWorkflowPolicyString(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length ? trimmed : null;\n}\n\nexport function normalizeAssistantWorkflowPolicyBaseUrl(value: unknown): string | null {\n const trimmed = normalizeAssistantWorkflowPolicyString(value);\n return trimmed === null ? null : trimmed.replace(/\\/+$/, \"\");\n}\n\nexport function hasAssistantWorkflowBooleanPolicyValue(value: unknown): boolean {\n return typeof value === \"boolean\";\n}\n\nexport function hasAssistantWorkflowStringPolicyValue(value: unknown): boolean {\n return normalizeAssistantWorkflowPolicyString(value) !== null;\n}\n\nexport function getAssistantWorkflowPolicyValueSource<TPolicy>(\n configOverride: TPolicy | null | undefined,\n runtimeOverride: TPolicy | null | undefined,\n hasValue: AssistantWorkflowPolicyValuePresence<TPolicy>,\n): AssistantWorkflowPolicyValueSource {\n if (hasValue(runtimeOverride)) return \"db_override\";\n if (hasValue(configOverride)) return \"config\";\n return \"default\";\n}\n\nexport function hasAssistantWorkflowPolicyOverride<TPolicy>(\n override: TPolicy | null | undefined,\n hasValueChecks: readonly AssistantWorkflowPolicyValuePresence<TPolicy>[],\n): boolean {\n return Boolean(override && hasValueChecks.some((hasValue) => hasValue(override)));\n}\n\nexport function resolveAssistantWorkflowPolicyValue<TPolicy, TValue>(\n defaults: TPolicy,\n override: TPolicy | null | undefined,\n readValue: (value: TPolicy) => TValue,\n hasValue: AssistantWorkflowPolicyValuePresence<TPolicy>,\n): TValue {\n return hasValue(override) ? readValue(override as TPolicy) : readValue(defaults);\n}\n"]}