akm-cli 0.9.0-rc.9 → 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 +95 -55
- 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 +25 -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 +88 -7
- 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 -1878
- 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 -1231
- 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 -257
- package/dist/migrate/legacy/content-migration.js +0 -350
- 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 -80
- package/dist/migrate/legacy/proposal-fs-import.js +0 -168
- package/dist/migrate/legacy/task-target-ref-migration.js +0 -278
- package/dist/migrate/legacy/three-db-cutover.js +0 -845
- package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
- package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
- package/dist/migrate/legacy-ref-grammar.js +0 -214
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/registry/build-index.js +0 -382
- package/dist/schemas/akm-config.json +0 -4704
- package/dist/schemas/akm-task.json +0 -87
- package/dist/schemas/akm-workflow.json +0 -372
- package/dist/scripts/migrate-storage.js +0 -3816
- package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
- package/dist/workflows/cli.js +0 -53
- package/dist/workflows/exec/brief.js +0 -481
- package/dist/workflows/exec/report.js +0 -1460
- package/dist/workflows/exec/watch.js +0 -116
- package/dist/workflows/program/parser.js +0 -813
- package/dist/workflows/program/project.js +0 -104
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# akm CLI
|
|
2
2
|
|
|
3
|
-
You have access to a searchable library of scripts, skills, commands, agents, knowledge documents, workflows, and memories via `akm`. Search your sources first before writing something from scratch.
|
|
3
|
+
You have access to a searchable library of scripts, skills, commands, agents, knowledge documents, workflows, env files, secrets, lessons, and memories via `akm`. Search your sources first before writing something from scratch.
|
|
4
4
|
|
|
5
5
|
## Agent Task Loop
|
|
6
6
|
|
|
@@ -8,15 +8,15 @@ For any task, follow this loop:
|
|
|
8
8
|
1. `akm curate "<task>"` — find the best matching asset
|
|
9
9
|
2. `akm show <ref>` — read the schema (field names and structure)
|
|
10
10
|
3. Edit the workspace file using schema field names + task-specific values from your README
|
|
11
|
-
4. `akm feedback <ref> --positive` — record success
|
|
11
|
+
4. `akm feedback <ref> --positive` — record success; use `--negative --reason "..."` when it fails
|
|
12
12
|
|
|
13
13
|
For workflow tasks:
|
|
14
|
-
1. `akm
|
|
15
|
-
2.
|
|
16
|
-
3. `akm workflow
|
|
14
|
+
1. `akm show workflows/<name>` — inspect the procedure before executing it
|
|
15
|
+
2. `akm workflow run workflows/<name> --param_name=value` — execute every step and verification gate
|
|
16
|
+
3. `akm workflow status <run-id> --units` — inspect a stopped or failed run
|
|
17
17
|
|
|
18
18
|
Workflow runs are scoped to your current project/worktree/directory. Ref-based
|
|
19
|
-
commands like `workflow
|
|
19
|
+
commands like `workflow run workflows/<name>`, `workflow status workflows/<name>`,
|
|
20
20
|
and `workflow list` operate within the current scope only.
|
|
21
21
|
|
|
22
22
|
## Quick Reference
|
|
@@ -25,27 +25,27 @@ and `workflow list` operate within the current scope only.
|
|
|
25
25
|
akm search "<query>" # Search all sources
|
|
26
26
|
akm curate "<task>" # Curate the best matches for a task
|
|
27
27
|
akm search "<query>" --type workflow # Filter to workflow assets
|
|
28
|
-
akm search "
|
|
29
|
-
akm search "<query>" --
|
|
28
|
+
akm search "memories/projectA/" # List a subtree (conceptId prefix; trailing slash required)
|
|
29
|
+
akm search "<query>" --from all # Also search registries
|
|
30
30
|
akm show <ref> # View asset details
|
|
31
|
-
akm
|
|
32
|
-
akm
|
|
33
|
-
akm remember "
|
|
31
|
+
akm help <command> # Show a command's options and subcommands
|
|
32
|
+
akm workflow run <ref> # Start or resume and execute a workflow
|
|
33
|
+
akm remember "Deployment needs VPN access" # Record a memory in your bundle
|
|
34
|
+
akm remember "note" --bundle my-bundle # Route write to a named writable bundle source
|
|
34
35
|
akm remember "note" --xref knowledge/auth-flow # Cite provenance in frontmatter xrefs (repeatable)
|
|
35
36
|
akm remember "fix" --supersedes memories/old-note # Write a correction AND demote the superseded asset
|
|
36
|
-
akm import ./notes/release-checklist.md # Import a knowledge doc into your
|
|
37
|
-
akm import ./doc.md --target my-
|
|
37
|
+
akm import ./notes/release-checklist.md # Import a knowledge doc into your bundle
|
|
38
|
+
akm import ./doc.md --target my-bundle # Route import to a named writable bundle source
|
|
38
39
|
akm proposal diff skills/akm-dream # Diff proposal by ref, UUID, or 8-char prefix
|
|
39
40
|
akm proposal accept 7c115132 # Accept by UUID prefix
|
|
40
41
|
akm proposal reject skills/my-skill --reason "..." # Reject by ref
|
|
41
42
|
akm feedback <ref> --positive|--negative # Record whether an asset helped
|
|
42
|
-
akm add <ref> # Add a source (npm, GitHub, git, local dir)
|
|
43
|
-
akm clone <ref> # Copy an asset to the working
|
|
44
|
-
akm
|
|
45
|
-
akm sync # Commit (and push if writable remote) changes in the primary stash (--no-push to commit only)
|
|
43
|
+
akm bundle add <ref> # Add a source (npm, GitHub, git, local dir)
|
|
44
|
+
akm clone <ref> # Copy an asset to the working bundle (optional --dest arg to clone to specific location)
|
|
45
|
+
akm sync # Commit (and push if writable remote) changes in the primary bundle (--no-push to commit only)
|
|
46
46
|
akm improve --no-sync # Run improve without the end-of-run auto-commit
|
|
47
47
|
akm improve --no-push # Auto-commit but skip push for this run
|
|
48
|
-
akm
|
|
48
|
+
akm search "<query>" --from registry # Search all registries (registry search was folded into search)
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
## Primary Asset Types
|
|
@@ -56,13 +56,76 @@ akm registry search "<query>" # Search all registries
|
|
|
56
56
|
| skill | Instructions to follow (read the full content) |
|
|
57
57
|
| command | A prompt template with placeholders to fill in |
|
|
58
58
|
| agent | A system prompt with model and tool hints |
|
|
59
|
-
| knowledge | A reference doc (
|
|
59
|
+
| knowledge | A reference doc (append `#<heading-slug>` to the ref to read one section) |
|
|
60
60
|
| workflow | Parsed steps plus workflow-specific execution commands |
|
|
61
61
|
| memory | Recalled context (read the content for background information) |
|
|
62
|
-
| env | A `.env` file of
|
|
63
|
-
| secret | A single sensitive value for AUTHENTICATION (token, key, cert); name only.
|
|
62
|
+
| env | A `.env` file of configuration an app loads together (many vars; sensitive or not — all protected); key names only. Inject with `akm env run <ref> -- <cmd>` (the agent-safe path — values stay on disk). |
|
|
63
|
+
| secret | A single sensitive value for AUTHENTICATION (token, key, cert); name only. Inject with `akm secret run <ref> <VAR> -- <cmd>`. |
|
|
64
|
+
| lesson | A distilled feedback lesson: `content` plus `action` (rendered from the `when_to_use` frontmatter). Read both before applying a related skill. Generated by the improve pipeline and promoted through the proposal queue. |
|
|
64
65
|
|
|
65
66
|
When an asset meaningfully helps or fails, record that with `akm feedback` so
|
|
66
67
|
future search ranking can learn from real usage.
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
## Error Shapes and Exit Codes
|
|
70
|
+
|
|
71
|
+
Every command returns JSON by default. On failure, the shape is always
|
|
72
|
+
emitted on **stderr** (stdout is normally left empty):
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{"ok": false, "error": "<message>", "code": "<optional machine-readable code>", "hint": "<optional remediation hint>"}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Exit codes:
|
|
79
|
+
|
|
80
|
+
| Code | Meaning |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| 0 | Success |
|
|
83
|
+
| 1 | Not found or command-reported failure |
|
|
84
|
+
| 2 | Usage / bad input |
|
|
85
|
+
| 4 | Health warning (`akm health` only) |
|
|
86
|
+
| 70 | Internal / unclassified error |
|
|
87
|
+
| 78 | Configuration error |
|
|
88
|
+
|
|
89
|
+
Check `ok === false` or a non-zero exit code to detect failure. The `hint`
|
|
90
|
+
field, when present, describes a corrective action. `search`/`curate`
|
|
91
|
+
success results also carry an additive `tip` field (a plain-text suggestion)
|
|
92
|
+
when the result set is empty.
|
|
93
|
+
|
|
94
|
+
`env run`, `secret run`, and `migrate` preserve the spawned process's exact
|
|
95
|
+
status. `task run` preserves configuration failures as exit 78; other failed
|
|
96
|
+
task results and failed `agent` dispatches map to exit 1 while retaining the
|
|
97
|
+
child status in their result envelope.
|
|
98
|
+
|
|
99
|
+
`akm lint` is the exception: it exits **0 on every successful run regardless
|
|
100
|
+
of findings**. Read `summary.flagged` to detect issues, or pass
|
|
101
|
+
`--fail-on-flagged` to opt into "exit 1 when findings exist":
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
akm lint | jq '.summary.flagged' # always exit 0; read the count
|
|
105
|
+
akm lint --fail-on-flagged && deploy # exit 1 if any flagged issues
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Proposals & improvement (0.8.0+)
|
|
109
|
+
|
|
110
|
+
`akm` ships a proposal queue so reflective edits, new asset drafts, and
|
|
111
|
+
feedback-distilled lessons land out-of-band before they touch the live
|
|
112
|
+
bundle. None of these commands mutate bundle content directly — they always
|
|
113
|
+
go through `akm proposal accept`.
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
akm improve <ref> # Produce an improvement proposal for an existing asset
|
|
117
|
+
akm improve <ref> --task "tighten the description"
|
|
118
|
+
akm proposal new <type> <name> --task "..." # Draft a new asset proposal from a description
|
|
119
|
+
akm proposal new lesson docker-cleanup --task "consolidate cleanup feedback"
|
|
120
|
+
akm proposal list # List pending proposals
|
|
121
|
+
akm proposal list --status pending|accepted|rejected|reverted
|
|
122
|
+
akm proposal show <id> # Render the proposal body
|
|
123
|
+
akm proposal diff <ref-or-id> # Diff by ref, UUID, or 8-char prefix
|
|
124
|
+
akm proposal accept 7c115132 # Accept by UUID prefix
|
|
125
|
+
akm proposal reject skills/my-skill --reason "not ready" # Reject by asset ref
|
|
126
|
+
akm search "<query>" --include-proposed # Surface proposal-queue entries in search
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Run `akm help <command>` for that command's options and subcommands. Run
|
|
130
|
+
`akm --help` for the command overview or `akm hints --detail full` for the
|
|
131
|
+
complete agent guide.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Standard improve pass — reflect, distill,
|
|
2
|
+
"description": "Standard improve pass — reflect, distill, advisory consolidation, graph extraction, and validation. Memory inference is listed below but only runs when experimental.improveAutonomy is set; improve-stage extract and proactive maintenance off.",
|
|
3
3
|
"processes": {
|
|
4
4
|
"reflect": {
|
|
5
5
|
"enabled": true,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"enabled": true,
|
|
6
6
|
"allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
|
|
7
7
|
},
|
|
8
|
-
"distill": { "enabled": true, "allowedTypes": ["memory"] },
|
|
8
|
+
"distill": { "enabled": true, "allowedTypes": ["memory"], "requirePlannedRefs": false },
|
|
9
9
|
"consolidate": { "enabled": false },
|
|
10
10
|
"memoryInference": { "enabled": true },
|
|
11
11
|
"graphExtraction": { "enabled": false },
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Compress the memory below into one derived memory. Output ONLY JSON:
|
|
2
|
-
|
|
3
|
-
Rules: be specific, no vague generalizations, preserve key facts (names/versions/paths/config keys verbatim), merge related points, 3-8 tags, 3-6 searchHints. The content field must be a plain string with 2-3 sentences.
|
|
1
|
+
Compress the memory below into one derived memory. Output ONLY a JSON object with exactly these fields: title, description, tags, searchHints, and content.
|
|
2
|
+
Rules: title must be specific and short; description must be one sentence; tags must contain 3-8 specific tags; searchHints must contain 3-6 useful retrieval phrases; content must be a plain string with 2-3 sentences. Avoid vague generalizations, preserve key facts (names/versions/paths/config keys verbatim), and merge related points. Never return field descriptions or placeholder values.
|
|
4
3
|
|
|
5
4
|
Memory:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AKM Stash
|
|
2
2
|
|
|
3
3
|
This is an **AKM stash** — a structured knowledge repository that stores reusable
|
|
4
|
-
assets for you and your AI agents. AKM (Agent Knowledge
|
|
4
|
+
assets for you and your AI agents. AKM (Agent Knowledge Manager) indexes, ranks,
|
|
5
5
|
and surfaces these assets at the right moment during coding sessions, improving
|
|
6
6
|
consistency and reducing repeated context-setting.
|
|
7
7
|
|
|
@@ -68,9 +68,10 @@ akm show knowledge/<name>
|
|
|
68
68
|
akm show memories/<name>
|
|
69
69
|
akm show commands/<name>
|
|
70
70
|
|
|
71
|
-
#
|
|
72
|
-
akm
|
|
73
|
-
akm
|
|
71
|
+
# Browse available assets by type (a trailing slash lists the subtree)
|
|
72
|
+
akm search "skills/"
|
|
73
|
+
akm search "knowledge/"
|
|
74
|
+
akm search "<query>" --type skill
|
|
74
75
|
```
|
|
75
76
|
|
|
76
77
|
### Recording feedback and new knowledge
|
|
@@ -100,4 +101,4 @@ akm proposal accept <id>
|
|
|
100
101
|
|
|
101
102
|
---
|
|
102
103
|
|
|
103
|
-
*Created by `akm
|
|
104
|
+
*Created by `akm bundle create`. See `akm --help` for full command reference.*
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for agent assets using scoped role, tool, and maintenance rules.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise an agent asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for command assets using repeatable LLM operation patterns.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a command asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for fact assets using pinned-core and just-in-time context principles.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a fact asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for knowledge assets as compiled, on-demand reference documents.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a knowledge asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for lesson assets that capture compounding, hard-won judgment.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a lesson asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for memory assets using durable-context and provenance discipline.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a memory asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for skill assets as reusable, just-in-time procedural rulebooks.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a skill asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for workflow assets using explicit operations, logging, and lintable steps.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a workflow asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: How to cross-link assets so retrieval compounds — a provenance xref when derived, sparse real associative xrefs, corrections as new assets, and canonical entity naming.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they create or revise any asset that derives from, corrects, or relates to another asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: The closed vocabulary of domain prefixes for reuse-born assets (knowledge/skill/fact/script), plus canonical entity spellings. Edit this to match your stash.
|
|
4
5
|
when_to_use: Surfaced to authoring agents alongside the other convention facts; consult it when picking a domain prefix for a knowledge, skill, fact, or script asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Where to place an asset in the stash — the one path partition axis, chosen by asset type, so refs stay stable and slug search (akm search "<slug>" --type <type>) co-locates related assets.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they create or move any asset and must decide its subdirectory/name.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -99,19 +101,28 @@ cross-project reuse.
|
|
|
99
101
|
|
|
100
102
|
## Renames and evolution
|
|
101
103
|
|
|
102
|
-
- **A ref is chosen once. Default to not renaming.** A
|
|
104
|
+
- **A ref is chosen once. Default to not renaming.** A rename dangles
|
|
103
105
|
inbound xrefs silently at write time — nothing catches the breakage until
|
|
104
106
|
the next `akm lint` run flags the dead frontmatter refs (`missing-ref`) —
|
|
105
|
-
while the dead ref string keeps scoring in FTS, and a
|
|
107
|
+
while the dead ref string keeps scoring in FTS, and a renamed file
|
|
106
108
|
is a new index entry, so the asset's accumulated usage-ranking history
|
|
107
109
|
resets.
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
- **A rename is delete plus create, and you do it by hand.** There is no
|
|
111
|
+
`akm mv` — moving the file strands every inbound ref and gives the
|
|
112
|
+
destination a fresh identity. If a rename is truly unavoidable:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
mv memories/old-note.md memories/new-note.md
|
|
116
|
+
# update any intentional refs (fully qualified: bundle//memories/old-note)
|
|
117
|
+
akm index
|
|
118
|
+
akm lint # confirms nothing dangles
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A memory's `.derived.md` twin must move with its base. Citing files in
|
|
122
|
+
read-only sources cannot be fixed at all — another reason not to rename. The
|
|
123
|
+
asset's accumulated usage-ranking history resets unless you carry it over
|
|
124
|
+
with `bun scripts/rekey-asset-ref.ts <old-ref> <new-ref>` (a maintainer
|
|
125
|
+
script, run from a source clone after the move and before `akm index`).
|
|
115
126
|
- When a project-scoped note turns out to be domain-general, **append, don't
|
|
116
127
|
promote**: write a new `knowledge/<domain>/…` asset that xrefs the originating
|
|
117
128
|
memory. Never rename the memory up a rung — that breaks its ref. The atomic
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
schedule: "0 4 * * *"
|
|
3
|
+
command: akm improve --strategy catchup --skip-if-locked
|
|
4
|
+
# Manual-recovery task: ships disabled (the retired registerDefaultTasks
|
|
5
|
+
# marked it enableMode: "manual"). `akm task run` works while disabled;
|
|
6
|
+
# opting into the schedule is `enabled: true` + `akm task sync`.
|
|
7
|
+
enabled: false
|
|
8
|
+
description: Manual recovery — consolidation + triage drain (run on demand via `akm task run akm-improve-catchup`)
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
<div class="table-wrap">
|
|
391
391
|
<table>
|
|
392
392
|
<thead>
|
|
393
|
-
<tr><th>Started</th><th>Task</th><th>Strategy</th><th>
|
|
393
|
+
<tr><th>Started</th><th>Task</th><th>Strategy</th><th>Wall</th><th>Promoted</th><th>Merged</th><th>Contradicted</th><th>MI Written</th><th>Entities</th><th>Lint Fixed</th><th>Status</th></tr>
|
|
394
394
|
</thead>
|
|
395
395
|
<tbody id="lastRunsTable"></tbody>
|
|
396
396
|
</table>
|
|
@@ -683,7 +683,6 @@ tbody.innerHTML = '';
|
|
|
683
683
|
const dur = r.wallTimeMs ? (r.wallTimeMs / 60000).toFixed(1) + 'm' : '—';
|
|
684
684
|
const task = r.taskId || 'manual';
|
|
685
685
|
const strategy = r.strategy || '—';
|
|
686
|
-
const legacyProfile = r.legacyProfile || '—';
|
|
687
686
|
const badge = r.ok
|
|
688
687
|
? '<span class="badge-pill badge-pass" style="padding:2px 8px;font-size:11px;"><span class="dot dot-pass" style="width:6px;height:6px;"></span> ok</span>'
|
|
689
688
|
: '<span class="badge-pill badge-fail" style="padding:2px 8px;font-size:11px;"><span class="dot dot-fail" style="width:6px;height:6px;"></span> failed</span>';
|
|
@@ -691,7 +690,6 @@ tbody.innerHTML = '';
|
|
|
691
690
|
<td style="font-family:monospace;font-size:12px;">${ts}</td>
|
|
692
691
|
<td><code>${task}</code></td>
|
|
693
692
|
<td><code>${strategy}</code></td>
|
|
694
|
-
<td><code>${legacyProfile}</code></td>
|
|
695
693
|
<td>${dur}</td>
|
|
696
694
|
<td style="color:var(--accent);font-weight:600;">${r.promoted || 0}</td>
|
|
697
695
|
<td>${r.merged || 0}</td>
|
|
@@ -1,24 +1,41 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
type: workflow
|
|
3
|
+
description: One-sentence summary of what this workflow accomplishes.
|
|
4
|
+
updated: 2026-01-01
|
|
5
|
+
tags: [example]
|
|
5
6
|
params:
|
|
6
|
-
example_param: Explain this parameter
|
|
7
|
+
example_param: { type: string, description: Explain this parameter }
|
|
8
|
+
steps:
|
|
9
|
+
- id: first-step
|
|
10
|
+
- id: second-step
|
|
11
|
+
inputs: [steps.first-step.output]
|
|
7
12
|
---
|
|
8
13
|
|
|
9
|
-
#
|
|
14
|
+
# {{TITLE}}
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
Free preamble prose describing what this workflow does. It is indexed for
|
|
17
|
+
search and shown in `akm show`, but it is never dispatched to a step.
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
Describe what to do in this step.
|
|
19
|
+
## first-step
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
Describe what to do in this step. Refer to run parameters in plain
|
|
22
|
+
language — for example, "read the value given by the `example_param`
|
|
23
|
+
parameter" — never as a template expression like `{{ example_param }}`.
|
|
19
24
|
|
|
20
|
-
##
|
|
21
|
-
Step ID: second-step
|
|
25
|
+
## second-step
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
Describe what happens next, using the first step's artifact — attached to
|
|
28
|
+
this unit as context because this step declares
|
|
29
|
+
`inputs: [steps.first-step.output]` above — referred to in prose as "the
|
|
30
|
+
first step's attached artifact."
|
|
31
|
+
|
|
32
|
+
### gate
|
|
33
|
+
|
|
34
|
+
A `### gate` sub-heading is the step's completion rubric: the judge
|
|
35
|
+
receives this whole section byte-exact. Omit the heading or leave its text
|
|
36
|
+
empty to skip validation. A non-empty rubric requires
|
|
37
|
+
`workflow.judgeEngine`; verifier failures and malformed verdicts reject the
|
|
38
|
+
gate rather than silently skipping it.
|
|
39
|
+
|
|
40
|
+
- Confirm the step accomplished what it set out to do.
|
|
41
|
+
- Confirm nothing required was silently skipped.
|
package/dist/cli/invocation.js
CHANGED
|
@@ -7,11 +7,10 @@
|
|
|
7
7
|
* Before this module, ~46 `process.argv` read sites were scattered across
|
|
8
8
|
* `src/**` (32 outside `src/cli.ts`), each re-scanning the raw argv array for
|
|
9
9
|
* repeated flags (`parseAllFlagValues`), `--`-passthrough tails (`env run`,
|
|
10
|
-
* `secret run`), or first-occurrence flag values (`parseFlagValue`)
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* downstream reader shares one parse instead of re-scanning the raw array.
|
|
10
|
+
* `secret run`), or first-occurrence flag values (`parseFlagValue`). This
|
|
11
|
+
* module normalizes argv into one typed {@link ParsedInvocation} object,
|
|
12
|
+
* minted ONCE by `src/cli.ts` at startup, so every downstream reader shares
|
|
13
|
+
* one parse instead of re-scanning the raw array.
|
|
15
14
|
*
|
|
16
15
|
* Deliberately import-free: this module must never join an import cycle
|
|
17
16
|
* (cycle ratchet, plan §10.7 / chunk-9 D.3), so it depends on nothing but
|
|
@@ -20,11 +19,15 @@
|
|
|
20
19
|
* of the same algorithms `output/context.ts`'s `parseFlagValue`/
|
|
21
20
|
* `hasBooleanFlag` and (the now-retired) `cli/shared.ts` `parseAllFlagValues`
|
|
22
21
|
* used, kept byte-identical so every converted call site is behavior-
|
|
23
|
-
* preserving
|
|
22
|
+
* preserving — with ONE deliberate exception (R-033a): `getAllFlagValuesFrom`
|
|
23
|
+
* now stops at a literal `--` separator instead of scanning past it, fixing a
|
|
24
|
+
* bug where a repeatable flag's value placed after `--` (meant to end flag
|
|
25
|
+
* parsing) was still read as a real flag occurrence. See that function's
|
|
26
|
+
* docstring.
|
|
24
27
|
*
|
|
25
28
|
* Singleton + fallback semantics (the design decision this module encodes):
|
|
26
|
-
* - `setParsedInvocation(argv)` is called exactly once, by `src/cli.ts`,
|
|
27
|
-
*
|
|
29
|
+
* - `setParsedInvocation(argv)` is called exactly once, by `src/cli.ts`, in
|
|
30
|
+
* its startup block before any command handler can run. It
|
|
28
31
|
* snapshots that argv into an immutable {@link ParsedInvocation} that
|
|
29
32
|
* every subsequent `getParsedInvocation()` call returns unchanged for the
|
|
30
33
|
* rest of the process lifetime — "normalize argv exactly once at entry".
|
|
@@ -58,8 +61,7 @@
|
|
|
58
61
|
* search-cli, stash-cli, cli.ts) is unaffected.
|
|
59
62
|
* - `findCittyTopLevelCommand`/`findCittyTopLevelCommandIndex` (moved from
|
|
60
63
|
* `cli/parse-args.ts`, which had zero internal imports for this cluster) —
|
|
61
|
-
* re-exported from `cli/parse-args.ts` for `tests/tasks-embedded.test.ts
|
|
62
|
-
* and `commands/read/show.ts`.
|
|
64
|
+
* re-exported from `cli/parse-args.ts` for `tests/tasks-embedded.test.ts`.
|
|
63
65
|
* - `resolveHelpMigrateVersionArg` (moved from `cli.ts`, where it was
|
|
64
66
|
* private) — the `akm help migrate <version>` positional/flag
|
|
65
67
|
* disambiguation guard.
|
|
@@ -69,6 +71,8 @@
|
|
|
69
71
|
function getFlagValueFrom(argv, flag) {
|
|
70
72
|
for (let i = 0; i < argv.length; i++) {
|
|
71
73
|
const arg = argv[i];
|
|
74
|
+
if (arg === "--")
|
|
75
|
+
break;
|
|
72
76
|
if (arg === flag)
|
|
73
77
|
return argv[i + 1];
|
|
74
78
|
if (arg.startsWith(`${flag}=`))
|
|
@@ -77,12 +81,32 @@ function getFlagValueFrom(argv, flag) {
|
|
|
77
81
|
return undefined;
|
|
78
82
|
}
|
|
79
83
|
function hasFlagIn(argv, flag) {
|
|
80
|
-
|
|
84
|
+
for (const arg of argv) {
|
|
85
|
+
if (arg === "--")
|
|
86
|
+
return false;
|
|
87
|
+
if (arg === flag || arg === `${flag}=true`)
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
81
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Collect every `--flag value` / `--flag=value` occurrence, stopping at a
|
|
94
|
+
* literal `--` separator (R-033a). `--` conventionally ends flag parsing —
|
|
95
|
+
* everything after it is positional/passthrough, never a flag akm should
|
|
96
|
+
* interpret. Before this fix, a token like `--tag leaked:yes` placed AFTER
|
|
97
|
+
* `--` (e.g. `akm feedback <ref> --positive -- --tag leaked:yes`) was still
|
|
98
|
+
* picked up as a real `--tag` value, letting argv content past the boundary
|
|
99
|
+
* leak into structured output. This is a deliberate BEHAVIOR CHANGE from the
|
|
100
|
+
* pre-WI-9.9 per-site implementation this module otherwise keeps
|
|
101
|
+
* byte-identical (see the module docstring) — every caller of
|
|
102
|
+
* `parseAllFlagValues`/`getAllFlagValues` inherits the fix for free.
|
|
103
|
+
*/
|
|
82
104
|
function getAllFlagValuesFrom(argv, flag) {
|
|
83
105
|
const values = [];
|
|
84
106
|
for (let i = 0; i < argv.length; i++) {
|
|
85
107
|
const arg = argv[i];
|
|
108
|
+
if (arg === "--")
|
|
109
|
+
break;
|
|
86
110
|
if (arg === flag && i + 1 < argv.length) {
|
|
87
111
|
values.push(argv[i + 1]);
|
|
88
112
|
// BUG-M4: skip the value index so `--tag --tag` (literal `--tag` value)
|
|
@@ -122,8 +146,8 @@ function createParsedInvocation(argv) {
|
|
|
122
146
|
let _invocation;
|
|
123
147
|
/**
|
|
124
148
|
* Mint the process-wide {@link ParsedInvocation} singleton. Called exactly
|
|
125
|
-
* once, by `src/cli.ts`,
|
|
126
|
-
*
|
|
149
|
+
* once, by `src/cli.ts`, at startup — "normalize argv exactly once at entry"
|
|
150
|
+
* (plan §10.7).
|
|
127
151
|
*/
|
|
128
152
|
export function setParsedInvocation(argv) {
|
|
129
153
|
_invocation = createParsedInvocation(argv);
|
|
@@ -157,10 +181,11 @@ export function _resetParsedInvocationForTests() {
|
|
|
157
181
|
export function parseAllFlagValues(flag) {
|
|
158
182
|
return getParsedInvocation().getAllFlagValues(flag);
|
|
159
183
|
}
|
|
160
|
-
|
|
184
|
+
/** citty compares `foo-bar` and `fooBar` as the same arg name. */
|
|
185
|
+
export function cittyComparableName(name) {
|
|
161
186
|
return name.replace(/[-_]+([a-zA-Z0-9])/g, (_match, char) => char.toUpperCase());
|
|
162
187
|
}
|
|
163
|
-
function toAliasArray(alias) {
|
|
188
|
+
export function toAliasArray(alias) {
|
|
164
189
|
if (Array.isArray(alias))
|
|
165
190
|
return alias;
|
|
166
191
|
return typeof alias === "string" ? [alias] : [];
|