@x12i/graphenix-executable-format 1.0.0

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 (252) hide show
  1. package/README.md +341 -0
  2. package/dist/adapter/build-graph-execution-request-from-studio-execute.d.ts +6 -0
  3. package/dist/adapter/build-graph-execution-request-from-studio-execute.d.ts.map +1 -0
  4. package/dist/adapter/build-graph-execution-request-from-studio-execute.js +41 -0
  5. package/dist/adapter/build-graph-execution-request-from-studio-execute.js.map +1 -0
  6. package/dist/api.d.ts +36 -0
  7. package/dist/api.d.ts.map +1 -0
  8. package/dist/api.js +99 -0
  9. package/dist/api.js.map +1 -0
  10. package/dist/case-condition/allowed-paths.d.ts +4 -0
  11. package/dist/case-condition/allowed-paths.d.ts.map +1 -0
  12. package/dist/case-condition/allowed-paths.js +74 -0
  13. package/dist/case-condition/allowed-paths.js.map +1 -0
  14. package/dist/case-condition/evaluate-case-condition.d.ts +4 -0
  15. package/dist/case-condition/evaluate-case-condition.d.ts.map +1 -0
  16. package/dist/case-condition/evaluate-case-condition.js +106 -0
  17. package/dist/case-condition/evaluate-case-condition.js.map +1 -0
  18. package/dist/case-condition/select-graph-model-case.d.ts +6 -0
  19. package/dist/case-condition/select-graph-model-case.d.ts.map +1 -0
  20. package/dist/case-condition/select-graph-model-case.js +40 -0
  21. package/dist/case-condition/select-graph-model-case.js.map +1 -0
  22. package/dist/case-condition/select-node-model-case.d.ts +4 -0
  23. package/dist/case-condition/select-node-model-case.d.ts.map +1 -0
  24. package/dist/case-condition/select-node-model-case.js +34 -0
  25. package/dist/case-condition/select-node-model-case.js.map +1 -0
  26. package/dist/case-condition/validate-case-condition.d.ts +5 -0
  27. package/dist/case-condition/validate-case-condition.d.ts.map +1 -0
  28. package/dist/case-condition/validate-case-condition.js +118 -0
  29. package/dist/case-condition/validate-case-condition.js.map +1 -0
  30. package/dist/compile/build-node-execution-units.d.ts +6 -0
  31. package/dist/compile/build-node-execution-units.d.ts.map +1 -0
  32. package/dist/compile/build-node-execution-units.js +77 -0
  33. package/dist/compile/build-node-execution-units.js.map +1 -0
  34. package/dist/compile/compile-executable-plan.d.ts +5 -0
  35. package/dist/compile/compile-executable-plan.d.ts.map +1 -0
  36. package/dist/compile/compile-executable-plan.js +142 -0
  37. package/dist/compile/compile-executable-plan.js.map +1 -0
  38. package/dist/constants.d.ts +12 -0
  39. package/dist/constants.d.ts.map +1 -0
  40. package/dist/constants.js +19 -0
  41. package/dist/constants.js.map +1 -0
  42. package/dist/explain/explain-executable-graph-error.d.ts +4 -0
  43. package/dist/explain/explain-executable-graph-error.d.ts.map +1 -0
  44. package/dist/explain/explain-executable-graph-error.js +14 -0
  45. package/dist/explain/explain-executable-graph-error.js.map +1 -0
  46. package/dist/explain/explain-node-inheritance.d.ts +3 -0
  47. package/dist/explain/explain-node-inheritance.d.ts.map +1 -0
  48. package/dist/explain/explain-node-inheritance.js +41 -0
  49. package/dist/explain/explain-node-inheritance.js.map +1 -0
  50. package/dist/fixtures/minimal-executable-graph.d.ts +4 -0
  51. package/dist/fixtures/minimal-executable-graph.d.ts.map +1 -0
  52. package/dist/fixtures/minimal-executable-graph.js +170 -0
  53. package/dist/fixtures/minimal-executable-graph.js.map +1 -0
  54. package/dist/helpers/add-finalizer-node.d.ts +5 -0
  55. package/dist/helpers/add-finalizer-node.d.ts.map +1 -0
  56. package/dist/helpers/add-finalizer-node.js +13 -0
  57. package/dist/helpers/add-finalizer-node.js.map +1 -0
  58. package/dist/helpers/add-task-node.d.ts +5 -0
  59. package/dist/helpers/add-task-node.d.ts.map +1 -0
  60. package/dist/helpers/add-task-node.js +13 -0
  61. package/dist/helpers/add-task-node.js.map +1 -0
  62. package/dist/helpers/connect-task-to-task.d.ts +10 -0
  63. package/dist/helpers/connect-task-to-task.d.ts.map +1 -0
  64. package/dist/helpers/connect-task-to-task.js +23 -0
  65. package/dist/helpers/connect-task-to-task.js.map +1 -0
  66. package/dist/helpers/set-graph-model-config.d.ts +5 -0
  67. package/dist/helpers/set-graph-model-config.d.ts.map +1 -0
  68. package/dist/helpers/set-graph-model-config.js +30 -0
  69. package/dist/helpers/set-graph-model-config.js.map +1 -0
  70. package/dist/helpers/set-node-model-config.d.ts +5 -0
  71. package/dist/helpers/set-node-model-config.d.ts.map +1 -0
  72. package/dist/helpers/set-node-model-config.js +25 -0
  73. package/dist/helpers/set-node-model-config.js.map +1 -0
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +18 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/internal/hash.d.ts +4 -0
  79. package/dist/internal/hash.d.ts.map +1 -0
  80. package/dist/internal/hash.js +26 -0
  81. package/dist/internal/hash.js.map +1 -0
  82. package/dist/internal/utils.d.ts +16 -0
  83. package/dist/internal/utils.d.ts.map +1 -0
  84. package/dist/internal/utils.js +80 -0
  85. package/dist/internal/utils.js.map +1 -0
  86. package/dist/migration/migrate-legacy-graph-model-object.d.ts +4 -0
  87. package/dist/migration/migrate-legacy-graph-model-object.d.ts.map +1 -0
  88. package/dist/migration/migrate-legacy-graph-model-object.js +217 -0
  89. package/dist/migration/migrate-legacy-graph-model-object.js.map +1 -0
  90. package/dist/normalize/normalize-executable-graph.d.ts +3 -0
  91. package/dist/normalize/normalize-executable-graph.d.ts.map +1 -0
  92. package/dist/normalize/normalize-executable-graph.js +34 -0
  93. package/dist/normalize/normalize-executable-graph.js.map +1 -0
  94. package/dist/normalize/normalize-model-config.d.ts +4 -0
  95. package/dist/normalize/normalize-model-config.d.ts.map +1 -0
  96. package/dist/normalize/normalize-model-config.js +64 -0
  97. package/dist/normalize/normalize-model-config.js.map +1 -0
  98. package/dist/profile-choice/known-profile-choices.d.ts +10 -0
  99. package/dist/profile-choice/known-profile-choices.d.ts.map +1 -0
  100. package/dist/profile-choice/known-profile-choices.js +19 -0
  101. package/dist/profile-choice/known-profile-choices.js.map +1 -0
  102. package/dist/profile-choice/validate-profile-choice.d.ts +8 -0
  103. package/dist/profile-choice/validate-profile-choice.d.ts.map +1 -0
  104. package/dist/profile-choice/validate-profile-choice.js +55 -0
  105. package/dist/profile-choice/validate-profile-choice.js.map +1 -0
  106. package/dist/resolution/build-deterministic-case-context.d.ts +9 -0
  107. package/dist/resolution/build-deterministic-case-context.d.ts.map +1 -0
  108. package/dist/resolution/build-deterministic-case-context.js +26 -0
  109. package/dist/resolution/build-deterministic-case-context.js.map +1 -0
  110. package/dist/resolution/resolve-graph-model-config.d.ts +12 -0
  111. package/dist/resolution/resolve-graph-model-config.d.ts.map +1 -0
  112. package/dist/resolution/resolve-graph-model-config.js +28 -0
  113. package/dist/resolution/resolve-graph-model-config.js.map +1 -0
  114. package/dist/resolution/resolve-node-ai-plan.d.ts +7 -0
  115. package/dist/resolution/resolve-node-ai-plan.d.ts.map +1 -0
  116. package/dist/resolution/resolve-node-ai-plan.js +64 -0
  117. package/dist/resolution/resolve-node-ai-plan.js.map +1 -0
  118. package/dist/resolution/resolve-node-model-config.d.ts +15 -0
  119. package/dist/resolution/resolve-node-model-config.d.ts.map +1 -0
  120. package/dist/resolution/resolve-node-model-config.js +37 -0
  121. package/dist/resolution/resolve-node-model-config.js.map +1 -0
  122. package/dist/resolution/resolve-node-model-slot.d.ts +7 -0
  123. package/dist/resolution/resolve-node-model-slot.d.ts.map +1 -0
  124. package/dist/resolution/resolve-node-model-slot.js +65 -0
  125. package/dist/resolution/resolve-node-model-slot.js.map +1 -0
  126. package/dist/test/executable-format.test.d.ts +2 -0
  127. package/dist/test/executable-format.test.d.ts.map +1 -0
  128. package/dist/test/executable-format.test.js +844 -0
  129. package/dist/test/executable-format.test.js.map +1 -0
  130. package/dist/trace/append-execution-event.d.ts +5 -0
  131. package/dist/trace/append-execution-event.d.ts.map +1 -0
  132. package/dist/trace/append-execution-event.js +9 -0
  133. package/dist/trace/append-execution-event.js.map +1 -0
  134. package/dist/trace/create-execution-trace.d.ts +5 -0
  135. package/dist/trace/create-execution-trace.d.ts.map +1 -0
  136. package/dist/trace/create-execution-trace.js +56 -0
  137. package/dist/trace/create-execution-trace.js.map +1 -0
  138. package/dist/types/case-condition.d.ts +50 -0
  139. package/dist/types/case-condition.d.ts.map +1 -0
  140. package/dist/types/case-condition.js +3 -0
  141. package/dist/types/case-condition.js.map +1 -0
  142. package/dist/types/errors.d.ts +16 -0
  143. package/dist/types/errors.d.ts.map +1 -0
  144. package/dist/types/errors.js +3 -0
  145. package/dist/types/errors.js.map +1 -0
  146. package/dist/types/executable-graph.d.ts +19 -0
  147. package/dist/types/executable-graph.d.ts.map +1 -0
  148. package/dist/types/executable-graph.js +3 -0
  149. package/dist/types/executable-graph.js.map +1 -0
  150. package/dist/types/executable-nodes.d.ts +54 -0
  151. package/dist/types/executable-nodes.d.ts.map +1 -0
  152. package/dist/types/executable-nodes.js +3 -0
  153. package/dist/types/executable-nodes.js.map +1 -0
  154. package/dist/types/executable-plan.d.ts +78 -0
  155. package/dist/types/executable-plan.d.ts.map +1 -0
  156. package/dist/types/executable-plan.js +5 -0
  157. package/dist/types/executable-plan.js.map +1 -0
  158. package/dist/types/executable-profile.d.ts +18 -0
  159. package/dist/types/executable-profile.d.ts.map +1 -0
  160. package/dist/types/executable-profile.js +3 -0
  161. package/dist/types/executable-profile.js.map +1 -0
  162. package/dist/types/execution-trace.d.ts +278 -0
  163. package/dist/types/execution-trace.d.ts.map +1 -0
  164. package/dist/types/execution-trace.js +5 -0
  165. package/dist/types/execution-trace.js.map +1 -0
  166. package/dist/types/execution-unit.d.ts +19 -0
  167. package/dist/types/execution-unit.d.ts.map +1 -0
  168. package/dist/types/execution-unit.js +3 -0
  169. package/dist/types/execution-unit.js.map +1 -0
  170. package/dist/types/index.d.ts +16 -0
  171. package/dist/types/index.d.ts.map +1 -0
  172. package/dist/types/index.js +8 -0
  173. package/dist/types/index.js.map +1 -0
  174. package/dist/types/legacy.d.ts +21 -0
  175. package/dist/types/legacy.d.ts.map +1 -0
  176. package/dist/types/legacy.js +3 -0
  177. package/dist/types/legacy.js.map +1 -0
  178. package/dist/types/model-config.d.ts +80 -0
  179. package/dist/types/model-config.d.ts.map +1 -0
  180. package/dist/types/model-config.js +3 -0
  181. package/dist/types/model-config.js.map +1 -0
  182. package/dist/types/resolution.d.ts +55 -0
  183. package/dist/types/resolution.d.ts.map +1 -0
  184. package/dist/types/resolution.js +3 -0
  185. package/dist/types/resolution.js.map +1 -0
  186. package/dist/types/runtime.d.ts +19 -0
  187. package/dist/types/runtime.d.ts.map +1 -0
  188. package/dist/types/runtime.js +3 -0
  189. package/dist/types/runtime.js.map +1 -0
  190. package/dist/types/studio-execute.d.ts +25 -0
  191. package/dist/types/studio-execute.d.ts.map +1 -0
  192. package/dist/types/studio-execute.js +3 -0
  193. package/dist/types/studio-execute.js.map +1 -0
  194. package/dist/validators/assert-executable-graph.d.ts +3 -0
  195. package/dist/validators/assert-executable-graph.d.ts.map +1 -0
  196. package/dist/validators/assert-executable-graph.js +14 -0
  197. package/dist/validators/assert-executable-graph.js.map +1 -0
  198. package/dist/validators/assert-normalized-executable-graph.d.ts +3 -0
  199. package/dist/validators/assert-normalized-executable-graph.d.ts.map +1 -0
  200. package/dist/validators/assert-normalized-executable-graph.js +14 -0
  201. package/dist/validators/assert-normalized-executable-graph.js.map +1 -0
  202. package/dist/validators/validate-authoring-executable-graph.d.ts +3 -0
  203. package/dist/validators/validate-authoring-executable-graph.d.ts.map +1 -0
  204. package/dist/validators/validate-authoring-executable-graph.js +134 -0
  205. package/dist/validators/validate-authoring-executable-graph.js.map +1 -0
  206. package/dist/validators/validate-authoring-graph.d.ts +2 -0
  207. package/dist/validators/validate-authoring-graph.d.ts.map +1 -0
  208. package/dist/validators/validate-authoring-graph.js +6 -0
  209. package/dist/validators/validate-authoring-graph.js.map +1 -0
  210. package/dist/validators/validate-executable-graph.d.ts +4 -0
  211. package/dist/validators/validate-executable-graph.d.ts.map +1 -0
  212. package/dist/validators/validate-executable-graph.js +9 -0
  213. package/dist/validators/validate-executable-graph.js.map +1 -0
  214. package/dist/validators/validate-executable-plan.d.ts +3 -0
  215. package/dist/validators/validate-executable-plan.d.ts.map +1 -0
  216. package/dist/validators/validate-executable-plan.js +211 -0
  217. package/dist/validators/validate-executable-plan.js.map +1 -0
  218. package/dist/validators/validate-execution-trace.d.ts +4 -0
  219. package/dist/validators/validate-execution-trace.d.ts.map +1 -0
  220. package/dist/validators/validate-execution-trace.js +158 -0
  221. package/dist/validators/validate-execution-trace.js.map +1 -0
  222. package/dist/validators/validate-finalizer-node.d.ts +4 -0
  223. package/dist/validators/validate-finalizer-node.d.ts.map +1 -0
  224. package/dist/validators/validate-finalizer-node.js +36 -0
  225. package/dist/validators/validate-finalizer-node.js.map +1 -0
  226. package/dist/validators/validate-model-config.d.ts +7 -0
  227. package/dist/validators/validate-model-config.d.ts.map +1 -0
  228. package/dist/validators/validate-model-config.js +197 -0
  229. package/dist/validators/validate-model-config.js.map +1 -0
  230. package/dist/validators/validate-normalized-executable-graph.d.ts +3 -0
  231. package/dist/validators/validate-normalized-executable-graph.d.ts.map +1 -0
  232. package/dist/validators/validate-normalized-executable-graph.js +26 -0
  233. package/dist/validators/validate-normalized-executable-graph.js.map +1 -0
  234. package/dist/validators/validate-runtime-object.d.ts +10 -0
  235. package/dist/validators/validate-runtime-object.d.ts.map +1 -0
  236. package/dist/validators/validate-runtime-object.js +63 -0
  237. package/dist/validators/validate-runtime-object.js.map +1 -0
  238. package/dist/validators/validate-studio-execute-request.d.ts +5 -0
  239. package/dist/validators/validate-studio-execute-request.d.ts.map +1 -0
  240. package/dist/validators/validate-studio-execute-request.js +37 -0
  241. package/dist/validators/validate-studio-execute-request.js.map +1 -0
  242. package/dist/validators/validate-task-actions.d.ts +4 -0
  243. package/dist/validators/validate-task-actions.d.ts.map +1 -0
  244. package/dist/validators/validate-task-actions.js +93 -0
  245. package/dist/validators/validate-task-actions.js.map +1 -0
  246. package/dist/validators/validate-task-node.d.ts +6 -0
  247. package/dist/validators/validate-task-node.d.ts.map +1 -0
  248. package/dist/validators/validate-task-node.js +43 -0
  249. package/dist/validators/validate-task-node.js.map +1 -0
  250. package/docs/IMPLEMENTATION-REPORT.md +200 -0
  251. package/package.json +56 -0
  252. package/schema/graphenix-executable-format-1.0.0.schema.json +40 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRecord = isRecord;
