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
|
@@ -15,35 +15,45 @@ commands that drive a run, see [Running Workflows](../guides/run-workflows.md).
|
|
|
15
15
|
|
|
16
16
|
## Frozen plans
|
|
17
17
|
|
|
18
|
-
The first `akm workflow run <ref>` compiles
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
The first `akm workflow run <ref>` compiles the Markdown source straight to
|
|
19
|
+
the one plan type and stores it as durable plan **`irVersion` 8** on the run row
|
|
20
|
+
(`plan_json` + `plan_hash`); a new start never emits an older version.
|
|
21
|
+
`plan_ir_version` and `plan_hash` are recorded provenance, not gates: a stored
|
|
22
|
+
plan is decoded as it is — irVersion 5, 6 and 7 plans that hold no model step
|
|
23
|
+
included — and one frozen by an older or newer akm that still decodes simply
|
|
24
|
+
runs (with one warning). A plan frozen before 8 with a model step recorded an
|
|
25
|
+
engine where 8 records a connection or harness; it does not decode, and
|
|
26
|
+
`akm workflow run` abandons it and starts afresh. A newer akm's plan that does
|
|
27
|
+
not decode is refused with a message naming "Upgrade akm".
|
|
26
28
|
|
|
27
29
|
The durable plan records `sourceHash`, the sha256 of the workflow source file
|
|
28
30
|
at freeze. It is used only for the resume warning below, never to refuse a
|
|
29
31
|
run.
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
the resolved target is frozen, and runner selection is frozen.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Exact models, inference, tools and authorization,
|
|
33
|
+
**Freeze records identities, never locations.** The resolved request is frozen,
|
|
34
|
+
the resolved target is frozen, and runner selection is frozen. So are the refs
|
|
35
|
+
the engine itself dereferences, qualified with their bundle: the run's
|
|
36
|
+
`workflow_ref`, each unit's `env:` refs (`{ kind: "env-ref", ref, precedence }`)
|
|
37
|
+
and each child workflow's ref. Exact models, inference, tools and authorization,
|
|
37
38
|
execution limits, parameter snapshots, command/script bytes, and verifier
|
|
38
39
|
selection therefore cannot drift under an in-flight run.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
Everything else is live, found again at dispatch through the one ref lookup
|
|
42
|
+
`akm show` uses (no database is opened):
|
|
43
|
+
|
|
44
|
+
| Frozen | Live at dispatch |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| argv, `exec.cwd` and `pass_env` names as authored | the owner root of the run's workflow, which every exec unit and agent works in (`exec.cwd` joins it once) |
|
|
47
|
+
| `env:` refs, bundle-qualified | the env file, its keys and every `${ref}` in it, and the secrets they name |
|
|
48
|
+
| `${ref}` tokens in argv and `cwd`, as authored | the secret value or asset path each one names |
|
|
49
|
+
|
|
50
|
+
The executable a unit runs is resolved at dispatch too, so upgrading a CLI (say,
|
|
51
|
+
`claude`) never strands a run, and a `bundle update` that moves a bundle to a
|
|
52
|
+
new revision directory in the middle of a run is harmless: the next step runs
|
|
53
|
+
from the new directory. Plans
|
|
54
|
+
frozen as irVersion 5 or 6 also carry a `cwdIdentity` and env owner paths; the
|
|
55
|
+
decoder drops them and such a run dispatches by ref. Durable plans never store
|
|
56
|
+
secret values.
|
|
47
57
|
|
|
48
58
|
**A run executes the plan compiled at creation; edits to source need a new
|
|
49
59
|
run.** Resuming a run re-reads its workflow source only to warn, once, when
|
|
@@ -107,9 +117,7 @@ decoding the stored plan, taking that run's own lock, and walking its spine
|
|
|
107
117
|
through `completeWorkflowStep` are identical to the top-level path. That
|
|
108
118
|
reuse is what makes child run locks arbitrate two-parent contention with no
|
|
109
119
|
new mechanism, and what makes a resumed parent skip a completed child step
|
|
110
|
-
with zero dispatcher calls. The child drive passes
|
|
111
|
-
`disposeDispatchResources` (the parent's `finally` remains the sole owner of
|
|
112
|
-
the process-lifecycle drain for the whole process) and no `maxSteps` or
|
|
120
|
+
with zero dispatcher calls. The child drive passes no `maxSteps` or
|
|
113
121
|
`maxRetries` (the parent's own budgets count only its own spine steps). The
|
|
114
122
|
lower-level `driveRun` that `runWorkflowSteps` wraps stays module-private —
|
|
115
123
|
reaching for it directly, instead of the public entry point, would be
|
|
@@ -120,8 +128,7 @@ version prefix mixed into a unit's input hash is 7
|
|
|
120
128
|
(`src/workflows/exec/step-work.ts`); 0.9.2 bumped it — a single, durable
|
|
121
129
|
5 → 7 step, since every released tag on the line carries 5 — when
|
|
122
130
|
`taskInputs`, the resolved values of a composed task's reference-kind
|
|
123
|
-
`inputBindings`, joined the preimage
|
|
124
|
-
0002](decisions/0002-unit-reuse-and-input-hash-scope.md)). Child composition
|
|
131
|
+
`inputBindings`, joined the preimage. Child composition
|
|
125
132
|
itself contributed nothing to that bump: the parent unit's input-hash
|
|
126
133
|
preimage already covers everything the child drive depends on — the frozen
|
|
127
134
|
target carries the child's ref, plan hash, content hash, binding mode, and
|
|
@@ -183,10 +190,15 @@ the lock.
|
|
|
183
190
|
|
|
184
191
|
Native fan-out (`akm workflow run`) uses the minimum of four limits: the
|
|
185
192
|
map's declared `concurrency`, the run's frozen `workflow.maxConcurrency`, the
|
|
186
|
-
selected frozen
|
|
187
|
-
fallback LLM), and the current host's CPU-derived safety limit. Reapplying
|
|
193
|
+
selected frozen connection's `concurrency` (a harness has none), and the current host's CPU-derived safety limit. Reapplying
|
|
188
194
|
host safety keeps a run safe when it resumes on a smaller machine.
|
|
189
195
|
|
|
196
|
+
`targetConcurrency` (`src/workflows/freeze/step-values.ts`) freezes the
|
|
197
|
+
connection's value as the target's `concurrency` in the plan, and
|
|
198
|
+
`scheduleUnits` (`src/workflows/exec/scheduler.ts`) applies it as
|
|
199
|
+
`llmConcurrency` to cap `map` and `over` fan-out. The scheduler's own default of
|
|
200
|
+
one is a fail-safe for a caller that names no width, not the `map` default.
|
|
201
|
+
|
|
190
202
|
- **Unset (default):** the CPU-derived value `min(16, max(1, cores − 2))` — a
|
|
191
203
|
conservative default that leaves headroom on the host and matches the
|
|
192
204
|
original Claude-Code cap.
|
|
@@ -204,14 +216,19 @@ A workflow that fans out is authorizing **N parallel agents**, not one — see
|
|
|
204
216
|
[Running Workflows: workflow sources are executed code](../guides/run-workflows.md#security-workflow-sources-are-executed-code)
|
|
205
217
|
for what that means for trust.
|
|
206
218
|
|
|
207
|
-
## Run
|
|
219
|
+
## Run identity and persistence
|
|
208
220
|
|
|
209
221
|
Run state (`plan_json`, `plan_hash`, step statuses, and the unit journal)
|
|
210
|
-
persists in the
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
persists in the host's `state.db`; the per-run lock file sits beside it. A run
|
|
223
|
+
is identified by its run id and a workflow by its bundle-qualified ref. Run
|
|
224
|
+
state is not scoped to a directory: `akm workflow run <ref>` always starts a
|
|
225
|
+
new run, `akm workflow run <run-id>` drives an existing one,
|
|
226
|
+
`akm workflow resume <run-id>` re-activates a blocked or failed one, and
|
|
227
|
+
`akm workflow list`/`status` show every run on the host from any working
|
|
228
|
+
directory. Starting a ref that already has active runs warns
|
|
229
|
+
and names them; it is never refused. `akm workflow run <ref> --skip-if-locked`
|
|
230
|
+
skips (exit 0) instead of starting when an active run of that ref is held by a
|
|
231
|
+
live process.
|
|
215
232
|
|
|
216
233
|
## See also
|
|
217
234
|
|
package/docs/guides/README.md
CHANGED
|
@@ -25,7 +25,6 @@ Task-oriented guides and command tours for using akm.
|
|
|
25
25
|
|
|
26
26
|
- [Bundle Author's Guide](author-bundles.md) -- Build and share a bundle on GitHub, npm, or a network directory
|
|
27
27
|
- [Wikis](wikis.md) -- Multi-wiki knowledge bases (Karpathy-style)
|
|
28
|
-
- [Claude Code workflows vs. akm workflows](claude-code-vs-akm-workflows.md) -- Comparing the two things that share a name
|
|
29
28
|
|
|
30
29
|
## Recipes
|
|
31
30
|
|
|
@@ -52,9 +52,7 @@ sync with the code:
|
|
|
52
52
|
metadata when `akm index` runs.
|
|
53
53
|
|
|
54
54
|
If you still have a legacy `.stash.json` sidecar, migrate its fields into
|
|
55
|
-
inline metadata before publishing
|
|
56
|
-
[v0.7 → v0.8 migration guide](../migration/v0.7-to-v0.8.md) for the full
|
|
57
|
-
field mapping and a worked example.
|
|
55
|
+
inline metadata before publishing.
|
|
58
56
|
|
|
59
57
|
**Keep `show` payloads focused.** `akm show` returns the whole asset body by
|
|
60
58
|
default (the whole document for a knowledge asset, the whole `SKILL.md` for a
|
|
@@ -110,7 +108,7 @@ renaming the file to match the query.
|
|
|
110
108
|
|
|
111
109
|
Run `akm lint` before you publish. It catches structural problems (missing
|
|
112
110
|
`name`/`type` on commands and agents, broken refs, malformed workflow
|
|
113
|
-
structure, invalid task YAML) as well as the dangerous-env-key
|
|
111
|
+
structure, invalid task YAML) as well as the dangerous-env-key findings described
|
|
114
112
|
in [Env Security](#env-security) below.
|
|
115
113
|
|
|
116
114
|
```sh
|
|
@@ -242,24 +240,21 @@ when a push happens.
|
|
|
242
240
|
> [0.8 → 0.9 migration guide](../migration/v0.8-to-v0.9.md).
|
|
243
241
|
|
|
244
242
|
If your bundle includes env files under `env/`, be aware of how `akm` handles
|
|
245
|
-
them
|
|
243
|
+
them.
|
|
246
244
|
|
|
247
|
-
**Dangerous key
|
|
248
|
-
|
|
249
|
-
|
|
245
|
+
**Dangerous key findings.** `akm lint` reports env files that set environment
|
|
246
|
+
variable names which can be used to hijack process execution when the file is
|
|
247
|
+
loaded via `akm env run`. The flagged names include `LD_PRELOAD`,
|
|
250
248
|
`PATH`, `DYLD_INSERT_LIBRARIES`, `NODE_OPTIONS`, and 37 others (41 literal
|
|
251
249
|
keys total), plus two pattern-based families (`BASH_FUNC_*`, Shellshock-class
|
|
252
|
-
injection; `GIT_CONFIG_*`, git config override injection).
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
This is not a ban — it is a speed bump. If your bundle legitimately needs one
|
|
261
|
-
of these keys (for example, a `PATH` override for a hermetic toolchain), do
|
|
262
|
-
the following before publishing:
|
|
250
|
+
injection; `GIT_CONFIG_*`, git config override injection). The finding is
|
|
251
|
+
advice for you as the author, not a gate: installing a bundle is the user's
|
|
252
|
+
trust decision, so `akm bundle add`, `akm bundle update`, `akm env run`,
|
|
253
|
+
`akm secret run` and workflow `env:` bindings never scan, prompt for or block
|
|
254
|
+
these keys, whichever bundle the file comes from.
|
|
255
|
+
|
|
256
|
+
If your bundle legitimately needs one of these keys (for example, a `PATH`
|
|
257
|
+
override for a hermetic toolchain), do the following before publishing:
|
|
263
258
|
|
|
264
259
|
1. Document the reason clearly in your `README.md`. Explain which key is set,
|
|
265
260
|
why it is needed, and what the value does.
|
|
@@ -273,7 +268,7 @@ the following before publishing:
|
|
|
273
268
|
|
|
274
269
|
3. Consider whether the value can be set by the user after install rather than
|
|
275
270
|
shipped in the env file. Env files that ship without values — just key names
|
|
276
|
-
and comments —
|
|
271
|
+
and comments — produce no findings.
|
|
277
272
|
|
|
278
273
|
**Key names are metadata, not secrets.** Env key names appear in `akm env list`
|
|
279
274
|
and search results by design. Only values are protected. The `--sensitive` flag
|
|
@@ -204,15 +204,10 @@ path, a commit id) that the agent can only fill by doing it.
|
|
|
204
204
|
|
|
205
205
|
### What the command can see
|
|
206
206
|
|
|
207
|
-
The
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
context variables. Ordinary commands (`bun`, `git`, `make`, `cargo`) work
|
|
212
|
-
unchanged; an unrelated `SOME_OTHER_SERVICE_TOKEN` sitting in the shell that
|
|
213
|
-
ran `akm workflow run` does not reach them.
|
|
214
|
-
|
|
215
|
-
Widen it only by naming what the unit needs:
|
|
207
|
+
The command inherits your environment, as it would typed in your shell: `PATH`,
|
|
208
|
+
`HOME`, the toolchain variables and any credential of the process that ran `akm
|
|
209
|
+
workflow run` reach it. Then come your `env:` bindings, then the `AKM_*` context
|
|
210
|
+
variables. Ordinary commands (`bun`, `git`, `make`, `cargo`) work unchanged.
|
|
216
211
|
|
|
217
212
|
```yaml
|
|
218
213
|
- id: build
|
|
@@ -220,25 +215,54 @@ Widen it only by naming what the unit needs:
|
|
|
220
215
|
env: [env/build]
|
|
221
216
|
exec:
|
|
222
217
|
command: ["cargo", "build", "--release"]
|
|
223
|
-
pass_env: [CARGO_HOME, SCCACHE_DIR] # a few extra names
|
|
224
218
|
```
|
|
225
219
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
220
|
+
Fixed values belong in exact named `env:` bindings, and they reach the journal as
|
|
221
|
+
they are. A credential belongs in `secrets/`, bound by a `${secrets/name}` token
|
|
222
|
+
inside the env asset; only values substituted from such a ref are redacted out of
|
|
223
|
+
everything journaled (see [Binding a secret to a
|
|
224
|
+
unit](../reference/workflow-schema.md#binding-a-secret-to-a-unit)). A value the
|
|
225
|
+
command inherited is not redacted.
|
|
226
|
+
|
|
227
|
+
`exec.pass_env:`, the list of names an earlier release copied into an otherwise
|
|
228
|
+
empty environment, still parses and selects nothing. Workflow starts freeze the
|
|
229
|
+
durable plan v4 family's current executable format (`irVersion: 8`), which
|
|
230
|
+
rejects `inherit_env`; the command inherits the environment without it.
|
|
231
|
+
Pre-`irVersion`-5 stored plans do not execute; start a new run after updating the
|
|
232
|
+
source.
|
|
233
|
+
|
|
234
|
+
Named bindings are part of the unit's input hash, so changing them re-runs the
|
|
235
|
+
command instead of reusing a row recorded under another scope. What the command
|
|
236
|
+
sees is described under [Workflow Schema: The child's
|
|
237
|
+
environment](../reference/workflow-schema.md#the-childs-environment).
|
|
230
238
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
239
|
+
### Using scripts, env and secrets from other bundles
|
|
240
|
+
|
|
241
|
+
A workflow in one bundle can run a script from a second bundle, with an env
|
|
242
|
+
asset from a third that names a secret in a fourth. Each is addressed by its akm
|
|
243
|
+
ref, `[bundle//]conceptId`, inside a `${...}` token:
|
|
244
|
+
|
|
245
|
+
```yaml
|
|
246
|
+
- id: status
|
|
247
|
+
unit:
|
|
248
|
+
env: [ci//env/status] # env/status.env in bundle ci
|
|
249
|
+
exec:
|
|
250
|
+
command: ["bun", "${tools//scripts/lab-status/fetch.ts}"]
|
|
251
|
+
```
|
|
235
252
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
253
|
+
```sh
|
|
254
|
+
# env/status.env in bundle ci
|
|
255
|
+
REGION=east
|
|
256
|
+
TOKEN=${vault//secrets/status_token}
|
|
257
|
+
```
|
|
239
258
|
|
|
240
|
-
|
|
241
|
-
|
|
259
|
+
`${tools//scripts/...}` becomes the script's absolute path when the unit
|
|
260
|
+
dispatches, `${vault//secrets/status_token}` becomes the secret's value, and
|
|
261
|
+
`REGION` reaches the child as it is. Nothing in the plan records where any of
|
|
262
|
+
them lives, so updating a bundle in the middle of a run is harmless. The unit
|
|
263
|
+
runs in the root of the bundle that holds the workflow (`cwd:` is relative to
|
|
264
|
+
it, or absolute). See [Workflow Schema: The exec
|
|
265
|
+
contract](../reference/workflow-schema.md#the-exec-contract).
|
|
242
266
|
|
|
243
267
|
### Things to get right
|
|
244
268
|
|
|
@@ -246,20 +270,20 @@ Full list of allowlisted names:
|
|
|
246
270
|
never `"bun run test"`. Nothing is shell-parsed, which is what makes it safe;
|
|
247
271
|
if you truly need a pipeline, write `["bash", "-lc", "a | b"]` and own that
|
|
248
272
|
choice explicitly.
|
|
249
|
-
- **No interpolation.** The argv is frozen
|
|
250
|
-
|
|
273
|
+
- **No interpolation of run data.** The argv is frozen as authored; the only
|
|
274
|
+
substitution is a `${ref}` token naming an asset. A `map` step's item reaches
|
|
275
|
+
the command as `AKM_ITEM` (canonical JSON) and the run params as `AKM_PARAMS` —
|
|
251
276
|
read them from the environment, do not try to splice them into `command:`.
|
|
252
|
-
- **Secrets go in `
|
|
253
|
-
the frozen plan; `env:` bindings are carried
|
|
254
|
-
|
|
277
|
+
- **Secrets go in `secrets/`, bound through `env:`, never as literals in
|
|
278
|
+
`command:`.** `command:` is stored as authored in the frozen plan; `env:` bindings are carried
|
|
279
|
+
by name, and values substituted from a `${secrets/name}` ref are redacted out
|
|
280
|
+
of everything journaled.
|
|
255
281
|
- **Long commands need a `timeout:`.** An exec unit defaults to 10 minutes. Use
|
|
256
282
|
`timeout: "30m"` for a slow suite, or `timeout: "none"` only when you really
|
|
257
283
|
mean unbounded.
|
|
258
|
-
- **
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
fixed or secret value. The durable v4 family (`irVersion: 5`) deliberately
|
|
262
|
-
has no whole-process fallback.
|
|
284
|
+
- **The command has your shell's environment, so a credential in it reaches
|
|
285
|
+
it.** Use a named `env:` binding for a fixed or secret value you want redacted
|
|
286
|
+
from the journal; a value the command inherited is not redacted.
|
|
263
287
|
- **A very chatty command still passes; its artifact just says so.** akm retains
|
|
264
288
|
8 MiB of stdout and 8 MiB of stderr. Past that it keeps draining and discards,
|
|
265
289
|
so the command runs to completion and its exit code decides the step. The
|
|
@@ -302,10 +326,8 @@ Full reference: [Workflow Schema: Exec (shell) units](../reference/workflow-sche
|
|
|
302
326
|
- **Writing `exec.command` as a shell string.** `command: "bun run test"` is
|
|
303
327
|
rejected; it must be an argv array (`["bun", "run", "test"]`). Nothing is
|
|
304
328
|
ever shell-parsed, so metacharacters inside an argument stay literal.
|
|
305
|
-
- **
|
|
306
|
-
|
|
307
|
-
your `env:` bindings and the `AKM_*` context — nothing else. Widen it with
|
|
308
|
-
`exec.pass_env:` (a few non-secret names). `pass_env` lives inside `exec:`;
|
|
329
|
+
- **Listing names in `exec.pass_env:`.** It parses and selects nothing: the
|
|
330
|
+
command already inherits your environment. `pass_env` lives inside `exec:`;
|
|
309
331
|
the unit-level `env:` key is a list of exact env asset binding refs. A new v4
|
|
310
332
|
start rejects `inherit_env`.
|
|
311
333
|
- **Asking a model to do deterministic work.** "Run the test suite and tell me
|
|
@@ -361,14 +383,20 @@ If lint reports a very broken workflow, note that its errors are sorted by
|
|
|
361
383
|
line, so fix from the top and re-run — the later ones are usually fallout from
|
|
362
384
|
the first.
|
|
363
385
|
|
|
364
|
-
## Choosing
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
or
|
|
386
|
+
## Choosing where a step runs and which model
|
|
387
|
+
|
|
388
|
+
A step that dispatches a model runs on your default harness, or on akm's own
|
|
389
|
+
runtime over your default connection when you have no harness. Leave that to
|
|
390
|
+
the machine the workflow runs on. Name one only when a step needs it:
|
|
391
|
+
`harness:` or `connection:` in `defaults` (or per-unit `unit.harness` /
|
|
392
|
+
`unit.connection`), where a name the machine has not configured is an error that
|
|
393
|
+
names it and lists what the machine has, so a workflow shared across machines
|
|
394
|
+
should name a program only when it needs that one. Set `defaults.model`/`unit.model` to an alias rather
|
|
395
|
+
than hardcoding an exact model id, so the workflow stays portable. The aliases
|
|
396
|
+
are `fast`, `balanced`, `reasoning` and any a connection or harness maps in its
|
|
397
|
+
`models`; see
|
|
370
398
|
[Workflow Schema: Model references](../reference/workflow-schema.md#model-references)
|
|
371
|
-
for the exact resolution order
|
|
399
|
+
for the exact resolution order.
|
|
372
400
|
|
|
373
401
|
Point `reasoning` work at a capable model and keep high-volume fan-out units
|
|
374
402
|
on `fast`/`balanced`. The richer example's `review` map step is a good template: `reasoning` on the
|
|
@@ -400,13 +428,13 @@ serial behavior wholesale — set
|
|
|
400
428
|
`akm config set workflow.defaultMapConcurrency 1`.
|
|
401
429
|
|
|
402
430
|
The declared width is a **ceiling, not a promise**. Three other limits clamp it
|
|
403
|
-
and the smallest wins: `workflow.maxConcurrency`, the selected
|
|
404
|
-
`
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
431
|
+
and the smallest wins: `workflow.maxConcurrency`, the selected connection's
|
|
432
|
+
`concurrency`, and the host's CPU cap. The connection limit is the one that
|
|
433
|
+
surprises people: a connection pointed at **localhost defaults to 1**, because
|
|
434
|
+
local model servers hold a single loaded model and fall over under concurrent
|
|
435
|
+
requests — so a `map` against a local model stays serial no matter what the step
|
|
436
|
+
declares, until you raise that connection's own `concurrency`. Remote endpoints
|
|
437
|
+
default to 4, and a step on a harness has no limit of this kind. See
|
|
410
438
|
[Workflow Schema: Fan-out and concurrency](../reference/workflow-schema.md#fan-out-and-concurrency)
|
|
411
439
|
for the full table.
|
|
412
440
|
|
|
@@ -456,8 +484,8 @@ blast radius before running it.
|
|
|
456
484
|
|
|
457
485
|
4. **Deliberately break a gate once.** Run the workflow with params you
|
|
458
486
|
expect to fail validation, and confirm the gate actually rejects rather
|
|
459
|
-
than silently passing — a missing
|
|
460
|
-
verdict rejects the gate rather than bypassing it (see
|
|
487
|
+
than silently passing — a missing judge (no connection or harness to run
|
|
488
|
+
it) or a malformed verdict rejects the gate rather than bypassing it (see
|
|
461
489
|
[Workflow Schema: Gates and verification](../reference/workflow-schema.md#gates-and-verification)),
|
|
462
490
|
so this is worth confirming once per workflow rather than assuming.
|
|
463
491
|
|
|
@@ -504,28 +532,22 @@ for blocked-child recovery and the limits.
|
|
|
504
532
|
|
|
505
533
|
## Troubleshooting
|
|
506
534
|
|
|
507
|
-
**
|
|
508
|
-
|
|
509
|
-
`
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
package is an HTTP client only and spawns `opencode serve` to have something
|
|
513
|
-
to talk to, so installing the npm package alone is not enough. With no
|
|
514
|
-
binary, freezing fails with `INVALID_CONFIG_FILE` and exit 78.
|
|
535
|
+
**A step that dispatches a model needs a harness or a connection.** Freezing
|
|
536
|
+
resolves where each unit runs: its `unit.harness` or `unit.connection`, else the
|
|
537
|
+
document's `defaults`, else your default harness, else akm's own runtime over
|
|
538
|
+
your default connection. With none of those, freezing fails and the error points
|
|
539
|
+
at `akm setup`. A workflow made only of exec steps needs neither.
|
|
515
540
|
|
|
516
|
-
A workflow with a non-empty `### gate`
|
|
517
|
-
|
|
518
|
-
|
|
541
|
+
A workflow with a non-empty `### gate` also needs one for the gate judge, which
|
|
542
|
+
runs where model work runs: your default connection, else your default harness.
|
|
543
|
+
An exec-only workflow with a gate still needs it.
|
|
519
544
|
|
|
520
|
-
`akm setup` normally
|
|
521
|
-
|
|
522
|
-
engine explicitly:
|
|
545
|
+
`akm setup` normally configures both. On a bare container or CI image, run it
|
|
546
|
+
with the answers as flags, or add one by hand:
|
|
523
547
|
|
|
524
548
|
```sh
|
|
525
|
-
|
|
526
|
-
#
|
|
527
|
-
akm config set engines.claude '{"kind":"agent","platform":"claude"}'
|
|
528
|
-
akm config set defaults.engine claude
|
|
549
|
+
akm setup --yes --endpoint http://localhost:11434/v1 # a model endpoint
|
|
550
|
+
akm setup --yes --harness claude # or an agent program you have
|
|
529
551
|
```
|
|
530
552
|
|
|
531
553
|
## See also
|
package/docs/guides/bundles.md
CHANGED
|
@@ -59,7 +59,7 @@ akm bundle add github:owner/team-bundle --name team --before community
|
|
|
59
59
|
| `filesystem` | local path | Indexed in place, writable by default |
|
|
60
60
|
| `git` | `github:`, known git-host URL, or URL ending in `.git` | Cloned into `~/.cache/akm/registry/`, read-only by default |
|
|
61
61
|
| `npm` | `@scope/pkg` | Installed into cache, read-only |
|
|
62
|
-
| `website` | Other HTTP/HTTPS URL | Crawled
|
|
62
|
+
| `website` | Other HTTP/HTTPS URL | Crawled and converted to markdown when added; re-crawled by `akm bundle update` |
|
|
63
63
|
|
|
64
64
|
`akm bundle add` materializes and indexes Git install refs before it reports
|
|
65
65
|
success. A declarative `--provider git` add does the same, including writable
|
|
@@ -80,8 +80,8 @@ back out of `sourceAdded`/`installed`. Without `--name`, akm derives one
|
|
|
80
80
|
a `-<hash>` suffix only on a collision — that forgiving fallback applies
|
|
81
81
|
solely to a derived name, never to an explicit `--name`.
|
|
82
82
|
|
|
83
|
-
Git credentials must be symbolic references: `$VAR`, `${VAR}`, or
|
|
84
|
-
|
|
83
|
+
Git credentials must be symbolic references: `$VAR`, `${VAR}`, or an akm ref
|
|
84
|
+
such as `${secrets/gitea_token}`. AKM resolves the reference only at the Git subprocess boundary
|
|
85
85
|
and sends it as an HTTPS bearer header; it does not put the token in the remote
|
|
86
86
|
URL or `config.json`.
|
|
87
87
|
|
|
@@ -136,12 +136,14 @@ Valid `--kind` values are the four bundle providers: `filesystem`, `git`,
|
|
|
136
136
|
## akm bundle update / akm bundle remove
|
|
137
137
|
|
|
138
138
|
`akm bundle update` refreshes git, npm, and website bundles. Each candidate is
|
|
139
|
-
staged outside its active root
|
|
140
|
-
|
|
139
|
+
staged outside its active root and only then published and indexed. Installing
|
|
140
|
+
a bundle is the trust decision: neither `add` nor `update` inspects its `env/`
|
|
141
|
+
files, so a bundle that sets `PATH` in an env file installs and refreshes
|
|
142
|
+
unattended with no flag. `akm bundle remove` disconnects a bundle and
|
|
141
143
|
re-indexes without it.
|
|
142
144
|
|
|
143
|
-
Bundle refresh is deliberately explicit:
|
|
144
|
-
their own. Consumers that want automatic refresh should schedule
|
|
145
|
+
Bundle refresh is deliberately explicit: git, npm and website bundles do not
|
|
146
|
+
poll upstream on their own, and `akm index` never re-fetches one. Consumers that want automatic refresh should schedule
|
|
145
147
|
`akm bundle update <name>` or `akm bundle update --all`. Scheduled invocations
|
|
146
148
|
should pass `--skip-if-locked` so concurrent index or improve activity becomes
|
|
147
149
|
a successful skip instead of exit 75.
|
|
@@ -152,7 +154,6 @@ akm bundle update @scope/bundle # One managed bundle
|
|
|
152
154
|
akm bundle update --all # All managed bundles
|
|
153
155
|
akm bundle update --all --force # Force fresh download even if version unchanged
|
|
154
156
|
akm bundle update --all --skip-if-locked # Scheduled refresh: exit 0 on DB contention
|
|
155
|
-
akm bundle update @scope/bundle --allow-dangerous-env-keys # Approve reviewed dangerous env keys
|
|
156
157
|
|
|
157
158
|
# Remove
|
|
158
159
|
akm bundle remove @scope/bundle # By npm id
|
|
@@ -161,12 +162,16 @@ akm bundle remove ~/.claude/skills # By path
|
|
|
161
162
|
akm bundle remove my-provider # By name
|
|
162
163
|
```
|
|
163
164
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
165
|
+
A read-only git or npm bundle whose upstream revision is unchanged is not
|
|
166
|
+
fetched or replaced again (`--force` fetches it anyway), so a task or workflow
|
|
167
|
+
running from it keeps its directory. When the revision does change, the
|
|
168
|
+
previous revision directory is kept and older ones are removed.
|
|
169
|
+
|
|
170
|
+
`--allow-dangerous-env-keys` and `--yes` are deprecated no-ops on update,
|
|
171
|
+
accepted through 0.10 so existing scripts keep working.
|
|
172
|
+
For `--all`, failed bundles are reported separately and later bundles continue.
|
|
173
|
+
A failed bundle keeps its prior bytes, lock/config state, and search-index
|
|
174
|
+
generation.
|
|
170
175
|
|
|
171
176
|
Private bundles that intentionally version every file under `env/` and
|
|
172
177
|
`secrets/` can place this documented marker anywhere in their root
|
|
@@ -307,7 +312,6 @@ don't know about yet. The official registry ships pre-configured.
|
|
|
307
312
|
```sh
|
|
308
313
|
akm registry list # See configured registries
|
|
309
314
|
akm search "deploy" --from registry # Search registry bundles by topic
|
|
310
|
-
akm search "code review" --from registry --assets # Include asset-level hits
|
|
311
315
|
akm registry add https://example.com/registry/index.json --name my-team
|
|
312
316
|
akm registry remove my-team
|
|
313
317
|
```
|
|
@@ -326,7 +330,7 @@ get discovered, see [Registry](../reference/registry.md).
|
|
|
326
330
|
## See also
|
|
327
331
|
|
|
328
332
|
- [Discover & Load](discover-and-load.md) — querying the index after bundles are connected
|
|
329
|
-
- [Knowledge
|
|
333
|
+
- [Capture Knowledge](capture-knowledge.md) — writing your own assets
|
|
330
334
|
- [Use akm With Any Agent](use-with-any-agent.md) — using refs across bundles in prompts
|
|
331
335
|
- [Website Source Recipe](recipes/website-source.md) — walkthrough for adding a crawled website bundle
|
|
332
336
|
- [Website Sources](../reference/website-sources.md) — fetcher reference, X credentials, crawl options
|
|
@@ -151,7 +151,7 @@ its ranking) and does not trigger a rewrite.
|
|
|
151
151
|
- [Architecture](../architecture/architecture.md) — ranking and search
|
|
152
152
|
implementation detail (Search Pipeline, Show Resolution, Utility Scoring)
|
|
153
153
|
- [Bundles](bundles.md) — where indexed assets come from
|
|
154
|
-
- [Knowledge
|
|
154
|
+
- [Capture Knowledge](capture-knowledge.md) — capturing and importing
|
|
155
155
|
assets before they're discoverable
|
|
156
156
|
- [Use akm with any agent](use-with-any-agent.md) — how agents reference
|
|
157
157
|
assets by ref in practice
|
|
@@ -34,6 +34,45 @@ Or download a standalone binary directly from the
|
|
|
34
34
|
Hitting a PowerShell execution-policy error on Windows? See
|
|
35
35
|
[Troubleshooting](#troubleshooting) at the end of this guide.
|
|
36
36
|
|
|
37
|
+
### Standalone binary and semantic search
|
|
38
|
+
|
|
39
|
+
Local semantic search (`semanticSearchMode: auto`) runs its embedding model on
|
|
40
|
+
ONNX Runtime. A standalone binary carries the library for its platform. The
|
|
41
|
+
first time it embeds, it copies that library once into akm's cache directory,
|
|
42
|
+
under `onnxruntime/<version>-<platform>-<arch>/` (18 to 34 MB depending on the
|
|
43
|
+
platform; `akm info` prints the cache directory), and loads it from there. Two
|
|
44
|
+
limits follow:
|
|
45
|
+
|
|
46
|
+
- A standalone binary writes its native addon to the system temp directory and
|
|
47
|
+
loads it from there, so a temp directory mounted `noexec` blocks semantic
|
|
48
|
+
search (`akm index` reports it `blocked`; keyword search works). Set `TMPDIR`
|
|
49
|
+
to a writable, executable directory. The cache directory must be on
|
|
50
|
+
an executable mount too.
|
|
51
|
+
- Alpine/musl and Intel macOS have no native ONNX Runtime library. Semantic
|
|
52
|
+
search is unavailable there: `akm index` reports it `blocked` with the reason
|
|
53
|
+
and search stays keyword-only. A remote `embedding.endpoint` still works.
|
|
54
|
+
|
|
55
|
+
### akm's own agent runtime
|
|
56
|
+
|
|
57
|
+
With a connection and no harness, `akm agent` and the other agent work run on
|
|
58
|
+
akm's own runtime, a pinned OpenCode 2 binary that akm runs as a process. This
|
|
59
|
+
is the same for the npm package and the standalone binary: nothing of OpenCode
|
|
60
|
+
is installed with akm, and the first time the runtime runs, akm downloads the
|
|
61
|
+
OpenCode binary for your platform from the npm registry (one package, about
|
|
62
|
+
114 MB, 240 MB on disk), checks it against the registry's integrity hash and
|
|
63
|
+
keeps it in the cache directory under `opencode/<version>/`. It is fetched once.
|
|
64
|
+
Three limits follow:
|
|
65
|
+
|
|
66
|
+
- That step needs the npm registry. Without network access for it, enable the
|
|
67
|
+
`opencode` harness with an OpenCode 2 you have installed instead; no setting
|
|
68
|
+
points akm's runtime at a binary of your own.
|
|
69
|
+
- Alpine/musl runs the musl build of that binary, which needs `libstdc++` and
|
|
70
|
+
`libgcc`. The Alpine Node image already has them; on a bare Alpine install them
|
|
71
|
+
with `apk add libstdc++ libgcc`.
|
|
72
|
+
- The binary runs from the cache directory and unpacks its own native pieces
|
|
73
|
+
into `opencode-runtime/tmp/` in the data directory, so neither may be mounted
|
|
74
|
+
`noexec`.
|
|
75
|
+
|
|
37
76
|
**Success check:**
|
|
38
77
|
|
|
39
78
|
```sh
|
|
@@ -48,17 +87,24 @@ Guided, interactive setup is the default:
|
|
|
48
87
|
akm setup
|
|
49
88
|
```
|
|
50
89
|
|
|
51
|
-
`akm setup` walks through bundle location,
|
|
52
|
-
|
|
90
|
+
`akm setup` walks through the bundle location, the agent programs akm may use
|
|
91
|
+
(Claude Code, Codex, OpenCode, ...), a model connection (an OpenAI-compatible
|
|
92
|
+
endpoint, and which of its models answers each of `fast`, `balanced` and
|
|
93
|
+
`reasoning`), embeddings, semantic search asset preparation, registries,
|
|
94
|
+
sources, and task definitions. The model steps are optional: with no connection
|
|
95
|
+
and no agent program, everything that needs no model still works. Setup also
|
|
53
96
|
reviews your scheduled task definitions and asks whether to activate them in
|
|
54
97
|
the OS scheduler — that part of the flow, plus how to migrate or repair
|
|
55
98
|
scheduler bindings later, is covered in [Scheduling](scheduling.md).
|
|
56
99
|
|
|
57
100
|
For non-interactive use — scripting, CI, or when you just want a working
|
|
58
|
-
bundle fast — use `--yes
|
|
101
|
+
bundle fast — use `--yes`. A flag answers one question, so
|
|
102
|
+
`--endpoint` adds a model connection without prompting (see the
|
|
103
|
+
[CLI reference](../reference/cli.md#setup) for the rest):
|
|
59
104
|
|
|
60
105
|
```sh
|
|
61
106
|
akm setup --yes
|
|
107
|
+
akm setup --endpoint http://localhost:11434/v1 --yes # also add a model endpoint
|
|
62
108
|
akm setup --dir ~/custom-bundle # optional: a non-default bundle location
|
|
63
109
|
```
|
|
64
110
|
|