akm-cli 0.9.0-rc.8 → 0.9.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.
- package/CHANGELOG.md +1063 -44
- package/README.md +51 -25
- package/SECURITY.md +14 -1
- package/STABILITY.md +497 -0
- package/dist/akm +148 -35
- package/dist/{akm-migrate-storage → akm-migrate} +6 -9
- package/dist/assets/hints/cli-hints-full.md +223 -95
- package/dist/assets/hints/cli-hints-short.md +85 -22
- package/dist/assets/improve-strategies/default.json +1 -1
- package/dist/assets/improve-strategies/reflect-distill.json +1 -1
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/stash-skeleton/README.md +6 -5
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +20 -9
- package/dist/assets/tasks/core/extract.yml +1 -1
- package/dist/assets/tasks/core/version-check.yml +1 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
- package/dist/assets/templates/html/health.html +1 -3
- package/dist/assets/workflows/workflow-template.md +32 -15
- package/dist/cli/invocation.js +40 -15
- package/dist/cli/parse-args.js +0 -22
- package/dist/cli/retired-commands.js +121 -0
- package/dist/cli/shared.js +154 -22
- package/dist/cli/unknown-flags.js +236 -0
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +696 -258
- package/dist/commands/agent/agent-dispatch.js +14 -3
- package/dist/commands/agent/contribute-cli.js +73 -88
- package/dist/commands/completions.js +79 -22
- package/dist/commands/config-cli.js +17 -150
- package/dist/commands/env/env-cli.js +59 -143
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +36 -66
- package/dist/commands/env/secret.js +24 -57
- package/dist/commands/feedback-cli.js +141 -87
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +3 -4
- package/dist/commands/health/checks.js +85 -23
- package/dist/commands/health/html-report.js +7 -10
- package/dist/commands/health/improve-metrics.js +25 -83
- package/dist/commands/health/md-report.js +5 -9
- package/dist/commands/health/metrics.js +62 -20
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +4 -5
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +3 -48
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/commands/health/types-improve.js +7 -0
- package/dist/commands/health.js +99 -28
- package/dist/commands/improve/anti-collapse.js +2 -2
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +41 -40
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +140 -1000
- package/dist/commands/improve/distill/promote-memory.js +12 -12
- package/dist/commands/improve/distill/quality-gate.js +6 -6
- package/dist/commands/improve/distill.js +58 -69
- package/dist/commands/improve/eligibility.js +105 -57
- package/dist/commands/improve/extract-cli.js +14 -133
- package/dist/commands/improve/improve-cli.js +98 -114
- package/dist/commands/improve/improve-result-file.js +1 -28
- package/dist/commands/improve/improve-strategies.js +8 -5
- package/dist/commands/improve/improve.js +128 -91
- package/dist/commands/improve/loop-stages.js +182 -20
- package/dist/commands/improve/memory/derived-ref.js +45 -43
- package/dist/commands/improve/memory/memory-belief.js +1 -1
- package/dist/commands/improve/memory/memory-contradiction-detect.js +4 -12
- package/dist/commands/improve/memory/memory-improve.js +6 -5
- package/dist/commands/improve/outcome-loop.js +22 -65
- package/dist/commands/improve/preparation.js +114 -123
- package/dist/commands/improve/proactive-maintenance.js +2 -5
- package/dist/commands/improve/reflect.js +56 -160
- package/dist/commands/improve/salience.js +11 -122
- package/dist/commands/improve/source-identity.js +10 -38
- package/dist/commands/lint/base-linter.js +20 -124
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +249 -43
- package/dist/commands/{events.js → log.js} +33 -38
- package/dist/commands/migrate-cli.js +92 -12
- package/dist/commands/migration-tool.js +46 -0
- package/dist/commands/observability-cli.js +70 -209
- package/dist/commands/proposal/drain.js +101 -29
- package/dist/commands/proposal/proposal-cli.js +76 -48
- package/dist/commands/proposal/proposal.js +54 -18
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +23 -15
- package/dist/commands/proposal/repository.js +701 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +2 -8
- package/dist/commands/proposal/validators/proposal-validators.js +55 -7
- package/dist/commands/proposal/validators/proposals.js +4 -7
- package/dist/commands/read/curate.js +34 -53
- package/dist/commands/read/knowledge.js +150 -95
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +42 -15
- package/dist/commands/read/search-cli.js +180 -78
- package/dist/commands/read/search.js +58 -43
- package/dist/commands/read/show.js +197 -141
- package/dist/commands/registry-cli.js +12 -51
- package/dist/commands/remember.js +14 -57
- package/dist/commands/sources/add-cli.js +100 -31
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +7 -2
- package/dist/commands/sources/info.js +18 -5
- package/dist/commands/sources/init.js +12 -12
- package/dist/commands/sources/installed-stashes.js +382 -98
- package/dist/commands/sources/schema-repair.js +3 -2
- package/dist/commands/sources/self-update.js +131 -38
- package/dist/commands/sources/source-add.js +72 -17
- package/dist/commands/sources/source-clone.js +129 -45
- package/dist/commands/sources/source-manage.js +43 -23
- package/dist/commands/sources/sources-cli.js +57 -208
- package/dist/commands/sources/stash-cli.js +46 -53
- package/dist/commands/tasks/tasks-cli.js +91 -97
- package/dist/commands/tasks/tasks.js +276 -421
- package/dist/commands/workflow-cli.js +175 -450
- package/dist/core/adapter/adapters/akm-adapter.js +47 -28
- package/dist/core/adapter/adapters/akm-lint.js +42 -27
- package/dist/core/adapter/adapters/akm-metadata.js +15 -44
- package/dist/core/adapter/adapters/akm-task-adapter.js +15 -13
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +55 -71
- package/dist/core/adapter/adapters/dotenv-adapter.js +1 -1
- package/dist/core/adapter/adapters/generic-files-adapter.js +2 -0
- package/dist/core/adapter/adapters/index.js +6 -6
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +14 -8
- package/dist/core/adapter/adapters/okf-adapter.js +187 -19
- package/dist/core/adapter/adapters/shared.js +3 -19
- package/dist/core/adapter/adapters/tool-dir-shared.js +8 -3
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +1 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +6 -4
- package/dist/core/adapter/validate-context.js +214 -0
- package/dist/core/asset/akm-markdown.js +63 -0
- package/dist/core/asset/asset-placement.js +20 -6
- package/dist/core/asset/asset-ref.js +11 -9
- package/dist/core/asset/frontmatter-lint.js +30 -0
- package/dist/core/asset/frontmatter.js +37 -9
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +89 -18
- package/dist/core/asset/stash-meta.js +1 -1
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +152 -38
- package/dist/core/config/config-io.js +12 -1
- package/dist/core/config/config-schema.js +35 -8
- package/dist/core/config/config-sources.js +55 -11
- package/dist/core/config/config-walker.js +25 -9
- package/dist/core/config/config.js +9 -48
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +5 -1
- package/dist/core/config/schema/experimental.js +30 -0
- package/dist/core/config/schema/improve-processes.js +0 -6
- package/dist/core/config/schema/improve.js +21 -3
- package/dist/core/config/schema/index-config.js +8 -15
- package/dist/core/config/schema/output.js +4 -1
- package/dist/core/config/schema/setup.js +9 -18
- package/dist/core/config/schema/sources-bundles.js +49 -33
- package/dist/core/config/schema/workflow.js +3 -3
- package/dist/core/env-secret-ref.js +76 -46
- package/dist/core/errors.js +18 -12
- package/dist/core/events.js +46 -128
- package/dist/core/file-change.js +6 -5
- package/dist/core/fs-txn.js +83 -7
- package/dist/core/git-message.js +2 -2
- package/dist/core/improve-result.js +1 -100
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +2 -1
- package/dist/core/migration-operation.js +16 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/parse.js +4 -1
- package/dist/core/paths.js +17 -20
- package/dist/core/recognition-util.js +12 -14
- package/dist/core/redaction.js +34 -0
- package/dist/core/standards/resolve-standards-context.js +2 -14
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +2 -2
- package/dist/core/state/migrations.js +41 -18
- package/dist/core/state-db.js +5 -14
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +6 -4
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/type-presentation.js +3 -3
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +771 -95
- package/dist/indexer/bundle-identity-guard.js +3 -2
- package/dist/indexer/db/graph-db.js +0 -24
- package/dist/indexer/ensure-index.js +1 -0
- package/dist/indexer/graph/graph-boost.js +9 -34
- package/dist/indexer/graph/graph-extraction.js +8 -5
- package/dist/indexer/index-writer-lock.js +53 -17
- package/dist/indexer/index-written-assets.js +16 -22
- package/dist/indexer/indexer.js +497 -239
- package/dist/indexer/installations.js +14 -96
- package/dist/indexer/passes/dir-staleness.js +16 -9
- package/dist/indexer/passes/memory-inference.js +11 -9
- package/dist/indexer/passes/metadata.js +113 -47
- package/dist/indexer/scan/doc-to-entry.js +38 -1
- package/dist/indexer/scan/drain-dir.js +13 -23
- package/dist/indexer/search/db-search.js +99 -54
- package/dist/indexer/search/fts-query.js +47 -24
- package/dist/indexer/search/ranking-contributors.js +42 -20
- package/dist/indexer/search/ranking.js +18 -99
- package/dist/indexer/search/search-fields.js +7 -2
- package/dist/indexer/search/search-source.js +82 -93
- package/dist/indexer/usage/usage-events.js +0 -89
- package/dist/indexer/walk/file-context.js +2 -1
- package/dist/indexer/walk/matchers.js +30 -43
- package/dist/indexer/walk/path-resolver.js +7 -2
- package/dist/indexer/walk/walker.js +38 -12
- package/dist/integrations/agent/builders.js +0 -6
- package/dist/integrations/agent/config.js +2 -2
- package/dist/integrations/agent/detect.js +49 -19
- package/dist/integrations/agent/engine-fallback.js +76 -0
- package/dist/integrations/agent/profiles.js +14 -0
- package/dist/integrations/agent/prompts.js +12 -8
- package/dist/integrations/agent/runner-dispatch.js +4 -2
- package/dist/integrations/agent/runner.js +0 -1
- package/dist/integrations/agent/spawn.js +5 -6
- package/dist/integrations/github.js +1 -1
- package/dist/integrations/harnesses/aider/agent-builder.js +6 -4
- package/dist/integrations/harnesses/amazonq/agent-builder.js +7 -4
- package/dist/integrations/harnesses/claude/session-log.js +0 -10
- package/dist/integrations/harnesses/codex/agent-builder.js +5 -2
- package/dist/integrations/harnesses/copilot/agent-builder.js +5 -3
- package/dist/integrations/harnesses/gemini/agent-builder.js +5 -3
- package/dist/integrations/harnesses/index.js +3 -7
- package/dist/integrations/harnesses/opencode/agent-builder.js +21 -2
- package/dist/integrations/harnesses/opencode/session-log.js +0 -15
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +13 -4
- package/dist/integrations/harnesses/openhands/agent-builder.js +9 -6
- package/dist/integrations/harnesses/pi/agent-builder.js +6 -4
- package/dist/integrations/lockfile.js +101 -6
- package/dist/integrations/session-logs/index.js +3 -28
- package/dist/llm/client.js +136 -100
- package/dist/llm/embedders/remote.js +13 -5
- package/dist/llm/feature-gate.js +4 -12
- package/dist/llm/graph-extract.js +5 -11
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +5 -7
- package/dist/llm/structured-call.js +1 -1
- package/dist/llm/usage-persist.js +26 -5
- package/dist/llm/usage-telemetry.js +25 -2
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +259 -0
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -36
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +56 -83
- package/dist/output/shapes/migrate.js +8 -0
- package/dist/output/shapes/passthrough.js +7 -41
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes.js +2 -9
- package/dist/output/text/{init.js → bundle-create.js} +3 -1
- package/dist/output/text/bundle-show.js +7 -0
- package/dist/output/text/command-format.js +164 -96
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/health-format.js +103 -0
- package/dist/output/text/health.js +7 -0
- package/dist/output/text/helpers.js +10 -8
- package/dist/output/text/lint-format.js +43 -0
- package/dist/output/text/{save.js → lint.js} +2 -2
- package/dist/output/text/migrate.js +88 -0
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +44 -72
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +15 -7
- package/dist/output/text/status-list.js +32 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +24 -203
- package/dist/output/text/workflow.js +1 -7
- package/dist/output/text.js +16 -17
- package/dist/registry/factory.js +4 -6
- package/dist/registry/origin-resolve.js +16 -27
- package/dist/registry/providers/skills-sh.js +3 -3
- package/dist/registry/providers/static-index.js +13 -23
- package/dist/registry/resolve.js +42 -7
- package/dist/registry/semver.js +34 -84
- package/dist/runtime.js +2 -23
- package/dist/scripts/akm-migrate-node.js +60290 -0
- package/dist/scripts/akm-migrate.js +59628 -0
- package/dist/setup/detect.js +42 -15
- package/dist/setup/registry-stash-loader.js +2 -2
- package/dist/setup/setup.js +236 -136
- package/dist/setup/steps/connection.js +7 -9
- package/dist/setup/steps/platforms.js +9 -9
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +12 -13
- package/dist/setup/steps/stashdir.js +2 -3
- package/dist/setup/steps/tasks.js +237 -120
- package/dist/sources/freshness.js +1 -1
- package/dist/sources/provider-factory.js +11 -17
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +278 -34
- package/dist/sources/providers/git-provider.js +25 -23
- package/dist/sources/providers/git-stash.js +395 -106
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +7 -4
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +6 -1
- package/dist/sources/resolve.js +6 -5
- package/dist/sources/snapshot-fetchers/bluesky.js +146 -0
- package/dist/sources/snapshot-fetchers/content-extract.js +566 -0
- package/dist/sources/snapshot-fetchers/fetcher-util.js +41 -0
- package/dist/sources/snapshot-fetchers/github.js +100 -0
- package/dist/sources/snapshot-fetchers/host-guard.js +291 -0
- package/dist/sources/snapshot-fetchers/registry.js +17 -1
- package/dist/sources/snapshot-fetchers/robots.js +348 -0
- package/dist/sources/snapshot-fetchers/rss.js +282 -0
- package/dist/sources/snapshot-fetchers/secret-seam.js +42 -0
- package/dist/sources/snapshot-fetchers/website-ingest.js +566 -268
- package/dist/sources/snapshot-fetchers/x.js +910 -0
- package/dist/storage/database.js +7 -0
- package/dist/storage/engines/sqlite-migrations.js +23 -111
- package/dist/storage/managed-db.js +2 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +27 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -12
- package/dist/storage/repositories/index-connection.js +17 -6
- package/dist/storage/repositories/index-entries-repository.js +151 -240
- package/dist/storage/repositories/index-entry-mapper.js +15 -11
- package/dist/storage/repositories/index-fts-repository.js +5 -2
- package/dist/storage/repositories/index-llm-cache-repository.js +0 -1
- package/dist/storage/repositories/index-meta-repository.js +2 -3
- package/dist/storage/repositories/index-schema.js +10 -25
- package/dist/storage/repositories/index-utility-repository.js +15 -28
- package/dist/storage/repositories/index-vec-repository.js +6 -1
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +296 -59
- package/dist/storage/repositories/registry-cache.js +19 -0
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +15 -13
- package/dist/storage/repositories/workflow-runs-repository.js +52 -40
- package/dist/tasks/backends/cron.js +105 -15
- package/dist/tasks/backends/index.js +1 -1
- package/dist/tasks/backends/launchd.js +85 -38
- package/dist/tasks/backends/schtasks.js +135 -15
- package/dist/tasks/embedded.js +56 -40
- package/dist/tasks/parser.js +7 -157
- package/dist/tasks/resolve-akm-bin.js +137 -59
- package/dist/tasks/runner.js +79 -42
- package/dist/tasks/scheduler-invocation.js +220 -10
- package/dist/tasks/schema.js +24 -1
- package/dist/tasks/task-id.js +1 -3
- package/dist/tasks/validator.js +20 -6
- package/dist/workflows/authoring/authoring.js +94 -143
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/exec/frozen-judge.js +28 -2
- package/dist/workflows/exec/native-executor.js +77 -57
- package/dist/workflows/exec/param-secrets.js +9 -9
- package/dist/workflows/exec/run-workflow.js +133 -79
- package/dist/workflows/exec/step-work.js +219 -346
- package/dist/{migrate-storage-node.mjs → workflows/exec/unit-dispatch.js} +1 -5
- package/dist/workflows/ir/compile.js +141 -270
- package/dist/workflows/ir/freeze.js +40 -30
- package/dist/workflows/ir/params.js +135 -11
- package/dist/workflows/ir/plan-hash.js +1 -1
- package/dist/workflows/ir/schema.js +25 -26
- package/dist/workflows/parser.js +872 -307
- package/dist/workflows/program/expressions.js +20 -208
- package/dist/workflows/program/schema.js +7 -10
- package/dist/workflows/renderer.js +95 -68
- package/dist/workflows/resource-limits.js +2 -0
- package/dist/workflows/runtime/checkin.js +3 -3
- package/dist/workflows/runtime/plan-classifier.js +16 -75
- package/dist/workflows/runtime/runs.js +186 -127
- package/dist/workflows/runtime/unit-checkin.js +1 -1
- package/dist/workflows/runtime/unit-phases.js +2 -2
- package/dist/workflows/runtime/workflow-asset-loader.js +232 -83
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +30 -36
- package/dist/workflows/validator.js +21 -62
- package/docs/README.md +68 -0
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.7.0.md +11 -11
- package/docs/migration/release-notes/0.9.0.md +208 -27
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +564 -208
- package/docs/migration/v0.9.0-troubleshooting.md +561 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/cli.md +2253 -0
- package/docs/reference/configuration.md +358 -0
- package/docs/reference/data-and-telemetry.md +105 -42
- package/docs/reference/workflows.md +647 -0
- package/package.json +22 -11
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +81 -128
- package/schemas/akm-workflow.json +74 -73
- package/dist/assets/tasks/core/backup.yml +0 -5
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/cli/config-migrate.js +0 -1806
- package/dist/cli/config-validate.js +0 -41
- package/dist/commands/backup-cli.js +0 -56
- package/dist/commands/bundle/bundle-cli.js +0 -68
- package/dist/commands/bundle/bundle.js +0 -219
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -489
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/mv-cli.js +0 -1221
- package/dist/commands/sources/history.js +0 -201
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/core/migration-backup.js +0 -1234
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -95
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/migrate/legacy/config-source-migration.js +0 -223
- package/dist/migrate/legacy/content-migration.js +0 -305
- package/dist/migrate/legacy/legacy-layout.js +0 -779
- package/dist/migrate/legacy/legacy-paths.js +0 -25
- package/dist/migrate/legacy/legacy-stash-json.js +0 -72
- package/dist/migrate/legacy/proposal-fs-import.js +0 -168
- package/dist/migrate/legacy/task-target-ref-migration.js +0 -272
- package/dist/migrate/legacy/three-db-cutover.js +0 -841
- package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
- package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
- package/dist/migrate/legacy-ref-grammar.js +0 -214
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/registry/build-index.js +0 -382
- package/dist/schemas/akm-config.json +0 -4704
- package/dist/schemas/akm-task.json +0 -87
- package/dist/schemas/akm-workflow.json +0 -372
- package/dist/scripts/migrate-storage.js +0 -3816
- package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
- package/dist/workflows/cli.js +0 -53
- package/dist/workflows/exec/brief.js +0 -481
- package/dist/workflows/exec/report.js +0 -1460
- package/dist/workflows/exec/watch.js +0 -116
- package/dist/workflows/program/parser.js +0 -813
- package/dist/workflows/program/project.js +0 -104
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/**
|
|
5
|
-
* @removeIn 0.10.0
|
|
6
|
-
*
|
|
7
|
-
* The one-time content migration (akm 0.9.0 Chunk 8, WI-8.5d; ref-grammar
|
|
8
|
-
* decision D-R6; plan §3.4). Three filesystem folds that retire the last
|
|
9
|
-
* pre-0.9 on-disk shapes, run as an ADDITIVE journaled step of the
|
|
10
|
-
* `cutover-applied` phase AFTER the state txn commits — best-effort (log, never
|
|
11
|
-
* abort a committed cutover) and idempotent (a second apply is a no-op).
|
|
12
|
-
*
|
|
13
|
-
* 1. **`.stash.json` death.** For each per-directory `.stash.json` sidecar under
|
|
14
|
-
* the configured stash roots, fold its curated overrides into the matching
|
|
15
|
-
* file's YAML frontmatter (the sidecar override WON at read time, so it wins
|
|
16
|
-
* on fold too), then delete the sidecar. Only markdown targets are folded:
|
|
17
|
-
* the indexer reads curated frontmatter for `.md` files only
|
|
18
|
-
* ({@link applyCuratedFrontmatter} runs on `ext === ".md"`), and prepending a
|
|
19
|
-
* `---` block to a shell/script/env asset would corrupt it — non-markdown
|
|
20
|
-
* entries are counted + logged, never rewritten.
|
|
21
|
-
* 2. **D-R6 reserved-filename conformance.** OKF reserves `index.md`/`log.md` as
|
|
22
|
-
* bundle structure at every depth (never concept documents). A pre-existing
|
|
23
|
-
* stash file so named that actually carries akm ASSET frontmatter (a
|
|
24
|
-
* `description`/`when_to_use`-bearing concept mis-placed under a reserved
|
|
25
|
-
* name) is renamed to a collision-safe reported name (`index-content.md`,
|
|
26
|
-
* `log-content.md`, appending `-2`/`-3`/… on collision) so the akm adapter's
|
|
27
|
-
* new reserved-file exclusion never silently drops it. A structural
|
|
28
|
-
* `index.md`/`log.md` (no asset frontmatter) is left in place.
|
|
29
|
-
* 3. **`derived_from` backref grammar (Group-C item 2).** A derived memory's
|
|
30
|
-
* `source: memory:<name>` frontmatter backref — the last deliberately-legacy
|
|
31
|
-
* ref channel (WI-8.5c survivor) — is rewritten forward to the 0.9.0
|
|
32
|
-
* `source: memories/<name>` conceptId, matching the flipped producer output.
|
|
33
|
-
* Idempotent: a value already in `memories/<name>` (or any non-`memory:`
|
|
34
|
-
* `source`) is left untouched. The index `derived_from` COLUMN needs no fold
|
|
35
|
-
* — it is regenerable, so the producer flip + a reindex re-key it.
|
|
36
|
-
*
|
|
37
|
-
* PRE-RELEASE EXTENSION NOTE: 0.9.0 is UNRELEASED, so no user has run the cutover
|
|
38
|
-
* yet. Fold #3 was ADDED to this step (not a second migration) after folds #1/#2
|
|
39
|
-
* shipped in-branch — the module's READ behavior (the frozen sidecar reader) is
|
|
40
|
-
* unchanged; only the rewrite/fold set grew. Post-release this file is frozen.
|
|
41
|
-
* The pre-0.9 filesystem-proposal import (`proposal-fs-import.ts`) is a SIBLING
|
|
42
|
-
* additive step of the same phase, wired in `config-migrate.ts`; its count rides
|
|
43
|
-
* the {@link ContentMigrationReport} (`legacyProposalsImported`) — this module
|
|
44
|
-
* defaults it to 0 since the fold itself only rewrites on-disk shapes.
|
|
45
|
-
*
|
|
46
|
-
* This module is migrator-only and imports the frozen sidecar reader
|
|
47
|
-
* ({@link readLegacyStashOverrides}) plus core leaves; it is never on a live
|
|
48
|
-
* indexer path.
|
|
49
|
-
*/
|
|
50
|
-
import fs from "node:fs";
|
|
51
|
-
import path from "node:path";
|
|
52
|
-
import { mutateFrontmatter, parseFrontmatter } from "../../core/asset/frontmatter.js";
|
|
53
|
-
import { asNonEmptyString } from "../../core/common.js";
|
|
54
|
-
import { warn } from "../../core/warn.js";
|
|
55
|
-
import { legacyStashFilePath, readLegacyStashOverrides } from "./legacy-stash-json.js";
|
|
56
|
-
/** OKF reserved structural filenames (case-insensitive, any depth). */
|
|
57
|
-
const RESERVED_BASENAMES = new Set(["index.md", "log.md"]);
|
|
58
|
-
/**
|
|
59
|
-
* The sidecar `IndexDocument` fields that {@link applyCuratedFrontmatter} reads
|
|
60
|
-
* back off frontmatter, paired with the frontmatter KEY the indexer expects
|
|
61
|
-
* (two keys are renamed on the way in: `whenToUse`→`when_to_use`,
|
|
62
|
-
* `sourceRefs`→`source_refs`). Fields the indexer never reads off frontmatter
|
|
63
|
-
* (`confidence`/`source`/`fileSize`/`filename`/…) are intentionally absent — the
|
|
64
|
-
* fold preserves only what survives a re-index, so it stays faithful.
|
|
65
|
-
*/
|
|
66
|
-
const CURATED_FIELD_MAP = [
|
|
67
|
-
["description", "description"],
|
|
68
|
-
["tags", "tags"],
|
|
69
|
-
["aliases", "aliases"],
|
|
70
|
-
["searchHints", "searchHints"],
|
|
71
|
-
["usage", "usage"],
|
|
72
|
-
["examples", "examples"],
|
|
73
|
-
["run", "run"],
|
|
74
|
-
["setup", "setup"],
|
|
75
|
-
["cwd", "cwd"],
|
|
76
|
-
["quality", "quality"],
|
|
77
|
-
["category", "category"],
|
|
78
|
-
["beliefState", "beliefState"],
|
|
79
|
-
["supersededBy", "supersededBy"],
|
|
80
|
-
["contradictedBy", "contradictedBy"],
|
|
81
|
-
["generation", "generation"],
|
|
82
|
-
["sourceRefs", "source_refs"],
|
|
83
|
-
["currentBeliefRefs", "currentBeliefRefs"],
|
|
84
|
-
["captureMode", "captureMode"],
|
|
85
|
-
["whenToUse", "when_to_use"],
|
|
86
|
-
["lessonStrength", "lessonStrength"],
|
|
87
|
-
["evidenceSources", "evidenceSources"],
|
|
88
|
-
["intent", "intent"],
|
|
89
|
-
["scope", "scope"],
|
|
90
|
-
];
|
|
91
|
-
function emptyReport() {
|
|
92
|
-
return {
|
|
93
|
-
sidecarsFolded: 0,
|
|
94
|
-
entriesFolded: 0,
|
|
95
|
-
entriesSkipped: 0,
|
|
96
|
-
reservedRenames: [],
|
|
97
|
-
sourceBackrefsRewritten: 0,
|
|
98
|
-
legacyProposalsImported: 0,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
function safeIsDir(p) {
|
|
102
|
-
try {
|
|
103
|
-
return fs.statSync(p).isDirectory();
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Absolute directories under `root` (inclusive), best-effort (unreadable dirs
|
|
111
|
-
* skipped). Dot-directories (`.git`, `.meta`, …) are skipped: the indexer never
|
|
112
|
-
* descends into them, so they hold no items to migrate and no `.stash.json` the
|
|
113
|
-
* live reader would have merged.
|
|
114
|
-
*/
|
|
115
|
-
function collectDirs(root) {
|
|
116
|
-
const out = [];
|
|
117
|
-
const walk = (dir) => {
|
|
118
|
-
out.push(dir);
|
|
119
|
-
let entries;
|
|
120
|
-
try {
|
|
121
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
for (const entry of entries) {
|
|
127
|
-
if (entry.isDirectory() && !entry.name.startsWith("."))
|
|
128
|
-
walk(path.join(dir, entry.name));
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
walk(root);
|
|
132
|
-
return out;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Run the content migration over the configured stash roots. Never throws — a
|
|
136
|
-
* per-file failure is logged and the walk continues (best-effort, cutover
|
|
137
|
-
* already committed).
|
|
138
|
-
*/
|
|
139
|
-
export function runContentMigration(stashRoots) {
|
|
140
|
-
const report = emptyReport();
|
|
141
|
-
const seen = new Set();
|
|
142
|
-
for (const root of stashRoots) {
|
|
143
|
-
const resolved = path.resolve(root);
|
|
144
|
-
if (seen.has(resolved) || !safeIsDir(resolved))
|
|
145
|
-
continue;
|
|
146
|
-
seen.add(resolved);
|
|
147
|
-
const dirs = collectDirs(resolved);
|
|
148
|
-
for (const dir of dirs)
|
|
149
|
-
foldSidecarInDir(dir, report);
|
|
150
|
-
for (const dir of dirs)
|
|
151
|
-
renameReservedConceptsInDir(dir, report);
|
|
152
|
-
for (const dir of dirs)
|
|
153
|
-
rewriteSourceBackrefsInDir(dir, report);
|
|
154
|
-
}
|
|
155
|
-
return report;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Group-C item 2: rewrite each markdown file's legacy `source: memory:<name>`
|
|
159
|
-
* derived-memory backref forward to the 0.9.0 `source: memories/<name>`
|
|
160
|
-
* conceptId. Idempotent — a `source` already in `memories/<name>` (or any value
|
|
161
|
-
* that is not a `memory:` backref) is skipped, so a second apply rewrites
|
|
162
|
-
* nothing. Best-effort per file (log + continue on error).
|
|
163
|
-
*/
|
|
164
|
-
function rewriteSourceBackrefsInDir(dir, report) {
|
|
165
|
-
let entries;
|
|
166
|
-
try {
|
|
167
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
for (const entry of entries) {
|
|
173
|
-
if (!entry.isFile() || path.extname(entry.name).toLowerCase() !== ".md")
|
|
174
|
-
continue;
|
|
175
|
-
const filePath = path.join(dir, entry.name);
|
|
176
|
-
try {
|
|
177
|
-
const source = asNonEmptyString(parseFrontmatter(fs.readFileSync(filePath, "utf8")).data.source);
|
|
178
|
-
const rewritten = legacyMemoryBackrefToConceptId(source);
|
|
179
|
-
if (rewritten === undefined)
|
|
180
|
-
continue; // already conceptId / not a memory backref → no-op
|
|
181
|
-
mutateFrontmatter(filePath, (parsed) => ({ ...parsed.data, source: rewritten }));
|
|
182
|
-
report.sourceBackrefsRewritten++;
|
|
183
|
-
}
|
|
184
|
-
catch (error) {
|
|
185
|
-
warn(`[akm] content-migration: could not rewrite source backref in ${filePath}: ${errMsg(error)}`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Return the `memories/<name>` conceptId for a legacy `memory:<name>` backref,
|
|
191
|
-
* or `undefined` when `value` is absent, already a `memories/<name>` conceptId,
|
|
192
|
-
* or not a `memory:` backref at all. Only the bare legacy spelling the producer
|
|
193
|
-
* ever wrote is rewritten (origin-prefixed values were never produced on
|
|
194
|
-
* `source:` and are left untouched — the tolerant reader still normalises them).
|
|
195
|
-
*/
|
|
196
|
-
function legacyMemoryBackrefToConceptId(value) {
|
|
197
|
-
if (!value)
|
|
198
|
-
return undefined;
|
|
199
|
-
const trimmed = value.trim();
|
|
200
|
-
const MEMORY_PREFIX = "memory:";
|
|
201
|
-
if (!trimmed.startsWith(MEMORY_PREFIX))
|
|
202
|
-
return undefined;
|
|
203
|
-
return `memories/${trimmed.slice(MEMORY_PREFIX.length)}`;
|
|
204
|
-
}
|
|
205
|
-
/** Fold + delete one directory's `.stash.json`, if present. */
|
|
206
|
-
function foldSidecarInDir(dir, report) {
|
|
207
|
-
const sidecarPath = legacyStashFilePath(dir);
|
|
208
|
-
if (!fs.existsSync(sidecarPath))
|
|
209
|
-
return;
|
|
210
|
-
try {
|
|
211
|
-
const overrides = readLegacyStashOverrides(dir);
|
|
212
|
-
for (const entry of overrides?.entries ?? [])
|
|
213
|
-
foldEntry(dir, entry, report);
|
|
214
|
-
fs.rmSync(sidecarPath, { force: true });
|
|
215
|
-
report.sidecarsFolded++;
|
|
216
|
-
}
|
|
217
|
-
catch (error) {
|
|
218
|
-
warn(`[akm] content-migration: could not fold ${sidecarPath}: ${errMsg(error)}`);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/** Fold one sidecar entry into its target markdown file's frontmatter. */
|
|
222
|
-
function foldEntry(dir, entry, report) {
|
|
223
|
-
if (!entry.filename) {
|
|
224
|
-
report.entriesSkipped++;
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
const target = path.join(dir, entry.filename);
|
|
228
|
-
if (!fs.existsSync(target) || path.extname(target).toLowerCase() !== ".md") {
|
|
229
|
-
report.entriesSkipped++;
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
try {
|
|
233
|
-
mutateFrontmatter(target, (parsed) => foldCuratedFields(parsed.data, entry));
|
|
234
|
-
report.entriesFolded++;
|
|
235
|
-
}
|
|
236
|
-
catch (error) {
|
|
237
|
-
report.entriesSkipped++;
|
|
238
|
-
warn(`[akm] content-migration: could not fold entry into ${target}: ${errMsg(error)}`);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/** Merge the sidecar entry's curated fields onto the existing frontmatter (sidecar wins). */
|
|
242
|
-
function foldCuratedFields(existing, entry) {
|
|
243
|
-
const next = { ...existing };
|
|
244
|
-
const source = entry;
|
|
245
|
-
for (const [field, fmKey] of CURATED_FIELD_MAP) {
|
|
246
|
-
const value = source[field];
|
|
247
|
-
if (value !== undefined)
|
|
248
|
-
next[fmKey] = value;
|
|
249
|
-
}
|
|
250
|
-
return next;
|
|
251
|
-
}
|
|
252
|
-
/** D-R6: rename any mis-named reserved-filename concept in `dir` to a collision-safe name. */
|
|
253
|
-
function renameReservedConceptsInDir(dir, report) {
|
|
254
|
-
let entries;
|
|
255
|
-
try {
|
|
256
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
257
|
-
}
|
|
258
|
-
catch {
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
for (const entry of entries) {
|
|
262
|
-
if (!entry.isFile() || !RESERVED_BASENAMES.has(entry.name.toLowerCase()))
|
|
263
|
-
continue;
|
|
264
|
-
const filePath = path.join(dir, entry.name);
|
|
265
|
-
try {
|
|
266
|
-
if (!carriesAssetFrontmatter(filePath))
|
|
267
|
-
continue;
|
|
268
|
-
const target = collisionSafeTarget(dir, entry.name);
|
|
269
|
-
fs.renameSync(filePath, target);
|
|
270
|
-
report.reservedRenames.push({ from: filePath, to: target });
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
warn(`[akm] content-migration: could not rename reserved file ${filePath}: ${errMsg(error)}`);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* True when a reserved-name file actually holds akm ASSET frontmatter (a
|
|
279
|
-
* concept mis-placed under a reserved name), keyed on the D-R6 example markers
|
|
280
|
-
* `description` / `when_to_use`. A structural listing/log block (no asset
|
|
281
|
-
* frontmatter, e.g. only the bundle-root `okf_version`) returns false.
|
|
282
|
-
*/
|
|
283
|
-
function carriesAssetFrontmatter(filePath) {
|
|
284
|
-
const parsed = parseFrontmatter(fs.readFileSync(filePath, "utf8"));
|
|
285
|
-
if (parsed.frontmatter === null)
|
|
286
|
-
return false;
|
|
287
|
-
const data = parsed.data;
|
|
288
|
-
return !!(asNonEmptyString(data.description) ||
|
|
289
|
-
asNonEmptyString(data.when_to_use) ||
|
|
290
|
-
asNonEmptyString(data.whenToUse));
|
|
291
|
-
}
|
|
292
|
-
/** `index.md` → `index-content.md`, then `index-content-2.md`, … on collision. */
|
|
293
|
-
function collisionSafeTarget(dir, basename) {
|
|
294
|
-
const stem = basename.slice(0, basename.length - ".md".length);
|
|
295
|
-
let candidate = path.join(dir, `${stem}-content.md`);
|
|
296
|
-
let suffix = 2;
|
|
297
|
-
while (fs.existsSync(candidate)) {
|
|
298
|
-
candidate = path.join(dir, `${stem}-content-${suffix}.md`);
|
|
299
|
-
suffix++;
|
|
300
|
-
}
|
|
301
|
-
return candidate;
|
|
302
|
-
}
|
|
303
|
-
function errMsg(error) {
|
|
304
|
-
return error instanceof Error ? error.message : String(error);
|
|
305
|
-
}
|