@warlock.js/core 4.4.0 → 4.6.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 (997) hide show
  1. package/CHANGELOG.md +72 -5
  2. package/README.md +47 -11
  3. package/esm/ai/src/agent/agent-input-builder.mjs +132 -0
  4. package/esm/ai/src/agent/agent-input-builder.mjs.map +1 -0
  5. package/esm/ai/src/agent/agent-log-event.mjs +101 -0
  6. package/esm/ai/src/agent/agent-log-event.mjs.map +1 -0
  7. package/esm/ai/src/agent/agent-stream.mjs +82 -0
  8. package/esm/ai/src/agent/agent-stream.mjs.map +1 -0
  9. package/esm/ai/src/agent/agent-to-stream-event.mjs +86 -0
  10. package/esm/ai/src/agent/agent-to-stream-event.mjs.map +1 -0
  11. package/esm/ai/src/agent/agent.mjs +1276 -0
  12. package/esm/ai/src/agent/agent.mjs.map +1 -0
  13. package/esm/ai/src/agent/index.mjs +5 -0
  14. package/esm/ai/src/agent/json-stream-guard.mjs +400 -0
  15. package/esm/ai/src/agent/json-stream-guard.mjs.map +1 -0
  16. package/esm/ai/src/agent/signature.mjs +57 -0
  17. package/esm/ai/src/agent/signature.mjs.map +1 -0
  18. package/esm/ai/src/agent/snapshot.mjs +101 -0
  19. package/esm/ai/src/agent/snapshot.mjs.map +1 -0
  20. package/esm/ai/src/agent/spawn-sub-agent.mjs +68 -0
  21. package/esm/ai/src/agent/spawn-sub-agent.mjs.map +1 -0
  22. package/esm/ai/src/ai.mjs +191 -0
  23. package/esm/ai/src/ai.mjs.map +1 -0
  24. package/esm/ai/src/batch/batch.mjs +198 -0
  25. package/esm/ai/src/batch/batch.mjs.map +1 -0
  26. package/esm/ai/src/batch/index.mjs +3 -0
  27. package/esm/ai/src/batch/run-batch-item.mjs +100 -0
  28. package/esm/ai/src/batch/run-batch-item.mjs.map +1 -0
  29. package/esm/ai/src/batch/run-with-concurrency.mjs +39 -0
  30. package/esm/ai/src/batch/run-with-concurrency.mjs.map +1 -0
  31. package/esm/ai/src/checkpoint/memory.mjs +0 -0
  32. package/esm/ai/src/checkpoint/memory.mjs.map +1 -0
  33. package/esm/ai/src/checkpoint/pg.mjs +265 -0
  34. package/esm/ai/src/checkpoint/pg.mjs.map +1 -0
  35. package/esm/ai/src/checkpoint/redis.mjs +200 -0
  36. package/esm/ai/src/checkpoint/redis.mjs.map +1 -0
  37. package/esm/ai/src/config.mjs +59 -0
  38. package/esm/ai/src/config.mjs.map +1 -0
  39. package/esm/ai/src/contracts/end.type.mjs +47 -0
  40. package/esm/ai/src/contracts/end.type.mjs.map +1 -0
  41. package/esm/ai/src/errors/agent-cancelled-error.mjs +43 -0
  42. package/esm/ai/src/errors/agent-cancelled-error.mjs.map +1 -0
  43. package/esm/ai/src/errors/agent-drift-error.mjs +31 -0
  44. package/esm/ai/src/errors/agent-drift-error.mjs.map +1 -0
  45. package/esm/ai/src/errors/agent-execution-error.mjs +35 -0
  46. package/esm/ai/src/errors/agent-execution-error.mjs.map +1 -0
  47. package/esm/ai/src/errors/agent-max-trips-error.mjs +41 -0
  48. package/esm/ai/src/errors/agent-max-trips-error.mjs.map +1 -0
  49. package/esm/ai/src/errors/ai-error.mjs +68 -0
  50. package/esm/ai/src/errors/ai-error.mjs.map +1 -0
  51. package/esm/ai/src/errors/budget-exceeded-error.mjs +31 -0
  52. package/esm/ai/src/errors/budget-exceeded-error.mjs.map +1 -0
  53. package/esm/ai/src/errors/content-filter-error.mjs +28 -0
  54. package/esm/ai/src/errors/content-filter-error.mjs.map +1 -0
  55. package/esm/ai/src/errors/context-length-exceeded-error.mjs +31 -0
  56. package/esm/ai/src/errors/context-length-exceeded-error.mjs.map +1 -0
  57. package/esm/ai/src/errors/guardrail-violation-error.mjs +41 -0
  58. package/esm/ai/src/errors/guardrail-violation-error.mjs.map +1 -0
  59. package/esm/ai/src/errors/index.mjs +39 -0
  60. package/esm/ai/src/errors/invalid-request-error.mjs +31 -0
  61. package/esm/ai/src/errors/invalid-request-error.mjs.map +1 -0
  62. package/esm/ai/src/errors/max-iterations-error.mjs +32 -0
  63. package/esm/ai/src/errors/max-iterations-error.mjs.map +1 -0
  64. package/esm/ai/src/errors/max-steps-exceeded-error.mjs +21 -0
  65. package/esm/ai/src/errors/max-steps-exceeded-error.mjs.map +1 -0
  66. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs +31 -0
  67. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs.map +1 -0
  68. package/esm/ai/src/errors/orchestrator-config-error.mjs +30 -0
  69. package/esm/ai/src/errors/orchestrator-config-error.mjs.map +1 -0
  70. package/esm/ai/src/errors/orchestrator-drift-error.mjs +37 -0
  71. package/esm/ai/src/errors/orchestrator-drift-error.mjs.map +1 -0
  72. package/esm/ai/src/errors/orchestrator-failed-error.mjs +36 -0
  73. package/esm/ai/src/errors/orchestrator-failed-error.mjs.map +1 -0
  74. package/esm/ai/src/errors/outbound-policy-error.mjs +32 -0
  75. package/esm/ai/src/errors/outbound-policy-error.mjs.map +1 -0
  76. package/esm/ai/src/errors/planner-cancelled-error.mjs +29 -0
  77. package/esm/ai/src/errors/planner-cancelled-error.mjs.map +1 -0
  78. package/esm/ai/src/errors/planner-drift-error.mjs +33 -0
  79. package/esm/ai/src/errors/planner-drift-error.mjs.map +1 -0
  80. package/esm/ai/src/errors/planner-failed-error.mjs +37 -0
  81. package/esm/ai/src/errors/planner-failed-error.mjs.map +1 -0
  82. package/esm/ai/src/errors/planner-plan-invalid-error.mjs +25 -0
  83. package/esm/ai/src/errors/planner-plan-invalid-error.mjs.map +1 -0
  84. package/esm/ai/src/errors/provider-auth-error.mjs +26 -0
  85. package/esm/ai/src/errors/provider-auth-error.mjs.map +1 -0
  86. package/esm/ai/src/errors/provider-error.mjs +42 -0
  87. package/esm/ai/src/errors/provider-error.mjs.map +1 -0
  88. package/esm/ai/src/errors/provider-rate-limit-error.mjs +31 -0
  89. package/esm/ai/src/errors/provider-rate-limit-error.mjs.map +1 -0
  90. package/esm/ai/src/errors/provider-timeout-error.mjs +26 -0
  91. package/esm/ai/src/errors/provider-timeout-error.mjs.map +1 -0
  92. package/esm/ai/src/errors/quota-exceeded-error.mjs +40 -0
  93. package/esm/ai/src/errors/quota-exceeded-error.mjs.map +1 -0
  94. package/esm/ai/src/errors/routing-error.mjs +23 -0
  95. package/esm/ai/src/errors/routing-error.mjs.map +1 -0
  96. package/esm/ai/src/errors/schema-validation-error.mjs +37 -0
  97. package/esm/ai/src/errors/schema-validation-error.mjs.map +1 -0
  98. package/esm/ai/src/errors/step-failed-error.mjs +19 -0
  99. package/esm/ai/src/errors/step-failed-error.mjs.map +1 -0
  100. package/esm/ai/src/errors/supervisor-cancelled-error.mjs +29 -0
  101. package/esm/ai/src/errors/supervisor-cancelled-error.mjs.map +1 -0
  102. package/esm/ai/src/errors/supervisor-drift-error.mjs +30 -0
  103. package/esm/ai/src/errors/supervisor-drift-error.mjs.map +1 -0
  104. package/esm/ai/src/errors/supervisor-failed-error.mjs +43 -0
  105. package/esm/ai/src/errors/supervisor-failed-error.mjs.map +1 -0
  106. package/esm/ai/src/errors/supervisor-routing-error.mjs +39 -0
  107. package/esm/ai/src/errors/supervisor-routing-error.mjs.map +1 -0
  108. package/esm/ai/src/errors/tool-execution-error.mjs +32 -0
  109. package/esm/ai/src/errors/tool-execution-error.mjs.map +1 -0
  110. package/esm/ai/src/errors/workflow-cancelled-error.mjs +23 -0
  111. package/esm/ai/src/errors/workflow-cancelled-error.mjs.map +1 -0
  112. package/esm/ai/src/errors/workflow-drift-error.mjs +24 -0
  113. package/esm/ai/src/errors/workflow-drift-error.mjs.map +1 -0
  114. package/esm/ai/src/errors/workflow-error.mjs +18 -0
  115. package/esm/ai/src/errors/workflow-error.mjs.map +1 -0
  116. package/esm/ai/src/eval/dataset.mjs +112 -0
  117. package/esm/ai/src/eval/dataset.mjs.map +1 -0
  118. package/esm/ai/src/eval/eval-runner.mjs +135 -0
  119. package/esm/ai/src/eval/eval-runner.mjs.map +1 -0
  120. package/esm/ai/src/eval/index.mjs +48 -0
  121. package/esm/ai/src/eval/index.mjs.map +1 -0
  122. package/esm/ai/src/eval/judge-scorer.mjs +87 -0
  123. package/esm/ai/src/eval/judge-scorer.mjs.map +1 -0
  124. package/esm/ai/src/eval/regression.mjs +51 -0
  125. package/esm/ai/src/eval/regression.mjs.map +1 -0
  126. package/esm/ai/src/eval/report-json.mjs +33 -0
  127. package/esm/ai/src/eval/report-json.mjs.map +1 -0
  128. package/esm/ai/src/eval/report-junit.mjs +60 -0
  129. package/esm/ai/src/eval/report-junit.mjs.map +1 -0
  130. package/esm/ai/src/eval/scorers.mjs +101 -0
  131. package/esm/ai/src/eval/scorers.mjs.map +1 -0
  132. package/esm/ai/src/guard/detectors/index.mjs +6 -0
  133. package/esm/ai/src/guard/detectors/injection.mjs +254 -0
  134. package/esm/ai/src/guard/detectors/injection.mjs.map +1 -0
  135. package/esm/ai/src/guard/detectors/moderation.mjs +134 -0
  136. package/esm/ai/src/guard/detectors/moderation.mjs.map +1 -0
  137. package/esm/ai/src/guard/detectors/pii.mjs +199 -0
  138. package/esm/ai/src/guard/detectors/pii.mjs.map +1 -0
  139. package/esm/ai/src/guard/detectors/topic.mjs +99 -0
  140. package/esm/ai/src/guard/detectors/topic.mjs.map +1 -0
  141. package/esm/ai/src/guard/errors.mjs +18 -0
  142. package/esm/ai/src/guard/errors.mjs.map +1 -0
  143. package/esm/ai/src/guard/guard.mjs +209 -0
  144. package/esm/ai/src/guard/guard.mjs.map +1 -0
  145. package/esm/ai/src/guard/guardrail.mjs +22 -0
  146. package/esm/ai/src/guard/guardrail.mjs.map +1 -0
  147. package/esm/ai/src/human/errors.mjs +60 -0
  148. package/esm/ai/src/human/errors.mjs.map +1 -0
  149. package/esm/ai/src/human/human-approval.mjs +170 -0
  150. package/esm/ai/src/human/human-approval.mjs.map +1 -0
  151. package/esm/ai/src/human/policy.mjs +67 -0
  152. package/esm/ai/src/human/policy.mjs.map +1 -0
  153. package/esm/ai/src/human/register.mjs +37 -0
  154. package/esm/ai/src/human/register.mjs.map +1 -0
  155. package/esm/ai/src/human/resume-seed.mjs +53 -0
  156. package/esm/ai/src/human/resume-seed.mjs.map +1 -0
  157. package/esm/ai/src/human/resume.mjs +121 -0
  158. package/esm/ai/src/human/resume.mjs.map +1 -0
  159. package/esm/ai/src/human/stores/index.mjs +5 -0
  160. package/esm/ai/src/human/stores/memory.mjs +91 -0
  161. package/esm/ai/src/human/stores/memory.mjs.map +1 -0
  162. package/esm/ai/src/human/stores/pg.mjs +220 -0
  163. package/esm/ai/src/human/stores/pg.mjs.map +1 -0
  164. package/esm/ai/src/human/stores/redis.mjs +201 -0
  165. package/esm/ai/src/human/stores/redis.mjs.map +1 -0
  166. package/esm/ai/src/image/image-cost.mjs +55 -0
  167. package/esm/ai/src/image/image-cost.mjs.map +1 -0
  168. package/esm/ai/src/image/image.mjs +112 -0
  169. package/esm/ai/src/image/image.mjs.map +1 -0
  170. package/esm/ai/src/image/index.mjs +4 -0
  171. package/esm/ai/src/index.mjs +194 -0
  172. package/esm/ai/src/memory/derive-id.mjs +24 -0
  173. package/esm/ai/src/memory/derive-id.mjs.map +1 -0
  174. package/esm/ai/src/memory/episodic-memory.mjs +106 -0
  175. package/esm/ai/src/memory/episodic-memory.mjs.map +1 -0
  176. package/esm/ai/src/memory/memory.mjs +166 -0
  177. package/esm/ai/src/memory/memory.mjs.map +1 -0
  178. package/esm/ai/src/memory/procedural-memory.mjs +103 -0
  179. package/esm/ai/src/memory/procedural-memory.mjs.map +1 -0
  180. package/esm/ai/src/memory/semantic-memory.mjs +80 -0
  181. package/esm/ai/src/memory/semantic-memory.mjs.map +1 -0
  182. package/esm/ai/src/memory/working-memory.mjs +62 -0
  183. package/esm/ai/src/memory/working-memory.mjs.map +1 -0
  184. package/esm/ai/src/middleware/builtins/budget.mjs +219 -0
  185. package/esm/ai/src/middleware/builtins/budget.mjs.map +1 -0
  186. package/esm/ai/src/middleware/builtins/guardrail.mjs +76 -0
  187. package/esm/ai/src/middleware/builtins/guardrail.mjs.map +1 -0
  188. package/esm/ai/src/middleware/builtins/semantic-cache.mjs +149 -0
  189. package/esm/ai/src/middleware/builtins/semantic-cache.mjs.map +1 -0
  190. package/esm/ai/src/middleware/helpers/compose.mjs +52 -0
  191. package/esm/ai/src/middleware/helpers/compose.mjs.map +1 -0
  192. package/esm/ai/src/middleware/helpers/for-tool.mjs +80 -0
  193. package/esm/ai/src/middleware/helpers/for-tool.mjs.map +1 -0
  194. package/esm/ai/src/middleware/index.mjs +10 -0
  195. package/esm/ai/src/middleware/pipeline.mjs +100 -0
  196. package/esm/ai/src/middleware/pipeline.mjs.map +1 -0
  197. package/esm/ai/src/middleware/utils/extract-user-text.mjs +47 -0
  198. package/esm/ai/src/middleware/utils/extract-user-text.mjs.map +1 -0
  199. package/esm/ai/src/middleware/utils/namespaced-state.mjs +60 -0
  200. package/esm/ai/src/middleware/utils/namespaced-state.mjs.map +1 -0
  201. package/esm/ai/src/mock/index.mjs +4 -0
  202. package/esm/ai/src/mock/mock-agent.mjs +3 -0
  203. package/esm/ai/src/mock/mock-router.mjs +58 -0
  204. package/esm/ai/src/mock/mock-router.mjs.map +1 -0
  205. package/esm/ai/src/model/fallback-model.mjs +218 -0
  206. package/esm/ai/src/model/fallback-model.mjs.map +1 -0
  207. package/esm/ai/src/model/index.mjs +3 -0
  208. package/esm/ai/src/object-stream/index.mjs +4 -0
  209. package/esm/ai/src/object-stream/parse-partial-json.mjs +78 -0
  210. package/esm/ai/src/object-stream/parse-partial-json.mjs.map +1 -0
  211. package/esm/ai/src/object-stream/stream-object.mjs +97 -0
  212. package/esm/ai/src/object-stream/stream-object.mjs.map +1 -0
  213. package/esm/ai/src/observe/index.mjs +4 -0
  214. package/esm/ai/src/observe/observer-registry.mjs +35 -0
  215. package/esm/ai/src/observe/observer-registry.mjs.map +1 -0
  216. package/esm/ai/src/observe/resolve-observers.mjs +73 -0
  217. package/esm/ai/src/observe/resolve-observers.mjs.map +1 -0
  218. package/esm/ai/src/orchestrator/as-tool.mjs +98 -0
  219. package/esm/ai/src/orchestrator/as-tool.mjs.map +1 -0
  220. package/esm/ai/src/orchestrator/checkpoint.mjs +75 -0
  221. package/esm/ai/src/orchestrator/checkpoint.mjs.map +1 -0
  222. package/esm/ai/src/orchestrator/commands.mjs +34 -0
  223. package/esm/ai/src/orchestrator/commands.mjs.map +1 -0
  224. package/esm/ai/src/orchestrator/compaction.mjs +206 -0
  225. package/esm/ai/src/orchestrator/compaction.mjs.map +1 -0
  226. package/esm/ai/src/orchestrator/dispatch.mjs +171 -0
  227. package/esm/ai/src/orchestrator/dispatch.mjs.map +1 -0
  228. package/esm/ai/src/orchestrator/emitter.mjs +85 -0
  229. package/esm/ai/src/orchestrator/emitter.mjs.map +1 -0
  230. package/esm/ai/src/orchestrator/execution.mjs +395 -0
  231. package/esm/ai/src/orchestrator/execution.mjs.map +1 -0
  232. package/esm/ai/src/orchestrator/index.mjs +11 -0
  233. package/esm/ai/src/orchestrator/load.mjs +49 -0
  234. package/esm/ai/src/orchestrator/load.mjs.map +1 -0
  235. package/esm/ai/src/orchestrator/lock.mjs +75 -0
  236. package/esm/ai/src/orchestrator/lock.mjs.map +1 -0
  237. package/esm/ai/src/orchestrator/memory.mjs +141 -0
  238. package/esm/ai/src/orchestrator/memory.mjs.map +1 -0
  239. package/esm/ai/src/orchestrator/orchestrator-stream.mjs +98 -0
  240. package/esm/ai/src/orchestrator/orchestrator-stream.mjs.map +1 -0
  241. package/esm/ai/src/orchestrator/orchestrator.mjs +206 -0
  242. package/esm/ai/src/orchestrator/orchestrator.mjs.map +1 -0
  243. package/esm/ai/src/orchestrator/resume.mjs +74 -0
  244. package/esm/ai/src/orchestrator/resume.mjs.map +1 -0
  245. package/esm/ai/src/orchestrator/session-lock.mjs +83 -0
  246. package/esm/ai/src/orchestrator/session-lock.mjs.map +1 -0
  247. package/esm/ai/src/orchestrator/signature.mjs +120 -0
  248. package/esm/ai/src/orchestrator/signature.mjs.map +1 -0
  249. package/esm/ai/src/orchestrator/window.mjs +56 -0
  250. package/esm/ai/src/orchestrator/window.mjs.map +1 -0
  251. package/esm/ai/src/planner/dag-scheduler.mjs +97 -0
  252. package/esm/ai/src/planner/dag-scheduler.mjs.map +1 -0
  253. package/esm/ai/src/planner/index.mjs +6 -0
  254. package/esm/ai/src/planner/plan-prompt.mjs +31 -0
  255. package/esm/ai/src/planner/plan-prompt.mjs.map +1 -0
  256. package/esm/ai/src/planner/plan-schema.mjs +120 -0
  257. package/esm/ai/src/planner/plan-schema.mjs.map +1 -0
  258. package/esm/ai/src/planner/planner-run.mjs +769 -0
  259. package/esm/ai/src/planner/planner-run.mjs.map +1 -0
  260. package/esm/ai/src/planner/planner.mjs +144 -0
  261. package/esm/ai/src/planner/planner.mjs.map +1 -0
  262. package/esm/ai/src/planner/signature.mjs +27 -0
  263. package/esm/ai/src/planner/signature.mjs.map +1 -0
  264. package/esm/ai/src/planner/snapshot.mjs +95 -0
  265. package/esm/ai/src/planner/snapshot.mjs.map +1 -0
  266. package/esm/ai/src/prompt/errors.mjs +73 -0
  267. package/esm/ai/src/prompt/errors.mjs.map +1 -0
  268. package/esm/ai/src/prompt/index.mjs +4 -0
  269. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs +104 -0
  270. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs.map +1 -0
  271. package/esm/ai/src/prompt/prompt-validate.mjs +170 -0
  272. package/esm/ai/src/prompt/prompt-validate.mjs.map +1 -0
  273. package/esm/ai/src/prompt/prompt.mjs +218 -0
  274. package/esm/ai/src/prompt/prompt.mjs.map +1 -0
  275. package/esm/ai/src/prompts/index.mjs +3 -0
  276. package/esm/ai/src/prompts/prompts-manager.mjs +410 -0
  277. package/esm/ai/src/prompts/prompts-manager.mjs.map +1 -0
  278. package/esm/ai/src/prompts/prompts-validate.mjs +200 -0
  279. package/esm/ai/src/prompts/prompts-validate.mjs.map +1 -0
  280. package/esm/ai/src/rag/as-tool.mjs +48 -0
  281. package/esm/ai/src/rag/as-tool.mjs.map +1 -0
  282. package/esm/ai/src/rag/chunk/chunk.mjs +44 -0
  283. package/esm/ai/src/rag/chunk/chunk.mjs.map +1 -0
  284. package/esm/ai/src/rag/chunk/fixed.mjs +32 -0
  285. package/esm/ai/src/rag/chunk/fixed.mjs.map +1 -0
  286. package/esm/ai/src/rag/chunk/markdown.mjs +75 -0
  287. package/esm/ai/src/rag/chunk/markdown.mjs.map +1 -0
  288. package/esm/ai/src/rag/chunk/recursive.mjs +132 -0
  289. package/esm/ai/src/rag/chunk/recursive.mjs.map +1 -0
  290. package/esm/ai/src/rag/chunk/sentence.mjs +73 -0
  291. package/esm/ai/src/rag/chunk/sentence.mjs.map +1 -0
  292. package/esm/ai/src/rag/hybrid/bm25.mjs +51 -0
  293. package/esm/ai/src/rag/hybrid/bm25.mjs.map +1 -0
  294. package/esm/ai/src/rag/hybrid/hybrid-rank.mjs +29 -0
  295. package/esm/ai/src/rag/hybrid/hybrid-rank.mjs.map +1 -0
  296. package/esm/ai/src/rag/hybrid/rrf.mjs +30 -0
  297. package/esm/ai/src/rag/hybrid/rrf.mjs.map +1 -0
  298. package/esm/ai/src/rag/index.mjs +18 -0
  299. package/esm/ai/src/rag/loaders/errors.mjs +25 -0
  300. package/esm/ai/src/rag/loaders/errors.mjs.map +1 -0
  301. package/esm/ai/src/rag/loaders/index.mjs +7 -0
  302. package/esm/ai/src/rag/loaders/load-html.mjs +138 -0
  303. package/esm/ai/src/rag/loaders/load-html.mjs.map +1 -0
  304. package/esm/ai/src/rag/loaders/load-pdf.mjs +150 -0
  305. package/esm/ai/src/rag/loaders/load-pdf.mjs.map +1 -0
  306. package/esm/ai/src/rag/loaders/load-text.mjs +60 -0
  307. package/esm/ai/src/rag/loaders/load-text.mjs.map +1 -0
  308. package/esm/ai/src/rag/loaders/load-web.mjs +89 -0
  309. package/esm/ai/src/rag/loaders/load-web.mjs.map +1 -0
  310. package/esm/ai/src/rag/rag.mjs +126 -0
  311. package/esm/ai/src/rag/rag.mjs.map +1 -0
  312. package/esm/ai/src/rag/rerank/keyword-reranker.mjs +58 -0
  313. package/esm/ai/src/rag/rerank/keyword-reranker.mjs.map +1 -0
  314. package/esm/ai/src/rag/rerank/llm-reranker.mjs +85 -0
  315. package/esm/ai/src/rag/rerank/llm-reranker.mjs.map +1 -0
  316. package/esm/ai/src/rag/retrieve.mjs +68 -0
  317. package/esm/ai/src/rag/retrieve.mjs.map +1 -0
  318. package/esm/ai/src/rag/store/cache-vector-store.mjs +48 -0
  319. package/esm/ai/src/rag/store/cache-vector-store.mjs.map +1 -0
  320. package/esm/ai/src/rag/store/pg-vector-store.mjs +328 -0
  321. package/esm/ai/src/rag/store/pg-vector-store.mjs.map +1 -0
  322. package/esm/ai/src/rag/transforms/multi-query.mjs +41 -0
  323. package/esm/ai/src/rag/transforms/multi-query.mjs.map +1 -0
  324. package/esm/ai/src/security/index.mjs +5 -0
  325. package/esm/ai/src/security/outbound-policy.mjs +187 -0
  326. package/esm/ai/src/security/outbound-policy.mjs.map +1 -0
  327. package/esm/ai/src/security/private-ip.mjs +48 -0
  328. package/esm/ai/src/security/private-ip.mjs.map +1 -0
  329. package/esm/ai/src/security/redact.mjs +60 -0
  330. package/esm/ai/src/security/redact.mjs.map +1 -0
  331. package/esm/ai/src/serve/serve.mjs +90 -0
  332. package/esm/ai/src/serve/serve.mjs.map +1 -0
  333. package/esm/ai/src/serve/sse.mjs +25 -0
  334. package/esm/ai/src/serve/sse.mjs.map +1 -0
  335. package/esm/ai/src/serve/stream-to-sse.mjs +37 -0
  336. package/esm/ai/src/serve/stream-to-sse.mjs.map +1 -0
  337. package/esm/ai/src/skills/catalog.mjs +140 -0
  338. package/esm/ai/src/skills/catalog.mjs.map +1 -0
  339. package/esm/ai/src/skills/index.mjs +11 -0
  340. package/esm/ai/src/skills/load-skill-tool.mjs +65 -0
  341. package/esm/ai/src/skills/load-skill-tool.mjs.map +1 -0
  342. package/esm/ai/src/skills/save-skill-tool.mjs +65 -0
  343. package/esm/ai/src/skills/save-skill-tool.mjs.map +1 -0
  344. package/esm/ai/src/skills/skills.mjs +109 -0
  345. package/esm/ai/src/skills/skills.mjs.map +1 -0
  346. package/esm/ai/src/skills/sources/directory-source.mjs +108 -0
  347. package/esm/ai/src/skills/sources/directory-source.mjs.map +1 -0
  348. package/esm/ai/src/skills/sources/index.mjs +27 -0
  349. package/esm/ai/src/skills/sources/index.mjs.map +1 -0
  350. package/esm/ai/src/skills/sources/parse-frontmatter.mjs +46 -0
  351. package/esm/ai/src/skills/sources/parse-frontmatter.mjs.map +1 -0
  352. package/esm/ai/src/skills/sources/store-source.mjs +15 -0
  353. package/esm/ai/src/skills/sources/store-source.mjs.map +1 -0
  354. package/esm/ai/src/skills/sources/url-source.mjs +117 -0
  355. package/esm/ai/src/skills/sources/url-source.mjs.map +1 -0
  356. package/esm/ai/src/snapshot/memory.mjs +81 -0
  357. package/esm/ai/src/snapshot/memory.mjs.map +1 -0
  358. package/esm/ai/src/snapshot/pg.mjs +146 -0
  359. package/esm/ai/src/snapshot/pg.mjs.map +1 -0
  360. package/esm/ai/src/snapshot/redis.mjs +101 -0
  361. package/esm/ai/src/snapshot/redis.mjs.map +1 -0
  362. package/esm/ai/src/speech/index.mjs +3 -0
  363. package/esm/ai/src/speech/speech.mjs +122 -0
  364. package/esm/ai/src/speech/speech.mjs.map +1 -0
  365. package/esm/ai/src/supervisor/as-tool.mjs +74 -0
  366. package/esm/ai/src/supervisor/as-tool.mjs.map +1 -0
  367. package/esm/ai/src/supervisor/cancellation.mjs +22 -0
  368. package/esm/ai/src/supervisor/cancellation.mjs.map +1 -0
  369. package/esm/ai/src/supervisor/decide.mjs +272 -0
  370. package/esm/ai/src/supervisor/decide.mjs.map +1 -0
  371. package/esm/ai/src/supervisor/emitter.mjs +47 -0
  372. package/esm/ai/src/supervisor/emitter.mjs.map +1 -0
  373. package/esm/ai/src/supervisor/entries.mjs +206 -0
  374. package/esm/ai/src/supervisor/entries.mjs.map +1 -0
  375. package/esm/ai/src/supervisor/execution.mjs +1921 -0
  376. package/esm/ai/src/supervisor/execution.mjs.map +1 -0
  377. package/esm/ai/src/supervisor/fan-out.mjs +65 -0
  378. package/esm/ai/src/supervisor/fan-out.mjs.map +1 -0
  379. package/esm/ai/src/supervisor/index.mjs +14 -0
  380. package/esm/ai/src/supervisor/router-factory.mjs +141 -0
  381. package/esm/ai/src/supervisor/router-factory.mjs.map +1 -0
  382. package/esm/ai/src/supervisor/router-prompt.mjs +52 -0
  383. package/esm/ai/src/supervisor/router-prompt.mjs.map +1 -0
  384. package/esm/ai/src/supervisor/signature.mjs +89 -0
  385. package/esm/ai/src/supervisor/signature.mjs.map +1 -0
  386. package/esm/ai/src/supervisor/snapshot.mjs +69 -0
  387. package/esm/ai/src/supervisor/snapshot.mjs.map +1 -0
  388. package/esm/ai/src/supervisor/supervisor-stream.mjs +89 -0
  389. package/esm/ai/src/supervisor/supervisor-stream.mjs.map +1 -0
  390. package/esm/ai/src/supervisor/supervisor.mjs +144 -0
  391. package/esm/ai/src/supervisor/supervisor.mjs.map +1 -0
  392. package/esm/ai/src/system-prompt/index.mjs +6 -0
  393. package/esm/ai/src/system-prompt/instruction.mjs +57 -0
  394. package/esm/ai/src/system-prompt/instruction.mjs.map +1 -0
  395. package/esm/ai/src/system-prompt/persona.mjs +57 -0
  396. package/esm/ai/src/system-prompt/persona.mjs.map +1 -0
  397. package/esm/ai/src/system-prompt/render-placeholders.mjs +58 -0
  398. package/esm/ai/src/system-prompt/render-placeholders.mjs.map +1 -0
  399. package/esm/ai/src/system-prompt/system-prompt.mjs +267 -0
  400. package/esm/ai/src/system-prompt/system-prompt.mjs.map +1 -0
  401. package/esm/ai/src/team/gates.mjs +48 -0
  402. package/esm/ai/src/team/gates.mjs.map +1 -0
  403. package/esm/ai/src/team/index.mjs +3 -0
  404. package/esm/ai/src/team/team.mjs +94 -0
  405. package/esm/ai/src/team/team.mjs.map +1 -0
  406. package/esm/ai/src/tool/executable-as-tool.mjs +81 -0
  407. package/esm/ai/src/tool/executable-as-tool.mjs.map +1 -0
  408. package/esm/ai/src/tool/index.mjs +4 -0
  409. package/esm/ai/src/tool/tool.mjs +185 -0
  410. package/esm/ai/src/tool/tool.mjs.map +1 -0
  411. package/esm/ai/src/transcribe/audio-input.mjs +84 -0
  412. package/esm/ai/src/transcribe/audio-input.mjs.map +1 -0
  413. package/esm/ai/src/transcribe/index.mjs +4 -0
  414. package/esm/ai/src/transcribe/transcribe.mjs +127 -0
  415. package/esm/ai/src/transcribe/transcribe.mjs.map +1 -0
  416. package/esm/ai/src/utils/compute-cost.mjs +112 -0
  417. package/esm/ai/src/utils/compute-cost.mjs.map +1 -0
  418. package/esm/ai/src/utils/extract-json-lenient.mjs +97 -0
  419. package/esm/ai/src/utils/extract-json-lenient.mjs.map +1 -0
  420. package/esm/ai/src/utils/extract-json-payload.mjs +39 -0
  421. package/esm/ai/src/utils/extract-json-payload.mjs.map +1 -0
  422. package/esm/ai/src/utils/generate-run-id.mjs +23 -0
  423. package/esm/ai/src/utils/generate-run-id.mjs.map +1 -0
  424. package/esm/ai/src/utils/index.mjs +12 -0
  425. package/esm/ai/src/utils/json-schema.mjs +89 -0
  426. package/esm/ai/src/utils/json-schema.mjs.map +1 -0
  427. package/esm/ai/src/utils/prepare-attachment-part.mjs +232 -0
  428. package/esm/ai/src/utils/prepare-attachment-part.mjs.map +1 -0
  429. package/esm/ai/src/utils/resolve-attachment.mjs +74 -0
  430. package/esm/ai/src/utils/resolve-attachment.mjs.map +1 -0
  431. package/esm/ai/src/utils/run-context.mjs +89 -0
  432. package/esm/ai/src/utils/run-context.mjs.map +1 -0
  433. package/esm/ai/src/utils/safe-json-parse.mjs +22 -0
  434. package/esm/ai/src/utils/safe-json-parse.mjs.map +1 -0
  435. package/esm/ai/src/utils/stamp-report-lineage.mjs +45 -0
  436. package/esm/ai/src/utils/stamp-report-lineage.mjs.map +1 -0
  437. package/esm/ai/src/vcr/cassette-io.mjs +57 -0
  438. package/esm/ai/src/vcr/cassette-io.mjs.map +1 -0
  439. package/esm/ai/src/vcr/errors.mjs +37 -0
  440. package/esm/ai/src/vcr/errors.mjs.map +1 -0
  441. package/esm/ai/src/vcr/hash-request.mjs +118 -0
  442. package/esm/ai/src/vcr/hash-request.mjs.map +1 -0
  443. package/esm/ai/src/vcr/index.mjs +5 -0
  444. package/esm/ai/src/vcr/vcr.mjs +248 -0
  445. package/esm/ai/src/vcr/vcr.mjs.map +1 -0
  446. package/esm/ai/src/workflow/as-tool.mjs +49 -0
  447. package/esm/ai/src/workflow/as-tool.mjs.map +1 -0
  448. package/esm/ai/src/workflow/cancellation.mjs +44 -0
  449. package/esm/ai/src/workflow/cancellation.mjs.map +1 -0
  450. package/esm/ai/src/workflow/emitter.mjs +40 -0
  451. package/esm/ai/src/workflow/emitter.mjs.map +1 -0
  452. package/esm/ai/src/workflow/engine.mjs +363 -0
  453. package/esm/ai/src/workflow/engine.mjs.map +1 -0
  454. package/esm/ai/src/workflow/index.mjs +5 -0
  455. package/esm/ai/src/workflow/retry.mjs +32 -0
  456. package/esm/ai/src/workflow/retry.mjs.map +1 -0
  457. package/esm/ai/src/workflow/router.mjs +56 -0
  458. package/esm/ai/src/workflow/router.mjs.map +1 -0
  459. package/esm/ai/src/workflow/run-scoped-emitter.mjs +32 -0
  460. package/esm/ai/src/workflow/run-scoped-emitter.mjs.map +1 -0
  461. package/esm/ai/src/workflow/signature.mjs +34 -0
  462. package/esm/ai/src/workflow/signature.mjs.map +1 -0
  463. package/esm/ai/src/workflow/snapshot.mjs +77 -0
  464. package/esm/ai/src/workflow/snapshot.mjs.map +1 -0
  465. package/esm/ai/src/workflow/state.mjs +37 -0
  466. package/esm/ai/src/workflow/state.mjs.map +1 -0
  467. package/esm/ai/src/workflow/step-runner.mjs +370 -0
  468. package/esm/ai/src/workflow/step-runner.mjs.map +1 -0
  469. package/esm/ai/src/workflow/step.mjs +37 -0
  470. package/esm/ai/src/workflow/step.mjs.map +1 -0
  471. package/esm/ai/src/workflow/workflow.mjs +122 -0
  472. package/esm/ai/src/workflow/workflow.mjs.map +1 -0
  473. package/esm/ai-openai/src/embedder.mjs +4 -0
  474. package/esm/ai-openai/src/image.mjs +5 -0
  475. package/esm/ai-openai/src/index.mjs +7 -0
  476. package/esm/ai-openai/src/model.mjs +5 -0
  477. package/esm/ai-openai/src/sdk.mjs +9 -0
  478. package/esm/ai-openai/src/speech.mjs +5 -0
  479. package/esm/ai-openai/src/transcription.mjs +6 -0
  480. package/esm/ai-openai/src/utils/index.mjs +5 -0
  481. package/esm/ai-openai/src/utils/to-openai-messages.mjs +3 -0
  482. package/esm/ai-openai/src/utils/to-openai-tools.mjs +3 -0
  483. package/esm/ai-openai/src/utils/wrap-openai-error.mjs +4 -0
  484. package/esm/cli/commands/dev-server.command.mjs +1 -1
  485. package/esm/cli/commands/dev-server.command.mjs.map +1 -1
  486. package/esm/cli/commands/doctor/checks/config.check.mjs +42 -0
  487. package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -0
  488. package/esm/cli/commands/doctor/checks/connectors.check.mjs +28 -0
  489. package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -0
  490. package/esm/cli/commands/doctor/checks/health.check.mjs +35 -0
  491. package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -0
  492. package/esm/cli/commands/doctor/checks/index.mjs +25 -0
  493. package/esm/cli/commands/doctor/checks/index.mjs.map +1 -0
  494. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +90 -0
  495. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -0
  496. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +69 -0
  497. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -0
  498. package/esm/cli/commands/doctor/checks/routes.check.mjs +30 -0
  499. package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -0
  500. package/esm/cli/commands/doctor/doctor-command.action.mjs +28 -0
  501. package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -0
  502. package/esm/cli/commands/doctor/format-report.mjs +44 -0
  503. package/esm/cli/commands/doctor/format-report.mjs.map +1 -0
  504. package/esm/cli/commands/doctor/run-checks.mjs +50 -0
  505. package/esm/cli/commands/doctor/run-checks.mjs.map +1 -0
  506. package/esm/cli/commands/doctor.command.mjs +29 -0
  507. package/esm/cli/commands/doctor.command.mjs.map +1 -0
  508. package/esm/cli/commands/generate/templates/stubs.mjs +9 -12
  509. package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
  510. package/esm/cli/commands/routes/format-routes-table.mjs +129 -0
  511. package/esm/cli/commands/routes/format-routes-table.mjs.map +1 -0
  512. package/esm/cli/commands/routes/route-row.mjs +92 -0
  513. package/esm/cli/commands/routes/route-row.mjs.map +1 -0
  514. package/esm/cli/commands/routes/routes-command.action.mjs +43 -0
  515. package/esm/cli/commands/routes/routes-command.action.mjs.map +1 -0
  516. package/esm/cli/commands/routes.command.mjs +51 -0
  517. package/esm/cli/commands/routes.command.mjs.map +1 -0
  518. package/esm/cli/commands/seed.command.mjs +5 -0
  519. package/esm/cli/commands/seed.command.mjs.map +1 -1
  520. package/esm/cli/framework-cli-commands.mjs +4 -0
  521. package/esm/cli/framework-cli-commands.mjs.map +1 -1
  522. package/esm/config/config-getter.mjs +5 -5
  523. package/esm/config/config-getter.mjs.map +1 -1
  524. package/esm/config/config-loader.mjs +2 -2
  525. package/esm/config/config-loader.mjs.map +1 -1
  526. package/esm/connectors/access-connector.mjs +2 -2
  527. package/esm/connectors/access-connector.mjs.map +1 -1
  528. package/esm/connectors/ai-connector.d.mts +43 -0
  529. package/esm/connectors/ai-connector.d.mts.map +1 -0
  530. package/esm/connectors/ai-connector.mjs +56 -0
  531. package/esm/connectors/ai-connector.mjs.map +1 -0
  532. package/esm/connectors/cache-connector.d.mts +5 -0
  533. package/esm/connectors/cache-connector.d.mts.map +1 -1
  534. package/esm/connectors/cache-connector.mjs +9 -2
  535. package/esm/connectors/cache-connector.mjs.map +1 -1
  536. package/esm/connectors/connectors-manager.d.mts +6 -2
  537. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  538. package/esm/connectors/connectors-manager.mjs +8 -2
  539. package/esm/connectors/connectors-manager.mjs.map +1 -1
  540. package/esm/connectors/database-connector.mjs +2 -2
  541. package/esm/connectors/database-connector.mjs.map +1 -1
  542. package/esm/connectors/herald-connector.mjs +2 -2
  543. package/esm/connectors/herald-connector.mjs.map +1 -1
  544. package/esm/connectors/http-connector.d.mts.map +1 -1
  545. package/esm/connectors/http-connector.mjs +9 -7
  546. package/esm/connectors/http-connector.mjs.map +1 -1
  547. package/esm/connectors/index.d.mts +1 -0
  548. package/esm/connectors/index.mjs +1 -0
  549. package/esm/connectors/logger-connector.mjs +2 -2
  550. package/esm/connectors/logger-connector.mjs.map +1 -1
  551. package/esm/connectors/mail-connector.mjs +2 -2
  552. package/esm/connectors/mail-connector.mjs.map +1 -1
  553. package/esm/connectors/notifications-connector.mjs +2 -2
  554. package/esm/connectors/notifications-connector.mjs.map +1 -1
  555. package/esm/connectors/socket-connector.d.mts +16 -1
  556. package/esm/connectors/socket-connector.d.mts.map +1 -1
  557. package/esm/connectors/socket-connector.mjs +31 -8
  558. package/esm/connectors/socket-connector.mjs.map +1 -1
  559. package/esm/connectors/storage.connector.d.mts +7 -0
  560. package/esm/connectors/storage.connector.d.mts.map +1 -1
  561. package/esm/connectors/storage.connector.mjs +7 -0
  562. package/esm/connectors/storage.connector.mjs.map +1 -1
  563. package/esm/connectors/types.d.mts +3 -2
  564. package/esm/connectors/types.d.mts.map +1 -1
  565. package/esm/connectors/types.mjs +1 -0
  566. package/esm/connectors/types.mjs.map +1 -1
  567. package/esm/database/index.d.mts +2 -1
  568. package/esm/database/index.mjs +1 -0
  569. package/esm/database/seed-command-action.mjs +44 -4
  570. package/esm/database/seed-command-action.mjs.map +1 -1
  571. package/esm/database/seeds/seed-records-table-migration.mjs +36 -0
  572. package/esm/database/seeds/seed-records-table-migration.mjs.map +1 -0
  573. package/esm/database/seeds/seeder.d.mts +22 -5
  574. package/esm/database/seeds/seeder.d.mts.map +1 -1
  575. package/esm/database/seeds/seeder.errors.d.mts +22 -0
  576. package/esm/database/seeds/seeder.errors.d.mts.map +1 -0
  577. package/esm/database/seeds/seeder.errors.mjs +29 -0
  578. package/esm/database/seeds/seeder.errors.mjs.map +1 -0
  579. package/esm/database/seeds/seeder.mjs.map +1 -1
  580. package/esm/database/seeds/seeders.manager.mjs +90 -11
  581. package/esm/database/seeds/seeders.manager.mjs.map +1 -1
  582. package/esm/database/seeds/types.d.mts +117 -1
  583. package/esm/database/seeds/types.d.mts.map +1 -1
  584. package/esm/database/seeds/utils.mjs +6 -1
  585. package/esm/database/seeds/utils.mjs.map +1 -1
  586. package/esm/dev-server/development-server.mjs +2 -14
  587. package/esm/dev-server/development-server.mjs.map +1 -1
  588. package/esm/dev-server/file-event-handler.mjs +15 -3
  589. package/esm/dev-server/file-event-handler.mjs.map +1 -1
  590. package/esm/dev-server/module-loader.d.mts +12 -0
  591. package/esm/dev-server/module-loader.d.mts.map +1 -1
  592. package/esm/dev-server/module-loader.mjs +30 -2
  593. package/esm/dev-server/module-loader.mjs.map +1 -1
  594. package/esm/generations/add-command.action.mjs +61 -12
  595. package/esm/generations/add-command.action.mjs.map +1 -1
  596. package/esm/generations/stubs.mjs +31 -1
  597. package/esm/generations/stubs.mjs.map +1 -1
  598. package/esm/http/config.mjs +2 -2
  599. package/esm/http/config.mjs.map +1 -1
  600. package/esm/http/createHttpApplication.mjs +2 -2
  601. package/esm/http/createHttpApplication.mjs.map +1 -1
  602. package/esm/http/health.d.mts +14 -0
  603. package/esm/http/health.d.mts.map +1 -1
  604. package/esm/http/health.mjs +16 -0
  605. package/esm/http/health.mjs.map +1 -1
  606. package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
  607. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  608. package/esm/http/middleware/cache-response-middleware.mjs +15 -6
  609. package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
  610. package/esm/http/middleware/concurrency-limit.middleware.mjs +2 -0
  611. package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
  612. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  613. package/esm/http/middleware/idempotency.middleware.mjs +9 -6
  614. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  615. package/esm/http/middleware/inject-request-context.mjs +2 -2
  616. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  617. package/esm/http/middleware/maintenance.middleware.mjs +6 -5
  618. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  619. package/esm/http/plugins.mjs +9 -9
  620. package/esm/http/plugins.mjs.map +1 -1
  621. package/esm/http/request.d.mts +9 -2
  622. package/esm/http/request.d.mts.map +1 -1
  623. package/esm/http/request.mjs +15 -3
  624. package/esm/http/request.mjs.map +1 -1
  625. package/esm/http/response.d.mts +12 -0
  626. package/esm/http/response.d.mts.map +1 -1
  627. package/esm/http/response.mjs +24 -7
  628. package/esm/http/response.mjs.map +1 -1
  629. package/esm/http/server.d.mts.map +1 -1
  630. package/esm/http/server.mjs +4 -4
  631. package/esm/http/server.mjs.map +1 -1
  632. package/esm/index.d.mts +9 -4
  633. package/esm/index.mjs +6 -1
  634. package/esm/node_modules/langfuse/lib/index.mjs +1827 -0
  635. package/esm/node_modules/langfuse/lib/index.mjs.map +1 -0
  636. package/esm/node_modules/langfuse-core/lib/index.mjs +1770 -0
  637. package/esm/node_modules/langfuse-core/lib/index.mjs.map +1 -0
  638. package/esm/node_modules/mustache/mustache.mjs +587 -0
  639. package/esm/node_modules/mustache/mustache.mjs.map +1 -0
  640. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs +180 -0
  641. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs.map +1 -0
  642. package/esm/node_modules/openai/auth/workload-identity-auth.mjs +80 -0
  643. package/esm/node_modules/openai/auth/workload-identity-auth.mjs.map +1 -0
  644. package/esm/node_modules/openai/azure.mjs +82 -0
  645. package/esm/node_modules/openai/azure.mjs.map +1 -0
  646. package/esm/node_modules/openai/client.mjs +638 -0
  647. package/esm/node_modules/openai/client.mjs.map +1 -0
  648. package/esm/node_modules/openai/core/api-promise.mjs +75 -0
  649. package/esm/node_modules/openai/core/api-promise.mjs.map +1 -0
  650. package/esm/node_modules/openai/core/error.mjs +110 -0
  651. package/esm/node_modules/openai/core/error.mjs.map +1 -0
  652. package/esm/node_modules/openai/core/pagination.mjs +160 -0
  653. package/esm/node_modules/openai/core/pagination.mjs.map +1 -0
  654. package/esm/node_modules/openai/core/resource.mjs +10 -0
  655. package/esm/node_modules/openai/core/resource.mjs.map +1 -0
  656. package/esm/node_modules/openai/core/streaming.mjs +238 -0
  657. package/esm/node_modules/openai/core/streaming.mjs.map +1 -0
  658. package/esm/node_modules/openai/index.mjs +8 -0
  659. package/esm/node_modules/openai/internal/decoders/line.mjs +91 -0
  660. package/esm/node_modules/openai/internal/decoders/line.mjs.map +1 -0
  661. package/esm/node_modules/openai/internal/detect-platform.mjs +123 -0
  662. package/esm/node_modules/openai/internal/detect-platform.mjs.map +1 -0
  663. package/esm/node_modules/openai/internal/errors.mjs +26 -0
  664. package/esm/node_modules/openai/internal/errors.mjs.map +1 -0
  665. package/esm/node_modules/openai/internal/headers.mjs +65 -0
  666. package/esm/node_modules/openai/internal/headers.mjs.map +1 -0
  667. package/esm/node_modules/openai/internal/parse.mjs +41 -0
  668. package/esm/node_modules/openai/internal/parse.mjs.map +1 -0
  669. package/esm/node_modules/openai/internal/qs/formats.mjs +12 -0
  670. package/esm/node_modules/openai/internal/qs/formats.mjs.map +1 -0
  671. package/esm/node_modules/openai/internal/qs/stringify.mjs +179 -0
  672. package/esm/node_modules/openai/internal/qs/stringify.mjs.map +1 -0
  673. package/esm/node_modules/openai/internal/qs/utils.mjs +65 -0
  674. package/esm/node_modules/openai/internal/qs/utils.mjs.map +1 -0
  675. package/esm/node_modules/openai/internal/request-options.mjs +11 -0
  676. package/esm/node_modules/openai/internal/request-options.mjs.map +1 -0
  677. package/esm/node_modules/openai/internal/shims.mjs +77 -0
  678. package/esm/node_modules/openai/internal/shims.mjs.map +1 -0
  679. package/esm/node_modules/openai/internal/to-file.mjs +63 -0
  680. package/esm/node_modules/openai/internal/to-file.mjs.map +1 -0
  681. package/esm/node_modules/openai/internal/tslib.mjs +16 -0
  682. package/esm/node_modules/openai/internal/tslib.mjs.map +1 -0
  683. package/esm/node_modules/openai/internal/uploads.mjs +94 -0
  684. package/esm/node_modules/openai/internal/uploads.mjs.map +1 -0
  685. package/esm/node_modules/openai/internal/utils/base64.mjs +22 -0
  686. package/esm/node_modules/openai/internal/utils/base64.mjs.map +1 -0
  687. package/esm/node_modules/openai/internal/utils/bytes.mjs +26 -0
  688. package/esm/node_modules/openai/internal/utils/bytes.mjs.map +1 -0
  689. package/esm/node_modules/openai/internal/utils/env.mjs +16 -0
  690. package/esm/node_modules/openai/internal/utils/env.mjs.map +1 -0
  691. package/esm/node_modules/openai/internal/utils/log.mjs +58 -0
  692. package/esm/node_modules/openai/internal/utils/log.mjs.map +1 -0
  693. package/esm/node_modules/openai/internal/utils/path.mjs +62 -0
  694. package/esm/node_modules/openai/internal/utils/path.mjs.map +1 -0
  695. package/esm/node_modules/openai/internal/utils/query.mjs +10 -0
  696. package/esm/node_modules/openai/internal/utils/query.mjs.map +1 -0
  697. package/esm/node_modules/openai/internal/utils/sleep.mjs +6 -0
  698. package/esm/node_modules/openai/internal/utils/sleep.mjs.map +1 -0
  699. package/esm/node_modules/openai/internal/utils/uuid.mjs +18 -0
  700. package/esm/node_modules/openai/internal/utils/uuid.mjs.map +1 -0
  701. package/esm/node_modules/openai/internal/utils/values.mjs +41 -0
  702. package/esm/node_modules/openai/internal/utils/values.mjs.map +1 -0
  703. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +247 -0
  704. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +1 -0
  705. package/esm/node_modules/openai/lib/AssistantStream.mjs +472 -0
  706. package/esm/node_modules/openai/lib/AssistantStream.mjs.map +1 -0
  707. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs +26 -0
  708. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs.map +1 -0
  709. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs +423 -0
  710. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs.map +1 -0
  711. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +26 -0
  712. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +1 -0
  713. package/esm/node_modules/openai/lib/EventStream.mjs +163 -0
  714. package/esm/node_modules/openai/lib/EventStream.mjs.map +1 -0
  715. package/esm/node_modules/openai/lib/ResponsesParser.mjs +94 -0
  716. package/esm/node_modules/openai/lib/ResponsesParser.mjs.map +1 -0
  717. package/esm/node_modules/openai/lib/RunnableFunction.mjs +8 -0
  718. package/esm/node_modules/openai/lib/RunnableFunction.mjs.map +1 -0
  719. package/esm/node_modules/openai/lib/Util.mjs +19 -0
  720. package/esm/node_modules/openai/lib/Util.mjs.map +1 -0
  721. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs +11 -0
  722. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs.map +1 -0
  723. package/esm/node_modules/openai/lib/parser.mjs +88 -0
  724. package/esm/node_modules/openai/lib/parser.mjs.map +1 -0
  725. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs +231 -0
  726. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs.map +1 -0
  727. package/esm/node_modules/openai/resources/admin/admin.mjs +15 -0
  728. package/esm/node_modules/openai/resources/admin/admin.mjs.map +1 -0
  729. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs +81 -0
  730. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs.map +1 -0
  731. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs +31 -0
  732. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs.map +1 -0
  733. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs +153 -0
  734. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs.map +1 -0
  735. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs +42 -0
  736. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs.map +1 -0
  737. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs +106 -0
  738. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs.map +1 -0
  739. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs +88 -0
  740. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs.map +1 -0
  741. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs +88 -0
  742. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs.map +1 -0
  743. package/esm/node_modules/openai/resources/admin/organization/invites.mjs +83 -0
  744. package/esm/node_modules/openai/resources/admin/organization/invites.mjs.map +1 -0
  745. package/esm/node_modules/openai/resources/admin/organization/organization.mjs +45 -0
  746. package/esm/node_modules/openai/resources/admin/organization/organization.mjs.map +1 -0
  747. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs +72 -0
  748. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs.map +1 -0
  749. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs +78 -0
  750. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs.map +1 -0
  751. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs +46 -0
  752. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs.map +1 -0
  753. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs +95 -0
  754. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs.map +1 -0
  755. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs +91 -0
  756. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs.map +1 -0
  757. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs +45 -0
  758. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +1 -0
  759. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs +63 -0
  760. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs.map +1 -0
  761. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs +137 -0
  762. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs.map +1 -0
  763. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs +51 -0
  764. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs.map +1 -0
  765. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs +108 -0
  766. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs.map +1 -0
  767. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs +112 -0
  768. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs.map +1 -0
  769. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs +106 -0
  770. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs.map +1 -0
  771. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs +91 -0
  772. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs.map +1 -0
  773. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs +118 -0
  774. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs.map +1 -0
  775. package/esm/node_modules/openai/resources/admin/organization/roles.mjs +96 -0
  776. package/esm/node_modules/openai/resources/admin/organization/roles.mjs.map +1 -0
  777. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs +97 -0
  778. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs.map +1 -0
  779. package/esm/node_modules/openai/resources/admin/organization/usage.mjs +207 -0
  780. package/esm/node_modules/openai/resources/admin/organization/usage.mjs.map +1 -0
  781. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs +88 -0
  782. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs.map +1 -0
  783. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs +82 -0
  784. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs.map +1 -0
  785. package/esm/node_modules/openai/resources/audio/audio.mjs +21 -0
  786. package/esm/node_modules/openai/resources/audio/audio.mjs.map +1 -0
  787. package/esm/node_modules/openai/resources/audio/speech.mjs +39 -0
  788. package/esm/node_modules/openai/resources/audio/speech.mjs.map +1 -0
  789. package/esm/node_modules/openai/resources/audio/transcriptions.mjs +22 -0
  790. package/esm/node_modules/openai/resources/audio/transcriptions.mjs.map +1 -0
  791. package/esm/node_modules/openai/resources/audio/translations.mjs +21 -0
  792. package/esm/node_modules/openai/resources/audio/translations.mjs.map +1 -0
  793. package/esm/node_modules/openai/resources/batches.mjs +54 -0
  794. package/esm/node_modules/openai/resources/batches.mjs.map +1 -0
  795. package/esm/node_modules/openai/resources/beta/assistants.mjs +78 -0
  796. package/esm/node_modules/openai/resources/beta/assistants.mjs.map +1 -0
  797. package/esm/node_modules/openai/resources/beta/beta.mjs +24 -0
  798. package/esm/node_modules/openai/resources/beta/beta.mjs.map +1 -0
  799. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs +18 -0
  800. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs.map +1 -0
  801. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs +49 -0
  802. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs.map +1 -0
  803. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs +85 -0
  804. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs.map +1 -0
  805. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs +21 -0
  806. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs.map +1 -0
  807. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs +33 -0
  808. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs.map +1 -0
  809. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs +33 -0
  810. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs.map +1 -0
  811. package/esm/node_modules/openai/resources/beta/threads/messages.mjs +83 -0
  812. package/esm/node_modules/openai/resources/beta/threads/messages.mjs.map +1 -0
  813. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs +183 -0
  814. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +1 -0
  815. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs +45 -0
  816. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +1 -0
  817. package/esm/node_modules/openai/resources/beta/threads/threads.mjs +101 -0
  818. package/esm/node_modules/openai/resources/beta/threads/threads.mjs.map +1 -0
  819. package/esm/node_modules/openai/resources/chat/chat.mjs +15 -0
  820. package/esm/node_modules/openai/resources/chat/chat.mjs.map +1 -0
  821. package/esm/node_modules/openai/resources/chat/completions/completions.mjs +123 -0
  822. package/esm/node_modules/openai/resources/chat/completions/completions.mjs.map +1 -0
  823. package/esm/node_modules/openai/resources/chat/completions/index.mjs +7 -0
  824. package/esm/node_modules/openai/resources/chat/completions/messages.mjs +35 -0
  825. package/esm/node_modules/openai/resources/chat/completions/messages.mjs.map +1 -0
  826. package/esm/node_modules/openai/resources/chat/index.mjs +5 -0
  827. package/esm/node_modules/openai/resources/completions.mjs +20 -0
  828. package/esm/node_modules/openai/resources/completions.mjs.map +1 -0
  829. package/esm/node_modules/openai/resources/containers/containers.mjs +57 -0
  830. package/esm/node_modules/openai/resources/containers/containers.mjs.map +1 -0
  831. package/esm/node_modules/openai/resources/containers/files/content.mjs +23 -0
  832. package/esm/node_modules/openai/resources/containers/files/content.mjs.map +1 -0
  833. package/esm/node_modules/openai/resources/containers/files/files.mjs +63 -0
  834. package/esm/node_modules/openai/resources/containers/files/files.mjs.map +1 -0
  835. package/esm/node_modules/openai/resources/conversations/conversations.mjs +57 -0
  836. package/esm/node_modules/openai/resources/conversations/conversations.mjs.map +1 -0
  837. package/esm/node_modules/openai/resources/conversations/items.mjs +57 -0
  838. package/esm/node_modules/openai/resources/conversations/items.mjs.map +1 -0
  839. package/esm/node_modules/openai/resources/embeddings.mjs +48 -0
  840. package/esm/node_modules/openai/resources/embeddings.mjs.map +1 -0
  841. package/esm/node_modules/openai/resources/evals/evals.mjs +73 -0
  842. package/esm/node_modules/openai/resources/evals/evals.mjs.map +1 -0
  843. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs +35 -0
  844. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs.map +1 -0
  845. package/esm/node_modules/openai/resources/evals/runs/runs.mjs +72 -0
  846. package/esm/node_modules/openai/resources/evals/runs/runs.mjs.map +1 -0
  847. package/esm/node_modules/openai/resources/files.mjs +111 -0
  848. package/esm/node_modules/openai/resources/files.mjs.map +1 -0
  849. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs +15 -0
  850. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs.map +1 -0
  851. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs +60 -0
  852. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs.map +1 -0
  853. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs +15 -0
  854. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs.map +1 -0
  855. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs +102 -0
  856. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs.map +1 -0
  857. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +24 -0
  858. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +1 -0
  859. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +34 -0
  860. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +1 -0
  861. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +148 -0
  862. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +1 -0
  863. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs +8 -0
  864. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs.map +1 -0
  865. package/esm/node_modules/openai/resources/graders/grader-models.mjs +8 -0
  866. package/esm/node_modules/openai/resources/graders/grader-models.mjs.map +1 -0
  867. package/esm/node_modules/openai/resources/graders/graders.mjs +15 -0
  868. package/esm/node_modules/openai/resources/graders/graders.mjs.map +1 -0
  869. package/esm/node_modules/openai/resources/images.mjs +46 -0
  870. package/esm/node_modules/openai/resources/images.mjs.map +1 -0
  871. package/esm/node_modules/openai/resources/index.mjs +27 -0
  872. package/esm/node_modules/openai/resources/models.mjs +44 -0
  873. package/esm/node_modules/openai/resources/models.mjs.map +1 -0
  874. package/esm/node_modules/openai/resources/moderations.mjs +23 -0
  875. package/esm/node_modules/openai/resources/moderations.mjs.map +1 -0
  876. package/esm/node_modules/openai/resources/realtime/calls.mjs +79 -0
  877. package/esm/node_modules/openai/resources/realtime/calls.mjs.map +1 -0
  878. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs +39 -0
  879. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs.map +1 -0
  880. package/esm/node_modules/openai/resources/realtime/realtime.mjs +18 -0
  881. package/esm/node_modules/openai/resources/realtime/realtime.mjs.map +1 -0
  882. package/esm/node_modules/openai/resources/responses/input-items.mjs +31 -0
  883. package/esm/node_modules/openai/resources/responses/input-items.mjs.map +1 -0
  884. package/esm/node_modules/openai/resources/responses/input-tokens.mjs +27 -0
  885. package/esm/node_modules/openai/resources/responses/input-tokens.mjs.map +1 -0
  886. package/esm/node_modules/openai/resources/responses/responses.mjs +110 -0
  887. package/esm/node_modules/openai/resources/responses/responses.mjs.map +1 -0
  888. package/esm/node_modules/openai/resources/skills/content.mjs +22 -0
  889. package/esm/node_modules/openai/resources/skills/content.mjs.map +1 -0
  890. package/esm/node_modules/openai/resources/skills/skills.mjs +69 -0
  891. package/esm/node_modules/openai/resources/skills/skills.mjs.map +1 -0
  892. package/esm/node_modules/openai/resources/skills/versions/content.mjs +23 -0
  893. package/esm/node_modules/openai/resources/skills/versions/content.mjs.map +1 -0
  894. package/esm/node_modules/openai/resources/skills/versions/versions.mjs +58 -0
  895. package/esm/node_modules/openai/resources/skills/versions/versions.mjs.map +1 -0
  896. package/esm/node_modules/openai/resources/uploads/parts.mjs +34 -0
  897. package/esm/node_modules/openai/resources/uploads/parts.mjs.map +1 -0
  898. package/esm/node_modules/openai/resources/uploads/uploads.mjs +84 -0
  899. package/esm/node_modules/openai/resources/uploads/uploads.mjs.map +1 -0
  900. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs +126 -0
  901. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs.map +1 -0
  902. package/esm/node_modules/openai/resources/vector-stores/files.mjs +147 -0
  903. package/esm/node_modules/openai/resources/vector-stores/files.mjs.map +1 -0
  904. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs +87 -0
  905. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs.map +1 -0
  906. package/esm/node_modules/openai/resources/videos.mjs +115 -0
  907. package/esm/node_modules/openai/resources/videos.mjs.map +1 -0
  908. package/esm/node_modules/openai/resources/webhooks/index.mjs +3 -0
  909. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs +69 -0
  910. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs.map +1 -0
  911. package/esm/node_modules/openai/resources/webhooks.mjs +4 -0
  912. package/esm/node_modules/openai/streaming.mjs +3 -0
  913. package/esm/node_modules/openai/version.mjs +6 -0
  914. package/esm/node_modules/openai/version.mjs.map +1 -0
  915. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +37 -1
  916. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  917. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +71 -5
  918. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
  919. package/esm/repositories/adapters/cascade/filter-applicator.mjs +17 -3
  920. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  921. package/esm/repositories/contracts/index.d.mts +1 -1
  922. package/esm/repositories/contracts/query-builder.contract.d.mts +87 -1
  923. package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
  924. package/esm/repositories/index.d.mts +1 -1
  925. package/esm/repositories/repository.manager.d.mts +110 -2
  926. package/esm/repositories/repository.manager.d.mts.map +1 -1
  927. package/esm/repositories/repository.manager.mjs +207 -25
  928. package/esm/repositories/repository.manager.mjs.map +1 -1
  929. package/esm/router/route-registry.mjs +19 -10
  930. package/esm/router/route-registry.mjs.map +1 -1
  931. package/esm/router/router.d.mts +9 -0
  932. package/esm/router/router.d.mts.map +1 -1
  933. package/esm/router/router.mjs +28 -5
  934. package/esm/router/router.mjs.map +1 -1
  935. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  936. package/esm/storage/drivers/cloud-driver.mjs +48 -12
  937. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  938. package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
  939. package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
  940. package/esm/storage/drivers/local-driver.d.mts +8 -0
  941. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  942. package/esm/storage/drivers/local-driver.mjs +19 -4
  943. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  944. package/esm/storage/drivers/r2-driver.mjs +1 -1
  945. package/esm/storage/drivers/r2-driver.mjs.map +1 -1
  946. package/esm/storage/drivers/s3-driver.mjs +1 -1
  947. package/esm/storage/drivers/s3-driver.mjs.map +1 -1
  948. package/esm/storage/index.d.mts +4 -1
  949. package/esm/storage/index.mjs +3 -0
  950. package/esm/storage/scoped-storage.d.mts +8 -4
  951. package/esm/storage/scoped-storage.d.mts.map +1 -1
  952. package/esm/storage/scoped-storage.mjs +21 -6
  953. package/esm/storage/scoped-storage.mjs.map +1 -1
  954. package/esm/storage/storage.d.mts +12 -4
  955. package/esm/storage/storage.d.mts.map +1 -1
  956. package/esm/storage/storage.mjs +23 -9
  957. package/esm/storage/storage.mjs.map +1 -1
  958. package/esm/storage/types.d.mts +33 -5
  959. package/esm/storage/types.d.mts.map +1 -1
  960. package/esm/storage/utils/contain-path.d.mts +23 -0
  961. package/esm/storage/utils/contain-path.d.mts.map +1 -0
  962. package/esm/storage/utils/contain-path.mjs +35 -0
  963. package/esm/storage/utils/contain-path.mjs.map +1 -0
  964. package/esm/storage/utils/safe-fetch.d.mts +68 -0
  965. package/esm/storage/utils/safe-fetch.d.mts.map +1 -0
  966. package/esm/storage/utils/safe-fetch.mjs +205 -0
  967. package/esm/storage/utils/safe-fetch.mjs.map +1 -0
  968. package/esm/storage/utils/storage-error.d.mts +35 -0
  969. package/esm/storage/utils/storage-error.d.mts.map +1 -0
  970. package/esm/storage/utils/storage-error.mjs +17 -0
  971. package/esm/storage/utils/storage-error.mjs.map +1 -0
  972. package/esm/use-cases/use-case-pipeline.mjs +4 -1
  973. package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
  974. package/esm/use-cases/use-case.mjs +12 -4
  975. package/esm/use-cases/use-case.mjs.map +1 -1
  976. package/esm/use-cases/use-cases-registry.d.mts +12 -4
  977. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  978. package/esm/use-cases/use-cases-registry.mjs +13 -3
  979. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  980. package/esm/utils/npm-registry.d.mts +1 -1
  981. package/esm/utils/npm-registry.mjs +2 -2
  982. package/esm/utils/npm-registry.mjs.map +1 -1
  983. package/esm/utils/paths.mjs +2 -2
  984. package/esm/utils/paths.mjs.map +1 -1
  985. package/esm/validation/validateAll.mjs +2 -2
  986. package/esm/validation/validateAll.mjs.map +1 -1
  987. package/llms-full.txt +456 -46
  988. package/llms.txt +4 -2
  989. package/package.json +9 -9
  990. package/skills/README.md +65 -0
  991. package/skills/add-connector/SKILL.md +6 -1
  992. package/skills/configure-app/SKILL.md +23 -0
  993. package/skills/health-checks/SKILL.md +13 -0
  994. package/skills/use-repository/SKILL.md +38 -1
  995. package/skills/warlock-doctor/SKILL.md +135 -0
  996. package/skills/warlock-routes/SKILL.md +91 -0
  997. package/skills/write-seeder/SKILL.md +143 -45
