@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,145 @@
1
+ "use strict";
2
+ /**
3
+ * API module exports
4
+ *
5
+ * Provides HTTP API for cron job management and heartbeat functionality.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ApiError = exports.validateRequired = exports.asyncHandler = exports.DEFAULT_HEARTBEAT_PROMPT = exports.InMemoryHeartbeatTracker = exports.ScheduleStoreAdapter = exports.InMemoryLogStore = void 0;
26
+ exports.createApiServer = createApiServer;
27
+ exports.createApiRouters = createApiRouters;
28
+ const express_1 = __importDefault(require("express"));
29
+ const cron_handler_js_1 = require("./cron-handler.js");
30
+ const heartbeat_handler_js_1 = require("./heartbeat-handler.js");
31
+ const error_handler_js_1 = require("./error-handler.js");
32
+ // Re-export types
33
+ __exportStar(require("./types.js"), exports);
34
+ var cron_handler_js_2 = require("./cron-handler.js");
35
+ Object.defineProperty(exports, "InMemoryLogStore", { enumerable: true, get: function () { return cron_handler_js_2.InMemoryLogStore; } });
36
+ Object.defineProperty(exports, "ScheduleStoreAdapter", { enumerable: true, get: function () { return cron_handler_js_2.ScheduleStoreAdapter; } });
37
+ var heartbeat_handler_js_2 = require("./heartbeat-handler.js");
38
+ Object.defineProperty(exports, "InMemoryHeartbeatTracker", { enumerable: true, get: function () { return heartbeat_handler_js_2.InMemoryHeartbeatTracker; } });
39
+ Object.defineProperty(exports, "DEFAULT_HEARTBEAT_PROMPT", { enumerable: true, get: function () { return heartbeat_handler_js_2.DEFAULT_HEARTBEAT_PROMPT; } });
40
+ var error_handler_js_2 = require("./error-handler.js");
41
+ Object.defineProperty(exports, "asyncHandler", { enumerable: true, get: function () { return error_handler_js_2.asyncHandler; } });
42
+ Object.defineProperty(exports, "validateRequired", { enumerable: true, get: function () { return error_handler_js_2.validateRequired; } });
43
+ Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return error_handler_js_2.ApiError; } });
44
+ /**
45
+ * Create and configure the API server
46
+ */
47
+ function createApiServer(options) {
48
+ const { scheduler, port = 3848, logStore = new cron_handler_js_1.InMemoryLogStore(), heartbeatTracker = new heartbeat_handler_js_1.InMemoryHeartbeatTracker(), onHeartbeat, } = options;
49
+ const app = (0, express_1.default)();
50
+ // Middleware
51
+ app.use(express_1.default.json());
52
+ // Set Content-Type header for API responses only
53
+ app.use('/api', (_req, res, next) => {
54
+ res.setHeader('Content-Type', 'application/json');
55
+ next();
56
+ });
57
+ // Mount API routers
58
+ const cronRouter = (0, cron_handler_js_1.createCronRouter)(scheduler, logStore);
59
+ const heartbeatRouter = (0, heartbeat_handler_js_1.createHeartbeatRouter)({
60
+ scheduler,
61
+ logStore,
62
+ tracker: heartbeatTracker,
63
+ onHeartbeat,
64
+ });
65
+ app.use('/api/cron', cronRouter);
66
+ app.use('/api/heartbeat', heartbeatRouter);
67
+ // Health check endpoint
68
+ app.get('/health', (_req, res) => {
69
+ res.json({ status: 'ok', timestamp: Date.now() });
70
+ });
71
+ // Note: Error handlers are mounted in start() to allow adding custom routes first
72
+ let server = null;
73
+ let actualPort = port;
74
+ let errorHandlersMounted = false;
75
+ return {
76
+ app,
77
+ get server() {
78
+ return server;
79
+ },
80
+ get port() {
81
+ return actualPort;
82
+ },
83
+ async start() {
84
+ // Mount error handlers right before starting
85
+ if (!errorHandlersMounted) {
86
+ app.use(error_handler_js_1.notFoundHandler);
87
+ app.use(error_handler_js_1.errorHandler);
88
+ errorHandlersMounted = true;
89
+ }
90
+ return new Promise((resolve, reject) => {
91
+ try {
92
+ // SECURITY: Bind to localhost only to prevent remote access
93
+ const host = process.env.MAMA_API_HOST || '127.0.0.1';
94
+ server = app.listen(port, host, () => {
95
+ actualPort = server.address().port;
96
+ console.log(`API server listening on http://${host}:${actualPort}`);
97
+ if (host === '0.0.0.0') {
98
+ console.warn('⚠️ WARNING: API server exposed to all interfaces!');
99
+ console.warn(' Set MAMA_API_HOST=127.0.0.1 for local-only access');
100
+ }
101
+ resolve();
102
+ });
103
+ server.on('error', reject);
104
+ }
105
+ catch (error) {
106
+ reject(error);
107
+ }
108
+ });
109
+ },
110
+ async stop() {
111
+ return new Promise((resolve, reject) => {
112
+ if (!server) {
113
+ resolve();
114
+ return;
115
+ }
116
+ server.close((err) => {
117
+ if (err) {
118
+ reject(err);
119
+ }
120
+ else {
121
+ server = null;
122
+ resolve();
123
+ }
124
+ });
125
+ });
126
+ },
127
+ };
128
+ }
129
+ /**
130
+ * Create API routers without starting a server
131
+ * Useful for integrating into an existing Express app
132
+ */
133
+ function createApiRouters(options) {
134
+ const { scheduler, logStore = new cron_handler_js_1.InMemoryLogStore(), heartbeatTracker = new heartbeat_handler_js_1.InMemoryHeartbeatTracker(), onHeartbeat, } = options;
135
+ return {
136
+ cronRouter: (0, cron_handler_js_1.createCronRouter)(scheduler, logStore),
137
+ heartbeatRouter: (0, heartbeat_handler_js_1.createHeartbeatRouter)({
138
+ scheduler,
139
+ logStore,
140
+ tracker: heartbeatTracker,
141
+ onHeartbeat,
142
+ }),
143
+ };
144
+ }
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Type definitions for Heartbeat API
3
+ */
4
+ import type { CronJob, JobResult } from '../scheduler/types.js';
5
+ /**
6
+ * API representation of a cron job
7
+ */
8
+ export interface ApiCronJob {
9
+ id: string;
10
+ name: string;
11
+ cron_expr: string;
12
+ prompt: string;
13
+ enabled: boolean;
14
+ last_run: number | null;
15
+ next_run: number | null;
16
+ }
17
+ /**
18
+ * Request body for creating a cron job
19
+ */
20
+ export interface CreateCronJobRequest {
21
+ name: string;
22
+ cron_expr: string;
23
+ prompt: string;
24
+ enabled?: boolean;
25
+ }
26
+ /**
27
+ * Request body for updating a cron job
28
+ */
29
+ export interface UpdateCronJobRequest {
30
+ name?: string;
31
+ cron_expr?: string;
32
+ prompt?: string;
33
+ enabled?: boolean;
34
+ }
35
+ /**
36
+ * Response for cron job list
37
+ */
38
+ export interface ListCronJobsResponse {
39
+ jobs: ApiCronJob[];
40
+ }
41
+ /**
42
+ * Response for single cron job
43
+ */
44
+ export interface GetCronJobResponse {
45
+ job: ApiCronJob;
46
+ }
47
+ /**
48
+ * Response for cron job creation
49
+ */
50
+ export interface CreateCronJobResponse {
51
+ id: string;
52
+ created: boolean;
53
+ }
54
+ /**
55
+ * Response for cron job update
56
+ */
57
+ export interface UpdateCronJobResponse {
58
+ updated: boolean;
59
+ }
60
+ /**
61
+ * Response for cron job deletion
62
+ */
63
+ export interface DeleteCronJobResponse {
64
+ deleted: boolean;
65
+ }
66
+ /**
67
+ * Response for immediate job execution
68
+ */
69
+ export interface RunCronJobResponse {
70
+ execution_id: string;
71
+ started: boolean;
72
+ }
73
+ /**
74
+ * Execution log entry
75
+ */
76
+ export interface ExecutionLog {
77
+ id: string;
78
+ started_at: number;
79
+ finished_at: number | null;
80
+ status: 'running' | 'success' | 'failed';
81
+ output: string | null;
82
+ error: string | null;
83
+ }
84
+ /**
85
+ * Response for execution logs
86
+ */
87
+ export interface GetLogsResponse {
88
+ logs: ExecutionLog[];
89
+ }
90
+ /**
91
+ * Query parameters for logs endpoint
92
+ */
93
+ export interface GetLogsQuery {
94
+ limit?: number;
95
+ offset?: number;
96
+ }
97
+ /**
98
+ * Last execution info for heartbeat status
99
+ */
100
+ export interface LastExecution {
101
+ id: string;
102
+ started_at: number;
103
+ status: 'success' | 'failed';
104
+ }
105
+ /**
106
+ * Response for heartbeat status
107
+ */
108
+ export interface HeartbeatStatusResponse {
109
+ status: 'active' | 'inactive';
110
+ active_jobs: number;
111
+ last_execution: LastExecution | null;
112
+ }
113
+ /**
114
+ * Request body for manual heartbeat trigger
115
+ */
116
+ export interface TriggerHeartbeatRequest {
117
+ prompt?: string;
118
+ }
119
+ /**
120
+ * Response for heartbeat trigger
121
+ */
122
+ export interface TriggerHeartbeatResponse {
123
+ execution_id: string;
124
+ started: boolean;
125
+ }
126
+ /**
127
+ * API error codes
128
+ */
129
+ export type ApiErrorCode = 'BAD_REQUEST' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'JOB_RUNNING' | 'INTERNAL_ERROR';
130
+ /**
131
+ * API error response
132
+ */
133
+ export interface ApiErrorResponse {
134
+ error: string;
135
+ code?: ApiErrorCode;
136
+ details?: Record<string, unknown>;
137
+ }
138
+ /**
139
+ * Custom API error class
140
+ */
141
+ export declare class ApiError extends Error {
142
+ readonly statusCode: number;
143
+ readonly code: ApiErrorCode;
144
+ readonly details?: Record<string, unknown> | undefined;
145
+ constructor(message: string, statusCode: number, code?: ApiErrorCode, details?: Record<string, unknown> | undefined);
146
+ toResponse(): ApiErrorResponse;
147
+ }
148
+ /**
149
+ * Convert internal CronJob to API format
150
+ */
151
+ export declare function toApiCronJob(job: CronJob): ApiCronJob;
152
+ /**
153
+ * Convert JobResult to ExecutionLog format
154
+ */
155
+ export declare function toExecutionLog(id: string, result: JobResult): ExecutionLog;
156
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for Heartbeat API
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ApiError = void 0;
7
+ exports.toApiCronJob = toApiCronJob;
8
+ exports.toExecutionLog = toExecutionLog;
9
+ /**
10
+ * Custom API error class
11
+ */
12
+ class ApiError extends Error {
13
+ statusCode;
14
+ code;
15
+ details;
16
+ constructor(message, statusCode, code = 'INTERNAL_ERROR', details) {
17
+ super(message);
18
+ this.statusCode = statusCode;
19
+ this.code = code;
20
+ this.details = details;
21
+ this.name = 'ApiError';
22
+ }
23
+ toResponse() {
24
+ return {
25
+ error: this.message,
26
+ code: this.code,
27
+ details: this.details,
28
+ };
29
+ }
30
+ }
31
+ exports.ApiError = ApiError;
32
+ // ============================================================================
33
+ // Conversion Utilities
34
+ // ============================================================================
35
+ /**
36
+ * Convert internal CronJob to API format
37
+ */
38
+ function toApiCronJob(job) {
39
+ return {
40
+ id: job.id,
41
+ name: job.name,
42
+ cron_expr: job.cronExpr,
43
+ prompt: job.prompt,
44
+ enabled: job.enabled,
45
+ last_run: job.lastRun ? job.lastRun.getTime() : null,
46
+ next_run: job.nextRun ? job.nextRun.getTime() : null,
47
+ };
48
+ }
49
+ /**
50
+ * Convert JobResult to ExecutionLog format
51
+ */
52
+ function toExecutionLog(id, result) {
53
+ return {
54
+ id,
55
+ started_at: result.startedAt.getTime(),
56
+ finished_at: result.completedAt.getTime(),
57
+ status: result.success ? 'success' : 'failed',
58
+ output: result.response || null,
59
+ error: result.error || null,
60
+ };
61
+ }
62
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA0MH,oCAUC;AAKD,wCASC;AAtDD;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAGf;IACA;IACA;IAJlB,YACE,OAAe,EACC,UAAkB,EAClB,OAAqB,gBAAgB,EACrC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAiC;QACrC,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;IAED,UAAU;QACR,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAlBD,4BAkBC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAY;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QACpD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAU,EAAE,MAAiB;IAC1D,OAAO;QACL,EAAE;QACF,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QACtC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC7C,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Auth module - OAuth Token Management for MAMA Standalone
3
+ */
4
+ export { OAuthManager } from './oauth-manager.js';
5
+ export type { ClaudeCredentialsFile, ClaudeAiOAuth, OAuthToken, TokenRefreshResponse, TokenStatus, OAuthManagerOptions, CachedToken, OAuthErrorCode, } from './types.js';
6
+ export { OAuthError } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Auth module - OAuth Token Management for MAMA Standalone
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OAuthError = exports.OAuthManager = void 0;
7
+ var oauth_manager_js_1 = require("./oauth-manager.js");
8
+ Object.defineProperty(exports, "OAuthManager", { enumerable: true, get: function () { return oauth_manager_js_1.OAuthManager; } });
9
+ var types_js_1 = require("./types.js");
10
+ Object.defineProperty(exports, "OAuthError", { enumerable: true, get: function () { return types_js_1.OAuthError; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AAarB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * OAuth Token Manager for MAMA Standalone
3
+ *
4
+ * Manages Claude Pro OAuth tokens from ~/.claude/.credentials.json
5
+ * - Reads tokens from Claude Code credentials file
6
+ * - Caches tokens with TTL
7
+ * - Auto-refreshes tokens before expiry
8
+ * - Writes refreshed tokens back to file
9
+ */
10
+ import type { TokenStatus, OAuthManagerOptions } from './types.js';
11
+ export declare class OAuthManager {
12
+ private readonly credentialsPath;
13
+ private readonly cacheTtlMs;
14
+ private readonly refreshBufferMs;
15
+ private readonly fetchFn;
16
+ private cache;
17
+ constructor(options?: OAuthManagerOptions);
18
+ /**
19
+ * Get a valid access token, refreshing if necessary
20
+ *
21
+ * @returns Access token string
22
+ * @throws OAuthError if token cannot be obtained
23
+ */
24
+ getToken(): Promise<string>;
25
+ /**
26
+ * Get token status information
27
+ *
28
+ * @returns Token status including validity, expiry, and subscription info
29
+ */
30
+ getStatus(): Promise<TokenStatus>;
31
+ /**
32
+ * Force refresh the token
33
+ *
34
+ * @returns New access token
35
+ * @throws OAuthError if refresh fails
36
+ */
37
+ forceRefresh(): Promise<string>;
38
+ /**
39
+ * Clear the token cache
40
+ */
41
+ clearCache(): void;
42
+ /**
43
+ * Check if token needs refresh (expires within buffer time)
44
+ */
45
+ private needsRefresh;
46
+ /**
47
+ * Read credentials from file
48
+ */
49
+ private readCredentials;
50
+ /**
51
+ * Refresh the OAuth token
52
+ */
53
+ private refreshToken;
54
+ /**
55
+ * Write refreshed credentials to file
56
+ */
57
+ private writeCredentials;
58
+ }
59
+ //# sourceMappingURL=oauth-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-manager.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAKV,WAAW,EACX,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,KAAK,CAA4B;gBAE7B,OAAO,GAAE,mBAAwB;IAO7C;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IA4CjC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IA4BvC;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAerC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;YACW,eAAe;IAyC7B;;OAEG;YACW,YAAY;IA4C1B;;OAEG;YACW,gBAAgB;CAiC/B"}