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
package/STABILITY.md
ADDED
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
# Stability policy
|
|
2
|
+
|
|
3
|
+
`akm-cli` follows [Semantic Versioning](https://semver.org/) on the 0.x line
|
|
4
|
+
**with one caveat**: until 1.0, minor releases (0.x → 0.x+1) may include
|
|
5
|
+
breaking changes.
|
|
6
|
+
|
|
7
|
+
**0.9.x series exception.** The 0.9.x releases are a deliberate refactoring
|
|
8
|
+
and clean-up series: the goal is to pay off all remaining technical debt and
|
|
9
|
+
land every planned breaking change before 0.10. While that work completes,
|
|
10
|
+
**0.9.x patch releases may also contain breaking changes** — each one called
|
|
11
|
+
out in the CHANGELOG with a migration note. The 0.10.x series returns to bug
|
|
12
|
+
fixes and tuning, and aims to restore the normal discipline of breaking
|
|
13
|
+
changes only in major and minor releases.
|
|
14
|
+
|
|
15
|
+
This document classifies **every** user-facing surface by stability so you can
|
|
16
|
+
decide which parts of `akm` are safe to script against today and which to
|
|
17
|
+
treat as still-evolving. If a surface is not listed here, that is a bug —
|
|
18
|
+
please file it.
|
|
19
|
+
|
|
20
|
+
## How to read this
|
|
21
|
+
|
|
22
|
+
| Tier | Contract |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| **Stable** | Scripted use is supported. Changes are additive within a minor release; breaking changes are called out in the CHANGELOG with a migration note. |
|
|
25
|
+
| **Evolving** | Available across minor releases, but flag names, prompts, and payload shapes may shift. Breaking changes are flagged in the CHANGELOG. |
|
|
26
|
+
| **Experimental** | Subject to change without notice. Not recommended for scripted use. Some experimental surfaces additionally require an explicit opt-in — see [`akm improve` autonomy](#akm-improve-autonomy--opt-in-in-090). |
|
|
27
|
+
| **Internal** | Not a public interface. May change or disappear in any release, without a CHANGELOG note. Listed here only so you can recognize it. |
|
|
28
|
+
|
|
29
|
+
## Command tier index
|
|
30
|
+
|
|
31
|
+
The canonical index: every command and subcommand group in the current tree
|
|
32
|
+
(enumerated from `main.subCommands` in `src/cli.ts` and each group's own
|
|
33
|
+
`subCommands`), with its tier. The prose sections below remain the detailed
|
|
34
|
+
explanation of *why*; this table is the lookup. Two spots have no single
|
|
35
|
+
explicit sentence naming their tier and were resolved by reading neighbors:
|
|
36
|
+
`akm bundle show` is assigned Evolving because it is discussed only inside
|
|
37
|
+
the Evolving "Bundles & the workspace model" bullet, alongside the still-
|
|
38
|
+
shifting adapter set, unlike its sibling `akm bundle list`, which the Stable
|
|
39
|
+
section names explicitly; and `akm proposal list` is assigned Stable — the
|
|
40
|
+
Stable section names it explicitly ("list filters"), which takes precedence
|
|
41
|
+
over its incidental mention inside the Evolving "Improvement loop" bullet's
|
|
42
|
+
enumeration of the whole `proposal` noun group.
|
|
43
|
+
|
|
44
|
+
| Command | Tier | Notes |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `akm setup` | Stable | |
|
|
47
|
+
| `akm index` | Stable | |
|
|
48
|
+
| `akm health` | Evolving | Exit codes are Evolving; report *content* and rendered `md`/`html` layout are Experimental — do not script against report layout. |
|
|
49
|
+
| `akm info` | Stable | |
|
|
50
|
+
| `akm bundle create` | Stable | |
|
|
51
|
+
| `akm bundle add` | Stable | |
|
|
52
|
+
| `akm bundle list` | Stable | |
|
|
53
|
+
| `akm bundle show` | Evolving | See note above. |
|
|
54
|
+
| `akm bundle remove` | Stable | |
|
|
55
|
+
| `akm bundle update` | Stable | |
|
|
56
|
+
| `akm upgrade` | Evolving | |
|
|
57
|
+
| `akm search` | Stable | |
|
|
58
|
+
| `akm curate` | Stable | |
|
|
59
|
+
| `akm show` | Stable | |
|
|
60
|
+
| `akm workflow status` | Stable | |
|
|
61
|
+
| `akm workflow list` | Stable | |
|
|
62
|
+
| `akm workflow create` | Stable | |
|
|
63
|
+
| `akm workflow resume` | Stable | |
|
|
64
|
+
| `akm workflow abandon` | Stable | |
|
|
65
|
+
| `akm workflow run` | Stable | Canonical start/resume/execute command. |
|
|
66
|
+
| `akm remember` | Stable | |
|
|
67
|
+
| `akm import` | Stable | |
|
|
68
|
+
| `akm sync` | Stable | |
|
|
69
|
+
| `akm clone` | Stable | |
|
|
70
|
+
| `akm registry list` | Evolving | |
|
|
71
|
+
| `akm registry add` | Evolving | |
|
|
72
|
+
| `akm registry remove` | Evolving | |
|
|
73
|
+
| `akm migrate status` | Internal | Forwards to the standalone `akm-migrate` tool; renders its result through the normal `--format` pipeline (not exempt — see below). Listed (not hidden) in `--help`/completions. |
|
|
74
|
+
| `akm migrate apply` | Internal | Forwards to the standalone `akm-migrate` tool; renders its result through the normal `--format` pipeline (not exempt — see below). Listed (not hidden) in `--help`/completions. |
|
|
75
|
+
| `akm config path` | Stable | |
|
|
76
|
+
| `akm config list` | Stable | |
|
|
77
|
+
| `akm config get` | Stable | |
|
|
78
|
+
| `akm config set` | Stable | |
|
|
79
|
+
| `akm config unset` | Stable | |
|
|
80
|
+
| `akm feedback` | Stable | |
|
|
81
|
+
| `akm log` | Evolving | |
|
|
82
|
+
| `akm agent` | Evolving | |
|
|
83
|
+
| `akm lint` | Evolving | |
|
|
84
|
+
| `akm improve` | Evolving | Review-first by default; mutating lanes require `experimental.improveAutonomy` — see below. |
|
|
85
|
+
| `akm proposal list` | Stable | See reconciliation note above. |
|
|
86
|
+
| `akm proposal show` | Evolving | |
|
|
87
|
+
| `akm proposal diff` | Evolving | |
|
|
88
|
+
| `akm proposal accept` | Evolving | |
|
|
89
|
+
| `akm proposal reject` | Evolving | |
|
|
90
|
+
| `akm proposal revert` | Evolving | |
|
|
91
|
+
| `akm proposal drain` | Evolving | |
|
|
92
|
+
| `akm proposal extract` | Evolving | Former top-level `akm extract`. |
|
|
93
|
+
| `akm proposal new` | Evolving | Former top-level `akm propose`. |
|
|
94
|
+
| `akm help` | Stable | |
|
|
95
|
+
| `akm help agents` | Stable | |
|
|
96
|
+
| `akm help migrate` | Stable | Only renders release notes. |
|
|
97
|
+
| `akm hints` | Stable | Format-exempt agent guide; `--detail brief` selects the compact version. |
|
|
98
|
+
| `akm completions` | Stable | Format-exempt (emits shell script source). |
|
|
99
|
+
| `akm env list` | Stable | Read-and-inject surface. |
|
|
100
|
+
| `akm env path` | Stable | Read-and-inject surface. |
|
|
101
|
+
| `akm env export` | Stable | Read-and-inject surface. |
|
|
102
|
+
| `akm env run` | Stable | Read-and-inject surface. |
|
|
103
|
+
| `akm env create` | Experimental | Write verb. |
|
|
104
|
+
| `akm env remove` | Experimental | Write verb. |
|
|
105
|
+
| `akm secret list` | Stable | Read-and-inject surface. |
|
|
106
|
+
| `akm secret run` | Stable | Read-and-inject surface. |
|
|
107
|
+
| `akm secret set` | Experimental | Write verb. |
|
|
108
|
+
| `akm task add` | Evolving | |
|
|
109
|
+
| `akm task run` | Evolving | |
|
|
110
|
+
| `akm task history` | Evolving | |
|
|
111
|
+
| `akm task sync` | Evolving | |
|
|
112
|
+
| `akm task doctor` | Evolving | |
|
|
113
|
+
|
|
114
|
+
## Stable
|
|
115
|
+
|
|
116
|
+
- **Asset ref syntax** — `[bundle//]conceptId[#fragment]`. A `conceptId` is
|
|
117
|
+
subdir-qualified within its bundle: `memories/<name>`, `lessons/<name>`,
|
|
118
|
+
`knowledge/<name>`, `skills/<name>`, `scripts/<name>`, `workflows/<name>`,
|
|
119
|
+
`env/<name>`, `secrets/<name>`, `tasks/<name>`, `facts/<name>`,
|
|
120
|
+
`sessions/<name>`, `commands/<name>`, `agents/<name>`. Other adapters
|
|
121
|
+
declare their own conceptId layouts. The optional `bundle//` prefix names an
|
|
122
|
+
installed bundle; omit it and the ref resolves against the workspace
|
|
123
|
+
`defaultBundle`, then the remaining bundles in installation-priority order.
|
|
124
|
+
Durable state always stores the fully-qualified `bundle//conceptId`; the
|
|
125
|
+
short form is accepted input only, at the CLI, the programmatic surface, and
|
|
126
|
+
inside bundle content (where it resolves against the containing bundle). The
|
|
127
|
+
older `<type>:<name>` grammar is no longer accepted.
|
|
128
|
+
- `#fragment` is **input-only** and never stored. On markdown-document items
|
|
129
|
+
the core resolves it as a section selector — `akm show <ref>#<heading-slug>`
|
|
130
|
+
returns that one section, no fragment returns the whole item, and an
|
|
131
|
+
unmatched fragment lists the available slugs. Elsewhere it is an
|
|
132
|
+
adapter-owned selector opaque to the core. See
|
|
133
|
+
[`docs/architecture/specs/ref.md`](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/ref.md).
|
|
134
|
+
- **Refs in prose** must be fully qualified (`bundle//conceptId`) or a native
|
|
135
|
+
adapter link form. A bare conceptId in prose is ordinary text, not a ref,
|
|
136
|
+
and no akm tool rewrites it.
|
|
137
|
+
- **ConceptId-prefix enumeration** — `akm search "memories/"`,
|
|
138
|
+
`"memories/projecta/"`, `"bundle//"`, `"bundle//skills/"`. A trailing `/` is
|
|
139
|
+
required. The prefix matches the **conceptId** — the spelling every emitted
|
|
140
|
+
`ref` carries — so a ref copied out of search output can be truncated to a
|
|
141
|
+
prefix and pasted back in. Enumeration is not tied to any adapter's type set,
|
|
142
|
+
so every adapter's items browse the same way, and `bundle//` lists a whole
|
|
143
|
+
bundle (this replaced `akm bundle items`). A prefix is explicit intent, so
|
|
144
|
+
`search.defaultExcludeTypes` does not apply to it. The pre-0.9.0
|
|
145
|
+
`"<type>:"` / `"<type>:<prefix>/"` spelling was removed; a query in that
|
|
146
|
+
shape is now an ordinary keyword search whose empty-result tip names the
|
|
147
|
+
conceptId spelling that replaces it.
|
|
148
|
+
- **Read commands** — `akm search`, `akm show`, `akm bundle list`, `akm curate`,
|
|
149
|
+
`akm info`, `akm config get`, `akm config list`, `akm config path`,
|
|
150
|
+
`akm env list`, `akm secret list`, `akm proposal list` (list filters),
|
|
151
|
+
`akm help`, `akm help agents`, `akm hints`, `akm completions`.
|
|
152
|
+
- **Write commands core surface** — `akm bundle add`, `akm bundle update`,
|
|
153
|
+
`akm bundle remove`, `akm clone`, `akm import`, `akm sync`, `akm index`,
|
|
154
|
+
`akm bundle create`, `akm setup`, `akm remember`, `akm feedback`,
|
|
155
|
+
`akm config set`, `akm config unset`.
|
|
156
|
+
- **Renames are delete + create** — moving or renaming an item gives it a new
|
|
157
|
+
identity; learned state does not follow it. Cross-bundle movement is
|
|
158
|
+
copy/import plus delete. The procedure is a plain filesystem move, then
|
|
159
|
+
`akm index`, then `akm lint` to catch inbound refs the move left dangling.
|
|
160
|
+
`akm mv` was **removed in 0.9.0**: it claimed to preserve identity across a
|
|
161
|
+
rename, but its inbound-ref rewriting targeted bare conceptIds rather than
|
|
162
|
+
the anchored `bundle//conceptId` prose form, so it could rewrite non-refs
|
|
163
|
+
while leaving real refs dangling. To carry an asset's earned signal
|
|
164
|
+
(feedback, usage, salience/outcome history) across a rename, the maintainer
|
|
165
|
+
script `scripts/rekey-asset-ref.ts` re-keys those rows old -> new; it is
|
|
166
|
+
Internal tooling, not a supported command surface.
|
|
167
|
+
- **Asset `type` is a free-form, open string** — `--type` filtering is an
|
|
168
|
+
exact match against an open set and is deliberately **not validated**: an
|
|
169
|
+
unrecognized type returns zero hits, not an error. Adapters emit types
|
|
170
|
+
outside the built-in set, so there is no closed list to validate against —
|
|
171
|
+
`--type website` or `--type wiki-source` are ordinary, valid filters.
|
|
172
|
+
- **Output contracts** — JSON output shape (the top-level keys) and the error
|
|
173
|
+
envelope `{ok: false, error, code?, hint?}` on envelope surfaces: `ok` and
|
|
174
|
+
`error` are always present; `code` is a stable machine-readable identifier
|
|
175
|
+
present on every classified failure (exit 1 / 2 / 78) and absent only on
|
|
176
|
+
unexpected internal errors (exit 70); `hint` is best-effort and may be absent. Prefer
|
|
177
|
+
`code` over matching on `error` prose. Plus the exit-code table below.
|
|
178
|
+
**All six** `--format` values (`json|jsonl|yaml|text|md|html`) are available
|
|
179
|
+
on every non-exempt command. `json`, `jsonl`, and `yaml` serialize the
|
|
180
|
+
envelope; `text`, `md`, and `html` render it. A command may register a bespoke
|
|
181
|
+
renderer for a document format — `akm health` does, for its per-run and
|
|
182
|
+
window-compare tables and its full HTML report — and anything unregistered
|
|
183
|
+
falls back to a generic rendering derived from the envelope's own shape. No
|
|
184
|
+
command emits one format's bytes when another was asked for, none rejects a
|
|
185
|
+
format outright, and **no command reads `--format` to decide what data to
|
|
186
|
+
fetch**: a registered renderer fires on the shape of the result (`akm health
|
|
187
|
+
--report` carries the report dataset in the envelope, so the same data is
|
|
188
|
+
available as JSON), never on the format alone.
|
|
189
|
+
`--detail` is verbosity only (`brief|normal|full`);
|
|
190
|
+
`--shape` (`human|agent|summary`) is the output-projection axis (see
|
|
191
|
+
Experimental). A small set of commands is **format-exempt** because their
|
|
192
|
+
output is not a result envelope at all: `completions` (shell script source),
|
|
193
|
+
child-process passthrough in `env run` / `secret run`, a bare-path payload
|
|
194
|
+
from `env path`, and document payloads from `help` (bare, `help agents`, and
|
|
195
|
+
`help migrate`). The set is declared in
|
|
196
|
+
`src/output/format-exempt.ts`, and
|
|
197
|
+
passing `--format` to one of them warns rather than silently doing something
|
|
198
|
+
else. Scripted `setup` modes emit a normal format-aware result; interactive
|
|
199
|
+
`setup` is a terminal UI and emits no result document. `agent` leaves
|
|
200
|
+
inherited child streams raw and formats its final result envelope.
|
|
201
|
+
`migrate status`/`apply` both spawn the standalone `akm-migrate` tool but are
|
|
202
|
+
NOT in the exempt set: `src/commands/migrate-cli.ts` parses the child's
|
|
203
|
+
final JSON result line and renders it through the same `output()` pipeline
|
|
204
|
+
(registered shape `src/output/shapes/migrate.ts`, text renderer
|
|
205
|
+
`src/output/text/migrate.ts`), so all six `--format` values work on them
|
|
206
|
+
like any other command. Any progress-event lines the child prints during a
|
|
207
|
+
real `apply` (content migration, proposal-ref repair) still print verbatim,
|
|
208
|
+
ahead of the formatted result — those are operational logging, not part of
|
|
209
|
+
the result envelope.
|
|
210
|
+
|
|
211
|
+
| Exit code | Meaning |
|
|
212
|
+
| --- | --- |
|
|
213
|
+
| `0` | Success |
|
|
214
|
+
| `1` | Not found / command-reported failure |
|
|
215
|
+
| `2` | Usage / bad input |
|
|
216
|
+
| `4` | Health warning (`akm health` only) |
|
|
217
|
+
| `70` | Internal / unclassified |
|
|
218
|
+
| `78` | Configuration error |
|
|
219
|
+
- **Install scripts** — `install.sh` and `install.ps1` URLs; the `--prefix`
|
|
220
|
+
/ `AKM_INSTALL_DIR` environment override.
|
|
221
|
+
- **Runtime** — the npm package requires Node.js >= 22 as its bootstrap and
|
|
222
|
+
prefers a working Bun >= 1.0 for execution when both are available; old,
|
|
223
|
+
unusable, or absent Bun installations fall back to Node.js. Standalone
|
|
224
|
+
binaries are runtime-free.
|
|
225
|
+
- **On-disk storage** — durable workspace state (events, proposals, history,
|
|
226
|
+
workflow runs, salience) lives in `state.db`; the search index (`index.db`)
|
|
227
|
+
is a fully **regenerable** cache rebuilt by `akm index`; high-volume logs stay
|
|
228
|
+
in a separate `logs.db`. Asset metadata lives as file-local frontmatter plus
|
|
229
|
+
the index (there is no separate metadata sidecar). Treat the on-disk schema
|
|
230
|
+
as internal (use `akm` commands, not direct SQL).
|
|
231
|
+
|
|
232
|
+
## Evolving
|
|
233
|
+
|
|
234
|
+
These surfaces are in active iteration as we learn from users. They will
|
|
235
|
+
remain available across minor releases, but flag names, prompts, and
|
|
236
|
+
proposal-queue shape may shift. Breaking changes will be flagged in the
|
|
237
|
+
CHANGELOG with a migration note.
|
|
238
|
+
|
|
239
|
+
- **Improvement loop** — `akm improve` and the proposal noun group
|
|
240
|
+
`akm proposal {extract,new,list,show,diff,accept,reject,revert,drain}`
|
|
241
|
+
(`extract` and `new` are the former top-level `akm extract`/`akm propose`,
|
|
242
|
+
moved under `proposal` in 0.9.0). Output JSON keys
|
|
243
|
+
are stable; CLI flags (`--strategy`, `--task`, `--generator`) may add
|
|
244
|
+
options or tighten validation across releases. `akm improve` stays on by
|
|
245
|
+
default and is **review-first**: the lanes that mutate assets without review
|
|
246
|
+
require `experimental.improveAutonomy` — see
|
|
247
|
+
[`akm improve` autonomy](#akm-improve-autonomy--opt-in-in-090).
|
|
248
|
+
`--auto-accept` was removed in 0.9.0. It is now accepted-and-warned rather
|
|
249
|
+
than silently absorbed: passing it prints a deprecation warning naming the
|
|
250
|
+
replacement, and the space-separated form (`--auto-accept 90`) no longer
|
|
251
|
+
poisons the asset-type positional — its value is discarded with a second
|
|
252
|
+
warning instead of silently reducing the run to a zero-match no-op. It
|
|
253
|
+
becomes a hard error in 0.10. The replacement is
|
|
254
|
+
`akm improve && akm proposal drain --promote --yes`, or a `triage` block
|
|
255
|
+
with `applyMode: "promote"` in your strategy.
|
|
256
|
+
- **Tasks** — `akm task` subcommand surface (`add | run | sync | doctor |
|
|
257
|
+
history`; no alias, no `list`/`remove`/`init`/`enable`/`disable`); strict
|
|
258
|
+
version-2 YAML for scheduled tasks. Prompt tasks use named engines and task
|
|
259
|
+
history metadata is versioned. Schema additions in patch releases; removals
|
|
260
|
+
only at minor. Bare `akm task` is a usage error naming the subcommands
|
|
261
|
+
(`akm task doctor` reports scheduler diagnostics).
|
|
262
|
+
- **Events / log** — `akm log` is the event-stream surface (0.9.0: the
|
|
263
|
+
asset-scoped `akm history` surface, and `log`'s own `tail` subcommand, were
|
|
264
|
+
both removed; `log` is now a leaf command — the former `list` surface).
|
|
265
|
+
- **Bundles & the workspace model** — installed sources are *bundles*; each is
|
|
266
|
+
recognized by a built-in *adapter* (native Agent Skills, Claude and OpenCode
|
|
267
|
+
commands/agents, knowledge, YAML workflows, tasks, env/secret files, scripts,
|
|
268
|
+
OKF and LLM-wiki knowledge bases). Config is keyed by `bundles` and
|
|
269
|
+
`defaultBundle`. The adapter set, bundle-recognition rules, and the
|
|
270
|
+
`bundles` config shape may still shift. Bundles are inspected through
|
|
271
|
+
`akm bundle list` / `akm bundle show <name>` and enumerated through
|
|
272
|
+
`akm search "bundle//"`. (An earlier `akm bundle items` noun group was
|
|
273
|
+
removed in 0.9.0 as duplicative of `akm search`; the current `akm bundle`
|
|
274
|
+
group — `create | add | list | show | remove | update` — is the
|
|
275
|
+
lifecycle-management surface consolidated from the former top-level
|
|
276
|
+
`init`/`add`/`list`/`remove`/`update` commands, not a revival of that one.)
|
|
277
|
+
OKF is the
|
|
278
|
+
first-class baseline for Markdown concept identity and generic reads; every
|
|
279
|
+
applicable OKF conformance case is required to pass. AKM-authored Markdown is
|
|
280
|
+
an OKF-compatible superset whose adapter adds native behavior progressively.
|
|
281
|
+
- **LLM Wiki bundles** — the Karpathy-style LLM wiki is a first-class built-in
|
|
282
|
+
bundle format (the `llm-wiki` adapter owns `schema.md` / `index.md` /
|
|
283
|
+
`log.md` / `raw/` / `pages/` and its ingest flow); wiki pages are addressed
|
|
284
|
+
as ordinary concepts inside their bundle. Adapter behavior and page
|
|
285
|
+
conventions are still iterating.
|
|
286
|
+
- **Agent dispatch** — `akm agent` subcommand. Supported backends: `claude`,
|
|
287
|
+
`opencode`, `opencode-sdk`, `codex`, `copilot`, `pi`, `gemini`, `aider`,
|
|
288
|
+
`amazonq`, `openhands`. The set will grow.
|
|
289
|
+
- **Proposal queue** — quality classifications (`accepted`, `pending`,
|
|
290
|
+
`proposed`, `rejected`, `archived`) are stable; the JSON shape of a
|
|
291
|
+
proposal record may add fields.
|
|
292
|
+
- **Registries** — `akm registry {list,add,remove}`. Searching registries is
|
|
293
|
+
`akm search --from registry` (0.9.0: `registry search` was folded into
|
|
294
|
+
`search`). Building a registry index is maintainer tooling (Internal) and
|
|
295
|
+
lives outside the CLI, in `scripts/build-registry-index.ts`.
|
|
296
|
+
- **Upgrade** — `akm upgrade`. Checksum verification is not optional; the
|
|
297
|
+
recovery hatch is the `AKM_UPGRADE_SKIP_CHECKSUM` environment variable
|
|
298
|
+
(Internal), not a flag.
|
|
299
|
+
- **Lint** — `akm lint`. The rule set and finding shapes iterate; the
|
|
300
|
+
`--fail-on-flagged` CI contract and the exit codes are stable.
|
|
301
|
+
- **Health** — `akm health` and its exit codes (0 pass / 4 warn / 1 fail) are
|
|
302
|
+
Evolving; the *content* of the report (metrics, advisories) and the rendered
|
|
303
|
+
`md` / `html` layouts are Experimental — do not script against report layout.
|
|
304
|
+
|
|
305
|
+
## Experimental
|
|
306
|
+
|
|
307
|
+
Subject to change without notice within minor releases. Not yet recommended
|
|
308
|
+
for scripted use.
|
|
309
|
+
|
|
310
|
+
- **`lesson` asset type** — schema (`when_to_use`, `description`) is
|
|
311
|
+
stable, but lesson-distillation triggers and ranking are tuning targets.
|
|
312
|
+
- **`--shape agent` and `--shape summary`** — the output-projection axis
|
|
313
|
+
(`--shape human|agent|summary`). `summary` is implemented only on
|
|
314
|
+
`akm show`; `agent` is implemented on `search`, `show`, and `curate`.
|
|
315
|
+
Coverage will expand. `--detail` is verbosity only (`brief|normal|full`).
|
|
316
|
+
- **Protected env & secret values** — `env` (a whole `.env` group; key names
|
|
317
|
+
are surfaced for discoverability, values never are) and `secret` (a single
|
|
318
|
+
sensitive value). Values are never written to stdout, the index, or
|
|
319
|
+
structured output; the safe injection path is `akm env run <name> --
|
|
320
|
+
<command>` (or `akm secret run <name> <VAR> -- …`). The `env` / `secret`
|
|
321
|
+
**write** verbs (`create`, `set`, `unset`, `remove`) are Experimental; the
|
|
322
|
+
`list` / `path` / `run` / `export` read-and-inject surface is Stable.
|
|
323
|
+
- **Memory belief-state transitions** — `captureMode`, `beliefState`,
|
|
324
|
+
contradiction edges, and the consolidate journal are observable but
|
|
325
|
+
the algorithm that writes them is tuning across patch releases.
|
|
326
|
+
- **Improve tuning config** — `improve.strategies.*.processes.*` (per-process
|
|
327
|
+
engines, limits, gates, and the anti-collapse / CLS / fidelity knobs) and
|
|
328
|
+
the `index.*` per-pass config. The 0.9.x series is explicitly still settling
|
|
329
|
+
the design of the improve processes, so **keys in these two families may be
|
|
330
|
+
added, renamed, or dropped in any 0.9.x or 0.10.x release**. The `akm
|
|
331
|
+
improve` *command* surface is Evolving (above); its tuning config is not.
|
|
332
|
+
|
|
333
|
+
### `akm improve` autonomy — opt-in in 0.9.0
|
|
334
|
+
|
|
335
|
+
**`akm improve` is review-first by default in 0.9.0.** The command itself is ON
|
|
336
|
+
— its schedules, reflect/distill proposals, and graph extraction all run — but
|
|
337
|
+
the lanes that mutate assets *without* review require an explicit opt-in:
|
|
338
|
+
|
|
339
|
+
```sh
|
|
340
|
+
akm config set experimental.improveAutonomy true
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Without it, these three lanes are downgraded, and each downgrade is **reported,
|
|
344
|
+
not silent**: it warns on stderr naming the lane and the key, appends an
|
|
345
|
+
`improve_skipped` event with `reason: "autonomy_gated"`, is counted in
|
|
346
|
+
`akm health`'s improve skip-reason summary, and is listed by `akm task doctor`
|
|
347
|
+
under `improveAutonomy.gatedLanes` — which is where to look when a *scheduled*
|
|
348
|
+
run stops doing something it used to. `akm task doctor` also reports the
|
|
349
|
+
**effective** `improveTriage.applyMode`, so a `promote` strategy under a
|
|
350
|
+
review-first config correctly shows `queue`.
|
|
351
|
+
|
|
352
|
+
| Lane | What it does when enabled | With autonomy off |
|
|
353
|
+
| --- | --- | --- |
|
|
354
|
+
| `memoryInference` | Writes `.derived.md` children and rewrites parent frontmatter | disabled |
|
|
355
|
+
| memory cleanup | Belief-state frontmatter rewrites, archive moves | analyzed but not applied |
|
|
356
|
+
| `triage` `applyMode: "promote"` | Auto-accepts queued proposals into the bundle | downgraded to `queue` — triage still runs, it just does not auto-accept |
|
|
357
|
+
|
|
358
|
+
Consolidation remains enabled with autonomy off because merge, delete, and
|
|
359
|
+
contradiction operations are advisory; promotion only emits a reviewable
|
|
360
|
+
proposal.
|
|
361
|
+
|
|
362
|
+
Because the gate is applied before the LLM preflight, a review-first workspace
|
|
363
|
+
also needs fewer engines configured: a strategy whose only model-backed process
|
|
364
|
+
is a gated lane resolves without an engine at all.
|
|
365
|
+
|
|
366
|
+
**Three direct writes are deliberately NOT gated**, because they are additive or
|
|
367
|
+
already independently controlled:
|
|
368
|
+
|
|
369
|
+
| Write | Why it stays ungated |
|
|
370
|
+
| --- | --- |
|
|
371
|
+
| `extract` session indexing | Additive `sessions/**` writes; nothing is overwritten or deleted |
|
|
372
|
+
| distill's encoding-salience stamp | Frontmatter metadata only |
|
|
373
|
+
| `sync.push` | Publishes already-committed content to a remote the user configured for that purpose, and has its own `improve.strategies.<name>.sync.push: false` and `--no-push` |
|
|
374
|
+
|
|
375
|
+
Autonomy is never inferred: an absent `experimental` section, an absent key, and
|
|
376
|
+
an explicit `false` all read as off, so a partially-written or older config is
|
|
377
|
+
review-first rather than accidentally permissive.
|
|
378
|
+
|
|
379
|
+
Reflect, distill, extract candidates, validation, proactive-maintenance
|
|
380
|
+
selection, and graph extraction are proposal-only and never write assets
|
|
381
|
+
directly. Two further direct writes are ungated by design: `extract`'s session
|
|
382
|
+
indexing (additive `sessions/**` writes,
|
|
383
|
+
`processes.extract.indexSessions`, default on) and distill's
|
|
384
|
+
encoding-salience frontmatter stamp (metadata only).
|
|
385
|
+
|
|
386
|
+
## Internal
|
|
387
|
+
|
|
388
|
+
Not public interfaces. Listed so you can recognize them, not so you can rely
|
|
389
|
+
on them.
|
|
390
|
+
|
|
391
|
+
- **Migration surfaces** — the standalone `akm-migrate` tool owns the one-time
|
|
392
|
+
0.8→0.9 cutover, storage migration, and recovery backups (`akm-migrate
|
|
393
|
+
backup` / `restore`). `akm migrate` is a thin process forwarder; `akm backup`
|
|
394
|
+
and `akm config migrate` are removed. `akm help migrate <version>` is Stable
|
|
395
|
+
and only renders release notes.
|
|
396
|
+
- **`bun scripts/build-registry-index.ts`** — maintainer tooling for building a
|
|
397
|
+
registry index. It is a repository script, not a CLI command (the former
|
|
398
|
+
`akm registry build-index` subcommand was removed).
|
|
399
|
+
- **Environment variables** — see the table below.
|
|
400
|
+
|
|
401
|
+
### Environment variables
|
|
402
|
+
|
|
403
|
+
**Supported** — documented interfaces; changes get a CHANGELOG note:
|
|
404
|
+
|
|
405
|
+
| Variable | Purpose |
|
|
406
|
+
| --- | --- |
|
|
407
|
+
| `AKM_BUNDLE_DIR`, `AKM_CONFIG_DIR`, `AKM_DATA_DIR`, `AKM_CACHE_DIR` | Filesystem layout overrides |
|
|
408
|
+
| `AKM_LLM_API_KEY`, `AKM_EMBED_API_KEY`, `AKM_ENGINE_<NAME>_API_KEY` | Credential provision for `$VAR` config references |
|
|
409
|
+
| `AKM_LLM_ENDPOINT`, `AKM_LLM_BASE_URL` | Setup provider inference |
|
|
410
|
+
| `AKM_VERBOSE`, `AKM_DEBUG` | Diagnostics |
|
|
411
|
+
| `AKM_REGISTRY_URL` | akm registry mirror override |
|
|
412
|
+
| `AKM_NPM_REGISTRY` | npm mirror override — redirects BOTH the trusted-tarball host allowlist and package metadata lookups (`npm view`-equivalent resolution) to the given registry base, replacing `registry.npmjs.org` wholesale rather than merging with it |
|
|
413
|
+
| `AKM_SQLITE_JOURNAL_MODE` | SQLite journal mode (network filesystems) |
|
|
414
|
+
| `AKM_BIN` | Absolute `akm` path for scheduler registration |
|
|
415
|
+
| `AKM_INSTALL_DIR` | Install-script prefix |
|
|
416
|
+
| `AKM_FORCE_SETUP_TMP_STASH` | Documented escape hatch for intentional temp-directory bundles |
|
|
417
|
+
| `AKM_UPGRADE_SKIP_CHECKSUM` | Recovery hatch for a broken upgrade checksum |
|
|
418
|
+
|
|
419
|
+
**Internal** — no compatibility guarantee, may vanish without notice:
|
|
420
|
+
`AKM_NODE_ENTRY`, `AKM_EVENT_SOURCE`, `AKM_SESSION_ID`, `AKM_AGENT_HARNESS`,
|
|
421
|
+
`AKM_EMBED_DETERMINISTIC`, `AKM_CLAUDE_PROJECTS_DIR`,
|
|
422
|
+
`AKM_FORCE_INIT_TMP_STASH`, `AKM_STATE_DIR`.
|
|
423
|
+
|
|
424
|
+
Anything matching `AKM_TEST_*` is test-only fault injection. Never set it.
|
|
425
|
+
`AKM_VERSION` is the only variable actually stripped from release builds, via
|
|
426
|
+
`bun build --define` (see `.github/workflows/release.yml`); no `src/` code
|
|
427
|
+
reads an `AKM_TEST_*` variable, so the compiled `akm` binary itself carries
|
|
428
|
+
none. That said, three fault-injection hooks are NOT compiled out and DO ship
|
|
429
|
+
in every install: `AKM_TEST_MIGRATION_FAIL_INDEX_QUARANTINE`,
|
|
430
|
+
`AKM_TEST_MIGRATION_FAIL_WORKFLOW_DELETE`, and
|
|
431
|
+
`AKM_TEST_MIGRATION_FAIL_RESTORE_AFTER` (`scripts/akm-migrate/`). The migration
|
|
432
|
+
tool ships separately from the compiled `akm` binary, so these throw-only hooks
|
|
433
|
+
remain physically present. At rest they are runtime-guarded no-ops unless the
|
|
434
|
+
exact internal test value is set. Never set them.
|
|
435
|
+
|
|
436
|
+
## On the horizon
|
|
437
|
+
|
|
438
|
+
These changes are planned and will land in a known future release. They
|
|
439
|
+
are not part of the current stability contract; you should plan migrations
|
|
440
|
+
around them.
|
|
441
|
+
|
|
442
|
+
**The 0.9.0 decision record is fully shipped.** The
|
|
443
|
+
[decision record](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/0.9.0-decisions.md) settles a set of
|
|
444
|
+
breaking changes; every one of them is now in the code, and each decision
|
|
445
|
+
carries its own shipped status.
|
|
446
|
+
|
|
447
|
+
Shipped from that record: **D1** (`#fragment` section selection),
|
|
448
|
+
**D2** (the `akm show <ref> toc|section|lines|frontmatter|full` view grammar is
|
|
449
|
+
gone — `#fragment` is the only section selector), **D4** (conceptId /
|
|
450
|
+
`bundle//` prefix browse), **D5** (`akm bundle` removed), **D6** (open `type`
|
|
451
|
+
set at runtime), **D7** (all six `--format` values everywhere), **D8** (the
|
|
452
|
+
`experimental.improveAutonomy` gate), **D9** (`--auto-accept` warn-and-ignore),
|
|
453
|
+
and partially **D10** (an `akm-migrate` binary now exists, though the code still
|
|
454
|
+
lives in this repo). **D3** shipped too, in the end: `akm mv` was removed in
|
|
455
|
+
0.9.0 (see the Renames bullet above), with `scripts/rekey-asset-ref.ts` as the
|
|
456
|
+
Internal replacement for the one capability nothing else covered.
|
|
457
|
+
|
|
458
|
+
- **0.10 — migration extraction.** The migration machinery leaves the CLI for
|
|
459
|
+
a separately published `akm-migrate` package (see Internal above).
|
|
460
|
+
- **0.10 — `--auto-accept` hard error.** It is currently accepted-and-warned;
|
|
461
|
+
see the Improvement loop entry.
|
|
462
|
+
- **0.10 — `BundleAdapter.placeNew()` wiring.** The interface declares
|
|
463
|
+
`placeNew()` as an optional capability method, and 8 of the built-in
|
|
464
|
+
adapters already implement it, but nothing in the write path calls it —
|
|
465
|
+
writes still resolve through AKM's native flat type→directory table.
|
|
466
|
+
Placement for every existing bundle is already correct today; this is a
|
|
467
|
+
deliberately sequenced routing change, not unfinished behavior. See
|
|
468
|
+
[D12](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/0.9.0-decisions.md#d12--bundleadapterplacenew-stays-unwired-until-010)
|
|
469
|
+
for why it is scoped out of 0.9.0. Nothing user-visible changes in 0.10 for
|
|
470
|
+
this alone.
|
|
471
|
+
- **1.0 contract freeze** — the `[bundle//]conceptId[#fragment]` ref grammar,
|
|
472
|
+
the supported source model, search behavior, and write-target rules are
|
|
473
|
+
frozen at 1.0. The SDK and in-process plugin story ship on top of that
|
|
474
|
+
frozen core.
|
|
475
|
+
|
|
476
|
+
## Reporting stability regressions
|
|
477
|
+
|
|
478
|
+
If you script against a stable surface and a release breaks it without a
|
|
479
|
+
CHANGELOG migration note, please open an issue at
|
|
480
|
+
<https://github.com/itlackey/akm/issues> labeled `regression`. We treat
|
|
481
|
+
stable-surface regressions as priority bugs.
|
|
482
|
+
|
|
483
|
+
For experimental surfaces, expect change — but file an issue if a change
|
|
484
|
+
isn't called out in the CHANGELOG, since that's still a documentation gap
|
|
485
|
+
worth fixing.
|
|
486
|
+
|
|
487
|
+
## See also
|
|
488
|
+
|
|
489
|
+
- [`CHANGELOG.md`](./CHANGELOG.md) — every release's behavior changes.
|
|
490
|
+
- [`SECURITY.md`](./SECURITY.md) — security supported-version policy
|
|
491
|
+
(independent of the feature-stability policy above).
|
|
492
|
+
- [`docs/architecture/specs/ref.md`](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/ref.md) — the
|
|
493
|
+
normative ref grammar.
|
|
494
|
+
- [`docs/architecture/specs/0.9.0-decisions.md`](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/0.9.0-decisions.md)
|
|
495
|
+
— the decision record behind the 0.9.0 surface changes.
|
|
496
|
+
- [`docs/reference/data-and-telemetry.md`](./docs/reference/data-and-telemetry.md) — what
|
|
497
|
+
state akm reads and writes locally.
|