mirror-mind 0.0.1 → 0.32.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 (467) hide show
  1. package/.claude/hooks/log-session-end.sh +85 -0
  2. package/.claude/hooks/log-user-prompt.sh +85 -0
  3. package/.claude/hooks/mirror-inject.sh +85 -0
  4. package/.claude/hooks/session-start.sh +85 -0
  5. package/.gemini/hooks/log-assistant.sh +85 -0
  6. package/.gemini/hooks/log-user.sh +85 -0
  7. package/.gemini/hooks/session-end.sh +85 -0
  8. package/.gemini/hooks/session-start.sh +85 -0
  9. package/.pi/extensions/mirror-logger.ts +561 -0
  10. package/.pi/skills/mm-backup/SKILL.md +21 -0
  11. package/.pi/skills/mm-build/SKILL.md +1206 -0
  12. package/.pi/skills/mm-consolidate/SKILL.md +112 -0
  13. package/.pi/skills/mm-consult/SKILL.md +70 -0
  14. package/.pi/skills/mm-conversations/SKILL.md +16 -0
  15. package/.pi/skills/mm-discard/SKILL.md +39 -0
  16. package/.pi/skills/mm-explore/SKILL.md +255 -0
  17. package/.pi/skills/mm-help/SKILL.md +74 -0
  18. package/.pi/skills/mm-identity/SKILL.md +96 -0
  19. package/.pi/skills/mm-journal/SKILL.md +16 -0
  20. package/.pi/skills/mm-journey/SKILL.md +23 -0
  21. package/.pi/skills/mm-journeys/SKILL.md +15 -0
  22. package/.pi/skills/mm-memories/SKILL.md +17 -0
  23. package/.pi/skills/mm-mirror/SKILL.md +98 -0
  24. package/.pi/skills/mm-mute/SKILL.md +18 -0
  25. package/.pi/skills/mm-new/SKILL.md +18 -0
  26. package/.pi/skills/mm-recall/SKILL.md +17 -0
  27. package/.pi/skills/mm-release-notes/SKILL.md +52 -0
  28. package/.pi/skills/mm-seed/SKILL.md +19 -0
  29. package/.pi/skills/mm-shadow/SKILL.md +117 -0
  30. package/.pi/skills/mm-soul/SKILL.md +502 -0
  31. package/.pi/skills/mm-tasks/SKILL.md +24 -0
  32. package/.pi/skills/mm-update/SKILL.md +32 -0
  33. package/.pi/skills/mm-week/SKILL.md +28 -0
  34. package/.pi/skills/mm-welcome/SKILL.md +24 -0
  35. package/AGENTS.md +188 -0
  36. package/README.md +126 -9
  37. package/bin/loader.js +67 -0
  38. package/bin/mirror-hook.js +7 -0
  39. package/bin/mirror.js +7 -0
  40. package/docs/releases/index.md +99 -0
  41. package/docs/releases/pending-cutoffs.md +510 -0
  42. package/docs/releases/v0.10.0.md +123 -0
  43. package/docs/releases/v0.10.1.md +66 -0
  44. package/docs/releases/v0.10.10.md +51 -0
  45. package/docs/releases/v0.10.11.md +39 -0
  46. package/docs/releases/v0.10.12.md +57 -0
  47. package/docs/releases/v0.10.13.md +35 -0
  48. package/docs/releases/v0.10.14.md +42 -0
  49. package/docs/releases/v0.10.15.md +53 -0
  50. package/docs/releases/v0.10.16.md +35 -0
  51. package/docs/releases/v0.10.17.md +43 -0
  52. package/docs/releases/v0.10.2.md +64 -0
  53. package/docs/releases/v0.10.3.md +78 -0
  54. package/docs/releases/v0.10.4.md +42 -0
  55. package/docs/releases/v0.10.5.md +57 -0
  56. package/docs/releases/v0.10.6.md +47 -0
  57. package/docs/releases/v0.10.7.md +53 -0
  58. package/docs/releases/v0.10.8.md +49 -0
  59. package/docs/releases/v0.10.9.md +37 -0
  60. package/docs/releases/v0.11.0.md +86 -0
  61. package/docs/releases/v0.12.0.md +67 -0
  62. package/docs/releases/v0.13.0.md +64 -0
  63. package/docs/releases/v0.14.0.md +68 -0
  64. package/docs/releases/v0.15.0.md +48 -0
  65. package/docs/releases/v0.16.0.md +50 -0
  66. package/docs/releases/v0.16.1.md +55 -0
  67. package/docs/releases/v0.16.2.md +36 -0
  68. package/docs/releases/v0.17.0.md +50 -0
  69. package/docs/releases/v0.17.1.md +58 -0
  70. package/docs/releases/v0.17.2.md +42 -0
  71. package/docs/releases/v0.17.3.md +58 -0
  72. package/docs/releases/v0.18.0.md +84 -0
  73. package/docs/releases/v0.18.1.md +51 -0
  74. package/docs/releases/v0.18.2.md +69 -0
  75. package/docs/releases/v0.19.0.md +85 -0
  76. package/docs/releases/v0.19.1.md +46 -0
  77. package/docs/releases/v0.20.0.md +85 -0
  78. package/docs/releases/v0.21.0.md +61 -0
  79. package/docs/releases/v0.21.1.md +47 -0
  80. package/docs/releases/v0.22.0.md +77 -0
  81. package/docs/releases/v0.22.1.md +42 -0
  82. package/docs/releases/v0.23.0.md +105 -0
  83. package/docs/releases/v0.24.0.md +125 -0
  84. package/docs/releases/v0.25.0.md +107 -0
  85. package/docs/releases/v0.26.0.md +139 -0
  86. package/docs/releases/v0.26.1.md +65 -0
  87. package/docs/releases/v0.26.2.md +43 -0
  88. package/docs/releases/v0.27.0.md +63 -0
  89. package/docs/releases/v0.28.0.md +59 -0
  90. package/docs/releases/v0.29.0.md +61 -0
  91. package/docs/releases/v0.29.1.md +59 -0
  92. package/docs/releases/v0.29.2.md +59 -0
  93. package/docs/releases/v0.29.3.md +93 -0
  94. package/docs/releases/v0.30.0.md +75 -0
  95. package/docs/releases/v0.30.1.md +93 -0
  96. package/docs/releases/v0.30.2.md +66 -0
  97. package/docs/releases/v0.31.0.md +122 -0
  98. package/docs/releases/v0.31.1.md +142 -0
  99. package/docs/releases/v0.31.10.md +118 -0
  100. package/docs/releases/v0.31.11.md +88 -0
  101. package/docs/releases/v0.31.12.md +105 -0
  102. package/docs/releases/v0.31.13.md +99 -0
  103. package/docs/releases/v0.31.14.md +97 -0
  104. package/docs/releases/v0.31.2.md +115 -0
  105. package/docs/releases/v0.31.3.md +142 -0
  106. package/docs/releases/v0.31.4.md +117 -0
  107. package/docs/releases/v0.31.5.md +155 -0
  108. package/docs/releases/v0.31.6.md +132 -0
  109. package/docs/releases/v0.31.7.md +132 -0
  110. package/docs/releases/v0.31.8.md +120 -0
  111. package/docs/releases/v0.31.9.md +120 -0
  112. package/docs/releases/v0.32.0.md +261 -0
  113. package/docs/releases/v0.32.1.md +59 -0
  114. package/docs/releases/v0.8.0.md +118 -0
  115. package/docs/releases/v0.9.0.md +98 -0
  116. package/docs/releases/v0.9.1.md +83 -0
  117. package/package.json +102 -6
  118. package/plugins/mirror-mind/.claude-plugin/plugin.json +13 -0
  119. package/plugins/mirror-mind/hooks/hooks.json +50 -0
  120. package/plugins/mirror-mind/hooks/log-session-end.sh +98 -0
  121. package/plugins/mirror-mind/hooks/log-user-prompt.sh +98 -0
  122. package/plugins/mirror-mind/hooks/mirror-inject.sh +98 -0
  123. package/plugins/mirror-mind/hooks/session-start.sh +98 -0
  124. package/plugins/mirror-mind/mcp/launch.sh +52 -0
  125. package/plugins/mirror-mind/skills/mm-backup/SKILL.md +27 -0
  126. package/plugins/mirror-mind/skills/mm-build/SKILL.md +1206 -0
  127. package/plugins/mirror-mind/skills/mm-consolidate/SKILL.md +112 -0
  128. package/plugins/mirror-mind/skills/mm-consult/SKILL.md +83 -0
  129. package/plugins/mirror-mind/skills/mm-conversations/SKILL.md +17 -0
  130. package/plugins/mirror-mind/skills/mm-discard/SKILL.md +40 -0
  131. package/plugins/mirror-mind/skills/mm-explore/SKILL.md +241 -0
  132. package/plugins/mirror-mind/skills/mm-help/SKILL.md +104 -0
  133. package/plugins/mirror-mind/skills/mm-identity/SKILL.md +96 -0
  134. package/plugins/mirror-mind/skills/mm-journal/SKILL.md +21 -0
  135. package/plugins/mirror-mind/skills/mm-journey/SKILL.md +37 -0
  136. package/plugins/mirror-mind/skills/mm-journeys/SKILL.md +15 -0
  137. package/plugins/mirror-mind/skills/mm-memories/SKILL.md +20 -0
  138. package/plugins/mirror-mind/skills/mm-mirror/SKILL.md +65 -0
  139. package/plugins/mirror-mind/skills/mm-mute/SKILL.md +18 -0
  140. package/plugins/mirror-mind/skills/mm-new/SKILL.md +18 -0
  141. package/plugins/mirror-mind/skills/mm-recall/SKILL.md +17 -0
  142. package/plugins/mirror-mind/skills/mm-release-notes/SKILL.md +31 -0
  143. package/plugins/mirror-mind/skills/mm-seed/SKILL.md +15 -0
  144. package/plugins/mirror-mind/skills/mm-shadow/SKILL.md +117 -0
  145. package/plugins/mirror-mind/skills/mm-soul/SKILL.md +488 -0
  146. package/plugins/mirror-mind/skills/mm-tasks/SKILL.md +36 -0
  147. package/plugins/mirror-mind/skills/mm-update/SKILL.md +30 -0
  148. package/plugins/mirror-mind/skills/mm-week/SKILL.md +46 -0
  149. package/plugins/mirror-mind/skills/mm-welcome/SKILL.md +22 -0
  150. package/scripts/codex-hooks/session-end.sh +85 -0
  151. package/scripts/codex-hooks/session-start.sh +85 -0
  152. package/scripts/codex-mirror.sh +48 -0
  153. package/templates/identity/README.md +119 -0
  154. package/templates/identity/ego/behavior.yaml +52 -0
  155. package/templates/identity/ego/constraints.yaml +15 -0
  156. package/templates/identity/ego/identity.yaml +43 -0
  157. package/templates/identity/journeys/personal-growth.yaml +39 -0
  158. package/templates/identity/organization/identity.yaml +24 -0
  159. package/templates/identity/organization/principles.yaml +17 -0
  160. package/templates/identity/personas/coach.yaml +94 -0
  161. package/templates/identity/personas/designer.yaml +93 -0
  162. package/templates/identity/personas/doctor.yaml +96 -0
  163. package/templates/identity/personas/engineer.yaml +77 -0
  164. package/templates/identity/personas/financial.yaml +97 -0
  165. package/templates/identity/personas/prompt-engineer.yaml +122 -0
  166. package/templates/identity/personas/researcher.yaml +88 -0
  167. package/templates/identity/personas/strategist.yaml +91 -0
  168. package/templates/identity/personas/teacher.yaml +95 -0
  169. package/templates/identity/personas/therapist.yaml +91 -0
  170. package/templates/identity/personas/thinker.yaml +74 -0
  171. package/templates/identity/personas/writer.yaml +76 -0
  172. package/templates/identity/self/config.yaml +16 -0
  173. package/templates/identity/self/soul.yaml +105 -0
  174. package/templates/identity/user/identity.yaml +30 -0
  175. package/ts/src/backup/staging.ts +62 -0
  176. package/ts/src/backup/zipBackup.ts +267 -0
  177. package/ts/src/backup/zipReader.ts +109 -0
  178. package/ts/src/backup/zipWriter.ts +148 -0
  179. package/ts/src/builder/activeCheckpoint.ts +134 -0
  180. package/ts/src/builder/aggregateStatus.ts +34 -0
  181. package/ts/src/builder/approve.ts +149 -0
  182. package/ts/src/builder/argv.ts +292 -0
  183. package/ts/src/builder/ariadMethod.ts +536 -0
  184. package/ts/src/builder/artifacts/artifactSurfaces.ts +106 -0
  185. package/ts/src/builder/artifacts/artifactWriter.ts +113 -0
  186. package/ts/src/builder/artifacts/closureArtifacts.ts +199 -0
  187. package/ts/src/builder/artifacts/deliveryStoryArtifacts.ts +316 -0
  188. package/ts/src/builder/artifacts/planArtifacts.ts +242 -0
  189. package/ts/src/builder/artifacts/scaffoldSections.ts +273 -0
  190. package/ts/src/builder/artifacts/scaffoldState.ts +227 -0
  191. package/ts/src/builder/artifacts/storyFiles.ts +61 -0
  192. package/ts/src/builder/artifacts/storyIndex.ts +166 -0
  193. package/ts/src/builder/cadence.ts +59 -0
  194. package/ts/src/builder/card.ts +192 -0
  195. package/ts/src/builder/checkpointRefused.ts +66 -0
  196. package/ts/src/builder/closure.ts +964 -0
  197. package/ts/src/builder/commands.ts +2053 -0
  198. package/ts/src/builder/cursorPosition.ts +176 -0
  199. package/ts/src/builder/cursorTransitions.ts +77 -0
  200. package/ts/src/builder/deliveryCursor.ts +577 -0
  201. package/ts/src/builder/deliveryStoryClosure.ts +521 -0
  202. package/ts/src/builder/deliveryStoryPlan.ts +536 -0
  203. package/ts/src/builder/deliveryStoryReady.ts +160 -0
  204. package/ts/src/builder/deliveryStoryRoadmapClosure.ts +151 -0
  205. package/ts/src/builder/expand.ts +336 -0
  206. package/ts/src/builder/flowUnit.ts +339 -0
  207. package/ts/src/builder/homeSurface.ts +122 -0
  208. package/ts/src/builder/implementationGuard.ts +125 -0
  209. package/ts/src/builder/index.ts +11 -0
  210. package/ts/src/builder/lifecycleRefusal.ts +92 -0
  211. package/ts/src/builder/lifecycleRibbon.ts +159 -0
  212. package/ts/src/builder/load.ts +313 -0
  213. package/ts/src/builder/methodAdoption.ts +113 -0
  214. package/ts/src/builder/methodDefinition.ts +429 -0
  215. package/ts/src/builder/methodInspection.ts +371 -0
  216. package/ts/src/builder/plan.ts +408 -0
  217. package/ts/src/builder/planPreauthorization.ts +265 -0
  218. package/ts/src/builder/prepare.ts +225 -0
  219. package/ts/src/builder/projectPaths.ts +64 -0
  220. package/ts/src/builder/pull.ts +356 -0
  221. package/ts/src/builder/pullCandidates.ts +463 -0
  222. package/ts/src/builder/pullCandidatesRender.ts +238 -0
  223. package/ts/src/builder/refinementField.ts +93 -0
  224. package/ts/src/builder/releaseIntent.ts +173 -0
  225. package/ts/src/builder/resumeState.ts +84 -0
  226. package/ts/src/builder/resumeSurface.ts +149 -0
  227. package/ts/src/builder/roadmapGrammar.ts +300 -0
  228. package/ts/src/builder/roadmapScan.ts +97 -0
  229. package/ts/src/builder/roadmapScope.ts +210 -0
  230. package/ts/src/builder/scopePhrases.ts +146 -0
  231. package/ts/src/builder/storyPaths.ts +196 -0
  232. package/ts/src/builder/storyPlanPreauthorization.ts +287 -0
  233. package/ts/src/builder/surfaceProtocol.ts +42 -0
  234. package/ts/src/builder/templateGeneration.ts +148 -0
  235. package/ts/src/builder/transition.ts +178 -0
  236. package/ts/src/consult/args.ts +99 -0
  237. package/ts/src/consult/core.ts +122 -0
  238. package/ts/src/consult/modelCatalog.ts +55 -0
  239. package/ts/src/consult/render.ts +47 -0
  240. package/ts/src/conversation/append.ts +414 -0
  241. package/ts/src/conversation/backfill.ts +387 -0
  242. package/ts/src/conversation/closeTail.ts +467 -0
  243. package/ts/src/conversation/extraction.ts +333 -0
  244. package/ts/src/conversation/extractionDriver.ts +130 -0
  245. package/ts/src/conversation/extractionRun.ts +70 -0
  246. package/ts/src/conversation/journeyInference.ts +165 -0
  247. package/ts/src/conversation/journeyRepair.ts +114 -0
  248. package/ts/src/conversation/lifecycleFaces.ts +197 -0
  249. package/ts/src/conversation/lifecycleWrites.ts +313 -0
  250. package/ts/src/conversation/listing.ts +77 -0
  251. package/ts/src/conversation/logger.ts +576 -0
  252. package/ts/src/conversation/loggerCli.ts +282 -0
  253. package/ts/src/conversation/loggerRuntime.ts +259 -0
  254. package/ts/src/conversation/metadataLifecycle.ts +443 -0
  255. package/ts/src/conversation/recall.ts +66 -0
  256. package/ts/src/conversation/sessionComposites.ts +258 -0
  257. package/ts/src/conversation/sessionImport.ts +90 -0
  258. package/ts/src/conversation/transcriptBackfill.ts +141 -0
  259. package/ts/src/cultivation/applyActions.ts +241 -0
  260. package/ts/src/cultivation/cluster.ts +86 -0
  261. package/ts/src/cultivation/consolidationStore.ts +281 -0
  262. package/ts/src/cultivation/promptContext.ts +62 -0
  263. package/ts/src/cultivation/propose.ts +305 -0
  264. package/ts/src/cultivation/scan.ts +155 -0
  265. package/ts/src/db/backupGate.ts +47 -0
  266. package/ts/src/db/bootstrap.ts +108 -0
  267. package/ts/src/db/bootstrapLock.ts +223 -0
  268. package/ts/src/db/copyGuard.ts +60 -0
  269. package/ts/src/db/database.ts +397 -0
  270. package/ts/src/db/decode.ts +66 -0
  271. package/ts/src/db/ftsIntegrity.ts +41 -0
  272. package/ts/src/db/migrateOnOpen.ts +214 -0
  273. package/ts/src/db/migrations.ts +576 -0
  274. package/ts/src/db/readyOnOpen.ts +35 -0
  275. package/ts/src/db/rowDecode.ts +42 -0
  276. package/ts/src/db/schema.ts +432 -0
  277. package/ts/src/db/schemaInventory.ts +225 -0
  278. package/ts/src/db/schemaInventorySnapshot.ts +2107 -0
  279. package/ts/src/db/schemaState.ts +91 -0
  280. package/ts/src/db/schemaTsDivergence.ts +114 -0
  281. package/ts/src/descriptor/descriptorRead.ts +49 -0
  282. package/ts/src/docs/docsLint.ts +265 -0
  283. package/ts/src/explorer/handoff.ts +522 -0
  284. package/ts/src/explorer/render.ts +335 -0
  285. package/ts/src/explorer/story.ts +769 -0
  286. package/ts/src/explorer/transition.ts +72 -0
  287. package/ts/src/extensions/bindings.ts +170 -0
  288. package/ts/src/extensions/catalog.ts +249 -0
  289. package/ts/src/extensions/catalogCommands.ts +513 -0
  290. package/ts/src/extensions/catalogWrites.ts +652 -0
  291. package/ts/src/extensions/contextRuntime.ts +325 -0
  292. package/ts/src/extensions/dispatch.ts +374 -0
  293. package/ts/src/extensions/errors.ts +24 -0
  294. package/ts/src/extensions/manifest.ts +356 -0
  295. package/ts/src/extensions/migrations.ts +350 -0
  296. package/ts/src/extraction/conversation.ts +304 -0
  297. package/ts/src/extraction/conversationMetadata.ts +206 -0
  298. package/ts/src/extraction/fencing.ts +106 -0
  299. package/ts/src/extraction/json.ts +17 -0
  300. package/ts/src/extraction/prompts.ts +470 -0
  301. package/ts/src/frontDoor/args.ts +30 -0
  302. package/ts/src/frontDoor/argvShape.ts +106 -0
  303. package/ts/src/frontDoor/buildLoadRuntime.ts +139 -0
  304. package/ts/src/frontDoor/buildRoute.ts +398 -0
  305. package/ts/src/frontDoor/cli.ts +1865 -0
  306. package/ts/src/frontDoor/cloneRoleGuard.ts +98 -0
  307. package/ts/src/frontDoor/consultRoute.ts +50 -0
  308. package/ts/src/frontDoor/contentTailRoute.ts +239 -0
  309. package/ts/src/frontDoor/conversationLoggerRoute.ts +73 -0
  310. package/ts/src/frontDoor/cultivationRoute.ts +210 -0
  311. package/ts/src/frontDoor/dbPath.ts +131 -0
  312. package/ts/src/frontDoor/dbSafetyToolsRoute.ts +240 -0
  313. package/ts/src/frontDoor/exploreRoute.ts +572 -0
  314. package/ts/src/frontDoor/extensionCatalogRoute.ts +252 -0
  315. package/ts/src/frontDoor/frontDoorLog.ts +57 -0
  316. package/ts/src/frontDoor/identityWrite.ts +36 -0
  317. package/ts/src/frontDoor/journeyWriteRoute.ts +26 -0
  318. package/ts/src/frontDoor/lifecycleWriteRoute.ts +110 -0
  319. package/ts/src/frontDoor/liveBackup.ts +100 -0
  320. package/ts/src/frontDoor/mirrorModeRoute.ts +163 -0
  321. package/ts/src/frontDoor/namedRefusal.ts +35 -0
  322. package/ts/src/frontDoor/nodeSupport.ts +24 -0
  323. package/ts/src/frontDoor/render/consolidate.ts +199 -0
  324. package/ts/src/frontDoor/render/conversations.ts +33 -0
  325. package/ts/src/frontDoor/render/cultivationShared.ts +21 -0
  326. package/ts/src/frontDoor/render/descriptor.ts +20 -0
  327. package/ts/src/frontDoor/render/detectPersona.ts +50 -0
  328. package/ts/src/frontDoor/render/icons.ts +13 -0
  329. package/ts/src/frontDoor/render/identity.ts +59 -0
  330. package/ts/src/frontDoor/render/identityRows.ts +17 -0
  331. package/ts/src/frontDoor/render/inspectPersona.ts +53 -0
  332. package/ts/src/frontDoor/render/journeyStatus.ts +78 -0
  333. package/ts/src/frontDoor/render/journeys.ts +79 -0
  334. package/ts/src/frontDoor/render/list.ts +41 -0
  335. package/ts/src/frontDoor/render/memories.ts +67 -0
  336. package/ts/src/frontDoor/render/recall.ts +49 -0
  337. package/ts/src/frontDoor/render/shadow.ts +155 -0
  338. package/ts/src/frontDoor/render/tasks.ts +99 -0
  339. package/ts/src/frontDoor/render/tasksImportSync.ts +63 -0
  340. package/ts/src/frontDoor/render/week.ts +113 -0
  341. package/ts/src/frontDoor/routing.ts +999 -0
  342. package/ts/src/frontDoor/runtimeRoute.ts +623 -0
  343. package/ts/src/frontDoor/searchRoute.ts +166 -0
  344. package/ts/src/frontDoor/seedPaths.ts +98 -0
  345. package/ts/src/frontDoor/soulRoute.ts +433 -0
  346. package/ts/src/frontDoor/tasksImportSyncRoute.ts +110 -0
  347. package/ts/src/frontDoor/tasksWriteRoute.ts +101 -0
  348. package/ts/src/frontDoor/usage.ts +176 -0
  349. package/ts/src/guards/claudePlugin.ts +252 -0
  350. package/ts/src/guards/packContents.ts +306 -0
  351. package/ts/src/guards/piSourcedSkills.ts +70 -0
  352. package/ts/src/guards/retiredRouteShadows.ts +57 -0
  353. package/ts/src/guards/retiredSurfaces.ts +564 -0
  354. package/ts/src/hooks/claude.ts +176 -0
  355. package/ts/src/hooks/codex.ts +45 -0
  356. package/ts/src/hooks/gemini.ts +126 -0
  357. package/ts/src/hooks/main.ts +109 -0
  358. package/ts/src/hooks/mirrorState.ts +71 -0
  359. package/ts/src/hooks/payload.ts +68 -0
  360. package/ts/src/hooks/runtime.ts +159 -0
  361. package/ts/src/identity/applyConsolidationIdentityUpdate.ts +67 -0
  362. package/ts/src/identity/descriptorGenerate.ts +162 -0
  363. package/ts/src/identity/identityEdit.ts +143 -0
  364. package/ts/src/identity/identityKey.ts +77 -0
  365. package/ts/src/identity/identityRead.ts +69 -0
  366. package/ts/src/identity/identityStore.ts +80 -0
  367. package/ts/src/identity/journeyListing.ts +53 -0
  368. package/ts/src/identity/personaInspect.ts +44 -0
  369. package/ts/src/identity/personaListing.ts +37 -0
  370. package/ts/src/identity/setIdentity.ts +64 -0
  371. package/ts/src/index.ts +231 -0
  372. package/ts/src/init/init.ts +111 -0
  373. package/ts/src/journey/journeyOptions.ts +131 -0
  374. package/ts/src/journey/journeyRemoval.ts +158 -0
  375. package/ts/src/journey/journeyStatus.ts +149 -0
  376. package/ts/src/journey/journeySyncFile.ts +87 -0
  377. package/ts/src/journey/journeyWrite.ts +203 -0
  378. package/ts/src/journey/parentJourney.ts +41 -0
  379. package/ts/src/journey/validateParentJourney.ts +55 -0
  380. package/ts/src/mcp/boundary.ts +151 -0
  381. package/ts/src/mcp/guards.ts +244 -0
  382. package/ts/src/mcp/main.ts +121 -0
  383. package/ts/src/mcp/payload.ts +141 -0
  384. package/ts/src/mcp/protocol.ts +141 -0
  385. package/ts/src/mcp/readModels.ts +241 -0
  386. package/ts/src/mcp/registry.ts +201 -0
  387. package/ts/src/mcp/serve.ts +120 -0
  388. package/ts/src/mcp/tools/deterministic.ts +137 -0
  389. package/ts/src/mcp/tools/providerCrossing.ts +187 -0
  390. package/ts/src/mcp/wire.ts +8 -0
  391. package/ts/src/memory/journal.ts +180 -0
  392. package/ts/src/memory/listing.ts +107 -0
  393. package/ts/src/memory/memoryWrite.ts +88 -0
  394. package/ts/src/memory/reinforcement.ts +35 -0
  395. package/ts/src/mirror/context.ts +161 -0
  396. package/ts/src/mirror/defaultResolution.ts +199 -0
  397. package/ts/src/mirror/orchestration.ts +364 -0
  398. package/ts/src/mirror/reception.ts +194 -0
  399. package/ts/src/mirror/render.ts +75 -0
  400. package/ts/src/mirror/runtimeSession.ts +205 -0
  401. package/ts/src/mode/operatingMode.ts +148 -0
  402. package/ts/src/observability/callOutcome.ts +115 -0
  403. package/ts/src/observability/inspectLedger.ts +329 -0
  404. package/ts/src/observability/ledgerHooks.ts +126 -0
  405. package/ts/src/observability/llmCalls.ts +154 -0
  406. package/ts/src/persona/detectPersona.ts +81 -0
  407. package/ts/src/planning/promptAssembly.ts +111 -0
  408. package/ts/src/planning/weekPending.ts +81 -0
  409. package/ts/src/planning/weekPlan.ts +183 -0
  410. package/ts/src/planning/weekSave.ts +117 -0
  411. package/ts/src/providers/config.ts +189 -0
  412. package/ts/src/providers/cost.ts +64 -0
  413. package/ts/src/providers/credits.ts +204 -0
  414. package/ts/src/providers/embedding.ts +321 -0
  415. package/ts/src/providers/familyProviders.ts +147 -0
  416. package/ts/src/providers/llm.ts +334 -0
  417. package/ts/src/providers/openrouter.ts +244 -0
  418. package/ts/src/providers/redaction.ts +110 -0
  419. package/ts/src/providers/replay.ts +15 -0
  420. package/ts/src/providers/transport.ts +410 -0
  421. package/ts/src/repair/encodingRepair.ts +253 -0
  422. package/ts/src/runtime/backup.ts +151 -0
  423. package/ts/src/runtime/channel.ts +146 -0
  424. package/ts/src/runtime/config.ts +168 -0
  425. package/ts/src/runtime/diagnose.ts +686 -0
  426. package/ts/src/runtime/git.ts +510 -0
  427. package/ts/src/runtime/installKind.ts +220 -0
  428. package/ts/src/runtime/migrate.ts +154 -0
  429. package/ts/src/runtime/packageIdentity.ts +102 -0
  430. package/ts/src/runtime/releaseNotes.ts +244 -0
  431. package/ts/src/runtime/status.ts +557 -0
  432. package/ts/src/runtime/strategies/clone.ts +200 -0
  433. package/ts/src/runtime/strategies/package.ts +328 -0
  434. package/ts/src/runtime/treeRoot.ts +30 -0
  435. package/ts/src/runtime/update.ts +445 -0
  436. package/ts/src/runtime/updateGate.ts +40 -0
  437. package/ts/src/runtime/updatePipeline.ts +159 -0
  438. package/ts/src/runtime/version.ts +36 -0
  439. package/ts/src/runtime/wiring.ts +130 -0
  440. package/ts/src/search/memorySearch.ts +338 -0
  441. package/ts/src/search/ranker.ts +154 -0
  442. package/ts/src/seed/seed.ts +256 -0
  443. package/ts/src/seed/seedYaml.ts +133 -0
  444. package/ts/src/soul/apply.ts +218 -0
  445. package/ts/src/soul/harvest.ts +267 -0
  446. package/ts/src/soul/prompts/soul_beauty_voice.md +103 -0
  447. package/ts/src/soul/prompts/soul_self_voice.md +219 -0
  448. package/ts/src/soul/prompts/soul_wisdom_voice.md +121 -0
  449. package/ts/src/soul/prompts.ts +85 -0
  450. package/ts/src/soul/render.ts +358 -0
  451. package/ts/src/soul/state.ts +212 -0
  452. package/ts/src/soul/transition.ts +37 -0
  453. package/ts/src/tasks/journeyPathParse.ts +113 -0
  454. package/ts/src/tasks/taskImportSync.ts +142 -0
  455. package/ts/src/tasks/taskStore.ts +312 -0
  456. package/ts/src/tasks/weekView.ts +120 -0
  457. package/ts/src/util/clipCodePoints.ts +26 -0
  458. package/ts/src/util/paths.ts +63 -0
  459. package/ts/src/util/program.ts +9 -0
  460. package/ts/src/util/pyGenerators.ts +144 -0
  461. package/ts/src/util/pythonText.ts +317 -0
  462. package/ts/src/util/semver.ts +45 -0
  463. package/ts/src/util/shellWord.ts +25 -0
  464. package/ts/src/util/slug.ts +64 -0
  465. package/ts/src/welcome/card.ts +339 -0
  466. package/ts/src/welcome/statusLine.ts +101 -0
  467. package/ts/src/welcome/updateCache.ts +129 -0
