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
|
@@ -28,24 +28,12 @@ function refType(ref) {
|
|
|
28
28
|
const body = ref.includes("//") ? ref.slice(ref.indexOf("//") + 2) : ref;
|
|
29
29
|
// 0.9.0 conceptId `<stash-subdir>/<name>`: delegate to the D-R2 reverse table
|
|
30
30
|
// so the leading stash subdir maps back to its asset type (the canonical path).
|
|
31
|
-
|
|
32
|
-
if (conceptType !== undefined)
|
|
33
|
-
return conceptType;
|
|
34
|
-
// DOCUMENTED EXCEPTION (ref-grammar decision D-R3 migration window): a tolerant
|
|
35
|
-
// legacy `type:name` arm survives ONLY because live callers still hand this
|
|
36
|
-
// recognition-only seam the old spelling — `propose.ts` builds
|
|
37
|
-
// `${options.type}:${options.name}`, and a pre-migration stored ref may still
|
|
38
|
-
// reach here before the 0.10.0 grammar removal. It never crosses a storage
|
|
39
|
-
// boundary, so it stays until those feeders flip.
|
|
40
|
-
const colon = body.indexOf(":");
|
|
41
|
-
if (colon > 0)
|
|
42
|
-
return body.slice(0, colon).trim() || undefined;
|
|
43
|
-
return undefined;
|
|
31
|
+
return typeNameFromConceptId(body)?.type;
|
|
44
32
|
}
|
|
45
33
|
/**
|
|
46
34
|
* Resolve the standards context for a write target identified by its asset ref.
|
|
47
35
|
*
|
|
48
|
-
* @param ref Canonical asset ref of the write target (e.g. `
|
|
36
|
+
* @param ref Canonical asset ref of the write target (e.g. `skills/foo`).
|
|
49
37
|
* When undefined, the target is a general authoring flow.
|
|
50
38
|
* @param stashRoot Stash root directory.
|
|
51
39
|
*/
|
|
@@ -53,14 +53,14 @@ function collectMarkdownFiles(dir) {
|
|
|
53
53
|
return results;
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* Derive a fact ref (`
|
|
56
|
+
* Derive a fact ref (`facts/conventions/naming`) from an absolute markdown path
|
|
57
57
|
* relative to the facts root. Mirrors the canonical-name derivation in
|
|
58
58
|
* `asset-spec.ts` (POSIX separators, `.md` stripped).
|
|
59
59
|
*/
|
|
60
60
|
function toFactRef(factsRoot, absPath) {
|
|
61
61
|
const rel = path.relative(factsRoot, absPath).split(path.sep).join("/");
|
|
62
62
|
const name = rel.endsWith(".md") ? rel.slice(0, -3) : rel;
|
|
63
|
-
return
|
|
63
|
+
return `${FACTS_SUBDIR}/${name}`;
|
|
64
64
|
}
|
|
65
65
|
export function resolveStashStandards(stashRoot) {
|
|
66
66
|
const factsRoot = path.join(stashRoot, FACTS_SUBDIR);
|
|
@@ -28,9 +28,9 @@ import { placementTypes } from "../asset/asset-placement.js";
|
|
|
28
28
|
import { parseFrontmatter } from "../asset/frontmatter.js";
|
|
29
29
|
/** Sub-path (under the stash root) for per-type SOFT convention facts. */
|
|
30
30
|
export const TYPE_CONVENTIONS_SUBDIR = path.join("facts", "conventions", "assets");
|
|
31
|
-
/** The
|
|
31
|
+
/** The slash conceptId for a per-type convention, e.g. `facts/conventions/assets/skill`. */
|
|
32
32
|
export function typeConventionRef(type) {
|
|
33
|
-
return `
|
|
33
|
+
return `facts/conventions/assets/${type}`;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Read the SOFT authoring-convention body for asset type `type`, if a stash
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
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
|
-
import { runMigrations as runSqliteMigrations } from "../../storage/engines/sqlite-migrations.js";
|
|
4
|
+
import { assertMigrationRegistry, runMigrations as runSqliteMigrations, } from "../../storage/engines/sqlite-migrations.js";
|
|
5
5
|
export const STATE_MIGRATIONS = [
|
|
6
6
|
// ── Migration 001 — initial schema ──────────────────────────────────────────
|
|
7
7
|
{
|
|
@@ -59,7 +59,7 @@ export const STATE_MIGRATIONS = [
|
|
|
59
59
|
-- id TEXT PK — UUID (crypto.randomUUID()); stable directory name.
|
|
60
60
|
-- stash_dir TEXT — absolute stash root; multi-stash installs need
|
|
61
61
|
-- this to partition proposal lists per stash.
|
|
62
|
-
-- ref TEXT — target asset ref (e.g. "
|
|
62
|
+
-- ref TEXT — target asset ref (e.g. "lessons/alpha");
|
|
63
63
|
-- indexed for ref-scoped queue views.
|
|
64
64
|
-- status TEXT — "pending" | "accepted" | "rejected"; indexed
|
|
65
65
|
-- so pending-queue queries are fast.
|
|
@@ -76,7 +76,7 @@ export const STATE_MIGRATIONS = [
|
|
|
76
76
|
-- metadata_json TEXT — JSON object for future proposal fields.
|
|
77
77
|
-- Current fields stored here: sourceRun,
|
|
78
78
|
-- review, confidence, gateDecision (#577),
|
|
79
|
-
-- backupContent
|
|
79
|
+
-- backupContent.
|
|
80
80
|
--
|
|
81
81
|
-- ADD COLUMN extension points (future migrations):
|
|
82
82
|
-- ALTER TABLE proposals ADD COLUMN source_run TEXT DEFAULT NULL;
|
|
@@ -350,11 +350,12 @@ export const STATE_MIGRATIONS = [
|
|
|
350
350
|
//
|
|
351
351
|
// VESTIGIAL as of the Chunk-8 fold: the legacy `proposal.json` import moved
|
|
352
352
|
// OUT of the live per-operation path and INTO the one-time migrator
|
|
353
|
-
// (`
|
|
353
|
+
// (`scripts/akm-migrate/migrate/legacy/proposal-fs-import.ts`, wired through
|
|
354
|
+
// `akm-migrate apply`),
|
|
354
355
|
// whose idempotency is INSERT OR IGNORE on the proposal UUID plus migrate-apply's
|
|
355
|
-
//
|
|
356
|
-
// stays because
|
|
357
|
-
//
|
|
356
|
+
// incomplete sentinel — it no longer reads or writes this ledger. The CREATE TABLE
|
|
357
|
+
// stays because migration IDs are append-only: removing a released migration
|
|
358
|
+
// would make the schema_migrations ledger of an
|
|
358
359
|
// already-migrated rc database stop being an exact ordered prefix, and the
|
|
359
360
|
// runner would refuse to open it. The empty table is harmless.
|
|
360
361
|
//
|
|
@@ -832,17 +833,17 @@ export const STATE_MIGRATIONS = [
|
|
|
832
833
|
//
|
|
833
834
|
// The state.db half of the three-DB merge (plan §3.2/§8, normative §11.4,
|
|
834
835
|
// chunk-8 cutover design §1). This migration is PURE,
|
|
835
|
-
//
|
|
836
|
+
// IDEMPOTENT DDL ONLY — `CREATE TABLE IF NOT EXISTS` (+ indexes),
|
|
836
837
|
// never a DROP or a data move. The actual data movement (the workflow.db merge,
|
|
837
838
|
// the usage_events rescue from index.db, the full old-ref→item_ref re-key, and
|
|
838
|
-
// the workflow.db delete / index.db quarantine) is
|
|
839
|
-
//
|
|
840
|
-
//
|
|
841
|
-
// carve-out note in `src/core/state-db.ts`.
|
|
839
|
+
// the workflow.db delete / index.db quarantine) is idempotent migrate-apply
|
|
840
|
+
// code driven by
|
|
841
|
+
// `scripts/akm-migrate/migrate/legacy/three-db-cutover.ts`. See the no-DROP
|
|
842
|
+
// contract carve-out note in `src/core/state-db.ts`.
|
|
842
843
|
//
|
|
843
844
|
// The three workflow tables are the 10 pre-cutover workflow migrations
|
|
844
|
-
// (the frozen `
|
|
845
|
-
// 001–010) folded into one baseline at their FINAL post-010 shape — column
|
|
845
|
+
// (the frozen `scripts/akm-migrate/migrate/legacy/workflow-migrations-bodies.ts`
|
|
846
|
+
// base schema + 001–010) folded into one baseline at their FINAL post-010 shape — column
|
|
846
847
|
// lists, CHECK constraints, and indexes copied verbatim. `usage_events` mirrors
|
|
847
848
|
// index.db's former `ensureUsageEventsSchema` (`src/indexer/usage/usage-events.ts`),
|
|
848
849
|
// its new durable home. `legacy_state` mirrors `ensureLegacyStateTable`
|
|
@@ -958,7 +959,32 @@ export const STATE_MIGRATIONS = [
|
|
|
958
959
|
);
|
|
959
960
|
`,
|
|
960
961
|
},
|
|
962
|
+
// ── Migration 021 — asset_salience / asset_outcome: missing_since (#733) ────
|
|
963
|
+
//
|
|
964
|
+
// Orphan-GC grace clock (Workstream C / #733,
|
|
965
|
+
// docs/architecture/specs/0.9.0-close-out-plan.md). Neither table carries a
|
|
966
|
+
// column that records when a row's ref STOPPED resolving against
|
|
967
|
+
// `entries.item_ref` — `updated_at` is bumped by improve itself on every
|
|
968
|
+
// touch, so it cannot double as a "went missing" timestamp.
|
|
969
|
+
//
|
|
970
|
+
// `missing_since` is stamped by `runOrphanStateGcPass`
|
|
971
|
+
// (src/commands/improve/loop-stages.ts) the first time a row's ref fails to
|
|
972
|
+
// resolve against the live index, cleared the moment the ref resolves
|
|
973
|
+
// again, and used to gate deletion once `STATE_GC_GRACE_MS` (7 days) has
|
|
974
|
+
// elapsed — and ONLY when `improve.stateGc.collect` is true (default
|
|
975
|
+
// false). Mirrors the additive ADD-COLUMN style of migration 011.
|
|
976
|
+
//
|
|
977
|
+
// NULL = never missing (the steady-state default for every existing row —
|
|
978
|
+
// both a fresh row and a pre-migration row read back NULL here).
|
|
979
|
+
{
|
|
980
|
+
id: "021-asset-state-missing-since",
|
|
981
|
+
up: `
|
|
982
|
+
ALTER TABLE asset_salience ADD COLUMN missing_since INTEGER DEFAULT NULL;
|
|
983
|
+
ALTER TABLE asset_outcome ADD COLUMN missing_since INTEGER DEFAULT NULL;
|
|
984
|
+
`,
|
|
985
|
+
},
|
|
961
986
|
];
|
|
987
|
+
assertMigrationRegistry(STATE_MIGRATIONS);
|
|
962
988
|
/**
|
|
963
989
|
* Apply every pending migration in a single transaction per migration.
|
|
964
990
|
*
|
|
@@ -968,8 +994,5 @@ export const STATE_MIGRATIONS = [
|
|
|
968
994
|
* Called automatically by `openStateDatabase()`.
|
|
969
995
|
*/
|
|
970
996
|
export function runMigrations(db, options) {
|
|
971
|
-
runSqliteMigrations(db, STATE_MIGRATIONS, {
|
|
972
|
-
applyPending: options?.applyPending,
|
|
973
|
-
generationMarker: options?.generationMarker,
|
|
974
|
-
});
|
|
997
|
+
runSqliteMigrations(db, STATE_MIGRATIONS, { applyPending: options?.applyPending });
|
|
975
998
|
}
|
package/dist/core/state-db.js
CHANGED
|
@@ -45,11 +45,10 @@
|
|
|
45
45
|
* merge-target tables at their final shape. The one-time, filesystem-derived,
|
|
46
46
|
* fail-closed DATA movement (the workflow.db merge, the usage_events rescue, the
|
|
47
47
|
* full old-ref→item_ref re-key, and the workflow.db unlink / index.db quarantine
|
|
48
|
-
* rename)
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* under the backup-verified-restorable fail-closed gate.
|
|
48
|
+
* rename) runs as idempotent code in the migrate-apply coordinator
|
|
49
|
+
* (`scripts/akm-migrate/migrate/legacy/three-db-cutover.ts`). So the no-DROP
|
|
50
|
+
* contract here is intact: physical workflow.db deletion happens outside the
|
|
51
|
+
* ledger DDL, after a verified backup and committed data transaction.
|
|
53
52
|
*
|
|
54
53
|
* ## Schema design: indexed columns vs. metadata_json
|
|
55
54
|
*
|
|
@@ -73,7 +72,7 @@ import fs from "node:fs";
|
|
|
73
72
|
import path from "node:path";
|
|
74
73
|
import { openDatabase } from "../storage/database.js";
|
|
75
74
|
import { assertCurrentMigrationLedger, assertMigrationLedger } from "../storage/engines/sqlite-migrations.js";
|
|
76
|
-
import { openManagedDatabase, withManagedDb
|
|
75
|
+
import { openManagedDatabase, withManagedDb } from "../storage/managed-db.js";
|
|
77
76
|
import { acquireMaintenanceActivitySync } from "./maintenance-barrier.js";
|
|
78
77
|
import { assertNoPendingMigrationOperation } from "./migration-operation.js";
|
|
79
78
|
import { getDataDir } from "./paths.js";
|
|
@@ -182,14 +181,6 @@ export function openStateDatabase(dbPath) {
|
|
|
182
181
|
export function withStateDb(fn, opts) {
|
|
183
182
|
return withManagedDb(() => openStateDatabase(opts?.path), fn, opts);
|
|
184
183
|
}
|
|
185
|
-
/**
|
|
186
|
-
* Async sibling of {@link withStateDb} — for `fn`s that hold the handle across
|
|
187
|
-
* an `await` (the sync version would close it too early). Same borrow/own +
|
|
188
|
-
* optional `path` override semantics.
|
|
189
|
-
*/
|
|
190
|
-
export function withStateDbAsync(fn, opts) {
|
|
191
|
-
return withManagedDbAsync(() => openStateDatabase(opts?.path), fn, opts);
|
|
192
|
-
}
|
|
193
184
|
/**
|
|
194
185
|
* Fire-and-forget telemetry write to state.db (Chunk-8 WI-8.3: usage_events'
|
|
195
186
|
* durable home). Skips entirely when state.db does not exist yet (never
|
package/dist/core/structured.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Layering: this file lives in `core/` — NOT `llm/` — because the agent path
|
|
17
17
|
* must be able to reach it and `agent/ ⇏ llm/` is an enforced invariant
|
|
18
|
-
* (`tests/architecture/agent-no-llm-sdk-guard.test.ts`). The transport is
|
|
18
|
+
* (`tests/integration/architecture/agent-no-llm-sdk-guard.test.ts`). The transport is
|
|
19
19
|
* always injected; this module never performs IO of its own.
|
|
20
20
|
*
|
|
21
21
|
* Retry semantics: only parse/validation misses are retried (with corrective
|
package/dist/core/subprocess.js
CHANGED
|
@@ -148,6 +148,7 @@ export async function readStream(stream, opts) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
const EMPTY_READ = { text: "", timedOut: false };
|
|
151
|
+
const UNBOUNDED_STREAM_READ_SAFETY_MS = 60 * 60 * 1000;
|
|
151
152
|
function toError(err) {
|
|
152
153
|
return err instanceof Error ? err : new Error(String(err));
|
|
153
154
|
}
|
|
@@ -238,10 +239,11 @@ export async function runManagedSubprocess(cmd, opts) {
|
|
|
238
239
|
else
|
|
239
240
|
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
240
241
|
}
|
|
241
|
-
// Stream-drain timeout: the wall budget plus a 2 s grace, or
|
|
242
|
-
//
|
|
243
|
-
//
|
|
244
|
-
|
|
242
|
+
// Stream-drain timeout: the wall budget plus a 2 s grace, or a one-hour
|
|
243
|
+
// safety bound when execution itself is unbounded. This timer starts with
|
|
244
|
+
// capture, so the null-timeout path must not impose a short hidden deadline
|
|
245
|
+
// on an otherwise healthy long-running process.
|
|
246
|
+
const streamDrainTimeoutMs = timeoutMs !== null ? timeoutMs + 2_000 : UNBOUNDED_STREAM_READ_SAFETY_MS;
|
|
245
247
|
const stdoutPromise = capture
|
|
246
248
|
? readStream(proc.stdout ?? null, {
|
|
247
249
|
timeoutMs: streamDrainTimeoutMs,
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
* implementations historically maintained overlapping-but-not-identical
|
|
10
10
|
* vocabularies of hanging-connector words, which was a maintenance trap.
|
|
11
11
|
*
|
|
12
|
-
* This module is the single source of truth.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* This module is the single source of truth. A separate section-heading regex
|
|
13
|
+
* (`HEADING_FRAGMENT_PATTERNS` in
|
|
14
|
+
* `src/commands/proposal/validators/proposal-quality-validators.ts`) layers on
|
|
15
|
+
* top of these heuristics and is shared across distill, consolidate, and
|
|
16
|
+
* reflect rather than staying local to any one of them.
|
|
15
17
|
*/
|
|
16
18
|
/**
|
|
17
19
|
* Words that, when ending a sentence, suggest the description was truncated
|
|
@@ -87,8 +89,10 @@ export const TRUNCATION_TRAILING_WORDS = new Set([
|
|
|
87
89
|
* - Trailing ellipsis (`...` or `…`)
|
|
88
90
|
* - Last word matches {@link TRUNCATION_TRAILING_WORDS}
|
|
89
91
|
*
|
|
90
|
-
* Does NOT detect section-heading fragments — that check
|
|
91
|
-
*
|
|
92
|
+
* Does NOT detect section-heading fragments — that check lives in
|
|
93
|
+
* `HEADING_FRAGMENT_PATTERNS` in
|
|
94
|
+
* `src/commands/proposal/validators/proposal-quality-validators.ts`, shared by
|
|
95
|
+
* distill, consolidate, and reflect.
|
|
92
96
|
*/
|
|
93
97
|
export function detectTruncatedDescription(description) {
|
|
94
98
|
const trimmed = description.trim();
|
|
@@ -38,7 +38,7 @@ function shellQuote(value) {
|
|
|
38
38
|
}
|
|
39
39
|
/** Reproduced from `output/renderers.ts#buildWorkflowAction` — the one function-valued `ACTION_BUILDERS.workflow` entry. */
|
|
40
40
|
function buildWorkflowAction(ref) {
|
|
41
|
-
return `
|
|
41
|
+
return `Start or resume execution with \`akm workflow run ${shellQuote(ref)}\`.`;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Exhaustive over {@link KnownType} — a HAND-WRITTEN literal, not derived
|
|
@@ -74,7 +74,7 @@ export const TYPE_PRESENTATION = {
|
|
|
74
74
|
secret: {
|
|
75
75
|
label: "Secret",
|
|
76
76
|
renderer: "secret-file",
|
|
77
|
-
action: (ref) => `akm show ${ref} -> name only (value never shown); akm secret
|
|
77
|
+
action: (ref) => `akm show ${ref} -> name only (value never shown); akm secret run ${ref} <VAR> -- <command> -> run with value injected into $VAR`,
|
|
78
78
|
},
|
|
79
79
|
lesson: {
|
|
80
80
|
label: "Lesson",
|
|
@@ -84,7 +84,7 @@ export const TYPE_PRESENTATION = {
|
|
|
84
84
|
task: {
|
|
85
85
|
label: "Task",
|
|
86
86
|
renderer: "task-yaml",
|
|
87
|
-
action: (ref) => `akm
|
|
87
|
+
action: (ref) => `akm show ${ref} -> inspect; akm task run <id> -> run now; edit the file + akm task sync -> unschedule`,
|
|
88
88
|
},
|
|
89
89
|
session: {
|
|
90
90
|
label: "Session",
|
package/dist/core/warn.js
CHANGED