akm-cli 0.9.0-rc.0 → 0.9.0-rc.13
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 +1283 -22
- package/README.md +62 -37
- package/SECURITY.md +46 -31
- package/dist/akm +162 -38
- package/dist/akm-migrate +44 -0
- package/dist/assets/backends/schtasks-template.xml +2 -1
- package/dist/assets/hints/cli-hints-full.md +268 -118
- package/dist/assets/hints/cli-hints-short.md +87 -24
- package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
- package/dist/assets/improve-strategies/frequent.json +15 -0
- package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
- package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
- package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
- package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
- package/dist/assets/improve-strategies/reflect-distill.json +30 -0
- package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
- package/dist/assets/prompts/consolidate-system.md +5 -5
- package/dist/assets/prompts/extract-session.md +2 -6
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
- package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
- package/dist/assets/prompts/reflect-output-repair.md +3 -0
- package/dist/assets/prompts/workflow-unit-preamble.md +26 -0
- package/dist/assets/stash-skeleton/README.md +38 -10
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
- package/dist/assets/tasks/core/extract.yml +3 -2
- package/dist/assets/tasks/core/improve.yml +2 -1
- package/dist/assets/tasks/core/index-refresh.yml +1 -0
- package/dist/assets/tasks/core/sync.yml +1 -0
- package/dist/assets/tasks/core/version-check.yml +2 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
- package/dist/assets/templates/html/health.html +5 -4
- package/dist/assets/workflows/workflow-template.md +31 -15
- package/dist/cli/invocation.js +279 -0
- package/dist/cli/parse-args.js +5 -90
- package/dist/cli/retired-commands.js +78 -0
- package/dist/cli/shared.js +158 -48
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +747 -293
- package/dist/commands/agent/agent-dispatch.js +19 -18
- package/dist/commands/agent/agent-support.js +0 -24
- package/dist/commands/agent/contribute-cli.js +43 -97
- package/dist/commands/completions.js +80 -23
- package/dist/commands/config-cli.js +44 -281
- package/dist/commands/env/env-binding.js +99 -0
- package/dist/commands/env/env-cli.js +84 -224
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +45 -61
- package/dist/commands/env/secret.js +32 -62
- package/dist/commands/feedback-cli.js +179 -85
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +7 -8
- package/dist/commands/health/checks.js +279 -94
- package/dist/commands/health/html-report.js +197 -578
- package/dist/commands/health/improve-metrics.js +277 -246
- package/dist/commands/health/llm-usage.js +19 -19
- package/dist/commands/health/md-report.js +16 -7
- package/dist/commands/health/metrics.js +67 -32
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +508 -0
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +16 -56
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
- package/dist/commands/health/types-improve.js +29 -0
- package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
- package/dist/commands/health/types-result.js +7 -0
- package/dist/commands/health/types-runs.js +4 -0
- package/dist/commands/health/types-session-log.js +4 -0
- package/dist/commands/health/types-windows.js +4 -0
- package/dist/commands/health/types.js +26 -21
- package/dist/commands/health/windows.js +2 -3
- package/dist/commands/health.js +296 -167
- package/dist/commands/improve/anti-collapse.js +5 -5
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +65 -52
- package/dist/commands/improve/consolidate/chunking.js +9 -7
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +454 -1354
- package/dist/commands/improve/content-hash.js +39 -0
- package/dist/commands/improve/distill/content-repair.js +4 -10
- package/dist/commands/improve/distill/promote-memory.js +89 -64
- package/dist/commands/improve/distill/quality-gate.js +118 -42
- package/dist/commands/improve/distill-guards.js +1 -1
- package/dist/commands/improve/distill-promotion-policy.js +33 -888
- package/dist/commands/improve/distill.js +607 -363
- package/dist/commands/improve/eligibility.js +165 -79
- package/dist/commands/improve/extract-cli.js +35 -126
- package/dist/commands/improve/extract-prompt.js +6 -35
- package/dist/commands/improve/extract.js +640 -391
- package/dist/commands/improve/feedback-valence.js +2 -12
- package/dist/commands/improve/improve-cli.js +134 -135
- package/dist/commands/improve/improve-result-file.js +30 -50
- package/dist/commands/improve/improve-run-types.js +4 -0
- package/dist/commands/improve/improve-strategies.js +135 -0
- package/dist/commands/improve/improve.js +904 -701
- package/dist/commands/improve/locks.js +64 -111
- package/dist/commands/improve/loop-stages.js +1110 -923
- package/dist/commands/improve/memory/derived-ref.js +124 -0
- package/dist/commands/improve/memory/memory-belief.js +79 -7
- package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
- package/dist/commands/improve/memory/memory-improve.js +25 -37
- package/dist/commands/improve/outcome-loop.js +25 -88
- package/dist/commands/improve/preparation.js +1034 -813
- package/dist/commands/improve/proactive-maintenance.js +34 -9
- package/dist/commands/improve/proposal-envelope.js +31 -0
- package/dist/commands/improve/reflect.js +983 -794
- package/dist/commands/improve/run-context.js +119 -0
- package/dist/commands/improve/salience.js +24 -127
- package/dist/commands/improve/session-asset.js +7 -3
- package/dist/commands/improve/shared.js +14 -34
- package/dist/commands/improve/source-identity.js +28 -0
- package/dist/commands/improve/triage.js +20 -17
- package/dist/commands/lint/base-linter.js +340 -313
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +185 -30
- package/dist/commands/{events.js → log.js} +28 -38
- package/dist/commands/migrate-cli.js +54 -0
- package/dist/commands/migration-tool.js +55 -0
- package/dist/commands/observability-cli.js +70 -208
- package/dist/commands/proposal/diff-format.js +50 -0
- package/dist/commands/proposal/drain-policies.js +0 -6
- package/dist/commands/proposal/drain.js +91 -40
- package/dist/commands/proposal/proposal-cli.js +134 -132
- package/dist/commands/proposal/proposal-types.js +56 -0
- package/dist/commands/proposal/proposal.js +83 -65
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +105 -88
- package/dist/commands/proposal/repository.js +1303 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
- package/dist/commands/proposal/validators/proposal-validators.js +61 -12
- package/dist/commands/proposal/validators/proposals.js +6 -8
- package/dist/commands/read/curate.js +78 -73
- package/dist/commands/read/knowledge.js +510 -13
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +84 -15
- package/dist/commands/read/search-cli.js +203 -96
- package/dist/commands/read/search.js +126 -94
- package/dist/commands/read/show.js +226 -250
- package/dist/commands/registry-cli.js +34 -60
- package/dist/commands/remember.js +18 -57
- package/dist/commands/sources/add-cli.js +104 -49
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +63 -0
- package/dist/commands/sources/info.js +27 -15
- package/dist/commands/sources/init.js +30 -40
- package/dist/commands/sources/installed-stashes.js +469 -172
- package/dist/commands/sources/migration-help.js +7 -4
- package/dist/commands/sources/schema-repair.js +10 -9
- package/dist/commands/sources/self-update.js +182 -121
- package/dist/commands/sources/source-add.js +169 -178
- package/dist/commands/sources/source-clone.js +144 -41
- package/dist/commands/sources/source-manage.js +94 -59
- package/dist/commands/sources/sources-cli.js +64 -205
- package/dist/commands/sources/stash-cli.js +91 -54
- package/dist/commands/sources/stash-skeleton.js +1 -1
- package/dist/commands/tasks/tasks-cli.js +106 -104
- package/dist/commands/tasks/tasks.js +445 -262
- package/dist/commands/workflow-cli.js +232 -121
- package/dist/core/action-contributors.js +1 -1
- package/dist/core/activation-policy.js +49 -0
- package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
- package/dist/core/adapter/adapters/akm-adapter.js +528 -0
- package/dist/core/adapter/adapters/akm-lint.js +392 -0
- package/dist/core/adapter/adapters/akm-metadata.js +387 -0
- package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
- package/dist/core/adapter/adapters/claude-adapter.js +61 -0
- package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
- package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
- package/dist/core/adapter/adapters/index.js +80 -0
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
- package/dist/core/adapter/adapters/okf-adapter.js +391 -0
- package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
- package/dist/core/adapter/adapters/shared.js +286 -0
- package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
- package/dist/core/adapter/bundle-adapter.js +4 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +44 -0
- package/dist/core/adapter/registry.js +56 -0
- package/dist/core/adapter/types.js +4 -0
- package/dist/core/asset/akm-markdown.js +30 -0
- package/dist/core/asset/asset-placement.js +243 -0
- package/dist/core/asset/asset-ref.js +110 -79
- package/dist/core/asset/asset-serialize.js +20 -0
- package/dist/core/asset/frontmatter.js +28 -12
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +274 -0
- package/dist/core/asset/stash-meta.js +2 -2
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +281 -86
- package/dist/core/config/config-io.js +42 -128
- package/dist/core/config/config-schema.js +233 -834
- package/dist/core/config/config-sources.js +162 -39
- package/dist/core/config/config-types.js +16 -11
- package/dist/core/config/config-version.js +29 -0
- package/dist/core/config/config-walker.js +126 -37
- package/dist/core/config/config.js +154 -331
- package/dist/core/config/deep-merge.js +41 -0
- package/dist/core/config/engine-semantics.js +28 -0
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +38 -0
- package/dist/core/config/schema/engines.js +116 -0
- package/dist/core/config/schema/experimental.js +47 -0
- package/dist/core/config/schema/feedback.js +31 -0
- package/dist/core/config/schema/improve-processes.js +389 -0
- package/dist/core/config/schema/improve.js +94 -0
- package/dist/core/config/schema/index-config.js +176 -0
- package/dist/core/config/schema/output.js +18 -0
- package/dist/core/config/schema/primitives.js +94 -0
- package/dist/core/config/schema/search.js +30 -0
- package/dist/core/config/schema/setup.js +18 -0
- package/dist/core/config/schema/sources-bundles.js +169 -0
- package/dist/core/config/schema/workflow.js +29 -0
- package/dist/core/env-secret-ref.js +155 -20
- package/dist/core/errors.js +17 -15
- package/dist/core/events-types.js +4 -0
- package/dist/core/events.js +46 -128
- package/dist/core/extra-params.js +62 -0
- package/dist/core/file-change.js +17 -0
- package/dist/core/file-lock.js +202 -57
- package/dist/core/fs-txn.js +392 -0
- package/dist/core/git-message.js +59 -0
- package/dist/core/improve-result.js +167 -0
- package/dist/core/json-schema.js +142 -0
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +1 -1
- package/dist/core/maintenance-barrier.js +135 -0
- package/dist/core/migration-operation.js +44 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/paths.js +22 -25
- package/dist/core/platform.js +10 -0
- package/dist/core/recognition-util.js +128 -0
- package/dist/core/redaction.js +392 -0
- package/dist/core/standards/resolve-standards-context.js +36 -65
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +5 -5
- package/dist/core/state/migrations.js +242 -11
- package/dist/core/state-db.js +98 -10
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +303 -0
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/time.js +20 -0
- package/dist/core/type-presentation.js +130 -0
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +834 -118
- package/dist/indexer/bundle-identity-guard.js +92 -0
- package/dist/indexer/db/graph-db.js +1 -25
- package/dist/indexer/db/llm-cache.js +1 -1
- package/dist/indexer/ensure-index.js +30 -9
- package/dist/indexer/graph/graph-boost.js +9 -30
- package/dist/indexer/graph/graph-extraction.js +41 -27
- package/dist/indexer/graph/graph-types.js +4 -0
- package/dist/indexer/index-writer-lock.js +93 -49
- package/dist/indexer/index-written-assets.js +100 -53
- package/dist/indexer/indexer.js +746 -329
- package/dist/indexer/init.js +18 -25
- package/dist/indexer/installations.js +142 -0
- package/dist/indexer/passes/dir-staleness.js +18 -10
- package/dist/indexer/passes/memory-inference.js +25 -15
- package/dist/indexer/passes/metadata.js +412 -243
- package/dist/indexer/scan/doc-to-entry.js +160 -0
- package/dist/indexer/scan/drain-dir.js +134 -0
- package/dist/indexer/search/db-search.js +292 -108
- package/dist/indexer/search/fts-query.js +64 -0
- package/dist/indexer/search/ranking-contributors.js +145 -25
- package/dist/indexer/search/ranking-types.js +4 -0
- package/dist/indexer/search/ranking.js +28 -71
- package/dist/indexer/search/search-attribution.js +67 -0
- package/dist/indexer/search/search-fields.js +18 -3
- package/dist/indexer/search/search-hit-enrichers.js +30 -40
- package/dist/indexer/search/search-source.js +157 -111
- package/dist/indexer/search/semantic-status.js +4 -1
- package/dist/indexer/usage/usage-events.js +10 -30
- package/dist/indexer/walk/file-context.js +3 -45
- package/dist/indexer/walk/matchers.js +42 -34
- package/dist/indexer/walk/path-resolver.js +11 -5
- package/dist/indexer/walk/walker.js +42 -14
- package/dist/integrations/agent/builder-shared.js +7 -0
- package/dist/integrations/agent/builders.js +5 -56
- package/dist/integrations/agent/config.js +3 -143
- package/dist/integrations/agent/detect.js +17 -2
- package/dist/integrations/agent/engine-resolution.js +231 -0
- package/dist/integrations/agent/index.js +1 -2
- package/dist/integrations/agent/model-aliases.js +16 -2
- package/dist/integrations/agent/profiles.js +36 -62
- package/dist/integrations/agent/prompts.js +46 -18
- package/dist/integrations/agent/runner-dispatch.js +93 -4
- package/dist/integrations/agent/runner.js +76 -208
- package/dist/integrations/agent/spawn.js +88 -196
- package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
- package/dist/integrations/harnesses/aider/index.js +48 -0
- package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
- package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
- package/dist/integrations/harnesses/amazonq/index.js +45 -0
- package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
- package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
- package/dist/integrations/harnesses/claude/config-import.js +1 -3
- package/dist/integrations/harnesses/claude/index.js +24 -35
- package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
- package/dist/integrations/harnesses/claude/session-log.js +27 -75
- package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
- package/dist/integrations/harnesses/codex/index.js +52 -0
- package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
- package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
- package/dist/integrations/harnesses/copilot/index.js +48 -0
- package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
- package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
- package/dist/integrations/harnesses/gemini/index.js +48 -0
- package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
- package/dist/integrations/harnesses/ids.js +24 -0
- package/dist/integrations/harnesses/index.js +54 -34
- package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
- package/dist/integrations/harnesses/opencode/config-import.js +1 -3
- package/dist/integrations/harnesses/opencode/index.js +14 -32
- package/dist/integrations/harnesses/opencode/session-log.js +67 -125
- package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
- package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
- package/dist/integrations/harnesses/openhands/index.js +48 -0
- package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
- package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
- package/dist/integrations/harnesses/pi/index.js +45 -0
- package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
- package/dist/integrations/harnesses/shared.js +17 -0
- package/dist/integrations/harnesses/types.js +43 -32
- package/dist/integrations/lockfile.js +211 -24
- package/dist/integrations/session-logs/index.js +36 -39
- package/dist/integrations/session-logs/provider-base.js +113 -0
- package/dist/llm/client.js +182 -110
- package/dist/llm/embedders/deterministic.js +2 -2
- package/dist/llm/embedders/remote.js +21 -9
- package/dist/llm/feature-gate.js +17 -57
- package/dist/llm/graph-extract.js +12 -13
- package/dist/llm/index-passes.js +8 -42
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +45 -30
- package/dist/llm/structured-call.js +16 -8
- package/dist/llm/usage-persist.js +30 -5
- package/dist/llm/usage-telemetry.js +59 -6
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/command-registry.js +27 -0
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +251 -0
- package/dist/output/html-render.js +11 -16
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -279
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +58 -84
- package/dist/output/shapes/passthrough.js +11 -39
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes/registry.js +12 -6
- package/dist/output/shapes.js +0 -9
- package/dist/output/text/{init.js → bundle-create.js} +3 -1
- package/dist/output/text/bundle-show.js +7 -0
- package/dist/output/text/command-format.js +562 -0
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/helpers.js +15 -1164
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +202 -0
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/registry.js +12 -6
- package/dist/output/text/show-directives.js +117 -0
- package/dist/output/text/show-format.js +103 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +332 -0
- package/dist/output/text/workflow.js +3 -2
- package/dist/output/text.js +10 -19
- package/dist/registry/factory.js +4 -6
- package/dist/registry/origin-resolve.js +16 -27
- package/dist/registry/providers/skills-sh.js +3 -3
- package/dist/registry/providers/static-index.js +15 -25
- package/dist/registry/resolve.js +43 -94
- package/dist/registry/semver.js +43 -0
- package/dist/runtime.js +81 -12
- package/dist/scripts/akm-migrate.js +35529 -0
- package/dist/setup/detect.js +5 -7
- package/dist/setup/detected-engines.js +136 -0
- package/dist/setup/engine-config.js +100 -0
- package/dist/setup/registry-stash-loader.js +3 -3
- package/dist/setup/semantic-assets.js +12 -9
- package/dist/setup/setup.js +444 -208
- package/dist/setup/steps/connection-shared.js +120 -0
- package/dist/setup/steps/connection.js +108 -305
- package/dist/setup/steps/platforms.js +13 -12
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +21 -15
- package/dist/setup/steps/stashdir.js +6 -4
- package/dist/setup/steps/tasks.js +236 -119
- package/dist/setup/steps.js +3 -2
- package/dist/sources/freshness.js +39 -0
- package/dist/sources/provider-factory.js +11 -17
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +278 -34
- package/dist/sources/providers/git-provider.js +54 -56
- package/dist/sources/providers/git-stash.js +420 -91
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +47 -22
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +2 -2
- package/dist/sources/resolve.js +11 -10
- package/dist/sources/snapshot-fetchers/types.js +4 -0
- package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
- package/dist/storage/database.js +60 -4
- package/dist/storage/engines/sqlite-migrations.js +156 -5
- package/dist/storage/locations.js +1 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +51 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -32
- package/dist/storage/repositories/index-connection.js +79 -0
- package/dist/storage/repositories/index-db.js +4 -3
- package/dist/storage/repositories/index-entries-repository.js +863 -0
- package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
- package/dist/storage/repositories/index-entry-types.js +4 -0
- package/dist/storage/repositories/index-fts-repository.js +167 -0
- package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
- package/dist/storage/repositories/index-meta-repository.js +49 -0
- package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
- package/dist/storage/repositories/index-sql.js +12 -0
- package/dist/storage/repositories/index-utility-repository.js +356 -0
- package/dist/storage/repositories/index-vec-repository.js +250 -0
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +317 -75
- package/dist/storage/repositories/registry-cache.js +1 -1
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +110 -3
- package/dist/storage/repositories/workflow-runs-repository.js +240 -19
- package/dist/tasks/backends/cron.js +169 -46
- package/dist/tasks/backends/exec-utils.js +76 -3
- package/dist/tasks/backends/index.js +6 -9
- package/dist/tasks/backends/launchd.js +292 -55
- package/dist/tasks/backends/schtasks.js +557 -70
- package/dist/tasks/backends/types.js +4 -0
- package/dist/tasks/command-executable.js +93 -0
- package/dist/tasks/embedded.js +56 -38
- package/dist/tasks/parser.js +156 -64
- package/dist/tasks/resolve-akm-bin.js +144 -51
- package/dist/tasks/runner.js +377 -209
- package/dist/tasks/schedule.js +108 -19
- package/dist/tasks/scheduler-invocation.js +296 -0
- package/dist/tasks/schema.js +1 -1
- package/dist/tasks/task-id.js +35 -0
- package/dist/tasks/validator.js +30 -16
- package/dist/text-import-hook.mjs +1 -1
- package/dist/workflows/authoring/authoring.js +104 -43
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/cli.js +0 -16
- package/dist/workflows/concurrency-policy.js +15 -0
- package/dist/workflows/exec/brief.js +450 -0
- package/dist/workflows/exec/frozen-judge.js +47 -0
- package/dist/workflows/exec/native-executor.js +1038 -0
- package/dist/workflows/exec/param-secrets.js +115 -0
- package/dist/workflows/exec/report.js +1460 -0
- package/dist/workflows/exec/run-workflow.js +602 -0
- package/dist/workflows/exec/scheduler.js +71 -0
- package/dist/workflows/exec/step-work.js +1190 -0
- package/dist/workflows/exec/unit-writer.js +23 -0
- package/dist/workflows/exec/workflow-engine-gate.js +67 -0
- package/dist/workflows/exec/worktree.js +171 -0
- package/dist/workflows/ir/compile.js +246 -0
- package/dist/workflows/ir/freeze.js +233 -0
- package/dist/workflows/ir/params.js +54 -0
- package/dist/workflows/ir/plan-hash.js +68 -0
- package/dist/workflows/ir/schema.js +540 -0
- package/dist/workflows/parser.js +878 -304
- package/dist/workflows/program/expressions.js +181 -0
- package/dist/workflows/program/schema.js +51 -0
- package/dist/workflows/renderer.js +100 -45
- package/dist/workflows/resource-limits.js +22 -0
- package/dist/workflows/runtime/agent-identity.js +59 -14
- package/dist/workflows/runtime/checkin.js +1 -1
- package/dist/workflows/runtime/plan-classifier.js +131 -0
- package/dist/workflows/runtime/runs.js +376 -119
- package/dist/workflows/runtime/unit-checkin.js +45 -0
- package/dist/workflows/runtime/unit-phases.js +20 -0
- package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +2 -3
- package/dist/workflows/validator.js +52 -30
- package/docs/README.md +42 -78
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +9 -8
- package/docs/migration/release-notes/0.9.0.md +158 -14
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +844 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/data-and-telemetry.md +333 -0
- package/package.json +21 -17
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +4636 -0
- package/schemas/akm-task.json +87 -0
- package/schemas/akm-workflow.json +373 -0
- package/dist/akm-migrate-storage +0 -38
- package/dist/assets/help/help-accept.md +0 -12
- package/dist/assets/help/help-improve.md +0 -84
- package/dist/assets/help/help-proposals.md +0 -17
- package/dist/assets/help/help-propose.md +0 -17
- package/dist/assets/help/help-reject.md +0 -11
- package/dist/assets/profiles/frequent.json +0 -13
- package/dist/assets/profiles/recombine-only.json +0 -21
- package/dist/assets/profiles/reflect-distill.json +0 -30
- package/dist/assets/profiles/synthesize.json +0 -15
- package/dist/assets/prompts/procedural-system.md +0 -44
- package/dist/assets/prompts/recombine-system.md +0 -40
- package/dist/assets/prompts/staleness-detect-system.md +0 -6
- package/dist/assets/tasks/core/backup.yml +0 -4
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/assets/templates/html/default.html +0 -78
- package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
- package/dist/assets/wiki/index-template.md +0 -12
- package/dist/assets/wiki/ingest-workflow-template.md +0 -83
- package/dist/assets/wiki/log-template.md +0 -8
- package/dist/assets/wiki/schema-template.md +0 -61
- package/dist/cli/config-migrate.js +0 -150
- package/dist/cli/config-validate.js +0 -39
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -487
- package/dist/commands/improve/calibration.js +0 -161
- package/dist/commands/improve/dedup.js +0 -482
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/improve/hot-probation.js +0 -45
- package/dist/commands/improve/improve-auto-accept.js +0 -276
- package/dist/commands/improve/improve-profiles.js +0 -168
- package/dist/commands/improve/procedural.js +0 -398
- package/dist/commands/improve/recombine.js +0 -818
- package/dist/commands/improve/schema-similarity-gate.js +0 -168
- package/dist/commands/lint/agent-linter.js +0 -44
- package/dist/commands/lint/command-linter.js +0 -44
- package/dist/commands/lint/default-linter.js +0 -16
- package/dist/commands/lint/fact-linter.js +0 -39
- package/dist/commands/lint/knowledge-linter.js +0 -16
- package/dist/commands/lint/memory-linter.js +0 -61
- package/dist/commands/lint/registry.js +0 -41
- package/dist/commands/lint/skill-linter.js +0 -45
- package/dist/commands/lint/task-linter.js +0 -50
- package/dist/commands/lint/workflow-linter.js +0 -81
- package/dist/commands/proposal/legacy-import.js +0 -115
- package/dist/commands/sources/history.js +0 -196
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/commands/wiki-cli.js +0 -292
- package/dist/core/asset/asset-registry.js +0 -76
- package/dist/core/asset/asset-spec.js +0 -259
- package/dist/core/config/config-migration.js +0 -602
- package/dist/core/deep-merge.js +0 -38
- package/dist/core/eval/rank-metrics.js +0 -113
- package/dist/core/ripgrep/install.js +0 -163
- package/dist/core/ripgrep/resolve.js +0 -81
- package/dist/indexer/db/db.js +0 -1413
- package/dist/indexer/manifest.js +0 -170
- package/dist/indexer/passes/metadata-contributors.js +0 -31
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
- package/dist/llm/call-ai.js +0 -62
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/output/text/wiki.js +0 -16
- package/dist/registry/build-index.js +0 -386
- package/dist/scripts/migrate-storage.js +0 -19108
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
- package/dist/scripts/migrations/v16-to-v17.js +0 -141
- package/dist/setup/legacy-config.js +0 -106
- package/dist/storage/repositories/consolidation-repository.js +0 -38
- package/dist/storage/repositories/recombine-repository.js +0 -213
- package/dist/wiki/wiki-templates.js +0 -15
- package/dist/wiki/wiki.js +0 -1012
- package/dist/workflows/db.js +0 -215
- package/docs/data-and-telemetry.md +0 -226
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
package/dist/cli/shared.js
CHANGED
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
import { defineCommand } from "citty";
|
|
11
11
|
import { stringify as yamlStringify } from "yaml";
|
|
12
12
|
import { assertNever } from "../core/assert.js";
|
|
13
|
-
import { AkmError } from "../core/errors.js";
|
|
13
|
+
import { AkmError, UsageError } from "../core/errors.js";
|
|
14
14
|
import { getOutputMode } from "../output/context.js";
|
|
15
|
-
import {
|
|
15
|
+
import { renderGenericHtml, renderGenericMarkdown, renderGenericText } from "../output/generic-render.js";
|
|
16
|
+
import { deliverRendered } from "../output/html-render.js";
|
|
17
|
+
import { getHtmlRendererHandler, getMdRendererHandler } from "../output/render-registry.js";
|
|
16
18
|
import { shapeForCommand } from "../output/shapes.js";
|
|
17
19
|
import { formatPlain, outputJsonl } from "../output/text.js";
|
|
20
|
+
import { parseAllFlagValues } from "./invocation.js";
|
|
18
21
|
import { hasSubcommand } from "./parse-args.js";
|
|
22
|
+
export { parseAllFlagValues };
|
|
19
23
|
// ── Exit codes ───────────────────────────────────────────────────────────────
|
|
20
24
|
/**
|
|
21
25
|
* Canonical process exit-code table for the akm CLI. Single source of truth —
|
|
@@ -71,8 +75,26 @@ function extractHint(error) {
|
|
|
71
75
|
return undefined;
|
|
72
76
|
}
|
|
73
77
|
/**
|
|
74
|
-
* Serialize an error to the standard JSON envelope and
|
|
75
|
-
* Used in both the startup try/catch and `runWithJsonErrors`.
|
|
78
|
+
* Serialize an error to the standard JSON envelope and record the mapped
|
|
79
|
+
* exit code. Used in both the startup try/catch and `runWithJsonErrors`.
|
|
80
|
+
*
|
|
81
|
+
* R-067: this used to call `process.exit(exitCode)` directly, which
|
|
82
|
+
* terminates the process synchronously and skips every pending `finally`
|
|
83
|
+
* block up the call stack — including `src/cli.ts`'s own
|
|
84
|
+
* `disposeDispatchResources()` cleanup and citty's per-command `cleanup`
|
|
85
|
+
* hooks. `process.exitCode = exitCode; return;` is equivalent for every
|
|
86
|
+
* caller here: Node/Bun exits with that code once the event loop drains
|
|
87
|
+
* naturally, but cleanup on the way there still runs.
|
|
88
|
+
* `src/commands/improve/extract-cli.ts` already uses this exact pattern for
|
|
89
|
+
* its own non-throw failure signal.
|
|
90
|
+
*
|
|
91
|
+
* Because this no longer throws or exits, it no longer terminates control
|
|
92
|
+
* flow on its own — every call site MUST treat it like a normal return and
|
|
93
|
+
* stop doing further work itself (an explicit `return;` right after the
|
|
94
|
+
* call, same as any other caller of a fallible function). `runWithJsonErrors`
|
|
95
|
+
* below satisfies this for free (this call is its catch block's last
|
|
96
|
+
* statement); `src/cli.ts`'s three direct call sites add the `return;`
|
|
97
|
+
* explicitly.
|
|
76
98
|
*/
|
|
77
99
|
export function emitJsonError(error) {
|
|
78
100
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -82,7 +104,7 @@ export function emitJsonError(error) {
|
|
|
82
104
|
// internal errors have none.
|
|
83
105
|
const code = error instanceof AkmError ? error.code : undefined;
|
|
84
106
|
console.error(JSON.stringify({ ok: false, error: message, ...(code ? { code } : {}), hint }, null, 2));
|
|
85
|
-
process.
|
|
107
|
+
process.exitCode = exitCode;
|
|
86
108
|
}
|
|
87
109
|
/**
|
|
88
110
|
* Run an async function and route any thrown error through the standard JSON
|
|
@@ -96,25 +118,126 @@ export async function runWithJsonErrors(fn) {
|
|
|
96
118
|
emitJsonError(error);
|
|
97
119
|
}
|
|
98
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* The global output flags, redeclared on every leaf command.
|
|
123
|
+
*
|
|
124
|
+
* citty parses each command level against only that command's own args, so a
|
|
125
|
+
* flag declared on the root command is UNKNOWN at the leaf — and an unknown
|
|
126
|
+
* flag does not consume its space-separated value, which then falls through as
|
|
127
|
+
* a positional. `akm sync --format json` once synced a bundle named "json",
|
|
128
|
+
* and `akm env unset env:x KEY --format json` once tried to unset a key named
|
|
129
|
+
* "json"; both grew bespoke argv-inspection workarounds. Declaring the flags
|
|
130
|
+
* at the leaf lets the parser consume the value, which is the root-cause fix.
|
|
131
|
+
*
|
|
132
|
+
* These declarations exist for PARSING only. The output mode is still read
|
|
133
|
+
* exactly once, from the invocation singleton at startup — no command body may
|
|
134
|
+
* read these args (that is the same one-parse rule `cli/invocation.ts`
|
|
135
|
+
* documents).
|
|
136
|
+
*
|
|
137
|
+
* These are also the canonical descriptions for the root command's own args
|
|
138
|
+
* (`main.args` in src/cli.ts) — the root spreads this same object rather than
|
|
139
|
+
* redeclaring the text, so root help and leaf help can never drift apart.
|
|
140
|
+
* `format`/`detail` need per-site `default` overrides (root has one, leaves
|
|
141
|
+
* don't — see the one-parse rule above), so those two keys get shallow
|
|
142
|
+
* overrides at the root; the description text itself is never duplicated.
|
|
143
|
+
*/
|
|
144
|
+
export const GLOBAL_OUTPUT_ARGS = {
|
|
145
|
+
format: { type: "string", description: "Output format: json|jsonl|yaml|text|md|html (global flag)" },
|
|
146
|
+
detail: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "Detail level (verbosity): brief|normal|full (global flag).",
|
|
149
|
+
},
|
|
150
|
+
// R-050(c): single-sourced with the root command's own `--shape` help
|
|
151
|
+
// (`main.args.shape` in src/cli.ts, which spreads this object) so the
|
|
152
|
+
// caveat is visible from every leaf's own `--help`, not only the top-level
|
|
153
|
+
// one. `summary` outside `show` is a hard usage error (exit 2,
|
|
154
|
+
// INVALID_SHAPE_VALUE), enforced at startup in src/cli.ts before any
|
|
155
|
+
// command body runs.
|
|
156
|
+
shape: {
|
|
157
|
+
type: "string",
|
|
158
|
+
description: "Output projection: human|agent|summary (global flag). 'agent' trims to agent-essential fields; " +
|
|
159
|
+
"'summary' is only valid on 'akm show' (a usage error, exit 2, everywhere else). Default: human.",
|
|
160
|
+
},
|
|
161
|
+
output: {
|
|
162
|
+
type: "string",
|
|
163
|
+
description: "Write rendered output to a file instead of stdout (all formats except jsonl) (global flag)",
|
|
164
|
+
},
|
|
165
|
+
// S11: surfaced at every leaf (not just the root) so `akm <command> --help`
|
|
166
|
+
// documents them too — they already apply globally, parsed from raw argv
|
|
167
|
+
// by `applyEarlyStderrFlags` in src/cli.ts before citty ever sees them, so
|
|
168
|
+
// declaring them here is documentation, not new parsing behavior. A
|
|
169
|
+
// command with its own same-named arg (e.g. `env path --quiet`) wins the
|
|
170
|
+
// merge in `defineJsonCommand` as usual.
|
|
171
|
+
quiet: {
|
|
172
|
+
type: "boolean",
|
|
173
|
+
alias: "q",
|
|
174
|
+
description: "Suppress non-essential stderr output (banners, spinners, progress info) (global flag). " +
|
|
175
|
+
"Safety-critical output is never suppressed: errors, destructive-action confirmation prompts, " +
|
|
176
|
+
"and auto-migration banners always appear regardless of --quiet.",
|
|
177
|
+
default: false,
|
|
178
|
+
},
|
|
179
|
+
verbose: {
|
|
180
|
+
type: "boolean",
|
|
181
|
+
description: "Print per-spec diagnostics to stderr (global flag; also honours AKM_VERBOSE env var).",
|
|
182
|
+
default: false,
|
|
183
|
+
},
|
|
184
|
+
};
|
|
99
185
|
/**
|
|
100
186
|
* Define a citty command whose `run` body is automatically wrapped in
|
|
101
187
|
* `runWithJsonErrors`, so the handler emits a byte-identical JSON error
|
|
102
188
|
* envelope (stdout/stderr/exit-code) on throw without the boilerplate. A
|
|
103
189
|
* command without a `run` (a pure subcommand group) is passed through
|
|
104
190
|
* unchanged.
|
|
191
|
+
*
|
|
192
|
+
* Every command defined here also accepts the {@link GLOBAL_OUTPUT_ARGS} so
|
|
193
|
+
* their values are parsed rather than mis-captured as positionals; a command
|
|
194
|
+
* declaring its own arg of the same name wins (e.g. `env path` has its own
|
|
195
|
+
* `quiet`).
|
|
105
196
|
*/
|
|
106
197
|
export function defineJsonCommand(def) {
|
|
107
198
|
const { run, ...rest } = def;
|
|
199
|
+
const withGlobals = { ...rest, args: { ...GLOBAL_OUTPUT_ARGS, ...rest.args } };
|
|
108
200
|
if (!run)
|
|
109
|
-
return defineCommand(
|
|
201
|
+
return defineCommand(withGlobals);
|
|
110
202
|
return defineCommand({
|
|
111
|
-
...
|
|
203
|
+
...withGlobals,
|
|
112
204
|
run: (context) => runWithJsonErrors(() => run(context)),
|
|
113
205
|
});
|
|
114
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Canonical bare-group behavior (0.9.0 breaking change, owner ruling 12).
|
|
209
|
+
*
|
|
210
|
+
* Before 0.9.0 the twelve `akm <group>` command groups did three different
|
|
211
|
+
* things when invoked with no subcommand: some printed help and exited 1,
|
|
212
|
+
* some ran an implicit default action and exited 0 (e.g. bare `akm graph`
|
|
213
|
+
* silently rendering `graph summary`), and one already raised a structured
|
|
214
|
+
* usage error and exited 2. None of that is discoverable from the exit code
|
|
215
|
+
* alone, and a script that greps stdout for a specific default action broke
|
|
216
|
+
* silently the moment someone reordered subcommands.
|
|
217
|
+
*
|
|
218
|
+
* The canonical choice, applied uniformly: a bare group invocation is a
|
|
219
|
+
* USAGE ERROR — exit 2, the same structured JSON envelope every other usage
|
|
220
|
+
* mistake in this CLI produces (not citty's raw help banner, and not a
|
|
221
|
+
* silent default action). This matches STABILITY.md's documented exit-code
|
|
222
|
+
* table (2 = usage) and the exit code the CLI already used for "unknown
|
|
223
|
+
* command" / "missing required argument" as of the companion 0.9.0 fix.
|
|
224
|
+
*
|
|
225
|
+
* `defaultRun` is now OPTIONAL for exactly this reason: omitting it opts a
|
|
226
|
+
* group into the shared, canonical error below. Passing an explicit
|
|
227
|
+
* `defaultRun` is a deliberate opt-out and should not be added to new groups
|
|
228
|
+
* without a documented reason — see CHANGELOG for the migration note.
|
|
229
|
+
*/
|
|
230
|
+
function bareGroupUsageError(meta, subcommandSet) {
|
|
231
|
+
const name = typeof meta === "object" && meta !== null && "name" in meta && typeof meta.name === "string"
|
|
232
|
+
? meta.name
|
|
233
|
+
: undefined;
|
|
234
|
+
const usage = name ? `\`akm ${name}\`` : "This command";
|
|
235
|
+
const subcommands = [...subcommandSet].sort().join(", ");
|
|
236
|
+
throw new UsageError(`${usage} requires a subcommand. Available: ${subcommands}.`, "MISSING_REQUIRED_ARGUMENT", `Run \`akm ${name ?? "<command>"} --help\` to see usage for each subcommand.`);
|
|
237
|
+
}
|
|
115
238
|
/**
|
|
116
239
|
* Define a citty subcommand-group command (env, secret, proposal, tasks, wiki,
|
|
117
|
-
*
|
|
240
|
+
* …) that shares one wiring shape: a `subCommands` map, a routing set
|
|
118
241
|
* DERIVED from that map's keys (so the set can never silently desync from the
|
|
119
242
|
* registered subcommands), and a default body that fires ONLY for the bare
|
|
120
243
|
* group invocation — citty still runs the group body after dispatching a
|
|
@@ -128,6 +251,7 @@ export function defineJsonCommand(def) {
|
|
|
128
251
|
*/
|
|
129
252
|
export function defineGroupCommand(def) {
|
|
130
253
|
const subcommandSet = new Set(Object.keys(def.subCommands));
|
|
254
|
+
const defaultRun = def.defaultRun ?? (() => bareGroupUsageError(def.meta, subcommandSet));
|
|
131
255
|
return defineCommand({
|
|
132
256
|
meta: def.meta,
|
|
133
257
|
...(def.args ? { args: def.args } : {}),
|
|
@@ -135,7 +259,7 @@ export function defineGroupCommand(def) {
|
|
|
135
259
|
run: (context) => runWithJsonErrors(() => {
|
|
136
260
|
if (hasSubcommand(context.args, subcommandSet))
|
|
137
261
|
return;
|
|
138
|
-
return
|
|
262
|
+
return defaultRun(context);
|
|
139
263
|
}),
|
|
140
264
|
});
|
|
141
265
|
}
|
|
@@ -160,51 +284,37 @@ export function output(command, result) {
|
|
|
160
284
|
deliverRendered(yamlStringify(shaped), mode.outputPath);
|
|
161
285
|
return;
|
|
162
286
|
case "text": {
|
|
287
|
+
// D7 — registry first, generic rendering of the shaped envelope second.
|
|
288
|
+
// Mirrors the md/html fallback immediately below: a command with no
|
|
289
|
+
// registered text formatter used to fall through to
|
|
290
|
+
// `JSON.stringify(shaped, null, 2)`, i.e. silently hand back JSON while
|
|
291
|
+
// claiming `--format text` — the same "wrong format wearing the right
|
|
292
|
+
// flag" bug D7 already closed for md/html. `renderGenericText` (a
|
|
293
|
+
// DISTINCT function from `renderGenericMarkdown` — see its doc comment
|
|
294
|
+
// in src/output/generic-render.ts for why reusing the md renderer here
|
|
295
|
+
// was itself a version of the same bug) renders flat `key=value` text
|
|
296
|
+
// matching the house style already established by registered text
|
|
297
|
+
// formatters like `config list`.
|
|
163
298
|
const plain = formatPlain(command, shaped, mode.detail);
|
|
164
|
-
deliverRendered(plain ??
|
|
299
|
+
deliverRendered(plain ?? renderGenericText(command, shaped), mode.outputPath);
|
|
165
300
|
return;
|
|
166
301
|
}
|
|
167
|
-
case "md":
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
|
|
302
|
+
case "md": {
|
|
303
|
+
// D7 — registry first, generic rendering of the shaped envelope second.
|
|
304
|
+
// No command emits JSON under `--format md` any more: silently handing
|
|
305
|
+
// back the wrong format was the worst of the three behaviours this
|
|
306
|
+
// replaced.
|
|
307
|
+
const rendered = getMdRendererHandler(command)?.(shaped, mode.detail);
|
|
308
|
+
deliverRendered(rendered ?? renderGenericMarkdown(command, shaped), mode.outputPath);
|
|
173
309
|
return;
|
|
310
|
+
}
|
|
174
311
|
case "html": {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
// intercept before reaching output(), same as the `md` intercept.
|
|
178
|
-
const html = renderHtml(resolveTemplatePath(DEFAULT_TEMPLATE), {
|
|
179
|
-
"%%COMMAND%%": escapeHtml(command),
|
|
180
|
-
"%%CONTENT_JSON%%": escapeHtml(JSON.stringify(shaped, null, 2)),
|
|
181
|
-
"%%GENERATED_AT%%": new Date().toISOString(),
|
|
182
|
-
});
|
|
183
|
-
deliverRendered(html, mode.outputPath);
|
|
312
|
+
const rendered = getHtmlRendererHandler(command)?.(shaped, mode.detail);
|
|
313
|
+
deliverRendered(rendered ?? renderGenericHtml(command, shaped), mode.outputPath);
|
|
184
314
|
return;
|
|
185
315
|
}
|
|
186
316
|
}
|
|
187
317
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
* so for repeatable CLI args (like `--tag foo --tag bar`) we read argv directly.
|
|
192
|
-
* Supports both `--flag value` and `--flag=value` forms.
|
|
193
|
-
*/
|
|
194
|
-
export function parseAllFlagValues(flag) {
|
|
195
|
-
const values = [];
|
|
196
|
-
for (let i = 0; i < process.argv.length; i++) {
|
|
197
|
-
const arg = process.argv[i];
|
|
198
|
-
if (arg === flag && i + 1 < process.argv.length) {
|
|
199
|
-
values.push(process.argv[i + 1]);
|
|
200
|
-
// BUG-M4: skip the value index so `--tag --tag` (literal `--tag`
|
|
201
|
-
// value) does not double-count the second `--tag` as a separate
|
|
202
|
-
// flag occurrence.
|
|
203
|
-
i++;
|
|
204
|
-
}
|
|
205
|
-
else if (arg.startsWith(`${flag}=`)) {
|
|
206
|
-
values.push(arg.slice(flag.length + 1));
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
return values;
|
|
210
|
-
}
|
|
318
|
+
// parseAllFlagValues moved to ./invocation (chunk-9 WI-9.9 argv-normalization
|
|
319
|
+
// fold); re-exported above so every existing importer of this module is
|
|
320
|
+
// unaffected.
|
package/dist/cli-node.mjs
CHANGED
|
@@ -20,7 +20,8 @@ import { register } from "node:module";
|
|
|
20
20
|
register("./text-import-hook.mjs", import.meta.url);
|
|
21
21
|
|
|
22
22
|
// cli.js gates its startup block on `import.meta.main`, which is false when we
|
|
23
|
-
// `import()` it here. Opt in explicitly so the CLI actually runs
|
|
23
|
+
// `import()` it here. Opt in explicitly so the CLI actually runs its startup
|
|
24
|
+
// block (dispatch, `runCli`).
|
|
24
25
|
process.env.AKM_NODE_ENTRY = "1";
|
|
25
26
|
|
|
26
27
|
await import("./cli.js");
|