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.
- package/.claude/hooks/log-session-end.sh +85 -0
- package/.claude/hooks/log-user-prompt.sh +85 -0
- package/.claude/hooks/mirror-inject.sh +85 -0
- package/.claude/hooks/session-start.sh +85 -0
- package/.gemini/hooks/log-assistant.sh +85 -0
- package/.gemini/hooks/log-user.sh +85 -0
- package/.gemini/hooks/session-end.sh +85 -0
- package/.gemini/hooks/session-start.sh +85 -0
- package/.pi/extensions/mirror-logger.ts +561 -0
- package/.pi/skills/mm-backup/SKILL.md +21 -0
- package/.pi/skills/mm-build/SKILL.md +1206 -0
- package/.pi/skills/mm-consolidate/SKILL.md +112 -0
- package/.pi/skills/mm-consult/SKILL.md +70 -0
- package/.pi/skills/mm-conversations/SKILL.md +16 -0
- package/.pi/skills/mm-discard/SKILL.md +39 -0
- package/.pi/skills/mm-explore/SKILL.md +255 -0
- package/.pi/skills/mm-help/SKILL.md +74 -0
- package/.pi/skills/mm-identity/SKILL.md +96 -0
- package/.pi/skills/mm-journal/SKILL.md +16 -0
- package/.pi/skills/mm-journey/SKILL.md +23 -0
- package/.pi/skills/mm-journeys/SKILL.md +15 -0
- package/.pi/skills/mm-memories/SKILL.md +17 -0
- package/.pi/skills/mm-mirror/SKILL.md +98 -0
- package/.pi/skills/mm-mute/SKILL.md +18 -0
- package/.pi/skills/mm-new/SKILL.md +18 -0
- package/.pi/skills/mm-recall/SKILL.md +17 -0
- package/.pi/skills/mm-release-notes/SKILL.md +52 -0
- package/.pi/skills/mm-seed/SKILL.md +19 -0
- package/.pi/skills/mm-shadow/SKILL.md +117 -0
- package/.pi/skills/mm-soul/SKILL.md +502 -0
- package/.pi/skills/mm-tasks/SKILL.md +24 -0
- package/.pi/skills/mm-update/SKILL.md +32 -0
- package/.pi/skills/mm-week/SKILL.md +28 -0
- package/.pi/skills/mm-welcome/SKILL.md +24 -0
- package/AGENTS.md +188 -0
- package/README.md +126 -9
- package/bin/loader.js +67 -0
- package/bin/mirror-hook.js +7 -0
- package/bin/mirror.js +7 -0
- package/docs/releases/index.md +99 -0
- package/docs/releases/pending-cutoffs.md +510 -0
- package/docs/releases/v0.10.0.md +123 -0
- package/docs/releases/v0.10.1.md +66 -0
- package/docs/releases/v0.10.10.md +51 -0
- package/docs/releases/v0.10.11.md +39 -0
- package/docs/releases/v0.10.12.md +57 -0
- package/docs/releases/v0.10.13.md +35 -0
- package/docs/releases/v0.10.14.md +42 -0
- package/docs/releases/v0.10.15.md +53 -0
- package/docs/releases/v0.10.16.md +35 -0
- package/docs/releases/v0.10.17.md +43 -0
- package/docs/releases/v0.10.2.md +64 -0
- package/docs/releases/v0.10.3.md +78 -0
- package/docs/releases/v0.10.4.md +42 -0
- package/docs/releases/v0.10.5.md +57 -0
- package/docs/releases/v0.10.6.md +47 -0
- package/docs/releases/v0.10.7.md +53 -0
- package/docs/releases/v0.10.8.md +49 -0
- package/docs/releases/v0.10.9.md +37 -0
- package/docs/releases/v0.11.0.md +86 -0
- package/docs/releases/v0.12.0.md +67 -0
- package/docs/releases/v0.13.0.md +64 -0
- package/docs/releases/v0.14.0.md +68 -0
- package/docs/releases/v0.15.0.md +48 -0
- package/docs/releases/v0.16.0.md +50 -0
- package/docs/releases/v0.16.1.md +55 -0
- package/docs/releases/v0.16.2.md +36 -0
- package/docs/releases/v0.17.0.md +50 -0
- package/docs/releases/v0.17.1.md +58 -0
- package/docs/releases/v0.17.2.md +42 -0
- package/docs/releases/v0.17.3.md +58 -0
- package/docs/releases/v0.18.0.md +84 -0
- package/docs/releases/v0.18.1.md +51 -0
- package/docs/releases/v0.18.2.md +69 -0
- package/docs/releases/v0.19.0.md +85 -0
- package/docs/releases/v0.19.1.md +46 -0
- package/docs/releases/v0.20.0.md +85 -0
- package/docs/releases/v0.21.0.md +61 -0
- package/docs/releases/v0.21.1.md +47 -0
- package/docs/releases/v0.22.0.md +77 -0
- package/docs/releases/v0.22.1.md +42 -0
- package/docs/releases/v0.23.0.md +105 -0
- package/docs/releases/v0.24.0.md +125 -0
- package/docs/releases/v0.25.0.md +107 -0
- package/docs/releases/v0.26.0.md +139 -0
- package/docs/releases/v0.26.1.md +65 -0
- package/docs/releases/v0.26.2.md +43 -0
- package/docs/releases/v0.27.0.md +63 -0
- package/docs/releases/v0.28.0.md +59 -0
- package/docs/releases/v0.29.0.md +61 -0
- package/docs/releases/v0.29.1.md +59 -0
- package/docs/releases/v0.29.2.md +59 -0
- package/docs/releases/v0.29.3.md +93 -0
- package/docs/releases/v0.30.0.md +75 -0
- package/docs/releases/v0.30.1.md +93 -0
- package/docs/releases/v0.30.2.md +66 -0
- package/docs/releases/v0.31.0.md +122 -0
- package/docs/releases/v0.31.1.md +142 -0
- package/docs/releases/v0.31.10.md +118 -0
- package/docs/releases/v0.31.11.md +88 -0
- package/docs/releases/v0.31.12.md +105 -0
- package/docs/releases/v0.31.13.md +99 -0
- package/docs/releases/v0.31.14.md +97 -0
- package/docs/releases/v0.31.2.md +115 -0
- package/docs/releases/v0.31.3.md +142 -0
- package/docs/releases/v0.31.4.md +117 -0
- package/docs/releases/v0.31.5.md +155 -0
- package/docs/releases/v0.31.6.md +132 -0
- package/docs/releases/v0.31.7.md +132 -0
- package/docs/releases/v0.31.8.md +120 -0
- package/docs/releases/v0.31.9.md +120 -0
- package/docs/releases/v0.32.0.md +261 -0
- package/docs/releases/v0.32.1.md +59 -0
- package/docs/releases/v0.8.0.md +118 -0
- package/docs/releases/v0.9.0.md +98 -0
- package/docs/releases/v0.9.1.md +83 -0
- package/package.json +102 -6
- package/plugins/mirror-mind/.claude-plugin/plugin.json +13 -0
- package/plugins/mirror-mind/hooks/hooks.json +50 -0
- package/plugins/mirror-mind/hooks/log-session-end.sh +98 -0
- package/plugins/mirror-mind/hooks/log-user-prompt.sh +98 -0
- package/plugins/mirror-mind/hooks/mirror-inject.sh +98 -0
- package/plugins/mirror-mind/hooks/session-start.sh +98 -0
- package/plugins/mirror-mind/mcp/launch.sh +52 -0
- package/plugins/mirror-mind/skills/mm-backup/SKILL.md +27 -0
- package/plugins/mirror-mind/skills/mm-build/SKILL.md +1206 -0
- package/plugins/mirror-mind/skills/mm-consolidate/SKILL.md +112 -0
- package/plugins/mirror-mind/skills/mm-consult/SKILL.md +83 -0
- package/plugins/mirror-mind/skills/mm-conversations/SKILL.md +17 -0
- package/plugins/mirror-mind/skills/mm-discard/SKILL.md +40 -0
- package/plugins/mirror-mind/skills/mm-explore/SKILL.md +241 -0
- package/plugins/mirror-mind/skills/mm-help/SKILL.md +104 -0
- package/plugins/mirror-mind/skills/mm-identity/SKILL.md +96 -0
- package/plugins/mirror-mind/skills/mm-journal/SKILL.md +21 -0
- package/plugins/mirror-mind/skills/mm-journey/SKILL.md +37 -0
- package/plugins/mirror-mind/skills/mm-journeys/SKILL.md +15 -0
- package/plugins/mirror-mind/skills/mm-memories/SKILL.md +20 -0
- package/plugins/mirror-mind/skills/mm-mirror/SKILL.md +65 -0
- package/plugins/mirror-mind/skills/mm-mute/SKILL.md +18 -0
- package/plugins/mirror-mind/skills/mm-new/SKILL.md +18 -0
- package/plugins/mirror-mind/skills/mm-recall/SKILL.md +17 -0
- package/plugins/mirror-mind/skills/mm-release-notes/SKILL.md +31 -0
- package/plugins/mirror-mind/skills/mm-seed/SKILL.md +15 -0
- package/plugins/mirror-mind/skills/mm-shadow/SKILL.md +117 -0
- package/plugins/mirror-mind/skills/mm-soul/SKILL.md +488 -0
- package/plugins/mirror-mind/skills/mm-tasks/SKILL.md +36 -0
- package/plugins/mirror-mind/skills/mm-update/SKILL.md +30 -0
- package/plugins/mirror-mind/skills/mm-week/SKILL.md +46 -0
- package/plugins/mirror-mind/skills/mm-welcome/SKILL.md +22 -0
- package/scripts/codex-hooks/session-end.sh +85 -0
- package/scripts/codex-hooks/session-start.sh +85 -0
- package/scripts/codex-mirror.sh +48 -0
- package/templates/identity/README.md +119 -0
- package/templates/identity/ego/behavior.yaml +52 -0
- package/templates/identity/ego/constraints.yaml +15 -0
- package/templates/identity/ego/identity.yaml +43 -0
- package/templates/identity/journeys/personal-growth.yaml +39 -0
- package/templates/identity/organization/identity.yaml +24 -0
- package/templates/identity/organization/principles.yaml +17 -0
- package/templates/identity/personas/coach.yaml +94 -0
- package/templates/identity/personas/designer.yaml +93 -0
- package/templates/identity/personas/doctor.yaml +96 -0
- package/templates/identity/personas/engineer.yaml +77 -0
- package/templates/identity/personas/financial.yaml +97 -0
- package/templates/identity/personas/prompt-engineer.yaml +122 -0
- package/templates/identity/personas/researcher.yaml +88 -0
- package/templates/identity/personas/strategist.yaml +91 -0
- package/templates/identity/personas/teacher.yaml +95 -0
- package/templates/identity/personas/therapist.yaml +91 -0
- package/templates/identity/personas/thinker.yaml +74 -0
- package/templates/identity/personas/writer.yaml +76 -0
- package/templates/identity/self/config.yaml +16 -0
- package/templates/identity/self/soul.yaml +105 -0
- package/templates/identity/user/identity.yaml +30 -0
- package/ts/src/backup/staging.ts +62 -0
- package/ts/src/backup/zipBackup.ts +267 -0
- package/ts/src/backup/zipReader.ts +109 -0
- package/ts/src/backup/zipWriter.ts +148 -0
- package/ts/src/builder/activeCheckpoint.ts +134 -0
- package/ts/src/builder/aggregateStatus.ts +34 -0
- package/ts/src/builder/approve.ts +149 -0
- package/ts/src/builder/argv.ts +292 -0
- package/ts/src/builder/ariadMethod.ts +536 -0
- package/ts/src/builder/artifacts/artifactSurfaces.ts +106 -0
- package/ts/src/builder/artifacts/artifactWriter.ts +113 -0
- package/ts/src/builder/artifacts/closureArtifacts.ts +199 -0
- package/ts/src/builder/artifacts/deliveryStoryArtifacts.ts +316 -0
- package/ts/src/builder/artifacts/planArtifacts.ts +242 -0
- package/ts/src/builder/artifacts/scaffoldSections.ts +273 -0
- package/ts/src/builder/artifacts/scaffoldState.ts +227 -0
- package/ts/src/builder/artifacts/storyFiles.ts +61 -0
- package/ts/src/builder/artifacts/storyIndex.ts +166 -0
- package/ts/src/builder/cadence.ts +59 -0
- package/ts/src/builder/card.ts +192 -0
- package/ts/src/builder/checkpointRefused.ts +66 -0
- package/ts/src/builder/closure.ts +964 -0
- package/ts/src/builder/commands.ts +2053 -0
- package/ts/src/builder/cursorPosition.ts +176 -0
- package/ts/src/builder/cursorTransitions.ts +77 -0
- package/ts/src/builder/deliveryCursor.ts +577 -0
- package/ts/src/builder/deliveryStoryClosure.ts +521 -0
- package/ts/src/builder/deliveryStoryPlan.ts +536 -0
- package/ts/src/builder/deliveryStoryReady.ts +160 -0
- package/ts/src/builder/deliveryStoryRoadmapClosure.ts +151 -0
- package/ts/src/builder/expand.ts +336 -0
- package/ts/src/builder/flowUnit.ts +339 -0
- package/ts/src/builder/homeSurface.ts +122 -0
- package/ts/src/builder/implementationGuard.ts +125 -0
- package/ts/src/builder/index.ts +11 -0
- package/ts/src/builder/lifecycleRefusal.ts +92 -0
- package/ts/src/builder/lifecycleRibbon.ts +159 -0
- package/ts/src/builder/load.ts +313 -0
- package/ts/src/builder/methodAdoption.ts +113 -0
- package/ts/src/builder/methodDefinition.ts +429 -0
- package/ts/src/builder/methodInspection.ts +371 -0
- package/ts/src/builder/plan.ts +408 -0
- package/ts/src/builder/planPreauthorization.ts +265 -0
- package/ts/src/builder/prepare.ts +225 -0
- package/ts/src/builder/projectPaths.ts +64 -0
- package/ts/src/builder/pull.ts +356 -0
- package/ts/src/builder/pullCandidates.ts +463 -0
- package/ts/src/builder/pullCandidatesRender.ts +238 -0
- package/ts/src/builder/refinementField.ts +93 -0
- package/ts/src/builder/releaseIntent.ts +173 -0
- package/ts/src/builder/resumeState.ts +84 -0
- package/ts/src/builder/resumeSurface.ts +149 -0
- package/ts/src/builder/roadmapGrammar.ts +300 -0
- package/ts/src/builder/roadmapScan.ts +97 -0
- package/ts/src/builder/roadmapScope.ts +210 -0
- package/ts/src/builder/scopePhrases.ts +146 -0
- package/ts/src/builder/storyPaths.ts +196 -0
- package/ts/src/builder/storyPlanPreauthorization.ts +287 -0
- package/ts/src/builder/surfaceProtocol.ts +42 -0
- package/ts/src/builder/templateGeneration.ts +148 -0
- package/ts/src/builder/transition.ts +178 -0
- package/ts/src/consult/args.ts +99 -0
- package/ts/src/consult/core.ts +122 -0
- package/ts/src/consult/modelCatalog.ts +55 -0
- package/ts/src/consult/render.ts +47 -0
- package/ts/src/conversation/append.ts +414 -0
- package/ts/src/conversation/backfill.ts +387 -0
- package/ts/src/conversation/closeTail.ts +467 -0
- package/ts/src/conversation/extraction.ts +333 -0
- package/ts/src/conversation/extractionDriver.ts +130 -0
- package/ts/src/conversation/extractionRun.ts +70 -0
- package/ts/src/conversation/journeyInference.ts +165 -0
- package/ts/src/conversation/journeyRepair.ts +114 -0
- package/ts/src/conversation/lifecycleFaces.ts +197 -0
- package/ts/src/conversation/lifecycleWrites.ts +313 -0
- package/ts/src/conversation/listing.ts +77 -0
- package/ts/src/conversation/logger.ts +576 -0
- package/ts/src/conversation/loggerCli.ts +282 -0
- package/ts/src/conversation/loggerRuntime.ts +259 -0
- package/ts/src/conversation/metadataLifecycle.ts +443 -0
- package/ts/src/conversation/recall.ts +66 -0
- package/ts/src/conversation/sessionComposites.ts +258 -0
- package/ts/src/conversation/sessionImport.ts +90 -0
- package/ts/src/conversation/transcriptBackfill.ts +141 -0
- package/ts/src/cultivation/applyActions.ts +241 -0
- package/ts/src/cultivation/cluster.ts +86 -0
- package/ts/src/cultivation/consolidationStore.ts +281 -0
- package/ts/src/cultivation/promptContext.ts +62 -0
- package/ts/src/cultivation/propose.ts +305 -0
- package/ts/src/cultivation/scan.ts +155 -0
- package/ts/src/db/backupGate.ts +47 -0
- package/ts/src/db/bootstrap.ts +108 -0
- package/ts/src/db/bootstrapLock.ts +223 -0
- package/ts/src/db/copyGuard.ts +60 -0
- package/ts/src/db/database.ts +397 -0
- package/ts/src/db/decode.ts +66 -0
- package/ts/src/db/ftsIntegrity.ts +41 -0
- package/ts/src/db/migrateOnOpen.ts +214 -0
- package/ts/src/db/migrations.ts +576 -0
- package/ts/src/db/readyOnOpen.ts +35 -0
- package/ts/src/db/rowDecode.ts +42 -0
- package/ts/src/db/schema.ts +432 -0
- package/ts/src/db/schemaInventory.ts +225 -0
- package/ts/src/db/schemaInventorySnapshot.ts +2107 -0
- package/ts/src/db/schemaState.ts +91 -0
- package/ts/src/db/schemaTsDivergence.ts +114 -0
- package/ts/src/descriptor/descriptorRead.ts +49 -0
- package/ts/src/docs/docsLint.ts +265 -0
- package/ts/src/explorer/handoff.ts +522 -0
- package/ts/src/explorer/render.ts +335 -0
- package/ts/src/explorer/story.ts +769 -0
- package/ts/src/explorer/transition.ts +72 -0
- package/ts/src/extensions/bindings.ts +170 -0
- package/ts/src/extensions/catalog.ts +249 -0
- package/ts/src/extensions/catalogCommands.ts +513 -0
- package/ts/src/extensions/catalogWrites.ts +652 -0
- package/ts/src/extensions/contextRuntime.ts +325 -0
- package/ts/src/extensions/dispatch.ts +374 -0
- package/ts/src/extensions/errors.ts +24 -0
- package/ts/src/extensions/manifest.ts +356 -0
- package/ts/src/extensions/migrations.ts +350 -0
- package/ts/src/extraction/conversation.ts +304 -0
- package/ts/src/extraction/conversationMetadata.ts +206 -0
- package/ts/src/extraction/fencing.ts +106 -0
- package/ts/src/extraction/json.ts +17 -0
- package/ts/src/extraction/prompts.ts +470 -0
- package/ts/src/frontDoor/args.ts +30 -0
- package/ts/src/frontDoor/argvShape.ts +106 -0
- package/ts/src/frontDoor/buildLoadRuntime.ts +139 -0
- package/ts/src/frontDoor/buildRoute.ts +398 -0
- package/ts/src/frontDoor/cli.ts +1865 -0
- package/ts/src/frontDoor/cloneRoleGuard.ts +98 -0
- package/ts/src/frontDoor/consultRoute.ts +50 -0
- package/ts/src/frontDoor/contentTailRoute.ts +239 -0
- package/ts/src/frontDoor/conversationLoggerRoute.ts +73 -0
- package/ts/src/frontDoor/cultivationRoute.ts +210 -0
- package/ts/src/frontDoor/dbPath.ts +131 -0
- package/ts/src/frontDoor/dbSafetyToolsRoute.ts +240 -0
- package/ts/src/frontDoor/exploreRoute.ts +572 -0
- package/ts/src/frontDoor/extensionCatalogRoute.ts +252 -0
- package/ts/src/frontDoor/frontDoorLog.ts +57 -0
- package/ts/src/frontDoor/identityWrite.ts +36 -0
- package/ts/src/frontDoor/journeyWriteRoute.ts +26 -0
- package/ts/src/frontDoor/lifecycleWriteRoute.ts +110 -0
- package/ts/src/frontDoor/liveBackup.ts +100 -0
- package/ts/src/frontDoor/mirrorModeRoute.ts +163 -0
- package/ts/src/frontDoor/namedRefusal.ts +35 -0
- package/ts/src/frontDoor/nodeSupport.ts +24 -0
- package/ts/src/frontDoor/render/consolidate.ts +199 -0
- package/ts/src/frontDoor/render/conversations.ts +33 -0
- package/ts/src/frontDoor/render/cultivationShared.ts +21 -0
- package/ts/src/frontDoor/render/descriptor.ts +20 -0
- package/ts/src/frontDoor/render/detectPersona.ts +50 -0
- package/ts/src/frontDoor/render/icons.ts +13 -0
- package/ts/src/frontDoor/render/identity.ts +59 -0
- package/ts/src/frontDoor/render/identityRows.ts +17 -0
- package/ts/src/frontDoor/render/inspectPersona.ts +53 -0
- package/ts/src/frontDoor/render/journeyStatus.ts +78 -0
- package/ts/src/frontDoor/render/journeys.ts +79 -0
- package/ts/src/frontDoor/render/list.ts +41 -0
- package/ts/src/frontDoor/render/memories.ts +67 -0
- package/ts/src/frontDoor/render/recall.ts +49 -0
- package/ts/src/frontDoor/render/shadow.ts +155 -0
- package/ts/src/frontDoor/render/tasks.ts +99 -0
- package/ts/src/frontDoor/render/tasksImportSync.ts +63 -0
- package/ts/src/frontDoor/render/week.ts +113 -0
- package/ts/src/frontDoor/routing.ts +999 -0
- package/ts/src/frontDoor/runtimeRoute.ts +623 -0
- package/ts/src/frontDoor/searchRoute.ts +166 -0
- package/ts/src/frontDoor/seedPaths.ts +98 -0
- package/ts/src/frontDoor/soulRoute.ts +433 -0
- package/ts/src/frontDoor/tasksImportSyncRoute.ts +110 -0
- package/ts/src/frontDoor/tasksWriteRoute.ts +101 -0
- package/ts/src/frontDoor/usage.ts +176 -0
- package/ts/src/guards/claudePlugin.ts +252 -0
- package/ts/src/guards/packContents.ts +306 -0
- package/ts/src/guards/piSourcedSkills.ts +70 -0
- package/ts/src/guards/retiredRouteShadows.ts +57 -0
- package/ts/src/guards/retiredSurfaces.ts +564 -0
- package/ts/src/hooks/claude.ts +176 -0
- package/ts/src/hooks/codex.ts +45 -0
- package/ts/src/hooks/gemini.ts +126 -0
- package/ts/src/hooks/main.ts +109 -0
- package/ts/src/hooks/mirrorState.ts +71 -0
- package/ts/src/hooks/payload.ts +68 -0
- package/ts/src/hooks/runtime.ts +159 -0
- package/ts/src/identity/applyConsolidationIdentityUpdate.ts +67 -0
- package/ts/src/identity/descriptorGenerate.ts +162 -0
- package/ts/src/identity/identityEdit.ts +143 -0
- package/ts/src/identity/identityKey.ts +77 -0
- package/ts/src/identity/identityRead.ts +69 -0
- package/ts/src/identity/identityStore.ts +80 -0
- package/ts/src/identity/journeyListing.ts +53 -0
- package/ts/src/identity/personaInspect.ts +44 -0
- package/ts/src/identity/personaListing.ts +37 -0
- package/ts/src/identity/setIdentity.ts +64 -0
- package/ts/src/index.ts +231 -0
- package/ts/src/init/init.ts +111 -0
- package/ts/src/journey/journeyOptions.ts +131 -0
- package/ts/src/journey/journeyRemoval.ts +158 -0
- package/ts/src/journey/journeyStatus.ts +149 -0
- package/ts/src/journey/journeySyncFile.ts +87 -0
- package/ts/src/journey/journeyWrite.ts +203 -0
- package/ts/src/journey/parentJourney.ts +41 -0
- package/ts/src/journey/validateParentJourney.ts +55 -0
- package/ts/src/mcp/boundary.ts +151 -0
- package/ts/src/mcp/guards.ts +244 -0
- package/ts/src/mcp/main.ts +121 -0
- package/ts/src/mcp/payload.ts +141 -0
- package/ts/src/mcp/protocol.ts +141 -0
- package/ts/src/mcp/readModels.ts +241 -0
- package/ts/src/mcp/registry.ts +201 -0
- package/ts/src/mcp/serve.ts +120 -0
- package/ts/src/mcp/tools/deterministic.ts +137 -0
- package/ts/src/mcp/tools/providerCrossing.ts +187 -0
- package/ts/src/mcp/wire.ts +8 -0
- package/ts/src/memory/journal.ts +180 -0
- package/ts/src/memory/listing.ts +107 -0
- package/ts/src/memory/memoryWrite.ts +88 -0
- package/ts/src/memory/reinforcement.ts +35 -0
- package/ts/src/mirror/context.ts +161 -0
- package/ts/src/mirror/defaultResolution.ts +199 -0
- package/ts/src/mirror/orchestration.ts +364 -0
- package/ts/src/mirror/reception.ts +194 -0
- package/ts/src/mirror/render.ts +75 -0
- package/ts/src/mirror/runtimeSession.ts +205 -0
- package/ts/src/mode/operatingMode.ts +148 -0
- package/ts/src/observability/callOutcome.ts +115 -0
- package/ts/src/observability/inspectLedger.ts +329 -0
- package/ts/src/observability/ledgerHooks.ts +126 -0
- package/ts/src/observability/llmCalls.ts +154 -0
- package/ts/src/persona/detectPersona.ts +81 -0
- package/ts/src/planning/promptAssembly.ts +111 -0
- package/ts/src/planning/weekPending.ts +81 -0
- package/ts/src/planning/weekPlan.ts +183 -0
- package/ts/src/planning/weekSave.ts +117 -0
- package/ts/src/providers/config.ts +189 -0
- package/ts/src/providers/cost.ts +64 -0
- package/ts/src/providers/credits.ts +204 -0
- package/ts/src/providers/embedding.ts +321 -0
- package/ts/src/providers/familyProviders.ts +147 -0
- package/ts/src/providers/llm.ts +334 -0
- package/ts/src/providers/openrouter.ts +244 -0
- package/ts/src/providers/redaction.ts +110 -0
- package/ts/src/providers/replay.ts +15 -0
- package/ts/src/providers/transport.ts +410 -0
- package/ts/src/repair/encodingRepair.ts +253 -0
- package/ts/src/runtime/backup.ts +151 -0
- package/ts/src/runtime/channel.ts +146 -0
- package/ts/src/runtime/config.ts +168 -0
- package/ts/src/runtime/diagnose.ts +686 -0
- package/ts/src/runtime/git.ts +510 -0
- package/ts/src/runtime/installKind.ts +220 -0
- package/ts/src/runtime/migrate.ts +154 -0
- package/ts/src/runtime/packageIdentity.ts +102 -0
- package/ts/src/runtime/releaseNotes.ts +244 -0
- package/ts/src/runtime/status.ts +557 -0
- package/ts/src/runtime/strategies/clone.ts +200 -0
- package/ts/src/runtime/strategies/package.ts +328 -0
- package/ts/src/runtime/treeRoot.ts +30 -0
- package/ts/src/runtime/update.ts +445 -0
- package/ts/src/runtime/updateGate.ts +40 -0
- package/ts/src/runtime/updatePipeline.ts +159 -0
- package/ts/src/runtime/version.ts +36 -0
- package/ts/src/runtime/wiring.ts +130 -0
- package/ts/src/search/memorySearch.ts +338 -0
- package/ts/src/search/ranker.ts +154 -0
- package/ts/src/seed/seed.ts +256 -0
- package/ts/src/seed/seedYaml.ts +133 -0
- package/ts/src/soul/apply.ts +218 -0
- package/ts/src/soul/harvest.ts +267 -0
- package/ts/src/soul/prompts/soul_beauty_voice.md +103 -0
- package/ts/src/soul/prompts/soul_self_voice.md +219 -0
- package/ts/src/soul/prompts/soul_wisdom_voice.md +121 -0
- package/ts/src/soul/prompts.ts +85 -0
- package/ts/src/soul/render.ts +358 -0
- package/ts/src/soul/state.ts +212 -0
- package/ts/src/soul/transition.ts +37 -0
- package/ts/src/tasks/journeyPathParse.ts +113 -0
- package/ts/src/tasks/taskImportSync.ts +142 -0
- package/ts/src/tasks/taskStore.ts +312 -0
- package/ts/src/tasks/weekView.ts +120 -0
- package/ts/src/util/clipCodePoints.ts +26 -0
- package/ts/src/util/paths.ts +63 -0
- package/ts/src/util/program.ts +9 -0
- package/ts/src/util/pyGenerators.ts +144 -0
- package/ts/src/util/pythonText.ts +317 -0
- package/ts/src/util/semver.ts +45 -0
- package/ts/src/util/shellWord.ts +25 -0
- package/ts/src/util/slug.ts +64 -0
- package/ts/src/welcome/card.ts +339 -0
- package/ts/src/welcome/statusLine.ts +101 -0
- package/ts/src/welcome/updateCache.ts +129 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// CR114 — where a delivery cursor stands, and what it accepts next.
|
|
2
|
+
//
|
|
3
|
+
// CR067 placed a cursor on the ribbon from a table in `lifecycleRefusal.ts`, beside
|
|
4
|
+
// the order of the story's events. The Builder resume chose its next actions from two
|
|
5
|
+
// other facts, whether a confirmation was pending and whether an item was active, and
|
|
6
|
+
// never read the event. So it offered Prepare at every position with nothing pending,
|
|
7
|
+
// a freshly pulled story's and a closed one's alike, and `build show`, which printed
|
|
8
|
+
// no list, could not disagree with it.
|
|
9
|
+
//
|
|
10
|
+
// This module is the one table of positions. Each event the runtime writes for an
|
|
11
|
+
// item names the ribbon stage a story draws after it, and the steps the runtime
|
|
12
|
+
// accepts next when nothing is pending. The story's event order is its story rows,
|
|
13
|
+
// read in order. The resume and `build show` both choose their list through
|
|
14
|
+
// `allowedNextActions`, and nothing else chooses it.
|
|
15
|
+
//
|
|
16
|
+
// Delivery Story events carry their steps and no stage: CR067 left them off the
|
|
17
|
+
// ribbon, never a guessed stage, and that holds. A position the table does not know
|
|
18
|
+
// is offered no lifecycle step, only the two inspections (CR114, D2): the same rule,
|
|
19
|
+
// applied to the list.
|
|
20
|
+
|
|
21
|
+
import { isImplementableByDefault } from "./cursorTransitions.ts";
|
|
22
|
+
|
|
23
|
+
/** Every action a Builder surface can offer: one closed vocabulary (CR114, D1). */
|
|
24
|
+
export const NEXT_ACTIONS = [
|
|
25
|
+
"adopt_method",
|
|
26
|
+
"sync_cursor",
|
|
27
|
+
"inspect_method",
|
|
28
|
+
"inspect_roadmap",
|
|
29
|
+
"pull_candidate_if_known",
|
|
30
|
+
"answer_pending_confirmation",
|
|
31
|
+
"prepare_active_item",
|
|
32
|
+
"expand_active_item",
|
|
33
|
+
"plan_active_item",
|
|
34
|
+
"implement_active_item",
|
|
35
|
+
"validate_active_item",
|
|
36
|
+
"review_active_item_debt",
|
|
37
|
+
"check_active_item_coherence",
|
|
38
|
+
"close_active_item",
|
|
39
|
+
] as const;
|
|
40
|
+
|
|
41
|
+
export type NextAction = (typeof NEXT_ACTIONS)[number];
|
|
42
|
+
|
|
43
|
+
/** A journey that has adopted no method. */
|
|
44
|
+
export const NOT_ADOPTED_ACTIONS: readonly NextAction[] = ["adopt_method", "inspect_method"];
|
|
45
|
+
|
|
46
|
+
/** An adopted journey whose delivery cursor was never synced. */
|
|
47
|
+
const NO_CURSOR_ACTIONS: readonly NextAction[] = ["sync_cursor", "inspect_method"];
|
|
48
|
+
|
|
49
|
+
/** No item pulled, or the item closed: the next move is a Pull. */
|
|
50
|
+
export const NO_ACTIVE_ITEM_ACTIONS: readonly NextAction[] = [
|
|
51
|
+
"inspect_roadmap",
|
|
52
|
+
"pull_candidate_if_known",
|
|
53
|
+
"inspect_method",
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
/** A confirmation is pending: answering it is the one lifecycle move (CR105, A1). */
|
|
57
|
+
export const PENDING_CONFIRMATION_ACTIONS: readonly NextAction[] = [
|
|
58
|
+
"answer_pending_confirmation",
|
|
59
|
+
"inspect_method",
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
/** The read-only moves every open item's list ends with. */
|
|
63
|
+
const INSPECTIONS: readonly NextAction[] = ["inspect_roadmap", "inspect_method"];
|
|
64
|
+
|
|
65
|
+
interface Position {
|
|
66
|
+
/** The ribbon stage a story stands at after the event; `null` off the ribbon. */
|
|
67
|
+
readonly stage: string | null;
|
|
68
|
+
/** The steps the runtime accepts next when nothing is pending, or `closed`. */
|
|
69
|
+
readonly next: readonly NextAction[] | "closed";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The positions, in the order a cursor reaches them: the story's rows first, then the
|
|
74
|
+
* Delivery Story's. A row with no next step is one the runtime writes with a pending
|
|
75
|
+
* confirmation, which outranks it. `template_preparation`, which `sync-cursor` writes,
|
|
76
|
+
* is no item's position, so it has no row.
|
|
77
|
+
*/
|
|
78
|
+
const POSITIONS: ReadonlyArray<readonly [string, Position]> = [
|
|
79
|
+
["pull", { stage: "prepare", next: ["prepare_active_item"] }],
|
|
80
|
+
["prepare", { stage: "plan", next: ["plan_active_item"] }],
|
|
81
|
+
["plan", { stage: "plan", next: [] }],
|
|
82
|
+
[
|
|
83
|
+
"plan_approved",
|
|
84
|
+
{ stage: "implement", next: ["implement_active_item", "validate_active_item"] },
|
|
85
|
+
],
|
|
86
|
+
["implementation_complete", { stage: "validate", next: ["validate_active_item"] }],
|
|
87
|
+
["validate", { stage: "validate", next: [] }],
|
|
88
|
+
["validation_passed", { stage: "debt_review", next: ["review_active_item_debt"] }],
|
|
89
|
+
["review", { stage: "debt_review", next: [] }],
|
|
90
|
+
[
|
|
91
|
+
"review_complete",
|
|
92
|
+
{ stage: "done", next: ["check_active_item_coherence", "close_active_item"] },
|
|
93
|
+
],
|
|
94
|
+
["coherence", { stage: "done", next: [] }],
|
|
95
|
+
["coherence_complete", { stage: "done", next: ["close_active_item"] }],
|
|
96
|
+
["done", { stage: "done", next: [] }],
|
|
97
|
+
["done_complete", { stage: "done", next: "closed" }],
|
|
98
|
+
["expand", { stage: null, next: [] }],
|
|
99
|
+
["navigator_flow_unit_selected", { stage: null, next: [] }],
|
|
100
|
+
["delivery_story_plan", { stage: null, next: [] }],
|
|
101
|
+
[
|
|
102
|
+
"delivery_story_plan_approved",
|
|
103
|
+
{ stage: null, next: ["implement_active_item", "validate_active_item"] },
|
|
104
|
+
],
|
|
105
|
+
["delivery_story_validation", { stage: null, next: [] }],
|
|
106
|
+
["delivery_story_validation_complete", { stage: null, next: ["review_active_item_debt"] }],
|
|
107
|
+
["delivery_story_review_complete", { stage: null, next: ["close_active_item"] }],
|
|
108
|
+
["delivery_story_coherence_complete", { stage: null, next: ["close_active_item"] }],
|
|
109
|
+
["delivery_story_done_complete", { stage: null, next: "closed" }],
|
|
110
|
+
];
|
|
111
|
+
|
|
112
|
+
const POSITION_AFTER: ReadonlyMap<string, Position> = new Map(POSITIONS);
|
|
113
|
+
|
|
114
|
+
/** A prepared Delivery Story expands next rather than plans: Pull runs its Expand. */
|
|
115
|
+
const DELIVERY_STORY_PREPARED: Position = { stage: "expand", next: ["expand_active_item"] };
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* A prepared item of any other level: Plan refuses it and Expand never reads it, so
|
|
119
|
+
* nothing is offered. Its ribbon stands at Plan, where CR067 drew it. Pull accepts only
|
|
120
|
+
* the three levels, so only a seeded cursor holds one.
|
|
121
|
+
*/
|
|
122
|
+
const UNPLANNABLE_PREPARED: Position = { stage: "plan", next: [] };
|
|
123
|
+
|
|
124
|
+
/** The story lifecycle's events, in the order a cursor reaches them: the story rows. */
|
|
125
|
+
export const STORY_LIFECYCLE_EVENTS: readonly string[] = POSITIONS.filter(
|
|
126
|
+
([, position]) => position.stage !== null,
|
|
127
|
+
).map(([event]) => event);
|
|
128
|
+
|
|
129
|
+
/** The cursor fields a position is read from. */
|
|
130
|
+
export interface CursorPositionView {
|
|
131
|
+
readonly activeItem: string | null;
|
|
132
|
+
readonly activeItemLevel: string | null;
|
|
133
|
+
readonly pendingConfirmation: string | null;
|
|
134
|
+
readonly lastDeliveryEvent: string | null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* After Prepare the level decides, by Plan's own predicate: a story plans, a Delivery
|
|
139
|
+
* Story expands, and any other level is offered nothing (CR114, handoff review).
|
|
140
|
+
*/
|
|
141
|
+
function positionOf(
|
|
142
|
+
cursor: Pick<CursorPositionView, "lastDeliveryEvent" | "activeItemLevel">,
|
|
143
|
+
): Position | null {
|
|
144
|
+
const event = cursor.lastDeliveryEvent;
|
|
145
|
+
if (event === null) return null;
|
|
146
|
+
if (event === "prepare" && !isImplementableByDefault(cursor.activeItemLevel)) {
|
|
147
|
+
return cursor.activeItemLevel === "delivery_story"
|
|
148
|
+
? DELIVERY_STORY_PREPARED
|
|
149
|
+
: UNPLANNABLE_PREPARED;
|
|
150
|
+
}
|
|
151
|
+
return POSITION_AFTER.get(event) ?? null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* The lifecycle stage the cursor stands at, for the ribbon; `null` for an event the
|
|
156
|
+
* ribbon does not draw.
|
|
157
|
+
*/
|
|
158
|
+
export function lifecycleStageOf(
|
|
159
|
+
cursor: Pick<CursorPositionView, "lastDeliveryEvent" | "activeItemLevel">,
|
|
160
|
+
): string | null {
|
|
161
|
+
return positionOf(cursor)?.stage ?? null;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* What the cursor accepts next, in the order to offer it: the one list the resume and
|
|
166
|
+
* `build show` print. No cursor is `null`; a journey that adopted no method is the
|
|
167
|
+
* resume's own case, `NOT_ADOPTED_ACTIONS`, since `build show` refuses it.
|
|
168
|
+
*/
|
|
169
|
+
export function allowedNextActions(cursor: CursorPositionView | null): readonly NextAction[] {
|
|
170
|
+
if (cursor === null) return NO_CURSOR_ACTIONS;
|
|
171
|
+
if (cursor.pendingConfirmation) return PENDING_CONFIRMATION_ACTIONS;
|
|
172
|
+
if (!cursor.activeItem) return NO_ACTIVE_ITEM_ACTIONS;
|
|
173
|
+
const next = positionOf(cursor)?.next ?? [];
|
|
174
|
+
if (next === "closed") return NO_ACTIVE_ITEM_ACTIONS;
|
|
175
|
+
return [...next, ...INSPECTIONS];
|
|
176
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// CV22.DS7.US8 plateau 3 — state shared by every Ariad lifecycle event.
|
|
2
|
+
//
|
|
3
|
+
// Python keeps Pull, Expand, Prepare, Plan, Approve, Validate, Review, Coherence,
|
|
4
|
+
// and Done in one 2,303-line `lifecycle.py`, which is argparse accretion rather
|
|
5
|
+
// than design. The port is one module per event over this shared base, so a reader
|
|
6
|
+
// looking for what Pull does opens `pull.ts` instead of scrolling past Done.
|
|
7
|
+
//
|
|
8
|
+
// What belongs here is only what more than one event needs: the normalization
|
|
9
|
+
// rules, the level vocabulary, and the Delivery Story ancestor lookup Pull uses to
|
|
10
|
+
// decide whether release intent survives a re-pull.
|
|
11
|
+
|
|
12
|
+
import { pyStrip } from "#util/pythonText.ts";
|
|
13
|
+
import type { BuilderDeliveryCursor } from "./deliveryCursor.ts";
|
|
14
|
+
|
|
15
|
+
/** Python `_ALLOWED_PULL_LEVELS`, in declaration order — the error message quotes it. */
|
|
16
|
+
export const ALLOWED_PULL_LEVELS = ["delivery_story", "user_story", "technical_story"] as const;
|
|
17
|
+
|
|
18
|
+
/** Python `lifecycle._normalize_required`. */
|
|
19
|
+
export function normalizeRequired(value: string | null | undefined, fieldName: string): string {
|
|
20
|
+
const normalized = typeof value === "string" ? pyStrip(value) : "";
|
|
21
|
+
if (!normalized) throw new Error(`${fieldName} must not be empty`);
|
|
22
|
+
return normalized;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Python `_is_implementable_by_default`: a Delivery Story is never implementable. */
|
|
26
|
+
export function isImplementableByDefault(level: string | null): boolean {
|
|
27
|
+
return level === "user_story" || level === "technical_story";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Python `release_intent.delivery_story_code_for_item`.
|
|
32
|
+
*
|
|
33
|
+
* Finds the first `DS<n>` / `DS-<n>` segment, case-insensitively, and returns the
|
|
34
|
+
* code up to and including it — so `CV22.DS7.US8` belongs to `CV22.DS7`, and a
|
|
35
|
+
* code with no Delivery Story segment belongs to nothing.
|
|
36
|
+
*
|
|
37
|
+
* Lives here rather than in a `releaseIntent.ts` that does not exist yet: Pull is
|
|
38
|
+
* its first caller, and Scope F's release-intent leaf will import it from here
|
|
39
|
+
* instead of growing a second copy.
|
|
40
|
+
*/
|
|
41
|
+
export function deliveryStoryCodeForItem(itemCode: string | null): string | null {
|
|
42
|
+
if (!itemCode) return null;
|
|
43
|
+
const parts = itemCode
|
|
44
|
+
.split(".")
|
|
45
|
+
.map((part) => pyStrip(part))
|
|
46
|
+
.filter((part) => part !== "");
|
|
47
|
+
for (const [index, part] of parts.entries()) {
|
|
48
|
+
// `re.fullmatch(r"DS-?\d+", part, re.IGNORECASE)`. `\d` is ASCII-only in both
|
|
49
|
+
// engines here: Python's pattern is a `str` pattern without `re.UNICODE`
|
|
50
|
+
// semantics for `fullmatch` on digits it would widen, and JavaScript's `\d`
|
|
51
|
+
// is ASCII by definition. An Arabic-Indic digit matches in neither.
|
|
52
|
+
if (/^DS-?\d+$/i.test(part)) {
|
|
53
|
+
return parts.slice(0, index + 1).join(".");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The cursor fields Pull carries forward unchanged: the cadence, which belongs to the
|
|
61
|
+
* journey and not to any item.
|
|
62
|
+
*
|
|
63
|
+
* Python repeated these arguments at each call site, and the repetition is where a
|
|
64
|
+
* port silently drops one: omitting `cadence_profile` does not fail, it quietly resets
|
|
65
|
+
* the Navigator's cadence to null on the next Pull. The flow unit was carried here too,
|
|
66
|
+
* to whatever item came next; it belongs to the Delivery Story it was chosen for, and
|
|
67
|
+
* Pull decides it by that rule (CR117).
|
|
68
|
+
*/
|
|
69
|
+
export function carriedForward(cursor: BuilderDeliveryCursor): {
|
|
70
|
+
cadenceProfile: string | null;
|
|
71
|
+
cadenceLimits: readonly string[];
|
|
72
|
+
} {
|
|
73
|
+
return {
|
|
74
|
+
cadenceProfile: cursor.cadenceProfile,
|
|
75
|
+
cadenceLimits: cursor.cadenceLimits,
|
|
76
|
+
};
|
|
77
|
+
}
|