akm-cli 0.9.17-alpha.2 → 0.9.17-alpha.4
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 +756 -0
- package/dist/akm +94 -196
- package/dist/cli/shared.js +6 -2
- package/dist/cli.js +22 -9
- 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 +2 -2
- package/dist/commands/health/checks.js +30 -75
- package/dist/commands/health/config-skew.js +38 -0
- package/dist/commands/health/egress.js +54 -0
- package/dist/commands/health/html-report.js +0 -38
- package/dist/commands/health/improve-metrics.js +123 -562
- 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 +11 -106
- package/dist/commands/health/types-improve.js +4 -19
- package/dist/commands/health/windows.js +64 -73
- package/dist/commands/health.js +122 -143
- package/dist/commands/improve/consolidate/chunking.js +25 -100
- package/dist/commands/improve/consolidate/sanitize.js +54 -149
- package/dist/commands/improve/consolidate.js +538 -1075
- 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 -1075
- package/dist/commands/improve/eligibility.js +126 -400
- package/dist/commands/improve/execution.js +3 -5
- package/dist/commands/improve/extract.js +487 -1046
- package/dist/commands/improve/feedback-valence.js +0 -25
- package/dist/commands/improve/improve-cli.js +29 -166
- package/dist/commands/improve/improve-result-file.js +10 -66
- package/dist/commands/improve/improve-strategies.js +12 -7
- package/dist/commands/improve/improve-usage-report.js +18 -64
- package/dist/commands/improve/improve.js +443 -1063
- package/dist/commands/improve/ledger.js +114 -0
- package/dist/commands/improve/locks.js +2 -8
- package/dist/commands/improve/loop-stages.js +459 -1172
- package/dist/commands/improve/memory/derived-ref.js +12 -77
- package/dist/commands/improve/memory/memory-belief.js +14 -118
- package/dist/commands/improve/memory/memory-improve.js +4 -3
- package/dist/commands/improve/outcome-loop.js +28 -156
- package/dist/commands/improve/planner.js +5 -10
- package/dist/commands/improve/preparation.js +851 -2339
- package/dist/commands/improve/proactive-maintenance.js +34 -101
- package/dist/commands/improve/reflect-noise.js +104 -280
- package/dist/commands/improve/reflect.js +621 -1367
- package/dist/commands/improve/salience.js +46 -232
- package/dist/commands/improve/session-asset.js +19 -100
- package/dist/commands/improve/stage.js +323 -0
- package/dist/commands/proposal/drain.js +251 -644
- package/dist/commands/proposal/proposal-cli.js +3 -18
- package/dist/commands/proposal/proposal-types.js +20 -41
- package/dist/commands/proposal/proposal.js +1 -2
- package/dist/commands/proposal/propose.js +134 -160
- package/dist/commands/proposal/repository.js +502 -1487
- 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 +13 -89
- package/dist/commands/read/curate.js +63 -413
- package/dist/commands/read/search-cli.js +16 -33
- package/dist/commands/read/search.js +17 -23
- package/dist/commands/read/show.js +2 -13
- package/dist/commands/sources/bundle-cli.js +25 -2
- package/dist/commands/sources/bundle-config-ops.js +7 -0
- package/dist/commands/sources/dangerous-env-audit.js +1 -2
- package/dist/commands/sources/info.js +2 -11
- 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/stash-cli.js +1 -1
- package/dist/commands/tasks/explain.js +10 -13
- package/dist/commands/tasks/tasks-cli.js +9 -8
- package/dist/commands/tasks/tasks.js +326 -930
- package/dist/commands/tasks/validate.js +42 -21
- package/dist/commands/workflow/plan.js +22 -29
- package/dist/commands/workflow-cli.js +4 -4
- package/dist/core/adapter/adapters/akm-adapter.js +0 -1
- package/dist/core/adapter/adapters/akm-lint.js +2 -3
- package/dist/core/adapter/adapters/akm-metadata.js +11 -12
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +1 -1
- package/dist/core/adapter/execution-source.js +17 -29
- package/dist/core/asset/resolve-ref.js +1 -1
- package/dist/core/bundle-id.js +42 -5
- package/dist/core/bundle-rename.js +291 -0
- package/dist/core/config/config-io.js +1 -2
- package/dist/core/config/config-schema.js +1 -33
- package/dist/core/config/config-walker.js +1 -1
- package/dist/core/config/config.js +163 -68
- 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 +21 -95
- package/dist/core/config/schema/improve.js +4 -42
- 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-lock.js +76 -173
- package/dist/core/logs-db.js +2 -2
- package/dist/core/paths.js +0 -27
- 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 +108 -61
- package/dist/core/state-db-scope.js +2 -4
- package/dist/core/state-db.js +126 -692
- package/dist/core/type-presentation.js +1 -9
- package/dist/core/write-source.js +293 -1012
- 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/graph-db.js +106 -46
- package/dist/indexer/ensure-index.js +44 -85
- package/dist/indexer/graph/graph-extraction.js +340 -562
- package/dist/indexer/graph/graph-related.js +130 -0
- 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 +139 -151
- package/dist/indexer/indexer.js +524 -846
- package/dist/indexer/materialize-embeddings.js +60 -397
- package/dist/indexer/passes/memory-inference.js +81 -90
- package/dist/indexer/passes/metadata.js +132 -200
- package/dist/indexer/read-preflight.js +0 -7
- package/dist/indexer/scan/doc-to-entry.js +1 -3
- package/dist/indexer/scan/drain-dir.js +1 -1
- package/dist/indexer/search/db-search.js +181 -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 +2 -7
- 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/embedders/deterministic.js +2 -3
- package/dist/llm/embedders/profile.js +71 -0
- package/dist/llm/embedders/remote.js +10 -15
- package/dist/llm/graph-extract.js +3 -12
- package/dist/llm/index-passes.js +3 -5
- package/dist/llm/memory-infer.js +1 -2
- package/dist/llm/metadata-enhance.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 +2 -34
- package/dist/output/shapes/passthrough.js +1 -9
- package/dist/{indexer/search/ranking-types.js → output/text/bundle-rename.js} +4 -1
- package/dist/output/text/command-format.js +60 -23
- package/dist/output/text/helpers.js +1 -1
- package/dist/output/text/migrate.js +5 -14
- package/dist/output/text/proposal-format.js +1 -2
- 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 +43937 -93313
- package/dist/scripts/akm-migrate.js +43697 -93071
- 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/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 +0 -17
- 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 +168 -0
- package/dist/storage/repositories/index-connection.js +34 -70
- package/dist/storage/repositories/index-entries-repository.js +69 -111
- package/dist/storage/repositories/index-entry-mapper.js +1 -2
- package/dist/storage/repositories/index-entry-schema.js +83 -269
- package/dist/storage/repositories/index-fts-repository.js +86 -256
- package/dist/storage/repositories/index-llm-cache-repository.js +17 -0
- package/dist/storage/repositories/index-meta-repository.js +6 -4
- package/dist/storage/repositories/index-schema.js +192 -220
- 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 +35 -0
- package/dist/storage/repositories/registry-index-cache-repository.js +100 -0
- 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 +34 -27
- package/dist/tasks/activation-config.js +134 -62
- package/dist/tasks/backends/cron.js +129 -277
- package/dist/tasks/backends/exec-utils.js +2 -5
- package/dist/tasks/backends/launchd.js +125 -745
- package/dist/tasks/backends/schtasks.js +101 -620
- 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/scheduler-binding.js +18 -238
- package/dist/tasks/scheduler-invocation.js +52 -52
- package/dist/tasks/scheduler-lock.js +53 -0
- package/dist/tasks/scheduler-sync.js +363 -679
- package/dist/tasks/source/parse-task-source.js +160 -10
- package/dist/tasks/source/task-source-v3-frozen.js +3 -4
- package/dist/tasks/source/task-to-v4.js +2 -2
- 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 +41 -0
- package/docs/migration/v0.9.1-to-v0.9.2.md +19 -7
- package/docs/reference/cli.md +182 -125
- package/docs/reference/configuration.md +49 -56
- package/docs/reference/data-and-telemetry.md +19 -20
- package/docs/reference/tasks.md +86 -38
- 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 +87 -406
- 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 -146
- package/dist/commands/improve/distill/promote-memory.js +0 -329
- package/dist/commands/improve/distill/quality-gate.js +0 -500
- 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 -21
- 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/config/retired-experimental-keys-shim.js +0 -62
- 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/graph/graph-boost.js +0 -427
- package/dist/indexer/graph/graph-dedup.js +0 -95
- package/dist/indexer/search/name-match.js +0 -35
- package/dist/indexer/search/ranking-contributors.js +0 -515
- 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/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/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 -78
- 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
|
@@ -1,41 +1,12 @@
|
|
|
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
|
-
* Per-command `md` / `html` renderer registries (D7).
|
|
6
|
-
*
|
|
7
|
-
* Mirrors `src/output/text/registry.ts`: a command may register a bespoke
|
|
8
|
-
* renderer for a document format, and anything unregistered falls back to the
|
|
9
|
-
* generic rendering of its shaped envelope (`./generic-render`). The fallback
|
|
10
|
-
* is what makes all six `--format` values universal; the registry is what lets
|
|
11
|
-
* a command that has something better to say — `akm health` and its report
|
|
12
|
-
* templates — say it without the output pipeline knowing that command exists.
|
|
13
|
-
*
|
|
14
|
-
* Kept separate from the module that dispatches through it so per-command
|
|
15
|
-
* renderer modules can import `registerMdRenderer` / `registerHtmlRenderer`
|
|
16
|
-
* without a cycle back into the pipeline, exactly as the text registry does.
|
|
17
|
-
*
|
|
18
|
-
* Returning `null` from a handler means "I have nothing special for this
|
|
19
|
-
* payload" and falls through to the generic renderer — `akm health` uses that
|
|
20
|
-
* to keep its bespoke tables for the shapes that have them while still
|
|
21
|
-
* rendering everything else.
|
|
22
|
-
*/
|
|
23
|
-
import { createCommandRegistry } from "./command-registry.js";
|
|
24
|
-
const MD_RENDERER_REGISTRY = createCommandRegistry();
|
|
25
|
-
const HTML_RENDERER_REGISTRY = createCommandRegistry();
|
|
4
|
+
const mdRenderers = new Map();
|
|
26
5
|
/** Register a Markdown renderer for a command name. */
|
|
27
6
|
export function registerMdRenderer(command, handler) {
|
|
28
|
-
|
|
7
|
+
mdRenderers.set(command, handler);
|
|
29
8
|
}
|
|
30
9
|
/** Look up a registered Markdown renderer, or `undefined` when unregistered. */
|
|
31
10
|
export function getMdRendererHandler(command) {
|
|
32
|
-
return
|
|
33
|
-
}
|
|
34
|
-
/** Register an HTML renderer for a command name. */
|
|
35
|
-
export function registerHtmlRenderer(command, handler) {
|
|
36
|
-
HTML_RENDERER_REGISTRY.register(command, handler);
|
|
37
|
-
}
|
|
38
|
-
/** Look up a registered HTML renderer, or `undefined` when unregistered. */
|
|
39
|
-
export function getHtmlRendererHandler(command) {
|
|
40
|
-
return HTML_RENDERER_REGISTRY.get(command);
|
|
11
|
+
return mdRenderers.get(command);
|
|
41
12
|
}
|
|
@@ -284,40 +284,14 @@ export function shapeSearchHit(hit, detail) {
|
|
|
284
284
|
// `ref` is included at `brief` so agents can run `akm show <ref>` without
|
|
285
285
|
// needing --detail full or --shape agent (REC-03).
|
|
286
286
|
if (detail === "brief") {
|
|
287
|
-
return pickFields(hit, [
|
|
288
|
-
"type",
|
|
289
|
-
"name",
|
|
290
|
-
"ref",
|
|
291
|
-
"action",
|
|
292
|
-
"estimatedTokens",
|
|
293
|
-
"keys",
|
|
294
|
-
"selectedRef",
|
|
295
|
-
"parentRef",
|
|
296
|
-
"fragmentOrdinal",
|
|
297
|
-
"fragmentCount",
|
|
298
|
-
"parentEstimatedTokens",
|
|
299
|
-
]);
|
|
287
|
+
return pickFields(hit, ["type", "name", "ref", "action", "estimatedTokens", "keys"]);
|
|
300
288
|
}
|
|
301
289
|
if (detail === "normal") {
|
|
302
290
|
// `warnings` is projected at `normal` so non-fatal hit-level issues are
|
|
303
291
|
// visible without forcing callers up to `--detail full`. Optional
|
|
304
292
|
// `quality` (v1 spec §4.2) is also surfaced when present so callers
|
|
305
293
|
// can see why a `proposed` entry showed up under `--include-proposed`.
|
|
306
|
-
|
|
307
|
-
// AND->OR lexical ladder produced the hit; cheap compact enum, worth
|
|
308
|
-
// showing without requiring `--detail full`.
|
|
309
|
-
const shaped = capDescription(pickFields(hit, [
|
|
310
|
-
"type",
|
|
311
|
-
"name",
|
|
312
|
-
"description",
|
|
313
|
-
"action",
|
|
314
|
-
"score",
|
|
315
|
-
"estimatedTokens",
|
|
316
|
-
"warnings",
|
|
317
|
-
"quality",
|
|
318
|
-
"matchStage",
|
|
319
|
-
...FRAGMENT_PROVENANCE_FIELDS,
|
|
320
|
-
]), NORMAL_DESCRIPTION_LIMIT);
|
|
294
|
+
const shaped = capDescription(pickFields(hit, ["type", "name", "description", "action", "score", "estimatedTokens", "warnings", "quality"]), NORMAL_DESCRIPTION_LIMIT);
|
|
321
295
|
if (Array.isArray(hit.keys) && hit.keys.length > 0)
|
|
322
296
|
shaped.keys = hit.keys;
|
|
323
297
|
return shaped;
|
|
@@ -338,12 +312,6 @@ export function shapeSearchHitForAgent(hit) {
|
|
|
338
312
|
"score",
|
|
339
313
|
"estimatedTokens",
|
|
340
314
|
"keys",
|
|
341
|
-
// Issue #856: which stage of the progressive AND->OR lexical ladder
|
|
342
|
-
// produced this hit. Agents need this to gauge how much to trust a
|
|
343
|
-
// hit (a strict-AND match is stronger signal than an OR-fallback
|
|
344
|
-
// recovery match) without going to `--detail full`.
|
|
345
|
-
"matchStage",
|
|
346
|
-
...FRAGMENT_PROVENANCE_FIELDS,
|
|
347
315
|
]);
|
|
348
316
|
if (picked.editable !== false)
|
|
349
317
|
delete picked.editHint;
|
|
@@ -8,15 +8,6 @@
|
|
|
8
8
|
// envelope. Never overwrites an existing `shape`, `schemaVersion`, or `ok`;
|
|
9
9
|
// a command whose exit code grades the outcome emits through
|
|
10
10
|
// `outputWithExitCode` (src/cli/shared.ts), which sets `ok` from that code.
|
|
11
|
-
//
|
|
12
|
-
// Builds a shallow copy rather than mutating `result` in place: several
|
|
13
|
-
// command results (e.g. `akm task sync --dry-run`'s `SchedulerPlanPreview`,
|
|
14
|
-
// see src/tasks/scheduler-sync-preview.ts) are deliberately `Object.freeze`d
|
|
15
|
-
// by their producer as an immutability guarantee, and an in-place `obj.shape
|
|
16
|
-
// = …` assignment throws ("Attempting to define property on object that is
|
|
17
|
-
// not extensible") the moment it hits one. Copying tolerates both frozen and
|
|
18
|
-
// mutable inputs uniformly, and `output()` never uses the result's identity
|
|
19
|
-
// past this call, so a copy is safe here.
|
|
20
11
|
function makeStampHandler(command) {
|
|
21
12
|
return (result) => {
|
|
22
13
|
if (result === null || result === undefined)
|
|
@@ -39,6 +30,7 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
39
30
|
"add",
|
|
40
31
|
"agent-result",
|
|
41
32
|
"bundle-create",
|
|
33
|
+
"bundle-rename",
|
|
42
34
|
"bundle-show",
|
|
43
35
|
"clone",
|
|
44
36
|
"command-dry-run",
|
|
@@ -1,4 +1,7 @@
|
|
|
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
|
-
|
|
4
|
+
import { formatBundleRenamePlain } from "./helpers.js";
|
|
5
|
+
export const bundleRenameFormatters = [
|
|
6
|
+
{ command: "bundle-rename", handler: (r) => formatBundleRenamePlain(r) },
|
|
7
|
+
];
|
|
@@ -270,32 +270,10 @@ export function formatSearchPlain(r, detail) {
|
|
|
270
270
|
// Optional v1 spec §4.2 quality marker (e.g. "curated" / "proposed").
|
|
271
271
|
if (typeof hit.quality === "string" && hit.quality)
|
|
272
272
|
lines.push(` quality: ${hit.quality}`);
|
|
273
|
-
// Issue #856: which stage of the progressive AND->OR lexical ladder
|
|
274
|
-
// produced this hit ("exact" | "prefix" | "relaxed").
|
|
275
|
-
if (typeof hit.matchStage === "string" && hit.matchStage)
|
|
276
|
-
lines.push(` matchStage: ${hit.matchStage}`);
|
|
277
273
|
// Surface optional hit-level warnings (v1 spec §4.2).
|
|
278
274
|
if (Array.isArray(hit.warnings) && hit.warnings.length > 0) {
|
|
279
275
|
lines.push(` warnings: ${hit.warnings.join("; ")}`);
|
|
280
276
|
}
|
|
281
|
-
const graph = typeof hit.graph === "object" && hit.graph !== null ? hit.graph : undefined;
|
|
282
|
-
if (graph) {
|
|
283
|
-
const entities = Array.isArray(graph.entities) ? graph.entities : [];
|
|
284
|
-
if (entities.length > 0) {
|
|
285
|
-
const matched = entities
|
|
286
|
-
.filter((entity) => String(entity.kind ?? "") === "matched")
|
|
287
|
-
.map((entity) => String(entity.name ?? "?"));
|
|
288
|
-
const neighbors = entities
|
|
289
|
-
.filter((entity) => String(entity.kind ?? "") !== "matched")
|
|
290
|
-
.map((entity) => String(entity.name ?? "?"));
|
|
291
|
-
lines.push(` graph: ${[
|
|
292
|
-
matched.length > 0 ? `query match=${matched.join(", ")}` : undefined,
|
|
293
|
-
neighbors.length > 0 ? `neighbors=${neighbors.join(", ")}` : undefined,
|
|
294
|
-
]
|
|
295
|
-
.filter(Boolean)
|
|
296
|
-
.join("; ")}`);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
277
|
if (detail === "full") {
|
|
300
278
|
if (hit.path)
|
|
301
279
|
lines.push(` path: ${String(hit.path)}`);
|
|
@@ -556,7 +534,8 @@ export function formatAddPlain(r) {
|
|
|
556
534
|
const index = r.index;
|
|
557
535
|
const scanned = index?.directoriesScanned ?? 0;
|
|
558
536
|
const total = index?.totalEntries ?? 0;
|
|
559
|
-
const
|
|
537
|
+
const bundleSuffix = typeof r.bundleId === "string" && r.bundleId.length > 0 ? ` as bundle "${r.bundleId}"` : "";
|
|
538
|
+
const lines = [`Installed ${r.ref}${bundleSuffix} (${scanned} directories scanned, ${total} total assets indexed)`];
|
|
560
539
|
const warnings = index?.warnings;
|
|
561
540
|
if (Array.isArray(warnings) && warnings.length > 0) {
|
|
562
541
|
lines.push(`Warnings (${warnings.length}):`);
|
|
@@ -589,6 +568,64 @@ export function formatRemovePlain(r) {
|
|
|
589
568
|
const ok = r.ok !== false ? "OK" : "FAILED";
|
|
590
569
|
return `remove: ${target} ${ok}`;
|
|
591
570
|
}
|
|
571
|
+
export function formatBundleRenamePlain(r) {
|
|
572
|
+
const oldId = String(r.oldId ?? "?");
|
|
573
|
+
const newId = String(r.newId ?? "?");
|
|
574
|
+
const applied = r.applied === true;
|
|
575
|
+
const config = r.config ?? {};
|
|
576
|
+
const state = r.state ?? {};
|
|
577
|
+
const index = r.index ?? {};
|
|
578
|
+
const schedulerRefs = Array.isArray(config.schedulerRefs) ? config.schedulerRefs.length : 0;
|
|
579
|
+
const proposalRefs = Number(state.proposalRefs ?? 0);
|
|
580
|
+
const proposalTargets = Number(state.proposalTargets ?? 0);
|
|
581
|
+
const taskHistoryRefs = Number(state.taskHistoryRefs ?? 0);
|
|
582
|
+
const entries = Number(index.entries ?? 0);
|
|
583
|
+
const contentRefs = Array.isArray(r.contentRefs) ? r.contentRefs : [];
|
|
584
|
+
const nativeSchedulerRows = Array.isArray(r.nativeSchedulerRows) ? r.nativeSchedulerRows : [];
|
|
585
|
+
const verb = applied ? "Renamed" : "Would rename";
|
|
586
|
+
const lines = [
|
|
587
|
+
`${verb} bundle "${oldId}" to "${newId}" (${entries} index entries, ${schedulerRefs} scheduler ref(s), ` +
|
|
588
|
+
`${proposalRefs + proposalTargets} proposal reference(s), ${taskHistoryRefs} task-history row(s)).`,
|
|
589
|
+
];
|
|
590
|
+
if (!applied) {
|
|
591
|
+
lines.push("Re-run without --dry-run to apply. It also re-syncs native scheduler bindings under the new name.");
|
|
592
|
+
if (nativeSchedulerRows.length > 0) {
|
|
593
|
+
lines.push(`Native scheduler rows naming "${oldId}//" that the sync would replace:`);
|
|
594
|
+
for (const row of nativeSchedulerRows)
|
|
595
|
+
lines.push(` - ${String(row)}`);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
const taskSync = r.taskSync;
|
|
600
|
+
const syncResult = taskSync?.result;
|
|
601
|
+
if (syncResult) {
|
|
602
|
+
const installed = Array.isArray(syncResult.installed) ? syncResult.installed.length : 0;
|
|
603
|
+
const updated = Array.isArray(syncResult.updated) ? syncResult.updated.length : 0;
|
|
604
|
+
const removed = Array.isArray(syncResult.removed) ? syncResult.removed.length : 0;
|
|
605
|
+
const failures = Array.isArray(syncResult.failures)
|
|
606
|
+
? syncResult.failures
|
|
607
|
+
: [];
|
|
608
|
+
if (failures.length === 0) {
|
|
609
|
+
lines.push(`Native scheduler bindings re-synced under the new name (${installed} installed, ${updated} updated, ${removed} removed).`);
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
lines.push(`Native scheduler sync after rename: ${installed} installed, ${updated} updated, ${removed} removed, ${failures.length} failed.`);
|
|
613
|
+
for (const failure of failures)
|
|
614
|
+
lines.push(` - ${failure.ref ?? failure.path}: ${failure.reason}`);
|
|
615
|
+
lines.push("Run `akm task sync` to retry.");
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
else if (taskSync?.ok === false && taskSync.error) {
|
|
619
|
+
lines.push(`Re-syncing native scheduler bindings failed: ${taskSync.error}. Run \`akm task sync\` to retry.`);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
if (contentRefs.length > 0) {
|
|
623
|
+
lines.push(`Content still spelling "${oldId}//" (not rewritten — edit these by hand):`);
|
|
624
|
+
for (const file of contentRefs)
|
|
625
|
+
lines.push(` - ${String(file)}`);
|
|
626
|
+
}
|
|
627
|
+
return lines.join("\n");
|
|
628
|
+
}
|
|
592
629
|
export function formatUpdatePlain(r) {
|
|
593
630
|
// R-015: `processed` alone conflated three cases into one empty array —
|
|
594
631
|
// a true no-op (--all with nothing configured), a source this call flatly
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* No registry imports — no circular dependencies.
|
|
17
17
|
*/
|
|
18
|
-
export { formatAddPlain, formatBundleShowPlain, formatClonePlain, formatConfigPlain, formatCuratePlain, formatEnvCreatePlain, formatEnvExportPlain, formatEnvListPlain, formatEnvRemovePlain, formatEventLine, formatEventsPlain, formatFeedbackPlain, formatImportPlain, formatIndexPlain, formatInfoPlain, formatInitPlain, formatListPlain, formatModelsListPlain, formatRegistryAddPlain, formatRegistryListPlain, formatRegistryRemovePlain, formatRegistrySearchPlain, formatRememberPlain, formatRemovePlain, formatSearchPlain, formatSyncPlain, formatUpdatePlain, formatUpgradePlain, } from "./command-format.js";
|
|
18
|
+
export { formatAddPlain, formatBundleRenamePlain, formatBundleShowPlain, formatClonePlain, formatConfigPlain, formatCuratePlain, formatEnvCreatePlain, formatEnvExportPlain, formatEnvListPlain, formatEnvRemovePlain, formatEventLine, formatEventsPlain, formatFeedbackPlain, formatImportPlain, formatIndexPlain, formatInfoPlain, formatInitPlain, formatListPlain, formatModelsListPlain, formatRegistryAddPlain, formatRegistryListPlain, formatRegistryRemovePlain, formatRegistrySearchPlain, formatRememberPlain, formatRemovePlain, formatSearchPlain, formatSyncPlain, formatUpdatePlain, formatUpgradePlain, } from "./command-format.js";
|
|
19
19
|
export { formatHealthPlain } from "./health-format.js";
|
|
20
20
|
export { formatLintPlain } from "./lint-format.js";
|
|
21
21
|
export { formatGateDecisionSummary, formatProposalAcceptPlain, formatProposalDiffPlain, formatProposalDrainPlain, formatProposalListPlain, formatProposalProducerPlain, formatProposalRejectPlain, formatProposalShowPlain, } from "./proposal-format.js";
|
|
@@ -18,27 +18,18 @@ export function formatMigratePlain(result) {
|
|
|
18
18
|
if (typeof plan.status !== "string")
|
|
19
19
|
return null;
|
|
20
20
|
const lines = [`${planGlyph(plan.status)} ${plan.status}`];
|
|
21
|
-
if (plan.
|
|
22
|
-
const tasks = plan.
|
|
23
|
-
lines.push(` task
|
|
24
|
-
}
|
|
25
|
-
if (plan.taskV4Migration) {
|
|
26
|
-
const tasks = plan.taskV4Migration;
|
|
27
|
-
lines.push(` task-v3->v4: ${tasks.changed} change, ${tasks.skipped} current, ${tasks.blocked} blocked`);
|
|
21
|
+
if (plan.taskFiles) {
|
|
22
|
+
const tasks = plan.taskFiles;
|
|
23
|
+
lines.push(` task files: ${tasks.changed} change, ${tasks.skipped} current, ${tasks.blocked} blocked`);
|
|
28
24
|
}
|
|
29
25
|
if (plan.blockers?.length) {
|
|
30
26
|
lines.push("", "blockers:", ...plan.blockers.map((blocker) => ` - ${blocker}`));
|
|
31
27
|
}
|
|
32
28
|
if (plan.backupPath) {
|
|
33
|
-
lines.push("", `backup
|
|
29
|
+
lines.push("", `backup: ${plan.backupPath}`);
|
|
34
30
|
}
|
|
35
31
|
if (plan.applied !== undefined)
|
|
36
|
-
lines.push(`applied
|
|
37
|
-
if (plan.taskV4BackupPath) {
|
|
38
|
-
lines.push(`backup (v3->v4): ${plan.taskV4BackupPath}`);
|
|
39
|
-
}
|
|
40
|
-
if (plan.taskV4Applied !== undefined)
|
|
41
|
-
lines.push(`applied (v3->v4): ${plan.taskV4Applied}`);
|
|
32
|
+
lines.push(`applied: ${plan.applied}`);
|
|
42
33
|
return lines.join("\n");
|
|
43
34
|
}
|
|
44
35
|
export const migrateFormatters = [
|
|
@@ -184,7 +184,6 @@ export function formatProposalRejectPlain(r) {
|
|
|
184
184
|
return `Rejected proposal ${String(r.id)} (${String(r.ref)})${reason}`;
|
|
185
185
|
}
|
|
186
186
|
export function formatProposalDrainPlain(r) {
|
|
187
|
-
const policy = String(r.policy ?? "?");
|
|
188
187
|
const applyMode = String(r.applyMode ?? "queue");
|
|
189
188
|
const promoted = Array.isArray(r.promoted) ? r.promoted : [];
|
|
190
189
|
const rejected = Array.isArray(r.rejected) ? r.rejected : [];
|
|
@@ -194,7 +193,7 @@ export function formatProposalDrainPlain(r) {
|
|
|
194
193
|
const failed = Array.isArray(r.failed) ? r.failed : [];
|
|
195
194
|
const prefix = r.dryRun === true ? "[dry-run] " : "";
|
|
196
195
|
const lines = [
|
|
197
|
-
`${prefix}Drained proposal queue (strategy=${String(r.strategy ?? "?")},
|
|
196
|
+
`${prefix}Drained proposal queue (strategy=${String(r.strategy ?? "?")}, applyMode=${applyMode})`,
|
|
198
197
|
` promoted: ${promoted.length}`,
|
|
199
198
|
` rejected: ${rejected.length}`,
|
|
200
199
|
` deferred: ${deferred.length}`,
|
|
@@ -108,13 +108,6 @@ export function formatWorkflowStatusPlain(result) {
|
|
|
108
108
|
const attempts = typeof unit.attempts === "number" ? unit.attempts : undefined;
|
|
109
109
|
const suffix = attempts !== undefined && attempts > 1 ? `, attempt ${attempts}` : "";
|
|
110
110
|
lines.push(` - ${id} [${node}] (${status}${suffix})`);
|
|
111
|
-
// Codex round-3 finding B: a `running` claim gone silent past the check-in
|
|
112
|
-
// window — the process holding it likely died. Surface it (with the claim
|
|
113
|
-
// holder) so a human can reclaim/re-run the unit.
|
|
114
|
-
if (unit.stale === true) {
|
|
115
|
-
const holder = typeof unit.claimHolder === "string" && unit.claimHolder.trim() ? ` claimed by ${unit.claimHolder}` : "";
|
|
116
|
-
lines.push(` stale: claim went silent past the check-in window${holder} — its driver may have died`);
|
|
117
|
-
}
|
|
118
111
|
if (typeof unit.failureReason === "string" && unit.failureReason.trim()) {
|
|
119
112
|
lines.push(` failure_reason: ${unit.failureReason}`);
|
|
120
113
|
}
|
|
@@ -126,27 +119,8 @@ export function formatWorkflowStatusPlain(result) {
|
|
|
126
119
|
}
|
|
127
120
|
}
|
|
128
121
|
}
|
|
129
|
-
// Review C2: the check-in `continue` directive must survive plain-text
|
|
130
|
-
// rendering — JSON consumers saw `checkin` but the text path dropped it.
|
|
131
|
-
const checkinLine = formatWorkflowCheckinLine(result);
|
|
132
|
-
if (checkinLine) {
|
|
133
|
-
lines.push("");
|
|
134
|
-
lines.push(checkinLine);
|
|
135
|
-
}
|
|
136
122
|
return lines.join("\n");
|
|
137
123
|
}
|
|
138
|
-
/**
|
|
139
|
-
* Render the stalled-run check-in directive (#506) when present on a
|
|
140
|
-
* workflow-status result. Returns null when the run is healthy.
|
|
141
|
-
*/
|
|
142
|
-
function formatWorkflowCheckinLine(result) {
|
|
143
|
-
const checkin = typeof result.checkin === "object" && result.checkin !== null
|
|
144
|
-
? result.checkin
|
|
145
|
-
: undefined;
|
|
146
|
-
if (!checkin || typeof checkin.directive !== "string" || !checkin.directive.trim())
|
|
147
|
-
return null;
|
|
148
|
-
return checkin.directive.trim();
|
|
149
|
-
}
|
|
150
124
|
/**
|
|
151
125
|
* One `! lowering[<severity>] <code> (<adapter>[; <field>]): <message>` line
|
|
152
126
|
* from a `{code, severity, adapter, field?, message}` lowering notice, or
|
|
@@ -346,12 +320,6 @@ export function formatWorkflowPlanPlain(result) {
|
|
|
346
320
|
for (const [index, step] of steps.entries()) {
|
|
347
321
|
renderPlanStepLines(step, index + 1, lines);
|
|
348
322
|
}
|
|
349
|
-
const sourceReadSet = Array.isArray(result.sourceReadSet) ? result.sourceReadSet : [];
|
|
350
|
-
if (sourceReadSet.length > 0) {
|
|
351
|
-
lines.push("read set:");
|
|
352
|
-
for (const entry of sourceReadSet)
|
|
353
|
-
lines.push(` ${String(entry)}`);
|
|
354
|
-
}
|
|
355
323
|
const notices = Array.isArray(result.notices) ? result.notices : [];
|
|
356
324
|
if (notices.length > 0) {
|
|
357
325
|
lines.push("notices:");
|
package/dist/output/text.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { writeStdout } from "./stdout.js";
|
|
5
5
|
import { addFormatters } from "./text/add.js";
|
|
6
6
|
import { bundleCreateFormatters } from "./text/bundle-create.js";
|
|
7
|
+
import { bundleRenameFormatters } from "./text/bundle-rename.js";
|
|
7
8
|
import { bundleShowFormatters } from "./text/bundle-show.js";
|
|
8
9
|
import { cloneFormatters } from "./text/clone.js";
|
|
9
10
|
import { configFormatters } from "./text/config.js";
|
|
@@ -40,6 +41,7 @@ import { workflowFormatters } from "./text/workflow.js";
|
|
|
40
41
|
// compile instead of silently disappearing at runtime.
|
|
41
42
|
const BUILT_IN_TEXT_FORMATTERS = [
|
|
42
43
|
...bundleCreateFormatters,
|
|
44
|
+
...bundleRenameFormatters,
|
|
43
45
|
...bundleShowFormatters,
|
|
44
46
|
...indexFormatters,
|
|
45
47
|
...showFormatters,
|
package/dist/registry/factory.js
CHANGED
|
@@ -1,30 +1,15 @@
|
|
|
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
|
-
* Registry provider factory map.
|
|
6
|
-
*
|
|
7
|
-
* Maps registry provider type identifiers (e.g. "static-index", "skills-sh")
|
|
8
|
-
* to factory functions that create RegistryProvider instances.
|
|
9
|
-
*
|
|
10
|
-
* "Registry" here refers to the stash discovery registries (static index files,
|
|
11
|
-
* skills.sh API) — not to be confused with the source provider factory map in
|
|
12
|
-
* `sources/provider-factory.ts` or the installed-source operations in
|
|
13
|
-
* `installed-stashes.ts`.
|
|
14
|
-
*
|
|
15
|
-
* Factories use the `RegistryProviderFactory` type owned by
|
|
16
|
-
* `src/registry/providers/types.ts`.
|
|
17
|
-
*/
|
|
18
|
-
import { createProviderRegistry } from "./create-provider-registry.js";
|
|
19
4
|
// ── Factory map ─────────────────────────────────────────────────────────────
|
|
20
|
-
const
|
|
5
|
+
const factories = new Map();
|
|
21
6
|
export function registerRegistryProvider(type, factory) {
|
|
22
|
-
|
|
7
|
+
factories.set(type, factory);
|
|
23
8
|
}
|
|
24
9
|
export function resolveRegistryProviderFactory(type) {
|
|
25
|
-
return
|
|
10
|
+
return factories.get(type) ?? null;
|
|
26
11
|
}
|
|
27
12
|
/** Test-only seam: removes a registration made with {@link registerRegistryProvider}. */
|
|
28
13
|
export function unregisterRegistryProvider(type) {
|
|
29
|
-
|
|
14
|
+
factories.delete(type);
|
|
30
15
|
}
|