@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,98 @@
1
+ /**
2
+ * Agent Loop Engine for MAMA Standalone
3
+ *
4
+ * Main orchestrator that:
5
+ * - Maintains conversation history
6
+ * - Calls Claude API via ClaudeClient
7
+ * - Parses tool_use blocks from responses
8
+ * - Executes tools via MCPExecutor
9
+ * - Sends tool_result back to Claude
10
+ * - Loops until stop_reason is "end_turn" or max turns reached
11
+ */
12
+ import type { OAuthManager } from '../auth/index.js';
13
+ import type { ContentBlock, ToolDefinition, AgentLoopOptions, AgentLoopResult, ClaudeClientOptions, GatewayToolExecutorOptions } from './types.js';
14
+ export declare class AgentLoop {
15
+ private readonly agent;
16
+ private readonly claudeCLI;
17
+ private readonly mcpExecutor;
18
+ private systemPromptOverride?;
19
+ private readonly maxTurns;
20
+ private readonly model;
21
+ private readonly onTurn?;
22
+ private readonly onToolUse?;
23
+ private readonly laneManager;
24
+ private readonly useLanes;
25
+ private sessionKey;
26
+ private readonly sessionPool;
27
+ constructor(_oauthManager: OAuthManager, options?: AgentLoopOptions, _clientOptions?: ClaudeClientOptions, executorOptions?: GatewayToolExecutorOptions);
28
+ /**
29
+ * Set session key for lane-based concurrency
30
+ * Use format: "{source}:{channelId}:{userId}"
31
+ */
32
+ setSessionKey(key: string): void;
33
+ /**
34
+ * Get current session key
35
+ */
36
+ getSessionKey(): string;
37
+ /**
38
+ * Set system prompt override (for per-message context injection)
39
+ */
40
+ setSystemPrompt(prompt: string | undefined): void;
41
+ /**
42
+ * Set Discord gateway for discord_send tool
43
+ */
44
+ setDiscordGateway(gateway: {
45
+ sendMessage(channelId: string, message: string): Promise<void>;
46
+ sendImage(channelId: string, imagePath: string, caption?: string): Promise<void>;
47
+ }): void;
48
+ /**
49
+ * Run the agent loop with a user prompt
50
+ *
51
+ * Uses lane-based concurrency when useLanes is enabled:
52
+ * - Same session messages are processed in order
53
+ * - Different sessions can run in parallel
54
+ * - Global lane limits total concurrent API calls
55
+ *
56
+ * @param prompt - User prompt to process
57
+ * @param options - Execution options (systemPrompt, disableAutoRecall, etc.)
58
+ * @returns Agent loop result with final response and history
59
+ * @throws AgentError on errors
60
+ */
61
+ run(prompt: string, options?: AgentLoopOptions): Promise<AgentLoopResult>;
62
+ /**
63
+ * Run the agent loop with multimodal content blocks
64
+ *
65
+ * Uses lane-based concurrency when useLanes is enabled.
66
+ *
67
+ * @param content - Array of content blocks (text, images, documents)
68
+ * @param options - Execution options (systemPrompt, disableAutoRecall, etc.)
69
+ * @returns Agent loop result with final response and history
70
+ * @throws AgentError on errors
71
+ */
72
+ runWithContent(content: ContentBlock[], options?: AgentLoopOptions): Promise<AgentLoopResult>;
73
+ /**
74
+ * Internal implementation of runWithContent (without lane queueing)
75
+ */
76
+ private runWithContentInternal;
77
+ /**
78
+ * Execute tools from response content blocks
79
+ */
80
+ private executeTools;
81
+ /**
82
+ * Extract text response from the last assistant message
83
+ */
84
+ private extractTextResponse;
85
+ /**
86
+ * Format conversation history as prompt text for Claude CLI
87
+ */
88
+ private formatHistoryAsPrompt;
89
+ /**
90
+ * Get the MAMA tool definitions
91
+ */
92
+ static getToolDefinitions(): ToolDefinition[];
93
+ /**
94
+ * Get the default system prompt (verbose logging)
95
+ */
96
+ static getDefaultSystemPrompt(): string;
97
+ }
98
+ //# sourceMappingURL=agent-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,OAAO,KAAK,EAEV,YAAY,EAIZ,cAAc,EACd,gBAAgB,EAChB,eAAe,EAIf,mBAAmB,EACnB,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAyEpB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA8D;IACzF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAGxC,aAAa,EAAE,YAAY,EAC3B,OAAO,GAAE,gBAAqB,EAC9B,cAAc,CAAC,EAAE,mBAAmB,EACpC,eAAe,CAAC,EAAE,0BAA0B;IAgC9C;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE;QACzB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAClF,GAAG,IAAI;IAIR;;;;;;;;;;;;OAYG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAe/E;;;;;;;;;OASG;IACG,cAAc,CAClB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAc3B;;OAEG;YACW,sBAAsB;IAwKpC;;OAEG;YACW,YAAY;IAuC1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,cAAc,EAAE;IAI7C;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM;CAGxC"}
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Loop Engine for MAMA Standalone
4
+ *
5
+ * Main orchestrator that:
6
+ * - Maintains conversation history
7
+ * - Calls Claude API via ClaudeClient
8
+ * - Parses tool_use blocks from responses
9
+ * - Executes tools via MCPExecutor
10
+ * - Sends tool_result back to Claude
11
+ * - Loops until stop_reason is "end_turn" or max turns reached
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.AgentLoop = void 0;
15
+ // fs imports removed - using minimal system prompt, CLAUDE.md loaded by Claude Code
16
+ const claude_cli_wrapper_js_1 = require("./claude-cli-wrapper.js");
17
+ const gateway_tool_executor_js_1 = require("./gateway-tool-executor.js");
18
+ const index_js_1 = require("../concurrency/index.js");
19
+ const session_pool_js_1 = require("./session-pool.js");
20
+ const os_1 = require("os");
21
+ const path_1 = require("path");
22
+ const crypto_1 = require("crypto");
23
+ const types_js_1 = require("./types.js");
24
+ /**
25
+ * Default configuration
26
+ */
27
+ const DEFAULT_MAX_TURNS = 10;
28
+ /**
29
+ * Load CLAUDE.md system prompt
30
+ * Tries multiple paths: project root, ~/.mama, /etc/mama
31
+ */
32
+ function loadSystemPrompt(verbose = false) {
33
+ const { readFileSync, existsSync } = require('fs');
34
+ const { join } = require('path');
35
+ const { homedir } = require('os');
36
+ const searchPaths = [
37
+ // User home - MAMA standalone config (priority)
38
+ join(homedir(), '.mama/CLAUDE.md'),
39
+ // System config
40
+ '/etc/mama/CLAUDE.md',
41
+ // Project root (monorepo) - fallback only for development
42
+ join(__dirname, '../../../../CLAUDE.md'),
43
+ ];
44
+ for (const path of searchPaths) {
45
+ if (existsSync(path)) {
46
+ if (verbose)
47
+ console.log(`[AgentLoop] Loaded system prompt from: ${path}`);
48
+ return readFileSync(path, 'utf-8');
49
+ }
50
+ }
51
+ console.warn('[AgentLoop] CLAUDE.md not found, using default identity');
52
+ return "You are Claude Code, Anthropic's official CLI for Claude.";
53
+ }
54
+ /**
55
+ * Load composed system prompt with persona layers + CLAUDE.md
56
+ * Tries to load persona files from ~/.mama/ in order:
57
+ * 1. SOUL.md (philosophical principles)
58
+ * 2. IDENTITY.md (role and character)
59
+ * 3. USER.md (user preferences)
60
+ * 4. CLAUDE.md (base instructions)
61
+ *
62
+ * If persona files are missing, logs warning and continues with CLAUDE.md alone.
63
+ */
64
+ function loadComposedSystemPrompt(verbose = false) {
65
+ const { readFileSync, existsSync } = require('fs');
66
+ const { join } = require('path');
67
+ const { homedir } = require('os');
68
+ const mamaHome = join(homedir(), '.mama');
69
+ const layers = [];
70
+ const personaFiles = ['SOUL.md', 'IDENTITY.md', 'USER.md'];
71
+ for (const file of personaFiles) {
72
+ const path = join(mamaHome, file);
73
+ if (existsSync(path)) {
74
+ if (verbose)
75
+ console.log(`[AgentLoop] Loaded persona: ${file}`);
76
+ const content = readFileSync(path, 'utf-8');
77
+ layers.push(content);
78
+ }
79
+ else {
80
+ if (verbose)
81
+ console.log(`[AgentLoop] Persona file not found (skipping): ${file}`);
82
+ }
83
+ }
84
+ const claudeMd = loadSystemPrompt(verbose);
85
+ layers.push(claudeMd);
86
+ return layers.join('\n\n---\n\n');
87
+ }
88
+ class AgentLoop {
89
+ agent;
90
+ claudeCLI = null;
91
+ mcpExecutor;
92
+ systemPromptOverride;
93
+ maxTurns;
94
+ model;
95
+ onTurn;
96
+ onToolUse;
97
+ laneManager;
98
+ useLanes;
99
+ sessionKey;
100
+ sessionPool;
101
+ constructor(_oauthManager, options = {}, _clientOptions, executorOptions) {
102
+ const mcpConfigPath = (0, path_1.join)((0, os_1.homedir)(), '.mama/mama-mcp-config.json');
103
+ const sessionId = (0, crypto_1.randomUUID)();
104
+ const defaultSystemPrompt = options.systemPrompt || loadComposedSystemPrompt();
105
+ this.claudeCLI = new claude_cli_wrapper_js_1.ClaudeCLIWrapper({
106
+ model: options.model ?? 'claude-sonnet-4-20250514',
107
+ sessionId,
108
+ systemPrompt: defaultSystemPrompt,
109
+ mcpConfigPath,
110
+ dangerouslySkipPermissions: true,
111
+ });
112
+ this.agent = this.claudeCLI;
113
+ this.mcpExecutor = new gateway_tool_executor_js_1.GatewayToolExecutor(executorOptions);
114
+ this.systemPromptOverride = options.systemPrompt;
115
+ this.maxTurns = options.maxTurns ?? DEFAULT_MAX_TURNS;
116
+ this.model = options.model ?? 'claude-opus-4-20250514';
117
+ this.onTurn = options.onTurn;
118
+ this.onToolUse = options.onToolUse;
119
+ this.laneManager = (0, index_js_1.getGlobalLaneManager)();
120
+ this.useLanes = options.useLanes ?? false;
121
+ this.sessionKey = options.sessionKey ?? 'default';
122
+ this.sessionPool = (0, session_pool_js_1.getSessionPool)();
123
+ if (!this.systemPromptOverride) {
124
+ loadComposedSystemPrompt(true);
125
+ }
126
+ }
127
+ /**
128
+ * Set session key for lane-based concurrency
129
+ * Use format: "{source}:{channelId}:{userId}"
130
+ */
131
+ setSessionKey(key) {
132
+ this.sessionKey = key;
133
+ }
134
+ /**
135
+ * Get current session key
136
+ */
137
+ getSessionKey() {
138
+ return this.sessionKey;
139
+ }
140
+ /**
141
+ * Set system prompt override (for per-message context injection)
142
+ */
143
+ setSystemPrompt(prompt) {
144
+ this.systemPromptOverride = prompt;
145
+ }
146
+ /**
147
+ * Set Discord gateway for discord_send tool
148
+ */
149
+ setDiscordGateway(gateway) {
150
+ this.mcpExecutor.setDiscordGateway(gateway);
151
+ }
152
+ /**
153
+ * Run the agent loop with a user prompt
154
+ *
155
+ * Uses lane-based concurrency when useLanes is enabled:
156
+ * - Same session messages are processed in order
157
+ * - Different sessions can run in parallel
158
+ * - Global lane limits total concurrent API calls
159
+ *
160
+ * @param prompt - User prompt to process
161
+ * @param options - Execution options (systemPrompt, disableAutoRecall, etc.)
162
+ * @returns Agent loop result with final response and history
163
+ * @throws AgentError on errors
164
+ */
165
+ async run(prompt, options) {
166
+ // Convert string prompt to text content block
167
+ const content = [{ type: 'text', text: prompt }];
168
+ // Use lane-based queueing if enabled
169
+ if (this.useLanes) {
170
+ return this.laneManager.enqueueWithSession(this.sessionKey, () => this.runWithContentInternal(content, options));
171
+ }
172
+ // Direct execution for backward compatibility
173
+ return this.runWithContentInternal(content, options);
174
+ }
175
+ /**
176
+ * Run the agent loop with multimodal content blocks
177
+ *
178
+ * Uses lane-based concurrency when useLanes is enabled.
179
+ *
180
+ * @param content - Array of content blocks (text, images, documents)
181
+ * @param options - Execution options (systemPrompt, disableAutoRecall, etc.)
182
+ * @returns Agent loop result with final response and history
183
+ * @throws AgentError on errors
184
+ */
185
+ async runWithContent(content, options) {
186
+ const sessionKey = options?.sessionKey || this.sessionKey;
187
+ // Use lane-based queueing if enabled
188
+ if (this.useLanes) {
189
+ return this.laneManager.enqueueWithSession(sessionKey, () => this.runWithContentInternal(content, options));
190
+ }
191
+ // Direct execution for backward compatibility
192
+ return this.runWithContentInternal(content, options);
193
+ }
194
+ /**
195
+ * Internal implementation of runWithContent (without lane queueing)
196
+ */
197
+ async runWithContentInternal(content, options) {
198
+ const history = [];
199
+ let totalUsage = { input_tokens: 0, output_tokens: 0 };
200
+ let turn = 0;
201
+ let stopReason = 'end_turn';
202
+ // Track channel key for session release
203
+ const channelKey = (0, session_pool_js_1.buildChannelKey)(options?.source ?? 'default', options?.channelId ?? this.sessionKey);
204
+ // Use session pool for conversation continuity (instead of resetting each time)
205
+ // This allows Claude CLI to maintain its own conversation history
206
+ if (this.claudeCLI) {
207
+ const cliSessionId = this.sessionPool.getSessionId(channelKey);
208
+ this.claudeCLI.setSessionId(cliSessionId);
209
+ console.log(`[AgentLoop] Using session pool: ${channelKey} → ${cliSessionId}`);
210
+ }
211
+ try {
212
+ if (options?.systemPrompt) {
213
+ console.log(`[AgentLoop] Setting systemPrompt: ${options.systemPrompt.length} chars, starts with: ${options.systemPrompt.substring(0, 100)}...`);
214
+ this.agent.setSystemPrompt(options.systemPrompt);
215
+ }
216
+ else {
217
+ console.log(`[AgentLoop] No systemPrompt in options, using default`);
218
+ }
219
+ // Add initial user message with content blocks
220
+ history.push({
221
+ role: 'user',
222
+ content,
223
+ });
224
+ while (turn < this.maxTurns) {
225
+ turn++;
226
+ let response;
227
+ const callbacks = {
228
+ onDelta: (text) => {
229
+ console.log('[Streaming] Delta received:', text.length, 'chars');
230
+ },
231
+ onToolUse: (name, _input) => {
232
+ console.log(`[Streaming] Tool called: ${name}`);
233
+ },
234
+ onFinal: (_finalResponse) => {
235
+ console.log('[Streaming] Stream complete');
236
+ },
237
+ onError: (error) => {
238
+ console.error('[Streaming] Error:', error);
239
+ // Don't throw - let the promise rejection handle it
240
+ },
241
+ };
242
+ const promptText = this.formatHistoryAsPrompt(history);
243
+ let piResult;
244
+ try {
245
+ piResult = await this.agent.prompt(promptText, callbacks);
246
+ }
247
+ catch (error) {
248
+ console.error('[AgentLoop] Claude CLI error:', error);
249
+ throw new types_js_1.AgentError(`Claude CLI error: ${error instanceof Error ? error.message : String(error)}`, 'CLI_ERROR', error instanceof Error ? error : undefined, true // retryable
250
+ );
251
+ }
252
+ response = {
253
+ id: `msg_${Date.now()}`,
254
+ type: 'message',
255
+ role: 'assistant',
256
+ content: [{ type: 'text', text: piResult.response }],
257
+ model: this.model,
258
+ stop_reason: 'end_turn',
259
+ stop_sequence: null,
260
+ usage: piResult.usage,
261
+ };
262
+ // Update usage
263
+ totalUsage.input_tokens += response.usage.input_tokens;
264
+ totalUsage.output_tokens += response.usage.output_tokens;
265
+ // Track tokens in session pool for auto-reset at 80% context
266
+ this.sessionPool.updateTokens(channelKey, response.usage.input_tokens);
267
+ // Add assistant response to history
268
+ history.push({
269
+ role: 'assistant',
270
+ content: response.content,
271
+ });
272
+ // Notify turn callback
273
+ this.onTurn?.({
274
+ turn,
275
+ role: 'assistant',
276
+ content: response.content,
277
+ stopReason: response.stop_reason,
278
+ usage: response.usage,
279
+ });
280
+ stopReason = response.stop_reason;
281
+ // Check stop conditions
282
+ if (response.stop_reason === 'end_turn') {
283
+ break;
284
+ }
285
+ if (response.stop_reason === 'max_tokens') {
286
+ throw new types_js_1.AgentError('Response truncated due to max tokens limit', 'MAX_TOKENS', undefined, false);
287
+ }
288
+ // Handle tool use
289
+ if (response.stop_reason === 'tool_use') {
290
+ const toolResults = await this.executeTools(response.content);
291
+ // Add tool results to history
292
+ history.push({
293
+ role: 'user',
294
+ content: toolResults,
295
+ });
296
+ // Notify turn callback for tool results
297
+ this.onTurn?.({
298
+ turn,
299
+ role: 'user',
300
+ content: toolResults,
301
+ });
302
+ }
303
+ }
304
+ // Check if we hit max turns
305
+ if (turn >= this.maxTurns && stopReason === 'tool_use') {
306
+ throw new types_js_1.AgentError(`Agent loop exceeded maximum turns (${this.maxTurns})`, 'MAX_TURNS', undefined, false);
307
+ }
308
+ // Extract final text response
309
+ const finalResponse = this.extractTextResponse(history);
310
+ return {
311
+ response: finalResponse,
312
+ turns: turn,
313
+ history,
314
+ totalUsage,
315
+ stopReason,
316
+ };
317
+ }
318
+ finally {
319
+ // Always release session lock, even on error
320
+ this.sessionPool.releaseSession(channelKey);
321
+ }
322
+ }
323
+ /**
324
+ * Execute tools from response content blocks
325
+ */
326
+ async executeTools(content) {
327
+ const toolUseBlocks = content.filter((block) => block.type === 'tool_use');
328
+ const results = [];
329
+ for (const toolUse of toolUseBlocks) {
330
+ let result;
331
+ let isError = false;
332
+ try {
333
+ const toolResult = await this.mcpExecutor.execute(toolUse.name, toolUse.input);
334
+ result = JSON.stringify(toolResult, null, 2);
335
+ // Notify tool use callback
336
+ this.onToolUse?.(toolUse.name, toolUse.input, toolResult);
337
+ }
338
+ catch (error) {
339
+ isError = true;
340
+ result = error instanceof Error ? error.message : String(error);
341
+ // Notify tool use callback with error
342
+ this.onToolUse?.(toolUse.name, toolUse.input, { error: result });
343
+ }
344
+ results.push({
345
+ type: 'tool_result',
346
+ tool_use_id: toolUse.id,
347
+ content: result,
348
+ is_error: isError,
349
+ });
350
+ }
351
+ return results;
352
+ }
353
+ /**
354
+ * Extract text response from the last assistant message
355
+ */
356
+ extractTextResponse(history) {
357
+ // Find the last assistant message
358
+ for (let i = history.length - 1; i >= 0; i--) {
359
+ const message = history[i];
360
+ if (message.role === 'assistant') {
361
+ const content = message.content;
362
+ if (typeof content === 'string') {
363
+ return content;
364
+ }
365
+ // Extract text blocks
366
+ const textBlocks = content.filter((block) => block.type === 'text');
367
+ return textBlocks.map((block) => block.text).join('\n');
368
+ }
369
+ }
370
+ return '';
371
+ }
372
+ /**
373
+ * Format conversation history as prompt text for Claude CLI
374
+ */
375
+ formatHistoryAsPrompt(history) {
376
+ return history
377
+ .map((msg) => {
378
+ const content = msg.content;
379
+ let text;
380
+ if (typeof content === 'string') {
381
+ text = content;
382
+ }
383
+ else if (Array.isArray(content)) {
384
+ text = content
385
+ .filter((c) => c.type === 'text')
386
+ .map((c) => c.text)
387
+ .join('\n');
388
+ }
389
+ else {
390
+ return '';
391
+ }
392
+ if (msg.role === 'user') {
393
+ return `User: ${text}`;
394
+ }
395
+ else if (msg.role === 'assistant') {
396
+ return `Assistant: ${text}`;
397
+ }
398
+ return '';
399
+ })
400
+ .filter(Boolean)
401
+ .join('\n\n');
402
+ }
403
+ /**
404
+ * Get the MAMA tool definitions
405
+ */
406
+ static getToolDefinitions() {
407
+ return [];
408
+ }
409
+ /**
410
+ * Get the default system prompt (verbose logging)
411
+ */
412
+ static getDefaultSystemPrompt() {
413
+ return loadSystemPrompt(true);
414
+ }
415
+ }
416
+ exports.AgentLoop = AgentLoop;
417
+ //# sourceMappingURL=agent-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Auto-Recall Module for MAMA Standalone
3
+ *
4
+ * OpenClaw 플러그인의 auto-recall 로직을 standalone으로 이식.
5
+ * 에이전트 시작 전에 관련 메모리를 자동으로 검색하여 컨텍스트에 주입.
6
+ *
7
+ * Features:
8
+ * - 프롬프트 기반 시맨틱 검색
9
+ * - 최근 체크포인트 로드
10
+ * - 관련 결정 컨텍스트 주입
11
+ */
12
+ /**
13
+ * Auto-recall 결과 타입
14
+ */
15
+ export interface AutoRecallResult {
16
+ /** 주입할 컨텍스트 문자열 */
17
+ context: string;
18
+ /** 시맨틱 검색 결과 수 */
19
+ semanticMatches: number;
20
+ /** 최근 결정 수 */
21
+ recentDecisions: number;
22
+ /** 체크포인트 존재 여부 */
23
+ hasCheckpoint: boolean;
24
+ }
25
+ /**
26
+ * 프롬프트 기반 auto-recall 실행
27
+ *
28
+ * OpenClaw의 before_agent_start 훅 로직을 standalone으로 이식.
29
+ *
30
+ * @param userPrompt - 사용자 프롬프트 (시맨틱 검색 쿼리로 사용)
31
+ * @param options - 옵션
32
+ * @returns AutoRecallResult 또는 null (메모리 없음)
33
+ */
34
+ export declare function autoRecall(userPrompt: string, options?: {
35
+ dbPath?: string;
36
+ semanticLimit?: number;
37
+ recentLimit?: number;
38
+ threshold?: number;
39
+ }): Promise<AutoRecallResult | null>;
40
+ /**
41
+ * MAMA API 직접 접근 (고급 사용)
42
+ */
43
+ export declare function getMAMAApi(): any;
44
+ /**
45
+ * 초기화 상태 확인
46
+ */
47
+ export declare function isInitialized(): boolean;
48
+ //# sourceMappingURL=auto-recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-recall.d.ts","sourceRoot":"","sources":["../../src/agent/auto-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsFH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAoGlC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,GAAG,CAEhC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}