pulseed 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/dist/base/state/state-manager-goal-write.d.ts +22 -0
  2. package/dist/base/state/state-manager-goal-write.d.ts.map +1 -0
  3. package/dist/base/state/state-manager-goal-write.js +74 -0
  4. package/dist/base/state/state-manager-goal-write.js.map +1 -0
  5. package/dist/base/state/state-manager-wal.d.ts +11 -0
  6. package/dist/base/state/state-manager-wal.d.ts.map +1 -0
  7. package/dist/base/state/state-manager-wal.js +89 -0
  8. package/dist/base/state/state-manager-wal.js.map +1 -0
  9. package/dist/base/state/state-manager.d.ts +1 -4
  10. package/dist/base/state/state-manager.d.ts.map +1 -1
  11. package/dist/base/state/state-manager.js +18 -127
  12. package/dist/base/state/state-manager.js.map +1 -1
  13. package/dist/interface/chat/chat-runner.d.ts +1 -1
  14. package/dist/interface/chat/event-subscriber.d.ts +4 -0
  15. package/dist/interface/chat/event-subscriber.d.ts.map +1 -1
  16. package/dist/interface/chat/event-subscriber.js +49 -2
  17. package/dist/interface/chat/event-subscriber.js.map +1 -1
  18. package/dist/interface/chat/tend-command.d.ts +1 -1
  19. package/dist/interface/cli/cli-command-registry.js +1 -1
  20. package/dist/interface/cli/cli-command-registry.js.map +1 -1
  21. package/dist/interface/cli/commands/chat.js +2 -2
  22. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  23. package/dist/interface/cli/commands/daemon.js +87 -44
  24. package/dist/interface/cli/commands/daemon.js.map +1 -1
  25. package/dist/interface/cli/commands/schedule.js +2 -2
  26. package/dist/interface/cli/commands/setup/steps-runtime.js +1 -1
  27. package/dist/interface/cli/ensure-api-key.d.ts +4 -1
  28. package/dist/interface/cli/ensure-api-key.d.ts.map +1 -1
  29. package/dist/interface/cli/ensure-api-key.js +52 -15
  30. package/dist/interface/cli/ensure-api-key.js.map +1 -1
  31. package/dist/interface/tui/app.d.ts +1 -1
  32. package/dist/interface/tui/chat/scroll.d.ts +14 -0
  33. package/dist/interface/tui/chat/scroll.d.ts.map +1 -0
  34. package/dist/interface/tui/chat/scroll.js +46 -0
  35. package/dist/interface/tui/chat/scroll.js.map +1 -0
  36. package/dist/interface/tui/chat/suggestions.d.ts +8 -0
  37. package/dist/interface/tui/chat/suggestions.d.ts.map +1 -0
  38. package/dist/interface/tui/chat/suggestions.js +112 -0
  39. package/dist/interface/tui/chat/suggestions.js.map +1 -0
  40. package/dist/interface/tui/chat/types.d.ts +31 -0
  41. package/dist/interface/tui/chat/types.d.ts.map +1 -0
  42. package/dist/interface/tui/chat/types.js +2 -0
  43. package/dist/interface/tui/chat/types.js.map +1 -0
  44. package/dist/interface/tui/chat/viewport.d.ts +3 -0
  45. package/dist/interface/tui/chat/viewport.d.ts.map +1 -0
  46. package/dist/interface/tui/chat/viewport.js +78 -0
  47. package/dist/interface/tui/chat/viewport.js.map +1 -0
  48. package/dist/interface/tui/chat.d.ts +5 -49
  49. package/dist/interface/tui/chat.d.ts.map +1 -1
  50. package/dist/interface/tui/chat.js +7 -236
  51. package/dist/interface/tui/chat.js.map +1 -1
  52. package/dist/interface/tui/entry.js +3 -3
  53. package/dist/interface/tui/use-loop.d.ts +1 -1
  54. package/dist/orchestrator/execution/task/task-lifecycle.d.ts +3 -0
  55. package/dist/orchestrator/execution/task/task-lifecycle.d.ts.map +1 -1
  56. package/dist/orchestrator/execution/task/task-lifecycle.js +3 -0
  57. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  58. package/dist/orchestrator/execution/task/task-verifier-rules.d.ts.map +1 -1
  59. package/dist/orchestrator/execution/task/task-verifier-rules.js +34 -2
  60. package/dist/orchestrator/execution/task/task-verifier-rules.js.map +1 -1
  61. package/dist/orchestrator/execution/task/task-verifier-types.d.ts +2 -0
  62. package/dist/orchestrator/execution/task/task-verifier-types.d.ts.map +1 -1
  63. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts +1 -1
  64. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts.map +1 -1
  65. package/dist/orchestrator/loop/core-loop/capability.d.ts +22 -0
  66. package/dist/orchestrator/loop/core-loop/capability.d.ts.map +1 -0
  67. package/dist/orchestrator/loop/core-loop/capability.js +151 -0
  68. package/dist/orchestrator/loop/core-loop/capability.js.map +1 -0
  69. package/dist/orchestrator/loop/core-loop/contracts.d.ts +245 -0
  70. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -0
  71. package/dist/orchestrator/loop/core-loop/contracts.js +40 -0
  72. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -0
  73. package/dist/orchestrator/loop/core-loop/control.d.ts +27 -0
  74. package/dist/orchestrator/loop/core-loop/control.d.ts.map +1 -0
  75. package/dist/orchestrator/loop/core-loop/control.js +72 -0
  76. package/dist/orchestrator/loop/core-loop/control.js.map +1 -0
  77. package/dist/orchestrator/loop/core-loop/learning.d.ts +31 -0
  78. package/dist/orchestrator/loop/core-loop/learning.d.ts.map +1 -0
  79. package/dist/orchestrator/loop/core-loop/learning.js +92 -0
  80. package/dist/orchestrator/loop/core-loop/learning.js.map +1 -0
  81. package/dist/orchestrator/loop/core-loop/preparation.d.ts +63 -0
  82. package/dist/orchestrator/loop/core-loop/preparation.d.ts.map +1 -0
  83. package/dist/orchestrator/loop/core-loop/preparation.js +362 -0
  84. package/dist/orchestrator/loop/core-loop/preparation.js.map +1 -0
  85. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +29 -0
  86. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -0
  87. package/dist/orchestrator/loop/core-loop/task-cycle.js +674 -0
  88. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -0
  89. package/dist/orchestrator/loop/core-loop-capability.d.ts +1 -24
  90. package/dist/orchestrator/loop/core-loop-capability.d.ts.map +1 -1
  91. package/dist/orchestrator/loop/core-loop-capability.js +1 -153
  92. package/dist/orchestrator/loop/core-loop-capability.js.map +1 -1
  93. package/dist/orchestrator/loop/core-loop-learning.d.ts +1 -34
  94. package/dist/orchestrator/loop/core-loop-learning.d.ts.map +1 -1
  95. package/dist/orchestrator/loop/core-loop-learning.js +1 -95
  96. package/dist/orchestrator/loop/core-loop-learning.js.map +1 -1
  97. package/dist/orchestrator/loop/core-loop-phases-b.d.ts +1 -31
  98. package/dist/orchestrator/loop/core-loop-phases-b.d.ts.map +1 -1
  99. package/dist/orchestrator/loop/core-loop-phases-b.js +1 -669
  100. package/dist/orchestrator/loop/core-loop-phases-b.js.map +1 -1
  101. package/dist/orchestrator/loop/core-loop-phases-c.d.ts +1 -26
  102. package/dist/orchestrator/loop/core-loop-phases-c.d.ts.map +1 -1
  103. package/dist/orchestrator/loop/core-loop-phases-c.js +1 -71
  104. package/dist/orchestrator/loop/core-loop-phases-c.js.map +1 -1
  105. package/dist/orchestrator/loop/core-loop-phases.d.ts +1 -68
  106. package/dist/orchestrator/loop/core-loop-phases.d.ts.map +1 -1
  107. package/dist/orchestrator/loop/core-loop-phases.js +1 -367
  108. package/dist/orchestrator/loop/core-loop-phases.js.map +1 -1
  109. package/dist/orchestrator/loop/core-loop-types.d.ts +1 -244
  110. package/dist/orchestrator/loop/core-loop-types.d.ts.map +1 -1
  111. package/dist/orchestrator/loop/core-loop-types.js +1 -39
  112. package/dist/orchestrator/loop/core-loop-types.js.map +1 -1
  113. package/dist/orchestrator/loop/core-loop.d.ts +3 -3
  114. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  115. package/dist/orchestrator/loop/core-loop.js +6 -6
  116. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  117. package/dist/orchestrator/loop/loop-report-helper.d.ts +1 -1
  118. package/dist/orchestrator/loop/loop-report-helper.d.ts.map +1 -1
  119. package/dist/orchestrator/loop/parallel-dispatch.d.ts +2 -2
  120. package/dist/orchestrator/loop/parallel-dispatch.d.ts.map +1 -1
  121. package/dist/orchestrator/loop/post-loop-hooks.d.ts +1 -1
  122. package/dist/orchestrator/loop/post-loop-hooks.d.ts.map +1 -1
  123. package/dist/orchestrator/loop/tree-loop-runner.d.ts +1 -1
  124. package/dist/orchestrator/loop/tree-loop-runner.d.ts.map +1 -1
  125. package/dist/orchestrator/loop/tree-loop-runner.js +1 -1
  126. package/dist/orchestrator/loop/tree-loop-runner.js.map +1 -1
  127. package/dist/platform/dream/dream-schedule-suggestions.d.ts +1 -1
  128. package/dist/platform/drive/drive-system.d.ts +8 -0
  129. package/dist/platform/drive/drive-system.d.ts.map +1 -1
  130. package/dist/platform/drive/drive-system.js +39 -22
  131. package/dist/platform/drive/drive-system.js.map +1 -1
  132. package/dist/platform/observation/engine/observe-context.d.ts +4 -0
  133. package/dist/platform/observation/engine/observe-context.d.ts.map +1 -0
  134. package/dist/platform/observation/engine/observe-context.js +26 -0
  135. package/dist/platform/observation/engine/observe-context.js.map +1 -0
  136. package/dist/platform/observation/engine/observe-datasource-stage.d.ts +33 -0
  137. package/dist/platform/observation/engine/observe-datasource-stage.d.ts.map +1 -0
  138. package/dist/platform/observation/engine/observe-datasource-stage.js +66 -0
  139. package/dist/platform/observation/engine/observe-datasource-stage.js.map +1 -0
  140. package/dist/platform/observation/engine/observe-llm-stage.d.ts +25 -0
  141. package/dist/platform/observation/engine/observe-llm-stage.d.ts.map +1 -0
  142. package/dist/platform/observation/engine/observe-llm-stage.js +79 -0
  143. package/dist/platform/observation/engine/observe-llm-stage.js.map +1 -0
  144. package/dist/platform/observation/engine/observe-precheck.d.ts +21 -0
  145. package/dist/platform/observation/engine/observe-precheck.d.ts.map +1 -0
  146. package/dist/platform/observation/engine/observe-precheck.js +51 -0
  147. package/dist/platform/observation/engine/observe-precheck.js.map +1 -0
  148. package/dist/platform/observation/engine/observe-self-report.d.ts +18 -0
  149. package/dist/platform/observation/engine/observe-self-report.d.ts.map +1 -0
  150. package/dist/platform/observation/engine/observe-self-report.js +26 -0
  151. package/dist/platform/observation/engine/observe-self-report.js.map +1 -0
  152. package/dist/platform/observation/engine/observe-tool-stage.d.ts +21 -0
  153. package/dist/platform/observation/engine/observe-tool-stage.d.ts.map +1 -0
  154. package/dist/platform/observation/engine/observe-tool-stage.js +49 -0
  155. package/dist/platform/observation/engine/observe-tool-stage.js.map +1 -0
  156. package/dist/platform/observation/observation-engine.d.ts.map +1 -1
  157. package/dist/platform/observation/observation-engine.js +67 -246
  158. package/dist/platform/observation/observation-engine.js.map +1 -1
  159. package/dist/prompt/context-assembler.d.ts +61 -13
  160. package/dist/prompt/context-assembler.d.ts.map +1 -1
  161. package/dist/prompt/context-assembler.js +18 -3
  162. package/dist/prompt/context-assembler.js.map +1 -1
  163. package/dist/runtime/approval-broker.d.ts.map +1 -1
  164. package/dist/runtime/approval-broker.js +1 -0
  165. package/dist/runtime/approval-broker.js.map +1 -1
  166. package/dist/runtime/command-dispatcher.d.ts +35 -0
  167. package/dist/runtime/command-dispatcher.d.ts.map +1 -0
  168. package/dist/runtime/command-dispatcher.js +145 -0
  169. package/dist/runtime/command-dispatcher.js.map +1 -0
  170. package/dist/runtime/daemon/client.d.ts +67 -0
  171. package/dist/runtime/daemon/client.d.ts.map +1 -0
  172. package/dist/runtime/daemon/client.js +330 -0
  173. package/dist/runtime/daemon/client.js.map +1 -0
  174. package/dist/runtime/daemon/health.d.ts +31 -0
  175. package/dist/runtime/daemon/health.d.ts.map +1 -0
  176. package/dist/runtime/daemon/health.js +113 -0
  177. package/dist/runtime/daemon/health.js.map +1 -0
  178. package/dist/runtime/daemon/index.d.ts +9 -0
  179. package/dist/runtime/daemon/index.d.ts.map +1 -0
  180. package/dist/runtime/daemon/index.js +8 -0
  181. package/dist/runtime/daemon/index.js.map +1 -0
  182. package/dist/runtime/daemon/maintenance.d.ts +47 -0
  183. package/dist/runtime/daemon/maintenance.d.ts.map +1 -0
  184. package/dist/runtime/daemon/maintenance.js +230 -0
  185. package/dist/runtime/daemon/maintenance.js.map +1 -0
  186. package/dist/runtime/daemon/persistence.d.ts +20 -0
  187. package/dist/runtime/daemon/persistence.d.ts.map +1 -0
  188. package/dist/runtime/daemon/persistence.js +112 -0
  189. package/dist/runtime/daemon/persistence.js.map +1 -0
  190. package/dist/runtime/daemon/runner-lifecycle.d.ts +29 -0
  191. package/dist/runtime/daemon/runner-lifecycle.d.ts.map +1 -0
  192. package/dist/runtime/daemon/runner-lifecycle.js +56 -0
  193. package/dist/runtime/daemon/runner-lifecycle.js.map +1 -0
  194. package/dist/runtime/daemon/runner.d.ts +229 -0
  195. package/dist/runtime/daemon/runner.d.ts.map +1 -0
  196. package/dist/runtime/daemon/runner.js +875 -0
  197. package/dist/runtime/daemon/runner.js.map +1 -0
  198. package/dist/runtime/daemon/runtime-ownership.d.ts +30 -0
  199. package/dist/runtime/daemon/runtime-ownership.d.ts.map +1 -0
  200. package/dist/runtime/daemon/runtime-ownership.js +132 -0
  201. package/dist/runtime/daemon/runtime-ownership.js.map +1 -0
  202. package/dist/runtime/daemon/signals.d.ts +17 -0
  203. package/dist/runtime/daemon/signals.d.ts.map +1 -0
  204. package/dist/runtime/daemon/signals.js +31 -0
  205. package/dist/runtime/daemon/signals.js.map +1 -0
  206. package/dist/runtime/daemon/types.d.ts +8 -0
  207. package/dist/runtime/daemon/types.d.ts.map +1 -0
  208. package/dist/runtime/daemon/types.js +2 -0
  209. package/dist/runtime/daemon/types.js.map +1 -0
  210. package/dist/runtime/daemon-client.d.ts +1 -55
  211. package/dist/runtime/daemon-client.d.ts.map +1 -1
  212. package/dist/runtime/daemon-client.js +1 -297
  213. package/dist/runtime/daemon-client.js.map +1 -1
  214. package/dist/runtime/daemon-health.d.ts +1 -30
  215. package/dist/runtime/daemon-health.d.ts.map +1 -1
  216. package/dist/runtime/daemon-health.js +1 -112
  217. package/dist/runtime/daemon-health.js.map +1 -1
  218. package/dist/runtime/daemon-runner-lifecycle.d.ts +2 -0
  219. package/dist/runtime/daemon-runner-lifecycle.d.ts.map +1 -0
  220. package/dist/runtime/daemon-runner-lifecycle.js +2 -0
  221. package/dist/runtime/daemon-runner-lifecycle.js.map +1 -0
  222. package/dist/runtime/daemon-runner.d.ts +1 -231
  223. package/dist/runtime/daemon-runner.d.ts.map +1 -1
  224. package/dist/runtime/daemon-runner.js +1 -1042
  225. package/dist/runtime/daemon-runner.js.map +1 -1
  226. package/dist/runtime/daemon-runtime-ownership.d.ts +2 -0
  227. package/dist/runtime/daemon-runtime-ownership.d.ts.map +1 -0
  228. package/dist/runtime/daemon-runtime-ownership.js +2 -0
  229. package/dist/runtime/daemon-runtime-ownership.js.map +1 -0
  230. package/dist/runtime/daemon-signals.d.ts +1 -16
  231. package/dist/runtime/daemon-signals.d.ts.map +1 -1
  232. package/dist/runtime/daemon-signals.js +1 -30
  233. package/dist/runtime/daemon-signals.js.map +1 -1
  234. package/dist/runtime/event/dispatcher.d.ts +34 -0
  235. package/dist/runtime/event/dispatcher.d.ts.map +1 -0
  236. package/dist/runtime/event/dispatcher.js +124 -0
  237. package/dist/runtime/event/dispatcher.js.map +1 -0
  238. package/dist/runtime/event/index.d.ts +5 -0
  239. package/dist/runtime/event/index.d.ts.map +1 -0
  240. package/dist/runtime/event/index.js +5 -0
  241. package/dist/runtime/event/index.js.map +1 -0
  242. package/dist/runtime/event/server-snapshot-reader.d.ts +31 -0
  243. package/dist/runtime/event/server-snapshot-reader.d.ts.map +1 -0
  244. package/dist/runtime/event/server-snapshot-reader.js +94 -0
  245. package/dist/runtime/event/server-snapshot-reader.js.map +1 -0
  246. package/dist/runtime/event/server-sse.d.ts +25 -0
  247. package/dist/runtime/event/server-sse.d.ts.map +1 -0
  248. package/dist/runtime/event/server-sse.js +149 -0
  249. package/dist/runtime/event/server-sse.js.map +1 -0
  250. package/dist/runtime/event/server.d.ts +114 -0
  251. package/dist/runtime/event/server.d.ts.map +1 -0
  252. package/dist/runtime/event/server.js +651 -0
  253. package/dist/runtime/event/server.js.map +1 -0
  254. package/dist/runtime/event-dispatcher.d.ts +2 -0
  255. package/dist/runtime/event-dispatcher.d.ts.map +1 -0
  256. package/dist/runtime/event-dispatcher.js +2 -0
  257. package/dist/runtime/event-dispatcher.js.map +1 -0
  258. package/dist/runtime/event-server-snapshot-reader.d.ts +2 -0
  259. package/dist/runtime/event-server-snapshot-reader.d.ts.map +1 -0
  260. package/dist/runtime/event-server-snapshot-reader.js +2 -0
  261. package/dist/runtime/event-server-snapshot-reader.js.map +1 -0
  262. package/dist/runtime/event-server-sse.d.ts +2 -0
  263. package/dist/runtime/event-server-sse.d.ts.map +1 -0
  264. package/dist/runtime/event-server-sse.js +2 -0
  265. package/dist/runtime/event-server-sse.js.map +1 -0
  266. package/dist/runtime/event-server.d.ts +1 -91
  267. package/dist/runtime/event-server.d.ts.map +1 -1
  268. package/dist/runtime/event-server.js +1 -698
  269. package/dist/runtime/event-server.js.map +1 -1
  270. package/dist/runtime/executor/loop-supervisor.d.ts +9 -5
  271. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  272. package/dist/runtime/executor/loop-supervisor.js +59 -76
  273. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  274. package/dist/runtime/gateway/http-channel-adapter.d.ts +1 -1
  275. package/dist/runtime/plugin-loader.d.ts +1 -1
  276. package/dist/runtime/queue/index.d.ts +0 -4
  277. package/dist/runtime/queue/index.d.ts.map +1 -1
  278. package/dist/runtime/queue/index.js +0 -2
  279. package/dist/runtime/queue/index.js.map +1 -1
  280. package/dist/runtime/queue/journal-backed-queue.d.ts.map +1 -1
  281. package/dist/runtime/queue/journal-backed-queue.js +2 -0
  282. package/dist/runtime/queue/journal-backed-queue.js.map +1 -1
  283. package/dist/runtime/schedule/engine-layers.d.ts +44 -0
  284. package/dist/runtime/schedule/engine-layers.d.ts.map +1 -0
  285. package/dist/runtime/schedule/engine-layers.js +433 -0
  286. package/dist/runtime/schedule/engine-layers.js.map +1 -0
  287. package/dist/runtime/schedule/engine.d.ts +82 -0
  288. package/dist/runtime/schedule/engine.d.ts.map +1 -0
  289. package/dist/runtime/schedule/engine.js +480 -0
  290. package/dist/runtime/schedule/engine.js.map +1 -0
  291. package/dist/runtime/schedule/index.d.ts +5 -0
  292. package/dist/runtime/schedule/index.d.ts.map +1 -0
  293. package/dist/runtime/schedule/index.js +5 -0
  294. package/dist/runtime/schedule/index.js.map +1 -0
  295. package/dist/runtime/schedule/presets.d.ts +536 -0
  296. package/dist/runtime/schedule/presets.d.ts.map +1 -0
  297. package/dist/runtime/schedule/presets.js +166 -0
  298. package/dist/runtime/schedule/presets.js.map +1 -0
  299. package/dist/runtime/schedule/source.d.ts +65 -0
  300. package/dist/runtime/schedule/source.d.ts.map +1 -0
  301. package/dist/runtime/schedule/source.js +16 -0
  302. package/dist/runtime/schedule/source.js.map +1 -0
  303. package/dist/runtime/schedule-engine-layers.d.ts +1 -43
  304. package/dist/runtime/schedule-engine-layers.d.ts.map +1 -1
  305. package/dist/runtime/schedule-engine-layers.js +1 -432
  306. package/dist/runtime/schedule-engine-layers.js.map +1 -1
  307. package/dist/runtime/schedule-engine.d.ts +1 -81
  308. package/dist/runtime/schedule-engine.d.ts.map +1 -1
  309. package/dist/runtime/schedule-engine.js +1 -479
  310. package/dist/runtime/schedule-engine.js.map +1 -1
  311. package/dist/runtime/schedule-presets.d.ts +1 -535
  312. package/dist/runtime/schedule-presets.d.ts.map +1 -1
  313. package/dist/runtime/schedule-presets.js +1 -165
  314. package/dist/runtime/schedule-presets.js.map +1 -1
  315. package/dist/runtime/schedule-source.d.ts +1 -64
  316. package/dist/runtime/schedule-source.d.ts.map +1 -1
  317. package/dist/runtime/schedule-source.js +1 -15
  318. package/dist/runtime/schedule-source.js.map +1 -1
  319. package/dist/runtime/types/daemon.d.ts.map +1 -1
  320. package/dist/runtime/types/daemon.js +2 -1
  321. package/dist/runtime/types/daemon.js.map +1 -1
  322. package/dist/runtime/watchdog.d.ts +44 -0
  323. package/dist/runtime/watchdog.d.ts.map +1 -0
  324. package/dist/runtime/watchdog.js +185 -0
  325. package/dist/runtime/watchdog.js.map +1 -0
  326. package/dist/tools/builtin/index.d.ts +1 -1
  327. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.d.ts +1 -1
  328. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.js +1 -1
  329. package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.d.ts +1 -1
  330. package/dist/tools/schedule/ListSchedulesTool/ListSchedulesTool.d.ts +1 -1
  331. package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.d.ts +1 -1
  332. package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.d.ts +1 -1
  333. package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.d.ts +1 -1
  334. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts +1 -1
  335. package/package.json +1 -1
