akm-cli 0.9.0-rc.0 → 0.9.0-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1283 -22
- package/README.md +62 -37
- package/SECURITY.md +46 -31
- package/dist/akm +162 -38
- package/dist/akm-migrate +44 -0
- package/dist/assets/backends/schtasks-template.xml +2 -1
- package/dist/assets/hints/cli-hints-full.md +268 -118
- package/dist/assets/hints/cli-hints-short.md +87 -24
- package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
- package/dist/assets/improve-strategies/frequent.json +15 -0
- package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
- package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
- package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
- package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
- package/dist/assets/improve-strategies/reflect-distill.json +30 -0
- package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
- package/dist/assets/prompts/consolidate-system.md +5 -5
- package/dist/assets/prompts/extract-session.md +2 -6
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
- package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
- package/dist/assets/prompts/reflect-output-repair.md +3 -0
- package/dist/assets/prompts/workflow-unit-preamble.md +26 -0
- package/dist/assets/stash-skeleton/README.md +38 -10
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
- package/dist/assets/tasks/core/extract.yml +3 -2
- package/dist/assets/tasks/core/improve.yml +2 -1
- package/dist/assets/tasks/core/index-refresh.yml +1 -0
- package/dist/assets/tasks/core/sync.yml +1 -0
- package/dist/assets/tasks/core/version-check.yml +2 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
- package/dist/assets/templates/html/health.html +5 -4
- package/dist/assets/workflows/workflow-template.md +31 -15
- package/dist/cli/invocation.js +279 -0
- package/dist/cli/parse-args.js +5 -90
- package/dist/cli/retired-commands.js +78 -0
- package/dist/cli/shared.js +158 -48
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +747 -293
- package/dist/commands/agent/agent-dispatch.js +19 -18
- package/dist/commands/agent/agent-support.js +0 -24
- package/dist/commands/agent/contribute-cli.js +43 -97
- package/dist/commands/completions.js +80 -23
- package/dist/commands/config-cli.js +44 -281
- package/dist/commands/env/env-binding.js +99 -0
- package/dist/commands/env/env-cli.js +84 -224
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +45 -61
- package/dist/commands/env/secret.js +32 -62
- package/dist/commands/feedback-cli.js +179 -85
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +7 -8
- package/dist/commands/health/checks.js +279 -94
- package/dist/commands/health/html-report.js +197 -578
- package/dist/commands/health/improve-metrics.js +277 -246
- package/dist/commands/health/llm-usage.js +19 -19
- package/dist/commands/health/md-report.js +16 -7
- package/dist/commands/health/metrics.js +67 -32
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +508 -0
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +16 -56
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
- package/dist/commands/health/types-improve.js +29 -0
- package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
- package/dist/commands/health/types-result.js +7 -0
- package/dist/commands/health/types-runs.js +4 -0
- package/dist/commands/health/types-session-log.js +4 -0
- package/dist/commands/health/types-windows.js +4 -0
- package/dist/commands/health/types.js +26 -21
- package/dist/commands/health/windows.js +2 -3
- package/dist/commands/health.js +296 -167
- package/dist/commands/improve/anti-collapse.js +5 -5
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +65 -52
- package/dist/commands/improve/consolidate/chunking.js +9 -7
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +454 -1354
- package/dist/commands/improve/content-hash.js +39 -0
- package/dist/commands/improve/distill/content-repair.js +4 -10
- package/dist/commands/improve/distill/promote-memory.js +89 -64
- package/dist/commands/improve/distill/quality-gate.js +118 -42
- package/dist/commands/improve/distill-guards.js +1 -1
- package/dist/commands/improve/distill-promotion-policy.js +33 -888
- package/dist/commands/improve/distill.js +607 -363
- package/dist/commands/improve/eligibility.js +165 -79
- package/dist/commands/improve/extract-cli.js +35 -126
- package/dist/commands/improve/extract-prompt.js +6 -35
- package/dist/commands/improve/extract.js +640 -391
- package/dist/commands/improve/feedback-valence.js +2 -12
- package/dist/commands/improve/improve-cli.js +134 -135
- package/dist/commands/improve/improve-result-file.js +30 -50
- package/dist/commands/improve/improve-run-types.js +4 -0
- package/dist/commands/improve/improve-strategies.js +135 -0
- package/dist/commands/improve/improve.js +904 -701
- package/dist/commands/improve/locks.js +64 -111
- package/dist/commands/improve/loop-stages.js +1110 -923
- package/dist/commands/improve/memory/derived-ref.js +124 -0
- package/dist/commands/improve/memory/memory-belief.js +79 -7
- package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
- package/dist/commands/improve/memory/memory-improve.js +25 -37
- package/dist/commands/improve/outcome-loop.js +25 -88
- package/dist/commands/improve/preparation.js +1034 -813
- package/dist/commands/improve/proactive-maintenance.js +34 -9
- package/dist/commands/improve/proposal-envelope.js +31 -0
- package/dist/commands/improve/reflect.js +983 -794
- package/dist/commands/improve/run-context.js +119 -0
- package/dist/commands/improve/salience.js +24 -127
- package/dist/commands/improve/session-asset.js +7 -3
- package/dist/commands/improve/shared.js +14 -34
- package/dist/commands/improve/source-identity.js +28 -0
- package/dist/commands/improve/triage.js +20 -17
- package/dist/commands/lint/base-linter.js +340 -313
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +185 -30
- package/dist/commands/{events.js → log.js} +28 -38
- package/dist/commands/migrate-cli.js +54 -0
- package/dist/commands/migration-tool.js +55 -0
- package/dist/commands/observability-cli.js +70 -208
- package/dist/commands/proposal/diff-format.js +50 -0
- package/dist/commands/proposal/drain-policies.js +0 -6
- package/dist/commands/proposal/drain.js +91 -40
- package/dist/commands/proposal/proposal-cli.js +134 -132
- package/dist/commands/proposal/proposal-types.js +56 -0
- package/dist/commands/proposal/proposal.js +83 -65
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +105 -88
- package/dist/commands/proposal/repository.js +1303 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
- package/dist/commands/proposal/validators/proposal-validators.js +61 -12
- package/dist/commands/proposal/validators/proposals.js +6 -8
- package/dist/commands/read/curate.js +78 -73
- package/dist/commands/read/knowledge.js +510 -13
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +84 -15
- package/dist/commands/read/search-cli.js +203 -96
- package/dist/commands/read/search.js +126 -94
- package/dist/commands/read/show.js +226 -250
- package/dist/commands/registry-cli.js +34 -60
- package/dist/commands/remember.js +18 -57
- package/dist/commands/sources/add-cli.js +104 -49
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +63 -0
- package/dist/commands/sources/info.js +27 -15
- package/dist/commands/sources/init.js +30 -40
- package/dist/commands/sources/installed-stashes.js +469 -172
- package/dist/commands/sources/migration-help.js +7 -4
- package/dist/commands/sources/schema-repair.js +10 -9
- package/dist/commands/sources/self-update.js +182 -121
- package/dist/commands/sources/source-add.js +169 -178
- package/dist/commands/sources/source-clone.js +144 -41
- package/dist/commands/sources/source-manage.js +94 -59
- package/dist/commands/sources/sources-cli.js +64 -205
- package/dist/commands/sources/stash-cli.js +91 -54
- package/dist/commands/sources/stash-skeleton.js +1 -1
- package/dist/commands/tasks/tasks-cli.js +106 -104
- package/dist/commands/tasks/tasks.js +445 -262
- package/dist/commands/workflow-cli.js +232 -121
- package/dist/core/action-contributors.js +1 -1
- package/dist/core/activation-policy.js +49 -0
- package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
- package/dist/core/adapter/adapters/akm-adapter.js +528 -0
- package/dist/core/adapter/adapters/akm-lint.js +392 -0
- package/dist/core/adapter/adapters/akm-metadata.js +387 -0
- package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
- package/dist/core/adapter/adapters/claude-adapter.js +61 -0
- package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
- package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
- package/dist/core/adapter/adapters/index.js +80 -0
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
- package/dist/core/adapter/adapters/okf-adapter.js +391 -0
- package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
- package/dist/core/adapter/adapters/shared.js +286 -0
- package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
- package/dist/core/adapter/bundle-adapter.js +4 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +44 -0
- package/dist/core/adapter/registry.js +56 -0
- package/dist/core/adapter/types.js +4 -0
- package/dist/core/asset/akm-markdown.js +30 -0
- package/dist/core/asset/asset-placement.js +243 -0
- package/dist/core/asset/asset-ref.js +110 -79
- package/dist/core/asset/asset-serialize.js +20 -0
- package/dist/core/asset/frontmatter.js +28 -12
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +274 -0
- package/dist/core/asset/stash-meta.js +2 -2
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +281 -86
- package/dist/core/config/config-io.js +42 -128
- package/dist/core/config/config-schema.js +233 -834
- package/dist/core/config/config-sources.js +162 -39
- package/dist/core/config/config-types.js +16 -11
- package/dist/core/config/config-version.js +29 -0
- package/dist/core/config/config-walker.js +126 -37
- package/dist/core/config/config.js +154 -331
- package/dist/core/config/deep-merge.js +41 -0
- package/dist/core/config/engine-semantics.js +28 -0
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +38 -0
- package/dist/core/config/schema/engines.js +116 -0
- package/dist/core/config/schema/experimental.js +47 -0
- package/dist/core/config/schema/feedback.js +31 -0
- package/dist/core/config/schema/improve-processes.js +389 -0
- package/dist/core/config/schema/improve.js +94 -0
- package/dist/core/config/schema/index-config.js +176 -0
- package/dist/core/config/schema/output.js +18 -0
- package/dist/core/config/schema/primitives.js +94 -0
- package/dist/core/config/schema/search.js +30 -0
- package/dist/core/config/schema/setup.js +18 -0
- package/dist/core/config/schema/sources-bundles.js +169 -0
- package/dist/core/config/schema/workflow.js +29 -0
- package/dist/core/env-secret-ref.js +155 -20
- package/dist/core/errors.js +17 -15
- package/dist/core/events-types.js +4 -0
- package/dist/core/events.js +46 -128
- package/dist/core/extra-params.js +62 -0
- package/dist/core/file-change.js +17 -0
- package/dist/core/file-lock.js +202 -57
- package/dist/core/fs-txn.js +392 -0
- package/dist/core/git-message.js +59 -0
- package/dist/core/improve-result.js +167 -0
- package/dist/core/json-schema.js +142 -0
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +1 -1
- package/dist/core/maintenance-barrier.js +135 -0
- package/dist/core/migration-operation.js +44 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/paths.js +22 -25
- package/dist/core/platform.js +10 -0
- package/dist/core/recognition-util.js +128 -0
- package/dist/core/redaction.js +392 -0
- package/dist/core/standards/resolve-standards-context.js +36 -65
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +5 -5
- package/dist/core/state/migrations.js +242 -11
- package/dist/core/state-db.js +98 -10
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +303 -0
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/time.js +20 -0
- package/dist/core/type-presentation.js +130 -0
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +834 -118
- package/dist/indexer/bundle-identity-guard.js +92 -0
- package/dist/indexer/db/graph-db.js +1 -25
- package/dist/indexer/db/llm-cache.js +1 -1
- package/dist/indexer/ensure-index.js +30 -9
- package/dist/indexer/graph/graph-boost.js +9 -30
- package/dist/indexer/graph/graph-extraction.js +41 -27
- package/dist/indexer/graph/graph-types.js +4 -0
- package/dist/indexer/index-writer-lock.js +93 -49
- package/dist/indexer/index-written-assets.js +100 -53
- package/dist/indexer/indexer.js +746 -329
- package/dist/indexer/init.js +18 -25
- package/dist/indexer/installations.js +142 -0
- package/dist/indexer/passes/dir-staleness.js +18 -10
- package/dist/indexer/passes/memory-inference.js +25 -15
- package/dist/indexer/passes/metadata.js +412 -243
- package/dist/indexer/scan/doc-to-entry.js +160 -0
- package/dist/indexer/scan/drain-dir.js +134 -0
- package/dist/indexer/search/db-search.js +292 -108
- package/dist/indexer/search/fts-query.js +64 -0
- package/dist/indexer/search/ranking-contributors.js +145 -25
- package/dist/indexer/search/ranking-types.js +4 -0
- package/dist/indexer/search/ranking.js +28 -71
- package/dist/indexer/search/search-attribution.js +67 -0
- package/dist/indexer/search/search-fields.js +18 -3
- package/dist/indexer/search/search-hit-enrichers.js +30 -40
- package/dist/indexer/search/search-source.js +157 -111
- package/dist/indexer/search/semantic-status.js +4 -1
- package/dist/indexer/usage/usage-events.js +10 -30
- package/dist/indexer/walk/file-context.js +3 -45
- package/dist/indexer/walk/matchers.js +42 -34
- package/dist/indexer/walk/path-resolver.js +11 -5
- package/dist/indexer/walk/walker.js +42 -14
- package/dist/integrations/agent/builder-shared.js +7 -0
- package/dist/integrations/agent/builders.js +5 -56
- package/dist/integrations/agent/config.js +3 -143
- package/dist/integrations/agent/detect.js +17 -2
- package/dist/integrations/agent/engine-resolution.js +231 -0
- package/dist/integrations/agent/index.js +1 -2
- package/dist/integrations/agent/model-aliases.js +16 -2
- package/dist/integrations/agent/profiles.js +36 -62
- package/dist/integrations/agent/prompts.js +46 -18
- package/dist/integrations/agent/runner-dispatch.js +93 -4
- package/dist/integrations/agent/runner.js +76 -208
- package/dist/integrations/agent/spawn.js +88 -196
- package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
- package/dist/integrations/harnesses/aider/index.js +48 -0
- package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
- package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
- package/dist/integrations/harnesses/amazonq/index.js +45 -0
- package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
- package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
- package/dist/integrations/harnesses/claude/config-import.js +1 -3
- package/dist/integrations/harnesses/claude/index.js +24 -35
- package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
- package/dist/integrations/harnesses/claude/session-log.js +27 -75
- package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
- package/dist/integrations/harnesses/codex/index.js +52 -0
- package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
- package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
- package/dist/integrations/harnesses/copilot/index.js +48 -0
- package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
- package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
- package/dist/integrations/harnesses/gemini/index.js +48 -0
- package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
- package/dist/integrations/harnesses/ids.js +24 -0
- package/dist/integrations/harnesses/index.js +54 -34
- package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
- package/dist/integrations/harnesses/opencode/config-import.js +1 -3
- package/dist/integrations/harnesses/opencode/index.js +14 -32
- package/dist/integrations/harnesses/opencode/session-log.js +67 -125
- package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
- package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
- package/dist/integrations/harnesses/openhands/index.js +48 -0
- package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
- package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
- package/dist/integrations/harnesses/pi/index.js +45 -0
- package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
- package/dist/integrations/harnesses/shared.js +17 -0
- package/dist/integrations/harnesses/types.js +43 -32
- package/dist/integrations/lockfile.js +211 -24
- package/dist/integrations/session-logs/index.js +36 -39
- package/dist/integrations/session-logs/provider-base.js +113 -0
- package/dist/llm/client.js +182 -110
- package/dist/llm/embedders/deterministic.js +2 -2
- package/dist/llm/embedders/remote.js +21 -9
- package/dist/llm/feature-gate.js +17 -57
- package/dist/llm/graph-extract.js +12 -13
- package/dist/llm/index-passes.js +8 -42
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +45 -30
- package/dist/llm/structured-call.js +16 -8
- package/dist/llm/usage-persist.js +30 -5
- package/dist/llm/usage-telemetry.js +59 -6
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/command-registry.js +27 -0
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +251 -0
- package/dist/output/html-render.js +11 -16
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -279
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +58 -84
- package/dist/output/shapes/passthrough.js +11 -39
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes/registry.js +12 -6
- package/dist/output/shapes.js +0 -9
- package/dist/output/text/{init.js → bundle-create.js} +3 -1
- package/dist/output/text/bundle-show.js +7 -0
- package/dist/output/text/command-format.js +562 -0
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/helpers.js +15 -1164
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +202 -0
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/registry.js +12 -6
- package/dist/output/text/show-directives.js +117 -0
- package/dist/output/text/show-format.js +103 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +332 -0
- package/dist/output/text/workflow.js +3 -2
- package/dist/output/text.js +10 -19
- package/dist/registry/factory.js +4 -6
- package/dist/registry/origin-resolve.js +16 -27
- package/dist/registry/providers/skills-sh.js +3 -3
- package/dist/registry/providers/static-index.js +15 -25
- package/dist/registry/resolve.js +43 -94
- package/dist/registry/semver.js +43 -0
- package/dist/runtime.js +81 -12
- package/dist/scripts/akm-migrate.js +35529 -0
- package/dist/setup/detect.js +5 -7
- package/dist/setup/detected-engines.js +136 -0
- package/dist/setup/engine-config.js +100 -0
- package/dist/setup/registry-stash-loader.js +3 -3
- package/dist/setup/semantic-assets.js +12 -9
- package/dist/setup/setup.js +444 -208
- package/dist/setup/steps/connection-shared.js +120 -0
- package/dist/setup/steps/connection.js +108 -305
- package/dist/setup/steps/platforms.js +13 -12
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +21 -15
- package/dist/setup/steps/stashdir.js +6 -4
- package/dist/setup/steps/tasks.js +236 -119
- package/dist/setup/steps.js +3 -2
- package/dist/sources/freshness.js +39 -0
- package/dist/sources/provider-factory.js +11 -17
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +278 -34
- package/dist/sources/providers/git-provider.js +54 -56
- package/dist/sources/providers/git-stash.js +420 -91
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +47 -22
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +2 -2
- package/dist/sources/resolve.js +11 -10
- package/dist/sources/snapshot-fetchers/types.js +4 -0
- package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
- package/dist/storage/database.js +60 -4
- package/dist/storage/engines/sqlite-migrations.js +156 -5
- package/dist/storage/locations.js +1 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +51 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -32
- package/dist/storage/repositories/index-connection.js +79 -0
- package/dist/storage/repositories/index-db.js +4 -3
- package/dist/storage/repositories/index-entries-repository.js +863 -0
- package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
- package/dist/storage/repositories/index-entry-types.js +4 -0
- package/dist/storage/repositories/index-fts-repository.js +167 -0
- package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
- package/dist/storage/repositories/index-meta-repository.js +49 -0
- package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
- package/dist/storage/repositories/index-sql.js +12 -0
- package/dist/storage/repositories/index-utility-repository.js +356 -0
- package/dist/storage/repositories/index-vec-repository.js +250 -0
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +317 -75
- package/dist/storage/repositories/registry-cache.js +1 -1
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +110 -3
- package/dist/storage/repositories/workflow-runs-repository.js +240 -19
- package/dist/tasks/backends/cron.js +169 -46
- package/dist/tasks/backends/exec-utils.js +76 -3
- package/dist/tasks/backends/index.js +6 -9
- package/dist/tasks/backends/launchd.js +292 -55
- package/dist/tasks/backends/schtasks.js +557 -70
- package/dist/tasks/backends/types.js +4 -0
- package/dist/tasks/command-executable.js +93 -0
- package/dist/tasks/embedded.js +56 -38
- package/dist/tasks/parser.js +156 -64
- package/dist/tasks/resolve-akm-bin.js +144 -51
- package/dist/tasks/runner.js +377 -209
- package/dist/tasks/schedule.js +108 -19
- package/dist/tasks/scheduler-invocation.js +296 -0
- package/dist/tasks/schema.js +1 -1
- package/dist/tasks/task-id.js +35 -0
- package/dist/tasks/validator.js +30 -16
- package/dist/text-import-hook.mjs +1 -1
- package/dist/workflows/authoring/authoring.js +104 -43
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/cli.js +0 -16
- package/dist/workflows/concurrency-policy.js +15 -0
- package/dist/workflows/exec/brief.js +450 -0
- package/dist/workflows/exec/frozen-judge.js +47 -0
- package/dist/workflows/exec/native-executor.js +1038 -0
- package/dist/workflows/exec/param-secrets.js +115 -0
- package/dist/workflows/exec/report.js +1460 -0
- package/dist/workflows/exec/run-workflow.js +602 -0
- package/dist/workflows/exec/scheduler.js +71 -0
- package/dist/workflows/exec/step-work.js +1190 -0
- package/dist/workflows/exec/unit-writer.js +23 -0
- package/dist/workflows/exec/workflow-engine-gate.js +67 -0
- package/dist/workflows/exec/worktree.js +171 -0
- package/dist/workflows/ir/compile.js +246 -0
- package/dist/workflows/ir/freeze.js +233 -0
- package/dist/workflows/ir/params.js +54 -0
- package/dist/workflows/ir/plan-hash.js +68 -0
- package/dist/workflows/ir/schema.js +540 -0
- package/dist/workflows/parser.js +878 -304
- package/dist/workflows/program/expressions.js +181 -0
- package/dist/workflows/program/schema.js +51 -0
- package/dist/workflows/renderer.js +100 -45
- package/dist/workflows/resource-limits.js +22 -0
- package/dist/workflows/runtime/agent-identity.js +59 -14
- package/dist/workflows/runtime/checkin.js +1 -1
- package/dist/workflows/runtime/plan-classifier.js +131 -0
- package/dist/workflows/runtime/runs.js +376 -119
- package/dist/workflows/runtime/unit-checkin.js +45 -0
- package/dist/workflows/runtime/unit-phases.js +20 -0
- package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +2 -3
- package/dist/workflows/validator.js +52 -30
- package/docs/README.md +42 -78
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +9 -8
- package/docs/migration/release-notes/0.9.0.md +158 -14
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +844 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/data-and-telemetry.md +333 -0
- package/package.json +21 -17
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +4636 -0
- package/schemas/akm-task.json +87 -0
- package/schemas/akm-workflow.json +373 -0
- package/dist/akm-migrate-storage +0 -38
- package/dist/assets/help/help-accept.md +0 -12
- package/dist/assets/help/help-improve.md +0 -84
- package/dist/assets/help/help-proposals.md +0 -17
- package/dist/assets/help/help-propose.md +0 -17
- package/dist/assets/help/help-reject.md +0 -11
- package/dist/assets/profiles/frequent.json +0 -13
- package/dist/assets/profiles/recombine-only.json +0 -21
- package/dist/assets/profiles/reflect-distill.json +0 -30
- package/dist/assets/profiles/synthesize.json +0 -15
- package/dist/assets/prompts/procedural-system.md +0 -44
- package/dist/assets/prompts/recombine-system.md +0 -40
- package/dist/assets/prompts/staleness-detect-system.md +0 -6
- package/dist/assets/tasks/core/backup.yml +0 -4
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/assets/templates/html/default.html +0 -78
- package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
- package/dist/assets/wiki/index-template.md +0 -12
- package/dist/assets/wiki/ingest-workflow-template.md +0 -83
- package/dist/assets/wiki/log-template.md +0 -8
- package/dist/assets/wiki/schema-template.md +0 -61
- package/dist/cli/config-migrate.js +0 -150
- package/dist/cli/config-validate.js +0 -39
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -487
- package/dist/commands/improve/calibration.js +0 -161
- package/dist/commands/improve/dedup.js +0 -482
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/improve/hot-probation.js +0 -45
- package/dist/commands/improve/improve-auto-accept.js +0 -276
- package/dist/commands/improve/improve-profiles.js +0 -168
- package/dist/commands/improve/procedural.js +0 -398
- package/dist/commands/improve/recombine.js +0 -818
- package/dist/commands/improve/schema-similarity-gate.js +0 -168
- package/dist/commands/lint/agent-linter.js +0 -44
- package/dist/commands/lint/command-linter.js +0 -44
- package/dist/commands/lint/default-linter.js +0 -16
- package/dist/commands/lint/fact-linter.js +0 -39
- package/dist/commands/lint/knowledge-linter.js +0 -16
- package/dist/commands/lint/memory-linter.js +0 -61
- package/dist/commands/lint/registry.js +0 -41
- package/dist/commands/lint/skill-linter.js +0 -45
- package/dist/commands/lint/task-linter.js +0 -50
- package/dist/commands/lint/workflow-linter.js +0 -81
- package/dist/commands/proposal/legacy-import.js +0 -115
- package/dist/commands/sources/history.js +0 -196
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/commands/wiki-cli.js +0 -292
- package/dist/core/asset/asset-registry.js +0 -76
- package/dist/core/asset/asset-spec.js +0 -259
- package/dist/core/config/config-migration.js +0 -602
- package/dist/core/deep-merge.js +0 -38
- package/dist/core/eval/rank-metrics.js +0 -113
- package/dist/core/ripgrep/install.js +0 -163
- package/dist/core/ripgrep/resolve.js +0 -81
- package/dist/indexer/db/db.js +0 -1413
- package/dist/indexer/manifest.js +0 -170
- package/dist/indexer/passes/metadata-contributors.js +0 -31
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
- package/dist/llm/call-ai.js +0 -62
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/output/text/wiki.js +0 -16
- package/dist/registry/build-index.js +0 -386
- package/dist/scripts/migrate-storage.js +0 -19108
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
- package/dist/scripts/migrations/v16-to-v17.js +0 -141
- package/dist/setup/legacy-config.js +0 -106
- package/dist/storage/repositories/consolidation-repository.js +0 -38
- package/dist/storage/repositories/recombine-repository.js +0 -213
- package/dist/wiki/wiki-templates.js +0 -15
- package/dist/wiki/wiki.js +0 -1012
- package/dist/workflows/db.js +0 -215
- package/docs/data-and-telemetry.md +0 -226
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
package/dist/indexer/manifest.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
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
|
-
/**
|
|
5
|
-
* Manifest: compact asset listing for cheap capability discovery.
|
|
6
|
-
*
|
|
7
|
-
* Returns a lightweight list of all assets (name, type, ref, one-line
|
|
8
|
-
* description) that stays under 500 tokens for 50 assets. This gives
|
|
9
|
-
* agents a fast way to discover available capabilities without loading
|
|
10
|
-
* full content or running a search query.
|
|
11
|
-
*/
|
|
12
|
-
import fs from "node:fs";
|
|
13
|
-
import path from "node:path";
|
|
14
|
-
import { makeAssetRef } from "../core/asset/asset-ref.js";
|
|
15
|
-
import { deriveCanonicalAssetNameFromStashRoot } from "../core/asset/asset-spec.js";
|
|
16
|
-
import { resolveStashDir } from "../core/common.js";
|
|
17
|
-
import { loadConfig } from "../core/config/config.js";
|
|
18
|
-
import { getDbPath } from "../core/paths.js";
|
|
19
|
-
import { warn } from "../core/warn.js";
|
|
20
|
-
import { closeDatabase, getAllEntries, getEntryCount, getMeta, openExistingDatabase } from "./db/db.js";
|
|
21
|
-
import { generateMetadataFlat, loadStashFile } from "./passes/metadata.js";
|
|
22
|
-
import { resolveSourceEntries } from "./search/search-source.js";
|
|
23
|
-
import { walkStashFlat } from "./walk/walker.js";
|
|
24
|
-
const MAX_DESCRIPTION_LENGTH = 80;
|
|
25
|
-
/**
|
|
26
|
-
* Truncate a description string to a maximum length, appending "..." if truncated.
|
|
27
|
-
*/
|
|
28
|
-
function truncateDescription(desc) {
|
|
29
|
-
if (!desc)
|
|
30
|
-
return undefined;
|
|
31
|
-
if (desc.length <= MAX_DESCRIPTION_LENGTH)
|
|
32
|
-
return desc;
|
|
33
|
-
return `${desc.slice(0, MAX_DESCRIPTION_LENGTH)}...`;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Build a compact ManifestEntry from a StashEntry.
|
|
37
|
-
* Returns null if the entry cannot be converted (e.g. malformed name).
|
|
38
|
-
*/
|
|
39
|
-
function toManifestEntry(entry, filePath, stashDir, registryId) {
|
|
40
|
-
try {
|
|
41
|
-
const canonical = deriveCanonicalAssetNameFromStashRoot(entry.type, stashDir, filePath);
|
|
42
|
-
const refName = canonical && !canonical.startsWith("../") && !canonical.startsWith("..\\") ? canonical : entry.name;
|
|
43
|
-
const ref = makeAssetRef(entry.type, refName, registryId);
|
|
44
|
-
const result = {
|
|
45
|
-
name: entry.name,
|
|
46
|
-
type: entry.type,
|
|
47
|
-
ref,
|
|
48
|
-
};
|
|
49
|
-
const desc = truncateDescription(entry.description);
|
|
50
|
-
if (desc) {
|
|
51
|
-
result.description = desc;
|
|
52
|
-
}
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
warn(`Manifest: skipping entry "${entry.name}" (${entry.type}):`, error instanceof Error ? error.message : String(error));
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get the manifest from the database (fast path).
|
|
62
|
-
*/
|
|
63
|
-
function getManifestFromDb(stashDir, _config, sources, type) {
|
|
64
|
-
const dbPath = getDbPath();
|
|
65
|
-
try {
|
|
66
|
-
if (!fs.existsSync(dbPath))
|
|
67
|
-
return null;
|
|
68
|
-
const db = openExistingDatabase(dbPath);
|
|
69
|
-
try {
|
|
70
|
-
const entryCount = getEntryCount(db);
|
|
71
|
-
const storedStashDir = getMeta(db, "stashDir");
|
|
72
|
-
if (entryCount === 0 || storedStashDir !== stashDir)
|
|
73
|
-
return null;
|
|
74
|
-
const typeFilter = type && type !== "any" ? type : undefined;
|
|
75
|
-
const allEntries = getAllEntries(db, typeFilter);
|
|
76
|
-
// Deduplicate by file path
|
|
77
|
-
const seenFilePaths = new Set();
|
|
78
|
-
const entries = [];
|
|
79
|
-
for (const ie of allEntries) {
|
|
80
|
-
if (seenFilePaths.has(ie.filePath))
|
|
81
|
-
continue;
|
|
82
|
-
seenFilePaths.add(ie.filePath);
|
|
83
|
-
// Find origin for this entry
|
|
84
|
-
const source = sources.find((s) => ie.filePath.startsWith(path.resolve(s.path) + path.sep));
|
|
85
|
-
const entry = toManifestEntry(ie.entry, ie.filePath, ie.stashDir, source?.registryId);
|
|
86
|
-
if (entry)
|
|
87
|
-
entries.push(entry);
|
|
88
|
-
}
|
|
89
|
-
return entries;
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
closeDatabase(db);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
warn("Manifest: index unavailable, falling back to walker:", error instanceof Error ? error.message : String(error));
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Get the manifest by walking the stash directory (fallback when no index).
|
|
102
|
-
*/
|
|
103
|
-
async function getManifestFromWalker(sources, type) {
|
|
104
|
-
const allSourceDirs = sources.map((s) => s.path);
|
|
105
|
-
const entries = [];
|
|
106
|
-
for (const currentStashDir of allSourceDirs) {
|
|
107
|
-
const fileContexts = walkStashFlat(currentStashDir);
|
|
108
|
-
// Group by parent directory
|
|
109
|
-
const dirGroups = new Map();
|
|
110
|
-
for (const ctx of fileContexts) {
|
|
111
|
-
const group = dirGroups.get(ctx.parentDirAbs);
|
|
112
|
-
if (group)
|
|
113
|
-
group.push(ctx.absPath);
|
|
114
|
-
else
|
|
115
|
-
dirGroups.set(ctx.parentDirAbs, [ctx.absPath]);
|
|
116
|
-
}
|
|
117
|
-
for (const [dirPath, files] of dirGroups) {
|
|
118
|
-
const generated = await generateMetadataFlat(currentStashDir, files);
|
|
119
|
-
const legacyOverrides = loadStashFile(dirPath, { requireFilename: true });
|
|
120
|
-
const mergedEntries = legacyOverrides
|
|
121
|
-
? generated.entries.map((entry) => mergeLegacyEntry(entry, legacyOverrides.entries))
|
|
122
|
-
: generated.entries;
|
|
123
|
-
const stash = mergedEntries.length > 0 ? { entries: mergedEntries } : legacyOverrides;
|
|
124
|
-
if (!stash || stash.entries.length === 0)
|
|
125
|
-
continue;
|
|
126
|
-
const source = sources.find((s) => dirPath.startsWith(path.resolve(s.path) + path.sep));
|
|
127
|
-
for (const stashEntry of stash.entries) {
|
|
128
|
-
if (type && type !== "any" && stashEntry.type !== type)
|
|
129
|
-
continue;
|
|
130
|
-
if (!stashEntry.filename)
|
|
131
|
-
continue;
|
|
132
|
-
const entryPath = path.join(dirPath, stashEntry.filename);
|
|
133
|
-
const manifestEntry = toManifestEntry(stashEntry, entryPath, currentStashDir, source?.registryId);
|
|
134
|
-
if (manifestEntry)
|
|
135
|
-
entries.push(manifestEntry);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return entries;
|
|
140
|
-
}
|
|
141
|
-
function mergeLegacyEntry(entry, legacyEntries) {
|
|
142
|
-
const legacy = legacyEntries.find((candidate) => candidate.filename === entry.filename);
|
|
143
|
-
return legacy ? { ...entry, ...legacy, filename: entry.filename } : entry;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Generate a compact manifest of all assets in the stash.
|
|
147
|
-
*
|
|
148
|
-
* Tries the database first (fast path). Falls back to walker-based listing
|
|
149
|
-
* if no index is available.
|
|
150
|
-
*/
|
|
151
|
-
export async function akmManifest(options) {
|
|
152
|
-
const stashDir = options?.stashDir ?? resolveStashDir();
|
|
153
|
-
const type = options?.type;
|
|
154
|
-
const config = loadConfig();
|
|
155
|
-
const sources = resolveSourceEntries(stashDir, config);
|
|
156
|
-
// Fast path: try database
|
|
157
|
-
const dbEntries = getManifestFromDb(stashDir, config, sources, type);
|
|
158
|
-
if (dbEntries !== null) {
|
|
159
|
-
return {
|
|
160
|
-
schemaVersion: 1,
|
|
161
|
-
entries: dbEntries,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
// Fallback: walk filesystem
|
|
165
|
-
const walkerEntries = await getManifestFromWalker(sources, type);
|
|
166
|
-
return {
|
|
167
|
-
schemaVersion: 1,
|
|
168
|
-
entries: walkerEntries,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
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 contributors = [];
|
|
5
|
-
/**
|
|
6
|
-
* Ensure that all built-in indexer contributors are registered.
|
|
7
|
-
*
|
|
8
|
-
* Delegates to the single `initIndexer()` composition root (see
|
|
9
|
-
* `src/indexer/init.ts`). Imported dynamically to keep this a lazy gate and to
|
|
10
|
-
* avoid a static import cycle (init -> renderers -> metadata-contributors).
|
|
11
|
-
* Called on first use of getMetadataContributors; idempotent.
|
|
12
|
-
*/
|
|
13
|
-
async function ensureBuiltinMetadataContributorsRegistered() {
|
|
14
|
-
const { initIndexer } = await import("../init.js");
|
|
15
|
-
await initIndexer();
|
|
16
|
-
}
|
|
17
|
-
export function registerMetadataContributor(contributor) {
|
|
18
|
-
contributors.push(contributor);
|
|
19
|
-
}
|
|
20
|
-
export async function getMetadataContributors() {
|
|
21
|
-
await ensureBuiltinMetadataContributorsRegistered();
|
|
22
|
-
return [...contributors];
|
|
23
|
-
}
|
|
24
|
-
export async function applyMetadataContributors(entry, ctx) {
|
|
25
|
-
const activeContributors = await getMetadataContributors();
|
|
26
|
-
for (const contributor of activeContributors) {
|
|
27
|
-
if (!contributor.appliesTo(ctx))
|
|
28
|
-
continue;
|
|
29
|
-
contributor.contribute(entry, ctx);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
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
|
-
/**
|
|
5
|
-
* One-time, read-only guard for un-migrated `vaults/` directories (0.9.0).
|
|
6
|
-
*
|
|
7
|
-
* Background: 0.8.0 introduced the `env` asset type and a `vaults/` → `env/`
|
|
8
|
-
* copy migration (run by `akm-migrate-storage`). 0.9.0 removed the `vault`
|
|
9
|
-
* asset type entirely, and the indexer now unconditionally SKIPS `vaults/`
|
|
10
|
-
* (see `shouldIndexStashFile` in `metadata.ts`). A user who upgrades straight
|
|
11
|
-
* to 0.9.0 without ever running the storage migration therefore has the `.env`
|
|
12
|
-
* data in their `vaults/` directory silently dropped from the index — it was
|
|
13
|
-
* never copied to `env/`, and `vaults/` is no longer scanned.
|
|
14
|
-
*
|
|
15
|
-
* This guard detects exactly that state on a stash and emits ONE clear warning
|
|
16
|
-
* pointing at `akm-migrate-storage`. It is:
|
|
17
|
-
* - Non-destructive: it never reads `.env` contents, never writes, never
|
|
18
|
-
* deletes, and never moves anything. It only stats directory entries.
|
|
19
|
-
* - Idempotent: the warning is emitted at most once per process per stash
|
|
20
|
-
* directory (deduped in-memory).
|
|
21
|
-
*
|
|
22
|
-
* It deliberately does NOT auto-run the copy: filesystem mutation + chmod of
|
|
23
|
-
* secret material stays in the dedicated `akm-migrate-storage` bin, behind the
|
|
24
|
-
* user's explicit invocation, never as a side effect of a normal `akm` command.
|
|
25
|
-
*/
|
|
26
|
-
import fs from "node:fs";
|
|
27
|
-
import path from "node:path";
|
|
28
|
-
import { warn } from "../../core/warn.js";
|
|
29
|
-
/**
|
|
30
|
-
* Marker filename the `vaults/` → `env/` migration drops inside `vaults/` after
|
|
31
|
-
* a successful copy. Single source of truth shared with
|
|
32
|
-
* `scripts/migrate-storage.ts` (which writes it) and this guard (which reads
|
|
33
|
-
* it). Its presence means the data already lives under `env/` (or was a no-op
|
|
34
|
-
* fresh install).
|
|
35
|
-
*/
|
|
36
|
-
export const MIGRATED_MARKER = ".migrated";
|
|
37
|
-
/** Stashes already warned about in this process — keyed by absolute stash dir. */
|
|
38
|
-
const warnedStashDirs = new Set();
|
|
39
|
-
/** True when `dir` contains at least one `*.env` / `.env` file (recursively). */
|
|
40
|
-
function hasEnvFilesRecursive(dir) {
|
|
41
|
-
let entries;
|
|
42
|
-
try {
|
|
43
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
for (const entry of entries) {
|
|
49
|
-
const full = path.join(dir, entry.name);
|
|
50
|
-
if (entry.isDirectory()) {
|
|
51
|
-
if (hasEnvFilesRecursive(full))
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
else if (entry.name === ".env" || entry.name.endsWith(".env")) {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Warn (once) when `<stashDir>/vaults/` holds `.env` data that was never
|
|
62
|
-
* migrated to `env/`. No-op when there is no `vaults/` dir, when the
|
|
63
|
-
* `vaults/.migrated` marker is present, or when `vaults/` has no `.env` files.
|
|
64
|
-
*
|
|
65
|
-
* @returns `true` when a warning was emitted, `false` otherwise. The return is
|
|
66
|
-
* primarily for tests; callers can ignore it.
|
|
67
|
-
*/
|
|
68
|
-
export function warnOnUnmigratedVaults(stashDir) {
|
|
69
|
-
const resolved = path.resolve(stashDir);
|
|
70
|
-
if (warnedStashDirs.has(resolved))
|
|
71
|
-
return false;
|
|
72
|
-
const vaultsDir = path.join(resolved, "vaults");
|
|
73
|
-
if (!fs.existsSync(vaultsDir))
|
|
74
|
-
return false;
|
|
75
|
-
// The migration writes this marker after a successful copy. Its presence
|
|
76
|
-
// means the data already lives under env/ (or was a no-op fresh install).
|
|
77
|
-
if (fs.existsSync(path.join(vaultsDir, MIGRATED_MARKER)))
|
|
78
|
-
return false;
|
|
79
|
-
if (!hasEnvFilesRecursive(vaultsDir))
|
|
80
|
-
return false;
|
|
81
|
-
// Mark before emitting so a throw in `warn` can't cause a re-warn loop.
|
|
82
|
-
warnedStashDirs.add(resolved);
|
|
83
|
-
warn(`[akm] WARNING: found un-migrated secrets in ${vaultsDir}.\n` +
|
|
84
|
-
` The 'vault' asset type was removed in 0.9.0 and 'vaults/' is no longer indexed,\n` +
|
|
85
|
-
` so this data will NOT appear under 'env:' until you migrate it. Run:\n` +
|
|
86
|
-
` akm-migrate-storage --yes\n` +
|
|
87
|
-
` This copies 'vaults/' -> 'env/' (non-destructive — your 'vaults/' dir is left intact).\n` +
|
|
88
|
-
` See docs/migration/v0.8-to-v0.9.md.`);
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
/** Test-only: clear the per-process dedup set. */
|
|
92
|
-
export function _resetUnmigratedVaultsGuardForTests() {
|
|
93
|
-
warnedStashDirs.clear();
|
|
94
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|
-
/**
|
|
5
|
-
* OpenCode SDK harness (#564).
|
|
6
|
-
*
|
|
7
|
-
* Per-harness barrel for the SDK-mode dispatch path:
|
|
8
|
-
* - agent runner → ./sdk-runner.ts (runOpencodeSdk)
|
|
9
|
-
*
|
|
10
|
-
* It also defines {@link OpencodeSdkHarness}, the {@link AkmHarness} descriptor
|
|
11
|
-
* that `HARNESS_REGISTRY` registers.
|
|
12
|
-
*
|
|
13
|
-
* Unlike the CLI harnesses, the SDK path has no native session logs of its own
|
|
14
|
-
* (`capabilities.sessionLogs = false`): it dispatches via the embedded
|
|
15
|
-
* `@opencode-ai/sdk` and surfaces output directly rather than writing platform
|
|
16
|
-
* session files. It is still detected at setup and migrated from v1 profile
|
|
17
|
-
* names. Canonical id is `'opencode-sdk'` with no alias.
|
|
18
|
-
*/
|
|
19
|
-
import { BaseHarness } from "../types.js";
|
|
20
|
-
export { closeServer, runOpencodeSdk } from "./sdk-runner.js";
|
|
21
|
-
function caps(c) {
|
|
22
|
-
return {
|
|
23
|
-
sessionLogs: false,
|
|
24
|
-
agentDispatch: false,
|
|
25
|
-
detection: false,
|
|
26
|
-
configImport: false,
|
|
27
|
-
runtimeIdentity: false,
|
|
28
|
-
v1Migration: false,
|
|
29
|
-
...c,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* OpenCode SDK (embedded-SDK dispatch path).
|
|
34
|
-
*
|
|
35
|
-
* Dispatch-only: no native session logs, but detected at setup and migrated
|
|
36
|
-
* from v1 profile names.
|
|
37
|
-
*/
|
|
38
|
-
export class OpencodeSdkHarness extends BaseHarness {
|
|
39
|
-
id = "opencode-sdk";
|
|
40
|
-
displayName = "OpenCode SDK";
|
|
41
|
-
aliases = [];
|
|
42
|
-
// Decorated v1 profile names like "opencode-sdk-fast" belong to the SDK path.
|
|
43
|
-
v1ProfilePrefixes = ["opencode-sdk"];
|
|
44
|
-
capabilities = caps({
|
|
45
|
-
agentDispatch: true,
|
|
46
|
-
detection: true,
|
|
47
|
-
v1Migration: true,
|
|
48
|
-
});
|
|
49
|
-
}
|
package/dist/llm/call-ai.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
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 { getDefaultLlmConfig } from "../core/config/config.js";
|
|
5
|
-
import { warn } from "../core/warn.js";
|
|
6
|
-
import { resolveProfileFromConfig, runAgent } from "../integrations/agent/index.js";
|
|
7
|
-
import { chatCompletion } from "./client.js";
|
|
8
|
-
/**
|
|
9
|
-
* Unified AI call: prefers the default agent profile, falls back to the
|
|
10
|
-
* default LLM profile. When neither is configured, returns a structured
|
|
11
|
-
* error pointing the user at `akm setup`.
|
|
12
|
-
*/
|
|
13
|
-
export async function callAi(config, prompt, opts = {}) {
|
|
14
|
-
const defaultAgentName = config.defaults?.agent;
|
|
15
|
-
if (defaultAgentName) {
|
|
16
|
-
try {
|
|
17
|
-
const profile = resolveProfileFromConfig(defaultAgentName, config);
|
|
18
|
-
if (!profile) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
error: `Agent profile "${defaultAgentName}" is not built-in and has no \`bin\` override.`,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const result = await runAgent(profile, prompt, {
|
|
25
|
-
stdio: opts.draftFilePath ? "interactive" : "captured",
|
|
26
|
-
parseOutput: "text",
|
|
27
|
-
timeoutMs: opts.timeoutMs,
|
|
28
|
-
});
|
|
29
|
-
if (!result.ok)
|
|
30
|
-
return { ok: false, error: result.error ?? result.reason ?? "agent failed" };
|
|
31
|
-
return { ok: true, content: result.stdout ?? "", path: "agent-cli" };
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
return { ok: false, error: String(e) };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const llmConfig = getDefaultLlmConfig(config);
|
|
38
|
-
if (llmConfig) {
|
|
39
|
-
if (opts.draftFilePath) {
|
|
40
|
-
warn("[akm] No agent CLI configured — falling back to LLM API. " +
|
|
41
|
-
"File-write contract unavailable; expecting JSON in stdout. " +
|
|
42
|
-
"Install an agent CLI and run `akm setup` for full functionality.");
|
|
43
|
-
}
|
|
44
|
-
const messages = [];
|
|
45
|
-
if (opts.systemPrompt)
|
|
46
|
-
messages.push({ role: "system", content: opts.systemPrompt });
|
|
47
|
-
messages.push({ role: "user", content: prompt });
|
|
48
|
-
try {
|
|
49
|
-
const content = await chatCompletion(llmConfig, messages, {
|
|
50
|
-
...(opts.timeoutMs !== undefined ? { timeoutMs: opts.timeoutMs } : {}),
|
|
51
|
-
});
|
|
52
|
-
return { ok: true, content, path: "llm-http" };
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
return { ok: false, error: String(e) };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
ok: false,
|
|
60
|
-
error: "No AI connection configured. Run `akm setup` or set `defaults.agent`/`defaults.llm`.",
|
|
61
|
-
};
|
|
62
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
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
|
-
/**
|
|
5
|
-
* LLM helper for the `akm index` memory-inference pass (#201).
|
|
6
|
-
*
|
|
7
|
-
* Compresses a single memory body into one higher-signal derived memory. The
|
|
8
|
-
* pass itself (in `src/indexer/memory-inference.ts`) is responsible for
|
|
9
|
-
* deciding which memories are pending, persisting the derived memory with the
|
|
10
|
-
* correct frontmatter (`inferred: true`, `source: <parent-ref>`), and marking
|
|
11
|
-
* the parent as processed for idempotency.
|
|
12
|
-
*
|
|
13
|
-
* This module is intentionally tiny and stateless so tests can stub it via
|
|
14
|
-
* `mock.module("../src/llm/memory-infer", ...)` without hitting a network.
|
|
15
|
-
*
|
|
16
|
-
* Locked v1 contract (#208): the LLM connection always comes from the
|
|
17
|
-
* shared `akm.llm` block — never from a per-pass override. Callers obtain
|
|
18
|
-
* the connection via `resolveIndexPassLLM("memory", config)` and pass it
|
|
19
|
-
* straight through.
|
|
20
|
-
*/
|
|
21
|
-
import memoryInferSystemPrompt from "../assets/prompts/memory-infer-system.md" with { type: "text" };
|
|
22
|
-
import memoryInferUserPrompt from "../assets/prompts/memory-infer-user.md" with { type: "text" };
|
|
23
|
-
import { toErrorMessage } from "../core/common.js";
|
|
24
|
-
import { warn } from "../core/warn.js";
|
|
25
|
-
import { parseEmbeddedJsonResponse } from "./client.js";
|
|
26
|
-
import { callStructured } from "./structured-call.js";
|
|
27
|
-
/** Hard cap on body chars sent to the model — pragmatic and matches `runLlmEnrich`. */
|
|
28
|
-
const MAX_BODY_CHARS = 4000;
|
|
29
|
-
const SYSTEM_PROMPT = memoryInferSystemPrompt;
|
|
30
|
-
const USER_PROMPT_PREFIX = memoryInferUserPrompt;
|
|
31
|
-
/**
|
|
32
|
-
* Strict JSON Schema for the derived-memory payload. Sent to providers that
|
|
33
|
-
* opt in via `LlmConnectionConfig.supportsJsonSchema = true`; the client
|
|
34
|
-
* silently drops the schema for providers that don't.
|
|
35
|
-
*
|
|
36
|
-
* Extends the responseSchema lift (PR 1, asset-writers-investigation §5) to
|
|
37
|
-
* the memory-inference path. Mirrors the validation gate below
|
|
38
|
-
* (title/description/content + non-empty tags/searchHints) so a
|
|
39
|
-
* schema-compliant response is guaranteed to pass the downstream check
|
|
40
|
-
* — no more "incomplete derived memory payload from LLM; skipping memory"
|
|
41
|
-
* for shape-only failures.
|
|
42
|
-
*/
|
|
43
|
-
const DERIVED_MEMORY_JSON_SCHEMA = {
|
|
44
|
-
type: "object",
|
|
45
|
-
properties: {
|
|
46
|
-
title: { type: "string", minLength: 1 },
|
|
47
|
-
description: { type: "string", minLength: 1 },
|
|
48
|
-
content: { type: "string", minLength: 1 },
|
|
49
|
-
tags: { type: "array", items: { type: "string" }, minItems: 1, maxItems: 8 },
|
|
50
|
-
searchHints: { type: "array", items: { type: "string" }, minItems: 1, maxItems: 6 },
|
|
51
|
-
},
|
|
52
|
-
required: ["title", "description", "content", "tags", "searchHints"],
|
|
53
|
-
additionalProperties: false,
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Compress a single memory body into one derived memory via the configured LLM.
|
|
57
|
-
*
|
|
58
|
-
* Returns `undefined` on any failure (timeout, invalid JSON, empty response).
|
|
59
|
-
* Errors are logged via `warn()` but never thrown — a failed split for one memory
|
|
60
|
-
* must not abort the rest of the index pass.
|
|
61
|
-
*
|
|
62
|
-
* Routes through `callStructured({ feature: "memory_inference", ... })` so the
|
|
63
|
-
* feature gate, error classification, and onFallback hook are honoured uniformly
|
|
64
|
-
* (Fix C5).
|
|
65
|
-
*/
|
|
66
|
-
export async function compressMemoryToDerivedMemory(llmConfig, body, signal, akmConfig, onFallback, telemetry, onRetryAttempt) {
|
|
67
|
-
const trimmedBody = body.trim();
|
|
68
|
-
if (!trimmedBody)
|
|
69
|
-
return undefined;
|
|
70
|
-
const userPrompt = `${USER_PROMPT_PREFIX}${trimmedBody.slice(0, MAX_BODY_CHARS)}`;
|
|
71
|
-
// Memory-inference is ALWAYS gated: no `akmConfig` ⇒ gate closed (no chat,
|
|
72
|
-
// `disabled` fallback), never the seam's ungated/propagate path (which is for
|
|
73
|
-
// direct callers like `enhanceMetadata`). This is the gate-closed branch
|
|
74
|
-
// `tryLlmFeature(_, undefined, _)` took before the migration.
|
|
75
|
-
if (!akmConfig) {
|
|
76
|
-
onFallback?.({ feature: "memory_inference", reason: "disabled" });
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
return callStructured({
|
|
80
|
-
feature: "memory_inference",
|
|
81
|
-
akmConfig,
|
|
82
|
-
config: llmConfig,
|
|
83
|
-
messages: [
|
|
84
|
-
{ role: "system", content: SYSTEM_PROMPT },
|
|
85
|
-
{ role: "user", content: userPrompt },
|
|
86
|
-
],
|
|
87
|
-
request: {
|
|
88
|
-
temperature: 0.1,
|
|
89
|
-
timeoutMs: llmConfig.timeoutMs,
|
|
90
|
-
signal,
|
|
91
|
-
responseSchema: DERIVED_MEMORY_JSON_SCHEMA,
|
|
92
|
-
onRetryAttempt,
|
|
93
|
-
},
|
|
94
|
-
parse: (raw) => {
|
|
95
|
-
if (!raw)
|
|
96
|
-
return undefined;
|
|
97
|
-
const parsed = parseEmbeddedJsonResponse(raw);
|
|
98
|
-
if (!parsed) {
|
|
99
|
-
warn("memory inference: invalid JSON response from LLM; skipping memory.");
|
|
100
|
-
return undefined;
|
|
101
|
-
}
|
|
102
|
-
const title = typeof parsed.title === "string" ? parsed.title.trim() : "";
|
|
103
|
-
const description = typeof parsed.description === "string" ? parsed.description.trim() : "";
|
|
104
|
-
const content = typeof parsed.content === "string" ? parsed.content.trim() : "";
|
|
105
|
-
const tags = Array.isArray(parsed.tags)
|
|
106
|
-
? parsed.tags
|
|
107
|
-
.filter((t) => typeof t === "string")
|
|
108
|
-
.map((t) => t.trim())
|
|
109
|
-
.filter(Boolean)
|
|
110
|
-
.slice(0, 8)
|
|
111
|
-
: [];
|
|
112
|
-
const searchHints = Array.isArray(parsed.searchHints)
|
|
113
|
-
? parsed.searchHints
|
|
114
|
-
.filter((h) => typeof h === "string")
|
|
115
|
-
.map((h) => h.trim())
|
|
116
|
-
.filter(Boolean)
|
|
117
|
-
.slice(0, 6)
|
|
118
|
-
: [];
|
|
119
|
-
if (!title || !description || !content || tags.length === 0 || searchHints.length === 0) {
|
|
120
|
-
warn("memory inference: incomplete derived memory payload from LLM; skipping memory.");
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
return { title, description, tags, searchHints, content };
|
|
124
|
-
},
|
|
125
|
-
onError: (cls, err) => {
|
|
126
|
-
if (cls === "html") {
|
|
127
|
-
if (telemetry)
|
|
128
|
-
telemetry.htmlErrorCount = (telemetry.htmlErrorCount ?? 0) + 1;
|
|
129
|
-
warn(`memory inference: provider returned HTML instead of JSON; skipping memory: ${toErrorMessage(err)}`);
|
|
130
|
-
return undefined;
|
|
131
|
-
}
|
|
132
|
-
warn(`memory inference failed: ${toErrorMessage(err)}`);
|
|
133
|
-
return undefined;
|
|
134
|
-
},
|
|
135
|
-
fallback: undefined,
|
|
136
|
-
onFallback,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
-
// Output shape registration for `akm distill <ref>` (#228). The shape is
|
|
5
|
-
// simple — outcome + ids + optional payload — so `brief` strips the full
|
|
6
|
-
// proposal blob, `normal` keeps the headline fields, and `full` projects
|
|
7
|
-
// everything for downstream automation.
|
|
8
|
-
import { shapeDistillOutput } from "./helpers.js";
|
|
9
|
-
export const distillShapes = [
|
|
10
|
-
{
|
|
11
|
-
command: "distill",
|
|
12
|
-
handler: (result, detail) => shapeDistillOutput(result, detail),
|
|
13
|
-
},
|
|
14
|
-
];
|
|
@@ -1,11 +0,0 @@
|
|
|
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
|
-
// Output shape registration for `akm history` — paired with the text renderer in text.ts.
|
|
5
|
-
import { shapeHistoryOutput } from "./helpers.js";
|
|
6
|
-
export const historyShapes = [
|
|
7
|
-
{
|
|
8
|
-
command: "history",
|
|
9
|
-
handler: (result, detail) => shapeHistoryOutput(result, detail),
|
|
10
|
-
},
|
|
11
|
-
];
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
// Output text formatter for `akm distill <ref>` (#228).
|
|
5
|
-
import { formatDistillPlain } from "./helpers.js";
|
|
6
|
-
export const distillFormatters = [{ command: "distill", handler: (r) => formatDistillPlain(r) }];
|
|
@@ -1,8 +0,0 @@
|
|
|
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 { formatToggleComponentPlain } from "./helpers.js";
|
|
5
|
-
export const enableDisableFormatters = [
|
|
6
|
-
{ command: "enable", handler: (r) => formatToggleComponentPlain("enable", r) },
|
|
7
|
-
{ command: "disable", handler: (r) => formatToggleComponentPlain("disable", r) },
|
|
8
|
-
];
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
// Output text formatter for `akm history` — paired with the shape in shapes/history.ts.
|
|
5
|
-
import { formatHistoryPlain } from "./helpers.js";
|
|
6
|
-
export const historyFormatters = [{ command: "history", handler: (r) => formatHistoryPlain(r) }];
|
package/dist/output/text/wiki.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
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
|
-
// Output text formatters for all `akm wiki *` commands.
|
|
5
|
-
import { formatWikiCreatePlain, formatWikiIngestPlain, formatWikiLintPlain, formatWikiListPlain, formatWikiPagesPlain, formatWikiRegisterPlain, formatWikiRemovePlain, formatWikiShowPlain, formatWikiStashPlain, } from "./helpers.js";
|
|
6
|
-
export const wikiFormatters = [
|
|
7
|
-
{ command: "wiki-list", handler: (r) => formatWikiListPlain(r) },
|
|
8
|
-
{ command: "wiki-show", handler: (r) => formatWikiShowPlain(r) },
|
|
9
|
-
{ command: "wiki-create", handler: (r) => formatWikiCreatePlain(r) },
|
|
10
|
-
{ command: "wiki-remove", handler: (r) => formatWikiRemovePlain(r) },
|
|
11
|
-
{ command: "wiki-pages", handler: (r) => formatWikiPagesPlain(r) },
|
|
12
|
-
{ command: "wiki-stash", handler: (r) => formatWikiStashPlain(r) },
|
|
13
|
-
{ command: "wiki-lint", handler: (r) => formatWikiLintPlain(r) },
|
|
14
|
-
{ command: "wiki-ingest", handler: (r) => formatWikiIngestPlain(r) },
|
|
15
|
-
{ command: "wiki-register", handler: (r) => formatWikiRegisterPlain(r) },
|
|
16
|
-
];
|