@warlock.js/core 4.3.0 → 4.5.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 (903) hide show
  1. package/CHANGELOG.md +61 -6
  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 +1157 -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/spawn-sub-agent.mjs +68 -0
  17. package/esm/ai/src/agent/spawn-sub-agent.mjs.map +1 -0
  18. package/esm/ai/src/ai.mjs +155 -0
  19. package/esm/ai/src/ai.mjs.map +1 -0
  20. package/esm/ai/src/batch/batch.mjs +198 -0
  21. package/esm/ai/src/batch/batch.mjs.map +1 -0
  22. package/esm/ai/src/batch/index.mjs +3 -0
  23. package/esm/ai/src/batch/run-batch-item.mjs +100 -0
  24. package/esm/ai/src/batch/run-batch-item.mjs.map +1 -0
  25. package/esm/ai/src/batch/run-with-concurrency.mjs +39 -0
  26. package/esm/ai/src/batch/run-with-concurrency.mjs.map +1 -0
  27. package/esm/ai/src/checkpoint/memory.mjs +0 -0
  28. package/esm/ai/src/checkpoint/memory.mjs.map +1 -0
  29. package/esm/ai/src/checkpoint/pg.mjs +265 -0
  30. package/esm/ai/src/checkpoint/pg.mjs.map +1 -0
  31. package/esm/ai/src/checkpoint/redis.mjs +200 -0
  32. package/esm/ai/src/checkpoint/redis.mjs.map +1 -0
  33. package/esm/ai/src/config.mjs +59 -0
  34. package/esm/ai/src/config.mjs.map +1 -0
  35. package/esm/ai/src/contracts/end.type.mjs +47 -0
  36. package/esm/ai/src/contracts/end.type.mjs.map +1 -0
  37. package/esm/ai/src/errors/agent-cancelled-error.mjs +43 -0
  38. package/esm/ai/src/errors/agent-cancelled-error.mjs.map +1 -0
  39. package/esm/ai/src/errors/agent-execution-error.mjs +35 -0
  40. package/esm/ai/src/errors/agent-execution-error.mjs.map +1 -0
  41. package/esm/ai/src/errors/agent-max-trips-error.mjs +41 -0
  42. package/esm/ai/src/errors/agent-max-trips-error.mjs.map +1 -0
  43. package/esm/ai/src/errors/ai-error.mjs +68 -0
  44. package/esm/ai/src/errors/ai-error.mjs.map +1 -0
  45. package/esm/ai/src/errors/budget-exceeded-error.mjs +31 -0
  46. package/esm/ai/src/errors/budget-exceeded-error.mjs.map +1 -0
  47. package/esm/ai/src/errors/content-filter-error.mjs +28 -0
  48. package/esm/ai/src/errors/content-filter-error.mjs.map +1 -0
  49. package/esm/ai/src/errors/context-length-exceeded-error.mjs +31 -0
  50. package/esm/ai/src/errors/context-length-exceeded-error.mjs.map +1 -0
  51. package/esm/ai/src/errors/guardrail-violation-error.mjs +41 -0
  52. package/esm/ai/src/errors/guardrail-violation-error.mjs.map +1 -0
  53. package/esm/ai/src/errors/index.mjs +37 -0
  54. package/esm/ai/src/errors/invalid-request-error.mjs +31 -0
  55. package/esm/ai/src/errors/invalid-request-error.mjs.map +1 -0
  56. package/esm/ai/src/errors/max-iterations-error.mjs +32 -0
  57. package/esm/ai/src/errors/max-iterations-error.mjs.map +1 -0
  58. package/esm/ai/src/errors/max-steps-exceeded-error.mjs +21 -0
  59. package/esm/ai/src/errors/max-steps-exceeded-error.mjs.map +1 -0
  60. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs +31 -0
  61. package/esm/ai/src/errors/orchestrator-cancelled-error.mjs.map +1 -0
  62. package/esm/ai/src/errors/orchestrator-config-error.mjs +30 -0
  63. package/esm/ai/src/errors/orchestrator-config-error.mjs.map +1 -0
  64. package/esm/ai/src/errors/orchestrator-drift-error.mjs +37 -0
  65. package/esm/ai/src/errors/orchestrator-drift-error.mjs.map +1 -0
  66. package/esm/ai/src/errors/orchestrator-failed-error.mjs +36 -0
  67. package/esm/ai/src/errors/orchestrator-failed-error.mjs.map +1 -0
  68. package/esm/ai/src/errors/outbound-policy-error.mjs +32 -0
  69. package/esm/ai/src/errors/outbound-policy-error.mjs.map +1 -0
  70. package/esm/ai/src/errors/planner-cancelled-error.mjs +29 -0
  71. package/esm/ai/src/errors/planner-cancelled-error.mjs.map +1 -0
  72. package/esm/ai/src/errors/planner-failed-error.mjs +37 -0
  73. package/esm/ai/src/errors/planner-failed-error.mjs.map +1 -0
  74. package/esm/ai/src/errors/planner-plan-invalid-error.mjs +25 -0
  75. package/esm/ai/src/errors/planner-plan-invalid-error.mjs.map +1 -0
  76. package/esm/ai/src/errors/provider-auth-error.mjs +26 -0
  77. package/esm/ai/src/errors/provider-auth-error.mjs.map +1 -0
  78. package/esm/ai/src/errors/provider-error.mjs +42 -0
  79. package/esm/ai/src/errors/provider-error.mjs.map +1 -0
  80. package/esm/ai/src/errors/provider-rate-limit-error.mjs +31 -0
  81. package/esm/ai/src/errors/provider-rate-limit-error.mjs.map +1 -0
  82. package/esm/ai/src/errors/provider-timeout-error.mjs +26 -0
  83. package/esm/ai/src/errors/provider-timeout-error.mjs.map +1 -0
  84. package/esm/ai/src/errors/quota-exceeded-error.mjs +40 -0
  85. package/esm/ai/src/errors/quota-exceeded-error.mjs.map +1 -0
  86. package/esm/ai/src/errors/routing-error.mjs +23 -0
  87. package/esm/ai/src/errors/routing-error.mjs.map +1 -0
  88. package/esm/ai/src/errors/schema-validation-error.mjs +37 -0
  89. package/esm/ai/src/errors/schema-validation-error.mjs.map +1 -0
  90. package/esm/ai/src/errors/step-failed-error.mjs +19 -0
  91. package/esm/ai/src/errors/step-failed-error.mjs.map +1 -0
  92. package/esm/ai/src/errors/supervisor-cancelled-error.mjs +29 -0
  93. package/esm/ai/src/errors/supervisor-cancelled-error.mjs.map +1 -0
  94. package/esm/ai/src/errors/supervisor-drift-error.mjs +30 -0
  95. package/esm/ai/src/errors/supervisor-drift-error.mjs.map +1 -0
  96. package/esm/ai/src/errors/supervisor-failed-error.mjs +43 -0
  97. package/esm/ai/src/errors/supervisor-failed-error.mjs.map +1 -0
  98. package/esm/ai/src/errors/supervisor-routing-error.mjs +39 -0
  99. package/esm/ai/src/errors/supervisor-routing-error.mjs.map +1 -0
  100. package/esm/ai/src/errors/tool-execution-error.mjs +32 -0
  101. package/esm/ai/src/errors/tool-execution-error.mjs.map +1 -0
  102. package/esm/ai/src/errors/workflow-cancelled-error.mjs +23 -0
  103. package/esm/ai/src/errors/workflow-cancelled-error.mjs.map +1 -0
  104. package/esm/ai/src/errors/workflow-drift-error.mjs +24 -0
  105. package/esm/ai/src/errors/workflow-drift-error.mjs.map +1 -0
  106. package/esm/ai/src/errors/workflow-error.mjs +18 -0
  107. package/esm/ai/src/errors/workflow-error.mjs.map +1 -0
  108. package/esm/ai/src/eval/dataset.mjs +112 -0
  109. package/esm/ai/src/eval/dataset.mjs.map +1 -0
  110. package/esm/ai/src/eval/eval-runner.mjs +135 -0
  111. package/esm/ai/src/eval/eval-runner.mjs.map +1 -0
  112. package/esm/ai/src/eval/index.mjs +48 -0
  113. package/esm/ai/src/eval/index.mjs.map +1 -0
  114. package/esm/ai/src/eval/judge-scorer.mjs +87 -0
  115. package/esm/ai/src/eval/judge-scorer.mjs.map +1 -0
  116. package/esm/ai/src/eval/regression.mjs +51 -0
  117. package/esm/ai/src/eval/regression.mjs.map +1 -0
  118. package/esm/ai/src/eval/report-json.mjs +33 -0
  119. package/esm/ai/src/eval/report-json.mjs.map +1 -0
  120. package/esm/ai/src/eval/report-junit.mjs +60 -0
  121. package/esm/ai/src/eval/report-junit.mjs.map +1 -0
  122. package/esm/ai/src/eval/scorers.mjs +101 -0
  123. package/esm/ai/src/eval/scorers.mjs.map +1 -0
  124. package/esm/ai/src/guard/detectors/index.mjs +6 -0
  125. package/esm/ai/src/guard/detectors/injection.mjs +254 -0
  126. package/esm/ai/src/guard/detectors/injection.mjs.map +1 -0
  127. package/esm/ai/src/guard/detectors/moderation.mjs +134 -0
  128. package/esm/ai/src/guard/detectors/moderation.mjs.map +1 -0
  129. package/esm/ai/src/guard/detectors/pii.mjs +199 -0
  130. package/esm/ai/src/guard/detectors/pii.mjs.map +1 -0
  131. package/esm/ai/src/guard/detectors/topic.mjs +99 -0
  132. package/esm/ai/src/guard/detectors/topic.mjs.map +1 -0
  133. package/esm/ai/src/guard/errors.mjs +18 -0
  134. package/esm/ai/src/guard/errors.mjs.map +1 -0
  135. package/esm/ai/src/guard/guard.mjs +209 -0
  136. package/esm/ai/src/guard/guard.mjs.map +1 -0
  137. package/esm/ai/src/guard/guardrail.mjs +22 -0
  138. package/esm/ai/src/guard/guardrail.mjs.map +1 -0
  139. package/esm/ai/src/human/errors.mjs +60 -0
  140. package/esm/ai/src/human/errors.mjs.map +1 -0
  141. package/esm/ai/src/human/human-approval.mjs +170 -0
  142. package/esm/ai/src/human/human-approval.mjs.map +1 -0
  143. package/esm/ai/src/human/policy.mjs +67 -0
  144. package/esm/ai/src/human/policy.mjs.map +1 -0
  145. package/esm/ai/src/human/register.mjs +37 -0
  146. package/esm/ai/src/human/register.mjs.map +1 -0
  147. package/esm/ai/src/human/resume-seed.mjs +53 -0
  148. package/esm/ai/src/human/resume-seed.mjs.map +1 -0
  149. package/esm/ai/src/human/resume.mjs +121 -0
  150. package/esm/ai/src/human/resume.mjs.map +1 -0
  151. package/esm/ai/src/human/stores/index.mjs +5 -0
  152. package/esm/ai/src/human/stores/memory.mjs +91 -0
  153. package/esm/ai/src/human/stores/memory.mjs.map +1 -0
  154. package/esm/ai/src/human/stores/pg.mjs +220 -0
  155. package/esm/ai/src/human/stores/pg.mjs.map +1 -0
  156. package/esm/ai/src/human/stores/redis.mjs +201 -0
  157. package/esm/ai/src/human/stores/redis.mjs.map +1 -0
  158. package/esm/ai/src/index.mjs +174 -0
  159. package/esm/ai/src/memory/derive-id.mjs +24 -0
  160. package/esm/ai/src/memory/derive-id.mjs.map +1 -0
  161. package/esm/ai/src/memory/episodic-memory.mjs +106 -0
  162. package/esm/ai/src/memory/episodic-memory.mjs.map +1 -0
  163. package/esm/ai/src/memory/memory.mjs +166 -0
  164. package/esm/ai/src/memory/memory.mjs.map +1 -0
  165. package/esm/ai/src/memory/procedural-memory.mjs +103 -0
  166. package/esm/ai/src/memory/procedural-memory.mjs.map +1 -0
  167. package/esm/ai/src/memory/semantic-memory.mjs +80 -0
  168. package/esm/ai/src/memory/semantic-memory.mjs.map +1 -0
  169. package/esm/ai/src/memory/working-memory.mjs +62 -0
  170. package/esm/ai/src/memory/working-memory.mjs.map +1 -0
  171. package/esm/ai/src/middleware/builtins/budget.mjs +219 -0
  172. package/esm/ai/src/middleware/builtins/budget.mjs.map +1 -0
  173. package/esm/ai/src/middleware/builtins/guardrail.mjs +76 -0
  174. package/esm/ai/src/middleware/builtins/guardrail.mjs.map +1 -0
  175. package/esm/ai/src/middleware/builtins/semantic-cache.mjs +149 -0
  176. package/esm/ai/src/middleware/builtins/semantic-cache.mjs.map +1 -0
  177. package/esm/ai/src/middleware/helpers/compose.mjs +52 -0
  178. package/esm/ai/src/middleware/helpers/compose.mjs.map +1 -0
  179. package/esm/ai/src/middleware/helpers/for-tool.mjs +80 -0
  180. package/esm/ai/src/middleware/helpers/for-tool.mjs.map +1 -0
  181. package/esm/ai/src/middleware/index.mjs +10 -0
  182. package/esm/ai/src/middleware/pipeline.mjs +100 -0
  183. package/esm/ai/src/middleware/pipeline.mjs.map +1 -0
  184. package/esm/ai/src/middleware/utils/extract-user-text.mjs +47 -0
  185. package/esm/ai/src/middleware/utils/extract-user-text.mjs.map +1 -0
  186. package/esm/ai/src/middleware/utils/namespaced-state.mjs +60 -0
  187. package/esm/ai/src/middleware/utils/namespaced-state.mjs.map +1 -0
  188. package/esm/ai/src/mock/index.mjs +4 -0
  189. package/esm/ai/src/mock/mock-agent.mjs +3 -0
  190. package/esm/ai/src/mock/mock-router.mjs +58 -0
  191. package/esm/ai/src/mock/mock-router.mjs.map +1 -0
  192. package/esm/ai/src/model/fallback-model.mjs +218 -0
  193. package/esm/ai/src/model/fallback-model.mjs.map +1 -0
  194. package/esm/ai/src/model/index.mjs +3 -0
  195. package/esm/ai/src/object-stream/index.mjs +4 -0
  196. package/esm/ai/src/object-stream/parse-partial-json.mjs +78 -0
  197. package/esm/ai/src/object-stream/parse-partial-json.mjs.map +1 -0
  198. package/esm/ai/src/object-stream/stream-object.mjs +97 -0
  199. package/esm/ai/src/object-stream/stream-object.mjs.map +1 -0
  200. package/esm/ai/src/observe/index.mjs +4 -0
  201. package/esm/ai/src/observe/observer-registry.mjs +35 -0
  202. package/esm/ai/src/observe/observer-registry.mjs.map +1 -0
  203. package/esm/ai/src/observe/resolve-observers.mjs +73 -0
  204. package/esm/ai/src/observe/resolve-observers.mjs.map +1 -0
  205. package/esm/ai/src/orchestrator/as-tool.mjs +98 -0
  206. package/esm/ai/src/orchestrator/as-tool.mjs.map +1 -0
  207. package/esm/ai/src/orchestrator/checkpoint.mjs +75 -0
  208. package/esm/ai/src/orchestrator/checkpoint.mjs.map +1 -0
  209. package/esm/ai/src/orchestrator/commands.mjs +34 -0
  210. package/esm/ai/src/orchestrator/commands.mjs.map +1 -0
  211. package/esm/ai/src/orchestrator/compaction.mjs +206 -0
  212. package/esm/ai/src/orchestrator/compaction.mjs.map +1 -0
  213. package/esm/ai/src/orchestrator/dispatch.mjs +171 -0
  214. package/esm/ai/src/orchestrator/dispatch.mjs.map +1 -0
  215. package/esm/ai/src/orchestrator/emitter.mjs +85 -0
  216. package/esm/ai/src/orchestrator/emitter.mjs.map +1 -0
  217. package/esm/ai/src/orchestrator/execution.mjs +395 -0
  218. package/esm/ai/src/orchestrator/execution.mjs.map +1 -0
  219. package/esm/ai/src/orchestrator/index.mjs +11 -0
  220. package/esm/ai/src/orchestrator/load.mjs +49 -0
  221. package/esm/ai/src/orchestrator/load.mjs.map +1 -0
  222. package/esm/ai/src/orchestrator/lock.mjs +75 -0
  223. package/esm/ai/src/orchestrator/lock.mjs.map +1 -0
  224. package/esm/ai/src/orchestrator/memory.mjs +141 -0
  225. package/esm/ai/src/orchestrator/memory.mjs.map +1 -0
  226. package/esm/ai/src/orchestrator/orchestrator-stream.mjs +98 -0
  227. package/esm/ai/src/orchestrator/orchestrator-stream.mjs.map +1 -0
  228. package/esm/ai/src/orchestrator/orchestrator.mjs +206 -0
  229. package/esm/ai/src/orchestrator/orchestrator.mjs.map +1 -0
  230. package/esm/ai/src/orchestrator/resume.mjs +74 -0
  231. package/esm/ai/src/orchestrator/resume.mjs.map +1 -0
  232. package/esm/ai/src/orchestrator/session-lock.mjs +83 -0
  233. package/esm/ai/src/orchestrator/session-lock.mjs.map +1 -0
  234. package/esm/ai/src/orchestrator/signature.mjs +120 -0
  235. package/esm/ai/src/orchestrator/signature.mjs.map +1 -0
  236. package/esm/ai/src/orchestrator/window.mjs +56 -0
  237. package/esm/ai/src/orchestrator/window.mjs.map +1 -0
  238. package/esm/ai/src/planner/dag-scheduler.mjs +97 -0
  239. package/esm/ai/src/planner/dag-scheduler.mjs.map +1 -0
  240. package/esm/ai/src/planner/index.mjs +6 -0
  241. package/esm/ai/src/planner/plan-prompt.mjs +31 -0
  242. package/esm/ai/src/planner/plan-prompt.mjs.map +1 -0
  243. package/esm/ai/src/planner/plan-schema.mjs +120 -0
  244. package/esm/ai/src/planner/plan-schema.mjs.map +1 -0
  245. package/esm/ai/src/planner/planner-run.mjs +614 -0
  246. package/esm/ai/src/planner/planner-run.mjs.map +1 -0
  247. package/esm/ai/src/planner/planner.mjs +120 -0
  248. package/esm/ai/src/planner/planner.mjs.map +1 -0
  249. package/esm/ai/src/planner/signature.mjs +27 -0
  250. package/esm/ai/src/planner/signature.mjs.map +1 -0
  251. package/esm/ai/src/prompt/errors.mjs +73 -0
  252. package/esm/ai/src/prompt/errors.mjs.map +1 -0
  253. package/esm/ai/src/prompt/index.mjs +4 -0
  254. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs +104 -0
  255. package/esm/ai/src/prompt/prompt-langfuse-sync.mjs.map +1 -0
  256. package/esm/ai/src/prompt/prompt-validate.mjs +170 -0
  257. package/esm/ai/src/prompt/prompt-validate.mjs.map +1 -0
  258. package/esm/ai/src/prompt/prompt.mjs +218 -0
  259. package/esm/ai/src/prompt/prompt.mjs.map +1 -0
  260. package/esm/ai/src/prompts/index.mjs +3 -0
  261. package/esm/ai/src/prompts/prompts-manager.mjs +410 -0
  262. package/esm/ai/src/prompts/prompts-manager.mjs.map +1 -0
  263. package/esm/ai/src/prompts/prompts-validate.mjs +200 -0
  264. package/esm/ai/src/prompts/prompts-validate.mjs.map +1 -0
  265. package/esm/ai/src/rag/as-tool.mjs +48 -0
  266. package/esm/ai/src/rag/as-tool.mjs.map +1 -0
  267. package/esm/ai/src/rag/chunk/chunk.mjs +44 -0
  268. package/esm/ai/src/rag/chunk/chunk.mjs.map +1 -0
  269. package/esm/ai/src/rag/chunk/fixed.mjs +32 -0
  270. package/esm/ai/src/rag/chunk/fixed.mjs.map +1 -0
  271. package/esm/ai/src/rag/chunk/markdown.mjs +75 -0
  272. package/esm/ai/src/rag/chunk/markdown.mjs.map +1 -0
  273. package/esm/ai/src/rag/chunk/recursive.mjs +132 -0
  274. package/esm/ai/src/rag/chunk/recursive.mjs.map +1 -0
  275. package/esm/ai/src/rag/chunk/sentence.mjs +73 -0
  276. package/esm/ai/src/rag/chunk/sentence.mjs.map +1 -0
  277. package/esm/ai/src/rag/index.mjs +7 -0
  278. package/esm/ai/src/rag/rag.mjs +126 -0
  279. package/esm/ai/src/rag/rag.mjs.map +1 -0
  280. package/esm/ai/src/rag/rerank/keyword-reranker.mjs +58 -0
  281. package/esm/ai/src/rag/rerank/keyword-reranker.mjs.map +1 -0
  282. package/esm/ai/src/rag/rerank/llm-reranker.mjs +85 -0
  283. package/esm/ai/src/rag/rerank/llm-reranker.mjs.map +1 -0
  284. package/esm/ai/src/rag/retrieve.mjs +68 -0
  285. package/esm/ai/src/rag/retrieve.mjs.map +1 -0
  286. package/esm/ai/src/rag/store/cache-vector-store.mjs +48 -0
  287. package/esm/ai/src/rag/store/cache-vector-store.mjs.map +1 -0
  288. package/esm/ai/src/security/index.mjs +5 -0
  289. package/esm/ai/src/security/outbound-policy.mjs +187 -0
  290. package/esm/ai/src/security/outbound-policy.mjs.map +1 -0
  291. package/esm/ai/src/security/private-ip.mjs +48 -0
  292. package/esm/ai/src/security/private-ip.mjs.map +1 -0
  293. package/esm/ai/src/security/redact.mjs +60 -0
  294. package/esm/ai/src/security/redact.mjs.map +1 -0
  295. package/esm/ai/src/serve/serve.mjs +90 -0
  296. package/esm/ai/src/serve/serve.mjs.map +1 -0
  297. package/esm/ai/src/serve/sse.mjs +25 -0
  298. package/esm/ai/src/serve/sse.mjs.map +1 -0
  299. package/esm/ai/src/serve/stream-to-sse.mjs +37 -0
  300. package/esm/ai/src/serve/stream-to-sse.mjs.map +1 -0
  301. package/esm/ai/src/skills/catalog.mjs +140 -0
  302. package/esm/ai/src/skills/catalog.mjs.map +1 -0
  303. package/esm/ai/src/skills/index.mjs +11 -0
  304. package/esm/ai/src/skills/load-skill-tool.mjs +65 -0
  305. package/esm/ai/src/skills/load-skill-tool.mjs.map +1 -0
  306. package/esm/ai/src/skills/save-skill-tool.mjs +65 -0
  307. package/esm/ai/src/skills/save-skill-tool.mjs.map +1 -0
  308. package/esm/ai/src/skills/skills.mjs +109 -0
  309. package/esm/ai/src/skills/skills.mjs.map +1 -0
  310. package/esm/ai/src/skills/sources/directory-source.mjs +108 -0
  311. package/esm/ai/src/skills/sources/directory-source.mjs.map +1 -0
  312. package/esm/ai/src/skills/sources/index.mjs +27 -0
  313. package/esm/ai/src/skills/sources/index.mjs.map +1 -0
  314. package/esm/ai/src/skills/sources/parse-frontmatter.mjs +46 -0
  315. package/esm/ai/src/skills/sources/parse-frontmatter.mjs.map +1 -0
  316. package/esm/ai/src/skills/sources/store-source.mjs +15 -0
  317. package/esm/ai/src/skills/sources/store-source.mjs.map +1 -0
  318. package/esm/ai/src/skills/sources/url-source.mjs +117 -0
  319. package/esm/ai/src/skills/sources/url-source.mjs.map +1 -0
  320. package/esm/ai/src/snapshot/memory.mjs +81 -0
  321. package/esm/ai/src/snapshot/memory.mjs.map +1 -0
  322. package/esm/ai/src/snapshot/pg.mjs +146 -0
  323. package/esm/ai/src/snapshot/pg.mjs.map +1 -0
  324. package/esm/ai/src/snapshot/redis.mjs +101 -0
  325. package/esm/ai/src/snapshot/redis.mjs.map +1 -0
  326. package/esm/ai/src/supervisor/as-tool.mjs +74 -0
  327. package/esm/ai/src/supervisor/as-tool.mjs.map +1 -0
  328. package/esm/ai/src/supervisor/cancellation.mjs +22 -0
  329. package/esm/ai/src/supervisor/cancellation.mjs.map +1 -0
  330. package/esm/ai/src/supervisor/decide.mjs +272 -0
  331. package/esm/ai/src/supervisor/decide.mjs.map +1 -0
  332. package/esm/ai/src/supervisor/emitter.mjs +47 -0
  333. package/esm/ai/src/supervisor/emitter.mjs.map +1 -0
  334. package/esm/ai/src/supervisor/entries.mjs +206 -0
  335. package/esm/ai/src/supervisor/entries.mjs.map +1 -0
  336. package/esm/ai/src/supervisor/execution.mjs +1921 -0
  337. package/esm/ai/src/supervisor/execution.mjs.map +1 -0
  338. package/esm/ai/src/supervisor/fan-out.mjs +65 -0
  339. package/esm/ai/src/supervisor/fan-out.mjs.map +1 -0
  340. package/esm/ai/src/supervisor/index.mjs +14 -0
  341. package/esm/ai/src/supervisor/router-factory.mjs +141 -0
  342. package/esm/ai/src/supervisor/router-factory.mjs.map +1 -0
  343. package/esm/ai/src/supervisor/router-prompt.mjs +52 -0
  344. package/esm/ai/src/supervisor/router-prompt.mjs.map +1 -0
  345. package/esm/ai/src/supervisor/signature.mjs +89 -0
  346. package/esm/ai/src/supervisor/signature.mjs.map +1 -0
  347. package/esm/ai/src/supervisor/snapshot.mjs +69 -0
  348. package/esm/ai/src/supervisor/snapshot.mjs.map +1 -0
  349. package/esm/ai/src/supervisor/supervisor-stream.mjs +89 -0
  350. package/esm/ai/src/supervisor/supervisor-stream.mjs.map +1 -0
  351. package/esm/ai/src/supervisor/supervisor.mjs +144 -0
  352. package/esm/ai/src/supervisor/supervisor.mjs.map +1 -0
  353. package/esm/ai/src/system-prompt/index.mjs +6 -0
  354. package/esm/ai/src/system-prompt/instruction.mjs +57 -0
  355. package/esm/ai/src/system-prompt/instruction.mjs.map +1 -0
  356. package/esm/ai/src/system-prompt/persona.mjs +57 -0
  357. package/esm/ai/src/system-prompt/persona.mjs.map +1 -0
  358. package/esm/ai/src/system-prompt/render-placeholders.mjs +58 -0
  359. package/esm/ai/src/system-prompt/render-placeholders.mjs.map +1 -0
  360. package/esm/ai/src/system-prompt/system-prompt.mjs +267 -0
  361. package/esm/ai/src/system-prompt/system-prompt.mjs.map +1 -0
  362. package/esm/ai/src/team/gates.mjs +48 -0
  363. package/esm/ai/src/team/gates.mjs.map +1 -0
  364. package/esm/ai/src/team/index.mjs +3 -0
  365. package/esm/ai/src/team/team.mjs +94 -0
  366. package/esm/ai/src/team/team.mjs.map +1 -0
  367. package/esm/ai/src/tool/executable-as-tool.mjs +81 -0
  368. package/esm/ai/src/tool/executable-as-tool.mjs.map +1 -0
  369. package/esm/ai/src/tool/index.mjs +4 -0
  370. package/esm/ai/src/tool/tool.mjs +185 -0
  371. package/esm/ai/src/tool/tool.mjs.map +1 -0
  372. package/esm/ai/src/utils/compute-cost.mjs +112 -0
  373. package/esm/ai/src/utils/compute-cost.mjs.map +1 -0
  374. package/esm/ai/src/utils/extract-json-lenient.mjs +97 -0
  375. package/esm/ai/src/utils/extract-json-lenient.mjs.map +1 -0
  376. package/esm/ai/src/utils/extract-json-payload.mjs +39 -0
  377. package/esm/ai/src/utils/extract-json-payload.mjs.map +1 -0
  378. package/esm/ai/src/utils/generate-run-id.mjs +23 -0
  379. package/esm/ai/src/utils/generate-run-id.mjs.map +1 -0
  380. package/esm/ai/src/utils/index.mjs +12 -0
  381. package/esm/ai/src/utils/json-schema.mjs +89 -0
  382. package/esm/ai/src/utils/json-schema.mjs.map +1 -0
  383. package/esm/ai/src/utils/prepare-attachment-part.mjs +232 -0
  384. package/esm/ai/src/utils/prepare-attachment-part.mjs.map +1 -0
  385. package/esm/ai/src/utils/resolve-attachment.mjs +74 -0
  386. package/esm/ai/src/utils/resolve-attachment.mjs.map +1 -0
  387. package/esm/ai/src/utils/run-context.mjs +89 -0
  388. package/esm/ai/src/utils/run-context.mjs.map +1 -0
  389. package/esm/ai/src/utils/safe-json-parse.mjs +22 -0
  390. package/esm/ai/src/utils/safe-json-parse.mjs.map +1 -0
  391. package/esm/ai/src/utils/stamp-report-lineage.mjs +45 -0
  392. package/esm/ai/src/utils/stamp-report-lineage.mjs.map +1 -0
  393. package/esm/ai/src/vcr/cassette-io.mjs +57 -0
  394. package/esm/ai/src/vcr/cassette-io.mjs.map +1 -0
  395. package/esm/ai/src/vcr/errors.mjs +37 -0
  396. package/esm/ai/src/vcr/errors.mjs.map +1 -0
  397. package/esm/ai/src/vcr/hash-request.mjs +118 -0
  398. package/esm/ai/src/vcr/hash-request.mjs.map +1 -0
  399. package/esm/ai/src/vcr/index.mjs +5 -0
  400. package/esm/ai/src/vcr/vcr.mjs +248 -0
  401. package/esm/ai/src/vcr/vcr.mjs.map +1 -0
  402. package/esm/ai/src/workflow/as-tool.mjs +49 -0
  403. package/esm/ai/src/workflow/as-tool.mjs.map +1 -0
  404. package/esm/ai/src/workflow/cancellation.mjs +44 -0
  405. package/esm/ai/src/workflow/cancellation.mjs.map +1 -0
  406. package/esm/ai/src/workflow/emitter.mjs +40 -0
  407. package/esm/ai/src/workflow/emitter.mjs.map +1 -0
  408. package/esm/ai/src/workflow/engine.mjs +363 -0
  409. package/esm/ai/src/workflow/engine.mjs.map +1 -0
  410. package/esm/ai/src/workflow/index.mjs +5 -0
  411. package/esm/ai/src/workflow/retry.mjs +32 -0
  412. package/esm/ai/src/workflow/retry.mjs.map +1 -0
  413. package/esm/ai/src/workflow/router.mjs +56 -0
  414. package/esm/ai/src/workflow/router.mjs.map +1 -0
  415. package/esm/ai/src/workflow/run-scoped-emitter.mjs +32 -0
  416. package/esm/ai/src/workflow/run-scoped-emitter.mjs.map +1 -0
  417. package/esm/ai/src/workflow/signature.mjs +34 -0
  418. package/esm/ai/src/workflow/signature.mjs.map +1 -0
  419. package/esm/ai/src/workflow/snapshot.mjs +77 -0
  420. package/esm/ai/src/workflow/snapshot.mjs.map +1 -0
  421. package/esm/ai/src/workflow/state.mjs +37 -0
  422. package/esm/ai/src/workflow/state.mjs.map +1 -0
  423. package/esm/ai/src/workflow/step-runner.mjs +370 -0
  424. package/esm/ai/src/workflow/step-runner.mjs.map +1 -0
  425. package/esm/ai/src/workflow/step.mjs +37 -0
  426. package/esm/ai/src/workflow/step.mjs.map +1 -0
  427. package/esm/ai/src/workflow/workflow.mjs +122 -0
  428. package/esm/ai/src/workflow/workflow.mjs.map +1 -0
  429. package/esm/ai-openai/src/embedder.mjs +4 -0
  430. package/esm/ai-openai/src/index.mjs +4 -0
  431. package/esm/ai-openai/src/model.mjs +5 -0
  432. package/esm/ai-openai/src/sdk.mjs +6 -0
  433. package/esm/ai-openai/src/utils/index.mjs +4 -0
  434. package/esm/ai-openai/src/utils/to-openai-tools.mjs +3 -0
  435. package/esm/ai-openai/src/utils/wrap-openai-error.mjs +4 -0
  436. package/esm/application/application.d.mts +126 -4
  437. package/esm/application/application.d.mts.map +1 -1
  438. package/esm/application/application.mjs +133 -0
  439. package/esm/application/application.mjs.map +1 -1
  440. package/esm/application/index.d.mts +1 -1
  441. package/esm/cli/commands/dev-server.command.mjs +1 -1
  442. package/esm/cli/commands/dev-server.command.mjs.map +1 -1
  443. package/esm/cli/commands/generate/templates/stubs.mjs +3 -4
  444. package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
  445. package/esm/cli/types.d.mts +2 -1
  446. package/esm/cli/types.d.mts.map +1 -1
  447. package/esm/config/config-getter.mjs +5 -5
  448. package/esm/config/config-getter.mjs.map +1 -1
  449. package/esm/config/config-loader.mjs +2 -2
  450. package/esm/config/config-loader.mjs.map +1 -1
  451. package/esm/connectors/access-connector.mjs +2 -2
  452. package/esm/connectors/access-connector.mjs.map +1 -1
  453. package/esm/connectors/ai-connector.d.mts +43 -0
  454. package/esm/connectors/ai-connector.d.mts.map +1 -0
  455. package/esm/connectors/ai-connector.mjs +56 -0
  456. package/esm/connectors/ai-connector.mjs.map +1 -0
  457. package/esm/connectors/cache-connector.d.mts +5 -0
  458. package/esm/connectors/cache-connector.d.mts.map +1 -1
  459. package/esm/connectors/cache-connector.mjs +9 -2
  460. package/esm/connectors/cache-connector.mjs.map +1 -1
  461. package/esm/connectors/connectors-manager.d.mts +6 -2
  462. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  463. package/esm/connectors/connectors-manager.mjs +12 -3
  464. package/esm/connectors/connectors-manager.mjs.map +1 -1
  465. package/esm/connectors/database-connector.mjs +2 -2
  466. package/esm/connectors/database-connector.mjs.map +1 -1
  467. package/esm/connectors/herald-connector.mjs +2 -2
  468. package/esm/connectors/herald-connector.mjs.map +1 -1
  469. package/esm/connectors/http-connector.d.mts +8 -0
  470. package/esm/connectors/http-connector.d.mts.map +1 -1
  471. package/esm/connectors/http-connector.mjs +40 -7
  472. package/esm/connectors/http-connector.mjs.map +1 -1
  473. package/esm/connectors/index.d.mts +1 -0
  474. package/esm/connectors/index.mjs +1 -0
  475. package/esm/connectors/logger-connector.mjs +2 -2
  476. package/esm/connectors/logger-connector.mjs.map +1 -1
  477. package/esm/connectors/mail-connector.mjs +2 -2
  478. package/esm/connectors/mail-connector.mjs.map +1 -1
  479. package/esm/connectors/notifications-connector.mjs +2 -2
  480. package/esm/connectors/notifications-connector.mjs.map +1 -1
  481. package/esm/connectors/socket-connector.d.mts +16 -1
  482. package/esm/connectors/socket-connector.d.mts.map +1 -1
  483. package/esm/connectors/socket-connector.mjs +31 -8
  484. package/esm/connectors/socket-connector.mjs.map +1 -1
  485. package/esm/connectors/storage.connector.d.mts +7 -0
  486. package/esm/connectors/storage.connector.d.mts.map +1 -1
  487. package/esm/connectors/storage.connector.mjs +7 -0
  488. package/esm/connectors/storage.connector.mjs.map +1 -1
  489. package/esm/connectors/types.d.mts +3 -2
  490. package/esm/connectors/types.d.mts.map +1 -1
  491. package/esm/connectors/types.mjs +1 -0
  492. package/esm/connectors/types.mjs.map +1 -1
  493. package/esm/dev-server/development-server.mjs +9 -14
  494. package/esm/dev-server/development-server.mjs.map +1 -1
  495. package/esm/dev-server/file-event-handler.mjs +15 -3
  496. package/esm/dev-server/file-event-handler.mjs.map +1 -1
  497. package/esm/dev-server/loader/transpile-cache.mjs +1 -1
  498. package/esm/generations/add-command.action.mjs +61 -12
  499. package/esm/generations/add-command.action.mjs.map +1 -1
  500. package/esm/generations/stubs.mjs +31 -1
  501. package/esm/generations/stubs.mjs.map +1 -1
  502. package/esm/http/config.mjs +2 -2
  503. package/esm/http/config.mjs.map +1 -1
  504. package/esm/http/createHttpApplication.mjs +2 -2
  505. package/esm/http/createHttpApplication.mjs.map +1 -1
  506. package/esm/http/health.d.mts +57 -0
  507. package/esm/http/health.d.mts.map +1 -0
  508. package/esm/http/health.mjs +75 -0
  509. package/esm/http/health.mjs.map +1 -0
  510. package/esm/http/index.d.mts +2 -1
  511. package/esm/http/index.mjs +2 -1
  512. package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
  513. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  514. package/esm/http/middleware/cache-response-middleware.mjs +15 -6
  515. package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
  516. package/esm/http/middleware/concurrency-limit.middleware.mjs +2 -0
  517. package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
  518. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  519. package/esm/http/middleware/idempotency.middleware.mjs +9 -6
  520. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  521. package/esm/http/middleware/inject-request-context.mjs +2 -2
  522. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  523. package/esm/http/middleware/maintenance.middleware.mjs +6 -5
  524. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  525. package/esm/http/plugins.mjs +9 -9
  526. package/esm/http/plugins.mjs.map +1 -1
  527. package/esm/http/request.d.mts +9 -2
  528. package/esm/http/request.d.mts.map +1 -1
  529. package/esm/http/request.mjs +15 -3
  530. package/esm/http/request.mjs.map +1 -1
  531. package/esm/http/response.d.mts +12 -0
  532. package/esm/http/response.d.mts.map +1 -1
  533. package/esm/http/response.mjs +24 -7
  534. package/esm/http/response.mjs.map +1 -1
  535. package/esm/http/server.d.mts +16 -1
  536. package/esm/http/server.d.mts.map +1 -1
  537. package/esm/http/server.mjs +24 -4
  538. package/esm/http/server.mjs.map +1 -1
  539. package/esm/http/types.d.mts +45 -0
  540. package/esm/http/types.d.mts.map +1 -1
  541. package/esm/index.d.mts +10 -5
  542. package/esm/index.mjs +10 -5
  543. package/esm/node_modules/langfuse/lib/index.mjs +1827 -0
  544. package/esm/node_modules/langfuse/lib/index.mjs.map +1 -0
  545. package/esm/node_modules/langfuse-core/lib/index.mjs +1770 -0
  546. package/esm/node_modules/langfuse-core/lib/index.mjs.map +1 -0
  547. package/esm/node_modules/mustache/mustache.mjs +587 -0
  548. package/esm/node_modules/mustache/mustache.mjs.map +1 -0
  549. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs +180 -0
  550. package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs.map +1 -0
  551. package/esm/node_modules/openai/auth/workload-identity-auth.mjs +80 -0
  552. package/esm/node_modules/openai/auth/workload-identity-auth.mjs.map +1 -0
  553. package/esm/node_modules/openai/azure.mjs +82 -0
  554. package/esm/node_modules/openai/azure.mjs.map +1 -0
  555. package/esm/node_modules/openai/client.mjs +638 -0
  556. package/esm/node_modules/openai/client.mjs.map +1 -0
  557. package/esm/node_modules/openai/core/api-promise.mjs +75 -0
  558. package/esm/node_modules/openai/core/api-promise.mjs.map +1 -0
  559. package/esm/node_modules/openai/core/error.mjs +110 -0
  560. package/esm/node_modules/openai/core/error.mjs.map +1 -0
  561. package/esm/node_modules/openai/core/pagination.mjs +160 -0
  562. package/esm/node_modules/openai/core/pagination.mjs.map +1 -0
  563. package/esm/node_modules/openai/core/resource.mjs +10 -0
  564. package/esm/node_modules/openai/core/resource.mjs.map +1 -0
  565. package/esm/node_modules/openai/core/streaming.mjs +238 -0
  566. package/esm/node_modules/openai/core/streaming.mjs.map +1 -0
  567. package/esm/node_modules/openai/index.mjs +8 -0
  568. package/esm/node_modules/openai/internal/decoders/line.mjs +91 -0
  569. package/esm/node_modules/openai/internal/decoders/line.mjs.map +1 -0
  570. package/esm/node_modules/openai/internal/detect-platform.mjs +123 -0
  571. package/esm/node_modules/openai/internal/detect-platform.mjs.map +1 -0
  572. package/esm/node_modules/openai/internal/errors.mjs +26 -0
  573. package/esm/node_modules/openai/internal/errors.mjs.map +1 -0
  574. package/esm/node_modules/openai/internal/headers.mjs +65 -0
  575. package/esm/node_modules/openai/internal/headers.mjs.map +1 -0
  576. package/esm/node_modules/openai/internal/parse.mjs +41 -0
  577. package/esm/node_modules/openai/internal/parse.mjs.map +1 -0
  578. package/esm/node_modules/openai/internal/qs/formats.mjs +12 -0
  579. package/esm/node_modules/openai/internal/qs/formats.mjs.map +1 -0
  580. package/esm/node_modules/openai/internal/qs/stringify.mjs +179 -0
  581. package/esm/node_modules/openai/internal/qs/stringify.mjs.map +1 -0
  582. package/esm/node_modules/openai/internal/qs/utils.mjs +65 -0
  583. package/esm/node_modules/openai/internal/qs/utils.mjs.map +1 -0
  584. package/esm/node_modules/openai/internal/request-options.mjs +11 -0
  585. package/esm/node_modules/openai/internal/request-options.mjs.map +1 -0
  586. package/esm/node_modules/openai/internal/shims.mjs +77 -0
  587. package/esm/node_modules/openai/internal/shims.mjs.map +1 -0
  588. package/esm/node_modules/openai/internal/to-file.mjs +63 -0
  589. package/esm/node_modules/openai/internal/to-file.mjs.map +1 -0
  590. package/esm/node_modules/openai/internal/tslib.mjs +16 -0
  591. package/esm/node_modules/openai/internal/tslib.mjs.map +1 -0
  592. package/esm/node_modules/openai/internal/uploads.mjs +94 -0
  593. package/esm/node_modules/openai/internal/uploads.mjs.map +1 -0
  594. package/esm/node_modules/openai/internal/utils/base64.mjs +22 -0
  595. package/esm/node_modules/openai/internal/utils/base64.mjs.map +1 -0
  596. package/esm/node_modules/openai/internal/utils/bytes.mjs +26 -0
  597. package/esm/node_modules/openai/internal/utils/bytes.mjs.map +1 -0
  598. package/esm/node_modules/openai/internal/utils/env.mjs +16 -0
  599. package/esm/node_modules/openai/internal/utils/env.mjs.map +1 -0
  600. package/esm/node_modules/openai/internal/utils/log.mjs +58 -0
  601. package/esm/node_modules/openai/internal/utils/log.mjs.map +1 -0
  602. package/esm/node_modules/openai/internal/utils/path.mjs +62 -0
  603. package/esm/node_modules/openai/internal/utils/path.mjs.map +1 -0
  604. package/esm/node_modules/openai/internal/utils/query.mjs +10 -0
  605. package/esm/node_modules/openai/internal/utils/query.mjs.map +1 -0
  606. package/esm/node_modules/openai/internal/utils/sleep.mjs +6 -0
  607. package/esm/node_modules/openai/internal/utils/sleep.mjs.map +1 -0
  608. package/esm/node_modules/openai/internal/utils/uuid.mjs +18 -0
  609. package/esm/node_modules/openai/internal/utils/uuid.mjs.map +1 -0
  610. package/esm/node_modules/openai/internal/utils/values.mjs +41 -0
  611. package/esm/node_modules/openai/internal/utils/values.mjs.map +1 -0
  612. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +247 -0
  613. package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +1 -0
  614. package/esm/node_modules/openai/lib/AssistantStream.mjs +472 -0
  615. package/esm/node_modules/openai/lib/AssistantStream.mjs.map +1 -0
  616. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs +26 -0
  617. package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs.map +1 -0
  618. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs +423 -0
  619. package/esm/node_modules/openai/lib/ChatCompletionStream.mjs.map +1 -0
  620. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +26 -0
  621. package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +1 -0
  622. package/esm/node_modules/openai/lib/EventStream.mjs +163 -0
  623. package/esm/node_modules/openai/lib/EventStream.mjs.map +1 -0
  624. package/esm/node_modules/openai/lib/ResponsesParser.mjs +94 -0
  625. package/esm/node_modules/openai/lib/ResponsesParser.mjs.map +1 -0
  626. package/esm/node_modules/openai/lib/RunnableFunction.mjs +8 -0
  627. package/esm/node_modules/openai/lib/RunnableFunction.mjs.map +1 -0
  628. package/esm/node_modules/openai/lib/Util.mjs +19 -0
  629. package/esm/node_modules/openai/lib/Util.mjs.map +1 -0
  630. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs +11 -0
  631. package/esm/node_modules/openai/lib/chatCompletionUtils.mjs.map +1 -0
  632. package/esm/node_modules/openai/lib/parser.mjs +88 -0
  633. package/esm/node_modules/openai/lib/parser.mjs.map +1 -0
  634. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs +231 -0
  635. package/esm/node_modules/openai/lib/responses/ResponseStream.mjs.map +1 -0
  636. package/esm/node_modules/openai/resources/admin/admin.mjs +15 -0
  637. package/esm/node_modules/openai/resources/admin/admin.mjs.map +1 -0
  638. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs +81 -0
  639. package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs.map +1 -0
  640. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs +31 -0
  641. package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs.map +1 -0
  642. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs +153 -0
  643. package/esm/node_modules/openai/resources/admin/organization/certificates.mjs.map +1 -0
  644. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs +42 -0
  645. package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs.map +1 -0
  646. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs +106 -0
  647. package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs.map +1 -0
  648. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs +88 -0
  649. package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs.map +1 -0
  650. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs +88 -0
  651. package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs.map +1 -0
  652. package/esm/node_modules/openai/resources/admin/organization/invites.mjs +83 -0
  653. package/esm/node_modules/openai/resources/admin/organization/invites.mjs.map +1 -0
  654. package/esm/node_modules/openai/resources/admin/organization/organization.mjs +45 -0
  655. package/esm/node_modules/openai/resources/admin/organization/organization.mjs.map +1 -0
  656. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs +72 -0
  657. package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs.map +1 -0
  658. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs +78 -0
  659. package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs.map +1 -0
  660. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs +46 -0
  661. package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs.map +1 -0
  662. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs +95 -0
  663. package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs.map +1 -0
  664. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs +91 -0
  665. package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs.map +1 -0
  666. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs +45 -0
  667. package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +1 -0
  668. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs +63 -0
  669. package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs.map +1 -0
  670. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs +137 -0
  671. package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs.map +1 -0
  672. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs +51 -0
  673. package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs.map +1 -0
  674. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs +108 -0
  675. package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs.map +1 -0
  676. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs +112 -0
  677. package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs.map +1 -0
  678. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs +106 -0
  679. package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs.map +1 -0
  680. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs +91 -0
  681. package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs.map +1 -0
  682. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs +118 -0
  683. package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs.map +1 -0
  684. package/esm/node_modules/openai/resources/admin/organization/roles.mjs +96 -0
  685. package/esm/node_modules/openai/resources/admin/organization/roles.mjs.map +1 -0
  686. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs +97 -0
  687. package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs.map +1 -0
  688. package/esm/node_modules/openai/resources/admin/organization/usage.mjs +207 -0
  689. package/esm/node_modules/openai/resources/admin/organization/usage.mjs.map +1 -0
  690. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs +88 -0
  691. package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs.map +1 -0
  692. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs +82 -0
  693. package/esm/node_modules/openai/resources/admin/organization/users/users.mjs.map +1 -0
  694. package/esm/node_modules/openai/resources/audio/audio.mjs +21 -0
  695. package/esm/node_modules/openai/resources/audio/audio.mjs.map +1 -0
  696. package/esm/node_modules/openai/resources/audio/speech.mjs +39 -0
  697. package/esm/node_modules/openai/resources/audio/speech.mjs.map +1 -0
  698. package/esm/node_modules/openai/resources/audio/transcriptions.mjs +22 -0
  699. package/esm/node_modules/openai/resources/audio/transcriptions.mjs.map +1 -0
  700. package/esm/node_modules/openai/resources/audio/translations.mjs +21 -0
  701. package/esm/node_modules/openai/resources/audio/translations.mjs.map +1 -0
  702. package/esm/node_modules/openai/resources/batches.mjs +54 -0
  703. package/esm/node_modules/openai/resources/batches.mjs.map +1 -0
  704. package/esm/node_modules/openai/resources/beta/assistants.mjs +78 -0
  705. package/esm/node_modules/openai/resources/beta/assistants.mjs.map +1 -0
  706. package/esm/node_modules/openai/resources/beta/beta.mjs +24 -0
  707. package/esm/node_modules/openai/resources/beta/beta.mjs.map +1 -0
  708. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs +18 -0
  709. package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs.map +1 -0
  710. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs +49 -0
  711. package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs.map +1 -0
  712. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs +85 -0
  713. package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs.map +1 -0
  714. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs +21 -0
  715. package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs.map +1 -0
  716. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs +33 -0
  717. package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs.map +1 -0
  718. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs +33 -0
  719. package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs.map +1 -0
  720. package/esm/node_modules/openai/resources/beta/threads/messages.mjs +83 -0
  721. package/esm/node_modules/openai/resources/beta/threads/messages.mjs.map +1 -0
  722. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs +183 -0
  723. package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +1 -0
  724. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs +45 -0
  725. package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +1 -0
  726. package/esm/node_modules/openai/resources/beta/threads/threads.mjs +101 -0
  727. package/esm/node_modules/openai/resources/beta/threads/threads.mjs.map +1 -0
  728. package/esm/node_modules/openai/resources/chat/chat.mjs +15 -0
  729. package/esm/node_modules/openai/resources/chat/chat.mjs.map +1 -0
  730. package/esm/node_modules/openai/resources/chat/completions/completions.mjs +123 -0
  731. package/esm/node_modules/openai/resources/chat/completions/completions.mjs.map +1 -0
  732. package/esm/node_modules/openai/resources/chat/completions/index.mjs +7 -0
  733. package/esm/node_modules/openai/resources/chat/completions/messages.mjs +35 -0
  734. package/esm/node_modules/openai/resources/chat/completions/messages.mjs.map +1 -0
  735. package/esm/node_modules/openai/resources/chat/index.mjs +5 -0
  736. package/esm/node_modules/openai/resources/completions.mjs +20 -0
  737. package/esm/node_modules/openai/resources/completions.mjs.map +1 -0
  738. package/esm/node_modules/openai/resources/containers/containers.mjs +57 -0
  739. package/esm/node_modules/openai/resources/containers/containers.mjs.map +1 -0
  740. package/esm/node_modules/openai/resources/containers/files/content.mjs +23 -0
  741. package/esm/node_modules/openai/resources/containers/files/content.mjs.map +1 -0
  742. package/esm/node_modules/openai/resources/containers/files/files.mjs +63 -0
  743. package/esm/node_modules/openai/resources/containers/files/files.mjs.map +1 -0
  744. package/esm/node_modules/openai/resources/conversations/conversations.mjs +57 -0
  745. package/esm/node_modules/openai/resources/conversations/conversations.mjs.map +1 -0
  746. package/esm/node_modules/openai/resources/conversations/items.mjs +57 -0
  747. package/esm/node_modules/openai/resources/conversations/items.mjs.map +1 -0
  748. package/esm/node_modules/openai/resources/embeddings.mjs +48 -0
  749. package/esm/node_modules/openai/resources/embeddings.mjs.map +1 -0
  750. package/esm/node_modules/openai/resources/evals/evals.mjs +73 -0
  751. package/esm/node_modules/openai/resources/evals/evals.mjs.map +1 -0
  752. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs +35 -0
  753. package/esm/node_modules/openai/resources/evals/runs/output-items.mjs.map +1 -0
  754. package/esm/node_modules/openai/resources/evals/runs/runs.mjs +72 -0
  755. package/esm/node_modules/openai/resources/evals/runs/runs.mjs.map +1 -0
  756. package/esm/node_modules/openai/resources/files.mjs +111 -0
  757. package/esm/node_modules/openai/resources/files.mjs.map +1 -0
  758. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs +15 -0
  759. package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs.map +1 -0
  760. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs +60 -0
  761. package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs.map +1 -0
  762. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs +15 -0
  763. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs.map +1 -0
  764. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs +102 -0
  765. package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs.map +1 -0
  766. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +24 -0
  767. package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +1 -0
  768. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +34 -0
  769. package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +1 -0
  770. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +148 -0
  771. package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +1 -0
  772. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs +8 -0
  773. package/esm/node_modules/openai/resources/fine-tuning/methods.mjs.map +1 -0
  774. package/esm/node_modules/openai/resources/graders/grader-models.mjs +8 -0
  775. package/esm/node_modules/openai/resources/graders/grader-models.mjs.map +1 -0
  776. package/esm/node_modules/openai/resources/graders/graders.mjs +15 -0
  777. package/esm/node_modules/openai/resources/graders/graders.mjs.map +1 -0
  778. package/esm/node_modules/openai/resources/images.mjs +46 -0
  779. package/esm/node_modules/openai/resources/images.mjs.map +1 -0
  780. package/esm/node_modules/openai/resources/index.mjs +27 -0
  781. package/esm/node_modules/openai/resources/models.mjs +44 -0
  782. package/esm/node_modules/openai/resources/models.mjs.map +1 -0
  783. package/esm/node_modules/openai/resources/moderations.mjs +23 -0
  784. package/esm/node_modules/openai/resources/moderations.mjs.map +1 -0
  785. package/esm/node_modules/openai/resources/realtime/calls.mjs +79 -0
  786. package/esm/node_modules/openai/resources/realtime/calls.mjs.map +1 -0
  787. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs +39 -0
  788. package/esm/node_modules/openai/resources/realtime/client-secrets.mjs.map +1 -0
  789. package/esm/node_modules/openai/resources/realtime/realtime.mjs +18 -0
  790. package/esm/node_modules/openai/resources/realtime/realtime.mjs.map +1 -0
  791. package/esm/node_modules/openai/resources/responses/input-items.mjs +31 -0
  792. package/esm/node_modules/openai/resources/responses/input-items.mjs.map +1 -0
  793. package/esm/node_modules/openai/resources/responses/input-tokens.mjs +27 -0
  794. package/esm/node_modules/openai/resources/responses/input-tokens.mjs.map +1 -0
  795. package/esm/node_modules/openai/resources/responses/responses.mjs +110 -0
  796. package/esm/node_modules/openai/resources/responses/responses.mjs.map +1 -0
  797. package/esm/node_modules/openai/resources/skills/content.mjs +22 -0
  798. package/esm/node_modules/openai/resources/skills/content.mjs.map +1 -0
  799. package/esm/node_modules/openai/resources/skills/skills.mjs +69 -0
  800. package/esm/node_modules/openai/resources/skills/skills.mjs.map +1 -0
  801. package/esm/node_modules/openai/resources/skills/versions/content.mjs +23 -0
  802. package/esm/node_modules/openai/resources/skills/versions/content.mjs.map +1 -0
  803. package/esm/node_modules/openai/resources/skills/versions/versions.mjs +58 -0
  804. package/esm/node_modules/openai/resources/skills/versions/versions.mjs.map +1 -0
  805. package/esm/node_modules/openai/resources/uploads/parts.mjs +34 -0
  806. package/esm/node_modules/openai/resources/uploads/parts.mjs.map +1 -0
  807. package/esm/node_modules/openai/resources/uploads/uploads.mjs +84 -0
  808. package/esm/node_modules/openai/resources/uploads/uploads.mjs.map +1 -0
  809. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs +126 -0
  810. package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs.map +1 -0
  811. package/esm/node_modules/openai/resources/vector-stores/files.mjs +147 -0
  812. package/esm/node_modules/openai/resources/vector-stores/files.mjs.map +1 -0
  813. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs +87 -0
  814. package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs.map +1 -0
  815. package/esm/node_modules/openai/resources/videos.mjs +115 -0
  816. package/esm/node_modules/openai/resources/videos.mjs.map +1 -0
  817. package/esm/node_modules/openai/resources/webhooks/index.mjs +3 -0
  818. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs +69 -0
  819. package/esm/node_modules/openai/resources/webhooks/webhooks.mjs.map +1 -0
  820. package/esm/node_modules/openai/resources/webhooks.mjs +4 -0
  821. package/esm/node_modules/openai/streaming.mjs +3 -0
  822. package/esm/node_modules/openai/version.mjs +6 -0
  823. package/esm/node_modules/openai/version.mjs.map +1 -0
  824. package/esm/production/production-builder.mjs +2 -2
  825. package/esm/production/production-builder.mjs.map +1 -1
  826. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +9 -0
  827. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  828. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +32 -5
  829. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
  830. package/esm/repositories/adapters/cascade/filter-applicator.mjs +17 -3
  831. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  832. package/esm/repositories/repository.manager.d.mts +11 -1
  833. package/esm/repositories/repository.manager.d.mts.map +1 -1
  834. package/esm/repositories/repository.manager.mjs +79 -25
  835. package/esm/repositories/repository.manager.mjs.map +1 -1
  836. package/esm/router/route-registry.mjs +19 -10
  837. package/esm/router/route-registry.mjs.map +1 -1
  838. package/esm/router/router.d.mts.map +1 -1
  839. package/esm/router/router.mjs +7 -4
  840. package/esm/router/router.mjs.map +1 -1
  841. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  842. package/esm/storage/drivers/cloud-driver.mjs +48 -12
  843. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  844. package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
  845. package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
  846. package/esm/storage/drivers/local-driver.d.mts +8 -0
  847. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  848. package/esm/storage/drivers/local-driver.mjs +19 -4
  849. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  850. package/esm/storage/drivers/r2-driver.mjs +1 -1
  851. package/esm/storage/drivers/r2-driver.mjs.map +1 -1
  852. package/esm/storage/drivers/s3-driver.mjs +1 -1
  853. package/esm/storage/drivers/s3-driver.mjs.map +1 -1
  854. package/esm/storage/index.d.mts +4 -1
  855. package/esm/storage/index.mjs +3 -0
  856. package/esm/storage/scoped-storage.d.mts +8 -4
  857. package/esm/storage/scoped-storage.d.mts.map +1 -1
  858. package/esm/storage/scoped-storage.mjs +21 -6
  859. package/esm/storage/scoped-storage.mjs.map +1 -1
  860. package/esm/storage/storage.d.mts +12 -4
  861. package/esm/storage/storage.d.mts.map +1 -1
  862. package/esm/storage/storage.mjs +23 -9
  863. package/esm/storage/storage.mjs.map +1 -1
  864. package/esm/storage/types.d.mts +33 -5
  865. package/esm/storage/types.d.mts.map +1 -1
  866. package/esm/storage/utils/contain-path.d.mts +23 -0
  867. package/esm/storage/utils/contain-path.d.mts.map +1 -0
  868. package/esm/storage/utils/contain-path.mjs +35 -0
  869. package/esm/storage/utils/contain-path.mjs.map +1 -0
  870. package/esm/storage/utils/safe-fetch.d.mts +68 -0
  871. package/esm/storage/utils/safe-fetch.d.mts.map +1 -0
  872. package/esm/storage/utils/safe-fetch.mjs +205 -0
  873. package/esm/storage/utils/safe-fetch.mjs.map +1 -0
  874. package/esm/storage/utils/storage-error.d.mts +35 -0
  875. package/esm/storage/utils/storage-error.d.mts.map +1 -0
  876. package/esm/storage/utils/storage-error.mjs +17 -0
  877. package/esm/storage/utils/storage-error.mjs.map +1 -0
  878. package/esm/use-cases/use-case-pipeline.mjs +4 -1
  879. package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
  880. package/esm/use-cases/use-case.mjs +12 -4
  881. package/esm/use-cases/use-case.mjs.map +1 -1
  882. package/esm/use-cases/use-cases-registry.d.mts +12 -4
  883. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  884. package/esm/use-cases/use-cases-registry.mjs +13 -3
  885. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  886. package/esm/utils/environment.d.mts +6 -1
  887. package/esm/utils/environment.d.mts.map +1 -1
  888. package/esm/utils/environment.mjs.map +1 -1
  889. package/esm/utils/index.d.mts +1 -1
  890. package/esm/utils/npm-registry.d.mts +1 -1
  891. package/esm/utils/npm-registry.mjs +2 -2
  892. package/esm/utils/npm-registry.mjs.map +1 -1
  893. package/esm/utils/paths.mjs +2 -2
  894. package/esm/utils/paths.mjs.map +1 -1
  895. package/esm/validation/validateAll.mjs +2 -2
  896. package/esm/validation/validateAll.mjs.map +1 -1
  897. package/llms-full.txt +193 -3
  898. package/llms.txt +2 -1
  899. package/package.json +9 -9
  900. package/skills/add-connector/SKILL.md +6 -1
  901. package/skills/configure-app/SKILL.md +23 -0
  902. package/skills/health-checks/SKILL.md +98 -0
  903. package/skills/use-app-context/SKILL.md +62 -2
