mirror-mind 0.0.1 → 0.33.0

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 (474) hide show
  1. package/.claude/hooks/log-assistant-reply.sh +85 -0
  2. package/.claude/hooks/log-session-end.sh +85 -0
  3. package/.claude/hooks/log-user-prompt.sh +85 -0
  4. package/.claude/hooks/mirror-inject.sh +85 -0
  5. package/.claude/hooks/session-start.sh +85 -0
  6. package/.gemini/hooks/log-assistant.sh +85 -0
  7. package/.gemini/hooks/log-user.sh +85 -0
  8. package/.gemini/hooks/session-end.sh +85 -0
  9. package/.gemini/hooks/session-start.sh +85 -0
  10. package/.pi/extensions/mirror-logger.ts +646 -0
  11. package/.pi/skills/mm-backup/SKILL.md +21 -0
  12. package/.pi/skills/mm-build/SKILL.md +1206 -0
  13. package/.pi/skills/mm-consolidate/SKILL.md +112 -0
  14. package/.pi/skills/mm-consult/SKILL.md +70 -0
  15. package/.pi/skills/mm-conversations/SKILL.md +16 -0
  16. package/.pi/skills/mm-discard/SKILL.md +39 -0
  17. package/.pi/skills/mm-explore/SKILL.md +255 -0
  18. package/.pi/skills/mm-help/SKILL.md +74 -0
  19. package/.pi/skills/mm-identity/SKILL.md +96 -0
  20. package/.pi/skills/mm-journal/SKILL.md +16 -0
  21. package/.pi/skills/mm-journey/SKILL.md +23 -0
  22. package/.pi/skills/mm-journeys/SKILL.md +15 -0
  23. package/.pi/skills/mm-memories/SKILL.md +17 -0
  24. package/.pi/skills/mm-mirror/SKILL.md +98 -0
  25. package/.pi/skills/mm-mute/SKILL.md +18 -0
  26. package/.pi/skills/mm-new/SKILL.md +18 -0
  27. package/.pi/skills/mm-recall/SKILL.md +17 -0
  28. package/.pi/skills/mm-release-notes/SKILL.md +52 -0
  29. package/.pi/skills/mm-seed/SKILL.md +19 -0
  30. package/.pi/skills/mm-shadow/SKILL.md +117 -0
  31. package/.pi/skills/mm-soul/SKILL.md +502 -0
  32. package/.pi/skills/mm-tasks/SKILL.md +24 -0
  33. package/.pi/skills/mm-update/SKILL.md +32 -0
  34. package/.pi/skills/mm-week/SKILL.md +28 -0
  35. package/.pi/skills/mm-welcome/SKILL.md +24 -0
  36. package/AGENTS.md +188 -0
  37. package/README.md +126 -9
  38. package/bin/loader.js +67 -0
  39. package/bin/mirror-hook.js +7 -0
  40. package/bin/mirror.js +7 -0
  41. package/docs/releases/index.md +100 -0
  42. package/docs/releases/pending-cutoffs.md +510 -0
  43. package/docs/releases/v0.10.0.md +123 -0
  44. package/docs/releases/v0.10.1.md +66 -0
  45. package/docs/releases/v0.10.10.md +51 -0
  46. package/docs/releases/v0.10.11.md +39 -0
  47. package/docs/releases/v0.10.12.md +57 -0
  48. package/docs/releases/v0.10.13.md +35 -0
  49. package/docs/releases/v0.10.14.md +42 -0
  50. package/docs/releases/v0.10.15.md +53 -0
  51. package/docs/releases/v0.10.16.md +35 -0
  52. package/docs/releases/v0.10.17.md +43 -0
  53. package/docs/releases/v0.10.2.md +64 -0
  54. package/docs/releases/v0.10.3.md +78 -0
  55. package/docs/releases/v0.10.4.md +42 -0
  56. package/docs/releases/v0.10.5.md +57 -0
  57. package/docs/releases/v0.10.6.md +47 -0
  58. package/docs/releases/v0.10.7.md +53 -0
  59. package/docs/releases/v0.10.8.md +49 -0
  60. package/docs/releases/v0.10.9.md +37 -0
  61. package/docs/releases/v0.11.0.md +86 -0
  62. package/docs/releases/v0.12.0.md +67 -0
  63. package/docs/releases/v0.13.0.md +64 -0
  64. package/docs/releases/v0.14.0.md +68 -0
  65. package/docs/releases/v0.15.0.md +48 -0
  66. package/docs/releases/v0.16.0.md +50 -0
  67. package/docs/releases/v0.16.1.md +55 -0
  68. package/docs/releases/v0.16.2.md +36 -0
  69. package/docs/releases/v0.17.0.md +50 -0
  70. package/docs/releases/v0.17.1.md +58 -0
  71. package/docs/releases/v0.17.2.md +42 -0
  72. package/docs/releases/v0.17.3.md +58 -0
  73. package/docs/releases/v0.18.0.md +84 -0
  74. package/docs/releases/v0.18.1.md +51 -0
  75. package/docs/releases/v0.18.2.md +69 -0
  76. package/docs/releases/v0.19.0.md +85 -0
  77. package/docs/releases/v0.19.1.md +46 -0
  78. package/docs/releases/v0.20.0.md +85 -0
  79. package/docs/releases/v0.21.0.md +61 -0
  80. package/docs/releases/v0.21.1.md +47 -0
  81. package/docs/releases/v0.22.0.md +77 -0
  82. package/docs/releases/v0.22.1.md +42 -0
  83. package/docs/releases/v0.23.0.md +105 -0
  84. package/docs/releases/v0.24.0.md +125 -0
  85. package/docs/releases/v0.25.0.md +107 -0
  86. package/docs/releases/v0.26.0.md +139 -0
  87. package/docs/releases/v0.26.1.md +65 -0
  88. package/docs/releases/v0.26.2.md +43 -0
  89. package/docs/releases/v0.27.0.md +63 -0
  90. package/docs/releases/v0.28.0.md +59 -0
  91. package/docs/releases/v0.29.0.md +61 -0
  92. package/docs/releases/v0.29.1.md +59 -0
  93. package/docs/releases/v0.29.2.md +59 -0
  94. package/docs/releases/v0.29.3.md +93 -0
  95. package/docs/releases/v0.30.0.md +75 -0
  96. package/docs/releases/v0.30.1.md +93 -0
  97. package/docs/releases/v0.30.2.md +66 -0
  98. package/docs/releases/v0.31.0.md +122 -0
  99. package/docs/releases/v0.31.1.md +142 -0
  100. package/docs/releases/v0.31.10.md +118 -0
  101. package/docs/releases/v0.31.11.md +88 -0
  102. package/docs/releases/v0.31.12.md +105 -0
  103. package/docs/releases/v0.31.13.md +99 -0
  104. package/docs/releases/v0.31.14.md +97 -0
  105. package/docs/releases/v0.31.2.md +115 -0
  106. package/docs/releases/v0.31.3.md +142 -0
  107. package/docs/releases/v0.31.4.md +117 -0
  108. package/docs/releases/v0.31.5.md +155 -0
  109. package/docs/releases/v0.31.6.md +132 -0
  110. package/docs/releases/v0.31.7.md +132 -0
  111. package/docs/releases/v0.31.8.md +120 -0
  112. package/docs/releases/v0.31.9.md +120 -0
  113. package/docs/releases/v0.32.0.md +261 -0
  114. package/docs/releases/v0.32.1.md +59 -0
  115. package/docs/releases/v0.33.0.md +164 -0
  116. package/docs/releases/v0.8.0.md +118 -0
  117. package/docs/releases/v0.9.0.md +98 -0
  118. package/docs/releases/v0.9.1.md +83 -0
  119. package/package.json +102 -6
  120. package/plugins/mirror-mind/.claude-plugin/plugin.json +17 -0
  121. package/plugins/mirror-mind/hooks/hooks.json +62 -0
  122. package/plugins/mirror-mind/hooks/log-assistant-reply.sh +98 -0
  123. package/plugins/mirror-mind/hooks/log-session-end.sh +98 -0
  124. package/plugins/mirror-mind/hooks/log-user-prompt.sh +98 -0
  125. package/plugins/mirror-mind/hooks/mirror-inject.sh +98 -0
  126. package/plugins/mirror-mind/hooks/session-start.sh +98 -0
  127. package/plugins/mirror-mind/skills/mm-backup/SKILL.md +27 -0
  128. package/plugins/mirror-mind/skills/mm-build/SKILL.md +1206 -0
  129. package/plugins/mirror-mind/skills/mm-consolidate/SKILL.md +112 -0
  130. package/plugins/mirror-mind/skills/mm-consult/SKILL.md +83 -0
  131. package/plugins/mirror-mind/skills/mm-conversations/SKILL.md +17 -0
  132. package/plugins/mirror-mind/skills/mm-discard/SKILL.md +40 -0
  133. package/plugins/mirror-mind/skills/mm-explore/SKILL.md +241 -0
  134. package/plugins/mirror-mind/skills/mm-help/SKILL.md +104 -0
  135. package/plugins/mirror-mind/skills/mm-identity/SKILL.md +96 -0
  136. package/plugins/mirror-mind/skills/mm-journal/SKILL.md +21 -0
  137. package/plugins/mirror-mind/skills/mm-journey/SKILL.md +37 -0
  138. package/plugins/mirror-mind/skills/mm-journeys/SKILL.md +15 -0
  139. package/plugins/mirror-mind/skills/mm-memories/SKILL.md +20 -0
  140. package/plugins/mirror-mind/skills/mm-mirror/SKILL.md +67 -0
  141. package/plugins/mirror-mind/skills/mm-mute/SKILL.md +18 -0
  142. package/plugins/mirror-mind/skills/mm-new/SKILL.md +18 -0
  143. package/plugins/mirror-mind/skills/mm-recall/SKILL.md +17 -0
  144. package/plugins/mirror-mind/skills/mm-release-notes/SKILL.md +31 -0
  145. package/plugins/mirror-mind/skills/mm-seed/SKILL.md +15 -0
  146. package/plugins/mirror-mind/skills/mm-shadow/SKILL.md +117 -0
  147. package/plugins/mirror-mind/skills/mm-soul/SKILL.md +488 -0
  148. package/plugins/mirror-mind/skills/mm-tasks/SKILL.md +36 -0
  149. package/plugins/mirror-mind/skills/mm-update/SKILL.md +30 -0
  150. package/plugins/mirror-mind/skills/mm-week/SKILL.md +46 -0
  151. package/plugins/mirror-mind/skills/mm-welcome/SKILL.md +22 -0
  152. package/scripts/codex-hooks/session-end.sh +85 -0
  153. package/scripts/codex-hooks/session-start.sh +85 -0
  154. package/scripts/codex-mirror.sh +48 -0
  155. package/templates/identity/README.md +119 -0
  156. package/templates/identity/ego/behavior.yaml +52 -0
  157. package/templates/identity/ego/constraints.yaml +15 -0
  158. package/templates/identity/ego/identity.yaml +43 -0
  159. package/templates/identity/journeys/personal-growth.yaml +39 -0
  160. package/templates/identity/organization/identity.yaml +24 -0
  161. package/templates/identity/organization/principles.yaml +17 -0
  162. package/templates/identity/personas/coach.yaml +94 -0
  163. package/templates/identity/personas/designer.yaml +93 -0
  164. package/templates/identity/personas/doctor.yaml +96 -0
  165. package/templates/identity/personas/engineer.yaml +77 -0
  166. package/templates/identity/personas/financial.yaml +97 -0
  167. package/templates/identity/personas/prompt-engineer.yaml +122 -0
  168. package/templates/identity/personas/researcher.yaml +88 -0
  169. package/templates/identity/personas/strategist.yaml +91 -0
  170. package/templates/identity/personas/teacher.yaml +95 -0
  171. package/templates/identity/personas/therapist.yaml +91 -0
  172. package/templates/identity/personas/thinker.yaml +74 -0
  173. package/templates/identity/personas/writer.yaml +76 -0
  174. package/templates/identity/self/config.yaml +16 -0
  175. package/templates/identity/self/soul.yaml +105 -0
  176. package/templates/identity/user/identity.yaml +30 -0
  177. package/ts/src/backup/staging.ts +62 -0
  178. package/ts/src/backup/zipBackup.ts +267 -0
  179. package/ts/src/backup/zipReader.ts +109 -0
  180. package/ts/src/backup/zipWriter.ts +148 -0
  181. package/ts/src/builder/activeCheckpoint.ts +134 -0
  182. package/ts/src/builder/aggregateStatus.ts +34 -0
  183. package/ts/src/builder/approve.ts +149 -0
  184. package/ts/src/builder/argv.ts +292 -0
  185. package/ts/src/builder/ariadMethod.ts +536 -0
  186. package/ts/src/builder/artifacts/artifactSurfaces.ts +106 -0
  187. package/ts/src/builder/artifacts/artifactWriter.ts +113 -0
  188. package/ts/src/builder/artifacts/closureArtifacts.ts +199 -0
  189. package/ts/src/builder/artifacts/deliveryStoryArtifacts.ts +316 -0
  190. package/ts/src/builder/artifacts/planArtifacts.ts +242 -0
  191. package/ts/src/builder/artifacts/scaffoldSections.ts +273 -0
  192. package/ts/src/builder/artifacts/scaffoldState.ts +227 -0
  193. package/ts/src/builder/artifacts/storyFiles.ts +61 -0
  194. package/ts/src/builder/artifacts/storyIndex.ts +166 -0
  195. package/ts/src/builder/cadence.ts +59 -0
  196. package/ts/src/builder/card.ts +192 -0
  197. package/ts/src/builder/checkpointRefused.ts +66 -0
  198. package/ts/src/builder/closure.ts +964 -0
  199. package/ts/src/builder/commands.ts +2053 -0
  200. package/ts/src/builder/cursorPosition.ts +176 -0
  201. package/ts/src/builder/cursorTransitions.ts +77 -0
  202. package/ts/src/builder/deliveryCursor.ts +577 -0
  203. package/ts/src/builder/deliveryStoryClosure.ts +521 -0
  204. package/ts/src/builder/deliveryStoryPlan.ts +536 -0
  205. package/ts/src/builder/deliveryStoryReady.ts +160 -0
  206. package/ts/src/builder/deliveryStoryRoadmapClosure.ts +151 -0
  207. package/ts/src/builder/expand.ts +336 -0
  208. package/ts/src/builder/flowUnit.ts +339 -0
  209. package/ts/src/builder/homeSurface.ts +122 -0
  210. package/ts/src/builder/implementationGuard.ts +125 -0
  211. package/ts/src/builder/index.ts +11 -0
  212. package/ts/src/builder/lifecycleRefusal.ts +92 -0
  213. package/ts/src/builder/lifecycleRibbon.ts +159 -0
  214. package/ts/src/builder/load.ts +313 -0
  215. package/ts/src/builder/methodAdoption.ts +113 -0
  216. package/ts/src/builder/methodDefinition.ts +429 -0
  217. package/ts/src/builder/methodInspection.ts +371 -0
  218. package/ts/src/builder/plan.ts +408 -0
  219. package/ts/src/builder/planPreauthorization.ts +265 -0
  220. package/ts/src/builder/prepare.ts +225 -0
  221. package/ts/src/builder/projectPaths.ts +64 -0
  222. package/ts/src/builder/pull.ts +356 -0
  223. package/ts/src/builder/pullCandidates.ts +463 -0
  224. package/ts/src/builder/pullCandidatesRender.ts +238 -0
  225. package/ts/src/builder/refinementField.ts +93 -0
  226. package/ts/src/builder/releaseIntent.ts +173 -0
  227. package/ts/src/builder/resumeState.ts +84 -0
  228. package/ts/src/builder/resumeSurface.ts +149 -0
  229. package/ts/src/builder/roadmapGrammar.ts +300 -0
  230. package/ts/src/builder/roadmapScan.ts +97 -0
  231. package/ts/src/builder/roadmapScope.ts +210 -0
  232. package/ts/src/builder/scopePhrases.ts +146 -0
  233. package/ts/src/builder/storyPaths.ts +196 -0
  234. package/ts/src/builder/storyPlanPreauthorization.ts +287 -0
  235. package/ts/src/builder/surfaceProtocol.ts +42 -0
  236. package/ts/src/builder/templateGeneration.ts +148 -0
  237. package/ts/src/builder/transition.ts +178 -0
  238. package/ts/src/consult/args.ts +99 -0
  239. package/ts/src/consult/core.ts +122 -0
  240. package/ts/src/consult/modelCatalog.ts +55 -0
  241. package/ts/src/consult/render.ts +47 -0
  242. package/ts/src/conversation/append.ts +414 -0
  243. package/ts/src/conversation/backfill.ts +387 -0
  244. package/ts/src/conversation/closeTail.ts +467 -0
  245. package/ts/src/conversation/extraction.ts +333 -0
  246. package/ts/src/conversation/extractionDriver.ts +130 -0
  247. package/ts/src/conversation/extractionRun.ts +70 -0
  248. package/ts/src/conversation/hookPayload.ts +51 -0
  249. package/ts/src/conversation/journeyInference.ts +165 -0
  250. package/ts/src/conversation/journeyRepair.ts +114 -0
  251. package/ts/src/conversation/lifecycleFaces.ts +197 -0
  252. package/ts/src/conversation/lifecycleWrites.ts +313 -0
  253. package/ts/src/conversation/listing.ts +77 -0
  254. package/ts/src/conversation/logger.ts +851 -0
  255. package/ts/src/conversation/loggerCli.ts +321 -0
  256. package/ts/src/conversation/loggerRuntime.ts +259 -0
  257. package/ts/src/conversation/metadataLifecycle.ts +443 -0
  258. package/ts/src/conversation/recall.ts +66 -0
  259. package/ts/src/conversation/sessionComposites.ts +258 -0
  260. package/ts/src/conversation/sessionImport.ts +90 -0
  261. package/ts/src/conversation/transcriptBackfill.ts +141 -0
  262. package/ts/src/cultivation/applyActions.ts +241 -0
  263. package/ts/src/cultivation/cluster.ts +86 -0
  264. package/ts/src/cultivation/consolidationStore.ts +281 -0
  265. package/ts/src/cultivation/promptContext.ts +62 -0
  266. package/ts/src/cultivation/propose.ts +305 -0
  267. package/ts/src/cultivation/scan.ts +155 -0
  268. package/ts/src/db/backupGate.ts +47 -0
  269. package/ts/src/db/bootstrap.ts +108 -0
  270. package/ts/src/db/bootstrapLock.ts +223 -0
  271. package/ts/src/db/copyGuard.ts +60 -0
  272. package/ts/src/db/database.ts +397 -0
  273. package/ts/src/db/decode.ts +66 -0
  274. package/ts/src/db/ftsIntegrity.ts +41 -0
  275. package/ts/src/db/migrateOnOpen.ts +214 -0
  276. package/ts/src/db/migrations.ts +576 -0
  277. package/ts/src/db/readyOnOpen.ts +35 -0
  278. package/ts/src/db/rowDecode.ts +42 -0
  279. package/ts/src/db/schema.ts +432 -0
  280. package/ts/src/db/schemaInventory.ts +225 -0
  281. package/ts/src/db/schemaInventorySnapshot.ts +2107 -0
  282. package/ts/src/db/schemaState.ts +91 -0
  283. package/ts/src/db/schemaTsDivergence.ts +114 -0
  284. package/ts/src/descriptor/descriptorRead.ts +49 -0
  285. package/ts/src/docs/docsLint.ts +265 -0
  286. package/ts/src/explorer/handoff.ts +522 -0
  287. package/ts/src/explorer/render.ts +335 -0
  288. package/ts/src/explorer/story.ts +769 -0
  289. package/ts/src/explorer/transition.ts +72 -0
  290. package/ts/src/extensions/bindings.ts +170 -0
  291. package/ts/src/extensions/catalog.ts +249 -0
  292. package/ts/src/extensions/catalogCommands.ts +513 -0
  293. package/ts/src/extensions/catalogWrites.ts +652 -0
  294. package/ts/src/extensions/contextRuntime.ts +325 -0
  295. package/ts/src/extensions/dispatch.ts +374 -0
  296. package/ts/src/extensions/errors.ts +24 -0
  297. package/ts/src/extensions/manifest.ts +356 -0
  298. package/ts/src/extensions/migrations.ts +350 -0
  299. package/ts/src/extraction/conversation.ts +304 -0
  300. package/ts/src/extraction/conversationMetadata.ts +206 -0
  301. package/ts/src/extraction/fencing.ts +106 -0
  302. package/ts/src/extraction/json.ts +17 -0
  303. package/ts/src/extraction/prompts.ts +470 -0
  304. package/ts/src/frontDoor/args.ts +30 -0
  305. package/ts/src/frontDoor/argvShape.ts +106 -0
  306. package/ts/src/frontDoor/buildLoadRuntime.ts +139 -0
  307. package/ts/src/frontDoor/buildRoute.ts +398 -0
  308. package/ts/src/frontDoor/cli.ts +1872 -0
  309. package/ts/src/frontDoor/cloneRoleGuard.ts +98 -0
  310. package/ts/src/frontDoor/consultRoute.ts +50 -0
  311. package/ts/src/frontDoor/contentTailRoute.ts +239 -0
  312. package/ts/src/frontDoor/conversationLoggerRoute.ts +83 -0
  313. package/ts/src/frontDoor/cultivationRoute.ts +210 -0
  314. package/ts/src/frontDoor/dbPath.ts +131 -0
  315. package/ts/src/frontDoor/dbSafetyToolsRoute.ts +240 -0
  316. package/ts/src/frontDoor/exploreRoute.ts +572 -0
  317. package/ts/src/frontDoor/extensionCatalogRoute.ts +252 -0
  318. package/ts/src/frontDoor/frontDoorLog.ts +57 -0
  319. package/ts/src/frontDoor/identityWrite.ts +36 -0
  320. package/ts/src/frontDoor/journeyWriteRoute.ts +26 -0
  321. package/ts/src/frontDoor/lifecycleWriteRoute.ts +110 -0
  322. package/ts/src/frontDoor/liveBackup.ts +100 -0
  323. package/ts/src/frontDoor/mirrorModeRoute.ts +163 -0
  324. package/ts/src/frontDoor/namedRefusal.ts +35 -0
  325. package/ts/src/frontDoor/nodeSupport.ts +24 -0
  326. package/ts/src/frontDoor/render/consolidate.ts +199 -0
  327. package/ts/src/frontDoor/render/conversations.ts +33 -0
  328. package/ts/src/frontDoor/render/cultivationShared.ts +21 -0
  329. package/ts/src/frontDoor/render/descriptor.ts +20 -0
  330. package/ts/src/frontDoor/render/detectPersona.ts +50 -0
  331. package/ts/src/frontDoor/render/icons.ts +13 -0
  332. package/ts/src/frontDoor/render/identity.ts +59 -0
  333. package/ts/src/frontDoor/render/identityRows.ts +17 -0
  334. package/ts/src/frontDoor/render/inspectPersona.ts +53 -0
  335. package/ts/src/frontDoor/render/journeyStatus.ts +78 -0
  336. package/ts/src/frontDoor/render/journeys.ts +79 -0
  337. package/ts/src/frontDoor/render/list.ts +41 -0
  338. package/ts/src/frontDoor/render/memories.ts +67 -0
  339. package/ts/src/frontDoor/render/recall.ts +49 -0
  340. package/ts/src/frontDoor/render/shadow.ts +155 -0
  341. package/ts/src/frontDoor/render/tasks.ts +99 -0
  342. package/ts/src/frontDoor/render/tasksImportSync.ts +63 -0
  343. package/ts/src/frontDoor/render/week.ts +113 -0
  344. package/ts/src/frontDoor/routing.ts +1001 -0
  345. package/ts/src/frontDoor/runtimeRoute.ts +623 -0
  346. package/ts/src/frontDoor/searchRoute.ts +166 -0
  347. package/ts/src/frontDoor/seedPaths.ts +98 -0
  348. package/ts/src/frontDoor/sessionStartWelcomeRoute.ts +166 -0
  349. package/ts/src/frontDoor/soulRoute.ts +433 -0
  350. package/ts/src/frontDoor/stdinSource.ts +37 -0
  351. package/ts/src/frontDoor/tasksImportSyncRoute.ts +110 -0
  352. package/ts/src/frontDoor/tasksWriteRoute.ts +101 -0
  353. package/ts/src/frontDoor/usage.ts +176 -0
  354. package/ts/src/guards/claudePlugin.ts +298 -0
  355. package/ts/src/guards/packContents.ts +306 -0
  356. package/ts/src/guards/piSourcedSkills.ts +70 -0
  357. package/ts/src/guards/retiredRouteShadows.ts +57 -0
  358. package/ts/src/guards/retiredSurfaces.ts +564 -0
  359. package/ts/src/hooks/claude.ts +214 -0
  360. package/ts/src/hooks/codex.ts +45 -0
  361. package/ts/src/hooks/gemini.ts +126 -0
  362. package/ts/src/hooks/main.ts +109 -0
  363. package/ts/src/hooks/mirrorState.ts +71 -0
  364. package/ts/src/hooks/payload.ts +73 -0
  365. package/ts/src/hooks/runtime.ts +179 -0
  366. package/ts/src/hooks/runtimeDetection.ts +34 -0
  367. package/ts/src/identity/applyConsolidationIdentityUpdate.ts +67 -0
  368. package/ts/src/identity/descriptorGenerate.ts +162 -0
  369. package/ts/src/identity/identityEdit.ts +143 -0
  370. package/ts/src/identity/identityKey.ts +77 -0
  371. package/ts/src/identity/identityRead.ts +69 -0
  372. package/ts/src/identity/identityStore.ts +80 -0
  373. package/ts/src/identity/journeyListing.ts +53 -0
  374. package/ts/src/identity/personaInspect.ts +44 -0
  375. package/ts/src/identity/personaListing.ts +37 -0
  376. package/ts/src/identity/setIdentity.ts +64 -0
  377. package/ts/src/index.ts +231 -0
  378. package/ts/src/init/init.ts +111 -0
  379. package/ts/src/journey/journeyOptions.ts +131 -0
  380. package/ts/src/journey/journeyRemoval.ts +158 -0
  381. package/ts/src/journey/journeyStatus.ts +149 -0
  382. package/ts/src/journey/journeySyncFile.ts +87 -0
  383. package/ts/src/journey/journeyWrite.ts +203 -0
  384. package/ts/src/journey/parentJourney.ts +41 -0
  385. package/ts/src/journey/validateParentJourney.ts +55 -0
  386. package/ts/src/mcp/boundary.ts +151 -0
  387. package/ts/src/mcp/guards.ts +244 -0
  388. package/ts/src/mcp/main.ts +121 -0
  389. package/ts/src/mcp/payload.ts +141 -0
  390. package/ts/src/mcp/protocol.ts +141 -0
  391. package/ts/src/mcp/readModels.ts +241 -0
  392. package/ts/src/mcp/registry.ts +201 -0
  393. package/ts/src/mcp/serve.ts +120 -0
  394. package/ts/src/mcp/tools/deterministic.ts +137 -0
  395. package/ts/src/mcp/tools/providerCrossing.ts +187 -0
  396. package/ts/src/mcp/wire.ts +8 -0
  397. package/ts/src/memory/journal.ts +180 -0
  398. package/ts/src/memory/listing.ts +107 -0
  399. package/ts/src/memory/memoryWrite.ts +88 -0
  400. package/ts/src/memory/reinforcement.ts +35 -0
  401. package/ts/src/mirror/context.ts +161 -0
  402. package/ts/src/mirror/defaultResolution.ts +199 -0
  403. package/ts/src/mirror/mirrorForm.ts +43 -0
  404. package/ts/src/mirror/orchestration.ts +364 -0
  405. package/ts/src/mirror/reception.ts +194 -0
  406. package/ts/src/mirror/render.ts +75 -0
  407. package/ts/src/mirror/runtimeSession.ts +205 -0
  408. package/ts/src/mode/operatingMode.ts +148 -0
  409. package/ts/src/observability/callOutcome.ts +115 -0
  410. package/ts/src/observability/inspectLedger.ts +329 -0
  411. package/ts/src/observability/ledgerHooks.ts +126 -0
  412. package/ts/src/observability/llmCalls.ts +154 -0
  413. package/ts/src/persona/detectPersona.ts +81 -0
  414. package/ts/src/planning/promptAssembly.ts +111 -0
  415. package/ts/src/planning/weekPending.ts +81 -0
  416. package/ts/src/planning/weekPlan.ts +183 -0
  417. package/ts/src/planning/weekSave.ts +117 -0
  418. package/ts/src/providers/config.ts +189 -0
  419. package/ts/src/providers/cost.ts +64 -0
  420. package/ts/src/providers/credits.ts +204 -0
  421. package/ts/src/providers/embedding.ts +321 -0
  422. package/ts/src/providers/familyProviders.ts +147 -0
  423. package/ts/src/providers/llm.ts +334 -0
  424. package/ts/src/providers/openrouter.ts +244 -0
  425. package/ts/src/providers/redaction.ts +110 -0
  426. package/ts/src/providers/replay.ts +15 -0
  427. package/ts/src/providers/transport.ts +410 -0
  428. package/ts/src/repair/encodingRepair.ts +253 -0
  429. package/ts/src/runtime/backup.ts +151 -0
  430. package/ts/src/runtime/channel.ts +146 -0
  431. package/ts/src/runtime/config.ts +168 -0
  432. package/ts/src/runtime/diagnose.ts +686 -0
  433. package/ts/src/runtime/git.ts +510 -0
  434. package/ts/src/runtime/installKind.ts +220 -0
  435. package/ts/src/runtime/migrate.ts +154 -0
  436. package/ts/src/runtime/packageIdentity.ts +102 -0
  437. package/ts/src/runtime/releaseNotes.ts +244 -0
  438. package/ts/src/runtime/status.ts +557 -0
  439. package/ts/src/runtime/strategies/clone.ts +200 -0
  440. package/ts/src/runtime/strategies/package.ts +328 -0
  441. package/ts/src/runtime/treeRoot.ts +30 -0
  442. package/ts/src/runtime/update.ts +445 -0
  443. package/ts/src/runtime/updateGate.ts +40 -0
  444. package/ts/src/runtime/updatePipeline.ts +159 -0
  445. package/ts/src/runtime/version.ts +36 -0
  446. package/ts/src/runtime/wiring.ts +130 -0
  447. package/ts/src/search/memorySearch.ts +338 -0
  448. package/ts/src/search/ranker.ts +154 -0
  449. package/ts/src/seed/seed.ts +256 -0
  450. package/ts/src/seed/seedYaml.ts +133 -0
  451. package/ts/src/soul/apply.ts +218 -0
  452. package/ts/src/soul/harvest.ts +267 -0
  453. package/ts/src/soul/prompts/soul_beauty_voice.md +103 -0
  454. package/ts/src/soul/prompts/soul_self_voice.md +219 -0
  455. package/ts/src/soul/prompts/soul_wisdom_voice.md +121 -0
  456. package/ts/src/soul/prompts.ts +85 -0
  457. package/ts/src/soul/render.ts +358 -0
  458. package/ts/src/soul/state.ts +212 -0
  459. package/ts/src/soul/transition.ts +37 -0
  460. package/ts/src/tasks/journeyPathParse.ts +113 -0
  461. package/ts/src/tasks/taskImportSync.ts +142 -0
  462. package/ts/src/tasks/taskStore.ts +312 -0
  463. package/ts/src/tasks/weekView.ts +120 -0
  464. package/ts/src/util/clipCodePoints.ts +26 -0
  465. package/ts/src/util/paths.ts +63 -0
  466. package/ts/src/util/program.ts +9 -0
  467. package/ts/src/util/pyGenerators.ts +144 -0
  468. package/ts/src/util/pythonText.ts +317 -0
  469. package/ts/src/util/semver.ts +45 -0
  470. package/ts/src/util/shellWord.ts +25 -0
  471. package/ts/src/util/slug.ts +64 -0
  472. package/ts/src/welcome/card.ts +339 -0
  473. package/ts/src/welcome/statusLine.ts +101 -0
  474. package/ts/src/welcome/updateCache.ts +129 -0
