akm-cli 0.9.0-rc.8 → 0.9.0
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 +1063 -44
- package/README.md +51 -25
- package/SECURITY.md +14 -1
- package/STABILITY.md +497 -0
- package/dist/akm +148 -35
- package/dist/{akm-migrate-storage → akm-migrate} +6 -9
- package/dist/assets/hints/cli-hints-full.md +223 -95
- package/dist/assets/hints/cli-hints-short.md +85 -22
- package/dist/assets/improve-strategies/default.json +1 -1
- package/dist/assets/improve-strategies/reflect-distill.json +1 -1
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/stash-skeleton/README.md +6 -5
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +20 -9
- package/dist/assets/tasks/core/extract.yml +1 -1
- package/dist/assets/tasks/core/version-check.yml +1 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
- package/dist/assets/templates/html/health.html +1 -3
- package/dist/assets/workflows/workflow-template.md +32 -15
- package/dist/cli/invocation.js +40 -15
- package/dist/cli/parse-args.js +0 -22
- package/dist/cli/retired-commands.js +121 -0
- package/dist/cli/shared.js +154 -22
- package/dist/cli/unknown-flags.js +236 -0
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +696 -258
- package/dist/commands/agent/agent-dispatch.js +14 -3
- package/dist/commands/agent/contribute-cli.js +73 -88
- package/dist/commands/completions.js +79 -22
- package/dist/commands/config-cli.js +17 -150
- package/dist/commands/env/env-cli.js +59 -143
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +36 -66
- package/dist/commands/env/secret.js +24 -57
- package/dist/commands/feedback-cli.js +141 -87
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +3 -4
- package/dist/commands/health/checks.js +85 -23
- package/dist/commands/health/html-report.js +7 -10
- package/dist/commands/health/improve-metrics.js +25 -83
- package/dist/commands/health/md-report.js +5 -9
- package/dist/commands/health/metrics.js +62 -20
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +4 -5
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +3 -48
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/commands/health/types-improve.js +7 -0
- package/dist/commands/health.js +99 -28
- package/dist/commands/improve/anti-collapse.js +2 -2
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +41 -40
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +140 -1000
- package/dist/commands/improve/distill/promote-memory.js +12 -12
- package/dist/commands/improve/distill/quality-gate.js +6 -6
- package/dist/commands/improve/distill.js +58 -69
- package/dist/commands/improve/eligibility.js +105 -57
- package/dist/commands/improve/extract-cli.js +14 -133
- package/dist/commands/improve/improve-cli.js +98 -114
- package/dist/commands/improve/improve-result-file.js +1 -28
- package/dist/commands/improve/improve-strategies.js +8 -5
- package/dist/commands/improve/improve.js +128 -91
- package/dist/commands/improve/loop-stages.js +182 -20
- package/dist/commands/improve/memory/derived-ref.js +45 -43
- package/dist/commands/improve/memory/memory-belief.js +1 -1
- package/dist/commands/improve/memory/memory-contradiction-detect.js +4 -12
- package/dist/commands/improve/memory/memory-improve.js +6 -5
- package/dist/commands/improve/outcome-loop.js +22 -65
- package/dist/commands/improve/preparation.js +114 -123
- package/dist/commands/improve/proactive-maintenance.js +2 -5
- package/dist/commands/improve/reflect.js +56 -160
- package/dist/commands/improve/salience.js +11 -122
- package/dist/commands/improve/source-identity.js +10 -38
- package/dist/commands/lint/base-linter.js +20 -124
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +249 -43
- package/dist/commands/{events.js → log.js} +33 -38
- package/dist/commands/migrate-cli.js +92 -12
- package/dist/commands/migration-tool.js +46 -0
- package/dist/commands/observability-cli.js +70 -209
- package/dist/commands/proposal/drain.js +101 -29
- package/dist/commands/proposal/proposal-cli.js +76 -48
- package/dist/commands/proposal/proposal.js +54 -18
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +23 -15
- package/dist/commands/proposal/repository.js +701 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +2 -8
- package/dist/commands/proposal/validators/proposal-validators.js +55 -7
- package/dist/commands/proposal/validators/proposals.js +4 -7
- package/dist/commands/read/curate.js +34 -53
- package/dist/commands/read/knowledge.js +150 -95
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +42 -15
- package/dist/commands/read/search-cli.js +180 -78
- package/dist/commands/read/search.js +58 -43
- package/dist/commands/read/show.js +197 -141
- package/dist/commands/registry-cli.js +12 -51
- package/dist/commands/remember.js +14 -57
- package/dist/commands/sources/add-cli.js +100 -31
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +7 -2
- package/dist/commands/sources/info.js +18 -5
- package/dist/commands/sources/init.js +12 -12
- package/dist/commands/sources/installed-stashes.js +382 -98
- package/dist/commands/sources/schema-repair.js +3 -2
- package/dist/commands/sources/self-update.js +131 -38
- package/dist/commands/sources/source-add.js +72 -17
- package/dist/commands/sources/source-clone.js +129 -45
- package/dist/commands/sources/source-manage.js +43 -23
- package/dist/commands/sources/sources-cli.js +57 -208
- package/dist/commands/sources/stash-cli.js +46 -53
- package/dist/commands/tasks/tasks-cli.js +91 -97
- package/dist/commands/tasks/tasks.js +276 -421
- package/dist/commands/workflow-cli.js +175 -450
- package/dist/core/adapter/adapters/akm-adapter.js +47 -28
- package/dist/core/adapter/adapters/akm-lint.js +42 -27
- package/dist/core/adapter/adapters/akm-metadata.js +15 -44
- package/dist/core/adapter/adapters/akm-task-adapter.js +15 -13
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +55 -71
- package/dist/core/adapter/adapters/dotenv-adapter.js +1 -1
- package/dist/core/adapter/adapters/generic-files-adapter.js +2 -0
- package/dist/core/adapter/adapters/index.js +6 -6
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +14 -8
- package/dist/core/adapter/adapters/okf-adapter.js +187 -19
- package/dist/core/adapter/adapters/shared.js +3 -19
- package/dist/core/adapter/adapters/tool-dir-shared.js +8 -3
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +1 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +6 -4
- package/dist/core/adapter/validate-context.js +214 -0
- package/dist/core/asset/akm-markdown.js +63 -0
- package/dist/core/asset/asset-placement.js +20 -6
- package/dist/core/asset/asset-ref.js +11 -9
- package/dist/core/asset/frontmatter-lint.js +30 -0
- package/dist/core/asset/frontmatter.js +37 -9
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +89 -18
- package/dist/core/asset/stash-meta.js +1 -1
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +152 -38
- package/dist/core/config/config-io.js +12 -1
- package/dist/core/config/config-schema.js +35 -8
- package/dist/core/config/config-sources.js +55 -11
- package/dist/core/config/config-walker.js +25 -9
- package/dist/core/config/config.js +9 -48
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +5 -1
- package/dist/core/config/schema/experimental.js +30 -0
- package/dist/core/config/schema/improve-processes.js +0 -6
- package/dist/core/config/schema/improve.js +21 -3
- package/dist/core/config/schema/index-config.js +8 -15
- package/dist/core/config/schema/output.js +4 -1
- package/dist/core/config/schema/setup.js +9 -18
- package/dist/core/config/schema/sources-bundles.js +49 -33
- package/dist/core/config/schema/workflow.js +3 -3
- package/dist/core/env-secret-ref.js +76 -46
- package/dist/core/errors.js +18 -12
- package/dist/core/events.js +46 -128
- package/dist/core/file-change.js +6 -5
- package/dist/core/fs-txn.js +83 -7
- package/dist/core/git-message.js +2 -2
- package/dist/core/improve-result.js +1 -100
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +2 -1
- package/dist/core/migration-operation.js +16 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/parse.js +4 -1
- package/dist/core/paths.js +17 -20
- package/dist/core/recognition-util.js +12 -14
- package/dist/core/redaction.js +34 -0
- package/dist/core/standards/resolve-standards-context.js +2 -14
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +2 -2
- package/dist/core/state/migrations.js +41 -18
- package/dist/core/state-db.js +5 -14
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +6 -4
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/type-presentation.js +3 -3
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +771 -95
- package/dist/indexer/bundle-identity-guard.js +3 -2
- package/dist/indexer/db/graph-db.js +0 -24
- package/dist/indexer/ensure-index.js +1 -0
- package/dist/indexer/graph/graph-boost.js +9 -34
- package/dist/indexer/graph/graph-extraction.js +8 -5
- package/dist/indexer/index-writer-lock.js +53 -17
- package/dist/indexer/index-written-assets.js +16 -22
- package/dist/indexer/indexer.js +497 -239
- package/dist/indexer/installations.js +14 -96
- package/dist/indexer/passes/dir-staleness.js +16 -9
- package/dist/indexer/passes/memory-inference.js +11 -9
- package/dist/indexer/passes/metadata.js +113 -47
- package/dist/indexer/scan/doc-to-entry.js +38 -1
- package/dist/indexer/scan/drain-dir.js +13 -23
- package/dist/indexer/search/db-search.js +99 -54
- package/dist/indexer/search/fts-query.js +47 -24
- package/dist/indexer/search/ranking-contributors.js +42 -20
- package/dist/indexer/search/ranking.js +18 -99
- package/dist/indexer/search/search-fields.js +7 -2
- package/dist/indexer/search/search-source.js +82 -93
- package/dist/indexer/usage/usage-events.js +0 -89
- package/dist/indexer/walk/file-context.js +2 -1
- package/dist/indexer/walk/matchers.js +30 -43
- package/dist/indexer/walk/path-resolver.js +7 -2
- package/dist/indexer/walk/walker.js +38 -12
- package/dist/integrations/agent/builders.js +0 -6
- package/dist/integrations/agent/config.js +2 -2
- package/dist/integrations/agent/detect.js +49 -19
- package/dist/integrations/agent/engine-fallback.js +76 -0
- package/dist/integrations/agent/profiles.js +14 -0
- package/dist/integrations/agent/prompts.js +12 -8
- package/dist/integrations/agent/runner-dispatch.js +4 -2
- package/dist/integrations/agent/runner.js +0 -1
- package/dist/integrations/agent/spawn.js +5 -6
- package/dist/integrations/github.js +1 -1
- package/dist/integrations/harnesses/aider/agent-builder.js +6 -4
- package/dist/integrations/harnesses/amazonq/agent-builder.js +7 -4
- package/dist/integrations/harnesses/claude/session-log.js +0 -10
- package/dist/integrations/harnesses/codex/agent-builder.js +5 -2
- package/dist/integrations/harnesses/copilot/agent-builder.js +5 -3
- package/dist/integrations/harnesses/gemini/agent-builder.js +5 -3
- package/dist/integrations/harnesses/index.js +3 -7
- package/dist/integrations/harnesses/opencode/agent-builder.js +21 -2
- package/dist/integrations/harnesses/opencode/session-log.js +0 -15
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +13 -4
- package/dist/integrations/harnesses/openhands/agent-builder.js +9 -6
- package/dist/integrations/harnesses/pi/agent-builder.js +6 -4
- package/dist/integrations/lockfile.js +101 -6
- package/dist/integrations/session-logs/index.js +3 -28
- package/dist/llm/client.js +136 -100
- package/dist/llm/embedders/remote.js +13 -5
- package/dist/llm/feature-gate.js +4 -12
- package/dist/llm/graph-extract.js +5 -11
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +5 -7
- package/dist/llm/structured-call.js +1 -1
- package/dist/llm/usage-persist.js +26 -5
- package/dist/llm/usage-telemetry.js +25 -2
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +259 -0
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -36
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +56 -83
- package/dist/output/shapes/migrate.js +8 -0
- package/dist/output/shapes/passthrough.js +7 -41
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes.js +2 -9
- package/dist/output/text/{init.js → bundle-create.js} +3 -1
- package/dist/output/text/bundle-show.js +7 -0
- package/dist/output/text/command-format.js +164 -96
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/health-format.js +103 -0
- package/dist/output/text/health.js +7 -0
- package/dist/output/text/helpers.js +10 -8
- package/dist/output/text/lint-format.js +43 -0
- package/dist/output/text/{save.js → lint.js} +2 -2
- package/dist/output/text/migrate.js +88 -0
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +44 -72
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +15 -7
- package/dist/output/text/status-list.js +32 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +24 -203
- package/dist/output/text/workflow.js +1 -7
- package/dist/output/text.js +16 -17
- package/dist/registry/factory.js +4 -6
- package/dist/registry/origin-resolve.js +16 -27
- package/dist/registry/providers/skills-sh.js +3 -3
- package/dist/registry/providers/static-index.js +13 -23
- package/dist/registry/resolve.js +42 -7
- package/dist/registry/semver.js +34 -84
- package/dist/runtime.js +2 -23
- package/dist/scripts/akm-migrate-node.js +60290 -0
- package/dist/scripts/akm-migrate.js +59628 -0
- package/dist/setup/detect.js +42 -15
- package/dist/setup/registry-stash-loader.js +2 -2
- package/dist/setup/setup.js +236 -136
- package/dist/setup/steps/connection.js +7 -9
- package/dist/setup/steps/platforms.js +9 -9
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +12 -13
- package/dist/setup/steps/stashdir.js +2 -3
- package/dist/setup/steps/tasks.js +237 -120
- package/dist/sources/freshness.js +1 -1
- package/dist/sources/provider-factory.js +11 -17
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +278 -34
- package/dist/sources/providers/git-provider.js +25 -23
- package/dist/sources/providers/git-stash.js +395 -106
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +7 -4
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +6 -1
- package/dist/sources/resolve.js +6 -5
- package/dist/sources/snapshot-fetchers/bluesky.js +146 -0
- package/dist/sources/snapshot-fetchers/content-extract.js +566 -0
- package/dist/sources/snapshot-fetchers/fetcher-util.js +41 -0
- package/dist/sources/snapshot-fetchers/github.js +100 -0
- package/dist/sources/snapshot-fetchers/host-guard.js +291 -0
- package/dist/sources/snapshot-fetchers/registry.js +17 -1
- package/dist/sources/snapshot-fetchers/robots.js +348 -0
- package/dist/sources/snapshot-fetchers/rss.js +282 -0
- package/dist/sources/snapshot-fetchers/secret-seam.js +42 -0
- package/dist/sources/snapshot-fetchers/website-ingest.js +566 -268
- package/dist/sources/snapshot-fetchers/x.js +910 -0
- package/dist/storage/database.js +7 -0
- package/dist/storage/engines/sqlite-migrations.js +23 -111
- package/dist/storage/managed-db.js +2 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +27 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -12
- package/dist/storage/repositories/index-connection.js +17 -6
- package/dist/storage/repositories/index-entries-repository.js +151 -240
- package/dist/storage/repositories/index-entry-mapper.js +15 -11
- package/dist/storage/repositories/index-fts-repository.js +5 -2
- package/dist/storage/repositories/index-llm-cache-repository.js +0 -1
- package/dist/storage/repositories/index-meta-repository.js +2 -3
- package/dist/storage/repositories/index-schema.js +10 -25
- package/dist/storage/repositories/index-utility-repository.js +15 -28
- package/dist/storage/repositories/index-vec-repository.js +6 -1
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +296 -59
- package/dist/storage/repositories/registry-cache.js +19 -0
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +15 -13
- package/dist/storage/repositories/workflow-runs-repository.js +52 -40
- package/dist/tasks/backends/cron.js +105 -15
- package/dist/tasks/backends/index.js +1 -1
- package/dist/tasks/backends/launchd.js +85 -38
- package/dist/tasks/backends/schtasks.js +135 -15
- package/dist/tasks/embedded.js +56 -40
- package/dist/tasks/parser.js +7 -157
- package/dist/tasks/resolve-akm-bin.js +137 -59
- package/dist/tasks/runner.js +79 -42
- package/dist/tasks/scheduler-invocation.js +220 -10
- package/dist/tasks/schema.js +24 -1
- package/dist/tasks/task-id.js +1 -3
- package/dist/tasks/validator.js +20 -6
- package/dist/workflows/authoring/authoring.js +94 -143
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/exec/frozen-judge.js +28 -2
- package/dist/workflows/exec/native-executor.js +77 -57
- package/dist/workflows/exec/param-secrets.js +9 -9
- package/dist/workflows/exec/run-workflow.js +133 -79
- package/dist/workflows/exec/step-work.js +219 -346
- package/dist/{migrate-storage-node.mjs → workflows/exec/unit-dispatch.js} +1 -5
- package/dist/workflows/ir/compile.js +141 -270
- package/dist/workflows/ir/freeze.js +40 -30
- package/dist/workflows/ir/params.js +135 -11
- package/dist/workflows/ir/plan-hash.js +1 -1
- package/dist/workflows/ir/schema.js +25 -26
- package/dist/workflows/parser.js +872 -307
- package/dist/workflows/program/expressions.js +20 -208
- package/dist/workflows/program/schema.js +7 -10
- package/dist/workflows/renderer.js +95 -68
- package/dist/workflows/resource-limits.js +2 -0
- package/dist/workflows/runtime/checkin.js +3 -3
- package/dist/workflows/runtime/plan-classifier.js +16 -75
- package/dist/workflows/runtime/runs.js +186 -127
- package/dist/workflows/runtime/unit-checkin.js +1 -1
- package/dist/workflows/runtime/unit-phases.js +2 -2
- package/dist/workflows/runtime/workflow-asset-loader.js +232 -83
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +30 -36
- package/dist/workflows/validator.js +21 -62
- package/docs/README.md +68 -0
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.7.0.md +11 -11
- package/docs/migration/release-notes/0.9.0.md +208 -27
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +564 -208
- package/docs/migration/v0.9.0-troubleshooting.md +561 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/cli.md +2253 -0
- package/docs/reference/configuration.md +358 -0
- package/docs/reference/data-and-telemetry.md +105 -42
- package/docs/reference/workflows.md +647 -0
- package/package.json +22 -11
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +81 -128
- package/schemas/akm-workflow.json +74 -73
- package/dist/assets/tasks/core/backup.yml +0 -5
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/cli/config-migrate.js +0 -1806
- package/dist/cli/config-validate.js +0 -41
- package/dist/commands/backup-cli.js +0 -56
- package/dist/commands/bundle/bundle-cli.js +0 -68
- package/dist/commands/bundle/bundle.js +0 -219
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -489
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/mv-cli.js +0 -1221
- package/dist/commands/sources/history.js +0 -201
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/core/migration-backup.js +0 -1234
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -95
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/migrate/legacy/config-source-migration.js +0 -223
- package/dist/migrate/legacy/content-migration.js +0 -305
- package/dist/migrate/legacy/legacy-layout.js +0 -779
- package/dist/migrate/legacy/legacy-paths.js +0 -25
- package/dist/migrate/legacy/legacy-stash-json.js +0 -72
- package/dist/migrate/legacy/proposal-fs-import.js +0 -168
- package/dist/migrate/legacy/task-target-ref-migration.js +0 -272
- package/dist/migrate/legacy/three-db-cutover.js +0 -841
- package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
- package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
- package/dist/migrate/legacy-ref-grammar.js +0 -214
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/registry/build-index.js +0 -382
- package/dist/schemas/akm-config.json +0 -4704
- package/dist/schemas/akm-task.json +0 -87
- package/dist/schemas/akm-workflow.json +0 -372
- package/dist/scripts/migrate-storage.js +0 -3816
- package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
- package/dist/workflows/cli.js +0 -53
- package/dist/workflows/exec/brief.js +0 -481
- package/dist/workflows/exec/report.js +0 -1460
- package/dist/workflows/exec/watch.js +0 -116
- package/dist/workflows/program/parser.js +0 -813
- package/dist/workflows/program/project.js +0 -104
package/dist/registry/resolve.js
CHANGED
|
@@ -10,9 +10,6 @@ import { fetchWithRetry, jsonWithByteCap } from "../core/common.js";
|
|
|
10
10
|
import { NotFoundError, UsageError } from "../core/errors.js";
|
|
11
11
|
import { asRecord, asString, GITHUB_API_BASE, githubHeaders } from "../integrations/github.js";
|
|
12
12
|
import { isExactSemver, isSemverRange, maxSatisfying } from "./semver.js";
|
|
13
|
-
// The semver engine lives in ./semver (WI-9.3 verbatim move); `maxSatisfying`
|
|
14
|
-
// stays re-exported here so this module's public surface is unchanged.
|
|
15
|
-
export { maxSatisfying } from "./semver.js";
|
|
16
13
|
/**
|
|
17
14
|
* Validate that a URL is safe to pass to git.
|
|
18
15
|
* Allowlists https:, http:, ssh:, git: schemes and git@ SSH shorthand.
|
|
@@ -112,13 +109,13 @@ function detectRegistrySearchId(ref) {
|
|
|
112
109
|
const suggestedRef = segments.length >= 2 ? `github:${segments[0]}/${segments[1]}` : undefined;
|
|
113
110
|
const lines = [
|
|
114
111
|
`"${ref}" looks like a registry search result ID, not an installable ref.`,
|
|
115
|
-
`The "${prefix}:" prefix is a registry identifier and cannot be passed to \`akm add\`.`,
|
|
112
|
+
`The "${prefix}:" prefix is a registry identifier and cannot be passed to \`akm bundle add\`.`,
|
|
116
113
|
"",
|
|
117
114
|
];
|
|
118
115
|
if (suggestedRef) {
|
|
119
|
-
lines.push(`Try installing the source repository directly:`, ` akm add ${suggestedRef}`, "");
|
|
116
|
+
lines.push(`Try installing the source repository directly:`, ` akm bundle add ${suggestedRef}`, "");
|
|
120
117
|
}
|
|
121
|
-
lines.push("Or search for the installable ref:", ` akm search "${segments.length > 2 ? segments[segments.length - 1] : rest}" --
|
|
118
|
+
lines.push("Or search for the installable ref:", ` akm search "${segments.length > 2 ? segments[segments.length - 1] : rest}" --from registry`, "Then install using the installRef value from the result:", " akm bundle add github:owner/repo", " akm bundle add npm:package-name");
|
|
122
119
|
return lines.join("\n");
|
|
123
120
|
}
|
|
124
121
|
export async function resolveRegistryArtifact(parsed) {
|
|
@@ -254,6 +251,16 @@ function isPathLikeRef(ref) {
|
|
|
254
251
|
if (ref.startsWith("./") || ref.startsWith("../") || ref.startsWith(".\\") || ref.startsWith("..\\")) {
|
|
255
252
|
return true;
|
|
256
253
|
}
|
|
254
|
+
// R-007: a bare `owner/repo` (or `owner/repo#ref`) shorthand is ambiguous
|
|
255
|
+
// with a relative directory of the same shape, and is never an EXPLICIT
|
|
256
|
+
// local path the way `./owner/repo` is. Treating it as non-path here means
|
|
257
|
+
// `tryParseLocalRef` silently returns `undefined` (rather than throwing
|
|
258
|
+
// NotFoundError) when no such directory exists on disk, letting
|
|
259
|
+
// `parseRegistryRef`'s GitHub-shorthand fallback run instead. A directory
|
|
260
|
+
// that DOES exist with this shape is unaffected — `tryParseLocalRef`
|
|
261
|
+
// resolves it before the missing-path distinction ever matters.
|
|
262
|
+
if (looksLikeGithubOwnerRepo(ref))
|
|
263
|
+
return false;
|
|
257
264
|
return ref.includes("/") || ref.includes("\\");
|
|
258
265
|
}
|
|
259
266
|
/** Default public npm registry host. */
|
|
@@ -321,9 +328,37 @@ export function validateNpmTarballUrl(tarballUrl, packageRef) {
|
|
|
321
328
|
throw new UntrustedNpmTarballError(`npm package ${packageRef} returned a tarball URL on untrusted host "${host}" (allowed: ${allowed}).`);
|
|
322
329
|
}
|
|
323
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* Resolve the npm registry base URL used to fetch package METADATA.
|
|
333
|
+
*
|
|
334
|
+
* R-035: `AKM_NPM_REGISTRY` previously only widened the trusted-tarball-host
|
|
335
|
+
* allowlist (see {@link trustedNpmTarballHosts}) while the metadata endpoint
|
|
336
|
+
* stayed hardcoded to the public registry — so an operator-configured mirror
|
|
337
|
+
* was never actually consulted, making the `UntrustedNpmTarballError.hint()`
|
|
338
|
+
* text below false. Honoring the override here for metadata too makes the
|
|
339
|
+
* hint true: installs really do resolve entirely against the configured
|
|
340
|
+
* mirror when it is set, mirroring how a private npm registry replaces the
|
|
341
|
+
* default wholesale (like npm's own `--registry` flag) rather than being
|
|
342
|
+
* merged with it.
|
|
343
|
+
*/
|
|
344
|
+
function npmMetadataRegistryBase() {
|
|
345
|
+
const override = process.env.AKM_NPM_REGISTRY?.trim();
|
|
346
|
+
if (override) {
|
|
347
|
+
try {
|
|
348
|
+
const url = new URL(override);
|
|
349
|
+
const base = `${url.origin}${url.pathname === "/" ? "" : url.pathname}`;
|
|
350
|
+
return base.replace(/\/+$/, "");
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
// Ignore unparseable overrides; fall back to the public registry.
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return `https://${DEFAULT_NPM_REGISTRY_HOST}`;
|
|
357
|
+
}
|
|
324
358
|
async function resolveNpmArtifact(parsed) {
|
|
325
359
|
const encodedName = encodeURIComponent(parsed.packageName);
|
|
326
|
-
const
|
|
360
|
+
const registryBase = npmMetadataRegistryBase();
|
|
361
|
+
const metadata = await fetchJson(`${registryBase}/${encodedName}`);
|
|
327
362
|
const versions = asRecord(metadata.versions);
|
|
328
363
|
const distTags = asRecord(metadata["dist-tags"]);
|
|
329
364
|
const requested = parsed.requestedVersionOrTag;
|
package/dist/registry/semver.js
CHANGED
|
@@ -1,93 +1,43 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Registry semver engine (§4.6 dedup, WI-9.3).
|
|
6
|
+
*
|
|
7
|
+
* R-068 #3: this used to be a hand-rolled parse/compare/range implementation
|
|
8
|
+
* (a verbatim move from `./resolve.ts`) that only understood exact versions,
|
|
9
|
+
* `^x.y.z`, `~x.y.z`, `>=x.y.z`, and `*`/`latest`. Every OTHER valid npm range
|
|
10
|
+
* form was silently REJECTED by `satisfiesRange` even though the looser
|
|
11
|
+
* `isSemverRange` classifier correctly recognized it as a range: `1.2.x`,
|
|
12
|
+
* `>1.0.0`, `<2.0.0`, compound ranges (`>=1.0.0 <2.0.0`), partial carets
|
|
13
|
+
* (`^1.2`), OR-ranges (`a || b`), hyphen ranges (`1.2.3 - 2.3.4`), and plain
|
|
14
|
+
* exact versions used as a range. A silently-empty `maxSatisfying` result for
|
|
15
|
+
* a genuinely satisfiable range meant `akm bundle add pkg@<range>` could fail to
|
|
16
|
+
* resolve a real, installable version.
|
|
17
|
+
*
|
|
18
|
+
* `semver` (the npm package) is already a runtime dependency
|
|
19
|
+
* (`package.json`) — it was simply never imported from `src/`. This module
|
|
20
|
+
* now delegates to it directly instead of re-deriving a subset of its
|
|
21
|
+
* behavior, so every range form `semver` itself understands is supported.
|
|
22
|
+
*
|
|
23
|
+
* NOTE: `src/runtime.ts` has its own `semverOrder` with a DIFFERENT
|
|
24
|
+
* contract (engine-version ordering, not range satisfaction) — the two are
|
|
25
|
+
* intentionally not unified.
|
|
26
|
+
*/
|
|
27
|
+
import semver from "semver";
|
|
28
|
+
/** True when `version` is an exact, fully-specified semver (not a range, wildcard, or partial version). */
|
|
15
29
|
export function isExactSemver(version) {
|
|
16
|
-
return
|
|
30
|
+
return semver.valid(version) !== null;
|
|
17
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* True when `input` is a semver RANGE expression `maxSatisfying` can
|
|
34
|
+
* evaluate. Deliberately false for npm dist-tag conventions like `"latest"`
|
|
35
|
+
* — those are resolved via `dist-tags` lookup, not range satisfaction.
|
|
36
|
+
*/
|
|
18
37
|
export function isSemverRange(input) {
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
|
-
function compareSemver(a, b) {
|
|
22
|
-
if (a.major !== b.major)
|
|
23
|
-
return a.major - b.major;
|
|
24
|
-
if (a.minor !== b.minor)
|
|
25
|
-
return a.minor - b.minor;
|
|
26
|
-
if (a.patch !== b.patch)
|
|
27
|
-
return a.patch - b.patch;
|
|
28
|
-
// Versions with prerelease are lower than release
|
|
29
|
-
if (a.prerelease && !b.prerelease)
|
|
30
|
-
return -1;
|
|
31
|
-
if (!a.prerelease && b.prerelease)
|
|
32
|
-
return 1;
|
|
33
|
-
return 0;
|
|
34
|
-
}
|
|
35
|
-
function semverGte(a, b) {
|
|
36
|
-
return compareSemver(a, b) >= 0;
|
|
37
|
-
}
|
|
38
|
-
function satisfiesRange(version, range) {
|
|
39
|
-
// Skip pre-release versions unless range specifically mentions one
|
|
40
|
-
if (version.prerelease && !range.includes("-"))
|
|
41
|
-
return false;
|
|
42
|
-
// ^1.2.3 — compatible with version: same major, >= minor.patch
|
|
43
|
-
const caretMatch = range.match(/^\^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
|
|
44
|
-
if (caretMatch) {
|
|
45
|
-
const rMajor = parseInt(caretMatch[1], 10);
|
|
46
|
-
const rMinor = parseInt(caretMatch[2], 10);
|
|
47
|
-
const rPatch = parseInt(caretMatch[3], 10);
|
|
48
|
-
if (version.major !== rMajor)
|
|
49
|
-
return false;
|
|
50
|
-
// ^0.x has special behavior: ^0.2.3 means >=0.2.3 <0.3.0
|
|
51
|
-
if (rMajor === 0) {
|
|
52
|
-
if (version.minor !== rMinor)
|
|
53
|
-
return false;
|
|
54
|
-
return version.patch >= rPatch;
|
|
55
|
-
}
|
|
56
|
-
return semverGte(version, { major: rMajor, minor: rMinor, patch: rPatch });
|
|
57
|
-
}
|
|
58
|
-
// ~1.2.3 — same major.minor, patch >= specified
|
|
59
|
-
const tildeMatch = range.match(/^~(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
|
|
60
|
-
if (tildeMatch) {
|
|
61
|
-
const rMajor = parseInt(tildeMatch[1], 10);
|
|
62
|
-
const rMinor = parseInt(tildeMatch[2], 10);
|
|
63
|
-
const rPatch = parseInt(tildeMatch[3], 10);
|
|
64
|
-
return version.major === rMajor && version.minor === rMinor && version.patch >= rPatch;
|
|
65
|
-
}
|
|
66
|
-
// >=1.2.3
|
|
67
|
-
const gteMatch = range.match(/^>=(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
|
|
68
|
-
if (gteMatch) {
|
|
69
|
-
const rMajor = parseInt(gteMatch[1], 10);
|
|
70
|
-
const rMinor = parseInt(gteMatch[2], 10);
|
|
71
|
-
const rPatch = parseInt(gteMatch[3], 10);
|
|
72
|
-
return semverGte(version, { major: rMajor, minor: rMinor, patch: rPatch });
|
|
73
|
-
}
|
|
74
|
-
// * or latest
|
|
75
|
-
if (range === "*" || range === "latest")
|
|
76
|
-
return true;
|
|
77
|
-
return false;
|
|
38
|
+
return semver.validRange(input) !== null;
|
|
78
39
|
}
|
|
40
|
+
/** Highest version in `versions` that satisfies `range`, or `undefined` if none match. */
|
|
79
41
|
export function maxSatisfying(versions, range) {
|
|
80
|
-
|
|
81
|
-
for (const v of versions) {
|
|
82
|
-
const parsed = parseSemver(v);
|
|
83
|
-
if (!parsed)
|
|
84
|
-
continue;
|
|
85
|
-
if (satisfiesRange(parsed, range)) {
|
|
86
|
-
candidates.push({ version: v, parsed });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (candidates.length === 0)
|
|
90
|
-
return undefined;
|
|
91
|
-
candidates.sort((a, b) => compareSemver(b.parsed, a.parsed));
|
|
92
|
-
return candidates[0].version;
|
|
42
|
+
return semver.maxSatisfying(versions, range) ?? undefined;
|
|
93
43
|
}
|
package/dist/runtime.js
CHANGED
|
@@ -137,28 +137,7 @@ function stdinIterator() {
|
|
|
137
137
|
}
|
|
138
138
|
// ── File write ──────────────────────────────────────────────────────────────
|
|
139
139
|
/**
|
|
140
|
-
*
|
|
141
|
-
* which natively streams a `Response` to disk; on Node pipes the response body
|
|
142
|
-
* through `stream/promises.pipeline` so the archive is never fully buffered.
|
|
143
|
-
*/
|
|
144
|
-
export async function writeResponseToFile(filePath, res) {
|
|
145
|
-
if (isBun) {
|
|
146
|
-
await bunGlobal().write(filePath, res);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (res.body) {
|
|
150
|
-
const readable = Readable.fromWeb(res.body);
|
|
151
|
-
await pipeline(readable, createWriteStream(filePath));
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const buf = Buffer.from(await res.arrayBuffer());
|
|
155
|
-
await pipeline(Readable.from(buf), createWriteStream(filePath));
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Defensive ceiling on a streamed-to-disk download (1 GiB). `writeResponseToFile`
|
|
159
|
-
* imposes no size or duration bound — a compromised or misconfigured endpoint
|
|
160
|
-
* could stream until the disk fills or dribble bytes forever. Archive-download
|
|
161
|
-
* paths use {@link writeResponseToFileCapped} with these bounds instead.
|
|
140
|
+
* Defensive ceiling on a streamed-to-disk download (1 GiB).
|
|
162
141
|
*/
|
|
163
142
|
export const MAX_STREAMED_DOWNLOAD_BYTES = 1024 * 1024 * 1024;
|
|
164
143
|
/** Default overall wall-clock budget for streaming a download body (5 min). */
|
|
@@ -176,7 +155,7 @@ function endWriteStream(out) {
|
|
|
176
155
|
}
|
|
177
156
|
/**
|
|
178
157
|
* Stream a `Response` body to `filePath` enforcing an explicit max-bytes cap
|
|
179
|
-
* and an overall body-read deadline
|
|
158
|
+
* and an overall body-read deadline.
|
|
180
159
|
*
|
|
181
160
|
* Refuses before reading when `Content-Length` exceeds the cap; otherwise
|
|
182
161
|
* streams chunk-by-chunk, aborting with {@link ResponseTooLargeError} the
|