akm-cli 0.9.1-beta.3 → 0.9.2-alpha.1
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 +89 -1
- package/README.md +3 -1
- package/SECURITY.md +1 -1
- package/STABILITY.md +1 -1
- package/dist/akm +2 -2
- package/dist/akm-migrate +2 -2
- package/dist/assets/hints/cli-hints-full.md +14 -9
- package/dist/assets/improve-strategies/proactive-maintenance.json +1 -1
- package/dist/assets/improve-strategies/reflect-distill.json +1 -1
- package/dist/assets/models.json +35 -0
- package/dist/assets/tasks/core/extract.yml +6 -5
- package/dist/assets/tasks/core/improve.yml +6 -5
- package/dist/assets/tasks/core/index-refresh.yml +6 -5
- package/dist/assets/tasks/core/sync.yml +6 -5
- package/dist/assets/tasks/core/version-check.yml +6 -5
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +6 -5
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +6 -5
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +6 -5
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +6 -5
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +6 -5
- package/dist/cli/confirm.js +2 -2
- package/dist/cli/parse-args.js +3 -24
- package/dist/cli/retired-commands.js +1 -1
- package/dist/cli/shared.js +2 -2
- package/dist/cli.js +11 -9
- package/dist/commands/agent/agent-dispatch.js +55 -89
- package/dist/commands/agent/contribute-cli.js +12 -45
- package/dist/commands/command/builtin-action.js +32 -0
- package/dist/commands/command/command-cli.js +99 -0
- package/dist/commands/command/command-execution.js +308 -0
- package/dist/commands/command/execution-source-loader.js +176 -0
- package/dist/commands/command/portable-template.js +60 -0
- package/dist/commands/config-cli.js +10 -4
- package/dist/commands/env/env.js +4 -2
- package/dist/commands/feedback-cli.js +1 -1
- package/dist/commands/health/checks.js +241 -29
- package/dist/commands/health/html-report.js +0 -14
- package/dist/commands/health/report-view-model.js +0 -1
- package/dist/commands/health/surfaces.js +6 -7
- package/dist/commands/health/types.js +0 -2
- package/dist/commands/health.js +63 -18
- package/dist/commands/improve/collapse-detector.js +2 -2
- package/dist/commands/improve/consolidate.js +251 -214
- package/dist/commands/improve/distill/promote-memory.js +71 -34
- package/dist/commands/improve/distill/quality-gate.js +17 -5
- package/dist/commands/improve/distill.js +232 -155
- package/dist/commands/improve/eligibility.js +112 -79
- package/dist/commands/improve/execution.js +57 -0
- package/dist/commands/improve/extract-cli.js +5 -5
- package/dist/commands/improve/extract.js +521 -342
- package/dist/commands/improve/improve-strategies.js +43 -14
- package/dist/commands/improve/improve.js +249 -29
- package/dist/commands/improve/loop-stages.js +11 -17
- package/dist/commands/improve/memory/memory-contradiction-detect.js +90 -66
- package/dist/commands/improve/outcome-loop.js +22 -38
- package/dist/commands/improve/planner.js +134 -0
- package/dist/commands/improve/preparation.js +730 -409
- package/dist/commands/improve/reflect.js +386 -223
- package/dist/commands/improve/run-context.js +3 -4
- package/dist/commands/improve/salience.js +6 -58
- package/dist/commands/improve/session-asset.js +12 -12
- package/dist/commands/lint/index.js +101 -29
- package/dist/commands/migrate-cli.js +11 -69
- package/dist/commands/migration-tool.js +6 -9
- package/dist/commands/models-cli.js +27 -0
- package/dist/commands/proposal/drain.js +258 -186
- package/dist/commands/proposal/proposal-cli.js +32 -10
- package/dist/commands/proposal/proposal.js +2 -5
- package/dist/commands/proposal/propose.js +192 -172
- package/dist/commands/proposal/repository.js +54 -91
- package/dist/commands/proposal/validators/proposal-validators.js +9 -7
- package/dist/commands/read/curate.js +10 -0
- package/dist/commands/read/registry-search.js +25 -9
- package/dist/commands/read/remember-cli.js +14 -2
- package/dist/commands/read/search.js +10 -4
- package/dist/commands/read/show.js +139 -153
- package/dist/commands/registry-cli.js +16 -7
- package/dist/commands/remember.js +33 -18
- package/dist/commands/sources/add-cli.js +19 -178
- package/dist/commands/sources/bundle-cli.js +15 -3
- package/dist/commands/sources/dangerous-env-audit.js +135 -0
- package/dist/commands/sources/info.js +2 -1
- package/dist/commands/sources/installed-stashes.js +835 -152
- package/dist/commands/sources/schema-repair.js +174 -95
- package/dist/commands/sources/self-update.js +30 -74
- package/dist/commands/sources/source-add.js +3 -5
- package/dist/commands/sources/sources-cli.js +2 -15
- package/dist/commands/sources/update-transaction.js +220 -0
- package/dist/commands/tasks/tasks-cli.js +3 -3
- package/dist/commands/tasks/tasks.js +736 -317
- package/dist/commands/workflow-cli.js +2 -2
- package/dist/core/adapter/adapters/agent-skills-adapter.js +3 -0
- package/dist/core/adapter/adapters/akm-adapter.js +83 -34
- package/dist/core/adapter/adapters/akm-lint.js +54 -39
- package/dist/core/adapter/adapters/akm-metadata.js +45 -45
- package/dist/core/adapter/adapters/akm-task-adapter.js +32 -49
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +38 -23
- package/dist/core/adapter/adapters/dotenv-adapter.js +30 -1
- package/dist/core/adapter/adapters/generic-files-adapter.js +11 -0
- package/dist/core/adapter/adapters/index.js +0 -9
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +4 -0
- package/dist/core/adapter/adapters/okf-adapter.js +4 -0
- package/dist/core/adapter/adapters/opencode-adapter.js +5 -8
- package/dist/core/adapter/adapters/tool-dir-shared.js +63 -6
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +4 -0
- package/dist/core/adapter/execution-source.js +308 -0
- package/dist/core/adapter/recognize-match.js +36 -13
- package/dist/core/adapter/registry.js +0 -9
- package/dist/core/asset/stash-meta.js +94 -4
- package/dist/core/common.js +6 -11
- package/dist/core/config/config-io.js +3 -3
- package/dist/core/config/config-schema.js +18 -40
- package/dist/core/config/config-sources.js +11 -21
- package/dist/core/config/config-walker.js +31 -13
- package/dist/core/config/config.js +21 -20
- package/dist/core/config/schema/engines.js +8 -7
- package/dist/core/config/schema/improve-processes.js +29 -5
- package/dist/core/config/schema/primitives.js +1 -23
- package/dist/core/config/schema/sources-bundles.js +13 -16
- package/dist/core/errors.js +2 -0
- package/dist/core/events.js +68 -32
- package/dist/core/extra-params.js +1 -0
- package/dist/core/improve-result.js +315 -0
- package/dist/core/lesson-lint.js +0 -6
- package/dist/core/maintenance-barrier.js +4 -4
- package/dist/core/network-policy.js +152 -0
- package/dist/core/paths.js +1 -1
- package/dist/core/recognition-util.js +4 -4
- package/dist/core/registry-url.js +456 -0
- package/dist/core/state/migrations.js +161 -47
- package/dist/core/state-db.js +453 -80
- package/dist/core/system-error.js +32 -0
- package/dist/core/time.js +2 -12
- package/dist/core/write-source.js +0 -18
- package/dist/execution/directory-identity.js +52 -0
- package/dist/execution/executable-identity.js +107 -0
- package/dist/execution/guarded-source.js +398 -0
- package/dist/execution/json.js +95 -0
- package/dist/{commands/health/types-session-log.js → execution/limits.js} +2 -1
- package/dist/execution/record.js +55 -0
- package/dist/execution/resolved-request.js +730 -0
- package/dist/execution/source.js +320 -0
- package/dist/indexer/bundle-identity-guard.js +5 -4
- package/dist/indexer/db/graph-db.js +33 -0
- package/dist/indexer/graph/graph-boost.js +3 -4
- package/dist/indexer/graph/graph-extraction.js +562 -373
- package/dist/indexer/index-written-assets.js +65 -34
- package/dist/indexer/indexer.js +443 -222
- package/dist/indexer/installations.js +6 -0
- package/dist/indexer/lookup/adapter-concept-owner.js +283 -0
- package/dist/indexer/passes/memory-inference.js +227 -174
- package/dist/indexer/scan/doc-to-entry.js +7 -9
- package/dist/indexer/scan/drain-dir.js +51 -23
- package/dist/indexer/search/db-search.js +98 -22
- package/dist/indexer/search/search-fields.js +1 -1
- package/dist/indexer/search/search-hit-enrichers.js +1 -1
- package/dist/indexer/search/search-source.js +7 -16
- package/dist/indexer/search/semantic-status.js +10 -1
- package/dist/indexer/usage/show-usage.js +105 -0
- package/dist/indexer/usage/usage-events.js +7 -2
- package/dist/indexer/walk/matchers.js +40 -10
- package/dist/indexer/walk/path-resolver.js +5 -2
- package/dist/indexer/walk/walker.js +20 -2
- package/dist/integrations/agent/builder-shared.js +3 -6
- package/dist/integrations/agent/conversation-fallback.js +16 -0
- package/dist/integrations/agent/engine-resolution.js +87 -87
- package/dist/integrations/agent/execution-cascade.js +566 -0
- package/dist/integrations/agent/execution-definitions.js +211 -0
- package/dist/integrations/agent/execution-lowering.js +811 -0
- package/dist/integrations/agent/execution-preparation.js +67 -0
- package/dist/integrations/agent/index.js +0 -2
- package/dist/integrations/agent/inline-execution.js +74 -0
- package/dist/integrations/agent/model-map.js +515 -0
- package/dist/integrations/agent/persona-fallback.js +30 -0
- package/dist/integrations/agent/request-lowering.js +186 -0
- package/dist/integrations/agent/runner-dispatch.js +230 -37
- package/dist/integrations/agent/runner.js +12 -83
- package/dist/integrations/harnesses/aider/agent-builder.js +8 -0
- package/dist/integrations/harnesses/aider/index.js +0 -1
- package/dist/integrations/harnesses/amazonq/agent-builder.js +8 -0
- package/dist/integrations/harnesses/amazonq/index.js +0 -1
- package/dist/integrations/harnesses/claude/agent-builder.js +14 -1
- package/dist/integrations/harnesses/claude/index.js +1 -5
- package/dist/integrations/harnesses/claude/session-log.js +3 -33
- package/dist/integrations/harnesses/codex/agent-builder.js +8 -0
- package/dist/integrations/harnesses/codex/index.js +0 -1
- package/dist/integrations/harnesses/copilot/agent-builder.js +8 -0
- package/dist/integrations/harnesses/copilot/index.js +0 -1
- package/dist/integrations/harnesses/gemini/agent-builder.js +8 -0
- package/dist/integrations/harnesses/gemini/index.js +0 -1
- package/dist/integrations/harnesses/index.js +4 -44
- package/dist/integrations/harnesses/opencode/agent-builder.js +16 -9
- package/dist/integrations/harnesses/opencode/index.js +0 -2
- package/dist/integrations/harnesses/opencode/session-log.js +14 -204
- package/dist/integrations/harnesses/opencode-sdk/harness.js +12 -1
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +40 -42
- package/dist/integrations/harnesses/openhands/agent-builder.js +8 -0
- package/dist/integrations/harnesses/openhands/index.js +0 -1
- package/dist/integrations/harnesses/pi/agent-builder.js +8 -0
- package/dist/integrations/harnesses/pi/index.js +0 -1
- package/dist/integrations/harnesses/shared.js +0 -1
- package/dist/integrations/harnesses/types.js +1 -3
- package/dist/integrations/lockfile.js +82 -79
- package/dist/integrations/session-logs/index.js +6 -17
- package/dist/integrations/session-logs/provider-base.js +1 -29
- package/dist/llm/client.js +10 -5
- package/dist/llm/embedder.js +6 -7
- package/dist/llm/embedders/local.js +37 -88
- package/dist/llm/embedders/types.js +1 -1
- package/dist/llm/graph-extract.js +75 -50
- package/dist/llm/index-passes.js +43 -5
- package/dist/llm/memory-infer.js +8 -6
- package/dist/llm/metadata-enhance.js +5 -3
- package/dist/llm/structured-call.js +122 -25
- package/dist/output/format-exempt.js +1 -1
- package/dist/output/render-registry.js +0 -16
- package/dist/output/renderers.js +12 -7
- package/dist/output/shapes/curate.js +1 -0
- package/dist/output/shapes/helpers.js +10 -2
- package/dist/output/shapes/passthrough.js +2 -0
- package/dist/output/text/command-format.js +28 -32
- package/dist/output/text/health-format.js +1 -29
- package/dist/output/text/migrate.js +6 -56
- package/dist/output/text/proposal-format.js +16 -1
- package/dist/output/text/workflow-format.js +16 -0
- package/dist/registry/network.js +279 -0
- package/dist/registry/pinned-request-helper.js +247 -0
- package/dist/registry/pinned-transport.js +717 -0
- package/dist/registry/providers/skills-sh.js +18 -6
- package/dist/registry/providers/static-index.js +20 -7
- package/dist/registry/resolve.js +53 -28
- package/dist/scripts/akm-migrate-node.js +19122 -52218
- package/dist/scripts/akm-migrate.js +19064 -51567
- package/dist/setup/registry-stash-loader.js +64 -20
- package/dist/setup/semantic-assets.js +9 -34
- package/dist/setup/setup.js +12 -30
- package/dist/setup/source-identity.js +17 -0
- package/dist/setup/steps/sources.js +36 -15
- package/dist/setup/steps/tasks.js +39 -11
- package/dist/sources/providers/git-provider.js +3 -3
- package/dist/sources/providers/npm.js +2 -2
- package/dist/sources/providers/provider-utils.js +4 -3
- package/dist/sources/providers/website.js +11 -7
- package/dist/sources/snapshot-fetchers/host-guard.js +9 -136
- package/dist/sources/snapshot-fetchers/website-ingest.js +25 -109
- package/dist/sources/website-url.js +73 -0
- package/dist/storage/engines/sqlite-migrations.js +81 -26
- package/dist/storage/managed-db.js +27 -24
- package/dist/storage/repositories/events-repository.js +3 -0
- package/dist/storage/repositories/index-connection.js +42 -10
- package/dist/storage/repositories/index-entries-repository.js +167 -207
- package/dist/storage/repositories/index-entry-mapper.js +8 -12
- package/dist/storage/repositories/index-entry-schema.js +255 -0
- package/dist/storage/repositories/index-fts-repository.js +10 -10
- package/dist/storage/repositories/index-llm-cache-repository.js +8 -13
- package/dist/storage/repositories/index-meta-repository.js +0 -11
- package/dist/storage/repositories/index-schema.js +71 -342
- package/dist/storage/repositories/index-utility-repository.js +12 -17
- package/dist/storage/repositories/index-vec-repository.js +1 -1
- package/dist/storage/repositories/proposals-repository.js +4 -127
- package/dist/storage/repositories/registry-cache.js +2 -1
- package/dist/storage/repositories/task-history-repository.js +20 -40
- package/dist/storage/repositories/workflow-runs-repository.js +228 -129
- package/dist/storage/sqlite-read-snapshot.js +148 -0
- package/dist/tasks/backends/cron.js +170 -42
- package/dist/tasks/backends/index.js +1 -1
- package/dist/tasks/backends/launchd.js +787 -202
- package/dist/tasks/backends/schtasks.js +282 -83
- package/dist/tasks/embedded.js +7 -7
- package/dist/tasks/frozen-script.js +50 -0
- package/dist/tasks/resolve-akm-bin.js +5 -1
- package/dist/tasks/runner.js +239 -251
- package/dist/tasks/runtime-v3.js +281 -0
- package/dist/tasks/scheduler-binding.js +272 -0
- package/dist/tasks/scheduler-invocation.js +57 -43
- package/dist/tasks/scheduler-sync.js +654 -0
- package/dist/tasks/source-v3.js +752 -0
- package/dist/tasks/standalone-script-entry.js +5 -0
- package/dist/tasks/task-id.js +29 -0
- package/dist/workflows/authoring/authoring.js +15 -32
- package/dist/workflows/exec/dispatch-redaction.js +14 -8
- package/dist/workflows/exec/exec-unit.js +7 -28
- package/dist/workflows/exec/frozen-judge.js +57 -89
- package/dist/workflows/exec/lowering-notices.js +23 -0
- package/dist/workflows/exec/native-executor.js +301 -458
- package/dist/workflows/exec/param-secrets.js +4 -3
- package/dist/workflows/exec/run-workflow.js +26 -32
- package/dist/workflows/exec/step-work.js +105 -109
- package/dist/workflows/exec/unit-dispatch.js +103 -27
- package/dist/workflows/exec/unit-writer.js +3 -3
- package/dist/workflows/exec/worktree.js +2 -2
- package/dist/workflows/ir/compile.js +86 -72
- package/dist/workflows/ir/environment-v4.js +328 -0
- package/dist/workflows/ir/freeze-v4.js +122 -0
- package/dist/workflows/ir/plan-hash.js +13 -7
- package/dist/workflows/ir/schema-v4.js +525 -0
- package/dist/workflows/ir/schema.js +25 -284
- package/dist/workflows/ir/source-freeze-v4.js +506 -0
- package/dist/workflows/parser.js +27 -24
- package/dist/workflows/program/schema.js +1 -2
- package/dist/workflows/renderer.js +42 -29
- package/dist/workflows/resource-limits.js +4 -5
- package/dist/workflows/runtime/agent-identity.js +11 -13
- package/dist/workflows/runtime/plan-classifier.js +8 -8
- package/dist/workflows/runtime/runs.js +27 -43
- package/dist/workflows/runtime/workflow-asset-loader.js +45 -205
- package/dist/workflows/source-files.js +373 -0
- package/dist/workflows/source-ir/compile.js +196 -0
- package/dist/workflows/source-ir/github-yaml.js +577 -0
- package/dist/workflows/source-ir/ordering.js +38 -0
- package/dist/workflows/source-ir/program.js +50 -0
- package/dist/workflows/source-ir/result.js +26 -0
- package/dist/workflows/source-ir/schema.js +772 -0
- package/dist/workflows/source-ir/semantics.js +242 -0
- package/dist/workflows/source-ir/uses.js +14 -0
- package/docs/README.md +2 -0
- package/docs/migration/README.md +3 -1
- package/docs/migration/release-notes/0.9.2.md +55 -0
- package/docs/migration/release-notes/README.md +5 -0
- package/docs/migration/v0.8-to-v0.9.md +76 -1077
- package/docs/migration/v0.9.0-troubleshooting.md +104 -516
- package/docs/migration/v0.9.1-to-v0.9.2.md +150 -0
- package/docs/reference/README.md +1 -0
- package/docs/reference/cli.md +230 -98
- package/docs/reference/configuration.md +153 -27
- package/docs/reference/data-and-telemetry.md +19 -1
- package/docs/reference/supported-formats.md +23 -3
- package/docs/reference/tasks.md +182 -0
- package/docs/reference/workflow-schema.md +91 -40
- package/docs/reference/workflows.md +33 -6
- package/package.json +10 -6
- package/schemas/akm-config.json +372 -216
- package/schemas/akm-task.json +324 -80
- package/schemas/akm-workflow.json +6 -9
- package/dist/core/migration-operation.js +0 -75
- package/dist/integrations/agent/model-aliases.js +0 -74
- package/dist/tasks/parser.js +0 -380
- package/dist/tasks/schema.js +0 -123
- package/dist/tasks/validator.js +0 -80
- package/dist/workflows/ir/freeze.js +0 -320
- package/dist/workflows/runtime/document-cache.js +0 -13
package/CHANGELOG.md
CHANGED
|
@@ -6,7 +6,95 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
## [0.9.
|
|
9
|
+
## [0.9.2-alpha.1] - 2026-08-24
|
|
10
|
+
|
|
11
|
+
### Breaking changes & migration
|
|
12
|
+
|
|
13
|
+
- **Node.js 22 is no longer supported by the npm package.** `akm-cli` now
|
|
14
|
+
requires Node.js >= 24 to bootstrap its command. A working Bun >= 1.0 remains
|
|
15
|
+
optional and preferred for execution after that bootstrap; the standalone
|
|
16
|
+
binary remains runtime-free. Upgrade Node before installing or running the
|
|
17
|
+
npm package.
|
|
18
|
+
- The `inherit_env` option is a breaking removal: new durable-v4 workflow starts reject it.
|
|
19
|
+
Replace ambient whole-process inheritance with exact named environment bindings and
|
|
20
|
+
`exec.pass_env` names. Pre-v4 stored workflow plans are not executable in
|
|
21
|
+
0.9.2; start a new run from current source.
|
|
22
|
+
- `improve.strategies.*.processes.triage.judgment` now accepts `true`/`false`
|
|
23
|
+
and honors `enabled` on object values; existing `{}` and configured objects
|
|
24
|
+
remain enabled. Unknown object keys are now rejected instead of ignored, so
|
|
25
|
+
correct typos such as `egnine`, `judgement`, or other unrecognized fields
|
|
26
|
+
before upgrading. Use `judgment: false` to disable the tier explicitly.
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- **WP0 — characterization and release contracts:** pinned direct-agent,
|
|
31
|
+
command, task, workflow-freeze, model-alias, and harness-lowering behavior;
|
|
32
|
+
added cross-entry-point equivalence fixtures and immutable release-surface
|
|
33
|
+
gates.
|
|
34
|
+
- **WP1 — shared execution contracts:** introduced adapter-rendered source
|
|
35
|
+
identity and one resolved-request representation carrying final content,
|
|
36
|
+
engine/model/inference selection, authorization, runtime settings, source
|
|
37
|
+
hashes, and structured lowering notices.
|
|
38
|
+
- **WP2 — layered model maps:** ship a versioned installed `models.json`, merge
|
|
39
|
+
an optional user overlay from the config directory, expand known aliases by
|
|
40
|
+
engine, pass unknown identifiers through exactly, and provide guarded model
|
|
41
|
+
map initialization.
|
|
42
|
+
- **WP3 — common cascade and authorization:** resolve far-to-near defaults once,
|
|
43
|
+
preserve explicit false/zero/empty values, authorize selected tools before
|
|
44
|
+
dispatch, and expose stable field-level provenance without resolved values.
|
|
45
|
+
- **WP4 — portable command execution:** added canonical
|
|
46
|
+
`akm command run <ref>`, implemented one-pass `$ARGUMENTS` substitution, and
|
|
47
|
+
reject unsupported native template constructs before dispatch. Stored
|
|
48
|
+
commands have one execution surface; `akm agent --command` is not retained.
|
|
49
|
+
- **WP6 — task v3:** added the strict shipped task schema, command/workflow/script
|
|
50
|
+
targets, closed shell and working-directory rules, portable schedules, and a
|
|
51
|
+
fail-closed task-v2 migrator with no-write preview, per-file status, backups,
|
|
52
|
+
validation, and blocked argv-array handling.
|
|
53
|
+
- **WP7 — peer workflow sources and durable v4:** compile Markdown and the
|
|
54
|
+
approved GitHub-shaped `.yml` subset through source IR v1; new runs atomically
|
|
55
|
+
persist immutable v4 targets, guarded source reads, symbolic environments,
|
|
56
|
+
and durable dispatch attempts. Pre-v4 stored plans are rejected rather than
|
|
57
|
+
maintaining a second runtime.
|
|
58
|
+
- **WP8 — release diagnostics:** added zero-write, secret-safe command dry-run
|
|
59
|
+
output, stderr-only verbose provenance, offline `selected-model-aliases` and
|
|
60
|
+
`configured-engines` health advisories, self-contained migration guidance,
|
|
61
|
+
and npm tar/install/link release gates.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- **WP5 — engine lowering convergence:** direct command/agent execution,
|
|
66
|
+
improve/proposal dispatch, tasks, and workflows now share the resolved-request
|
|
67
|
+
boundary and implementation-derived lowerers. Exact model and inference
|
|
68
|
+
settings reach registered harnesses; unsupported fields produce safe notices,
|
|
69
|
+
while provider capability rejection remains a runtime result.
|
|
70
|
+
- Scheduled workflow fires re-read the current peer source and create a fresh
|
|
71
|
+
durable-v4 freeze. Resume remains journaled replay, and crash recovery uses
|
|
72
|
+
at-least-once attempt semantics with stable reclaim identities.
|
|
73
|
+
- Task scheduler synchronization is transactional across supported adapters and
|
|
74
|
+
preserves exact ownership, rollback evidence, enabled state, parameters,
|
|
75
|
+
timeouts, redaction metadata, and resolver overrides.
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- Ordinary managed database opens no longer silently apply released migration
|
|
80
|
+
`018-drop-dead-lane-schema`, which drops retired tables and a column. Every
|
|
81
|
+
state migration now has an explicit safety classification; migration 002's
|
|
82
|
+
row-preserving table rebuild remains automatic, while migration 018 requires
|
|
83
|
+
a successful `akm upgrade` and a verified sibling SQLite snapshot created
|
|
84
|
+
immediately before its immutable SQL runs. The ledger recheck, WAL-inclusive
|
|
85
|
+
snapshot, and 018 transaction now share one writer-exclusion window; fresh
|
|
86
|
+
files and randomized backup paths are atomically reserved and inode-verified.
|
|
87
|
+
Pre-existing unversioned files—including an absent or empty migration
|
|
88
|
+
ledger—are rejected without writes by ordinary opens and snapshotted before
|
|
89
|
+
migration 001 by explicit upgrade. That snapshot, ledger initialization, and
|
|
90
|
+
migrations 001–002 share one writer-exclusion transaction, preventing an old
|
|
91
|
+
schema writer from landing data between the snapshot and the 002 rebuild.
|
|
92
|
+
Migration locks now reject phantom `BEGIN IMMEDIATE` results before running
|
|
93
|
+
SQL and fail clearly if the transaction disappears after a body. Snapshot
|
|
94
|
+
source and target handles are inode-bound, and failed reserved paths are
|
|
95
|
+
retained rather than removed by raced cleanup.
|
|
96
|
+
|
|
97
|
+
## [0.9.1] - 2026-08-18
|
|
10
98
|
|
|
11
99
|
### Fixed
|
|
12
100
|
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ assistant, including [Claude Code](https://claude.ai/code),
|
|
|
16
16
|
|
|
17
17
|
## Install
|
|
18
18
|
|
|
19
|
-
**Option 1 — npm package (recommended; requires [Node.js](https://nodejs.org) >=
|
|
19
|
+
**Option 1 — npm package (recommended; requires [Node.js](https://nodejs.org) >= 24):**
|
|
20
20
|
|
|
21
21
|
```sh
|
|
22
22
|
npm install -g akm-cli
|
|
@@ -85,6 +85,8 @@ Full docs, CLI reference, and guides are available on [GitHub](https://github.co
|
|
|
85
85
|
- [Getting Started](https://github.com/itlackey/akm/blob/main/docs/guides/getting-started.md)
|
|
86
86
|
- [Supported Formats](https://github.com/itlackey/akm/blob/main/docs/reference/supported-formats.md)
|
|
87
87
|
- [CLI Reference](https://github.com/itlackey/akm/blob/main/docs/reference/cli.md)
|
|
88
|
+
- [Task v3 Reference](https://github.com/itlackey/akm/blob/main/docs/reference/tasks.md)
|
|
89
|
+
- [0.9.2 Migration Guide](https://github.com/itlackey/akm/blob/main/docs/migration/v0.9.1-to-v0.9.2.md)
|
|
88
90
|
- [Configuration](https://github.com/itlackey/akm/blob/main/docs/reference/configuration.md)
|
|
89
91
|
- [Bundle Authoring Guide](https://github.com/itlackey/akm/blob/main/docs/guides/author-bundles.md)
|
|
90
92
|
- [Registry](https://github.com/itlackey/akm/blob/main/docs/reference/registry.md)
|
package/SECURITY.md
CHANGED
|
@@ -96,7 +96,7 @@ containing secrets or private notes.
|
|
|
96
96
|
|
|
97
97
|
## Known non-issues
|
|
98
98
|
|
|
99
|
-
- **The `akm-cli` npm package requires Node.js >=
|
|
99
|
+
- **The `akm-cli` npm package requires Node.js >= 24 as its bootstrap.** A
|
|
100
100
|
working Bun >= 1.0 is preferred for execution when it is also on `PATH`; old,
|
|
101
101
|
unusable, or absent Bun installations fall back to Node.js. Bun does not
|
|
102
102
|
remove the package's Node.js requirement. Standalone binaries are
|
package/STABILITY.md
CHANGED
|
@@ -218,7 +218,7 @@ enumeration of the whole `proposal` noun group.
|
|
|
218
218
|
| `78` | Configuration error |
|
|
219
219
|
- **Install scripts** — `install.sh` and `install.ps1` URLs; the `--prefix`
|
|
220
220
|
/ `AKM_INSTALL_DIR` environment override.
|
|
221
|
-
- **Runtime** — the npm package requires Node.js >=
|
|
221
|
+
- **Runtime** — the npm package requires Node.js >= 24 as its bootstrap and
|
|
222
222
|
prefers a working Bun >= 1.0 for execution when both are available; old,
|
|
223
223
|
unusable, or absent Bun installations fall back to Node.js. Standalone
|
|
224
224
|
binaries are runtime-free.
|
package/dist/akm
CHANGED
|
@@ -120,8 +120,8 @@ if (contextValid) {
|
|
|
120
120
|
|
|
121
121
|
if (!process.versions.bun) {
|
|
122
122
|
const [major = 0, minor = 0] = process.versions.node.split(".").map(Number);
|
|
123
|
-
if (major <
|
|
124
|
-
console.error("The akm-cli npm package requires Node.js >=
|
|
123
|
+
if (major < 24) {
|
|
124
|
+
console.error("The akm-cli npm package requires Node.js >= 24 to bootstrap.");
|
|
125
125
|
process.exit(1);
|
|
126
126
|
}
|
|
127
127
|
}
|
package/dist/akm-migrate
CHANGED
|
@@ -8,8 +8,8 @@ import { fileURLToPath } from "node:url";
|
|
|
8
8
|
|
|
9
9
|
if (!process.versions.bun) {
|
|
10
10
|
const [major = 0, minor = 0] = process.versions.node.split(".").map(Number);
|
|
11
|
-
if (major <
|
|
12
|
-
console.error("The akm-cli npm package requires Node.js >=
|
|
11
|
+
if (major < 24) {
|
|
12
|
+
console.error("The akm-cli npm package requires Node.js >= 24 to bootstrap.");
|
|
13
13
|
process.exit(1);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -92,7 +92,7 @@ akm import - --name scratch-notes < notes.md # Import stdin as a knowledge doc
|
|
|
92
92
|
akm import https://example.com/docs/auth # Fetch one URL and import it as knowledge
|
|
93
93
|
akm import ./doc.md --target my-other-bundle # Route import to a named writable bundle source
|
|
94
94
|
akm workflow create ship-release # Create a workflow asset in the bundle
|
|
95
|
-
akm lint --type workflows # Parse and compile every
|
|
95
|
+
akm lint --type workflows # Parse and compile every .md/.yml workflow source; list every error
|
|
96
96
|
akm workflow run workflows/ship-release # Start or resume and execute the workflow
|
|
97
97
|
akm feedback skills/code-review --positive # Record that an asset helped
|
|
98
98
|
akm feedback agents/reviewer --negative --reason "wrong framework" # Record why an asset missed the mark
|
|
@@ -160,7 +160,9 @@ akm secret run secrets/deploy-token GITHUB_TOKEN -- gh release create v1.0.0 #
|
|
|
160
160
|
|
|
161
161
|
## Workflows
|
|
162
162
|
|
|
163
|
-
Workflows live under `<bundle>/workflows/` as
|
|
163
|
+
Workflows live under `<bundle>/workflows/` as peer `.md` and `.yml` sources.
|
|
164
|
+
Both compile to the same source IR; see `docs/reference/workflow-schema.md` for
|
|
165
|
+
the bounded GitHub-shaped YAML subset.
|
|
164
166
|
|
|
165
167
|
Ref-based workflow commands are scoped to the current project/worktree/directory,
|
|
166
168
|
so one active run does not block unrelated directories from starting the same
|
|
@@ -269,6 +271,7 @@ akm bundle list --kind git # Filter by provider (files
|
|
|
269
271
|
akm bundle remove <target> # Remove by id, ref, path, or name
|
|
270
272
|
akm bundle update --all # Update all managed sources
|
|
271
273
|
akm bundle update <target> --force # Force re-download
|
|
274
|
+
akm bundle update <target> --allow-insecure # Approve reviewed dangerous env keys
|
|
272
275
|
```
|
|
273
276
|
|
|
274
277
|
## Registries
|
|
@@ -336,7 +339,7 @@ akm proposal reject <id> --reason "..." # Archive with a reason
|
|
|
336
339
|
akm proposal revert <id> # Restore the pre-promotion content
|
|
337
340
|
akm proposal new <type> <name> --task "..." # Agent-author a NEW asset as a proposal
|
|
338
341
|
akm proposal extract --auto # Mine native session files into proposals
|
|
339
|
-
akm proposal extract --type claude
|
|
342
|
+
akm proposal extract --type claude # Restrict extraction to one harness
|
|
340
343
|
```
|
|
341
344
|
|
|
342
345
|
The flat verbs `akm proposals` / `akm show proposal` / `akm accept` /
|
|
@@ -353,7 +356,7 @@ file plus one `sync` is a complete workflow.
|
|
|
353
356
|
|
|
354
357
|
```sh
|
|
355
358
|
akm task add nightly-improve --schedule "@daily" --command "akm improve --strategy frequent"
|
|
356
|
-
akm task add briefing --schedule "0 9 * * *" --prompt
|
|
359
|
+
akm task add briefing --schedule "0 9 * * *" --prompt "Draft the morning briefing" # Inline command task
|
|
357
360
|
akm task sync # Reconcile task files with the OS scheduler
|
|
358
361
|
akm task sync --rebind # Also re-pin the scheduler's akm binary/spelling
|
|
359
362
|
akm task doctor # Scheduler binding + runtime eligibility diagnosis
|
|
@@ -362,18 +365,20 @@ akm task run <id> # Run one task immediately (works
|
|
|
362
365
|
akm search --type task # Enumerate task assets (there is no `task list`)
|
|
363
366
|
```
|
|
364
367
|
|
|
365
|
-
|
|
368
|
+
Task files use strict task v3 (`version: 3`). To disable one, set
|
|
369
|
+
`akm.enabled: false` and run `akm task sync`
|
|
366
370
|
(the cron line stays, commented). To remove one, delete the YAML and run
|
|
367
|
-
`akm task sync` — the scheduler entry is unbound. Per-task `
|
|
368
|
-
|
|
369
|
-
|
|
371
|
+
`akm task sync` — the scheduler entry is unbound. Per-task `akm.timeout` may
|
|
372
|
+
be `null` (disable the invocation timer) or a duration/number overriding the
|
|
373
|
+
selected engine invocation timeout. Preview old task-v2 conversion with
|
|
374
|
+
`akm migrate apply --dry-run`.
|
|
370
375
|
|
|
371
376
|
## Agent Dispatch
|
|
372
377
|
|
|
373
378
|
```sh
|
|
374
379
|
akm agent --prompt "summarize open proposals" # Dispatch the configured agent CLI
|
|
375
380
|
akm agent agents/architect --prompt "..." # Embody a bundle agent asset (system prompt, model, tool policy)
|
|
376
|
-
akm
|
|
381
|
+
akm command run commands/release # Canonical reusable-command dispatch
|
|
377
382
|
akm agent --model sonnet --prompt "..." # Model override (aliases or exact IDs)
|
|
378
383
|
```
|
|
379
384
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"aliases": {
|
|
4
|
+
"fast": {
|
|
5
|
+
"claude": "claude-haiku-4-5-20251001",
|
|
6
|
+
"opencode": "opencode/claude-haiku-4-5",
|
|
7
|
+
"opencode-sdk": "anthropic/claude-haiku-4-5"
|
|
8
|
+
},
|
|
9
|
+
"balanced": {
|
|
10
|
+
"claude": "claude-sonnet-4-6",
|
|
11
|
+
"opencode": "opencode/claude-sonnet-4-6",
|
|
12
|
+
"opencode-sdk": "anthropic/claude-sonnet-4-6"
|
|
13
|
+
},
|
|
14
|
+
"reasoning": {
|
|
15
|
+
"claude": {
|
|
16
|
+
"model": "claude-opus-4-7",
|
|
17
|
+
"inference": {
|
|
18
|
+
"effort": "high"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"opencode": {
|
|
22
|
+
"model": "opencode/claude-opus-4-7",
|
|
23
|
+
"inference": {
|
|
24
|
+
"effort": "high"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"opencode-sdk": {
|
|
28
|
+
"model": "anthropic/claude-opus-4-7",
|
|
29
|
+
"inference": {
|
|
30
|
+
"effort": "high"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm proposal extract --auto
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "*/30 * * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Opt-in all-harness session extraction every 30 min
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "0 2 * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Run improve pipeline nightly
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm index
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "0 4 * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Nightly incremental index refresh
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm sync
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "*/15 * * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Sync stash changes to git remote every 15 min
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm upgrade --check
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "0 9 * * 1"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Weekly check for new akm releases
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve --strategy graph-refresh --skip-if-locked
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "10 3 * * 0"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Full-corpus graph rebuild (weekly Sunday 3:10am)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve --strategy catchup --skip-if-locked
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "0 4 * * *"
|
|
4
5
|
# Manual-recovery task: ships disabled (the retired registerDefaultTasks
|
|
5
6
|
# marked it enableMode: "manual"). `akm task run` works while disabled;
|
|
6
7
|
# opting into the schedule is `enabled: true` + `akm task sync`.
|
|
7
|
-
enabled: false
|
|
8
|
-
description: Manual recovery — consolidation + triage drain (run on demand via `akm task run akm-improve-catchup`)
|
|
8
|
+
enabled: false
|
|
9
|
+
description: Manual recovery — consolidation + triage drain (run on demand via `akm task run akm-improve-catchup`)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve --strategy consolidate --skip-if-locked
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "20 */4 * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Consolidation-only pass (every 4h at :20)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve --strategy frequent --skip-if-locked
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "40 * * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Frequent inference pass (hourly at :40; improve-stage extract off)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
version:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
version: 3
|
|
2
|
+
run: akm improve --strategy thorough --skip-if-locked
|
|
3
|
+
akm:
|
|
4
|
+
schedule: "15 2 * * *"
|
|
5
|
+
enabled: true
|
|
6
|
+
description: Full nightly quality sweep (daily 2:15am; suggested for server installs)
|
package/dist/cli/confirm.js
CHANGED
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
*
|
|
33
33
|
* ## Safety exemptions
|
|
34
34
|
*
|
|
35
|
-
* `--quiet` NEVER suppresses the confirmation prompt
|
|
36
|
-
* output.
|
|
35
|
+
* `--quiet` NEVER suppresses the confirmation prompt because it is
|
|
36
|
+
* safety-critical output.
|
|
37
37
|
*/
|
|
38
38
|
import { UsageError } from "../core/errors.js";
|
|
39
39
|
import * as p from "./clack.js";
|
package/dist/cli/parse-args.js
CHANGED
|
@@ -45,9 +45,9 @@ export function parsePositiveIntFlag(raw, flagName = "--limit") {
|
|
|
45
45
|
const trimmed = raw.trim();
|
|
46
46
|
if (!trimmed)
|
|
47
47
|
return undefined;
|
|
48
|
-
// Strict digits
|
|
49
|
-
//
|
|
50
|
-
//
|
|
48
|
+
// Strict digits: parseInt stops at the first non-digit, so "10x" silently
|
|
49
|
+
// became 10, "3.5" became 3, and "5 apples" became 5 — accepted rather than
|
|
50
|
+
// rejected as invalid.
|
|
51
51
|
if (!/^\d+$/.test(trimmed)) {
|
|
52
52
|
throw new UsageError(`Invalid ${flagName} value: "${raw}". Must be a positive integer.`, "INVALID_FLAG_VALUE");
|
|
53
53
|
}
|
|
@@ -57,27 +57,6 @@ export function parsePositiveIntFlag(raw, flagName = "--limit") {
|
|
|
57
57
|
}
|
|
58
58
|
return parsed;
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Parse a non-negative integer flag value (0 is allowed, unlike `parsePositiveIntFlag`).
|
|
62
|
-
*
|
|
63
|
-
* Returns `undefined` when `raw` is `undefined` or empty (flag not supplied).
|
|
64
|
-
* Throws `UsageError` when the raw value is present but not a valid non-negative
|
|
65
|
-
* integer (e.g. contains decimals, letters, or is negative).
|
|
66
|
-
*
|
|
67
|
-
* @param raw The raw string value (may be undefined).
|
|
68
|
-
* @param flagName The flag name to include in the error message.
|
|
69
|
-
*/
|
|
70
|
-
export function parseNonNegativeIntFlag(raw, flagName) {
|
|
71
|
-
if (raw === undefined)
|
|
72
|
-
return undefined;
|
|
73
|
-
const trimmed = raw.trim();
|
|
74
|
-
if (!trimmed)
|
|
75
|
-
return undefined;
|
|
76
|
-
if (!/^\d+$/.test(trimmed)) {
|
|
77
|
-
throw new UsageError(`Invalid ${flagName} value: "${raw}". Must be a non-negative integer.`, "INVALID_FLAG_VALUE");
|
|
78
|
-
}
|
|
79
|
-
return parseInt(trimmed, 10);
|
|
80
|
-
}
|
|
81
60
|
// ── String flag parsing ──────────────────────────────────────────────────────
|
|
82
61
|
/**
|
|
83
62
|
* Extract a string value from a parsed citty argument object by key.
|
|
@@ -45,7 +45,7 @@ const RETIRED_COMMAND_HINTS = {
|
|
|
45
45
|
mv: "`akm mv` was removed in 0.9 — move the file, then run `akm index` and `akm lint` (to carry ranking signal: `bun scripts/rekey-asset-ref.ts <old-ref> <new-ref>`).",
|
|
46
46
|
// Pre-0.9 removals agents still trip over.
|
|
47
47
|
wiki: "the `akm wiki` family was removed in 0.9 — wikis are ordinary knowledge assets; ingest with `akm import <url> --path <subdir>`.",
|
|
48
|
-
backup: "`akm backup` was removed in 0.9 —
|
|
48
|
+
backup: "`akm backup` was removed in 0.9 — stop writers and archive current config, data, state, and writable bundles with your normal backup tooling.",
|
|
49
49
|
vault: "the `akm vault ...` family was removed in 0.9 — use `akm env list`/`akm env create` for a whole `.env` group, or `akm secret set <name>` for a single sensitive value.",
|
|
50
50
|
// Group-scoped retirements.
|
|
51
51
|
"env set": "`akm env set` was removed in 0.9 — edit the `.env` file directly; akm loads it as-is.",
|
package/dist/cli/shared.js
CHANGED
|
@@ -172,8 +172,8 @@ export const GLOBAL_OUTPUT_ARGS = {
|
|
|
172
172
|
type: "boolean",
|
|
173
173
|
alias: "q",
|
|
174
174
|
description: "Suppress non-essential stderr output (banners, spinners, progress info) (global flag). " +
|
|
175
|
-
"Safety-critical output is never suppressed: errors
|
|
176
|
-
"
|
|
175
|
+
"Safety-critical output is never suppressed: errors and destructive-action confirmation prompts " +
|
|
176
|
+
"always appear regardless of --quiet.",
|
|
177
177
|
default: false,
|
|
178
178
|
},
|
|
179
179
|
verbose: {
|
package/dist/cli.js
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
3
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
4
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
-
// Runtime guard: the akm-cli npm package bootstraps with Node.js >=
|
|
5
|
+
// Runtime guard: the akm-cli npm package bootstraps with Node.js >= 24
|
|
6
6
|
// (#465, #560), then its launcher prefers a working Bun >= 1.0 when available.
|
|
7
7
|
// The runtime boundary (src/runtime.ts, src/storage/database.ts) supports both.
|
|
8
8
|
// Under Node the CLI must be launched via the
|
|
9
9
|
// `dist/cli-node.mjs` wrapper, which registers the text-import loader hook
|
|
10
10
|
// before this module graph loads; running `node dist/cli.js` directly still
|
|
11
11
|
// works for code paths that touch no embedded text asset, but the wrapper is
|
|
12
|
-
// the supported entry. The hard floor is Node
|
|
13
|
-
//
|
|
12
|
+
// the supported entry. The hard floor is Node 24; Node 22 is no longer a
|
|
13
|
+
// supported npm bootstrap runtime.
|
|
14
14
|
{
|
|
15
15
|
const isBun = typeof globalThis.Bun !== "undefined";
|
|
16
16
|
if (!isBun) {
|
|
17
17
|
const [major = 0] = (process.versions.node ?? "0").split(".").map((part) => Number.parseInt(part, 10) || 0);
|
|
18
|
-
const nodeOk = major >=
|
|
18
|
+
const nodeOk = major >= 24;
|
|
19
19
|
if (!nodeOk) {
|
|
20
|
-
console.error("\n ERROR: the akm-cli npm package requires Node.js >=
|
|
20
|
+
console.error("\n ERROR: the akm-cli npm package requires Node.js >= 24.\n" +
|
|
21
21
|
` Detected Node.js ${process.versions.node ?? "unknown"}.\n` +
|
|
22
22
|
" Bun >= 1.0 is optional for execution; it does not replace the Node.js bootstrap.\n" +
|
|
23
23
|
" Upgrade Node.js (https://nodejs.org), or install the runtime-free standalone binary:\n" +
|
|
@@ -62,6 +62,7 @@ import { retiredCommandHint } from "./cli/retired-commands.js";
|
|
|
62
62
|
import { defineGroupCommand, EXIT_CODES, emitJsonError, GLOBAL_OUTPUT_ARGS, output, runWithJsonErrors, } from "./cli/shared.js";
|
|
63
63
|
import { assertKnownFlags, closestMatch } from "./cli/unknown-flags.js";
|
|
64
64
|
import { agentCommand, lintCommand } from "./commands/agent/contribute-cli.js";
|
|
65
|
+
import { commandCommand } from "./commands/command/command-cli.js";
|
|
65
66
|
import { generateBashCompletions, installBashCompletions } from "./commands/completions.js";
|
|
66
67
|
import { configCommand } from "./commands/config-cli.js";
|
|
67
68
|
import { envCommand } from "./commands/env/env-cli.js";
|
|
@@ -72,6 +73,7 @@ import "./commands/health/renderers.js";
|
|
|
72
73
|
import { parseWindowSpec } from "./commands/health/windows.js";
|
|
73
74
|
import { improveCommand } from "./commands/improve/improve-cli.js";
|
|
74
75
|
import { migrateCommand } from "./commands/migrate-cli.js";
|
|
76
|
+
import { modelsCommand } from "./commands/models-cli.js";
|
|
75
77
|
import { logCommand } from "./commands/observability-cli.js";
|
|
76
78
|
import { proposalCommand } from "./commands/proposal/proposal-cli.js";
|
|
77
79
|
import { rememberCommand } from "./commands/read/remember-cli.js";
|
|
@@ -85,7 +87,6 @@ import { taskCommand } from "./commands/tasks/tasks-cli.js";
|
|
|
85
87
|
import { workflowCommand } from "./commands/workflow-cli.js";
|
|
86
88
|
import { DEFAULT_CONFIG, loadConfig } from "./core/config/config.js";
|
|
87
89
|
import { UsageError } from "./core/errors.js";
|
|
88
|
-
import { assertNoPendingMigrationOperation } from "./core/migration-operation.js";
|
|
89
90
|
import { getConfigPath } from "./core/paths.js";
|
|
90
91
|
import { DURATION_UNITS, parseDuration } from "./core/time.js";
|
|
91
92
|
import { plainize } from "./core/tty.js";
|
|
@@ -449,6 +450,7 @@ const commands = {
|
|
|
449
450
|
feedback: feedbackCommand,
|
|
450
451
|
log: logCommand,
|
|
451
452
|
agent: agentCommand,
|
|
453
|
+
command: commandCommand,
|
|
452
454
|
lint: lintCommand,
|
|
453
455
|
improve: improveCommand,
|
|
454
456
|
proposal: proposalCommand,
|
|
@@ -456,6 +458,7 @@ const commands = {
|
|
|
456
458
|
env: envCommand,
|
|
457
459
|
secret: secretCommand,
|
|
458
460
|
task: taskCommand,
|
|
461
|
+
models: modelsCommand,
|
|
459
462
|
hints: hintsCommand,
|
|
460
463
|
};
|
|
461
464
|
function commandHelpTopic(name, command) {
|
|
@@ -730,7 +733,7 @@ const HELP_SECTIONS = [
|
|
|
730
733
|
title: "ASSETS",
|
|
731
734
|
commands: ["import", "clone", "bundle", "env", "secret", "sync", "proposal"],
|
|
732
735
|
},
|
|
733
|
-
{ title: "AUTOMATION", commands: ["improve", "agent", "workflow", "task"] },
|
|
736
|
+
{ title: "AUTOMATION", commands: ["improve", "agent", "command", "workflow", "task"] },
|
|
734
737
|
{
|
|
735
738
|
title: "SYSTEM",
|
|
736
739
|
commands: [
|
|
@@ -739,6 +742,7 @@ const HELP_SECTIONS = [
|
|
|
739
742
|
"lint",
|
|
740
743
|
"health",
|
|
741
744
|
"config",
|
|
745
|
+
"models",
|
|
742
746
|
"registry",
|
|
743
747
|
"info",
|
|
744
748
|
"log",
|
|
@@ -927,8 +931,6 @@ async function runCli() {
|
|
|
927
931
|
// rather than letting the raw exception escape with a stack trace.
|
|
928
932
|
try {
|
|
929
933
|
applyEarlyStderrFlags(process.argv);
|
|
930
|
-
if (isTaskRunWithId(process.argv))
|
|
931
|
-
assertNoPendingMigrationOperation();
|
|
932
934
|
const bypassConfig = shouldBypassConfigStartup(process.argv);
|
|
933
935
|
initOutputMode(process.argv, bypassConfig ? (DEFAULT_CONFIG.output ?? {}) : (loadConfig().output ?? {}));
|
|
934
936
|
}
|