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
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for knowledge assets as compiled, on-demand reference documents.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a knowledge asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -36,5 +38,15 @@ Use a knowledge asset for durable reference material, synthesized explanations,
|
|
|
36
38
|
|
|
37
39
|
- Update the existing page when new information changes the same topic; append a dated note rather than silently rewriting when provenance matters.
|
|
38
40
|
- Create a new page when the concept deserves its own durable entry.
|
|
39
|
-
- Add
|
|
41
|
+
- Add a return link when you are already editing the related page in the same pass.
|
|
40
42
|
- Periodically scan for orphaned, stale, or overlapping knowledge docs and consolidate them.
|
|
43
|
+
|
|
44
|
+
## Placement & linking
|
|
45
|
+
|
|
46
|
+
- Knowledge is **reuse-born**: file it under a stable **domain** prefix from
|
|
47
|
+
`facts/conventions/domains` (`knowledge/auth/oauth-refresh-races`), not under a
|
|
48
|
+
project — that domain slug is what any project searches to reuse it.
|
|
49
|
+
- Knowledge pages are the rewritable synthesized layer — update them in place.
|
|
50
|
+
Ingested source material stays immutable; corrections to it are new assets
|
|
51
|
+
that xref the source. Carry a provenance xref when derived, and a
|
|
52
|
+
self-situating header.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for lesson assets that capture compounding, hard-won judgment.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a lesson asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -40,4 +42,10 @@ Use a lesson to record:
|
|
|
40
42
|
- Update an existing lesson when new feedback sharpens the same judgment.
|
|
41
43
|
- Create a new lesson only when the trigger or failure mode is meaningfully different.
|
|
42
44
|
- Deprecate or revise stale lessons instead of allowing contradictory guidance to accumulate.
|
|
43
|
-
- When a lesson becomes broadly normative, consider promoting the stable rule into a `
|
|
45
|
+
- When a lesson becomes broadly normative, consider promoting the stable rule into a `facts/conventions/...` asset.
|
|
46
|
+
|
|
47
|
+
## Placement & linking
|
|
48
|
+
|
|
49
|
+
- Lessons are **scope-born**: file them under the **project/client** they were
|
|
50
|
+
learned in (`lessons/projectA/token-refresh-gotcha`) and xref the asset the
|
|
51
|
+
lesson corrects or refines.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for memory assets using durable-context and provenance discipline.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a memory asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -36,3 +38,12 @@ Use a memory when a future agent would make a better decision by knowing a speci
|
|
|
36
38
|
- Consolidate repeated memories into a clearer fact or knowledge asset.
|
|
37
39
|
- Convert broad, stable conventions into `fact` assets.
|
|
38
40
|
- Archive memories that are no longer current rather than letting stale context keep influencing agents.
|
|
41
|
+
|
|
42
|
+
## Placement & linking
|
|
43
|
+
|
|
44
|
+
- Memories are **scope-born**: file them under the **current project/client**
|
|
45
|
+
slug (`memories/projectA/auth-token-refresh`) — the working context is the
|
|
46
|
+
answer, so no per-asset judgment is needed. Add the subject as a tag
|
|
47
|
+
(`tags: [auth, projectA]`) for cross-cutting recall.
|
|
48
|
+
- When a memory turns out to be domain-general, **append** a new
|
|
49
|
+
`knowledge/<domain>/…` asset that xrefs it — never rename the memory up a rung.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for script assets using agent-safe CLI helper principles.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a script asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -41,3 +43,10 @@ Use a script when a task is mechanical, repeatable, and better handled by a dete
|
|
|
41
43
|
- Keep dangerous actions behind explicit flags.
|
|
42
44
|
- When a script becomes a core operation, add or update a workflow that explains when to run it.
|
|
43
45
|
- If the script encodes a convention, also document that convention in a fact or knowledge asset.
|
|
46
|
+
|
|
47
|
+
## Placement & linking
|
|
48
|
+
|
|
49
|
+
- Scripts are **reuse-born**: file a general helper under a tool/domain slug
|
|
50
|
+
from `facts/conventions/domains` (`scripts/build/release`). Use the project slug
|
|
51
|
+
only when the script hard-codes project-specific paths, endpoints, or
|
|
52
|
+
credentials.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for skill assets as reusable, just-in-time procedural rulebooks.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a skill asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -38,3 +40,10 @@ Use a skill when the stash needs reusable procedural guidance for a recurring cl
|
|
|
38
40
|
- Add companion knowledge docs when the skill needs background material that would bloat the main procedure.
|
|
39
41
|
- Promote durable recurring corrections into the skill; leave one-off observations in memories or lessons.
|
|
40
42
|
- Prefer small edits that preserve the skill’s operational shape over broad rewrites that erase tested guidance.
|
|
43
|
+
|
|
44
|
+
## Placement & linking
|
|
45
|
+
|
|
46
|
+
- Skills are **reuse-born**: place `skills/<domain>/<name>/SKILL.md` under a
|
|
47
|
+
stable **domain** prefix from `facts/conventions/domains`
|
|
48
|
+
(`skills/testing/flaky-test-triage`) so any project finds and reuses it instead
|
|
49
|
+
of duplicating the procedure.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
type: fact
|
|
2
3
|
category: convention
|
|
3
4
|
description: Soft authoring conventions for workflow assets using explicit operations, logging, and lintable steps.
|
|
4
5
|
when_to_use: Surfaced to authoring agents when they write or revise a workflow asset.
|
|
6
|
+
updated: 2026-07-28
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
<!--
|
|
@@ -41,3 +43,9 @@ Use a workflow when the task requires multiple steps, branching decisions, repea
|
|
|
41
43
|
- Add logging expectations when the workflow creates durable state.
|
|
42
44
|
- Extract reusable sub-procedures into skills or scripts when the workflow grows too broad.
|
|
43
45
|
- Record recurring mistakes as lessons, then fold stable corrections back into the workflow.
|
|
46
|
+
|
|
47
|
+
## Placement & linking
|
|
48
|
+
|
|
49
|
+
- Workflows are usually **global**: keep them at the type root or under a
|
|
50
|
+
tool/domain slug (`workflows/release-train`). Scoping a workflow to one project
|
|
51
|
+
rarely improves retrieval and adds rename risk.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: fact
|
|
3
|
+
category: convention
|
|
4
|
+
description: How to cross-link assets so retrieval compounds — a provenance xref when derived, sparse real associative xrefs, corrections as new assets, and canonical entity naming.
|
|
5
|
+
when_to_use: Surfaced to authoring agents when they create or revise any asset that derives from, corrects, or relates to another asset.
|
|
6
|
+
updated: 2026-07-28
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
SOFT guidance only — advice, not a contract. Back-linking here is a RETRIEVAL
|
|
11
|
+
mechanism, not decoration: `xrefs:` frontmatter folds into the search index;
|
|
12
|
+
the entity/relation graph is extracted from BODY prose (memory + knowledge),
|
|
13
|
+
never from frontmatter. Over-linking degrades ranking, so these rules are
|
|
14
|
+
deliberately conservative. (LLM-wiki bundles carry their own xref system in
|
|
15
|
+
their pages' frontmatter — this convention is for in-stash assets.)
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
# Back-linking conventions
|
|
19
|
+
|
|
20
|
+
Cross-references are how knowledge compounds instead of being re-derived every
|
|
21
|
+
session. In AKM they are also **indexed**: the strings in an asset's `xrefs:`
|
|
22
|
+
frontmatter fold into its search-hint text, and knowledge/memory bodies feed an
|
|
23
|
+
LLM-extracted entity/relation graph that boosts ranking. So links are a retrieval
|
|
24
|
+
lever — which means both too few and too many hurt.
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
---
|
|
28
|
+
description: OAuth refresh-token race on token rotation
|
|
29
|
+
tags: [auth, projectA]
|
|
30
|
+
xrefs:
|
|
31
|
+
- knowledge/auth/vendor-x-token-api # provenance: what this was synthesized from
|
|
32
|
+
- lessons/projectA/token-refresh-gotcha # one real associative link
|
|
33
|
+
---
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Link rules
|
|
37
|
+
|
|
38
|
+
- **One xref is mandatory when the asset derives from another: cite the source
|
|
39
|
+
ref** (`memories/projectA/token-quirk` xrefs `knowledge/auth/vendor-x-token-api`
|
|
40
|
+
— it also makes this asset findable from searches for its source). An
|
|
41
|
+
original observation with no source carries none — never invent provenance.
|
|
42
|
+
`akm remember`/`akm import` write this channel via `--xref <ref>`
|
|
43
|
+
(repeatable; refs are checked at write time). LLM-wiki bundles enforce the
|
|
44
|
+
analogous rule mechanically (`sources:` frontmatter citations); in-stash
|
|
45
|
+
provenance is discipline only.
|
|
46
|
+
- **Associative xrefs are discretionary — real relationships only.** Add one when
|
|
47
|
+
you already know a genuine load-bearing connection. Do **not** hit a link
|
|
48
|
+
quota by pointing at the topically-nearest sibling — a plausible-but-wrong
|
|
49
|
+
xref makes this asset a false search match for the other topic, and a wrong
|
|
50
|
+
relationship asserted in prose poisons the entity graph. A relationship you
|
|
51
|
+
want the graph to learn must be named in the body (e.g. open with "Corrects
|
|
52
|
+
knowledge/auth/oauth-refresh-races").
|
|
53
|
+
- **Cap total xrefs at ~5 (a heuristic, not a measured threshold).** Each xref
|
|
54
|
+
folds its ref tokens into THIS asset's search hints — past a handful, the
|
|
55
|
+
asset matches queries about several other topics and its own ranking signal
|
|
56
|
+
blurs.
|
|
57
|
+
- **Corrections are new assets; ingested material is immutable.** Treat
|
|
58
|
+
ingested raw material, vendored docs, and transcripts as
|
|
59
|
+
immutable-by-discipline: a hard-won fix is a new `lessons/` or `knowledge/`
|
|
60
|
+
asset that xrefs what it corrects.
|
|
61
|
+
Synthesized `knowledge/` pages are the rewritable layer — update them in
|
|
62
|
+
place. When a correction supersedes a standalone asset (memory OR knowledge),
|
|
63
|
+
also set the old asset's `beliefState: superseded` and
|
|
64
|
+
`supersededBy: [<new ref>]` — a metadata edit, not a content edit — so the
|
|
65
|
+
ranker demotes the stale version instead of letting it outrank your fix.
|
|
66
|
+
`akm remember`/`akm import` do both writes in one step via
|
|
67
|
+
`--supersedes <old ref>` (adds the xref and demotes the old asset).
|
|
68
|
+
- **Bidirectional back-links are best-effort.** Add a return xref only when you
|
|
69
|
+
are already editing the target in the same pass. Never require editing a
|
|
70
|
+
separate hot file just to add a back-xref — concurrent writes drop it under
|
|
71
|
+
last-writer-wins and no lint will notice.
|
|
72
|
+
|
|
73
|
+
## Self-situating headers and canonical naming
|
|
74
|
+
|
|
75
|
+
Put the one-line orientation in `description:` and the trigger conditions in
|
|
76
|
+
`when_to_use:` — those are indexed fields; body prose is not indexed by
|
|
77
|
+
default (only headings reach the index; the opt-in `index.indexBodyOpening`
|
|
78
|
+
flag adds just the first body paragraph, at the lowest weight —
|
|
79
|
+
`description:`/`when_to_use:` remain the primary orientation channel). Then
|
|
80
|
+
open the body with a plain title plus a one-line
|
|
81
|
+
orientation naming what it is, its scope/domain, and its key entities in
|
|
82
|
+
canonical spelling (`Postgres`, `OAuth`, `TLS`, `Acme`) — the entity/relation
|
|
83
|
+
graph is extracted from body prose, and readers land here from `akm show`.
|
|
84
|
+
Keep the canonical-spelling list in `facts/conventions/domains` so agents don't
|
|
85
|
+
fragment `postgres` / `postgresql` / `pg`.
|
|
86
|
+
|
|
87
|
+
## Hubs are optional, not per-namespace obligations
|
|
88
|
+
|
|
89
|
+
A hub (a `knowledge/` overview page that xrefs the key assets in a domain) is
|
|
90
|
+
worth authoring for a **few genuinely high-traffic domains**. Do **not**
|
|
91
|
+
mandate a hub per namespace and do not edit a hub on every write: that is O(n)
|
|
92
|
+
maintenance, a concurrent-write contention point, and it flattens the multi-hop
|
|
93
|
+
graph into a namespace-wide star. Let the FTS index be the catalog; spend the
|
|
94
|
+
effort on per-asset self-situating headers instead.
|
|
95
|
+
|
|
96
|
+
## Keep assets atomic
|
|
97
|
+
|
|
98
|
+
One concept per asset. If a note covers two concepts, write two assets and xref
|
|
99
|
+
them — atomic assets give the ranker clean, single-topic targets and give you a
|
|
100
|
+
real relationship to link rather than a blurred one to bury.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: fact
|
|
3
|
+
category: convention
|
|
4
|
+
description: The closed vocabulary of domain prefixes for reuse-born assets (knowledge/skill/fact/script), plus canonical entity spellings. Edit this to match your stash.
|
|
5
|
+
when_to_use: Surfaced to authoring agents alongside the other convention facts; consult it when picking a domain prefix for a knowledge, skill, fact, or script asset.
|
|
6
|
+
updated: 2026-07-28
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
SOFT guidance only. This is the domain vocabulary that `organization.md` refers
|
|
11
|
+
to. It is intentionally SHORT and STARTER — replace these with the domains your
|
|
12
|
+
stash actually accumulates. A closed list keeps agents from coining a new
|
|
13
|
+
folder per session (which fragments the tree and splits slug search); the flat
|
|
14
|
+
type-root fallback in organization.md handles anything that doesn't fit yet.
|
|
15
|
+
-->
|
|
16
|
+
|
|
17
|
+
# Domain vocabulary
|
|
18
|
+
|
|
19
|
+
Reuse-born assets (`knowledge`, `skill`, `fact`, `script`) take a
|
|
20
|
+
**domain prefix** from this list, e.g. `knowledge/auth/oauth-refresh-races`,
|
|
21
|
+
`skills/testing/flaky-test-triage`. Pick the closest match. If two fit, take the one naming the
|
|
22
|
+
SUBJECT of the doc (what it teaches, not where it was met) and put the other in
|
|
23
|
+
tags; if still tied, the earlier entry in this list wins. If nothing fits, write
|
|
24
|
+
the asset at the type root and propose an addition here — do **not** invent a
|
|
25
|
+
one-off domain mid-task.
|
|
26
|
+
|
|
27
|
+
## Starter domains
|
|
28
|
+
|
|
29
|
+
Add, remove, and rename to fit your stash. Keep the list short (roughly a dozen)
|
|
30
|
+
— the whole list rides along in every authoring prompt, and a short closed list
|
|
31
|
+
is what keeps two agents picking the same slug. Add a subdomain only where
|
|
32
|
+
volume justifies it.
|
|
33
|
+
|
|
34
|
+
- `auth` — authentication, authorization, tokens, sessions
|
|
35
|
+
- `networking` — protocols, TLS, DNS, proxies, connectivity
|
|
36
|
+
- `databases` — storage engines, queries, migrations (subdomain e.g. `databases/postgres`)
|
|
37
|
+
- `testing` — test strategy, fixtures, flaky-test triage, coverage
|
|
38
|
+
- `build` — build systems, packaging, CI pipelines
|
|
39
|
+
- `cloud` — infra, deploy targets, IaC (subdomain e.g. `cloud/aws`)
|
|
40
|
+
- `observability` — logging, metrics, tracing, alerting
|
|
41
|
+
- `security` — threat modeling, secrets handling, hardening
|
|
42
|
+
- `frontend` — UI, rendering, client state
|
|
43
|
+
- `data-pipelines` — ETL, streaming, batch processing
|
|
44
|
+
- `tooling` — dev tooling, editor/agent integration, scripts
|
|
45
|
+
- `policies` — organizational/business rules the work must obey (PII handling, licensing) (`facts/policies/…`)
|
|
46
|
+
- `conventions` — stash authoring house-rules (`facts/conventions/…`; auto-surfaced to authoring agents — keep them in this directory)
|
|
47
|
+
|
|
48
|
+
## Canonical entity spellings
|
|
49
|
+
|
|
50
|
+
Pick ONE name per entity and use it everywhere in asset **bodies** — retrieval
|
|
51
|
+
is case-insensitive but treats aliases as different entities, so alias variants
|
|
52
|
+
fragment the entity graph. Extend as your stash grows.
|
|
53
|
+
|
|
54
|
+
- Postgres (not postgresql / pg)
|
|
55
|
+
- Kubernetes (not k8s)
|
|
56
|
+
- TLS (not ssl when you mean TLS)
|
|
57
|
+
- OAuth
|
|
58
|
+
|
|
59
|
+
Project and client slugs are **not** listed here — those are scope slugs for
|
|
60
|
+
scope-born types (`memory`, `lesson`, `task`, `env`, `secret`). Keep their
|
|
61
|
+
canonical spellings in a `category: meta` fact (e.g. `facts/active-projects`) so
|
|
62
|
+
they auto-inject at authoring time — not in `.meta/`, which is unindexed and
|
|
63
|
+
invisible mid-task — and `akm search` for an existing spelling before minting a
|
|
64
|
+
new one.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: fact
|
|
3
|
+
category: convention
|
|
4
|
+
description: Where to place an asset in the stash — the one path partition axis, chosen by asset type, so refs stay stable and slug search (akm search "<slug>" --type <type>) co-locates related assets.
|
|
5
|
+
when_to_use: Surfaced to authoring agents when they create or move any asset and must decide its subdirectory/name.
|
|
6
|
+
updated: 2026-07-28
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
SOFT guidance only — advice, not a contract. Nothing here is enforced by the
|
|
11
|
+
proposal gate. It steers WHERE assets go so that path-derived refs stay stable
|
|
12
|
+
and scoped search (`akm search "<slug>" --type <type>`) keeps working. Tune
|
|
13
|
+
the axis choices and the domain vocabulary to match how your stash is queried.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
# Stash organization conventions
|
|
17
|
+
|
|
18
|
+
A file's path under its type directory **becomes part of its ref**
|
|
19
|
+
(`knowledge/auth/oauth-refresh-races.md` → `knowledge/auth/oauth-refresh-races`).
|
|
20
|
+
That ref is an address other assets cite, and its segments are search terms —
|
|
21
|
+
`akm search "projectA" --type memory` reconstructs a project's memories. The
|
|
22
|
+
path is therefore the one facet you **cannot express twice and cannot change
|
|
23
|
+
without breaking the ref** — so spend it deliberately, on exactly one axis.
|
|
24
|
+
|
|
25
|
+
Retrieval is search, not browse: no one walks these folders at query time. A
|
|
26
|
+
subdirectory buys you three things: its tokens are indexed as part of the
|
|
27
|
+
asset's **name** (the highest-weighted search field), they are auto-added to
|
|
28
|
+
`tags` (even when you set `tags` explicitly), and for scope-born types a slug
|
|
29
|
+
matching the current repo's name earns an automatic in-project ranking boost.
|
|
30
|
+
Every other facet belongs in frontmatter, where the index can actually read it.
|
|
31
|
+
|
|
32
|
+
## Choose the partition axis by asset TYPE, not per-asset judgment
|
|
33
|
+
|
|
34
|
+
Deciding "project or domain?" per asset is non-deterministic — two agents guess
|
|
35
|
+
differently and bake the wrong guess into an immutable ref. Decide by type:
|
|
36
|
+
|
|
37
|
+
- **Scope-born types → current project / client / team slug.**
|
|
38
|
+
`memory`, `lesson`, `task`, `env`, `secret`. These are born bound to the work
|
|
39
|
+
in front of you, so the working context *is* the answer — no judgment needed.
|
|
40
|
+
When the scope is a single repo, use its repo/package name as the slug (as
|
|
41
|
+
`git remote`/package.json spell it) — ranking auto-boosts assets whose name
|
|
42
|
+
or tags match the current repo. Client/team slugs get no such boost; just
|
|
43
|
+
reuse the existing spelling.
|
|
44
|
+
- `memories/projectA/auth-token-refresh`
|
|
45
|
+
- `lessons/clientX/migration-rollback-gotcha`
|
|
46
|
+
- `secrets/clientX/api-key`
|
|
47
|
+
- **Reuse-born types → stable domain from a short vocabulary.**
|
|
48
|
+
`knowledge`, `skill`, `fact`, `script`. These are meant to be reused
|
|
49
|
+
across projects, so co-locate them by subject — any project retrieves them
|
|
50
|
+
with `akm search "<domain>" --type <type>`.
|
|
51
|
+
- `knowledge/auth/oauth-refresh-races`
|
|
52
|
+
- `skills/testing/flaky-test-triage`
|
|
53
|
+
- `facts/policies/pii-handling`
|
|
54
|
+
- **Global-by-nature types → type root or a tool slug.**
|
|
55
|
+
`command`, `agent`, `workflow`, and stash-wide `env`. Scoping these to a
|
|
56
|
+
project rarely improves precision and only adds rename risk. `env` defaults
|
|
57
|
+
to the project/client slug; only an env consumed by every project sits at
|
|
58
|
+
the type root — if any single project would break when it changes, it is
|
|
59
|
+
scope-born.
|
|
60
|
+
|
|
61
|
+
**Why reuse types don't take the project axis:** project relevance is already
|
|
62
|
+
recovered at query time — AKM blends a per-project usage signal into ranking
|
|
63
|
+
(scoped utility, keyed off the current repo, not the asset's path). Free the
|
|
64
|
+
scarce path segment for the domain — the *only* handle that co-locates
|
|
65
|
+
cross-project reuse.
|
|
66
|
+
|
|
67
|
+
## Placement rules
|
|
68
|
+
|
|
69
|
+
- **One axis only.** Never encode two dimensions in the path
|
|
70
|
+
(`client/project/subsystem`, or `domain+status`). Second dimensions go in tags.
|
|
71
|
+
- **Depth 1 by default, 2 max**, and only for strict stable containment
|
|
72
|
+
(`knowledge/databases/postgres/…`, `secret/clientX/projectA/…`). Never a third
|
|
73
|
+
semantic level — deeper axes go in frontmatter.
|
|
74
|
+
- **Segments are lowercase-hyphen semantic tokens** that read as query terms
|
|
75
|
+
(`connection-pooling`, `tls-handshake-debugging`) — never opaque IDs, numbers,
|
|
76
|
+
or Johnny.Decimal-style codes, which carry no search signal.
|
|
77
|
+
- **Never put a volatile facet in the path** — status, date, version, priority,
|
|
78
|
+
author, `wip`/`done`. Each one changes and forces a ref-breaking rename. They
|
|
79
|
+
belong in frontmatter tags.
|
|
80
|
+
- **Flat fallback beats an invented folder.** If no domain fits a reuse-type
|
|
81
|
+
asset, write it at the type root (`knowledge/http-retry-basics`) rather than
|
|
82
|
+
coining a one-off domain. An unneeded folder is pure rename liability; propose
|
|
83
|
+
a vocabulary addition instead of fragmenting the tree.
|
|
84
|
+
- **Reuse an existing slug before minting a new one.** Before coining a new
|
|
85
|
+
project/client/domain slug, `akm search` for the existing spelling
|
|
86
|
+
(`acme` vs `acme-corp`) so the prefix does not fragment. Keep the domain
|
|
87
|
+
vocabulary in `facts/conventions/domains`.
|
|
88
|
+
- **Off-axis facets go in `tags:`, not a bare field.** The indexed FTS fields are
|
|
89
|
+
name, description, tags, hints, and content (headings only — body prose is
|
|
90
|
+
not indexed by default; the opt-in `index.indexBodyOpening` flag adds just
|
|
91
|
+
the first body paragraph, at the lowest weight) — there is **no `project`
|
|
92
|
+
field**, so `project: projectA` in
|
|
93
|
+
frontmatter is invisible to search. Put the off-axis facet in `tags` instead
|
|
94
|
+
(a project-scoped memory adds `tags: [auth]`; a domain-scoped asset genuinely
|
|
95
|
+
tied to a project adds `tags: [projectA]` sparingly).
|
|
96
|
+
- **Directory tokens join `tags` on their own.** The scope/domain segments of
|
|
97
|
+
the path are always auto-added to `tags` — even when you set `tags`
|
|
98
|
+
explicitly — so there is no need to restate them; the tag-match ranking
|
|
99
|
+
boost fires for the scope token either way. Filename tokens are auto-added
|
|
100
|
+
only when `tags` is empty.
|
|
101
|
+
|
|
102
|
+
## Renames and evolution
|
|
103
|
+
|
|
104
|
+
- **A ref is chosen once. Default to not renaming.** A rename dangles
|
|
105
|
+
inbound xrefs silently at write time — nothing catches the breakage until
|
|
106
|
+
the next `akm lint` run flags the dead frontmatter refs (`missing-ref`) —
|
|
107
|
+
while the dead ref string keeps scoring in FTS, and a renamed file
|
|
108
|
+
is a new index entry, so the asset's accumulated usage-ranking history
|
|
109
|
+
resets.
|
|
110
|
+
- **A rename is delete plus create, and you do it by hand.** There is no
|
|
111
|
+
`akm mv` — moving the file strands every inbound ref and gives the
|
|
112
|
+
destination a fresh identity. If a rename is truly unavoidable:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
mv memories/old-note.md memories/new-note.md
|
|
116
|
+
# update any intentional refs (fully qualified: bundle//memories/old-note)
|
|
117
|
+
akm index
|
|
118
|
+
akm lint # confirms nothing dangles
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A memory's `.derived.md` twin must move with its base. Citing files in
|
|
122
|
+
read-only sources cannot be fixed at all — another reason not to rename. The
|
|
123
|
+
asset's accumulated usage-ranking history resets unless you carry it over
|
|
124
|
+
with `bun scripts/rekey-asset-ref.ts <old-ref> <new-ref>` (a maintainer
|
|
125
|
+
script, run from a source clone after the move and before `akm index`).
|
|
126
|
+
- When a project-scoped note turns out to be domain-general, **append, don't
|
|
127
|
+
promote**: write a new `knowledge/<domain>/…` asset that xrefs the originating
|
|
128
|
+
memory. Never rename the memory up a rung — that breaks its ref. The atomic
|
|
129
|
+
note still serves factoid recall; the new synthesis serves reuse; the xref
|
|
130
|
+
bridges them.
|
|
131
|
+
|
|
132
|
+
## Real isolation is a separate stash, not a folder
|
|
133
|
+
|
|
134
|
+
A path prefix is a ranking scope, not a security boundary. When you need enforced
|
|
135
|
+
isolation (client confidentiality, secret-leak containment), mount a **separate
|
|
136
|
+
stash** and let source resolution keep it apart — don't rely on a subdirectory.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
schedule: "0 4 * * *"
|
|
3
|
+
command: akm improve --strategy catchup --skip-if-locked
|
|
4
|
+
# Manual-recovery task: ships disabled (the retired registerDefaultTasks
|
|
5
|
+
# marked it enableMode: "manual"). `akm task run` works while disabled;
|
|
6
|
+
# opting into the schedule is `enabled: true` + `akm task sync`.
|
|
7
|
+
enabled: false
|
|
8
|
+
description: Manual recovery — consolidation + triage drain (run on demand via `akm task run akm-improve-catchup`)
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>%%REPORT_TITLE%%</title>
|
|
7
|
-
<!-- %%ECHARTS_TAG%% :
|
|
8
|
-
|
|
9
|
-
with --echarts cdn. -->
|
|
7
|
+
<!-- %%ECHARTS_TAG%% : a <script src> pointed at the jsDelivr CDN (chunk-9
|
|
8
|
+
WI-9.4d) — viewing this report requires network access. -->
|
|
10
9
|
%%ECHARTS_TAG%%
|
|
11
10
|
<style>
|
|
12
11
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
@@ -391,7 +390,7 @@
|
|
|
391
390
|
<div class="table-wrap">
|
|
392
391
|
<table>
|
|
393
392
|
<thead>
|
|
394
|
-
<tr><th>Started</th><th>Task</th><th>Wall</th><th>Promoted</th><th>Merged</th><th>Contradicted</th><th>MI Written</th><th>Entities</th><th>Lint Fixed</th><th>Status</th></tr>
|
|
393
|
+
<tr><th>Started</th><th>Task</th><th>Strategy</th><th>Wall</th><th>Promoted</th><th>Merged</th><th>Contradicted</th><th>MI Written</th><th>Entities</th><th>Lint Fixed</th><th>Status</th></tr>
|
|
395
394
|
</thead>
|
|
396
395
|
<tbody id="lastRunsTable"></tbody>
|
|
397
396
|
</table>
|
|
@@ -683,12 +682,14 @@ tbody.innerHTML = '';
|
|
|
683
682
|
const ts = `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
684
683
|
const dur = r.wallTimeMs ? (r.wallTimeMs / 60000).toFixed(1) + 'm' : '—';
|
|
685
684
|
const task = r.taskId || 'manual';
|
|
685
|
+
const strategy = r.strategy || '—';
|
|
686
686
|
const badge = r.ok
|
|
687
687
|
? '<span class="badge-pill badge-pass" style="padding:2px 8px;font-size:11px;"><span class="dot dot-pass" style="width:6px;height:6px;"></span> ok</span>'
|
|
688
688
|
: '<span class="badge-pill badge-fail" style="padding:2px 8px;font-size:11px;"><span class="dot dot-fail" style="width:6px;height:6px;"></span> failed</span>';
|
|
689
689
|
tr.innerHTML = `
|
|
690
690
|
<td style="font-family:monospace;font-size:12px;">${ts}</td>
|
|
691
691
|
<td><code>${task}</code></td>
|
|
692
|
+
<td><code>${strategy}</code></td>
|
|
692
693
|
<td>${dur}</td>
|
|
693
694
|
<td style="color:var(--accent);font-weight:600;">${r.promoted || 0}</td>
|
|
694
695
|
<td>${r.merged || 0}</td>
|
|
@@ -1,24 +1,40 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
type: workflow
|
|
3
|
+
description: One-sentence summary of what this workflow accomplishes.
|
|
4
|
+
updated: 2026-01-01
|
|
5
|
+
tags: [example]
|
|
5
6
|
params:
|
|
6
|
-
example_param: Explain this parameter
|
|
7
|
+
example_param: { type: string, description: Explain this parameter }
|
|
8
|
+
steps:
|
|
9
|
+
- id: first-step
|
|
10
|
+
- id: second-step
|
|
11
|
+
inputs: [steps.first-step.output]
|
|
7
12
|
---
|
|
8
13
|
|
|
9
|
-
#
|
|
14
|
+
# {{TITLE}}
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
Free preamble prose describing what this workflow does. It is indexed for
|
|
17
|
+
search and shown in `akm show`, but it is never dispatched to a step.
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
Describe what to do in this step.
|
|
19
|
+
## first-step
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
Describe what to do in this step. Refer to run parameters in plain
|
|
22
|
+
language — for example, "read the value given by the `example_param`
|
|
23
|
+
parameter" — never as a template expression like `{{ example_param }}`.
|
|
19
24
|
|
|
20
|
-
##
|
|
21
|
-
Step ID: second-step
|
|
25
|
+
## second-step
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
Describe what happens next, using the first step's artifact — attached to
|
|
28
|
+
this unit as context because this step declares
|
|
29
|
+
`inputs: [steps.first-step.output]` above — referred to in prose as "the
|
|
30
|
+
first step's attached artifact."
|
|
31
|
+
|
|
32
|
+
### gate
|
|
33
|
+
|
|
34
|
+
A `### gate` sub-heading is the step's completion rubric: the judge
|
|
35
|
+
receives this whole section byte-exact when validation is available. Omit
|
|
36
|
+
the heading or leave its text empty to skip validation. An unavailable or
|
|
37
|
+
malformed judge also skips validation.
|
|
38
|
+
|
|
39
|
+
- Confirm the step accomplished what it set out to do.
|
|
40
|
+
- Confirm nothing required was silently skipped.
|