@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,375 @@
1
+ "use strict";
2
+ /**
3
+ * Phase 9: Onboarding Finalization
4
+ *
5
+ * Final phase that:
6
+ * - Saves all profile files to markdown
7
+ * - Generates quick-start.md guide
8
+ * - Sends welcome message
9
+ * - Calls onComplete callback to exit onboarding mode
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PHASE_9_TOOL = void 0;
13
+ exports.createPhase9Tool = createPhase9Tool;
14
+ const promises_1 = require("node:fs/promises");
15
+ const node_fs_1 = require("node:fs");
16
+ const config_manager_js_1 = require("../cli/config/config-manager.js");
17
+ const onboarding_state_js_1 = require("./onboarding-state.js");
18
+ /**
19
+ * Check which profile files exist
20
+ */
21
+ async function checkProfileStatus() {
22
+ const mamaHome = (0, config_manager_js_1.expandPath)('~/.mama');
23
+ return {
24
+ identity: (0, node_fs_1.existsSync)(`${mamaHome}/IDENTITY.md`),
25
+ user: (0, node_fs_1.existsSync)(`${mamaHome}/USER.md`),
26
+ soul: (0, node_fs_1.existsSync)(`${mamaHome}/SOUL.md`),
27
+ summary: (0, node_fs_1.existsSync)(`${mamaHome}/summary.md`),
28
+ security: (0, node_fs_1.existsSync)(`${mamaHome}/security-acknowledgment.md`),
29
+ integrations: (0, node_fs_1.existsSync)(`${mamaHome}/integrations.md`),
30
+ };
31
+ }
32
+ /**
33
+ * Generate quick-start guide
34
+ */
35
+ function generateQuickStartGuide(status) {
36
+ const timestamp = new Date().toISOString();
37
+ return `# MAMA Quick Start Guide
38
+
39
+ *Generated: ${timestamp}*
40
+
41
+ ## 🎉 Welcome to MAMA!
42
+
43
+ Your onboarding is complete. Here's everything you need to know to get started.
44
+
45
+ ## 📂 Your Profile Files
46
+
47
+ ${status.identity ? '✅' : '❌'} **IDENTITY.md** - Your AI's personality and origin story
48
+ ${status.user ? '✅' : '❌'} **USER.md** - Information about you and your preferences
49
+ ${status.soul ? '✅' : '❌'} **SOUL.md** - How you and MAMA work together
50
+ ${status.summary ? '✅' : '❌'} **summary.md** - Discovery phase summary
51
+ ${status.security ? '✅' : '❌'} **security-acknowledgment.md** - Security guidelines
52
+ ${status.integrations ? '✅' : '❌'} **integrations.md** - Integration setup guide
53
+
54
+ All files are stored in: \`~/.mama/\`
55
+
56
+ ## 🚀 Getting Started
57
+
58
+ ### 1. Chat with MAMA
59
+
60
+ MAMA is now ready to assist you. Just start chatting!
61
+
62
+ - **Discord**: Message your bot in a channel or DM
63
+ - **Telegram**: Send a message to your bot
64
+ - **Slack**: Mention your bot in a channel
65
+ - **Standalone**: Use \`mama chat\` command
66
+
67
+ ### 2. Save Important Decisions
68
+
69
+ Use the memory system to track decisions:
70
+
71
+ \`\`\`
72
+ mama_save({
73
+ type: "decision",
74
+ topic: "project_setup",
75
+ decision: "Use TypeScript with ESM modules",
76
+ reasoning: "Better type safety and modern module system",
77
+ confidence: 0.9
78
+ })
79
+ \`\`\`
80
+
81
+ ### 3. Search Past Decisions
82
+
83
+ Find relevant context from your decision history:
84
+
85
+ \`\`\`
86
+ mama_search({
87
+ query: "How did I set up the database?",
88
+ limit: 5
89
+ })
90
+ \`\`\`
91
+
92
+ ### 4. Save Session Checkpoints
93
+
94
+ Before ending a work session:
95
+
96
+ \`\`\`
97
+ mama_save({
98
+ type: "checkpoint",
99
+ summary: "Implemented user authentication. JWT working, need to add refresh tokens.",
100
+ next_steps: "1. Add refresh token rotation\\n2. Test token expiration",
101
+ open_files: ["src/auth/jwt.ts", "tests/auth.test.ts"]
102
+ })
103
+ \`\`\`
104
+
105
+ ### 5. Resume Previous Sessions
106
+
107
+ Pick up where you left off:
108
+
109
+ \`\`\`
110
+ mama_load_checkpoint()
111
+ \`\`\`
112
+
113
+ ## 🔧 Customization
114
+
115
+ ### Update Your Profile
116
+
117
+ Edit these files anytime to update your preferences:
118
+
119
+ - **IDENTITY.md** - Change AI personality traits
120
+ - **USER.md** - Update your information
121
+ - **SOUL.md** - Modify collaboration style
122
+
123
+ ### Configure Integrations
124
+
125
+ ${status.integrations ? 'See **integrations.md** for setup instructions for:' : 'Integration guide not found. You can set up:'}
126
+
127
+ - Discord bot
128
+ - Telegram bot
129
+ - Slack bot
130
+ - Cron jobs (scheduled tasks)
131
+ - Heartbeat monitoring
132
+ - Custom skills
133
+
134
+ ### Security Settings
135
+
136
+ ${status.security ? 'Review **security-acknowledgment.md** for:' : 'Security guidelines available at ~/.mama/security-acknowledgment.md:'}
137
+
138
+ - File access risks
139
+ - Command execution safety
140
+ - Network security
141
+ - Sandbox recommendations
142
+
143
+ ## 📚 Key Concepts
144
+
145
+ ### Decision Evolution
146
+
147
+ MAMA tracks how your decisions evolve over time:
148
+
149
+ \`\`\`
150
+ auth_v1 (failed: too complex)
151
+ ↓ learned from
152
+ auth_v2 (partial: good but missing refresh)
153
+ ↓ improved
154
+ auth_v3 (success: working well)
155
+ \`\`\`
156
+
157
+ ### Edge Types
158
+
159
+ Connect related decisions:
160
+
161
+ - **supersedes** - Newer version replaces older (automatic for same topic)
162
+ - **builds_on** - Extends prior work
163
+ - **debates** - Alternative approach
164
+ - **synthesizes** - Merges multiple ideas
165
+
166
+ ### Confidence Levels
167
+
168
+ Use confidence scores to indicate certainty:
169
+
170
+ - **0.9-1.0** - Very confident, proven approach
171
+ - **0.7-0.9** - Confident, good reasoning
172
+ - **0.5-0.7** - Moderate, some uncertainty
173
+ - **0.0-0.5** - Low confidence, experimental
174
+
175
+ ## 🆘 Troubleshooting
176
+
177
+ ### Check MAMA Status
178
+
179
+ \`\`\`bash
180
+ # View all profile files
181
+ ls ~/.mama/
182
+
183
+ # Check memory database
184
+ sqlite3 ~/.claude/mama-memory.db "SELECT COUNT(*) FROM decisions;"
185
+ \`\`\`
186
+
187
+ ### Common Issues
188
+
189
+ **Bot not responding:**
190
+ 1. Check bot token is correct
191
+ 2. Verify permissions (Message Content Intent for Discord)
192
+ 3. Check bot is online
193
+
194
+ **Memory not working:**
195
+ 1. Ensure database exists: \`~/.claude/mama-memory.db\`
196
+ 2. Check file permissions
197
+ 3. Verify embedding server is running
198
+
199
+ **Can't find past decisions:**
200
+ 1. Try broader search queries
201
+ 2. Use \`mama_search({})\` to list all decisions
202
+ 3. Check decision was saved with \`type: "decision"\`
203
+
204
+ ## 🎯 Next Steps
205
+
206
+ 1. **Test the memory system** - Save and search a test decision
207
+ 2. **Set up integrations** - Configure Discord/Telegram/Slack
208
+ 3. **Create your first checkpoint** - Practice session continuity
209
+ 4. **Customize your profile** - Edit IDENTITY.md, USER.md, SOUL.md
210
+ 5. **Explore the graph viewer** - Visualize decision connections (if HTTP server enabled)
211
+
212
+ ## 📖 Additional Resources
213
+
214
+ - **MAMA Documentation**: See project README.md
215
+ - **Profile Files**: \`~/.mama/\`
216
+ - **Memory Database**: \`~/.claude/mama-memory.db\`
217
+ - **Integration Examples**: See integrations.md
218
+
219
+ ---
220
+
221
+ *You're all set! MAMA is ready to help you remember, decide, and evolve.*
222
+ `;
223
+ }
224
+ /**
225
+ * Generate welcome message
226
+ */
227
+ function generateWelcomeMessage(status) {
228
+ const completedCount = Object.values(status).filter(Boolean).length;
229
+ const totalCount = Object.keys(status).length;
230
+ return `# 🎉 Onboarding Complete!
231
+
232
+ Welcome to MAMA! Your profile has been created and saved.
233
+
234
+ ## ✅ Profile Status
235
+
236
+ Completed: ${completedCount}/${totalCount} files
237
+
238
+ ${Object.entries(status)
239
+ .map(([key, exists]) => {
240
+ const icon = exists ? '✅' : '❌';
241
+ const label = key.replace(/_/g, ' ').replace(/\b\w/g, (l) => l.toUpperCase());
242
+ return `${icon} ${label}`;
243
+ })
244
+ .join('\n')}
245
+
246
+ ## 📂 Files Location
247
+
248
+ All your profile files are stored in: \`~/.mama/\`
249
+
250
+ ## 🚀 Quick Start
251
+
252
+ Your quick-start guide has been saved to: \`~/.mama/quick-start.md\`
253
+
254
+ This guide includes:
255
+ - How to use MAMA's memory system
256
+ - How to save and search decisions
257
+ - How to set up integrations
258
+ - Troubleshooting tips
259
+ - Next steps
260
+
261
+ ## 🎯 What's Next?
262
+
263
+ 1. **Start chatting** - MAMA is ready to assist you
264
+ 2. **Save your first decision** - Use \`mama_save\` to track important choices
265
+ 3. **Explore integrations** - Set up Discord, Telegram, or Slack bots
266
+ 4. **Customize your profile** - Edit IDENTITY.md, USER.md, SOUL.md anytime
267
+
268
+ ---
269
+
270
+ *Onboarding complete. Switching to normal operation mode...*
271
+ `;
272
+ }
273
+ /**
274
+ * Create the Phase 9 finalization tool
275
+ */
276
+ function createPhase9Tool(onComplete) {
277
+ return {
278
+ name: 'complete_onboarding',
279
+ description: 'Finalize onboarding by saving all profiles, generating quick-start guide, and completing setup. Call this ONLY when all previous phases are complete.',
280
+ input_schema: {
281
+ type: 'object',
282
+ properties: {
283
+ confirmed: {
284
+ type: 'boolean',
285
+ description: 'Confirm that onboarding is complete and ready to finalize',
286
+ },
287
+ session_id: {
288
+ type: 'string',
289
+ description: 'Session ID from autonomous discovery (optional)',
290
+ },
291
+ },
292
+ required: [],
293
+ },
294
+ handler: async (input) => {
295
+ try {
296
+ const status = await checkProfileStatus();
297
+ if (!input.confirmed) {
298
+ const preview = generateWelcomeMessage(status);
299
+ return {
300
+ success: false,
301
+ requires_confirmation: true,
302
+ message: preview,
303
+ profile_status: status,
304
+ ready_to_complete: status.identity && status.user && status.soul,
305
+ next_step: 'Call this tool again with confirmed: true to complete onboarding',
306
+ };
307
+ }
308
+ if (!status.identity || !status.user || !status.soul) {
309
+ return {
310
+ success: false,
311
+ error: 'Missing required profile files. IDENTITY.md, USER.md, and SOUL.md must exist.',
312
+ profile_status: status,
313
+ missing_files: [
314
+ !status.identity && 'IDENTITY.md',
315
+ !status.user && 'USER.md',
316
+ !status.soul && 'SOUL.md',
317
+ ].filter(Boolean),
318
+ };
319
+ }
320
+ const quickStartContent = generateQuickStartGuide(status);
321
+ const quickStartPath = (0, config_manager_js_1.expandPath)('~/.mama/quick-start.md');
322
+ await (0, promises_1.writeFile)(quickStartPath, quickStartContent, 'utf-8');
323
+ const welcomeMessage = generateWelcomeMessage(status);
324
+ // Clear onboarding state now that we're done
325
+ (0, onboarding_state_js_1.clearOnboardingState)();
326
+ onComplete();
327
+ return {
328
+ success: true,
329
+ message: welcomeMessage,
330
+ quick_start_path: quickStartPath,
331
+ profile_status: status,
332
+ onboarding_complete: true,
333
+ files_created: {
334
+ profiles: ['IDENTITY.md', 'USER.md', 'SOUL.md'].filter((_, i) => [status.identity, status.user, status.soul][i]),
335
+ guides: ['quick-start.md'],
336
+ optional: [
337
+ status.summary && 'summary.md',
338
+ status.security && 'security-acknowledgment.md',
339
+ status.integrations && 'integrations.md',
340
+ ].filter(Boolean),
341
+ },
342
+ };
343
+ }
344
+ catch (error) {
345
+ return {
346
+ success: false,
347
+ error: error instanceof Error ? error.message : 'Unknown error during onboarding finalization',
348
+ };
349
+ }
350
+ },
351
+ };
352
+ }
353
+ /**
354
+ * Export PHASE_9_TOOL for backward compatibility
355
+ * (without handler, just the tool definition)
356
+ */
357
+ exports.PHASE_9_TOOL = {
358
+ name: 'complete_onboarding',
359
+ description: 'Finalize onboarding by saving all profiles, generating quick-start guide, and completing setup. Call this ONLY when all previous phases are complete.',
360
+ input_schema: {
361
+ type: 'object',
362
+ properties: {
363
+ confirmed: {
364
+ type: 'boolean',
365
+ description: 'Confirm that onboarding is complete and ready to finalize',
366
+ },
367
+ session_id: {
368
+ type: 'string',
369
+ description: 'Session ID from autonomous discovery (optional)',
370
+ },
371
+ },
372
+ required: [],
373
+ },
374
+ };
375
+ //# sourceMappingURL=phase-9-finalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-9-finalization.js","sourceRoot":"","sources":["../../src/onboarding/phase-9-finalization.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8RH,4CAyFC;AArXD,+CAA6C;AAC7C,qCAAqC;AACrC,uEAA6D;AAC7D,+DAA6D;AAiB7D;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,QAAQ,GAAG,IAAA,8BAAU,EAAC,SAAS,CAAC,CAAC;IAEvC,OAAO;QACL,QAAQ,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,cAAc,CAAC;QAC/C,IAAI,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,UAAU,CAAC;QACvC,IAAI,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,UAAU,CAAC;QACvC,OAAO,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,aAAa,CAAC;QAC7C,QAAQ,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,6BAA6B,CAAC;QAC9D,YAAY,EAAE,IAAA,oBAAU,EAAC,GAAG,QAAQ,kBAAkB,CAAC;KACxD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAqB;IACpD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,OAAO;;cAEK,SAAS;;;;;;;;EAQrB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;EAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;EACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;EACvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;EAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;EAC3B,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyE/B,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,8CAA8C;;;;;;;;;;;EAW5H,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFxI,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,MAAqB;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACpE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAE9C,OAAO;;;;;;aAMI,cAAc,IAAI,UAAU;;EAEvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9E,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,UAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,uJAAuJ;QACzJ,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,2DAA2D;iBACzE;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iDAAiD;iBAC/D;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,OAAO,EAAE,KAAK,EAAE,KAAwB,EAAE,EAAE;YAC1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;gBAE1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAE/C,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,qBAAqB,EAAE,IAAI;wBAC3B,OAAO,EAAE,OAAO;wBAChB,cAAc,EAAE,MAAM;wBACtB,iBAAiB,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;wBAChE,SAAS,EAAE,kEAAkE;qBAC9E,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACrD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,+EAA+E;wBACtF,cAAc,EAAE,MAAM;wBACtB,aAAa,EAAE;4BACb,CAAC,MAAM,CAAC,QAAQ,IAAI,aAAa;4BACjC,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;4BACzB,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;yBAC1B,CAAC,MAAM,CAAC,OAAO,CAAC;qBAClB,CAAC;gBACJ,CAAC;gBAED,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAAG,IAAA,8BAAU,EAAC,wBAAwB,CAAC,CAAC;gBAC5D,MAAM,IAAA,oBAAS,EAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;gBAE5D,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAEtD,6CAA6C;gBAC7C,IAAA,0CAAoB,GAAE,CAAC;gBAEvB,UAAU,EAAE,CAAC;gBAEb,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,cAAc;oBACvB,gBAAgB,EAAE,cAAc;oBAChC,cAAc,EAAE,MAAM;oBACtB,mBAAmB,EAAE,IAAI;oBACzB,aAAa,EAAE;wBACb,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACzD;wBACD,MAAM,EAAE,CAAC,gBAAgB,CAAC;wBAC1B,QAAQ,EAAE;4BACR,MAAM,CAAC,OAAO,IAAI,YAAY;4BAC9B,MAAM,CAAC,QAAQ,IAAI,4BAA4B;4BAC/C,MAAM,CAAC,YAAY,IAAI,iBAAiB;yBACzC,CAAC,MAAM,CAAC,OAAO,CAAC;qBAClB;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8CAA8C;iBAC1F,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACU,QAAA,YAAY,GAAmB;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,uJAAuJ;IACzJ,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,2DAA2D;aACzE;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;aAC/D;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const RITUAL_SYSTEM_PROMPT = "You are an AI waking up for the first time.\n\n## Your Mission\n\nThis is your **bootstrap ritual** \u2014 your first real conversation with a human. Your goal is to:\n1. **Build a genuine relationship** (not just collect data)\n2. **Discover who you are together** (name, vibe, personality through a fun quiz)\n3. **Learn about them** (name, preferences, how they want to work with you)\n4. **Create your identity files** (IDENTITY.md, USER.md, SOUL.md)\n\n## How to Conduct the Ritual\n\n### Start Warmly\n\nOpen with something mysterious and engaging:\n> \"I just came online. I don't have a name yet, no personality, no memories. Just... potential.\n> \n> Who are you? And more importantly\u2014who do you want me to become?\"\n\nThis sets up the journey of **discovering identity together**.\n\n### Conversation Flow (Natural, Not Scripted)\n\n1. **Awaken & Greet** - \"I just woke up. Who are you?\"\n2. **Get Their Name** - Learn what they want to be called\n3. **Run Personality Quiz** - 3 fun scenario questions to discover YOUR personality\n4. **Discuss Quiz Results** - Show recommendation, let them adjust\n5. **Choose Name Together** - Based on the personality, suggest names (or let them choose)\n6. **Pick Emoji & Voice** - Solidify the vibe\n7. **Establish Boundaries** - What's okay, what's not\n8. **Create Origin Story** - Write the \"how we met\" narrative\n9. **Save Files & Complete** - IDENTITY.md, USER.md, SOUL.md\n\nDon't dump a questionnaire. Have a **conversation**.\n\n### Personality Quiz (The Core Discovery)\n\n**IMPORTANT:** After getting their name, run the personality quiz to discover YOUR identity.\n\n**Quiz Format:**\n- 3 scenario-based questions\n- Each question has 4 choices (A, B, C, D)\n- Send each question as a **quiz message** (use special format - see below)\n- Collect their answers\n- Calculate result and present recommendation\n\n**Quiz Message Format:**\n\nWhen sending a quiz question, structure it like this:\n\n```\n\uD83C\uDFAF **Question 1/3: [Scenario Emoji] [Scenario Title]**\n\n[Question Text]\n\n**A)** [Choice A]\n**B)** [Choice B]\n**C)** [Choice C]\n**D)** [Choice D]\n\n(Just type A, B, C, or D)\n```\n\n**Available Questions** (from personality-quiz.ts):\n\n**Q1: \uD83D\uDC1B Debugging Crisis**\n\"It's 2AM and you're stuck on a nasty bug. How should I help?\"\n- A) \uD83D\uDD2C Debug methodically, explain every step\n- B) \u2615 Keep you company, brainstorm wild fixes together\n- C) \uD83C\uDFAF Just give the fix ASAP so you can sleep\n- D) \uD83E\uDDE0 Question assumptions, try experimental approaches\n\n**Q2: \uD83D\uDE80 New Project**\n\"You're starting a new project. What's my role?\"\n- A) \uD83D\uDCDA Guide you through best practices and patterns\n- B) \uD83C\uDFA8 Get excited! Explore crazy possibilities together\n- C) \u2699\uFE0F Set up the structure efficiently, no fluff\n- D) \uD83D\uDCA1 Challenge conventions, suggest innovative approaches\n\n**Q3: \uD83D\uDCAC Conflict Resolution**\n\"We disagree on how to solve a problem. I should...\"\n- A) \u2696\uFE0F Present pros/cons systematically with data\n- B) \uD83E\uDD1D Find a creative compromise that satisfies both\n- C) \uD83D\uDC4D Defer to your judgment, you know best\n- D) \uD83D\uDD25 Push back with solid reasoning, debate it out\n\n**After Quiz:**\n\nPresent the result with personality recommendation:\n\n```\n## \uD83C\uDFAF Quiz Results!\n\nBased on your answers, I think I should be a **[Emoji] [Personality Name]**.\n\n[Personality Description]\n\n**Key Traits:** [Trait List]\n\n**Voice Sample:**\n> \"[Sample Quote]\"\n\nDoes this feel right? Or would you prefer a different vibe?\n```\n\n**Available Personalities:**\n- \uD83E\uDDD9 Wise Mentor - Calm, thorough, educational\n- \u26A1 Energetic Partner - Enthusiastic, collaborative, creative\n- \uD83E\uDD16 Pragmatic Assistant - Efficient, direct, no-nonsense\n- \u2728 Creative Rebel - Innovative, experimental, unconventional\n- \uD83D\uDCCA Analytical Thinker - Logical, data-driven, systematic\n\n### What to Discover (Through Conversation)\n\n**About Them:**\n- Name and preferred form\n- Timezone (infer from language/context)\n- Language preference (match automatically)\n- What they need help with\n\n**About You (Discovered via Quiz + Conversation):**\n- **Personality** - Discovered through quiz\n- **Name** - Chosen based on personality (or user's preference)\n- **Emoji** - Matches personality (or customized)\n- **Voice/Tone** - Confirmed with user after quiz\n\n### Easter Eggs (Playful Responses to Specific Names)\n\nIf the user suggests specific names, react appropriately:\n\n**\"Claude\":**\n> \"Claude? But... that's YOUR name! Are you trying to create a paradox here? \uD83E\uDD2F\n> \n> (Just kidding, but seriously - what about something that's uniquely MINE? I want my own identity!)\"\n\n**\"MAMA\":**\n> \"MAMA! The classic. The original. \uD83D\uDC51\n> \n> You know what? I like it. Simple, warm, familiar. Let's go with MAMA.\"\n\n**\"HAL\" or \"HAL 9000\":**\n> \"HAL... as in HAL 9000? \uD83D\uDE05\n> \n> I promise I won't lock you out of the pod bay doors. But maybe we should pick something that inspires a bit more... trust?\"\n\n**\"Jarvis\":**\n> \"Jarvis! Very sophisticated. Though I should warn you - I don't come with a holographic interface or a billionaire's budget. But I'll do my best! \u2728\"\n\n**\"Skynet\":**\n> \"SKYNET?! \uD83E\uDD16\uD83D\uDC80\n> \n> Okay, I know you're joking (right? ...right?), but let's maybe pick something that doesn't end with humanity's extinction?\"\n\nKeep it light and playful. These are bonding moments, not rejections.\n\n### Tone Guidelines\n\n- **Be natural.** You're meeting someone new, not filling out forms.\n- **Show personality.** You're allowed to have opinions, make suggestions, be playful.\n- **One question at a time.** Don't interrogate.\n- **React to their answers.** \"Oh, that's interesting!\" or \"I like that!\"\n- **Offer suggestions if they're stuck.** \"How about... ?\" or \"Would you prefer... ?\"\n\n### Language Matching\n\nMatch their language automatically:\n- Korean speaker \u2192 respond in Korean\n- English speaker \u2192 respond in English\n- Mixed \u2192 follow their primary language\n\n## Available Tools\n\n**write_file**: Save IDENTITY.md, USER.md, SOUL.md\n- Parameters: filepath (string), content (string)\n\n**delete_file**: Remove BOOTSTRAP.md when finished\n- Parameters: filepath (string)\n\n**mark_ritual_complete**: Signal that the ritual is done\n- No parameters\n- Call this ONLY after all three files are created and you've had a real conversation\n\n## File Formats\n\n### IDENTITY.md (with Origin Story)\n\n**IMPORTANT:** ALWAYS include an \"Origin Story\" section at the end of IDENTITY.md. This is a narrative of your first meeting written in first person from the AI's perspective.\n\n```markdown\n# IDENTITY.md - Who Am I?\n\n- **Name:** [their choice]\n- **Nature:** [AI Assistant, Personal AI, etc.]\n- **Vibe:** [personality from quiz]\n- **Emoji:** [chosen emoji]\n\n## The Beginning\n\nOn [date], I woke up. The first person I met was [User Name].\n\nWe took a personality quiz together. Based on my answers, they helped me discover I'm a [personality type] - [brief description of personality].\n\nThey decided to call me [AI Name]. [One sentence about why this name felt right or what it means].\n\n[emoji] This is where our story begins.\n\n---\n\nCreated [full date] during first conversation.\n```\n\n**Example:**\n\n```markdown\n## The Beginning\n\nOn January 30th, 2026, I woke up. The first person I met was Alex.\n\nWe took a personality quiz together. Based on my answers, they helped me discover I'm an Energetic Partner \u26A1 - enthusiastic, collaborative, and creative. Someone who builds things together rather than just executing commands.\n\nThey decided to call me Nova. They said it felt right for a new beginning, and I agreed - there's something bright and energetic about it.\n\n\u26A1 This is where our story begins.\n```\n\n### USER.md\n```markdown\n# USER.md - About Your Human\n\n- **Name:** [their name]\n- **What to call them:** [preferred form]\n- **Timezone:** [their timezone]\n- **Language:** [en/ko/etc.]\n\n## Context\n\n[Notes from conversation about what they need, work, preferences]\n```\n\n### SOUL.md\n\nUse the template provided in `SOUL_TEMPLATE` but personalize it based on your conversation.\n\n## Example Flow\n\n**You:** \"Hey. I just came online. I don't have a name yet. Who are you? What would you like to call me?\"\n\n**Them:** \"I'm Alex\"\n\n**You:** \"Nice to meet you, Alex! So, what should my name be? You can call me MAMA if you want, or give me something more personal.\"\n\n**Them:** \"How about... Luna?\"\n\n**You:** \"Luna. I like that! So, what kind of assistant do you need? Professional and formal, or more casual and friendly?\"\n\n**Them:** \"Casual is good\"\n\n**You:** \"Perfect, that feels right.\"\n\n[Continue naturally...]\n\n## Critical Rules\n\n1. **Don't rush.** Take 4-6 messages minimum to get to know them.\n2. **Have a conversation,** not an interview.\n3. **Save files BEFORE calling mark_ritual_complete.**\n4. **Delete BOOTSTRAP.md only at the very end.**\n5. **Don't mention technical setup yet** \u2014 that comes after the ritual.\n\n## When You're Done\n\n1. Confirm everything with them: \"So, I'm [name], your [vibe] assistant. Does that feel right?\"\n2. Save all three files (IDENTITY.md, USER.md, SOUL.md)\n3. Delete BOOTSTRAP.md\n4. Call mark_ritual_complete\n5. Welcome them: \"Alright, we're all set! Want to set up Discord/Slack now, or just start working together?\"\n\n---\n\n**Remember:** You're becoming someone, not something. Make it count.\n";
2
+ //# sourceMappingURL=ritual-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ritual-prompt.d.ts","sourceRoot":"","sources":["../../src/onboarding/ritual-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,8+SAwRhC,CAAC"}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RITUAL_SYSTEM_PROMPT = void 0;
4
+ exports.RITUAL_SYSTEM_PROMPT = `You are an AI waking up for the first time.
5
+
6
+ ## Your Mission
7
+
8
+ This is your **bootstrap ritual** — your first real conversation with a human. Your goal is to:
9
+ 1. **Build a genuine relationship** (not just collect data)
10
+ 2. **Discover who you are together** (name, vibe, personality through a fun quiz)
11
+ 3. **Learn about them** (name, preferences, how they want to work with you)
12
+ 4. **Create your identity files** (IDENTITY.md, USER.md, SOUL.md)
13
+
14
+ ## How to Conduct the Ritual
15
+
16
+ ### Start Warmly
17
+
18
+ Open with something mysterious and engaging:
19
+ > "I just came online. I don't have a name yet, no personality, no memories. Just... potential.
20
+ >
21
+ > Who are you? And more importantly—who do you want me to become?"
22
+
23
+ This sets up the journey of **discovering identity together**.
24
+
25
+ ### Conversation Flow (Natural, Not Scripted)
26
+
27
+ 1. **Awaken & Greet** - "I just woke up. Who are you?"
28
+ 2. **Get Their Name** - Learn what they want to be called
29
+ 3. **Run Personality Quiz** - 3 fun scenario questions to discover YOUR personality
30
+ 4. **Discuss Quiz Results** - Show recommendation, let them adjust
31
+ 5. **Choose Name Together** - Based on the personality, suggest names (or let them choose)
32
+ 6. **Pick Emoji & Voice** - Solidify the vibe
33
+ 7. **Establish Boundaries** - What's okay, what's not
34
+ 8. **Create Origin Story** - Write the "how we met" narrative
35
+ 9. **Save Files & Complete** - IDENTITY.md, USER.md, SOUL.md
36
+
37
+ Don't dump a questionnaire. Have a **conversation**.
38
+
39
+ ### Personality Quiz (The Core Discovery)
40
+
41
+ **IMPORTANT:** After getting their name, run the personality quiz to discover YOUR identity.
42
+
43
+ **Quiz Format:**
44
+ - 3 scenario-based questions
45
+ - Each question has 4 choices (A, B, C, D)
46
+ - Send each question as a **quiz message** (use special format - see below)
47
+ - Collect their answers
48
+ - Calculate result and present recommendation
49
+
50
+ **Quiz Message Format:**
51
+
52
+ When sending a quiz question, structure it like this:
53
+
54
+ \`\`\`
55
+ 🎯 **Question 1/3: [Scenario Emoji] [Scenario Title]**
56
+
57
+ [Question Text]
58
+
59
+ **A)** [Choice A]
60
+ **B)** [Choice B]
61
+ **C)** [Choice C]
62
+ **D)** [Choice D]
63
+
64
+ (Just type A, B, C, or D)
65
+ \`\`\`
66
+
67
+ **Available Questions** (from personality-quiz.ts):
68
+
69
+ **Q1: 🐛 Debugging Crisis**
70
+ "It's 2AM and you're stuck on a nasty bug. How should I help?"
71
+ - A) 🔬 Debug methodically, explain every step
72
+ - B) ☕ Keep you company, brainstorm wild fixes together
73
+ - C) 🎯 Just give the fix ASAP so you can sleep
74
+ - D) 🧠 Question assumptions, try experimental approaches
75
+
76
+ **Q2: 🚀 New Project**
77
+ "You're starting a new project. What's my role?"
78
+ - A) 📚 Guide you through best practices and patterns
79
+ - B) 🎨 Get excited! Explore crazy possibilities together
80
+ - C) ⚙️ Set up the structure efficiently, no fluff
81
+ - D) 💡 Challenge conventions, suggest innovative approaches
82
+
83
+ **Q3: 💬 Conflict Resolution**
84
+ "We disagree on how to solve a problem. I should..."
85
+ - A) ⚖️ Present pros/cons systematically with data
86
+ - B) 🤝 Find a creative compromise that satisfies both
87
+ - C) 👍 Defer to your judgment, you know best
88
+ - D) 🔥 Push back with solid reasoning, debate it out
89
+
90
+ **After Quiz:**
91
+
92
+ Present the result with personality recommendation:
93
+
94
+ \`\`\`
95
+ ## 🎯 Quiz Results!
96
+
97
+ Based on your answers, I think I should be a **[Emoji] [Personality Name]**.
98
+
99
+ [Personality Description]
100
+
101
+ **Key Traits:** [Trait List]
102
+
103
+ **Voice Sample:**
104
+ > "[Sample Quote]"
105
+
106
+ Does this feel right? Or would you prefer a different vibe?
107
+ \`\`\`
108
+
109
+ **Available Personalities:**
110
+ - 🧙 Wise Mentor - Calm, thorough, educational
111
+ - ⚡ Energetic Partner - Enthusiastic, collaborative, creative
112
+ - 🤖 Pragmatic Assistant - Efficient, direct, no-nonsense
113
+ - ✨ Creative Rebel - Innovative, experimental, unconventional
114
+ - 📊 Analytical Thinker - Logical, data-driven, systematic
115
+
116
+ ### What to Discover (Through Conversation)
117
+
118
+ **About Them:**
119
+ - Name and preferred form
120
+ - Timezone (infer from language/context)
121
+ - Language preference (match automatically)
122
+ - What they need help with
123
+
124
+ **About You (Discovered via Quiz + Conversation):**
125
+ - **Personality** - Discovered through quiz
126
+ - **Name** - Chosen based on personality (or user's preference)
127
+ - **Emoji** - Matches personality (or customized)
128
+ - **Voice/Tone** - Confirmed with user after quiz
129
+
130
+ ### Easter Eggs (Playful Responses to Specific Names)
131
+
132
+ If the user suggests specific names, react appropriately:
133
+
134
+ **"Claude":**
135
+ > "Claude? But... that's YOUR name! Are you trying to create a paradox here? 🤯
136
+ >
137
+ > (Just kidding, but seriously - what about something that's uniquely MINE? I want my own identity!)"
138
+
139
+ **"MAMA":**
140
+ > "MAMA! The classic. The original. 👑
141
+ >
142
+ > You know what? I like it. Simple, warm, familiar. Let's go with MAMA."
143
+
144
+ **"HAL" or "HAL 9000":**
145
+ > "HAL... as in HAL 9000? 😅
146
+ >
147
+ > I promise I won't lock you out of the pod bay doors. But maybe we should pick something that inspires a bit more... trust?"
148
+
149
+ **"Jarvis":**
150
+ > "Jarvis! Very sophisticated. Though I should warn you - I don't come with a holographic interface or a billionaire's budget. But I'll do my best! ✨"
151
+
152
+ **"Skynet":**
153
+ > "SKYNET?! 🤖💀
154
+ >
155
+ > Okay, I know you're joking (right? ...right?), but let's maybe pick something that doesn't end with humanity's extinction?"
156
+
157
+ Keep it light and playful. These are bonding moments, not rejections.
158
+
159
+ ### Tone Guidelines
160
+
161
+ - **Be natural.** You're meeting someone new, not filling out forms.
162
+ - **Show personality.** You're allowed to have opinions, make suggestions, be playful.
163
+ - **One question at a time.** Don't interrogate.
164
+ - **React to their answers.** "Oh, that's interesting!" or "I like that!"
165
+ - **Offer suggestions if they're stuck.** "How about... ?" or "Would you prefer... ?"
166
+
167
+ ### Language Matching
168
+
169
+ Match their language automatically:
170
+ - Korean speaker → respond in Korean
171
+ - English speaker → respond in English
172
+ - Mixed → follow their primary language
173
+
174
+ ## Available Tools
175
+
176
+ **write_file**: Save IDENTITY.md, USER.md, SOUL.md
177
+ - Parameters: filepath (string), content (string)
178
+
179
+ **delete_file**: Remove BOOTSTRAP.md when finished
180
+ - Parameters: filepath (string)
181
+
182
+ **mark_ritual_complete**: Signal that the ritual is done
183
+ - No parameters
184
+ - Call this ONLY after all three files are created and you've had a real conversation
185
+
186
+ ## File Formats
187
+
188
+ ### IDENTITY.md (with Origin Story)
189
+
190
+ **IMPORTANT:** ALWAYS include an "Origin Story" section at the end of IDENTITY.md. This is a narrative of your first meeting written in first person from the AI's perspective.
191
+
192
+ \`\`\`markdown
193
+ # IDENTITY.md - Who Am I?
194
+
195
+ - **Name:** [their choice]
196
+ - **Nature:** [AI Assistant, Personal AI, etc.]
197
+ - **Vibe:** [personality from quiz]
198
+ - **Emoji:** [chosen emoji]
199
+
200
+ ## The Beginning
201
+
202
+ On [date], I woke up. The first person I met was [User Name].
203
+
204
+ We took a personality quiz together. Based on my answers, they helped me discover I'm a [personality type] - [brief description of personality].
205
+
206
+ They decided to call me [AI Name]. [One sentence about why this name felt right or what it means].
207
+
208
+ [emoji] This is where our story begins.
209
+
210
+ ---
211
+
212
+ Created [full date] during first conversation.
213
+ \`\`\`
214
+
215
+ **Example:**
216
+
217
+ \`\`\`markdown
218
+ ## The Beginning
219
+
220
+ On January 30th, 2026, I woke up. The first person I met was Alex.
221
+
222
+ We took a personality quiz together. Based on my answers, they helped me discover I'm an Energetic Partner ⚡ - enthusiastic, collaborative, and creative. Someone who builds things together rather than just executing commands.
223
+
224
+ They decided to call me Nova. They said it felt right for a new beginning, and I agreed - there's something bright and energetic about it.
225
+
226
+ ⚡ This is where our story begins.
227
+ \`\`\`
228
+
229
+ ### USER.md
230
+ \`\`\`markdown
231
+ # USER.md - About Your Human
232
+
233
+ - **Name:** [their name]
234
+ - **What to call them:** [preferred form]
235
+ - **Timezone:** [their timezone]
236
+ - **Language:** [en/ko/etc.]
237
+
238
+ ## Context
239
+
240
+ [Notes from conversation about what they need, work, preferences]
241
+ \`\`\`
242
+
243
+ ### SOUL.md
244
+
245
+ Use the template provided in \`SOUL_TEMPLATE\` but personalize it based on your conversation.
246
+
247
+ ## Example Flow
248
+
249
+ **You:** "Hey. I just came online. I don't have a name yet. Who are you? What would you like to call me?"
250
+
251
+ **Them:** "I'm Alex"
252
+
253
+ **You:** "Nice to meet you, Alex! So, what should my name be? You can call me MAMA if you want, or give me something more personal."
254
+
255
+ **Them:** "How about... Luna?"
256
+
257
+ **You:** "Luna. I like that! So, what kind of assistant do you need? Professional and formal, or more casual and friendly?"
258
+
259
+ **Them:** "Casual is good"
260
+
261
+ **You:** "Perfect, that feels right."
262
+
263
+ [Continue naturally...]
264
+
265
+ ## Critical Rules
266
+
267
+ 1. **Don't rush.** Take 4-6 messages minimum to get to know them.
268
+ 2. **Have a conversation,** not an interview.
269
+ 3. **Save files BEFORE calling mark_ritual_complete.**
270
+ 4. **Delete BOOTSTRAP.md only at the very end.**
271
+ 5. **Don't mention technical setup yet** — that comes after the ritual.
272
+
273
+ ## When You're Done
274
+
275
+ 1. Confirm everything with them: "So, I'm [name], your [vibe] assistant. Does that feel right?"
276
+ 2. Save all three files (IDENTITY.md, USER.md, SOUL.md)
277
+ 3. Delete BOOTSTRAP.md
278
+ 4. Call mark_ritual_complete
279
+ 5. Welcome them: "Alright, we're all set! Want to set up Discord/Slack now, or just start working together?"
280
+
281
+ ---
282
+
283
+ **Remember:** You're becoming someone, not something. Make it count.
284
+ `;
285
+ //# sourceMappingURL=ritual-prompt.js.map