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/output/renderers.js
CHANGED
|
@@ -13,11 +13,10 @@ import fs from "node:fs";
|
|
|
13
13
|
import path from "node:path";
|
|
14
14
|
import { listKeys as listVaultKeys } from "../commands/env/env.js";
|
|
15
15
|
import { parseFrontmatter } from "../core/asset/frontmatter.js";
|
|
16
|
-
import { extractFrontmatterOnly, extractLineRange, extractSection, formatToc, parseMarkdownToc, } from "../core/asset/markdown.js";
|
|
17
16
|
import { asNonEmptyString, hasErrnoCode } from "../core/common.js";
|
|
18
17
|
import { extractCommentMetadata } from "../indexer/passes/metadata.js";
|
|
19
18
|
import { registerRenderer } from "../indexer/walk/file-context.js";
|
|
20
|
-
import { buildWorkflowAction, workflowMdRenderer
|
|
19
|
+
import { buildWorkflowAction, workflowMdRenderer } from "../workflows/renderer.js";
|
|
21
20
|
// ── Interpreter auto-detection map ───────────────────────────────────────────
|
|
22
21
|
const INTERPRETER_MAP = {
|
|
23
22
|
".sh": "bash",
|
|
@@ -219,39 +218,19 @@ const agentMdRenderer = {
|
|
|
219
218
|
},
|
|
220
219
|
};
|
|
221
220
|
// ── 4. knowledge-md ──────────────────────────────────────────────────────────
|
|
222
|
-
const KNOWLEDGE_ACTION = "Reference material - read the content below.
|
|
221
|
+
const KNOWLEDGE_ACTION = "Reference material - read the content below. For a large document, read one section with `akm show <ref>#fragment` " +
|
|
222
|
+
"(an unmatched #fragment lists the available slugs).";
|
|
223
223
|
const knowledgeMdRenderer = {
|
|
224
224
|
name: "knowledge-md",
|
|
225
225
|
buildShowResponse(ctx) {
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
return { type, name, path: ctx.absPath, action, content: formatToc(toc) };
|
|
235
|
-
}
|
|
236
|
-
case "frontmatter": {
|
|
237
|
-
const fm = extractFrontmatterOnly(content);
|
|
238
|
-
return { type, name, path: ctx.absPath, action, content: fm ?? "(no frontmatter)" };
|
|
239
|
-
}
|
|
240
|
-
case "section": {
|
|
241
|
-
const section = extractSection(content, v.heading);
|
|
242
|
-
if (!section) {
|
|
243
|
-
const notFoundMsg = `Section "${v.heading}" not found in ${name}. Try \`akm show <ref> toc\` to discover available headings.`;
|
|
244
|
-
return { type, name, path: ctx.absPath, action, content: notFoundMsg };
|
|
245
|
-
}
|
|
246
|
-
return { type, name, path: ctx.absPath, action, content: section.content };
|
|
247
|
-
}
|
|
248
|
-
case "lines": {
|
|
249
|
-
return { type, name, path: ctx.absPath, action, content: extractLineRange(content, v.start, v.end) };
|
|
250
|
-
}
|
|
251
|
-
default: {
|
|
252
|
-
return { type, name, path: ctx.absPath, action, content };
|
|
253
|
-
}
|
|
254
|
-
}
|
|
226
|
+
const instruction = ctx.matchResult.type === "instruction";
|
|
227
|
+
return {
|
|
228
|
+
type: instruction ? "instruction" : "knowledge",
|
|
229
|
+
name: deriveName(ctx),
|
|
230
|
+
path: ctx.absPath,
|
|
231
|
+
action: instruction ? "Project instructions — read and follow the content below." : KNOWLEDGE_ACTION,
|
|
232
|
+
content: ctx.content(),
|
|
233
|
+
};
|
|
255
234
|
},
|
|
256
235
|
};
|
|
257
236
|
// ── 4c. lesson-md ────────────────────────────────────────────────────────────
|
|
@@ -384,12 +363,12 @@ const secretFileRenderer = {
|
|
|
384
363
|
type: "secret",
|
|
385
364
|
name,
|
|
386
365
|
path: ctx.absPath,
|
|
387
|
-
action: "Secret — name only; the file contents are the value and are never written to akm's stdout. Use `akm secret
|
|
366
|
+
action: "Secret — name only; the file contents are the value and are never written to akm's stdout. Use `akm secret run <ref> <VAR> -- <command>` to run with the value injected into $VAR.",
|
|
388
367
|
};
|
|
389
368
|
},
|
|
390
369
|
};
|
|
391
370
|
// ── 7. task-md ───────────────────────────────────────────────────────────────
|
|
392
|
-
const TASK_PAGE_ACTION = "Scheduled task — `akm
|
|
371
|
+
const TASK_PAGE_ACTION = "Scheduled task — `akm show tasks/<id>` for parsed details, `akm task run <id>` to invoke now.";
|
|
393
372
|
const taskMdRenderer = {
|
|
394
373
|
name: "task-yaml",
|
|
395
374
|
buildShowResponse(ctx) {
|
|
@@ -497,7 +476,6 @@ const builtinRenderers = [
|
|
|
497
476
|
lessonMdRenderer,
|
|
498
477
|
memoryMdRenderer,
|
|
499
478
|
workflowMdRenderer,
|
|
500
|
-
workflowProgramRenderer,
|
|
501
479
|
scriptSourceRenderer,
|
|
502
480
|
envFileRenderer,
|
|
503
481
|
secretFileRenderer,
|
|
@@ -515,4 +493,4 @@ export function registerBuiltinRenderers() {
|
|
|
515
493
|
}
|
|
516
494
|
}
|
|
517
495
|
// ── Named exports for testing ────────────────────────────────────────────────
|
|
518
|
-
export { agentMdRenderer, commandMdRenderer, envFileRenderer, factMdRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer, workflowMdRenderer,
|
|
496
|
+
export { agentMdRenderer, commandMdRenderer, envFileRenderer, factMdRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer, workflowMdRenderer, };
|
|
@@ -11,6 +11,9 @@ const NORMAL_FIELDS = [
|
|
|
11
11
|
"type",
|
|
12
12
|
"name",
|
|
13
13
|
"ref",
|
|
14
|
+
"path",
|
|
15
|
+
"editable",
|
|
16
|
+
"editHint",
|
|
14
17
|
"id",
|
|
15
18
|
"description",
|
|
16
19
|
"preview",
|
|
@@ -28,6 +31,9 @@ const AGENT_FIELDS = [
|
|
|
28
31
|
"type",
|
|
29
32
|
"name",
|
|
30
33
|
"ref",
|
|
34
|
+
"path",
|
|
35
|
+
"editable",
|
|
36
|
+
"editHint",
|
|
31
37
|
"id",
|
|
32
38
|
"description",
|
|
33
39
|
"supportRefs",
|
|
@@ -37,7 +43,10 @@ const AGENT_FIELDS = [
|
|
|
37
43
|
];
|
|
38
44
|
function shapeCurateItem(item, detail, shape) {
|
|
39
45
|
if (shape === "agent") {
|
|
40
|
-
|
|
46
|
+
const shaped = pickFields(item, AGENT_FIELDS);
|
|
47
|
+
if (shaped.editable !== false)
|
|
48
|
+
delete shaped.editHint;
|
|
49
|
+
return capDescription(shaped, NORMAL_DESCRIPTION_LIMIT);
|
|
41
50
|
}
|
|
42
51
|
if (detail === "brief") {
|
|
43
52
|
return pickFields(item, BRIEF_FIELDS);
|
|
@@ -1,12 +1,17 @@
|
|
|
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
|
-
// Output shape registration for `akm
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// Output shape registration for `akm log` (#204).
|
|
5
|
+
//
|
|
6
|
+
// R-060: renamed from `events-list` (the command group used to be `akm
|
|
7
|
+
// events`) to `log-list`, matching the current `akm log` command name
|
|
8
|
+
// (src/commands/observability-cli.ts). This string is an internal registry
|
|
9
|
+
// key only — `shapeEventsOutput` builds its own envelope and never stamps a
|
|
10
|
+
// `shape` field on the wire, so the rename does not require a schemaVersion
|
|
11
|
+
// bump.
|
|
12
|
+
//
|
|
13
|
+
// 0.9.0 CLI overhaul (S3): `log tail` (and its `log-tail` shape entry) was
|
|
14
|
+
// dropped along with the command.
|
|
7
15
|
import { shapeEventsOutput } from "./helpers.js";
|
|
8
16
|
const handler = (result, detail) => shapeEventsOutput(result, detail);
|
|
9
|
-
export const eventsShapes = [
|
|
10
|
-
{ command: "events-list", handler },
|
|
11
|
-
{ command: "events-tail", handler },
|
|
12
|
-
];
|
|
17
|
+
export const eventsShapes = [{ command: "log-list", handler }];
|
|
@@ -16,7 +16,7 @@ export function shapeProposalProducerOutput(result, detail) {
|
|
|
16
16
|
};
|
|
17
17
|
if (detail === "full") {
|
|
18
18
|
return {
|
|
19
|
-
schemaVersion: result.schemaVersion
|
|
19
|
+
schemaVersion: result.schemaVersion,
|
|
20
20
|
...base,
|
|
21
21
|
...(result.stdout !== undefined ? { stdout: result.stdout } : {}),
|
|
22
22
|
...(result.stderr !== undefined ? { stderr: result.stderr } : {}),
|
|
@@ -24,16 +24,16 @@ export function shapeProposalProducerOutput(result, detail) {
|
|
|
24
24
|
}
|
|
25
25
|
return base;
|
|
26
26
|
}
|
|
27
|
-
const proposal = result.proposal
|
|
27
|
+
const proposal = result.proposal;
|
|
28
28
|
const base = {
|
|
29
|
-
ok:
|
|
29
|
+
ok: result.ok,
|
|
30
30
|
ref: result.ref,
|
|
31
31
|
...(result.engine !== undefined ? { engine: result.engine } : {}),
|
|
32
32
|
...(typeof result.durationMs === "number" ? { durationMs: result.durationMs } : {}),
|
|
33
33
|
proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
|
|
34
34
|
};
|
|
35
35
|
if (detail === "full") {
|
|
36
|
-
return { schemaVersion: result.schemaVersion
|
|
36
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
37
37
|
}
|
|
38
38
|
return base;
|
|
39
39
|
}
|
|
@@ -43,8 +43,7 @@ export function shapeProposalEntry(entry, detail) {
|
|
|
43
43
|
}
|
|
44
44
|
if (detail === "normal") {
|
|
45
45
|
// `confidence` and `gateDecision` (#577) explain why a proposal is pending,
|
|
46
|
-
// so they are projected at `normal` for `akm proposal list/show`
|
|
47
|
-
// optional and absent on legacy proposals.
|
|
46
|
+
// so they are projected at `normal` for `akm proposal list/show` when present.
|
|
48
47
|
return pickFields(entry, [
|
|
49
48
|
"id",
|
|
50
49
|
"ref",
|
|
@@ -74,74 +73,54 @@ export function shapeProposalEntry(entry, detail) {
|
|
|
74
73
|
]);
|
|
75
74
|
}
|
|
76
75
|
export function shapeProposalListOutput(result, detail) {
|
|
77
|
-
const proposals =
|
|
76
|
+
const proposals = result.proposals;
|
|
78
77
|
const shaped = proposals.map((p) => shapeProposalEntry(p, detail));
|
|
79
78
|
const base = {
|
|
80
|
-
totalCount: result.totalCount
|
|
79
|
+
totalCount: result.totalCount,
|
|
81
80
|
proposals: shaped,
|
|
82
81
|
};
|
|
83
82
|
if (detail === "full") {
|
|
84
|
-
return { schemaVersion: result.schemaVersion
|
|
83
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
85
84
|
}
|
|
86
85
|
return base;
|
|
87
86
|
}
|
|
88
87
|
export function shapeProposalShowOutput(result, detail) {
|
|
89
|
-
const proposal = result.proposal
|
|
88
|
+
const proposal = result.proposal;
|
|
90
89
|
const validation = result.validation;
|
|
91
90
|
const base = {
|
|
92
91
|
proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
|
|
93
92
|
...(validation ? { validation } : {}),
|
|
94
93
|
};
|
|
95
94
|
if (detail === "full") {
|
|
96
|
-
return { schemaVersion: result.schemaVersion
|
|
95
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
97
96
|
}
|
|
98
97
|
return base;
|
|
99
98
|
}
|
|
100
99
|
export function shapeProposalAcceptOutput(result, detail) {
|
|
101
|
-
const proposal = result.proposal
|
|
100
|
+
const proposal = result.proposal;
|
|
102
101
|
const base = {
|
|
103
|
-
ok: result.ok
|
|
102
|
+
ok: result.ok,
|
|
104
103
|
id: result.id,
|
|
105
104
|
ref: result.ref,
|
|
106
105
|
assetPath: result.assetPath,
|
|
107
106
|
proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
|
|
108
107
|
};
|
|
109
108
|
if (detail === "full") {
|
|
110
|
-
return { schemaVersion: result.schemaVersion
|
|
109
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
111
110
|
}
|
|
112
111
|
return base;
|
|
113
112
|
}
|
|
114
113
|
export function shapeProposalRejectOutput(result, detail) {
|
|
115
|
-
const proposal = result.proposal
|
|
114
|
+
const proposal = result.proposal;
|
|
116
115
|
const base = {
|
|
117
|
-
ok: result.ok
|
|
116
|
+
ok: result.ok,
|
|
118
117
|
id: result.id,
|
|
119
118
|
ref: result.ref,
|
|
120
119
|
...(result.reason !== undefined ? { reason: result.reason } : {}),
|
|
121
120
|
proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
|
|
122
121
|
};
|
|
123
122
|
if (detail === "full") {
|
|
124
|
-
return { schemaVersion: result.schemaVersion
|
|
125
|
-
}
|
|
126
|
-
return base;
|
|
127
|
-
}
|
|
128
|
-
export function shapeDistillOutput(result, detail) {
|
|
129
|
-
const proposal = result.proposal;
|
|
130
|
-
if (detail === "brief") {
|
|
131
|
-
return pickFields(result, ["ok", "outcome", "inputRef", "lessonRef", "proposalId", "message"]);
|
|
132
|
-
}
|
|
133
|
-
const base = {
|
|
134
|
-
ok: result.ok ?? true,
|
|
135
|
-
outcome: result.outcome,
|
|
136
|
-
inputRef: result.inputRef,
|
|
137
|
-
lessonRef: result.lessonRef,
|
|
138
|
-
...(result.proposalId !== undefined ? { proposalId: result.proposalId } : {}),
|
|
139
|
-
...(result.message !== undefined ? { message: result.message } : {}),
|
|
140
|
-
...(Array.isArray(result.findings) && result.findings.length > 0 ? { findings: result.findings } : {}),
|
|
141
|
-
...(proposal ? { proposal: shapeProposalEntry(proposal, detail) } : {}),
|
|
142
|
-
};
|
|
143
|
-
if (detail === "full") {
|
|
144
|
-
return { schemaVersion: result.schemaVersion ?? 1, ...base };
|
|
123
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
145
124
|
}
|
|
146
125
|
return base;
|
|
147
126
|
}
|
|
@@ -154,7 +133,7 @@ export function shapeProposalDiffOutput(result, detail) {
|
|
|
154
133
|
...(result.targetPath !== undefined ? { targetPath: result.targetPath } : {}),
|
|
155
134
|
};
|
|
156
135
|
if (detail === "full") {
|
|
157
|
-
return { schemaVersion: result.schemaVersion
|
|
136
|
+
return { schemaVersion: result.schemaVersion, ...base };
|
|
158
137
|
}
|
|
159
138
|
return base;
|
|
160
139
|
}
|
|
@@ -164,8 +143,14 @@ export function shapeEventsOutput(result, detail) {
|
|
|
164
143
|
const base = {
|
|
165
144
|
...(result.ref !== undefined ? { ref: result.ref } : {}),
|
|
166
145
|
...(result.type !== undefined ? { type: result.type } : {}),
|
|
146
|
+
...(result.run !== undefined ? { run: result.run } : {}),
|
|
167
147
|
...(result.since !== undefined ? { since: result.since } : {}),
|
|
168
148
|
...(typeof result.sinceOffset === "number" ? { sinceOffset: result.sinceOffset } : {}),
|
|
149
|
+
// D-38: echo `--limit` through the shaped envelope too — `akmEventsList`
|
|
150
|
+
// already conditionally includes it in its raw result (see
|
|
151
|
+
// src/commands/events.ts) only when the caller passed it, so this mirrors
|
|
152
|
+
// that same "present only if requested" convention.
|
|
153
|
+
...(typeof result.limit === "number" ? { limit: result.limit } : {}),
|
|
169
154
|
totalCount: result.totalCount ?? shapedEvents.length,
|
|
170
155
|
events: shapedEvents,
|
|
171
156
|
};
|
|
@@ -190,45 +175,6 @@ export function shapeEventEntry(entry, detail) {
|
|
|
190
175
|
// full: project everything the reader emits.
|
|
191
176
|
return pickFields(entry, ["id", "schemaVersion", "eventType", "ref", "ts", "metadata"]);
|
|
192
177
|
}
|
|
193
|
-
export function shapeHistoryOutput(result, detail) {
|
|
194
|
-
const entries = Array.isArray(result.entries) ? result.entries : [];
|
|
195
|
-
const shapedEntries = entries.map((entry) => shapeHistoryEntry(entry, detail));
|
|
196
|
-
if (detail === "full") {
|
|
197
|
-
return {
|
|
198
|
-
schemaVersion: result.schemaVersion ?? 1,
|
|
199
|
-
...(result.ref !== undefined ? { ref: result.ref } : {}),
|
|
200
|
-
...(result.since !== undefined ? { since: result.since } : {}),
|
|
201
|
-
totalCount: result.totalCount ?? shapedEntries.length,
|
|
202
|
-
entries: shapedEntries,
|
|
203
|
-
// `sources` lists the event sources included in this response.
|
|
204
|
-
// Always contains "usage_events"; also "events.jsonl" when
|
|
205
|
-
// --include-proposals was specified.
|
|
206
|
-
...(Array.isArray(result.sources) ? { sources: result.sources } : {}),
|
|
207
|
-
...(Array.isArray(result.warnings) && result.warnings.length > 0 ? { warnings: result.warnings } : {}),
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
...(result.ref !== undefined ? { ref: result.ref } : {}),
|
|
212
|
-
...(result.since !== undefined ? { since: result.since } : {}),
|
|
213
|
-
totalCount: result.totalCount ?? shapedEntries.length,
|
|
214
|
-
entries: shapedEntries,
|
|
215
|
-
...(Array.isArray(result.sources) ? { sources: result.sources } : {}),
|
|
216
|
-
...(Array.isArray(result.warnings) && result.warnings.length > 0 ? { warnings: result.warnings } : {}),
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
export function shapeHistoryEntry(entry, detail) {
|
|
220
|
-
if (detail === "brief") {
|
|
221
|
-
// signal is load-bearing for feedback rows (positive/negative) so we
|
|
222
|
-
// project it even at brief — without it the entry is ambiguous.
|
|
223
|
-
// source lets callers verify filter correctness (e.g. --source user).
|
|
224
|
-
return pickFields(entry, ["eventType", "ref", "signal", "source", "createdAt"]);
|
|
225
|
-
}
|
|
226
|
-
if (detail === "normal") {
|
|
227
|
-
return pickFields(entry, ["eventType", "ref", "signal", "source", "query", "createdAt"]);
|
|
228
|
-
}
|
|
229
|
-
// full: return everything the reader emits.
|
|
230
|
-
return pickFields(entry, ["id", "eventType", "ref", "entryId", "query", "signal", "source", "metadata", "createdAt"]);
|
|
231
|
-
}
|
|
232
178
|
export function shapeSearchOutput(result, detail, shape = "human") {
|
|
233
179
|
const forAgent = shape === "agent";
|
|
234
180
|
const hits = Array.isArray(result.hits) ? result.hits : [];
|
|
@@ -249,11 +195,10 @@ export function shapeSearchOutput(result, detail, shape = "human") {
|
|
|
249
195
|
if (detail === "full") {
|
|
250
196
|
return {
|
|
251
197
|
schemaVersion: result.schemaVersion,
|
|
252
|
-
|
|
198
|
+
bundleDir: result.bundleDir,
|
|
253
199
|
source: result.source,
|
|
254
200
|
hits: shapedHits,
|
|
255
201
|
...(shapedRegistryHits.length > 0 ? { registryHits: shapedRegistryHits } : {}),
|
|
256
|
-
...(result.semanticSearch ? { semanticSearch: result.semanticSearch } : {}),
|
|
257
202
|
...(result.tip ? { tip: result.tip } : {}),
|
|
258
203
|
...(result.warnings ? { warnings: result.warnings } : {}),
|
|
259
204
|
...(result.timing ? { timing: result.timing } : {}),
|
|
@@ -331,7 +276,21 @@ export function shapeSearchHit(hit, detail) {
|
|
|
331
276
|
}
|
|
332
277
|
/** Agent-optimized search hit: only fields an LLM agent needs to decide and act */
|
|
333
278
|
export function shapeSearchHitForAgent(hit) {
|
|
334
|
-
const picked = pickFields(hit, [
|
|
279
|
+
const picked = pickFields(hit, [
|
|
280
|
+
"name",
|
|
281
|
+
"ref",
|
|
282
|
+
"type",
|
|
283
|
+
"path",
|
|
284
|
+
"editable",
|
|
285
|
+
"editHint",
|
|
286
|
+
"description",
|
|
287
|
+
"action",
|
|
288
|
+
"score",
|
|
289
|
+
"estimatedTokens",
|
|
290
|
+
"keys",
|
|
291
|
+
]);
|
|
292
|
+
if (picked.editable !== false)
|
|
293
|
+
delete picked.editHint;
|
|
335
294
|
return capDescription(picked, NORMAL_DESCRIPTION_LIMIT);
|
|
336
295
|
}
|
|
337
296
|
export function capDescription(hit, limit) {
|
|
@@ -350,9 +309,13 @@ export function truncateDescription(description, limit) {
|
|
|
350
309
|
}
|
|
351
310
|
export function shapeShowOutput(result, detail, shape = "human") {
|
|
352
311
|
if (shape === "agent") {
|
|
353
|
-
|
|
312
|
+
const shaped = pickFields(result, [
|
|
354
313
|
"type",
|
|
355
314
|
"name",
|
|
315
|
+
"ref",
|
|
316
|
+
"path",
|
|
317
|
+
"editable",
|
|
318
|
+
"editHint",
|
|
356
319
|
"description",
|
|
357
320
|
"action",
|
|
358
321
|
"content",
|
|
@@ -372,11 +335,18 @@ export function shapeShowOutput(result, detail, shape = "human") {
|
|
|
372
335
|
"keys",
|
|
373
336
|
"related",
|
|
374
337
|
]);
|
|
338
|
+
if (shaped.editable !== false)
|
|
339
|
+
delete shaped.editHint;
|
|
340
|
+
return shaped;
|
|
375
341
|
}
|
|
376
342
|
if (shape === "summary") {
|
|
377
343
|
return pickFields(result, [
|
|
378
344
|
"type",
|
|
379
345
|
"name",
|
|
346
|
+
// ref is present on every show shape (human/summary/agent) — it is the
|
|
347
|
+
// canonical identity of the asset, not an agent-only convenience field
|
|
348
|
+
// (R-020).
|
|
349
|
+
"ref",
|
|
380
350
|
"description",
|
|
381
351
|
"tags",
|
|
382
352
|
"parameters",
|
|
@@ -391,6 +361,8 @@ export function shapeShowOutput(result, detail, shape = "human") {
|
|
|
391
361
|
const base = pickFields(result, [
|
|
392
362
|
"type",
|
|
393
363
|
"name",
|
|
364
|
+
// ref is always projected, same as path/editable below (R-020).
|
|
365
|
+
"ref",
|
|
394
366
|
"origin",
|
|
395
367
|
"action",
|
|
396
368
|
"description",
|
|
@@ -411,8 +383,9 @@ export function shapeShowOutput(result, detail, shape = "human") {
|
|
|
411
383
|
"activeRun",
|
|
412
384
|
"keys",
|
|
413
385
|
"related",
|
|
414
|
-
// path and editable are always projected
|
|
415
|
-
//
|
|
386
|
+
// ref, path, and editable are always projected — at every --detail level,
|
|
387
|
+
// not just --detail full — so JSON consumers can locate and edit the
|
|
388
|
+
// asset without needing --detail full (QA #7 / D-14).
|
|
416
389
|
"path",
|
|
417
390
|
"editable",
|
|
418
391
|
]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
const identity = (result) => result;
|
|
5
|
+
export const migrateShapes = [
|
|
6
|
+
{ command: "migrate-status", handler: identity },
|
|
7
|
+
{ command: "migrate-apply", handler: identity },
|
|
8
|
+
];
|
|
@@ -21,81 +21,47 @@ function makeStampHandler(command) {
|
|
|
21
21
|
const PASSTHROUGH_COMMANDS = [
|
|
22
22
|
"add",
|
|
23
23
|
"agent-result",
|
|
24
|
-
"
|
|
25
|
-
"bundle-items",
|
|
26
|
-
"bundle-list",
|
|
24
|
+
"bundle-create",
|
|
27
25
|
"bundle-show",
|
|
28
26
|
"clone",
|
|
29
27
|
"config",
|
|
30
|
-
"disable",
|
|
31
|
-
"enable",
|
|
32
28
|
"env-create",
|
|
33
29
|
"env-export",
|
|
34
30
|
"env-remove",
|
|
35
|
-
"env-set",
|
|
36
|
-
"env-unset",
|
|
37
31
|
"feedback",
|
|
38
|
-
"graph-entities",
|
|
39
|
-
"graph-entity",
|
|
40
|
-
"graph-export",
|
|
41
|
-
"graph-orphans",
|
|
42
|
-
"graph-related",
|
|
43
|
-
"graph-relations",
|
|
44
|
-
"graph-summary",
|
|
45
|
-
"graph-update",
|
|
46
32
|
"extract",
|
|
47
33
|
"health",
|
|
48
34
|
"improve",
|
|
49
|
-
"improve-canary",
|
|
50
|
-
"lessons-coverage",
|
|
51
35
|
"import",
|
|
52
36
|
"index",
|
|
53
37
|
"info",
|
|
54
|
-
"init",
|
|
55
38
|
"lint",
|
|
56
39
|
"list",
|
|
57
|
-
"mv",
|
|
58
40
|
"proposal-accept-batch",
|
|
59
41
|
"proposal-drain",
|
|
60
42
|
"proposal-reject-batch",
|
|
61
43
|
"proposal-revert",
|
|
62
44
|
"registry-add",
|
|
63
|
-
"registry-build-index",
|
|
64
45
|
"registry-list",
|
|
65
46
|
"registry-remove",
|
|
66
47
|
"remember",
|
|
67
48
|
"remove",
|
|
68
|
-
"save",
|
|
69
49
|
"secret-set",
|
|
70
|
-
"secret-remove",
|
|
71
50
|
"setup",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"tasks-list",
|
|
79
|
-
"tasks-remove",
|
|
80
|
-
"tasks-run",
|
|
81
|
-
"tasks-show",
|
|
82
|
-
"tasks-sync",
|
|
51
|
+
"sync",
|
|
52
|
+
"task-add",
|
|
53
|
+
"task-doctor",
|
|
54
|
+
"task-history",
|
|
55
|
+
"task-run",
|
|
56
|
+
"task-sync",
|
|
83
57
|
"update",
|
|
84
58
|
"upgrade",
|
|
85
59
|
"workflow-abandon",
|
|
86
|
-
"workflow-brief",
|
|
87
|
-
"workflow-complete",
|
|
88
|
-
"workflow-complete-rejected",
|
|
89
60
|
"workflow-create",
|
|
90
61
|
"workflow-list",
|
|
91
|
-
"workflow-next",
|
|
92
|
-
"workflow-report",
|
|
93
62
|
"workflow-resume",
|
|
94
63
|
"workflow-run",
|
|
95
|
-
"workflow-start",
|
|
96
64
|
"workflow-status",
|
|
97
|
-
"workflow-validate",
|
|
98
|
-
"workflow-watch",
|
|
99
65
|
];
|
|
100
66
|
export const passthroughShapes = PASSTHROUGH_COMMANDS.map((command) => ({
|
|
101
67
|
command,
|
|
@@ -1,12 +1,20 @@
|
|
|
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
|
-
// Output shape registration for `akm
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// Output shape registration for `akm proposal new` (#226; formerly the
|
|
5
|
+
// top-level `akm propose`, moved under `proposal` in the 0.9 CLI overhaul, S8).
|
|
6
|
+
// Shares the proposal-producer envelope shape (success carries a proposal
|
|
7
|
+
// entry; failure carries an AgentFailureReason discriminant) with the
|
|
8
|
+
// internal `akmReflect` result shape — but `reflect` has no standalone CLI
|
|
9
|
+
// verb and never reaches the output() chokepoint (reflect.ts is called
|
|
10
|
+
// directly by the improve loop, not through this registry), so only
|
|
11
|
+
// `proposal new` is registered here.
|
|
12
|
+
//
|
|
13
|
+
// Deliberately phrased WITHOUT the literal call spelling: the registry
|
|
14
|
+
// completeness scanner (tests/integration/output-shape-registry-completeness.ts)
|
|
15
|
+
// greps sources for that exact pattern to find commands needing a shape, and
|
|
16
|
+
// it does not skip comments — so writing the spelling here to explain the
|
|
17
|
+
// absence would re-summon the very registration this comment says is gone.
|
|
7
18
|
import { shapeProposalProducerOutput } from "../helpers.js";
|
|
8
19
|
const handler = (result, detail) => shapeProposalProducerOutput(result, detail);
|
|
9
|
-
export const proposalProducerShapes = [
|
|
10
|
-
{ command: "reflect", handler },
|
|
11
|
-
{ command: "propose", handler },
|
|
12
|
-
];
|
|
20
|
+
export const proposalProducerShapes = [{ command: "proposal-new", handler }];
|
package/dist/output/shapes.js
CHANGED
|
@@ -19,10 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { UsageError } from "../core/errors.js";
|
|
21
21
|
import { curateShapes } from "./shapes/curate.js";
|
|
22
|
-
import { distillShapes } from "./shapes/distill.js";
|
|
23
22
|
import { envListShapes } from "./shapes/env-list.js";
|
|
24
23
|
import { eventsShapes } from "./shapes/events.js";
|
|
25
|
-
import {
|
|
24
|
+
import { migrateShapes } from "./shapes/migrate.js";
|
|
26
25
|
import { passthroughShapes } from "./shapes/passthrough.js";
|
|
27
26
|
import { proposalAcceptShapes } from "./shapes/proposal/accept.js";
|
|
28
27
|
import { proposalDiffShapes } from "./shapes/proposal/diff.js";
|
|
@@ -35,11 +34,6 @@ import { registrySearchShapes } from "./shapes/registry-search.js";
|
|
|
35
34
|
import { searchShapes } from "./shapes/search.js";
|
|
36
35
|
import { secretListShapes } from "./shapes/secret-list.js";
|
|
37
36
|
import { showShapes } from "./shapes/show.js";
|
|
38
|
-
// Re-export helpers so existing imports from `shapes.ts` keep working.
|
|
39
|
-
export { capDescription, NORMAL_DESCRIPTION_LIMIT, pickFields, shapeAssetHit, shapeDistillOutput, shapeEventEntry, shapeEventsOutput, shapeHistoryEntry, shapeHistoryOutput, shapeProposalAcceptOutput, shapeProposalDiffOutput, shapeProposalEntry, shapeProposalListOutput, shapeProposalProducerOutput, shapeProposalRejectOutput, shapeProposalShowOutput, shapeRegistrySearchOutput, shapeSearchHit, shapeSearchHitForAgent, shapeSearchOutput, shapeShowOutput, truncateDescription, } from "./shapes/helpers.js";
|
|
40
|
-
// Re-export registry API so callers can use this module as the single entry
|
|
41
|
-
// point (backward compat).
|
|
42
|
-
export { deregisterOutputShape, registerOutputShape } from "./shapes/registry.js";
|
|
43
37
|
// ── Explicit built-in shape assembly ──────────────────────────────────────────
|
|
44
38
|
// Each entry below is a pure exported `OutputShapeEntry[]` from a per-command
|
|
45
39
|
// module. The set is registered ONCE, deterministically, with no reliance on
|
|
@@ -51,7 +45,6 @@ const BUILT_IN_OUTPUT_SHAPES = [
|
|
|
51
45
|
...curateShapes,
|
|
52
46
|
...registrySearchShapes,
|
|
53
47
|
...showShapes,
|
|
54
|
-
...historyShapes,
|
|
55
48
|
...eventsShapes,
|
|
56
49
|
...proposalListShapes,
|
|
57
50
|
...proposalShowShapes,
|
|
@@ -59,9 +52,9 @@ const BUILT_IN_OUTPUT_SHAPES = [
|
|
|
59
52
|
...proposalRejectShapes,
|
|
60
53
|
...proposalDiffShapes,
|
|
61
54
|
...proposalProducerShapes,
|
|
62
|
-
...distillShapes,
|
|
63
55
|
...envListShapes,
|
|
64
56
|
...secretListShapes,
|
|
57
|
+
...migrateShapes,
|
|
65
58
|
// Passthrough commands are registered last so an explicit dedicated handler
|
|
66
59
|
// above always wins over the identity-stamp fallback for the same name.
|
|
67
60
|
...passthroughShapes,
|
|
@@ -2,4 +2,6 @@
|
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
4
|
import { formatInitPlain } from "./helpers.js";
|
|
5
|
-
export const
|
|
5
|
+
export const bundleCreateFormatters = [
|
|
6
|
+
{ command: "bundle-create", handler: (r) => formatInitPlain(r) },
|
|
7
|
+
];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
import { formatBundleShowPlain } from "./helpers.js";
|
|
5
|
+
export const bundleShowFormatters = [
|
|
6
|
+
{ command: "bundle-show", handler: (r) => formatBundleShowPlain(r) },
|
|
7
|
+
];
|