@@ -0,0 +1,37 @@
1
+ import { WorkflowError } from "../errors/workflow-error.mjs";
2
+ import "../errors/index.mjs";
3
+
4
+ //#region ../@warlock.js/ai/src/workflow/step.ts
5
+ /**
6
+ * `ai.step(def)` — pass-through factory used for authoring. Returns
7
+ * the definition object verbatim so the workflow engine can read it
8
+ * during execution; the factory exists for API symmetry with
9
+ * `ai.workflow()` and to leave room for future validation or
10
+ * metadata annotation.
11
+ *
12
+ * Generics flow from the enclosing `ai.workflow<...>()` call when the
13
+ * step is declared inline inside `steps: [...]`. To author a step
14
+ * outside that context with full typing, pass them explicitly:
15
+ * `ai.step<MyInput, MyState, MyContext>({ ... })`.
16
+ */
17
+ function step(definition) {
18
+ validate(definition);
19
+ return definition;
20
+ }
21
+ function validate(def) {
22
+ if (!def.name || typeof def.name !== "string") throw new WorkflowError("ai.step: `name` is required");
23
+ const hasRun = typeof def.run === "function";
24
+ const hasAgent = def.agent !== void 0;
25
+ const modes = [
26
+ hasRun,
27
+ hasAgent,
28
+ Array.isArray(def.parallel) && def.parallel.length > 0
29
+ ].filter(Boolean).length;
30
+ if (modes === 0) throw new WorkflowError(`ai.step("${def.name}"): must define exactly one of run | agent | parallel`);
31
+ if (modes > 1) throw new WorkflowError(`ai.step("${def.name}"): define only one of run | agent | parallel`);
32
+ if (hasAgent && typeof def.input !== "function") throw new WorkflowError(`ai.step("${def.name}"): \`input(ctx)\` is required when \`agent\` is set`);
33
+ }
34
+
35
+ //#endregion
36
+ export { step };
37
+ //# sourceMappingURL=step.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/step.ts"],"sourcesContent":["import type { StepDefinition } from \"../contracts/workflow/step.contract\";\nimport { WorkflowError } from \"../errors\";\n\n/**\n * `ai.step(def)` — pass-through factory used for authoring. Returns\n * the definition object verbatim so the workflow engine can read it\n * during execution; the factory exists for API symmetry with\n * `ai.workflow()` and to leave room for future validation or\n * metadata annotation.\n *\n * Generics flow from the enclosing `ai.workflow<...>()` call when the\n * step is declared inline inside `steps: [...]`. To author a step\n * outside that context with full typing, pass them explicitly:\n * `ai.step<MyInput, MyState, MyContext>({ ... })`.\n */\nexport function step<\n TInput = unknown,\n TState = Record<string, unknown>,\n TContext = unknown,\n>(\n definition: StepDefinition<TInput, TState, TContext>,\n): StepDefinition<TInput, TState, TContext> {\n validate(definition);\n return definition;\n}\n\nfunction validate<TInput, TState, TContext>(\n def: StepDefinition<TInput, TState, TContext>,\n): void {\n if (!def.name || typeof def.name !== \"string\") {\n throw new WorkflowError(\"ai.step: `name` is required\");\n }\n\n const hasRun = typeof def.run === \"function\";\n const hasAgent = def.agent !== undefined;\n const hasParallel = Array.isArray(def.parallel) && def.parallel.length > 0;\n\n const modes = [hasRun, hasAgent, hasParallel].filter(Boolean).length;\n\n if (modes === 0) {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): must define exactly one of run | agent | parallel`,\n );\n }\n\n if (modes > 1) {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): define only one of run | agent | parallel`,\n );\n }\n\n if (hasAgent && typeof def.input !== \"function\") {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): \\`input(ctx)\\` is required when \\`agent\\` is set`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAAgB,KAKd,YAC0C;CAC1C,SAAS,UAAU;CACnB,OAAO;AACT;AAEA,SAAS,SACP,KACM;CACN,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UACnC,MAAM,IAAI,cAAc,6BAA6B;CAGvD,MAAM,SAAS,OAAO,IAAI,QAAQ;CAClC,MAAM,WAAW,IAAI,UAAU;CAG/B,MAAM,QAAQ;EAAC;EAAQ;EAFH,MAAM,QAAQ,IAAI,QAAQ,KAAK,IAAI,SAAS,SAAS;CAE7B,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;CAE9D,IAAI,UAAU,GACZ,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,sDACvB;CAGF,IAAI,QAAQ,GACV,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,8CACvB;CAGF,IAAI,YAAY,OAAO,IAAI,UAAU,YACnC,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,qDACvB;AAEJ"}
@@ -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,4 @@
1
+ import "./embedder.mjs";
2
+ import "./sdk.mjs";
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,6 @@
1
+ import "../../node_modules/openai/index.mjs";
2
+ import "../../ai/src/index.mjs";
3
+ import "./embedder.mjs";
4
+ import "./model.mjs";
5
+
6
+ export { };
@@ -0,0 +1,4 @@
1
+ import "./to-openai-tools.mjs";
2
+ import "./wrap-openai-error.mjs";
3
+
4
+ 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 { };
@@ -1,6 +1,33 @@
1
- import { Environment } from "../utils/environment.mjs";
1
+ import { Environment, RuntimeStrategy } from "../utils/environment.mjs";
2
2
 