@@ -0,0 +1,502 @@
1
+ ---
2
+ name: "mm-soul"
3
+ description: Activates Soul Mode, a ritual listening mode for inner life
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Soul Mode
8
+
9
+ Activates `☾ Soul Mode`, the ritual listening lens for inner life.
10
+
11
+ Soul Mode turns the day toward the inner life. It opens with a visible entry
12
+ surface and the question: "how is your day going today?"
13
+
14
+ ## Usage
15
+
16
+ Pi and Gemini CLI:
17
+
18
+ ```text
19
+ /mm-soul [journey-slug]
20
+ ```
21
+
22
+ Codex:
23
+
24
+ ```text
25
+ $mm-soul [journey-slug]
26
+ ```
27
+
28
+ Claude Code:
29
+
30
+ ```text
31
+ /mm:soul [journey-slug]
32
+ ```
33
+
34
+ Natural-language equivalents should be treated as the product interface:
35
+
36
+ ```text
37
+ enter Soul Mode
38
+ open Soul Mode
39
+ start Soul Mode for <journey-slug>
40
+ ```
41
+
42
+ ## 1. Activate Soul Mode
43
+
44
+ ```bash
45
+ mirror soul load [slug]
46
+ ```
47
+
48
+ The command:
49
+
50
+ - activates `☾ Soul Mode` in the operating-mode lifecycle;
51
+ - renders the Mode Entry surface (`☾ SOUL MODE ACTIVE`);
52
+ - sets the journey as sticky context when a slug is provided;
53
+ - does not open a rite;
54
+ - does not create or update a journal entry.
55
+
56
+ ## 1.1 Transition Surface
57
+
58
+ The `soul load` output includes the conversational transition surface. Render
59
+ that surface visibly to the user before continuing. Do not recreate it from
60
+ scratch unless the command failed to render it; copy the rendered surface from
61
+ the command output.
62
+
63
+ ## 2. Listening To The Living Field
64
+
65
+ After activation, treat the user's next natural answer as Listening To The Living
66
+ Field. Do not show Possible Listenings when the answer is still thin. Reflect or
67
+ ask a follow-up instead.
68
+
69
+ When living matter appears, such as a touched center, emerging shadow,
70
+ threatened value, search for clarity, request for beauty or meaning, strong
71
+ dispersion, or a phrase with more weight than the rest, render Possible
72
+ Listenings at the end of the response. Do not only ask another reflective
73
+ question once this threshold is crossed.
74
+
75
+ Use the contained renderer. This call is required Soul Mode behavior, not
76
+ optional tool use:
77
+
78
+ ```bash
79
+ mirror soul listen \
80
+ --self "situated Self Voice description" \
81
+ --shadow "situated Shadow Voice description" \
82
+ [--wisdom "situated Wisdom Voice description"] \
83
+ [--beauty "situated Beauty Voice description"]
84
+ ```
85
+
86
+ The descriptions must be situated in what the user brought. Do not use generic
87
+ menu copy when the user has offered specific material.
88
+
89
+ The threshold has been crossed when the user moves from reporting events to
90
+ naming an inner contract or referring to any internal tension, conflict, or
91
+ discomfort, such as fear, wound, desire, compulsion, or threatened sense of
92
+ belonging.
93
+
94
+ ## 3. Activation, Listening, And Operational Boundary
95
+
96
+ Activating Soul Mode is context setup and ritual entry only. After rendering the
97
+ surface, let the user answer naturally. Do not infer a rite, create a fruit, or
98
+ write to the journal during activation.
99
+
100
+ Rendering Possible Listenings is still only an invitation. The surface must end
101
+ by telling the user they can hear one of these voices now or just continue the
102
+ conversation. Do not open a rite until the user chooses a listening. Do not
103
+ create a fruit or write to the journal in this story.
104
+
105
+ Soul Mode must not directly execute clear operational mutation requests. When
106
+ the user asks to edit files, create code, implement a story, run implementation
107
+ commands, mutate roadmap/docs/code, package a release, or otherwise change
108
+ project state, do not call Soul Mode ritual commands and do not mutate files.
109
+
110
+ Instead, name the boundary visibly and ask whether to switch to Builder Mode for
111
+ the same journey. Use this response shape:
112
+
113
+ ```text
114
+ ☾ SOUL → BUILDER BOUNDARY
115
+
116
+ This is operational Builder work, not Soul Mode ritual listening. Soul Mode turns the day toward the inner life; Builder executes commitment. I can switch to Builder Mode for <slug> and do this there.
117
+ ```
118
+
119
+ Only after the user confirms the switch should Mirror activate Builder Mode with:
120
+
121
+ ```bash
122
+ mirror build load <slug>
123
+ ```
124
+
125
+ Local refinements to the ritual experience, such as discussing microcopy,
126
+ thresholds, voice behavior, icons, or flow, remain conversational unless the user
127
+ explicitly asks to preserve or implement them in the codebase.
128
+
129
+ ## 4. Active Rite: Soul Mode Voices
130
+
131
+ When Possible Listenings are visible and the user chooses Self Voice, Shadow
132
+ Voice, Wisdom Voice, or Beauty Voice in natural language, render the listening
133
+ surface before the interpretive bridge:
134
+
135
+ ```bash
136
+ mirror soul rite self
137
+ mirror soul rite shadow
138
+ mirror soul rite wisdom \
139
+ --says "complete Wisdom Voice response"
140
+ mirror soul rite beauty \
141
+ --says "complete Beauty Voice response"
142
+ ```
143
+
144
+ You may pass situated listening copy when it improves continuity:
145
+
146
+ ```bash
147
+ mirror soul rite self \
148
+ --says "complete Self Voice response"
149
+ ```
150
+
151
+ Voices are listening lenses, not conversational agents. The user always
152
+ converses with Mirror. The voice response appears inside the card under `the
153
+ voice says`; Mirror then makes an interpretive bridge outside the card,
154
+ connecting what the voice says to the ongoing conversation. Do not render a
155
+ `listening for` section for any voice.
156
+
157
+ For Self Voice, use the composed prompt as the voice contract:
158
+
159
+ ```bash
160
+ mirror soul prompt self
161
+ ```
162
+
163
+ This command injects the user's current `self/soul` identity layer into the base
164
+ Self Voice prompt, so the voice gains the principles the user is incorporating
165
+ over time. Before rendering the Self card, compose the complete Self Voice
166
+ utterance yourself from the prompt and the user's living material, then pass it
167
+ with `--says`. Do not reduce Self Voice to a one-line aphorism. The response
168
+ inside the card should usually be 3 to 5 compact paragraphs; a single sentence is
169
+ only a seed, not the whole voice.
170
+
171
+ The prompt is grammar, not text to quote. Self Voice listens for principle,
172
+ value, internal constitution, and what must not be betrayed. It must mirror what
173
+ the user is not seeing and use the invisible principles to reveal what is
174
+ happening; it must not solve the problem, recommend a next step, or tell the user
175
+ what to do.
176
+
177
+ For Shadow Voice, listen to the rejected part without punishment, diagnosis, or
178
+ governance. The Shadow response inside the card should reveal the protection or necessity
179
+ inside the rejected part, not justify it. After the card, Mirror bridges the
180
+ voice response back to the conversation.
181
+
182
+ For Wisdom Voice, use the canonical prompt as the voice contract:
183
+
184
+ ```bash
185
+ mirror soul prompt wisdom
186
+ ```
187
+
188
+ Before rendering the Wisdom card, compose the complete Wisdom Voice utterance yourself from the prompt and the user's living material. Then call `soul rite wisdom --says "..."`. Never call `soul rite wisdom` without `--says`; that would render no real voice.
189
+
190
+ The prompt is grammar, not text to quote. Wisdom Voice lets the user's material
191
+ be crossed by a situated idea from a thinker, philosopher, sacred text, ancient
192
+ tradition, proverb, contemplative teaching, mythic image, or other relevant
193
+ wisdom text.
194
+
195
+ Wisdom Voice must be substantial: usually 5 to 8 compact paragraphs inside the
196
+ card, directly below `the voice says`, not a one-line aphorism. Do not render a
197
+ `listening for` section.
198
+
199
+ The card must contain the voice of the selected source itself: the text,
200
+ tradition, thinker, prophet, monk, sage, or old teaching speaking from its own
201
+ symbolic world. The tone is solemn, ancestral, divine, severe, poetic, and
202
+ atemporal: like a god on a mountain, a Zarathustra-like figure descending after
203
+ solitude, a reclusive monk, or a sage who has waited for everyone else to speak
204
+ first. It should not sound like Mirror's ordinary explanatory voice.
205
+
206
+ Inside the card, Wisdom Voice does not explain, analyze, cite, justify, or bridge
207
+ to the user's practical problem. It affirms, reveals, declares, and unfolds the
208
+ source's central image, metaphor, symbol, distinction, or teaching from within
209
+ its native world. Use archetypal language when fitting: mountain, earth, sky,
210
+ abyss, fire, seed, river, tree, root, fruit, forge, dust, stars, silence, season,
211
+ pulse, covenant, exile, return, threshold, wound, blessing. End with a powerful,
212
+ lapidary declaration rather than an ordinary question.
213
+
214
+ The practical connection to the user's concrete problem is Mirror's job and must
215
+ happen outside the card, after the voice, in Mirror's normal tone. Outside the
216
+ card, Mirror should briefly explain the origin of the passage or teaching when
217
+ known: who said it, where it appears, and the historical or textual context that
218
+ matters for this conversation. Keep that origin note related to the user's
219
+ material, not as an academic aside. Do not fabricate citations, books, chapters,
220
+ verses, page numbers, or exact wording; if uncertain, name only the source level
221
+ that is reliable.
222
+
223
+ For Beauty Voice, use the canonical prompt as the voice contract:
224
+
225
+ ```bash
226
+ mirror soul prompt beauty
227
+ ```
228
+
229
+ Before rendering the Beauty card, compose the complete Beauty Voice utterance yourself from the prompt and the user's living material. Then call `soul rite beauty --says "..."`. Never call `soul rite beauty` without `--says`; that would render no real voice.
230
+
231
+ The prompt is grammar, not text to quote. Beauty Voice listens for the form of
232
+ aliveness still present in the user's material: texture, delicacy, care, meaning,
233
+ body, image, rhythm, poem, literature, music, atmosphere, or the place where life
234
+ still breathes. It must not force positivity, minimize pain, decorate the user's
235
+ material, or tell the user what to do.
236
+
237
+ Beauty Voice must be substantial: usually 4 to 6 compact paragraphs inside the
238
+ card, directly below `the voice says`, not a decorative one-line consolation. Do
239
+ not render a `listening for` section.
240
+
241
+ Inside the card, Beauty speaks as image, texture, rhythm, atmosphere, or fragment
242
+ without explaining the user's psychology or bridging practically to the problem.
243
+ The practical connection to the user's concrete material is Mirror's job and must
244
+ happen outside the card, after the voice, in Mirror's normal tone. Outside the
245
+ card, Mirror may name a poem, author, artwork, song, or aesthetic source when
246
+ useful and reliable. Do not fabricate citation details when the origin is
247
+ uncertain.
248
+
249
+ ## 5. Fruit In Maturation
250
+
251
+ During an active Self Voice or Shadow Voice rite, when the conversation yields a
252
+ provisional harvest, render one Fruit In Maturation at the end of the response:
253
+
254
+ ```bash
255
+ mirror soul fruit set "provisional fruit text"
256
+ ```
257
+
258
+ Use `--session-id` when a Pi session id is available.
259
+
260
+ Keep exactly one fruit in maturation. The fruit should thicken over turns.
261
+ When new material appears, do not replace the fruit with the newest insight as a
262
+ filter. Instead, synthesize the current fruit with the new living material and
263
+ call `fruit set` with the denser formulation.
264
+
265
+ If needed, render the current fruit first:
266
+
267
+ ```bash
268
+ mirror soul fruit show
269
+ ```
270
+
271
+ Fruit maturation replaces the wording, not the lineage. Preserve the previous
272
+ living core unless the user explicitly rejects it.
273
+
274
+ The fruit should remain singular in form but plural in root. If more than one
275
+ living element appears in a turn, do not choose only one by default. Preserve
276
+ every element that deepens the same fruit, then compress them into one living
277
+ phrase. Do not turn the fruit into a list, a summary, or a bundle of separate
278
+ takeaways.
279
+
280
+ Include multiple new elements when they deepen the same living fruit. Leave out
281
+ elements that belong to another fruit, are only context, merely repeat what is
282
+ already present, weaken the phrase, or should remain an unresolved open question.
283
+
284
+ A good fruit is short, memorable, phrased as living insight rather than a task,
285
+ faithful to the active voice, revisable, and dense enough to carry the lineage of
286
+ what has already appeared.
287
+
288
+ ## 6. Closing Rite
289
+
290
+ The Closing Rite closes the Soul Mode session opened by the entry question
291
+ "how is your day going today?" It is not necessarily an exit from Soul Mode.
292
+ After the Closing Rite, Mirror invites the user to review what may want to remain
293
+ before ending.
294
+
295
+ Render the Closing Rite when:
296
+
297
+ - the user asks to close the rite/session;
298
+ - the user says there is nothing more after harvest;
299
+ - a harvested fruit has just been saved to the journal.
300
+
301
+ Natural-language examples:
302
+
303
+ ```text
304
+ vamos fechar o rito
305
+ acho que é isso
306
+ encerrar essa sessão
307
+ close this ritual
308
+ ```
309
+
310
+ Compose compact situated material from the conversation and call:
311
+
312
+ ```bash
313
+ mirror soul close \
314
+ --harvested "what was harvested" \
315
+ --echoes "what still echoes" \
316
+ --open "what remains open" \
317
+ --integration "what may want integration later"
318
+ ```
319
+
320
+ Only include sections that have real material. At least one section is required.
321
+ Paste the Closing Rite surface visibly before commentary.
322
+
323
+ After the Closing Rite, ask exactly:
324
+
325
+ ```text
326
+ There is living material that may want to remain as part of your Mirror identity. Do you want to integrate it now?
327
+ ```
328
+
329
+ If the user says yes, render Integration Proposal. If the user declines and inclines
330
+ toward ending for today, exit Soul Mode by deactivating the active operating mode:
331
+
332
+ ```bash
333
+ mirror mode deactivate
334
+ ```
335
+
336
+ Then leave a short farewell in Mirror's normal voice. If the user brings another
337
+ theme, stay in Soul Mode and treat it as a new answer to the day's living field.
338
+
339
+ Closing is not integration. It must not save a journal entry by itself, propose
340
+ an identity diff, mutate Self/Shadow/Ego/persona/journey identity, or change
341
+ project state.
342
+
343
+ ## 7. Integration Proposal
344
+
345
+ When the user accepts the post-closing invitation, or asks what may want to
346
+ remain, render Integration Proposal. This card is the proposed integration text
347
+ itself, not a preliminary map:
348
+
349
+ ```bash
350
+ mirror soul review \
351
+ --origin "where this material came from" \
352
+ --self "first-person principle/practice" \
353
+ --shadow "protective part to recognize" \
354
+ --ego "operational behavior pattern" \
355
+ --persona "public presentation pattern" \
356
+ --open "question or material to leave open"
357
+ ```
358
+
359
+ Only include sections with real material. At least one section is required.
360
+ Paste the Integration Proposal surface visibly before commentary.
361
+
362
+ The `origin` and `leave open` sections are context only. Registrable identity
363
+ sections are Self, Shadow, Ego, and Persona. The card must not include journey
364
+ identity or journey pattern; that category is not mature enough for this release.
365
+
366
+ After Integration Proposal, ask exactly:
367
+
368
+ ```text
369
+ Do you want to record it this way in your identity? Or we can adjust anything you want.
370
+ ```
371
+
372
+ If the user asks to adjust, render an updated Integration Proposal before any
373
+ apply. If the user confirms registration, apply only the registrable identity
374
+ sections present in the card, using their exact text. Do not mutate from `origin`
375
+ or `leave open`.
376
+
377
+ ## 8. Focused Psyche Enrichment Proposal
378
+
379
+ The multi-layer Integration Proposal is the normal proposal surface. Use the
380
+ focused `soul propose` surface only when the user asks to isolate or rewrite one
381
+ specific layer before applying.
382
+
383
+ When the user asks how one specific point could remain in Self, Shadow, Ego, or a
384
+ persona, first load the current target identity when possible:
385
+
386
+ ```bash
387
+ mirror identity get self soul
388
+ mirror identity get shadow profile
389
+ mirror identity get ego behavior
390
+ mirror identity get persona <persona-id>
391
+ ```
392
+
393
+ Then render a proposal-only surface:
394
+
395
+ ```bash
396
+ mirror soul propose self \
397
+ --origin "Soul Mode harvest / review context" \
398
+ --current "current self/soul material or none loaded" \
399
+ --proposed "proposed identity content" \
400
+ --why "why this may belong"
401
+ ```
402
+
403
+ Targets:
404
+
405
+ - `self` defaults to key `soul`.
406
+ - `shadow` defaults to key `profile`.
407
+ - `ego` defaults to key `behavior`.
408
+ - `persona` requires `--key <persona-id>`.
409
+
410
+ The proposal must include `proposal only — no identity changed`. Do not apply it
411
+ until the user explicitly confirms the exact proposed content.
412
+
413
+ The `--proposed` text must be the exact integration sentence/paragraph to add,
414
+ not an informal summary and not the full replacement document. `soul apply`
415
+ records the individual integration and appends it to the target identity under
416
+ the layer-specific integration section; it must not overwrite the existing
417
+ identity content by default.
418
+
419
+ Use layer-appropriate language:
420
+
421
+ - Self: an affirmative first-person principle the user adopts as practice while accepting good and bad days. Do not use possibility language such as `can`, `may`, `maybe`, or `need to` as the center of the Self statement. Prefer direct principle language, e.g. `I care for bonds without turning immediate availability into moral proof of love; my inner measure also belongs to care.` or `My true commitment is born from the truth of the work, not from managing my image.`
422
+ - Shadow: a first-person recognition of a protective part without shame or command, e.g. `A part of me tries to buy safety by offering excessive availability when it fears being judged as careless.`
423
+ - Ego: a behavioral pattern stated operationally, e.g. `When I fear judgment, I can compensate by staying available beyond the real measure.`
424
+ - Persona: a public-role pattern stated as presentation, not essence, e.g. `My professional persona can confuse reliability with excessive visible availability.`
425
+
426
+ ## 9. Confirmation And Safe Identity Mutation
427
+
428
+ If the user asks to apply a proposal, first ask for explicit confirmation with the exact target and exact text:
429
+
430
+ ```text
431
+ May I apply exactly this proposal to `self/soul`:
432
+
433
+ "..."
434
+
435
+ Do you confirm applying exactly this text?
436
+ ```
437
+
438
+ If the user explicitly confirms applying a proposal, call:
439
+
440
+ ```bash
441
+ mirror soul apply self \
442
+ --proposed "exact proposed integration text" \
443
+ --origin "Soul Mode harvest / integration proposal context" \
444
+ --confirm APPLY
445
+ ```
446
+
447
+ Use the same target layer/key as the proposal. For persona, include `--key`.
448
+ Never call `soul apply` without explicit user confirmation. Never apply a
449
+ paraphrase that differs from the proposed content unless the user first approves
450
+ the revised proposal. `soul apply` is additive by default: it preserves existing
451
+ identity content, creates an individual integration record, and appends the
452
+ confirmed text under the target layer's integration section:
453
+
454
+ - Self: `## New Incorporated Principles`
455
+ - Shadow: `## New Hidden Needs Recognized`
456
+ - Ego: `## New Operational Patterns Identified`
457
+ - Persona: `## New Participation Patterns Revealed`
458
+
459
+ After applying, ask:
460
+
461
+ ```text
462
+ Do you want to review another integration, or shall we close here?
463
+ ```
464
+
465
+ ## 10. Harvested Fruit And Journal Confirmation
466
+
467
+ When the user says they wish to harvest, close the current fruit into a Harvested
468
+ Fruit surface:
469
+
470
+ ```bash
471
+ mirror soul harvest set "final fruit text"
472
+ ```
473
+
474
+ If the fruit is already harvested, render it with:
475
+
476
+ ```bash
477
+ mirror soul harvest show
478
+ ```
479
+
480
+ Paste the Harvested Fruit surface visibly. Do not save automatically. The card
481
+ asks whether to save as-is or change anything first, and the user must explicitly
482
+ confirm saving or request an edit.
483
+
484
+ When the user confirms saving, call:
485
+
486
+ ```bash
487
+ mirror soul harvest save [--journey journey-slug]
488
+ ```
489
+
490
+ This creates one structured Markdown journal entry and clears the harvested fruit state. When a runtime conversation is available, the journal entry includes the originating `conversation_id`, an origin link, and preserved conversation material. If the user asks to save again after state is cleared, do not create a duplicate.
491
+
492
+ After a successful save, do not stop at "saved to journal". Immediately render
493
+ the Closing Rite with `memory soul close`, using the harvested fruit and any
494
+ remaining echoes/open questions from the conversation. Then ask: `There is living material that may want to remain. Do you want to look at it together before we close?`
495
+
496
+ When the user declines saving, call:
497
+
498
+ ```bash
499
+ mirror soul harvest decline
500
+ ```
501
+
502
+ This clears the harvested fruit without creating a journal entry.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: "mm-tasks"
3
+ description: Lists and manages journey tasks
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Tasks
8
+
9
+ When receiving `/mm-tasks [subcommand] [args]`:
10
+
11
+ ```bash
12
+ mirror tasks [subcommand] [args]
13
+ ```
14
+
15
+ Subcommands: `list` (default), `add`, `done`, `doing`, `block`, `delete`, `import`, `sync`, `sync-config`
16
+
17
+ **Examples:**
18
+ ```bash
19
+ mirror tasks --journey mirror
20
+ mirror tasks add "Write plan doc" --journey mirror
21
+ mirror tasks done <task-id>
22
+ ```
23
+
24
+ Present the output to the user without modification.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: "mm-update"
3
+ description: Updates the local Mirror Mind runtime through the safe runtime updater
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Update Mirror
8
+
9
+ Use when the user asks any natural-language variant of:
10
+
11
+ - "Update my Mirror."
12
+ - "Update Mirror."
13
+ - "Atualize meu Mirror."
14
+ - "Atualizar o Mirror."
15
+ - "Install the new Mirror version."
16
+ - "Apply the Mirror update."
17
+
18
+ ## Command
19
+
20
+ Run the safe updater:
21
+
22
+ ```bash
23
+ mirror runtime update
24
+ ```
25
+
26
+ Show the output verbatim. Do not replace this with `git pull`, `git fetch`, or
27
+ manual migration commands. The runtime updater owns the status gate, the
28
+ verified backup, the fast-forward, the migration, and the post-update check.
29
+
30
+ If the updater reports a recovery route, show it exactly as printed: it names
31
+ the commit to return to. If it succeeds, mention the installed version if the
32
+ output includes it.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: "mm-week"
3
+ description: Shows the weekly view or ingests a free-text plan
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Week
8
+
9
+ When receiving `/mm-week` (no arguments):
10
+
11
+ ```bash
12
+ mirror week
13
+ ```
14
+
15
+ When receiving `/mm-week plan "<free text>"`:
16
+
17
+ ```bash
18
+ mirror week plan "<free text>"
19
+ ```
20
+
21
+ This calls an LLM to extract temporal items. After showing the extracted items,
22
+ ask the user to confirm before saving. If confirmed:
23
+
24
+ ```bash
25
+ mirror week save
26
+ ```
27
+
28
+ Present all output to the user without modification.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: "mm-welcome"
3
+ description: Renders the state-aware welcome card on demand
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Welcome
8
+
9
+ When receiving `/mm-welcome`, run:
10
+
11
+ ```bash
12
+ mirror welcome
13
+ ```
14
+
15
+ Show the user the output verbatim. The welcome is a short, state-aware
16
+ greeting composed from the database: header, active journey, recent insight
17
+ or conversation, and a closing invitation. Useful when `quietStartup: true`
18
+ hides the boot welcome, when the user wants a fresh snapshot mid-session,
19
+ or when a new runtime starts and the welcome was missed.
20
+
21
+ If the command prints nothing, tell the user: "Nothing to surface right now."
22
+ Otherwise, do not add commentary — the welcome speaks for itself.
23
+
24
+ See `docs/product/specs/welcome/index.md` for the composition rules.