akm-cli 0.10.261012-beta → 0.10.261014-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +710 -3
- package/README.md +15 -0
- package/SECURITY.md +11 -10
- package/STABILITY.md +47 -51
- package/dist/assets/hints/cli-hints-full.md +21 -19
- package/dist/assets/hints/cli-hints-short.md +3 -4
- package/dist/assets/opencode/akm-plugin.js +177 -0
- package/dist/assets/stash-skeleton/README.md +1 -1
- package/dist/assets/tasks/core/improve.yml +1 -1
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +1 -1
- package/dist/assets/ui/config.js +27 -10
- package/dist/assets/workflows/workflow-template.md +2 -2
- package/dist/cli/clack.js +3 -1
- package/dist/cli/selection.js +33 -0
- package/dist/cli/shared.js +14 -1
- package/dist/cli/unknown-flags.js +6 -37
- package/dist/cli.js +69 -48
- package/dist/commands/agent/agent-dispatch.js +17 -25
- package/dist/commands/agent/contribute-cli.js +9 -8
- package/dist/commands/command/command-cli.js +4 -8
- package/dist/commands/command/command-execution.js +25 -39
- package/dist/commands/command/execution-source-loader.js +10 -14
- package/dist/commands/completions.js +1 -1
- package/dist/commands/config-cli.js +14 -5
- package/dist/commands/env/child-env.js +12 -14
- package/dist/commands/env/env-binding.js +47 -58
- package/dist/commands/env/env-cli.js +22 -24
- package/dist/commands/env/env.js +10 -58
- package/dist/commands/env/secret-cli.js +11 -29
- package/dist/commands/env/secret.js +3 -10
- package/dist/commands/health/checks.js +10 -849
- package/dist/commands/health/connections-and-harnesses-check.js +109 -0
- package/dist/commands/health/egress.js +3 -3
- package/dist/commands/health/html-report.js +9 -10
- package/dist/commands/health/plugin-staleness.js +18 -11
- package/dist/commands/health/report-view-model.js +16 -12
- package/dist/commands/health/scheduler-binary.js +1 -1
- package/dist/commands/health/semantic-search-check.js +85 -0
- package/dist/commands/health/type-directory-check.js +0 -3
- package/dist/commands/health.js +30 -42
- package/dist/commands/improve/consolidate/pair-pass.js +10 -25
- package/dist/commands/improve/consolidate.js +10 -15
- package/dist/commands/improve/distill.js +5 -17
- package/dist/commands/improve/eligibility.js +1 -3
- package/dist/commands/improve/execution.js +37 -40
- package/dist/commands/improve/extract-cli.js +6 -11
- package/dist/commands/improve/extract-prompt.js +2 -2
- package/dist/commands/improve/extract.js +67 -97
- package/dist/commands/improve/improve-cli.js +22 -128
- package/dist/commands/improve/improve-report.js +1 -1
- package/dist/commands/improve/improve-strategies.js +25 -108
- package/dist/commands/improve/improve.js +10 -14
- package/dist/commands/improve/loop-stages.js +3 -0
- package/dist/commands/improve/memory/memory-improve.js +1 -1
- package/dist/commands/improve/preparation.js +8 -13
- package/dist/commands/improve/reflect.js +203 -332
- package/dist/commands/improve/retrieval-scope.js +1 -1
- package/dist/commands/improve/session-asset.js +3 -2
- package/dist/commands/improve/stage.js +87 -115
- package/dist/commands/lint/base-linter.js +3 -3
- package/dist/commands/lint/env-key-rules.js +7 -6
- package/dist/commands/lint/index.js +3 -3
- package/dist/commands/models-cli.js +103 -63
- package/dist/commands/proposal/drain.js +26 -39
- package/dist/commands/proposal/proposal-cli.js +14 -18
- package/dist/commands/proposal/propose-cli.js +4 -2
- package/dist/commands/proposal/propose.js +37 -64
- package/dist/commands/proposal/repository.js +17 -17
- package/dist/commands/proposal/validators/proposal-validators.js +3 -6
- package/dist/commands/read/curate.js +10 -6
- package/dist/commands/read/registry-search.js +2 -48
- package/dist/commands/read/search-cli.js +1 -8
- package/dist/commands/read/search.js +5 -6
- package/dist/commands/read/show.js +6 -29
- package/dist/commands/remember.js +25 -40
- package/dist/commands/sources/add-cli.js +8 -63
- package/dist/commands/sources/bundle-cli.js +8 -9
- package/dist/commands/sources/bundle-config-ops.js +2 -2
- package/dist/commands/sources/info.js +12 -1
- package/dist/commands/sources/init.js +1 -1
- package/dist/commands/sources/installed-stashes.js +119 -63
- package/dist/commands/sources/migration-help.js +1 -1
- package/dist/commands/sources/plugin-upgrade.js +8 -15
- package/dist/commands/sources/schema-repair.js +4 -10
- package/dist/commands/sources/source-add.js +2 -2
- package/dist/commands/sources/source-clone.js +31 -7
- package/dist/commands/sources/source-manage.js +4 -4
- package/dist/commands/targets.js +175 -0
- package/dist/commands/tasks/explain.js +104 -69
- package/dist/commands/tasks/tasks-cli.js +9 -11
- package/dist/commands/tasks/tasks.js +75 -97
- package/dist/commands/ui/api.js +11 -3
- package/dist/commands/ui/redact.js +5 -31
- package/dist/commands/ui/workspace-actions.js +1 -1
- package/dist/commands/workflow/plan.js +48 -9
- package/dist/commands/workflow-cli.js +40 -45
- package/dist/core/adapter/adapters/agent-skills-adapter.js +10 -11
- package/dist/core/adapter/adapters/akm-adapter.js +36 -41
- package/dist/core/adapter/adapters/akm-lint.js +10 -12
- package/dist/core/adapter/adapters/akm-metadata.js +2 -2
- package/dist/core/adapter/adapters/akm-task-adapter.js +8 -9
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +5 -5
- package/dist/core/adapter/adapters/claude-adapter.js +1 -1
- package/dist/core/adapter/adapters/dotenv-adapter.js +7 -6
- package/dist/core/adapter/adapters/generic-files-adapter.js +5 -5
- package/dist/core/adapter/adapters/index.js +3 -4
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +12 -14
- package/dist/core/adapter/adapters/okf-adapter.js +8 -10
- package/dist/core/adapter/adapters/opencode-adapter.js +1 -1
- package/dist/core/adapter/adapters/shared.js +3 -3
- package/dist/core/adapter/adapters/tool-dir-shared.js +7 -25
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +3 -3
- package/dist/core/adapter/detect-adapter.js +1 -1
- package/dist/core/adapter/execution-source.js +13 -35
- package/dist/core/adapter/registry.js +1 -1
- package/dist/core/adapter/validate-context.js +2 -4
- package/dist/core/asset/asset-placement.js +1 -1
- package/dist/core/asset/asset-ref.js +3 -3
- package/dist/core/asset/resolve-ref.js +5 -0
- package/dist/core/bundle-rename.js +12 -4
- package/dist/core/closest-match.js +37 -0
- package/dist/core/common.js +37 -57
- package/dist/core/config/config-io.js +26 -18
- package/dist/core/config/config-schema.js +19 -106
- package/dist/core/config/config-sources.js +3 -3
- package/dist/core/config/config-types.js +4 -4
- package/dist/core/config/config-walker.js +50 -77
- package/dist/core/config/config.js +438 -109
- package/dist/core/config/convert-engine-references.js +114 -0
- package/dist/core/config/convert-engines-shared.js +40 -0
- package/dist/core/config/convert-engines.js +300 -0
- package/dist/core/config/convert-models-overlay.js +137 -0
- package/dist/core/config/credentials.js +304 -0
- package/dist/core/config/engine-semantics.js +3 -3
- package/dist/core/config/migrate-keys.js +222 -0
- package/dist/core/config/model-aliases.js +37 -0
- package/dist/core/config/models-file.js +34 -0
- package/dist/core/config/retired-engines.js +53 -0
- package/dist/core/config/schema/connections.js +41 -0
- package/dist/core/config/schema/embedding.js +2 -2
- package/dist/core/config/schema/harnesses.js +41 -0
- package/dist/core/config/schema/improve-processes.js +9 -28
- package/dist/core/config/schema/improve.js +36 -1
- package/dist/core/config/schema/index-config.js +18 -20
- package/dist/core/config/schema/primitives.js +42 -17
- package/dist/core/config/schema/search.js +6 -11
- package/dist/core/config/schema/sources-bundles.js +9 -9
- package/dist/core/config/schema/workflow.js +2 -6
- package/dist/core/config/unusable-entries.js +66 -0
- package/dist/core/content-safety.js +3 -6
- package/dist/core/endpoint-url.js +47 -0
- package/dist/core/env-secret-ref.js +84 -73
- package/dist/core/errors.js +10 -16
- package/dist/core/extra-params.js +3 -3
- package/dist/core/improve-result.js +8 -9
- package/dist/core/json-schema.js +1 -1
- package/dist/core/lesson-lint.js +1 -1
- package/dist/core/llm-inference.js +80 -0
- package/dist/core/parse.js +2 -2
- package/dist/core/paths.js +33 -10
- package/dist/core/recognition-util.js +8 -10
- package/dist/core/redaction.js +94 -55
- package/dist/core/ref-token.js +82 -0
- package/dist/core/secret-value.js +14 -0
- package/dist/core/state/migrations.js +17 -22
- package/dist/core/structured.js +2 -68
- package/dist/core/subprocess.js +63 -22
- package/dist/core/type-presentation.js +10 -14
- package/dist/core/write-source.js +20 -4
- package/dist/execution/input-contract.js +3 -6
- package/dist/execution/notices.js +49 -0
- package/dist/execution/resolved-request.js +24 -40
- package/dist/execution/source.js +21 -45
- package/dist/execution/target-ref.js +2 -2
- package/dist/indexer/bundle-identity-guard.js +6 -5
- package/dist/indexer/ensure-index.js +1 -1
- package/dist/indexer/index-writer-lock.js +1 -1
- package/dist/indexer/indexer.js +46 -42
- package/dist/indexer/installations.js +12 -22
- package/dist/indexer/lookup/adapter-concept-owner.js +40 -14
- package/dist/indexer/materialize-embeddings.js +20 -16
- package/dist/indexer/passes/memory-inference.js +21 -50
- package/dist/indexer/passes/metadata.js +5 -5
- package/dist/indexer/scan/doc-to-entry.js +1 -1
- package/dist/indexer/scan/drain-dir.js +9 -11
- package/dist/indexer/search/db-search.js +9 -7
- package/dist/indexer/search/search-source.js +42 -22
- package/dist/indexer/usage/usage-events.js +2 -3
- package/dist/indexer/walk/index-context.js +2 -1
- package/dist/indexer/walk/matchers.js +3 -11
- package/dist/indexer/walk/path-resolver.js +13 -68
- package/dist/indexer/walk/walker.js +32 -26
- package/dist/integrations/agent/akm-read-tools.js +81 -0
- package/dist/integrations/agent/config.js +1 -1
- package/dist/integrations/agent/detect.js +32 -36
- package/dist/integrations/agent/execution.js +130 -428
- package/dist/integrations/agent/index.js +1 -1
- package/dist/integrations/agent/profiles.js +24 -28
- package/dist/integrations/agent/prompts.js +17 -30
- package/dist/integrations/agent/request-lowering.js +67 -101
- package/dist/integrations/agent/resolution.js +332 -0
- package/dist/integrations/agent/runner-dispatch.js +156 -181
- package/dist/integrations/agent/runner.js +20 -70
- package/dist/integrations/agent/runtime-port.js +4 -0
- package/dist/integrations/agent/runtime.js +10 -0
- package/dist/integrations/agent/spawn.js +65 -190
- package/dist/integrations/harnesses/aider/index.js +19 -39
- package/dist/integrations/harnesses/amazonq/index.js +17 -32
- package/dist/integrations/harnesses/claude/index.js +59 -28
- package/dist/integrations/harnesses/claude/session-log.js +7 -5
- package/dist/integrations/harnesses/codex/index.js +19 -31
- package/dist/integrations/harnesses/copilot/index.js +17 -35
- package/dist/integrations/harnesses/gemini/index.js +18 -34
- package/dist/integrations/harnesses/harness.js +36 -0
- package/dist/integrations/harnesses/index.js +20 -51
- package/dist/integrations/harnesses/opencode/agent-builder.js +132 -100
- package/dist/integrations/harnesses/opencode/index.js +11 -33
- package/dist/integrations/harnesses/opencode/roots.js +50 -0
- package/dist/integrations/harnesses/opencode/runtime/binary.js +206 -0
- package/dist/integrations/harnesses/opencode/runtime/command.js +152 -0
- package/dist/integrations/harnesses/opencode/runtime/index.js +177 -0
- package/dist/integrations/harnesses/opencode/runtime/tar.js +107 -0
- package/dist/integrations/harnesses/opencode/session-log-v1.js +15 -7
- package/dist/integrations/harnesses/opencode/session-log-v2.js +72 -48
- package/dist/integrations/harnesses/opencode/session-log.js +58 -137
- package/dist/integrations/harnesses/opencode/version.js +34 -53
- package/dist/integrations/harnesses/openhands/index.js +13 -37
- package/dist/integrations/harnesses/pi/index.js +21 -32
- package/dist/integrations/lockfile.js +1 -1
- package/dist/integrations/session-logs/index.js +11 -31
- package/dist/llm/client.js +93 -111
- package/dist/llm/embedder.js +19 -34
- package/dist/llm/embedders/connection.js +31 -0
- package/dist/llm/embedders/local-model-files.js +56 -0
- package/dist/llm/embedders/local.js +146 -115
- package/dist/llm/embedders/remote.js +26 -23
- package/dist/llm/embedders/types.js +1 -1
- package/dist/llm/index-passes.js +33 -39
- package/dist/llm/memory-infer.js +67 -77
- package/dist/llm/model-list.js +35 -0
- package/dist/llm/rerank-client.js +8 -14
- package/dist/llm/structured-call.js +45 -99
- package/dist/llm/structured.js +60 -0
- package/dist/output/renderers.js +2 -8
- package/dist/output/shapes/helpers.js +18 -44
- package/dist/output/shapes/passthrough.js +1 -0
- package/dist/output/shapes.js +1 -7
- package/dist/output/text/command-format.js +41 -39
- package/dist/output/text/health-format.js +8 -2
- package/dist/output/text/helpers.js +1 -1
- package/dist/output/text/migrate.js +12 -0
- package/dist/output/text/models.js +3 -2
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +16 -28
- package/dist/output/text/show-format.js +0 -2
- package/dist/output/text/targets-table.js +70 -0
- package/dist/output/text/workflow-format.js +44 -15
- package/dist/output/text.js +1 -1
- package/dist/registry/providers/skills-sh.js +1 -28
- package/dist/registry/providers/static-index.js +1 -71
- package/dist/runtime.js +6 -2
- package/dist/scripts/akm-migrate-node.js +47095 -44905
- package/dist/scripts/akm-migrate.js +46946 -44755
- package/dist/setup/detect.js +28 -273
- package/dist/setup/endpoint.js +36 -0
- package/dist/setup/semantic-assets.js +13 -19
- package/dist/setup/setup-flags.js +77 -0
- package/dist/setup/setup-plan.js +144 -0
- package/dist/setup/setup.js +134 -358
- package/dist/setup/steps/connection-shared.js +49 -101
- package/dist/setup/steps/connection.js +121 -524
- package/dist/setup/steps/embeddings.js +151 -0
- package/dist/setup/steps/harnesses.js +118 -0
- package/dist/setup/steps/platforms.js +2 -81
- package/dist/setup/steps/tasks.js +1 -2
- package/dist/setup/steps.js +10 -0
- package/dist/setup/summary.js +67 -0
- package/dist/sources/freshness.js +16 -21
- package/dist/sources/providers/git-provider.js +2 -9
- package/dist/sources/providers/provider-utils.js +13 -5
- package/dist/sources/resolve.js +12 -16
- package/dist/sources/snapshot-fetchers/robots.js +11 -12
- package/dist/sources/snapshot-fetchers/secret-seam.js +2 -4
- package/dist/sources/snapshot-fetchers/website-ingest.js +8 -15
- package/dist/sources/snapshot-fetchers/x.js +1 -1
- package/dist/standalone/onnxruntime-library.js +52 -0
- package/dist/storage/repositories/improve-ledger-repository.js +1 -1
- package/dist/storage/repositories/improve-runs-repository.js +0 -13
- package/dist/storage/repositories/index-entries-repository.js +2 -2
- package/dist/storage/repositories/proposals-repository.js +2 -2
- package/dist/storage/repositories/task-history-repository.js +2 -2
- package/dist/storage/repositories/workflow-runs-repository.js +44 -129
- package/dist/storage/sqlite-read-snapshot.js +33 -29
- package/dist/tasks/embedded.js +1 -1
- package/dist/tasks/log-redaction.js +7 -119
- package/dist/tasks/prepare/prepare-support.js +8 -7
- package/dist/tasks/prepare/prepare.js +8 -9
- package/dist/tasks/prepare/script-capture.js +9 -25
- package/dist/tasks/run/attempt-lifecycle.js +17 -35
- package/dist/tasks/run/load-task.js +54 -27
- package/dist/tasks/run/run-command-task.js +15 -10
- package/dist/tasks/run/run-native-task.js +8 -21
- package/dist/tasks/run/run-task.js +5 -8
- package/dist/tasks/run/run-workflow-task.js +14 -21
- package/dist/tasks/run/task-history.js +9 -17
- package/dist/tasks/run/task-log.js +1 -5
- package/dist/tasks/scheduler-invocation.js +13 -18
- package/dist/tasks/scheduler-sync.js +0 -1
- package/dist/tasks/source/bounded-document.js +31 -117
- package/dist/tasks/source/parse-task-source.js +0 -1
- package/dist/tasks/source/project-v4.js +5 -3
- package/dist/tasks/source/task-input-diagnostics.js +3 -4
- package/dist/tasks/source/task-source-v4.js +48 -72
- package/dist/tasks/source-v3.js +2 -5
- package/dist/tasks/task-run-reserved-flags.js +1 -2
- package/dist/workflows/authoring/authoring.js +2 -7
- package/dist/workflows/compile.js +1 -15
- package/dist/workflows/concurrency-policy.js +4 -4
- package/dist/workflows/exec/child-workflow.js +1 -4
- package/dist/workflows/exec/dispatch-redaction.js +35 -86
- package/dist/workflows/exec/environment.js +13 -77
- package/dist/workflows/exec/exec-unit.js +14 -55
- package/dist/workflows/exec/frozen-judge.js +26 -28
- package/dist/workflows/exec/native-executor.js +126 -71
- package/dist/workflows/exec/run-workflow.js +38 -42
- package/dist/workflows/exec/step-work.js +13 -17
- package/dist/workflows/exec/unit-dispatch.js +7 -21
- package/dist/workflows/freeze/environment.js +14 -119
- package/dist/workflows/freeze/freeze.js +14 -33
- package/dist/workflows/freeze/step-values.js +6 -13
- package/dist/workflows/freeze/targets/child-workflow.js +3 -5
- package/dist/workflows/freeze/targets/command.js +9 -15
- package/dist/workflows/freeze/targets/shell.js +0 -3
- package/dist/workflows/freeze/task-bindings.js +0 -1
- package/dist/workflows/parser.js +50 -59
- package/dist/workflows/plan.js +8 -2
- package/dist/workflows/renderer.js +83 -9
- package/dist/workflows/resource-limits.js +2 -2
- package/dist/workflows/runtime/run-plan.js +38 -23
- package/dist/workflows/runtime/runs.js +55 -93
- package/dist/workflows/runtime/workflow-asset-loader.js +55 -86
- package/dist/workflows/source-files.js +7 -19
- package/docs/README.md +10 -16
- package/docs/architecture/README.md +2 -37
- package/docs/architecture/adapters.md +2 -2
- package/docs/architecture/akm-core-principles.md +256 -118
- package/docs/architecture/architecture.md +283 -99
- package/docs/architecture/improvement.md +8 -2
- package/docs/architecture/internals/classification.md +1 -3
- package/docs/architecture/internals/fresh-host-rebuild-runbook.md +7 -6
- package/docs/architecture/internals/health-advisories.md +35 -74
- package/docs/architecture/internals/improve-workflow.md +27 -26
- package/docs/architecture/internals/indexing.md +3 -3
- package/docs/architecture/internals/storage-locations.md +48 -15
- package/docs/architecture/persisted-data-compat.md +10 -6
- package/docs/architecture/specs/okf-support.md +9 -11
- package/docs/architecture/specs/ref.md +7 -9
- package/docs/architecture/testing/testing-workflow.md +172 -52
- package/docs/architecture/workflow-engine.md +51 -34
- package/docs/guides/README.md +0 -1
- package/docs/guides/author-bundles.md +15 -20
- package/docs/guides/author-workflows.md +93 -71
- package/docs/guides/bundles.md +20 -16
- package/docs/guides/discover-and-load.md +1 -1
- package/docs/guides/getting-started.md +49 -3
- package/docs/guides/improve-the-library.md +10 -4
- package/docs/guides/recipes/headless-install.md +11 -16
- package/docs/guides/run-workflows.md +29 -20
- package/docs/guides/scheduling.md +2 -2
- package/docs/guides/use-with-any-agent.md +20 -22
- package/docs/integration/bundling-akm.md +19 -9
- package/docs/maintainers/README.md +2 -6
- package/docs/maintainers/release-checklist.md +73 -126
- package/docs/migration/README.md +10 -3
- package/docs/migration/release-notes/0.10.0.md +81 -16
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +1 -1
- package/docs/migration/release-notes/0.9.0.md +1 -1
- package/docs/migration/release-notes/README.md +1 -1
- package/docs/migration/v0.9-to-v0.10.md +300 -60
- package/docs/migration/v0.9.1-to-v0.9.2.md +6 -5
- package/docs/posts/config-v2-lessons-16.md +1 -1
- package/docs/posts/llm-mode-reflect-13.md +1 -1
- package/docs/posts/release-0.6.0.md +11 -11
- package/docs/posts/release-0.8.0.md +4 -4
- package/docs/posts/workflows-vaults-09.md +1 -1
- package/docs/reference/README.md +1 -1
- package/docs/reference/asset-types.md +2 -2
- package/docs/reference/cli.md +477 -388
- package/docs/reference/configuration.md +569 -550
- package/docs/reference/data-and-telemetry.md +9 -6
- package/docs/reference/env-and-secrets.md +72 -15
- package/docs/reference/refs.md +3 -20
- package/docs/reference/registry.md +12 -38
- package/docs/reference/supported-formats.md +1 -1
- package/docs/reference/tasks.md +22 -11
- package/docs/reference/ui-api.md +14 -9
- package/docs/reference/workflow-schema.md +199 -154
- package/docs/reference/workflows.md +4 -6
- package/package.json +9 -11
- package/schemas/akm-config.json +1696 -2922
- package/schemas/akm-task.json +4 -4
- package/schemas/akm-workflow.json +36 -9
- package/ROADMAP.md +0 -112
- package/dist/assets/models.json +0 -35
- package/dist/commands/health/engine-usage.js +0 -45
- package/dist/commands/sources/dangerous-env-audit.js +0 -134
- package/dist/core/activation-policy.js +0 -67
- package/dist/core/config/schema/engines.js +0 -160
- package/dist/core/config/schema/execution.js +0 -23
- package/dist/core/spawn-env.js +0 -268
- package/dist/execution/directory-identity.js +0 -78
- package/dist/integrations/agent/builder-shared.js +0 -33
- package/dist/integrations/agent/builders.js +0 -43
- package/dist/integrations/agent/engine-fallback.js +0 -59
- package/dist/integrations/agent/engine-resolution.js +0 -333
- package/dist/integrations/agent/model-map.js +0 -475
- package/dist/integrations/harnesses/aider/agent-builder.js +0 -107
- package/dist/integrations/harnesses/aider/result-extractor.js +0 -53
- package/dist/integrations/harnesses/amazonq/agent-builder.js +0 -138
- package/dist/integrations/harnesses/amazonq/result-extractor.js +0 -48
- package/dist/integrations/harnesses/claude/agent-builder.js +0 -106
- package/dist/integrations/harnesses/claude/config-import.js +0 -67
- package/dist/integrations/harnesses/claude/result-extractor.js +0 -67
- package/dist/integrations/harnesses/codex/agent-builder.js +0 -150
- package/dist/integrations/harnesses/codex/result-extractor.js +0 -110
- package/dist/integrations/harnesses/copilot/agent-builder.js +0 -117
- package/dist/integrations/harnesses/copilot/result-extractor.js +0 -178
- package/dist/integrations/harnesses/gemini/agent-builder.js +0 -114
- package/dist/integrations/harnesses/gemini/result-extractor.js +0 -149
- package/dist/integrations/harnesses/opencode/config-import.js +0 -149
- package/dist/integrations/harnesses/opencode/model-config.js +0 -33
- package/dist/integrations/harnesses/opencode/model-work-agent.js +0 -115
- package/dist/integrations/harnesses/opencode/session-log-types.js +0 -12
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -44
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +0 -1052
- package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +0 -199
- package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +0 -254
- package/dist/integrations/harnesses/opencode-sdk/wire.js +0 -66
- package/dist/integrations/harnesses/openhands/agent-builder.js +0 -120
- package/dist/integrations/harnesses/openhands/result-extractor.js +0 -135
- package/dist/integrations/harnesses/pi/agent-builder.js +0 -89
- package/dist/integrations/harnesses/pi/result-extractor.js +0 -168
- package/dist/integrations/harnesses/shared.js +0 -18
- package/dist/integrations/harnesses/types.js +0 -55
- package/dist/llm/feature-gate.js +0 -115
- package/dist/output/shapes/models-list.js +0 -16
- package/dist/output/shapes/registry-search.js +0 -10
- package/dist/setup/detected-engines.js +0 -136
- package/dist/setup/engine-config.js +0 -97
- package/dist/setup/harness-config-import.js +0 -47
- package/dist/setup/providers.js +0 -14
- package/dist/setup/steps/semantic.js +0 -39
- package/dist/workflows/authoring/scope-key.js +0 -79
- package/dist/workflows/exec/lowering-notices.js +0 -23
- package/dist/workflows/source-semantics.js +0 -110
- package/docs/architecture/0.10-process-rules.md +0 -832
- package/docs/architecture/akm-architecture-decision-history.md +0 -2055
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +0 -550
- package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +0 -72
- package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +0 -142
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +0 -189
- package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +0 -97
- package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +0 -108
- package/docs/architecture/decisions/0006-task-source-version-routing.md +0 -124
- package/docs/architecture/decisions/0007-workflow-composition-bounds.md +0 -83
- package/docs/architecture/decisions/0008-task-binding-normalization.md +0 -88
- package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +0 -80
- package/docs/architecture/decisions/0010-driver-protocol-cut.md +0 -36
- package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +0 -125
- package/docs/architecture/decisions/README.md +0 -62
- package/docs/architecture/internals/functional-contract-patterns.md +0 -340
- package/docs/architecture/internals/registry-network-boundary.md +0 -57
- package/docs/architecture/internals/search.md +0 -248
- package/docs/architecture/reviews/env-secret-access.md +0 -319
- package/docs/architecture/runtime-boundary-design.md +0 -153
- package/docs/architecture/specs/0.9.0-close-out-plan.md +0 -361
- package/docs/architecture/specs/0.9.0-decisions.md +0 -532
- package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +0 -745
- package/docs/architecture/specs/0.9.0-open-items-register.md +0 -135
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +0 -740
- package/docs/architecture/specs/0.9.0-release-surface-review.md +0 -636
- package/docs/architecture/specs/agent-command-engine-model-design.md +0 -513
- package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +0 -501
- package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +0 -291
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +0 -2059
- package/docs/architecture/specs/di-seams-plan.md +0 -539
- package/docs/architecture/specs/driver-protocol-keep-or-cut.md +0 -275
- package/docs/architecture/specs/fact-asset-type.md +0 -142
- package/docs/architecture/specs/improve-collapse-churn-detector-design.md +0 -634
- package/docs/architecture/specs/reviews/task-workflow-unification/README.md +0 -72
- package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +0 -152
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +0 -352
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +0 -300
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +0 -402
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +0 -758
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +0 -645
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +0 -602
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +0 -74
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +0 -15
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +0 -132
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +0 -147
- package/docs/architecture/specs/stash-conventions-code-spec.md +0 -275
- package/docs/architecture/specs/stash-organization-conventions.md +0 -377
- package/docs/architecture/specs/task-workflow-format-unification.md +0 -721
- package/docs/architecture/specs/workflow-engine-buy-vs-build.md +0 -231
- package/docs/architecture/specs/workflow-format-unification.md +0 -432
- package/docs/architecture/testing/manual-testing-checklist.md +0 -3411
- package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +0 -924
- package/docs/architecture/testing/task-workflow-manual-tests.md +0 -1720
- package/docs/guides/claude-code-vs-akm-workflows.md +0 -29
- package/docs/guides/knowledge-management.md +0 -18
- package/docs/maintainers/curate-workmap.md +0 -335
- package/docs/migration/v0.5-to-v0.6.md +0 -759
- package/docs/migration/v0.7-to-v0.8.md +0 -1378
- package/docs/plans/0.9.2-agent-command-workflow-plan.md +0 -423
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/**
|
|
5
|
-
* OpenCode LLM-config importer (migrated from `setup/harness-config-import.ts`,
|
|
6
|
-
* #564).
|
|
7
|
-
*
|
|
8
|
-
* Detects an OpenCode installation (filesystem only, no network) and reads its
|
|
9
|
-
* config to extract the connection details of the user's SELECTED model. It is
|
|
10
|
-
* a pure reader, so one implementation serves OpenCode 1 and 2 configs and
|
|
11
|
-
* writes nothing into either. API key VALUES are never stored: only the name
|
|
12
|
-
* of the environment variable a `{env:NAME}` / `$NAME` reference points at.
|
|
13
|
-
* A literal key or a `{file:path}` reference yields no credential (a literal
|
|
14
|
-
* must not be copied, and akm's setup has no file-reference slot to carry it).
|
|
15
|
-
*
|
|
16
|
-
* Config shapes (checked against OpenCode 1.18.34 and 2.0.26):
|
|
17
|
-
* - files: `opencode.json` / `opencode.jsonc` in the global config dir and
|
|
18
|
-
* the project (cwd, `.opencode/`); V1 also reads a legacy `config.json`.
|
|
19
|
-
* - `model`: `"provider/model"` string (V1, and accepted by V2) or
|
|
20
|
-
* `{providerID, model}` (V2).
|
|
21
|
-
* - V1 providers: `provider.<id>.options.{baseURL,apiKey}`, `models.<k>.id`.
|
|
22
|
-
* - V2 providers: `providers.<id>.settings.{baseURL,apiKey}`, `env: [NAME]`,
|
|
23
|
-
* `models.<k>.modelID`. V2 also accepts the V1 `provider` key, so both are
|
|
24
|
-
* read per file and merged by provider id.
|
|
25
|
-
* The provider is the one `model` names. When no model is selected, or it
|
|
26
|
-
* names a provider the config does not define, nothing else is substituted.
|
|
27
|
-
*/
|
|
28
|
-
import fs from "node:fs";
|
|
29
|
-
import path from "node:path";
|
|
30
|
-
import { asNonEmptyString, asRecord, parseJsonc, toErrorMessage } from "../../../core/common.js";
|
|
31
|
-
import { warnOnce } from "../../../core/warn.js";
|
|
32
|
-
import { homeDir } from "../shared.js";
|
|
33
|
-
const asObject = asRecord;
|
|
34
|
-
const str = asNonEmptyString;
|
|
35
|
-
function configDir() {
|
|
36
|
-
const xdg = process.env.XDG_CONFIG_HOME;
|
|
37
|
-
return path.join(xdg && xdg.length > 0 ? xdg : path.join(homeDir(), ".config"), "opencode");
|
|
38
|
-
}
|
|
39
|
-
/** Config files in increasing precedence: global, explicit env overrides, then the project. */
|
|
40
|
-
function candidateFiles() {
|
|
41
|
-
const dirs = [configDir(), process.env.OPENCODE_CONFIG_DIR].filter((d) => !!d);
|
|
42
|
-
const files = [path.join(configDir(), "config.json"), path.join(homeDir(), ".opencode", "config.json")];
|
|
43
|
-
for (const dir of dirs)
|
|
44
|
-
files.push(path.join(dir, "opencode.json"), path.join(dir, "opencode.jsonc"));
|
|
45
|
-
if (process.env.OPENCODE_CONFIG)
|
|
46
|
-
files.push(process.env.OPENCODE_CONFIG);
|
|
47
|
-
const cwd = process.cwd();
|
|
48
|
-
files.push(path.join(cwd, "opencode.json"), path.join(cwd, "opencode.jsonc"), path.join(cwd, ".opencode", "config.json"), path.join(cwd, ".opencode", "opencode.json"), path.join(cwd, ".opencode", "opencode.jsonc"));
|
|
49
|
-
return [...new Set(files)];
|
|
50
|
-
}
|
|
51
|
-
/** `provider/model` or `{providerID, model}` -> the selection, or undefined when none is made. */
|
|
52
|
-
function selectedModel(model) {
|
|
53
|
-
const obj = asObject(model);
|
|
54
|
-
if (obj) {
|
|
55
|
-
const providerId = str(obj.providerID);
|
|
56
|
-
const modelKey = str(obj.model);
|
|
57
|
-
return providerId && modelKey ? { providerId, modelKey } : undefined;
|
|
58
|
-
}
|
|
59
|
-
const text = str(model);
|
|
60
|
-
const slash = text?.indexOf("/") ?? -1;
|
|
61
|
-
if (!text || slash < 1 || slash === text.length - 1)
|
|
62
|
-
return undefined;
|
|
63
|
-
return { providerId: text.slice(0, slash), modelKey: text.slice(slash + 1) };
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Add one file's providers, from both the V2 (`providers`/`settings`) and V1
|
|
67
|
-
* (`provider`/`options`) keys, into `out`: a later file's values win per field.
|
|
68
|
-
*/
|
|
69
|
-
function readProviders(raw, out) {
|
|
70
|
-
for (const [key, settingsKey] of [
|
|
71
|
-
["provider", "options"],
|
|
72
|
-
["providers", "settings"],
|
|
73
|
-
]) {
|
|
74
|
-
const map = asObject(raw[key]);
|
|
75
|
-
if (!map)
|
|
76
|
-
continue;
|
|
77
|
-
for (const [id, value] of Object.entries(map)) {
|
|
78
|
-
const p = asObject(value);
|
|
79
|
-
if (!p)
|
|
80
|
-
continue;
|
|
81
|
-
const settings = asObject(p[settingsKey]);
|
|
82
|
-
const entry = out.get(id) ?? { models: new Map() };
|
|
83
|
-
entry.baseUrl = str(settings?.baseURL) ?? str(settings?.baseUrl) ?? entry.baseUrl;
|
|
84
|
-
entry.apiKey = str(settings?.apiKey) ?? entry.apiKey;
|
|
85
|
-
if (Array.isArray(p.env))
|
|
86
|
-
entry.env = p.env.filter((e) => typeof e === "string");
|
|
87
|
-
for (const [modelKey, m] of Object.entries(asObject(p.models) ?? {})) {
|
|
88
|
-
const mo = asObject(m);
|
|
89
|
-
entry.models.set(modelKey, str(mo?.modelID) ?? str(mo?.id) ?? entry.models.get(modelKey));
|
|
90
|
-
}
|
|
91
|
-
out.set(id, entry);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/** The env var an apiKey reference names: `{env:NAME}`, `$NAME` or `${NAME}`. Literals and `{file:}` give undefined. */
|
|
96
|
-
function envVarOf(apiKey) {
|
|
97
|
-
if (!apiKey)
|
|
98
|
-
return undefined;
|
|
99
|
-
const m = /^(?:\{env:([A-Za-z_][A-Za-z0-9_]*)\}|\$\{([A-Za-z_][A-Za-z0-9_]*)\}|\$([A-Za-z_][A-Za-z0-9_]*))$/.exec(apiKey);
|
|
100
|
-
return m?.[1] ?? m?.[2] ?? m?.[3];
|
|
101
|
-
}
|
|
102
|
-
/** Imports the selected model's LLM connection from an OpenCode 1 or 2 config. */
|
|
103
|
-
export const openCodeImporter = {
|
|
104
|
-
harnessName: "OpenCode",
|
|
105
|
-
detect() {
|
|
106
|
-
return fs.existsSync(configDir()) || fs.existsSync(path.join(homeDir(), ".opencode"));
|
|
107
|
-
},
|
|
108
|
-
importConfig() {
|
|
109
|
-
let model;
|
|
110
|
-
let read = false;
|
|
111
|
-
const providers = new Map();
|
|
112
|
-
for (const filePath of candidateFiles()) {
|
|
113
|
-
let raw;
|
|
114
|
-
try {
|
|
115
|
-
if (!fs.existsSync(filePath))
|
|
116
|
-
continue;
|
|
117
|
-
raw = asObject(parseJsonc(fs.readFileSync(filePath, "utf8")));
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
warnOnce(`opencode-config-import:${filePath}`, `OpenCode config ${filePath} could not be read (${toErrorMessage(error)}); skipped.`);
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
if (!raw)
|
|
124
|
-
continue;
|
|
125
|
-
read = true;
|
|
126
|
-
if (raw.model !== undefined)
|
|
127
|
-
model = raw.model;
|
|
128
|
-
readProviders(raw, providers);
|
|
129
|
-
}
|
|
130
|
-
if (!read)
|
|
131
|
-
return null;
|
|
132
|
-
const result = { harnessName: "OpenCode" };
|
|
133
|
-
const selection = selectedModel(model);
|
|
134
|
-
if (!selection)
|
|
135
|
-
return result;
|
|
136
|
-
const entry = providers.get(selection.providerId);
|
|
137
|
-
result.provider = selection.providerId;
|
|
138
|
-
result.model = entry?.models.get(selection.modelKey) ?? selection.modelKey;
|
|
139
|
-
if (entry?.baseUrl)
|
|
140
|
-
result.baseUrl = entry.baseUrl;
|
|
141
|
-
const envVar = envVarOf(entry?.apiKey) ?? (!entry?.apiKey && entry?.env?.length === 1 ? entry.env[0] : undefined);
|
|
142
|
-
if (envVar)
|
|
143
|
-
result.apiKeyEnvVar = envVar;
|
|
144
|
-
else if (entry?.apiKey) {
|
|
145
|
-
warnOnce(`opencode-config-import:credential:${selection.providerId}`, `OpenCode provider "${selection.providerId}" has an API key that is not an environment-variable reference; it was not imported. Export the key as an environment variable and reference it there.`);
|
|
146
|
-
}
|
|
147
|
-
return result;
|
|
148
|
-
},
|
|
149
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/** The inference keys model work's agent carries as options. */
|
|
5
|
-
export const MODEL_WORK_AGENT_INFERENCE = ["temperature", "reasoningEffort", "enableThinking"];
|
|
6
|
-
const isPositiveInteger = (value) => typeof value === "number" && Number.isInteger(value) && value > 0;
|
|
7
|
-
/**
|
|
8
|
-
* Split `inference` into opencode config: `entry` for a model (its options, and
|
|
9
|
-
* its limit), and for model work `agentOptions` for the confined agent in place
|
|
10
|
-
* of the entry's options. A value of the wrong type is left out.
|
|
11
|
-
*/
|
|
12
|
-
export function opencodeInferenceConfig(inference, modelWork) {
|
|
13
|
-
const { temperature, reasoningEffort, enableThinking, maxTokens, contextLength } = inference ?? {};
|
|
14
|
-
const options = {};
|
|
15
|
-
if (typeof temperature === "number" && Number.isFinite(temperature))
|
|
16
|
-
options.temperature = temperature;
|
|
17
|
-
if (typeof reasoningEffort === "string" && reasoningEffort.length > 0)
|
|
18
|
-
options.reasoningEffort = reasoningEffort;
|
|
19
|
-
if (typeof enableThinking === "boolean") {
|
|
20
|
-
options.chat_template_kwargs = { enable_thinking: enableThinking };
|
|
21
|
-
options.enable_thinking = enableThinking;
|
|
22
|
-
}
|
|
23
|
-
const hasOptions = Object.keys(options).length > 0;
|
|
24
|
-
return {
|
|
25
|
-
entry: {
|
|
26
|
-
...(hasOptions && !modelWork ? { options } : {}),
|
|
27
|
-
...(isPositiveInteger(maxTokens) && isPositiveInteger(contextLength)
|
|
28
|
-
? { limit: { context: contextLength, output: maxTokens } }
|
|
29
|
-
: {}),
|
|
30
|
-
},
|
|
31
|
-
...(hasOptions && modelWork ? { agentOptions: options } : {}),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/**
|
|
5
|
-
* The opencode agent that runs unattended model work under the model-work
|
|
6
|
-
* tool policy (`MODEL_WORK_POLICY_ID`). The CLI builder injects it through
|
|
7
|
-
* `OPENCODE_CONFIG_CONTENT` and selects it with `--agent`; the SDK runner adds
|
|
8
|
-
* it to its server config and names it in the prompt body.
|
|
9
|
-
*
|
|
10
|
-
* What opencode 1.18.25 confines, checked against a local stub:
|
|
11
|
-
* - read, grep and glob work in the session directory and akm's primary
|
|
12
|
-
* stash, and nowhere else. edit works in the session directory only: the
|
|
13
|
-
* stash is denied, by its path without the leading slash, because opencode
|
|
14
|
-
* matches edit patterns root-relative (to the git root, when the session
|
|
15
|
-
* directory is in a repository). Write is part of the edit permission.
|
|
16
|
-
* - `akm_search` and `akm_show` are the akm-opencode plugin's read tools; its
|
|
17
|
-
* other three are denied. bash is denied: opencode matches a bash rule
|
|
18
|
-
* against the command's words only, so `akm show x > ~/stash/asset.md`
|
|
19
|
-
* would pass an `akm show *` rule and write anywhere.
|
|
20
|
-
* - every other tool is denied, `doom_loop` included (its default, `ask`,
|
|
21
|
-
* would hang a headless server). Each permission opencode knows is named,
|
|
22
|
-
* so a same-named agent in the user's config cannot re-allow one through
|
|
23
|
-
* opencode's config merge, and `*` covers the rest.
|
|
24
|
-
* The same rules also go in the top-level `permission`, so an opencode that
|
|
25
|
-
* falls back to its default agent is confined too.
|
|
26
|
-
*
|
|
27
|
-
* The agent also keeps opencode's coding-assistant defaults out of model work:
|
|
28
|
-
* - its own short `prompt` replaces the provider's coding prompt, which
|
|
29
|
-
* tells the model to search extensively; opencode appends a request's
|
|
30
|
-
* system text after it and never substitutes it;
|
|
31
|
-
* - it sets no `steps`. At its step limit opencode sends a "maximum steps"
|
|
32
|
-
* text as a trailing assistant message, which a qwen chat template (LM
|
|
33
|
-
* Studio, llama-server) renders as the start of the model's reply: LM
|
|
34
|
-
* Studio then returns nothing and llama-server returns that text as the
|
|
35
|
-
* answer. The dispatch timeout bounds a run instead;
|
|
36
|
-
* - automatic compaction is off, so a long run cannot summarize the task
|
|
37
|
-
* away.
|
|
38
|
-
*/
|
|
39
|
-
import path from "node:path";
|
|
40
|
-
import { resolveStashDir } from "../../../core/common.js";
|
|
41
|
-
import { getStateDir } from "../../../core/paths.js";
|
|
42
|
-
export const MODEL_WORK_OPENCODE_AGENT = "akm-model-work";
|
|
43
|
-
const MODEL_WORK_PROMPT = "You do one bounded task for akm. Use tools only to check what the task needs, never repeat a tool call, and reply with exactly what the task asks for.";
|
|
44
|
-
function modelWorkPermission(stash) {
|
|
45
|
-
return {
|
|
46
|
-
"*": "deny",
|
|
47
|
-
read: "allow",
|
|
48
|
-
grep: "allow",
|
|
49
|
-
glob: "allow",
|
|
50
|
-
edit: { "*": "allow", ...(stash ? { [`${stash.slice(1)}/*`]: "deny" } : {}) },
|
|
51
|
-
external_directory: {
|
|
52
|
-
...(stash ? { [`${stash}/*`]: "allow" } : {}),
|
|
53
|
-
"~/.local/share/opencode/tool-output/*": "deny",
|
|
54
|
-
},
|
|
55
|
-
akm_search: "allow",
|
|
56
|
-
akm_show: "allow",
|
|
57
|
-
akm_feedback: "deny",
|
|
58
|
-
akm_remember: "deny",
|
|
59
|
-
akm_curate: "deny",
|
|
60
|
-
bash: "deny",
|
|
61
|
-
doom_loop: "deny",
|
|
62
|
-
list: "deny",
|
|
63
|
-
lsp: "deny",
|
|
64
|
-
question: "deny",
|
|
65
|
-
skill: "deny",
|
|
66
|
-
task: "deny",
|
|
67
|
-
todowrite: "deny",
|
|
68
|
-
webfetch: "deny",
|
|
69
|
-
websearch: "deny",
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* What an opencode model-work dispatch gives the akm-opencode plugin (it comes from the user's opencode config and gives
|
|
74
|
-
* the model `akm_search` and `akm_show`): its own switches off, and its state in akm's state directory, the same for every
|
|
75
|
-
* dispatch because an SDK server outlives its dispatch. win32 has no /bin/true, so the plugin keeps its CLI there.
|
|
76
|
-
*/
|
|
77
|
-
export function modelWorkPluginEnv() {
|
|
78
|
-
return {
|
|
79
|
-
AKM_AUTO_CURATE: "0",
|
|
80
|
-
AKM_AUTO_LEARNING: "0",
|
|
81
|
-
AKM_AUTO_SKILL_PROPOSALS: "0",
|
|
82
|
-
AKM_WRITE_GATE: "off",
|
|
83
|
-
XDG_STATE_HOME: path.join(getStateDir(), "opencode-model-work"),
|
|
84
|
-
...(process.platform === "win32" ? {} : { AKM_OPENCODE_CLI: "/bin/true" }),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* The opencode config fragment that defines and confines the model-work agent.
|
|
89
|
-
* The agent carries the request's inference options (`model-config.ts`), which
|
|
90
|
-
* apply to its calls only: opencode's own calls on the same model, a title for
|
|
91
|
-
* the session, keep the model's defaults.
|
|
92
|
-
*/
|
|
93
|
-
export function modelWorkOpencodeConfig(options) {
|
|
94
|
-
let stash;
|
|
95
|
-
try {
|
|
96
|
-
stash = resolveStashDir();
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// akm has no stash here, so the agent is given no path into one.
|
|
100
|
-
}
|
|
101
|
-
const permission = modelWorkPermission(stash);
|
|
102
|
-
return {
|
|
103
|
-
permission: { ...permission },
|
|
104
|
-
compaction: { auto: false },
|
|
105
|
-
agent: {
|
|
106
|
-
[MODEL_WORK_OPENCODE_AGENT]: {
|
|
107
|
-
mode: "primary",
|
|
108
|
-
description: "akm unattended model work: read and edit inside its working directory only.",
|
|
109
|
-
prompt: MODEL_WORK_PROMPT,
|
|
110
|
-
...(options ? { options } : {}),
|
|
111
|
-
permission: { ...permission },
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
};
|
|
115
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
export function toMeta(r, sessionId) {
|
|
5
|
-
return {
|
|
6
|
-
sessionId,
|
|
7
|
-
startedAt: typeof r.time_created === "number" ? r.time_created : undefined,
|
|
8
|
-
endedAt: typeof r.time_updated === "number" ? r.time_updated : undefined,
|
|
9
|
-
projectHint: typeof r.directory === "string" && r.directory.length > 0 ? r.directory : undefined,
|
|
10
|
-
title: typeof r.title === "string" && r.title.length > 0 ? r.title : undefined,
|
|
11
|
-
};
|
|
12
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/**
|
|
5
|
-
* OpenCode SDK harness descriptor (#564).
|
|
6
|
-
*
|
|
7
|
-
* Descriptor only. The runner (`./sdk-runner`) imports `core/config`, so the
|
|
8
|
-
* registry must never load it; `agent/runner-dispatch.ts` imports it directly.
|
|
9
|
-
*/
|
|
10
|
-
import { createAgentRequestLowerer } from "../../agent/request-lowering.js";
|
|
11
|
-
import { MODEL_WORK_AGENT_INFERENCE } from "../opencode/model-config.js";
|
|
12
|
-
import { caps } from "../shared.js";
|
|
13
|
-
import { BaseHarness } from "../types.js";
|
|
14
|
-
/**
|
|
15
|
-
* OpenCode SDK (embedded-SDK dispatch path).
|
|
16
|
-
*
|
|
17
|
-
* Dispatch-only: no native session logs, but detected at setup.
|
|
18
|
-
*/
|
|
19
|
-
export class OpencodeSdkHarness extends BaseHarness {
|
|
20
|
-
id = "opencode-sdk";
|
|
21
|
-
displayName = "OpenCode SDK";
|
|
22
|
-
// ── Workflow-engine descriptor (plan §"Capability matrix", P2) ────────────
|
|
23
|
-
executionLowerer = {
|
|
24
|
-
platform: "opencode-sdk",
|
|
25
|
-
personaChannel: "native",
|
|
26
|
-
lower: createAgentRequestLowerer({
|
|
27
|
-
adapter: "opencode-sdk",
|
|
28
|
-
personaChannel: "native",
|
|
29
|
-
tools: "sdk",
|
|
30
|
-
inference: MODEL_WORK_AGENT_INFERENCE,
|
|
31
|
-
}),
|
|
32
|
-
};
|
|
33
|
-
// No flag-shaped resume: session reuse is programmatic — the SDK session id is
|
|
34
|
-
// stored opportunistically on the unit row and passed back to
|
|
35
|
-
// `session.prompt`, not replayed via a CLI flag.
|
|
36
|
-
// No `identityEnv`: the SDK runs in-process; it does not mark a child
|
|
37
|
-
// process environment with a session id of its own.
|
|
38
|
-
capabilities = caps({
|
|
39
|
-
agentDispatch: true,
|
|
40
|
-
detection: true,
|
|
41
|
-
modelWork: true,
|
|
42
|
-
nativeAgent: true,
|
|
43
|
-
});
|
|
44
|
-
}
|