akm-cli 0.10.261012-beta → 0.10.261014-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +710 -3
- package/README.md +15 -0
- package/SECURITY.md +11 -10
- package/STABILITY.md +47 -51
- package/dist/assets/hints/cli-hints-full.md +21 -19
- package/dist/assets/hints/cli-hints-short.md +3 -4
- package/dist/assets/opencode/akm-plugin.js +177 -0
- package/dist/assets/stash-skeleton/README.md +1 -1
- package/dist/assets/tasks/core/improve.yml +1 -1
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +1 -1
- package/dist/assets/ui/config.js +27 -10
- package/dist/assets/workflows/workflow-template.md +2 -2
- package/dist/cli/clack.js +3 -1
- package/dist/cli/selection.js +33 -0
- package/dist/cli/shared.js +14 -1
- package/dist/cli/unknown-flags.js +6 -37
- package/dist/cli.js +69 -48
- package/dist/commands/agent/agent-dispatch.js +17 -25
- package/dist/commands/agent/contribute-cli.js +9 -8
- package/dist/commands/command/command-cli.js +4 -8
- package/dist/commands/command/command-execution.js +25 -39
- package/dist/commands/command/execution-source-loader.js +10 -14
- package/dist/commands/completions.js +1 -1
- package/dist/commands/config-cli.js +14 -5
- package/dist/commands/env/child-env.js +12 -14
- package/dist/commands/env/env-binding.js +47 -58
- package/dist/commands/env/env-cli.js +22 -24
- package/dist/commands/env/env.js +10 -58
- package/dist/commands/env/secret-cli.js +11 -29
- package/dist/commands/env/secret.js +3 -10
- package/dist/commands/health/checks.js +10 -849
- package/dist/commands/health/connections-and-harnesses-check.js +109 -0
- package/dist/commands/health/egress.js +3 -3
- package/dist/commands/health/html-report.js +9 -10
- package/dist/commands/health/plugin-staleness.js +18 -11
- package/dist/commands/health/report-view-model.js +16 -12
- package/dist/commands/health/scheduler-binary.js +1 -1
- package/dist/commands/health/semantic-search-check.js +85 -0
- package/dist/commands/health/type-directory-check.js +0 -3
- package/dist/commands/health.js +30 -42
- package/dist/commands/improve/consolidate/pair-pass.js +10 -25
- package/dist/commands/improve/consolidate.js +10 -15
- package/dist/commands/improve/distill.js +5 -17
- package/dist/commands/improve/eligibility.js +1 -3
- package/dist/commands/improve/execution.js +37 -40
- package/dist/commands/improve/extract-cli.js +6 -11
- package/dist/commands/improve/extract-prompt.js +2 -2
- package/dist/commands/improve/extract.js +67 -97
- package/dist/commands/improve/improve-cli.js +22 -128
- package/dist/commands/improve/improve-report.js +1 -1
- package/dist/commands/improve/improve-strategies.js +25 -108
- package/dist/commands/improve/improve.js +10 -14
- package/dist/commands/improve/loop-stages.js +3 -0
- package/dist/commands/improve/memory/memory-improve.js +1 -1
- package/dist/commands/improve/preparation.js +8 -13
- package/dist/commands/improve/reflect.js +203 -332
- package/dist/commands/improve/retrieval-scope.js +1 -1
- package/dist/commands/improve/session-asset.js +3 -2
- package/dist/commands/improve/stage.js +87 -115
- package/dist/commands/lint/base-linter.js +3 -3
- package/dist/commands/lint/env-key-rules.js +7 -6
- package/dist/commands/lint/index.js +3 -3
- package/dist/commands/models-cli.js +103 -63
- package/dist/commands/proposal/drain.js +26 -39
- package/dist/commands/proposal/proposal-cli.js +14 -18
- package/dist/commands/proposal/propose-cli.js +4 -2
- package/dist/commands/proposal/propose.js +37 -64
- package/dist/commands/proposal/repository.js +17 -17
- package/dist/commands/proposal/validators/proposal-validators.js +3 -6
- package/dist/commands/read/curate.js +10 -6
- package/dist/commands/read/registry-search.js +2 -48
- package/dist/commands/read/search-cli.js +1 -8
- package/dist/commands/read/search.js +5 -6
- package/dist/commands/read/show.js +6 -29
- package/dist/commands/remember.js +25 -40
- package/dist/commands/sources/add-cli.js +8 -63
- package/dist/commands/sources/bundle-cli.js +8 -9
- package/dist/commands/sources/bundle-config-ops.js +2 -2
- package/dist/commands/sources/info.js +12 -1
- package/dist/commands/sources/init.js +1 -1
- package/dist/commands/sources/installed-stashes.js +119 -63
- package/dist/commands/sources/migration-help.js +1 -1
- package/dist/commands/sources/plugin-upgrade.js +8 -15
- package/dist/commands/sources/schema-repair.js +4 -10
- package/dist/commands/sources/source-add.js +2 -2
- package/dist/commands/sources/source-clone.js +31 -7
- package/dist/commands/sources/source-manage.js +4 -4
- package/dist/commands/targets.js +175 -0
- package/dist/commands/tasks/explain.js +104 -69
- package/dist/commands/tasks/tasks-cli.js +9 -11
- package/dist/commands/tasks/tasks.js +75 -97
- package/dist/commands/ui/api.js +11 -3
- package/dist/commands/ui/redact.js +5 -31
- package/dist/commands/ui/workspace-actions.js +1 -1
- package/dist/commands/workflow/plan.js +48 -9
- package/dist/commands/workflow-cli.js +40 -45
- package/dist/core/adapter/adapters/agent-skills-adapter.js +10 -11
- package/dist/core/adapter/adapters/akm-adapter.js +36 -41
- package/dist/core/adapter/adapters/akm-lint.js +10 -12
- package/dist/core/adapter/adapters/akm-metadata.js +2 -2
- package/dist/core/adapter/adapters/akm-task-adapter.js +8 -9
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +5 -5
- package/dist/core/adapter/adapters/claude-adapter.js +1 -1
- package/dist/core/adapter/adapters/dotenv-adapter.js +7 -6
- package/dist/core/adapter/adapters/generic-files-adapter.js +5 -5
- package/dist/core/adapter/adapters/index.js +3 -4
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +12 -14
- package/dist/core/adapter/adapters/okf-adapter.js +8 -10
- package/dist/core/adapter/adapters/opencode-adapter.js +1 -1
- package/dist/core/adapter/adapters/shared.js +3 -3
- package/dist/core/adapter/adapters/tool-dir-shared.js +7 -25
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +3 -3
- package/dist/core/adapter/detect-adapter.js +1 -1
- package/dist/core/adapter/execution-source.js +13 -35
- package/dist/core/adapter/registry.js +1 -1
- package/dist/core/adapter/validate-context.js +2 -4
- package/dist/core/asset/asset-placement.js +1 -1
- package/dist/core/asset/asset-ref.js +3 -3
- package/dist/core/asset/resolve-ref.js +5 -0
- package/dist/core/bundle-rename.js +12 -4
- package/dist/core/closest-match.js +37 -0
- package/dist/core/common.js +37 -57
- package/dist/core/config/config-io.js +26 -18
- package/dist/core/config/config-schema.js +19 -106
- package/dist/core/config/config-sources.js +3 -3
- package/dist/core/config/config-types.js +4 -4
- package/dist/core/config/config-walker.js +50 -77
- package/dist/core/config/config.js +438 -109
- package/dist/core/config/convert-engine-references.js +114 -0
- package/dist/core/config/convert-engines-shared.js +40 -0
- package/dist/core/config/convert-engines.js +300 -0
- package/dist/core/config/convert-models-overlay.js +137 -0
- package/dist/core/config/credentials.js +304 -0
- package/dist/core/config/engine-semantics.js +3 -3
- package/dist/core/config/migrate-keys.js +222 -0
- package/dist/core/config/model-aliases.js +37 -0
- package/dist/core/config/models-file.js +34 -0
- package/dist/core/config/retired-engines.js +53 -0
- package/dist/core/config/schema/connections.js +41 -0
- package/dist/core/config/schema/embedding.js +2 -2
- package/dist/core/config/schema/harnesses.js +41 -0
- package/dist/core/config/schema/improve-processes.js +9 -28
- package/dist/core/config/schema/improve.js +36 -1
- package/dist/core/config/schema/index-config.js +18 -20
- package/dist/core/config/schema/primitives.js +42 -17
- package/dist/core/config/schema/search.js +6 -11
- package/dist/core/config/schema/sources-bundles.js +9 -9
- package/dist/core/config/schema/workflow.js +2 -6
- package/dist/core/config/unusable-entries.js +66 -0
- package/dist/core/content-safety.js +3 -6
- package/dist/core/endpoint-url.js +47 -0
- package/dist/core/env-secret-ref.js +84 -73
- package/dist/core/errors.js +10 -16
- package/dist/core/extra-params.js +3 -3
- package/dist/core/improve-result.js +8 -9
- package/dist/core/json-schema.js +1 -1
- package/dist/core/lesson-lint.js +1 -1
- package/dist/core/llm-inference.js +80 -0
- package/dist/core/parse.js +2 -2
- package/dist/core/paths.js +33 -10
- package/dist/core/recognition-util.js +8 -10
- package/dist/core/redaction.js +94 -55
- package/dist/core/ref-token.js +82 -0
- package/dist/core/secret-value.js +14 -0
- package/dist/core/state/migrations.js +17 -22
- package/dist/core/structured.js +2 -68
- package/dist/core/subprocess.js +63 -22
- package/dist/core/type-presentation.js +10 -14
- package/dist/core/write-source.js +20 -4
- package/dist/execution/input-contract.js +3 -6
- package/dist/execution/notices.js +49 -0
- package/dist/execution/resolved-request.js +24 -40
- package/dist/execution/source.js +21 -45
- package/dist/execution/target-ref.js +2 -2
- package/dist/indexer/bundle-identity-guard.js +6 -5
- package/dist/indexer/ensure-index.js +1 -1
- package/dist/indexer/index-writer-lock.js +1 -1
- package/dist/indexer/indexer.js +46 -42
- package/dist/indexer/installations.js +12 -22
- package/dist/indexer/lookup/adapter-concept-owner.js +40 -14
- package/dist/indexer/materialize-embeddings.js +20 -16
- package/dist/indexer/passes/memory-inference.js +21 -50
- package/dist/indexer/passes/metadata.js +5 -5
- package/dist/indexer/scan/doc-to-entry.js +1 -1
- package/dist/indexer/scan/drain-dir.js +9 -11
- package/dist/indexer/search/db-search.js +9 -7
- package/dist/indexer/search/search-source.js +42 -22
- package/dist/indexer/usage/usage-events.js +2 -3
- package/dist/indexer/walk/index-context.js +2 -1
- package/dist/indexer/walk/matchers.js +3 -11
- package/dist/indexer/walk/path-resolver.js +13 -68
- package/dist/indexer/walk/walker.js +32 -26
- package/dist/integrations/agent/akm-read-tools.js +81 -0
- package/dist/integrations/agent/config.js +1 -1
- package/dist/integrations/agent/detect.js +32 -36
- package/dist/integrations/agent/execution.js +130 -428
- package/dist/integrations/agent/index.js +1 -1
- package/dist/integrations/agent/profiles.js +24 -28
- package/dist/integrations/agent/prompts.js +17 -30
- package/dist/integrations/agent/request-lowering.js +67 -101
- package/dist/integrations/agent/resolution.js +332 -0
- package/dist/integrations/agent/runner-dispatch.js +156 -181
- package/dist/integrations/agent/runner.js +20 -70
- package/dist/integrations/agent/runtime-port.js +4 -0
- package/dist/integrations/agent/runtime.js +10 -0
- package/dist/integrations/agent/spawn.js +65 -190
- package/dist/integrations/harnesses/aider/index.js +19 -39
- package/dist/integrations/harnesses/amazonq/index.js +17 -32
- package/dist/integrations/harnesses/claude/index.js +59 -28
- package/dist/integrations/harnesses/claude/session-log.js +7 -5
- package/dist/integrations/harnesses/codex/index.js +19 -31
- package/dist/integrations/harnesses/copilot/index.js +17 -35
- package/dist/integrations/harnesses/gemini/index.js +18 -34
- package/dist/integrations/harnesses/harness.js +36 -0
- package/dist/integrations/harnesses/index.js +20 -51
- package/dist/integrations/harnesses/opencode/agent-builder.js +132 -100
- package/dist/integrations/harnesses/opencode/index.js +11 -33
- package/dist/integrations/harnesses/opencode/roots.js +50 -0
- package/dist/integrations/harnesses/opencode/runtime/binary.js +206 -0
- package/dist/integrations/harnesses/opencode/runtime/command.js +152 -0
- package/dist/integrations/harnesses/opencode/runtime/index.js +177 -0
- package/dist/integrations/harnesses/opencode/runtime/tar.js +107 -0
- package/dist/integrations/harnesses/opencode/session-log-v1.js +15 -7
- package/dist/integrations/harnesses/opencode/session-log-v2.js +72 -48
- package/dist/integrations/harnesses/opencode/session-log.js +58 -137
- package/dist/integrations/harnesses/opencode/version.js +34 -53
- package/dist/integrations/harnesses/openhands/index.js +13 -37
- package/dist/integrations/harnesses/pi/index.js +21 -32
- package/dist/integrations/lockfile.js +1 -1
- package/dist/integrations/session-logs/index.js +11 -31
- package/dist/llm/client.js +93 -111
- package/dist/llm/embedder.js +19 -34
- package/dist/llm/embedders/connection.js +31 -0
- package/dist/llm/embedders/local-model-files.js +56 -0
- package/dist/llm/embedders/local.js +146 -115
- package/dist/llm/embedders/remote.js +26 -23
- package/dist/llm/embedders/types.js +1 -1
- package/dist/llm/index-passes.js +33 -39
- package/dist/llm/memory-infer.js +67 -77
- package/dist/llm/model-list.js +35 -0
- package/dist/llm/rerank-client.js +8 -14
- package/dist/llm/structured-call.js +45 -99
- package/dist/llm/structured.js +60 -0
- package/dist/output/renderers.js +2 -8
- package/dist/output/shapes/helpers.js +18 -44
- package/dist/output/shapes/passthrough.js +1 -0
- package/dist/output/shapes.js +1 -7
- package/dist/output/text/command-format.js +41 -39
- package/dist/output/text/health-format.js +8 -2
- package/dist/output/text/helpers.js +1 -1
- package/dist/output/text/migrate.js +12 -0
- package/dist/output/text/models.js +3 -2
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +16 -28
- package/dist/output/text/show-format.js +0 -2
- package/dist/output/text/targets-table.js +70 -0
- package/dist/output/text/workflow-format.js +44 -15
- package/dist/output/text.js +1 -1
- package/dist/registry/providers/skills-sh.js +1 -28
- package/dist/registry/providers/static-index.js +1 -71
- package/dist/runtime.js +6 -2
- package/dist/scripts/akm-migrate-node.js +47095 -44905
- package/dist/scripts/akm-migrate.js +46946 -44755
- package/dist/setup/detect.js +28 -273
- package/dist/setup/endpoint.js +36 -0
- package/dist/setup/semantic-assets.js +13 -19
- package/dist/setup/setup-flags.js +77 -0
- package/dist/setup/setup-plan.js +144 -0
- package/dist/setup/setup.js +134 -358
- package/dist/setup/steps/connection-shared.js +49 -101
- package/dist/setup/steps/connection.js +121 -524
- package/dist/setup/steps/embeddings.js +151 -0
- package/dist/setup/steps/harnesses.js +118 -0
- package/dist/setup/steps/platforms.js +2 -81
- package/dist/setup/steps/tasks.js +1 -2
- package/dist/setup/steps.js +10 -0
- package/dist/setup/summary.js +67 -0
- package/dist/sources/freshness.js +16 -21
- package/dist/sources/providers/git-provider.js +2 -9
- package/dist/sources/providers/provider-utils.js +13 -5
- package/dist/sources/resolve.js +12 -16
- package/dist/sources/snapshot-fetchers/robots.js +11 -12
- package/dist/sources/snapshot-fetchers/secret-seam.js +2 -4
- package/dist/sources/snapshot-fetchers/website-ingest.js +8 -15
- package/dist/sources/snapshot-fetchers/x.js +1 -1
- package/dist/standalone/onnxruntime-library.js +52 -0
- package/dist/storage/repositories/improve-ledger-repository.js +1 -1
- package/dist/storage/repositories/improve-runs-repository.js +0 -13
- package/dist/storage/repositories/index-entries-repository.js +2 -2
- package/dist/storage/repositories/proposals-repository.js +2 -2
- package/dist/storage/repositories/task-history-repository.js +2 -2
- package/dist/storage/repositories/workflow-runs-repository.js +44 -129
- package/dist/storage/sqlite-read-snapshot.js +33 -29
- package/dist/tasks/embedded.js +1 -1
- package/dist/tasks/log-redaction.js +7 -119
- package/dist/tasks/prepare/prepare-support.js +8 -7
- package/dist/tasks/prepare/prepare.js +8 -9
- package/dist/tasks/prepare/script-capture.js +9 -25
- package/dist/tasks/run/attempt-lifecycle.js +17 -35
- package/dist/tasks/run/load-task.js +54 -27
- package/dist/tasks/run/run-command-task.js +15 -10
- package/dist/tasks/run/run-native-task.js +8 -21
- package/dist/tasks/run/run-task.js +5 -8
- package/dist/tasks/run/run-workflow-task.js +14 -21
- package/dist/tasks/run/task-history.js +9 -17
- package/dist/tasks/run/task-log.js +1 -5
- package/dist/tasks/scheduler-invocation.js +13 -18
- package/dist/tasks/scheduler-sync.js +0 -1
- package/dist/tasks/source/bounded-document.js +31 -117
- package/dist/tasks/source/parse-task-source.js +0 -1
- package/dist/tasks/source/project-v4.js +5 -3
- package/dist/tasks/source/task-input-diagnostics.js +3 -4
- package/dist/tasks/source/task-source-v4.js +48 -72
- package/dist/tasks/source-v3.js +2 -5
- package/dist/tasks/task-run-reserved-flags.js +1 -2
- package/dist/workflows/authoring/authoring.js +2 -7
- package/dist/workflows/compile.js +1 -15
- package/dist/workflows/concurrency-policy.js +4 -4
- package/dist/workflows/exec/child-workflow.js +1 -4
- package/dist/workflows/exec/dispatch-redaction.js +35 -86
- package/dist/workflows/exec/environment.js +13 -77
- package/dist/workflows/exec/exec-unit.js +14 -55
- package/dist/workflows/exec/frozen-judge.js +26 -28
- package/dist/workflows/exec/native-executor.js +126 -71
- package/dist/workflows/exec/run-workflow.js +38 -42
- package/dist/workflows/exec/step-work.js +13 -17
- package/dist/workflows/exec/unit-dispatch.js +7 -21
- package/dist/workflows/freeze/environment.js +14 -119
- package/dist/workflows/freeze/freeze.js +14 -33
- package/dist/workflows/freeze/step-values.js +6 -13
- package/dist/workflows/freeze/targets/child-workflow.js +3 -5
- package/dist/workflows/freeze/targets/command.js +9 -15
- package/dist/workflows/freeze/targets/shell.js +0 -3
- package/dist/workflows/freeze/task-bindings.js +0 -1
- package/dist/workflows/parser.js +50 -59
- package/dist/workflows/plan.js +8 -2
- package/dist/workflows/renderer.js +83 -9
- package/dist/workflows/resource-limits.js +2 -2
- package/dist/workflows/runtime/run-plan.js +38 -23
- package/dist/workflows/runtime/runs.js +55 -93
- package/dist/workflows/runtime/workflow-asset-loader.js +55 -86
- package/dist/workflows/source-files.js +7 -19
- package/docs/README.md +10 -16
- package/docs/architecture/README.md +2 -37
- package/docs/architecture/adapters.md +2 -2
- package/docs/architecture/akm-core-principles.md +256 -118
- package/docs/architecture/architecture.md +283 -99
- package/docs/architecture/improvement.md +8 -2
- package/docs/architecture/internals/classification.md +1 -3
- package/docs/architecture/internals/fresh-host-rebuild-runbook.md +7 -6
- package/docs/architecture/internals/health-advisories.md +35 -74
- package/docs/architecture/internals/improve-workflow.md +27 -26
- package/docs/architecture/internals/indexing.md +3 -3
- package/docs/architecture/internals/storage-locations.md +48 -15
- package/docs/architecture/persisted-data-compat.md +10 -6
- package/docs/architecture/specs/okf-support.md +9 -11
- package/docs/architecture/specs/ref.md +7 -9
- package/docs/architecture/testing/testing-workflow.md +172 -52
- package/docs/architecture/workflow-engine.md +51 -34
- package/docs/guides/README.md +0 -1
- package/docs/guides/author-bundles.md +15 -20
- package/docs/guides/author-workflows.md +93 -71
- package/docs/guides/bundles.md +20 -16
- package/docs/guides/discover-and-load.md +1 -1
- package/docs/guides/getting-started.md +49 -3
- package/docs/guides/improve-the-library.md +10 -4
- package/docs/guides/recipes/headless-install.md +11 -16
- package/docs/guides/run-workflows.md +29 -20
- package/docs/guides/scheduling.md +2 -2
- package/docs/guides/use-with-any-agent.md +20 -22
- package/docs/integration/bundling-akm.md +19 -9
- package/docs/maintainers/README.md +2 -6
- package/docs/maintainers/release-checklist.md +73 -126
- package/docs/migration/README.md +10 -3
- package/docs/migration/release-notes/0.10.0.md +81 -16
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +1 -1
- package/docs/migration/release-notes/0.9.0.md +1 -1
- package/docs/migration/release-notes/README.md +1 -1
- package/docs/migration/v0.9-to-v0.10.md +300 -60
- package/docs/migration/v0.9.1-to-v0.9.2.md +6 -5
- package/docs/posts/config-v2-lessons-16.md +1 -1
- package/docs/posts/llm-mode-reflect-13.md +1 -1
- package/docs/posts/release-0.6.0.md +11 -11
- package/docs/posts/release-0.8.0.md +4 -4
- package/docs/posts/workflows-vaults-09.md +1 -1
- package/docs/reference/README.md +1 -1
- package/docs/reference/asset-types.md +2 -2
- package/docs/reference/cli.md +477 -388
- package/docs/reference/configuration.md +569 -550
- package/docs/reference/data-and-telemetry.md +9 -6
- package/docs/reference/env-and-secrets.md +72 -15
- package/docs/reference/refs.md +3 -20
- package/docs/reference/registry.md +12 -38
- package/docs/reference/supported-formats.md +1 -1
- package/docs/reference/tasks.md +22 -11
- package/docs/reference/ui-api.md +14 -9
- package/docs/reference/workflow-schema.md +199 -154
- package/docs/reference/workflows.md +4 -6
- package/package.json +9 -11
- package/schemas/akm-config.json +1696 -2922
- package/schemas/akm-task.json +4 -4
- package/schemas/akm-workflow.json +36 -9
- package/ROADMAP.md +0 -112
- package/dist/assets/models.json +0 -35
- package/dist/commands/health/engine-usage.js +0 -45
- package/dist/commands/sources/dangerous-env-audit.js +0 -134
- package/dist/core/activation-policy.js +0 -67
- package/dist/core/config/schema/engines.js +0 -160
- package/dist/core/config/schema/execution.js +0 -23
- package/dist/core/spawn-env.js +0 -268
- package/dist/execution/directory-identity.js +0 -78
- package/dist/integrations/agent/builder-shared.js +0 -33
- package/dist/integrations/agent/builders.js +0 -43
- package/dist/integrations/agent/engine-fallback.js +0 -59
- package/dist/integrations/agent/engine-resolution.js +0 -333
- package/dist/integrations/agent/model-map.js +0 -475
- package/dist/integrations/harnesses/aider/agent-builder.js +0 -107
- package/dist/integrations/harnesses/aider/result-extractor.js +0 -53
- package/dist/integrations/harnesses/amazonq/agent-builder.js +0 -138
- package/dist/integrations/harnesses/amazonq/result-extractor.js +0 -48
- package/dist/integrations/harnesses/claude/agent-builder.js +0 -106
- package/dist/integrations/harnesses/claude/config-import.js +0 -67
- package/dist/integrations/harnesses/claude/result-extractor.js +0 -67
- package/dist/integrations/harnesses/codex/agent-builder.js +0 -150
- package/dist/integrations/harnesses/codex/result-extractor.js +0 -110
- package/dist/integrations/harnesses/copilot/agent-builder.js +0 -117
- package/dist/integrations/harnesses/copilot/result-extractor.js +0 -178
- package/dist/integrations/harnesses/gemini/agent-builder.js +0 -114
- package/dist/integrations/harnesses/gemini/result-extractor.js +0 -149
- package/dist/integrations/harnesses/opencode/config-import.js +0 -149
- package/dist/integrations/harnesses/opencode/model-config.js +0 -33
- package/dist/integrations/harnesses/opencode/model-work-agent.js +0 -115
- package/dist/integrations/harnesses/opencode/session-log-types.js +0 -12
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -44
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +0 -1052
- package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +0 -199
- package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +0 -254
- package/dist/integrations/harnesses/opencode-sdk/wire.js +0 -66
- package/dist/integrations/harnesses/openhands/agent-builder.js +0 -120
- package/dist/integrations/harnesses/openhands/result-extractor.js +0 -135
- package/dist/integrations/harnesses/pi/agent-builder.js +0 -89
- package/dist/integrations/harnesses/pi/result-extractor.js +0 -168
- package/dist/integrations/harnesses/shared.js +0 -18
- package/dist/integrations/harnesses/types.js +0 -55
- package/dist/llm/feature-gate.js +0 -115
- package/dist/output/shapes/models-list.js +0 -16
- package/dist/output/shapes/registry-search.js +0 -10
- package/dist/setup/detected-engines.js +0 -136
- package/dist/setup/engine-config.js +0 -97
- package/dist/setup/harness-config-import.js +0 -47
- package/dist/setup/providers.js +0 -14
- package/dist/setup/steps/semantic.js +0 -39
- package/dist/workflows/authoring/scope-key.js +0 -79
- package/dist/workflows/exec/lowering-notices.js +0 -23
- package/dist/workflows/source-semantics.js +0 -110
- package/docs/architecture/0.10-process-rules.md +0 -832
- package/docs/architecture/akm-architecture-decision-history.md +0 -2055
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +0 -550
- package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +0 -72
- package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +0 -142
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +0 -189
- package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +0 -97
- package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +0 -108
- package/docs/architecture/decisions/0006-task-source-version-routing.md +0 -124
- package/docs/architecture/decisions/0007-workflow-composition-bounds.md +0 -83
- package/docs/architecture/decisions/0008-task-binding-normalization.md +0 -88
- package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +0 -80
- package/docs/architecture/decisions/0010-driver-protocol-cut.md +0 -36
- package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +0 -125
- package/docs/architecture/decisions/README.md +0 -62
- package/docs/architecture/internals/functional-contract-patterns.md +0 -340
- package/docs/architecture/internals/registry-network-boundary.md +0 -57
- package/docs/architecture/internals/search.md +0 -248
- package/docs/architecture/reviews/env-secret-access.md +0 -319
- package/docs/architecture/runtime-boundary-design.md +0 -153
- package/docs/architecture/specs/0.9.0-close-out-plan.md +0 -361
- package/docs/architecture/specs/0.9.0-decisions.md +0 -532
- package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +0 -745
- package/docs/architecture/specs/0.9.0-open-items-register.md +0 -135
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +0 -740
- package/docs/architecture/specs/0.9.0-release-surface-review.md +0 -636
- package/docs/architecture/specs/agent-command-engine-model-design.md +0 -513
- package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +0 -501
- package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +0 -291
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +0 -2059
- package/docs/architecture/specs/di-seams-plan.md +0 -539
- package/docs/architecture/specs/driver-protocol-keep-or-cut.md +0 -275
- package/docs/architecture/specs/fact-asset-type.md +0 -142
- package/docs/architecture/specs/improve-collapse-churn-detector-design.md +0 -634
- package/docs/architecture/specs/reviews/task-workflow-unification/README.md +0 -72
- package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +0 -152
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +0 -352
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +0 -300
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +0 -402
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +0 -758
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +0 -645
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +0 -602
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +0 -27
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +0 -74
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +0 -15
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +0 -132
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +0 -147
- package/docs/architecture/specs/stash-conventions-code-spec.md +0 -275
- package/docs/architecture/specs/stash-organization-conventions.md +0 -377
- package/docs/architecture/specs/task-workflow-format-unification.md +0 -721
- package/docs/architecture/specs/workflow-engine-buy-vs-build.md +0 -231
- package/docs/architecture/specs/workflow-format-unification.md +0 -432
- package/docs/architecture/testing/manual-testing-checklist.md +0 -3411
- package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +0 -924
- package/docs/architecture/testing/task-workflow-manual-tests.md +0 -1720
- package/docs/guides/claude-code-vs-akm-workflows.md +0 -29
- package/docs/guides/knowledge-management.md +0 -18
- package/docs/maintainers/curate-workmap.md +0 -335
- package/docs/migration/v0.5-to-v0.6.md +0 -759
- package/docs/migration/v0.7-to-v0.8.md +0 -1378
- package/docs/plans/0.9.2-agent-command-workflow-plan.md +0 -423
|
@@ -2,42 +2,25 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
|
-
* Which OpenCode major
|
|
5
|
+
* Which OpenCode major an installed `opencode` binary is.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* The opencode harness runs the installed binary through its CLI for both majors;
|
|
8
|
+
* the binary's major decides the flags (`./agent-builder.ts`). Plugin upgrades also
|
|
9
|
+
* ask it, to refresh a plugin cache with the major that owns it.
|
|
10
10
|
* {@link detectOpencodeMajor} runs `<bin> --version` once per binary per process.
|
|
11
|
-
*
|
|
12
|
-
* - Major 1: OpenCode 1 adapters, plus a one-time warning recommending OpenCode 2.
|
|
13
|
-
* - Major 2: OpenCode 2 adapters.
|
|
14
|
-
* - Anything else, or a `--version` that fails or cannot be parsed: the newest
|
|
15
|
-
* adapters akm knows (OpenCode 2) and a one-time warning with the raw output.
|
|
16
|
-
* Detection never aborts; the dispatch reports whatever real error the binary
|
|
17
|
-
* produces.
|
|
18
|
-
*
|
|
19
|
-
* PATH lookups are memoized too: PATH does not change inside a process, and
|
|
20
|
-
* every dispatch asks for the same one or two binaries.
|
|
21
11
|
*/
|
|
22
|
-
import childProcess from "node:child_process";
|
|
23
12
|
import { warnOnce } from "../../../core/warn.js";
|
|
24
|
-
import { defaultWhich } from "../../agent/detect.js";
|
|
25
|
-
|
|
13
|
+
import { defaultWhich, probeVersion } from "../../agent/detect.js";
|
|
14
|
+
/**
|
|
15
|
+
* The OpenCode CLI binary: the opencode harness runs it and asks it for its major,
|
|
16
|
+
* and plugin upgrades refresh OpenCode's plugin caches with it. akm's own runtime
|
|
17
|
+
* does not use it: it runs a binary of its own (`./runtime/binary.ts`).
|
|
18
|
+
*/
|
|
19
|
+
export const OPENCODE_BIN = "opencode";
|
|
26
20
|
/** OpenCode 2's own alias for its binary; it can sit next to an OpenCode 1 `opencode` on PATH. */
|
|
27
|
-
|
|
21
|
+
const OPENCODE2_BIN = "opencode2";
|
|
28
22
|
const VERSION_TIMEOUT_MS = 30_000;
|
|
29
|
-
const defaultProbe = (bin) =>
|
|
30
|
-
const result = childProcess.spawnSync(bin, ["--version"], {
|
|
31
|
-
encoding: "utf8",
|
|
32
|
-
env: process.env,
|
|
33
|
-
stdio: "pipe",
|
|
34
|
-
timeout: VERSION_TIMEOUT_MS,
|
|
35
|
-
killSignal: "SIGKILL",
|
|
36
|
-
});
|
|
37
|
-
if (result.error || result.status !== 0)
|
|
38
|
-
return undefined;
|
|
39
|
-
return (result.stdout ?? "").trim();
|
|
40
|
-
};
|
|
23
|
+
const defaultProbe = (bin) => probeVersion(bin, VERSION_TIMEOUT_MS);
|
|
41
24
|
let probeOverride;
|
|
42
25
|
const detected = new Map();
|
|
43
26
|
const onPath = new Map();
|
|
@@ -47,48 +30,42 @@ export function _setOpencodeVersionProbeForTests(fake) {
|
|
|
47
30
|
detected.clear();
|
|
48
31
|
onPath.clear();
|
|
49
32
|
}
|
|
50
|
-
/** `which`, memoized for the process
|
|
51
|
-
function lookup(bin
|
|
52
|
-
if (which)
|
|
53
|
-
return which(bin) ?? undefined;
|
|
33
|
+
/** `which`, memoized for the process. */
|
|
34
|
+
function lookup(bin) {
|
|
54
35
|
if (!onPath.has(bin))
|
|
55
36
|
onPath.set(bin, defaultWhich(bin));
|
|
56
37
|
return onPath.get(bin);
|
|
57
38
|
}
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
39
|
+
/**
|
|
40
|
+
* The major in `opencode --version` output (`1.18.34`, `opencode v2.0.26`), or
|
|
41
|
+
* undefined when the output is not an OpenCode version (another program's
|
|
42
|
+
* `--version`, such as `true (GNU coreutils) 9.7`).
|
|
43
|
+
*/
|
|
44
|
+
function parseOpencodeMajor(versionOutput) {
|
|
45
|
+
const match = versionOutput.trim().match(/^(?:opencode\s+)?v?(\d+)\.\d+(?:\.\d+)?(?:[-+.\w]*)$/im);
|
|
61
46
|
return match ? Number(match[1]) : undefined;
|
|
62
47
|
}
|
|
63
48
|
/**
|
|
64
|
-
* The binary
|
|
65
|
-
*
|
|
49
|
+
* The binary plugin upgrade refreshes OpenCode 2's plugin cache with: the most
|
|
50
|
+
* recent OpenCode on PATH (`opencode2` when present, else `opencode`). The harness
|
|
51
|
+
* itself runs `opencode`, or the `bin` its config names.
|
|
66
52
|
*/
|
|
67
|
-
export function resolveOpencodeBin(
|
|
68
|
-
|
|
69
|
-
return explicitBin;
|
|
70
|
-
return lookup(OPENCODE2_BIN, which) ? OPENCODE2_BIN : OPENCODE_SDK_SERVER_BIN;
|
|
53
|
+
export function resolveOpencodeBin() {
|
|
54
|
+
return lookup(OPENCODE2_BIN) ? OPENCODE2_BIN : OPENCODE_BIN;
|
|
71
55
|
}
|
|
72
56
|
/** Detect the OpenCode major of `bin`: one `--version` run per binary per process. */
|
|
73
|
-
export function detectOpencodeMajor(bin
|
|
74
|
-
const path = lookup(bin
|
|
57
|
+
export function detectOpencodeMajor(bin) {
|
|
58
|
+
const path = lookup(bin) ?? bin;
|
|
75
59
|
const cached = detected.get(path);
|
|
76
60
|
if (cached)
|
|
77
61
|
return cached;
|
|
78
|
-
const raw = (
|
|
62
|
+
const raw = (probeOverride ?? defaultProbe)(path);
|
|
79
63
|
const version = raw ?? "";
|
|
80
64
|
const reportedMajor = raw === undefined ? undefined : parseOpencodeMajor(raw);
|
|
81
|
-
const major = reportedMajor === 1 ? 1 : 2;
|
|
82
65
|
if (reportedMajor === 1) {
|
|
83
66
|
warnOnce(`opencode-version:${path}`, `${path} is OpenCode ${version}. OpenCode 1 support continues, but upgrading to OpenCode 2 is recommended.`);
|
|
84
67
|
}
|
|
85
|
-
else if (reportedMajor !== 2) {
|
|
86
|
-
warnOnce(`opencode-version:${path}`, raw === undefined
|
|
87
|
-
? `Could not run \`${path} --version\`, so its OpenCode major is unknown; treating it as OpenCode 2.`
|
|
88
|
-
: `${path} reported an unrecognized OpenCode version (${JSON.stringify(raw)}); treating it as OpenCode 2.`);
|
|
89
|
-
}
|
|
90
68
|
const info = {
|
|
91
|
-
major,
|
|
92
69
|
...(reportedMajor !== undefined ? { reportedMajor } : {}),
|
|
93
70
|
version,
|
|
94
71
|
runnable: raw !== undefined,
|
|
@@ -96,3 +73,7 @@ export function detectOpencodeMajor(bin, options = {}) {
|
|
|
96
73
|
detected.set(path, info);
|
|
97
74
|
return info;
|
|
98
75
|
}
|
|
76
|
+
/** Whether `bin` is OpenCode 2 or later: its CLI takes the flags the builder passes. A binary whose version cannot be read counts as OpenCode 1. */
|
|
77
|
+
export function isOpencode2(bin) {
|
|
78
|
+
return (detectOpencodeMajor(bin).reportedMajor ?? 0) >= 2;
|
|
79
|
+
}
|
|
@@ -1,43 +1,19 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* Per-harness barrel gathering the OpenHands integration surfaces:
|
|
8
|
-
* - agent command builder → ./agent-builder.ts (openhandsBuilder)
|
|
9
|
-
* - result extractor → ./result-extractor.ts (openhandsResultExtractor)
|
|
10
|
-
*
|
|
11
|
-
* It also defines {@link OpenhandsHarness}, the {@link AkmHarness} descriptor
|
|
12
|
-
* that `HARNESS_REGISTRY` registers. Dispatch-only: no native session-log
|
|
13
|
-
* reader or config importer yet.
|
|
14
|
-
*/
|
|
15
|
-
import { caps } from "../shared.js";
|
|
16
|
-
import { BaseHarness } from "../types.js";
|
|
17
|
-
import { openhandsBuilder } from "./agent-builder.js";
|
|
18
|
-
import { openhandsResultExtractor } from "./result-extractor.js";
|
|
19
|
-
export { OPENHANDS_MODEL_ENV, OPENHANDS_PLATFORM, openhandsBuilder } from "./agent-builder.js";
|
|
20
|
-
export { openhandsResultExtractor } from "./result-extractor.js";
|
|
21
|
-
/**
|
|
22
|
-
* OpenHands CLI.
|
|
23
|
-
*
|
|
24
|
-
* Canonical id is `'openhands'`; no alias or distinct runtime identity.
|
|
25
|
-
*/
|
|
26
|
-
export class OpenhandsHarness extends BaseHarness {
|
|
4
|
+
/** The environment variable OpenHands reads its model from. */
|
|
5
|
+
const MODEL_ENV = "LLM_MODEL";
|
|
6
|
+
export class OpenhandsHarness {
|
|
27
7
|
id = "openhands";
|
|
28
8
|
displayName = "OpenHands";
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
capabilities = caps({
|
|
40
|
-
agentDispatch: true,
|
|
41
|
-
detection: true,
|
|
42
|
-
});
|
|
9
|
+
profile = { bin: "openhands", args: [] };
|
|
10
|
+
systemPrompt = false;
|
|
11
|
+
nativeAgent = false;
|
|
12
|
+
confinable = false;
|
|
13
|
+
build({ bin, args }, req) {
|
|
14
|
+
const argv = [bin, ...args];
|
|
15
|
+
if (req.prompt !== undefined)
|
|
16
|
+
argv.push("--headless", `--task=${req.prompt}`);
|
|
17
|
+
return { argv, ...(req.model ? { env: { [MODEL_ENV]: req.model } } : {}) };
|
|
18
|
+
}
|
|
43
19
|
}
|
|
@@ -2,39 +2,28 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
/**
|
|
5
|
-
* Pi coding-agent CLI
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - result extractor → ./result-extractor.ts (piResultExtractor)
|
|
10
|
-
*
|
|
11
|
-
* It also defines {@link PiHarness}, the {@link AkmHarness} descriptor that
|
|
12
|
-
* `HARNESS_REGISTRY` registers. Dispatch-only: no native session-log reader or
|
|
13
|
-
* config importer yet.
|
|
5
|
+
* Pi coding-agent CLI (`pi`). `-p` is its print mode, and it reads the message from
|
|
6
|
+
* piped stdin: as an argument a prompt that starts with `-`, `--` or `@` is taken as an
|
|
7
|
+
* option or a file include. The persona is appended to pi's own system prompt, which
|
|
8
|
+
* is the one that explains pi's tools.
|
|
14
9
|
*/
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
import { piBuilder } from "./agent-builder.js";
|
|
18
|
-
import { piResultExtractor } from "./result-extractor.js";
|
|
19
|
-
export { PI_PLATFORM, piBuilder } from "./agent-builder.js";
|
|
20
|
-
export { piResultExtractor } from "./result-extractor.js";
|
|
21
|
-
/**
|
|
22
|
-
* Pi coding-agent CLI.
|
|
23
|
-
*
|
|
24
|
-
* Canonical id is `'pi'`; no alias or distinct runtime identity.
|
|
25
|
-
*/
|
|
26
|
-
export class PiHarness extends BaseHarness {
|
|
10
|
+
import { withoutModelFlag, } from "../harness.js";
|
|
11
|
+
export class PiHarness {
|
|
27
12
|
id = "pi";
|
|
28
13
|
displayName = "Pi";
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
14
|
+
profile = { bin: "pi", args: [] };
|
|
15
|
+
systemPrompt = true;
|
|
16
|
+
nativeAgent = false;
|
|
17
|
+
confinable = false;
|
|
18
|
+
build({ bin, args }, req) {
|
|
19
|
+
const argv = [bin, ...(req.model ? withoutModelFlag(args) : args)];
|
|
20
|
+
if (req.systemPrompt)
|
|
21
|
+
argv.push("--append-system-prompt", req.systemPrompt);
|
|
22
|
+
if (req.model)
|
|
23
|
+
argv.push("--model", req.model);
|
|
24
|
+
if (req.prompt === undefined)
|
|
25
|
+
return { argv };
|
|
26
|
+
argv.push("-p");
|
|
27
|
+
return { argv, stdin: req.prompt };
|
|
28
|
+
}
|
|
40
29
|
}
|
|
@@ -139,7 +139,7 @@ function readLockfileOrThrow() {
|
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
141
141
|
* The materialized content root recorded in the lock for a managed (git/npm)
|
|
142
|
-
* bundle —
|
|
142
|
+
* bundle — the desired/resolved split: the desired config carries
|
|
143
143
|
* only the source LOCATOR and the resolved `localRoot` lives here.
|
|
144
144
|
*
|
|
145
145
|
* This is the SINGLE lock-first resolution point shared by the indexer READ
|
|
@@ -3,40 +3,26 @@
|
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
import { getHarness, SESSION_LOG_HARNESSES } from "../harnesses/index.js";
|
|
5
5
|
export { extractInlineRefMentions } from "./inline-refs.js";
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
// therefore one registry entry, never an edit here.
|
|
6
|
+
// The provider array is DERIVED from the unified HARNESS_REGISTRY: every harness
|
|
7
|
+
// with a `sessionLogProvider` factory on its descriptor, and this is the only
|
|
8
|
+
// place providers are instantiated. Adding a session-log harness is therefore
|
|
9
|
+
// one registry entry, never an edit here.
|
|
11
10
|
//
|
|
12
11
|
// Ordered by canonical id so the pre-derivation provider order
|
|
13
12
|
// ([claude, opencode] — visible in e.g. `extract --auto` result order)
|
|
14
13
|
// is preserved deterministically, independent of HARNESS_REGISTRY declaration
|
|
15
14
|
// order (which is pinned for JSON-schema enum stability).
|
|
16
|
-
//
|
|
17
|
-
// WI-9.7 (H1): `SESSION_LOG_HARNESSES` is `HARNESS_REGISTRY` narrowed by the
|
|
18
|
-
// `isSessionLogHarness` type-predicate (see `../harnesses/types.ts`), so every
|
|
19
|
-
// element's `capabilities.sessionLogs` is the literal `true` and
|
|
20
|
-
// `sessionLogProvider` is a required (non-optional) field — a harness
|
|
21
|
-
// declaring `sessionLogs: true` without a provider is now a compile error at
|
|
22
|
-
// its `HARNESS_REGISTRY` entry, not a throw here. The load-time throw this
|
|
23
|
-
// used to guard (`h.sessionLogProvider?.()` returning undefined) is gone;
|
|
24
|
-
// `h.sessionLogProvider()` cannot be called with no provider to invoke.
|
|
25
15
|
const HARNESSES = [...SESSION_LOG_HARNESSES]
|
|
26
16
|
.sort((a, b) => a.id.localeCompare(b.id))
|
|
27
17
|
.map((h) => h.sessionLogProvider());
|
|
28
|
-
// Every derived provider's `name` must exactly identify
|
|
29
|
-
// `
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
// side only) would only ever surface as a wrong/silent lookup miss much later
|
|
34
|
-
// (health scans, `extract --auto` attribution) rather than here at load time.
|
|
35
|
-
// Kept as a runtime guard for that reason.
|
|
18
|
+
// Every derived provider's `name` must exactly identify the registry harness that
|
|
19
|
+
// produced it. `SessionLogHarness.name` is a runtime string with no static link to
|
|
20
|
+
// the `AkmHarness`, so a typo'd or stale `name` would only surface as a silent
|
|
21
|
+
// lookup miss much later (health scans, `extract --auto` attribution) rather than
|
|
22
|
+
// here at load time.
|
|
36
23
|
for (const provider of HARNESSES) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
throw new Error(`[akm] session-log provider "${provider.name}" is not registered as a sessionLogs harness in HARNESS_REGISTRY (src/integrations/harnesses). Add it there.`);
|
|
24
|
+
if (!getHarness(provider.name)?.sessionLogProvider) {
|
|
25
|
+
throw new Error(`[akm] session-log provider "${provider.name}" is not registered as a session-log harness in HARNESS_REGISTRY (src/integrations/harnesses). Add it there.`);
|
|
40
26
|
}
|
|
41
27
|
}
|
|
42
28
|
/**
|
|
@@ -46,9 +32,3 @@ for (const provider of HARNESSES) {
|
|
|
46
32
|
export function getAvailableHarnesses() {
|
|
47
33
|
return HARNESSES.filter((harness) => harness.isAvailable());
|
|
48
34
|
}
|
|
49
|
-
export function normalizeSessionTopic(text) {
|
|
50
|
-
const normalized = text.replace(/\s+/g, " ").trim().toLowerCase();
|
|
51
|
-
if (normalized.length < 10)
|
|
52
|
-
return undefined;
|
|
53
|
-
return normalized.slice(0, 60);
|
|
54
|
-
}
|