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
|
@@ -3,92 +3,28 @@
|
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
5
|
* Materialize a unit's frozen environment at dispatch. Env-file values are the
|
|
6
|
-
* one deliberately live input to a frozen plan: freeze records each ref
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* has succeeded.
|
|
6
|
+
* one deliberately live input to a frozen plan: freeze records each env ref;
|
|
7
|
+
* the values (and the secrets and paths their `${ref}` tokens name) are read
|
|
8
|
+
* here, per dispatch, through `resolveEnvBinding` — the same machinery `akm env
|
|
9
|
+
* run` uses — and nothing is returned until every read has succeeded.
|
|
10
10
|
*/
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
import dotenv from "dotenv";
|
|
14
|
-
import { assetPathForName } from "../../core/asset/asset-placement.js";
|
|
15
|
-
import { compareCodePoints, isWithin } from "../../core/common.js";
|
|
16
|
-
import { NotFoundError, UsageError } from "../../core/errors.js";
|
|
17
|
-
export const SECRET_TOKEN_RE = /\$\{secret:([A-Za-z0-9_./-]+)\}/g;
|
|
18
|
-
export function materializeFrozenWorkflowEnvironment(descriptors, options = {}) {
|
|
11
|
+
import { resolveEnvBinding } from "../../commands/env/env-binding.js";
|
|
12
|
+
export function materializeFrozenWorkflowEnvironment(descriptors) {
|
|
19
13
|
const values = {};
|
|
20
14
|
const sensitive = new Set();
|
|
21
|
-
const audits = [];
|
|
22
15
|
for (const descriptor of descriptors) {
|
|
23
16
|
if (descriptor.kind === "literal") {
|
|
24
17
|
values[descriptor.name] = descriptor.value;
|
|
25
|
-
if (descriptor.value)
|
|
26
|
-
sensitive.add(descriptor.value);
|
|
27
18
|
continue;
|
|
28
19
|
}
|
|
29
|
-
// `pass_env` names
|
|
30
|
-
// (
|
|
31
|
-
// deliberately not redacted, so they are neither read nor marked sensitive here.
|
|
20
|
+
// `pass_env` names are recorded in the plan and select nothing: the exec child inherits
|
|
21
|
+
// akm's environment (exec-unit.ts), so they are neither read nor marked sensitive here.
|
|
32
22
|
if (descriptor.kind === "pass-through")
|
|
33
23
|
continue;
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
invalid(`environment ${descriptor.ref} key set changed after it was frozen`);
|
|
39
|
-
const secretValues = new Map();
|
|
40
|
-
for (const name of descriptor.secretNames) {
|
|
41
|
-
const raw = options.readSecret ? options.readSecret({ name, descriptor }) : readSecret(descriptor.owner, name);
|
|
42
|
-
if (raw === undefined) {
|
|
43
|
-
throw new NotFoundError(`Environment ${descriptor.ref} references missing secret ${name}; nothing was materialized.`, "FILE_NOT_FOUND");
|
|
44
|
-
}
|
|
45
|
-
const value = typeof raw === "string" ? raw : Buffer.from(raw).toString("utf8");
|
|
46
|
-
secretValues.set(name, value);
|
|
47
|
-
if (value)
|
|
48
|
-
sensitive.add(value);
|
|
49
|
-
}
|
|
50
|
-
for (const [key, rawValue] of Object.entries(parsed)) {
|
|
51
|
-
const resolved = rawValue.replace(SECRET_TOKEN_RE, (_token, name) => {
|
|
52
|
-
const secret = secretValues.get(name);
|
|
53
|
-
if (secret === undefined)
|
|
54
|
-
invalid(`environment ${descriptor.ref} secret ${name} was not frozen`);
|
|
55
|
-
return secret;
|
|
56
|
-
});
|
|
57
|
-
values[key] = resolved;
|
|
58
|
-
if (resolved)
|
|
59
|
-
sensitive.add(resolved);
|
|
60
|
-
}
|
|
61
|
-
audits.push({
|
|
62
|
-
eventType: "env_access",
|
|
63
|
-
ref: descriptor.ref,
|
|
64
|
-
keys: [...descriptor.keys],
|
|
65
|
-
secretNames: [...descriptor.secretNames],
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return { values, sensitiveValues: [...sensitive], audits };
|
|
69
|
-
}
|
|
70
|
-
function readEnvFile(owner) {
|
|
71
|
-
if (!isWithin(owner.requestedPath, owner.requestedRoot))
|
|
72
|
-
invalid(`env file ${owner.relativePath} escapes its bundle`);
|
|
73
|
-
return fs.readFileSync(owner.requestedPath);
|
|
74
|
-
}
|
|
75
|
-
function readSecret(owner, name) {
|
|
76
|
-
const secretsRoot = path.join(owner.requestedRoot, "secrets");
|
|
77
|
-
const secretPath = assetPathForName("secret", secretsRoot, name);
|
|
78
|
-
if (!isWithin(secretPath, secretsRoot))
|
|
79
|
-
invalid(`secret name ${name} escapes its bundle`);
|
|
80
|
-
try {
|
|
81
|
-
return fs.readFileSync(secretPath);
|
|
82
|
-
}
|
|
83
|
-
catch (cause) {
|
|
84
|
-
if (cause.code === "ENOENT")
|
|
85
|
-
return undefined;
|
|
86
|
-
throw cause;
|
|
24
|
+
const binding = resolveEnvBinding(descriptor.ref);
|
|
25
|
+
Object.assign(values, binding.values);
|
|
26
|
+
for (const secret of binding.secretValues)
|
|
27
|
+
sensitive.add(secret);
|
|
87
28
|
}
|
|
88
|
-
}
|
|
89
|
-
function sameStrings(left, right) {
|
|
90
|
-
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
91
|
-
}
|
|
92
|
-
function invalid(message) {
|
|
93
|
-
throw new UsageError(`Invalid frozen workflow environment: ${message}.`, "WORKFLOW_SOURCE_INVALID");
|
|
29
|
+
return { values, sensitiveValues: [...sensitive] };
|
|
94
30
|
}
|
|
@@ -3,16 +3,13 @@
|
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
5
|
* The `exec` unit runner — the one place a frozen workflow spawns a command:
|
|
6
|
-
* argv-only, detached with a SIGTERM→SIGKILL ladder against the process group,
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* caller redacts the outcome before anything is journaled.
|
|
10
|
-
* See docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md.
|
|
6
|
+
* argv-only, detached with a SIGINT→SIGTERM→SIGKILL ladder against the process group,
|
|
7
|
+
* bounded (timeout, output bytes, context size), with the environment akm runs in
|
|
8
|
+
* ({@link childEnv}). The caller redacts the outcome before anything is journaled.
|
|
11
9
|
*/
|
|
12
10
|
import fs from "node:fs";
|
|
13
11
|
import path from "node:path";
|
|
14
|
-
import {
|
|
15
|
-
import { COMMON_SPAWN_ENV_PASSTHROUGH, collectAllowlistedEnv, WIN32_SPAWN_ENV_FLOOR } from "../../core/spawn-env.js";
|
|
12
|
+
import { childProcessEnv } from "../../core/paths.js";
|
|
16
13
|
import { runManagedSubprocess, streamCaptureFailure, } from "../../core/subprocess.js";
|
|
17
14
|
import { warn } from "../../core/warn.js";
|
|
18
15
|
import { execContextLimits, utf8Bytes, WORKFLOW_EXEC_OUTPUT_TRUNCATED_MARKER, WORKFLOW_MAX_EXEC_OUTPUT_BYTES, WORKFLOW_UNIT_DIAGNOSTIC_CLIP, } from "../resource-limits.js";
|
|
@@ -22,34 +19,10 @@ import { execContextLimits, utf8Bytes, WORKFLOW_EXEC_OUTPUT_TRUNCATED_MARKER, WO
|
|
|
22
19
|
* of the composed message never cuts the tail.
|
|
23
20
|
*/
|
|
24
21
|
const EXEC_STDERR_DIAGNOSTIC_CLIP = WORKFLOW_UNIT_DIAGNOSTIC_CLIP - 500;
|
|
25
|
-
/**
|
|
26
|
-
* The default environment allowlist for an exec unit's child (`exec.passEnv`
|
|
27
|
-
* extends it): the agent-harness baseline plus names ordinary commands need
|
|
28
|
-
* and `AKM_EVENT_SOURCE`. Credentials, cloud/CI vars, and proxies reach a
|
|
29
|
-
* child only through `pass_env` or `env:`.
|
|
30
|
-
*/
|
|
31
|
-
export const EXEC_DEFAULT_ENV_PASSTHROUGH = [
|
|
32
|
-
// PATH, HOME, USER, LANG, LC_ALL, TERM, TMPDIR, AKM_EVENT_SOURCE
|
|
33
|
-
...COMMON_SPAWN_ENV_PASSTHROUGH,
|
|
34
|
-
// POSIX names a raw shell command needs beyond the agent baseline
|
|
35
|
-
"LOGNAME",
|
|
36
|
-
"SHELL",
|
|
37
|
-
"LC_CTYPE",
|
|
38
|
-
"TZ",
|
|
39
|
-
// SystemRoot, SystemDrive, WINDIR, COMSPEC, PATHEXT, USERPROFILE, HOMEDRIVE,
|
|
40
|
-
// HOMEPATH, TEMP, TMP. Named here as well as appended by `spawnEnvNamesFor`
|
|
41
|
-
// because this list is consumed on POSIX too, where nothing is appended.
|
|
42
|
-
...WIN32_SPAWN_ENV_FLOOR,
|
|
43
|
-
// Windows toolchain roots, deliberately not part of the floor
|
|
44
|
-
"APPDATA",
|
|
45
|
-
"LOCALAPPDATA",
|
|
46
|
-
"ProgramData",
|
|
47
|
-
"ProgramFiles",
|
|
48
|
-
];
|
|
49
22
|
/**
|
|
50
23
|
* Run one exec unit and map its outcome onto the dispatch vocabulary
|
|
51
24
|
* (`non_zero_exit`, `timeout`, `aborted`, `spawn_failed` — retryable). The
|
|
52
|
-
* `exec_*` reasons (
|
|
25
|
+
* `exec_*` reasons (output limit, context too large, incomplete
|
|
53
26
|
* capture) are deliberately outside `retry.on`. Output overflow fails only a
|
|
54
27
|
* unit that declared an `output:` schema.
|
|
55
28
|
*/
|
|
@@ -63,7 +36,7 @@ export async function runExecUnit(input) {
|
|
|
63
36
|
const result = await runManagedSubprocess([...input.exec.command], {
|
|
64
37
|
capture: true,
|
|
65
38
|
cwd: cwd.path,
|
|
66
|
-
env: childEnv(input.
|
|
39
|
+
env: childEnv(input.env, input.context, input.eventSource),
|
|
67
40
|
timeoutMs: input.timeoutMs,
|
|
68
41
|
// stdout is the artifact; retention is bounded (discarding past the cap, never killing).
|
|
69
42
|
maxOutputBytes: WORKFLOW_MAX_EXEC_OUTPUT_BYTES,
|
|
@@ -220,21 +193,11 @@ function contextTooLarge(input, what, names, limits) {
|
|
|
220
193
|
};
|
|
221
194
|
}
|
|
222
195
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
* per unit on the dispatch path.
|
|
196
|
+
* Join `exec.cwd` onto `baseDir` once. `exec.cwd` may be relative or absolute and is not contained:
|
|
197
|
+
* the command is arbitrary code in its own right. Async: it runs per unit on the dispatch path.
|
|
226
198
|
*/
|
|
227
199
|
async function resolveExecCwd(input) {
|
|
228
|
-
const
|
|
229
|
-
const target = input.exec.cwd ? path.resolve(base, input.exec.cwd) : base;
|
|
230
|
-
if (!(await isWithinAsync(target, base))) {
|
|
231
|
-
return {
|
|
232
|
-
ok: false,
|
|
233
|
-
failureReason: "exec_cwd_escape",
|
|
234
|
-
error: `exec unit "${input.unitId}" declares cwd ${JSON.stringify(input.exec.cwd ?? ".")}, which resolves to ` +
|
|
235
|
-
`${target} — outside its working directory ${base}. Refusing to run outside the unit's tree.`,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
200
|
+
const target = path.resolve(input.baseDir, input.exec.cwd ?? ".");
|
|
238
201
|
if (!(await isExistingDirectory(target))) {
|
|
239
202
|
return {
|
|
240
203
|
ok: false,
|
|
@@ -253,12 +216,12 @@ async function isExistingDirectory(candidate) {
|
|
|
253
216
|
}
|
|
254
217
|
}
|
|
255
218
|
/**
|
|
256
|
-
* The child's environment, in precedence order: the
|
|
257
|
-
*
|
|
258
|
-
* context, last so a binding cannot shadow it.
|
|
219
|
+
* The child's environment, in precedence order: akm's own with the directories
|
|
220
|
+
* this akm resolved set over it ({@link childProcessEnv}); the resolved `env:`
|
|
221
|
+
* bindings; then the engine's `AKM_*` context, last so a binding cannot shadow it.
|
|
259
222
|
*/
|
|
260
|
-
function childEnv(
|
|
261
|
-
const env =
|
|
223
|
+
function childEnv(bindings, context, eventSource) {
|
|
224
|
+
const env = childProcessEnv();
|
|
262
225
|
// Only when absent from the base, and before the overlays, so ambient and authored values win.
|
|
263
226
|
if (eventSource !== undefined && env.AKM_EVENT_SOURCE === undefined) {
|
|
264
227
|
env.AKM_EVENT_SOURCE = eventSource;
|
|
@@ -269,10 +232,6 @@ function childEnv(exec, bindings, context, eventSource) {
|
|
|
269
232
|
env[name] = value;
|
|
270
233
|
return env;
|
|
271
234
|
}
|
|
272
|
-
/** The unit's effective allowlist: the shared default plus its own `passEnv` names. */
|
|
273
|
-
function execAllowlist(exec) {
|
|
274
|
-
return exec.passEnv ? [...EXEC_DEFAULT_ENV_PASSTHROUGH, ...exec.passEnv] : [...EXEC_DEFAULT_ENV_PASSTHROUGH];
|
|
275
|
-
}
|
|
276
235
|
/** `argv[0]` plus its argument count — never the full argv, which can carry values. */
|
|
277
236
|
function describeCommand(command) {
|
|
278
237
|
const rest = command.length - 1;
|
|
@@ -9,33 +9,39 @@
|
|
|
9
9
|
* bindings (a step's environment belongs to the work, not the verifier).
|
|
10
10
|
*/
|
|
11
11
|
import { warn } from "../../core/warn.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { mergeNotices } from "../../execution/notices.js";
|
|
13
|
+
import { resolveRunBundleRoot } from "../runtime/workflow-asset-loader.js";
|
|
14
|
+
import { dispatchWorkflowExecution } from "./unit-dispatch.js";
|
|
14
15
|
/** The gate's node id — identical to what `journalGateEvaluationStart` writes. */
|
|
15
16
|
export function gateNodeId(stepId) {
|
|
16
17
|
return `${stepId}.gate`;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* The root of the bundle the run's workflow lives in, found when the judge is built (a bundle update moves it).
|
|
21
|
+
* No frozen judge, no root needed. When the bundle does not resolve the judge is not built, and the error names the ref.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveJudgeCwd(target, workflowRef) {
|
|
24
|
+
if (!target)
|
|
25
|
+
return undefined;
|
|
26
|
+
return resolveRunBundleRoot(workflowRef);
|
|
27
|
+
}
|
|
18
28
|
/** Identity for one judge dispatch: the caller's row identity, else the run/step with the gate node id. */
|
|
19
29
|
function dispatchIdentity(owner, identity) {
|
|
20
30
|
return identity ?? { ...owner, unitId: gateNodeId(owner.stepId) };
|
|
21
31
|
}
|
|
22
|
-
function warnLoweringNotices(
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
for (const notice of notices ?? []) {
|
|
26
|
-
const key = JSON.stringify([notice.code, notice.severity, notice.adapter, notice.field, notice.message]);
|
|
27
|
-
if (emitted.has(key))
|
|
28
|
-
continue;
|
|
29
|
-
emitted.add(key);
|
|
30
|
-
warn(`Workflow judge lowering notice (${notice.code}; ${notice.adapter}; ${notice.field}): ${notice.message}`);
|
|
31
|
-
}
|
|
32
|
+
function warnLoweringNotices(notices) {
|
|
33
|
+
for (const notice of mergeNotices(notices) ?? []) {
|
|
34
|
+
warn(`Workflow judge lowering notice (${notice.code}; ${notice.adapter}; ${notice.field}): ${notice.message}`);
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
|
-
/**
|
|
35
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Build a gate judge from the frozen target without consulting live config; `eventSource` stamps it like a unit.
|
|
39
|
+
* `cwd` is the root of the run's bundle, where the judge works like every other agent dispatch.
|
|
40
|
+
*/
|
|
41
|
+
export function frozenSummaryJudge(target, signal, dispatcher, owner, eventSource, cwd) {
|
|
36
42
|
if (!target)
|
|
37
43
|
return null;
|
|
38
|
-
const dispatch =
|
|
44
|
+
const dispatch = dispatcher ?? dispatchWorkflowExecution;
|
|
39
45
|
return async ({ system, user }, identity) => {
|
|
40
46
|
const id = dispatchIdentity(owner, identity);
|
|
41
47
|
const commonRequest = {
|
|
@@ -52,26 +58,18 @@ export function frozenSummaryJudge(target, signal, dispatcher, owner, eventSourc
|
|
|
52
58
|
const request = {
|
|
53
59
|
...commonRequest,
|
|
54
60
|
frozenTarget: target,
|
|
61
|
+
...(cwd !== undefined ? { cwd } : {}),
|
|
55
62
|
timeoutMs: target.runner.timeoutMs ?? null,
|
|
56
63
|
...(eventSource !== undefined ? { eventSource } : {}),
|
|
57
64
|
};
|
|
58
|
-
|
|
59
|
-
// sample. The injected dispatcher may be a test seam, but it receives the
|
|
60
|
-
// exact same already-validated request and redaction declaration.
|
|
61
|
-
const lowered = prepareWorkflowExecution(request);
|
|
62
|
-
const sensitiveValues = collectWorkflowDispatchSensitiveValues({ runner: target.runner }, undefined);
|
|
63
|
-
const outcome = await dispatch({
|
|
64
|
-
...request,
|
|
65
|
-
...(sensitiveValues.length > 0 ? { sensitiveValues } : {}),
|
|
66
|
-
});
|
|
65
|
+
const outcome = await dispatch(request);
|
|
67
66
|
if (outcome.usage && id.recordTokens) {
|
|
68
67
|
id.recordTokens((outcome.usage.inputTokens ?? 0) + (outcome.usage.outputTokens ?? 0) + (outcome.usage.reasoningTokens ?? 0));
|
|
69
68
|
}
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
warnLoweringNotices(lowered.notices);
|
|
69
|
+
// The dispatcher lowers the request once, and its notices are the lowerer's own sanitized ones.
|
|
70
|
+
warnLoweringNotices(outcome.notices);
|
|
73
71
|
if (!outcome.ok) {
|
|
74
|
-
throw new Error(outcome.error || `Verification
|
|
72
|
+
throw new Error(outcome.error || `Verification judge "${target.request.target.name}" failed.`);
|
|
75
73
|
}
|
|
76
74
|
return outcome.text ?? "";
|
|
77
75
|
};
|