@@ -1,82 +1,2 @@
1
- import type { StateManager } from "../base/state/state-manager.js";
2
- import { type CronConfig, type EscalationConfig, type GoalTriggerConfig, type HeartbeatConfig, type ProbeConfig, type ScheduleEntry, type ScheduleEntryInput, type ScheduleResult, type ScheduleTriggerInput } from "./types/schedule.js";
3
- import type { IDataSourceAdapter } from "../platform/observation/data-source-adapter.js";
4
- import type { DataSourceRegistry } from "../platform/observation/data-source-adapter.js";
5
- import type { ILLMClient } from "../base/llm/llm-client.js";
6
- import type { HookManager } from "./hook-manager.js";
7
- import type { MemoryLifecycleManager } from "../platform/knowledge/memory/memory-lifecycle.js";
8
- import type { KnowledgeManager } from "../platform/knowledge/knowledge-manager.js";
9
- interface ScheduleEngineDeps {
10
- baseDir: string;
11
- logger?: {
12
- info: (message: string, context?: Record<string, unknown>) => void;
13
- warn: (message: string, context?: Record<string, unknown>) => void;
14
- error: (message: string, context?: Record<string, unknown>) => void;
15
- };
16
- dataSourceRegistry?: Map<string, IDataSourceAdapter> | DataSourceRegistry;
17
- llmClient?: ILLMClient;
18
- notificationDispatcher?: {
19
- dispatch(report: Record<string, unknown>): Promise<any>;
20
- };
21
- coreLoop?: {
22
- run(goalId: string, options?: {
23
- maxIterations?: number;
24
- }): Promise<any>;
25
- };
26
- stateManager?: StateManager;
27
- reportingEngine?: {
28
- generateNotification(type: string, context: Record<string, unknown>): Promise<any>;
29
- };
30
- hookManager?: HookManager;
31
- memoryLifecycle?: MemoryLifecycleManager;
32
- knowledgeManager?: KnowledgeManager;
33
- }
34
- export type ScheduleEntryUpdateInput = Partial<{
35
- name: string;
36
- enabled: boolean;
37
- trigger: ScheduleTriggerInput;
38
- heartbeat: HeartbeatConfig;
39
- probe: ProbeConfig;
40
- cron: CronConfig;
41
- goal_trigger: GoalTriggerConfig;
42
- escalation: EscalationConfig | null;
43
- }>;
44
- export declare class ScheduleEngine {
45
- private entries;
46
- private baseDir;
47
- private schedulesPath;
48
- private logger;
49
- private dataSourceRegistry?;
50
- private llmClient?;
51
- private notificationDispatcher?;
52
- private coreLoop?;
53
- private stateManager?;
54
- private reportingEngine?;
55
- private hookManager?;
56
- private memoryLifecycle?;
57
- private knowledgeManager?;
58
- constructor(deps: ScheduleEngineDeps);
59
- loadEntries(): Promise<ScheduleEntry[]>;
60
- saveEntries(): Promise<void>;
61
- getEntries(): ScheduleEntry[];
62
- addEntry(input: Omit<ScheduleEntryInput, "id" | "created_at" | "updated_at" | "last_fired_at" | "next_fire_at" | "consecutive_failures" | "last_escalation_at" | "baseline_results" | "total_executions" | "total_tokens_used" | "max_tokens_per_day" | "tokens_used_today" | "budget_reset_at" | "escalation_timestamps">): Promise<ScheduleEntry>;
63
- removeEntry(id: string): Promise<boolean>;
64
- updateEntry(id: string, patch: ScheduleEntryUpdateInput): Promise<ScheduleEntry | null>;
65
- getDueEntries(): Promise<ScheduleEntry[]>;
66
- tick(): Promise<ScheduleResult[]>;
67
- executeProbe(entry: ScheduleEntry): Promise<ScheduleResult>;
68
- executeCron(entry: ScheduleEntry): Promise<ScheduleResult>;
69
- executeGoalTrigger(entry: ScheduleEntry): Promise<ScheduleResult>;
70
- private layerDeps;
71
- private checkEscalation;
72
- private dispatchNotification;
73
- private executeHeartbeat;
74
- private checkHttp;
75
- private checkTcp;
76
- private checkProcess;
77
- private checkCustom;
78
- private checkDisk;
79
- private computeNextFireAt;
80
- }
81
- export {};
1
+ export * from "./schedule/engine.js";
82
2
  //# sourceMappingURL=schedule-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-engine.d.ts","sourceRoot":"","sources":["../../src/runtime/schedule-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-engine.d.ts","sourceRoot":"","sources":["../../src/runtime/schedule-engine.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,480 +1,2 @@
