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
|
@@ -46,13 +46,12 @@ import { todayIso } from "../../core/common.js";
|
|
|
46
46
|
import { concurrentMap } from "../../core/concurrent.js";
|
|
47
47
|
import { ConfigError } from "../../core/errors.js";
|
|
48
48
|
import { warn } from "../../core/warn.js";
|
|
49
|
-
import { recordWrittenPath } from "../../core/write-provenance.js";
|
|
49
|
+
import { beginWriteProvenance, recordWrittenPath } from "../../core/write-provenance.js";
|
|
50
50
|
import { writeAssetToSource } from "../../core/write-source.js";
|
|
51
|
-
import {
|
|
51
|
+
import { assertRunnerCredentials } from "../../integrations/agent/runner-dispatch.js";
|
|
52
52
|
import { isProcessEnabled } from "../../llm/feature-gate.js";
|
|
53
53
|
import { resolveIndexPassExecution } from "../../llm/index-passes.js";
|
|
54
54
|
import * as memoryInfer from "../../llm/memory-infer.js";
|
|
55
|
-
import { preflightStructuredLlmRunner } from "../../llm/structured-call.js";
|
|
56
55
|
import { computeBodyHash, getLlmCacheEntry } from "../../storage/repositories/index-llm-cache-repository.js";
|
|
57
56
|
import { withLlmCache } from "../db/llm-cache.js";
|
|
58
57
|
import { walkMarkdownFiles } from "../walk/walker.js";
|
|
@@ -102,7 +101,7 @@ function memoryExecutionForContext(ctx, config) {
|
|
|
102
101
|
}
|
|
103
102
|
async function inferPendingMemoryRecord(plan, ctx) {
|
|
104
103
|
const { record } = plan;
|
|
105
|
-
const { config, featureConfig, signal, db, reEnrich, llmRunner,
|
|
104
|
+
const { config, featureConfig, signal, db, reEnrich, llmRunner, inferTelemetry, compressMemoryToDerivedMemory, onNotices, onConfigFailure, } = ctx;
|
|
106
105
|
if (signal?.aborted || plan.kind === "aborted")
|
|
107
106
|
return { aborted: true };
|
|
108
107
|
// Existing children are complete, but the parent may be unmarked after a
|
|
@@ -131,7 +130,7 @@ async function inferPendingMemoryRecord(plan, ctx) {
|
|
|
131
130
|
const onRetryAttempt = () => {
|
|
132
131
|
retryAttempts += 1;
|
|
133
132
|
};
|
|
134
|
-
const infer = () => compressMemoryToDerivedMemory(llmRunner, record.body, signal, featureConfig, (event) => warn(`[akm] LLM fallback for ${event.feature}: ${event.reason}`), inferTelemetry, onRetryAttempt, onNotices
|
|
133
|
+
const infer = () => compressMemoryToDerivedMemory(llmRunner, record.body, signal, featureConfig, (event) => warn(`[akm] LLM fallback for ${event.feature}: ${event.reason}`), inferTelemetry, onRetryAttempt, onNotices);
|
|
135
134
|
let derived = plan.kind === "cache-hit" ? plan.derived : undefined;
|
|
136
135
|
try {
|
|
137
136
|
if (plan.kind === "model") {
|
|
@@ -141,7 +140,7 @@ async function inferPendingMemoryRecord(plan, ctx) {
|
|
|
141
140
|
fromCache = true;
|
|
142
141
|
},
|
|
143
142
|
})
|
|
144
|
-
: await compressMemoryToDerivedMemory(llmRunner, record.body, signal, config, (event) => warn(`[akm] LLM fallback for ${event.feature}: ${event.reason}`), inferTelemetry, onRetryAttempt, onNotices
|
|
143
|
+
: await compressMemoryToDerivedMemory(llmRunner, record.body, signal, config, (event) => warn(`[akm] LLM fallback for ${event.feature}: ${event.reason}`), inferTelemetry, onRetryAttempt, onNotices);
|
|
145
144
|
}
|
|
146
145
|
}
|
|
147
146
|
catch (error) {
|
|
@@ -188,6 +187,18 @@ async function inferPendingMemoryRecord(plan, ctx) {
|
|
|
188
187
|
* short-circuits to a no-op result.
|
|
189
188
|
*/
|
|
190
189
|
export async function runMemoryInferencePass(ctx) {
|
|
190
|
+
// R78: owns the write-provenance journal end-to-end so it closes on every
|
|
191
|
+
// exit path, including a throw out of the body below — an unclosed journal
|
|
192
|
+
// would keep reporting every later write in this process as this call's own.
|
|
193
|
+
const provenance = beginWriteProvenance();
|
|
194
|
+
try {
|
|
195
|
+
return await runMemoryInferencePassBody(ctx, provenance);
|
|
196
|
+
}
|
|
197
|
+
finally {
|
|
198
|
+
provenance.end();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function runMemoryInferencePassBody(ctx, provenance) {
|
|
191
202
|
const { config, sources, signal, db, reEnrich, onProgress, options = {} } = ctx;
|
|
192
203
|
const invocationOwnsRunner = Object.hasOwn(ctx, "llmRunner");
|
|
193
204
|
const compressMemoryToDerivedMemory = options.compressMemoryToDerivedMemory ?? memoryInfer.compressMemoryToDerivedMemory;
|
|
@@ -202,6 +213,7 @@ export async function runMemoryInferencePass(ctx) {
|
|
|
202
213
|
skippedAborted: 0,
|
|
203
214
|
unaccounted: 0,
|
|
204
215
|
htmlErrorCount: 0,
|
|
216
|
+
writtenPaths: [],
|
|
205
217
|
};
|
|
206
218
|
// Mutable sink threaded into compressMemoryToDerivedMemory so the per-call
|
|
207
219
|
// HTML-error categorization (which is otherwise swallowed inside the feature
|
|
@@ -215,6 +227,8 @@ export async function runMemoryInferencePass(ctx) {
|
|
|
215
227
|
const completeResult = () => {
|
|
216
228
|
if (noticesByKey.size > 0)
|
|
217
229
|
result.notices = Object.freeze([...noticesByKey.values()]);
|
|
230
|
+
// Non-destructive read — the wrapper's `finally` owns closing the journal.
|
|
231
|
+
result.writtenPaths = provenance.writtenPaths();
|
|
218
232
|
return result;
|
|
219
233
|
};
|
|
220
234
|
// Gate 1 — feature gate via isProcessEnabled, which reads the 0.8.0 path
|
|
@@ -247,84 +261,37 @@ export async function runMemoryInferencePass(ctx) {
|
|
|
247
261
|
// keeps aborted, existing-child, and validated-cache-only batches available
|
|
248
262
|
// offline while preserving all-or-nothing preflight for mixed batches.
|
|
249
263
|
const plans = pending.map((record) => planPendingMemoryRecord(record, { signal, db, reEnrich }));
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
continue;
|
|
282
|
-
if ("aborted" in res && res.aborted) {
|
|
283
|
-
result.skippedAborted += 1;
|
|
284
|
-
processed++;
|
|
285
|
-
onProgress?.({
|
|
286
|
-
processed,
|
|
287
|
-
total,
|
|
288
|
-
writtenFacts: result.writtenFacts,
|
|
289
|
-
skippedNoFacts: result.skippedNoFacts,
|
|
290
|
-
currentRef: pending[i]?.ref,
|
|
291
|
-
});
|
|
292
|
-
continue;
|
|
293
|
-
}
|
|
294
|
-
if (res.fromCache) {
|
|
295
|
-
result.cacheHits += 1;
|
|
296
|
-
}
|
|
297
|
-
if ("retryAttempts" in res) {
|
|
298
|
-
result.retryAttempts += res.retryAttempts;
|
|
299
|
-
}
|
|
300
|
-
if (res.skipped) {
|
|
301
|
-
result.skippedNoFacts += 1;
|
|
302
|
-
// Intentionally NOT marked processed — a transient LLM failure should
|
|
303
|
-
// be retried on the next index run.
|
|
304
|
-
}
|
|
305
|
-
else if (res.splitParent) {
|
|
306
|
-
result.splitParents += 1;
|
|
307
|
-
result.writtenFacts += res.written;
|
|
308
|
-
}
|
|
309
|
-
else if ("childExists" in res && res.childExists) {
|
|
310
|
-
// Derived child already on disk. Track separately so this category is
|
|
311
|
-
// observable in health output and stops bleeding into the
|
|
312
|
-
// freshAttempts denominator. Pre-check skips (#588) are the routine
|
|
313
|
-
// self-healing path — no LLM attempt was consumed and the parent has
|
|
314
|
-
// been marked processed — so only the rare post-LLM case (mid-flight
|
|
315
|
-
// race or write failure) warrants a per-ref warning.
|
|
316
|
-
result.skippedChildExists += 1;
|
|
317
|
-
if (!res.precheck) {
|
|
318
|
-
warn(`memory inference: derived child for ${pending[i]?.ref ?? "<unknown>"} already existed or write failed; counted as skippedChildExists`);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
// The per-record state machine should cover every outcome. A hit here
|
|
323
|
-
// means a new code path slipped past the categorisation — surface it
|
|
324
|
-
// loudly so health metrics stay honest and we get a signal to fix.
|
|
325
|
-
result.unaccounted += 1;
|
|
326
|
-
warn(`memory inference: unaccounted per-record outcome for ${pending[i]?.ref ?? "<unknown>"}`);
|
|
327
|
-
}
|
|
264
|
+
if (plans.some((plan) => plan.kind === "model"))
|
|
265
|
+
assertRunnerCredentials(llmRunner);
|
|
266
|
+
let processed = 0;
|
|
267
|
+
const total = pending.length;
|
|
268
|
+
onProgress?.({ processed, total, writtenFacts: 0, skippedNoFacts: 0 });
|
|
269
|
+
let configFailure;
|
|
270
|
+
const perRecordResults = await concurrentMap(plans, (plan) => inferPendingMemoryRecord(plan, {
|
|
271
|
+
config,
|
|
272
|
+
featureConfig,
|
|
273
|
+
signal,
|
|
274
|
+
db,
|
|
275
|
+
reEnrich,
|
|
276
|
+
llmRunner,
|
|
277
|
+
inferTelemetry,
|
|
278
|
+
compressMemoryToDerivedMemory,
|
|
279
|
+
onNotices,
|
|
280
|
+
onConfigFailure: (error) => {
|
|
281
|
+
configFailure ??= error;
|
|
282
|
+
},
|
|
283
|
+
}),
|
|
284
|
+
// Caller-set connection concurrency or 1: `resolveLlmEngineUse` does
|
|
285
|
+
// not forward `engines.<name>.concurrency`, so config cannot raise this.
|
|
286
|
+
llmRunner.connection.concurrency ?? 1);
|
|
287
|
+
if (configFailure)
|
|
288
|
+
throw configFailure;
|
|
289
|
+
for (let i = 0; i < perRecordResults.length; i++) {
|
|
290
|
+
const res = perRecordResults[i];
|
|
291
|
+
if (!res)
|
|
292
|
+
continue;
|
|
293
|
+
if ("aborted" in res && res.aborted) {
|
|
294
|
+
result.skippedAborted += 1;
|
|
328
295
|
processed++;
|
|
329
296
|
onProgress?.({
|
|
330
297
|
processed,
|
|
@@ -333,14 +300,53 @@ export async function runMemoryInferencePass(ctx) {
|
|
|
333
300
|
skippedNoFacts: result.skippedNoFacts,
|
|
334
301
|
currentRef: pending[i]?.ref,
|
|
335
302
|
});
|
|
303
|
+
continue;
|
|
336
304
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
305
|
+
if (res.fromCache) {
|
|
306
|
+
result.cacheHits += 1;
|
|
307
|
+
}
|
|
308
|
+
if ("retryAttempts" in res) {
|
|
309
|
+
result.retryAttempts += res.retryAttempts;
|
|
310
|
+
}
|
|
311
|
+
if (res.skipped) {
|
|
312
|
+
result.skippedNoFacts += 1;
|
|
313
|
+
// Intentionally NOT marked processed — a transient LLM failure should
|
|
314
|
+
// be retried on the next index run.
|
|
315
|
+
}
|
|
316
|
+
else if (res.splitParent) {
|
|
317
|
+
result.splitParents += 1;
|
|
318
|
+
result.writtenFacts += res.written;
|
|
319
|
+
}
|
|
320
|
+
else if ("childExists" in res && res.childExists) {
|
|
321
|
+
// Derived child already on disk. Track separately so this category is
|
|
322
|
+
// observable in health output and stops bleeding into the
|
|
323
|
+
// freshAttempts denominator. Pre-check skips (#588) are the routine
|
|
324
|
+
// self-healing path — no LLM attempt was consumed and the parent has
|
|
325
|
+
// been marked processed — so only the rare post-LLM case (mid-flight
|
|
326
|
+
// race or write failure) warrants a per-ref warning.
|
|
327
|
+
result.skippedChildExists += 1;
|
|
328
|
+
if (!res.precheck) {
|
|
329
|
+
warn(`memory inference: derived child for ${pending[i]?.ref ?? "<unknown>"} already existed or write failed; counted as skippedChildExists`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
// The per-record state machine should cover every outcome. A hit here
|
|
334
|
+
// means a new code path slipped past the categorisation — surface it
|
|
335
|
+
// loudly so health metrics stay honest and we get a signal to fix.
|
|
336
|
+
result.unaccounted += 1;
|
|
337
|
+
warn(`memory inference: unaccounted per-record outcome for ${pending[i]?.ref ?? "<unknown>"}`);
|
|
338
|
+
}
|
|
339
|
+
processed++;
|
|
340
|
+
onProgress?.({
|
|
341
|
+
processed,
|
|
342
|
+
total,
|
|
343
|
+
writtenFacts: result.writtenFacts,
|
|
344
|
+
skippedNoFacts: result.skippedNoFacts,
|
|
345
|
+
currentRef: pending[i]?.ref,
|
|
346
|
+
});
|
|
343
347
|
}
|
|
348
|
+
result.htmlErrorCount = inferTelemetry.htmlErrorCount ?? 0;
|
|
349
|
+
return completeResult();
|
|
344
350
|
}
|
|
345
351
|
// ── Pending detection ───────────────────────────────────────────────────────
|
|
346
352
|
/**
|