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,47 @@
1
+ ---
2
+ digest: >
3
+ Mirror Mind v0.10.6 makes runtime update more resilient when the production
4
+ database is temporarily unavailable during the status gate. The updater now
5
+ attempts a safe MemoryClient bootstrap and retries status before failing,
6
+ avoiding a manual repair step for the common running-surface scenario.
7
+ ---
8
+
9
+ # v0.10.6 — Update Status Recovery
10
+
11
+ **Date:** 2026-05-25
12
+
13
+ ## Highlights
14
+
15
+ - Runtime update now detects database-unavailable status-gate failures.
16
+ - The updater attempts a safe database bootstrap through `MemoryClient` and
17
+ retries the status check before blocking the update.
18
+ - Post-update status performs the same recovery attempt before reporting failure.
19
+ - Recovery guidance now uses `uv run python -m memory ...` so production users do
20
+ not accidentally call a Python environment without the `memory` package.
21
+
22
+ ## Why This Patch Exists
23
+
24
+ Production update validation showed a repeated failure mode: when a local Mirror
25
+ surface has recently used the production database, `runtime status` can report
26
+ `unable to open database file`. The update command then refuses to continue at
27
+ the status gate.
28
+
29
+ This is too likely for final users. They should not need to discover processes,
30
+ kill a web server, or run a one-off Python command just to let the updater open
31
+ the database again.
32
+
33
+ ## What Changed
34
+
35
+ Before failing a status gate because the database is unavailable, runtime update
36
+ now tries the same safe open path that previously fixed the issue manually:
37
+ constructing a production `MemoryClient`, opening the configured database, and
38
+ closing it. If that succeeds, the updater rebuilds status and continues.
39
+
40
+ The same recovery is applied after fast-forward/migrations if post-update status
41
+ sees the database as unavailable.
42
+
43
+ ## Next Horizon
44
+
45
+ If users still hit database-unavailable update failures, the next step is to add
46
+ explicit local surface lifecycle coordination so the updater can gracefully ask
47
+ Mirror web surfaces to stop before update and restart after update.
@@ -0,0 +1,53 @@
1
+ ---
2
+ digest: >
3
+ Mirror Mind v0.10.7 reconciles runtime updater and release-management
4
+ documentation with the current command surface. The command reference,
5
+ troubleshooting guide, repair policy, release-note process, docs index, and
6
+ top-level help now describe cumulative release notes, updater repair, release
7
+ promotion options, and database-unavailable update recovery coherently.
8
+ ---
9
+
10
+ # v0.10.7 — Runtime Operations Documentation
11
+
12
+ **Date:** 2026-05-25
13
+
14
+ ## Highlights
15
+
16
+ - Documented `runtime release-notes pending [--from] [--ref]` for cumulative
17
+ release-note visibility.
18
+ - Documented `release-doctor --stable` and `release-promote --stable --remote
19
+ --dry-run --push`.
20
+ - Documented the `v0.10.6` database-unavailable update recovery behavior.
21
+ - Updated top-level `python -m memory --help` runtime usage with the current
22
+ arguments.
23
+ - Clarified that final users should not need to kill web/runtime processes for
24
+ the common database-unavailable update case.
25
+
26
+ ## Why This Patch Exists
27
+
28
+ The release train from `v0.10.0` through `v0.10.6` added several operational
29
+ surfaces quickly: stable promotion, cumulative release notes, updater repair, and
30
+ status-gate recovery. The code was ahead of the docs.
31
+
32
+ Because these commands are safety boundaries, stale documentation is not just a
33
+ cosmetic issue. It can push users toward manual repair paths when the runtime now
34
+ has a safer command path.
35
+
36
+ ## What Changed
37
+
38
+ The command reference now lists the current runtime command arguments and
39
+ explains when to use pending release notes, updater repair, release doctor, and
40
+ release promotion flags.
41
+
42
+ The troubleshooting guide now has a dedicated entry for `unable to open database
43
+ file` during update, pointing users to the repaired updater path for older clones
44
+ and explaining that current versions recover automatically.
45
+
46
+ The runtime repair policy now treats temporarily unavailable production
47
+ databases as a bounded recovery scenario, not as a normal manual process-killing
48
+ workflow.
49
+
50
+ ## Next Horizon
51
+
52
+ Future operator-facing commands should update `REFERENCE.md`, the top-level help,
53
+ and troubleshooting/repair docs in the same patch that introduces the behavior.
@@ -0,0 +1,49 @@
1
+ ---
2
+ digest: >
3
+ Mirror Mind v0.10.8 fixes welcome release awareness when a stable release is
4
+ published soon after a cached up-to-date check. Opening Mirror on the stable
5
+ channel now refreshes both update-available and up-to-date cache entries so
6
+ newly published versions can appear without manual cache or git commands.
7
+ ---
8
+
9
+ # v0.10.8 — Welcome Release Awareness
10
+
11
+ **Date:** 2026-05-25
12
+
13
+ ## Highlights
14
+
15
+ - Welcome now refreshes fresh `up_to_date` update-cache entries on the stable
16
+ channel.
17
+ - Newly published stable releases can appear when opening Mirror even inside the
18
+ normal cache TTL.
19
+ - The fix preserves the existing remote-check disable switch:
20
+ `MIRROR_WELCOME_REMOTE_UPDATE_CHECK=off`.
21
+
22
+ ## Why This Patch Exists
23
+
24
+ Production validation showed a gap between the update command and the welcome
25
+ experience. `runtime update --check` correctly detected a new stable release,
26
+ but opening Mirror did not show that a new version was available.
27
+
28
+ The cause was the welcome cache. A cached `up_to_date` result was trusted for six
29
+ hours. If stable advanced during that window, users could open Mirror and still
30
+ see no update prompt.
31
+
32
+ ## What Changed
33
+
34
+ The welcome update-awareness cache now refreshes on stable when the cached state
35
+ is either `update_available` or `up_to_date`. This keeps startup awareness aligned
36
+ with newly published stable releases without asking users to run `git fetch` or
37
+ delete cache files.
38
+
39
+ ## Conscious Exclusions
40
+
41
+ This patch does not remove caching and does not make non-stable channels perform
42
+ the same remote awareness refresh. The behavior is targeted at the user-facing
43
+ stable release channel.
44
+
45
+ ## Next Horizon
46
+
47
+ A follow-up stub release can validate the behavior end-to-end: update production
48
+ to this version, publish a later stable tag, then open Mirror and confirm the
49
+ welcome detects the new release.
@@ -0,0 +1,37 @@
1
+ ---
2
+ digest: >
3
+ Mirror Mind v0.10.9 is a release-awareness validation stub. It intentionally
4
+ carries no functional runtime change beyond the version and release note, so a
5
+ production clone on v0.10.8 can validate that opening Mirror detects a newly
6
+ published stable release.
7
+ ---
8
+
9
+ # v0.10.9 — Release Awareness Validation Stub
10
+
11
+ **Date:** 2026-05-25
12
+
13
+ ## Highlights
14
+
15
+ - Published a minimal stable release after the v0.10.8 welcome-awareness fix.
16
+ - Intentionally contains no functional runtime changes.
17
+ - Exists to validate that production Mirror shows a newly available stable
18
+ version when opened normally.
19
+
20
+ ## Why This Patch Exists
21
+
22
+ v0.10.8 changed welcome release awareness so the stable channel refreshes cached
23
+ `up_to_date` checks. To validate that behavior like a final user, production must
24
+ already be on v0.10.8 and then a newer stable release must be published.
25
+
26
+ This release provides that newer stable target without mixing the validation with
27
+ unrelated product changes.
28
+
29
+ ## What Changed
30
+
31
+ Only the package version, release note, release index, and worklog move forward.
32
+ Runtime behavior is unchanged.
33
+
34
+ ## Next Horizon
35
+
36
+ Open production Mirror on v0.10.8 and confirm it shows that v0.10.9 is available
37
+ without manually running cache, git, or update-check commands first.
@@ -0,0 +1,86 @@
1
+ [< Releases](index.md)
2
+
3
+ # v0.11.0 — Read-only Web Refinement
4
+
5
+ ## Digest
6
+
7
+ This release closes CV13.E1, the first Mirror Web Experience epic. It refines
8
+ the local read-only web surface after the 1.0 visibility foundation: Workspace
9
+ becomes the front door, Identity becomes easier to scan, memory categories and
10
+ search become navigable, and conversation cards become more useful without
11
+ introducing writes or background operations.
12
+
13
+ ## Highlights
14
+
15
+ - Workspace opens first and the main navigation is ordered Workspace, Identity,
16
+ Docs.
17
+ - The header now presents Mirror Mind as the app identity and the current Mirror
18
+ user as a separate avatar/name lockup.
19
+ - Docs, Workspace, Identity, memory category pages, and search results now share
20
+ the same contextual-bar rhythm.
21
+ - Identity persona tokens use stable three-letter icons.
22
+ - Identity memory categories open read-only category pages backed by surface
23
+ DTOs.
24
+ - Header search opens a read-only results page over recent retained memories.
25
+ - Workspace conversation cards show clearer message, persona, journey, and date
26
+ metadata.
27
+
28
+ ## Narrative context
29
+
30
+ CV9.E6 made the Mirror visible on the web. CV13.E1 makes that visibility feel
31
+ less like a diagnostic surface and more like a product. The work stayed inside a
32
+ read-only boundary, but it changed the user's path through the app: Workspace is
33
+ now the natural home, Identity remains a reflective map, Docs sits inside the
34
+ same visual grammar, and memory/conversation surfaces have enough affordance to
35
+ invite exploration.
36
+
37
+ This is a pre-1.0 minor release. The earlier CV13 planning label was `v1.1`, but
38
+ Mirror Mind has not yet crossed the CV9 `v1.0.0` boundary. Under the prospective
39
+ versioning rule, closing this epic increments the current minor version to
40
+ `v0.11.0`.
41
+
42
+ ## What changed
43
+
44
+ - Added CV13.E1 roadmap stories and marked S1–S5 done.
45
+ - Made Workspace the default perspective when no stored preference exists.
46
+ - Removed task-oriented noise from Workspace metrics and tabs.
47
+ - Removed the redundant perspective badge from the header.
48
+ - Reworked the header and perspective switcher visual treatment.
49
+ - Moved Docs navigation into the main content frame so Docs aligns with the
50
+ other perspectives.
51
+ - Generated three-letter persona tokens in the Atlas surface read model.
52
+ - Added a memory category drilldown surface and web route.
53
+ - Replaced misleading progress bars with low/medium/high presence chips.
54
+ - Added lexical read-only search over recent memory summaries.
55
+ - Added a specialized renderer for Workspace conversation cards.
56
+
57
+ ## Conscious exclusions
58
+
59
+ - No writes or editing flows.
60
+ - No multi-Mirror selector or profile/preferences page.
61
+ - No Mirror or journey configuration console.
62
+ - No conversation transcript page.
63
+ - No conversation retitle operation.
64
+ - No semantic/vector web search.
65
+ - No LLM calls during web page rendering.
66
+ - No background Pi agent execution.
67
+
68
+ ## Validation
69
+
70
+ Focused validation passed during the story cycle:
71
+
72
+ ```bash
73
+ uv run pytest tests/unit/memory/surfaces/test_atlas.py tests/unit/memory/surfaces/test_search.py tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_server.py tests/unit/memory/web/test_preferences.py
74
+ uv run ruff check src/memory/web src/memory/surfaces tests/unit/memory/surfaces tests/unit/memory/web
75
+ uv run ruff format --check src/memory/web src/memory/surfaces tests/unit/memory/surfaces tests/unit/memory/web
76
+ node --check src/memory/web/static/app.js
77
+ git diff --check
78
+ ```
79
+
80
+ Navigator browser validation accepted each story.
81
+
82
+ ## Next horizon
83
+
84
+ The next CV13 epic is Multi-Mirror and Preferences: choosing among local Mirrors
85
+ under `~/.mirror-minds`, user profile/preferences, avatar, and dark/light/system
86
+ mode.
@@ -0,0 +1,67 @@
1
+ [< Releases](index.md)
2
+
3
+ # v0.12.0 — Multi-Mirror and Preferences
4
+
5
+ ## Digest
6
+
7
+ This release closes CV13.E2, the Multi-Mirror and Preferences slice of the Mirror Web Experience. The local web app can now discover local Mirrors, switch safely among discovered Mirror databases, and persist user-facing web preferences per Mirror: display name, avatar symbol, and light/dark/system theme.
8
+
9
+ ## Highlights
10
+
11
+ - The header Mirror selector discovers local Mirrors with `memory.db` and filters out non-Mirror directories such as backups.
12
+ - Mirror switching is constrained to server-discovered local Mirror names; the browser never submits arbitrary filesystem paths.
13
+ - Workspace, Identity, memory, and search surfaces reload against the selected Mirror database for the running web session.
14
+ - A Preferences page shows the active Mirror context and the local preferences file path.
15
+ - Display name and avatar symbol are stored per Mirror under `<mirror-home>/web/preferences.json`.
16
+ - Theme preference supports `system`, `light`, and `dark`, applies immediately, and persists per Mirror.
17
+ - The Mirror selector shows each Mirror's display name and avatar while keeping the technical directory name as detail.
18
+
19
+ ## Narrative context
20
+
21
+ `v0.11.0` made the read-only web surface feel like a product. `v0.12.0` makes that product local-user aware. Mirror Web can now answer: which Mirror am I looking at, can I switch to another local Mirror safely, and how do I want this interface to identify and present this Mirror?
22
+
23
+ The boundary remains intentionally local-first. This release does not add remote access, arbitrary database paths, identity mutation, configuration editing, authentication, or background operations. Preferences are web preferences, not changes to the Mirror identity graph.
24
+
25
+ ## What changed
26
+
27
+ - Added a read-only Mirror registry for local web discovery.
28
+ - Added `/api/mirrors` and safe `/api/mirrors/select` web endpoints.
29
+ - Extended `/api/shell` with active Mirror path, discovered Mirrors, profile, theme, and preferences path.
30
+ - Added server-side validation so Mirror selection only accepts discovered local Mirrors with `memory.db`.
31
+ - Added a Preferences perspective to the web shell.
32
+ - Added profile preference persistence for display name and avatar symbol.
33
+ - Added theme preference persistence for `system`, `light`, and `dark`.
34
+ - Applied selected theme through the document root while keeping `system` delegated to OS color preference.
35
+ - Added final coherence coverage for cross-Mirror preference isolation.
36
+ - Updated CV13.E2 roadmap and worklog records through S1–S5.
37
+
38
+ ## Conscious exclusions
39
+
40
+ - No arbitrary path input.
41
+ - No remote Mirror selection.
42
+ - No authentication system.
43
+ - No Mirror creation, deletion, migration, backup, or repair flows.
44
+ - No identity graph/profile mutation.
45
+ - No `.env` or runtime configuration editing.
46
+ - No journey metadata editing.
47
+ - No conversation retitle operation.
48
+ - No LLM calls during page load or switching.
49
+ - No web operation runner.
50
+
51
+ ## Validation
52
+
53
+ Focused validation passed during the story cycle:
54
+
55
+ ```bash
56
+ uv run pytest tests/unit/memory/web/test_preferences.py tests/unit/memory/web/test_mirrors.py tests/unit/memory/web/test_server.py
57
+ uv run ruff check src/memory/web tests/unit/memory/web/test_preferences.py tests/unit/memory/web/test_mirrors.py tests/unit/memory/web/test_server.py
58
+ uv run ruff format --check src/memory/web tests/unit/memory/web/test_preferences.py tests/unit/memory/web/test_mirrors.py tests/unit/memory/web/test_server.py
59
+ node --check src/memory/web/static/app.js
60
+ git diff --check
61
+ ```
62
+
63
+ Navigator browser validation accepted S1–S5, including final cross-Mirror preference isolation and the Mirror selector's display-name/avatar presentation.
64
+
65
+ ## Next horizon
66
+
67
+ The next CV13 epic is Configuration Console: inspect Mirror configuration and journey metadata through guarded web surfaces without weakening service boundaries.
@@ -0,0 +1,64 @@
1
+ [< Releases](index.md)
2
+
3
+ # v0.13.0 — Configuration Console
4
+
5
+ ## Digest
6
+
7
+ This release closes CV13.E3, the Configuration Console slice of the Mirror Web Experience. The local web app can now inspect non-sensitive Mirror/runtime configuration, understand selected environment boundaries with secrets masked, and manage selected journey metadata from the Workspace context where journeys already live.
8
+
9
+ ## Highlights
10
+
11
+ - Added a read-only Configuration page for active Mirror paths and runtime defaults.
12
+ - Organized Configuration into internal tabs to reduce visual clutter.
13
+ - Added an Environment boundary section with selected allowlisted settings and secret masking.
14
+ - Kept global Configuration scoped to Mirror/runtime settings instead of duplicating journeys.
15
+ - Added a Workspace Settings tab for the selected journey.
16
+ - Added safe journey metadata editing for project path, sync file, icon, and color.
17
+ - Added final coherence coverage for secret masking, configuration boundaries, and journey metadata persistence.
18
+
19
+ ## Narrative context
20
+
21
+ `v0.12.0` made Mirror Web local-user aware through Mirror switching and per-Mirror preferences. `v0.13.0` makes the local configuration boundary visible and safer to operate. The release separates concerns clearly: Configuration explains Mirror/runtime settings, Workspace owns journey settings, and Preferences owns user-facing web preferences.
22
+
23
+ The release deliberately avoids raw configuration editors. It does not expose complete environment dumps, raw `.env` editing, YAML editing, database editing, or journey content editing. Where writes exist, they pass through a bounded service method and are limited to selected journey metadata fields.
24
+
25
+ ## What changed
26
+
27
+ - Added `GET /api/configuration/overview` for non-sensitive configuration overview.
28
+ - Added a Configuration tab to the web shell.
29
+ - Shows Mirror home, database, preferences file, backups, exports, transcript exports, extensions, runtime environment, memory search model, memory extraction model, LLM audit logging, and conversation routing.
30
+ - Added Environment boundary visibility for selected runtime variables.
31
+ - Masks sensitive environment-derived values such as API keys.
32
+ - Added a Workspace Settings section for the selected journey.
33
+ - Added `POST /api/journeys/metadata` for safe metadata updates.
34
+ - Added `JourneyService.update_metadata_fields()` for selected field updates.
35
+ - Added tests for configuration serialization, masking, Workspace placement, safe write behavior, and final coherence.
36
+
37
+ ## Conscious exclusions
38
+
39
+ - No raw `.env` editing.
40
+ - No complete `os.environ` dump.
41
+ - No secret disclosure.
42
+ - No raw JSON/YAML/database editor.
43
+ - No journey content or briefing editor.
44
+ - No remote configuration management.
45
+ - No operation runner.
46
+ - No conversation retitle.
47
+
48
+ ## Validation
49
+
50
+ Focused validation passed during the story cycle:
51
+
52
+ ```bash
53
+ uv run pytest tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
54
+ uv run ruff check src/memory/services src/memory/surfaces src/memory/web tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
55
+ uv run ruff format --check src/memory/services src/memory/surfaces src/memory/web tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
56
+ node --check src/memory/web/static/app.js
57
+ git diff --check
58
+ ```
59
+
60
+ Navigator browser validation accepted S1–S5, including final Configuration/Workspace boundary coherence, environment masking, and safe journey metadata edit persistence.
61
+
62
+ ## Next horizon
63
+
64
+ The next CV13 epic is Conversation Intelligence: readable transcripts, useful conversation titles, and safe retitle operations for individual and legacy conversations.
@@ -0,0 +1,68 @@
1
+ [< Releases](index.md)
2
+
3
+ # v0.14.0 — Conversation Intelligence
4
+
5
+ ## Digest
6
+
7
+ This release closes CV13.E4, the Conversation Intelligence slice of the Mirror Web Experience. Conversations are now readable as transcript pages, Workspace conversation cards navigate directly to those transcripts, titles can be corrected manually, and a single conversation can request an explicit OpenRouter-backed title suggestion that is previewed before saving. The release also improves configuration awareness with detailed reference links and adds read-only journey attachment visibility.
8
+
9
+ ## Highlights
10
+
11
+ - Added read-only conversation transcript pages.
12
+ - Linked Workspace conversation cards to transcript pages with mouse and keyboard navigation.
13
+ - Added manual conversation title editing through a bounded service endpoint.
14
+ - Added explicit single-conversation title suggestions through OpenRouter, with preview-only behavior and manual save approval.
15
+ - Added detailed Configuration Reference documentation and compact reference icons in the Configuration page.
16
+ - Added required/optional indicators for surfaced configuration items.
17
+ - Removed transcript export directory visibility from the Configuration surface because it is not yet a clear product-facing operation.
18
+ - Added read-only journey attachment visibility in Workspace.
19
+ - Refined Workspace journey sidebar and metric card density.
20
+
21
+ ## Narrative context
22
+
23
+ `v0.13.0` made Mirror/runtime configuration visible and safer to inspect. `v0.14.0` turns conversation history into a usable local reading surface. Conversation cards are no longer dead summaries: they open transcripts, show speaker labels aligned with the active Mirror profile, and allow intentional title improvement.
24
+
25
+ The release keeps generation controlled. No LLM calls run on page load. Title suggestions happen only after clicking `Suggest title`, are not saved automatically, and must be approved through the existing manual `Save title` path.
26
+
27
+ ## What changed
28
+
29
+ - Added `GET /api/conversations/detail` for bounded read-only transcript payloads.
30
+ - Added direct `#conversation/<id>` navigation.
31
+ - Added clickable and keyboard-accessible Workspace conversation cards.
32
+ - Added `ConversationService.update_title()` and `POST /api/conversations/title`.
33
+ - Added conversation title textbox to transcript pages.
34
+ - Added `ConversationService.suggest_title()` and `POST /api/conversations/title-suggestion`.
35
+ - Added `CONVERSATION_TITLE_PROMPT` and `generate_conversation_title()`.
36
+ - Added Configuration Reference docs under `docs/reference/configuration.md`.
37
+ - Added `docHref` and required/optional metadata to surfaced Configuration items.
38
+ - Added read-only Workspace Attachments tab and attachment metric for selected journeys.
39
+ - Propagated configured journey icons into the Workspace journey sidebar.
40
+
41
+ ## Conscious exclusions
42
+
43
+ - No batch retitle execution.
44
+ - No LLM call on transcript page load.
45
+ - No automatic save after title suggestion.
46
+ - No message editing.
47
+ - No conversation deletion.
48
+ - No attachment upload, editing, or deletion.
49
+ - No raw configuration editor.
50
+ - No transcript export operation surfaced in the web UI.
51
+
52
+ ## Validation
53
+
54
+ Focused validation passed during the story cycle:
55
+
56
+ ```bash
57
+ uv run pytest tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
58
+ uv run ruff check src/memory/services src/memory/surfaces src/memory/web tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
59
+ uv run ruff format --check src/memory/services src/memory/surfaces src/memory/web tests/unit/memory/surfaces/test_workspace.py tests/unit/memory/web/test_configuration.py tests/unit/memory/web/test_server.py
60
+ node --check src/memory/web/static/app.js
61
+ git diff --check
62
+ ```
63
+
64
+ Navigator browser validation accepted transcript reading, card navigation, manual title edit, explicit title suggestion/approval, configuration reference links, compact configuration icons, journey sidebar refinements, metric density, and read-only attachment visibility.
65
+
66
+ ## Next horizon
67
+
68
+ The next CV13 epic is Web Operations Runner: allowlisted maintenance operations with parameters, dry-runs, streaming progress, audit evidence, and controlled execution paths.
@@ -0,0 +1,48 @@
1
+ ---
2
+ digest: >
3
+ v0.15.0 closes CV13.E5 Web Operations Runner with the first safe action surface in Mirror Web. The release moves the web app beyond read-only inspection by introducing a server-owned operation catalog, bounded runnable operations, local audit evidence, and a visible Operations page. Execution is intentionally synchronous-first: operations run inside the current request, return structured evidence, and leave a local history record. Job-based execution, streaming, cancellation, restore flows, arbitrary commands, and runtime updates remain outside this release.
4
+ ---
5
+
6
+ # v0.15.0 — Web Operations Runner
7
+
8
+ **Date:** 2026-05-26
9
+
10
+ ## Highlights
11
+
12
+ - Added a server-owned allowlist catalog for web operations.
13
+ - Added runnable operations for runtime health, database backup, and conversation journey repair.
14
+ - Added local audit persistence in `operation_runs` and a recent-runs API.
15
+ - Added the visible Operations page with compact operation rows, operation detail panels, readable result cards, and recent audit evidence.
16
+ - Kept execution synchronous-first, with no arbitrary shell command, raw SQL, restore, delete, update, background job, streaming, or cancellation surface.
17
+
18
+ ## Where We Started
19
+
20
+ Mirror Web had become useful for visibility: Workspace, Identity, configuration, conversations, and attachments were inspectable without going to SQLite or the terminal. But operational care still lived mostly in CLI commands. Runtime health, database backup, and conversation journey repair were real maintenance needs, but asking users to run the right command with the right flags kept the web surface contemplative rather than operational.
21
+
22
+ The risk was symmetrical. Moving operations into the browser could make Mirror easier to care for, but it could also accidentally become a remote command runner. The release had to create action without giving the web raw power over the machine.
23
+
24
+ ## What Changed
25
+
26
+ The first layer was the operation contract. Mirror Web now exposes a catalog of server-owned operations with ids, descriptions, risk levels, dry-run behavior, execution state, and parameter declarations. The browser does not invent operations or submit command strings; it can only request operations that the server has declared.
27
+
28
+ The second layer was bounded execution. `runtime-health` runs read-only runtime inspection and returns structured status data. `database-backup` creates and optionally verifies a local backup using the existing backup path for the selected Mirror home. `conversation-journey-repair` previews high-confidence journey association repairs by default and only applies them when `dryRun` is explicitly false, creating a backup first.
29
+
30
+ The third layer was evidence. Operation runs are recorded locally in the selected Mirror database through the new `operation_runs` table. Successful and failed known-operation requests receive a `runId`, and recent runs can be listed through the web API. The audit record stores bounded parameters, status, outcome, timestamps, summaries, result evidence, and errors.
31
+
32
+ The final layer was the surface. The Operations page shows operations as compact rows, keeps configuration inside an operation detail panel, renders operation-specific result cards, keeps raw JSON collapsed as evidence, and presents recent audit history as a simple list. Runtime health now explains what needs attention instead of only reporting `attention needed`.
33
+
34
+ ## Conscious Exclusions
35
+
36
+ This release does not introduce background jobs, streaming events, cancellation, retry, scheduling, backup restore, backup download, backup deletion, runtime update execution, extension installation, arbitrary filesystem paths, arbitrary SQL, or arbitrary shell commands.
37
+
38
+ Those exclusions are part of the safety boundary. v0.15 proves that Mirror Web can act through small, allowlisted, auditable operations before it learns to coordinate long-running work.
39
+
40
+ ## What We Learned
41
+
42
+ The Operations surface clarified that audit evidence is not the same thing as a user interface. Raw JSON was useful while validating the contract, but the release only became coherent when results were rendered as operation-specific cards and raw payloads moved into collapsible evidence.
43
+
44
+ The work also clarified the next architectural threshold. Synchronous execution is enough for small maintenance operations, but it should not be stretched into long-running work. The future job model should be introduced deliberately, not smuggled in through larger POST requests.
45
+
46
+ ## Next Horizon
47
+
48
+ The visible horizon is an operation job model with polling, then streaming events and cancellation for operations that can take longer or need progress feedback. That future layer should build on the contracts created here: operation ids, declared parameters, local audit records, and explicit user approval.
@@ -0,0 +1,50 @@
1
+ ---
2
+ digest: >
3
+ v0.16.0 closes CV13 Mirror Web Experience with the first coherent async and agent-shaped web operations substrate. The release moves Operations from request-bound actions into durable asynchronous runs with lifecycle events, result timelines, controlled command execution, cooperative cancellation, approval checkpoints, and a bounded read-only agent-run prototype. The browser now opens operation results in a full-width run console with polled output, completion handling, historical result navigation, and a slow demo operation for validating progress. True SSE/WebSocket streaming, unrestricted headless agent execution, arbitrary shell access, and broad mutation authority remain intentionally outside this release.
4
+ ---
5
+
6
+ # v0.16.0 — Async Operations and Agentic Web Console
7
+
8
+ **Date:** 2026-05-27
9
+
10
+ ## Highlights
11
+
12
+ - Converted web operations from synchronous `POST` execution into durable asynchronous operation runs.
13
+ - Added `operation_run_events` so queued, running, progress, completed, failed, cancelled, approval-required, and approved states can be inspected as evidence.
14
+ - Added a controlled command executor with fixed argv, `shell=False`, explicit cwd, sanitized environment, timeout, and bounded stdout/stderr capture.
15
+ - Added cooperative cancellation, approval checkpoints before selected persistent writes, and a read-only `agent-run-prototype` operation.
16
+ - Reworked the Operations UI into a full-width run console with polled output, result details, historical run navigation, completion messaging, and a bounded slow demo operation.
17
+
18
+ ## Where We Started
19
+
20
+ v0.15.0 proved that Mirror Web could run small allowlisted maintenance operations safely. But those operations still lived inside the original request/response cycle. That was acceptable for runtime health, backups, and small repair flows, but it was the wrong shape for anything that takes time, asks for approval, emits evidence, or resembles agent work.
21
+
22
+ The next step was not to add an unconstrained agent. It was to give operations the body an agent would eventually need: durable runs, visible progress, cancellation, approval, evidence, and a console where the user can watch work unfold.
23
+
24
+ ## What Changed
25
+
26
+ Operations now start as asynchronous runs. `POST /api/operations/run` validates the server-owned operation and parameters, creates a queued run, returns a run id, and lets a local worker execute outside the original web request. Runs can be fetched directly and remain visible in recent history.
27
+
28
+ Each run now records lifecycle evidence in `operation_run_events`. The event timeline preserves meaningful state transitions and progress messages. The UI uses that evidence to reopen historical results and to show current work in a run console instead of burying everything in audit cards.
29
+
30
+ The release also adds the first command-shaped execution boundary. `runtime-diagnose` runs through a controlled executor: fixed argv, no shell, explicit cwd, sanitized environment, timeout, and captured bounded output. This is not a terminal in the browser. It is a code-owned command capability behind the operation catalog.
31
+
32
+ Mutating work gained a pause point. Conversation journey repair apply requests now enter `approval_required` before persistent writes and continue only after an explicit approval action. Active runs can receive cancellation requests, with the current implementation remaining cooperative and evidence-based rather than forcibly killing Python threads.
33
+
34
+ Finally, the release adds a bounded `agent-run-prototype`. It accepts an intent and returns a read-only proposal with explicit boundaries through the same run, event, approval-capable, and evidence model. The Operations UI now opens a full-width execution console with tabs for polled console output and result details, temporary completion messaging, clickable historical run cards, and a `run-console-demo` operation for validating progress over time.
35
+
36
+ ## Conscious Exclusions
37
+
38
+ This release does not introduce true SSE/WebSocket streaming. The console updates by polling durable run state. It also does not embed an unrestricted Pi or headless agent runtime, expose arbitrary shell commands, accept user-supplied argv/cwd/env, run raw SQL, perform git mutation, execute runtime updates, install extensions, or provide broad write approval.
39
+
40
+ The agent prototype is deliberately read-only and proposal-oriented. It proves the product shape and execution substrate without granting autonomous power over the local machine.
41
+
42
+ ## What We Learned
43
+
44
+ The core design move was treating the agent as an extreme case of the operation model, not as a privileged bypass. Once that was clear, the sequence became coherent: async runs before events, events before command execution, command execution before cancellation and approvals, and only then an agent-shaped prototype.
45
+
46
+ The browser validation also clarified that evidence is not enough. Users need to feel the run as a visible execution surface. The final console polish changed Operations from an audit page into a place where work can be watched, inspected, and trusted.
47
+
48
+ ## Next Horizon
49
+
50
+ The visible horizon is hardening the run substrate toward real streaming and richer agent execution. Future work can replace polling with SSE/WebSocket, make cancellation cooperate with longer-running subprocesses, and connect a real headless agent behind the same allowlisted capability boundary. The boundary remains the important part: agent work should request explicit Mirror capabilities, not raw access to the machine.
@@ -0,0 +1,55 @@
1
+ ---
2
+ digest: >
3
+ v0.16.1 publishes the runtime update preflight resilience fix validated during
4
+ CV9.E2 stabilization. The updater now distinguishes full runtime readiness
5
+ from a narrow update-safe preflight state, so old code no longer blocks a
6
+ stable update only because the database already contains a core migration
7
+ introduced by the target version. Runtime status also recovers SQLite WAL
8
+ sidecar absence during read inspection. The normal safety path remains intact:
9
+ clean git state, backup, backup verification, fast-forward, migrations, and
10
+ post-update status are still enforced.
11
+ ---
12
+
13
+ # v0.16.1 — Runtime Update Preflight Resilience
14
+
15
+ **Date:** 2026-05-27
16
+
17
+ ## Highlights
18
+
19
+ - Published the CV9.E2.S3 updater hardening fix as a patch release.
20
+ - Allows `runtime update` to pass a narrow pre-update gate when the only blocker is core migration drift that the target release may resolve.
21
+ - Keeps dirty git trees, missing databases, extension health issues, checksum drift, and unreadable migration ledgers blocked.
22
+ - Recovers SQLite WAL sidecar absence during runtime status inspection without creating a missing database.
23
+ - Preserves the normal backup, backup verification, fast-forward, migration, and post-update status gates.
24
+
25
+ ## Where We Started
26
+
27
+ Production Mirror was on `0.15.0` while stable had advanced to `0.16.0`. The welcome correctly detected the new version, but the update command stopped at the status gate before fetching or fast-forwarding.
28
+
29
+ The root problem was not the specific migration. It was the updater's shape. The old checkout used its own strict `runtime status` as a hard pre-update gate. When the database already contained a migration row introduced by the newer target release, the old code called that row unknown and blocked the very update that would make it known.
30
+
31
+ A second fragility appeared in the same diagnosis: strict SQLite read-only inspection can report `unable to open database file` for a WAL database when sidecar files are absent or need refresh.
32
+
33
+ ## What Changed
34
+
35
+ `runtime status` remains strict. It still reports attention when installed code sees pending or unknown core migrations.
36
+
37
+ `runtime update` now has a narrower preflight interpretation. If mirror home resolution, git state, database existence, and extension health are safe, and the only remaining blocker is readable core migration drift, the updater may proceed into the normal update path. It still fetches the configured channel, accepts only no-op or fast-forward plans, creates and verifies a database backup before migrations, applies migrations through `MemoryClient`, and requires post-update status to be ready.
38
+
39
+ The SQLite status reader still tries strict read-only mode first. If that fails with `unable to open database file`, it retries against the existing database in bounded read-write mode so SQLite can recreate WAL sidecars. It does not create a missing database file or mutate semantic Mirror data.
40
+
41
+ ## Conscious Exclusions
42
+
43
+ This release does not add broad automatic repair. Dirty worktrees, diverged branches, missing databases, invalid extension manifests, extension migration drift, checksum drift, and unreadable migration ledgers still require explicit diagnosis and repair.
44
+
45
+ This release also does not deliberately reproduce future migration drift in production by editing migration ledgers. That remains unsafe for a user's real memory database. The production recovery evidence and focused regression tests cover the failure class without corrupting the ledger.
46
+
47
+ ## What We Learned
48
+
49
+ A self-updater cannot treat current-code status and update-preflight status as the same question. Runtime readiness asks whether the installed checkout and database are coherent now. Update readiness asks whether it is safe to move to code that may restore that coherence.
50
+
51
+ The boundary is narrow, but important. Safety is not the same as refusing to move. Sometimes the safest operation is the controlled update path.
52
+
53
+ ## Next Horizon
54
+
55
+ The next validation step is to update production from `0.16.0` to `0.16.1` through the normal user-facing flow. If we want to validate the newly installed updater executing another update, a later minimal stub such as `v0.16.2` can exercise that path without development-branch bridging.