1
- import { CronExpressionParser } from "cron-parser";
2
- import * as path from "node:path";
3
- import * as net from "node:net";
4
- import { randomUUID } from "node:crypto";
5
- import { exec } from "node:child_process";
6
- import { writeJsonFileAtomic, readJsonFileOrNull } from "../base/utils/json-io.js";
7
- import { ScheduleEntrySchema, ScheduleEntryListSchema, ScheduleResultSchema, } from "./types/schedule.js";
8
- import { executeCron, executeGoalTrigger, executeProbe } from "./schedule-engine-layers.js";
9
- const SCHEDULES_FILE = "schedules.json";
10
- const noopLogger = {
11
- info: (_msg, _ctx) => { },
12
- warn: (_msg, _ctx) => { },
13
- error: (_msg, _ctx) => { },
14
- };
15
- export class ScheduleEngine {
16
- entries = [];
17
- baseDir;
18
- schedulesPath;
19
- logger;
20
- dataSourceRegistry;
21
- llmClient;
22
- notificationDispatcher;
23
- coreLoop;
24
- stateManager;
25
- reportingEngine;
26
- hookManager;
27
- memoryLifecycle;
28
- knowledgeManager;
29
- constructor(deps) {
30
- this.baseDir = deps.baseDir;
31
- this.schedulesPath = path.join(deps.baseDir, SCHEDULES_FILE);
32
- this.logger = deps.logger ?? noopLogger;
33
- this.dataSourceRegistry = deps.dataSourceRegistry;
34
- this.llmClient = deps.llmClient;
35
- this.notificationDispatcher = deps.notificationDispatcher;
36
- this.coreLoop = deps.coreLoop;
37
- this.stateManager = deps.stateManager;
38
- this.reportingEngine = deps.reportingEngine;
39
- this.hookManager = deps.hookManager;
40
- this.memoryLifecycle = deps.memoryLifecycle;
41
- this.knowledgeManager = deps.knowledgeManager;
42
- }
43
- // ─── Persistence ───
44
- async loadEntries() {
45
- const raw = await readJsonFileOrNull(this.schedulesPath);
46
- if (raw === null) {
47
- this.entries = [];
48
- return [];
49
- }
50
- const result = ScheduleEntryListSchema.safeParse(raw);
51
- this.entries = result.success ? result.data : [];
52
- return this.entries;
53
- }
54
- async saveEntries() {
55
- await writeJsonFileAtomic(this.schedulesPath, this.entries);
56
- }
57
- getEntries() {
58
- return this.entries;
59
- }
60
- // ─── Entry management ───
61
- async addEntry(input) {
62
- const now = new Date().toISOString();
63
- const entry = ScheduleEntrySchema.parse({
64
- ...input,
65
- id: randomUUID(),
66
- created_at: now,
67
- updated_at: now,
68
- last_fired_at: null,
69
- next_fire_at: this.computeNextFireAt(input.trigger),
70
- consecutive_failures: 0,
71
- last_escalation_at: null,
72
- baseline_results: [],
73
- total_executions: 0,
74
- total_tokens_used: 0,
75
- });
76
- this.entries.push(entry);
77
- await this.saveEntries();
78
- return entry;
79
- }
80
- async removeEntry(id) {
81
- const before = this.entries.length;
82
- this.entries = this.entries.filter((e) => e.id !== id);
83
- if (this.entries.length === before)
84
- return false;
85
- await this.saveEntries();
86
- return true;
87
- }
88
- async updateEntry(id, patch) {
89
- const idx = this.entries.findIndex((entry) => entry.id === id);
90
- if (idx === -1)
91
- return null;
92
- const hasUpdatableFields = patch.name !== undefined ||
93
- patch.enabled !== undefined ||
94
- patch.trigger !== undefined ||
95
- patch.heartbeat !== undefined ||
96
- patch.probe !== undefined ||
97
- patch.cron !== undefined ||
98
- patch.goal_trigger !== undefined ||
99
- patch.escalation !== undefined;
100
- if (!hasUpdatableFields) {
101
- throw new Error("No updatable fields provided");
102
- }
103
- const current = this.entries[idx];
104
- const layerConfigFields = [
105
- ["heartbeat", patch.heartbeat],
106
- ["probe", patch.probe],
107
- ["cron", patch.cron],
108
- ["goal_trigger", patch.goal_trigger],
109
- ];
110
- for (const [field, value] of layerConfigFields) {
111
- if (value === undefined)
112
- continue;
113
- if (current.layer !== field) {
114
- throw new Error(`Cannot update ${field} config for ${current.layer} entry`);
115
- }
116
- }
117
- const nextEntry = { ...current };
118
- if (patch.name !== undefined)
119
- nextEntry.name = patch.name;
120
- if (patch.enabled !== undefined)
121
- nextEntry.enabled = patch.enabled;
122
- if (patch.trigger !== undefined)
123
- nextEntry.trigger = patch.trigger;
124
- if (patch.heartbeat !== undefined)
125
- nextEntry.heartbeat = patch.heartbeat;
126
- if (patch.probe !== undefined)
127
- nextEntry.probe = patch.probe;
128
- if (patch.cron !== undefined)
129
- nextEntry.cron = patch.cron;
130
- if (patch.goal_trigger !== undefined)
131
- nextEntry.goal_trigger = patch.goal_trigger;
132
- if (patch.escalation !== undefined) {
133
- if (patch.escalation === null) {
134
- delete nextEntry.escalation;
135
- }
136
- else {
137
- nextEntry.escalation = patch.escalation;
138
- }
139
- }
140
- if (patch.trigger !== undefined || (current.enabled === false && patch.enabled === true)) {
141
- nextEntry.next_fire_at = this.computeNextFireAt(nextEntry.trigger);
142
- }
143
- nextEntry.updated_at = new Date().toISOString();
144
- const parsedEntry = ScheduleEntrySchema.parse(nextEntry);
145
- const previousEntries = this.entries;
146
- const nextEntries = [...this.entries];
147
- nextEntries[idx] = parsedEntry;
148
- this.entries = nextEntries;
149
- try {
150
- await this.saveEntries();
151
- }
152
- catch (error) {
153
- this.entries = previousEntries;
154
- throw error;
155
- }
156
- return parsedEntry;
157
- }
158
- // ─── Scheduling ───
159
- async getDueEntries() {
160
- const now = Date.now();
161
- return this.entries.filter((e) => e.enabled && new Date(e.next_fire_at).getTime() <= now);
162
- }
163
- async tick() {
164
- // Reset daily budget for entries whose budget_reset_at is null or in the past
165
- const nowMs = Date.now();
166
- for (let i = 0; i < this.entries.length; i++) {
167
- const e = this.entries[i];
168
- if (!e.budget_reset_at || new Date(e.budget_reset_at).getTime() <= nowMs) {
169
- this.entries[i] = {
170
- ...e,
171
- tokens_used_today: 0,
172
- budget_reset_at: new Date(nowMs + 24 * 60 * 60 * 1000).toISOString(),
173
- };
174
- }
175
- }
176
- const due = await this.getDueEntries();
177
- const results = [];
178
- for (const entry of due) {
179
- let result;
180
- if (entry.layer === "heartbeat") {
181
- result = await this.executeHeartbeat(entry);
182
- }
183
- else if (entry.layer === "probe") {
184
- result = await this.executeProbe(entry);
185
- }
186
- else if (entry.layer === "cron") {
187
- result = await this.executeCron(entry);
188
- }
189
- else if (entry.layer === "goal_trigger") {
190
- result = await this.executeGoalTrigger(entry);
191
- }
192
- else {
193
- result = ScheduleResultSchema.parse({
194
- entry_id: entry.id,
195
- status: "skipped",
196
- duration_ms: 0,
197
- fired_at: new Date().toISOString(),
198
- });
199
- this.logger.info(`Skipping unknown layer entry: ${entry.name} (layer=${entry.layer})`);
200
- }
201
- // Update entry state
202
- const idx = this.entries.findIndex((e) => e.id === entry.id);
203
- if (idx !== -1) {
204
- const e = this.entries[idx];
205
- const newFailures = result.status === "error" || result.status === "down"
206
- ? e.consecutive_failures + 1
207
- : 0;
208
- this.entries[idx] = {
209
- ...e,
210
- last_fired_at: result.fired_at,
211
- next_fire_at: this.computeNextFireAt(e.trigger),
212
- updated_at: new Date().toISOString(),
213
- total_executions: e.total_executions + 1,
214
- total_tokens_used: e.total_tokens_used + (result.tokens_used ?? 0),
215
- tokens_used_today: (e.tokens_used_today ?? 0) + (result.tokens_used ?? 0),
216
- consecutive_failures: newFailures,
217
- };
218
- // Circuit breaker: disable entry if threshold exceeded
219
- if (e.escalation?.circuit_breaker_threshold &&
220
- newFailures >= e.escalation.circuit_breaker_threshold) {
221
- this.entries[idx].enabled = false;
222
- this.logger.warn(`Entry "${e.name}" disabled by circuit breaker (${newFailures}/${e.escalation.circuit_breaker_threshold})`);
223
- }
224
- // Heartbeat failure threshold warning
225
- if (result.status === "down" &&
226
- e.heartbeat &&
227
- newFailures >= e.heartbeat.failure_threshold) {
228
- this.logger.warn(`Entry "${e.name}" reached failure threshold (${newFailures}/${e.heartbeat.failure_threshold})`);
229
- }
230
- // Escalation check
231
- const escalationResult = await this.checkEscalation(this.entries[idx], result);
232
- if (escalationResult !== null) {
233
- result = escalationResult;
234
- results.push(result);
235
- continue;
236
- }
237
- }
238
- results.push(result);
239
- }
240
- if (results.length > 0) {
241
- await this.saveEntries();
242
- }
243
- return results;
244
- }
245
- // ─── Probe execution (Phase 2) ───
246
- async executeProbe(entry) {
247
- return executeProbe(entry, {
248
- ...this.layerDeps(),
249
- updateBaseline: (entryId, value, windowSize) => {
250
- const idx = this.entries.findIndex((e) => e.id === entryId);
251
- if (idx !== -1) {
252
- const updated = [...this.entries[idx].baseline_results, value];
253
- this.entries[idx] = {
254
- ...this.entries[idx],
255
- baseline_results: updated.slice(-windowSize),
256
- };
257
- }
258
- },
259
- });
260
- }
261
- // ─── Cron execution (Phase 3) ───
262
- async executeCron(entry) {
263
- return executeCron(entry, this.layerDeps());
264
- }
265
- // ─── GoalTrigger execution (Phase 3) ───
266
- async executeGoalTrigger(entry) {
267
- return executeGoalTrigger(entry, this.layerDeps());
268
- }
269
- layerDeps() {
270
- return {
271
- baseDir: this.baseDir,
272
- dataSourceRegistry: this.dataSourceRegistry,
273
- llmClient: this.llmClient,
274
- notificationDispatcher: this.notificationDispatcher,
275
- coreLoop: this.coreLoop,
276
- stateManager: this.stateManager,
277
- reportingEngine: this.reportingEngine,
278
- hookManager: this.hookManager,
279
- memoryLifecycle: this.memoryLifecycle,
280
- knowledgeManager: this.knowledgeManager,
281
- logger: this.logger,
282
- };
283
- }
284
- // ─── Escalation logic ───
285
- async checkEscalation(entry, result) {
286
- const esc = entry.escalation;
287
- if (!esc?.enabled)
288
- return null;
289
- const isFailure = result.status === "error" || result.status === "down";
290
- if (!isFailure)
291
- return null;
292
- const now = Date.now();
293
- // Check cooldown
294
- if (entry.last_escalation_at) {
295
- const lastEsc = new Date(entry.last_escalation_at).getTime();
296
- if (now - lastEsc < esc.cooldown_minutes * 60 * 1000) {
297
- this.logger.info(`Escalation for "${entry.name}" suppressed (cooldown)`);
298
- return null;
299
- }
300
- }
301
- // Rolling-window rate-limit: check escalation_timestamps within the last hour
302
- const hourAgo = now - 60 * 60 * 1000;
303
- const recentTimestamps = (entry.escalation_timestamps ?? []).filter((ts) => new Date(ts).getTime() > hourAgo);
304
- if (recentTimestamps.length >= esc.max_per_hour) {
305
- this.logger.info(`Escalation for "${entry.name}" suppressed (max_per_hour=${esc.max_per_hour} reached)`);
306
- return null;
307
- }
308
- // Update last_escalation_at and rolling-window escalation_timestamps
309
- const nowIso = new Date(now).toISOString();
310
- const hourAgoForPrune = now - 60 * 60 * 1000;
311
- const idx = this.entries.findIndex((e) => e.id === entry.id);
312
- if (idx !== -1) {
313
- const prunedTimestamps = [
314
- ...(this.entries[idx].escalation_timestamps ?? []).filter((ts) => new Date(ts).getTime() > hourAgoForPrune),
315
- nowIso,
316
- ];
317
- this.entries[idx] = {
318
- ...this.entries[idx],
319
- last_escalation_at: nowIso,
320
- escalation_timestamps: prunedTimestamps,
321
- };
322
- }
323
- // Dispatch escalation notification
324
- await this.dispatchNotification({
325
- report_type: "schedule_escalation",
326
- entry_id: entry.id,
327
- entry_name: entry.name,
328
- target_layer: esc.target_layer,
329
- target_entry_id: esc.target_entry_id,
330
- consecutive_failures: entry.consecutive_failures,
331
- });
332
- this.logger.warn(`Escalating "${entry.name}" to ${esc.target_layer ?? "unknown"} (failures=${entry.consecutive_failures})`);
333
- // Activate target entry if specified
334
- if (esc.target_entry_id) {
335
- const targetIdx = this.entries.findIndex((e) => e.id === esc.target_entry_id);
336
- if (targetIdx !== -1) {
337
- this.entries[targetIdx] = {
338
- ...this.entries[targetIdx],
339
- enabled: true,
340
- next_fire_at: new Date().toISOString(), // fire immediately
341
- };
342
- }
343
- }
344
- return ScheduleResultSchema.parse({
345
- ...result,
346
- status: "escalated",
347
- escalated_to: esc.target_entry_id ?? esc.target_layer ?? null,
348
- });
349
- }
350
- // ─── Notification dispatch ───
351
- async dispatchNotification(payload) {
352
- if (!this.notificationDispatcher)
353
- return;
354
- try {
355
- await this.notificationDispatcher.dispatch(payload);
356
- }
357
- catch (err) {
358
- this.logger.warn(`Notification dispatch failed: ${err instanceof Error ? err.message : String(err)}`);
359
- }
360
- }
361
- // ─── Heartbeat execution (Phase 1) ───
362
- async executeHeartbeat(entry) {
363
- const firedAt = new Date().toISOString();
364
- const start = Date.now();
365
- const cfg = entry.heartbeat;
366
- if (!cfg) {
367
- return ScheduleResultSchema.parse({
368
- entry_id: entry.id,
369
- status: "error",
370
- duration_ms: 0,
371
- error_message: "No heartbeat config",
372
- fired_at: firedAt,
373
- });
374
- }
375
- try {
376
- const timeoutMs = cfg.timeout_ms;
377
- const config = cfg.check_config;
378
- switch (cfg.check_type) {
379
- case "http":
380
- await this.checkHttp(config.url, timeoutMs);
381
- break;
382
- case "tcp":
383
- await this.checkTcp(config.host, config.port, timeoutMs);
384
- break;
385
- case "process":
386
- this.checkProcess(config.pid);
387
- break;
388
- case "disk":
389
- await this.checkDisk(config.path);
390
- break;
391
- case "custom":
392
- await this.checkCustom(config.command, timeoutMs);
393
- break;
394
- }
395
- return ScheduleResultSchema.parse({
396
- entry_id: entry.id,
397
- status: "ok",
398
- duration_ms: Date.now() - start,
399
- fired_at: firedAt,
400
- });
401
- }
402
- catch (err) {
403
- const msg = err instanceof Error ? err.message : String(err);
404
- this.logger.error(`Heartbeat "${entry.name}" failed: ${msg}`);
405
- return ScheduleResultSchema.parse({
406
- entry_id: entry.id,
407
- status: "down",
408
- duration_ms: Date.now() - start,
409
- error_message: msg,
410
- fired_at: firedAt,
411
- });
412
- }
413
- }
414
- // ─── Check implementations ───
415
- async checkHttp(url, timeoutMs) {
416
- const controller = new AbortController();
417
- const timer = setTimeout(() => controller.abort(), timeoutMs);
418
- try {
419
- const res = await fetch(url, { signal: controller.signal });
420
- if (!res.ok)
421
- throw new Error(`HTTP ${res.status}`);
422
- }
423
- finally {
424
- clearTimeout(timer);
425
- }
426
- }
427
- checkTcp(host, port, timeoutMs) {
428
- return new Promise((resolve, reject) => {
429
- const socket = net.createConnection({ host, port }, () => {
430
- socket.destroy();
431
- resolve();
432
- });
433
- socket.setTimeout(timeoutMs);
434
- socket.on("timeout", () => {
435
- socket.destroy();
436
- reject(new Error(`TCP timeout after ${timeoutMs}ms`));
437
- });
438
- socket.on("error", (err) => {
439
- socket.destroy();
440
- reject(err);
441
- });
442
- });
443
- }
444
- checkProcess(pid) {
445
- process.kill(pid, 0); // throws if process doesn't exist
446
- }
447
- checkCustom(command, timeoutMs) {
448
- return new Promise((resolve, reject) => {
449
- exec(command, { timeout: timeoutMs }, (err) => {
450
- if (err)
451
- reject(err);
452
- else
453
- resolve();
454
- });
455
- });
456
- }
457
- async checkDisk(diskPath) {
458
- const { statfs } = await import("node:fs/promises");
459
- await statfs(diskPath); // throws if path doesn't exist
460
- }
461
- // ─── Schedule computation ───
462
- computeNextFireAt(trigger) {
463
- if (trigger.type === "cron") {
464
- const next = CronExpressionParser.parse(trigger.expression, { tz: trigger.timezone || "UTC" }).next();
465
- return next.toISOString() ?? new Date().toISOString();
466
- }
467
- let nextTime = new Date(Date.now() + trigger.seconds * 1000);
468
- if (trigger.jitter_factor && trigger.jitter_factor > 0) {
469
- const jitterMs = trigger.seconds * 1000 * trigger.jitter_factor * (Math.random() * 2 - 1);
470
- nextTime = new Date(nextTime.getTime() + jitterMs);
471
- }
472
- // Clamp to at least now + 1s to avoid past-scheduling from negative jitter
473
- const minTime = Date.now() + 1000;
474
- if (nextTime.getTime() < minTime) {
475
- nextTime = new Date(minTime);
476
- }
477
- return nextTime.toISOString();
478
- }
479
- }
1
+ export * from "./schedule/engine.js";
480
2
  //# sourceMappingURL=schedule-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-engine.js","sourceRoot":"","sources":["../../src/runtime/schedule-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-engine.js","sourceRoot":"","sources":["../../src/runtime/schedule-engine.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}