akm-cli 0.9.0-rc.0 → 0.9.0-rc.13
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 +1283 -22
- package/README.md +62 -37
- package/SECURITY.md +46 -31
- package/dist/akm +162 -38
- package/dist/akm-migrate +44 -0
- package/dist/assets/backends/schtasks-template.xml +2 -1
- package/dist/assets/hints/cli-hints-full.md +268 -118
- package/dist/assets/hints/cli-hints-short.md +87 -24
- package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
- package/dist/assets/improve-strategies/frequent.json +15 -0
- package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
- package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
- package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
- package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
- package/dist/assets/improve-strategies/reflect-distill.json +30 -0
- package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
- package/dist/assets/prompts/consolidate-system.md +5 -5
- package/dist/assets/prompts/extract-session.md +2 -6
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
- package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
- package/dist/assets/prompts/reflect-output-repair.md +3 -0
- package/dist/assets/prompts/workflow-unit-preamble.md +26 -0
- package/dist/assets/stash-skeleton/README.md +38 -10
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
- package/dist/assets/tasks/core/extract.yml +3 -2
- package/dist/assets/tasks/core/improve.yml +2 -1
- package/dist/assets/tasks/core/index-refresh.yml +1 -0
- package/dist/assets/tasks/core/sync.yml +1 -0
- package/dist/assets/tasks/core/version-check.yml +2 -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 +5 -4
- package/dist/assets/workflows/workflow-template.md +31 -15
- package/dist/cli/invocation.js +279 -0
- package/dist/cli/parse-args.js +5 -90
- package/dist/cli/retired-commands.js +78 -0
- package/dist/cli/shared.js +158 -48
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +747 -293
- package/dist/commands/agent/agent-dispatch.js +19 -18
- package/dist/commands/agent/agent-support.js +0 -24
- package/dist/commands/agent/contribute-cli.js +43 -97
- package/dist/commands/completions.js +80 -23
- package/dist/commands/config-cli.js +44 -281
- package/dist/commands/env/env-binding.js +99 -0
- package/dist/commands/env/env-cli.js +84 -224
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +45 -61
- package/dist/commands/env/secret.js +32 -62
- package/dist/commands/feedback-cli.js +179 -85
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +7 -8
- package/dist/commands/health/checks.js +279 -94
- package/dist/commands/health/html-report.js +197 -578
- package/dist/commands/health/improve-metrics.js +277 -246
- package/dist/commands/health/llm-usage.js +19 -19
- package/dist/commands/health/md-report.js +16 -7
- package/dist/commands/health/metrics.js +67 -32
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +508 -0
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +16 -56
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
- package/dist/commands/health/types-improve.js +29 -0
- package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
- package/dist/commands/health/types-result.js +7 -0
- package/dist/commands/health/types-runs.js +4 -0
- package/dist/commands/health/types-session-log.js +4 -0
- package/dist/commands/health/types-windows.js +4 -0
- package/dist/commands/health/types.js +26 -21
- package/dist/commands/health/windows.js +2 -3
- package/dist/commands/health.js +296 -167
- package/dist/commands/improve/anti-collapse.js +5 -5
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +65 -52
- package/dist/commands/improve/consolidate/chunking.js +9 -7
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +454 -1354
- package/dist/commands/improve/content-hash.js +39 -0
- package/dist/commands/improve/distill/content-repair.js +4 -10
- package/dist/commands/improve/distill/promote-memory.js +89 -64
- package/dist/commands/improve/distill/quality-gate.js +118 -42
- package/dist/commands/improve/distill-guards.js +1 -1
- package/dist/commands/improve/distill-promotion-policy.js +33 -888
- package/dist/commands/improve/distill.js +607 -363
- package/dist/commands/improve/eligibility.js +165 -79
- package/dist/commands/improve/extract-cli.js +35 -126
- package/dist/commands/improve/extract-prompt.js +6 -35
- package/dist/commands/improve/extract.js +640 -391
- package/dist/commands/improve/feedback-valence.js +2 -12
- package/dist/commands/improve/improve-cli.js +134 -135
- package/dist/commands/improve/improve-result-file.js +30 -50
- package/dist/commands/improve/improve-run-types.js +4 -0
- package/dist/commands/improve/improve-strategies.js +135 -0
- package/dist/commands/improve/improve.js +904 -701
- package/dist/commands/improve/locks.js +64 -111
- package/dist/commands/improve/loop-stages.js +1110 -923
- package/dist/commands/improve/memory/derived-ref.js +124 -0
- package/dist/commands/improve/memory/memory-belief.js +79 -7
- package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
- package/dist/commands/improve/memory/memory-improve.js +25 -37
- package/dist/commands/improve/outcome-loop.js +25 -88
- package/dist/commands/improve/preparation.js +1034 -813
- package/dist/commands/improve/proactive-maintenance.js +34 -9
- package/dist/commands/improve/proposal-envelope.js +31 -0
- package/dist/commands/improve/reflect.js +983 -794
- package/dist/commands/improve/run-context.js +119 -0
- package/dist/commands/improve/salience.js +24 -127
- package/dist/commands/improve/session-asset.js +7 -3
- package/dist/commands/improve/shared.js +14 -34
- package/dist/commands/improve/source-identity.js +28 -0
- package/dist/commands/improve/triage.js +20 -17
- package/dist/commands/lint/base-linter.js +340 -313
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +185 -30
- package/dist/commands/{events.js → log.js} +28 -38
- package/dist/commands/migrate-cli.js +54 -0
- package/dist/commands/migration-tool.js +55 -0
- package/dist/commands/observability-cli.js +70 -208
- package/dist/commands/proposal/diff-format.js +50 -0
- package/dist/commands/proposal/drain-policies.js +0 -6
- package/dist/commands/proposal/drain.js +91 -40
- package/dist/commands/proposal/proposal-cli.js +134 -132
- package/dist/commands/proposal/proposal-types.js +56 -0
- package/dist/commands/proposal/proposal.js +83 -65
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +105 -88
- package/dist/commands/proposal/repository.js +1303 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
- package/dist/commands/proposal/validators/proposal-validators.js +61 -12
- package/dist/commands/proposal/validators/proposals.js +6 -8
- package/dist/commands/read/curate.js +78 -73
- package/dist/commands/read/knowledge.js +510 -13
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +84 -15
- package/dist/commands/read/search-cli.js +203 -96
- package/dist/commands/read/search.js +126 -94
- package/dist/commands/read/show.js +226 -250
- package/dist/commands/registry-cli.js +34 -60
- package/dist/commands/remember.js +18 -57
- package/dist/commands/sources/add-cli.js +104 -49
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +63 -0
- package/dist/commands/sources/info.js +27 -15
- package/dist/commands/sources/init.js +30 -40
- package/dist/commands/sources/installed-stashes.js +469 -172
- package/dist/commands/sources/migration-help.js +7 -4
- package/dist/commands/sources/schema-repair.js +10 -9
- package/dist/commands/sources/self-update.js +182 -121
- package/dist/commands/sources/source-add.js +169 -178
- package/dist/commands/sources/source-clone.js +144 -41
- package/dist/commands/sources/source-manage.js +94 -59
- package/dist/commands/sources/sources-cli.js +64 -205
- package/dist/commands/sources/stash-cli.js +91 -54
- package/dist/commands/sources/stash-skeleton.js +1 -1
- package/dist/commands/tasks/tasks-cli.js +106 -104
- package/dist/commands/tasks/tasks.js +445 -262
- package/dist/commands/workflow-cli.js +232 -121
- package/dist/core/action-contributors.js +1 -1
- package/dist/core/activation-policy.js +49 -0
- package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
- package/dist/core/adapter/adapters/akm-adapter.js +528 -0
- package/dist/core/adapter/adapters/akm-lint.js +392 -0
- package/dist/core/adapter/adapters/akm-metadata.js +387 -0
- package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
- package/dist/core/adapter/adapters/claude-adapter.js +61 -0
- package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
- package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
- package/dist/core/adapter/adapters/index.js +80 -0
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
- package/dist/core/adapter/adapters/okf-adapter.js +391 -0
- package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
- package/dist/core/adapter/adapters/shared.js +286 -0
- package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
- package/dist/core/adapter/bundle-adapter.js +4 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +44 -0
- package/dist/core/adapter/registry.js +56 -0
- package/dist/core/adapter/types.js +4 -0
- package/dist/core/asset/akm-markdown.js +30 -0
- package/dist/core/asset/asset-placement.js +243 -0
- package/dist/core/asset/asset-ref.js +110 -79
- package/dist/core/asset/asset-serialize.js +20 -0
- package/dist/core/asset/frontmatter.js +28 -12
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +274 -0
- package/dist/core/asset/stash-meta.js +2 -2
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +281 -86
- package/dist/core/config/config-io.js +42 -128
- package/dist/core/config/config-schema.js +233 -834
- package/dist/core/config/config-sources.js +162 -39
- package/dist/core/config/config-types.js +16 -11
- package/dist/core/config/config-version.js +29 -0
- package/dist/core/config/config-walker.js +126 -37
- package/dist/core/config/config.js +154 -331
- package/dist/core/config/deep-merge.js +41 -0
- package/dist/core/config/engine-semantics.js +28 -0
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +38 -0
- package/dist/core/config/schema/engines.js +116 -0
- package/dist/core/config/schema/experimental.js +47 -0
- package/dist/core/config/schema/feedback.js +31 -0
- package/dist/core/config/schema/improve-processes.js +389 -0
- package/dist/core/config/schema/improve.js +94 -0
- package/dist/core/config/schema/index-config.js +176 -0
- package/dist/core/config/schema/output.js +18 -0
- package/dist/core/config/schema/primitives.js +94 -0
- package/dist/core/config/schema/search.js +30 -0
- package/dist/core/config/schema/setup.js +18 -0
- package/dist/core/config/schema/sources-bundles.js +169 -0
- package/dist/core/config/schema/workflow.js +29 -0
- package/dist/core/env-secret-ref.js +155 -20
- package/dist/core/errors.js +17 -15
- package/dist/core/events-types.js +4 -0
- package/dist/core/events.js +46 -128
- package/dist/core/extra-params.js +62 -0
- package/dist/core/file-change.js +17 -0
- package/dist/core/file-lock.js +202 -57
- package/dist/core/fs-txn.js +392 -0
- package/dist/core/git-message.js +59 -0
- package/dist/core/improve-result.js +167 -0
- package/dist/core/json-schema.js +142 -0
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +1 -1
- package/dist/core/maintenance-barrier.js +135 -0
- package/dist/core/migration-operation.js +44 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/paths.js +22 -25
- package/dist/core/platform.js +10 -0
- package/dist/core/recognition-util.js +128 -0
- package/dist/core/redaction.js +392 -0
- package/dist/core/standards/resolve-standards-context.js +36 -65
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +5 -5
- package/dist/core/state/migrations.js +242 -11
- package/dist/core/state-db.js +98 -10
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +303 -0
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/time.js +20 -0
- package/dist/core/type-presentation.js +130 -0
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +834 -118
- package/dist/indexer/bundle-identity-guard.js +92 -0
- package/dist/indexer/db/graph-db.js +1 -25
- package/dist/indexer/db/llm-cache.js +1 -1
- package/dist/indexer/ensure-index.js +30 -9
- package/dist/indexer/graph/graph-boost.js +9 -30
- package/dist/indexer/graph/graph-extraction.js +41 -27
- package/dist/indexer/graph/graph-types.js +4 -0
- package/dist/indexer/index-writer-lock.js +93 -49
- package/dist/indexer/index-written-assets.js +100 -53
- package/dist/indexer/indexer.js +746 -329
- package/dist/indexer/init.js +18 -25
- package/dist/indexer/installations.js +142 -0
- package/dist/indexer/passes/dir-staleness.js +18 -10
- package/dist/indexer/passes/memory-inference.js +25 -15
- package/dist/indexer/passes/metadata.js +412 -243
- package/dist/indexer/scan/doc-to-entry.js +160 -0
- package/dist/indexer/scan/drain-dir.js +134 -0
- package/dist/indexer/search/db-search.js +292 -108
- package/dist/indexer/search/fts-query.js +64 -0
- package/dist/indexer/search/ranking-contributors.js +145 -25
- package/dist/indexer/search/ranking-types.js +4 -0
- package/dist/indexer/search/ranking.js +28 -71
- package/dist/indexer/search/search-attribution.js +67 -0
- package/dist/indexer/search/search-fields.js +18 -3
- package/dist/indexer/search/search-hit-enrichers.js +30 -40
- package/dist/indexer/search/search-source.js +157 -111
- package/dist/indexer/search/semantic-status.js +4 -1
- package/dist/indexer/usage/usage-events.js +10 -30
- package/dist/indexer/walk/file-context.js +3 -45
- package/dist/indexer/walk/matchers.js +42 -34
- package/dist/indexer/walk/path-resolver.js +11 -5
- package/dist/indexer/walk/walker.js +42 -14
- package/dist/integrations/agent/builder-shared.js +7 -0
- package/dist/integrations/agent/builders.js +5 -56
- package/dist/integrations/agent/config.js +3 -143
- package/dist/integrations/agent/detect.js +17 -2
- package/dist/integrations/agent/engine-resolution.js +231 -0
- package/dist/integrations/agent/index.js +1 -2
- package/dist/integrations/agent/model-aliases.js +16 -2
- package/dist/integrations/agent/profiles.js +36 -62
- package/dist/integrations/agent/prompts.js +46 -18
- package/dist/integrations/agent/runner-dispatch.js +93 -4
- package/dist/integrations/agent/runner.js +76 -208
- package/dist/integrations/agent/spawn.js +88 -196
- package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
- package/dist/integrations/harnesses/aider/index.js +48 -0
- package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
- package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
- package/dist/integrations/harnesses/amazonq/index.js +45 -0
- package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
- package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
- package/dist/integrations/harnesses/claude/config-import.js +1 -3
- package/dist/integrations/harnesses/claude/index.js +24 -35
- package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
- package/dist/integrations/harnesses/claude/session-log.js +27 -75
- package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
- package/dist/integrations/harnesses/codex/index.js +52 -0
- package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
- package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
- package/dist/integrations/harnesses/copilot/index.js +48 -0
- package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
- package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
- package/dist/integrations/harnesses/gemini/index.js +48 -0
- package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
- package/dist/integrations/harnesses/ids.js +24 -0
- package/dist/integrations/harnesses/index.js +54 -34
- package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
- package/dist/integrations/harnesses/opencode/config-import.js +1 -3
- package/dist/integrations/harnesses/opencode/index.js +14 -32
- package/dist/integrations/harnesses/opencode/session-log.js +67 -125
- package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
- package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
- package/dist/integrations/harnesses/openhands/index.js +48 -0
- package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
- package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
- package/dist/integrations/harnesses/pi/index.js +45 -0
- package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
- package/dist/integrations/harnesses/shared.js +17 -0
- package/dist/integrations/harnesses/types.js +43 -32
- package/dist/integrations/lockfile.js +211 -24
- package/dist/integrations/session-logs/index.js +36 -39
- package/dist/integrations/session-logs/provider-base.js +113 -0
- package/dist/llm/client.js +182 -110
- package/dist/llm/embedders/deterministic.js +2 -2
- package/dist/llm/embedders/remote.js +21 -9
- package/dist/llm/feature-gate.js +17 -57
- package/dist/llm/graph-extract.js +12 -13
- package/dist/llm/index-passes.js +8 -42
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +45 -30
- package/dist/llm/structured-call.js +16 -8
- package/dist/llm/usage-persist.js +30 -5
- package/dist/llm/usage-telemetry.js +59 -6
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/command-registry.js +27 -0
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +251 -0
- package/dist/output/html-render.js +11 -16
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -279
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +58 -84
- package/dist/output/shapes/passthrough.js +11 -39
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes/registry.js +12 -6
- package/dist/output/shapes.js +0 -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 +562 -0
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/helpers.js +15 -1164
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +202 -0
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/registry.js +12 -6
- package/dist/output/text/show-directives.js +117 -0
- package/dist/output/text/show-format.js +103 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +332 -0
- package/dist/output/text/workflow.js +3 -2
- package/dist/output/text.js +10 -19
- 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 +15 -25
- package/dist/registry/resolve.js +43 -94
- package/dist/registry/semver.js +43 -0
- package/dist/runtime.js +81 -12
- package/dist/scripts/akm-migrate.js +35529 -0
- package/dist/setup/detect.js +5 -7
- package/dist/setup/detected-engines.js +136 -0
- package/dist/setup/engine-config.js +100 -0
- package/dist/setup/registry-stash-loader.js +3 -3
- package/dist/setup/semantic-assets.js +12 -9
- package/dist/setup/setup.js +444 -208
- package/dist/setup/steps/connection-shared.js +120 -0
- package/dist/setup/steps/connection.js +108 -305
- package/dist/setup/steps/platforms.js +13 -12
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +21 -15
- package/dist/setup/steps/stashdir.js +6 -4
- package/dist/setup/steps/tasks.js +236 -119
- package/dist/setup/steps.js +3 -2
- package/dist/sources/freshness.js +39 -0
- 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 +54 -56
- package/dist/sources/providers/git-stash.js +420 -91
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +47 -22
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +2 -2
- package/dist/sources/resolve.js +11 -10
- package/dist/sources/snapshot-fetchers/types.js +4 -0
- package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
- package/dist/storage/database.js +60 -4
- package/dist/storage/engines/sqlite-migrations.js +156 -5
- package/dist/storage/locations.js +1 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +51 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -32
- package/dist/storage/repositories/index-connection.js +79 -0
- package/dist/storage/repositories/index-db.js +4 -3
- package/dist/storage/repositories/index-entries-repository.js +863 -0
- package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
- package/dist/storage/repositories/index-entry-types.js +4 -0
- package/dist/storage/repositories/index-fts-repository.js +167 -0
- package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
- package/dist/storage/repositories/index-meta-repository.js +49 -0
- package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
- package/dist/storage/repositories/index-sql.js +12 -0
- package/dist/storage/repositories/index-utility-repository.js +356 -0
- package/dist/storage/repositories/index-vec-repository.js +250 -0
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +317 -75
- package/dist/storage/repositories/registry-cache.js +1 -1
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +110 -3
- package/dist/storage/repositories/workflow-runs-repository.js +240 -19
- package/dist/tasks/backends/cron.js +169 -46
- package/dist/tasks/backends/exec-utils.js +76 -3
- package/dist/tasks/backends/index.js +6 -9
- package/dist/tasks/backends/launchd.js +292 -55
- package/dist/tasks/backends/schtasks.js +557 -70
- package/dist/tasks/backends/types.js +4 -0
- package/dist/tasks/command-executable.js +93 -0
- package/dist/tasks/embedded.js +56 -38
- package/dist/tasks/parser.js +156 -64
- package/dist/tasks/resolve-akm-bin.js +144 -51
- package/dist/tasks/runner.js +377 -209
- package/dist/tasks/schedule.js +108 -19
- package/dist/tasks/scheduler-invocation.js +296 -0
- package/dist/tasks/schema.js +1 -1
- package/dist/tasks/task-id.js +35 -0
- package/dist/tasks/validator.js +30 -16
- package/dist/text-import-hook.mjs +1 -1
- package/dist/workflows/authoring/authoring.js +104 -43
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/cli.js +0 -16
- package/dist/workflows/concurrency-policy.js +15 -0
- package/dist/workflows/exec/brief.js +450 -0
- package/dist/workflows/exec/frozen-judge.js +47 -0
- package/dist/workflows/exec/native-executor.js +1038 -0
- package/dist/workflows/exec/param-secrets.js +115 -0
- package/dist/workflows/exec/report.js +1460 -0
- package/dist/workflows/exec/run-workflow.js +602 -0
- package/dist/workflows/exec/scheduler.js +71 -0
- package/dist/workflows/exec/step-work.js +1190 -0
- package/dist/workflows/exec/unit-writer.js +23 -0
- package/dist/workflows/exec/workflow-engine-gate.js +67 -0
- package/dist/workflows/exec/worktree.js +171 -0
- package/dist/workflows/ir/compile.js +246 -0
- package/dist/workflows/ir/freeze.js +233 -0
- package/dist/workflows/ir/params.js +54 -0
- package/dist/workflows/ir/plan-hash.js +68 -0
- package/dist/workflows/ir/schema.js +540 -0
- package/dist/workflows/parser.js +878 -304
- package/dist/workflows/program/expressions.js +181 -0
- package/dist/workflows/program/schema.js +51 -0
- package/dist/workflows/renderer.js +100 -45
- package/dist/workflows/resource-limits.js +22 -0
- package/dist/workflows/runtime/agent-identity.js +59 -14
- package/dist/workflows/runtime/checkin.js +1 -1
- package/dist/workflows/runtime/plan-classifier.js +131 -0
- package/dist/workflows/runtime/runs.js +376 -119
- package/dist/workflows/runtime/unit-checkin.js +45 -0
- package/dist/workflows/runtime/unit-phases.js +20 -0
- package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +2 -3
- package/dist/workflows/validator.js +52 -30
- package/docs/README.md +42 -78
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +9 -8
- package/docs/migration/release-notes/0.9.0.md +158 -14
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +844 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/data-and-telemetry.md +333 -0
- package/package.json +21 -17
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +4636 -0
- package/schemas/akm-task.json +87 -0
- package/schemas/akm-workflow.json +373 -0
- package/dist/akm-migrate-storage +0 -38
- package/dist/assets/help/help-accept.md +0 -12
- package/dist/assets/help/help-improve.md +0 -84
- package/dist/assets/help/help-proposals.md +0 -17
- package/dist/assets/help/help-propose.md +0 -17
- package/dist/assets/help/help-reject.md +0 -11
- package/dist/assets/profiles/frequent.json +0 -13
- package/dist/assets/profiles/recombine-only.json +0 -21
- package/dist/assets/profiles/reflect-distill.json +0 -30
- package/dist/assets/profiles/synthesize.json +0 -15
- package/dist/assets/prompts/procedural-system.md +0 -44
- package/dist/assets/prompts/recombine-system.md +0 -40
- package/dist/assets/prompts/staleness-detect-system.md +0 -6
- package/dist/assets/tasks/core/backup.yml +0 -4
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/assets/templates/html/default.html +0 -78
- package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
- package/dist/assets/wiki/index-template.md +0 -12
- package/dist/assets/wiki/ingest-workflow-template.md +0 -83
- package/dist/assets/wiki/log-template.md +0 -8
- package/dist/assets/wiki/schema-template.md +0 -61
- package/dist/cli/config-migrate.js +0 -150
- package/dist/cli/config-validate.js +0 -39
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -487
- package/dist/commands/improve/calibration.js +0 -161
- package/dist/commands/improve/dedup.js +0 -482
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/improve/hot-probation.js +0 -45
- package/dist/commands/improve/improve-auto-accept.js +0 -276
- package/dist/commands/improve/improve-profiles.js +0 -168
- package/dist/commands/improve/procedural.js +0 -398
- package/dist/commands/improve/recombine.js +0 -818
- package/dist/commands/improve/schema-similarity-gate.js +0 -168
- package/dist/commands/lint/agent-linter.js +0 -44
- package/dist/commands/lint/command-linter.js +0 -44
- package/dist/commands/lint/default-linter.js +0 -16
- package/dist/commands/lint/fact-linter.js +0 -39
- package/dist/commands/lint/knowledge-linter.js +0 -16
- package/dist/commands/lint/memory-linter.js +0 -61
- package/dist/commands/lint/registry.js +0 -41
- package/dist/commands/lint/skill-linter.js +0 -45
- package/dist/commands/lint/task-linter.js +0 -50
- package/dist/commands/lint/workflow-linter.js +0 -81
- package/dist/commands/proposal/legacy-import.js +0 -115
- package/dist/commands/sources/history.js +0 -196
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/commands/wiki-cli.js +0 -292
- package/dist/core/asset/asset-registry.js +0 -76
- package/dist/core/asset/asset-spec.js +0 -259
- package/dist/core/config/config-migration.js +0 -602
- package/dist/core/deep-merge.js +0 -38
- package/dist/core/eval/rank-metrics.js +0 -113
- package/dist/core/ripgrep/install.js +0 -163
- package/dist/core/ripgrep/resolve.js +0 -81
- package/dist/indexer/db/db.js +0 -1413
- package/dist/indexer/manifest.js +0 -170
- package/dist/indexer/passes/metadata-contributors.js +0 -31
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
- package/dist/llm/call-ai.js +0 -62
- package/dist/llm/memory-infer-impl.js +0 -138
- 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/output/text/wiki.js +0 -16
- package/dist/registry/build-index.js +0 -386
- package/dist/scripts/migrate-storage.js +0 -19108
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
- package/dist/scripts/migrations/v16-to-v17.js +0 -141
- package/dist/setup/legacy-config.js +0 -106
- package/dist/storage/repositories/consolidation-repository.js +0 -38
- package/dist/storage/repositories/recombine-repository.js +0 -213
- package/dist/wiki/wiki-templates.js +0 -15
- package/dist/wiki/wiki.js +0 -1012
- package/dist/workflows/db.js +0 -215
- package/docs/data-and-telemetry.md +0 -226
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
package/dist/workflows/db.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import { getWorkflowDbPath } from "../core/paths.js";
|
|
7
|
-
import { openDatabase } from "../storage/database.js";
|
|
8
|
-
import { runMigrations as runSqliteMigrations } from "../storage/engines/sqlite-migrations.js";
|
|
9
|
-
import { applyStandardPragmas } from "../storage/sqlite-pragmas.js";
|
|
10
|
-
/**
|
|
11
|
-
* workflow.db — Durable SQLite database for workflow run state.
|
|
12
|
-
*
|
|
13
|
-
* Owns the `workflow_runs` and `workflow_run_steps` tables that track active /
|
|
14
|
-
* completed workflow executions. Like `state.db` (and unlike `index.db`), the
|
|
15
|
-
* rows here are NON-REGENERABLE — losing them is data loss. Schema must evolve
|
|
16
|
-
* via incremental, additive migrations recorded in `schema_migrations`.
|
|
17
|
-
*
|
|
18
|
-
* ## Migration-safety contract
|
|
19
|
-
*
|
|
20
|
-
* The `schema_migrations` table records every applied migration by a stable
|
|
21
|
-
* string ID. `runMigrations(db)` is idempotent: new installs run every
|
|
22
|
-
* migration in order; upgrades run only the ones not yet applied. The
|
|
23
|
-
* migration framework here intentionally mirrors `src/core/state-db.ts` so
|
|
24
|
-
* future schema evolution follows a single proven pattern.
|
|
25
|
-
*
|
|
26
|
-
* Permitted schema evolution operations (always migration-safe in SQLite):
|
|
27
|
-
* - ALTER TABLE … ADD COLUMN <name> <type> DEFAULT <value>
|
|
28
|
-
* - CREATE INDEX IF NOT EXISTS …
|
|
29
|
-
* - CREATE TABLE IF NOT EXISTS … (additive new tables)
|
|
30
|
-
*
|
|
31
|
-
* ## Bootstrapping pre-versioning databases
|
|
32
|
-
*
|
|
33
|
-
* Workflow databases created before this file gained `schema_migrations`
|
|
34
|
-
* already have the `workflow_runs.scope_key` column applied by the previous
|
|
35
|
-
* ad-hoc `PRAGMA table_info` + `ALTER TABLE` code. To avoid re-running the
|
|
36
|
-
* migration (which would no-op but still wastes work and clutters logs), the
|
|
37
|
-
* runner detects this state and back-fills the `schema_migrations` row for
|
|
38
|
-
* the scope-key migration before evaluating the migration list. See
|
|
39
|
-
* `bootstrapPreVersioningDb()`.
|
|
40
|
-
*
|
|
41
|
-
* @module workflows/db
|
|
42
|
-
*/
|
|
43
|
-
// ── Public API ───────────────────────────────────────────────────────────────
|
|
44
|
-
export function openWorkflowDatabase(dbPath = getWorkflowDbPath()) {
|
|
45
|
-
const dir = path.dirname(dbPath);
|
|
46
|
-
if (!fs.existsSync(dir)) {
|
|
47
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
48
|
-
}
|
|
49
|
-
const db = openDatabase(dbPath);
|
|
50
|
-
// #589: 30 s busy timeout, matching index.db / state.db. Without it the
|
|
51
|
-
// default is 0 ms, so any concurrent writer fails immediately with
|
|
52
|
-
// SQLITE_BUSY. #628: journal_mode is configurable via AKM_SQLITE_JOURNAL_MODE.
|
|
53
|
-
applyStandardPragmas(db, { dataDir: dir });
|
|
54
|
-
ensureBaseSchema(db);
|
|
55
|
-
runMigrations(db);
|
|
56
|
-
return db;
|
|
57
|
-
}
|
|
58
|
-
export function closeWorkflowDatabase(db) {
|
|
59
|
-
db.close();
|
|
60
|
-
}
|
|
61
|
-
// ── Base schema ──────────────────────────────────────────────────────────────
|
|
62
|
-
/**
|
|
63
|
-
* Create the baseline `workflow_runs` and `workflow_run_steps` tables if they
|
|
64
|
-
* do not exist. These statements are idempotent: existing databases keep their
|
|
65
|
-
* current schema, and migrations evolve them further.
|
|
66
|
-
*
|
|
67
|
-
* NOTE: the `scope_key` column on `workflow_runs` is intentionally NOT declared
|
|
68
|
-
* here. It is added by migration `001-add-scope-key`. Fresh databases will run
|
|
69
|
-
* the migration immediately on first open; pre-versioning databases that
|
|
70
|
-
* already have the column are bootstrapped — see {@link runMigrations}.
|
|
71
|
-
*/
|
|
72
|
-
function ensureBaseSchema(db) {
|
|
73
|
-
db.exec(`
|
|
74
|
-
CREATE TABLE IF NOT EXISTS workflow_runs (
|
|
75
|
-
id TEXT PRIMARY KEY,
|
|
76
|
-
workflow_ref TEXT NOT NULL,
|
|
77
|
-
workflow_entry_id INTEGER,
|
|
78
|
-
workflow_title TEXT NOT NULL,
|
|
79
|
-
status TEXT NOT NULL CHECK (status IN ('active', 'completed', 'blocked', 'failed')),
|
|
80
|
-
params_json TEXT NOT NULL DEFAULT '{}',
|
|
81
|
-
current_step_id TEXT,
|
|
82
|
-
created_at TEXT NOT NULL,
|
|
83
|
-
updated_at TEXT NOT NULL,
|
|
84
|
-
completed_at TEXT
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_ref ON workflow_runs(workflow_ref);
|
|
88
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_status ON workflow_runs(status);
|
|
89
|
-
|
|
90
|
-
CREATE TABLE IF NOT EXISTS workflow_run_steps (
|
|
91
|
-
run_id TEXT NOT NULL,
|
|
92
|
-
step_id TEXT NOT NULL,
|
|
93
|
-
step_title TEXT NOT NULL,
|
|
94
|
-
instructions TEXT NOT NULL,
|
|
95
|
-
completion_json TEXT,
|
|
96
|
-
sequence_index INTEGER NOT NULL,
|
|
97
|
-
status TEXT NOT NULL CHECK (status IN ('pending', 'completed', 'blocked', 'failed', 'skipped')),
|
|
98
|
-
notes TEXT,
|
|
99
|
-
evidence_json TEXT,
|
|
100
|
-
completed_at TEXT,
|
|
101
|
-
PRIMARY KEY (run_id, step_id),
|
|
102
|
-
FOREIGN KEY (run_id) REFERENCES workflow_runs(id) ON DELETE CASCADE
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_run_steps_run_sequence
|
|
106
|
-
ON workflow_run_steps(run_id, sequence_index);
|
|
107
|
-
`);
|
|
108
|
-
}
|
|
109
|
-
// ── Migration engine ─────────────────────────────────────────────────────────
|
|
110
|
-
//
|
|
111
|
-
// The runner itself (ensureMigrationsTable + runMigrations) lives in the shared
|
|
112
|
-
// engine at src/storage/engines/sqlite-migrations.ts. This module owns its own
|
|
113
|
-
// MIGRATIONS array plus the pre-versioning `bootstrap` hook, and delegates
|
|
114
|
-
// application to that shared runner. The {@link Migration} interface is imported
|
|
115
|
-
// from there.
|
|
116
|
-
/**
|
|
117
|
-
* All workflow.db migrations in application order. New migrations are
|
|
118
|
-
* APPENDED — never inserted in the middle or reordered.
|
|
119
|
-
*/
|
|
120
|
-
const MIGRATIONS = [
|
|
121
|
-
// ── Migration 001 — add scope_key column ────────────────────────────────────
|
|
122
|
-
//
|
|
123
|
-
// Adds the `scope_key` column to `workflow_runs` so runs can be partitioned
|
|
124
|
-
// per stash/scope. Pre-versioning databases that already have this column
|
|
125
|
-
// are bootstrapped before this migration runs — see runMigrations().
|
|
126
|
-
{
|
|
127
|
-
id: "001-add-scope-key",
|
|
128
|
-
up: `
|
|
129
|
-
ALTER TABLE workflow_runs ADD COLUMN scope_key TEXT;
|
|
130
|
-
|
|
131
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_scope_ref_status
|
|
132
|
-
ON workflow_runs(scope_key, workflow_ref, status);
|
|
133
|
-
`,
|
|
134
|
-
},
|
|
135
|
-
// ── Migration 002 — record agent harness + session identity ──────────────────
|
|
136
|
-
//
|
|
137
|
-
// Persists the agent harness identifier (e.g. "claude-code", "opencode") and
|
|
138
|
-
// the platform-native session id that owns each workflow run. This is the
|
|
139
|
-
// first concrete slice of #501 / #506: capturing *who* is driving a run so a
|
|
140
|
-
// future (separately-approved) monitor can correlate workflow runs with
|
|
141
|
-
// session activity. Both columns are nullable — runs started outside an agent
|
|
142
|
-
// harness, and all pre-existing runs, simply have NULL identity.
|
|
143
|
-
{
|
|
144
|
-
id: "002-add-agent-identity",
|
|
145
|
-
up: `
|
|
146
|
-
ALTER TABLE workflow_runs ADD COLUMN agent_harness TEXT;
|
|
147
|
-
ALTER TABLE workflow_runs ADD COLUMN agent_session_id TEXT;
|
|
148
|
-
|
|
149
|
-
CREATE INDEX IF NOT EXISTS idx_workflow_runs_agent_session
|
|
150
|
-
ON workflow_runs(agent_harness, agent_session_id);
|
|
151
|
-
`,
|
|
152
|
-
},
|
|
153
|
-
// ── Migration 003 — check-in arming + per-step summary (#506) ────────────────
|
|
154
|
-
//
|
|
155
|
-
// Builds on the agent identity recorded by migration 002. Arms a file-signal
|
|
156
|
-
// check-in (a timestamp, NOT a background thread — see
|
|
157
|
-
// docs/technical/workflow-agent-checkin-adr.md) so a stalled run can be
|
|
158
|
-
// re-targeted with a `continue` directive, and adds a per-step `summary`
|
|
159
|
-
// column so step/workflow completion can capture and validate a required
|
|
160
|
-
// summary of work done. Both columns are nullable.
|
|
161
|
-
{
|
|
162
|
-
id: "003-checkin-and-step-summary",
|
|
163
|
-
up: `
|
|
164
|
-
ALTER TABLE workflow_runs ADD COLUMN checkin_armed_at TEXT;
|
|
165
|
-
ALTER TABLE workflow_run_steps ADD COLUMN summary TEXT;
|
|
166
|
-
`,
|
|
167
|
-
},
|
|
168
|
-
];
|
|
169
|
-
/**
|
|
170
|
-
* Stable id of the scope_key migration. Exported for bootstrap detection and
|
|
171
|
-
* tests.
|
|
172
|
-
*/
|
|
173
|
-
const SCOPE_KEY_MIGRATION_ID = "001-add-scope-key";
|
|
174
|
-
/**
|
|
175
|
-
* Detect whether a column exists on a given table.
|
|
176
|
-
*/
|
|
177
|
-
function hasColumn(db, table, column) {
|
|
178
|
-
const rows = db.prepare(`PRAGMA table_info(${table})`).all();
|
|
179
|
-
return rows.some((r) => r.name === column);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Back-fill `schema_migrations` rows for any schema state that existed before
|
|
183
|
-
* this file gained migration tracking.
|
|
184
|
-
*
|
|
185
|
-
* The pre-versioning code added the `scope_key` column on `workflow_runs` via
|
|
186
|
-
* an ad-hoc PRAGMA / ALTER TABLE pair. Those databases must not re-run the
|
|
187
|
-
* scope_key migration (the ALTER would fail with "duplicate column name"
|
|
188
|
-
* since the migration body does not use IF NOT EXISTS — SQLite does not
|
|
189
|
-
* support that clause on ALTER TABLE ADD COLUMN). Instead, we mark the
|
|
190
|
-
* migration as already applied.
|
|
191
|
-
*
|
|
192
|
-
* This function is a no-op on fresh databases: the `scope_key` column does
|
|
193
|
-
* not exist, so the migration runs normally and records itself.
|
|
194
|
-
*/
|
|
195
|
-
function bootstrapPreVersioningDb(db) {
|
|
196
|
-
const alreadyRecorded = db.prepare("SELECT 1 FROM schema_migrations WHERE id = ?").get(SCOPE_KEY_MIGRATION_ID);
|
|
197
|
-
if (alreadyRecorded)
|
|
198
|
-
return;
|
|
199
|
-
if (hasColumn(db, "workflow_runs", "scope_key")) {
|
|
200
|
-
db.prepare("INSERT INTO schema_migrations (id) VALUES (?)").run(SCOPE_KEY_MIGRATION_ID);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Apply every pending migration in a single transaction per migration.
|
|
205
|
-
*
|
|
206
|
-
* Delegates to the shared SQLite migration engine, passing the
|
|
207
|
-
* `bootstrapPreVersioningDb` hook so databases created before this file gained
|
|
208
|
-
* migration tracking back-fill their scope_key row instead of re-running the
|
|
209
|
-
* ALTER.
|
|
210
|
-
*
|
|
211
|
-
* Called automatically by {@link openWorkflowDatabase}.
|
|
212
|
-
*/
|
|
213
|
-
export function runMigrations(db) {
|
|
214
|
-
runSqliteMigrations(db, MIGRATIONS, { bootstrap: bootstrapPreVersioningDb });
|
|
215
|
-
}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
# AKM Data & Telemetry
|
|
2
|
-
|
|
3
|
-
AKM stores data locally on your machine. **It has no remote telemetry.** No data is sent to Anthropic, the AKM project, or any third party. This document describes exactly what AKM reads and writes on your machine.
|
|
4
|
-
|
|
5
|
-
## No Remote Data Collection
|
|
6
|
-
|
|
7
|
-
AKM does not:
|
|
8
|
-
- Send usage data, events, or crash reports to any server
|
|
9
|
-
- Contact any AKM-operated endpoint at runtime (only your own configured LLM/embedding endpoints)
|
|
10
|
-
- Include any analytics SDK or beacon
|
|
11
|
-
- Collect email, name, or any personally-identifying information
|
|
12
|
-
|
|
13
|
-
The only network requests AKM makes are:
|
|
14
|
-
1. Fetching registry metadata and stash packages from sources you explicitly configure (GitHub, npm, websites)
|
|
15
|
-
2. Calls to your configured LLM/embedding endpoint (if you enabled those features)
|
|
16
|
-
3. `akm upgrade` — fetches the latest release from GitHub releases
|
|
17
|
-
4. `akm setup` — a single DNS lookup for `github.com` to decide whether to skip network-dependent steps (Ollama detection, remote embedding probes) when offline. No HTTP request is made by this probe; if it succeeds, akm proceeds with the network-dependent steps you already configured.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Local On-Disk Surface
|
|
22
|
-
|
|
23
|
-
AKM writes to these locations on your machine. All paths follow [XDG Base Directory](https://specifications.freedesktop.org/basedir-spec/latest/) conventions on Linux/macOS and Windows conventions on Windows.
|
|
24
|
-
|
|
25
|
-
### Config Directory (`$XDG_CONFIG_HOME/akm` or `~/.config/akm/`)
|
|
26
|
-
|
|
27
|
-
| Path | Contents | Safe to delete? |
|
|
28
|
-
|---|---|---|
|
|
29
|
-
| `config.json` | Your AKM configuration: LLM endpoints, stash paths, feature flags, profiles | **No** — deleting resets all settings |
|
|
30
|
-
|
|
31
|
-
Override: set `AKM_CONFIG_DIR` or `XDG_CONFIG_HOME`.
|
|
32
|
-
|
|
33
|
-
### Data Directory (`$XDG_DATA_HOME/akm` or `~/.local/share/akm/`)
|
|
34
|
-
|
|
35
|
-
| Path | Contents | Safe to delete? |
|
|
36
|
-
|---|---|---|
|
|
37
|
-
| `index.db` | Search index for all your stash assets (FTS5 + metadata) | Yes — rebuilds via `akm index --full` |
|
|
38
|
-
| `workflow.db` | Workflow run state and history | Caution — deletes run history |
|
|
39
|
-
| `state.db` | Events, proposals, task history, improve run results | **No** — deletes event log, proposal queue, improve history |
|
|
40
|
-
| `akm.lock` | Inter-process write lock | Yes — recreated automatically |
|
|
41
|
-
| `akm.lock.lck` | Lock write sentinel | Yes — recreated automatically |
|
|
42
|
-
|
|
43
|
-
Override: set `AKM_DATA_DIR` or `XDG_DATA_HOME`.
|
|
44
|
-
|
|
45
|
-
### Cache Directory (`$XDG_CACHE_HOME/akm` or `~/.cache/akm/`)
|
|
46
|
-
|
|
47
|
-
Everything in the cache is regenerable. It is safe to delete the entire cache directory; AKM will recreate what it needs on next use.
|
|
48
|
-
|
|
49
|
-
| Path | Contents | Safe to delete? |
|
|
50
|
-
|---|---|---|
|
|
51
|
-
| `config-backups/config-<timestamp>.json` | Pre-save config snapshots (5 retained; owner-only permissions — file `0600`, dir `0700`, since 08-F4) | Yes |
|
|
52
|
-
| `config-backups/config.latest.json` | Latest backup alias (owner-only `0600`) | Yes |
|
|
53
|
-
| `registry/` | Downloaded registry tarballs (stash packages from npm, GitHub, etc.) | Yes — re-downloaded on next `akm add` or `akm update` |
|
|
54
|
-
| `registry-index/` | Legacy per-URL JSON cache (v0.7 artifact) | Yes — fully replaced by `index.db` in 0.8.0 |
|
|
55
|
-
| `semantic-status.json` | Semantic index build status marker | Yes |
|
|
56
|
-
| `bin/` | Downloaded AKM binary cache (used by `akm upgrade`) | Yes |
|
|
57
|
-
| `tasks/logs/` | Scheduled task log files | Yes — ephemeral logs |
|
|
58
|
-
| `tasks/history/` | Legacy task history JSONL (v0.7 migration artifact) | Yes |
|
|
59
|
-
|
|
60
|
-
Override: set `AKM_CACHE_DIR` or `XDG_CACHE_HOME`.
|
|
61
|
-
|
|
62
|
-
### Stash Directory (`~/akm/` by default, or user-configured)
|
|
63
|
-
|
|
64
|
-
| Path | Contents | Safe to delete? |
|
|
65
|
-
|---|---|---|
|
|
66
|
-
| `<stash>/` | All your asset files: agents, skills, commands, knowledge, workflows, memories, env files, secrets, wikis, lessons, facts | **No** — this is YOUR data |
|
|
67
|
-
| `<stash>/.akm/` | Hidden AKM metadata (v0.7 proposals, legacy runs) | Caution — check for pending proposals first |
|
|
68
|
-
|
|
69
|
-
Override: set `AKM_STASH_DIR` (or configure `stashDir` in `config.json`).
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## What Is Stored in `state.db`
|
|
74
|
-
|
|
75
|
-
`state.db` holds three categories of non-regenerable data:
|
|
76
|
-
|
|
77
|
-
### 1. Events Table
|
|
78
|
-
|
|
79
|
-
An append-only log of every mutating action you perform with AKM. Events are stored locally for self-improvement (the improve loop uses them to surface usage patterns) and for inspection via `akm log`.
|
|
80
|
-
|
|
81
|
-
**What is recorded:**
|
|
82
|
-
- `event_type` — what action was taken (see full list below)
|
|
83
|
-
- `ts` — ISO-8601 UTC timestamp
|
|
84
|
-
- `ref` — the asset ref affected (e.g. `skill:code-review`), if applicable
|
|
85
|
-
- `metadata` — structured payload specific to the event type (e.g. query text for `search`, score for `feedback`)
|
|
86
|
-
|
|
87
|
-
**What is NOT recorded:**
|
|
88
|
-
- File contents
|
|
89
|
-
- LLM prompts or responses
|
|
90
|
-
- API keys or secrets (config is not stored in events)
|
|
91
|
-
- Personal information
|
|
92
|
-
|
|
93
|
-
**Retention:** Events older than 90 days are purged automatically when `akm improve` runs its maintenance pass. Purge is controlled by `purgeOldEvents()` with a 90-day default.
|
|
94
|
-
|
|
95
|
-
**Full event type list:**
|
|
96
|
-
|
|
97
|
-
| Event type | When emitted | Key metadata fields |
|
|
98
|
-
|---|---|---|
|
|
99
|
-
| `add` | `akm add <source>` | `ref`, `provider` |
|
|
100
|
-
| `remove` | `akm remove <source>` | `ref` |
|
|
101
|
-
| `update` | `akm update [source]` | `ref` |
|
|
102
|
-
| `remember` | `akm remember <text>` | `ref` |
|
|
103
|
-
| `import` | `akm import <file>` | `ref` |
|
|
104
|
-
| `save` | `akm sync` | `ref` |
|
|
105
|
-
| `feedback` | `akm feedback <ref>` | `signal` (positive/negative) |
|
|
106
|
-
| `search` | `akm search <query>` | `query`, `source`, `signal` |
|
|
107
|
-
| `curate` | `akm curate <prompt>` | `query`, `source` |
|
|
108
|
-
| `show` | `akm show <ref>` | `ref`, `type`, `name` |
|
|
109
|
-
| `select` | `akm show` after a search returning the same ref | `ref`, `entryId` |
|
|
110
|
-
| `promoted` | `akm proposal accept <id>` | `ref` |
|
|
111
|
-
| `rejected` | `akm proposal reject <id>` | `ref` |
|
|
112
|
-
| `reflect_invoked` | Start of reflect phase in `akm improve` | `ref`, profile |
|
|
113
|
-
| `reflect_completed` | Reflect phase produced a proposal | `ref` |
|
|
114
|
-
| `improve_reflect_outcome` | Per-asset reflect result | `ref`, `ok`, `durationMs`, `reason` |
|
|
115
|
-
| `propose_invoked` | `akm propose` | `ref` |
|
|
116
|
-
| `distill_invoked` | `akm distill` | |
|
|
117
|
-
| `improve_skipped` | Asset skipped by cooldown or budget | `ref`, `reason` |
|
|
118
|
-
| `improve_completed` | `akm improve` run finished | run stats |
|
|
119
|
-
| `improve_failed` | `akm improve` run errored | error |
|
|
120
|
-
| `improve_lock_recovered` | Stale lock cleared at startup | |
|
|
121
|
-
| `proposal_orphan_purge` | Stale proposals pruned | `checked`, `rejected` |
|
|
122
|
-
| `proposal_creation_rejected` | `createProposal()` validation failed | `ref`, `reason`, `source` |
|
|
123
|
-
| `proposal_expired` | Proposal expired | `ref` |
|
|
124
|
-
| `events_purged` | Old events deleted by maintenance | `purgedCount`, `retentionDays` |
|
|
125
|
-
| `workflow_started` | `akm workflow start <ref>` | `ref`, `runId` |
|
|
126
|
-
| `workflow_step_completed` | `akm workflow next` | `ref`, `runId`, `stepId` |
|
|
127
|
-
| `workflow_finished` | `akm workflow complete` | `ref`, `runId` |
|
|
128
|
-
| `schema_repair_invoked` | `akm lint --repair` triggered schema repair | `ref` |
|
|
129
|
-
| `archive_cleanup` | Archive cleanup during consolidation | |
|
|
130
|
-
|
|
131
|
-
### 2. Proposals Table
|
|
132
|
-
|
|
133
|
-
The proposal queue: pending, accepted, and rejected improvement proposals for your stash assets. Generated by `akm improve`, `akm propose`, and related proposal-producing flows.
|
|
134
|
-
|
|
135
|
-
Contents:
|
|
136
|
-
- Proposal UUID (primary key)
|
|
137
|
-
- Target asset ref
|
|
138
|
-
- Status (pending/accepted/rejected)
|
|
139
|
-
- Source (which process generated it — e.g. `reflect`, `distill`)
|
|
140
|
-
- Full proposal content (Markdown text)
|
|
141
|
-
- Created/updated timestamps
|
|
142
|
-
|
|
143
|
-
### 3. Task History Table
|
|
144
|
-
|
|
145
|
-
A record of scheduled task runs (from `akm tasks`):
|
|
146
|
-
- Task ID, status, start/end times
|
|
147
|
-
- Log file path (the log content stays in `$CACHE/tasks/logs/`)
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## How to Inspect and Clear Local Data
|
|
152
|
-
|
|
153
|
-
### Inspect events
|
|
154
|
-
|
|
155
|
-
```sh
|
|
156
|
-
# List recent events
|
|
157
|
-
akm log list
|
|
158
|
-
|
|
159
|
-
# Stream live events (tail)
|
|
160
|
-
akm log tail
|
|
161
|
-
|
|
162
|
-
# Filter by type
|
|
163
|
-
akm log list --type search --limit 20
|
|
164
|
-
|
|
165
|
-
# Filter by asset ref
|
|
166
|
-
akm log list --ref skill:code-review
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Inspect proposals
|
|
170
|
-
|
|
171
|
-
```sh
|
|
172
|
-
# List pending proposals
|
|
173
|
-
akm proposal list
|
|
174
|
-
|
|
175
|
-
# Show a specific proposal
|
|
176
|
-
akm proposal show <id>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Clear specific data
|
|
180
|
-
|
|
181
|
-
```sh
|
|
182
|
-
# Delete the search index (safe — rebuilds with akm index --full)
|
|
183
|
-
rm ~/.local/share/akm/index.db
|
|
184
|
-
|
|
185
|
-
# Delete all cached registry downloads
|
|
186
|
-
rm -rf ~/.cache/akm/registry/
|
|
187
|
-
|
|
188
|
-
# Delete config backups
|
|
189
|
-
rm -rf ~/.cache/akm/config-backups/
|
|
190
|
-
|
|
191
|
-
# Delete the events log from state.db (non-reversible)
|
|
192
|
-
# There is no akm CLI command to do this directly in 0.8.0.
|
|
193
|
-
# Use SQLite directly:
|
|
194
|
-
sqlite3 ~/.local/share/akm/state.db "DELETE FROM events;"
|
|
195
|
-
|
|
196
|
-
# Delete all proposals
|
|
197
|
-
sqlite3 ~/.local/share/akm/state.db "DELETE FROM proposals;"
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### Start completely fresh (nuclear reset)
|
|
201
|
-
|
|
202
|
-
```sh
|
|
203
|
-
rm -f ~/.config/akm/config.json
|
|
204
|
-
rm -rf ~/.local/share/akm/
|
|
205
|
-
rm -rf ~/.cache/akm/
|
|
206
|
-
# Your stash files in ~/akm/ are NOT touched by the above.
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## Environment Variable Overrides
|
|
212
|
-
|
|
213
|
-
You can redirect any AKM directory to a custom path:
|
|
214
|
-
|
|
215
|
-
| Variable | Overrides |
|
|
216
|
-
|---|---|
|
|
217
|
-
| `AKM_CONFIG_DIR` | Config directory (`~/.config/akm/`) |
|
|
218
|
-
| `AKM_DATA_DIR` | Data directory (`~/.local/share/akm/`) |
|
|
219
|
-
| `AKM_SQLITE_JOURNAL_MODE` | SQLite journal mode: `WAL` (default), `DELETE`, or `TRUNCATE`. Use `DELETE`/`TRUNCATE` on network filesystems (NFS/SMB) where WAL is impossible. When left at the `WAL` default, akm auto-detects a network FS for the data dir and falls back to `DELETE`. |
|
|
220
|
-
| `AKM_STATE_DIR` | State directory (`~/.local/state/akm/`) |
|
|
221
|
-
| `AKM_CACHE_DIR` | Cache directory (`~/.cache/akm/`) |
|
|
222
|
-
| `AKM_STASH_DIR` | Default stash directory (`~/akm/`) |
|
|
223
|
-
| `XDG_CONFIG_HOME` | XDG base — akm appends `/akm` |
|
|
224
|
-
| `XDG_DATA_HOME` | XDG base — akm appends `/akm` |
|
|
225
|
-
| `XDG_STATE_HOME` | XDG base — akm appends `/akm` |
|
|
226
|
-
| `XDG_CACHE_HOME` | XDG base — akm appends `/akm` |
|
|
File without changes
|
|
File without changes
|