@@ -0,0 +1,371 @@
1
+ // CV22.DS7.US8 plateau 1 — the Builder method inspection surfaces.
2
+ //
3
+ // Port of `src/memory/builder/method_inspection.py`. These are the five states
4
+ // `build inspect-method` and `build adopt` render. Unlike every other Builder
5
+ // surface they are PLAIN TEXT, not cards: no box drawing, no 54-column
6
+ // truncation, no padding — so a long journey name is printed in full and Unicode
7
+ // passes through untouched.
8
+ //
9
+ // Two details a port gets wrong by tidying:
10
+ //
11
+ // * `render_available_method` ends with `"\n".join(lines).rstrip() + "\n"`, so
12
+ // the trailing section's blank padding is stripped and the output ends in
13
+ // exactly one newline. Every other renderer here ends with `+ "\n"` on a
14
+ // joined list with no rstrip.
15
+ // * `_render_contracts` prints `rules: {count}` — a NUMBER, not the rules. The
16
+ // rule strings never reach any surface, which is why the DSL is graded
17
+ // structurally rather than through its rendering.
18
+ //
19
+ // The surfaces also embed literal `build …` command lines. The port reproduced
20
+ // them with the Python program's name in front, because changing a surface is a
21
+ // product decision rather than a liberty taken inside a port. CV22.DS10.TS5 took
22
+ // that decision (D12) once the program they named was deleted: every such line
23
+ // now reads `PROGRAM`.
24
+
25
+ import { PROGRAM } from "#util/program.ts";
26
+ import { shellWord } from "#util/shellWord.ts";
27
+ import type {
28
+ CadenceProfileDefinition,
29
+ CheckpointDefinition,
30
+ ContractDefinition,
31
+ MethodDefinition,
32
+ OpaqueMap,
33
+ SurfaceDefinition,
34
+ SurfaceRoute,
35
+ TemplateDefinition,
36
+ WorkItemLevelDefinition,
37
+ } from "./methodDefinition.ts";
38
+
39
+ /** Python `AVAILABLE_METHODS`. */
40
+ export const AVAILABLE_METHODS = ["ariad"] as const;
41
+
42
+ /** Python `_event_label`: `str.replace("_", " ").title()`. */
43
+ function eventLabel(eventId: string): string {
44
+ return pyTitle(eventId.replaceAll("_", " "));
45
+ }
46
+
47
+ /**
48
+ * Python `str.title()`: uppercase the first cased character of every run of
49
+ * letters, lowercase the rest. NOT `toUpperCase()` on word starts — Python
50
+ * treats a digit or punctuation as a word boundary, so `"plan_2b"` titles to
51
+ * `"Plan 2B"`. Implemented against Python's rule rather than a word split.
52
+ */
53
+ function pyTitle(text: string): string {
54
+ let previousIsCased = false;
55
+ let result = "";
56
+ for (const character of text) {
57
+ const isCased = /\p{L}/u.test(character);
58
+ result += previousIsCased ? character.toLowerCase() : character.toUpperCase();
59
+ previousIsCased = isCased;
60
+ }
61
+ return result;
62
+ }
63
+
64
+ /** Python `render_available_method`. */
65
+ export function renderAvailableMethod(method: MethodDefinition): string {
66
+ const lines: string[] = [
67
+ "■ Builder Method Available",
68
+ "",
69
+ "method",
70
+ method.label,
71
+ "",
72
+ "id",
73
+ method.id,
74
+ "",
75
+ "source",
76
+ "built-in method definition",
77
+ "",
78
+ "resolution layers",
79
+ ];
80
+ lines.push(...method.resolution.layers.map((layer) => `- ${layer}`));
81
+ lines.push("", "lifecycle");
82
+ lines.push(...method.lifecycle.map((event) => `- ${eventLabel(event.id)} ${event.meaning}`));
83
+ lines.push("", "work item levels");
84
+ lines.push(...renderWorkItemLevels(method.workItemLevels));
85
+ lines.push("", "cadence profiles");
86
+ lines.push(...renderCadenceProfiles(method.cadenceProfiles));
87
+ lines.push("", "checkpoints");
88
+ lines.push(...renderCheckpoints(method.checkpoints));
89
+ lines.push("", "contracts");
90
+ lines.push(...renderContracts(method.contracts));
91
+ lines.push("", "policies");
92
+ lines.push(...renderPolicies(method.policies ?? {}));
93
+ lines.push("", "surfaces");
94
+ lines.push(...renderSurfaces(method.surfaces));
95
+ lines.push("", "surface routes");
96
+ lines.push(...renderSurfaceRoutes(method.surfaceRoutes));
97
+ lines.push("", "templates");
98
+ lines.push(...renderTemplates(method.templates));
99
+ lines.push("", "open questions");
100
+ lines.push(...renderOpenQuestions(method.openQuestions ?? {}));
101
+ // `.rstrip()` then one newline — the only renderer here that strips.
102
+ return `${lines.join("\n").replace(/\s+$/u, "")}\n`;
103
+ }
104
+
105
+ /** Python `render_no_active_journey`. */
106
+ /**
107
+ * `inspect-method` with no journey and no named Builder session (CR008).
108
+ *
109
+ * It used to say "No Builder journey is active yet" and suggest `build load`.
110
+ * In an agent shell, which names no session, that was false right after a
111
+ * load, and loading again would not have changed the answer. The card now says
112
+ * what is true and what actually works.
113
+ */
114
+ export function renderNoJourneyNamed(): string {
115
+ return `${[
116
+ "■ Builder Method",
117
+ "",
118
+ "active journey",
119
+ "none",
120
+ "",
121
+ "adopted method",
122
+ "none",
123
+ "",
124
+ "available methods",
125
+ AVAILABLE_METHODS.join(", "),
126
+ "",
127
+ "status",
128
+ "No Builder journey was named.",
129
+ "",
130
+ "next action",
131
+ "Pass --journey <slug>, or name a session in Builder Mode with --session-id or MIRROR_SESSION_ID.",
132
+ "",
133
+ "example",
134
+ `${PROGRAM} build inspect-method --journey <journey>`,
135
+ ].join("\n")}\n`;
136
+ }
137
+
138
+ /** Python `render_journey_method_state`. */
139
+ export function renderJourneyMethodState(journey: string, adoptedMethod: string | null): string {
140
+ // Python's truthiness test, so an empty-string method falls through to the
141
+ // not-adopted surface rather than rendering as adopted.
142
+ if (!adoptedMethod) return renderJourneyWithoutAdoptedMethod(journey);
143
+ return `${[
144
+ "■ Builder Method",
145
+ "",
146
+ "journey",
147
+ journey,
148
+ "",
149
+ "adopted method",
150
+ adoptedMethod,
151
+ "",
152
+ "available methods",
153
+ AVAILABLE_METHODS.join(", "),
154
+ "",
155
+ "status",
156
+ adoptedMethod === "ariad"
157
+ ? "Ariad is adopted for this journey."
158
+ : `${adoptedMethod} is adopted for this journey.`,
159
+ ].join("\n")}\n`;
160
+ }
161
+
162
+ /** Python `render_journey_without_adopted_method`. */
163
+ export function renderJourneyWithoutAdoptedMethod(journey: string): string {
164
+ return `${[
165
+ "■ Builder Method",
166
+ "",
167
+ "journey",
168
+ journey,
169
+ "",
170
+ "adopted method",
171
+ "none",
172
+ "",
173
+ "available methods",
174
+ AVAILABLE_METHODS.join(", "),
175
+ "",
176
+ "status",
177
+ "This journey has not adopted a Builder method yet.",
178
+ "",
179
+ "what can be inspected",
180
+ "built-in method defaults",
181
+ "",
182
+ "what cannot be inspected yet",
183
+ "effective journey configuration",
184
+ "runtime delivery cursor",
185
+ "active checkpoint",
186
+ "pending confirmations",
187
+ "",
188
+ "next action",
189
+ `${PROGRAM} build adopt --journey ${shellWord(journey)} --method ariad`,
190
+ ].join("\n")}\n`;
191
+ }
192
+
193
+ /** Python `render_method_adoption_report`. */
194
+ export function renderMethodAdoptionReport(
195
+ journey: string,
196
+ method: string,
197
+ options: { alreadyAdopted?: boolean } = {},
198
+ ): string {
199
+ const alreadyAdopted = options.alreadyAdopted ?? false;
200
+ // Python's nested conditional expression: the "already" wording exists only
201
+ // for ariad, so an already-adopted other method reads "is now adopted".
202
+ const status =
203
+ alreadyAdopted && method === "ariad"
204
+ ? "Ariad was already adopted for this journey."
205
+ : method === "ariad"
206
+ ? "Ariad is now adopted for this journey."
207
+ : `${method} is now adopted for this journey.`;
208
+ return `${[
209
+ "■ Builder Method Adopted",
210
+ "",
211
+ "journey",
212
+ journey,
213
+ "",
214
+ "adopted method",
215
+ method,
216
+ "",
217
+ "status",
218
+ status,
219
+ "",
220
+ "not performed yet",
221
+ "roadmap template generation",
222
+ "runtime delivery cursor sync",
223
+ "story lifecycle execution",
224
+ ].join("\n")}\n`;
225
+ }
226
+
227
+ function renderWorkItemLevels(levels: readonly WorkItemLevelDefinition[]): string[] {
228
+ if (levels.length === 0) return ["none"];
229
+ const lines: string[] = [];
230
+ for (const level of levels) {
231
+ lines.push(`- ${level.id}: ${level.label}`);
232
+ lines.push(` implementable by default: ${level.implementableByDefault ? "yes" : "no"}`);
233
+ if (level.expandsTo.length > 0) lines.push(` expands to: ${level.expandsTo.join(", ")}`);
234
+ }
235
+ return lines;
236
+ }
237
+
238
+ function renderCadenceProfiles(profiles: readonly CadenceProfileDefinition[]): string[] {
239
+ if (profiles.length === 0) return ["none"];
240
+ return profiles.map(
241
+ (profile) =>
242
+ `- ${profile.id}: ${profile.stopPolicy}; plan=${profile.planApprovalPolicy} (${
243
+ profile.active ? "active" : "future"
244
+ })`,
245
+ );
246
+ }
247
+
248
+ function renderCheckpoints(checkpoints: readonly CheckpointDefinition[]): string[] {
249
+ if (checkpoints.length === 0) return ["none"];
250
+ const lines: string[] = [];
251
+ for (const checkpoint of checkpoints) {
252
+ lines.push(`- ${checkpoint.id}`);
253
+ if (checkpoint.occursAfter) lines.push(` occurs after: ${checkpoint.occursAfter}`);
254
+ if (checkpoint.blocks.length > 0) lines.push(` blocks: ${checkpoint.blocks.join(", ")}`);
255
+ if (checkpoint.requiredArtifacts.length > 0) {
256
+ lines.push(` requires artifacts: ${checkpoint.requiredArtifacts.join(", ")}`);
257
+ }
258
+ if (checkpoint.requiredConfirmations.length > 0) {
259
+ lines.push(` requires confirmations: ${checkpoint.requiredConfirmations.join(", ")}`);
260
+ }
261
+ }
262
+ return lines;
263
+ }
264
+
265
+ function renderContracts(contracts: readonly ContractDefinition[]): string[] {
266
+ if (contracts.length === 0) return ["none"];
267
+ const lines: string[] = [];
268
+ for (const contract of contracts) {
269
+ lines.push(`- ${contract.id}: ${contract.appliesAt}`);
270
+ // A COUNT, not the rules. The rule strings reach no surface.
271
+ if (contract.rules.length > 0) lines.push(` rules: ${contract.rules.length}`);
272
+ if (contract.stopConditions.length > 0) {
273
+ lines.push(` stop conditions: ${contract.stopConditions.join(", ")}`);
274
+ }
275
+ if (contract.requiredOutputs.length > 0) {
276
+ lines.push(` required outputs: ${contract.requiredOutputs.join(", ")}`);
277
+ }
278
+ }
279
+ return lines;
280
+ }
281
+
282
+ function asMap(value: unknown): OpaqueMap {
283
+ return typeof value === "object" && value !== null && !Array.isArray(value)
284
+ ? (value as OpaqueMap)
285
+ : {};
286
+ }
287
+
288
+ /**
289
+ * Python `_render_policies`: only three branches are rendered — `history.commit`,
290
+ * `push`, and `release`. `history.worklog` and `history.decision_records` exist in
291
+ * the DSL and are deliberately NOT shown, so the surface is a selection, not a
292
+ * dump.
293
+ */
294
+ function renderPolicies(policies: OpaqueMap): string[] {
295
+ if (Object.keys(policies).length === 0) return ["none"];
296
+ const lines: string[] = [];
297
+ const history = asMap(policies.history);
298
+ const commit = asMap(history.commit);
299
+ if (Object.keys(commit).length > 0) {
300
+ lines.push("- history.commit");
301
+ appendMappingFields(lines, commit, " ");
302
+ }
303
+ const push = asMap(policies.push);
304
+ if (Object.keys(push).length > 0) {
305
+ lines.push("- push");
306
+ appendMappingFields(lines, push, " ");
307
+ }
308
+ const release = asMap(policies.release);
309
+ if (Object.keys(release).length > 0) {
310
+ lines.push("- release");
311
+ appendMappingFields(lines, release, " ");
312
+ }
313
+ return lines.length > 0 ? lines : ["none"];
314
+ }
315
+
316
+ function renderSurfaces(surfaces: readonly SurfaceDefinition[]): string[] {
317
+ if (surfaces.length === 0) return ["none"];
318
+ return surfaces.map((surface) => {
319
+ const event = surface.event ?? "none";
320
+ const stopsFor = surface.stopsFor ? `; stops for: ${surface.stopsFor}` : "";
321
+ return `- ${surface.id}: ${event}${stopsFor}`;
322
+ });
323
+ }
324
+
325
+ function renderSurfaceRoutes(routes: readonly SurfaceRoute[]): string[] {
326
+ if (routes.length === 0) return ["none"];
327
+ return routes.map((route) => `- ${route.trigger}: ${route.surfaces.join(", ")}`);
328
+ }
329
+
330
+ function renderTemplates(templates: readonly TemplateDefinition[]): string[] {
331
+ if (templates.length === 0) return ["none"];
332
+ return templates.map((template) => `- ${template.id}: ${template.path}`);
333
+ }
334
+
335
+ function renderOpenQuestions(openQuestions: OpaqueMap): string[] {
336
+ if (Object.keys(openQuestions).length === 0) return ["none"];
337
+ const lines: string[] = [];
338
+ for (const [key, value] of Object.entries(openQuestions)) {
339
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
340
+ const entry = value as OpaqueMap;
341
+ const status = entry.status;
342
+ const note = entry.note;
343
+ lines.push(`- ${key}${typeof status === "string" ? ` [${status}]` : ""}`);
344
+ if (typeof note === "string") lines.push(` ${note}`);
345
+ } else {
346
+ lines.push(`- ${key}: ${pyStr(value)}`);
347
+ }
348
+ }
349
+ return lines;
350
+ }
351
+
352
+ /**
353
+ * Python `str(value)` for the scalar fallbacks in these two renderers: `True`,
354
+ * `False`, and `None` are capitalized differently from JavaScript's.
355
+ */
356
+ function pyStr(value: unknown): string {
357
+ if (value === true) return "True";
358
+ if (value === false) return "False";
359
+ if (value === null || value === undefined) return "None";
360
+ return String(value);
361
+ }
362
+
363
+ /** Python `_append_mapping_fields`: a list value joins with `", "`, else `str(value)`. */
364
+ function appendMappingFields(lines: string[], data: OpaqueMap, indent: string): void {
365
+ for (const [key, value] of Object.entries(data)) {
366
+ const rendered = Array.isArray(value)
367
+ ? value.map((item) => pyStr(item)).join(", ")
368
+ : pyStr(value);
369
+ lines.push(`${indent}${key}: ${rendered}`);
370
+ }
371
+ }