akm-cli 0.9.1 → 0.9.2-alpha.2
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 +103 -28
- 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/stash-skeleton/facts/conventions/backlinks.md +3 -4
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +1 -3
- 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 +5 -6
- 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-prompt.js +64 -22
- package/dist/commands/improve/extract.js +608 -360
- 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 +53 -22
- 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 +901 -177
- 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 +85 -35
- 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 +23 -26
- package/dist/core/config/schema/engines.js +8 -7
- package/dist/core/config/schema/improve-processes.js +29 -5
- package/dist/core/config/schema/index-config.js +0 -27
- 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 +78 -39
- package/dist/indexer/indexer.js +471 -432
- package/dist/indexer/installations.js +6 -0
- package/dist/indexer/lookup/adapter-concept-owner.js +283 -0
- package/dist/indexer/materialize-embeddings.js +155 -0
- package/dist/indexer/passes/memory-inference.js +227 -174
- package/dist/indexer/passes/metadata.js +263 -118
- package/dist/indexer/scan/doc-to-entry.js +7 -10
- package/dist/indexer/scan/drain-dir.js +51 -23
- package/dist/indexer/search/db-search.js +156 -50
- package/dist/indexer/search/fts-query.js +40 -40
- package/dist/indexer/search/ranking.js +36 -1
- package/dist/indexer/search/search-attribution.js +3 -1
- package/dist/indexer/search/search-fields.js +23 -14
- 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 +31 -33
- 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 +19334 -52269
- package/dist/scripts/akm-migrate.js +19270 -51612
- 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 +203 -229
- 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 +64 -71
- 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 +74 -350
- package/dist/storage/repositories/index-utility-repository.js +12 -17
- package/dist/storage/repositories/index-vec-repository.js +56 -7
- 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 +159 -36
- 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 -224
- 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,6 +6,98 @@ 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.2-alpha.2] - 2026-08-25
|
|
10
|
+
|
|
11
|
+
- TODO
|
|
12
|
+
|
|
13
|
+
## [0.9.2-alpha.1] - 2026-08-24
|
|
14
|
+
|
|
15
|
+
### Breaking changes & migration
|
|
16
|
+
|
|
17
|
+
- **Node.js 22 is no longer supported by the npm package.** `akm-cli` now
|
|
18
|
+
requires Node.js >= 24 to bootstrap its command. A working Bun >= 1.0 remains
|
|
19
|
+
optional and preferred for execution after that bootstrap; the standalone
|
|
20
|
+
binary remains runtime-free. Upgrade Node before installing or running the
|
|
21
|
+
npm package.
|
|
22
|
+
- The `inherit_env` option is a breaking removal: new durable-v4 workflow starts reject it.
|
|
23
|
+
Replace ambient whole-process inheritance with exact named environment bindings and
|
|
24
|
+
`exec.pass_env` names. Pre-v4 stored workflow plans are not executable in
|
|
25
|
+
0.9.2; start a new run from current source.
|
|
26
|
+
- `improve.strategies.*.processes.triage.judgment` now accepts `true`/`false`
|
|
27
|
+
and honors `enabled` on object values; existing `{}` and configured objects
|
|
28
|
+
remain enabled. Unknown object keys are now rejected instead of ignored, so
|
|
29
|
+
correct typos such as `egnine`, `judgement`, or other unrecognized fields
|
|
30
|
+
before upgrading. Use `judgment: false` to disable the tier explicitly.
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **WP0 — characterization and release contracts:** pinned direct-agent,
|
|
35
|
+
command, task, workflow-freeze, model-alias, and harness-lowering behavior;
|
|
36
|
+
added cross-entry-point equivalence fixtures and immutable release-surface
|
|
37
|
+
gates.
|
|
38
|
+
- **WP1 — shared execution contracts:** introduced adapter-rendered source
|
|
39
|
+
identity and one resolved-request representation carrying final content,
|
|
40
|
+
engine/model/inference selection, authorization, runtime settings, source
|
|
41
|
+
hashes, and structured lowering notices.
|
|
42
|
+
- **WP2 — layered model maps:** ship a versioned installed `models.json`, merge
|
|
43
|
+
an optional user overlay from the config directory, expand known aliases by
|
|
44
|
+
engine, pass unknown identifiers through exactly, and provide guarded model
|
|
45
|
+
map initialization.
|
|
46
|
+
- **WP3 — common cascade and authorization:** resolve far-to-near defaults once,
|
|
47
|
+
preserve explicit false/zero/empty values, authorize selected tools before
|
|
48
|
+
dispatch, and expose stable field-level provenance without resolved values.
|
|
49
|
+
- **WP4 — portable command execution:** added canonical
|
|
50
|
+
`akm command run <ref>`, implemented one-pass `$ARGUMENTS` substitution, and
|
|
51
|
+
reject unsupported native template constructs before dispatch. Stored
|
|
52
|
+
commands have one execution surface; `akm agent --command` is not retained.
|
|
53
|
+
- **WP6 — task v3:** added the strict shipped task schema, command/workflow/script
|
|
54
|
+
targets, closed shell and working-directory rules, portable schedules, and a
|
|
55
|
+
fail-closed task-v2 migrator with no-write preview, per-file status, backups,
|
|
56
|
+
validation, and blocked argv-array handling.
|
|
57
|
+
- **WP7 — peer workflow sources and durable v4:** compile Markdown and the
|
|
58
|
+
approved GitHub-shaped `.yml` subset through source IR v1; new runs atomically
|
|
59
|
+
persist immutable v4 targets, guarded source reads, symbolic environments,
|
|
60
|
+
and durable dispatch attempts. Pre-v4 stored plans are rejected rather than
|
|
61
|
+
maintaining a second runtime.
|
|
62
|
+
- **WP8 — release diagnostics:** added zero-write, secret-safe command dry-run
|
|
63
|
+
output, stderr-only verbose provenance, offline `selected-model-aliases` and
|
|
64
|
+
`configured-engines` health advisories, self-contained migration guidance,
|
|
65
|
+
and npm tar/install/link release gates.
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
|
|
69
|
+
- **WP5 — engine lowering convergence:** direct command/agent execution,
|
|
70
|
+
improve/proposal dispatch, tasks, and workflows now share the resolved-request
|
|
71
|
+
boundary and implementation-derived lowerers. Exact model and inference
|
|
72
|
+
settings reach registered harnesses; unsupported fields produce safe notices,
|
|
73
|
+
while provider capability rejection remains a runtime result.
|
|
74
|
+
- Scheduled workflow fires re-read the current peer source and create a fresh
|
|
75
|
+
durable-v4 freeze. Resume remains journaled replay, and crash recovery uses
|
|
76
|
+
at-least-once attempt semantics with stable reclaim identities.
|
|
77
|
+
- Task scheduler synchronization is transactional across supported adapters and
|
|
78
|
+
preserves exact ownership, rollback evidence, enabled state, parameters,
|
|
79
|
+
timeouts, redaction metadata, and resolver overrides.
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- Ordinary managed database opens no longer silently apply released migration
|
|
84
|
+
`018-drop-dead-lane-schema`, which drops retired tables and a column. Every
|
|
85
|
+
state migration now has an explicit safety classification; migration 002's
|
|
86
|
+
row-preserving table rebuild remains automatic, while migration 018 requires
|
|
87
|
+
a successful `akm upgrade` and a verified sibling SQLite snapshot created
|
|
88
|
+
immediately before its immutable SQL runs. The ledger recheck, WAL-inclusive
|
|
89
|
+
snapshot, and 018 transaction now share one writer-exclusion window; fresh
|
|
90
|
+
files and randomized backup paths are atomically reserved and inode-verified.
|
|
91
|
+
Pre-existing unversioned files—including an absent or empty migration
|
|
92
|
+
ledger—are rejected without writes by ordinary opens and snapshotted before
|
|
93
|
+
migration 001 by explicit upgrade. That snapshot, ledger initialization, and
|
|
94
|
+
migrations 001–002 share one writer-exclusion transaction, preventing an old
|
|
95
|
+
schema writer from landing data between the snapshot and the 002 rebuild.
|
|
96
|
+
Migration locks now reject phantom `BEGIN IMMEDIATE` results before running
|
|
97
|
+
SQL and fail clearly if the transaction disappears after a body. Snapshot
|
|
98
|
+
source and target handles are inode-bound, and failed reserved paths are
|
|
99
|
+
retained rather than removed by raced cleanup.
|
|
100
|
+
|
|
9
101
|
## [0.9.1] - 2026-08-18
|
|
10
102
|
|
|
11
103
|
### Fixed
|
|
@@ -1125,34 +1217,17 @@ See `docs/migration/v0.8-to-v0.9.md` and
|
|
|
1125
1217
|
and a real domain asset always outranks the facts. That invariant is pinned
|
|
1126
1218
|
by `tests/search-convention-fact-demotion.test.ts`, which becomes the
|
|
1127
1219
|
regression guard if a demotion contributor is ever revisited.
|
|
1128
|
-
- **
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
lowest-weight `content` FTS column (bm25 weight 1.0, so a name match always
|
|
1140
|
-
outranks a body-opening-only match) and into the search/embedding text.
|
|
1141
|
-
Secret and env files are never read for it, and session-kind memories
|
|
1142
|
-
(`akm_memory_kind` in outer or nested inner frontmatter) are excluded —
|
|
1143
|
-
their bodies are raw transcripts. Both indexing walks and write-path
|
|
1144
|
-
indexing honor the flag (the metadata pass reads the user config directly).
|
|
1145
|
-
With the flag absent or `false`, entries and search fields stay
|
|
1146
|
-
byte-identical to before. **Costs of toggling (either direction):** indexed
|
|
1147
|
-
text changes, so collapse-detector canary recall baselines shift — re-mint
|
|
1148
|
-
via `akm improve canary --refresh` — and embeddings are NOT regenerated for
|
|
1149
|
-
entries that already have one, while incremental runs re-extract only
|
|
1150
|
-
changed files. Run `akm index --full` after toggling: it re-extracts every
|
|
1151
|
-
entry and wipes embeddings so they rebuild from the new text; until then
|
|
1152
|
-
`akm index` warns that the flag differs from the state the index was built
|
|
1153
|
-
with. The conventions' `description:`/`when_to_use:` orientation routing
|
|
1154
|
-
remains primary — this flag makes body openings additionally pay retrieval
|
|
1155
|
-
rent, it does not replace structured metadata. See `docs/configuration.md`.
|
|
1220
|
+
- **One progressive lexical retrieval path and searchable Markdown prose.**
|
|
1221
|
+
FTS now tokenizes Unicode letters/numbers, deduplicates and caps the query,
|
|
1222
|
+
then runs strict AND, prefix-AND, and a single OR/prefix-OR recovery only
|
|
1223
|
+
after both conjunctive forms miss. Every stage keeps the existing BM25 field
|
|
1224
|
+
weights and downstream ranker; callers do not maintain stopword lists or
|
|
1225
|
+
parallel result collections. AKM-native Markdown contributes a normalized,
|
|
1226
|
+
16,384-character body projection through the existing lowest-weight
|
|
1227
|
+
`content` field. Frontmatter, comments, fenced code, and link destinations
|
|
1228
|
+
are removed; secret/env values and raw session/checkpoint bodies never enter
|
|
1229
|
+
the projection. Structured fields remain first in the bounded embedding
|
|
1230
|
+
input, so exact names and metadata continue to dominate body-only matches.
|
|
1156
1231
|
- **`akm mv <ref> <new-name>` — rename with inbound-xref rewrite and
|
|
1157
1232
|
utility-history preservation (Experimental).** The stash conventions'
|
|
1158
1233
|
forced-rename procedure ("grep and fix inbound xrefs in the same pass") was
|
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
|
+
}
|
|
@@ -73,10 +73,9 @@ xrefs:
|
|
|
73
73
|
## Self-situating headers and canonical naming
|
|
74
74
|
|
|
75
75
|
Put the one-line orientation in `description:` and the trigger conditions in
|
|
76
|
-
`when_to_use:` — those
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
`description:`/`when_to_use:` remain the primary orientation channel). Then
|
|
76
|
+
`when_to_use:` — those remain the higher-weight indexed fields. Bounded body
|
|
77
|
+
prose is indexed in the lowest-weight `content` field, so
|
|
78
|
+
`description:`/`when_to_use:` remain the primary orientation channel. Then
|
|
80
79
|
open the body with a plain title plus a one-line
|
|
81
80
|
orientation naming what it is, its scope/domain, and its key entities in
|
|
82
81
|
canonical spelling (`Postgres`, `OAuth`, `TLS`, `Acme`) — the entity/relation
|
|
@@ -86,9 +86,7 @@ cross-project reuse.
|
|
|
86
86
|
(`acme` vs `acme-corp`) so the prefix does not fragment. Keep the domain
|
|
87
87
|
vocabulary in `facts/conventions/domains`.
|
|
88
88
|
- **Off-axis facets go in `tags:`, not a bare field.** The indexed FTS fields are
|
|
89
|
-
name, description, tags, hints, and
|
|
90
|
-
not indexed by default; the opt-in `index.indexBodyOpening` flag adds just
|
|
91
|
-
the first body paragraph, at the lowest weight) — there is **no `project`
|
|
89
|
+
name, description, tags, hints, and bounded low-weight body content — there is **no `project`
|
|
92
90
|
field**, so `project: projectA` in
|
|
93
91
|
frontmatter is invisible to search. Put the off-axis facet in `tags` instead
|
|
94
92
|
(a project-scoped memory adds `tags: [auth]`; a domain-scoped asset genuinely
|
|
@@ -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: {
|