@substrate-ai/factory 0.19.54 → 0.20.2

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 (491) hide show
  1. package/README.md +39 -0
  2. package/dist/config.d.ts +4 -4
  3. package/package.json +12 -3
  4. package/dist/__tests__/config.test.d.ts +0 -11
  5. package/dist/__tests__/config.test.d.ts.map +0 -1
  6. package/dist/__tests__/config.test.js +0 -215
  7. package/dist/__tests__/config.test.js.map +0 -1
  8. package/dist/__tests__/factory-run-command.test.d.ts +0 -12
  9. package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
  10. package/dist/__tests__/factory-run-command.test.js +0 -454
  11. package/dist/__tests__/factory-run-command.test.js.map +0 -1
  12. package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
  13. package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
  14. package/dist/__tests__/factory-validate-command.test.js +0 -339
  15. package/dist/__tests__/factory-validate-command.test.js.map +0 -1
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
  17. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
  18. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
  19. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
  21. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
  22. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
  23. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
  24. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
  25. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
  26. package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
  27. package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
  29. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
  30. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
  31. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
  33. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
  34. package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
  35. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
  36. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
  37. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
  38. package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
  39. package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
  40. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
  41. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
  42. package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
  43. package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
  44. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
  45. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
  46. package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
  47. package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
  48. package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
  49. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
  50. package/dist/__tests__/integration/convergence-validation.test.js +0 -449
  51. package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
  53. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
  54. package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
  55. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
  57. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
  58. package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
  59. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
  61. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
  62. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
  63. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
  64. package/dist/__tests__/integration/events.test.d.ts +0 -8
  65. package/dist/__tests__/integration/events.test.d.ts.map +0 -1
  66. package/dist/__tests__/integration/events.test.js +0 -194
  67. package/dist/__tests__/integration/events.test.js.map +0 -1
  68. package/dist/__tests__/integration/graphs.d.ts +0 -59
  69. package/dist/__tests__/integration/graphs.d.ts.map +0 -1
  70. package/dist/__tests__/integration/graphs.js +0 -164
  71. package/dist/__tests__/integration/graphs.js.map +0 -1
  72. package/dist/__tests__/integration/helpers.d.ts +0 -127
  73. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  74. package/dist/__tests__/integration/helpers.js +0 -167
  75. package/dist/__tests__/integration/helpers.js.map +0 -1
  76. package/dist/__tests__/integration/integrity.test.d.ts +0 -8
  77. package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
  78. package/dist/__tests__/integration/integrity.test.js +0 -198
  79. package/dist/__tests__/integration/integrity.test.js.map +0 -1
  80. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
  81. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
  82. package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
  83. package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
  84. package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
  85. package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
  86. package/dist/__tests__/integration/manager-loop.test.js +0 -276
  87. package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
  88. package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
  89. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
  90. package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
  91. package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
  93. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
  94. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
  95. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
  96. package/dist/__tests__/integration/persistence.test.d.ts +0 -8
  97. package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
  98. package/dist/__tests__/integration/persistence.test.js +0 -129
  99. package/dist/__tests__/integration/persistence.test.js.map +0 -1
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
  101. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
  102. package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
  103. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
  104. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
  105. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
  106. package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
  107. package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
  108. package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
  109. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
  110. package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
  111. package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
  112. package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
  113. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
  114. package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
  115. package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
  116. package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
  117. package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
  118. package/dist/__tests__/integration/validation-errors.test.js +0 -150
  119. package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
  120. package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
  121. package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
  122. package/dist/agent/__tests__/loop-detection.test.js +0 -236
  123. package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
  124. package/dist/agent/__tests__/loop.test.d.ts +0 -2
  125. package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
  126. package/dist/agent/__tests__/loop.test.js +0 -868
  127. package/dist/agent/__tests__/loop.test.js.map +0 -1
  128. package/dist/agent/__tests__/truncation.test.d.ts +0 -2
  129. package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
  130. package/dist/agent/__tests__/truncation.test.js +0 -276
  131. package/dist/agent/__tests__/truncation.test.js.map +0 -1
  132. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
  133. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
  134. package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
  135. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
  136. package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
  137. package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
  138. package/dist/agent/tools/__tests__/environment.test.js +0 -33
  139. package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
  140. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
  141. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
  142. package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
  143. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
  144. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
  145. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
  146. package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
  147. package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
  148. package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
  149. package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
  150. package/dist/agent/tools/__tests__/patch.test.js +0 -116
  151. package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
  152. package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
  153. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
  154. package/dist/agent/tools/__tests__/profiles.test.js +0 -125
  155. package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
  156. package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
  157. package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
  158. package/dist/agent/tools/__tests__/registry.test.js +0 -94
  159. package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
  160. package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
  161. package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
  162. package/dist/agent/tools/__tests__/shared.test.js +0 -131
  163. package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
  164. package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
  165. package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
  166. package/dist/backend/__tests__/direct-backend.test.js +0 -393
  167. package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
  168. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
  169. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
  170. package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
  171. package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
  172. package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
  173. package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
  174. package/dist/backend/__tests__/mock-backend.test.js +0 -273
  175. package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
  176. package/dist/backend/__tests__/parity.test.d.ts +0 -17
  177. package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
  178. package/dist/backend/__tests__/parity.test.js +0 -411
  179. package/dist/backend/__tests__/parity.test.js.map +0 -1
  180. package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
  181. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
  182. package/dist/context/__tests__/auto-summarizer.test.js +0 -189
  183. package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
  184. package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
  185. package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
  186. package/dist/context/__tests__/context-cli-command.test.js +0 -331
  187. package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
  188. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
  189. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
  190. package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
  191. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
  192. package/dist/context/__tests__/summarizer.test.d.ts +0 -2
  193. package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
  194. package/dist/context/__tests__/summarizer.test.js +0 -189
  195. package/dist/context/__tests__/summarizer.test.js.map +0 -1
  196. package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
  197. package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
  198. package/dist/context/__tests__/summary-cache.test.js +0 -214
  199. package/dist/context/__tests__/summary-cache.test.js.map +0 -1
  200. package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
  201. package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
  202. package/dist/context/__tests__/summary-metrics.test.js +0 -172
  203. package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
  204. package/dist/context/__tests__/summary-types.test.d.ts +0 -2
  205. package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
  206. package/dist/context/__tests__/summary-types.test.js +0 -130
  207. package/dist/context/__tests__/summary-types.test.js.map +0 -1
  208. package/dist/convergence/__tests__/budget.test.d.ts +0 -6
  209. package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
  210. package/dist/convergence/__tests__/budget.test.js +0 -187
  211. package/dist/convergence/__tests__/budget.test.js.map +0 -1
  212. package/dist/convergence/__tests__/controller.test.d.ts +0 -9
  213. package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
  214. package/dist/convergence/__tests__/controller.test.js +0 -585
  215. package/dist/convergence/__tests__/controller.test.js.map +0 -1
  216. package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
  217. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
  218. package/dist/convergence/__tests__/dual-signal.test.js +0 -123
  219. package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
  220. package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
  221. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
  222. package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
  223. package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
  224. package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
  225. package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
  226. package/dist/convergence/__tests__/plateau.test.js +0 -163
  227. package/dist/convergence/__tests__/plateau.test.js.map +0 -1
  228. package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
  229. package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
  230. package/dist/convergence/__tests__/remediation.test.js +0 -209
  231. package/dist/convergence/__tests__/remediation.test.js.map +0 -1
  232. package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
  233. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
  234. package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
  235. package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
  236. package/dist/factory-command.test.d.ts +0 -8
  237. package/dist/factory-command.test.d.ts.map +0 -1
  238. package/dist/factory-command.test.js +0 -304
  239. package/dist/factory-command.test.js.map +0 -1
  240. package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
  241. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
  242. package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
  243. package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
  244. package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
  245. package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
  246. package/dist/graph/__tests__/checkpoint.test.js +0 -329
  247. package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
  248. package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
  249. package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
  250. package/dist/graph/__tests__/condition-parser.test.js +0 -406
  251. package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
  252. package/dist/graph/__tests__/context.test.d.ts +0 -14
  253. package/dist/graph/__tests__/context.test.d.ts.map +0 -1
  254. package/dist/graph/__tests__/context.test.js +0 -276
  255. package/dist/graph/__tests__/context.test.js.map +0 -1
  256. package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
  257. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
  258. package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
  259. package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
  260. package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
  261. package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
  262. package/dist/graph/__tests__/edge-selector.test.js +0 -452
  263. package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
  264. package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
  265. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
  266. package/dist/graph/__tests__/executor-convergence.test.js +0 -432
  267. package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
  268. package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
  269. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
  270. package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
  271. package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
  272. package/dist/graph/__tests__/executor.test.d.ts +0 -14
  273. package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
  274. package/dist/graph/__tests__/executor.test.js +0 -901
  275. package/dist/graph/__tests__/executor.test.js.map +0 -1
  276. package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
  277. package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
  278. package/dist/graph/__tests__/fidelity.test.js +0 -135
  279. package/dist/graph/__tests__/fidelity.test.js.map +0 -1
  280. package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
  281. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
  282. package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
  283. package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
  284. package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
  285. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
  286. package/dist/graph/__tests__/parser-chaining.test.js +0 -215
  287. package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
  288. package/dist/graph/__tests__/parser.test.d.ts +0 -22
  289. package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
  290. package/dist/graph/__tests__/parser.test.js +0 -452
  291. package/dist/graph/__tests__/parser.test.js.map +0 -1
  292. package/dist/graph/__tests__/run-state.test.d.ts +0 -13
  293. package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
  294. package/dist/graph/__tests__/run-state.test.js +0 -189
  295. package/dist/graph/__tests__/run-state.test.js.map +0 -1
  296. package/dist/graph/__tests__/transformer.test.d.ts +0 -16
  297. package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
  298. package/dist/graph/__tests__/transformer.test.js +0 -350
  299. package/dist/graph/__tests__/transformer.test.js.map +0 -1
  300. package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
  301. package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
  302. package/dist/graph/__tests__/validator-errors.test.js +0 -572
  303. package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
  304. package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
  305. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
  306. package/dist/graph/__tests__/validator-warnings.test.js +0 -363
  307. package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
  308. package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
  309. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
  310. package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
  311. package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
  312. package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
  313. package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
  314. package/dist/handlers/__tests__/fan-in.test.js +0 -399
  315. package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
  316. package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
  317. package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
  318. package/dist/handlers/__tests__/join-policy.test.js +0 -201
  319. package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
  320. package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
  321. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
  322. package/dist/handlers/__tests__/manager-loop.test.js +0 -322
  323. package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
  324. package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
  325. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
  326. package/dist/handlers/__tests__/parallel-events.test.js +0 -252
  327. package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
  328. package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
  329. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
  330. package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
  331. package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
  332. package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
  333. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
  334. package/dist/handlers/__tests__/parallel-join.test.js +0 -267
  335. package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
  336. package/dist/handlers/__tests__/registry.test.d.ts +0 -14
  337. package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
  338. package/dist/handlers/__tests__/registry.test.js +0 -315
  339. package/dist/handlers/__tests__/registry.test.js.map +0 -1
  340. package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
  341. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
  342. package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
  343. package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
  344. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
  345. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
  346. package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
  347. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
  348. package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
  349. package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
  350. package/dist/handlers/__tests__/subgraph.test.js +0 -369
  351. package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
  352. package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
  353. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
  354. package/dist/handlers/__tests__/tool-handler.test.js +0 -184
  355. package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
  356. package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
  357. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
  358. package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
  359. package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
  360. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
  361. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
  362. package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
  363. package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
  364. package/dist/llm/__tests__/client.test.d.ts +0 -2
  365. package/dist/llm/__tests__/client.test.d.ts.map +0 -1
  366. package/dist/llm/__tests__/client.test.js +0 -198
  367. package/dist/llm/__tests__/client.test.js.map +0 -1
  368. package/dist/llm/__tests__/types.test.d.ts +0 -2
  369. package/dist/llm/__tests__/types.test.d.ts.map +0 -1
  370. package/dist/llm/__tests__/types.test.js +0 -289
  371. package/dist/llm/__tests__/types.test.js.map +0 -1
  372. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
  373. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
  374. package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
  375. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
  376. package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
  377. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
  378. package/dist/llm/middleware/__tests__/logging.test.js +0 -127
  379. package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
  380. package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
  381. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
  382. package/dist/llm/middleware/__tests__/retry.test.js +0 -126
  383. package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
  384. package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
  385. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
  386. package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
  387. package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
  388. package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
  389. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
  390. package/dist/llm/providers/__tests__/gemini.test.js +0 -591
  391. package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
  392. package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
  393. package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
  394. package/dist/llm/providers/__tests__/openai.test.js +0 -546
  395. package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
  396. package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
  397. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
  398. package/dist/persistence/__tests__/factory-queries.test.js +0 -372
  399. package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
  400. package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
  401. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
  402. package/dist/persistence/__tests__/factory-schema.test.js +0 -105
  403. package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
  404. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
  405. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
  406. package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
  407. package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
  408. package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
  409. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
  410. package/dist/scenarios/__tests__/cli-command.test.js +0 -275
  411. package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
  412. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
  413. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
  414. package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
  415. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
  416. package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
  417. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
  418. package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
  419. package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
  420. package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
  421. package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
  422. package/dist/scenarios/__tests__/scorer.test.js +0 -225
  423. package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
  424. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
  425. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
  426. package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
  427. package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
  428. package/dist/scenarios/__tests__/store.test.d.ts +0 -5
  429. package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
  430. package/dist/scenarios/__tests__/store.test.js +0 -169
  431. package/dist/scenarios/__tests__/store.test.js.map +0 -1
  432. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
  433. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
  434. package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
  435. package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
  436. package/dist/templates/__tests__/templates.test.d.ts +0 -7
  437. package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
  438. package/dist/templates/__tests__/templates.test.js +0 -92
  439. package/dist/templates/__tests__/templates.test.js.map +0 -1
  440. package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
  441. package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
  442. package/dist/twins/__tests__/docker-compose.test.js +0 -247
  443. package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
  444. package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
  445. package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
  446. package/dist/twins/__tests__/health-monitor.test.js +0 -301
  447. package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
  448. package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
  449. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
  450. package/dist/twins/__tests__/integration/e2e.test.js +0 -146
  451. package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
  452. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts +0 -16
  453. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts.map +0 -1
  454. package/dist/twins/__tests__/integration/health-monitor-integration.test.js +0 -183
  455. package/dist/twins/__tests__/integration/health-monitor-integration.test.js.map +0 -1
  456. package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
  457. package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
  458. package/dist/twins/__tests__/integration/helpers.js +0 -67
  459. package/dist/twins/__tests__/integration/helpers.js.map +0 -1
  460. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
  461. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
  462. package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
  463. package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
  464. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
  465. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
  466. package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
  467. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
  468. package/dist/twins/__tests__/persistence.test.d.ts +0 -10
  469. package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
  470. package/dist/twins/__tests__/persistence.test.js +0 -300
  471. package/dist/twins/__tests__/persistence.test.js.map +0 -1
  472. package/dist/twins/__tests__/registry.test.d.ts +0 -7
  473. package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
  474. package/dist/twins/__tests__/registry.test.js +0 -282
  475. package/dist/twins/__tests__/registry.test.js.map +0 -1
  476. package/dist/twins/__tests__/run-state.test.d.ts +0 -9
  477. package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
  478. package/dist/twins/__tests__/run-state.test.js +0 -112
  479. package/dist/twins/__tests__/run-state.test.js.map +0 -1
  480. package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
  481. package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
  482. package/dist/twins/__tests__/templates-cli.test.js +0 -187
  483. package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
  484. package/dist/twins/__tests__/templates.test.d.ts +0 -7
  485. package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
  486. package/dist/twins/__tests__/templates.test.js +0 -87
  487. package/dist/twins/__tests__/templates.test.js.map +0 -1
  488. package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
  489. package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
  490. package/dist/twins/__tests__/twins-cli.test.js +0 -365
  491. package/dist/twins/__tests__/twins-cli.test.js.map +0 -1
