akm-cli 0.10.261012-beta → 0.10.261014-beta
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 +710 -3
- package/README.md +15 -0
- package/SECURITY.md +11 -10
- package/STABILITY.md +47 -51
- package/dist/assets/hints/cli-hints-full.md +21 -19
- package/dist/assets/hints/cli-hints-short.md +3 -4
- package/dist/assets/opencode/akm-plugin.js +177 -0
- package/dist/assets/stash-skeleton/README.md +1 -1
- package/dist/assets/tasks/core/improve.yml +1 -1
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +1 -1
- package/dist/assets/ui/config.js +27 -10
- package/dist/assets/workflows/workflow-template.md +2 -2
- package/dist/cli/clack.js +3 -1
- package/dist/cli/selection.js +33 -0
- package/dist/cli/shared.js +14 -1
- package/dist/cli/unknown-flags.js +6 -37
- package/dist/cli.js +69 -48
- package/dist/commands/agent/agent-dispatch.js +17 -25
- package/dist/commands/agent/contribute-cli.js +9 -8
- package/dist/commands/command/command-cli.js +4 -8
- package/dist/commands/command/command-execution.js +25 -39
- package/dist/commands/command/execution-source-loader.js +10 -14
- package/dist/commands/completions.js +1 -1
- package/dist/commands/config-cli.js +14 -5
- package/dist/commands/env/child-env.js +12 -14
- package/dist/commands/env/env-binding.js +47 -58
- package/dist/commands/env/env-cli.js +22 -24
- package/dist/commands/env/env.js +10 -58
- package/dist/commands/env/secret-cli.js +11 -29
- package/dist/commands/env/secret.js +3 -10
- package/dist/commands/health/checks.js +10 -849
- package/dist/commands/health/connections-and-harnesses-check.js +109 -0
- package/dist/commands/health/egress.js +3 -3
- package/dist/commands/health/html-report.js +9 -10
- package/dist/commands/health/plugin-staleness.js +18 -11
- package/dist/commands/health/report-view-model.js +16 -12
- package/dist/commands/health/scheduler-binary.js +1 -1
- package/dist/commands/health/semantic-search-check.js +85 -0
- package/dist/commands/health/type-directory-check.js +0 -3
- package/dist/commands/health.js +30 -42
- package/dist/commands/improve/consolidate/pair-pass.js +10 -25
- package/dist/commands/improve/consolidate.js +10 -15
- package/dist/commands/improve/distill.js +5 -17
- package/dist/commands/improve/eligibility.js +1 -3
- package/dist/commands/improve/execution.js +37 -40
- package/dist/commands/improve/extract-cli.js +6 -11
- package/dist/commands/improve/extract-prompt.js +2 -2
- package/dist/commands/improve/extract.js +67 -97
- package/dist/commands/improve/improve-cli.js +22 -128
- package/dist/commands/improve/improve-report.js +1 -1
- package/dist/commands/improve/improve-strategies.js +25 -108
- package/dist/commands/improve/improve.js +10 -14
- package/dist/commands/improve/loop-stages.js +3 -0
- package/dist/commands/improve/memory/memory-improve.js +1 -1
- package/dist/commands/improve/preparation.js +8 -13
- package/dist/commands/improve/reflect.js +203 -332
- package/dist/commands/improve/retrieval-scope.js +1 -1
- package/dist/commands/improve/session-asset.js +3 -2
- package/dist/commands/improve/stage.js +87 -115
- package/dist/commands/lint/base-linter.js +3 -3
- package/dist/commands/lint/env-key-rules.js +7 -6
- package/dist/commands/lint/index.js +3 -3
- package/dist/commands/models-cli.js +103 -63
- package/dist/commands/proposal/drain.js +26 -39
- package/dist/commands/proposal/proposal-cli.js +14 -18
- package/dist/commands/proposal/propose-cli.js +4 -2
- package/dist/commands/proposal/propose.js +37 -64
- package/dist/commands/proposal/repository.js +17 -17
- package/dist/commands/proposal/validators/proposal-validators.js +3 -6
- package/dist/commands/read/curate.js +10 -6
- package/dist/commands/read/registry-search.js +2 -48
- package/dist/commands/read/search-cli.js +1 -8
- package/dist/commands/read/search.js +5 -6
- package/dist/commands/read/show.js +6 -29
- package/dist/commands/remember.js +25 -40
- package/dist/commands/sources/add-cli.js +8 -63
- package/dist/commands/sources/bundle-cli.js +8 -9
- package/dist/commands/sources/bundle-config-ops.js +2 -2
- package/dist/commands/sources/info.js +12 -1
- package/dist/commands/sources/init.js +1 -1
- package/dist/commands/sources/installed-stashes.js +119 -63
- package/dist/commands/sources/migration-help.js +1 -1
- package/dist/commands/sources/plugin-upgrade.js +8 -15
- package/dist/commands/sources/schema-repair.js +4 -10
- package/dist/commands/sources/source-add.js +2 -2
- package/dist/commands/sources/source-clone.js +31 -7
- package/dist/commands/sources/source-manage.js +4 -4
- package/dist/commands/targets.js +175 -0
- package/dist/commands/tasks/explain.js +104 -69
- package/dist/commands/tasks/tasks-cli.js +9 -11
- package/dist/commands/tasks/tasks.js +75 -97
- package/dist/commands/ui/api.js +11 -3
- package/dist/commands/ui/redact.js +5 -31
- package/dist/commands/ui/workspace-actions.js +1 -1
- package/dist/commands/workflow/plan.js +48 -9
- package/dist/commands/workflow-cli.js +40 -45
- package/dist/core/adapter/adapters/agent-skills-adapter.js +10 -11
- package/dist/core/adapter/adapters/akm-adapter.js +36 -41
- package/dist/core/adapter/adapters/akm-lint.js +10 -12
- package/dist/core/adapter/adapters/akm-metadata.js +2 -2
- package/dist/core/adapter/adapters/akm-task-adapter.js +8 -9
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +5 -5
- package/dist/core/adapter/adapters/claude-adapter.js +1 -1
- package/dist/core/adapter/adapters/dotenv-adapter.js +7 -6
- package/dist/core/adapter/adapters/generic-files-adapter.js +5 -5
- package/dist/core/adapter/adapters/index.js +3 -4
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +12 -14
- package/dist/core/adapter/adapters/okf-adapter.js +8 -10
- package/dist/core/adapter/adapters/opencode-adapter.js +1 -1
- package/dist/core/adapter/adapters/shared.js +3 -3
- package/dist/core/adapter/adapters/tool-dir-shared.js +7 -25
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +3 -3
- package/dist/core/adapter/detect-adapter.js +1 -1
- package/dist/core/adapter/execution-source.js +13 -35
- package/dist/core/adapter/registry.js +1 -1
- package/dist/core/adapter/validate-context.js +2 -4
- package/dist/core/asset/asset-placement.js +1 -1
- package/dist/core/asset/asset-ref.js +3 -3
- package/dist/core/asset/resolve-ref.js +5 -0
- package/dist/core/bundle-rename.js +12 -4
- package/dist/core/closest-match.js +37 -0
- package/dist/core/common.js +37 -57
- package/dist/core/config/config-io.js +26 -18
- package/dist/core/config/config-schema.js +19 -106
- package/dist/core/config/config-sources.js +3 -3
- package/dist/core/config/config-types.js +4 -4
- package/dist/core/config/config-walker.js +50 -77
- package/dist/core/config/config.js +438 -109
- package/dist/core/config/convert-engine-references.js +114 -0
- package/dist/core/config/convert-engines-shared.js +40 -0
- package/dist/core/config/convert-engines.js +300 -0
- package/dist/core/config/convert-models-overlay.js +137 -0
- package/dist/core/config/credentials.js +304 -0
- package/dist/core/config/engine-semantics.js +3 -3
- package/dist/core/config/migrate-keys.js +222 -0
- package/dist/core/config/model-aliases.js +37 -0
- package/dist/core/config/models-file.js +34 -0
- package/dist/core/config/retired-engines.js +53 -0
- package/dist/core/config/schema/connections.js +41 -0
- package/dist/core/config/schema/embedding.js +2 -2
- package/dist/core/config/schema/harnesses.js +41 -0
- package/dist/core/config/schema/improve-processes.js +9 -28
- package/dist/core/config/schema/improve.js +36 -1
- package/dist/core/config/schema/index-config.js +18 -20
- package/dist/core/config/schema/primitives.js +42 -17
- package/dist/core/config/schema/search.js +6 -11
- package/dist/core/config/schema/sources-bundles.js +9 -9
- package/dist/core/config/schema/workflow.js +2 -6
- package/dist/core/config/unusable-entries.js +66 -0
- package/dist/core/content-safety.js +3 -6
- package/dist/core/endpoint-url.js +47 -0
- package/dist/core/env-secret-ref.js +84 -73
- package/dist/core/errors.js +10 -16
- package/dist/core/extra-params.js +3 -3
- package/dist/core/improve-result.js +8 -9
- package/dist/core/json-schema.js +1 -1
- package/dist/core/lesson-lint.js +1 -1
- package/dist/core/llm-inference.js +80 -0
- package/dist/core/parse.js +2 -2
- package/dist/core/paths.js +33 -10
- package/dist/core/recognition-util.js +8 -10
- package/dist/core/redaction.js +94 -55
- package/dist/core/ref-token.js +82 -0
- package/dist/core/secret-value.js +14 -0
- package/dist/core/state/migrations.js +17 -22
- package/dist/core/structured.js +2 -68
- package/dist/core/subprocess.js +63 -22
- package/dist/core/type-presentation.js +10 -14
- package/dist/core/write-source.js +20 -4
- package/dist/execution/input-contract.js +3 -6
- package/dist/execution/notices.js +49 -0
- package/dist/execution/resolved-request.js +24 -40
- package/dist/execution/source.js +21 -45
- package/dist/execution/target-ref.js +2 -2
- package/dist/indexer/bundle-identity-guard.js +6 -5
- package/dist/indexer/ensure-index.js +1 -1
- package/dist/indexer/index-writer-lock.js +1 -1
- package/dist/indexer/indexer.js +46 -42
- package/dist/indexer/installations.js +12 -22
- package/dist/indexer/lookup/adapter-concept-owner.js +40 -14
- package/dist/indexer/materialize-embeddings.js +20 -16
- package/dist/indexer/passes/memory-inference.js +21 -50
- package/dist/indexer/passes/metadata.js +5 -5
- package/dist/indexer/scan/doc-to-entry.js +1 -1
- package/dist/indexer/scan/drain-dir.js +9 -11
- package/dist/indexer/search/db-search.js +9 -7
- package/dist/indexer/search/search-source.js +42 -22
- package/dist/indexer/usage/usage-events.js +2 -3
- package/dist/indexer/walk/index-context.js +2 -1
- package/dist/indexer/walk/matchers.js +3 -11
- package/dist/indexer/walk/path-resolver.js +13 -68
- package/dist/indexer/walk/walker.js +32 -26
- package/dist/integrations/agent/akm-read-tools.js +81 -0
- package/dist/integrations/agent/config.js +1 -1
- package/dist/integrations/agent/detect.js +32 -36
- package/dist/integrations/agent/execution.js +130 -428
- package/dist/integrations/agent/index.js +1 -1
- package/dist/integrations/agent/profiles.js +24 -28
- package/dist/integrations/agent/prompts.js +17 -30
- package/dist/integrations/agent/request-lowering.js +67 -101
- package/dist/integrations/agent/resolution.js +332 -0
- package/dist/integrations/agent/runner-dispatch.js +156 -181
- package/dist/integrations/agent/runner.js +20 -70
- package/dist/integrations/agent/runtime-port.js +4 -0
- package/dist/integrations/agent/runtime.js +10 -0
- package/dist/integrations/agent/spawn.js +65 -190
- package/dist/integrations/harnesses/aider/index.js +19 -39
- package/dist/integrations/harnesses/amazonq/index.js +17 -32
- package/dist/integrations/harnesses/claude/index.js +59 -28
- package/dist/integrations/harnesses/claude/session-log.js +7 -5
- package/dist/integrations/harnesses/codex/index.js +19 -31
- package/dist/integrations/harnesses/copilot/index.js +17 -35
- package/dist/integrations/harnesses/gemini/index.js +18 -34
- package/dist/integrations/harnesses/harness.js +36 -0
- package/dist/integrations/harnesses/index.js +20 -51
- package/dist/integrations/harnesses/opencode/agent-builder.js +132 -100
- package/dist/integrations/harnesses/opencode/index.js +11 -33
- package/dist/integrations/harnesses/opencode/roots.js +50 -0
- package/dist/integrations/harnesses/opencode/runtime/binary.js +206 -0
- package/dist/integrations/harnesses/opencode/runtime/command.js +152 -0
- package/dist/integrations/harnesses/opencode/runtime/index.js +177 -0
- package/dist/integrations/harnesses/opencode/runtime/tar.js +107 -0
- package/dist/integrations/harnesses/opencode/session-log-v1.js +15 -7
- package/dist/integrations/harnesses/opencode/session-log-v2.js +72 -48
- package/dist/integrations/harnesses/opencode/session-log.js +58 -137
- package/dist/integrations/harnesses/opencode/version.js +34 -53
- package/dist/integrations/harnesses/openhands/index.js +13 -37
- package/dist/integrations/harnesses/pi/index.js +21 -32
- package/dist/integrations/lockfile.js +1 -1
- package/dist/integrations/session-logs/index.js +11 -31
- package/dist/llm/client.js +93 -111
- package/dist/llm/embedder.js +19 -34
- package/dist/llm/embedders/connection.js +31 -0
- package/dist/llm/embedders/local-model-files.js +56 -0
- package/dist/llm/embedders/local.js +146 -115
- package/dist/llm/embedders/remote.js +26 -23
- package/dist/llm/embedders/types.js +1 -1
- package/dist/llm/index-passes.js +33 -39
- package/dist/llm/memory-infer.js +67 -77
- package/dist/llm/model-list.js +35 -0
- package/dist/llm/rerank-client.js +8 -14
- package/dist/llm/structured-call.js +45 -99
- package/dist/llm/structured.js +60 -0
- package/dist/output/renderers.js +2 -8
- package/dist/output/shapes/helpers.js +18 -44
- package/dist/output/shapes/passthrough.js +1 -0
- package/dist/output/shapes.js +1 -7
- package/dist/output/text/command-format.js +41 -39
- package/dist/output/text/health-format.js +8 -2
- package/dist/output/text/helpers.js +1 -1
- package/dist/output/text/migrate.js +12 -0
- package/dist/output/text/models.js +3 -2
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +16 -28
- package/dist/output/text/show-format.js +0 -2
- package/dist/output/text/targets-table.js +70 -0
- package/dist/output/text/workflow-format.js +44 -15
- package/dist/output/text.js +1 -1
- package/dist/registry/providers/skills-sh.js +1 -28
- package/dist/registry/providers/static-index.js +1 -71
- package/dist/runtime.js +6 -2
- package/dist/scripts/akm-migrate-node.js +47095 -44905
- package/dist/scripts/akm-migrate.js +46946 -44755
- package/dist/setup/detect.js +28 -273
- package/dist/setup/endpoint.js +36 -0
- package/dist/setup/semantic-assets.js +13 -19
- package/dist/setup/setup-flags.js +77 -0
- package/dist/setup/setup-plan.js +144 -0
- package/dist/setup/setup.js +134 -358
- package/dist/setup/steps/connection-shared.js +49 -101
- package/dist/setup/steps/connection.js +121 -524
- package/dist/setup/steps/embeddings.js +151 -0
- package/dist/setup/steps/harnesses.js +118 -0
- package/dist/setup/steps/platforms.js +2 -81
- package/dist/setup/steps/tasks.js +1 -2
- package/dist/setup/steps.js +10 -0
- package/dist/setup/summary.js +67 -0
- package/dist/sources/freshness.js +16 -21
- package/dist/sources/providers/git-provider.js +2 -9
- package/dist/sources/providers/provider-utils.js +13 -5
- package/dist/sources/resolve.js +12 -16
- package/dist/sources/snapshot-fetchers/robots.js +11 -12
- package/dist/sources/snapshot-fetchers/secret-seam.js +2 -4
- package/dist/sources/snapshot-fetchers/website-ingest.js +8 -15
- package/dist/sources/snapshot-fetchers/x.js +1 -1
- package/dist/standalone/onnxruntime-library.js +52 -0
- package/dist/storage/repositories/improve-ledger-repository.js +1 -1
- package/dist/storage/repositories/improve-runs-repository.js +0 -13
- package/dist/storage/repositories/index-entries-repository.js +2 -2
- package/dist/storage/repositories/proposals-repository.js +2 -2
- package/dist/storage/repositories/task-history-repository.js +2 -2
- package/dist/storage/repositories/workflow-runs-repository.js +44 -129
- package/dist/storage/sqlite-read-snapshot.js +33 -29
- package/dist/tasks/embedded.js +1 -1
- package/dist/tasks/log-redaction.js +7 -119
- package/dist/tasks/prepare/prepare-support.js +8 -7
- package/dist/tasks/prepare/prepare.js +8 -9
- package/dist/tasks/prepare/script-capture.js +9 -25
- package/dist/tasks/run/attempt-lifecycle.js +17 -35
- package/dist/tasks/run/load-task.js +54 -27
- package/dist/tasks/run/run-command-task.js +15 -10
- package/dist/tasks/run/run-native-task.js +8 -21
- package/dist/tasks/run/run-task.js +5 -8
- package/dist/tasks/run/run-workflow-task.js +14 -21
- package/dist/tasks/run/task-history.js +9 -17
- package/dist/tasks/run/task-log.js +1 -5
- package/dist/tasks/scheduler-invocation.js +13 -18
- package/dist/tasks/scheduler-sync.js +0 -1
- package/dist/tasks/source/bounded-document.js +31 -117
- package/dist/tasks/source/parse-task-source.js +0 -1
- package/dist/tasks/source/project-v4.js +5 -3
- package/dist/tasks/source/task-input-diagnostics.js +3 -4
- package/dist/tasks/source/task-source-v4.js +48 -72
- package/dist/tasks/source-v3.js +2 -5
- package/dist/tasks/task-run-reserved-flags.js +1 -2
- package/dist/workflows/authoring/authoring.js +2 -7
- package/dist/workflows/compile.js +1 -15
- package/dist/workflows/concurrency-policy.js +4 -4
- package/dist/workflows/exec/child-workflow.js +1 -4
- package/dist/workflows/exec/dispatch-redaction.js +35 -86
- package/dist/workflows/exec/environment.js +13 -77
- package/dist/workflows/exec/exec-unit.js +14 -55
- package/dist/workflows/exec/frozen-judge.js +26 -28
- package/dist/workflows/exec/native-executor.js +126 -71
- package/dist/workflows/exec/run-workflow.js +38 -42
- package/dist/workflows/exec/step-work.js +13 -17
- package/dist/workflows/exec/unit-dispatch.js +7 -21
- package/dist/workflows/freeze/environment.js +14 -119
- package/dist/workflows/freeze/freeze.js +14 -33
- package/dist/workflows/freeze/step-values.js +6 -13
- package/dist/workflows/freeze/targets/child-workflow.js +3 -5
- package/dist/workflows/freeze/targets/command.js +9 -15
- package/dist/workflows/freeze/targets/shell.js +0 -3
- package/dist/workflows/freeze/task-bindings.js +0 -1
- package/dist/workflows/parser.js +50 -59
- package/dist/workflows/plan.js +8 -2
- package/dist/workflows/renderer.js +83 -9
- package/dist/workflows/resource-limits.js +2 -2
- package/dist/workflows/runtime/run-plan.js +38 -23
- package/dist/workflows/runtime/runs.js +55 -93
- package/dist/workflows/runtime/workflow-asset-loader.js +55 -86
- package/dist/workflows/source-files.js +7 -19
- package/docs/README.md +10 -16
- package/docs/architecture/README.md +2 -37
- package/docs/architecture/adapters.md +2 -2
- package/docs/architecture/akm-core-principles.md +256 -118
- package/docs/architecture/architecture.md +283 -99
- package/docs/architecture/improvement.md +8 -2
- package/docs/architecture/internals/classification.md +1 -3
- package/docs/architecture/internals/fresh-host-rebuild-runbook.md +7 -6
- package/docs/architecture/internals/health-advisories.md +35 -74
- package/docs/architecture/internals/improve-workflow.md +27 -26
- package/docs/architecture/internals/indexing.md +3 -3
- package/docs/architecture/internals/storage-locations.md +48 -15
- package/docs/architecture/persisted-data-compat.md +10 -6
- package/docs/architecture/specs/okf-support.md +9 -11
- package/docs/architecture/specs/ref.md +7 -9
- package/docs/architecture/testing/testing-workflow.md +172 -52
- package/docs/architecture/workflow-engine.md +51 -34
- package/docs/guides/README.md +0 -1
- package/docs/guides/author-bundles.md +15 -20
- package/docs/guides/author-workflows.md +93 -71
- package/docs/guides/bundles.md +20 -16
- package/docs/guides/discover-and-load.md +1 -1
- package/docs/guides/getting-started.md +49 -3
- package/docs/guides/improve-the-library.md +10 -4
- package/docs/guides/recipes/headless-install.md +11 -16
- package/docs/guides/run-workflows.md +29 -20
- package/docs/guides/scheduling.md +2 -2
- package/docs/guides/use-with-any-agent.md +20 -22
- package/docs/integration/bundling-akm.md +19 -9
- package/docs/maintainers/README.md +2 -6
- package/docs/maintainers/release-checklist.md +73 -126
- package/docs/migration/README.md +10 -3
- package/docs/migration/release-notes/0.10.0.md +81 -16
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +1 -1
- package/docs/migration/release-notes/0.9.0.md +1 -1
- package/docs/migration/release-notes/README.md +1 -1
- package/docs/migration/v0.9-to-v0.10.md +300 -60
- package/docs/migration/v0.9.1-to-v0.9.2.md +6 -5
- package/docs/posts/config-v2-lessons-16.md +1 -1
- package/docs/posts/llm-mode-reflect-13.md +1 -1
- package/docs/posts/release-0.6.0.md +11 -11
- package/docs/posts/release-0.8.0.md +4 -4
- package/docs/posts/workflows-vaults-09.md +1 -1
- package/docs/reference/README.md +1 -1
- package/docs/reference/asset-types.md +2 -2
- package/docs/reference/cli.md +477 -388
- package/docs/reference/configuration.md +569 -550
- package/docs/reference/data-and-telemetry.md +9 -6
- package/docs/reference/env-and-secrets.md +72 -15
- package/docs/reference/refs.md +3 -20
- package/docs/reference/registry.md +12 -38
- package/docs/reference/supported-formats.md +1 -1
- package/docs/reference/tasks.md +22 -11
- package/docs/reference/ui-api.md +14 -9
- package/docs/reference/workflow-schema.md +199 -154
- package/docs/reference/workflows.md +4 -6
- package/package.json +9 -11
- package/schemas/akm-config.json +1696 -2922
- package/schemas/akm-task.json +4 -4
- package/schemas/akm-workflow.json +36 -9
- package/ROADMAP.md +0 -112
- package/dist/assets/models.json +0 -35
- package/dist/commands/health/engine-usage.js +0 -45
- package/dist/commands/sources/dangerous-env-audit.js +0 -134
- package/dist/core/activation-policy.js +0 -67
- package/dist/core/config/schema/engines.js +0 -160
- package/dist/core/config/schema/execution.js +0 -23
- package/dist/core/spawn-env.js +0 -268
- package/dist/execution/directory-identity.js +0 -78
- package/dist/integrations/agent/builder-shared.js +0 -33
- package/dist/integrations/agent/builders.js +0 -43
- package/dist/integrations/agent/engine-fallback.js +0 -59
- package/dist/integrations/agent/engine-resolution.js +0 -333
- package/dist/integrations/agent/model-map.js +0 -475
- package/dist/integrations/harnesses/aider/agent-builder.js +0 -107
- package/dist/integrations/harnesses/aider/result-extractor.js +0 -53
- package/dist/integrations/harnesses/amazonq/agent-builder.js +0 -138
- package/dist/integrations/harnesses/amazonq/result-extractor.js +0 -48
- package/dist/integrations/harnesses/claude/agent-builder.js +0 -106
- package/dist/integrations/harnesses/claude/config-import.js +0 -67
- package/dist/integrations/harnesses/claude/result-extractor.js +0 -67
- package/dist/integrations/harnesses/codex/agent-builder.js +0 -150
- package/dist/integrations/harnesses/codex/result-extractor.js +0 -110
- package/dist/integrations/harnesses/copilot/agent-builder.js +0 -117
- package/dist/integrations/harnesses/copilot/result-extractor.js +0 -178
- package/dist/integrations/harnesses/gemini/agent-builder.js +0 -114
- package/dist/integrations/harnesses/gemini/result-extractor.js +0 -149
- package/dist/integrations/harnesses/opencode/config-import.js +0 -149
- package/dist/integrations/harnesses/opencode/model-config.js +0 -33
- package/dist/integrations/harnesses/opencode/model-work-agent.js +0 -115
- package/dist/integrations/harnesses/opencode/session-log-types.js +0 -12
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -44
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +0 -1052
- package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +0 -199
- package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +0 -254
- package/dist/integrations/harnesses/opencode-sdk/wire.js +0 -66
- package/dist/integrations/harnesses/openhands/agent-builder.js +0 -120
- package/dist/integrations/harnesses/openhands/result-extractor.js +0 -135
- package/dist/integrations/harnesses/pi/agent-builder.js +0 -89
- package/dist/integrations/harnesses/pi/result-extractor.js +0 -168
- package/dist/integrations/harnesses/shared.js +0 -18
- package/dist/integrations/harnesses/types.js +0 -55
- package/dist/llm/feature-gate.js +0 -115
- package/dist/output/shapes/models-list.js +0 -16
- package/dist/output/shapes/registry-search.js +0 -10
- package/dist/setup/detected-engines.js +0 -136
- package/dist/setup/engine-config.js +0 -97
- package/dist/setup/harness-config-import.js +0 -47
- package/dist/setup/providers.js +0 -14
- package/dist/setup/steps/semantic.js +0 -39
- package/dist/workflows/authoring/scope-key.js +0 -79
- package/dist/workflows/exec/lowering-notices.js +0 -23
- package/dist/workflows/source-semantics.js +0 -110
- package/docs/architecture/0.10-process-rules.md +0 -832
- package/docs/architecture/akm-architecture-decision-history.md +0 -2055
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +0 -550
- package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +0 -72
- package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +0 -142
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +0 -189
- package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +0 -97
- package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +0 -108
- package/docs/architecture/decisions/0006-task-source-version-routing.md +0 -124
- package/docs/architecture/decisions/0007-workflow-composition-bounds.md +0 -83
- package/docs/architecture/decisions/0008-task-binding-normalization.md +0 -88
- package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +0 -80
- package/docs/architecture/decisions/0010-driver-protocol-cut.md +0 -36
- package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +0 -125
- package/docs/architecture/decisions/README.md +0 -62
- package/docs/architecture/internals/functional-contract-patterns.md +0 -340
- package/docs/architecture/internals/registry-network-boundary.md +0 -57
- package/docs/architecture/internals/search.md +0 -248
- package/docs/architecture/reviews/env-secret-access.md +0 -319
- package/docs/architecture/runtime-boundary-design.md +0 -153
- package/docs/architecture/specs/0.9.0-close-out-plan.md +0 -361
- package/docs/architecture/specs/0.9.0-decisions.md +0 -532
- package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +0 -745
- package/docs/architecture/specs/0.9.0-open-items-register.md +0 -135
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +0 -740
- package/docs/architecture/specs/0.9.0-release-surface-review.md +0 -636
- package/docs/architecture/specs/agent-command-engine-model-design.md +0 -513
- package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +0 -501
- package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +0 -291
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +0 -2059
- package/docs/architecture/specs/di-seams-plan.md +0 -539
- package/docs/architecture/specs/driver-protocol-keep-or-cut.md +0 -275
- package/docs/architecture/specs/fact-asset-type.md +0 -142
- package/docs/architecture/specs/improve-collapse-churn-detector-design.md +0 -634
- package/docs/architecture/specs/reviews/task-workflow-unification/README.md +0 -72
- package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +0 -152
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +0 -352
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +0 -300
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +0 -402
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +0 -758
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +0 -645
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +0 -602
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +0 -74
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +0 -15
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +0 -132
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +0 -147
- package/docs/architecture/specs/stash-conventions-code-spec.md +0 -275
- package/docs/architecture/specs/stash-organization-conventions.md +0 -377
- package/docs/architecture/specs/task-workflow-format-unification.md +0 -721
- package/docs/architecture/specs/workflow-engine-buy-vs-build.md +0 -231
- package/docs/architecture/specs/workflow-format-unification.md +0 -432
- package/docs/architecture/testing/manual-testing-checklist.md +0 -3411
- package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +0 -924
- package/docs/architecture/testing/task-workflow-manual-tests.md +0 -1720
- package/docs/guides/claude-code-vs-akm-workflows.md +0 -29
- package/docs/guides/knowledge-management.md +0 -18
- package/docs/maintainers/curate-workmap.md +0 -335
- package/docs/migration/v0.5-to-v0.6.md +0 -759
- package/docs/migration/v0.7-to-v0.8.md +0 -1378
- package/docs/plans/0.9.2-agent-command-workflow-plan.md +0 -423
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AKM Data & Telemetry
|
|
2
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
|
|
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 model connections and embedding provider, the harness programs you enable, 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
4
|
|
|
5
5
|
## No Telemetry
|
|
6
6
|
|
|
@@ -12,10 +12,11 @@ AKM does not:
|
|
|
12
12
|
|
|
13
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
14
|
|
|
15
|
-
1. **Your configured
|
|
15
|
+
1. **Your configured connections and embedding provider** (e.g. Anthropic, OpenAI, a local Ollama, or any OpenAI-compatible endpoint) receive the prompts and asset content sent for reflect/propose/distill/embedding when you enable those features, and `akm setup`, `akm models` and `akm health` ask each endpoint which models it serves. If you point AKM at Anthropic, Anthropic receives those requests. Your API key is sent only to the endpoint of the connection it belongs to.
|
|
16
|
+
**A harness you enable** (Claude Code, Codex, OpenCode, ...) is a program akm runs on your machine, and what akm hands it reaches whatever that harness is configured for: its own provider, its own tools, its own MCP servers. It runs with your environment as it is ([How akm runs a harness](configuration.md#how-akm-runs-a-harness)). akm's own agent runtime (used when no harness is enabled) sends to your connection only.
|
|
16
17
|
2. **Registry metadata and bundle 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
18
|
3. **`akm upgrade`** — fetches the latest release from GitHub releases (GitHub sees the request).
|
|
18
|
-
4. **`akm setup`** —
|
|
19
|
+
4. **`akm setup`** — looks for an OpenAI-compatible server on `localhost` (ports 11434, 1234 and 8080) with one `GET /v1/models` each, and asks the endpoint you give it (and the embedding endpoint, if you pick another) for its model list. `--no-probe` contacts none of them.
|
|
19
20
|
5. **`akm improve` dead-link checks** — a full-scope improve run (the default for a bare `akm improve`) sends best-effort `HEAD` requests (following redirects, with a short per-request timeout, checked at a bounded concurrency rather than all at once) to every URL found in the bodies of the knowledge assets it is improving, to flag dead links. The hosts of those URLs see a `HEAD` request; no asset content is sent. Keep URLs you don't want probed out of knowledge-asset bodies, or run improve with an explicit narrower scope.
|
|
20
21
|
|
|
21
22
|
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.
|
|
@@ -48,7 +49,8 @@ AKM writes to these locations on your machine. All paths follow [XDG Base Direct
|
|
|
48
49
|
|
|
49
50
|
| Path | Contents | Safe to delete? |
|
|
50
51
|
|---|---|---|
|
|
51
|
-
| `config.json` | Your AKM configuration:
|
|
52
|
+
| `config.json` | Your AKM configuration: connections, harnesses, improve strategies, bundles (bundle sources), and experimental opt-ins — see [Configuration](configuration.md) | **No** — deleting resets all settings |
|
|
53
|
+
| `credentials.json` | The API keys akm holds for your connections and for the `embedding` and `search.curateRerank` services, each with the endpoint it was stored for, written with mode 0600 (see [Credentials](configuration.md#credentials)) | **No** — deleting it removes those keys; akm sends requests without them |
|
|
52
54
|
|
|
53
55
|
Override: set `AKM_CONFIG_DIR` or `XDG_CONFIG_HOME`.
|
|
54
56
|
|
|
@@ -62,6 +64,7 @@ Override: set `AKM_CONFIG_DIR` or `XDG_CONFIG_HOME`.
|
|
|
62
64
|
| `akm.lock` | Inter-process write lock | Yes — recreated automatically |
|
|
63
65
|
| `backups/tasks/` | Copies of task files taken by `akm migrate apply` before it rewrites them, one timestamped directory per run that rewrote a file | Yes — once the migrated tasks are verified |
|
|
64
66
|
| `akm.lock.lck` | Lock write sentinel | Yes — recreated automatically |
|
|
67
|
+
| `opencode-runtime/` | Everything akm's own agent runtime keeps: OpenCode's `config/` (with akm's plugin), `data/` (logs, repositories, shell output, and `data/opencode/opencode.db`, the runtime's sessions, which `akm proposal extract --type opencode` reads back, read-only), `cache/`, `state/` and `tmp/` (the binary's own native pieces) | Yes — recreated on next use; deleting it loses the runtime's session history |
|
|
65
68
|
|
|
66
69
|
Override: set `AKM_DATA_DIR` or `XDG_DATA_HOME`.
|
|
67
70
|
|
|
@@ -101,10 +104,10 @@ Everything in the cache is regenerable. It is safe to delete the entire cache di
|
|
|
101
104
|
| `config-backups/config.latest.json` | Latest backup alias (owner-only `0600`) | Yes |
|
|
102
105
|
| `registry/` | Downloaded registry tarballs (bundle packages from npm, GitHub, etc.) | Yes — re-downloaded on next `akm bundle add` or `akm bundle update` |
|
|
103
106
|
| `registry-index/` | Legacy per-URL JSON cache (v0.7 artifact) | Yes — fully replaced by `index.db` in 0.8.0 |
|
|
104
|
-
| `semantic-status.json` | Semantic index build status marker | Yes |
|
|
105
107
|
| `bin/` | Downloaded AKM binary cache (used by `akm upgrade`) | Yes |
|
|
106
108
|
| `tasks/logs/` | Scheduled task log files. Written at your umask; they hold captured command/agent output, so tighten the directory yourself if the machine is shared | Yes — ephemeral logs |
|
|
107
109
|
| `tasks/history/` | Legacy task history JSONL (v0.7 migration artifact) | Yes |
|
|
110
|
+
| `opencode/<version>/` | The OpenCode binary akm's own agent runtime runs (about 240 MB), fetched from the npm registry on the runtime's first use | Yes — fetched again on next use |
|
|
108
111
|
|
|
109
112
|
Override: set `AKM_CACHE_DIR` or `XDG_CACHE_HOME`.
|
|
110
113
|
|
|
@@ -170,7 +173,7 @@ the set of types the code actually emits at HEAD (verified against every
|
|
|
170
173
|
| `index_db_vacuumed` | `akm index` VACUUMed index.db, after an index layout migration or because more than half its pages were free | `pagesBefore`, `pagesAfter`, `freelistRatioBefore` |
|
|
171
174
|
| `index_completed` | `akm index`, once when a run finishes | `mode`, `totalMs`, `walkMs`, `llmMs`, `embedMs`, `ftsMs`, `finalizeMs` (phase timings in milliseconds) |
|
|
172
175
|
| `stash_synced` | `akm improve`'s internal sync passes (the `sync.push` feature), before the run and at its end, **distinct from** the `akm sync` command above | `phase` (`pre-run` or `end-of-run`), `committed`, `pushed`, `skipped`, `reason`, `attributed` (paths the run wrote and staged), `unattributed` (in-scope paths that went dirty during the run without the run writing them — left for their author) |
|
|
173
|
-
| `env_access` | `akm env run <
|
|
176
|
+
| `env_access` | `akm env run <ref> -- <command>`, and a workflow unit's `env:` binding at each dispatch (audit trail: key **names** only, values never recorded) | `ref`, `keys` |
|
|
174
177
|
| `secret_access` | `akm secret run <ref> <VAR> -- <command>` (audit trail: var **name** only, value never recorded) | `ref`, `var` |
|
|
175
178
|
|
|
176
179
|
*Proposals*
|
|
@@ -19,6 +19,16 @@ command; use `env` or `secret`.
|
|
|
19
19
|
| Discoverable | key *names* (not values) | name only (the whole file is the value) |
|
|
20
20
|
| Injects | many vars at once (`env run`) | one var (`secret run <ref> <VAR>`) |
|
|
21
21
|
|
|
22
|
+
## Addressing: the akm ref
|
|
23
|
+
|
|
24
|
+
`env` and `secret` assets are addressed like every other asset, by their akm
|
|
25
|
+
ref `[bundle//]conceptId`: `env/prod`, `secrets/gitea_token`,
|
|
26
|
+
`team//secrets/discord_bot_token`. There is no bare-name form. `akm secret
|
|
27
|
+
run gitea_token ...` and `akm env run prod -- ...` are usage errors that name
|
|
28
|
+
the full ref (`secrets/<name>`, `env/<name>`). An unqualified ref resolves the
|
|
29
|
+
way every unqualified ref does: the default bundle first, then installation
|
|
30
|
+
priority.
|
|
31
|
+
|
|
22
32
|
## Core security guarantee
|
|
23
33
|
|
|
24
34
|
Values never appear in akm's structured output. `env list` and `akm show
|
|
@@ -31,8 +41,8 @@ the child process — never through akm's own stdout, the index, or `akm
|
|
|
31
41
|
show`.
|
|
32
42
|
|
|
33
43
|
```sh
|
|
34
|
-
akm env create prod
|
|
35
|
-
akm env create prod --from-file ./.env
|
|
44
|
+
akm env create env/prod # create an empty .env group
|
|
45
|
+
akm env create env/prod --from-file ./.env # or ingest an existing .env
|
|
36
46
|
|
|
37
47
|
# akm does not manage individual keys — edit the whole file with your own editor:
|
|
38
48
|
$EDITOR "$(akm env path env/prod --quiet)"
|
|
@@ -58,17 +68,57 @@ script (re-serialised single-quoted, so shell substitutions in the source
|
|
|
58
68
|
`.env` become literal strings) — it requires `--out` and never prints values
|
|
59
69
|
to stdout.
|
|
60
70
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
## The `${ref}` token
|
|
72
|
+
|
|
73
|
+
Wherever akm substitutes a reference into a string it hands to a process or a
|
|
74
|
+
provider, the token is `${[bundle//]conceptId}`:
|
|
75
|
+
|
|
76
|
+
- an env value: `DISCORD_BOT_TOKEN=${team//secrets/discord_bot_token}`;
|
|
77
|
+
- a git bundle's config `credential`: `"${secrets/gitea_token}"`.
|
|
78
|
+
|
|
79
|
+
Where the token may appear decides what it may name:
|
|
80
|
+
|
|
81
|
+
- **In an env value**, any asset ref substitutes. A `secrets/...` ref stands for
|
|
82
|
+
the secret's value; any other asset ref (for example
|
|
83
|
+
`${scripts/lab/fetch.sh}`) stands for the asset's absolute path.
|
|
84
|
+
- **In a git bundle's `credential`**, only a `secrets/...` ref is accepted. A `${...}`
|
|
85
|
+
naming any other kind of asset is rejected when the config loads.
|
|
86
|
+
|
|
87
|
+
The ref is resolved with the one ref walk, so it may name any bundle and any
|
|
88
|
+
asset its owner holds. A `${...}` body is a ref when it leads with a native type
|
|
89
|
+
directory, qualified or not (`${secrets/x}`, `${scripts/run.sh}`,
|
|
90
|
+
`${team//secrets/x}`), or when it is bundle-qualified and that bundle is
|
|
91
|
+
installed (`${docs//tables/customers}`, whatever adapter owns it). `akm env
|
|
92
|
+
run` and a workflow unit's `env:` binding replace the tokens in an env file's
|
|
93
|
+
values; `env export` writes them verbatim. A `${...}` body that is not an akm
|
|
94
|
+
ref (`${HOME}`, `${PATH//:/ }`, and shell substitution such as `${v//-/_}`
|
|
95
|
+
unless a bundle named `v` is installed) is plain text: it is left untouched in an env
|
|
96
|
+
value, and in a git bundle's `credential` a `${NAME}` that is a valid variable name is
|
|
97
|
+
expanded from the process environment. A ref no bundle owns is an error and
|
|
98
|
+
nothing is injected. Each read records an `env_access` event. See
|
|
70
99
|
[Workflow Schema: Binding a secret to a unit](workflow-schema.md#binding-a-secret-to-a-unit).
|
|
71
100
|
|
|
101
|
+
The API keys of model connections, `embedding` and `search.curateRerank` are
|
|
102
|
+
not secrets-store references: they are a `$VAR` environment reference or an
|
|
103
|
+
entry of `credentials.json` stored for the endpoint, and a `${secrets/...}` in an `apiKey` is ignored
|
|
104
|
+
with a warning (see [Configuration: Credentials](configuration.md#credentials)).
|
|
105
|
+
The `secrets/` store is for the secrets your own agents, tasks and bundle
|
|
106
|
+
sources need.
|
|
107
|
+
|
|
108
|
+
A secret's value is its file content with surrounding whitespace trimmed. That
|
|
109
|
+
one read is used by `akm secret run`, env tokens, bundle credentials and the
|
|
110
|
+
website fetchers, so a hand-written file's trailing newline never lands in an
|
|
111
|
+
HTTP header.
|
|
112
|
+
|
|
113
|
+
`${secret:NAME}` was the old env-value spelling, meaning the secret `NAME` in the
|
|
114
|
+
env file's own bundle. akm still reads it that way, as `${<bundle>//secrets/NAME}`
|
|
115
|
+
with the bundle that owns the env file, and warns once naming the env ref. The
|
|
116
|
+
env file is bundle content and is not rewritten; write the full ref.
|
|
117
|
+
|
|
118
|
+
`secret://name` was the config spelling of the same thing. It is retired:
|
|
119
|
+
config still reads it as `${secrets/name}` and names the key once, and `akm
|
|
120
|
+
migrate apply` rewrites the file.
|
|
121
|
+
|
|
72
122
|
## File modes and storage
|
|
73
123
|
|
|
74
124
|
`.env` files are stored at mode 0600 under `env/` in the target bundle;
|
|
@@ -80,6 +130,12 @@ secret can carry a sibling `.sensitive` marker that excludes it from `list`
|
|
|
80
130
|
output and from the search index entirely; the value remains usable via
|
|
81
131
|
`run`.
|
|
82
132
|
|
|
133
|
+
An env file or secret may be a symlink to a file anywhere else, such as a
|
|
134
|
+
container's `/run/secrets/<name>`: `akm env`, `akm secret`, `${secrets/name}`
|
|
135
|
+
substitution and a workflow `env:` binding follow it. A name still cannot climb
|
|
136
|
+
out of `env/` or `secrets/` with `..` or an absolute path. Writes never follow
|
|
137
|
+
a symlink out of the bundle.
|
|
138
|
+
|
|
83
139
|
## Write-target resolution
|
|
84
140
|
|
|
85
141
|
Env/secret **mutations** (`env create`, `env remove`, `secret set`) choose
|
|
@@ -108,10 +164,11 @@ subprocess the child spawns.
|
|
|
108
164
|
- Avoid running commands that print the environment (`env`, `printenv`,
|
|
109
165
|
shell tracing, verbose diagnostics) in agent contexts unless you
|
|
110
166
|
explicitly intend to expose the child environment.
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
167
|
+
- Installing a bundle is the trust decision: `env run`, `secret run` and
|
|
168
|
+
workflow `env:` bindings inject what the bundle's files define, including
|
|
169
|
+
keys such as `PATH` or `LD_PRELOAD`, from any bundle, with no warning, block
|
|
170
|
+
or flag. `akm lint` still reports such keys (`dangerous-env-key`,
|
|
171
|
+
non-blocking) so an author can review their own files.
|
|
115
172
|
|
|
116
173
|
## Stability
|
|
117
174
|
|
package/docs/reference/refs.md
CHANGED
|
@@ -87,20 +87,6 @@ for retrieval — ship as the `facts/conventions/organization`,
|
|
|
87
87
|
facts in the bundle skeleton, and are surfaced to agents automatically at
|
|
88
88
|
authoring time.
|
|
89
89
|
|
|
90
|
-
### Planned
|
|
91
|
-
|
|
92
|
-
Not part of the current stability contract; see
|
|
93
|
-
[ROADMAP.md](../../ROADMAP.md) for what's committed:
|
|
94
|
-
|
|
95
|
-
- A `--namespace <ns>` flag to provide a thin name-prefix normalizer on
|
|
96
|
-
`search`, `remember`, `improve`, and `feedback` so the same prefix doesn't
|
|
97
|
-
have to be typed every time.
|
|
98
|
-
- A `::` delimiter (for example `projectA::memories/auth-tip`) to provide
|
|
99
|
-
strict isolation so refs from different namespaces never collide in
|
|
100
|
-
ranking or recall.
|
|
101
|
-
|
|
102
|
-
Until those land, physical subdirectories remain the recommended pattern.
|
|
103
|
-
|
|
104
90
|
## Renames and moves
|
|
105
91
|
|
|
106
92
|
**Treat a ref as permanent.** A rename is **delete plus create**: the new
|
|
@@ -125,8 +111,7 @@ real refs dangling. The procedure above is the only supported path today.
|
|
|
125
111
|
To carry an asset's earned signal (feedback, usage, salience/outcome
|
|
126
112
|
history) across a rename, the maintainer script `scripts/rekey-asset-ref.ts`
|
|
127
113
|
re-keys those rows onto the new ref before `akm index` runs; it is Internal
|
|
128
|
-
tooling, not a supported command surface.
|
|
129
|
-
[the decision record](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/0.9.0-decisions.md#d3--renames-are-delete--create-akm-mv-ships-experimental).
|
|
114
|
+
tooling, not a supported command surface.
|
|
130
115
|
|
|
131
116
|
## Refs in prose
|
|
132
117
|
|
|
@@ -143,9 +128,8 @@ fully-qualified `bundle//conceptId`; the short form is accepted input only),
|
|
|
143
128
|
conceptId-prefix enumeration, and the rename-is-delete-plus-create procedure
|
|
144
129
|
are all named explicitly in the Stable tier, and the ref grammar is called
|
|
145
130
|
out as frozen at 1.0 alongside the supported source model, search behavior,
|
|
146
|
-
and write-target rules.
|
|
147
|
-
|
|
148
|
-
full command- and surface-level tier index.
|
|
131
|
+
and write-target rules. See `STABILITY.md` for the full command- and
|
|
132
|
+
surface-level tier index.
|
|
149
133
|
|
|
150
134
|
## See also
|
|
151
135
|
|
|
@@ -153,4 +137,3 @@ full command- and surface-level tier index.
|
|
|
153
137
|
- [Asset Types](asset-types.md) — how a conceptId's subdirectory maps to an asset type
|
|
154
138
|
- [Memory](memory.md) — parent/derived-memory provenance backrefs
|
|
155
139
|
- [`docs/architecture/specs/ref.md`](https://github.com/itlackey/akm/blob/main/docs/architecture/specs/ref.md) — the normative ref grammar spec
|
|
156
|
-
- [ROADMAP.md](../../ROADMAP.md) — planned ref-syntax additions
|
|
@@ -95,8 +95,6 @@ is no longer reachable in 0.9.2; publish it at a publicly routable HTTPS
|
|
|
95
95
|
endpoint. The only private-network compatibility exception is an npm mirror
|
|
96
96
|
explicitly selected with `AKM_NPM_REGISTRY`; metadata and tarball requests may
|
|
97
97
|
reach that configured mirror, but not link-local or cloud-metadata addresses.
|
|
98
|
-
See [Registry network boundary](../architecture/internals/registry-network-boundary.md)
|
|
99
|
-
for the complete policy and DNS guarantee.
|
|
100
98
|
|
|
101
99
|
## Searching Registries
|
|
102
100
|
|
|
@@ -108,9 +106,6 @@ akm search "deploy" --from registry
|
|
|
108
106
|
|
|
109
107
|
# Search both the local bundle library and registries
|
|
110
108
|
akm search "deploy" --from all
|
|
111
|
-
|
|
112
|
-
# Include asset-level results from v3 indexes
|
|
113
|
-
akm search "deploy" --from registry --assets
|
|
114
109
|
```
|
|
115
110
|
|
|
116
111
|
### Search Results
|
|
@@ -124,24 +119,11 @@ Each registry hit includes:
|
|
|
124
119
|
| `id` | Unique identifier (e.g. `npm:@scope/bundle`) |
|
|
125
120
|
| `description` | Summary from the registry |
|
|
126
121
|
| `action` | Ready-to-run next step such as `akm bundle add ... -> then search again` |
|
|
122
|
+
| `installRef` | The ref to pass to `akm bundle add` to install the bundle. Present at every `--detail` level |
|
|
127
123
|
| `quality` | Optional provenance marker — `"generated"`, `"curated"`, or `"proposed"`. Replaces the legacy `curated` boolean removed in 0.7.0 |
|
|
128
124
|
|
|
129
125
|
Use `--detail full` to include ranking metadata like `score`.
|
|
130
126
|
|
|
131
|
-
### The `--assets` Flag
|
|
132
|
-
|
|
133
|
-
When a registry publishes a v3 index (see below), `akm search --from
|
|
134
|
-
registry` can return individual asset-level hits in addition to bundle-level
|
|
135
|
-
hits. Pass `--assets` to enable this:
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
akm search "code review" --from registry --assets
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Asset hits include `assetType`, `assetName`, `description`, and the parent
|
|
142
|
-
`stash` information, so you can install the right bundle and immediately know
|
|
143
|
-
which asset to use.
|
|
144
|
-
|
|
145
127
|
## Discovery Filtering
|
|
146
128
|
|
|
147
129
|
Not every npm package or GitHub repo is an akm bundle. To keep results
|
|
@@ -153,9 +135,7 @@ relevant, the registry enforces tag-based filtering:
|
|
|
153
135
|
> **0.6.0 breaking change:** `akm-cli >= 0.6.0` indexes only the
|
|
154
136
|
> `akm-stash` keyword / topic. The pre-0.6.0 `akm-kit` and `agentikit`
|
|
155
137
|
> keywords/topics are **not** honored as fallbacks. Publishers migrating
|
|
156
|
-
> from 0.5.x must add the new tag
|
|
157
|
-
> [migration guide](../migration/v0.5-to-v0.6.md) for the step-by-step
|
|
158
|
-
> publisher checklist.
|
|
138
|
+
> from 0.5.x must add the new tag.
|
|
159
139
|
|
|
160
140
|
If you are publishing a bundle, add these tags so it can be discovered:
|
|
161
141
|
|
|
@@ -215,17 +195,12 @@ akm bundle add file:///absolute/path/to/bundle
|
|
|
215
195
|
3. **Download and extract** -- The tarball is downloaded (or repo cloned) to a
|
|
216
196
|
cache directory under `~/.cache/akm/registry/` and extracted securely
|
|
217
197
|
(path traversal is rejected).
|
|
218
|
-
4. **
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
`akm bundle add` **blocks the install** when a dangerous key is present unless
|
|
225
|
-
`--allow-dangerous-env-keys` is set (or you confirm at an interactive prompt).
|
|
226
|
-
This is a **key-name audit only** (plus the path-traversal rejection in step
|
|
227
|
-
3) -- akm does **not** scan source files, prompts, metadata, or install
|
|
228
|
-
scripts for prompt-injection phrases, shell pipes, or lifecycle hooks.
|
|
198
|
+
4. **No content audit** -- Installing a bundle is the trust decision. akm does
|
|
199
|
+
**not** scan the extracted bundle's source files, prompts, metadata, env
|
|
200
|
+
files or install scripts (beyond the path-traversal rejection in step 3), and
|
|
201
|
+
`akm bundle add` never blocks or prompts over the keys an env file sets.
|
|
202
|
+
`akm lint` reports env keys that can hijack a process (`dangerous-env-key`)
|
|
203
|
+
for authors who want to review their own bundle.
|
|
229
204
|
5. **Bundle root detection** -- The extracted contents are scanned for asset
|
|
230
205
|
type directories (`scripts/`, `skills/`, etc.) or a `.stash/` marker. If the
|
|
231
206
|
bundle nests its bundle under an `opencode/` subdirectory, that is detected
|
|
@@ -428,9 +403,9 @@ official registry.
|
|
|
428
403
|
## Registry Index v3
|
|
429
404
|
|
|
430
405
|
Version 3 of the registry index schema is the only format `akm-cli >=
|
|
431
|
-
0.6.0` parses. It carries an `assets` array on each bundle entry
|
|
432
|
-
|
|
433
|
-
|
|
406
|
+
0.6.0` parses. It carries an `assets` array on each bundle entry that
|
|
407
|
+
describes the assets the bundle contains. `akm search --from registry` matches
|
|
408
|
+
bundles; it does not return asset-level hits.
|
|
434
409
|
|
|
435
410
|
```json
|
|
436
411
|
{
|
|
@@ -466,8 +441,7 @@ Each asset entry supports:
|
|
|
466
441
|
The 0.6.0 release dropped support for the legacy v1 / v2 indexes;
|
|
467
442
|
publishers must regenerate `index.json` with the
|
|
468
443
|
`scripts/build-registry-index.ts` maintainer script
|
|
469
|
-
or the [akm-registry](https://github.com/itlackey/akm-registry) tooling
|
|
470
|
-
(see the [v0.5 → v0.6 migration guide](../migration/v0.5-to-v0.6.md)). akm
|
|
444
|
+
or the [akm-registry](https://github.com/itlackey/akm-registry) tooling. akm
|
|
471
445
|
treats unknown fields inside a v3 entry as forward-compatible.
|
|
472
446
|
|
|
473
447
|
## Cache Layout
|
|
@@ -68,6 +68,6 @@ formats are writable today and why.
|
|
|
68
68
|
|
|
69
69
|
- [Asset Types](https://github.com/itlackey/akm/blob/main/docs/reference/asset-types.md) — the 14 native asset types AKM's own format recognizes
|
|
70
70
|
- [Adapters](https://github.com/itlackey/akm/blob/main/docs/architecture/adapters.md) — how AKM picks a format, the write-path internals, and current caveats
|
|
71
|
-
- [
|
|
71
|
+
- [Architecture: Connections and Harnesses](https://github.com/itlackey/akm/blob/main/docs/architecture/architecture.md#connections-and-harnesses) — how translated native agents and commands are executed
|
|
72
72
|
- [Concepts](https://github.com/itlackey/akm/blob/main/docs/guides/concepts.md) — the retrieval loop these formats feed
|
|
73
73
|
- [Wikis](https://github.com/itlackey/akm/blob/main/docs/guides/wikis.md) — the `llm-wiki` authoring workflow
|
package/docs/reference/tasks.md
CHANGED
|
@@ -116,25 +116,36 @@ Script refs use this closed table; any other extension fails before dispatch:
|
|
|
116
116
|
`run` is one non-empty shell string. It may specify `shell` from the closed host
|
|
117
117
|
shell table `bash`, `sh`, `zsh`, `pwsh`, `powershell`, or `cmd`. Shell expansion
|
|
118
118
|
is runtime behavior for an explicitly authored task `run`; AKM does not infer a
|
|
119
|
-
shell from `uses`. `working-directory`
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
shell from `uses`. `working-directory` is a non-empty string, relative to the
|
|
120
|
+
task's bundle root or absolute, like a workflow's `exec.cwd`. akm does not
|
|
121
|
+
keep it inside the bundle or check it when the task source is parsed, so a
|
|
122
|
+
symlink that resolves outside the bundle works. The task runs in
|
|
123
|
+
`<bundle root>/<working-directory>` (or the absolute path as written): akm does
|
|
124
|
+
not capture the directory's identity or re-check it when the task runs. A
|
|
125
|
+
`uses: scripts/<file>` target may itself be a symlink to a file outside the
|
|
126
|
+
bundle; the task freezes that file's bytes, not its location. The interpreter
|
|
127
|
+
comes from the name the script has in the bundle, not from the file the link
|
|
128
|
+
points to, so `scripts/deploy.sh` linked to `real-script.txt` runs under the
|
|
129
|
+
shell.
|
|
122
130
|
|
|
123
131
|
Every field that used to live under v3's `akm:` options bag is a top-level
|
|
124
|
-
key in task source v4: `agent`, `
|
|
125
|
-
`
|
|
126
|
-
`
|
|
132
|
+
key in task source v4: `agent`, `connection`, `harness`, `model`, `inference`, `timeout`,
|
|
133
|
+
`redact`, `maxSteps`, and `maxRetries`, plus `description`, `when_to_use`, and
|
|
134
|
+
`tags`. A v3 `akm.tools` is dropped by the migration, and a v4 `tools` is
|
|
135
|
+
ignored with a warning. Environment entries (`env`) are literal string,
|
|
127
136
|
number, or boolean values. Keep credentials out of task source; `redact`
|
|
128
137
|
contains environment variable names, never secret values.
|
|
129
138
|
|
|
130
139
|
`timeout:` (milliseconds) means a different mechanism depending on the
|
|
131
140
|
target. For `run:` (native shell/script) and `workflows/<name>` targets it is
|
|
132
|
-
an outer supervisory deadline: the runner
|
|
133
|
-
|
|
141
|
+
an outer supervisory deadline: the runner stops the child process (SIGINT, then
|
|
142
|
+
SIGTERM, then SIGKILL; see [How akm runs a
|
|
143
|
+
harness](configuration.md#how-akm-runs-a-harness)), or aborts the workflow run at
|
|
144
|
+
its next step boundary, when it fires. For `uses:
|
|
134
145
|
akm/command`, `commands/<name>`, and any other agent/LLM dispatch target
|
|
135
146
|
there is no outer process kill — `timeout:` instead resolves through the
|
|
136
147
|
execution cascade (config/persona/command/task layers) into the dispatch's
|
|
137
|
-
own deadline, and the
|
|
148
|
+
own deadline, and the runner (a harness's process, or akm's own runtime) enforces it.
|
|
138
149
|
Either way, a dispatch that times out is recorded as `status: failed` with
|
|
139
150
|
`detail.reason: "timeout"` in `task_history` — not a silent `completed` — and
|
|
140
151
|
`akm task run` exits non-zero for it; see [health-advisories.md's
|
|
@@ -211,7 +222,7 @@ schedule:
|
|
|
211
222
|
- cron: "0 8 * * 1"
|
|
212
223
|
inputs: { scope: all, ticket: OPS-1234 }
|
|
213
224
|
timeout: 45000
|
|
214
|
-
|
|
225
|
+
harness: reviewer
|
|
215
226
|
redact: [TOKEN]
|
|
216
227
|
```
|
|
217
228
|
|
|
@@ -408,7 +419,7 @@ for full before/after examples and recovery guidance.
|
|
|
408
419
|
a `version: 4` file still carrying a retired `schedule[].enabled` (the finding
|
|
409
420
|
names `akm migrate apply`, which converts them), a cron the local scheduler
|
|
410
421
|
backend cannot parse, and a schedule entry whose `inputs` leave a required
|
|
411
|
-
input unsatisfied. It is read-only and needs no configured
|
|
422
|
+
input unsatisfied. It is read-only and needs no configured connection or harness.
|
|
412
423
|
- `akm task add` validates a task source v4 document, writes it, adds its ref
|
|
413
424
|
to local scheduler activation, and syncs its bundle. `--params` renders
|
|
414
425
|
typed `inputs:` declarations instead of a `with:` bag; `--schedule` is
|
package/docs/reference/ui-api.md
CHANGED
|
@@ -32,7 +32,7 @@ release, and nothing outside the page should script against them. Use the CLI's
|
|
|
32
32
|
`ORIGIN_NOT_ALLOWED`, `METHOD_NOT_ALLOWED`, `UNSUPPORTED_MEDIA_TYPE`, `BODY_TOO_LARGE`, `INVALID_JSON_ARGUMENT`,
|
|
33
33
|
`NOT_FOUND`, `INTERNAL_ERROR`.
|
|
34
34
|
- **Redaction.** Config values under secret-like keys (`apiKey`, `token`, `password`, `secret`, `credential`,
|
|
35
|
-
`authorization`, anything under `env` or `secrets`) are `"[redacted]"`; symbolic references (`$VAR`,
|
|
35
|
+
`authorization`, anything under `env` or `secrets`) are `"[redacted]"`; symbolic references (`$VAR`, `${secrets/name}`)
|
|
36
36
|
are kept. Credentials inside any URL in any response (userinfo, `token=`, `api_key=`, `sig=`, ...) are masked. Env and
|
|
37
37
|
secret assets are never read; see `/api/asset`.
|
|
38
38
|
- **Timestamps** are ISO 8601 UTC unless noted. Counts that cannot be computed are `null`, never `NaN`.
|
|
@@ -75,7 +75,7 @@ Everything on the overview page in one call. Query parameters:
|
|
|
75
75
|
| --- | --- | --- |
|
|
76
76
|
| `since` | `24h` | Health window start (ISO, date, epoch ms, or `24h` / `7d`). A duration also turns on the prior-window comparison, as `akm health --report --since` does. |
|
|
77
77
|
| `metricsSince` | `30d` | Metrics window start, as `akm metrics --since`. |
|
|
78
|
-
| `probe` | off | `1` probes
|
|
78
|
+
| `probe` | off | `1` probes whether each connection's endpoint answers and what each harness's `--version` prints, and checks for a newer akm release (network). Off by default so loading the page makes no outbound calls. |
|
|
79
79
|
|
|
80
80
|
```json
|
|
81
81
|
{
|
|
@@ -210,14 +210,16 @@ The effective configuration, as `akm config list` shows it, with where each valu
|
|
|
210
210
|
"exists": true,
|
|
211
211
|
"config": {
|
|
212
212
|
"semanticSearchMode": "off",
|
|
213
|
-
"
|
|
213
|
+
"connections": { "default": { "endpoint": "https://llm.example.test/v1?token=%5Bredacted%5D", "models": { "fast": "chat-model" } } },
|
|
214
|
+
"harnesses": { "claude": {} },
|
|
214
215
|
"defaultBundle": "stash"
|
|
215
216
|
},
|
|
216
217
|
"entries": [
|
|
217
218
|
{ "path": "semanticSearchMode", "value": "off", "source": "file" },
|
|
218
219
|
{ "path": "output.format", "value": "json", "source": "default" }
|
|
219
220
|
],
|
|
220
|
-
"
|
|
221
|
+
"connections": [{ "name": "default", "endpoint": "https://llm.example.test/v1?token=%5Bredacted%5D", "models": { "fast": "chat-model" } }],
|
|
222
|
+
"harnesses": [{ "name": "claude" }],
|
|
221
223
|
"env": [{ "name": "AKM_BUNDLE_DIR", "value": "/home/me/akm" }]
|
|
222
224
|
}
|
|
223
225
|
}
|
|
@@ -226,8 +228,11 @@ The effective configuration, as `akm config list` shows it, with where each valu
|
|
|
226
228
|
- `config` is the redacted effective config tree. `entries` is the same data flattened to one row per leaf (arrays are
|
|
227
229
|
leaves) with `source`: `default` (no config file sets it), `file` (this install's `config.json`),
|
|
228
230
|
`extends:<ref>` (a config it extends), or `null` when the key cannot be traced (a key containing a `.`).
|
|
229
|
-
- `
|
|
230
|
-
|
|
231
|
+
- `connections` and `harnesses` are `config.connections` and `config.harnesses` as lists, each entry with its `name`
|
|
232
|
+
and the entry's own keys (a connection's `endpoint` and `models`, a harness's `platform`, ...); keys are never
|
|
233
|
+
included (`apiKey` shows as `[redacted]` or its `$VAR` reference). Reachability is a health probe, not config: use
|
|
234
|
+
`/api/overview?probe=1`.
|
|
235
|
+
- `env` lists the `AKM_*` environment variables set for the server, which override paths and other settings. A
|
|
231
236
|
secret-like name (`...KEY`, `...TOKEN`, ...) has `value: "[redacted]"`.
|
|
232
237
|
|
|
233
238
|
## `GET /api/proposals`
|
|
@@ -570,7 +575,7 @@ Recent commits of the write-target stash (`defaultWriteTarget`, else the default
|
|
|
570
575
|
}
|
|
571
576
|
```
|
|
572
577
|
|
|
573
|
-
- `asset` is the show response in full (frontmatter fields such as `description`, `tags`, `
|
|
578
|
+
- `asset` is the show response in full (frontmatter fields such as `description`, `tags`, `modelHint`, the
|
|
574
579
|
`content`, workflow `steps`, and so on depending on the type), and `links` groups declared links by kind
|
|
575
580
|
(`outgoing`, `incoming`, `unresolved`). A missing ref is a `404` `ASSET_NOT_FOUND`.
|
|
576
581
|
- `feedback.counts` are all-time totals by signal across every source; `history` is the latest 50 events, newest
|
|
@@ -616,7 +621,7 @@ general config editor or command-execution endpoint.
|
|
|
616
621
|
| `POST` route | Body and existing operation |
|
|
617
622
|
| --- | --- |
|
|
618
623
|
| `/api/feedback` | `{ref, signal: "positive"\|"negative", reason?, tags?: string[]}` → `akm feedback`. The ref is passed to `akm feedback` as given, which resolves it as the CLI does; tags follow existing `key:value` validation. Negative feedback requires a reason when `feedback.requireReason` is enabled. Submissions are recorded with source `user` unless the server runs with an `AKM_EVENT_SOURCE` already set (for example under an improve or task run), which wins as it does for every akm child; they retain existing ranking/utility/event effects. Feedback does not save config, so it works under a config that still holds a literal API key. No fix, supersession or model flags are exposed. |
|
|
619
|
-
| `/api/bundles/add` | `{source, name?, writable?}` → `akm bundle add`, including source validation
|
|
624
|
+
| `/api/bundles/add` | `{source, name?, writable?}` → `akm bundle add`, including source validation. Existing provider restrictions apply; no insecure-transport bypass is exposed. |
|
|
620
625
|
| `/api/bundles/update` | `{bundle}` → `akm bundle update -- <bundle>`. Fetches/reindexes only on explicit submission. A rare update requiring destructive confirmation remains refused; the UI does not silently pass `--yes`. |
|
|
621
626
|
| `/api/bundles/remove` | `{bundle, confirm: true}` → `akm bundle remove --yes -- <bundle>`. The UI requires an inline confirmation before this call. Managed installs may be deleted; local filesystem source files remain on disk. |
|
|
622
627
|
| `/api/bundles/settings` | `{bundle?, enabled?, writable?, componentWritability?: {existingComponent: boolean}, defaultBundle?, defaultWriteTarget?}` → existing schema-walking config setters inside `mutateConfig`. Only changed controls are submitted. Defaults take existing names or `""` to unset a local value; inherited values cannot be unset locally. Existing validation rejects invalid defaults, disabled targets and writable npm/website sources. |
|
|
@@ -624,7 +629,7 @@ general config editor or command-execution endpoint.
|
|
|
624
629
|
| `/api/asset/save` | `{ref, revision, content}` → the existing shared Markdown writer with `force` and the expected raw-content hash. Only indexed writable AKM knowledge/memory documents accepted by `/api/asset/source` can be edited. The writer takes the asset-mutation lease and compares the live source with `revision` inside it, immediately before writing. While another writer holds the lease the save fails fast with `409 ASSET_MUTATION_LEASE_HELD` instead of waiting. A stale revision returns `409 ASSET_CONTENT_CHANGED` without writing; a source deleted after it was loaded is refused (`404 ASSET_NOT_FOUND`) rather than recreated. The browser keeps the draft after a rejected save. An identical save returns `unchanged: true` without rewriting, reindexing or recording an event. Changed saves retain normal writer validation, indexing and Git effects. |
|
|
625
630
|
|
|
626
631
|
Configuration-affecting actions do not round-trip the redacted API configuration. Existing mutation helpers retain
|
|
627
|
-
unknown/unrelated fields, local overrides and supported `$VAR
|
|
632
|
+
unknown/unrelated fields, local overrides and supported `$VAR`/`${ref}` credential references. If the existing
|
|
628
633
|
config sanitizer would remove unrelated legacy literal credentials, a bundle add or remove, or a settings change that
|
|
629
634
|
would write config, is refused with `400 INVALID_FLAG_VALUE` and the user is asked to correct those settings through
|
|
630
635
|
the CLI first. A settings request that changes nothing writes nothing and is not refused. It never writes
|