akm-cli 0.9.0-rc.1 → 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 +1190 -52
- 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/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 +13 -9
- package/dist/commands/env/env-cli.js +76 -159
- 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/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 +75 -228
- 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 -855
- 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/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 -73
- 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 -58
- 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 +8 -3
- package/dist/integrations/agent/profiles.js +6 -99
- package/dist/integrations/agent/prompts.js +46 -18
- package/dist/integrations/agent/runner-dispatch.js +78 -13
- package/dist/integrations/agent/runner.js +76 -208
- package/dist/integrations/agent/spawn.js +48 -279
- package/dist/integrations/harnesses/aider/agent-builder.js +9 -8
- package/dist/integrations/harnesses/aider/index.js +2 -12
- package/dist/integrations/harnesses/amazonq/agent-builder.js +10 -16
- package/dist/integrations/harnesses/amazonq/index.js +3 -17
- package/dist/integrations/harnesses/claude/agent-builder.js +2 -3
- package/dist/integrations/harnesses/claude/config-import.js +1 -3
- package/dist/integrations/harnesses/claude/index.js +1 -14
- package/dist/integrations/harnesses/claude/session-log.js +27 -75
- package/dist/integrations/harnesses/codex/agent-builder.js +8 -7
- package/dist/integrations/harnesses/codex/index.js +2 -13
- package/dist/integrations/harnesses/copilot/agent-builder.js +9 -9
- package/dist/integrations/harnesses/copilot/index.js +1 -13
- package/dist/integrations/harnesses/gemini/agent-builder.js +8 -9
- package/dist/integrations/harnesses/gemini/index.js +1 -13
- package/dist/integrations/harnesses/ids.js +24 -0
- package/dist/integrations/harnesses/index.js +31 -33
- 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 +1 -18
- package/dist/integrations/harnesses/opencode/session-log.js +67 -125
- package/dist/integrations/harnesses/opencode-sdk/harness.js +3 -17
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +274 -191
- package/dist/integrations/harnesses/openhands/agent-builder.js +12 -10
- package/dist/integrations/harnesses/openhands/index.js +2 -12
- package/dist/integrations/harnesses/pi/agent-builder.js +11 -18
- package/dist/integrations/harnesses/pi/index.js +3 -16
- package/dist/integrations/harnesses/shared.js +17 -0
- package/dist/integrations/harnesses/types.js +38 -34
- package/dist/integrations/lockfile.js +211 -24
- package/dist/integrations/session-logs/index.js +24 -40
- 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 +15 -281
- 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 +8 -40
- 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 -1375
- 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 +1 -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 +68 -35
- 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/workflows/authoring/authoring.js +96 -148
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/cli.js +0 -20
- package/dist/workflows/concurrency-policy.js +15 -0
- package/dist/workflows/exec/brief.js +25 -59
- package/dist/workflows/exec/frozen-judge.js +47 -0
- package/dist/workflows/exec/native-executor.js +157 -94
- package/dist/workflows/exec/report.js +365 -200
- package/dist/workflows/exec/run-workflow.js +46 -40
- package/dist/workflows/exec/scheduler.js +12 -41
- package/dist/workflows/exec/step-work.js +239 -205
- package/dist/workflows/exec/workflow-engine-gate.js +67 -0
- package/dist/workflows/ir/compile.js +141 -283
- package/dist/workflows/ir/freeze.js +233 -0
- package/dist/workflows/ir/plan-hash.js +40 -5
- package/dist/workflows/ir/schema.js +537 -1
- package/dist/workflows/parser.js +878 -306
- package/dist/workflows/program/expressions.js +20 -208
- package/dist/workflows/program/schema.js +7 -10
- package/dist/workflows/renderer.js +99 -121
- package/dist/workflows/resource-limits.js +22 -0
- package/dist/workflows/runtime/checkin.js +1 -1
- package/dist/workflows/runtime/plan-classifier.js +131 -0
- package/dist/workflows/runtime/runs.js +200 -113
- package/dist/workflows/runtime/unit-checkin.js +1 -1
- package/dist/workflows/runtime/unit-phases.js +20 -0
- package/dist/workflows/runtime/workflow-asset-loader.js +235 -97
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +4 -26
- 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/{dist/schemas → schemas}/akm-workflow.json +127 -82
- 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 -316
- 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 -1414
- 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 -25
- 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/schemas/akm-config.json +0 -14225
- package/dist/scripts/migrate-storage.js +0 -13169
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -10169
- 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/authoring/workflow-program-template.yaml +0 -31
- package/dist/workflows/db.js +0 -350
- package/dist/workflows/exec/watch.js +0 -116
- package/dist/workflows/program/parser.js +0 -760
- package/dist/workflows/program/project.js +0 -105
- package/docs/data-and-telemetry.md +0 -227
- package/docs/migration/release-notes/0.9.0-beta.60.md +0 -19
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Reference
|
|
2
|
+
|
|
3
|
+
Authoritative reference documentation for the akm CLI and its data.
|
|
4
|
+
|
|
5
|
+
- [CLI](cli.md) -- All `akm` commands and flags
|
|
6
|
+
- [Configuration](configuration.md) -- Engines, strategies, bundles, and settings
|
|
7
|
+
- [Workflows](workflows.md) -- Unified Markdown workflow schema, run state, and native orchestration engine
|
|
8
|
+
- [Registry](registry.md) -- Registries, search, hosting, and managing sources
|
|
9
|
+
- [Wiki Snapshot Fetchers](wiki-snapshot-fetchers.md) -- The pluggable fetcher API for URL-based knowledge reads
|
|
10
|
+
- [Data & Telemetry](data-and-telemetry.md) -- Exactly what akm reads and writes on your machine (no remote telemetry)
|
|
11
|
+
- [akm-eval](akm-eval.md) -- Standalone toolkit for measuring whether `akm improve` is working
|
|
12
|
+
- [Roadmap](roadmap.md) -- High-level focus for the 0.9 and 1.0 releases
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# AKM Data & Telemetry
|
|
2
|
+
|
|
3
|
+
AKM stores your data locally on your machine and has **no telemetry**: it does not send usage data, analytics, or crash reports to Anthropic or to the AKM project, and it has no servers of its own that receive your data. It does, however, make network requests to the endpoints **you** configure — your LLM/embedding provider, the registries and source hosts you install from, and GitHub for upgrades — and those endpoints necessarily receive whatever those requests contain. This document describes exactly what AKM reads, writes, and sends.
|
|
4
|
+
|
|
5
|
+
## No Telemetry
|
|
6
|
+
|
|
7
|
+
AKM does not:
|
|
8
|
+
- Send usage data, events, or crash reports to Anthropic or the AKM project
|
|
9
|
+
- Contact any AKM-operated analytics or telemetry endpoint at runtime
|
|
10
|
+
- Include any analytics SDK or beacon
|
|
11
|
+
- Collect your email, name, or any personally-identifying information for the project's benefit
|
|
12
|
+
|
|
13
|
+
AKM adds no network destinations of its own. The requests it *does* make all go to endpoints you chose or invoked, and those third parties receive whatever the request contains:
|
|
14
|
+
|
|
15
|
+
1. **Your configured LLM/embedding provider** (e.g. Anthropic, OpenAI, a local Ollama, or any OpenAI-compatible endpoint) receives the prompts and asset content sent for reflect/propose/distill/embedding when you enable those features. If you point AKM at Anthropic, Anthropic receives those requests.
|
|
16
|
+
2. **Registry metadata and stash packages** from sources you explicitly configure (GitHub, npm, git remotes, websites) — those hosts receive the fetch/clone/crawl requests, and website sources receive requests for the pages you crawl.
|
|
17
|
+
3. **`akm upgrade`** — fetches the latest release from GitHub releases (GitHub sees the request).
|
|
18
|
+
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.
|
|
19
|
+
|
|
20
|
+
In every case the receiving endpoint is one you configured or invoked; the data leaving your machine is the data you directed AKM to send there.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Local On-Disk Surface
|
|
25
|
+
|
|
26
|
+
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.
|
|
27
|
+
|
|
28
|
+
### Config Directory (`$XDG_CONFIG_HOME/akm` or `~/.config/akm/`)
|
|
29
|
+
|
|
30
|
+
| Path | Contents | Safe to delete? |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `config.json` | Your AKM configuration: engines, improve strategies, bundles (stash sources), and experimental opt-ins — see [Configuration](configuration.md) | **No** — deleting resets all settings |
|
|
33
|
+
|
|
34
|
+
Override: set `AKM_CONFIG_DIR` or `XDG_CONFIG_HOME`.
|
|
35
|
+
|
|
36
|
+
### Data Directory (`$XDG_DATA_HOME/akm` or `~/.local/share/akm/`)
|
|
37
|
+
|
|
38
|
+
| Path | Contents | Safe to delete? |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `index.db` | Search index for all your stash assets (FTS5 + metadata) | Yes — rebuilds via `akm index --full` |
|
|
41
|
+
| `state.db` | Events, local usage telemetry, proposals, task history, improve run results, and workflow run state/history (the former `workflow.db` was folded in during the 0.9.0 cutover) | **No** — deletes event/usage logs, proposal queue, improve history, and workflow run history |
|
|
42
|
+
| `logs.db` | Structured, high-volume task/run log lines (`{ts, task_id, run_id, stream, level, line}`), joined to `state.db`'s `task_history` rows by `task_id@started_at`. Kept separate from `state.db` because log lines are append-only and freely purgeable, unlike durable state | Yes — log lines are regenerable per run; deleting loses historical run output only |
|
|
43
|
+
| `akm.lock` | Inter-process write lock | Yes — recreated automatically |
|
|
44
|
+
| `akm.lock.lck` | Lock write sentinel | Yes — recreated automatically |
|
|
45
|
+
|
|
46
|
+
Override: set `AKM_DATA_DIR` or `XDG_DATA_HOME`.
|
|
47
|
+
|
|
48
|
+
### Cache Directory (`$XDG_CACHE_HOME/akm` or `~/.cache/akm/`)
|
|
49
|
+
|
|
50
|
+
Everything in the cache is regenerable. It is safe to delete the entire cache directory; AKM will recreate what it needs on next use.
|
|
51
|
+
|
|
52
|
+
| Path | Contents | Safe to delete? |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `config-backups/config-<timestamp>.json` | Pre-save config snapshots (5 retained; owner-only permissions — file `0600`, dir `0700`, since 08-F4) | Yes |
|
|
55
|
+
| `config-backups/config.latest.json` | Latest backup alias (owner-only `0600`) | Yes |
|
|
56
|
+
| `registry/` | Downloaded registry tarballs (stash packages from npm, GitHub, etc.) | Yes — re-downloaded on next `akm bundle add` or `akm bundle update` |
|
|
57
|
+
| `registry-index/` | Legacy per-URL JSON cache (v0.7 artifact) | Yes — fully replaced by `index.db` in 0.8.0 |
|
|
58
|
+
| `semantic-status.json` | Semantic index build status marker | Yes |
|
|
59
|
+
| `bin/` | Downloaded AKM binary cache (used by `akm upgrade`) | Yes |
|
|
60
|
+
| `tasks/logs/` | Scheduled task log files | Yes — ephemeral logs |
|
|
61
|
+
| `tasks/history/` | Legacy task history JSONL (v0.7 migration artifact) | Yes |
|
|
62
|
+
|
|
63
|
+
Override: set `AKM_CACHE_DIR` or `XDG_CACHE_HOME`.
|
|
64
|
+
|
|
65
|
+
### Stash Directory (`~/akm/` by default, or user-configured)
|
|
66
|
+
|
|
67
|
+
| Path | Contents | Safe to delete? |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| `<stash>/` | All your asset files: agents, skills, commands, knowledge, instructions, workflows, scripts, memories, env files, secrets, lessons, tasks, sessions, facts, plus any bundle-adapter-owned content (e.g. `llm-wiki` bundle roots — not an AKM `PLACEMENT_SPECS` type) | **No** — this is YOUR data |
|
|
70
|
+
| `<stash>/.akm/` | Hidden AKM metadata (v0.7 proposals, legacy runs) | Caution — check for pending proposals first |
|
|
71
|
+
|
|
72
|
+
Override: set `AKM_BUNDLE_DIR`, or configure `bundles`/`defaultBundle` in `config.json` (the top-level `stashDir` key from 0.8 is retired and rejected in 0.9 — see [Configuration](configuration.md#bundles-and-write-target)).
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## What Is Stored in `state.db`
|
|
77
|
+
|
|
78
|
+
`state.db` holds four categories of non-regenerable data:
|
|
79
|
+
|
|
80
|
+
### 1. Events Table
|
|
81
|
+
|
|
82
|
+
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`.
|
|
83
|
+
|
|
84
|
+
**What is recorded:**
|
|
85
|
+
- `event_type` — what action was taken (see full list below)
|
|
86
|
+
- `ts` — ISO-8601 UTC timestamp
|
|
87
|
+
- `ref` — the asset ref affected (e.g. `skills/code-review`), if applicable
|
|
88
|
+
- `metadata` — structured payload specific to the event type (e.g. query text for `search`, score for `feedback`)
|
|
89
|
+
|
|
90
|
+
**What is NOT recorded:**
|
|
91
|
+
- File contents
|
|
92
|
+
- LLM prompts or responses
|
|
93
|
+
- API keys or secrets (config is not stored in events)
|
|
94
|
+
- Personal information
|
|
95
|
+
|
|
96
|
+
**Retention:** Events older than 90 days are purged automatically when `akm improve` runs its maintenance pass. The window is `improve.eventRetentionDays` (default `90`; set `0` to disable), enforced by `purgeOldEvents()`.
|
|
97
|
+
|
|
98
|
+
**Full event type list.** `EventType` (`src/core/events.ts`) is an open
|
|
99
|
+
string union — new types can be added without a schema bump — so this is
|
|
100
|
+
the set of types the code actually emits at HEAD (verified against every
|
|
101
|
+
`appendEvent(...)` call site, 2026-07-27), grouped by area:
|
|
102
|
+
|
|
103
|
+
*Asset lifecycle*
|
|
104
|
+
|
|
105
|
+
| Event type | When emitted | Key metadata fields |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `add` | `akm bundle add <source>` | `ref`, `provider` |
|
|
108
|
+
| `remove` | `akm bundle remove <source>` | `ref` |
|
|
109
|
+
| `update` | `akm bundle update [source]` | `ref` |
|
|
110
|
+
| `remember` | `akm remember <text>` | `ref` |
|
|
111
|
+
| `import` | `akm import <file>` | `ref` |
|
|
112
|
+
| `rekey` | `scripts/rekey-asset-ref.ts` moved at least one row onto a renamed asset's new ref — nothing is emitted on a no-op re-run | `ref` (the new ref); metadata `{from, to, changed}` (row counts only) |
|
|
113
|
+
|
|
114
|
+
*Search, retrieval, sync*
|
|
115
|
+
|
|
116
|
+
| Event type | When emitted | Key metadata fields |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| `search` | `akm search <query>` | `query`, `source`, `signal` |
|
|
119
|
+
| `curate` | `akm curate <prompt>` | `query`, `source` |
|
|
120
|
+
| `show` | `akm show <ref>` | `ref`, `type`, `name` |
|
|
121
|
+
| `select` | `akm show` after a search returning the same ref | `ref`, `entryId` |
|
|
122
|
+
| `feedback` | `akm feedback <ref>` | `signal` (positive/negative) |
|
|
123
|
+
| `sync` | `akm sync` (renamed from `save` in 0.9.0; historical rows keep `save`, and `akm log --type save`/`--type sync` are synonyms on read) | `ref` |
|
|
124
|
+
| `stash_synced` | `akm improve`'s internal auto-sync pass (the `sync.push` feature), **distinct from** the `akm sync` command above | `committed`, `pushed`, `skipped`, `reason` |
|
|
125
|
+
| `env_access` | `akm env run <name> -- <command>` (audit trail: key **names** only, values never recorded) | `ref`, `keys` |
|
|
126
|
+
| `secret_access` | `akm secret run <ref> <VAR> -- <command>` (audit trail: var **name** only, value never recorded) | `ref`, `var` |
|
|
127
|
+
|
|
128
|
+
*Proposals*
|
|
129
|
+
|
|
130
|
+
| Event type | When emitted | Key metadata fields |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| `promoted` | `akm proposal accept <id>` | `ref` |
|
|
133
|
+
| `rejected` | `akm proposal reject <id>` | `ref` |
|
|
134
|
+
| `proposal_reverted` | `akm proposal revert <id>` (undoes a previously-accepted proposal, restores prior content) | `ref` |
|
|
135
|
+
| `proposal_expired` | A pending proposal aged past the retention window and was auto-expired | `ref` |
|
|
136
|
+
| `proposal_expiration_pass` | Summary emitted once per `akm improve` maintenance run after per-proposal `proposal_expired` events | expiry counts |
|
|
137
|
+
| `proposal_orphan_purge` | Stale proposals whose target asset no longer exists on disk, pruned by improve maintenance | `checked`, `rejected` |
|
|
138
|
+
| `proposal_creation_rejected` | `createProposal()` validation failed before write | `ref`, `reason`, `source` |
|
|
139
|
+
| `triage_drained` | `akm proposal drain` run summary | `promoted`, `rejected`, `deferredByReason`, `skippedByCap`, `policy`, `applyMode` |
|
|
140
|
+
| `triage_deferred` | `akm proposal drain` left items unresolved after the (optional) judgment tier | `deferred`, `deferredByReason`, `reason` |
|
|
141
|
+
|
|
142
|
+
*`akm improve` pipeline*
|
|
143
|
+
|
|
144
|
+
| Event type | When emitted | Key metadata fields |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| `improve_invoked` | Start of an `akm improve` run | `ref` (scope); `strategy`, `scope`, `dryRun`, `eligibleCount` |
|
|
147
|
+
| `improve_completed` | `akm improve` run finished | run stats |
|
|
148
|
+
| `improve_failed` | `akm improve` run errored | error |
|
|
149
|
+
| `improve_skipped` | Asset skipped by cooldown or budget | `ref`, `reason` |
|
|
150
|
+
| `improve_lock_recovered` | Stale improve lock cleared at startup | |
|
|
151
|
+
| `improve_review_needed` | `akm feedback` pushed a high-utility asset's utility below the review threshold — a review-needed escalation is recorded (not a proposal, so it can't accidentally overwrite the asset) | `ref`, `previousUtility`, `nextUtility` |
|
|
152
|
+
| `reflect_invoked` | Start of reflect phase in `akm improve` | `ref`, engine |
|
|
153
|
+
| `reflect_completed` | Reflect phase produced a proposal | `ref` |
|
|
154
|
+
| `improve_reflect_outcome` | Per-asset reflect result | `ref`, `ok`, `durationMs`, `reason` |
|
|
155
|
+
| `propose_invoked` | `akm proposal new` | `ref` |
|
|
156
|
+
| `distill_invoked` | Distill phase inside the `akm improve`/`akm proposal new` pipeline. **`akm distill` is not a CLI command** — there is no standalone verb by that name | `ref`, outcome |
|
|
157
|
+
| `consolidate_completed` | `akm improve`'s consolidate pass processed at least one memory | `ref` (`memories/_consolidation`) |
|
|
158
|
+
| `extract_invoked` | `akm proposal extract --type <harness>` / `--auto`, or improve-stage session extraction | `outcome`, `sessionId`, `harness` |
|
|
159
|
+
| `extract_triaged` | The pre-LLM extract triage gate evaluated at least one session | `evaluated`, `passed`, `triagedOut`, `sourceRun` (aggregated) |
|
|
160
|
+
| `schema_repair_invoked` | The schema-repair pass inside `akm improve` (`runSchemaRepairPass`) attempts to patch missing frontmatter on an asset that failed schema validation. **There is no `akm lint --repair` flag** — `lint` has `--fix`/`--auto-fix`, unrelated to this event | `ref`, outcome |
|
|
161
|
+
| `proactive_selected` | The proactive-maintenance selector runs (once per `akm improve` run) | `count`, `dueTotal`, `neverReflected` (aggregated) |
|
|
162
|
+
| `improve_replay_selected` | Bounded replay-budget selection ran | `count`, `budget`, `convergedSkipped`, `candidatePool` (aggregated) |
|
|
163
|
+
| `improve_salience_first_run` | First improve run with no pre-existing salience baseline to compare against | `candidateCount`, `note` |
|
|
164
|
+
| `improve_salience_rank_change` | Stash-wide rank-change report, from the second improve run onward | `stashSize`, `totalChanged`, `forgettingCandidates`, `topDrops` |
|
|
165
|
+
| `outcome_proxy_inverted` | Proxy-adequacy tripwire: `outcome_score` correlates *negatively* with accepted-change rate (corr < −0.3) | `correlation`, `n` |
|
|
166
|
+
| `outcome_proxy_dead` | Proxy-adequacy tripwire: `outcome_score` is statistically unrelated to accepted-change rate (\|corr\| < 0.1, n ≥ 500) | `correlation`, `n` |
|
|
167
|
+
| `collapse_detector_alert` | The collapse/churn detector trips an alert rule during an improve cycle | `kind` (collapse-recall\|collapse-entropy\|collapse-shrink\|churn\|merge-floor), `detail`, `metrics`, `canarySetId`, `runId` |
|
|
168
|
+
| `events_purged` | Old events deleted by improve maintenance (90-day default retention) | `purgedCount`, `retentionDays` |
|
|
169
|
+
| `improve_runs_purged` | Old `improve_runs` rows deleted by improve maintenance (same retention window as events) | `purgedCount`, `retentionDays` |
|
|
170
|
+
| `improve_cycle_metrics_purged` | Old `improve_cycle_metrics` rows (365-day retention) deleted by improve maintenance | `purgedCount`, `retentionDays` |
|
|
171
|
+
| `task_logs_purged` | Old scheduled-task log files purged by improve maintenance | |
|
|
172
|
+
|
|
173
|
+
*Workflows*
|
|
174
|
+
|
|
175
|
+
| Event type | When emitted | Key metadata fields |
|
|
176
|
+
|---|---|---|
|
|
177
|
+
| `workflow_started` | `akm workflow start <ref>` | `ref`, `runId` |
|
|
178
|
+
| `workflow_step_completed` | `akm workflow complete` (genuine `completed` transition only; `completeWorkflowStep`, `src/workflows/runtime/runs.ts`) | `ref`, `runId`, `stepId`, `status` |
|
|
179
|
+
| `workflow_step_updated` | `akm workflow complete` (non-`completed` transitions: `failed`/`skipped`/`blocked`) | `ref`, `runId`, `stepId`, `status` |
|
|
180
|
+
| `workflow_finished` | `akm workflow complete`, when that step completion brings the run to a terminal status | `ref`, `runId` |
|
|
181
|
+
| `workflow_abandoned` | `akm workflow abandon` | `runId` only — never the workflow title |
|
|
182
|
+
| `workflow_unit_started` | A workflow-engine unit dispatch begins (native `akm workflow run` or the `brief`/`report` driver protocol — both require `experimental.workflowEngine`, see [Workflows](workflows.md#enabling-the-workflow-engine-opt-in-in-090)) | ids/status only — never unit instructions or results |
|
|
183
|
+
| `workflow_unit_finished` | A workflow-engine unit terminates | ids/status/tokens only — never unit instructions or results |
|
|
184
|
+
|
|
185
|
+
*LLM usage and health*
|
|
186
|
+
|
|
187
|
+
| Event type | When emitted | Key metadata fields |
|
|
188
|
+
|---|---|---|
|
|
189
|
+
| `llm_usage` | Per-attempt LLM call usage telemetry (#576) | model provenance, terminal outcome, duration, optional token usage |
|
|
190
|
+
| `llm_usage_summary` | The owning LLM telemetry sink's terminal-record count marker | `expectedTerminalRecords` |
|
|
191
|
+
| `health_probe` | `akm health`'s state.db round-trip write/read probe. **Not durably retained**: the row is inserted then deleted within the same connection once the round trip is confirmed, so the net effect on the `events` table is always zero rows | n/a (ephemeral) |
|
|
192
|
+
|
|
193
|
+
### 2. Usage Events Table
|
|
194
|
+
|
|
195
|
+
`usage_events` is the local analytical record behind utility ranking,
|
|
196
|
+
retrieval-demand counts, GRR, and real-query eval generation (0.9.0: its CLI
|
|
197
|
+
read surface, `akm history`, was removed — the table itself and everything
|
|
198
|
+
below still applies). It stores
|
|
199
|
+
search/curate queries, per-entry search impressions, explicit show/curate
|
|
200
|
+
engagement, feedback signals, stable refs, and timestamps. It never leaves the
|
|
201
|
+
machine unless you explicitly copy the database or send derived content to a
|
|
202
|
+
configured endpoint.
|
|
203
|
+
|
|
204
|
+
Successful `search`, `curate`, and `show` commands record usage by default.
|
|
205
|
+
Pass `--no-track-usage` to any of those commands to leave local usage events
|
|
206
|
+
and ranking signals unchanged.
|
|
207
|
+
|
|
208
|
+
Every runtime writer stamps provenance as `user`, `improve`, `task`, `audit`, or
|
|
209
|
+
`unknown`. Direct interactive CLI traffic defaults to `user`; internal improve,
|
|
210
|
+
scheduled-task, and eval subprocesses preserve their stamp across nested
|
|
211
|
+
search/curate/show/remember/agent reads. Omitted or invalid writer provenance is
|
|
212
|
+
`unknown`, and pre-provenance rows rescued at the 0.9 cutover are also
|
|
213
|
+
`unknown`. Only exact `source='user'` rows contribute demand, utility, GRR, or
|
|
214
|
+
real-query labels.
|
|
215
|
+
|
|
216
|
+
Per-entry `search`, `curate`, and `show` rows carry a local-only
|
|
217
|
+
`metadata.downstreamAttribution` object. Version 1 uses `control: true` for
|
|
218
|
+
current traffic where neither memory inference nor graph extraction applies;
|
|
219
|
+
rows without the version marker are historical/unattributed. Attributed rows
|
|
220
|
+
use `control: false` and may contain:
|
|
221
|
+
|
|
222
|
+
- `memoryInference`: `direct` when the emitted ref is an inferred child, or
|
|
223
|
+
`surface` when derived description/tags were actually present in the emitted
|
|
224
|
+
search or selected curate output. Brief output and internally replaced
|
|
225
|
+
descriptions are controls, not surface attribution.
|
|
226
|
+
- `graphExtraction`: the positive graph-ranking contribution that was actually
|
|
227
|
+
applied after the shared contributor cap, plus `bodyHash` and
|
|
228
|
+
`extractionRunId` when available. It is absent when `graph-ranking` is
|
|
229
|
+
ablated. The number is a ranking-input contribution, not proof that graph
|
|
230
|
+
changed final rank, selection, or outcome; score saturation and competing
|
|
231
|
+
contributors can leave ordering unchanged.
|
|
232
|
+
|
|
233
|
+
Attribution metadata contains fully-qualified refs and graph identifiers, never
|
|
234
|
+
asset bodies or provenance content. It is not added to `search`, `curate`, or
|
|
235
|
+
`show` result payloads; there is no CLI surface that reads it back (0.9.0:
|
|
236
|
+
`akm history` was removed). The full index still applies its existing
|
|
237
|
+
higher-priority-wins `(type, entry.name)` dedup across sources: attribution
|
|
238
|
+
source-qualifies every indexed row but does not invent a lower-priority row for
|
|
239
|
+
an identity that production indexing omitted.
|
|
240
|
+
|
|
241
|
+
### 3. Proposals Table
|
|
242
|
+
|
|
243
|
+
The proposal queue: pending, accepted, and rejected improvement proposals for your stash assets. Generated by `akm improve`, `akm proposal new`, and related proposal-producing flows.
|
|
244
|
+
|
|
245
|
+
Contents:
|
|
246
|
+
- Proposal UUID (primary key)
|
|
247
|
+
- Target asset ref
|
|
248
|
+
- Status (pending/accepted/rejected)
|
|
249
|
+
- Source (which process generated it — e.g. `reflect`, `distill`)
|
|
250
|
+
- Full proposal content (Markdown text)
|
|
251
|
+
- Created/updated timestamps
|
|
252
|
+
|
|
253
|
+
### 4. Task History Table
|
|
254
|
+
|
|
255
|
+
A record of scheduled task runs (from `akm task`):
|
|
256
|
+
- Task ID, status, start/end times
|
|
257
|
+
- Log file path (the log content stays in `$CACHE/tasks/logs/`)
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## How to Inspect and Clear Local Data
|
|
262
|
+
|
|
263
|
+
### Inspect events
|
|
264
|
+
|
|
265
|
+
```sh
|
|
266
|
+
# List recent events
|
|
267
|
+
akm log
|
|
268
|
+
|
|
269
|
+
# Filter by type
|
|
270
|
+
akm log --type search --limit 20
|
|
271
|
+
|
|
272
|
+
# Filter by asset ref
|
|
273
|
+
akm log --ref skills/code-review
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Inspect proposals
|
|
277
|
+
|
|
278
|
+
```sh
|
|
279
|
+
# List pending proposals
|
|
280
|
+
akm proposal list
|
|
281
|
+
|
|
282
|
+
# Show a specific proposal
|
|
283
|
+
akm proposal show <id>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Clear specific data
|
|
287
|
+
|
|
288
|
+
```sh
|
|
289
|
+
# Delete the search index (safe — rebuilds with akm index --full)
|
|
290
|
+
rm ~/.local/share/akm/index.db
|
|
291
|
+
|
|
292
|
+
# Delete all cached registry downloads
|
|
293
|
+
rm -rf ~/.cache/akm/registry/
|
|
294
|
+
|
|
295
|
+
# Delete config backups
|
|
296
|
+
rm -rf ~/.cache/akm/config-backups/
|
|
297
|
+
|
|
298
|
+
# Delete the events log from state.db (non-reversible)
|
|
299
|
+
# There is no akm CLI command to do this directly (`akm log` only exposes
|
|
300
|
+
# `list`/`tail`, no delete/purge verb). Use SQLite directly:
|
|
301
|
+
sqlite3 ~/.local/share/akm/state.db "DELETE FROM events;"
|
|
302
|
+
|
|
303
|
+
# Delete all proposals
|
|
304
|
+
sqlite3 ~/.local/share/akm/state.db "DELETE FROM proposals;"
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Start completely fresh (nuclear reset)
|
|
308
|
+
|
|
309
|
+
```sh
|
|
310
|
+
rm -f ~/.config/akm/config.json
|
|
311
|
+
rm -rf ~/.local/share/akm/
|
|
312
|
+
rm -rf ~/.cache/akm/
|
|
313
|
+
# Your stash files in ~/akm/ are NOT touched by the above.
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Environment Variable Overrides
|
|
319
|
+
|
|
320
|
+
You can redirect any AKM directory to a custom path:
|
|
321
|
+
|
|
322
|
+
| Variable | Overrides |
|
|
323
|
+
|---|---|
|
|
324
|
+
| `AKM_CONFIG_DIR` | Config directory (`~/.config/akm/`) |
|
|
325
|
+
| `AKM_DATA_DIR` | Data directory (`~/.local/share/akm/`) |
|
|
326
|
+
| `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`. |
|
|
327
|
+
| `AKM_STATE_DIR` | State directory (`~/.local/state/akm/`) |
|
|
328
|
+
| `AKM_CACHE_DIR` | Cache directory (`~/.cache/akm/`) |
|
|
329
|
+
| `AKM_BUNDLE_DIR` | Default stash directory (`~/akm/`) |
|
|
330
|
+
| `XDG_CONFIG_HOME` | XDG base — akm appends `/akm` |
|
|
331
|
+
| `XDG_DATA_HOME` | XDG base — akm appends `/akm` |
|
|
332
|
+
| `XDG_STATE_HOME` | XDG base — akm appends `/akm` |
|
|
333
|
+
| `XDG_CACHE_HOME` | XDG base — akm appends `/akm` |
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akm-cli",
|
|
3
|
-
"version": "0.9.0-rc.
|
|
3
|
+
"version": "0.9.0-rc.13",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "akm (Agent Knowledge
|
|
5
|
+
"description": "akm (Agent Knowledge Manager) — A knowledge toolkit for AI agents: capture, curate, search, and share skills, commands, tools, and knowledge. Works with Claude Code, OpenCode, Cursor, and any AI coding assistant.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"akm",
|
|
8
8
|
"agent-knowledge-management",
|
|
@@ -43,48 +43,54 @@
|
|
|
43
43
|
"LICENSE",
|
|
44
44
|
"docs/migration/release-notes",
|
|
45
45
|
"docs/migration/v0.7-to-v0.8.md",
|
|
46
|
-
"docs/
|
|
46
|
+
"docs/migration/v0.8-to-v0.9.md",
|
|
47
|
+
"docs/reference/data-and-telemetry.md",
|
|
48
|
+
"schemas"
|
|
47
49
|
],
|
|
48
50
|
"bin": {
|
|
49
51
|
"akm": "dist/akm",
|
|
50
|
-
"akm-migrate
|
|
52
|
+
"akm-migrate": "dist/akm-migrate"
|
|
51
53
|
},
|
|
52
54
|
"scripts": {
|
|
53
|
-
"preinstall": "node -e \"var
|
|
55
|
+
"preinstall": "node -e \"var v=(process.versions.node||'0').split('.').map(function(n){return parseInt(n,10)||0});var ok=v[0]>=22;if(ok){process.exit(0)}console.error('\\n ERROR: the akm-cli npm package requires Node.js >= 22.\\n A working Bun >= 1.0 on PATH is optional and preferred for akm and akm-migrate.\\n Upgrade Node.js (https://nodejs.org), or install the runtime-free standalone binary:\\n curl -fsSL https://github.com/itlackey/akm/releases/latest/download/install.sh | bash\\n');process.exit(1)\"",
|
|
54
56
|
"build": "rm -rf dist && bun scripts/gen-config-schema.ts &&bun run tsc --project ./tsconfig.build.json && bun scripts/copy-assets.ts && bun scripts/fix-esm-extensions.ts",
|
|
55
57
|
"check": "bun run lint && bunx tsc --noEmit && bun run test:unit && bun run test:integration",
|
|
56
58
|
"check:fast": "bun run lint && bunx tsc --noEmit && bun run test:unit",
|
|
57
|
-
"check:changed": "bun test tests/output-baseline.test.ts tests/integration/
|
|
59
|
+
"check:changed": "bun run lint && bunx tsc --noEmit && bun test tests/integration/output-baseline.test.ts tests/integration/registry-search.test.ts tests/integration/show-argv-entrypoint.test.ts tests/output-shapes-unit.test.ts",
|
|
58
60
|
"sweep:tmp": "bun scripts/sweep-test-tmp.ts",
|
|
59
61
|
"test": "bash scripts/test-unit.sh",
|
|
60
62
|
"test:unit": "bash scripts/test-unit.sh",
|
|
61
|
-
"test:integration": "
|
|
63
|
+
"test:integration": "bash scripts/test-integration.sh",
|
|
62
64
|
"test:node-smoke": "bun scripts/node-smoke.ts",
|
|
63
65
|
"test:node-compat": "AKM_NODE_COMPAT_TESTS=1 bun test --timeout=120000 tests/integration/node-compat.test.ts",
|
|
64
66
|
"test:time": "bun scripts/test-timing-report.ts",
|
|
65
67
|
"lint:isolation": "bun scripts/lint-tests-isolation.ts",
|
|
68
|
+
"lint:doc-examples": "bun scripts/lint-doc-examples.ts",
|
|
66
69
|
"lint:devto-posts": "bun scripts/lint-devto-posts.ts",
|
|
67
70
|
"lint:devto-posts:fix": "bun scripts/lint-devto-posts.ts --fix",
|
|
68
71
|
"publish:devto": "npx -y @sinedied/devto-cli push \"docs/posts/**/*.md\" --token \"$DEVTO_TOKEN\" --repo \"$GITHUB_REPOSITORY\" --branch \"${GITHUB_REF_NAME:-main}\" --reconcile",
|
|
69
72
|
"release:check": "./tests/release-check.sh",
|
|
70
|
-
"lint": "bunx biome check src/ tests/ && bun scripts/lint-tests-isolation.ts && bun scripts/lint-license-headers.ts && bun scripts/lint-runtime-boundary.ts && bun scripts/lint-repository-sql.ts && bun scripts/gen-config-schema.ts --check",
|
|
73
|
+
"lint": "bunx biome check src/ tests/ scripts/ && bun scripts/lint-tests-isolation.ts && bun scripts/lint-license-headers.ts && bun scripts/lint-runtime-boundary.ts && bun scripts/lint-write-source-chokepoint.ts && bun scripts/lint-process-argv.ts && bun scripts/lint-repository-sql.ts && bun scripts/lint-goldens-presence.ts && bun scripts/lint-golden-captured-at-head.ts && bun scripts/lint-test-ref-literals.ts && bun scripts/lint-shipped-assets.ts && bun scripts/lint-doc-examples.ts && bun scripts/gen-config-schema.ts --check",
|
|
71
74
|
"lint:runtime-boundary": "bun scripts/lint-runtime-boundary.ts",
|
|
72
75
|
"lint:tests-isolation": "bun scripts/lint-tests-isolation.ts",
|
|
73
|
-
"lint:fix": "bunx biome check --write src/ tests/",
|
|
74
|
-
"format": "bunx biome format --write src/ tests/",
|
|
76
|
+
"lint:fix": "bunx biome check --write src/ tests/ scripts/",
|
|
77
|
+
"format": "bunx biome format --write src/ tests/ scripts/",
|
|
75
78
|
"prepublishOnly": "cp .github/README.npm.md README.md && bun run build",
|
|
76
|
-
"postpublish": "git checkout -- README.md"
|
|
79
|
+
"postpublish": "git checkout -- README.md",
|
|
80
|
+
"build:install": "bun scripts/package-install.ts install-global",
|
|
81
|
+
"test:package": "bun scripts/package-install.ts test-package"
|
|
77
82
|
},
|
|
78
83
|
"publishConfig": {
|
|
79
84
|
"access": "public"
|
|
80
85
|
},
|
|
81
86
|
"devDependencies": {
|
|
82
87
|
"@biomejs/biome": "^2.4.14",
|
|
83
|
-
"@types/better-sqlite3": "^7.6.11",
|
|
84
88
|
"@types/node": "^22.19.17",
|
|
85
89
|
"@types/semver": "^7.5.8",
|
|
86
90
|
"bun-types": "^1.3.13",
|
|
87
|
-
"
|
|
91
|
+
"cmd-shim": "9.0.2",
|
|
92
|
+
"typescript": "^5.9.3",
|
|
93
|
+
"zod-to-json-schema": "^3.23.0"
|
|
88
94
|
},
|
|
89
95
|
"optionalDependencies": {
|
|
90
96
|
"@huggingface/transformers": "^4.2.0",
|
|
@@ -92,8 +98,7 @@
|
|
|
92
98
|
"sqlite-vec": "^0.1.9"
|
|
93
99
|
},
|
|
94
100
|
"engines": {
|
|
95
|
-
"
|
|
96
|
-
"node": ">=20.12.0"
|
|
101
|
+
"node": ">=22"
|
|
97
102
|
},
|
|
98
103
|
"dependencies": {
|
|
99
104
|
"@clack/prompts": "^1.3.0",
|
|
@@ -102,7 +107,6 @@
|
|
|
102
107
|
"dotenv": "^17.4.2",
|
|
103
108
|
"semver": "^7.6.0",
|
|
104
109
|
"yaml": "^2.8.4",
|
|
105
|
-
"zod": "^3.23.0"
|
|
106
|
-
"zod-to-json-schema": "^3.23.0"
|
|
110
|
+
"zod": "^3.23.0"
|
|
107
111
|
}
|
|
108
112
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://itlackey.github.io/akm/schemas/akm-asset-envelope.json",
|
|
4
|
+
"title": "AKM Markdown Asset Envelope",
|
|
5
|
+
"description": "The common frontmatter envelope every AKM markdown asset type carries: type/description/tags/when_to_use/xrefs/updated/timestamp, plus the OKF v0.2 machine-stamped families (generated/verified/provenance/status/stale_after). Per-type schemas (e.g. akm-workflow.json) $ref these definitions individually into their own top-level `properties` so `additionalProperties: false` still sees them declared locally (JSON Schema does not merge `allOf` siblings' properties for that check). This file has no `properties`/`required` of its own — it is a definitions-only library.",
|
|
6
|
+
"definitions": {
|
|
7
|
+
"type": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"minLength": 1,
|
|
10
|
+
"description": "The asset's type token (e.g. \"workflow\"). Drives recognition alongside directory residence."
|
|
11
|
+
},
|
|
12
|
+
"description": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Human-readable summary of the asset."
|
|
15
|
+
},
|
|
16
|
+
"tags": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "string", "minLength": 1 },
|
|
19
|
+
"description": "Free-form search/classification tags."
|
|
20
|
+
},
|
|
21
|
+
"when_to_use": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Guidance on when this asset should be applied/selected."
|
|
24
|
+
},
|
|
25
|
+
"xrefs": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "type": "string", "minLength": 1 },
|
|
28
|
+
"description": "Canonical asset refs this asset cross-references. Ref canonicality is checked by semantic validation, not this schema."
|
|
29
|
+
},
|
|
30
|
+
"updated": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Last-updated timestamp (author-maintained)."
|
|
33
|
+
},
|
|
34
|
+
"timestamp": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "Legacy creation/authoring timestamp, pre-dating OKF v0.2's `generated:`."
|
|
37
|
+
},
|
|
38
|
+
"actorStamp": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"required": ["by"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"by": { "type": "string", "minLength": 1 },
|
|
44
|
+
"at": { "type": "string" }
|
|
45
|
+
},
|
|
46
|
+
"description": "One OKF v0.2 actor stamp: who (by) and, usually, when (at)."
|
|
47
|
+
},
|
|
48
|
+
"generated": {
|
|
49
|
+
"$ref": "#/definitions/actorStamp",
|
|
50
|
+
"description": "OKF v0.2 machine-stamped authorship — the replacement for the legacy `timestamp` key."
|
|
51
|
+
},
|
|
52
|
+
"verified": {
|
|
53
|
+
"anyOf": [
|
|
54
|
+
{ "$ref": "#/definitions/actorStamp" },
|
|
55
|
+
{ "type": "array", "items": { "$ref": "#/definitions/actorStamp" } }
|
|
56
|
+
],
|
|
57
|
+
"description": "OKF v0.2 machine-stamped verification(s). A bare mapping or a list of them; independent confirmations accumulate."
|
|
58
|
+
},
|
|
59
|
+
"provenanceSource": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"required": ["resource"],
|
|
62
|
+
"additionalProperties": true,
|
|
63
|
+
"properties": {
|
|
64
|
+
"resource": { "type": "string", "minLength": 1 },
|
|
65
|
+
"id": { "type": "string" },
|
|
66
|
+
"title": { "type": "string" },
|
|
67
|
+
"author": { "type": "string" },
|
|
68
|
+
"usage_count": { "type": "number" },
|
|
69
|
+
"last_modified": { "type": "string" }
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"provenance": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": true,
|
|
75
|
+
"properties": {
|
|
76
|
+
"sources": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"items": { "$ref": "#/definitions/provenanceSource" }
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"description": "Namespaced OKF v0.2 provenance (kept nested because a bare top-level `sources:` collides with the AKM-native wiki citation-string convention)."
|
|
82
|
+
},
|
|
83
|
+
"status": {
|
|
84
|
+
"enum": ["draft", "stable", "deprecated"],
|
|
85
|
+
"description": "OKF v0.2 lifecycle status."
|
|
86
|
+
},
|
|
87
|
+
"stale_after": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 1,
|
|
90
|
+
"description": "OKF v0.2 staleness horizon (a date or duration, author-maintained)."
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|