@jungjaehoon/mama-os 0.1.1

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 (356) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +643 -0
  3. package/dist/agent/agent-loop.d.ts +98 -0
  4. package/dist/agent/agent-loop.d.ts.map +1 -0
  5. package/dist/agent/agent-loop.js +417 -0
  6. package/dist/agent/agent-loop.js.map +1 -0
  7. package/dist/agent/auto-recall.d.ts +48 -0
  8. package/dist/agent/auto-recall.d.ts.map +1 -0
  9. package/dist/agent/auto-recall.js +178 -0
  10. package/dist/agent/auto-recall.js.map +1 -0
  11. package/dist/agent/claude-cli-wrapper.d.ts +130 -0
  12. package/dist/agent/claude-cli-wrapper.d.ts.map +1 -0
  13. package/dist/agent/claude-cli-wrapper.js +227 -0
  14. package/dist/agent/claude-cli-wrapper.js.map +1 -0
  15. package/dist/agent/claude-client.d.ts +50 -0
  16. package/dist/agent/claude-client.d.ts.map +1 -0
  17. package/dist/agent/claude-client.js +214 -0
  18. package/dist/agent/claude-client.js.map +1 -0
  19. package/dist/agent/gateway-tool-executor.d.ts +75 -0
  20. package/dist/agent/gateway-tool-executor.d.ts.map +1 -0
  21. package/dist/agent/gateway-tool-executor.js +348 -0
  22. package/dist/agent/gateway-tool-executor.js.map +1 -0
  23. package/dist/agent/index.d.ts +13 -0
  24. package/dist/agent/index.d.ts.map +1 -0
  25. package/dist/agent/index.js +18 -0
  26. package/dist/agent/index.js.map +1 -0
  27. package/dist/agent/mcp-executor.d.ts +75 -0
  28. package/dist/agent/mcp-executor.d.ts.map +1 -0
  29. package/dist/agent/mcp-executor.js +307 -0
  30. package/dist/agent/mcp-executor.js.map +1 -0
  31. package/dist/agent/session-pool.d.ts +148 -0
  32. package/dist/agent/session-pool.d.ts.map +1 -0
  33. package/dist/agent/session-pool.js +272 -0
  34. package/dist/agent/session-pool.js.map +1 -0
  35. package/dist/agent/streaming-callback-manager.d.ts +85 -0
  36. package/dist/agent/streaming-callback-manager.d.ts.map +1 -0
  37. package/dist/agent/streaming-callback-manager.js +103 -0
  38. package/dist/agent/streaming-callback-manager.js.map +1 -0
  39. package/dist/agent/types.d.ts +437 -0
  40. package/dist/agent/types.d.ts.map +1 -0
  41. package/dist/agent/types.js +29 -0
  42. package/dist/agent/types.js.map +1 -0
  43. package/dist/api/cron-handler.d.ts +44 -0
  44. package/dist/api/cron-handler.d.ts.map +1 -0
  45. package/dist/api/cron-handler.js +195 -0
  46. package/dist/api/cron-handler.js.map +1 -0
  47. package/dist/api/error-handler.d.ts +22 -0
  48. package/dist/api/error-handler.d.ts.map +1 -0
  49. package/dist/api/error-handler.js +104 -0
  50. package/dist/api/error-handler.js.map +1 -0
  51. package/dist/api/heartbeat-handler.d.ts +49 -0
  52. package/dist/api/heartbeat-handler.d.ts.map +1 -0
  53. package/dist/api/heartbeat-handler.js +91 -0
  54. package/dist/api/heartbeat-handler.js.map +1 -0
  55. package/dist/api/index.d.ts +61 -0
  56. package/dist/api/index.d.ts.map +1 -0
  57. package/dist/api/index.js +145 -0
  58. package/dist/api/index.js.map +1 -0
  59. package/dist/api/types.d.ts +156 -0
  60. package/dist/api/types.d.ts.map +1 -0
  61. package/dist/api/types.js +62 -0
  62. package/dist/api/types.js.map +1 -0
  63. package/dist/auth/index.d.ts +7 -0
  64. package/dist/auth/index.d.ts.map +1 -0
  65. package/dist/auth/index.js +11 -0
  66. package/dist/auth/index.js.map +1 -0
  67. package/dist/auth/oauth-manager.d.ts +59 -0
  68. package/dist/auth/oauth-manager.d.ts.map +1 -0
  69. package/dist/auth/oauth-manager.js +237 -0
  70. package/dist/auth/oauth-manager.js.map +1 -0
  71. package/dist/auth/types.d.ts +92 -0
  72. package/dist/auth/types.d.ts.map +1 -0
  73. package/dist/auth/types.js +23 -0
  74. package/dist/auth/types.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +19 -0
  76. package/dist/cli/commands/init.d.ts.map +1 -0
  77. package/dist/cli/commands/init.js +155 -0
  78. package/dist/cli/commands/init.js.map +1 -0
  79. package/dist/cli/commands/run.d.ts +19 -0
  80. package/dist/cli/commands/run.d.ts.map +1 -0
  81. package/dist/cli/commands/run.js +89 -0
  82. package/dist/cli/commands/run.js.map +1 -0
  83. package/dist/cli/commands/setup.d.ts +19 -0
  84. package/dist/cli/commands/setup.d.ts.map +1 -0
  85. package/dist/cli/commands/setup.js +134 -0
  86. package/dist/cli/commands/setup.js.map +1 -0
  87. package/dist/cli/commands/start.d.ts +24 -0
  88. package/dist/cli/commands/start.d.ts.map +1 -0
  89. package/dist/cli/commands/start.js +1073 -0
  90. package/dist/cli/commands/start.js.map +1 -0
  91. package/dist/cli/commands/status.d.ts +10 -0
  92. package/dist/cli/commands/status.d.ts.map +1 -0
  93. package/dist/cli/commands/status.js +85 -0
  94. package/dist/cli/commands/status.js.map +1 -0
  95. package/dist/cli/commands/stop.d.ts +10 -0
  96. package/dist/cli/commands/stop.d.ts.map +1 -0
  97. package/dist/cli/commands/stop.js +65 -0
  98. package/dist/cli/commands/stop.js.map +1 -0
  99. package/dist/cli/config/config-manager.d.ts +51 -0
  100. package/dist/cli/config/config-manager.d.ts.map +1 -0
  101. package/dist/cli/config/config-manager.js +216 -0
  102. package/dist/cli/config/config-manager.js.map +1 -0
  103. package/dist/cli/config/types.d.ts +172 -0
  104. package/dist/cli/config/types.d.ts.map +1 -0
  105. package/dist/cli/config/types.js +48 -0
  106. package/dist/cli/config/types.js.map +1 -0
  107. package/dist/cli/index.d.ts +8 -0
  108. package/dist/cli/index.d.ts.map +1 -0
  109. package/dist/cli/index.js +92 -0
  110. package/dist/cli/index.js.map +1 -0
  111. package/dist/cli/utils/pid-manager.d.ts +66 -0
  112. package/dist/cli/utils/pid-manager.d.ts.map +1 -0
  113. package/dist/cli/utils/pid-manager.js +167 -0
  114. package/dist/cli/utils/pid-manager.js.map +1 -0
  115. package/dist/concurrency/index.d.ts +13 -0
  116. package/dist/concurrency/index.d.ts.map +1 -0
  117. package/dist/concurrency/index.js +22 -0
  118. package/dist/concurrency/index.js.map +1 -0
  119. package/dist/concurrency/lane-manager.d.ts +113 -0
  120. package/dist/concurrency/lane-manager.d.ts.map +1 -0
  121. package/dist/concurrency/lane-manager.js +245 -0
  122. package/dist/concurrency/lane-manager.js.map +1 -0
  123. package/dist/concurrency/session-key.d.ts +41 -0
  124. package/dist/concurrency/session-key.d.ts.map +1 -0
  125. package/dist/concurrency/session-key.js +61 -0
  126. package/dist/concurrency/session-key.js.map +1 -0
  127. package/dist/concurrency/types.d.ts +69 -0
  128. package/dist/concurrency/types.d.ts.map +1 -0
  129. package/dist/concurrency/types.js +16 -0
  130. package/dist/concurrency/types.js.map +1 -0
  131. package/dist/gateways/channel-history.d.ts +102 -0
  132. package/dist/gateways/channel-history.d.ts.map +1 -0
  133. package/dist/gateways/channel-history.js +181 -0
  134. package/dist/gateways/channel-history.js.map +1 -0
  135. package/dist/gateways/context-injector.d.ts +74 -0
  136. package/dist/gateways/context-injector.d.ts.map +1 -0
  137. package/dist/gateways/context-injector.js +121 -0
  138. package/dist/gateways/context-injector.js.map +1 -0
  139. package/dist/gateways/discord.d.ts +122 -0
  140. package/dist/gateways/discord.d.ts.map +1 -0
  141. package/dist/gateways/discord.js +602 -0
  142. package/dist/gateways/discord.js.map +1 -0
  143. package/dist/gateways/index.d.ts +30 -0
  144. package/dist/gateways/index.d.ts.map +1 -0
  145. package/dist/gateways/index.js +49 -0
  146. package/dist/gateways/index.js.map +1 -0
  147. package/dist/gateways/message-router.d.ts +116 -0
  148. package/dist/gateways/message-router.d.ts.map +1 -0
  149. package/dist/gateways/message-router.js +315 -0
  150. package/dist/gateways/message-router.js.map +1 -0
  151. package/dist/gateways/message-splitter.d.ts +54 -0
  152. package/dist/gateways/message-splitter.d.ts.map +1 -0
  153. package/dist/gateways/message-splitter.js +146 -0
  154. package/dist/gateways/message-splitter.js.map +1 -0
  155. package/dist/gateways/plugin-loader.d.ts +76 -0
  156. package/dist/gateways/plugin-loader.d.ts.map +1 -0
  157. package/dist/gateways/plugin-loader.js +221 -0
  158. package/dist/gateways/plugin-loader.js.map +1 -0
  159. package/dist/gateways/session-store.d.ts +77 -0
  160. package/dist/gateways/session-store.d.ts.map +1 -0
  161. package/dist/gateways/session-store.js +233 -0
  162. package/dist/gateways/session-store.js.map +1 -0
  163. package/dist/gateways/slack.d.ts +90 -0
  164. package/dist/gateways/slack.d.ts.map +1 -0
  165. package/dist/gateways/slack.js +281 -0
  166. package/dist/gateways/slack.js.map +1 -0
  167. package/dist/gateways/telegram.d.ts +79 -0
  168. package/dist/gateways/telegram.d.ts.map +1 -0
  169. package/dist/gateways/telegram.js +207 -0
  170. package/dist/gateways/telegram.js.map +1 -0
  171. package/dist/gateways/types.d.ts +340 -0
  172. package/dist/gateways/types.d.ts.map +1 -0
  173. package/dist/gateways/types.js +6 -0
  174. package/dist/gateways/types.js.map +1 -0
  175. package/dist/index.d.ts +7 -0
  176. package/dist/index.d.ts.map +1 -0
  177. package/dist/index.js +26 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/memory/memory-logger.d.ts +47 -0
  180. package/dist/memory/memory-logger.d.ts.map +1 -0
  181. package/dist/memory/memory-logger.js +126 -0
  182. package/dist/memory/memory-logger.js.map +1 -0
  183. package/dist/onboarding/all-tools.d.ts +18 -0
  184. package/dist/onboarding/all-tools.d.ts.map +1 -0
  185. package/dist/onboarding/all-tools.js +149 -0
  186. package/dist/onboarding/all-tools.js.map +1 -0
  187. package/dist/onboarding/autonomous-discovery-tools.d.ts +13 -0
  188. package/dist/onboarding/autonomous-discovery-tools.d.ts.map +1 -0
  189. package/dist/onboarding/autonomous-discovery-tools.js +268 -0
  190. package/dist/onboarding/autonomous-discovery-tools.js.map +1 -0
  191. package/dist/onboarding/bootstrap-template.d.ts +5 -0
  192. package/dist/onboarding/bootstrap-template.d.ts.map +1 -0
  193. package/dist/onboarding/bootstrap-template.js +142 -0
  194. package/dist/onboarding/bootstrap-template.js.map +1 -0
  195. package/dist/onboarding/complete-autonomous-prompt.d.ts +13 -0
  196. package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -0
  197. package/dist/onboarding/complete-autonomous-prompt.js +1220 -0
  198. package/dist/onboarding/complete-autonomous-prompt.js.map +1 -0
  199. package/dist/onboarding/onboarding-state.d.ts +70 -0
  200. package/dist/onboarding/onboarding-state.d.ts.map +1 -0
  201. package/dist/onboarding/onboarding-state.js +184 -0
  202. package/dist/onboarding/onboarding-state.js.map +1 -0
  203. package/dist/onboarding/personality-quiz.d.ts +35 -0
  204. package/dist/onboarding/personality-quiz.d.ts.map +1 -0
  205. package/dist/onboarding/personality-quiz.js +219 -0
  206. package/dist/onboarding/personality-quiz.js.map +1 -0
  207. package/dist/onboarding/phase-5-summary.d.ts +22 -0
  208. package/dist/onboarding/phase-5-summary.d.ts.map +1 -0
  209. package/dist/onboarding/phase-5-summary.js +151 -0
  210. package/dist/onboarding/phase-5-summary.js.map +1 -0
  211. package/dist/onboarding/phase-6-security.d.ts +33 -0
  212. package/dist/onboarding/phase-6-security.d.ts.map +1 -0
  213. package/dist/onboarding/phase-6-security.js +473 -0
  214. package/dist/onboarding/phase-6-security.js.map +1 -0
  215. package/dist/onboarding/phase-7-integrations.d.ts +66 -0
  216. package/dist/onboarding/phase-7-integrations.d.ts.map +1 -0
  217. package/dist/onboarding/phase-7-integrations.js +619 -0
  218. package/dist/onboarding/phase-7-integrations.js.map +1 -0
  219. package/dist/onboarding/phase-8-demo.d.ts +43 -0
  220. package/dist/onboarding/phase-8-demo.d.ts.map +1 -0
  221. package/dist/onboarding/phase-8-demo.js +346 -0
  222. package/dist/onboarding/phase-8-demo.js.map +1 -0
  223. package/dist/onboarding/phase-9-finalization.d.ts +22 -0
  224. package/dist/onboarding/phase-9-finalization.d.ts.map +1 -0
  225. package/dist/onboarding/phase-9-finalization.js +375 -0
  226. package/dist/onboarding/phase-9-finalization.js.map +1 -0
  227. package/dist/onboarding/ritual-prompt.d.ts +2 -0
  228. package/dist/onboarding/ritual-prompt.d.ts.map +1 -0
  229. package/dist/onboarding/ritual-prompt.js +285 -0
  230. package/dist/onboarding/ritual-prompt.js.map +1 -0
  231. package/dist/onboarding/ritual-tools.d.ts +13 -0
  232. package/dist/onboarding/ritual-tools.d.ts.map +1 -0
  233. package/dist/onboarding/ritual-tools.js +93 -0
  234. package/dist/onboarding/ritual-tools.js.map +1 -0
  235. package/dist/runners/cli-runner.d.ts +59 -0
  236. package/dist/runners/cli-runner.d.ts.map +1 -0
  237. package/dist/runners/cli-runner.js +190 -0
  238. package/dist/runners/cli-runner.js.map +1 -0
  239. package/dist/runners/index.d.ts +11 -0
  240. package/dist/runners/index.d.ts.map +1 -0
  241. package/dist/runners/index.js +15 -0
  242. package/dist/runners/index.js.map +1 -0
  243. package/dist/runners/types.d.ts +81 -0
  244. package/dist/runners/types.d.ts.map +1 -0
  245. package/dist/runners/types.js +31 -0
  246. package/dist/runners/types.js.map +1 -0
  247. package/dist/scheduler/cron-scheduler.d.ts +115 -0
  248. package/dist/scheduler/cron-scheduler.d.ts.map +1 -0
  249. package/dist/scheduler/cron-scheduler.js +320 -0
  250. package/dist/scheduler/cron-scheduler.js.map +1 -0
  251. package/dist/scheduler/heartbeat.d.ts +53 -0
  252. package/dist/scheduler/heartbeat.d.ts.map +1 -0
  253. package/dist/scheduler/heartbeat.js +160 -0
  254. package/dist/scheduler/heartbeat.js.map +1 -0
  255. package/dist/scheduler/index.d.ts +22 -0
  256. package/dist/scheduler/index.d.ts.map +1 -0
  257. package/dist/scheduler/index.js +31 -0
  258. package/dist/scheduler/index.js.map +1 -0
  259. package/dist/scheduler/job-lock.d.ts +85 -0
  260. package/dist/scheduler/job-lock.d.ts.map +1 -0
  261. package/dist/scheduler/job-lock.js +137 -0
  262. package/dist/scheduler/job-lock.js.map +1 -0
  263. package/dist/scheduler/recovery.d.ts +78 -0
  264. package/dist/scheduler/recovery.d.ts.map +1 -0
  265. package/dist/scheduler/recovery.js +124 -0
  266. package/dist/scheduler/recovery.js.map +1 -0
  267. package/dist/scheduler/schedule-store.d.ts +112 -0
  268. package/dist/scheduler/schedule-store.d.ts.map +1 -0
  269. package/dist/scheduler/schedule-store.js +259 -0
  270. package/dist/scheduler/schedule-store.js.map +1 -0
  271. package/dist/scheduler/token-keep-alive.d.ts +49 -0
  272. package/dist/scheduler/token-keep-alive.d.ts.map +1 -0
  273. package/dist/scheduler/token-keep-alive.js +102 -0
  274. package/dist/scheduler/token-keep-alive.js.map +1 -0
  275. package/dist/scheduler/types.d.ts +96 -0
  276. package/dist/scheduler/types.d.ts.map +1 -0
  277. package/dist/scheduler/types.js +21 -0
  278. package/dist/scheduler/types.js.map +1 -0
  279. package/dist/setup/setup-prompt.d.ts +2 -0
  280. package/dist/setup/setup-prompt.d.ts.map +1 -0
  281. package/dist/setup/setup-prompt.js +138 -0
  282. package/dist/setup/setup-prompt.js.map +1 -0
  283. package/dist/setup/setup-server.d.ts +8 -0
  284. package/dist/setup/setup-server.d.ts.map +1 -0
  285. package/dist/setup/setup-server.js +71 -0
  286. package/dist/setup/setup-server.js.map +1 -0
  287. package/dist/setup/setup-tools.d.ts +13 -0
  288. package/dist/setup/setup-tools.d.ts.map +1 -0
  289. package/dist/setup/setup-tools.js +103 -0
  290. package/dist/setup/setup-tools.js.map +1 -0
  291. package/dist/setup/setup-websocket.d.ts +6 -0
  292. package/dist/setup/setup-websocket.d.ts.map +1 -0
  293. package/dist/setup/setup-websocket.js +312 -0
  294. package/dist/setup/setup-websocket.js.map +1 -0
  295. package/dist/skills/index.d.ts +10 -0
  296. package/dist/skills/index.d.ts.map +1 -0
  297. package/dist/skills/index.js +26 -0
  298. package/dist/skills/index.js.map +1 -0
  299. package/dist/skills/skill-executor.d.ts +48 -0
  300. package/dist/skills/skill-executor.d.ts.map +1 -0
  301. package/dist/skills/skill-executor.js +483 -0
  302. package/dist/skills/skill-executor.js.map +1 -0
  303. package/dist/skills/skill-loader.d.ts +40 -0
  304. package/dist/skills/skill-loader.d.ts.map +1 -0
  305. package/dist/skills/skill-loader.js +225 -0
  306. package/dist/skills/skill-loader.js.map +1 -0
  307. package/dist/skills/skill-matcher.d.ts +33 -0
  308. package/dist/skills/skill-matcher.d.ts.map +1 -0
  309. package/dist/skills/skill-matcher.js +190 -0
  310. package/dist/skills/skill-matcher.js.map +1 -0
  311. package/dist/skills/types.d.ts +123 -0
  312. package/dist/skills/types.d.ts.map +1 -0
  313. package/dist/skills/types.js +12 -0
  314. package/dist/skills/types.js.map +1 -0
  315. package/dist/tools/browser-tool.d.ts +149 -0
  316. package/dist/tools/browser-tool.d.ts.map +1 -0
  317. package/dist/tools/browser-tool.js +257 -0
  318. package/dist/tools/browser-tool.js.map +1 -0
  319. package/package.json +84 -0
  320. package/public/favicon.ico +0 -0
  321. package/public/setup.html +1026 -0
  322. package/public/viewer/icons/icon-192.png +0 -0
  323. package/public/viewer/icons/icon-512.png +0 -0
  324. package/public/viewer/js/modules/chat.js +1587 -0
  325. package/public/viewer/js/modules/dashboard.js +275 -0
  326. package/public/viewer/js/modules/graph.js +997 -0
  327. package/public/viewer/js/modules/memory.js +353 -0
  328. package/public/viewer/js/modules/settings.js +255 -0
  329. package/public/viewer/js/utils/api.js +169 -0
  330. package/public/viewer/js/utils/dom.js +92 -0
  331. package/public/viewer/js/utils/format.js +192 -0
  332. package/public/viewer/manifest.json +26 -0
  333. package/public/viewer/sw.js +131 -0
  334. package/public/viewer/viewer.css +500 -0
  335. package/public/viewer/viewer.html +1535 -0
  336. package/scripts/postinstall.js +118 -0
  337. package/templates/skills/document-analyze.md +63 -0
  338. package/templates/skills/heartbeat-report.md +75 -0
  339. package/templates/skills/image-translate.md +67 -0
  340. package/templates/workspace/skill-forge/DESIGN.md +115 -0
  341. package/templates/workspace/skill-forge/agents/architect.ts +295 -0
  342. package/templates/workspace/skill-forge/agents/developer.ts +364 -0
  343. package/templates/workspace/skill-forge/agents/qa.ts +313 -0
  344. package/templates/workspace/skill-forge/claude-api.ts +353 -0
  345. package/templates/workspace/skill-forge/discord-ui.ts +580 -0
  346. package/templates/workspace/skill-forge/error-handler.ts +354 -0
  347. package/templates/workspace/skill-forge/mama-integration.ts +357 -0
  348. package/templates/workspace/skill-forge/orchestrator.ts +495 -0
  349. package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/README.md +24 -0
  350. package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/index.ts +79 -0
  351. package/templates/workspace/skill-forge/output/generated-skills/skills/hello-world/types.ts +17 -0
  352. package/templates/workspace/skill-forge/package.json +21 -0
  353. package/templates/workspace/skill-forge/state/session.json +132 -0
  354. package/templates/workspace/skill-forge/test-e2e.ts +139 -0
  355. package/templates/workspace/skill-forge/tsconfig.json +20 -0
  356. package/templates/workspace/skill-forge/types.ts +159 -0
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ /**
3
+ * Cron Scheduler for MAMA Standalone
4
+ *
5
+ * Schedules and executes jobs based on cron expressions.
6
+ * Uses node-cron for scheduling and cron-parser for next run calculation.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CronScheduler = void 0;
13
+ const node_cron_1 = __importDefault(require("node-cron"));
14
+ const cron_parser_1 = __importDefault(require("cron-parser"));
15
+ const job_lock_js_1 = require("./job-lock.js");
16
+ const types_js_1 = require("./types.js");
17
+ /**
18
+ * Default scheduler options
19
+ */
20
+ const DEFAULT_OPTIONS = {
21
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
22
+ runMissedOnStartup: false,
23
+ maxConcurrent: 1,
24
+ };
25
+ class CronScheduler {
26
+ jobs = new Map();
27
+ lock;
28
+ options;
29
+ eventHandlers = [];
30
+ executeCallback;
31
+ constructor(options = {}) {
32
+ this.options = { ...DEFAULT_OPTIONS, ...options };
33
+ this.lock = new job_lock_js_1.JobLock();
34
+ }
35
+ /**
36
+ * Set the execution callback (typically AgentLoop.run)
37
+ *
38
+ * @param callback - Function to execute for each job
39
+ */
40
+ setExecuteCallback(callback) {
41
+ this.executeCallback = callback;
42
+ }
43
+ /**
44
+ * Add a job to the scheduler
45
+ *
46
+ * @param config - Job configuration
47
+ * @returns Job ID
48
+ * @throws SchedulerError if cron expression is invalid or job already exists
49
+ */
50
+ addJob(config) {
51
+ // Check if job already exists
52
+ if (this.jobs.has(config.id)) {
53
+ throw new types_js_1.SchedulerError(`Job already exists: ${config.id}`, 'JOB_EXISTS');
54
+ }
55
+ // Validate cron expression
56
+ if (!node_cron_1.default.validate(config.cronExpr)) {
57
+ throw new types_js_1.SchedulerError(`Invalid cron expression: ${config.cronExpr}`, 'INVALID_CRON');
58
+ }
59
+ // Create job
60
+ const job = {
61
+ ...config,
62
+ enabled: config.enabled ?? true,
63
+ isRunning: false,
64
+ nextRun: this.calculateNextRun(config.cronExpr),
65
+ };
66
+ // Schedule cron task
67
+ const task = node_cron_1.default.schedule(config.cronExpr, () => {
68
+ void this.executeJob(config.id);
69
+ }, {
70
+ scheduled: job.enabled,
71
+ timezone: this.options.timezone,
72
+ });
73
+ job.task = task;
74
+ this.jobs.set(config.id, job);
75
+ return config.id;
76
+ }
77
+ /**
78
+ * Remove a job from the scheduler
79
+ *
80
+ * @param jobId - Job identifier
81
+ * @throws SchedulerError if job not found
82
+ */
83
+ removeJob(jobId) {
84
+ const job = this.jobs.get(jobId);
85
+ if (!job) {
86
+ throw new types_js_1.SchedulerError(`Job not found: ${jobId}`, 'JOB_NOT_FOUND');
87
+ }
88
+ // Stop and destroy the cron task
89
+ if (job.task) {
90
+ job.task.stop();
91
+ }
92
+ // Release any held locks
93
+ this.lock.release(jobId);
94
+ this.jobs.delete(jobId);
95
+ }
96
+ /**
97
+ * Enable a job
98
+ *
99
+ * @param jobId - Job identifier
100
+ * @throws SchedulerError if job not found
101
+ */
102
+ enableJob(jobId) {
103
+ const job = this.jobs.get(jobId);
104
+ if (!job) {
105
+ throw new types_js_1.SchedulerError(`Job not found: ${jobId}`, 'JOB_NOT_FOUND');
106
+ }
107
+ if (job.task) {
108
+ job.task.start();
109
+ }
110
+ job.enabled = true;
111
+ job.nextRun = this.calculateNextRun(job.cronExpr);
112
+ }
113
+ /**
114
+ * Disable a job
115
+ *
116
+ * @param jobId - Job identifier
117
+ * @throws SchedulerError if job not found
118
+ */
119
+ disableJob(jobId) {
120
+ const job = this.jobs.get(jobId);
121
+ if (!job) {
122
+ throw new types_js_1.SchedulerError(`Job not found: ${jobId}`, 'JOB_NOT_FOUND');
123
+ }
124
+ if (job.task) {
125
+ job.task.stop();
126
+ }
127
+ job.enabled = false;
128
+ job.nextRun = undefined;
129
+ }
130
+ /**
131
+ * Execute a job immediately
132
+ *
133
+ * @param jobId - Job identifier
134
+ * @throws SchedulerError if job not found
135
+ */
136
+ async runNow(jobId) {
137
+ const job = this.jobs.get(jobId);
138
+ if (!job) {
139
+ throw new types_js_1.SchedulerError(`Job not found: ${jobId}`, 'JOB_NOT_FOUND');
140
+ }
141
+ return this.executeJob(jobId);
142
+ }
143
+ /**
144
+ * Get a job by ID
145
+ *
146
+ * @param jobId - Job identifier
147
+ * @returns Job info (without internal task object)
148
+ */
149
+ getJob(jobId) {
150
+ const job = this.jobs.get(jobId);
151
+ if (!job) {
152
+ return null;
153
+ }
154
+ return this.toPublicJob(job);
155
+ }
156
+ /**
157
+ * List all jobs
158
+ *
159
+ * @returns Array of job info (without internal task objects)
160
+ */
161
+ listJobs() {
162
+ return Array.from(this.jobs.values()).map((job) => this.toPublicJob(job));
163
+ }
164
+ /**
165
+ * Check if a job is currently running
166
+ *
167
+ * @param jobId - Job identifier
168
+ */
169
+ isJobRunning(jobId) {
170
+ return this.lock.isLocked(jobId);
171
+ }
172
+ /**
173
+ * Add an event handler
174
+ *
175
+ * @param handler - Event handler function
176
+ */
177
+ onEvent(handler) {
178
+ this.eventHandlers.push(handler);
179
+ }
180
+ /**
181
+ * Calculate next run time for a cron expression
182
+ *
183
+ * @param cronExpr - Cron expression
184
+ * @returns Next run date
185
+ */
186
+ calculateNextRun(cronExpr) {
187
+ try {
188
+ const interval = cron_parser_1.default.parseExpression(cronExpr, {
189
+ tz: this.options.timezone,
190
+ });
191
+ return interval.next().toDate();
192
+ }
193
+ catch {
194
+ // If parsing fails, return a far future date
195
+ return new Date(Date.now() + 365 * 24 * 60 * 60 * 1000);
196
+ }
197
+ }
198
+ /**
199
+ * Stop all jobs and clean up
200
+ */
201
+ shutdown() {
202
+ for (const [jobId, job] of this.jobs) {
203
+ if (job.task) {
204
+ job.task.stop();
205
+ }
206
+ this.lock.release(jobId);
207
+ }
208
+ this.jobs.clear();
209
+ }
210
+ /**
211
+ * Execute a job
212
+ *
213
+ * @param jobId - Job identifier
214
+ */
215
+ async executeJob(jobId) {
216
+ const job = this.jobs.get(jobId);
217
+ if (!job) {
218
+ throw new types_js_1.SchedulerError(`Job not found: ${jobId}`, 'JOB_NOT_FOUND');
219
+ }
220
+ // Try to acquire lock
221
+ if (!this.lock.acquire(jobId)) {
222
+ this.emitEvent({
223
+ type: 'skipped',
224
+ jobId,
225
+ timestamp: new Date(),
226
+ reason: 'Job is already running',
227
+ });
228
+ return {
229
+ success: false,
230
+ startedAt: new Date(),
231
+ completedAt: new Date(),
232
+ duration: 0,
233
+ error: 'Job is already running',
234
+ };
235
+ }
236
+ const startedAt = new Date();
237
+ job.isRunning = true;
238
+ job.lastRun = startedAt;
239
+ this.emitEvent({
240
+ type: 'started',
241
+ jobId,
242
+ timestamp: startedAt,
243
+ });
244
+ let result;
245
+ try {
246
+ let response;
247
+ if (this.executeCallback) {
248
+ response = await this.executeCallback(job.prompt);
249
+ }
250
+ const completedAt = new Date();
251
+ result = {
252
+ success: true,
253
+ startedAt,
254
+ completedAt,
255
+ duration: completedAt.getTime() - startedAt.getTime(),
256
+ response,
257
+ };
258
+ this.emitEvent({
259
+ type: 'completed',
260
+ jobId,
261
+ timestamp: completedAt,
262
+ result,
263
+ });
264
+ }
265
+ catch (error) {
266
+ const completedAt = new Date();
267
+ result = {
268
+ success: false,
269
+ startedAt,
270
+ completedAt,
271
+ duration: completedAt.getTime() - startedAt.getTime(),
272
+ error: error instanceof Error ? error.message : String(error),
273
+ };
274
+ this.emitEvent({
275
+ type: 'failed',
276
+ jobId,
277
+ timestamp: completedAt,
278
+ result,
279
+ });
280
+ }
281
+ finally {
282
+ job.isRunning = false;
283
+ job.lastResult = result;
284
+ job.nextRun = job.enabled ? this.calculateNextRun(job.cronExpr) : undefined;
285
+ this.lock.release(jobId);
286
+ }
287
+ return result;
288
+ }
289
+ /**
290
+ * Convert internal job to public job (without task)
291
+ */
292
+ toPublicJob(job) {
293
+ const { task, ...publicJob } = job;
294
+ return publicJob;
295
+ }
296
+ /**
297
+ * Emit an event to all handlers
298
+ */
299
+ emitEvent(event) {
300
+ for (const handler of this.eventHandlers) {
301
+ try {
302
+ handler(event);
303
+ }
304
+ catch {
305
+ // Ignore handler errors
306
+ }
307
+ }
308
+ }
309
+ /**
310
+ * Validate a cron expression
311
+ *
312
+ * @param cronExpr - Cron expression to validate
313
+ * @returns true if valid
314
+ */
315
+ static validate(cronExpr) {
316
+ return node_cron_1.default.validate(cronExpr);
317
+ }
318
+ }
319
+ exports.CronScheduler = CronScheduler;
320
+ //# sourceMappingURL=cron-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-scheduler.js","sourceRoot":"","sources":["../../src/scheduler/cron-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Heartbeat Scheduler
3
+ *
4
+ * Periodically polls HEARTBEAT.md and executes proactive tasks
5
+ */
6
+ import type { AgentLoop } from '../agent/agent-loop.js';
7
+ export interface HeartbeatConfig {
8
+ /** Interval in milliseconds (default: 30 minutes) */
9
+ interval: number;
10
+ /** Quiet hours start (0-23, default: 23) */
11
+ quietStart: number;
12
+ /** Quiet hours end (0-23, default: 8) */
13
+ quietEnd: number;
14
+ /** Discord channel ID to send notifications */
15
+ notifyChannelId?: string;
16
+ }
17
+ export declare class HeartbeatScheduler {
18
+ private config;
19
+ private agentLoop;
20
+ private timer;
21
+ private running;
22
+ private sendNotification?;
23
+ constructor(agentLoop: AgentLoop, config?: Partial<HeartbeatConfig>, sendNotification?: (channelId: string, message: string) => Promise<void>);
24
+ /**
25
+ * Start the heartbeat scheduler
26
+ */
27
+ start(): void;
28
+ /**
29
+ * Stop the heartbeat scheduler
30
+ */
31
+ stop(): void;
32
+ /**
33
+ * Check if current time is within quiet hours
34
+ */
35
+ private isQuietHours;
36
+ /**
37
+ * Execute a heartbeat tick
38
+ */
39
+ private tick;
40
+ /**
41
+ * Manually trigger a heartbeat
42
+ */
43
+ triggerNow(): Promise<string>;
44
+ /**
45
+ * Update configuration
46
+ */
47
+ setConfig(config: Partial<HeartbeatConfig>): void;
48
+ /**
49
+ * Get current configuration
50
+ */
51
+ getConfig(): HeartbeatConfig;
52
+ }
53
+ //# sourceMappingURL=heartbeat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/scheduler/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAQD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAC,CAAwD;gBAG/E,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAO1E;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;YACW,IAAI;IAoElB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAUjD;;OAEG;IACH,SAAS,IAAI,eAAe;CAG7B"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Heartbeat Scheduler
4
+ *
5
+ * Periodically polls HEARTBEAT.md and executes proactive tasks
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.HeartbeatScheduler = void 0;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const memory_logger_js_1 = require("../memory/memory-logger.js");
12
+ const DEFAULT_CONFIG = {
13
+ interval: 30 * 60 * 1000, // 30 minutes
14
+ quietStart: 23,
15
+ quietEnd: 8,
16
+ };
17
+ class HeartbeatScheduler {
18
+ config;
19
+ agentLoop;
20
+ timer = null;
21
+ running = false;
22
+ sendNotification;
23
+ constructor(agentLoop, config = {}, sendNotification) {
24
+ this.agentLoop = agentLoop;
25
+ this.config = { ...DEFAULT_CONFIG, ...config };
26
+ this.sendNotification = sendNotification;
27
+ }
28
+ /**
29
+ * Start the heartbeat scheduler
30
+ */
31
+ start() {
32
+ if (this.running) {
33
+ console.log('[Heartbeat] Already running');
34
+ return;
35
+ }
36
+ this.running = true;
37
+ console.log(`[Heartbeat] Started (interval: ${this.config.interval / 1000}s)`);
38
+ // Run first heartbeat after a short delay
39
+ setTimeout(() => this.tick(), 5000);
40
+ // Schedule regular heartbeats
41
+ this.timer = setInterval(() => this.tick(), this.config.interval);
42
+ }
43
+ /**
44
+ * Stop the heartbeat scheduler
45
+ */
46
+ stop() {
47
+ if (this.timer) {
48
+ clearInterval(this.timer);
49
+ this.timer = null;
50
+ }
51
+ this.running = false;
52
+ console.log('[Heartbeat] Stopped');
53
+ }
54
+ /**
55
+ * Check if current time is within quiet hours
56
+ */
57
+ isQuietHours() {
58
+ const hour = new Date().getHours();
59
+ if (this.config.quietStart > this.config.quietEnd) {
60
+ // Quiet hours span midnight (e.g., 23:00 - 08:00)
61
+ return hour >= this.config.quietStart || hour < this.config.quietEnd;
62
+ }
63
+ else {
64
+ return hour >= this.config.quietStart && hour < this.config.quietEnd;
65
+ }
66
+ }
67
+ /**
68
+ * Execute a heartbeat tick
69
+ */
70
+ async tick() {
71
+ // Skip during quiet hours
72
+ if (this.isQuietHours()) {
73
+ console.log('[Heartbeat] Quiet hours - skipping');
74
+ return;
75
+ }
76
+ console.log('[Heartbeat] Tick...');
77
+ const memoryLogger = (0, memory_logger_js_1.getMemoryLogger)();
78
+ try {
79
+ // Load HEARTBEAT.md
80
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
81
+ const heartbeatPath = (0, path_1.join)(homeDir, '.mama', 'HEARTBEAT.md');
82
+ let heartbeatContent = '';
83
+ if ((0, fs_1.existsSync)(heartbeatPath)) {
84
+ heartbeatContent = (0, fs_1.readFileSync)(heartbeatPath, 'utf-8');
85
+ }
86
+ // Build heartbeat prompt
87
+ const prompt = `[HEARTBEAT POLL]
88
+
89
+ 현재 시간: ${new Date().toLocaleString('ko-KR')}
90
+
91
+ HEARTBEAT.md 내용:
92
+ ${heartbeatContent || '(없음)'}
93
+
94
+ 지시사항:
95
+ 1. HEARTBEAT.md 확인
96
+ 2. 할 일이 있으면 처리하고 결과 보고
97
+ 3. 없으면 "HEARTBEAT_OK"만 응답
98
+ 4. 사용자에게 알릴 중요한 것이 있으면 알림 메시지 작성
99
+
100
+ 응답 형식:
101
+ - 할 일 없음: HEARTBEAT_OK
102
+ - 알림 있음: NOTIFY: [메시지 내용]
103
+ - 작업 완료: DONE: [완료 내용]`;
104
+ // Run agent loop
105
+ const result = await this.agentLoop.run(prompt);
106
+ const response = result.response.trim();
107
+ memoryLogger.logEvent('하트비트', response.substring(0, 100));
108
+ // Handle response
109
+ if (response === 'HEARTBEAT_OK') {
110
+ console.log('[Heartbeat] OK - nothing to do');
111
+ }
112
+ else if (response.startsWith('NOTIFY:')) {
113
+ const message = response.replace('NOTIFY:', '').trim();
114
+ console.log(`[Heartbeat] Notification: ${message}`);
115
+ // Send notification if configured
116
+ if (this.sendNotification && this.config.notifyChannelId) {
117
+ await this.sendNotification(this.config.notifyChannelId, message);
118
+ }
119
+ }
120
+ else if (response.startsWith('DONE:')) {
121
+ const done = response.replace('DONE:', '').trim();
122
+ console.log(`[Heartbeat] Task completed: ${done}`);
123
+ }
124
+ else {
125
+ console.log(`[Heartbeat] Response: ${response.substring(0, 100)}...`);
126
+ }
127
+ }
128
+ catch (error) {
129
+ console.error('[Heartbeat] Error:', error);
130
+ memoryLogger.logEvent('하트비트 에러', String(error));
131
+ }
132
+ }
133
+ /**
134
+ * Manually trigger a heartbeat
135
+ */
136
+ async triggerNow() {
137
+ console.log('[Heartbeat] Manual trigger');
138
+ await this.tick();
139
+ return 'Heartbeat triggered';
140
+ }
141
+ /**
142
+ * Update configuration
143
+ */
144
+ setConfig(config) {
145
+ this.config = { ...this.config, ...config };
146
+ // Restart with new interval if running
147
+ if (this.running && config.interval) {
148
+ this.stop();
149
+ this.start();
150
+ }
151
+ }
152
+ /**
153
+ * Get current configuration
154
+ */
155
+ getConfig() {
156
+ return { ...this.config };
157
+ }
158
+ }
159
+ exports.HeartbeatScheduler = HeartbeatScheduler;
160
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/scheduler/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Scheduler Module for MAMA Standalone
3
+ *
4
+ * Exports:
5
+ * - CronScheduler - Main scheduler class
6
+ * - JobLock - Concurrent execution prevention
7
+ * - ScheduleStore - SQLite persistence for schedules
8
+ * - Recovery - Server startup recovery utilities
9
+ * - Types - All type definitions
10
+ */
11
+ export { CronScheduler } from './cron-scheduler.js';
12
+ export { JobLock } from './job-lock.js';
13
+ export type { LockInfo } from './job-lock.js';
14
+ export { TokenKeepAlive } from './token-keep-alive.js';
15
+ export type { TokenKeepAliveOptions } from './token-keep-alive.js';
16
+ export { ScheduleStore } from './schedule-store.js';
17
+ export type { Schedule, ScheduleLog, CreateScheduleInput, UpdateScheduleInput, } from './schedule-store.js';
18
+ export { recoverSchedules, syncSchedulerState, createPersistenceHandler } from './recovery.js';
19
+ export type { RecoveryResult, RecoveryOptions } from './recovery.js';
20
+ export type { JobStatus, JobConfig, CronJob, JobResult, SchedulerOptions, JobEventType, JobEvent, JobEventHandler, SchedulerErrorCode, } from './types.js';
21
+ export { SchedulerError } from './types.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EACV,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC/F,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrE,YAAY,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Scheduler Module for MAMA Standalone
4
+ *
5
+ * Exports:
6
+ * - CronScheduler - Main scheduler class
7
+ * - JobLock - Concurrent execution prevention
8
+ * - ScheduleStore - SQLite persistence for schedules
9
+ * - Recovery - Server startup recovery utilities
10
+ * - Types - All type definitions
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SchedulerError = exports.createPersistenceHandler = exports.syncSchedulerState = exports.recoverSchedules = exports.ScheduleStore = exports.TokenKeepAlive = exports.JobLock = exports.CronScheduler = void 0;
14
+ var cron_scheduler_js_1 = require("./cron-scheduler.js");
15
+ Object.defineProperty(exports, "CronScheduler", { enumerable: true, get: function () { return cron_scheduler_js_1.CronScheduler; } });
16
+ var job_lock_js_1 = require("./job-lock.js");
17
+ Object.defineProperty(exports, "JobLock", { enumerable: true, get: function () { return job_lock_js_1.JobLock; } });
18
+ // Token Keep-Alive
19
+ var token_keep_alive_js_1 = require("./token-keep-alive.js");
20
+ Object.defineProperty(exports, "TokenKeepAlive", { enumerable: true, get: function () { return token_keep_alive_js_1.TokenKeepAlive; } });
21
+ // Persistence
22
+ var schedule_store_js_1 = require("./schedule-store.js");
23
+ Object.defineProperty(exports, "ScheduleStore", { enumerable: true, get: function () { return schedule_store_js_1.ScheduleStore; } });
24
+ // Recovery
25
+ var recovery_js_1 = require("./recovery.js");
26
+ Object.defineProperty(exports, "recoverSchedules", { enumerable: true, get: function () { return recovery_js_1.recoverSchedules; } });
27
+ Object.defineProperty(exports, "syncSchedulerState", { enumerable: true, get: function () { return recovery_js_1.syncSchedulerState; } });
28
+ Object.defineProperty(exports, "createPersistenceHandler", { enumerable: true, get: function () { return recovery_js_1.createPersistenceHandler; } });
29
+ var types_js_1 = require("./types.js");
30
+ Object.defineProperty(exports, "SchedulerError", { enumerable: true, get: function () { return types_js_1.SchedulerError; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,6CAAwC;AAA/B,sGAAA,OAAO,OAAA;AAGhB,mBAAmB;AACnB,6DAAuD;AAA9C,qHAAA,cAAc,OAAA;AAGvB,cAAc;AACd,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AAQtB,WAAW;AACX,6CAA+F;AAAtF,+GAAA,gBAAgB,OAAA;AAAE,iHAAA,kBAAkB,OAAA;AAAE,uHAAA,wBAAwB,OAAA;AAgBvE,uCAA4C;AAAnC,0GAAA,cAAc,OAAA"}