akm-cli 0.9.16 → 0.9.17-alpha.10
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 +2101 -0
- package/STABILITY.md +11 -10
- package/dist/akm +124 -193
- package/dist/akm-migrate +38 -19
- package/dist/assets/hints/cli-hints-full.md +6 -7
- package/dist/assets/improve-strategies/catchup.json +0 -3
- package/dist/assets/improve-strategies/consolidate.json +0 -1
- package/dist/assets/improve-strategies/default.json +1 -2
- package/dist/assets/improve-strategies/proactive-maintenance.json +1 -2
- package/dist/assets/improve-strategies/quick.json +1 -2
- package/dist/assets/improve-strategies/reflect-distill.json +1 -2
- package/dist/assets/improve-strategies/thorough.json +0 -3
- package/dist/assets/prompts/consolidate-pair.md +20 -0
- package/dist/assets/prompts/consolidate-system.md +4 -11
- package/dist/assets/prompts/retrieval-relevance-judge.md +6 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +20 -20
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -2
- package/dist/assets/templates/html/health.html +3 -5
- package/dist/cli/retired-commands.js +1 -1
- package/dist/cli/shared.js +6 -2
- package/dist/cli/unknown-flags.js +24 -1
- package/dist/cli.js +68 -10
- package/dist/commands/agent/agent-dispatch.js +1 -1
- package/dist/commands/command/command-execution.js +24 -62
- package/dist/commands/feedback-cli.js +0 -1
- package/dist/commands/health/accept-rate.js +6 -0
- package/dist/commands/health/archive-usage.js +92 -0
- package/dist/commands/health/checks.js +83 -74
- package/dist/commands/health/config-skew.js +38 -0
- package/dist/commands/health/data-dir-usage.js +25 -13
- package/dist/commands/health/egress.js +54 -0
- package/dist/commands/health/html-report.js +1 -42
- package/dist/commands/health/improve-metrics.js +136 -591
- package/dist/commands/health/md-report.js +1 -6
- package/dist/commands/health/plugin-staleness.js +53 -3
- package/dist/commands/health/renderers.js +12 -4
- package/dist/commands/health/report-view-model.js +14 -120
- package/dist/commands/health/types-improve.js +4 -19
- package/dist/commands/health/windows.js +64 -74
- package/dist/commands/health.js +145 -143
- package/dist/commands/improve/consolidate/chunking.js +26 -117
- package/dist/commands/improve/consolidate/continuity-check.js +137 -0
- package/dist/commands/improve/consolidate/pair-pass.js +791 -0
- package/dist/commands/improve/consolidate/sanitize.js +54 -149
- package/dist/commands/improve/consolidate.js +589 -1127
- package/dist/commands/improve/content-hash.js +16 -24
- package/dist/commands/improve/distill/content-repair.js +18 -100
- package/dist/commands/improve/distill-guards.js +20 -81
- package/dist/commands/improve/distill-promotion-policy.js +23 -243
- package/dist/commands/improve/distill.js +608 -1041
- package/dist/commands/improve/eligibility.js +126 -390
- package/dist/commands/improve/execution.js +8 -10
- package/dist/commands/improve/extract-prompt.js +1 -2
- package/dist/commands/improve/extract.js +487 -1046
- package/dist/commands/improve/feedback-valence.js +0 -25
- package/dist/commands/improve/improve-cli.js +75 -169
- package/dist/commands/improve/improve-result-file.js +10 -66
- package/dist/commands/improve/improve-strategies.js +52 -4
- package/dist/commands/improve/improve-usage-report.js +18 -64
- package/dist/commands/improve/improve.js +480 -1074
- package/dist/commands/improve/ledger.js +119 -0
- package/dist/commands/improve/locks.js +2 -8
- package/dist/commands/improve/loop-stages.js +415 -1073
- package/dist/commands/improve/memory/derived-ref.js +12 -77
- package/dist/commands/improve/memory/memory-belief.js +16 -118
- package/dist/commands/improve/memory/memory-improve.js +266 -14
- package/dist/commands/improve/outcome-loop.js +28 -156
- package/dist/commands/improve/planner.js +5 -15
- package/dist/commands/improve/preparation.js +779 -2319
- package/dist/commands/improve/proactive-maintenance.js +34 -101
- package/dist/commands/improve/reflect-noise.js +104 -280
- package/dist/commands/improve/reflect.js +642 -1353
- package/dist/commands/improve/retrieval-gate.js +127 -0
- package/dist/commands/improve/retrieval-scope.js +92 -0
- package/dist/commands/improve/salience.js +41 -240
- package/dist/commands/improve/session-asset.js +19 -100
- package/dist/commands/improve/stage.js +322 -0
- package/dist/commands/lint/base-linter.js +37 -15
- package/dist/commands/proposal/drain.js +261 -578
- package/dist/commands/proposal/proposal-cli.js +19 -20
- package/dist/commands/proposal/proposal-types.js +31 -24
- package/dist/commands/proposal/proposal.js +38 -8
- package/dist/commands/proposal/propose.js +134 -160
- package/dist/commands/proposal/repository.js +1097 -1394
- package/dist/commands/proposal/validators/proposal-quality-validators.js +71 -174
- package/dist/commands/proposal/validators/proposal-validators.js +1 -1
- package/dist/commands/proposal/validators/proposals.js +22 -89
- package/dist/commands/read/curate.js +105 -462
- package/dist/commands/read/knowledge.js +3 -2
- package/dist/commands/read/search-cli.js +16 -33
- package/dist/commands/read/search.js +17 -23
- package/dist/commands/read/show.js +57 -108
- package/dist/commands/sources/bundle-cli.js +25 -2
- package/dist/commands/sources/bundle-config-ops.js +4 -0
- package/dist/commands/sources/dangerous-env-audit.js +1 -2
- package/dist/commands/sources/info.js +127 -29
- package/dist/commands/sources/installed-stashes.js +197 -746
- package/dist/commands/sources/schema-repair.js +98 -129
- package/dist/commands/sources/source-add.js +62 -12
- package/dist/commands/sources/source-manage.js +9 -2
- package/dist/commands/sources/stash-cli.js +24 -4
- package/dist/commands/tasks/explain.js +10 -13
- package/dist/commands/tasks/tasks-cli.js +12 -13
- package/dist/commands/tasks/tasks.js +350 -936
- package/dist/commands/tasks/validate.js +26 -24
- package/dist/commands/workflow/plan.js +22 -29
- package/dist/commands/workflow-cli.js +4 -4
- package/dist/core/adapter/adapters/akm-adapter.js +2 -1
- package/dist/core/adapter/adapters/akm-lint.js +2 -3
- package/dist/core/adapter/adapters/akm-metadata.js +42 -12
- package/dist/core/adapter/adapters/akm-task-adapter.js +29 -8
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +1 -1
- package/dist/core/adapter/execution-source.js +17 -29
- package/dist/core/asset/asset-placement.js +4 -13
- package/dist/core/asset/frontmatter.js +106 -1
- package/dist/core/asset/resolve-ref.js +1 -1
- package/dist/core/bundle-id.js +42 -5
- package/dist/core/bundle-rename.js +285 -0
- package/dist/core/config/config-io.js +1 -2
- package/dist/core/config/config-schema.js +9 -34
- package/dist/core/config/config-walker.js +1 -1
- package/dist/core/config/config.js +184 -111
- package/dist/core/config/engine-semantics.js +0 -2
- package/dist/core/config/legacy-source-shape-shim.js +38 -9
- package/dist/core/config/schema/embedding.js +20 -5
- package/dist/core/config/schema/engines.js +5 -0
- package/dist/core/config/schema/execution.js +1 -1
- package/dist/core/config/schema/experimental.js +1 -1
- package/dist/core/config/schema/improve-processes.js +54 -125
- package/dist/core/config/schema/improve.js +4 -42
- package/dist/core/config/schema/index-config.js +9 -48
- package/dist/core/config/schema/scheduler.js +12 -12
- package/dist/core/config/schema/search.js +6 -22
- package/dist/core/env-secret-ref.js +0 -1
- package/dist/core/errors.js +8 -9
- package/dist/core/file-change.js +13 -5
- package/dist/core/file-lock.js +76 -173
- package/dist/core/improve-result.js +35 -7
- package/dist/core/improve-types.js +0 -1
- package/dist/core/logs-db.js +2 -2
- package/dist/core/loopback.js +7 -12
- package/dist/core/non-task-input.js +20 -0
- package/dist/core/parse.js +13 -16
- package/dist/core/paths.js +0 -24
- package/dist/core/redaction.js +109 -2
- package/dist/core/run-lock.js +2 -5
- package/dist/core/spawn-env.js +1 -1
- package/dist/core/state/migrations.js +123 -61
- package/dist/core/state-db-scope.js +2 -4
- package/dist/core/state-db.js +126 -692
- package/dist/core/time.js +0 -20
- package/dist/core/type-presentation.js +1 -9
- package/dist/core/write-source.js +294 -1005
- package/dist/execution/input-contract.js +1 -1
- package/dist/execution/resolved-request.js +135 -689
- package/dist/execution/source.js +63 -257
- package/dist/execution/target-ref.js +1 -1
- package/dist/indexer/bundle-identity-guard.js +2 -2
- package/dist/indexer/db/llm-cache.js +2 -2
- package/dist/indexer/ensure-index.js +77 -73
- package/dist/indexer/index-rebuild-lock.js +3 -11
- package/dist/indexer/index-writer-lock.js +8 -17
- package/dist/indexer/index-written-assets.js +141 -154
- package/dist/indexer/indexer.js +400 -1124
- package/dist/indexer/links/declared-links.js +90 -0
- package/dist/indexer/materialize-embeddings.js +60 -397
- package/dist/indexer/passes/memory-inference.js +96 -90
- package/dist/indexer/passes/metadata.js +132 -219
- package/dist/indexer/read-preflight.js +0 -7
- package/dist/indexer/scan/doc-to-entry.js +2 -3
- package/dist/indexer/scan/drain-dir.js +1 -1
- package/dist/indexer/search/db-search.js +190 -590
- package/dist/indexer/search/fts-query.js +30 -41
- package/dist/indexer/search/ranking.js +28 -154
- package/dist/indexer/search/search-attribution.js +12 -32
- package/dist/indexer/search/search-fields.js +11 -15
- package/dist/indexer/search/search-hit-enrichers.js +54 -85
- package/dist/indexer/search/search-source.js +1 -4
- package/dist/indexer/usage/usage-events.js +36 -7
- package/dist/indexer/walk/walker.js +3 -4
- package/dist/integrations/agent/engine-fallback.js +23 -40
- package/dist/integrations/agent/engine-resolution.js +93 -183
- package/dist/integrations/agent/execution.js +507 -0
- package/dist/integrations/agent/model-map.js +28 -156
- package/dist/integrations/agent/request-lowering.js +66 -141
- package/dist/integrations/agent/runner-dispatch.js +143 -321
- package/dist/integrations/agent/runner.js +54 -14
- package/dist/integrations/lockfile.js +53 -101
- package/dist/llm/client.js +18 -6
- package/dist/llm/embedders/deterministic.js +2 -3
- package/dist/llm/embedders/profile.js +71 -0
- package/dist/llm/embedders/remote.js +11 -17
- package/dist/llm/feature-gate.js +0 -8
- package/dist/llm/index-passes.js +3 -5
- package/dist/llm/memory-infer.js +1 -2
- package/dist/llm/structured-call.js +5 -24
- package/dist/output/generic-render.js +23 -11
- package/dist/output/html-render.js +13 -10
- package/dist/output/render-registry.js +3 -32
- package/dist/output/shapes/helpers.js +25 -38
- package/dist/output/shapes/passthrough.js +1 -9
- package/dist/{indexer/graph/graph-types.js → output/text/bundle-rename.js} +4 -1
- package/dist/output/text/command-format.js +69 -31
- package/dist/output/text/helpers.js +1 -1
- package/dist/output/text/migrate.js +5 -14
- package/dist/output/text/proposal-format.js +48 -3
- package/dist/output/text/show-format.js +13 -17
- package/dist/output/text/workflow-format.js +0 -32
- package/dist/output/text.js +2 -0
- package/dist/registry/factory.js +4 -19
- package/dist/registry/network.js +66 -220
- package/dist/registry/providers/index.js +0 -2
- package/dist/registry/providers/skills-sh.js +3 -14
- package/dist/registry/providers/static-index.js +24 -26
- package/dist/registry/resolve.js +55 -131
- package/dist/scripts/akm-migrate-node.js +42948 -92369
- package/dist/scripts/akm-migrate.js +42935 -92354
- package/dist/setup/registry-stash-loader.js +4 -13
- package/dist/setup/semantic-assets.js +3 -44
- package/dist/setup/setup.js +1 -1
- package/dist/setup/steps/connection.js +5 -6
- package/dist/setup/steps/platforms.js +2 -2
- package/dist/setup/steps/tasks.js +25 -15
- package/dist/sources/provider-factory.js +17 -18
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +7 -1
- package/dist/sources/providers/git-provider.js +0 -3
- package/dist/sources/providers/git-stash.js +83 -21
- package/dist/sources/providers/npm.js +2 -4
- package/dist/sources/providers/provider-utils.js +5 -10
- package/dist/sources/providers/website.js +0 -2
- package/dist/sources/snapshot-fetchers/website-ingest.js +1 -1
- package/dist/sources/website-url.js +2 -2
- package/dist/storage/database.js +9 -35
- package/dist/storage/repositories/improve-ledger-repository.js +209 -0
- package/dist/storage/repositories/index-connection.js +39 -72
- package/dist/storage/repositories/index-entries-repository.js +131 -129
- package/dist/storage/repositories/index-entry-mapper.js +1 -2
- package/dist/storage/repositories/index-entry-schema.js +101 -268
- package/dist/storage/repositories/index-fts-repository.js +86 -256
- package/dist/storage/repositories/index-links-repository.js +143 -0
- package/dist/storage/repositories/index-llm-cache-repository.js +7 -9
- package/dist/storage/repositories/index-meta-repository.js +6 -4
- package/dist/storage/repositories/index-schema.js +257 -325
- package/dist/storage/repositories/index-utility-repository.js +8 -29
- package/dist/storage/repositories/index-vec-repository.js +133 -414
- package/dist/storage/repositories/outcome-repository.js +2 -1
- package/dist/storage/repositories/proposals-repository.js +104 -1
- package/dist/storage/repositories/registry-index-cache-repository.js +100 -0
- package/dist/storage/repositories/salience-repository.js +1 -19
- package/dist/storage/repositories/task-history-repository.js +26 -4
- package/dist/storage/repositories/workflow-runs-repository.js +53 -244
- package/dist/storage/sqlite-migrations.js +136 -0
- package/dist/storage/sqlite-pragmas.js +11 -9
- package/dist/storage/sqlite-transaction.js +170 -0
- package/dist/storage/state-db-integrity.js +130 -0
- package/dist/tasks/activation-config.js +134 -62
- package/dist/tasks/backends/cron.js +191 -302
- package/dist/tasks/backends/exec-utils.js +2 -5
- package/dist/tasks/backends/launchd.js +141 -748
- package/dist/tasks/backends/schtasks.js +119 -623
- package/dist/tasks/prepare/prepare-support.js +5 -15
- package/dist/tasks/prepare/prepare.js +0 -2
- package/dist/tasks/resolve-akm-bin.js +20 -79
- package/dist/tasks/run/attempt-lifecycle.js +0 -1
- package/dist/tasks/run/load-task.js +1 -1
- package/dist/tasks/scheduler-binding.js +20 -238
- package/dist/tasks/scheduler-invocation.js +136 -244
- package/dist/tasks/scheduler-lock.js +53 -0
- package/dist/tasks/scheduler-sync.js +368 -679
- package/dist/tasks/source/parse-task-source.js +55 -9
- package/dist/tasks/source/task-source-v3-frozen.js +3 -4
- package/dist/tasks/source/task-to-v4.js +464 -88
- package/dist/workflows/authoring/authoring.js +3 -12
- package/dist/workflows/compile.js +211 -0
- package/dist/workflows/concurrency-policy.js +13 -74
- package/dist/workflows/exec/child-invocation.js +3 -17
- package/dist/workflows/exec/child-workflow.js +32 -141
- package/dist/workflows/exec/dispatch-redaction.js +13 -53
- package/dist/workflows/exec/environment.js +98 -0
- package/dist/workflows/exec/exec-unit.js +33 -140
- package/dist/workflows/exec/frozen-judge.js +7 -59
- package/dist/workflows/exec/native-executor.js +82 -341
- package/dist/workflows/exec/param-secrets.js +29 -47
- package/dist/workflows/exec/run-workflow.js +154 -387
- package/dist/workflows/exec/scheduler.js +9 -36
- package/dist/workflows/exec/step-work.js +127 -430
- package/dist/workflows/exec/unit-dispatch.js +11 -63
- package/dist/workflows/exec/unit-writer.js +8 -52
- package/dist/workflows/exec/worktree.js +39 -273
- package/dist/workflows/freeze/child-output-references.js +4 -15
- package/dist/workflows/freeze/environment.js +99 -92
- package/dist/workflows/freeze/freeze.js +172 -0
- package/dist/workflows/freeze/step-values.js +19 -21
- package/dist/workflows/freeze/targets/child-workflow.js +23 -92
- package/dist/workflows/freeze/targets/command.js +10 -33
- package/dist/workflows/freeze/targets/script.js +5 -12
- package/dist/workflows/freeze/targets/shell.js +3 -6
- package/dist/workflows/freeze/targets/task.js +25 -80
- package/dist/workflows/freeze/task-bindings.js +20 -67
- package/dist/workflows/{source-ir/github-yaml.js → github-yaml.js} +88 -206
- package/dist/workflows/ir/params.js +6 -51
- package/dist/workflows/ir/plan-hash.js +2 -34
- package/dist/workflows/parser.js +140 -43
- package/dist/{commands/improve/consolidate/types.js → workflows/plan.js} +2 -1
- package/dist/workflows/renderer.js +36 -69
- package/dist/workflows/resource-limits.js +12 -120
- package/dist/workflows/runtime/agent-identity.js +8 -40
- package/dist/workflows/runtime/run-outputs.js +3 -6
- package/dist/workflows/runtime/run-plan.js +316 -0
- package/dist/workflows/runtime/runs.js +48 -200
- package/dist/workflows/runtime/workflow-asset-loader.js +24 -57
- package/dist/workflows/{source-ir/semantics.js → source-semantics.js} +16 -20
- package/dist/workflows/validate-summary.js +2 -7
- package/docs/integration/bundling-akm.md +49 -42
- package/docs/migration/README.md +1 -0
- package/docs/migration/release-notes/0.9.17.md +43 -0
- package/docs/migration/v0.9.1-to-v0.9.2.md +23 -7
- package/docs/reference/cli.md +232 -135
- package/docs/reference/configuration.md +71 -57
- package/docs/reference/data-and-telemetry.md +20 -21
- package/docs/reference/tasks.md +105 -39
- package/docs/reference/workflow-schema.md +14 -18
- package/docs/reference/workflows.md +6 -9
- package/package.json +1 -1
- package/schemas/akm-config.json +115 -738
- package/schemas/akm-workflow.json +1 -0
- package/dist/assets/improve-strategies/graph-refresh.json +0 -15
- package/dist/assets/prompts/contradiction-judge.md +0 -33
- package/dist/assets/prompts/graph-extract-system.md +0 -1
- package/dist/assets/prompts/graph-extract-user-prompt.md +0 -35
- package/dist/assets/prompts/metadata-enhance-system.md +0 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +0 -4
- package/dist/commands/health/advisories.js +0 -150
- package/dist/commands/health/metrics.js +0 -329
- package/dist/commands/health/surfaces.js +0 -102
- package/dist/commands/improve/anti-collapse.js +0 -83
- package/dist/commands/improve/collapse-detector.js +0 -432
- package/dist/commands/improve/consolidate/eligibility.js +0 -48
- package/dist/commands/improve/consolidate/merge.js +0 -149
- package/dist/commands/improve/distill/promote-memory.js +0 -291
- package/dist/commands/improve/distill/quality-gate.js +0 -337
- package/dist/commands/improve/eval-cases.js +0 -52
- package/dist/commands/improve/memory/memory-contradiction-detect.js +0 -291
- package/dist/commands/improve/proposal-envelope.js +0 -31
- package/dist/commands/improve/run-context.js +0 -123
- package/dist/commands/improve/shared.js +0 -31
- package/dist/commands/improve/source-identity.js +0 -28
- package/dist/commands/improve/triage.js +0 -96
- package/dist/commands/proposal/drain-policies.js +0 -151
- package/dist/commands/sources/update-transaction.js +0 -220
- package/dist/core/action-contributors.js +0 -28
- package/dist/core/config/config-version-shim.js +0 -101
- package/dist/core/fs-txn.js +0 -405
- package/dist/core/lexical-score.js +0 -25
- package/dist/core/maintenance-barrier.js +0 -167
- package/dist/execution/executable-identity.js +0 -105
- package/dist/execution/guarded-source.js +0 -427
- package/dist/indexer/db/graph-db.js +0 -444
- package/dist/indexer/graph/graph-boost.js +0 -427
- package/dist/indexer/graph/graph-dedup.js +0 -95
- package/dist/indexer/graph/graph-extraction.js +0 -1108
- package/dist/indexer/search/name-match.js +0 -35
- package/dist/indexer/search/ranking-contributors.js +0 -515
- package/dist/indexer/search/ranking-types.js +0 -4
- package/dist/indexer/walk/project-context.js +0 -192
- package/dist/integrations/agent/execution-cascade.js +0 -566
- package/dist/integrations/agent/execution-definitions.js +0 -202
- package/dist/integrations/agent/execution-lowering.js +0 -841
- package/dist/integrations/agent/execution-preparation.js +0 -98
- package/dist/integrations/agent/inline-execution.js +0 -74
- package/dist/llm/graph-extract.js +0 -728
- package/dist/llm/metadata-enhance.js +0 -96
- package/dist/registry/create-provider-registry.js +0 -29
- package/dist/registry/pinned-request-helper.js +0 -247
- package/dist/registry/pinned-transport.js +0 -717
- package/dist/sources/providers/index.js +0 -14
- package/dist/storage/engines/sqlite-migrations.js +0 -271
- package/dist/storage/repositories/canaries-repository.js +0 -107
- package/dist/storage/repositories/embedding-salvage-repository.js +0 -184
- package/dist/storage/repositories/registry-cache.js +0 -113
- package/dist/tasks/scheduler-sync-preview.js +0 -52
- package/dist/tasks/source/task-to-v3.js +0 -507
- package/dist/workflows/freeze/resolve-steps.js +0 -86
- package/dist/workflows/freeze/source-freeze.js +0 -64
- package/dist/workflows/ir/compile.js +0 -321
- package/dist/workflows/ir/environment-v4.js +0 -330
- package/dist/workflows/ir/freeze-v4.js +0 -153
- package/dist/workflows/ir/schema-v4.js +0 -745
- package/dist/workflows/ir/schema.js +0 -354
- package/dist/workflows/program/schema.js +0 -77
- package/dist/workflows/runtime/checkin.js +0 -57
- package/dist/workflows/runtime/plan-classifier.js +0 -196
- package/dist/workflows/runtime/unit-checkin.js +0 -45
- package/dist/workflows/runtime/unit-phases.js +0 -20
- package/dist/workflows/schema.js +0 -4
- package/dist/workflows/source-ir/compile.js +0 -200
- package/dist/workflows/source-ir/program.js +0 -50
- package/dist/workflows/source-ir/result.js +0 -26
- package/dist/workflows/source-ir/schema.js +0 -786
- package/dist/workflows/source-ir/triggers.js +0 -79
- package/dist/workflows/source-ir/uses.js +0 -40
- package/dist/workflows/validator.js +0 -60
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
import catchup from "../../assets/improve-strategies/catchup.json" with { type: "json" };
|
|
5
5
|
import consolidate from "../../assets/improve-strategies/consolidate.json" with { type: "json" };
|
|
6
6
|
import defaultStrategy from "../../assets/improve-strategies/default.json" with { type: "json" };
|
|
7
|
-
import graphRefresh from "../../assets/improve-strategies/graph-refresh.json" with { type: "json" };
|
|
8
7
|
import proactiveMaintenance from "../../assets/improve-strategies/proactive-maintenance.json" with { type: "json" };
|
|
9
8
|
import quick from "../../assets/improve-strategies/quick.json" with { type: "json" };
|
|
10
9
|
import reflectDistill from "../../assets/improve-strategies/reflect-distill.json" with { type: "json" };
|
|
11
10
|
import thorough from "../../assets/improve-strategies/thorough.json" with { type: "json" };
|
|
12
|
-
import { parseRefInput } from "../../core/asset/resolve-ref.js";
|
|
11
|
+
import { conceptIdFromTypeName, parseRefInput } from "../../core/asset/resolve-ref.js";
|
|
13
12
|
import { ImproveProfileConfigSchema } from "../../core/config/config-schema.js";
|
|
14
13
|
import { deepMergeConfig } from "../../core/config/deep-merge.js";
|
|
15
14
|
import { BUILTIN_IMPROVE_STRATEGY_NAMES, IMPROVE_PROCESS_ENGINE_CAPABILITIES, } from "../../core/config/engine-semantics.js";
|
|
@@ -17,6 +16,7 @@ import { ConfigError } from "../../core/errors.js";
|
|
|
17
16
|
import { describeLlmCredentialAvailability } from "../../integrations/agent/engine-resolution.js";
|
|
18
17
|
import { applyAutonomyGate } from "./autonomy-gate.js";
|
|
19
18
|
import { resolveImproveExecution, resolveImproveLlmExecution } from "./execution.js";
|
|
19
|
+
import { stripBundle } from "./ledger.js";
|
|
20
20
|
export const DEFAULT_ALLOWED_TYPES = {
|
|
21
21
|
reflect: ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"],
|
|
22
22
|
distill: ["memory"],
|
|
@@ -27,6 +27,10 @@ export function resolveProcessEnabled(processName, strategy) {
|
|
|
27
27
|
const processes = strategy.processes;
|
|
28
28
|
return processes?.[processName]?.enabled === true;
|
|
29
29
|
}
|
|
30
|
+
/** An `excludeRefPrefixes` entry as a bare conceptId without a trailing `/` (else `startsWith(".../raw//")` never matches). */
|
|
31
|
+
function stripBundlePrefix(value) {
|
|
32
|
+
return stripBundle(value).replace(/\/+$/, "");
|
|
33
|
+
}
|
|
30
34
|
export function shouldSkipRef(ref, processName, strategy) {
|
|
31
35
|
const process = strategy.processes?.[processName];
|
|
32
36
|
if (process?.enabled === false)
|
|
@@ -35,8 +39,30 @@ export function shouldSkipRef(ref, processName, strategy) {
|
|
|
35
39
|
const allowed = process?.allowedTypes ?? DEFAULT_ALLOWED_TYPES[processName];
|
|
36
40
|
if (!allowed.includes(parsed.type))
|
|
37
41
|
return { skip: true, reason: "type-filter" };
|
|
42
|
+
// R12: reflect only — raw wiki-ingest snapshots are type `knowledge`, so
|
|
43
|
+
// allowedTypes alone can't exclude them (distill/consolidate are memory-only).
|
|
44
|
+
if (processName === "reflect") {
|
|
45
|
+
const excludePrefixes = strategy.processes?.reflect?.excludeRefPrefixes;
|
|
46
|
+
if (excludePrefixes && excludePrefixes.length > 0) {
|
|
47
|
+
const conceptId = conceptIdFromTypeName(parsed.type, parsed.name);
|
|
48
|
+
const excluded = excludePrefixes.some((prefix) => {
|
|
49
|
+
const stripped = stripBundlePrefix(prefix);
|
|
50
|
+
return conceptId === stripped || conceptId.startsWith(`${stripped}/`);
|
|
51
|
+
});
|
|
52
|
+
if (excluded)
|
|
53
|
+
return { skip: true, reason: "exclude-filter" };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
38
56
|
return { skip: false, reason: "" };
|
|
39
57
|
}
|
|
58
|
+
const REF_SCOPED_PROCESSES = new Set(["reflect", "distill", "consolidate"]);
|
|
59
|
+
/** How many refs a ref-scoped process would act on (`undefined` for any other process). */
|
|
60
|
+
export function eligibleRefCount(refs, process, strategy) {
|
|
61
|
+
if (!REF_SCOPED_PROCESSES.has(process))
|
|
62
|
+
return undefined;
|
|
63
|
+
const name = process;
|
|
64
|
+
return refs.filter((entry) => !shouldSkipRef(entry.ref, name, strategy).skip).length;
|
|
65
|
+
}
|
|
40
66
|
export function isStrategyFilteredForAllPasses(ref, strategy) {
|
|
41
67
|
return shouldSkipRef(ref, "reflect", strategy).skip && shouldSkipRef(ref, "distill", strategy).skip;
|
|
42
68
|
}
|
|
@@ -44,7 +70,6 @@ const BUILTIN_STRATEGIES = {
|
|
|
44
70
|
default: defaultStrategy,
|
|
45
71
|
quick,
|
|
46
72
|
thorough,
|
|
47
|
-
"graph-refresh": graphRefresh,
|
|
48
73
|
consolidate,
|
|
49
74
|
catchup,
|
|
50
75
|
"reflect-distill": reflectDistill,
|
|
@@ -56,6 +81,29 @@ if (BUILTIN_IMPROVE_STRATEGY_NAMES.some((name) => !(name in BUILTIN_STRATEGIES))
|
|
|
56
81
|
export function resolveImproveStrategy(name, config) {
|
|
57
82
|
const selectedName = name ?? config.defaults?.improveStrategy ?? "default";
|
|
58
83
|
const userStrategies = config.improve?.strategies ?? {};
|
|
84
|
+
// graph-refresh named a specific, common retirement — refuse it
|
|
85
|
+
// unconditionally, even when `improve.strategies["graph-refresh"]` still
|
|
86
|
+
// has an override block from when it customized the (now-deleted) built-in
|
|
87
|
+
// strategy of the same name. That override is a partial patch (e.g. just
|
|
88
|
+
// `processes.graphExtraction.mode`), not a full strategy definition —
|
|
89
|
+
// falling through to the generic "resolve as a user strategy" path below
|
|
90
|
+
// would silently merge it onto `default` and run a full, unplanned improve
|
|
91
|
+
// pass instead of refusing. `akm migrate apply` drops the leftover block
|
|
92
|
+
// (src/core/config/config.ts, normalizeConfigFile) since it can never
|
|
93
|
+
// apply again.
|
|
94
|
+
if (selectedName === "graph-refresh") {
|
|
95
|
+
const hasLeftoverOverride = Boolean(userStrategies["graph-refresh"]);
|
|
96
|
+
throw new ConfigError(`Improve strategy "graph-refresh" was retired in 0.9.17-alpha.9 along with the LLM entity-graph extraction it ran.` +
|
|
97
|
+
(hasLeftoverOverride
|
|
98
|
+
? ' Your config still has a leftover `improve.strategies["graph-refresh"]` override for it — `akm migrate apply` removes it.'
|
|
99
|
+
: ""), "UNKNOWN_IMPROVE_STRATEGY",
|
|
100
|
+
// Override CONFIG_HINTS.UNKNOWN_IMPROVE_STRATEGY (src/core/errors.ts):
|
|
101
|
+
// its "listed strategy names" phrase does not apply here (this message
|
|
102
|
+
// names no strategies), and its "define it under improve.strategies"
|
|
103
|
+
// suggestion is actively wrong — that is exactly the leftover-override
|
|
104
|
+
// shape this refusal exists to reject, not a way around it.
|
|
105
|
+
"Choose a different strategy. `graph-refresh` cannot be redefined under `improve.strategies` — it always refuses.");
|
|
106
|
+
}
|
|
59
107
|
if (!(selectedName in BUILTIN_STRATEGIES) && !userStrategies[selectedName]) {
|
|
60
108
|
const valid = [...new Set([...Object.keys(BUILTIN_STRATEGIES), ...Object.keys(userStrategies)])].sort();
|
|
61
109
|
throw new ConfigError(`Improve strategy "${selectedName}" not found. Valid strategies: ${valid.join(", ")}.`, "UNKNOWN_IMPROVE_STRATEGY");
|
|
@@ -118,7 +166,7 @@ export function projectResolvedProcessRouting(plan) {
|
|
|
118
166
|
}
|
|
119
167
|
return rows;
|
|
120
168
|
}
|
|
121
|
-
function cloneAndFreeze(value) {
|
|
169
|
+
export function cloneAndFreeze(value) {
|
|
122
170
|
const clone = structuredClone(value);
|
|
123
171
|
const freeze = (item) => {
|
|
124
172
|
if (typeof item !== "object" || item === null || Object.isFrozen(item))
|
|
@@ -2,32 +2,22 @@
|
|
|
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
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* the
|
|
8
|
-
* into the `usageReport` field `finalizeImproveResult` persists, and render
|
|
9
|
-
* both halves as one fixed-width table shared by the end-of-run stderr
|
|
10
|
-
* summary (`improve-cli.ts`) and `akm improve report`'s text output
|
|
11
|
-
* (`src/output/text/improve-report.ts`).
|
|
5
|
+
* The per-run LLM usage report (#944): the process × engine × model cross-tab
|
|
6
|
+
* plus the enabled processes that made no call and why, rendered as one table
|
|
7
|
+
* for the end-of-run stderr summary and `akm improve report`.
|
|
12
8
|
*/
|
|
13
9
|
import { IMPROVE_PROCESS_ENGINE_CAPABILITIES } from "../../core/config/engine-semantics.js";
|
|
14
|
-
import {
|
|
10
|
+
import { eligibleRefCount, projectResolvedProcessRouting, } from "./improve-strategies.js";
|
|
15
11
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* below) and `proactiveMaintenance` (no engine at all) never make an
|
|
20
|
-
* attributable LLM call, so listing them as "zero calls" would always be a
|
|
21
|
-
* false positive, not a real finding.
|
|
12
|
+
* Only processes that call an LLM themselves: triage (a runner, attributed to
|
|
13
|
+
* its judgment engine) and proactive maintenance (no engine) would always read
|
|
14
|
+
* as "zero calls".
|
|
22
15
|
*/
|
|
23
16
|
const LLM_BACKED_PROCESSES = new Set(Object.keys(IMPROVE_PROCESS_ENGINE_CAPABILITIES).filter((name) => IMPROVE_PROCESS_ENGINE_CAPABILITIES[name] === "llm"));
|
|
24
|
-
/**
|
|
25
|
-
const REF_SCOPED_PROCESSES = new Set(["reflect", "distill", "consolidate"]);
|
|
26
|
-
/** The autonomy lane (if any) gating each LLM-backed process, per `autonomy-gate.ts`'s `AUTONOMY_LANES`. */
|
|
17
|
+
/** The autonomy lane gating each LLM-backed process, if any. */
|
|
27
18
|
const AUTONOMY_LANE_BY_PROCESS = {
|
|
28
19
|
memoryInference: "memoryInference",
|
|
29
20
|
};
|
|
30
|
-
/** `{reason -> count}` for the dominant-reason lookup in {@link deriveNoCallReason}. */
|
|
31
21
|
function dominantReason(counts) {
|
|
32
22
|
let best;
|
|
33
23
|
let bestCount = 0;
|
|
@@ -40,23 +30,11 @@ function dominantReason(counts) {
|
|
|
40
30
|
return best;
|
|
41
31
|
}
|
|
42
32
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* process that also happens to be autonomy-gated; then, for a disabled row
|
|
49
|
-
* that IS resolvable, `"autonomy_gated"` when its lane was gated, else
|
|
50
|
-
* `undefined` (a `false`-in-config process never reached the routing table
|
|
51
|
-
* in the first place, so a disabled-and-not-gated row has no other
|
|
52
|
-
* explanation to report); for an enabled row, `"strategy_filtered_all_passes"`
|
|
53
|
-
* when every ref got filtered out, then the process's own dominant skip
|
|
54
|
-
* reason, else the `"no_signal"` fallback.
|
|
55
|
-
*
|
|
56
|
-
* Reuses the SAME reason strings already emitted elsewhere
|
|
57
|
-
* (`improve_skipped` events, reflect's `AkmReflectFailure.reason`, distill's
|
|
58
|
-
* `distillSkipped.byReason` keys) rather than inventing a translation layer —
|
|
59
|
-
* per the brief, never a fabricated category like `"limit_reached"`.
|
|
33
|
+
* Why an LLM-backed process made no call, in priority order: its engine is
|
|
34
|
+
* unavailable; disabled — `autonomy_gated` when its lane was gated, else
|
|
35
|
+
* nothing to report; every ref strategy-filtered; its dominant skip reason;
|
|
36
|
+
* else `no_signal`. The reasons are the ones the events and results already
|
|
37
|
+
* use.
|
|
60
38
|
*/
|
|
61
39
|
export function deriveNoCallReason(args) {
|
|
62
40
|
const { row } = args;
|
|
@@ -73,7 +51,7 @@ export function deriveNoCallReason(args) {
|
|
|
73
51
|
return dominant;
|
|
74
52
|
return "no_signal";
|
|
75
53
|
}
|
|
76
|
-
/** Reflect's
|
|
54
|
+
/** Reflect's skip reasons, from its skipped (and older cooldown) actions. */
|
|
77
55
|
function countReflectSkipReasons(actions) {
|
|
78
56
|
const counts = {};
|
|
79
57
|
for (const action of actions) {
|
|
@@ -85,23 +63,9 @@ function countReflectSkipReasons(actions) {
|
|
|
85
63
|
}
|
|
86
64
|
return counts;
|
|
87
65
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Assemble this run's `usageReport` (#944): the process x engine x model
|
|
90
|
-
* cross-tab plus which enabled processes made zero calls and why. Pure — no
|
|
91
|
-
* I/O; the caller (`finalizeImproveResult`) supplies the cross-tab (already
|
|
92
|
-
* computed from this run's `llm_usage` events) and every other input from
|
|
93
|
-
* data it already has in scope.
|
|
94
|
-
*
|
|
95
|
-
* Returns `undefined` when both halves would be empty (e.g. a run whose
|
|
96
|
-
* active strategy enables no LLM-backed process), matching the envelope's
|
|
97
|
-
* existing convention of omitting empty optional sections.
|
|
98
|
-
*/
|
|
66
|
+
/** This run's `usageReport`, or `undefined` when both halves are empty. */
|
|
99
67
|
export function buildImproveUsageReport(args) {
|
|
100
|
-
//
|
|
101
|
-
// drops the "triage.judgment" pseudo-row (#947): judgment dispatch does
|
|
102
|
-
// not route through `withLlmStage`, so its calls (if any) are never
|
|
103
|
-
// attributable to a "triage.judgment" process in the cross-tab, and
|
|
104
|
-
// reporting it here would always read as a false "zero calls".
|
|
68
|
+
// The "triage.judgment" row is dropped too: its calls are never attributed to it (#947).
|
|
105
69
|
const routing = projectResolvedProcessRouting(args.resolvedPlan).filter((row) => row.process !== "triage.judgment" && LLM_BACKED_PROCESSES.has(row.process));
|
|
106
70
|
const calledProcesses = new Set(args.byProcessEngineModel.filter((row) => row.calls > 0).map((row) => row.process));
|
|
107
71
|
const reflectSkipCounts = countReflectSkipReasons(args.persistedActions);
|
|
@@ -109,9 +73,7 @@ export function buildImproveUsageReport(args) {
|
|
|
109
73
|
for (const row of routing) {
|
|
110
74
|
if (calledProcesses.has(row.process))
|
|
111
75
|
continue;
|
|
112
|
-
const eligibleRefs =
|
|
113
|
-
? args.loopRefs.filter((entry) => !shouldSkipRef(entry.ref, row.process, args.resolvedPlan.strategy.config).skip).length
|
|
114
|
-
: undefined;
|
|
76
|
+
const eligibleRefs = eligibleRefCount(args.loopRefs, row.process, args.resolvedPlan.strategy.config);
|
|
115
77
|
const reason = deriveNoCallReason({
|
|
116
78
|
row,
|
|
117
79
|
autonomyGated: args.resolvedPlan.autonomyGated,
|
|
@@ -131,7 +93,6 @@ export function buildImproveUsageReport(args) {
|
|
|
131
93
|
return undefined;
|
|
132
94
|
return { byProcessEngineModel: args.byProcessEngineModel, noCalls };
|
|
133
95
|
}
|
|
134
|
-
// ── Shared fixed-width text rendering ────────────────────────────────────────
|
|
135
96
|
function renderFixedWidthTable(headers, rows) {
|
|
136
97
|
const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index]?.length ?? 0)));
|
|
137
98
|
const renderRow = (cells) => cells
|
|
@@ -140,14 +101,7 @@ function renderFixedWidthTable(headers, rows) {
|
|
|
140
101
|
.trimEnd();
|
|
141
102
|
return [renderRow(headers), ...rows.map(renderRow)];
|
|
142
103
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Render a `usageReport` as fixed-width plain text — the ONE formatter shared
|
|
145
|
-
* by the end-of-run `[improve] ...` stderr table (`improve-cli.ts`) and `akm
|
|
146
|
-
* improve report`'s `--format text` output
|
|
147
|
-
* (`src/output/text/improve-report.ts`), per the brief. `notes` surfaces
|
|
148
|
-
* degraded-precision caveats (e.g. a pre-0.9.15 run recomputed from raw
|
|
149
|
-
* events, per `improve-report.ts`).
|
|
150
|
-
*/
|
|
104
|
+
/** The usage report as a fixed-width table; `notes` carry precision caveats (e.g. an older run recomputed from events). */
|
|
151
105
|
export function formatUsageReportTable(usageReport, notes) {
|
|
152
106
|
const lines = ["[improve] usage report (process x engine x model):"];
|
|
153
107
|
if (usageReport.byProcessEngineModel.length === 0) {
|