4
+ exports.execError = execError;
5
+ exports.getExecutableProfile = getExecutableProfile;
6
+ exports.isExecutableTaskNode = isExecutableTaskNode;
7
+ exports.isExecutableFinalizerNode = isExecutableFinalizerNode;
8
+ exports.getTaskNodeConfig = getTaskNodeConfig;
9
+ exports.getFinalizerNodeConfig = getFinalizerNodeConfig;
10
+ exports.isAiModelSelection = isAiModelSelection;
11
+ exports.nodeHasInputPort = nodeHasInputPort;
12
+ exports.nodeHasOutputPort = nodeHasOutputPort;
13
+ exports.isExecutableNodeParameters = isExecutableNodeParameters;
14
+ const constants_js_1 = require("../constants.js");
15
+ const constants_js_2 = require("../constants.js");
16
+ function isRecord(value) {
17
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18
+ }
19
+ function execError(code, message, path) {
20
+ return { source: "x12i.executable", code, message, path };
21
+ }
22
+ function getExecutableProfile(doc) {
23
+ const raw = doc.graph.metadata?.extensions?.[constants_js_2.EXECUTABLE_PROFILE_NAMESPACE];
24
+ if (!isRecord(raw))
25
+ return undefined;
26
+ return raw;
27
+ }
28
+ function isExecutableTaskNode(node) {
29
+ return node.kind === constants_js_1.TASK_NODE_KIND;
30
+ }
31
+ function isExecutableFinalizerNode(node) {
32
+ return node.kind === constants_js_1.FINALIZER_NODE_KIND;
33
+ }
34
+ function getTaskNodeConfig(node) {
35
+ if (!isExecutableTaskNode(node))
36
+ return undefined;
37
+ const params = node.parameters;
38
+ if (!isRecord(params) || params.nodeType !== "task")
39
+ return undefined;
40
+ return params;
41
+ }
42
+ function getFinalizerNodeConfig(node) {
43
+ if (!isExecutableFinalizerNode(node))
44
+ return undefined;
45
+ const params = node.parameters;
46
+ if (!isRecord(params) || params.nodeType !== "finalizer")
47
+ return undefined;
48
+ return params;
49
+ }
50
+ function isAiModelSelection(value) {
51
+ if (!isRecord(value))
52
+ return false;
53
+ if (value.kind === "profileChoice") {
54
+ return typeof value.key === "string";
55
+ }
56
+ if (value.kind === "profile") {
57
+ return typeof value.profile === "string";
58
+ }
59
+ if (value.kind === "model") {
60
+ const modelId = typeof value.modelId === "string"
61
+ ? value.modelId
62
+ : typeof value.model === "string"
63
+ ? value.model
64
+ : undefined;
65
+ return typeof value.provider === "string" && modelId !== undefined;
66
+ }
67
+ return false;
68
+ }
69
+ function nodeHasInputPort(node, portId) {
70
+ return (node.inputs ?? []).some((p) => p.id === portId);
71
+ }
72
+ function nodeHasOutputPort(node, portId) {
73
+ return (node.outputs ?? []).some((p) => p.id === portId);
74
+ }
75
+ function isExecutableNodeParameters(value) {
76
+ if (!isRecord(value))
77
+ return false;
78
+ return value.profile === constants_js_1.EXECUTABLE_NODE_PROFILE;
79
+ }
80
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ExecutableGraphDocument } from "../types/executable-graph.js";
2
+ import type { LegacyGraphModelObject } from "../types/legacy.js";
3
+ export declare function migrateLegacyGraphModelObjectToGraphenixExecutable(legacy: LegacyGraphModelObject): ExecutableGraphDocument;
4
+ //# sourceMappingURL=migrate-legacy-graph-model-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-legacy-graph-model-object.d.ts","sourceRoot":"","sources":["../../src/migration/migrate-legacy-graph-model-object.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAajE,wBAAgB,kDAAkD,CAChE,MAAM,EAAE,sBAAsB,GAC7B,uBAAuB,CAqDzB"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateLegacyGraphModelObjectToGraphenixExecutable = migrateLegacyGraphModelObjectToGraphenixExecutable;
4
+ const graphenix_core_1 = require("@x12i/graphenix-core");
5
+ const constants_js_1 = require("../constants.js");
6
+ const utils_js_1 = require("../internal/utils.js");
7
+ function migrateLegacyGraphModelObjectToGraphenixExecutable(legacy) {
8
+ const nodes = migrateNodes(legacy.nodes);
9
+ const edges = migrateEdges(legacy.edges, nodes);
10
+ const modelConfig = migrateGraphModelConfig(legacy.modelConfig);
11
+ const doc = {
12
+ formatVersion: graphenix_core_1.GRAPHENIX_FORMAT_VERSION,
13
+ id: legacy.id ?? "graph:migrated",
14
+ revision: legacy.version,
15
+ name: legacy.name,
16
+ graph: {
17
+ nodes: nodes,
18
+ edges,
19
+ inputs: [],
20
+ outputs: [],
21
+ metadata: {
22
+ graphEntry: legacy.metadata?.graphEntry,
23
+ graphResponse: legacy.metadata?.graphResponse,
24
+ extensions: {
25
+ [constants_js_1.EXECUTABLE_PROFILE_NAMESPACE]: {
26
+ profileVersion: constants_js_1.EXECUTABLE_PROFILE_VERSION,
27
+ modelConfig: modelConfig ?? defaultGraphModelConfig(),
28
+ variables: legacy.variables,
29
+ jobKnowledge: legacy.jobKnowledge
30
+ }
31
+ }
32
+ }
33
+ },
34
+ types: []
35
+ };
36
+ if (legacy.response?.shape) {
37
+ doc.graph.outputs.push({
38
+ id: "graph-output:final",
39
+ name: "Final Output",
40
+ type: "builtin:object",
41
+ contract: {
42
+ semanticKind: "final-output",
43
+ required: true,
44
+ schema: legacy.response.shape
45
+ }
46
+ });
47
+ doc.graph.metadata.graphResponse = {
48
+ ...doc.graph.metadata?.graphResponse,
49
+ finalOutputSchema: legacy.response.shape
50
+ };
51
+ }
52
+ return doc;
53
+ }
54
+ const LEGACY_PROFILE_TO_CHOICE = {
55
+ economy: "cheap/default",
56
+ cheap: "cheap/default",
57
+ balanced: "vol/default",
58
+ thinking: "deep/openai_deep",
59
+ strong: "vol/pro"
60
+ };
61
+ function migrateProfileSelection(selection) {
62
+ if (selection.kind === "profile") {
63
+ const key = selection.choice
64
+ ? `${selection.profile}/${selection.choice}`
65
+ : LEGACY_PROFILE_TO_CHOICE[selection.profile] ?? `${selection.profile}/default`;
66
+ return { kind: "profileChoice", key, params: selection.params };
67
+ }
68
+ if (selection.kind === "model") {
69
+ return {
70
+ kind: "model",
71
+ provider: selection.provider,
72
+ modelId: selection.modelId ?? selection.model ?? "unknown",
73
+ params: selection.params
74
+ };
75
+ }
76
+ return selection;
77
+ }
78
+ function migrateTriplet(triplet) {
79
+ return {
80
+ preActionModel: migrateProfileSelection(triplet.preActionModel),
81
+ skillModel: migrateProfileSelection(triplet.skillModel),
82
+ postActionModel: migrateProfileSelection(triplet.postActionModel)
83
+ };
84
+ }
85
+ function migrateGraphModelConfig(modelConfig) {
86
+ if (!modelConfig) {
87
+ return defaultGraphModelConfig();
88
+ }
89
+ return {
90
+ ...modelConfig,
91
+ cases: modelConfig.cases.map((graphCase) => ({
92
+ ...graphCase,
93
+ modelConfig: migrateTriplet(graphCase.modelConfig)
94
+ }))
95
+ };
96
+ }
97
+ function defaultGraphModelConfig() {
98
+ return {
99
+ version: "graph-model-config/v1",
100
+ cases: [
101
+ {
102
+ id: "default",
103
+ modelConfig: {
104
+ preActionModel: { kind: "profileChoice", key: "cheap/default" },
105
+ skillModel: { kind: "profileChoice", key: "vol/default" },
106
+ postActionModel: { kind: "profileChoice", key: "cheap/default" }
107
+ }
108
+ }
109
+ ],
110
+ fallbackPolicy: {
111
+ enabled: true,
112
+ allowedTriggers: ["nodeSlotMissing", "nodeModelUnavailable"],
113
+ maxAttemptsPerSlot: 1
114
+ }
115
+ };
116
+ }
117
+ function migrateNodes(rawNodes) {
118
+ if (!Array.isArray(rawNodes))
119
+ return [];
120
+ return rawNodes.map((raw, index) => {
121
+ if (!(0, utils_js_1.isRecord)(raw)) {
122
+ return createPlaceholderTaskNode(`node:migrated-${index}`);
123
+ }
124
+ const id = typeof raw.id === "string" ? raw.id : `node:migrated-${index}`;
125
+ const kind = typeof raw.kind === "string"
126
+ ? raw.kind === "task"
127
+ ? constants_js_1.TASK_NODE_KIND
128
+ : raw.kind === "finalizer"
129
+ ? constants_js_1.FINALIZER_NODE_KIND
130
+ : raw.kind
131
+ : constants_js_1.TASK_NODE_KIND;
132
+ const inputs = Array.isArray(raw.inputs)
133
+ ? raw.inputs
134
+ : [{ id: constants_js_1.DEFAULT_INPUT_PORT_ID, direction: "input", type: "builtin:object" }];
135
+ const outputs = Array.isArray(raw.outputs)
136
+ ? raw.outputs
137
+ : [{ id: constants_js_1.DEFAULT_OUTPUT_PORT_ID, direction: "output", type: "builtin:object" }];
138
+ const parameters = (0, utils_js_1.isRecord)(raw.parameters)
139
+ ? raw.parameters
140
+ : {
141
+ profile: constants_js_1.EXECUTABLE_NODE_PROFILE,
142
+ nodeType: kind === constants_js_1.FINALIZER_NODE_KIND ? "finalizer" : "task",
143
+ skillKey: typeof raw.skillKey === "string" ? raw.skillKey : "migrated-skill",
144
+ finalizerType: "single-output",
145
+ config: { from: id }
146
+ };
147
+ return {
148
+ id,
149
+ name: typeof raw.name === "string" ? raw.name : undefined,
150
+ kind,
151
+ inputs,
152
+ outputs,
153
+ parameters
154
+ };
155
+ });
156
+ }
157
+ function createPlaceholderTaskNode(id) {
158
+ return {
159
+ id,
160
+ kind: constants_js_1.TASK_NODE_KIND,
161
+ inputs: [
162
+ { id: constants_js_1.DEFAULT_INPUT_PORT_ID, direction: "input", type: "builtin:object" }
163
+ ],
164
+ outputs: [
165
+ { id: constants_js_1.DEFAULT_OUTPUT_PORT_ID, direction: "output", type: "builtin:object" }
166
+ ],
167
+ parameters: {
168
+ profile: constants_js_1.EXECUTABLE_NODE_PROFILE,
169
+ nodeType: "task",
170
+ skillKey: "migrated-skill"
171
+ }
172
+ };
173
+ }
174
+ function migrateEdges(rawEdges, nodes) {
175
+ if (!Array.isArray(rawEdges))
176
+ return [];
177
+ return rawEdges.flatMap((raw, index) => {
178
+ if (!(0, utils_js_1.isRecord)(raw))
179
+ return [];
180
+ const fromNodeId = typeof raw.from === "string"
181
+ ? raw.from
182
+ : (0, utils_js_1.isRecord)(raw.from) && typeof raw.from.nodeId === "string"
183
+ ? raw.from.nodeId
184
+ : undefined;
185
+ const toNodeId = typeof raw.to === "string"
186
+ ? raw.to
187
+ : (0, utils_js_1.isRecord)(raw.to) && typeof raw.to.nodeId === "string"
188
+ ? raw.to.nodeId
189
+ : undefined;
190
+ if (!fromNodeId || !toNodeId)
191
+ return [];
192
+ const fromNode = nodes.find((n) => n.id === fromNodeId);
193
+ const toNode = nodes.find((n) => n.id === toNodeId);
194
+ return [
195
+ {
196
+ id: typeof raw.id === "string" ? raw.id : `edge:migrated-${index}`,
197
+ from: {
198
+ nodeId: fromNodeId,
199
+ portId: ((0, utils_js_1.isRecord)(raw.from) && typeof raw.from.portId === "string"
200
+ ? raw.from.portId
201
+ : undefined) ??
202
+ fromNode?.outputs?.[0]?.id ??
203
+ constants_js_1.DEFAULT_OUTPUT_PORT_ID
204
+ },
205
+ to: {
206
+ nodeId: toNodeId,
207
+ portId: ((0, utils_js_1.isRecord)(raw.to) && typeof raw.to.portId === "string"
208
+ ? raw.to.portId
209
+ : undefined) ??
210
+ toNode?.inputs?.[0]?.id ??
211
+ constants_js_1.DEFAULT_INPUT_PORT_ID
212
+ }
213
+ }
214
+ ];
215
+ });
216
+ }
217
+ //# sourceMappingURL=migrate-legacy-graph-model-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-legacy-graph-model-object.js","sourceRoot":"","sources":["../../src/migration/migrate-legacy-graph-model-object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AuthoringExecutableGraphDocument, NormalizedExecutableGraphDocument } from "../types/executable-graph.js";
2
+ export declare function normalizeExecutableGraph(doc: AuthoringExecutableGraphDocument): NormalizedExecutableGraphDocument;
3
+ //# sourceMappingURL=normalize-executable-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-executable-graph.d.ts","sourceRoot":"","sources":["../../src/normalize/normalize-executable-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,8BAA8B,CAAC;AAUtC,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,gCAAgC,GACpC,iCAAiC,CAoCnC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeExecutableGraph = normalizeExecutableGraph;
4
+ const constants_js_1 = require("../constants.js");
5
+ const utils_js_1 = require("../internal/utils.js");
6
+ const normalize_model_config_js_1 = require("./normalize-model-config.js");
7
+ function normalizeExecutableGraph(doc) {
8
+ const next = structuredClone(doc);
9
+ const profile = (0, utils_js_1.getExecutableProfile)(next);
10
+ if (!profile?.modelConfig) {
11
+ return next;
12
+ }
13
+ const metadata = next.graph.metadata;
14
+ if (!metadata?.extensions) {
15
+ return next;
16
+ }
17
+ const normalizedProfile = {
18
+ ...profile,
19
+ modelConfig: (0, normalize_model_config_js_1.normalizeGraphModelConfig)(profile.modelConfig)
20
+ };
21
+ metadata.extensions[constants_js_1.EXECUTABLE_PROFILE_NAMESPACE] = normalizedProfile;
22
+ for (const node of next.graph.nodes) {
23
+ if (!(0, utils_js_1.isExecutableTaskNode)(node)) {
24
+ continue;
25
+ }
26
+ const taskConfig = (0, utils_js_1.getTaskNodeConfig)(node);
27
+ if (!taskConfig?.taskConfiguration?.modelConfig) {
28
+ continue;
29
+ }
30
+ taskConfig.taskConfiguration.modelConfig = (0, normalize_model_config_js_1.normalizeNodeModelConfig)(taskConfig.taskConfiguration.modelConfig);
31
+ }
32
+ return next;
33
+ }
34
+ //# sourceMappingURL=normalize-executable-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-executable-graph.js","sourceRoot":"","sources":["../../src/normalize/normalize-executable-graph.ts"],"names":[],"mappings":";;AAaA,4DAsCC;AA7CD,kDAA+D;AAC/D,mDAAqG;AACrG,2EAGqC;AAErC,SAAgB,wBAAwB,CACtC,GAAqC;IAErC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAsC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAA2B;QAChD,GAAG,OAAO;QACV,WAAW,EAAE,IAAA,qDAAyB,EACpC,OAAO,CAAC,WAAwC,CACjD;KACF,CAAC;IAEF,QAAQ,CAAC,UAAU,CAAC,2CAA4B,CAAC,GAAG,iBAAiB,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,IAAA,+BAAoB,EAAC,IAAI,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,UAAU,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAA,oDAAwB,EACjE,UAAU,CAAC,iBAAiB,CAAC,WAAW,CACzC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AuthoringGraphModelConfig, AuthoringNodeModelConfig, NormalizedGraphModelConfig } from "../types/model-config.js";
2
+ export declare function normalizeGraphModelConfig(modelConfig: AuthoringGraphModelConfig): NormalizedGraphModelConfig;
3
+ export declare function normalizeNodeModelConfig(modelConfig: AuthoringNodeModelConfig | undefined): AuthoringNodeModelConfig | undefined;
4
+ //# sourceMappingURL=normalize-model-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-model-config.d.ts","sourceRoot":"","sources":["../../src/normalize/normalize-model-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EAGxB,0BAA0B,EAE3B,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,yBAAyB,GACrC,0BAA0B,CA6C5B;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAChD,wBAAwB,GAAG,SAAS,CAwBtC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeGraphModelConfig = normalizeGraphModelConfig;
4
+ exports.normalizeNodeModelConfig = normalizeNodeModelConfig;
5
+ function normalizeGraphModelConfig(modelConfig) {
6
+ if (modelConfig.cases && modelConfig.cases.length > 0) {
7
+ const cases = structuredClone(modelConfig.cases);
8
+ if (modelConfig.default &&
9
+ !cases.some((graphCase) => graphCase.id === "default")) {
10
+ cases.unshift({
11
+ id: "default",
12
+ modelConfig: structuredClone(modelConfig.default)
13
+ });
14
+ }
15
+ return {
16
+ version: "graph-model-config/v1",
17
+ cases,
18
+ fallbackPolicy: modelConfig.fallbackPolicy
19
+ ? structuredClone(modelConfig.fallbackPolicy)
20
+ : undefined
21
+ };
22
+ }
23
+ if (modelConfig.default) {
24
+ return {
25
+ version: "graph-model-config/v1",
26
+ cases: [
27
+ {
28
+ id: "default",
29
+ modelConfig: structuredClone(modelConfig.default)
30
+ }
31
+ ],
32
+ fallbackPolicy: modelConfig.fallbackPolicy
33
+ ? structuredClone(modelConfig.fallbackPolicy)
34
+ : undefined
35
+ };
36
+ }
37
+ return {
38
+ version: "graph-model-config/v1",
39
+ cases: []
40
+ };
41
+ }
42
+ function normalizeNodeModelConfig(modelConfig) {
43
+ if (!modelConfig) {
44
+ return undefined;
45
+ }
46
+ if (modelConfig.cases && modelConfig.cases.length > 0) {
47
+ return structuredClone(modelConfig);
48
+ }
49
+ if (modelConfig.modelConfig) {
50
+ const cases = [
51
+ {
52
+ id: "default",
53
+ modelConfig: structuredClone(modelConfig.modelConfig)
54
+ }
55
+ ];
56
+ return {
57
+ version: modelConfig.version,
58
+ inherit: modelConfig.inherit,
59
+ cases
60
+ };
61
+ }
62
+ return structuredClone(modelConfig);
63
+ }
64
+ //# sourceMappingURL=normalize-model-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-model-config.js","sourceRoot":"","sources":["../../src/normalize/normalize-model-config.ts"],"names":[],"mappings":";;AASA,8DA+CC;AAED,4DA0BC;AA3ED,SAAgB,yBAAyB,CACvC,WAAsC;IAEtC,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjD,IACE,WAAW,CAAC,OAAO;YACnB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EACtD,CAAC;YACD,KAAK,CAAC,OAAO,CAAC;gBACZ,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,eAAe,CAC1B,WAAW,CAAC,OAAO,CACM;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,uBAAuB;YAChC,KAAK;YACL,cAAc,EAAE,WAAW,CAAC,cAAc;gBACxC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;gBAC7C,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,SAAS;oBACb,WAAW,EAAE,eAAe,CAC1B,WAAW,CAAC,OAAO,CACM;iBAC5B;aACF;YACD,cAAc,EAAE,WAAW,CAAC,cAAc;gBACxC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;gBAC7C,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,uBAAuB;QAChC,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CACtC,WAAiD;IAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,KAAK,GAA0B;YACnC;gBACE,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC;aACtD;SACF,CAAC;QACF,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,KAAK;SACN,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { isProfileChoiceKeyFormat } from "@x12i/ai-profiles";
2
+ export { isProfileChoiceKeyFormat };
3
+ /** All bundled profile/choice keys from @x12i/ai-profiles. */
4
+ export declare const KNOWN_PROFILE_CHOICE_KEYS: Set<string>;
5
+ /**
6
+ * Whether a key is a known valid profile/choice.
7
+ * Uses the bundled @x12i/ai-profiles registry unless a custom set is supplied (e.g. tests).
8
+ */
9
+ export declare function isKnownProfileChoice(key: string, knownKeys?: Set<string>): boolean;
10
+ //# sourceMappingURL=known-profile-choices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"known-profile-choices.d.ts","sourceRoot":"","sources":["../../src/profile-choice/known-profile-choices.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,8DAA8D;AAC9D,eAAO,MAAM,yBAAyB,aAIrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,OAAO,CAKT"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KNOWN_PROFILE_CHOICE_KEYS = exports.isProfileChoiceKeyFormat = void 0;
4
+ exports.isKnownProfileChoice = isKnownProfileChoice;
5
+ const ai_profiles_1 = require("@x12i/ai-profiles");
6
+ Object.defineProperty(exports, "isProfileChoiceKeyFormat", { enumerable: true, get: function () { return ai_profiles_1.isProfileChoiceKeyFormat; } });
7
+ /** All bundled profile/choice keys from @x12i/ai-profiles. */
8
+ exports.KNOWN_PROFILE_CHOICE_KEYS = new Set((0, ai_profiles_1.listRegistryProfileChoiceKeys)((0, ai_profiles_1.getBundledRegistry)()).map((ref) => (0, ai_profiles_1.formatProfileChoiceKey)(ref.profile, ref.choice)));
9
+ /**
10
+ * Whether a key is a known valid profile/choice.
11
+ * Uses the bundled @x12i/ai-profiles registry unless a custom set is supplied (e.g. tests).
12
+ */
13
+ function isKnownProfileChoice(key, knownKeys) {
14
+ if (knownKeys) {
15
+ return knownKeys.has(key);
16
+ }
17
+ return (0, ai_profiles_1.isKnownProfileChoice)(key);
18
+ }
19
+ //# sourceMappingURL=known-profile-choices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"known-profile-choices.js","sourceRoot":"","sources":["../../src/profile-choice/known-profile-choices.ts"],"names":[],"mappings":";;;AAqBA,oDAQC;AA7BD,mDAM2B;AAElB,yGAJP,sCAAwB,OAIO;AAEjC,8DAA8D;AACjD,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAC9C,IAAA,2CAA6B,EAAC,IAAA,gCAAkB,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9D,IAAA,oCAAsB,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAChD,CACF,CAAC;AAEF;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,GAAW,EACX,SAAuB;IAEvB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAA,kCAAgC,EAAC,GAAG,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ExecutableGraphValidationError } from "../types/errors.js";
2
+ import type { AiModelSelection } from "../types/model-config.js";
3
+ export interface ProfileChoiceValidationOptions {
4
+ knownKeys?: Set<string>;
5
+ }
6
+ export declare function validateAiModelSelection(selection: unknown, path: string, options?: ProfileChoiceValidationOptions): ExecutableGraphValidationError[];
7
+ export declare function formatAiModelSelectionLabel(selection: AiModelSelection): string;
8
+ //# sourceMappingURL=validate-profile-choice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-profile-choice.d.ts","sourceRoot":"","sources":["../../src/profile-choice/validate-profile-choice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOjE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,8BAAmC,GAC3C,8BAA8B,EAAE,CAwFlC;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAS/E"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAiModelSelection = validateAiModelSelection;
4
+ exports.formatAiModelSelectionLabel = formatAiModelSelectionLabel;
5
+ const utils_js_1 = require("../internal/utils.js");
6
+ const known_profile_choices_js_1 = require("./known-profile-choices.js");
7
+ function validateAiModelSelection(selection, path, options = {}) {
8
+ const errors = [];
9
+ if (!(0, utils_js_1.isRecord)(selection)) {
10
+ errors.push((0, utils_js_1.execError)("NODE_MODEL_CONFIG_INVALID", "AI model selection must be an object.", path));
11
+ return errors;
12
+ }
13
+ if (selection.kind === "profile") {
14
+ errors.push((0, utils_js_1.execError)("PROFILE_SELECTION_KIND_DEPRECATED", 'Use kind "profileChoice" with an explicit profile/choice key instead of kind "profile".', path));
15
+ return errors;
16
+ }
17
+ if (selection.kind === "profileChoice") {
18
+ if (typeof selection.key !== "string") {
19
+ errors.push((0, utils_js_1.execError)("PROFILE_CHOICE_KEY_FORMAT_INVALID", "profileChoice.key must be a string.", `${path}/key`));
20
+ return errors;
21
+ }
22
+ if (!(0, known_profile_choices_js_1.isProfileChoiceKeyFormat)(selection.key)) {
23
+ errors.push((0, utils_js_1.execError)("PROFILE_CHOICE_KEY_FORMAT_INVALID", `profileChoice key "${selection.key}" must use profile/choice format (e.g. vol/default).`, `${path}/key`));
24
+ return errors;
25
+ }
26
+ if (!(0, known_profile_choices_js_1.isKnownProfileChoice)(selection.key, options.knownKeys)) {
27
+ errors.push((0, utils_js_1.execError)("PROFILE_CHOICE_KEY_UNKNOWN", `Unknown profileChoice key "${selection.key}".`, `${path}/key`));
28
+ }
29
+ return errors;
30
+ }
31
+ if (selection.kind === "model") {
32
+ const modelId = typeof selection.modelId === "string"
33
+ ? selection.modelId
34
+ : typeof selection.model === "string"
35
+ ? selection.model
36
+ : undefined;
37
+ if (typeof selection.provider !== "string" || !modelId) {
38
+ errors.push((0, utils_js_1.execError)("NODE_MODEL_CONFIG_INVALID", 'Concrete model selection requires provider and modelId.', path));
39
+ }
40
+ return errors;
41
+ }
42
+ errors.push((0, utils_js_1.execError)("NODE_MODEL_CONFIG_INVALID", 'AI model selection kind must be "profileChoice" or "model".', path));
43
+ return errors;
44
+ }
45
+ function formatAiModelSelectionLabel(selection) {
46
+ if (selection.kind === "profileChoice") {
47
+ return `profileChoice:${selection.key}`;
48
+ }
49
+ if (selection.kind === "profile") {
50
+ return `profile:${selection.profile}`;
51
+ }
52
+ const modelId = selection.modelId ?? selection.model ?? "unknown";
53
+ return `${selection.provider}/${modelId}`;
54
+ }
55
+ //# sourceMappingURL=validate-profile-choice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-profile-choice.js","sourceRoot":"","sources":["../../src/profile-choice/validate-profile-choice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DeterministicCaseContext } from "../types/case-condition.js";
2
+ import type { ExecutableGraphDocument } from "../types/executable-graph.js";
3
+ import type { GraphRuntimeObject } from "../types/runtime.js";
4
+ export declare function buildDeterministicCaseContext(doc: ExecutableGraphDocument, runtime?: Partial<GraphRuntimeObject> & {
5
+ environment?: DeterministicCaseContext["runtime"]["environment"];
6
+ flags?: Record<string, unknown>;
7
+ context?: Record<string, unknown>;
8
+ }): DeterministicCaseContext;
9
+ //# sourceMappingURL=build-deterministic-case-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-deterministic-case-context.d.ts","sourceRoot":"","sources":["../../src/resolution/build-deterministic-case-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,uBAAuB,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;IACtC,WAAW,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,GACA,wBAAwB,CAqB1B"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDeterministicCaseContext = buildDeterministicCaseContext;
4
+ function buildDeterministicCaseContext(doc, runtime) {
5
+ return {
6
+ runtime: {
7
+ mode: runtime?.mode,
8
+ environment: runtime?.environment,
9
+ job: runtime?.job
10
+ ? {
11
+ agentId: runtime.job.agentId,
12
+ jobTypeId: runtime.job.jobTypeId
13
+ }
14
+ : undefined,
15
+ input: runtime?.input,
16
+ variables: runtime?.variables,
17
+ flags: runtime?.flags,
18
+ context: runtime?.context
19
+ },
20
+ graph: {
21
+ id: doc.id,
22
+ revision: doc.revision
23
+ }
24
+ };
25
+ }
26
+ //# sourceMappingURL=build-deterministic-case-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-deterministic-case-context.js","sourceRoot":"","sources":["../../src/resolution/build-deterministic-case-context.ts"],"names":[],"mappings":";;AAIA,sEA4BC;AA5BD,SAAgB,6BAA6B,CAC3C,GAA4B,EAC5B,OAIC;IAED,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,GAAG,EAAE,OAAO,EAAE,GAAG;gBACf,CAAC,CAAC;oBACE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;oBAC5B,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;iBACjC;gBACH,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO;SAC1B;QACD,KAAK,EAAE;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ExecutableGraphDocument } from "../types/executable-graph.js";
2
+ import type { GraphModelConfig, RequiredAiModelTriplet } from "../types/model-config.js";
3
+ import type { DeterministicCaseContext, SelectedGraphModelCase } from "../types/case-condition.js";
4
+ import { selectGraphModelCase } from "../case-condition/select-graph-model-case.js";
5
+ export declare function resolveGraphModelConfig(doc: ExecutableGraphDocument, context?: DeterministicCaseContext): {
6
+ caseId: string;
7
+ triplet: RequiredAiModelTriplet;
8
+ modelConfig: GraphModelConfig;
9
+ selection: SelectedGraphModelCase;
10
+ };
11
+ export { selectGraphModelCase };
12
+ //# sourceMappingURL=resolve-graph-model-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-graph-model-config.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-graph-model-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAGpF,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,uBAAuB,EAC5B,OAAO,CAAC,EAAE,wBAAwB,GACjC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,sBAAsB,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,sBAAsB,CAAC;CACnC,CAoBA;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}