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
|
@@ -2,16 +2,21 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
|
-
* R5 — Longitudinal collapse
|
|
5
|
+
* R5 — Longitudinal collapse detector
|
|
6
6
|
* (docs/architecture/specs/improve-collapse-churn-detector-design.md).
|
|
7
7
|
*
|
|
8
|
-
* Detects the
|
|
8
|
+
* Detects the measured collapse failure mode of LLM-consolidated memory
|
|
9
|
+
* stores: repeated merges destroy information — canary retrieval recall
|
|
10
|
+
* downtrends, distinct-content entropy downtrends, or the store shrinks
|
|
11
|
+
* while generation counts rise.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* The CHURN alert class described in the design doc was removed: production
|
|
14
|
+
* never threaded a real accepted-change-volume signal in (the value was a
|
|
15
|
+
* hardcoded 0 from the 0.9.0 confidence-gate deletion onward), so the alert
|
|
16
|
+
* could never fire. See the design doc's status note for the removal
|
|
17
|
+
* rationale. `improve_cycle_metrics.accepted_actions` stays in the schema and
|
|
18
|
+
* is written as 0 because deployed `state.db` files already contain it and
|
|
19
|
+
* removing it would be a destructive schema change.
|
|
15
20
|
*
|
|
16
21
|
* Hard invariants: deterministic only (FTS BM25 + hashing — never an LLM,
|
|
17
22
|
* never an embedding model); bounded storage (< 2 KB per qualifying cycle,
|
|
@@ -25,6 +30,7 @@
|
|
|
25
30
|
* @module collapse-detector
|
|
26
31
|
*/
|
|
27
32
|
import { randomBytes } from "node:crypto";
|
|
33
|
+
import { parseBundleRef } from "../../core/asset/asset-ref.js";
|
|
28
34
|
import { conceptIdFromTypeName } from "../../core/asset/resolve-ref.js";
|
|
29
35
|
import { getImproveProcessConfig } from "../../core/config/config.js";
|
|
30
36
|
import { appendEvent } from "../../core/events.js";
|
|
@@ -42,7 +48,6 @@ export const DEFAULT_CANARY_K = 10;
|
|
|
42
48
|
export const DEFAULT_WINDOW_CYCLES = 5;
|
|
43
49
|
export const DEFAULT_RECALL_DROP_THRESHOLD = 0.15;
|
|
44
50
|
export const DEFAULT_ENTROPY_DROP_THRESHOLD = 0.05;
|
|
45
|
-
export const DEFAULT_CHURN_MIN_ACCEPTED = 25;
|
|
46
51
|
export const DEFAULT_RETENTION_DAYS = 365;
|
|
47
52
|
/** Deterministic bigram-diversity sample cap (cost bound at 10k assets). */
|
|
48
53
|
const DIVERSITY_SAMPLE_CAP = 2000;
|
|
@@ -117,9 +122,10 @@ function newCanarySetId() {
|
|
|
117
122
|
* mean the trend window never fills and recall reads as a fake 0).
|
|
118
123
|
*
|
|
119
124
|
* NEVER auto-refreshes: once minted the set is frozen until an explicit
|
|
120
|
-
* `
|
|
121
|
-
* hides. Rows are read back BY OUR OWN set id (never "newest
|
|
122
|
-
* concurrent mint in another process cannot relabel this run's
|
|
125
|
+
* `bun scripts/refresh-canary-set.ts --refresh` — silent re-baselining is how
|
|
126
|
+
* a slow collapse hides. Rows are read back BY OUR OWN set id (never "newest
|
|
127
|
+
* active") so a concurrent mint in another process cannot relabel this run's
|
|
128
|
+
* metrics.
|
|
123
129
|
*/
|
|
124
130
|
export function ensureCanarySet(stateDb, indexDb, cfg, preloadedEntries) {
|
|
125
131
|
const existing = getActiveCanaries(stateDb);
|
|
@@ -134,11 +140,11 @@ export function ensureCanarySet(stateDb, indexDb, cfg, preloadedEntries) {
|
|
|
134
140
|
return { canarySetId, canaries: getCanariesBySetId(stateDb, canarySetId) };
|
|
135
141
|
}
|
|
136
142
|
/**
|
|
137
|
-
* Explicit canary re-mint (the ONLY refresh path —
|
|
138
|
-
* --refresh`). Mint-first, deactivate-after:
|
|
139
|
-
* unreadable the current baseline is left untouched
|
|
140
|
-
* Deactivates ALL other active sets (not just the
|
|
141
|
-
* an interrupted refresh can never resurrect.
|
|
143
|
+
* Explicit canary re-mint (the ONLY refresh path —
|
|
144
|
+
* `bun scripts/refresh-canary-set.ts --refresh`). Mint-first, deactivate-after:
|
|
145
|
+
* when the index is empty or unreadable the current baseline is left untouched
|
|
146
|
+
* instead of destroyed. Deactivates ALL other active sets (not just the
|
|
147
|
+
* newest) so stragglers from an interrupted refresh can never resurrect.
|
|
142
148
|
*/
|
|
143
149
|
export function refreshCanarySet(stateDb, indexDb, cfg) {
|
|
144
150
|
const minted = buildMintList(stateDb, getAllEntries(indexDb), cfg);
|
|
@@ -179,26 +185,35 @@ export function normHash(text) {
|
|
|
179
185
|
}
|
|
180
186
|
/**
|
|
181
187
|
* Score one canary against the live index, merge-following via canonical
|
|
182
|
-
* `xrefs`.
|
|
183
|
-
* xref cutover. A hit is the anchor ref itself OR any returned entry whose
|
|
188
|
+
* `xrefs`. A hit is the anchor ref itself or any returned entry whose
|
|
184
189
|
* provenance contains the anchor.
|
|
185
190
|
* Returns the 0-based rank of the first hit, or -1.
|
|
186
191
|
*/
|
|
187
192
|
function scoreCanary(indexDb, canary, k) {
|
|
188
193
|
const results = searchFts(indexDb, canary.query, k);
|
|
194
|
+
const anchorConceptId = canaryConceptId(canary.anchor_ref);
|
|
189
195
|
for (let i = 0; i < Math.min(results.length, k); i++) {
|
|
190
196
|
const r = results[i];
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
197
|
+
// Persisted canaries may be fully qualified after a state migration while
|
|
198
|
+
// index refs and xrefs remain short conceptIds. Compare identity, not display
|
|
199
|
+
// spelling, so migration alone cannot collapse recall to zero.
|
|
194
200
|
const ref = conceptIdFromTypeName(r.entry.type, r.entry.name);
|
|
195
|
-
if (ref ===
|
|
201
|
+
if (ref === anchorConceptId)
|
|
196
202
|
return i;
|
|
197
|
-
|
|
203
|
+
const provenance = r.entry.xrefs ?? [];
|
|
204
|
+
if (provenance.some((sourceRef) => canaryConceptId(sourceRef) === anchorConceptId))
|
|
198
205
|
return i;
|
|
199
206
|
}
|
|
200
207
|
return -1;
|
|
201
208
|
}
|
|
209
|
+
function canaryConceptId(ref) {
|
|
210
|
+
try {
|
|
211
|
+
return parseBundleRef(ref).conceptId;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return ref;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
202
217
|
/**
|
|
203
218
|
* Compute one qualifying cycle's store-health snapshot. One `entries` scan +
|
|
204
219
|
* `canaryCount` FTS queries; no LLM, no embedding model, no filesystem reads.
|
|
@@ -272,7 +287,9 @@ export function computeCycleMetrics(stateDb, indexDb, args) {
|
|
|
272
287
|
distinct_content_ratio: learningTotal === 0 ? 1 : contentHashes.size / learningTotal,
|
|
273
288
|
mean_bigram_diversity: diversityCount === 0 ? 1 : diversitySum / diversityCount,
|
|
274
289
|
over_generation_count: overGeneration,
|
|
275
|
-
|
|
290
|
+
// Always 0 — the CHURN alert this fed was removed. The column is NOT NULL
|
|
291
|
+
// in a released migration body, so it is written rather than dropped.
|
|
292
|
+
accepted_actions: 0,
|
|
276
293
|
merge_floor_violations: args.mergeFloorViolations,
|
|
277
294
|
alerts_json: "[]",
|
|
278
295
|
};
|
|
@@ -312,7 +329,6 @@ export function evaluateCollapseAlerts(history, current, cfg) {
|
|
|
312
329
|
const windowStart = hist[0];
|
|
313
330
|
const recallDrop = cfg.recallDropThreshold ?? DEFAULT_RECALL_DROP_THRESHOLD;
|
|
314
331
|
const entropyDrop = cfg.entropyDropThreshold ?? DEFAULT_ENTROPY_DROP_THRESHOLD;
|
|
315
|
-
const churnMin = cfg.churnMinAcceptedActions ?? DEFAULT_CHURN_MIN_ACCEPTED;
|
|
316
332
|
// COLLAPSE 1 — canary recall drop vs window median (median, not previous
|
|
317
333
|
// cycle, so one noisy cycle can neither fire nor mask the alert).
|
|
318
334
|
const medianRecall = median(hist.map((h) => h.mean_recall));
|
|
@@ -351,20 +367,6 @@ export function evaluateCollapseAlerts(history, current, cfg) {
|
|
|
351
367
|
},
|
|
352
368
|
});
|
|
353
369
|
}
|
|
354
|
-
// CHURN — real write volume, zero retrieval- or shape-visible movement.
|
|
355
|
-
// Flatness is measured against the window MEDIAN (consistent with the
|
|
356
|
-
// recall rule): endpoint-only comparison would call a window that swung
|
|
357
|
-
// wildly but happened to land near its start "flat".
|
|
358
|
-
const acceptedSum = hist.reduce((a, h) => a + h.accepted_actions, 0);
|
|
359
|
-
const scoreFlat = Math.abs(current.mean_ndcg - median(hist.map((h) => h.mean_ndcg))) < 0.02;
|
|
360
|
-
const entropyFlat = Math.abs(current.distinct_content_ratio - median(hist.map((h) => h.distinct_content_ratio))) < 0.02;
|
|
361
|
-
if (acceptedSum >= churnMin && scoreFlat && entropyFlat) {
|
|
362
|
-
alerts.push({
|
|
363
|
-
kind: "churn",
|
|
364
|
-
detail: `${acceptedSum} accepted actions over ${W} cycles with flat canary score and flat entropy — write volume with no retrieval-visible effect`,
|
|
365
|
-
metrics: { acceptedSum, ndcgDelta: current.mean_ndcg - windowStart.mean_ndcg },
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
370
|
return alerts;
|
|
369
371
|
}
|
|
370
372
|
// ── Orchestrator ─────────────────────────────────────────────────────────────
|
|
@@ -392,7 +394,6 @@ export function runCollapseDetector(args) {
|
|
|
392
394
|
const row = computeCycleMetrics(stateDb, db, {
|
|
393
395
|
runId: args.runId,
|
|
394
396
|
pass: args.pass,
|
|
395
|
-
acceptedActions: args.acceptedActions,
|
|
396
397
|
mergeFloorViolations: args.mergeFloorViolations,
|
|
397
398
|
cfg,
|
|
398
399
|
maxGeneration,
|
|
@@ -22,7 +22,7 @@ export function isConsolidationEligibleMemoryName(name) {
|
|
|
22
22
|
* consolidate flow already guards against unparseable memories elsewhere).
|
|
23
23
|
*
|
|
24
24
|
* Defends against four observed defect classes (see
|
|
25
|
-
* `
|
|
25
|
+
* `memories/akm-improve-critical-review-2026-05-20`):
|
|
26
26
|
* - LLM marks a memory contradicted then deletes (dangling contradictedBy)
|
|
27
27
|
* - LLM merges two unrelated memories sharing a topic keyword
|
|
28
28
|
* - LLM judges a recent durable design memo as "redundant"
|
|
@@ -40,25 +40,3 @@ export function isHotCapturedMemory(filePath) {
|
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
export function consolidateGuardStatus(filePath) {
|
|
44
|
-
if (!fs.existsSync(filePath))
|
|
45
|
-
return "missing";
|
|
46
|
-
let content;
|
|
47
|
-
try {
|
|
48
|
-
content = fs.readFileSync(filePath, "utf8");
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return "unparseable";
|
|
52
|
-
}
|
|
53
|
-
let parsed;
|
|
54
|
-
try {
|
|
55
|
-
parsed = parseFrontmatter(content);
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
return "unparseable";
|
|
59
|
-
}
|
|
60
|
-
const data = parsed.data;
|
|
61
|
-
if (!data || Object.keys(data).length === 0)
|
|
62
|
-
return "unparseable";
|
|
63
|
-
return hasHotCaptureMode(data) ? "hot" : "safe";
|
|
64
|
-
}
|
|
@@ -56,6 +56,10 @@ export function mergePlans(chunks, knownRefs) {
|
|
|
56
56
|
mergeOp = { ...op, secondaries: filteredSecondaries };
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
+
if (mergeOp.secondaries.length > 1) {
|
|
60
|
+
warnings.push(`Merge: ${mergeOp.primary} proposed multiple secondaries; retaining one secondary for review.`);
|
|
61
|
+
mergeOp = { ...mergeOp, secondaries: mergeOp.secondaries.slice(0, 1) };
|
|
62
|
+
}
|
|
59
63
|
// merge wins over delete
|
|
60
64
|
if (deleteOps.has(mergeOp.primary)) {
|
|
61
65
|
deleteOps.delete(mergeOp.primary);
|