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
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
export { DEFAULT_AGENT_TIMEOUT_MS } from "./config.js";
|
|
5
|
-
export { _setAgentDetectForTests, defaultWhich, detectAgentCliProfiles
|
|
5
|
+
export { _setAgentDetectForTests, defaultWhich, detectAgentCliProfiles } from "./detect.js";
|
|
6
6
|
export { getBuiltinAgentProfile, listBuiltinAgentProfiles, } from "./profiles.js";
|
|
7
7
|
export { buildProposePrompt, buildReflectPrompt, parseAgentProposalPayload } from "./prompts.js";
|
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
|
-
* Built-in profile registry for external agent CLIs
|
|
5
|
+
* Built-in profile registry for external agent CLIs.
|
|
6
6
|
*
|
|
7
7
|
* A `AgentProfile` is the minimum metadata required to shell-out to a
|
|
8
|
-
* coding-agent CLI.
|
|
8
|
+
* coding-agent CLI. A harness lowers canonical harness metadata into this
|
|
9
9
|
* intentionally small internal shape. The wrapper is in `./spawn.ts`.
|
|
10
10
|
*/
|
|
11
|
-
import { COMMON_SPAWN_ENV_PASSTHROUGH } from "../../core/spawn-env.js";
|
|
12
11
|
import { HARNESS_REGISTRY } from "../harnesses/index.js";
|
|
13
12
|
/**
|
|
14
13
|
* Built-in profiles for the agent CLIs akm knows out of the box, DERIVED from
|
|
15
14
|
* the harness registry: each harness that declares `profile` defaults gets one,
|
|
16
15
|
* named by its id. The fields are conservative defaults, overridable from user
|
|
17
|
-
* config.
|
|
16
|
+
* config. Request lowering selects captured stdio for unattended dispatch.
|
|
18
17
|
*
|
|
19
18
|
* Built lazily: the registry transitively imports this module, so it cannot be
|
|
20
19
|
* read at module load.
|
|
@@ -25,39 +24,15 @@ function builtinProfiles() {
|
|
|
25
24
|
return builtins;
|
|
26
25
|
builtins = {};
|
|
27
26
|
for (const harness of HARNESS_REGISTRY) {
|
|
28
|
-
if (!harness.profile)
|
|
29
|
-
continue;
|
|
30
27
|
builtins[harness.id] = {
|
|
31
28
|
name: harness.id,
|
|
32
29
|
bin: harness.profile.bin,
|
|
33
30
|
args: harness.profile.args,
|
|
34
31
|
stdio: "interactive",
|
|
35
|
-
// AKM_EVENT_SOURCE (in the common set) carries usage-event provenance so akm
|
|
36
|
-
// invocations a spawned agent makes are recorded as machine traffic; it is a
|
|
37
|
-
// provenance tag, never a secret.
|
|
38
|
-
envPassthrough: [...COMMON_SPAWN_ENV_PASSTHROUGH, ...harness.profile.envPassthrough],
|
|
39
|
-
parseOutput: "text",
|
|
40
32
|
};
|
|
41
33
|
}
|
|
42
34
|
return builtins;
|
|
43
35
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Binary the `opencode-sdk` harness needs on PATH.
|
|
46
|
-
*
|
|
47
|
-
* The embedded client is not self-contained, and that is the SDK's own design
|
|
48
|
-
* rather than a consequence of how akm drives it: `@opencode-ai/sdk` (OpenCode 1)
|
|
49
|
-
* ships with `"dependencies": {}` and its `createOpencodeServer` is itself a
|
|
50
|
-
* `spawn("opencode", ["serve", ...])`; `@opencode/client` (OpenCode 2, the
|
|
51
|
-
* default) is an HTTP client only and starts nothing. akm's runner spawns a
|
|
52
|
-
* private `opencode serve` of the engine's detected major (
|
|
53
|
-
* never the v2 background service) and talks HTTP to it through that major's
|
|
54
|
-
* adapter (see `harnesses/opencode-sdk/sdk-runner.ts`, `v1-adapter.ts`, `v2-adapter.ts`),
|
|
55
|
-
* so the `opencode` binary gates the SDK path exactly as it gates the CLI
|
|
56
|
-
* path — a host with the npm package but no binary can dispatch neither.
|
|
57
|
-
* `opencode-sdk` deliberately declares no `profile` — it dispatches
|
|
58
|
-
* without argv construction — so this is the one place that pairing lives.
|
|
59
|
-
*/
|
|
60
|
-
export const OPENCODE_SDK_SERVER_BIN = "opencode";
|
|
61
36
|
/** Returns the built-in descriptor for a canonical harness id. */
|
|
62
37
|
export function getBuiltinAgentProfile(name) {
|
|
63
38
|
return builtinProfiles()[name];
|
|
@@ -73,3 +48,24 @@ export function listBuiltinAgentProfiles() {
|
|
|
73
48
|
}
|
|
74
49
|
return out;
|
|
75
50
|
}
|
|
51
|
+
/** The profile a harness runner spawns: its platform's built-in defaults under what the config set. */
|
|
52
|
+
export function harnessProfile(runner) {
|
|
53
|
+
return {
|
|
54
|
+
name: runner.name,
|
|
55
|
+
platform: runner.platform,
|
|
56
|
+
bin: runner.bin,
|
|
57
|
+
args: runner.args,
|
|
58
|
+
stdio: "captured",
|
|
59
|
+
...(runner.model ? { model: runner.model } : {}),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** The profile of akm's own runtime, the pinned OpenCode process that runs agent work over a connection. It names the connection; the program is fetched and started by `harnesses/opencode/runtime/`. */
|
|
63
|
+
export function runtimeProfile(connection) {
|
|
64
|
+
return {
|
|
65
|
+
name: connection.name,
|
|
66
|
+
bin: "",
|
|
67
|
+
args: [],
|
|
68
|
+
stdio: "captured",
|
|
69
|
+
model: connection.model,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Shared prompt builders for proposal-producing agent commands (#226).
|
|
6
6
|
*
|
|
7
|
-
* `akm reflect` and `akm proposal new` both ask the
|
|
7
|
+
* `akm reflect` and `akm proposal new` both ask the connection or harness they run on for a
|
|
8
8
|
* structured proposal payload. The prompts are intentionally similar and share
|
|
9
|
-
* their construction here. `proposal new` asks
|
|
9
|
+
* their construction here. `proposal new` asks a connection and a harness alike for the JSON
|
|
10
10
|
* object below, with {@link PROPOSAL_JSON_SCHEMA} as the request's output
|
|
11
|
-
* schema. Reflect asks
|
|
11
|
+
* schema. Reflect asks both for its own contract, JSON Schema or
|
|
12
12
|
* framed markdown ({@link ReflectOutputMode}).
|
|
13
13
|
*
|
|
14
|
-
* The output
|
|
14
|
+
* The output `proposal new` needs back is a strict JSON object:
|
|
15
15
|
*
|
|
16
16
|
* ```json
|
|
17
17
|
* {
|
|
@@ -42,7 +42,7 @@ const TYPE_HINTS = {
|
|
|
42
42
|
lesson: "lesson assets MUST start with frontmatter containing `description` and `when_to_use` keys (both non-empty). Body: 1–3 short paragraphs of practical guidance. A lesson is NOT a restatement of the source asset — it answers: When should I reach for this? What goes wrong without it? What did real use reveal that the asset itself doesn't say?",
|
|
43
43
|
skill: "skill assets are stored as `skills/<name>/SKILL.md`. Frontmatter typically includes `name`, `description`, and `when_to_use`.",
|
|
44
44
|
command: "command assets are markdown with optional frontmatter (`name`, `description`). The body is the prompt template the user invokes.",
|
|
45
|
-
agent: "agent assets are markdown with frontmatter describing the agent role (`name`, `description`, optional `
|
|
45
|
+
agent: "agent assets are markdown with frontmatter describing the agent role (`name`, `description`, optional `model`).",
|
|
46
46
|
knowledge: "knowledge assets are reference markdown documents. Include a top-level `# Title` and concise sections.",
|
|
47
47
|
memory: "memory assets are short factual notes the user wants persisted across sessions. Frontmatter usually includes `description`.",
|
|
48
48
|
workflow: "workflow assets are markdown describing a multi-step process. Include `# <Title>` and ordered `## Step N` sections.",
|
|
@@ -75,7 +75,7 @@ export const REFLECT_CONTENT_CAP = 12_000;
|
|
|
75
75
|
*/
|
|
76
76
|
export const REFLECT_TRUNCATION_MARKER = "... [truncated — focus on the visible portion]";
|
|
77
77
|
/**
|
|
78
|
-
* The JSON envelope `proposal new` asks the
|
|
78
|
+
* The JSON envelope `proposal new` asks the model to honour. The wrapper code
|
|
79
79
|
* uses `JSON.parse(stdout)` to extract the payload — anything outside the JSON
|
|
80
80
|
* object will be treated as a parse error.
|
|
81
81
|
*/
|
|
@@ -96,10 +96,10 @@ const RESPONSE_CONTRACT_JSON = [
|
|
|
96
96
|
].join("\n");
|
|
97
97
|
/**
|
|
98
98
|
* The JSON Schema of {@link RESPONSE_CONTRACT_JSON}'s object, the output
|
|
99
|
-
* schema `proposal new` sends with its request:
|
|
100
|
-
* `response_format`,
|
|
101
|
-
*
|
|
102
|
-
*
|
|
99
|
+
* schema `proposal new` sends with its request: a connection gets it as
|
|
100
|
+
* `response_format`, a harness as the shared schema instruction. It
|
|
101
|
+
* is in the strict form a provider's native channel accepts (every property
|
|
102
|
+
* required, no others), so it leaves out the optional
|
|
103
103
|
* `frontmatter`, which `content` already carries. The reply is held only to
|
|
104
104
|
* what {@link validateProposalPayload} needs.
|
|
105
105
|
*/
|
|
@@ -252,12 +252,12 @@ export function buildReflectPrompt(input) {
|
|
|
252
252
|
}
|
|
253
253
|
if (input.assetContent?.trim()) {
|
|
254
254
|
// Cap defaults to REFLECT_CONTENT_CAP (12 000 chars) to stay well under OS
|
|
255
|
-
// ARG_MAX when the prompt is passed as a CLI argument
|
|
256
|
-
//
|
|
257
|
-
//
|
|
258
|
-
//
|
|
259
|
-
// allowed below the flat floor, which the caller enforces
|
|
260
|
-
const contentCap = input.contentBudgetChars ?? REFLECT_CONTENT_CAP;
|
|
255
|
+
// ARG_MAX when the prompt is passed as a CLI argument — large assets (wiki
|
|
256
|
+
// snapshots, long runbooks) would otherwise trigger E2BIG on posix_spawn.
|
|
257
|
+
// A prompt on stdin or over HTTP never touches argv, so the caller passes a
|
|
258
|
+
// larger, context-aware `contentBudgetChars` (#952), or `null` for none; a
|
|
259
|
+
// number is never allowed below the flat floor, which the caller enforces.
|
|
260
|
+
const contentCap = input.contentBudgetChars === null ? Number.POSITIVE_INFINITY : (input.contentBudgetChars ?? REFLECT_CONTENT_CAP);
|
|
261
261
|
const body = input.assetContent.trimEnd();
|
|
262
262
|
const truncated = body.length > contentCap;
|
|
263
263
|
sections.push(truncated
|
|
@@ -297,19 +297,6 @@ export function buildReflectPrompt(input) {
|
|
|
297
297
|
if (input.avoidPatterns && input.avoidPatterns.length > 0) {
|
|
298
298
|
sections.push(`## Avoid These Patterns\nRun-only guidance: do not copy this heading, explanation, or any diagnostic below into the proposed asset.\nPrevious assets in this run produced these errors — do not repeat them:\n${input.avoidPatterns.map((e) => `- ${e}`).join("\n")}`);
|
|
299
299
|
}
|
|
300
|
-
// R-1 / #372: Self-Refine (arXiv:2303.17651) — inject prior draft as critique target.
|
|
301
|
-
// On refinement iterations (iter > 0), the agent is shown its previous proposal
|
|
302
|
-
// and asked to self-critique and improve it rather than starting from scratch.
|
|
303
|
-
if (input.priorDraft?.trim()) {
|
|
304
|
-
sections.push("## Self-Refine: Critique and Improve\n" +
|
|
305
|
-
"The following is your previous draft proposal. " +
|
|
306
|
-
"Identify specific weaknesses: missing evidence, vague wording, incomplete frontmatter, " +
|
|
307
|
-
"or claims that duplicate existing content without adding new signal. " +
|
|
308
|
-
"Then produce an improved version that addresses those weaknesses.\n\n" +
|
|
309
|
-
"Previous draft:\n```\n" +
|
|
310
|
-
input.priorDraft.trimEnd() +
|
|
311
|
-
"\n```");
|
|
312
|
-
}
|
|
313
300
|
if (input.ref && input.assetContent?.trim()) {
|
|
314
301
|
const problems = frontmatterProblems(input.assetContent);
|
|
315
302
|
sections.push(problems.length > 0
|
|
@@ -321,7 +308,7 @@ export function buildReflectPrompt(input) {
|
|
|
321
308
|
}
|
|
322
309
|
/**
|
|
323
310
|
* Build the prompt for `akm proposal new <type> <name> --task ...`. Asks the
|
|
324
|
-
*
|
|
311
|
+
* model to author a brand-new asset of the given type fulfilling `task`, and
|
|
325
312
|
* to return it as the JSON object of {@link RESPONSE_CONTRACT_JSON}.
|
|
326
313
|
*/
|
|
327
314
|
export function buildProposePrompt(input) {
|
|
@@ -3,25 +3,8 @@
|
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
import { ConfigError } from "../../core/errors.js";
|
|
5
5
|
import { withSchemaInstruction } from "../../core/structured.js";
|
|
6
|
-
import { MODEL_WORK_POLICY_ID } from "../../execution/source.js";
|
|
7
|
-
import { getHarness } from "../harnesses/index.js";
|
|
8
6
|
import { composeConversationFallbackPrompt } from "./conversation-fallback.js";
|
|
9
7
|
import { composePersonaFallbackPrompt } from "./persona-fallback.js";
|
|
10
|
-
/** A tool selection that actually names tools (not omitted, null, or empty). */
|
|
11
|
-
export function hasToolSelection(value) {
|
|
12
|
-
if (value === null || value === undefined)
|
|
13
|
-
return false;
|
|
14
|
-
if (typeof value === "string" || Array.isArray(value))
|
|
15
|
-
return value.length > 0;
|
|
16
|
-
return Object.keys(value).length > 0;
|
|
17
|
-
}
|
|
18
|
-
function translatesTools(mode, value) {
|
|
19
|
-
if (mode === "all")
|
|
20
|
-
return true;
|
|
21
|
-
if (typeof value === "string" || Array.isArray(value))
|
|
22
|
-
return mode === "flat" || mode === "sdk";
|
|
23
|
-
return mode === "sdk" && value !== null && Object.values(value).every((entry) => typeof entry === "boolean");
|
|
24
|
-
}
|
|
25
8
|
/** The notice for a request field a transport does not carry; dispatch continues. */
|
|
26
9
|
export function untranslated(adapter, field) {
|
|
27
10
|
return {
|
|
@@ -32,94 +15,77 @@ export function untranslated(adapter, field) {
|
|
|
32
15
|
message: `The ${adapter} lowerer does not translate resolved field ${field}; dispatch will continue optimistically.`,
|
|
33
16
|
};
|
|
34
17
|
}
|
|
35
|
-
/** Request fields carrying adapter-owned extensions, which no transport translates. */
|
|
36
|
-
export function extensionFields(request) {
|
|
37
|
-
return [
|
|
38
|
-
...(request.extensions ? ["extensions"] : []),
|
|
39
|
-
...(request.command.extensions ? ["command.extensions"] : []),
|
|
40
|
-
...(request.persona?.extensions ? ["persona.extensions"] : []),
|
|
41
|
-
...(request.engine.extensions ? ["engine.extensions"] : []),
|
|
42
|
-
...(request.runtime.extensions ? ["runtime.extensions"] : []),
|
|
43
|
-
];
|
|
44
|
-
}
|
|
45
18
|
/**
|
|
46
|
-
*
|
|
47
|
-
* harness-neutral {@link AgentDispatchRequest} its
|
|
48
|
-
* composing into the prompt what the
|
|
19
|
+
* Lower a resolved request for one target (a harness, or akm's own runtime): map
|
|
20
|
+
* it onto the harness-neutral {@link AgentDispatchRequest} its builder consumes,
|
|
21
|
+
* composing into the prompt what the target has no channel for.
|
|
49
22
|
*/
|
|
50
|
-
export function
|
|
51
|
-
const supportedInference = new Set(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
notices.push(...composed.notices);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else if (typeof request.agent === "string") {
|
|
80
|
-
if (!getHarness(options.adapter)?.capabilities.nativeAgent) {
|
|
81
|
-
throw new ConfigError(`The ${options.adapter} transport cannot consume native agent selector ${JSON.stringify(request.agent)}.`, "INVALID_CONFIG_FILE");
|
|
82
|
-
}
|
|
83
|
-
dispatch.agent = request.agent;
|
|
84
|
-
}
|
|
85
|
-
// Every agent transport gets the schema as the one instruction; a harness
|
|
86
|
-
// with a native channel (codex --output-schema) also reads dispatch.schema.
|
|
87
|
-
if (request.outputSchema) {
|
|
88
|
-
prompt = withSchemaInstruction(prompt, request.outputSchema);
|
|
89
|
-
dispatch.schema = request.outputSchema;
|
|
23
|
+
export function lowerRequest(target, request) {
|
|
24
|
+
const supportedInference = new Set(target.inference ?? []);
|
|
25
|
+
const adapter = target.id;
|
|
26
|
+
const notices = [];
|
|
27
|
+
const skip = (field) => {
|
|
28
|
+
notices.push(untranslated(adapter, field));
|
|
29
|
+
};
|
|
30
|
+
let prompt = request.command.content;
|
|
31
|
+
if (request.conversation && request.conversation.length > 0) {
|
|
32
|
+
prompt = composeConversationFallbackPrompt(request.conversation, prompt);
|
|
33
|
+
notices.push({
|
|
34
|
+
code: "conversation-prompt-composed",
|
|
35
|
+
severity: "warning",
|
|
36
|
+
adapter,
|
|
37
|
+
field: "conversation",
|
|
38
|
+
message: `The ${adapter} transport has no native multi-message channel; AKM composed the conversation prefix into one deterministic JSON prompt block.`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const dispatch = { prompt };
|
|
42
|
+
if (request.persona) {
|
|
43
|
+
if (target.systemPrompt)
|
|
44
|
+
dispatch.systemPrompt = request.persona.content;
|
|
45
|
+
else {
|
|
46
|
+
const composed = composePersonaFallbackPrompt(request.persona.content, prompt, adapter);
|
|
47
|
+
prompt = composed.prompt;
|
|
48
|
+
notices.push(...composed.notices);
|
|
90
49
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
50
|
+
}
|
|
51
|
+
else if (typeof request.agent === "string" && request.modelWork) {
|
|
52
|
+
// Model work is not agent work: a native agent would replace the confined run.
|
|
53
|
+
notices.push({
|
|
54
|
+
code: "model-work-agent-ignored",
|
|
55
|
+
severity: "warning",
|
|
56
|
+
adapter,
|
|
57
|
+
field: "agent",
|
|
58
|
+
message: `The ${adapter} transport ignores native agent ${JSON.stringify(request.agent)} for model work.`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else if (typeof request.agent === "string") {
|
|
62
|
+
if (!target.nativeAgent) {
|
|
63
|
+
throw new ConfigError(`The ${adapter} transport cannot consume native agent selector ${JSON.stringify(request.agent)}.`, "INVALID_CONFIG_FILE");
|
|
100
64
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
65
|
+
dispatch.agent = request.agent;
|
|
66
|
+
}
|
|
67
|
+
// Every agent transport gets the schema as the one instruction.
|
|
68
|
+
if (request.outputSchema)
|
|
69
|
+
prompt = withSchemaInstruction(prompt, request.outputSchema);
|
|
70
|
+
dispatch.prompt = prompt;
|
|
71
|
+
if (request.model)
|
|
72
|
+
dispatch.model = request.model.model;
|
|
73
|
+
for (const key of Object.keys(request.inference ?? {}).sort()) {
|
|
74
|
+
if (!supportedInference.has(key))
|
|
75
|
+
skip(`inference.${key}`);
|
|
76
|
+
}
|
|
77
|
+
if (request.modelWork) {
|
|
78
|
+
if (target.confinable)
|
|
109
79
|
dispatch.modelWork = true;
|
|
80
|
+
else {
|
|
81
|
+
notices.push({
|
|
82
|
+
code: "model-work-unrestricted",
|
|
83
|
+
severity: "info",
|
|
84
|
+
adapter,
|
|
85
|
+
field: "modelWork",
|
|
86
|
+
message: `The ${adapter} transport cannot restrict its tools for model work; the run is unrestricted, in a scratch directory.`,
|
|
87
|
+
});
|
|
110
88
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (hasToolSelection(request.tools) && !translatesTools(options.tools, request.tools)) {
|
|
114
|
-
throw new ConfigError(`The ${options.adapter} transport cannot enforce the resolved tool policy.`, "INVALID_CONFIG_FILE");
|
|
115
|
-
}
|
|
116
|
-
dispatch.tools = request.tools;
|
|
117
|
-
}
|
|
118
|
-
const settings = request.runtime.settings;
|
|
119
|
-
if (settings && Object.keys(settings).length > 0)
|
|
120
|
-
skip("runtime.settings");
|
|
121
|
-
for (const field of extensionFields(request))
|
|
122
|
-
skip(field);
|
|
123
|
-
return { prompt, dispatch, notices };
|
|
124
|
-
};
|
|
89
|
+
}
|
|
90
|
+
return { dispatch, notices };
|
|
125
91
|
}
|