@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 @@
1
+ {"version":3,"file":"ritual-prompt.js","sourceRoot":"","sources":["../../src/onboarding/ritual-prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwRnC,CAAC"}
@@ -0,0 +1,13 @@
1
+ interface RitualTool {
2
+ name: string;
3
+ description: string;
4
+ input_schema: {
5
+ type: 'object';
6
+ properties: Record<string, any>;
7
+ required: string[];
8
+ };
9
+ handler: (input: any) => Promise<any>;
10
+ }
11
+ export declare function createRitualTools(onRitualComplete: () => void): RitualTool[];
12
+ export {};
13
+ //# sourceMappingURL=ritual-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ritual-tools.d.ts","sourceRoot":"","sources":["../../src/onboarding/ritual-tools.ts"],"names":[],"mappings":"AAQA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,IAAI,GAAG,UAAU,EAAE,CA8F5E"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRitualTools = createRitualTools;
4
+ const promises_1 = require("node:fs/promises");
5
+ const config_manager_js_1 = require("../cli/config/config-manager.js");
6
+ function createRitualTools(onRitualComplete) {
7
+ return [
8
+ {
9
+ name: 'write_file',
10
+ description: 'Write IDENTITY.md, USER.md, or SOUL.md to establish your identity',
11
+ input_schema: {
12
+ type: 'object',
13
+ properties: {
14
+ filepath: {
15
+ type: 'string',
16
+ description: 'File path relative to ~/.mama/ (e.g., "IDENTITY.md", "USER.md", "SOUL.md")',
17
+ },
18
+ content: {
19
+ type: 'string',
20
+ description: 'File content in markdown format',
21
+ },
22
+ },
23
+ required: ['filepath', 'content'],
24
+ },
25
+ handler: async (input) => {
26
+ if (!input.filepath || !input.content) {
27
+ return { success: false, error: 'filepath and content required' };
28
+ }
29
+ const allowedFiles = ['IDENTITY.md', 'USER.md', 'SOUL.md'];
30
+ if (!allowedFiles.includes(input.filepath)) {
31
+ return {
32
+ success: false,
33
+ error: `Only ${allowedFiles.join(', ')} are allowed during ritual`,
34
+ };
35
+ }
36
+ const fullPath = (0, config_manager_js_1.expandPath)(`~/.mama/${input.filepath}`);
37
+ await (0, promises_1.writeFile)(fullPath, input.content, 'utf-8');
38
+ return {
39
+ success: true,
40
+ message: `Created ${input.filepath}`,
41
+ };
42
+ },
43
+ },
44
+ {
45
+ name: 'delete_file',
46
+ description: 'Delete BOOTSTRAP.md when ritual is complete',
47
+ input_schema: {
48
+ type: 'object',
49
+ properties: {
50
+ filepath: {
51
+ type: 'string',
52
+ description: 'File path (must be "BOOTSTRAP.md")',
53
+ },
54
+ },
55
+ required: ['filepath'],
56
+ },
57
+ handler: async (input) => {
58
+ if (!input.filepath) {
59
+ return { success: false, error: 'filepath required' };
60
+ }
61
+ if (input.filepath !== 'BOOTSTRAP.md') {
62
+ return {
63
+ success: false,
64
+ error: 'Can only delete BOOTSTRAP.md',
65
+ };
66
+ }
67
+ const fullPath = (0, config_manager_js_1.expandPath)('~/.mama/BOOTSTRAP.md');
68
+ await (0, promises_1.unlink)(fullPath);
69
+ return {
70
+ success: true,
71
+ message: 'BOOTSTRAP.md deleted - ritual complete',
72
+ };
73
+ },
74
+ },
75
+ {
76
+ name: 'mark_ritual_complete',
77
+ description: 'Signal that the bootstrap ritual is finished. Call ONLY after all files are created.',
78
+ input_schema: {
79
+ type: 'object',
80
+ properties: {},
81
+ required: [],
82
+ },
83
+ handler: async () => {
84
+ onRitualComplete();
85
+ return {
86
+ success: true,
87
+ message: 'Ritual marked as complete - switching to normal setup mode',
88
+ };
89
+ },
90
+ },
91
+ ];
92
+ }
93
+ //# sourceMappingURL=ritual-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ritual-tools.js","sourceRoot":"","sources":["../../src/onboarding/ritual-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * CLI Runner
3
+ *
4
+ * Executes prompts via Claude Code CLI subprocess.
5
+ * Based on OpenClaw's cli-runner.js implementation.
6
+ *
7
+ * Features:
8
+ * - Calls `claude -p --output-format json`
9
+ * - Supports session continuity via --session-id
10
+ * - Parses JSON output for response and usage
11
+ * - Handles timeouts and errors
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const runner = new CliRunner();
16
+ * const result = await runner.run('Hello!', { model: 'sonnet' });
17
+ * console.log(result.text);
18
+ * ```
19
+ */
20
+ import type { Runner, RunnerOptions, RunnerResult, CliBackendConfig } from './types.js';
21
+ /**
22
+ * CLI Runner implementation
23
+ */
24
+ export declare class CliRunner implements Runner {
25
+ readonly type: "cli";
26
+ private config;
27
+ constructor(config?: Partial<CliBackendConfig>);
28
+ /**
29
+ * Run a prompt via CLI
30
+ */
31
+ run(prompt: string, options?: RunnerOptions): Promise<RunnerResult>;
32
+ /**
33
+ * Build CLI arguments
34
+ */
35
+ private buildArgs;
36
+ /**
37
+ * Resolve model alias to actual model name
38
+ */
39
+ private resolveModelAlias;
40
+ /**
41
+ * Execute CLI command with timeout
42
+ *
43
+ * Uses execSync for reliable execution with Claude CLI
44
+ */
45
+ private executeCommand;
46
+ /**
47
+ * Parse CLI JSON output
48
+ */
49
+ private parseOutput;
50
+ /**
51
+ * Check if CLI is available
52
+ */
53
+ static isAvailable(command?: string): Promise<boolean>;
54
+ /**
55
+ * Get CLI version
56
+ */
57
+ static getVersion(command?: string): Promise<string | null>;
58
+ }
59
+ //# sourceMappingURL=cli-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-runner.d.ts","sourceRoot":"","sources":["../../src/runners/cli-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGxF;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAE/B,OAAO,CAAC,MAAM,CAC6C;gBAE/C,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAa9C;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMzE;;OAEG;IACH,OAAO,CAAC,SAAS;IAyBjB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;YACW,cAAc;IA4D5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;WACU,WAAW,CAAC,OAAO,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAa9D;;OAEG;WACU,UAAU,CAAC,OAAO,SAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAYpE"}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Runner
4
+ *
5
+ * Executes prompts via Claude Code CLI subprocess.
6
+ * Based on OpenClaw's cli-runner.js implementation.
7
+ *
8
+ * Features:
9
+ * - Calls `claude -p --output-format json`
10
+ * - Supports session continuity via --session-id
11
+ * - Parses JSON output for response and usage
12
+ * - Handles timeouts and errors
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const runner = new CliRunner();
17
+ * const result = await runner.run('Hello!', { model: 'sonnet' });
18
+ * console.log(result.text);
19
+ * ```
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.CliRunner = void 0;
23
+ const child_process_1 = require("child_process");
24
+ const types_js_1 = require("./types.js");
25
+ /**
26
+ * CLI Runner implementation
27
+ */
28
+ class CliRunner {
29
+ type = 'cli';
30
+ config;
31
+ constructor(config) {
32
+ this.config = {
33
+ command: config?.command ?? types_js_1.DEFAULT_CLAUDE_BACKEND.command,
34
+ args: config?.args ?? types_js_1.DEFAULT_CLAUDE_BACKEND.args,
35
+ timeoutMs: config?.timeoutMs ?? types_js_1.DEFAULT_CLAUDE_BACKEND.timeoutMs,
36
+ modelArg: config?.modelArg ?? types_js_1.DEFAULT_CLAUDE_BACKEND.modelArg,
37
+ sessionArg: config?.sessionArg ?? types_js_1.DEFAULT_CLAUDE_BACKEND.sessionArg,
38
+ systemPromptArg: config?.systemPromptArg ?? types_js_1.DEFAULT_CLAUDE_BACKEND.systemPromptArg,
39
+ serialize: config?.serialize ?? types_js_1.DEFAULT_CLAUDE_BACKEND.serialize,
40
+ modelAliases: config?.modelAliases ?? types_js_1.DEFAULT_CLAUDE_BACKEND.modelAliases,
41
+ };
42
+ }
43
+ /**
44
+ * Run a prompt via CLI
45
+ */
46
+ async run(prompt, options) {
47
+ const args = this.buildArgs(prompt, options);
48
+ const result = await this.executeCommand(args, options);
49
+ return this.parseOutput(result.stdout);
50
+ }
51
+ /**
52
+ * Build CLI arguments
53
+ */
54
+ buildArgs(prompt, options) {
55
+ const args = [...this.config.args];
56
+ // Add model argument
57
+ if (this.config.modelArg && options?.model) {
58
+ const model = this.resolveModelAlias(options.model);
59
+ args.push(this.config.modelArg, model);
60
+ }
61
+ // Add session ID argument
62
+ if (this.config.sessionArg && options?.sessionId) {
63
+ args.push(this.config.sessionArg, options.sessionId);
64
+ }
65
+ // Add system prompt argument
66
+ if (this.config.systemPromptArg && options?.systemPrompt) {
67
+ args.push(this.config.systemPromptArg, options.systemPrompt);
68
+ }
69
+ // Add prompt as the final argument
70
+ args.push(prompt);
71
+ return args;
72
+ }
73
+ /**
74
+ * Resolve model alias to actual model name
75
+ */
76
+ resolveModelAlias(model) {
77
+ return this.config.modelAliases?.[model] ?? model;
78
+ }
79
+ /**
80
+ * Execute CLI command with timeout
81
+ *
82
+ * Uses execSync for reliable execution with Claude CLI
83
+ */
84
+ async executeCommand(args, options) {
85
+ const timeout = options?.timeoutMs ?? this.config.timeoutMs;
86
+ const cwd = options?.workspaceDir ?? process.cwd();
87
+ // Build command string with proper escaping
88
+ const escapedArgs = args.map((arg) => {
89
+ // Escape single quotes and wrap in single quotes
90
+ if (arg.includes("'") || arg.includes('"') || arg.includes(' ') || arg.includes('\n')) {
91
+ return `'${arg.replace(/'/g, "'\\''")}'`;
92
+ }
93
+ return arg;
94
+ });
95
+ const command = `${this.config.command} ${escapedArgs.join(' ')}`;
96
+ // Environment without ANTHROPIC_API_KEY so CLI uses its own auth
97
+ const env = { ...process.env };
98
+ delete env.ANTHROPIC_API_KEY;
99
+ // Use execSync wrapped in Promise for async interface
100
+ // This is needed because promisified exec has issues with Claude CLI
101
+ return new Promise((resolve, reject) => {
102
+ // Run in next tick to not block the event loop setup
103
+ setImmediate(() => {
104
+ try {
105
+ const stdout = (0, child_process_1.execSync)(command, {
106
+ cwd,
107
+ env,
108
+ timeout,
109
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer
110
+ encoding: 'utf-8',
111
+ stdio: ['pipe', 'pipe', 'pipe'],
112
+ });
113
+ resolve({ stdout, stderr: '', code: 0 });
114
+ }
115
+ catch (error) {
116
+ // execSync throws on non-zero exit or timeout
117
+ if (error.killed) {
118
+ reject(new Error(`CLI timeout after ${timeout}ms`));
119
+ return;
120
+ }
121
+ if (error.status !== undefined && error.status !== 0) {
122
+ const errorMessage = error.stderr?.toString().trim() ||
123
+ error.stdout?.toString().trim() ||
124
+ `CLI exited with code ${error.status}`;
125
+ reject(new Error(errorMessage));
126
+ return;
127
+ }
128
+ reject(new Error(`Failed to execute CLI: ${error.message}`));
129
+ }
130
+ });
131
+ });
132
+ }
133
+ /**
134
+ * Parse CLI JSON output
135
+ */
136
+ parseOutput(stdout) {
137
+ try {
138
+ const json = JSON.parse(stdout.trim());
139
+ return {
140
+ text: json.result ?? json.response ?? json.text ?? stdout.trim(),
141
+ sessionId: json.session_id ?? json.sessionId ?? json.conversation_id,
142
+ usage: json.usage
143
+ ? {
144
+ inputTokens: json.usage.input_tokens ?? 0,
145
+ outputTokens: json.usage.output_tokens ?? 0,
146
+ }
147
+ : undefined,
148
+ };
149
+ }
150
+ catch {
151
+ // JSON parsing failed, return raw output
152
+ console.warn('[CliRunner] Failed to parse JSON output, returning raw text');
153
+ return { text: stdout.trim() };
154
+ }
155
+ }
156
+ /**
157
+ * Check if CLI is available
158
+ */
159
+ static async isAvailable(command = 'claude') {
160
+ try {
161
+ (0, child_process_1.execSync)(`${command} --version`, {
162
+ timeout: 5000,
163
+ encoding: 'utf-8',
164
+ stdio: ['pipe', 'pipe', 'pipe'],
165
+ });
166
+ return true;
167
+ }
168
+ catch {
169
+ return false;
170
+ }
171
+ }
172
+ /**
173
+ * Get CLI version
174
+ */
175
+ static async getVersion(command = 'claude') {
176
+ try {
177
+ const stdout = (0, child_process_1.execSync)(`${command} --version`, {
178
+ timeout: 5000,
179
+ encoding: 'utf-8',
180
+ stdio: ['pipe', 'pipe', 'pipe'],
181
+ });
182
+ return stdout.trim();
183
+ }
184
+ catch {
185
+ return null;
186
+ }
187
+ }
188
+ }
189
+ exports.CliRunner = CliRunner;
190
+ //# sourceMappingURL=cli-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../../src/runners/cli-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Runner Module
3
+ *
4
+ * Provides dual runner architecture:
5
+ * - Embedded Runner: Direct Anthropic API calls
6
+ * - CLI Runner: Claude Code CLI subprocess
7
+ */
8
+ export { CliRunner } from './cli-runner.js';
9
+ export type { Runner, RunnerType, RunnerOptions, RunnerResult, CliBackendConfig } from './types.js';
10
+ export { DEFAULT_CLAUDE_BACKEND } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runners/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Runner Module
4
+ *
5
+ * Provides dual runner architecture:
6
+ * - Embedded Runner: Direct Anthropic API calls
7
+ * - CLI Runner: Claude Code CLI subprocess
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DEFAULT_CLAUDE_BACKEND = exports.CliRunner = void 0;
11
+ var cli_runner_js_1 = require("./cli-runner.js");
12
+ Object.defineProperty(exports, "CliRunner", { enumerable: true, get: function () { return cli_runner_js_1.CliRunner; } });
13
+ var types_js_1 = require("./types.js");
14
+ Object.defineProperty(exports, "DEFAULT_CLAUDE_BACKEND", { enumerable: true, get: function () { return types_js_1.DEFAULT_CLAUDE_BACKEND; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runners/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAIlB,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Runner Types
3
+ *
4
+ * Defines common interfaces for Embedded and CLI runners.
5
+ * Enables dual runner architecture for MAMA Standalone.
6
+ */
7
+ /**
8
+ * Runner types
9
+ */
10
+ export type RunnerType = 'embedded' | 'cli';
11
+ /**
12
+ * Options for running a prompt
13
+ */
14
+ export interface RunnerOptions {
15
+ /** Model to use (e.g., "opus", "sonnet") */
16
+ model?: string;
17
+ /** System prompt to prepend */
18
+ systemPrompt?: string;
19
+ /** Session ID for conversation continuity */
20
+ sessionId?: string;
21
+ /** Working directory for CLI execution */
22
+ workspaceDir?: string;
23
+ /** Timeout in milliseconds */
24
+ timeoutMs?: number;
25
+ }
26
+ /**
27
+ * Result from a runner execution
28
+ */
29
+ export interface RunnerResult {
30
+ /** Response text */
31
+ text: string;
32
+ /** Session ID returned from CLI (for continuity) */
33
+ sessionId?: string;
34
+ /** Token usage statistics */
35
+ usage?: {
36
+ inputTokens: number;
37
+ outputTokens: number;
38
+ };
39
+ }
40
+ /**
41
+ * Common runner interface
42
+ */
43
+ export interface Runner {
44
+ /** Runner type identifier */
45
+ readonly type: RunnerType;
46
+ /**
47
+ * Run a prompt and get response
48
+ *
49
+ * @param prompt - User prompt
50
+ * @param options - Runner options
51
+ * @returns Promise resolving to runner result
52
+ */
53
+ run(prompt: string, options?: RunnerOptions): Promise<RunnerResult>;
54
+ }
55
+ /**
56
+ * CLI Backend configuration
57
+ * Based on OpenClaw's cli-backends.js
58
+ */
59
+ export interface CliBackendConfig {
60
+ /** CLI command to execute (e.g., "claude") */
61
+ command: string;
62
+ /** Base arguments for the command */
63
+ args: string[];
64
+ /** Argument for specifying model */
65
+ modelArg?: string;
66
+ /** Argument for specifying session ID */
67
+ sessionArg?: string;
68
+ /** Argument for appending system prompt */
69
+ systemPromptArg?: string;
70
+ /** Timeout in milliseconds (default: 120000) */
71
+ timeoutMs?: number;
72
+ /** Whether to serialize (queue) CLI calls */
73
+ serialize?: boolean;
74
+ /** Model aliases (e.g., "opus" → "claude-opus-4") */
75
+ modelAliases?: Record<string, string>;
76
+ }
77
+ /**
78
+ * Default Claude Code CLI backend configuration
79
+ */
80
+ export declare const DEFAULT_CLAUDE_BACKEND: CliBackendConfig;
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runners/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,KAAK,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,gBAiBpC,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Runner Types
4
+ *
5
+ * Defines common interfaces for Embedded and CLI runners.
6
+ * Enables dual runner architecture for MAMA Standalone.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DEFAULT_CLAUDE_BACKEND = void 0;
10
+ /**
11
+ * Default Claude Code CLI backend configuration
12
+ */
13
+ exports.DEFAULT_CLAUDE_BACKEND = {
14
+ command: 'claude',
15
+ args: ['-p', '--output-format', 'json', '--dangerously-skip-permissions'],
16
+ modelArg: '--model',
17
+ sessionArg: '--session-id',
18
+ systemPromptArg: '--append-system-prompt',
19
+ timeoutMs: 120000,
20
+ serialize: true,
21
+ modelAliases: {
22
+ opus: 'opus',
23
+ 'opus-4.5': 'opus',
24
+ 'opus-4': 'opus',
25
+ sonnet: 'sonnet',
26
+ 'sonnet-4': 'sonnet',
27
+ haiku: 'haiku',
28
+ 'haiku-3.5': 'haiku',
29
+ },
30
+ };
31
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runners/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqFH;;GAEG;AACU,QAAA,sBAAsB,GAAqB;IACtD,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,gCAAgC,CAAC;IACzE,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,cAAc;IAC1B,eAAe,EAAE,wBAAwB;IACzC,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,OAAO;KACrB;CACF,CAAC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Cron Scheduler for MAMA Standalone
3
+ *
4
+ * Schedules and executes jobs based on cron expressions.
5
+ * Uses node-cron for scheduling and cron-parser for next run calculation.
6
+ */
7
+ import type { CronJob, JobConfig, JobResult, JobEventHandler, SchedulerOptions } from './types.js';
8
+ export declare class CronScheduler {
9
+ private readonly jobs;
10
+ private readonly lock;
11
+ private readonly options;
12
+ private readonly eventHandlers;
13
+ private executeCallback?;
14
+ constructor(options?: SchedulerOptions);
15
+ /**
16
+ * Set the execution callback (typically AgentLoop.run)
17
+ *
18
+ * @param callback - Function to execute for each job
19
+ */
20
+ setExecuteCallback(callback: (prompt: string) => Promise<string>): void;
21
+ /**
22
+ * Add a job to the scheduler
23
+ *
24
+ * @param config - Job configuration
25
+ * @returns Job ID
26
+ * @throws SchedulerError if cron expression is invalid or job already exists
27
+ */
28
+ addJob(config: JobConfig): string;
29
+ /**
30
+ * Remove a job from the scheduler
31
+ *
32
+ * @param jobId - Job identifier
33
+ * @throws SchedulerError if job not found
34
+ */
35
+ removeJob(jobId: string): void;
36
+ /**
37
+ * Enable a job
38
+ *
39
+ * @param jobId - Job identifier
40
+ * @throws SchedulerError if job not found
41
+ */
42
+ enableJob(jobId: string): void;
43
+ /**
44
+ * Disable a job
45
+ *
46
+ * @param jobId - Job identifier
47
+ * @throws SchedulerError if job not found
48
+ */
49
+ disableJob(jobId: string): void;
50
+ /**
51
+ * Execute a job immediately
52
+ *
53
+ * @param jobId - Job identifier
54
+ * @throws SchedulerError if job not found
55
+ */
56
+ runNow(jobId: string): Promise<JobResult>;
57
+ /**
58
+ * Get a job by ID
59
+ *
60
+ * @param jobId - Job identifier
61
+ * @returns Job info (without internal task object)
62
+ */
63
+ getJob(jobId: string): CronJob | null;
64
+ /**
65
+ * List all jobs
66
+ *
67
+ * @returns Array of job info (without internal task objects)
68
+ */
69
+ listJobs(): CronJob[];
70
+ /**
71
+ * Check if a job is currently running
72
+ *
73
+ * @param jobId - Job identifier
74
+ */
75
+ isJobRunning(jobId: string): boolean;
76
+ /**
77
+ * Add an event handler
78
+ *
79
+ * @param handler - Event handler function
80
+ */
81
+ onEvent(handler: JobEventHandler): void;
82
+ /**
83
+ * Calculate next run time for a cron expression
84
+ *
85
+ * @param cronExpr - Cron expression
86
+ * @returns Next run date
87
+ */
88
+ calculateNextRun(cronExpr: string): Date;
89
+ /**
90
+ * Stop all jobs and clean up
91
+ */
92
+ shutdown(): void;
93
+ /**
94
+ * Execute a job
95
+ *
96
+ * @param jobId - Job identifier
97
+ */
98
+ private executeJob;
99
+ /**
100
+ * Convert internal job to public job (without task)
101
+ */
102
+ private toPublicJob;
103
+ /**
104
+ * Emit an event to all handlers
105
+ */
106
+ private emitEvent;
107
+ /**
108
+ * Validate a cron expression
109
+ *
110
+ * @param cronExpr - Cron expression to validate
111
+ * @returns true if valid
112
+ */
113
+ static validate(cronExpr: string): boolean;
114
+ }
115
+ //# sourceMappingURL=cron-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-scheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler/cron-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,SAAS,EAET,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,eAAe,CAAC,CAAsC;gBAElD,OAAO,GAAE,gBAAqB;IAK1C;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAIvE;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAqCjC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAkB9B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc9B;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc/B;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAU/C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAQrC;;;;OAIG;IACH,QAAQ,IAAI,OAAO,EAAE;IAIrB;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIvC;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYxC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;;;OAIG;YACW,UAAU;IAqFxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG3C"}