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
|
@@ -2,49 +2,36 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
|
-
* Cross-cutting semantic checks over an assembled WorkflowDocument draft
|
|
5
|
+
* Cross-cutting semantic checks over an assembled `WorkflowDocument` draft
|
|
6
|
+
* that need the whole document (not just one frontmatter key) at once.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Per-key structural checks (unknown keys, id/param-name patterns, timeout
|
|
9
|
+
* format, retry taxonomy, route target ordering, duplicate ids, gate/body
|
|
10
|
+
* binding) all live in `parser.ts`, where line-anchored errors are cheapest to
|
|
11
|
+
* produce. The workflow-only closed frontmatter allowlist that used to live
|
|
12
|
+
* here (`ALLOWED_FRONTMATTER_KEYS`/`checkFrontmatterKeys`) is GONE —
|
|
13
|
+
* `schemas/akm-workflow.json` (`additionalProperties: false` over the shared
|
|
14
|
+
* asset envelope ∪ the workflow keys) is the closed-key authority now; this
|
|
15
|
+
* module only runs checks the schema cannot express (canonical xref shape,
|
|
16
|
+
* resource limits).
|
|
10
17
|
*/
|
|
11
|
-
import {
|
|
12
|
-
import { conceptIdFromTypeName, parseRefInput } from "../core/asset/resolve-ref.js";
|
|
18
|
+
import { bundleRefToString, parseBundleRef } from "../core/asset/asset-ref.js";
|
|
13
19
|
import { utf8Bytes, WORKFLOW_MAX_INSTRUCTION_BYTES, WORKFLOW_MAX_PARAMS, WORKFLOW_MAX_STEPS } from "./resource-limits.js";
|
|
14
|
-
const STEP_ID_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
15
|
-
const ALLOWED_FRONTMATTER_KEYS = new Set(["description", "tags", "params", "name", "updated", "when_to_use", "xrefs"]);
|
|
16
20
|
export function runSemanticChecks(draft, frontmatterData, frontmatterEndLine, errors) {
|
|
17
|
-
checkFrontmatterKeys(frontmatterData, frontmatterEndLine, errors);
|
|
18
21
|
checkXrefs(frontmatterData.xrefs, frontmatterEndLine, errors);
|
|
19
|
-
checkStepIdFormat(draft, errors);
|
|
20
|
-
checkDuplicateStepIds(draft, errors);
|
|
21
22
|
checkResourceLimits(draft, errors);
|
|
22
23
|
}
|
|
23
24
|
function checkXrefs(value, line, errors) {
|
|
24
25
|
if (value === undefined)
|
|
25
26
|
return;
|
|
26
|
-
if (!Array.isArray(value))
|
|
27
|
-
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
27
|
+
if (!Array.isArray(value))
|
|
28
|
+
return; // shape already flagged by parser.ts's checkXrefs
|
|
30
29
|
for (const ref of value) {
|
|
31
30
|
try {
|
|
32
31
|
if (typeof ref !== "string")
|
|
33
32
|
throw new Error("non-canonical ref");
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// legacy xrefs — the dual-reader arm stays alive until WI-8.5b): the new
|
|
37
|
-
// bare `conceptId` (or slug-clean `bundle//conceptId`) that lint/mv now
|
|
38
|
-
// recognize, OR the legacy `[origin//]type:name` round-trip.
|
|
39
|
-
const p = parseRefInput(ref);
|
|
40
|
-
const conceptId = conceptIdFromTypeName(p.type, p.name);
|
|
41
|
-
const newCanonical = p.origin !== undefined && p.origin !== "local" && p.origin !== "stash"
|
|
42
|
-
? isBundleSlug(p.origin)
|
|
43
|
-
? `${p.origin}//${conceptId}`
|
|
44
|
-
: `${p.origin}//${p.type}:${p.name}`
|
|
45
|
-
: conceptId;
|
|
46
|
-
const legacyCanonical = p.origin ? `${p.origin}//${p.type}:${p.name}` : `${p.type}:${p.name}`;
|
|
47
|
-
if (ref !== newCanonical && ref !== legacyCanonical)
|
|
33
|
+
const parsed = parseBundleRef(ref);
|
|
34
|
+
if (parsed.conceptId.includes(":") || ref !== bundleRefToString(parsed))
|
|
48
35
|
throw new Error("non-canonical ref");
|
|
49
36
|
}
|
|
50
37
|
catch {
|
|
@@ -59,49 +46,21 @@ function checkResourceLimits(draft, errors) {
|
|
|
59
46
|
if (draft.steps.length > WORKFLOW_MAX_STEPS) {
|
|
60
47
|
errors.push({ line: 1, message: `Workflow must contain at most ${WORKFLOW_MAX_STEPS} steps.` });
|
|
61
48
|
}
|
|
62
|
-
if ((draft.
|
|
49
|
+
if (Object.keys(draft.params ?? {}).length > WORKFLOW_MAX_PARAMS) {
|
|
63
50
|
errors.push({ line: 1, message: `Workflow must contain at most ${WORKFLOW_MAX_PARAMS} parameters.` });
|
|
64
51
|
}
|
|
65
52
|
for (const step of draft.steps) {
|
|
66
|
-
if (utf8Bytes(step.instructions.text) > WORKFLOW_MAX_INSTRUCTION_BYTES) {
|
|
53
|
+
if (step.instructions && utf8Bytes(step.instructions.text) > WORKFLOW_MAX_INSTRUCTION_BYTES) {
|
|
67
54
|
errors.push({
|
|
68
55
|
line: step.instructions.source.start,
|
|
69
56
|
message: `Step "${step.id}" instructions exceed the 256 KiB resource limit.`,
|
|
70
57
|
});
|
|
71
58
|
}
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
function checkFrontmatterKeys(data, fmEndLine, errors) {
|
|
75
|
-
for (const key of Object.keys(data)) {
|
|
76
|
-
if (ALLOWED_FRONTMATTER_KEYS.has(key))
|
|
77
|
-
continue;
|
|
78
|
-
errors.push({
|
|
79
|
-
line: fmEndLine,
|
|
80
|
-
message: `Workflow frontmatter "${key}" is not supported. Use only: description, tags, params, name, updated, when_to_use, xrefs.`,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
function checkStepIdFormat(draft, errors) {
|
|
85
|
-
for (const step of draft.steps) {
|
|
86
|
-
if (STEP_ID_REGEX.test(step.id))
|
|
87
|
-
continue;
|
|
88
|
-
errors.push({
|
|
89
|
-
line: step.source.start,
|
|
90
|
-
message: `Step ID "${step.id}" is invalid. Use letters, numbers, ".", "_" or "-" (e.g. "deploy-job").`,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function checkDuplicateStepIds(draft, errors) {
|
|
95
|
-
const firstSeenLine = new Map();
|
|
96
|
-
for (const step of draft.steps) {
|
|
97
|
-
const previous = firstSeenLine.get(step.id);
|
|
98
|
-
if (previous !== undefined) {
|
|
59
|
+
if (step.gateRubric && utf8Bytes(step.gateRubric.text) > WORKFLOW_MAX_INSTRUCTION_BYTES) {
|
|
99
60
|
errors.push({
|
|
100
|
-
line: step.source.start,
|
|
101
|
-
message: `Step
|
|
61
|
+
line: step.gateRubric.source.start,
|
|
62
|
+
message: `Step "${step.id}" gate rubric exceeds the 256 KiB resource limit.`,
|
|
102
63
|
});
|
|
103
|
-
continue;
|
|
104
64
|
}
|
|
105
|
-
firstSeenLine.set(step.id, step.source.start);
|
|
106
65
|
}
|
|
107
66
|
}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Documentation
|
|
2
|
+
|
|
3
|
+
Each subdirectory has its own README indexing everything inside it.
|
|
4
|
+
|
|
5
|
+
## [Guides](https://github.com/itlackey/akm/blob/main/docs/guides/README.md)
|
|
6
|
+
|
|
7
|
+
Task-oriented guides for using akm.
|
|
8
|
+
|
|
9
|
+
- [Getting Started](https://github.com/itlackey/akm/blob/main/docs/guides/getting-started.md) -- Quick setup guide
|
|
10
|
+
- [Concepts](https://github.com/itlackey/akm/blob/main/docs/guides/concepts.md) -- Bundles, adapters, asset types, and refs
|
|
11
|
+
- [Stash Maker's Guide](https://github.com/itlackey/akm/blob/main/docs/guides/stash-makers.md) -- Build and share a stash on GitHub, npm, or a network directory
|
|
12
|
+
- [Wikis](https://github.com/itlackey/akm/blob/main/docs/guides/wikis.md) -- Multi-wiki knowledge bases (Karpathy-style)
|
|
13
|
+
- [Local Development](https://github.com/itlackey/akm/blob/main/docs/guides/local-development.md) -- Dogfooding akm while editing its own source
|
|
14
|
+
- [Claude Code workflows vs. akm workflows](https://github.com/itlackey/akm/blob/main/docs/guides/claude-code-vs-akm-workflows.md) -- Comparing the two things that share a name
|
|
15
|
+
- Command tours: [search & discovery](https://github.com/itlackey/akm/blob/main/docs/guides/search-discovery.md), [sources & registries](https://github.com/itlackey/akm/blob/main/docs/guides/sources-registries.md), [knowledge management](https://github.com/itlackey/akm/blob/main/docs/guides/knowledge-management.md), [the improvement loop](https://github.com/itlackey/akm/blob/main/docs/guides/improvement-loop.md), [agent integration](https://github.com/itlackey/akm/blob/main/docs/guides/agent-integration.md)
|
|
16
|
+
|
|
17
|
+
## [Reference](reference/README.md)
|
|
18
|
+
|
|
19
|
+
- [CLI](reference/cli.md) -- All `akm` commands and flags
|
|
20
|
+
- [Configuration](reference/configuration.md) -- Engines, strategies, bundles, and settings
|
|
21
|
+
- [Workflows](reference/workflows.md) -- Unified Markdown workflow schema, run state, and native orchestration engine
|
|
22
|
+
- [Wiki Snapshot Fetchers](https://github.com/itlackey/akm/blob/main/docs/reference/wiki-snapshot-fetchers.md) -- The pluggable fetcher API for URL-based knowledge reads
|
|
23
|
+
- [Registry](https://github.com/itlackey/akm/blob/main/docs/reference/registry.md) -- Registries, search, hosting, and managing sources
|
|
24
|
+
- [Data & Telemetry](reference/data-and-telemetry.md) -- Exactly what akm reads and writes on your machine (no remote telemetry)
|
|
25
|
+
- [akm-eval](https://github.com/itlackey/akm/blob/main/docs/reference/akm-eval.md) -- Standalone toolkit for measuring whether `akm improve` is working
|
|
26
|
+
- [Roadmap](https://github.com/itlackey/akm/blob/main/docs/reference/roadmap.md) -- High-level focus for the 0.9 and 1.0 releases
|
|
27
|
+
|
|
28
|
+
## [Agents](https://github.com/itlackey/akm/blob/main/docs/agents/README.md)
|
|
29
|
+
|
|
30
|
+
- `akm help agents` (short guide by default; `akm help agents --full` for the complete guide) -- The CLI reference agents load to use akm; always the embedded corpus at `src/assets/hints/cli-hints-{full,short}.md`
|
|
31
|
+
- [Agent Install Guide](https://github.com/itlackey/akm/blob/main/docs/agents/agent-install.md) -- Step-by-step automated install for agents
|
|
32
|
+
- [Curate Workmap](https://github.com/itlackey/akm/blob/main/docs/agents/curate-workmap.md) -- Read before changing `akm curate` ranking or output
|
|
33
|
+
|
|
34
|
+
## [Architecture](https://github.com/itlackey/akm/blob/main/docs/architecture/README.md)
|
|
35
|
+
|
|
36
|
+
System overview, normative specs, decision history, and subsystem internals.
|
|
37
|
+
|
|
38
|
+
- [Architecture](https://github.com/itlackey/akm/blob/main/docs/architecture/architecture.md) -- How akm's bundles, cache, index, and registries fit together
|
|
39
|
+
- [Core Principles](https://github.com/itlackey/akm/blob/main/docs/architecture/akm-core-principles.md) -- Design principles and constraints
|
|
40
|
+
- [Specs](https://github.com/itlackey/akm/blob/main/docs/architecture/README.md#specs-specs) -- Normative specifications (bundle/adapter model, ref grammar, stash conventions)
|
|
41
|
+
- [Internals](https://github.com/itlackey/akm/blob/main/docs/architecture/README.md#internals-internals) -- Current-truth subsystem references (storage, search, indexing, improve, health)
|
|
42
|
+
- [Testing](https://github.com/itlackey/akm/blob/main/docs/architecture/README.md#testing-testing) -- Testing workflow and pre-release checklist
|
|
43
|
+
|
|
44
|
+
## [Migration](migration/README.md)
|
|
45
|
+
|
|
46
|
+
- [v0.8 -> v0.9 migration guide](migration/v0.8-to-v0.9.md) -- Current-cycle breaking changes
|
|
47
|
+
- [Release notes](migration/release-notes/) -- The short per-release notes `akm help migrate <version>` prints
|
|
48
|
+
|
|
49
|
+
## [Posts](https://github.com/itlackey/akm/blob/main/docs/posts/README.md)
|
|
50
|
+
|
|
51
|
+
Source articles for the dev.to publishing pipeline (historical record).
|
|
52
|
+
|
|
53
|
+
## Official Ecosystem Repositories
|
|
54
|
+
|
|
55
|
+
- [itlackey/akm-stash](https://github.com/itlackey/akm-stash) -- the official onboarding stash with ready-made assets you can install with `akm bundle add`
|
|
56
|
+
- [itlackey/akm-registry](https://github.com/itlackey/akm-registry) -- the official registry index that powers built-in discovery
|
|
57
|
+
- [itlackey/akm-plugins](https://github.com/itlackey/akm-plugins) -- optional integrations for tools like OpenCode
|
|
58
|
+
- [itlackey/akm-bench](https://github.com/itlackey/akm-bench) -- the standalone benchmark and evaluation repo for akm
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
New docs, in five lines: keep one current-truth doc per subsystem, don't fork a
|
|
63
|
+
second one. Planning, review, and analysis material lives in the untracked
|
|
64
|
+
`.plans/` directory, never under `docs/` -- promote conclusions into the
|
|
65
|
+
current-truth doc or drop them. Normative specs live in
|
|
66
|
+
`docs/architecture/specs/`. Cite code by symbol and memories by search-terms --
|
|
67
|
+
not line numbers or exact refs, both rot. Nothing in `docs/` may reference
|
|
68
|
+
`.plans/`.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Migration
|
|
2
|
+
|
|
3
|
+
Upgrade guides and per-release migration notes.
|
|
4
|
+
|
|
5
|
+
- [v0.8 -> v0.9 migration guide](v0.8-to-v0.9.md) -- Current-cycle breaking changes
|
|
6
|
+
- [v0.7 -> v0.8 migration guide](v0.7-to-v0.8.md) -- Task schema and 0.8-era changes
|
|
7
|
+
- [v0.5 -> v0.6 migration guide](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md) -- Terminology cut, registry schema v3, publisher changes
|
|
8
|
+
- [Release notes](release-notes/) -- The short per-release notes `akm help migrate <version>` prints (bundled with the npm package)
|
|
@@ -8,12 +8,12 @@ landed via PR #275.
|
|
|
8
8
|
|
|
9
9
|
The CLI surface, configuration schema, provider interfaces, and ref
|
|
10
10
|
grammar continue to match the v1 architecture spec
|
|
11
|
-
([`docs/technical/v1-architecture-spec.md`](
|
|
11
|
+
([`docs/technical/v1-architecture-spec.md`](https://github.com/itlackey/akm/blob/v0.7.0/docs/technical/v1-architecture-spec.md)).
|
|
12
12
|
0.7.0 commits to maintaining those surfaces through the 0.8.x / 0.9.x
|
|
13
13
|
pre-releases — the formal freeze itself happens at 1.0 GA.
|
|
14
14
|
|
|
15
15
|
If you are coming from 0.6.x, the
|
|
16
|
-
[archived pre-1.0 migration plan](
|
|
16
|
+
[archived pre-1.0 migration plan](https://github.com/itlackey/akm/blob/be3a6a632b0cbe7a63ce71b7d093d8ac266e857c/docs/archive/pre-1.0-migration.md) covers the historical per-surface delta and is the
|
|
17
17
|
canonical upgrade reference. This file is the executive summary of
|
|
18
18
|
what's new in 0.7.0.
|
|
19
19
|
|
|
@@ -55,9 +55,9 @@ writable source. See the archived pre-1.0 migration spec §11 at
|
|
|
55
55
|
Three new commands produce proposals into the queue:
|
|
56
56
|
|
|
57
57
|
```sh
|
|
58
|
-
akm reflect [ref] [--task ...] # reflection proposals
|
|
59
|
-
akm propose <type> <name> --task "..." # generation proposals
|
|
60
|
-
akm distill <ref> # bounded LLM → `lesson` proposal
|
|
58
|
+
akm reflect [ref] [--task ...] # reflection proposals — doclint:ignore (0.7.0-era, folded into `akm improve` later)
|
|
59
|
+
akm propose <type> <name> --task "..." # generation proposals — doclint:ignore (0.7.0-era spelling; moved to `akm proposal new` in 0.9.0)
|
|
60
|
+
akm distill <ref> # bounded LLM → `lesson` proposal — doclint:ignore (0.7.0-era, folded into `akm improve` later)
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
`reflect` and `propose` shell out via the agent CLI (`agent.*` config,
|
|
@@ -131,7 +131,7 @@ Bench grows beyond the 0.6.x smoke run into a paired-utility framework:
|
|
|
131
131
|
workflow that lands in 0.8.
|
|
132
132
|
|
|
133
133
|
The bench technical reference lives in
|
|
134
|
-
[`docs/technical/benchmark.md`](
|
|
134
|
+
[`docs/technical/benchmark.md`](https://github.com/itlackey/akm/blob/v0.7.0/docs/technical/benchmark.md).
|
|
135
135
|
|
|
136
136
|
### Removed legacy fields
|
|
137
137
|
|
|
@@ -142,7 +142,7 @@ The bench technical reference lives in
|
|
|
142
142
|
- Earlier 0.7.x pre-release work (#220–#223) finalised the registry
|
|
143
143
|
curation surface removal, classification pipeline rewrites, and
|
|
144
144
|
error envelope shape that 0.7.0 ships. Operators upgrading from a
|
|
145
|
-
0.6.x baseline should read the [archived pre-1.0 plan](
|
|
145
|
+
0.6.x baseline should read the [archived pre-1.0 plan](https://github.com/itlackey/akm/blob/be3a6a632b0cbe7a63ce71b7d093d8ac266e857c/docs/archive/pre-1.0-migration.md) for
|
|
146
146
|
the per-surface migration recipe.
|
|
147
147
|
|
|
148
148
|
### CLI surface as of 0.7.0
|
|
@@ -251,17 +251,17 @@ If you want to use the new surfaces:
|
|
|
251
251
|
akm setup # detects installed agent CLIs;
|
|
252
252
|
# persists `agent.default`
|
|
253
253
|
akm config set llm.features.feedback_distillation true
|
|
254
|
-
akm distill memory:my-debugging-notes # produces a lesson proposal
|
|
254
|
+
akm distill memory:my-debugging-notes # produces a lesson proposal — doclint:ignore (0.7.0-era command + ref grammar, folded into `akm improve` / bundle refs later)
|
|
255
255
|
akm proposal list
|
|
256
256
|
akm proposal accept <id>
|
|
257
257
|
```
|
|
258
258
|
|
|
259
259
|
## Full migration guides
|
|
260
260
|
|
|
261
|
-
- [Archived pre-1.0 migration plan](
|
|
261
|
+
- [Archived pre-1.0 migration plan](https://github.com/itlackey/akm/blob/be3a6a632b0cbe7a63ce71b7d093d8ac266e857c/docs/archive/pre-1.0-migration.md) — per-surface delta from any 0.6.x
|
|
262
262
|
baseline. The canonical reference for upgrading.
|
|
263
|
-
- [v0.5 → v0.6](
|
|
263
|
+
- [v0.5 → v0.6](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md) — the older terminology cut and
|
|
264
264
|
registry schema v3.
|
|
265
|
-
- [v1 architecture spec](
|
|
265
|
+
- [v1 architecture spec](https://github.com/itlackey/akm/blob/be3a6a632b0cbe7a63ce71b7d093d8ac266e857c/docs/archive/v1-architecture-spec.md) —
|
|
266
266
|
the architecture contract that 0.7.0 commits to maintain through
|
|
267
267
|
1.0 GA.
|
|
@@ -13,28 +13,71 @@ and minor releases. See STABILITY.md for the full policy.
|
|
|
13
13
|
|
|
14
14
|
Key operator-facing changes:
|
|
15
15
|
|
|
16
|
-
- **This release is the format-neutral bundle-adapter refactor
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
- **This release is the format-neutral bundle-adapter refactor — for
|
|
17
|
+
recognition, indexing, presentation, and validation.** The flat asset-type
|
|
18
|
+
registry is replaced by per-format adapters that decide what a file *is*
|
|
19
|
+
(11 adapters behind a static registry), how it is indexed and shown, and
|
|
20
|
+
how it validates. Refs move from the old `type:name` grammar to
|
|
21
|
+
`[bundle//]conceptId` — a subdir-qualified concept id such as
|
|
22
|
+
`skills/code-review`, `memories/vpn-note`, or `env/prod`, with an optional
|
|
23
|
+
`bundle//` installation prefix and an optional `#fragment`. Durable state
|
|
24
|
+
is stored fully-qualified; the short bundle-omitted form is input sugar
|
|
22
25
|
(resolved against `defaultBundle`, then installation-priority order).
|
|
23
|
-
`akm migrate apply` re-keys all durable state, folds the former
|
|
24
|
-
into `state.db` (three databases: `state.db` /
|
|
25
|
-
`logs.db`, down from four
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
`akm migrate apply` re-keys all durable state, folds the former
|
|
27
|
+
`workflow.db` into `state.db` (three tracked databases: `state.db` /
|
|
28
|
+
`index.db` / a separate `logs.db`, down from four — `logs.db` itself sits
|
|
29
|
+
outside migration control entirely, see
|
|
30
|
+
[the migration guide](../v0.8-to-v0.9.md#what-migration-control-does-not-cover)),
|
|
31
|
+
and migrates config from the flat `stashDir` / `sources` / `installed` /
|
|
32
|
+
`wikiName` keys to `bundles` / `defaultBundle`. In AKM stashes, `index.md` /
|
|
33
|
+
`log.md` are reserved structural files — never indexed as items and never
|
|
34
|
+
valid item-write targets. Other bundle formats use their adapter's own
|
|
35
|
+
structural-file rules.
|
|
36
|
+
**What this refactor does not (yet) touch: placement.**
|
|
37
|
+
`adapter.placeNew()` is defined on the interface
|
|
38
|
+
(`src/core/adapter/bundle-adapter.ts`) as an optional capability method and
|
|
39
|
+
already implemented by 8 of the built-in adapters, but nothing in the write
|
|
40
|
+
path calls it in 0.9.0 — writes still route through AKM's native flat
|
|
41
|
+
type→directory placement table (`stashDirFor` in
|
|
42
|
+
`src/core/asset/asset-placement.ts`). That wiring is deferred to 0.10 as
|
|
43
|
+
its own change (see
|
|
44
|
+
[STABILITY.md](../../../STABILITY.md#on-the-horizon) and
|
|
45
|
+
[D12](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/0.9.0-decisions.md#d12--bundleadapterplacenew-stays-unwired-until-010));
|
|
46
|
+
placement is already correct for every existing bundle today, this only
|
|
47
|
+
changes which code computes it. `adapter.validate()`, by contrast, is a
|
|
48
|
+
REQUIRED interface member and each adapter owns its own checks in 0.9.0:
|
|
49
|
+
`akm lint` dispatches to the bundle's own adapter rather than
|
|
50
|
+
re-implementing its rules. One caveat worth knowing: the proposal
|
|
51
|
+
pre-commit path also runs `validate()`, but **advisory only** — it reports
|
|
52
|
+
findings via a warning and does not reject the write. Making it blocking
|
|
53
|
+
needs the adapter and legacy ref resolvers reconciled first, so a proposal
|
|
54
|
+
that trips an adapter diagnostic still applies in 0.9.0.
|
|
55
|
+
The adapter layer's `index()`/`affectedItems()` capability hooks also have
|
|
56
|
+
no implementors yet — every 0.9.0 adapter is scanned through the shared
|
|
57
|
+
core walk. None of this blocks normal use; it means "adapter-driven" in
|
|
58
|
+
this release now covers reading and validating a bundle, but not yet
|
|
59
|
+
writing to one.
|
|
29
60
|
- **Installed non-akm bundles reclassify on your next `akm index`.** The
|
|
30
61
|
indexer now dispatches each installed bundle's *detected* adapter instead of
|
|
31
62
|
recognizing everything with the akm-stash adapter. No action needed — the
|
|
32
63
|
index is a regenerable cache — but searches/saved refs into those bundles may
|
|
33
64
|
resolve to new ref spellings afterwards.
|
|
65
|
+
- **OKF and llm-wiki are both consumer/read-only in 0.9.0.** Arbitrary OKF
|
|
66
|
+
`type` values remain searchable and showable with heading fragments, while
|
|
67
|
+
the selected adapter decides which types receive specialized behavior.
|
|
68
|
+
AKM-authored Markdown now emits its native `type` field and remains
|
|
69
|
+
OKF-compatible; commands, scripts, workflows, tasks, environments, and
|
|
70
|
+
secrets retain AKM's progressively enhanced native handling. Both the `okf`
|
|
71
|
+
adapter and the `llm-wiki` adapter are consumer-only in 0.9.0 — AKM-native
|
|
72
|
+
write commands (`akm remember`, `akm import`, proposal-accept, …) reject
|
|
73
|
+
OKF **and llm-wiki** targets before modifying them. Author llm-wiki `pages/`
|
|
74
|
+
content the way the Karpathy pattern always intended: your agent writes the
|
|
75
|
+
files directly, and akm indexes and serves the result.
|
|
34
76
|
- The published npm package requires Node.js >= 22 as its cross-platform
|
|
35
|
-
bootstrap.
|
|
36
|
-
|
|
37
|
-
|
|
77
|
+
bootstrap. The `akm` launcher prefers a working Bun >= 1.0 and otherwise
|
|
78
|
+
falls back to Node.js; `akm-migrate` follows the same model, with Bun optional
|
|
79
|
+
and preferred.
|
|
80
|
+
The standalone binaries are runtime-free.
|
|
38
81
|
- The legacy `vault` asset type and `akm vault ...` command family are gone.
|
|
39
82
|
Use `env/<name>` for whole `.env` groups and `secrets/<name>` for a single
|
|
40
83
|
sensitive value.
|
|
@@ -42,12 +85,15 @@ Key operator-facing changes:
|
|
|
42
85
|
pushes, and `akm events` is replaced by `akm log`.
|
|
43
86
|
- The entire `akm wiki ...` command family and the `wiki` asset type are gone.
|
|
44
87
|
The Karpathy-style LLM wiki structure (`schema.md` + `pages/`) is now a
|
|
45
|
-
first-class **bundle format** recognized directly by `akm
|
|
46
|
-
search`/`akm
|
|
47
|
-
|
|
88
|
+
first-class **bundle format** recognized and indexed directly by `akm
|
|
89
|
+
index`/`akm search`/`akm show` — no dedicated verb surface needed. `akm
|
|
90
|
+
lint` still runs, now dispatching to the adapter's own wiki-shaped checks
|
|
91
|
+
through `validate()` (see above); it is a read surface in 0.9.0, not a
|
|
92
|
+
write target — placement isn't wired to the adapter until 0.10.
|
|
93
|
+
- `akm-migrate storage` performs the non-destructive
|
|
48
94
|
`vaults/` -> `env/` copy for older stashes. Run it before indexing if you are
|
|
49
95
|
upgrading from a stash that still stores `.env` files only under `vaults/`.
|
|
50
|
-
- Proposal workflow is fully consolidated around `akm improve`, `akm
|
|
96
|
+
- Proposal workflow is fully consolidated around `akm improve`, `akm proposal new`,
|
|
51
97
|
and `akm proposal ...`. Update any old `akm reflect`, `akm distill`,
|
|
52
98
|
`akm accept`, `akm reject`, or `akm proposals` usage.
|
|
53
99
|
- LLM-backed sustaining work is opt-in in the shipped presets: improve-stage
|
|
@@ -59,17 +105,83 @@ Key operator-facing changes:
|
|
|
59
105
|
- Config, `state.db`, and `workflow.db` are now classified independently by the
|
|
60
106
|
explicit `akm migrate` coordinator. Normal commands refuse old, future, or
|
|
61
107
|
divergent durable schemas instead of attempting migration as a side effect.
|
|
108
|
+
- **`akm-migrate` derives the 0.9 config from your 0.8 keys** instead of
|
|
109
|
+
demanding a hand-authored one: the first `apply` with no `--config` writes a
|
|
110
|
+
validated starter config under the backup root and stops; a second `apply`
|
|
111
|
+
performs the cutover. Engine settings are never guessed — they are reported
|
|
112
|
+
in `droppedKeys` for you to re-add. Fresh 0.8 installs (whose configs carry
|
|
113
|
+
no `configVersion` key) now classify as `old` instead of being blocked, and
|
|
114
|
+
`migrate` reports `not-applicable` (exit 0) when there is nothing to migrate.
|
|
115
|
+
- **The experimental `akm workflow brief` / `akm workflow report`
|
|
116
|
+
external-driver protocol is removed.** `akm workflow run` is the single
|
|
117
|
+
execution surface. A legacy `experimental.workflowEngine` config key is
|
|
118
|
+
accepted and ignored; scripts calling `brief`/`report` must move to `run`.
|
|
119
|
+
- **Engine-less installs fall back to `opencode-sdk`** for `workflow run`,
|
|
120
|
+
prompt tasks, `akm agent`, `propose`, and `improve` reflect — when the
|
|
121
|
+
`opencode` binary is on PATH, akm synthesizes a config-free engine that
|
|
122
|
+
resolves provider, model, and auth from opencode's own configuration
|
|
123
|
+
instead of failing closed with exit 78. The fallback is always announced
|
|
124
|
+
(result `warnings`, task run log, or stderr). An operator-configured
|
|
125
|
+
engine always wins.
|
|
126
|
+
- **RSS, Bluesky, and X URLs are recognized by `akm bundle add`** and
|
|
127
|
+
snapshotted as knowledge assets instead of being crawled as ordinary web
|
|
128
|
+
pages. X needs `X_BEARER_TOKEN` (or `X_RSS_TEMPLATE`); store it as an akm
|
|
129
|
+
secret and inject it per-invocation with `akm secret run`. Website crawls
|
|
130
|
+
now respect `robots.txt` by default (`"respectRobots": false` opts out),
|
|
131
|
+
have a hard `crawlTimeoutMs` cap, and extract the page's main content —
|
|
132
|
+
existing website snapshots will get shorter and cleaner on their next
|
|
133
|
+
refresh.
|
|
62
134
|
|
|
63
135
|
Primary public command family for 0.9.0:
|
|
64
136
|
|
|
65
137
|
- `akm improve <ref> [--task "..."]`
|
|
66
|
-
- `akm
|
|
138
|
+
- `akm proposal new <type> <name> (--task "..." | --file <path>)`
|
|
67
139
|
- `akm proposal list`
|
|
68
140
|
- `akm proposal show <id>`
|
|
69
141
|
- `akm proposal diff <id>`
|
|
70
142
|
- `akm proposal accept <id>`
|
|
71
143
|
- `akm proposal reject <id> --reason "..."`
|
|
72
144
|
|
|
145
|
+
## Release validation
|
|
146
|
+
|
|
147
|
+
> Unit/integration test counts below are point-in-time snapshots from the
|
|
148
|
+
> validation passes named next to each figure, not a promise about the count
|
|
149
|
+
> on any later commit — the suite keeps growing after each pass. Run
|
|
150
|
+
> `bun run check` yourself for the current count; do not treat a number below
|
|
151
|
+
> as still accurate.
|
|
152
|
+
|
|
153
|
+
Release validation was repeated on 2026-07-31. An isolated manual pass covered
|
|
154
|
+
114 first-run, CLI, indexing, search/show, output-format, strict-flag,
|
|
155
|
+
tools-only agent classification, multi-bundle write/lint, workflow, task,
|
|
156
|
+
llm-wiki, env/secret, feedback/log, config/migration, health, upgrade, and
|
|
157
|
+
registry checks with no failures. `bun run release:check`, as run on
|
|
158
|
+
2026-07-31, verified the packed npm installation, Node fallback and Bun
|
|
159
|
+
launcher paths, migration and task execution from published 0.8.14, the Linux
|
|
160
|
+
standalone scheduler artifact, its then-current unit/integration test counts,
|
|
161
|
+
and all seven Docker install targets. The gated semantic-search suite passed
|
|
162
|
+
9 tests; Node 24 passed all 9 fallback smoke steps and 25 compatibility tests.
|
|
163
|
+
|
|
164
|
+
The post-release checklist audit added a separate 125-check deterministic pass
|
|
165
|
+
for cross-bundle identity, write fidelity, output destinations, lint/task
|
|
166
|
+
behavior, env secrecy, durable log cursors, workflow transitions, proposal
|
|
167
|
+
dry-runs, setup recovery, fresh health initialization, and source-install
|
|
168
|
+
safety. It passed 125/125 on Linux. The branch as of that same pass also
|
|
169
|
+
passed `bun run check` and `bun run build`.
|
|
170
|
+
|
|
171
|
+
A container-isolated follow-up passed 188 destructive crash/recovery checks,
|
|
172
|
+
including real `SIGKILL` windows across proposal, workflow, and lock journals,
|
|
173
|
+
plus deterministic interruption replay across phase-free migration sentinels.
|
|
174
|
+
The container also passed `release:check --skip-docker`, the seven-image
|
|
175
|
+
Docker install matrix, 9 semantic-search tests, all 9 Node 22 smoke steps, all
|
|
176
|
+
25 Node compatibility tests, and the offline full gate. This pass exposed and
|
|
177
|
+
fixed host-scheduler and co-located Node/Bun assumptions in three tests; no
|
|
178
|
+
production behavior changed.
|
|
179
|
+
|
|
180
|
+
Live credential-backed agent/LLM calls and native macOS/Windows execution were
|
|
181
|
+
not run from this Linux host. Their deterministic paths remain covered by the
|
|
182
|
+
full unit/integration suite; release artifacts still require their normal
|
|
183
|
+
platform CI/release checks.
|
|
184
|
+
|
|
73
185
|
Required upgrade checks:
|
|
74
186
|
|
|
75
187
|
- Before crossing from 0.8 to 0.9, create an independent filesystem backup and
|
|
@@ -81,20 +193,89 @@ Required upgrade checks:
|
|
|
81
193
|
the target.
|
|
82
194
|
- Do not continue when status reports `blocked`. Preserve the reported backup
|
|
83
195
|
run and resolve the named artifact or active-operation error first.
|
|
84
|
-
- Restore is explicit and destructive: `akm
|
|
196
|
+
- Restore is explicit and destructive: `akm-migrate restore --for 0.9.0 --run
|
|
85
197
|
<backup-run-id> --confirm`. It creates and verifies a rescue backup before
|
|
86
198
|
replacing current artifacts.
|
|
87
199
|
- Run `akm help migrate 0.9.0` for the storage and command-surface checklist.
|
|
88
|
-
- Run `akm-migrate
|
|
200
|
+
- Run `akm-migrate storage --yes` once if the stash ever used `vaults/`.
|
|
89
201
|
- Rebuild derived search data with `akm index` only after migration status is
|
|
90
202
|
`current`; indexing does not migrate config or durable schemas.
|
|
91
203
|
- Review agent instructions and docs for old `vault`, `reflect`, and `distill`
|
|
92
204
|
examples.
|
|
93
205
|
- Review scheduled improve invocations if they relied on inherited extract or
|
|
94
|
-
proactive-maintenance enablement. Standalone extraction remains available
|
|
95
|
-
but every
|
|
96
|
-
|
|
97
|
-
`akm extract --auto` for all-harness
|
|
98
|
-
an unselected opt-in and now uses
|
|
206
|
+
proactive-maintenance enablement. Standalone extraction remains available
|
|
207
|
+
as `akm proposal extract`, but every invocation must select
|
|
208
|
+
`--type <harness>` or `--auto`; a bare invocation is invalid. Update any
|
|
209
|
+
installed extract task to `akm proposal extract --auto` for all-harness
|
|
210
|
+
discovery. The bundled template remains an unselected opt-in and now uses
|
|
211
|
+
that valid command.
|
|
212
|
+
|
|
213
|
+
## 0.9.0 command-surface overhaul (hard break, no aliases)
|
|
214
|
+
|
|
215
|
+
The 0.9.0 CLI surface was restructured in full. Known retired spellings fail
|
|
216
|
+
with `UNKNOWN_COMMAND` and a replacement hint. Update assets,
|
|
217
|
+
scripts, task YAML, prompts, and agent instructions (CLAUDE.md quick
|
|
218
|
+
references) using this table, then run `akm task sync --rebind` once so
|
|
219
|
+
installed schedules re-emit the new spellings. `akm hints` prints the complete
|
|
220
|
+
agent guide (`--detail brief` selects the compact version), while `akm help
|
|
221
|
+
agents` is short by default; the root `akm --help` groups the surviving surface
|
|
222
|
+
into AGENT LOOP / ASSETS / AUTOMATION / SYSTEM sections, including `migrate`
|
|
223
|
+
under SYSTEM. For migration usage details rather than the bare `--help`
|
|
224
|
+
listing, see [the migration guide](../v0.8-to-v0.9.md).
|
|
225
|
+
|
|
226
|
+
Command renames and moves:
|
|
227
|
+
|
|
228
|
+
| Old spelling | 0.9.0 replacement |
|
|
229
|
+
| --- | --- |
|
|
230
|
+
| `akm init` | `akm bundle create` |
|
|
231
|
+
| `akm add <source>` | `akm bundle add <source>` |
|
|
232
|
+
| `akm list` | `akm bundle list` |
|
|
233
|
+
| `akm remove <source>` | `akm bundle remove <source>` |
|
|
234
|
+
| `akm update` | `akm bundle update` (self-update stays `akm upgrade`) |
|
|
235
|
+
| `akm tasks <sub>` | `akm task add\|run\|sync\|doctor\|history` (singular; `list`, `show`, `remove`, `init`, `enable`, and `disable` are removed) |
|
|
236
|
+
| `akm extract` | `akm proposal extract` |
|
|
237
|
+
| `akm propose` | `akm proposal new` |
|
|
238
|
+
| `akm log list` | `akm log` (now a single command) |
|
|
239
|
+
| `akm registry search <q>` | `akm search <q> --from registry` |
|
|
240
|
+
| `akm workflow template` | `akm workflow create --print` |
|
|
241
|
+
| `akm workflow validate` | `akm lint --type workflows` (add `--fail-on-flagged` to keep CI-gate exit semantics) |
|
|
242
|
+
| `akm config show` | `akm config list` |
|
|
243
|
+
|
|
244
|
+
Removed outright (with the supported replacement procedure):
|
|
245
|
+
|
|
246
|
+
| Removed | Use instead |
|
|
247
|
+
| --- | --- |
|
|
248
|
+
| `akm history` | `akm log --ref <ref>` |
|
|
249
|
+
| `akm graph` (all subcommands) | counts in `akm health`; refresh via `akm improve --strategy graph-refresh` |
|
|
250
|
+
| `akm lessons coverage` / `strength` | lesson strength is indexed; `akm search --type lesson` |
|
|
251
|
+
| `akm mv` | move the file, then `akm index` + `akm lint`; optional `bun scripts/rekey-asset-ref.ts <old-ref> <new-ref>` (source checkout) carries ranking signal |
|
|
252
|
+
| `akm log tail` | poll `akm log --since @offset:<id>` (durable cursor) |
|
|
253
|
+
| `akm workflow watch` | `akm log --run <run-id>` |
|
|
254
|
+
| `akm env set` / `env unset` | edit the `.env` file directly; akm loads it as-is |
|
|
255
|
+
| `akm config validate` | config is validated on every load |
|
|
256
|
+
| `akm task enable` / `disable` | edit `enabled:` in the task YAML, then `akm task sync` |
|
|
257
|
+
| `akm task init` | `akm setup` seeds the default schedules |
|
|
258
|
+
| `akm improve canary` | `bun scripts/refresh-canary-set.ts [--refresh]` (from a source checkout — helper scripts are not shipped in the npm package) |
|
|
259
|
+
| `akm registry build-index` | `bun scripts/build-registry-index.ts` (maintainer tooling) |
|
|
260
|
+
| `akm index --background` | removed (the flag never backgrounded; use `--quiet`) |
|
|
261
|
+
| `akm setup --detect-only` / `--reset-recommended` | removed; environment detection runs inside `akm setup`, and `akm info` reports the *configured* capabilities |
|
|
262
|
+
| `extract --watch` / `--debounce-ms` | schedule `akm proposal extract --auto` as a task |
|
|
263
|
+
|
|
264
|
+
Flag and value renames:
|
|
265
|
+
|
|
266
|
+
| Old | New |
|
|
267
|
+
| --- | --- |
|
|
268
|
+
| `search`/`curate` `--source stash\|registry\|both` | `--from local\|registry\|all` |
|
|
269
|
+
| `remember`/`clone`/`improve`/the `task` group `--target <bundle>` | `--bundle <bundle>` (`import`, `proposal accept`, `env create`, `env remove`, `secret set` keep `--target`) |
|
|
270
|
+
|
|
271
|
+
Environment and JSON-payload renames ("stash" is retired; the noun is
|
|
272
|
+
"bundle" everywhere):
|
|
273
|
+
|
|
274
|
+
| Old | New |
|
|
275
|
+
| --- | --- |
|
|
276
|
+
| `AKM_STASH_DIR` | `AKM_BUNDLE_DIR` |
|
|
277
|
+
| `akm info` field `stashDir` | `bundleDir` |
|
|
278
|
+
| `akm config path --all` key `stash` | `bundle` |
|
|
279
|
+
| `bundle create` result `defaultStashUpdated` / `previousStashDir` | `defaultBundleUpdated` / `previousBundleDir` |
|
|
99
280
|
|
|
100
281
|
Full changelog: https://github.com/itlackey/akm/blob/main/CHANGELOG.md
|