3
3
  //#region ../@warlock.js/core/src/application/application.d.ts
4
+ /**
5
+ * Snapshot of the global facts known the moment the application finished
6
+ * booting: every connector (early + late) is active and all app files
7
+ * (locales, events, main, routes) are loaded. Passed to every
8
+ * `Application.onceBooted` listener and resolved from `Application.whenBooted`.
9
+ */
10
+ type BootContext = {
11
+ environment: Environment;
12
+ runtimeStrategy: RuntimeStrategy;
13
+ /**
14
+ * Wall-clock milliseconds the boot took. The dev server measures it; the
15
+ * production entry omits it.
16
+ */
17
+ bootDurationMs?: number;
18
+ };
19
+ /**
20
+ * A callback registered through `Application.onceBooted`. May be async — its
21
+ * rejection is caught and logged so a single listener can never break boot or
22
+ * the other listeners.
23
+ */
24
+ type BootListener = (context: BootContext) => void | Promise<void>;
25
+ /**
26
+ * A callback registered through `Application.onShutdown`. Runs once, while the
27
+ * connectors (db, cache, http) are still up, so it can release app-owned
28
+ * resources cleanly. May be async — its rejection is caught and logged.
29
+ */
30
+ type ShutdownListener = () => void | Promise<void>;
4
31
  declare class Application {
5
32
  /**
6
33
  * Project start time regarding the process start time
@@ -9,7 +36,29 @@ declare class Application {
9
36
  /**
10
37
  * Runtime strategy
11
38
  */
12
- static runtimeStrategy: "production" | "development";
39
+ static runtimeStrategy: RuntimeStrategy;
40
+ /**
41
+ * Whether the application has finished booting. Flipped once by `markBooted`.
42
+ */
43
+ private static booted;
44
+ /**
45
+ * The boot context, set once booted so it can be replayed to late subscribers.
46
+ */
47
+ private static bootContext;
48
+ /**
49
+ * Listeners queued before boot completed, drained in registration order by
50
+ * `markBooted`.
51
+ */
52
+ private static bootListeners;
53
+ /**
54
+ * Whether the application has begun (or finished) shutting down. Flipped once
55
+ * by `runShutdownHooks`.
56
+ */
57
+ private static shuttingDown;
58
+ /**
59
+ * Teardown callbacks, run once when shutdown begins.
60
+ */
61
+ private static shutdownListeners;
13
62
  /**
14
63
  * Get framework version
15
64
  */
@@ -17,7 +66,80 @@ declare class Application {
17
66
  /**
18
67
  * Set the runtime strategy
19
68
  */
20
- static setRuntimeStrategy(strategy: "production" | "development"): void;
69
+ static setRuntimeStrategy(strategy: RuntimeStrategy): void;
70
+ /**
71
+ * Whether the application has finished booting — every connector in both
72
+ * the early and late phases is active and all app files (locales, events,
73
+ * main, routes) have been loaded.
74
+ */
75
+ static get isBooted(): boolean;
76
+ /**
77
+ * Run a callback once the application is fully booted.
78
+ *
79
+ * App files (`main` / `events` / `routes` / locales) are imported BEFORE the
80
+ * late-phase connectors (http, socket) start, so a listener registered at
81
+ * import time waits for the whole sequence to finish before it runs. If the
82
+ * application is already booted, the callback runs on the next microtask —
83
+ * so a late subscriber never silently misses the event.
84
+ *
85
+ * @example
86
+ * Application.onceBooted(({ environment }) => {
87
+ * log.info("app", "booted", `ready in ${environment}`);
88
+ * });
89
+ */
90
+ static onceBooted(listener: BootListener): void;
91
+ /**
92
+ * Promise form of {@link onceBooted} — resolves with the boot context once
93
+ * the application is booted, or immediately if it already is.
94
+ */
95
+ static whenBooted(): Promise<BootContext>;
96
+ /**
97
+ * Flip the boot latch and drain every queued listener. The dev server and
98
+ * the production entry call this once, right after the late phase starts. It
99
+ * is idempotent — a second call is a no-op, so a double-invoke can never
100
+ * double-fire listeners.
101
+ *
102
+ * @internal Framework entry points call this; application code must not.
103
+ */
104
+ static markBooted(context: BootContext): void;
105
+ /**
106
+ * Invoke a single boot listener, isolating its failure so neither boot nor
107
+ * the remaining listeners are affected.
108
+ */
109
+ private static runBootListener;
110
+ /**
111
+ * Whether the application has begun shutting down. Once true, readiness
112
+ * checks report not-ready so a load balancer drains this instance before the
113
+ * HTTP server stops accepting requests.
114
+ */
115
+ static get isShuttingDown(): boolean;
116
+ /**
117
+ * Register a teardown callback, run once when the application shuts down —
118
+ * before the connectors (db, cache, http) are torn down, so it can still use
119
+ * them. The natural place to close an app-owned resource opened in
120
+ * `onceBooted`. If shutdown has already begun, the callback runs immediately.
121
+ *
122
+ * @example
123
+ * Application.onShutdown(async () => {
124
+ * await myQueueConsumer.stop();
125
+ * });
126
+ */
127
+ static onShutdown(listener: ShutdownListener): void;
128
+ /**
129
+ * Flip the shutdown latch and run every teardown callback. The connectors
130
+ * manager calls this at the start of shutdown — before any connector is torn
131
+ * down. Idempotent and error-isolated: each callback is awaited, a thrown one
132
+ * is logged and does not stop the rest. Listeners run LIFO (reverse of
133
+ * registration), mirroring resource-unwind order.
134
+ *
135
+ * @internal Framework entry points call this; application code must not.
136
+ */
137
+ static runShutdownHooks(): Promise<void>;
138
+ /**
139
+ * Invoke a single teardown callback, isolating its failure so the rest still
140
+ * run and shutdown is never blocked by one bad hook.
141
+ */
142
+ private static runShutdownListener;
21
143
  /**
22
144
  * Get project uptime in milliseconds
23
145
  */
@@ -68,5 +190,5 @@ declare class Application {
68
190
  static get publicPath(): string;
69
191
  }
70
192
  //#endregion
71
- export { Application };
193
+ export { Application, BootContext, BootListener, ShutdownListener };
72
194
  //# sourceMappingURL=application.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.mts","names":[],"sources":["../../../../../../../@warlock.js/core/src/application/application.ts"],"mappings":";;;cAIa,WAAA;;AAAb;;kBAIyB,SAAA,EAAS,IAAA;EAAA;;;EAAA,OAKlB,eAAA;EAiC+B;;;EAAA,WA5B3B,OAAA;EAAA;;;EAAA,OAOJ,kBAAA,CAAmB,QAAA;EAcf;;;EAAA,WAPA,MAAA;EAcW;;;EAAA,WAPX,WAAA,IAAe,WAAA;EAmCf;;;EAAA,OA5BJ,cAAA,CAAe,GAAA,EAAK,WAAA;EAwDhB;;;EAAA,WAjDA,YAAA;;;;aAOA,aAAA;;;;aAOA,MAAA;;;;aAOA,QAAA;;;;aAOA,OAAA;;;;aAOA,OAAA;;;;aAOA,WAAA;;;;aAOA,WAAA;;;;aAOA,UAAA;AAAA"}
1
+ {"version":3,"file":"application.d.mts","names":[],"sources":["../../../../../../../@warlock.js/core/src/application/application.ts"],"mappings":";;;;;AAgBA;;;;KAAY,WAAA;EACV,WAAA,EAAa,WAAA;EACb,eAAA,EAAiB,eAAe;EAAf;;;AAKH;EAAd,cAAA;AAAA;;;;;;KAQU,YAAA,IAAgB,OAAA,EAAS,WAAA,YAAuB,OAAO;AAAA;AAOnE;;;;AAPmE,KAOvD,gBAAA,gBAAgC,OAAO;AAAA,cAEtC,WAAA;EAAW;;;EAAA,gBAIC,SAAA,EAAS,IAAA;EA4CW;;;EAAA,OAvC7B,eAAA,EAAiB,eAAA;EAmGG;;;EAAA,eA9FnB,MAAA;EAgNmB;;;EAAA,eA3MnB,WAAA;EAfiB;;;;EAAA,eAqBjB,aAAA;EAAA;;;;EAAA,eAMA,YAAA;EAiB4B;;;EAAA,eAZ5B,iBAAA;EAuCoB;;;EAAA,WAlCjB,OAAA;EAiDkB;;;EAAA,OA1CtB,kBAAA,CAAmB,QAAA,EAAU,eAAA;EAgFtB;;;;;EAAA,WAvEH,QAAA;EAyHsB;;;;;;;;;;;;;;EAAA,OAvG1B,UAAA,CAAW,QAAA,EAAU,YAAA;EA2MjB;;;AAOU;EAPV,OA5LJ,UAAA,IAAc,OAAA,CAAQ,WAAA;;;;;;;;;SAkBtB,UAAA,CAAW,OAAA,EAAS,WAAA;;;;;iBAoBb,eAAA;;;;;;aAgBH,cAAA;;;;;;;;;;;;SAeJ,UAAA,CAAW,QAAA,EAAU,gBAAA;;;;;;;;;;SAmBf,gBAAA,IAAoB,OAAA;;;;;iBAmBnB,mBAAA;;;;aAWH,MAAA;;;;aAOA,WAAA,IAAe,WAAA;;;;SAOnB,cAAA,CAAe,GAAA,EAAK,WAAA;;;;aAOhB,YAAA;;;;aAOA,aAAA;;;;aAOA,MAAA;;;;aAOA,QAAA;;;;aAOA,OAAA;;;;aAOA,OAAA;;;;aAOA,WAAA;;;;aAOA,WAAA;;;;aAOA,UAAA;AAAA"}
@@ -1,12 +1,25 @@
1
1
  import { environment, setEnvironment } from "../utils/environment.mjs";
2
2
  import { appPath, publicPath, rootPath, srcPath, storagePath, uploadsPath } from "../utils/paths.mjs";
3
3
  import { getFrameworkVersion } from "../utils/framework-vesion.mjs";
4
+ import { log } from "@warlock.js/logger";
4
5
 
5
6
  //#region ../@warlock.js/core/src/application/application.ts
6
7
  var Application = class {
7
8
  static {
8
9
  this.startedAt = /* @__PURE__ */ new Date(Date.now() - process.uptime() * 1e3);
9
10
  }
11
+ static {
12
+ this.booted = false;
13
+ }
14
+ static {
15
+ this.bootListeners = [];
16
+ }
17
+ static {
18
+ this.shuttingDown = false;
19
+ }
20
+ static {
21
+ this.shutdownListeners = [];
22
+ }
10
23
  /**
11
24
  * Get framework version
12
25
  */
@@ -20,6 +33,126 @@ var Application = class {
20
33
  this.runtimeStrategy = strategy;
21
34
  }
22
35
  /**
36
+ * Whether the application has finished booting — every connector in both
37
+ * the early and late phases is active and all app files (locales, events,
38
+ * main, routes) have been loaded.
39
+ */
40
+ static get isBooted() {
41
+ return this.booted;
42
+ }
43
+ /**
44
+ * Run a callback once the application is fully booted.
45
+ *
46
+ * App files (`main` / `events` / `routes` / locales) are imported BEFORE the
47
+ * late-phase connectors (http, socket) start, so a listener registered at
48
+ * import time waits for the whole sequence to finish before it runs. If the
49
+ * application is already booted, the callback runs on the next microtask —
50
+ * so a late subscriber never silently misses the event.
51
+ *
52
+ * @example
53
+ * Application.onceBooted(({ environment }) => {
54
+ * log.info("app", "booted", `ready in ${environment}`);
55
+ * });
56
+ */
57
+ static onceBooted(listener) {
58
+ if (this.booted && this.bootContext) {
59
+ const context = this.bootContext;
60
+ this.runBootListener(listener, context);
61
+ return;
62
+ }
63
+ this.bootListeners.push(listener);
64
+ }
65
+ /**
66
+ * Promise form of {@link onceBooted} — resolves with the boot context once
67
+ * the application is booted, or immediately if it already is.
68
+ */
69
+ static whenBooted() {
70
+ if (this.booted && this.bootContext) return Promise.resolve(this.bootContext);
71
+ return new Promise((resolve) => {
72
+ this.onceBooted((context) => resolve(context));
73
+ });
74
+ }
75
+ /**
76
+ * Flip the boot latch and drain every queued listener. The dev server and
77
+ * the production entry call this once, right after the late phase starts. It
78
+ * is idempotent — a second call is a no-op, so a double-invoke can never
79
+ * double-fire listeners.
80
+ *
81
+ * @internal Framework entry points call this; application code must not.
82
+ */
83
+ static markBooted(context) {
84
+ if (this.booted) return;
85
+ this.booted = true;
86
+ this.bootContext = context;
87
+ const listeners = this.bootListeners;
88
+ this.bootListeners = [];
89
+ for (const listener of listeners) this.runBootListener(listener, context);
90
+ }
91
+ /**
92
+ * Invoke a single boot listener, isolating its failure so neither boot nor
93
+ * the remaining listeners are affected.
94
+ */
95
+ static async runBootListener(listener, context) {
96
+ try {
97
+ await listener(context);
98
+ } catch (error) {
99
+ log.error("application", "booted-listener", error);
100
+ }
101
+ }
102
+ /**
103
+ * Whether the application has begun shutting down. Once true, readiness
104
+ * checks report not-ready so a load balancer drains this instance before the
105
+ * HTTP server stops accepting requests.
106
+ */
107
+ static get isShuttingDown() {
108
+ return this.shuttingDown;
109
+ }
110
+ /**
111
+ * Register a teardown callback, run once when the application shuts down —
112
+ * before the connectors (db, cache, http) are torn down, so it can still use
113
+ * them. The natural place to close an app-owned resource opened in
114
+ * `onceBooted`. If shutdown has already begun, the callback runs immediately.
115
+ *
116
+ * @example
117
+ * Application.onShutdown(async () => {
118
+ * await myQueueConsumer.stop();
119
+ * });
120
+ */
121
+ static onShutdown(listener) {
122
+ if (this.shuttingDown) {
123
+ this.runShutdownListener(listener);
124
+ return;
125
+ }
126
+ this.shutdownListeners.push(listener);
127
+ }
128
+ /**
129
+ * Flip the shutdown latch and run every teardown callback. The connectors
130
+ * manager calls this at the start of shutdown — before any connector is torn
131
+ * down. Idempotent and error-isolated: each callback is awaited, a thrown one
132
+ * is logged and does not stop the rest. Listeners run LIFO (reverse of
133
+ * registration), mirroring resource-unwind order.
134
+ *
135
+ * @internal Framework entry points call this; application code must not.
136
+ */
137
+ static async runShutdownHooks() {
138
+ if (this.shuttingDown) return;
139
+ this.shuttingDown = true;
140
+ const listeners = this.shutdownListeners.reverse();
141
+ this.shutdownListeners = [];
142
+ for (const listener of listeners) await this.runShutdownListener(listener);
143
+ }
144
+ /**
145
+ * Invoke a single teardown callback, isolating its failure so the rest still
146
+ * run and shutdown is never blocked by one bad hook.
147
+ */
148
+ static async runShutdownListener(listener) {
149
+ try {
150
+ await listener();
151
+ } catch (error) {
152
+ log.error("application", "shutdown-listener", error);
153
+ }
154
+ }
155
+ /**
23
156
  * Get project uptime in milliseconds
24
157
  */
25
158
  static get uptime() {
@@ -1 +1 @@
1
- {"version":3,"file":"application.mjs","names":[],"sources":["../../../../../../../@warlock.js/core/src/application/application.ts"],"sourcesContent":["import { environment, setEnvironment, type Environment } from \"../utils/environment\";\nimport { getFrameworkVersion } from \"../utils/framework-vesion\";\nimport { appPath, publicPath, rootPath, srcPath, storagePath, uploadsPath } from \"../utils/paths\";\n\nexport class Application {\n /**\n * Project start time regarding the process start time\n */\n public static readonly startedAt = new Date(Date.now() - process.uptime() * 1000);\n\n /**\n * Runtime strategy\n */\n public static runtimeStrategy: \"production\" | \"development\";\n\n /**\n * Get framework version\n */\n public static get version() {\n return getFrameworkVersion();\n }\n\n /**\n * Set the runtime strategy\n */\n public static setRuntimeStrategy(strategy: \"production\" | \"development\") {\n this.runtimeStrategy = strategy;\n }\n\n /**\n * Get project uptime in milliseconds\n */\n public static get uptime(): number {\n return process.uptime() * 1000;\n }\n\n /**\n * Get the current environment\n */\n public static get environment(): Environment {\n return environment();\n }\n\n /**\n * Set the current environment\n */\n public static setEnvironment(env: Environment) {\n setEnvironment(env);\n }\n\n /**\n * Check if the application is running in production environment\n */\n public static get isProduction(): boolean {\n return this.environment === \"production\";\n }\n\n /**\n * Check if the application is running in development environment\n */\n public static get isDevelopment(): boolean {\n return this.environment === \"development\";\n }\n\n /**\n * Check if the application is running in test environment\n */\n public static get isTest(): boolean {\n return this.environment === \"test\";\n }\n\n /**\n * Get the root path\n */\n public static get rootPath(): string {\n return rootPath();\n }\n\n /**\n * Get the src path\n */\n public static get srcPath(): string {\n return srcPath();\n }\n\n /**\n * Get the app path\n */\n public static get appPath(): string {\n return appPath();\n }\n\n /**\n * Get the storage path\n */\n public static get storagePath(): string {\n return storagePath();\n }\n\n /**\n * Get the uploads path\n */\n public static get uploadsPath(): string {\n return uploadsPath();\n }\n\n /**\n * Get the public path\n */\n public static get publicPath(): string {\n return publicPath();\n }\n}\n"],"mappings":";;;;;AAIA,IAAa,cAAb,MAAyB;;mCAIY,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,OAAO,IAAI,GAAI;;;;;CAUhF,WAAkB,UAAU;EAC1B,OAAO,oBAAoB;CAC7B;;;;CAKA,OAAc,mBAAmB,UAAwC;EACvE,KAAK,kBAAkB;CACzB;;;;CAKA,WAAkB,SAAiB;EACjC,OAAO,QAAQ,OAAO,IAAI;CAC5B;;;;CAKA,WAAkB,cAA2B;EAC3C,OAAO,YAAY;CACrB;;;;CAKA,OAAc,eAAe,KAAkB;EAC7C,eAAe,GAAG;CACpB;;;;CAKA,WAAkB,eAAwB;EACxC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,gBAAyB;EACzC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,SAAkB;EAClC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,WAAmB;EACnC,OAAO,SAAS;CAClB;;;;CAKA,WAAkB,UAAkB;EAClC,OAAO,QAAQ;CACjB;;;;CAKA,WAAkB,UAAkB;EAClC,OAAO,QAAQ;CACjB;;;;CAKA,WAAkB,cAAsB;EACtC,OAAO,YAAY;CACrB;;;;CAKA,WAAkB,cAAsB;EACtC,OAAO,YAAY;CACrB;;;;CAKA,WAAkB,aAAqB;EACrC,OAAO,WAAW;CACpB;AACF"}
1
+ {"version":3,"file":"application.mjs","names":[],"sources":["../../../../../../../@warlock.js/core/src/application/application.ts"],"sourcesContent":["import { log } from \"@warlock.js/logger\";\nimport {\n environment,\n setEnvironment,\n type Environment,\n type RuntimeStrategy,\n} from \"../utils/environment\";\nimport { getFrameworkVersion } from \"../utils/framework-vesion\";\nimport { appPath, publicPath, rootPath, srcPath, storagePath, uploadsPath } from \"../utils/paths\";\n\n/**\n * Snapshot of the global facts known the moment the application finished\n * booting: every connector (early + late) is active and all app files\n * (locales, events, main, routes) are loaded. Passed to every\n * `Application.onceBooted` listener and resolved from `Application.whenBooted`.\n */\nexport type BootContext = {\n environment: Environment;\n runtimeStrategy: RuntimeStrategy;\n /**\n * Wall-clock milliseconds the boot took. The dev server measures it; the\n * production entry omits it.\n */\n bootDurationMs?: number;\n};\n\n/**\n * A callback registered through `Application.onceBooted`. May be async — its\n * rejection is caught and logged so a single listener can never break boot or\n * the other listeners.\n */\nexport type BootListener = (context: BootContext) => void | Promise<void>;\n\n/**\n * A callback registered through `Application.onShutdown`. Runs once, while the\n * connectors (db, cache, http) are still up, so it can release app-owned\n * resources cleanly. May be async — its rejection is caught and logged.\n */\nexport type ShutdownListener = () => void | Promise<void>;\n\nexport class Application {\n /**\n * Project start time regarding the process start time\n */\n public static readonly startedAt = new Date(Date.now() - process.uptime() * 1000);\n\n /**\n * Runtime strategy\n */\n public static runtimeStrategy: RuntimeStrategy;\n\n /**\n * Whether the application has finished booting. Flipped once by `markBooted`.\n */\n private static booted = false;\n\n /**\n * The boot context, set once booted so it can be replayed to late subscribers.\n */\n private static bootContext: BootContext | undefined;\n\n /**\n * Listeners queued before boot completed, drained in registration order by\n * `markBooted`.\n */\n private static bootListeners: BootListener[] = [];\n\n /**\n * Whether the application has begun (or finished) shutting down. Flipped once\n * by `runShutdownHooks`.\n */\n private static shuttingDown = false;\n\n /**\n * Teardown callbacks, run once when shutdown begins.\n */\n private static shutdownListeners: ShutdownListener[] = [];\n\n /**\n * Get framework version\n */\n public static get version() {\n return getFrameworkVersion();\n }\n\n /**\n * Set the runtime strategy\n */\n public static setRuntimeStrategy(strategy: RuntimeStrategy) {\n this.runtimeStrategy = strategy;\n }\n\n /**\n * Whether the application has finished booting — every connector in both\n * the early and late phases is active and all app files (locales, events,\n * main, routes) have been loaded.\n */\n public static get isBooted(): boolean {\n return this.booted;\n }\n\n /**\n * Run a callback once the application is fully booted.\n *\n * App files (`main` / `events` / `routes` / locales) are imported BEFORE the\n * late-phase connectors (http, socket) start, so a listener registered at\n * import time waits for the whole sequence to finish before it runs. If the\n * application is already booted, the callback runs on the next microtask —\n * so a late subscriber never silently misses the event.\n *\n * @example\n * Application.onceBooted(({ environment }) => {\n * log.info(\"app\", \"booted\", `ready in ${environment}`);\n * });\n */\n public static onceBooted(listener: BootListener): void {\n if (this.booted && this.bootContext) {\n const context = this.bootContext;\n void this.runBootListener(listener, context);\n\n return;\n }\n\n this.bootListeners.push(listener);\n }\n\n /**\n * Promise form of {@link onceBooted} — resolves with the boot context once\n * the application is booted, or immediately if it already is.\n */\n public static whenBooted(): Promise<BootContext> {\n if (this.booted && this.bootContext) {\n return Promise.resolve(this.bootContext);\n }\n\n return new Promise<BootContext>((resolve) => {\n this.onceBooted((context) => resolve(context));\n });\n }\n\n /**\n * Flip the boot latch and drain every queued listener. The dev server and\n * the production entry call this once, right after the late phase starts. It\n * is idempotent — a second call is a no-op, so a double-invoke can never\n * double-fire listeners.\n *\n * @internal Framework entry points call this; application code must not.\n */\n public static markBooted(context: BootContext): void {\n if (this.booted) {\n return;\n }\n\n this.booted = true;\n this.bootContext = context;\n\n const listeners = this.bootListeners;\n this.bootListeners = [];\n\n for (const listener of listeners) {\n void this.runBootListener(listener, context);\n }\n }\n\n /**\n * Invoke a single boot listener, isolating its failure so neither boot nor\n * the remaining listeners are affected.\n */\n private static async runBootListener(\n listener: BootListener,\n context: BootContext,\n ): Promise<void> {\n try {\n await listener(context);\n } catch (error) {\n log.error(\"application\", \"booted-listener\", error as Error);\n }\n }\n\n /**\n * Whether the application has begun shutting down. Once true, readiness\n * checks report not-ready so a load balancer drains this instance before the\n * HTTP server stops accepting requests.\n */\n public static get isShuttingDown(): boolean {\n return this.shuttingDown;\n }\n\n /**\n * Register a teardown callback, run once when the application shuts down —\n * before the connectors (db, cache, http) are torn down, so it can still use\n * them. The natural place to close an app-owned resource opened in\n * `onceBooted`. If shutdown has already begun, the callback runs immediately.\n *\n * @example\n * Application.onShutdown(async () => {\n * await myQueueConsumer.stop();\n * });\n */\n public static onShutdown(listener: ShutdownListener): void {\n if (this.shuttingDown) {\n void this.runShutdownListener(listener);\n\n return;\n }\n\n this.shutdownListeners.push(listener);\n }\n\n /**\n * Flip the shutdown latch and run every teardown callback. The connectors\n * manager calls this at the start of shutdown — before any connector is torn\n * down. Idempotent and error-isolated: each callback is awaited, a thrown one\n * is logged and does not stop the rest. Listeners run LIFO (reverse of\n * registration), mirroring resource-unwind order.\n *\n * @internal Framework entry points call this; application code must not.\n */\n public static async runShutdownHooks(): Promise<void> {\n if (this.shuttingDown) {\n return;\n }\n\n this.shuttingDown = true;\n\n const listeners = this.shutdownListeners.reverse();\n this.shutdownListeners = [];\n\n for (const listener of listeners) {\n await this.runShutdownListener(listener);\n }\n }\n\n /**\n * Invoke a single teardown callback, isolating its failure so the rest still\n * run and shutdown is never blocked by one bad hook.\n */\n private static async runShutdownListener(listener: ShutdownListener): Promise<void> {\n try {\n await listener();\n } catch (error) {\n log.error(\"application\", \"shutdown-listener\", error as Error);\n }\n }\n\n /**\n * Get project uptime in milliseconds\n */\n public static get uptime(): number {\n return process.uptime() * 1000;\n }\n\n /**\n * Get the current environment\n */\n public static get environment(): Environment {\n return environment();\n }\n\n /**\n * Set the current environment\n */\n public static setEnvironment(env: Environment) {\n setEnvironment(env);\n }\n\n /**\n * Check if the application is running in production environment\n */\n public static get isProduction(): boolean {\n return this.environment === \"production\";\n }\n\n /**\n * Check if the application is running in development environment\n */\n public static get isDevelopment(): boolean {\n return this.environment === \"development\";\n }\n\n /**\n * Check if the application is running in test environment\n */\n public static get isTest(): boolean {\n return this.environment === \"test\";\n }\n\n /**\n * Get the root path\n */\n public static get rootPath(): string {\n return rootPath();\n }\n\n /**\n * Get the src path\n */\n public static get srcPath(): string {\n return srcPath();\n }\n\n /**\n * Get the app path\n */\n public static get appPath(): string {\n return appPath();\n }\n\n /**\n * Get the storage path\n */\n public static get storagePath(): string {\n return storagePath();\n }\n\n /**\n * Get the uploads path\n */\n public static get uploadsPath(): string {\n return uploadsPath();\n }\n\n /**\n * Get the public path\n */\n public static get publicPath(): string {\n return publicPath();\n }\n}\n"],"mappings":";;;;;;AAwCA,IAAa,cAAb,MAAyB;;mCAIY,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,OAAO,IAAI,GAAI;;;gBAUxD;;;uBAWuB,CAAC;;;sBAMlB;;;2BAKyB,CAAC;;;;;CAKxD,WAAkB,UAAU;EAC1B,OAAO,oBAAoB;CAC7B;;;;CAKA,OAAc,mBAAmB,UAA2B;EAC1D,KAAK,kBAAkB;CACzB;;;;;;CAOA,WAAkB,WAAoB;EACpC,OAAO,KAAK;CACd;;;;;;;;;;;;;;;CAgBA,OAAc,WAAW,UAA8B;EACrD,IAAI,KAAK,UAAU,KAAK,aAAa;GACnC,MAAM,UAAU,KAAK;GACrB,AAAK,KAAK,gBAAgB,UAAU,OAAO;GAE3C;EACF;EAEA,KAAK,cAAc,KAAK,QAAQ;CAClC;;;;;CAMA,OAAc,aAAmC;EAC/C,IAAI,KAAK,UAAU,KAAK,aACtB,OAAO,QAAQ,QAAQ,KAAK,WAAW;EAGzC,OAAO,IAAI,SAAsB,YAAY;GAC3C,KAAK,YAAY,YAAY,QAAQ,OAAO,CAAC;EAC/C,CAAC;CACH;;;;;;;;;CAUA,OAAc,WAAW,SAA4B;EACnD,IAAI,KAAK,QACP;EAGF,KAAK,SAAS;EACd,KAAK,cAAc;EAEnB,MAAM,YAAY,KAAK;EACvB,KAAK,gBAAgB,CAAC;EAEtB,KAAK,MAAM,YAAY,WACrB,AAAK,KAAK,gBAAgB,UAAU,OAAO;CAE/C;;;;;CAMA,aAAqB,gBACnB,UACA,SACe;EACf,IAAI;GACF,MAAM,SAAS,OAAO;EACxB,SAAS,OAAO;GACd,IAAI,MAAM,eAAe,mBAAmB,KAAc;EAC5D;CACF;;;;;;CAOA,WAAkB,iBAA0B;EAC1C,OAAO,KAAK;CACd;;;;;;;;;;;;CAaA,OAAc,WAAW,UAAkC;EACzD,IAAI,KAAK,cAAc;GACrB,AAAK,KAAK,oBAAoB,QAAQ;GAEtC;EACF;EAEA,KAAK,kBAAkB,KAAK,QAAQ;CACtC;;;;;;;;;;CAWA,aAAoB,mBAAkC;EACpD,IAAI,KAAK,cACP;EAGF,KAAK,eAAe;EAEpB,MAAM,YAAY,KAAK,kBAAkB,QAAQ;EACjD,KAAK,oBAAoB,CAAC;EAE1B,KAAK,MAAM,YAAY,WACrB,MAAM,KAAK,oBAAoB,QAAQ;CAE3C;;;;;CAMA,aAAqB,oBAAoB,UAA2C;EAClF,IAAI;GACF,MAAM,SAAS;EACjB,SAAS,OAAO;GACd,IAAI,MAAM,eAAe,qBAAqB,KAAc;EAC9D;CACF;;;;CAKA,WAAkB,SAAiB;EACjC,OAAO,QAAQ,OAAO,IAAI;CAC5B;;;;CAKA,WAAkB,cAA2B;EAC3C,OAAO,YAAY;CACrB;;;;CAKA,OAAc,eAAe,KAAkB;EAC7C,eAAe,GAAG;CACpB;;;;CAKA,WAAkB,eAAwB;EACxC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,gBAAyB;EACzC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,SAAkB;EAClC,OAAO,KAAK,gBAAgB;CAC9B;;;;CAKA,WAAkB,WAAmB;EACnC,OAAO,SAAS;CAClB;;;;CAKA,WAAkB,UAAkB;EAClC,OAAO,QAAQ;CACjB;;;;CAKA,WAAkB,UAAkB;EAClC,OAAO,QAAQ;CACjB;;;;CAKA,WAAkB,cAAsB;EACtC,OAAO,YAAY;CACrB;;;;CAKA,WAAkB,cAAsB;EACtC,OAAO,YAAY;CACrB;;;;CAKA,WAAkB,aAAqB;EACrC,OAAO,WAAW;CACpB;AACF"}
@@ -1,3 +1,3 @@
1
1
  import { app } from "./app.mjs";
2
- import { Application } from "./application.mjs";
2
+ import { Application, BootContext, BootListener, ShutdownListener } from "./application.mjs";
3
3
  import { AppConfigurations } from "./application-config-types.mjs";
@@ -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"}
@@ -174,7 +174,7 @@ function crudModelStub(moduleName) {
174
174
  const singular = moduleName.singular;
175
175
  const plural = moduleName.plural;
176
176
  return `import { Model, RegisterModel } from "@warlock.js/cascade";
177
- import { type Infer, v } from "@warlock.js/core";
177
+ import { type Infer, v } from "@warlock.js/seal";
178
178
  import { ${singular.pascal}Resource } from "app/${plural.kebab}/resources/${singular.kebab}.resource";
179
179
 
180
180
  export const ${singular.camel}Schema = v.object({
@@ -442,9 +442,8 @@ export type ${name.pascal}Schema = Infer<typeof ${name.camel}Schema>;
442
442
  */
443
443
  function modelStub(name, options = {}) {
444
444
  const { tableName = `${name.plural.snake}`, withResource } = options;
445
- return `import { Model } from "@warlock.js/core";
446
- import type { StrictMode } from "@warlock.js/cascade";
447
- import { v, type Infer } from "@warlock.js/core";
445
+ return `import { Model, type StrictMode } from "@warlock.js/cascade";
446
+ import { v, type Infer } from "@warlock.js/seal";
448
447
  ${withResource ? `import { ${name.singular.pascal}Resource } from "../../resources/${name.singular.kebab}.resource";` : ""}
449
448
 
450
449
  const ${name.singular.camel}Schema = v.object({