@@ -1,546 +0,0 @@
1
- // packages/factory/src/llm/providers/__tests__/openai.test.ts
2
- // Unit tests for OpenAIAdapter — covers AC1 through AC7.
3
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
4
- import { OpenAIAdapter } from '../openai.js';
5
- // ---------------------------------------------------------------------------
6
- // Test helpers
7
- // ---------------------------------------------------------------------------
8
- function makeMockResponse(body, status = 200) {
9
- return {
10
- ok: status >= 200 && status < 300,
11
- status,
12
- json: () => Promise.resolve(body),
13
- text: () => Promise.resolve(JSON.stringify(body)),
14
- };
15
- }
16
- function makeSuccessResponse(overrides = {}) {
17
- return {
18
- id: 'resp_test_1',
19
- model: 'gpt-5.2',
20
- status: 'completed',
21
- output: [
22
- {
23
- type: 'message',
24
- role: 'assistant',
25
- content: [{ type: 'output_text', text: 'Hello there!' }],
26
- },
27
- ],
28
- usage: {
29
- input_tokens: 10,
30
- output_tokens: 5,
31
- },
32
- ...overrides,
33
- };
34
- }
35
- function makeMinimalRequest(overrides = {}) {
36
- return {
37
- model: 'gpt-5.2',
38
- messages: [{ role: 'user', content: [{ kind: 'text', text: 'Hi' }] }],
39
- ...overrides,
40
- };
41
- }
42
- // ---------------------------------------------------------------------------
43
- // Test suite
44
- // ---------------------------------------------------------------------------
45
- describe('OpenAIAdapter', () => {
46
- beforeEach(() => {
47
- process.env['OPENAI_API_KEY'] = 'sk-test-key';
48
- vi.stubGlobal('fetch', vi.fn());
49
- });
50
- afterEach(() => {
51
- delete process.env['OPENAI_API_KEY'];
52
- delete process.env['OPENAI_BASE_URL'];
53
- delete process.env['OPENAI_ORG_ID'];
54
- delete process.env['OPENAI_PROJECT_ID'];
55
- vi.unstubAllGlobals();
56
- });
57
- // -------------------------------------------------------------------------
58
- // AC1: Construction and Authentication
59
- // -------------------------------------------------------------------------
60
- describe('AC1: Construction and Authentication', () => {
61
- it('constructs with OPENAI_API_KEY from environment', () => {
62
- const adapter = new OpenAIAdapter();
63
- expect(adapter.name).toBe('openai');
64
- });
65
- it('throws when no API key is found', () => {
66
- delete process.env['OPENAI_API_KEY'];
67
- expect(() => new OpenAIAdapter()).toThrow('OPENAI_API_KEY');
68
- });
69
- it('explicit apiKey option overrides env var', async () => {
70
- const adapter = new OpenAIAdapter({ apiKey: 'sk-explicit-key' });
71
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
72
- await adapter.complete(makeMinimalRequest());
73
- const callArgs = vi.mocked(fetch).mock.calls[0];
74
- expect(callArgs).toBeDefined();
75
- const headers = callArgs[1]?.headers;
76
- expect(headers['Authorization']).toBe('Bearer sk-explicit-key');
77
- });
78
- it('reads OPENAI_BASE_URL from environment', async () => {
79
- process.env['OPENAI_BASE_URL'] = 'https://custom.api.example.com/v1';
80
- const adapter = new OpenAIAdapter();
81
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
82
- await adapter.complete(makeMinimalRequest());
83
- const url = vi.mocked(fetch).mock.calls[0]?.[0];
84
- expect(url).toBe('https://custom.api.example.com/v1/responses');
85
- });
86
- it('strips trailing slash from baseUrl', async () => {
87
- const adapter = new OpenAIAdapter({ baseUrl: 'https://api.openai.com/v1/' });
88
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
89
- await adapter.complete(makeMinimalRequest());
90
- const url = vi.mocked(fetch).mock.calls[0]?.[0];
91
- expect(url).toBe('https://api.openai.com/v1/responses');
92
- });
93
- it('includes OpenAI-Organization header when orgId is provided', async () => {
94
- process.env['OPENAI_ORG_ID'] = 'org-test-123';
95
- const adapter = new OpenAIAdapter();
96
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
97
- await adapter.complete(makeMinimalRequest());
98
- const headers = vi.mocked(fetch).mock.calls[0]?.[1]?.headers;
99
- expect(headers['OpenAI-Organization']).toBe('org-test-123');
100
- });
101
- it('includes OpenAI-Project header when projectId is provided', async () => {
102
- const adapter = new OpenAIAdapter({ projectId: 'proj-abc' });
103
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
104
- await adapter.complete(makeMinimalRequest());
105
- const headers = vi.mocked(fetch).mock.calls[0]?.[1]?.headers;
106
- expect(headers['OpenAI-Project']).toBe('proj-abc');
107
- });
108
- });
109
- // -------------------------------------------------------------------------
110
- // AC2: System prompt → instructions field
111
- // -------------------------------------------------------------------------
112
- describe('AC2: System prompt extraction to instructions', () => {
113
- it('sends systemPrompt as instructions field and omits it from input array', async () => {
114
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
115
- const adapter = new OpenAIAdapter();
116
- await adapter.complete({
117
- model: 'gpt-5.2',
118
- messages: [{ role: 'user', content: [{ kind: 'text', text: 'Hello' }] }],
119
- systemPrompt: 'You are a helpful assistant.',
120
- });
121
- const callArgs = vi.mocked(fetch).mock.calls[0];
122
- const body = JSON.parse(callArgs[1].body);
123
- expect(body['instructions']).toBe('You are a helpful assistant.');
124
- const input = body['input'];
125
- expect(input.every(item => item.role !== 'system')).toBe(true);
126
- });
127
- it('does not set instructions when systemPrompt is absent', async () => {
128
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
129
- const adapter = new OpenAIAdapter();
130
- await adapter.complete(makeMinimalRequest());
131
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
132
- expect(Object.prototype.hasOwnProperty.call(body, 'instructions')).toBe(false);
133
- });
134
- });
135
- // -------------------------------------------------------------------------
136
- // AC3: Message array translation
137
- // -------------------------------------------------------------------------
138
- describe('AC3: Message array translation to Responses API input format', () => {
139
- it('translates user messages to { type:"message", role:"user" } with input_text content', async () => {
140
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
141
- const adapter = new OpenAIAdapter();
142
- await adapter.complete({
143
- model: 'gpt-5.2',
144
- messages: [{ role: 'user', content: [{ kind: 'text', text: 'Hello world' }] }],
145
- });
146
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
147
- const input = body['input'];
148
- expect(input).toHaveLength(1);
149
- expect(input[0]).toMatchObject({ type: 'message', role: 'user' });
150
- const content = input[0]['content'];
151
- expect(content[0]).toMatchObject({ type: 'input_text', text: 'Hello world' });
152
- });
153
- it('translates tool-result messages to function_call_output', async () => {
154
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
155
- const adapter = new OpenAIAdapter();
156
- await adapter.complete({
157
- model: 'gpt-5.2',
158
- messages: [
159
- {
160
- role: 'tool',
161
- toolCallId: 'call_abc_123',
162
- content: [{ kind: 'text', text: 'Result data' }],
163
- },
164
- ],
165
- });
166
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
167
- const input = body['input'];
168
- expect(input[0]).toMatchObject({
169
- type: 'function_call_output',
170
- call_id: 'call_abc_123',
171
- output: 'Result data',
172
- });
173
- });
174
- it('extracts toolCallId from tool_result content part when msg.toolCallId is absent', async () => {
175
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
176
- const adapter = new OpenAIAdapter();
177
- await adapter.complete({
178
- model: 'gpt-5.2',
179
- messages: [
180
- {
181
- role: 'tool',
182
- content: [
183
- {
184
- kind: 'tool_result',
185
- toolResult: { toolCallId: 'call_from_part', content: 'tool output', isError: false },
186
- },
187
- ],
188
- },
189
- ],
190
- });
191
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
192
- const input = body['input'];
193
- expect(input[0]).toMatchObject({
194
- type: 'function_call_output',
195
- call_id: 'call_from_part',
196
- output: 'tool output',
197
- });
198
- });
199
- it('translates assistant messages to { type:"message", role:"assistant" } with output_text content', async () => {
200
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
201
- const adapter = new OpenAIAdapter();
202
- await adapter.complete({
203
- model: 'gpt-5.2',
204
- messages: [
205
- { role: 'user', content: [{ kind: 'text', text: 'Question' }] },
206
- { role: 'assistant', content: [{ kind: 'text', text: 'Answer' }] },
207
- ],
208
- });
209
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
210
- const input = body['input'];
211
- expect(input[1]).toMatchObject({ type: 'message', role: 'assistant' });
212
- const content = input[1]['content'];
213
- expect(content[0]).toMatchObject({ type: 'output_text', text: 'Answer' });
214
- });
215
- it('skips system-role messages from input array', async () => {
216
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
217
- const adapter = new OpenAIAdapter();
218
- await adapter.complete({
219
- model: 'gpt-5.2',
220
- messages: [
221
- { role: 'system', content: [{ kind: 'text', text: 'System context' }] },
222
- { role: 'user', content: [{ kind: 'text', text: 'Hello' }] },
223
- ],
224
- });
225
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
226
- const input = body['input'];
227
- expect(input.every(item => item.role !== 'system')).toBe(true);
228
- expect(input).toHaveLength(1);
229
- });
230
- });
231
- // -------------------------------------------------------------------------
232
- // AC4: Tool definitions and tool choice
233
- // -------------------------------------------------------------------------
234
- describe('AC4: Tool definition and tool choice translation', () => {
235
- it('translates tool definitions to Responses API format', async () => {
236
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
237
- const adapter = new OpenAIAdapter();
238
- await adapter.complete({
239
- model: 'gpt-5.2',
240
- messages: [{ role: 'user', content: [{ kind: 'text', text: 'Use a tool' }] }],
241
- tools: [
242
- {
243
- name: 'get_weather',
244
- description: 'Get current weather',
245
- parameters: { type: 'object', properties: { location: { type: 'string' } } },
246
- },
247
- ],
248
- toolChoice: 'required',
249
- });
250
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
251
- const tools = body['tools'];
252
- expect(tools[0]).toMatchObject({
253
- type: 'function',
254
- function: {
255
- name: 'get_weather',
256
- description: 'Get current weather',
257
- },
258
- });
259
- expect(body['tool_choice']).toBe('required');
260
- });
261
- it('maps object toolChoice { type:"function", name } to correct format', async () => {
262
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
263
- const adapter = new OpenAIAdapter();
264
- await adapter.complete({
265
- model: 'gpt-5.2',
266
- messages: [{ role: 'user', content: [{ kind: 'text', text: 'Pick a tool' }] }],
267
- tools: [{ name: 'my_tool', description: 'A tool', parameters: {} }],
268
- toolChoice: { type: 'function', name: 'my_tool' },
269
- });
270
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
271
- expect(body['tool_choice']).toEqual({ type: 'function', function: { name: 'my_tool' } });
272
- });
273
- it('omits tool_choice field when toolChoice is undefined', async () => {
274
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
275
- const adapter = new OpenAIAdapter();
276
- await adapter.complete(makeMinimalRequest());
277
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
278
- expect(Object.prototype.hasOwnProperty.call(body, 'tool_choice')).toBe(false);
279
- });
280
- it('maps "auto" toolChoice to "auto"', async () => {
281
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
282
- const adapter = new OpenAIAdapter();
283
- await adapter.complete({ ...makeMinimalRequest(), toolChoice: 'auto' });
284
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
285
- expect(body['tool_choice']).toBe('auto');
286
- });
287
- });
288
- // -------------------------------------------------------------------------
289
- // AC5: complete() returns normalized LLMResponse
290
- // -------------------------------------------------------------------------
291
- describe('AC5: complete() returns normalized LLMResponse', () => {
292
- it('returns correct content, model, and stopReason for a text response', async () => {
293
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
294
- model: 'gpt-5.2',
295
- status: 'completed',
296
- output: [
297
- {
298
- type: 'message',
299
- role: 'assistant',
300
- content: [{ type: 'output_text', text: 'Hello there!' }],
301
- },
302
- ],
303
- usage: { input_tokens: 10, output_tokens: 5 },
304
- })));
305
- const adapter = new OpenAIAdapter();
306
- const response = await adapter.complete(makeMinimalRequest());
307
- expect(response.content).toBe('Hello there!');
308
- expect(response.model).toBe('gpt-5.2');
309
- expect(response.stopReason).toBe('stop');
310
- expect(response.toolCalls).toHaveLength(0);
311
- });
312
- it('parses function_call output items into toolCalls with id, name, arguments', async () => {
313
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
314
- status: 'completed',
315
- output: [
316
- {
317
- type: 'function_call',
318
- call_id: 'call_xyz_789',
319
- name: 'get_weather',
320
- arguments: '{"location":"Paris","unit":"celsius"}',
321
- },
322
- ],
323
- usage: { input_tokens: 15, output_tokens: 10 },
324
- })));
325
- const adapter = new OpenAIAdapter();
326
- const response = await adapter.complete(makeMinimalRequest());
327
- expect(response.toolCalls).toHaveLength(1);
328
- const tc = response.toolCalls[0];
329
- expect(tc.id).toBe('call_xyz_789');
330
- expect(tc.name).toBe('get_weather');
331
- expect(tc.arguments).toEqual({ location: 'Paris', unit: 'celsius' });
332
- expect(tc.rawArguments).toBe('{"location":"Paris","unit":"celsius"}');
333
- expect(response.stopReason).toBe('tool_calls');
334
- });
335
- it('maps incomplete status with max_output_tokens to "length" stopReason', async () => {
336
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
337
- status: 'incomplete',
338
- output: [],
339
- usage: { input_tokens: 5, output_tokens: 100 },
340
- })));
341
- // We need incomplete_details in the response
342
- const incompleteBody = {
343
- id: 'resp_test',
344
- model: 'gpt-5.2',
345
- status: 'incomplete',
346
- incomplete_details: { reason: 'max_output_tokens' },
347
- output: [],
348
- usage: { input_tokens: 5, output_tokens: 100 },
349
- };
350
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(incompleteBody));
351
- const adapter = new OpenAIAdapter();
352
- const response = await adapter.complete(makeMinimalRequest());
353
- expect(response.stopReason).toBe('length');
354
- });
355
- it('concatenates text from multiple output_text items', async () => {
356
- vi.mocked(fetch).mockResolvedValue(makeMockResponse({
357
- id: 'resp_multi',
358
- model: 'gpt-5.2',
359
- status: 'completed',
360
- output: [
361
- {
362
- type: 'message',
363
- role: 'assistant',
364
- content: [
365
- { type: 'output_text', text: 'Hello ' },
366
- { type: 'output_text', text: 'world!' },
367
- ],
368
- },
369
- ],
370
- usage: { input_tokens: 5, output_tokens: 3 },
371
- }));
372
- const adapter = new OpenAIAdapter();
373
- const response = await adapter.complete(makeMinimalRequest());
374
- expect(response.content).toBe('Hello world!');
375
- });
376
- it('throws on non-2xx HTTP status', async () => {
377
- vi.mocked(fetch).mockResolvedValue(makeMockResponse({ error: { message: 'Invalid API key' } }, 401));
378
- const adapter = new OpenAIAdapter();
379
- await expect(adapter.complete(makeMinimalRequest())).rejects.toThrow();
380
- });
381
- });
382
- // -------------------------------------------------------------------------
383
- // AC6: Usage token extraction including reasoning and cache tokens
384
- // -------------------------------------------------------------------------
385
- describe('AC6: Usage token extraction', () => {
386
- it('correctly maps inputTokens, outputTokens, and totalTokens', async () => {
387
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
388
- usage: { input_tokens: 100, output_tokens: 50 },
389
- })));
390
- const adapter = new OpenAIAdapter();
391
- const response = await adapter.complete(makeMinimalRequest());
392
- expect(response.usage.inputTokens).toBe(100);
393
- expect(response.usage.outputTokens).toBe(50);
394
- expect(response.usage.totalTokens).toBe(150);
395
- });
396
- it('extracts reasoningTokens from output_tokens_details', async () => {
397
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
398
- usage: {
399
- input_tokens: 200,
400
- output_tokens: 80,
401
- output_tokens_details: { reasoning_tokens: 500 },
402
- },
403
- })));
404
- const adapter = new OpenAIAdapter();
405
- const response = await adapter.complete(makeMinimalRequest());
406
- expect(response.usage.reasoningTokens).toBe(500);
407
- });
408
- it('omits reasoningTokens when output_tokens_details is absent', async () => {
409
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
410
- usage: { input_tokens: 50, output_tokens: 20 },
411
- })));
412
- const adapter = new OpenAIAdapter();
413
- const response = await adapter.complete(makeMinimalRequest());
414
- expect(Object.prototype.hasOwnProperty.call(response.usage, 'reasoningTokens')).toBe(false);
415
- });
416
- it('extracts cacheReadTokens from input_tokens_details.cached_tokens', async () => {
417
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
418
- usage: {
419
- input_tokens: 300,
420
- output_tokens: 60,
421
- input_tokens_details: { cached_tokens: 150 },
422
- },
423
- })));
424
- const adapter = new OpenAIAdapter();
425
- const response = await adapter.complete(makeMinimalRequest());
426
- expect(response.usage.cacheReadTokens).toBe(150);
427
- });
428
- it('omits cacheReadTokens when input_tokens_details is absent', async () => {
429
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
430
- usage: { input_tokens: 50, output_tokens: 20 },
431
- })));
432
- const adapter = new OpenAIAdapter();
433
- const response = await adapter.complete(makeMinimalRequest());
434
- expect(Object.prototype.hasOwnProperty.call(response.usage, 'cacheReadTokens')).toBe(false);
435
- });
436
- it('omits cacheWriteTokens (OpenAI uses automatic server-side caching)', async () => {
437
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse({
438
- usage: { input_tokens: 100, output_tokens: 40 },
439
- })));
440
- const adapter = new OpenAIAdapter();
441
- const response = await adapter.complete(makeMinimalRequest());
442
- expect(Object.prototype.hasOwnProperty.call(response.usage, 'cacheWriteTokens')).toBe(false);
443
- });
444
- });
445
- // -------------------------------------------------------------------------
446
- // AC7: Reasoning effort pass-through
447
- // -------------------------------------------------------------------------
448
- describe('AC7: Reasoning effort pass-through', () => {
449
- it('includes reasoning.effort in request body when reasoningEffort is set', async () => {
450
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
451
- const adapter = new OpenAIAdapter();
452
- await adapter.complete({ ...makeMinimalRequest(), reasoningEffort: 'high' });
453
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
454
- expect(body['reasoning']).toEqual({ effort: 'high' });
455
- });
456
- it('omits reasoning field entirely when reasoningEffort is undefined', async () => {
457
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
458
- const adapter = new OpenAIAdapter();
459
- await adapter.complete(makeMinimalRequest()); // no reasoningEffort
460
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
461
- expect(Object.prototype.hasOwnProperty.call(body, 'reasoning')).toBe(false);
462
- });
463
- it('supports "low" reasoning effort', async () => {
464
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
465
- const adapter = new OpenAIAdapter();
466
- await adapter.complete({ ...makeMinimalRequest(), reasoningEffort: 'low' });
467
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
468
- expect(body['reasoning']).toEqual({ effort: 'low' });
469
- });
470
- it('supports "medium" reasoning effort', async () => {
471
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
472
- const adapter = new OpenAIAdapter();
473
- await adapter.complete({ ...makeMinimalRequest(), reasoningEffort: 'medium' });
474
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
475
- expect(body['reasoning']).toEqual({ effort: 'medium' });
476
- });
477
- });
478
- // -------------------------------------------------------------------------
479
- // Additional: Request body field mapping
480
- // -------------------------------------------------------------------------
481
- describe('Request body field mapping', () => {
482
- it('maps maxTokens to max_output_tokens', async () => {
483
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
484
- const adapter = new OpenAIAdapter();
485
- await adapter.complete({ ...makeMinimalRequest(), maxTokens: 2048 });
486
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
487
- expect(body['max_output_tokens']).toBe(2048);
488
- });
489
- it('maps temperature to request body', async () => {
490
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
491
- const adapter = new OpenAIAdapter();
492
- await adapter.complete({ ...makeMinimalRequest(), temperature: 0.7 });
493
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
494
- expect(body['temperature']).toBe(0.7);
495
- });
496
- it('merges provider-namespaced extra.openai fields into request body', async () => {
497
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
498
- const adapter = new OpenAIAdapter();
499
- await adapter.complete({ ...makeMinimalRequest(), extra: { openai: { custom_field: 'custom_value' } } });
500
- const body = JSON.parse(vi.mocked(fetch).mock.calls[0][1].body);
501
- expect(body['custom_field']).toBe('custom_value');
502
- });
503
- it('sends POST to /responses endpoint', async () => {
504
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
505
- const adapter = new OpenAIAdapter();
506
- await adapter.complete(makeMinimalRequest());
507
- const url = vi.mocked(fetch).mock.calls[0]?.[0];
508
- expect(url).toMatch(/\/responses$/);
509
- const opts = vi.mocked(fetch).mock.calls[0]?.[1];
510
- expect(opts?.method).toBe('POST');
511
- });
512
- it('sets Authorization header with Bearer token', async () => {
513
- vi.mocked(fetch).mockResolvedValue(makeMockResponse(makeSuccessResponse()));
514
- const adapter = new OpenAIAdapter();
515
- await adapter.complete(makeMinimalRequest());
516
- const headers = vi.mocked(fetch).mock.calls[0]?.[1]?.headers;
517
- expect(headers['Authorization']).toBe('Bearer sk-test-key');
518
- });
519
- });
520
- // -------------------------------------------------------------------------
521
- // Defensive: malformed tool call arguments
522
- // -------------------------------------------------------------------------
523
- describe('Defensive parsing', () => {
524
- it('sets arguments to {} when tool call arguments are invalid JSON', async () => {
525
- vi.mocked(fetch).mockResolvedValue(makeMockResponse({
526
- id: 'resp_test',
527
- model: 'gpt-5.2',
528
- status: 'completed',
529
- output: [
530
- {
531
- type: 'function_call',
532
- call_id: 'call_bad',
533
- name: 'bad_tool',
534
- arguments: 'not valid json',
535
- },
536
- ],
537
- usage: { input_tokens: 5, output_tokens: 3 },
538
- }));
539
- const adapter = new OpenAIAdapter();
540
- const response = await adapter.complete(makeMinimalRequest());
541
- expect(response.toolCalls[0].arguments).toEqual({});
542
- expect(response.toolCalls[0].rawArguments).toBe('not valid json');
543
- });
544
- });
545
- });
546
- //# sourceMappingURL=openai.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.test.js","sourceRoot":"","sources":["../../../../src/llm/providers/__tests__/openai.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Unit tests for factory-queries.ts — verifies all query functions against
3
- * an in-memory adapter with factorySchema initialized.
4
- *
5
- * Story 46-3: Score Persistence to Database.
6
- * AC: #1, #2, #3, #4, #7
7
- */
8
- export {};
9
- //# sourceMappingURL=factory-queries.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory-queries.test.d.ts","sourceRoot":"","sources":["../../../src/persistence/__tests__/factory-queries.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}