@@ -0,0 +1,122 @@
1
+ import { WorkflowError } from "../errors/workflow-error.mjs";
2
+ import "../errors/index.mjs";
3
+ import { notifyObservers } from "../observe/resolve-observers.mjs";
4
+ import { asTool } from "./as-tool.mjs";
5
+ import { WorkflowEmitter } from "./emitter.mjs";
6
+ import { loadSnapshotForResume } from "./snapshot.mjs";
7
+ import { runWorkflow } from "./engine.mjs";
8
+ import { computeSignature } from "./signature.mjs";
9
+
10
+ //#region ../@warlock.js/ai/src/workflow/workflow.ts
11
+ /**
12
+ * `ai.workflow(def)` — construct a `WorkflowInstance`. Validates the
13
+ * definition, computes a stable structural signature, and wires up the
14
+ * three-tier event subscription model.
15
+ */
16
+ function workflow(definition) {
17
+ validate(definition);
18
+ const signature = computeSignature(definition);
19
+ const emitter = new WorkflowEmitter(definition.on);
20
+ async function execute(inputOrOptions, maybeOptions) {
21
+ const { input, options } = normalizeExecuteArgs(inputOrOptions, maybeOptions);
22
+ const runId = options?.runId ?? generateRunId();
23
+ const result = await runWorkflow({
24
+ definition,
25
+ signature,
26
+ emitter,
27
+ input,
28
+ context: options?.context,
29
+ runId,
30
+ signal: options?.signal,
31
+ executionHandlers: options?.on,
32
+ sessionId: options?.sessionId
33
+ });
34
+ await notifyObservers(definition.observe, result.report);
35
+ return result;
36
+ }
37
+ async function resume(runId, options) {
38
+ const snapshot = await loadSnapshotForResume({
39
+ definition,
40
+ signature,
41
+ runId,
42
+ options
43
+ });
44
+ const result = await runWorkflow({
45
+ definition,
46
+ signature,
47
+ emitter,
48
+ input: snapshot.input,
49
+ context: options?.context,
50
+ runId,
51
+ signal: options?.signal,
52
+ executionHandlers: options?.on,
53
+ sessionId: options?.sessionId,
54
+ resumeFrom: snapshot
55
+ });
56
+ await notifyObservers(definition.observe, result.report);
57
+ return result;
58
+ }
59
+ const instance = {
60
+ name: definition.name,
61
+ description: definition.description,
62
+ inputSchema: definition.inputSchema,
63
+ signature,
64
+ version: definition.version,
65
+ execute,
66
+ resume,
67
+ on(event, handler) {
68
+ return emitter.on(event, handler);
69
+ },
70
+ off(event, handler) {
71
+ emitter.off(event, handler);
72
+ },
73
+ asTool(options) {
74
+ return asTool(instance, options);
75
+ }
76
+ };
77
+ return instance;
78
+ }
79
+ /**
80
+ * Resolve the overloaded `execute()` call shape. If the caller passed
81
+ * a single plain object with an `input` field, treat it as the
82
+ * combined `WorkflowExecuteOptions`. Otherwise the first arg is the
83
+ * raw workflow input and the second is the run options.
84
+ *
85
+ * Ambiguity note: if your real workflow `input` is itself an object
86
+ * with a top-level `input` key, prefer `execute(rawInput, options)`
87
+ * explicitly — the single-arg detection heuristic would mis-classify
88
+ * it.
89
+ */
90
+ function normalizeExecuteArgs(inputOrOptions, maybeOptions) {
91
+ if (maybeOptions === void 0 && inputOrOptions !== null && typeof inputOrOptions === "object" && "input" in inputOrOptions) {
92
+ const { input, ...options } = inputOrOptions;
93
+ return {
94
+ input,
95
+ options
96
+ };
97
+ }
98
+ return {
99
+ input: inputOrOptions,
100
+ options: maybeOptions
101
+ };
102
+ }
103
+ function validate(definition) {
104
+ if (!definition.name || typeof definition.name !== "string") throw new WorkflowError("ai.workflow: `name` is required");
105
+ if (!Array.isArray(definition.steps) || definition.steps.length === 0) throw new WorkflowError(`ai.workflow("${definition.name}"): at least one step is required`);
106
+ const seen = /* @__PURE__ */ new Set();
107
+ const walk = (name) => {
108
+ if (seen.has(name)) throw new WorkflowError(`ai.workflow("${definition.name}"): duplicate step name "${name}"`);
109
+ seen.add(name);
110
+ };
111
+ for (const step of definition.steps) {
112
+ walk(step.name);
113
+ if (step.parallel) for (const child of step.parallel) walk(child.name);
114
+ }
115
+ }
116
+ function generateRunId() {
117
+ return `wf_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
118
+ }
119
+
120
+ //#endregion
121
+ export { workflow };
122
+ //# sourceMappingURL=workflow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.mjs","names":["combined"],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/workflow.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { WorkflowEventMap } from \"../contracts/events/event-map.type\";\nimport type { ExecutionReport } from \"../contracts/result/execution-report.type\";\nimport type { WorkflowResult } from \"../contracts/result/workflow-result.type\";\nimport type {\n WorkflowDefinition,\n WorkflowEventHandler,\n WorkflowExecuteOptions,\n WorkflowInstance,\n WorkflowResumeOptions,\n WorkflowRunOptions,\n} from \"../contracts/workflow/workflow.contract\";\nimport { WorkflowError } from \"../errors\";\nimport { notifyObservers } from \"../observe/resolve-observers\";\nimport type { ToolContract } from \"../tool/tool\";\nimport { asTool } from \"./as-tool\";\nimport { WorkflowEmitter } from \"./emitter\";\nimport { loadSnapshotForResume, runWorkflow } from \"./engine\";\nimport { computeSignature } from \"./signature\";\n\n/**\n * `ai.workflow(def)` — construct a `WorkflowInstance`. Validates the\n * definition, computes a stable structural signature, and wires up the\n * three-tier event subscription model.\n */\nexport function workflow<\n TInput = unknown,\n TOutput = unknown,\n TState = Record<string, unknown>,\n TContext = unknown,\n>(\n definition: WorkflowDefinition<TInput, TOutput, TState, TContext>,\n): WorkflowInstance<TInput, TOutput, TState, TContext> {\n validate(definition);\n const signature = computeSignature(definition);\n const emitter = new WorkflowEmitter(definition.on);\n\n async function execute(\n inputOrOptions: TInput | WorkflowExecuteOptions<TInput, TContext>,\n maybeOptions?: WorkflowRunOptions<TContext>,\n ): Promise<WorkflowResult<TOutput>> {\n const { input, options } = normalizeExecuteArgs<TInput, TContext>(\n inputOrOptions,\n maybeOptions,\n );\n const runId = options?.runId ?? generateRunId();\n const result = await runWorkflow<TOutput>({\n definition,\n signature,\n emitter,\n input,\n context: options?.context,\n runId,\n signal: options?.signal,\n executionHandlers: options?.on,\n sessionId: options?.sessionId,\n });\n\n // Route the finished report to any resolved observers (F1/F3).\n // Gated by `definition.observe` + the global observe-all flag;\n // observer errors are swallowed inside `notifyObservers`. Bridge the\n // pre-existing `WorkflowReport = Omit<BaseReport, \"type\">` drift (the\n // report carries `type: \"workflow\"` at runtime — engine sets it) so\n // this call site adds no new type error beyond the documented baseline.\n await notifyObservers(definition.observe, result.report as unknown as ExecutionReport);\n\n return result;\n }\n\n async function resume(\n runId: string,\n options?: WorkflowResumeOptions<TContext>,\n ): Promise<WorkflowResult<TOutput>> {\n const snapshot = await loadSnapshotForResume({\n definition,\n signature,\n runId,\n options,\n });\n\n const result = await runWorkflow<TOutput>({\n definition,\n signature,\n emitter,\n input: snapshot.input,\n context: options?.context,\n runId,\n signal: options?.signal,\n executionHandlers: options?.on,\n sessionId: options?.sessionId,\n resumeFrom: snapshot,\n });\n\n await notifyObservers(definition.observe, result.report as unknown as ExecutionReport);\n\n return result;\n }\n\n const instance: WorkflowInstance<TInput, TOutput, TState, TContext> = {\n name: definition.name,\n description: definition.description,\n inputSchema: definition.inputSchema,\n signature,\n version: definition.version,\n execute,\n resume,\n on<K extends keyof WorkflowEventMap>(event: K, handler: WorkflowEventHandler<K>) {\n return emitter.on(event, handler);\n },\n off<K extends keyof WorkflowEventMap>(event: K, handler: WorkflowEventHandler<K>) {\n emitter.off(event, handler);\n },\n asTool<TToolInput = TInput>(options: {\n description?: string;\n inputSchema: StandardSchemaV1<TToolInput>;\n }): ToolContract<TToolInput, TOutput> {\n return asTool<TInput, TOutput, TToolInput>(instance, options);\n },\n };\n\n return instance;\n}\n\n/**\n * Resolve the overloaded `execute()` call shape. If the caller passed\n * a single plain object with an `input` field, treat it as the\n * combined `WorkflowExecuteOptions`. Otherwise the first arg is the\n * raw workflow input and the second is the run options.\n *\n * Ambiguity note: if your real workflow `input` is itself an object\n * with a top-level `input` key, prefer `execute(rawInput, options)`\n * explicitly — the single-arg detection heuristic would mis-classify\n * it.\n */\nfunction normalizeExecuteArgs<TInput, TContext>(\n inputOrOptions: TInput | WorkflowExecuteOptions<TInput, TContext>,\n maybeOptions: WorkflowRunOptions<TContext> | undefined,\n): { input: TInput; options?: WorkflowRunOptions<TContext> } {\n if (\n maybeOptions === undefined &&\n inputOrOptions !== null &&\n typeof inputOrOptions === \"object\" &&\n \"input\" in (inputOrOptions as object)\n ) {\n const combined = inputOrOptions as WorkflowExecuteOptions<TInput, TContext>;\n const { input, ...options } = combined;\n return { input, options };\n }\n\n return { input: inputOrOptions as TInput, options: maybeOptions };\n}\n\nfunction validate<TInput, TOutput, TState, TContext>(\n definition: WorkflowDefinition<TInput, TOutput, TState, TContext>,\n): void {\n if (!definition.name || typeof definition.name !== \"string\") {\n throw new WorkflowError(\"ai.workflow: `name` is required\");\n }\n\n if (!Array.isArray(definition.steps) || definition.steps.length === 0) {\n throw new WorkflowError(`ai.workflow(\"${definition.name}\"): at least one step is required`);\n }\n\n const seen = new Set<string>();\n const walk = (name: string) => {\n if (seen.has(name)) {\n throw new WorkflowError(`ai.workflow(\"${definition.name}\"): duplicate step name \"${name}\"`);\n }\n seen.add(name);\n };\n\n for (const step of definition.steps) {\n walk(step.name);\n\n if (step.parallel) {\n for (const child of step.parallel) {\n walk(child.name);\n }\n }\n }\n}\n\nfunction generateRunId(): string {\n // Non-crypto random — adequate for ephemeral workflow runs.\n return `wf_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAyBA,SAAgB,SAMd,YACqD;CACrD,SAAS,UAAU;CACnB,MAAM,YAAY,iBAAiB,UAAU;CAC7C,MAAM,UAAU,IAAI,gBAAgB,WAAW,EAAE;CAEjD,eAAe,QACb,gBACA,cACkC;EAClC,MAAM,EAAE,OAAO,YAAY,qBACzB,gBACA,YACF;EACA,MAAM,QAAQ,SAAS,SAAS,cAAc;EAC9C,MAAM,SAAS,MAAM,YAAqB;GACxC;GACA;GACA;GACA;GACA,SAAS,SAAS;GAClB;GACA,QAAQ,SAAS;GACjB,mBAAmB,SAAS;GAC5B,WAAW,SAAS;EACtB,CAAC;EAQD,MAAM,gBAAgB,WAAW,SAAS,OAAO,MAAoC;EAErF,OAAO;CACT;CAEA,eAAe,OACb,OACA,SACkC;EAClC,MAAM,WAAW,MAAM,sBAAsB;GAC3C;GACA;GACA;GACA;EACF,CAAC;EAED,MAAM,SAAS,MAAM,YAAqB;GACxC;GACA;GACA;GACA,OAAO,SAAS;GAChB,SAAS,SAAS;GAClB;GACA,QAAQ,SAAS;GACjB,mBAAmB,SAAS;GAC5B,WAAW,SAAS;GACpB,YAAY;EACd,CAAC;EAED,MAAM,gBAAgB,WAAW,SAAS,OAAO,MAAoC;EAErF,OAAO;CACT;CAEA,MAAM,WAAgE;EACpE,MAAM,WAAW;EACjB,aAAa,WAAW;EACxB,aAAa,WAAW;EACxB;EACA,SAAS,WAAW;EACpB;EACA;EACA,GAAqC,OAAU,SAAkC;GAC/E,OAAO,QAAQ,GAAG,OAAO,OAAO;EAClC;EACA,IAAsC,OAAU,SAAkC;GAChF,QAAQ,IAAI,OAAO,OAAO;EAC5B;EACA,OAA4B,SAGU;GACpC,OAAO,OAAoC,UAAU,OAAO;EAC9D;CACF;CAEA,OAAO;AACT;;;;;;;;;;;;AAaA,SAAS,qBACP,gBACA,cAC2D;CAC3D,IACE,iBAAiB,UACjB,mBAAmB,QACnB,OAAO,mBAAmB,YAC1B,WAAY,gBACZ;EAEA,MAAM,EAAE,OAAO,GAAG,YAAYA;EAC9B,OAAO;GAAE;GAAO;EAAQ;CAC1B;CAEA,OAAO;EAAE,OAAO;EAA0B,SAAS;CAAa;AAClE;AAEA,SAAS,SACP,YACM;CACN,IAAI,CAAC,WAAW,QAAQ,OAAO,WAAW,SAAS,UACjD,MAAM,IAAI,cAAc,iCAAiC;CAG3D,IAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,KAAK,WAAW,MAAM,WAAW,GAClE,MAAM,IAAI,cAAc,gBAAgB,WAAW,KAAK,kCAAkC;CAG5F,MAAM,uBAAO,IAAI,IAAY;CAC7B,MAAM,QAAQ,SAAiB;EAC7B,IAAI,KAAK,IAAI,IAAI,GACf,MAAM,IAAI,cAAc,gBAAgB,WAAW,KAAK,2BAA2B,KAAK,EAAE;EAE5F,KAAK,IAAI,IAAI;CACf;CAEA,KAAK,MAAM,QAAQ,WAAW,OAAO;EACnC,KAAK,KAAK,IAAI;EAEd,IAAI,KAAK,UACP,KAAK,MAAM,SAAS,KAAK,UACvB,KAAK,MAAM,IAAI;CAGrB;AACF;AAEA,SAAS,gBAAwB;CAE/B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE;AAChF"}
@@ -0,0 +1,4 @@
1
+ import "./utils/index.mjs";
2
+ import { log } from "@warlock.js/logger";
3
+
4
+ export { };
@@ -0,0 +1,5 @@
1
+ import "../../ai/src/index.mjs";
2
+ import "./utils/index.mjs";
3
+ import { log } from "@warlock.js/logger";
4
+
5
+ export { };
@@ -0,0 +1,7 @@
1
+ import "./embedder.mjs";
2
+ import "./image.mjs";
3
+ import "./speech.mjs";
4
+ import "./transcription.mjs";
5
+ import "./sdk.mjs";
6
+
7
+ export { };
@@ -0,0 +1,5 @@
1
+ import "../../ai/src/index.mjs";
2
+ import "./utils/index.mjs";
3
+ import { log } from "@warlock.js/logger";
4
+
5
+ export { };
@@ -0,0 +1,9 @@
1
+ import "../../node_modules/openai/index.mjs";
2
+ import "../../ai/src/index.mjs";
3
+ import "./embedder.mjs";
4
+ import "./image.mjs";
5
+ import "./model.mjs";
6
+ import "./speech.mjs";
7
+ import "./transcription.mjs";
8
+
9
+ export { };
@@ -0,0 +1,5 @@
1
+ import "../../ai/src/index.mjs";
2
+ import "./utils/index.mjs";
3
+ import { log } from "@warlock.js/logger";
4
+
5
+ export { };
@@ -0,0 +1,6 @@
1
+ import "../../node_modules/openai/index.mjs";
2
+ import "../../ai/src/index.mjs";
3
+ import "./utils/index.mjs";
4
+ import { log } from "@warlock.js/logger";
5
+
6
+ export { };
@@ -0,0 +1,5 @@
1
+ import "./to-openai-messages.mjs";
2
+ import "./to-openai-tools.mjs";
3
+ import "./wrap-openai-error.mjs";
4
+
5
+ export { };
@@ -0,0 +1,3 @@
1
+ import "../../../ai/src/index.mjs";
2
+
3
+ export { };
@@ -0,0 +1,3 @@
1
+ import "../../../ai/src/index.mjs";
2
+
3
+ export { };
@@ -0,0 +1,4 @@
1
+ import "../../../node_modules/openai/index.mjs";
2
+ import "../../../ai/src/index.mjs";
3
+
4
+ export { };
@@ -19,7 +19,7 @@ const devServerCommand = command({
19
19
  await displayStartupBanner({ environment: "development" });
20
20
  },
21
21
  action: async (data) => {
22
- await startDevelopmentServer({
22
+ startDevelopmentServer({
23
23
  fresh: Boolean(data.options.fresh),
24
24
  generateTypings: data.options.skipTypings ? false : void 0,
25
25
  healthCheckers: data.options.skipHealth ? false : void 0
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.command.mjs","names":[],"sources":["../../../../../../../../@warlock.js/core/src/cli/commands/dev-server.command.ts"],"sourcesContent":["import { checkForFrameworkUpdate } from \"../../dev-server/check-for-updates\";\r\nimport { startDevelopmentServer } from \"../../dev-server/start-development-server\";\r\nimport { command } from \"../cli-command\";\r\nimport { displayStartupBanner } from \"../cli-commands.utils\";\r\n\r\nexport const devServerCommand = command({\r\n name: \"dev\",\r\n description: \"Start development server (HMR, type-gen, health checks)\",\r\n persistent: true,\r\n preload: {\r\n runtimeStrategy: \"development\",\r\n config: true, // load all config\r\n bootstrap: true,\r\n prestart: true, // load prestart file (if exists)\r\n // Only the Early lifecycle phase starts here; the Late phase\r\n // (http, socket) starts after app modules load — see\r\n // development-server.ts STEP 8.5.\r\n connectors: true,\r\n },\r\n preAction: async () => {\r\n await displayStartupBanner({ environment: \"development\" });\r\n },\r\n action: async (data) => {\r\n await startDevelopmentServer({\r\n fresh: Boolean(data.options.fresh),\r\n // Pass `false` only when the CLI flag is explicitly set; `undefined`\r\n // lets `warlock.config.ts > devServer.*` defaults apply.\r\n generateTypings: data.options.skipTypings ? false : undefined,\r\n healthCheckers: data.options.skipHealth ? false : undefined,\r\n });\r\n\r\n // Fire-and-forget: once the server is ready, surface a one-line notice if\r\n // a newer @warlock.js/core has been published. Fully self-guarded — it\r\n // never blocks startup nor breaks dev if the registry is unreachable.\r\n void checkForFrameworkUpdate();\r\n },\r\n options: [\r\n {\r\n text: \"--fresh, -f\",\r\n description: \"Delete .warlock/manifest.json before start (force full re-parse from disk)\",\r\n type: \"boolean\",\r\n },\r\n {\r\n text: \"--skip-typings, -st\",\r\n description: \"Skip background type generation for this run\",\r\n type: \"boolean\",\r\n },\r\n {\r\n text: \"--skip-health, -sh\",\r\n description: \"Skip file health checkers for this run\",\r\n type: \"boolean\",\r\n },\r\n ],\r\n});\r\n"],"mappings":";;;;;;AAKA,MAAa,mBAAmB,QAAQ;CACtC,MAAM;CACN,aAAa;CACb,YAAY;CACZ,SAAS;EACP,iBAAiB;EACjB,QAAQ;EACR,WAAW;EACX,UAAU;EAIV,YAAY;CACd;CACA,WAAW,YAAY;EACrB,MAAM,qBAAqB,EAAE,aAAa,cAAc,CAAC;CAC3D;CACA,QAAQ,OAAO,SAAS;EACtB,MAAM,uBAAuB;GAC3B,OAAO,QAAQ,KAAK,QAAQ,KAAK;GAGjC,iBAAiB,KAAK,QAAQ,cAAc,QAAQ;GACpD,gBAAgB,KAAK,QAAQ,aAAa,QAAQ;EACpD,CAAC;EAKD,AAAK,wBAAwB;CAC/B;CACA,SAAS;EACP;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"dev-server.command.mjs","names":[],"sources":["../../../../../../../../@warlock.js/core/src/cli/commands/dev-server.command.ts"],"sourcesContent":["import { checkForFrameworkUpdate } from \"../../dev-server/check-for-updates\";\r\nimport { startDevelopmentServer } from \"../../dev-server/start-development-server\";\r\nimport { command } from \"../cli-command\";\r\nimport { displayStartupBanner } from \"../cli-commands.utils\";\r\n\r\nexport const devServerCommand = command({\r\n name: \"dev\",\r\n description: \"Start development server (HMR, type-gen, health checks)\",\r\n persistent: true,\r\n preload: {\r\n runtimeStrategy: \"development\",\r\n config: true, // load all config\r\n bootstrap: true,\r\n prestart: true, // load prestart file (if exists)\r\n // Only the Early lifecycle phase starts here; the Late phase\r\n // (http, socket) starts after app modules load — see\r\n // development-server.ts STEP 8.5.\r\n connectors: true,\r\n },\r\n preAction: async () => {\r\n await displayStartupBanner({ environment: \"development\" });\r\n },\r\n action: async (data) => {\r\n startDevelopmentServer({\r\n fresh: Boolean(data.options.fresh),\r\n // Pass `false` only when the CLI flag is explicitly set; `undefined`\r\n // lets `warlock.config.ts > devServer.*` defaults apply.\r\n generateTypings: data.options.skipTypings ? false : undefined,\r\n healthCheckers: data.options.skipHealth ? false : undefined,\r\n });\r\n\r\n // Fire-and-forget: once the server is ready, surface a one-line notice if\r\n // a newer @warlock.js/core has been published. Fully self-guarded — it\r\n // never blocks startup nor breaks dev if the registry is unreachable.\r\n void checkForFrameworkUpdate();\r\n },\r\n options: [\r\n {\r\n text: \"--fresh, -f\",\r\n description: \"Delete .warlock/manifest.json before start (force full re-parse from disk)\",\r\n type: \"boolean\",\r\n },\r\n {\r\n text: \"--skip-typings, -st\",\r\n description: \"Skip background type generation for this run\",\r\n type: \"boolean\",\r\n },\r\n {\r\n text: \"--skip-health, -sh\",\r\n description: \"Skip file health checkers for this run\",\r\n type: \"boolean\",\r\n },\r\n ],\r\n});\r\n"],"mappings":";;;;;;AAKA,MAAa,mBAAmB,QAAQ;CACtC,MAAM;CACN,aAAa;CACb,YAAY;CACZ,SAAS;EACP,iBAAiB;EACjB,QAAQ;EACR,WAAW;EACX,UAAU;EAIV,YAAY;CACd;CACA,WAAW,YAAY;EACrB,MAAM,qBAAqB,EAAE,aAAa,cAAc,CAAC;CAC3D;CACA,QAAQ,OAAO,SAAS;EACtB,uBAAuB;GACrB,OAAO,QAAQ,KAAK,QAAQ,KAAK;GAGjC,iBAAiB,KAAK,QAAQ,cAAc,QAAQ;GACpD,gBAAgB,KAAK,QAAQ,aAAa,QAAQ;EACpD,CAAC;EAKD,AAAK,wBAAwB;CAC/B;CACA,SAAS;EACP;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { config } from "../../../../config/config-getter.mjs";
2
+
3
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/config.check.ts
4
+ /**
5
+ * Config sections that a typical Warlock HTTP application is expected to
6
+ * register. A missing section here is release/runtime-blocking, so absence is
7
+ * a `fail` rather than a warning.
8
+ */
9
+ const REQUIRED_CONFIG_SECTIONS = ["app", "http"];
10
+ /**
11
+ * `@mongez/config` returns `null` (not `undefined`) for an unregistered key,
12
+ * so treat both nullish values as "missing".
13
+ */
14
+ function isPresent(value) {
15
+ return value !== null && value !== void 0;
16
+ }
17
+ /**
18
+ * Verifies that the required top-level config sections are present. Reads each
19
+ * section via `config.get` only — never mutates configuration.
20
+ */
21
+ const configCheck = {
22
+ name: "config",
23
+ run: () => {
24
+ const missing = REQUIRED_CONFIG_SECTIONS.filter((section) => {
25
+ return !isPresent(config.get(section));
26
+ });
27
+ if (missing.length > 0) return {
28
+ name: "config",
29
+ status: "fail",
30
+ detail: `missing required config section(s): ${missing.join(", ")}`
31
+ };
32
+ return {
33
+ name: "config",
34
+ status: "ok",
35
+ detail: `required sections present (${REQUIRED_CONFIG_SECTIONS.join(", ")})`
36
+ };
37
+ }
38
+ };
39
+
40
+ //#endregion
41
+ export { configCheck };
42
+ //# sourceMappingURL=config.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/config.check.ts"],"sourcesContent":["import { config } from \"../../../../config/config-getter\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * Config sections that a typical Warlock HTTP application is expected to\n * register. A missing section here is release/runtime-blocking, so absence is\n * a `fail` rather than a warning.\n */\nconst REQUIRED_CONFIG_SECTIONS = [\"app\", \"http\"] as const;\n\n/**\n * `@mongez/config` returns `null` (not `undefined`) for an unregistered key,\n * so treat both nullish values as \"missing\".\n */\nfunction isPresent(value: unknown): boolean {\n return value !== null && value !== undefined;\n}\n\n/**\n * Verifies that the required top-level config sections are present. Reads each\n * section via `config.get` only — never mutates configuration.\n */\nexport const configCheck: DoctorCheck = {\n name: \"config\",\n run: () => {\n const missing = REQUIRED_CONFIG_SECTIONS.filter((section) => {\n return !isPresent(config.get(section));\n });\n\n if (missing.length > 0) {\n return {\n name: \"config\",\n status: \"fail\",\n detail: `missing required config section(s): ${missing.join(\", \")}`,\n };\n }\n\n return {\n name: \"config\",\n status: \"ok\",\n detail: `required sections present (${REQUIRED_CONFIG_SECTIONS.join(\", \")})`,\n };\n },\n};\n"],"mappings":";;;;;;;;AAQA,MAAM,2BAA2B,CAAC,OAAO,MAAM;;;;;AAM/C,SAAS,UAAU,OAAyB;CAC1C,OAAO,UAAU,QAAQ,UAAU;AACrC;;;;;AAMA,MAAa,cAA2B;CACtC,MAAM;CACN,WAAW;EACT,MAAM,UAAU,yBAAyB,QAAQ,YAAY;GAC3D,OAAO,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC;EACvC,CAAC;EAED,IAAI,QAAQ,SAAS,GACnB,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,uCAAuC,QAAQ,KAAK,IAAI;EAClE;EAGF,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,8BAA8B,yBAAyB,KAAK,IAAI,EAAE;EAC5E;CACF;AACF"}
@@ -0,0 +1,28 @@
1
+ import { connectorsManager } from "../../../../connectors/connectors-manager.mjs";
2
+
3
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/connectors.check.ts
4
+ /**
5
+ * Reports which connectors are registered and which are currently active. This
6
+ * is informational: a registered-but-inactive connector is normal (it simply
7
+ * has no config wired), so the check passes as long as the manager can be
8
+ * enumerated and reports its active set.
9
+ *
10
+ * Read-only: calls `connectorsManager.list()` and each connector's
11
+ * `isActive()` (a pure getter) only.
12
+ */
13
+ const connectorsCheck = {
14
+ name: "connectors",
15
+ run: () => {
16
+ const connectors = connectorsManager.list();
17
+ const activeNames = connectors.filter((connector) => connector.isActive()).map((connector) => connector.name);
18
+ return {
19
+ name: "connectors",
20
+ status: "ok",
21
+ detail: activeNames.length > 0 ? `${connectors.length} registered, active: ${activeNames.join(", ")}` : `${connectors.length} registered, none active`
22
+ };
23
+ }
24
+ };
25
+
26
+ //#endregion
27
+ export { connectorsCheck };
28
+ //# sourceMappingURL=connectors.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/connectors.check.ts"],"sourcesContent":["import { connectorsManager } from \"../../../../connectors/connectors-manager\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * Reports which connectors are registered and which are currently active. This\n * is informational: a registered-but-inactive connector is normal (it simply\n * has no config wired), so the check passes as long as the manager can be\n * enumerated and reports its active set.\n *\n * Read-only: calls `connectorsManager.list()` and each connector's\n * `isActive()` (a pure getter) only.\n */\nexport const connectorsCheck: DoctorCheck = {\n name: \"connectors\",\n run: () => {\n const connectors = connectorsManager.list();\n const active = connectors.filter((connector) => connector.isActive());\n const activeNames = active.map((connector) => connector.name);\n\n const detail =\n activeNames.length > 0\n ? `${connectors.length} registered, active: ${activeNames.join(\", \")}`\n : `${connectors.length} registered, none active`;\n\n return {\n name: \"connectors\",\n status: \"ok\",\n detail,\n };\n },\n};\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,kBAA+B;CAC1C,MAAM;CACN,WAAW;EACT,MAAM,aAAa,kBAAkB,KAAK;EAE1C,MAAM,cADS,WAAW,QAAQ,cAAc,UAAU,SAAS,CAC1C,CAAC,CAAC,KAAK,cAAc,UAAU,IAAI;EAO5D,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAPA,YAAY,SAAS,IACjB,GAAG,WAAW,OAAO,uBAAuB,YAAY,KAAK,IAAI,MACjE,GAAG,WAAW,OAAO;EAM3B;CACF;AACF"}
@@ -0,0 +1,35 @@
1
+ import { config } from "../../../../config/config-getter.mjs";
2
+
3
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/health.check.ts
4
+ /**
5
+ * Confirms the built-in liveness (`/health`) and readiness (`/ready`)
6
+ * endpoints will be exposed. The HTTP connector registers them automatically
7
+ * unless `http.health.enabled` is explicitly `false`, so this check reads that
8
+ * config flag and the (overridable) paths.
9
+ *
10
+ * Disabling the probes is a deliberate, supported choice but a common
11
+ * misconfiguration in container/orchestrated deployments, so it is surfaced as
12
+ * a `warn` rather than a pass.
13
+ *
14
+ * Read-only: inspects `config.get("http.health")` only.
15
+ */
16
+ const healthCheck = {
17
+ name: "health",
18
+ run: () => {
19
+ const healthConfig = config.get("http.health");
20
+ if (healthConfig?.enabled === false) return {
21
+ name: "health",
22
+ status: "warn",
23
+ detail: "health endpoints disabled (http.health.enabled = false)"
24
+ };
25
+ return {
26
+ name: "health",
27
+ status: "ok",
28
+ detail: `liveness ${healthConfig?.path ?? "/health"} + readiness ${healthConfig?.readinessPath ?? "/ready"} registered`
29
+ };
30
+ }
31
+ };
32
+
33
+ //#endregion
34
+ export { healthCheck };
35
+ //# sourceMappingURL=health.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/health.check.ts"],"sourcesContent":["import { config } from \"../../../../config/config-getter\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * Confirms the built-in liveness (`/health`) and readiness (`/ready`)\n * endpoints will be exposed. The HTTP connector registers them automatically\n * unless `http.health.enabled` is explicitly `false`, so this check reads that\n * config flag and the (overridable) paths.\n *\n * Disabling the probes is a deliberate, supported choice but a common\n * misconfiguration in container/orchestrated deployments, so it is surfaced as\n * a `warn` rather than a pass.\n *\n * Read-only: inspects `config.get(\"http.health\")` only.\n */\nexport const healthCheck: DoctorCheck = {\n name: \"health\",\n run: () => {\n const healthConfig = config.get(\"http.health\");\n\n if (healthConfig?.enabled === false) {\n return {\n name: \"health\",\n status: \"warn\",\n detail: \"health endpoints disabled (http.health.enabled = false)\",\n };\n }\n\n const livenessPath = healthConfig?.path ?? \"/health\";\n const readinessPath = healthConfig?.readinessPath ?? \"/ready\";\n\n return {\n name: \"health\",\n status: \"ok\",\n detail: `liveness ${livenessPath} + readiness ${readinessPath} registered`,\n };\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,cAA2B;CACtC,MAAM;CACN,WAAW;EACT,MAAM,eAAe,OAAO,IAAI,aAAa;EAE7C,IAAI,cAAc,YAAY,OAC5B,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;EACV;EAMF,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,YANW,cAAc,QAAQ,UAMR,eALb,cAAc,iBAAiB,SAKW;EAChE;CACF;AACF"}
@@ -0,0 +1,25 @@
1
+ import { configCheck } from "./config.check.mjs";
2
+ import { connectorsCheck } from "./connectors.check.mjs";
3
+ import { healthCheck } from "./health.check.mjs";
4
+ import { optionalPeersCheck } from "./optional-peers.check.mjs";
5
+ import { releaseHygieneCheck } from "./release-hygiene.check.mjs";
6
+ import { routesCheck } from "./routes.check.mjs";
7
+
8
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/index.ts
9
+ /**
10
+ * The default, ordered set of checks `warlock doctor` runs. Ordering controls
11
+ * the report layout: runtime-surface checks first (routes, config, connectors,
12
+ * peers, health), release hygiene last.
13
+ */
14
+ const defaultDoctorChecks = [
15
+ routesCheck,
16
+ configCheck,
17
+ connectorsCheck,
18
+ optionalPeersCheck,
19
+ healthCheck,
20
+ releaseHygieneCheck
21
+ ];
22
+
23
+ //#endregion
24
+ export { defaultDoctorChecks };
25
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/index.ts"],"sourcesContent":["import type { DoctorCheck } from \"../check.types\";\nimport { configCheck } from \"./config.check\";\nimport { connectorsCheck } from \"./connectors.check\";\nimport { healthCheck } from \"./health.check\";\nimport { optionalPeersCheck } from \"./optional-peers.check\";\nimport { releaseHygieneCheck } from \"./release-hygiene.check\";\nimport { routesCheck } from \"./routes.check\";\n\n/**\n * The default, ordered set of checks `warlock doctor` runs. Ordering controls\n * the report layout: runtime-surface checks first (routes, config, connectors,\n * peers, health), release hygiene last.\n */\nexport const defaultDoctorChecks: DoctorCheck[] = [\n routesCheck,\n configCheck,\n connectorsCheck,\n optionalPeersCheck,\n healthCheck,\n releaseHygieneCheck,\n];\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,sBAAqC;CAChD;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -0,0 +1,90 @@
1
+ import { createRequire } from "node:module";
2
+
3
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/optional-peers.check.ts
4
+ /**
5
+ * The optional peers core knows how to use. Kept in sync with the install
6
+ * targets in the `warlock add` feature registry (sharp, nodemailer, socket.io,
7
+ * the AWS SDK family, redis, the Cascade DB drivers, …).
8
+ */
9
+ const OPTIONAL_PEERS = [
10
+ {
11
+ package: "sharp",
12
+ feature: "image processing"
13
+ },
14
+ {
15
+ package: "nodemailer",
16
+ feature: "mail (SMTP) channel"
17
+ },
18
+ {
19
+ package: "socket.io",
20
+ feature: "realtime socket server"
21
+ },
22
+ {
23
+ package: "@aws-sdk/client-s3",
24
+ feature: "S3 cloud storage"
25
+ },
26
+ {
27
+ package: "@aws-sdk/client-sesv2",
28
+ feature: "Amazon SES mail channel"
29
+ },
30
+ {
31
+ package: "redis",
32
+ feature: "Redis cache driver"
33
+ },
34
+ {
35
+ package: "mongodb",
36
+ feature: "MongoDB database driver"
37
+ },
38
+ {
39
+ package: "pg",
40
+ feature: "Postgres database driver"
41
+ },
42
+ {
43
+ package: "mysql2",
44
+ feature: "MySQL database driver"
45
+ }
46
+ ];
47
+ /**
48
+ * Resolve from the project's working directory, not from core's own
49
+ * `node_modules`, so the probe reflects what the *consuming app* has installed.
50
+ */
51
+ const projectRequire = createRequire(`${process.cwd()}/package.json`);
52
+ /**
53
+ * Whether a package can be resolved from the project. A failed resolve (the
54
+ * normal "not installed" case) is swallowed and reported as missing.
55
+ */
56
+ function isInstalled(packageName) {
57
+ try {
58
+ projectRequire.resolve(packageName);
59
+ return true;
60
+ } catch {
61
+ return false;
62
+ }
63
+ }
64
+ /**
65
+ * Detects which optional peer dependencies are installed and which are not,
66
+ * reporting the features that are consequently unavailable. Missing peers are
67
+ * a `warn` (the feature is simply off), never a `fail`.
68
+ *
69
+ * Read-only: resolves module paths only; never imports or executes the peers.
70
+ */
71
+ const optionalPeersCheck = {
72
+ name: "optional-peers",
73
+ run: () => {
74
+ const missing = OPTIONAL_PEERS.filter((peer) => !isInstalled(peer.package));
75
+ if (missing.length === 0) return {
76
+ name: "optional-peers",
77
+ status: "ok",
78
+ detail: `all ${OPTIONAL_PEERS.length} known optional peers installed`
79
+ };
80
+ return {
81
+ name: "optional-peers",
82
+ status: "warn",
83
+ detail: `not installed → unavailable: ${missing.map((peer) => `${peer.package} (${peer.feature})`).join("; ")}`
84
+ };
85
+ }
86
+ };
87
+
88
+ //#endregion
89
+ export { optionalPeersCheck };
90
+ //# sourceMappingURL=optional-peers.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-peers.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/optional-peers.check.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * A single optional peer dependency and the feature it unlocks. These are NOT\n * bundled by core — each is loaded lazily by the connector/driver that needs\n * it, so a missing peer simply means that feature is unavailable (a `warn`),\n * never a failure.\n */\ntype OptionalPeer = {\n /** The npm package name to probe via `require.resolve`. */\n package: string;\n\n /** The framework feature this peer enables. */\n feature: string;\n};\n\n/**\n * The optional peers core knows how to use. Kept in sync with the install\n * targets in the `warlock add` feature registry (sharp, nodemailer, socket.io,\n * the AWS SDK family, redis, the Cascade DB drivers, …).\n */\nconst OPTIONAL_PEERS: OptionalPeer[] = [\n { package: \"sharp\", feature: \"image processing\" },\n { package: \"nodemailer\", feature: \"mail (SMTP) channel\" },\n { package: \"socket.io\", feature: \"realtime socket server\" },\n { package: \"@aws-sdk/client-s3\", feature: \"S3 cloud storage\" },\n { package: \"@aws-sdk/client-sesv2\", feature: \"Amazon SES mail channel\" },\n { package: \"redis\", feature: \"Redis cache driver\" },\n { package: \"mongodb\", feature: \"MongoDB database driver\" },\n { package: \"pg\", feature: \"Postgres database driver\" },\n { package: \"mysql2\", feature: \"MySQL database driver\" },\n];\n\n/**\n * Resolve from the project's working directory, not from core's own\n * `node_modules`, so the probe reflects what the *consuming app* has installed.\n */\nconst projectRequire = createRequire(`${process.cwd()}/package.json`);\n\n/**\n * Whether a package can be resolved from the project. A failed resolve (the\n * normal \"not installed\" case) is swallowed and reported as missing.\n */\nfunction isInstalled(packageName: string): boolean {\n try {\n projectRequire.resolve(packageName);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Detects which optional peer dependencies are installed and which are not,\n * reporting the features that are consequently unavailable. Missing peers are\n * a `warn` (the feature is simply off), never a `fail`.\n *\n * Read-only: resolves module paths only; never imports or executes the peers.\n */\nexport const optionalPeersCheck: DoctorCheck = {\n name: \"optional-peers\",\n run: () => {\n const missing = OPTIONAL_PEERS.filter((peer) => !isInstalled(peer.package));\n\n if (missing.length === 0) {\n return {\n name: \"optional-peers\",\n status: \"ok\",\n detail: `all ${OPTIONAL_PEERS.length} known optional peers installed`,\n };\n }\n\n const unavailable = missing\n .map((peer) => `${peer.package} (${peer.feature})`)\n .join(\"; \");\n\n return {\n name: \"optional-peers\",\n status: \"warn\",\n detail: `not installed → unavailable: ${unavailable}`,\n };\n },\n};\n"],"mappings":";;;;;;;;AAsBA,MAAM,iBAAiC;CACrC;EAAE,SAAS;EAAS,SAAS;CAAmB;CAChD;EAAE,SAAS;EAAc,SAAS;CAAsB;CACxD;EAAE,SAAS;EAAa,SAAS;CAAyB;CAC1D;EAAE,SAAS;EAAsB,SAAS;CAAmB;CAC7D;EAAE,SAAS;EAAyB,SAAS;CAA0B;CACvE;EAAE,SAAS;EAAS,SAAS;CAAqB;CAClD;EAAE,SAAS;EAAW,SAAS;CAA0B;CACzD;EAAE,SAAS;EAAM,SAAS;CAA2B;CACrD;EAAE,SAAS;EAAU,SAAS;CAAwB;AACxD;;;;;AAMA,MAAM,iBAAiB,cAAc,GAAG,QAAQ,IAAI,EAAE,cAAc;;;;;AAMpE,SAAS,YAAY,aAA8B;CACjD,IAAI;EACF,eAAe,QAAQ,WAAW;EAClC,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;;;;;;;;AASA,MAAa,qBAAkC;CAC7C,MAAM;CACN,WAAW;EACT,MAAM,UAAU,eAAe,QAAQ,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC;EAE1E,IAAI,QAAQ,WAAW,GACrB,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,OAAO,eAAe,OAAO;EACvC;EAOF,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,gCAPU,QACjB,KAAK,SAAS,GAAG,KAAK,QAAQ,IAAI,KAAK,QAAQ,EAAE,CAAC,CAClD,KAAK,IAK4C;EACpD;CACF;AACF"}
@@ -0,0 +1,69 @@
1
+ import { rootPath } from "../../../../utils/paths.mjs";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+
4
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/release-hygiene.check.ts
5
+ /**
6
+ * Parse the top-most `## x.y.z[ - YYYY-MM-DD]` heading out of a CHANGELOG body.
7
+ * Returns `undefined` when no version heading is present.
8
+ */
9
+ function parseTopHeading(changelog) {
10
+ const match = changelog.match(/^##\s+(\d+)\.(\d+)\.(\d+)(?:\s*[-–]\s*(\d{4}-\d{2}-\d{2}))?\s*$/m);
11
+ if (!match) return;
12
+ const [, major, minor, patch, date] = match;
13
+ return {
14
+ version: `${major}.${minor}.${patch}`,
15
+ date
16
+ };
17
+ }
18
+ /**
19
+ * Checks that the project's `package.json` version matches the top-most
20
+ * `## x.y.z` heading in `CHANGELOG.md` — the same version↔changelog invariant
21
+ * the release-hygiene unit guard enforces, surfaced as a pre-release doctor
22
+ * check.
23
+ *
24
+ * Verdicts:
25
+ * - no `CHANGELOG.md` → `warn` (a changelog is recommended, not mandatory);
26
+ * - no parseable heading → `warn`;
27
+ * - heading version ≠ package.json version → `fail`;
28
+ * - otherwise → `ok`.
29
+ *
30
+ * Read-only: reads `package.json` and `CHANGELOG.md` from the project root.
31
+ */
32
+ const releaseHygieneCheck = {
33
+ name: "release-hygiene",
34
+ run: () => {
35
+ const packageJsonPath = rootPath("package.json");
36
+ const changelogPath = rootPath("CHANGELOG.md");
37
+ const pkgVersion = JSON.parse(readFileSync(packageJsonPath, "utf8")).version;
38
+ if (typeof pkgVersion !== "string") return {
39
+ name: "release-hygiene",
40
+ status: "fail",
41
+ detail: "package.json has no string version field"
42
+ };
43
+ if (!existsSync(changelogPath)) return {
44
+ name: "release-hygiene",
45
+ status: "warn",
46
+ detail: `no CHANGELOG.md at project root (package.json is ${pkgVersion})`
47
+ };
48
+ const heading = parseTopHeading(readFileSync(changelogPath, "utf8"));
49
+ if (!heading) return {
50
+ name: "release-hygiene",
51
+ status: "warn",
52
+ detail: "CHANGELOG.md has no parseable `## x.y.z` heading"
53
+ };
54
+ if (heading.version !== pkgVersion) return {
55
+ name: "release-hygiene",
56
+ status: "fail",
57
+ detail: `package.json ${pkgVersion} ≠ top CHANGELOG heading ${heading.version}`
58
+ };
59
+ return {
60
+ name: "release-hygiene",
61
+ status: "ok",
62
+ detail: `package.json and CHANGELOG agree on ${pkgVersion}`
63
+ };
64
+ }
65
+ };
66
+
67
+ //#endregion
68
+ export { releaseHygieneCheck };
69
+ //# sourceMappingURL=release-hygiene.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-hygiene.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/release-hygiene.check.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { rootPath } from \"../../../../utils/paths\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * A `## x.y.z` changelog heading with an optional ` - YYYY-MM-DD` suffix.\n * Mirrors the shape parsed by the tier-0 release-hygiene unit guard; inlined\n * here because that guard lives in the test tree and is not importable from\n * `src`.\n */\ntype ChangelogHeading = {\n version: string;\n date?: string;\n};\n\n/**\n * Parse the top-most `## x.y.z[ - YYYY-MM-DD]` heading out of a CHANGELOG body.\n * Returns `undefined` when no version heading is present.\n */\nfunction parseTopHeading(changelog: string): ChangelogHeading | undefined {\n const match = changelog.match(\n /^##\\s+(\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*[-–]\\s*(\\d{4}-\\d{2}-\\d{2}))?\\s*$/m,\n );\n\n if (!match) {\n return undefined;\n }\n\n const [, major, minor, patch, date] = match;\n\n return {\n version: `${major}.${minor}.${patch}`,\n date,\n };\n}\n\n/**\n * Checks that the project's `package.json` version matches the top-most\n * `## x.y.z` heading in `CHANGELOG.md` — the same version↔changelog invariant\n * the release-hygiene unit guard enforces, surfaced as a pre-release doctor\n * check.\n *\n * Verdicts:\n * - no `CHANGELOG.md` → `warn` (a changelog is recommended, not mandatory);\n * - no parseable heading → `warn`;\n * - heading version ≠ package.json version → `fail`;\n * - otherwise → `ok`.\n *\n * Read-only: reads `package.json` and `CHANGELOG.md` from the project root.\n */\nexport const releaseHygieneCheck: DoctorCheck = {\n name: \"release-hygiene\",\n run: () => {\n const packageJsonPath = rootPath(\"package.json\");\n const changelogPath = rootPath(\"CHANGELOG.md\");\n\n const pkgVersion: unknown = JSON.parse(readFileSync(packageJsonPath, \"utf8\")).version;\n\n if (typeof pkgVersion !== \"string\") {\n return {\n name: \"release-hygiene\",\n status: \"fail\",\n detail: \"package.json has no string version field\",\n };\n }\n\n if (!existsSync(changelogPath)) {\n return {\n name: \"release-hygiene\",\n status: \"warn\",\n detail: `no CHANGELOG.md at project root (package.json is ${pkgVersion})`,\n };\n }\n\n const changelog = readFileSync(changelogPath, \"utf8\");\n const heading = parseTopHeading(changelog);\n\n if (!heading) {\n return {\n name: \"release-hygiene\",\n status: \"warn\",\n detail: \"CHANGELOG.md has no parseable `## x.y.z` heading\",\n };\n }\n\n if (heading.version !== pkgVersion) {\n return {\n name: \"release-hygiene\",\n status: \"fail\",\n detail: `package.json ${pkgVersion} ≠ top CHANGELOG heading ${heading.version}`,\n };\n }\n\n return {\n name: \"release-hygiene\",\n status: \"ok\",\n detail: `package.json and CHANGELOG agree on ${pkgVersion}`,\n };\n },\n};\n"],"mappings":";;;;;;;;AAmBA,SAAS,gBAAgB,WAAiD;CACxE,MAAM,QAAQ,UAAU,MACtB,kEACF;CAEA,IAAI,CAAC,OACH;CAGF,MAAM,GAAG,OAAO,OAAO,OAAO,QAAQ;CAEtC,OAAO;EACL,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG;EAC9B;CACF;AACF;;;;;;;;;;;;;;;AAgBA,MAAa,sBAAmC;CAC9C,MAAM;CACN,WAAW;EACT,MAAM,kBAAkB,SAAS,cAAc;EAC/C,MAAM,gBAAgB,SAAS,cAAc;EAE7C,MAAM,aAAsB,KAAK,MAAM,aAAa,iBAAiB,MAAM,CAAC,CAAC,CAAC;EAE9E,IAAI,OAAO,eAAe,UACxB,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;EACV;EAGF,IAAI,CAAC,WAAW,aAAa,GAC3B,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,oDAAoD,WAAW;EACzE;EAIF,MAAM,UAAU,gBADE,aAAa,eAAe,MACN,CAAC;EAEzC,IAAI,CAAC,SACH,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;EACV;EAGF,IAAI,QAAQ,YAAY,YACtB,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,gBAAgB,WAAW,2BAA2B,QAAQ;EACxE;EAGF,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,uCAAuC;EACjD;CACF;AACF"}
@@ -0,0 +1,30 @@
1
+ import { router } from "../../../../router/router.mjs";
2
+
3
+ //#region ../@warlock.js/core/src/cli/commands/doctor/checks/routes.check.ts
4
+ /**
5
+ * Reports the number of registered routes. A booted app with zero routes
6
+ * almost always means a route module failed to register silently, so this
7
+ * warns (rather than passing) when the route table is empty.
8
+ *
9
+ * Read-only: introspects the router via `routeCount()` only.
10
+ */
11
+ const routesCheck = {
12
+ name: "routes",
13
+ run: () => {
14
+ const count = router.routeCount();
15
+ if (count === 0) return {
16
+ name: "routes",
17
+ status: "warn",
18
+ detail: "0 routes registered — did a route module fail to load?"
19
+ };
20
+ return {
21
+ name: "routes",
22
+ status: "ok",
23
+ detail: `${count} registered`
24
+ };
25
+ }
26
+ };
27
+
28
+ //#endregion
29
+ export { routesCheck };
30
+ //# sourceMappingURL=routes.check.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.check.mjs","names":[],"sources":["../../../../../../../../../../@warlock.js/core/src/cli/commands/doctor/checks/routes.check.ts"],"sourcesContent":["import { router } from \"../../../../router/router\";\nimport type { DoctorCheck } from \"../check.types\";\n\n/**\n * Reports the number of registered routes. A booted app with zero routes\n * almost always means a route module failed to register silently, so this\n * warns (rather than passing) when the route table is empty.\n *\n * Read-only: introspects the router via `routeCount()` only.\n */\nexport const routesCheck: DoctorCheck = {\n name: \"routes\",\n run: () => {\n const count = router.routeCount();\n\n if (count === 0) {\n return {\n name: \"routes\",\n status: \"warn\",\n detail: \"0 routes registered — did a route module fail to load?\",\n };\n }\n\n return {\n name: \"routes\",\n status: \"ok\",\n detail: `${count} registered`,\n };\n },\n};\n"],"mappings":";;;;;;;;;;AAUA,MAAa,cAA2B;CACtC,MAAM;CACN,WAAW;EACT,MAAM,QAAQ,OAAO,WAAW;EAEhC,IAAI,UAAU,GACZ,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;EACV;EAGF,OAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,GAAG,MAAM;EACnB;CACF;AACF"}