akm-cli 0.8.1 → 0.9.0-beta.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 +258 -0
- package/dist/assets/help/help-proposals.md +1 -2
- package/dist/assets/hints/cli-hints-full.md +34 -19
- package/dist/assets/hints/cli-hints-short.md +1 -1
- package/dist/assets/profiles/catchup.json +13 -0
- package/dist/assets/profiles/consolidate.json +13 -0
- package/dist/assets/profiles/frequent.json +13 -0
- package/dist/assets/stash-skeleton/README.md +76 -0
- package/dist/assets/tasks/core/backup.yml +4 -0
- package/dist/assets/tasks/core/extract.yml +4 -0
- package/dist/assets/tasks/core/improve.yml +4 -0
- package/dist/assets/tasks/core/index-refresh.yml +4 -0
- package/dist/assets/tasks/core/sync.yml +4 -0
- package/dist/assets/tasks/core/update-stashes.yml +4 -0
- package/dist/assets/tasks/core/version-check.yml +4 -0
- package/dist/cli/config-migrate.js +6 -6
- package/dist/cli/config-validate.js +4 -4
- package/dist/cli/confirm.js +3 -3
- package/dist/cli/parse-args.js +1 -1
- package/dist/cli/shared.js +51 -14
- package/dist/cli-node.mjs +26 -0
- package/dist/cli.js +171 -3857
- package/dist/commands/{agent-dispatch.js → agent/agent-dispatch.js} +6 -6
- package/dist/commands/{agent-support.js → agent/agent-support.js} +2 -2
- package/dist/commands/agent/contribute-cli.js +200 -0
- package/dist/commands/completions.js +1 -1
- package/dist/commands/config-cli.js +240 -3
- package/dist/commands/config-edit.js +344 -0
- package/dist/commands/db-cli.js +2 -2
- package/dist/commands/env/env-cli.js +529 -0
- package/dist/commands/env/env.js +410 -0
- package/dist/commands/env/secret-cli.js +259 -0
- package/dist/commands/{secret.js → env/secret.js} +6 -47
- package/dist/commands/events.js +4 -4
- package/dist/commands/feedback-cli.js +18 -34
- package/dist/commands/graph/graph-cli.js +132 -0
- package/dist/commands/{graph.js → graph/graph.js} +22 -16
- package/dist/commands/health/checks.js +279 -0
- package/dist/commands/health.js +101 -249
- package/dist/commands/{consolidate.js → improve/consolidate.js} +52 -40
- package/dist/commands/{distill-promotion-policy.js → improve/distill-promotion-policy.js} +3 -3
- package/dist/commands/{distill.js → improve/distill.js} +39 -18
- package/dist/commands/{eval-cases.js → improve/eval-cases.js} +1 -1
- package/dist/commands/{extract-cli.js → improve/extract-cli.js} +4 -4
- package/dist/commands/{extract-prompt.js → improve/extract-prompt.js} +2 -2
- package/dist/commands/{extract.js → improve/extract.js} +185 -26
- package/dist/commands/{improve-auto-accept.js → improve/improve-auto-accept.js} +4 -4
- package/dist/commands/{improve-cli.js → improve/improve-cli.js} +45 -23
- package/dist/commands/{improve-profiles.js → improve/improve-profiles.js} +13 -7
- package/dist/commands/{improve-result-file.js → improve/improve-result-file.js} +10 -5
- package/dist/commands/{improve.js → improve/improve.js} +536 -248
- package/dist/{core → commands/improve/memory}/memory-belief.js +2 -2
- package/dist/{core → commands/improve/memory}/memory-contradiction-detect.js +5 -5
- package/dist/{core → commands/improve/memory}/memory-improve.js +4 -4
- package/dist/commands/{reflect.js → improve/reflect.js} +33 -28
- package/dist/commands/improve/session-asset.js +248 -0
- package/dist/commands/lint/agent-linter.js +1 -1
- package/dist/commands/lint/base-linter.js +55 -37
- package/dist/commands/lint/command-linter.js +1 -1
- package/dist/commands/lint/default-linter.js +1 -1
- package/dist/commands/lint/env-key-rules.js +1 -1
- package/dist/commands/lint/index.js +19 -25
- package/dist/commands/lint/knowledge-linter.js +1 -1
- package/dist/commands/lint/memory-linter.js +1 -1
- package/dist/commands/lint/registry.js +8 -8
- package/dist/commands/lint/skill-linter.js +1 -1
- package/dist/commands/lint/task-linter.js +1 -1
- package/dist/commands/lint/workflow-linter.js +1 -1
- package/dist/commands/lint.js +1 -1
- package/dist/commands/observability-cli.js +244 -0
- package/dist/commands/{proposal-drain-policies.js → proposal/drain-policies.js} +3 -3
- package/dist/commands/{proposal-drain.js → proposal/drain.js} +15 -10
- package/dist/commands/proposal/proposal-cli.js +478 -0
- package/dist/commands/{proposal.js → proposal/proposal.js} +5 -5
- package/dist/commands/{propose.js → proposal/propose.js} +11 -11
- package/dist/{core → commands/proposal/validators}/proposal-quality-validators.js +8 -3
- package/dist/{core → commands/proposal/validators}/proposal-validators.js +5 -5
- package/dist/{core → commands/proposal/validators}/proposals.js +13 -7
- package/dist/commands/{curate.js → read/curate.js} +7 -7
- package/dist/commands/{knowledge.js → read/knowledge.js} +22 -9
- package/dist/commands/{registry-search.js → read/registry-search.js} +5 -5
- package/dist/commands/{remember-cli.js → read/remember-cli.js} +15 -7
- package/dist/commands/read/search-cli.js +207 -0
- package/dist/commands/{search.js → read/search.js} +22 -27
- package/dist/commands/{show.js → read/show.js} +77 -44
- package/dist/commands/registry-cli.js +8 -8
- package/dist/commands/remember.js +8 -8
- package/dist/commands/sources/add-cli.js +293 -0
- package/dist/commands/{history.js → sources/history.js} +27 -25
- package/dist/commands/{info.js → sources/info.js} +6 -6
- package/dist/commands/{init.js → sources/init.js} +10 -5
- package/dist/commands/{installed-stashes.js → sources/installed-stashes.js} +12 -12
- package/dist/commands/{migration-help.js → sources/migration-help.js} +3 -2
- package/dist/commands/{schema-repair.js → sources/schema-repair.js} +8 -8
- package/dist/commands/{self-update.js → sources/self-update.js} +10 -9
- package/dist/commands/{source-add.js → sources/source-add.js} +10 -10
- package/dist/commands/{source-clone.js → sources/source-clone.js} +7 -7
- package/dist/commands/{source-manage.js → sources/source-manage.js} +4 -4
- package/dist/commands/sources/sources-cli.js +305 -0
- package/dist/commands/sources/stash-cli.js +219 -0
- package/dist/commands/sources/stash-skeleton.js +79 -0
- package/dist/commands/tasks/default-tasks.js +173 -0
- package/dist/commands/tasks/tasks-cli.js +210 -0
- package/dist/commands/{tasks.js → tasks/tasks.js} +14 -14
- package/dist/commands/wiki-cli.js +307 -0
- package/dist/commands/workflow-cli.js +329 -0
- package/dist/core/action-contributors.js +1 -1
- package/dist/core/assert.js +40 -0
- package/dist/core/asset/asset-create.js +54 -0
- package/dist/core/{asset-ref.js → asset/asset-ref.js} +21 -4
- package/dist/core/{asset-registry.js → asset/asset-registry.js} +3 -3
- package/dist/core/{asset-spec.js → asset/asset-spec.js} +17 -31
- package/dist/core/{markdown.js → asset/markdown.js} +1 -1
- package/dist/core/asset/stash-meta.js +110 -0
- package/dist/core/best-effort.js +64 -0
- package/dist/core/common.js +32 -18
- package/dist/core/{config-io.js → config/config-io.js} +29 -19
- package/dist/core/{config-migration.js → config/config-migration.js} +11 -9
- package/dist/core/{config-schema.js → config/config-schema.js} +45 -1
- package/dist/core/config/config-types.js +16 -0
- package/dist/core/{config-walker.js → config/config-walker.js} +2 -2
- package/dist/core/{config.js → config/config.js} +10 -8
- package/dist/core/env-secret-ref.js +90 -0
- package/dist/core/errors.js +13 -3
- package/dist/core/events.js +27 -4
- package/dist/core/file-lock.js +1 -1
- package/dist/core/improve-types.js +48 -0
- package/dist/core/lesson-lint.js +2 -2
- package/dist/core/paths.js +2 -2
- package/dist/{setup/ripgrep-install.js → core/ripgrep/install.js} +2 -2
- package/dist/{setup/ripgrep-resolve.js → core/ripgrep/resolve.js} +2 -2
- package/dist/core/state-db.js +88 -46
- package/dist/core/text-truncation.js +148 -0
- package/dist/core/time.js +1 -1
- package/dist/core/write-source.js +98 -85
- package/dist/indexer/{db-backup.js → db/db-backup.js} +9 -24
- package/dist/indexer/{db.js → db/db.js} +126 -116
- package/dist/indexer/{graph-db.js → db/graph-db.js} +9 -4
- package/dist/indexer/{llm-cache.js → db/llm-cache.js} +15 -12
- package/dist/indexer/ensure-index.js +4 -4
- package/dist/indexer/{graph-boost.js → graph/graph-boost.js} +1 -1
- package/dist/indexer/{graph-extraction.js → graph/graph-extraction.js} +55 -13
- package/dist/indexer/indexer.js +37 -30
- package/dist/indexer/init.js +54 -0
- package/dist/indexer/manifest.js +10 -10
- package/dist/indexer/{memory-inference.js → passes/memory-inference.js} +92 -23
- package/dist/indexer/{metadata-contributors.js → passes/metadata-contributors.js} +10 -8
- package/dist/indexer/{metadata.js → passes/metadata.js} +15 -19
- package/dist/indexer/{staleness-detect.js → passes/staleness-detect.js} +53 -12
- package/dist/indexer/{db-search.js → search/db-search.js} +28 -16
- package/dist/indexer/{ranking-contributors.js → search/ranking-contributors.js} +1 -1
- package/dist/indexer/{ranking.js → search/ranking.js} +2 -2
- package/dist/indexer/{search-hit-enrichers.js → search/search-hit-enrichers.js} +3 -3
- package/dist/indexer/{search-source.js → search/search-source.js} +8 -8
- package/dist/indexer/{semantic-status.js → search/semantic-status.js} +3 -3
- package/dist/indexer/usage/unmigrated-vaults-guard.js +94 -0
- package/dist/indexer/{usage-events.js → usage/usage-events.js} +32 -0
- package/dist/indexer/{file-context.js → walk/file-context.js} +10 -15
- package/dist/indexer/{matchers.js → walk/matchers.js} +13 -9
- package/dist/indexer/{path-resolver.js → walk/path-resolver.js} +6 -6
- package/dist/indexer/{project-context.js → walk/project-context.js} +1 -1
- package/dist/indexer/{walker.js → walk/walker.js} +4 -3
- package/dist/integrations/agent/builder-shared.js +39 -0
- package/dist/integrations/agent/builders.js +14 -81
- package/dist/integrations/agent/config.js +6 -4
- package/dist/integrations/agent/detect.js +1 -1
- package/dist/integrations/agent/index.js +23 -8
- package/dist/integrations/agent/prompts.js +2 -3
- package/dist/integrations/agent/runner.js +22 -3
- package/dist/integrations/agent/spawn.js +9 -10
- package/dist/integrations/harnesses/claude/agent-builder.js +48 -0
- package/dist/integrations/harnesses/claude/config-import.js +70 -0
- package/dist/integrations/harnesses/claude/index.js +64 -0
- package/dist/integrations/{session-logs/providers/claude-code.js → harnesses/claude/session-log.js} +16 -1
- package/dist/integrations/harnesses/index.js +144 -0
- package/dist/integrations/harnesses/opencode/agent-builder.js +43 -0
- package/dist/integrations/harnesses/opencode/config-import.js +82 -0
- package/dist/integrations/harnesses/opencode/index.js +59 -0
- package/dist/integrations/{session-logs/providers/opencode.js → harnesses/opencode/session-log.js} +1 -1
- package/dist/integrations/harnesses/opencode-sdk/index.js +49 -0
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +234 -0
- package/dist/integrations/harnesses/types.js +43 -0
- package/dist/integrations/lockfile.js +7 -16
- package/dist/integrations/session-logs/index.js +82 -9
- package/dist/llm/call-ai.js +4 -4
- package/dist/llm/client.js +131 -6
- package/dist/llm/embedder.js +6 -6
- package/dist/llm/embedders/local.js +9 -22
- package/dist/llm/embedders/remote.js +2 -2
- package/dist/llm/embedders/types.js +1 -1
- package/dist/llm/graph-extract.js +31 -12
- package/dist/llm/index-passes.js +1 -1
- package/dist/llm/memory-infer.js +12 -5
- package/dist/llm/metadata-enhance.js +2 -2
- package/dist/output/context.js +6 -44
- package/dist/output/renderers.js +88 -58
- package/dist/output/shapes/curate.js +7 -3
- package/dist/output/shapes/distill.js +7 -3
- package/dist/output/shapes/env-list.js +18 -16
- package/dist/output/shapes/events.js +5 -4
- package/dist/output/shapes/helpers.js +2 -4
- package/dist/output/shapes/history.js +7 -3
- package/dist/output/shapes/passthrough.js +8 -11
- package/dist/output/shapes/{proposal-accept.js → proposal/accept.js} +7 -3
- package/dist/output/shapes/{proposal-diff.js → proposal/diff.js} +7 -3
- package/dist/output/shapes/{proposal-list.js → proposal/list.js} +7 -3
- package/dist/output/shapes/{proposal-producer.js → proposal/producer.js} +5 -4
- package/dist/output/shapes/{proposal-reject.js → proposal/reject.js} +7 -3
- package/dist/output/shapes/{proposal-show.js → proposal/show.js} +7 -3
- package/dist/output/shapes/registry-search.js +7 -3
- package/dist/output/shapes/registry.js +12 -0
- package/dist/output/shapes/search.js +7 -3
- package/dist/output/shapes/secret-list.js +18 -16
- package/dist/output/shapes/show.js +7 -3
- package/dist/output/shapes.js +55 -30
- package/dist/output/text/add.js +2 -3
- package/dist/output/text/clone.js +2 -3
- package/dist/output/text/config.js +2 -3
- package/dist/output/text/curate.js +4 -3
- package/dist/output/text/distill.js +2 -3
- package/dist/output/text/enable-disable.js +5 -4
- package/dist/output/text/env.js +13 -0
- package/dist/output/text/events.js +5 -4
- package/dist/output/text/feedback.js +4 -3
- package/dist/output/text/helpers.js +54 -39
- package/dist/output/text/history.js +2 -3
- package/dist/output/text/import.js +2 -3
- package/dist/output/text/index.js +2 -3
- package/dist/output/text/info.js +2 -3
- package/dist/output/text/init.js +2 -3
- package/dist/output/text/list.js +2 -3
- package/dist/output/text/proposal/producer.js +9 -0
- package/dist/output/text/proposal/proposal.js +13 -0
- package/dist/output/text/registry-commands.js +8 -7
- package/dist/output/text/registry.js +12 -0
- package/dist/output/text/remember.js +4 -3
- package/dist/output/text/remove.js +2 -3
- package/dist/output/text/save.js +2 -3
- package/dist/output/text/search.js +4 -3
- package/dist/output/text/show.js +4 -3
- package/dist/output/text/update.js +2 -3
- package/dist/output/text/upgrade.js +2 -3
- package/dist/output/text/wiki.js +12 -11
- package/dist/output/text/workflow.js +12 -10
- package/dist/output/text.js +66 -32
- package/dist/registry/build-index.js +11 -10
- package/dist/registry/factory.js +1 -1
- package/dist/registry/origin-resolve.js +1 -1
- package/dist/registry/providers/index.js +2 -2
- package/dist/registry/providers/skills-sh.js +91 -72
- package/dist/registry/providers/static-index.js +75 -52
- package/dist/registry/resolve.js +3 -3
- package/dist/runtime.js +242 -0
- package/dist/scripts/migrate-storage.js +1594 -673
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +240 -166
- package/dist/setup/detect.js +338 -9
- package/dist/setup/harness-config-import.js +56 -0
- package/dist/setup/registry-stash-loader.js +99 -0
- package/dist/setup/setup.js +664 -96
- package/dist/sources/include.js +1 -1
- package/dist/sources/provider-factory.js +2 -2
- package/dist/sources/providers/filesystem.js +3 -3
- package/dist/sources/providers/git.js +9 -9
- package/dist/sources/providers/index.js +4 -4
- package/dist/sources/providers/npm.js +6 -6
- package/dist/sources/providers/provider-utils.js +13 -20
- package/dist/sources/providers/sync-from-ref.js +5 -5
- package/dist/sources/providers/tar-utils.js +2 -2
- package/dist/sources/providers/website.js +2 -2
- package/dist/sources/resolve.js +5 -5
- package/dist/sources/website-ingest.js +5 -5
- package/dist/storage/database.js +102 -0
- package/dist/storage/engines/sqlite-migrations.js +42 -0
- package/dist/storage/locations.js +25 -0
- package/dist/storage/repositories/index-db.js +43 -0
- package/dist/storage/repositories/workflow-runs-repository.js +141 -0
- package/dist/tasks/backends/cron.js +4 -4
- package/dist/tasks/backends/exec-utils.js +32 -0
- package/dist/tasks/backends/index.js +3 -3
- package/dist/tasks/backends/launchd.js +7 -14
- package/dist/tasks/backends/schtasks.js +7 -16
- package/dist/tasks/embedded.js +71 -0
- package/dist/tasks/parser.js +2 -2
- package/dist/tasks/resolveAkmBin.js +1 -1
- package/dist/tasks/runner.js +28 -15
- package/dist/tasks/schedule.js +1 -1
- package/dist/tasks/validator.js +7 -7
- package/dist/text-import-hook.mjs +51 -0
- package/dist/version.js +2 -1
- package/dist/wiki/wiki.js +7 -7
- package/dist/workflows/{authoring.js → authoring/authoring.js} +6 -6
- package/dist/workflows/{scope-key.js → authoring/scope-key.js} +1 -1
- package/dist/workflows/cli.js +1 -1
- package/dist/workflows/db.js +50 -32
- package/dist/workflows/parser.js +4 -4
- package/dist/workflows/renderer.js +5 -5
- package/dist/workflows/runtime/agent-identity.js +56 -0
- package/dist/workflows/runtime/checkin.js +57 -0
- package/dist/workflows/{runs.js → runtime/runs.js} +197 -101
- package/dist/workflows/validate-summary.js +82 -0
- package/docs/README.md +1 -1
- package/docs/data-and-telemetry.md +6 -6
- package/package.json +16 -8
- package/dist/commands/add-cli.js +0 -279
- package/dist/commands/env.js +0 -213
- package/dist/integrations/agent/sdk-runner.js +0 -126
- package/dist/output/shapes/vault-list.js +0 -19
- package/dist/output/text/proposal-producer.js +0 -8
- package/dist/output/text/proposal.js +0 -12
- package/dist/output/text/vault.js +0 -16
- /package/dist/core/{asset-serialize.js → asset/asset-serialize.js} +0 -0
- /package/dist/core/{frontmatter.js → asset/frontmatter.js} +0 -0
- /package/dist/core/{config-sources.js → config/config-sources.js} +0 -0
- /package/dist/indexer/{graph-dedup.js → graph/graph-dedup.js} +0 -0
- /package/dist/{core/config-types.js → indexer/passes/pass-context.js} +0 -0
- /package/dist/indexer/{search-fields.js → search/search-fields.js} +0 -0
- /package/dist/indexer/{index-context.js → walk/index-context.js} +0 -0
- /package/dist/workflows/{document-cache.js → runtime/document-cache.js} +0 -0
package/dist/output/renderers.js
CHANGED
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import fs from "node:fs";
|
|
13
13
|
import path from "node:path";
|
|
14
|
-
import { listKeys as listVaultKeys } from "../commands/env";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { buildWorkflowAction, workflowMdRenderer } from "../workflows/renderer";
|
|
14
|
+
import { listKeys as listVaultKeys } from "../commands/env/env.js";
|
|
15
|
+
import { parseFrontmatter } from "../core/asset/frontmatter.js";
|
|
16
|
+
import { extractFrontmatterOnly, extractLineRange, extractSection, formatToc, parseMarkdownToc, } from "../core/asset/markdown.js";
|
|
17
|
+
import { asNonEmptyString, hasErrnoCode } from "../core/common.js";
|
|
18
|
+
import { extractCommentMetadata, extractDescriptionFromComments } from "../indexer/passes/metadata.js";
|
|
19
|
+
import { registerMetadataContributor } from "../indexer/passes/metadata-contributors.js";
|
|
20
|
+
import { registerRenderer } from "../indexer/walk/file-context.js";
|
|
21
|
+
import { buildWorkflowAction, workflowMdRenderer } from "../workflows/renderer.js";
|
|
22
22
|
// ── Interpreter auto-detection map ───────────────────────────────────────────
|
|
23
23
|
const INTERPRETER_MAP = {
|
|
24
24
|
".sh": "bash",
|
|
@@ -362,38 +362,11 @@ const scriptSourceRenderer = {
|
|
|
362
362
|
}
|
|
363
363
|
},
|
|
364
364
|
};
|
|
365
|
-
// ── 8.
|
|
365
|
+
// ── 8. env-file ───────────────────────────────────────────────────────────────
|
|
366
366
|
/**
|
|
367
|
-
*
|
|
368
|
-
* values. Deliberately omits content/template/prompt so
|
|
369
|
-
*
|
|
370
|
-
*/
|
|
371
|
-
const vaultEnvRenderer = {
|
|
372
|
-
name: "vault-env",
|
|
373
|
-
buildShowResponse(ctx) {
|
|
374
|
-
const name = deriveName(ctx);
|
|
375
|
-
const { keys, comments } = listVaultKeys(ctx.absPath);
|
|
376
|
-
return {
|
|
377
|
-
type: "vault",
|
|
378
|
-
name,
|
|
379
|
-
path: ctx.absPath,
|
|
380
|
-
action: 'Vault — keys + comments only. Use `source "$(akm vault path <ref>)"` to load values into the current shell, or `akm vault run <ref[/KEY]> -- <command>` to run with injected env. Values stay on disk and are never written to akm\'s stdout.',
|
|
381
|
-
description: comments.length > 0 ? comments.join("\n") : undefined,
|
|
382
|
-
keys,
|
|
383
|
-
comments,
|
|
384
|
-
};
|
|
385
|
-
},
|
|
386
|
-
enrichSearchHit(hit, _stashDir) {
|
|
387
|
-
const { keys } = listVaultKeys(hit.path);
|
|
388
|
-
if (keys.length > 0)
|
|
389
|
-
hit.keys = keys;
|
|
390
|
-
},
|
|
391
|
-
};
|
|
392
|
-
// ── 8b. env-file ───────────────────────────────────────────────────────────────
|
|
393
|
-
/**
|
|
394
|
-
* Env renderer. Like the (deprecated) vault renderer, returns ONLY key names
|
|
395
|
-
* and start-of-line comments — never values. Deliberately omits
|
|
396
|
-
* content/template/prompt so env values cannot leak through `akm show`.
|
|
367
|
+
* Env renderer. Returns ONLY key names and start-of-line comments — never
|
|
368
|
+
* values. Deliberately omits content/template/prompt so env values cannot leak
|
|
369
|
+
* through `akm show`.
|
|
397
370
|
*/
|
|
398
371
|
const envFileRenderer = {
|
|
399
372
|
name: "env-file",
|
|
@@ -449,6 +422,75 @@ const taskMdRenderer = {
|
|
|
449
422
|
};
|
|
450
423
|
},
|
|
451
424
|
};
|
|
425
|
+
// ── 8. session-md (#561) ─────────────────────────────────────────────────────
|
|
426
|
+
/**
|
|
427
|
+
* Renderer for the `session` asset type (#561). A session asset is generated by
|
|
428
|
+
* the `extract` pass and carries `harness`, `started_at`/`ended_at`, `project`,
|
|
429
|
+
* `log_path`, and `access` frontmatter plus an LLM `## Summary` / `## Key topics`
|
|
430
|
+
* body. The renderer surfaces a human-readable one-liner (harness + date +
|
|
431
|
+
* project) and concrete `access` instructions rather than dumping raw
|
|
432
|
+
* frontmatter, so an agent can decide whether to open the raw log.
|
|
433
|
+
*/
|
|
434
|
+
const sessionMdRenderer = {
|
|
435
|
+
name: "session-md",
|
|
436
|
+
buildShowResponse(ctx) {
|
|
437
|
+
const name = deriveName(ctx);
|
|
438
|
+
const parsed = parseFrontmatter(ctx.content());
|
|
439
|
+
const fm = parsed.data;
|
|
440
|
+
const harness = asNonEmptyString(fm.harness);
|
|
441
|
+
const project = asNonEmptyString(fm.project);
|
|
442
|
+
const startedAt = asNonEmptyString(fm.started_at);
|
|
443
|
+
const endedAt = asNonEmptyString(fm.ended_at);
|
|
444
|
+
const logPath = asNonEmptyString(fm.log_path);
|
|
445
|
+
const access = asNonEmptyString(fm.access);
|
|
446
|
+
const description = asNonEmptyString(fm.description);
|
|
447
|
+
const dateRange = startedAt ? (endedAt ? `${startedAt} – ${endedAt}` : startedAt) : undefined;
|
|
448
|
+
const headerParts = [
|
|
449
|
+
harness ? `harness: ${harness}` : undefined,
|
|
450
|
+
project ? `project: ${project}` : undefined,
|
|
451
|
+
dateRange,
|
|
452
|
+
].filter((p) => !!p);
|
|
453
|
+
const accessLine = [logPath ? `log: ${logPath}` : undefined, access].filter((p) => !!p).join("\n");
|
|
454
|
+
const action = [
|
|
455
|
+
"Prior agent session — read the summary below.",
|
|
456
|
+
headerParts.length > 0 ? headerParts.join(" ") : undefined,
|
|
457
|
+
accessLine ? `Open the raw log:\n${accessLine}` : undefined,
|
|
458
|
+
]
|
|
459
|
+
.filter((p) => !!p)
|
|
460
|
+
.join("\n");
|
|
461
|
+
return {
|
|
462
|
+
type: "session",
|
|
463
|
+
name,
|
|
464
|
+
path: ctx.absPath,
|
|
465
|
+
action,
|
|
466
|
+
description,
|
|
467
|
+
content: parsed.content,
|
|
468
|
+
};
|
|
469
|
+
},
|
|
470
|
+
};
|
|
471
|
+
function applySessionMetadata(entry, ctx) {
|
|
472
|
+
try {
|
|
473
|
+
const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
|
|
474
|
+
entry.tags = Array.from(new Set([...(entry.tags ?? []), "session"]));
|
|
475
|
+
const hints = new Set(entry.searchHints ?? []);
|
|
476
|
+
const harness = asNonEmptyString(fm.harness);
|
|
477
|
+
if (harness)
|
|
478
|
+
hints.add(`harness:${harness}`);
|
|
479
|
+
const project = asNonEmptyString(fm.project);
|
|
480
|
+
if (project)
|
|
481
|
+
hints.add(`project:${project}`);
|
|
482
|
+
// log_path is the durable correlation key — keep it discoverable as a hint
|
|
483
|
+
// so it survives in the index even when the body is re-derived.
|
|
484
|
+
const logPath = asNonEmptyString(fm.log_path);
|
|
485
|
+
if (logPath)
|
|
486
|
+
hints.add(`log_path:${logPath}`);
|
|
487
|
+
if (hints.size > 0)
|
|
488
|
+
entry.searchHints = Array.from(hints).filter(Boolean);
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
// Non-fatal: skip metadata extraction on parse error
|
|
492
|
+
}
|
|
493
|
+
}
|
|
452
494
|
function applyTocMetadata(entry, ctx) {
|
|
453
495
|
try {
|
|
454
496
|
const toc = parseMarkdownToc(ctx.content());
|
|
@@ -538,18 +580,6 @@ function applyScriptMetadata(entry, ctx) {
|
|
|
538
580
|
entry.confidence = 0.7;
|
|
539
581
|
}
|
|
540
582
|
}
|
|
541
|
-
function applyVaultMetadata(entry, ctx) {
|
|
542
|
-
const { keys, comments } = listVaultKeys(ctx.absPath);
|
|
543
|
-
if (comments.length > 0 && !entry.description) {
|
|
544
|
-
entry.description = comments.join(" ").slice(0, 500);
|
|
545
|
-
entry.source = "comments";
|
|
546
|
-
entry.confidence = 0.7;
|
|
547
|
-
}
|
|
548
|
-
if (keys.length > 0) {
|
|
549
|
-
entry.searchHints = keys;
|
|
550
|
-
}
|
|
551
|
-
entry.tags = Array.from(new Set([...(entry.tags ?? []), "vault", "secrets"]));
|
|
552
|
-
}
|
|
553
583
|
function applyEnvMetadata(entry, ctx) {
|
|
554
584
|
const { keys, comments } = listVaultKeys(ctx.absPath);
|
|
555
585
|
if (comments.length > 0 && !entry.description) {
|
|
@@ -610,11 +640,6 @@ registerMetadataContributor({
|
|
|
610
640
|
appliesTo: ({ rendererName }) => rendererName === "script-source",
|
|
611
641
|
contribute: (entry, ctx) => applyScriptMetadata(entry, ctx.renderContext),
|
|
612
642
|
});
|
|
613
|
-
registerMetadataContributor({
|
|
614
|
-
name: "vault-secret-metadata",
|
|
615
|
-
appliesTo: ({ rendererName }) => rendererName === "vault-env",
|
|
616
|
-
contribute: (entry, ctx) => applyVaultMetadata(entry, ctx.renderContext),
|
|
617
|
-
});
|
|
618
643
|
registerMetadataContributor({
|
|
619
644
|
name: "env-file-metadata",
|
|
620
645
|
appliesTo: ({ rendererName }) => rendererName === "env-file",
|
|
@@ -630,6 +655,11 @@ registerMetadataContributor({
|
|
|
630
655
|
appliesTo: ({ rendererName }) => rendererName === "task-yaml",
|
|
631
656
|
contribute: (entry, ctx) => applyTaskMetadata(entry, ctx.renderContext),
|
|
632
657
|
});
|
|
658
|
+
registerMetadataContributor({
|
|
659
|
+
name: "session-md-metadata",
|
|
660
|
+
appliesTo: ({ rendererName }) => rendererName === "session-md",
|
|
661
|
+
contribute: (entry, ctx) => applySessionMetadata(entry, ctx.renderContext),
|
|
662
|
+
});
|
|
633
663
|
// ── Registration ─────────────────────────────────────────────────────────────
|
|
634
664
|
/** All built-in renderers. */
|
|
635
665
|
const builtinRenderers = [
|
|
@@ -643,9 +673,9 @@ const builtinRenderers = [
|
|
|
643
673
|
workflowMdRenderer,
|
|
644
674
|
scriptSourceRenderer,
|
|
645
675
|
envFileRenderer,
|
|
646
|
-
vaultEnvRenderer,
|
|
647
676
|
secretFileRenderer,
|
|
648
677
|
taskMdRenderer,
|
|
678
|
+
sessionMdRenderer,
|
|
649
679
|
];
|
|
650
680
|
/**
|
|
651
681
|
* Register all built-in renderers with the file-context registry.
|
|
@@ -657,4 +687,4 @@ export function registerBuiltinRenderers() {
|
|
|
657
687
|
}
|
|
658
688
|
}
|
|
659
689
|
// ── Named exports for testing ────────────────────────────────────────────────
|
|
660
|
-
export { agentMdRenderer, commandMdRenderer, envFileRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer,
|
|
690
|
+
export { agentMdRenderer, commandMdRenderer, envFileRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer, wikiMdRenderer, workflowMdRenderer, };
|
|
@@ -1,8 +1,7 @@
|
|
|
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
|
-
import { capDescription, NORMAL_DESCRIPTION_LIMIT, pickFields } from "./helpers";
|
|
5
|
-
import { registerOutputShape } from "./registry";
|
|
4
|
+
import { capDescription, NORMAL_DESCRIPTION_LIMIT, pickFields } from "./helpers.js";
|
|
6
5
|
// Curation is a small, high-signal top-N. Even at `brief` we keep `followUp`
|
|
7
6
|
// (the actionable `akm show <ref>` command) and `reason` (why this asset was
|
|
8
7
|
// selected) — these are the point of curate, unlike a bulk search listing.
|
|
@@ -53,4 +52,9 @@ export function shapeCurateOutput(result, detail, shape) {
|
|
|
53
52
|
};
|
|
54
53
|
return base;
|
|
55
54
|
}
|
|
56
|
-
|
|
55
|
+
export const curateShapes = [
|
|
56
|
+
{
|
|
57
|
+
command: "curate",
|
|
58
|
+
handler: (result, detail, shape) => shapeCurateOutput(result, detail, shape),
|
|
59
|
+
},
|
|
60
|
+
];
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
// simple — outcome + ids + optional payload — so `brief` strips the full
|
|
6
6
|
// proposal blob, `normal` keeps the headline fields, and `full` projects
|
|
7
7
|
// everything for downstream automation.
|
|
8
|
-
import { shapeDistillOutput } from "./helpers";
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { shapeDistillOutput } from "./helpers.js";
|
|
9
|
+
export const distillShapes = [
|
|
10
|
+
{
|
|
11
|
+
command: "distill",
|
|
12
|
+
handler: (result, detail) => shapeDistillOutput(result, detail),
|
|
13
|
+
},
|
|
14
|
+
];
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
4
|
+
export const envListShapes = [
|
|
5
|
+
{
|
|
6
|
+
command: "env-list",
|
|
7
|
+
handler: (result) => {
|
|
8
|
+
const r = result;
|
|
9
|
+
const envs = Array.isArray(r.envs) ? r.envs : [];
|
|
10
|
+
return {
|
|
11
|
+
...r,
|
|
12
|
+
shape: r.shape ?? "env-list",
|
|
13
|
+
schemaVersion: r.schemaVersion ?? 1,
|
|
14
|
+
envs: envs.map((v) => {
|
|
15
|
+
const { path: _path, ...rest } = v;
|
|
16
|
+
return rest;
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
];
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
// Output shape registration for `akm events list` and `akm events tail` (#204).
|
|
5
5
|
// Both share the same envelope; the renderer in text.ts uses distinct command
|
|
6
6
|
// names so it can format streaming differently.
|
|
7
|
-
import { shapeEventsOutput } from "./helpers";
|
|
8
|
-
import { registerOutputShape } from "./registry";
|
|
7
|
+
import { shapeEventsOutput } from "./helpers.js";
|
|
9
8
|
const handler = (result, detail) => shapeEventsOutput(result, detail);
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const eventsShapes = [
|
|
10
|
+
{ command: "events-list", handler },
|
|
11
|
+
{ command: "events-tail", handler },
|
|
12
|
+
];
|
|
@@ -297,7 +297,7 @@ export function shapeSearchHit(hit, detail) {
|
|
|
297
297
|
}
|
|
298
298
|
// Stash hit (local or remote)
|
|
299
299
|
// `ref` is included at `brief` so agents can run `akm show <ref>` without
|
|
300
|
-
// needing --detail full or --
|
|
300
|
+
// needing --detail full or --shape agent (REC-03).
|
|
301
301
|
if (detail === "brief")
|
|
302
302
|
return pickFields(hit, ["type", "name", "ref", "action", "estimatedTokens", "keys"]);
|
|
303
303
|
if (detail === "normal") {
|
|
@@ -399,9 +399,7 @@ export function shapeShowOutput(result, detail, shape = "human") {
|
|
|
399
399
|
"related",
|
|
400
400
|
// path and editable are always projected so JSON consumers can locate and
|
|
401
401
|
// edit the asset without needing --detail full (QA #7).
|
|
402
|
-
|
|
403
|
-
// into structured JSON output (security fix M3).
|
|
404
|
-
...(result.type === "vault" ? [] : ["path"]),
|
|
402
|
+
"path",
|
|
405
403
|
"editable",
|
|
406
404
|
]);
|
|
407
405
|
if (detail !== "full") {
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm history` — paired with the text renderer in text.ts.
|
|
5
|
-
import { shapeHistoryOutput } from "./helpers";
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeHistoryOutput } from "./helpers.js";
|
|
6
|
+
export const historyShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "history",
|
|
9
|
+
handler: (result, detail) => shapeHistoryOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -1,11 +1,6 @@
|
|
|
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
|
-
// Identity-passthrough commands — registered here so the registry stays
|
|
5
|
-
// exhaustive (v1 spec §9). Each result object is already shaped at the
|
|
6
|
-
// command boundary; the registry just confirms there's no surprise
|
|
7
|
-
// command name slipping through.
|
|
8
|
-
import { registerOutputShape } from "./registry";
|
|
9
4
|
// #484: stamp schemaVersion + shape discriminator on passthrough envelopes so
|
|
10
5
|
// third-party consumers can pin a schema version and dispatch on shape uniformly.
|
|
11
6
|
// Idempotent — never overwrites an existing schemaVersion or shape field.
|
|
@@ -34,6 +29,8 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
34
29
|
"env-create",
|
|
35
30
|
"env-export",
|
|
36
31
|
"env-remove",
|
|
32
|
+
"env-set",
|
|
33
|
+
"env-unset",
|
|
37
34
|
"feedback",
|
|
38
35
|
"graph-entities",
|
|
39
36
|
"graph-entity",
|
|
@@ -72,6 +69,7 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
72
69
|
"tasks-doctor",
|
|
73
70
|
"tasks-enable",
|
|
74
71
|
"tasks-history",
|
|
72
|
+
"tasks-init",
|
|
75
73
|
"tasks-list",
|
|
76
74
|
"tasks-remove",
|
|
77
75
|
"tasks-run",
|
|
@@ -79,9 +77,6 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
79
77
|
"tasks-sync",
|
|
80
78
|
"update",
|
|
81
79
|
"upgrade",
|
|
82
|
-
"vault-create",
|
|
83
|
-
"vault-set",
|
|
84
|
-
"vault-unset",
|
|
85
80
|
"wiki-create",
|
|
86
81
|
"wiki-ingest",
|
|
87
82
|
"wiki-lint",
|
|
@@ -92,6 +87,7 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
92
87
|
"wiki-show",
|
|
93
88
|
"wiki-stash",
|
|
94
89
|
"workflow-complete",
|
|
90
|
+
"workflow-complete-rejected",
|
|
95
91
|
"workflow-create",
|
|
96
92
|
"workflow-list",
|
|
97
93
|
"workflow-next",
|
|
@@ -100,6 +96,7 @@ const PASSTHROUGH_COMMANDS = [
|
|
|
100
96
|
"workflow-status",
|
|
101
97
|
"workflow-validate",
|
|
102
98
|
];
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
export const passthroughShapes = PASSTHROUGH_COMMANDS.map((command) => ({
|
|
100
|
+
command,
|
|
101
|
+
handler: makeStampHandler(command),
|
|
102
|
+
}));
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm proposal accept` (#225).
|
|
5
|
-
import { shapeProposalAcceptOutput } from "
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeProposalAcceptOutput } from "../helpers.js";
|
|
6
|
+
export const proposalAcceptShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "proposal-accept",
|
|
9
|
+
handler: (result, detail) => shapeProposalAcceptOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm proposal diff` (#225).
|
|
5
|
-
import { shapeProposalDiffOutput } from "
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeProposalDiffOutput } from "../helpers.js";
|
|
6
|
+
export const proposalDiffShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "proposal-diff",
|
|
9
|
+
handler: (result, detail) => shapeProposalDiffOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm proposal list` (#225).
|
|
5
|
-
import { shapeProposalListOutput } from "
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeProposalListOutput } from "../helpers.js";
|
|
6
|
+
export const proposalListShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "proposal-list",
|
|
9
|
+
handler: (result, detail) => shapeProposalListOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
// Output shape registration for `akm reflect` and `akm propose` (#226).
|
|
5
5
|
// Both share the proposal-producer envelope shape (success carries a proposal
|
|
6
6
|
// entry; failure carries an AgentFailureReason discriminant).
|
|
7
|
-
import { shapeProposalProducerOutput } from "
|
|
8
|
-
import { registerOutputShape } from "./registry";
|
|
7
|
+
import { shapeProposalProducerOutput } from "../helpers.js";
|
|
9
8
|
const handler = (result, detail) => shapeProposalProducerOutput(result, detail);
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const proposalProducerShapes = [
|
|
10
|
+
{ command: "reflect", handler },
|
|
11
|
+
{ command: "propose", handler },
|
|
12
|
+
];
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm proposal reject` (#225).
|
|
5
|
-
import { shapeProposalRejectOutput } from "
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeProposalRejectOutput } from "../helpers.js";
|
|
6
|
+
export const proposalRejectShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "proposal-reject",
|
|
9
|
+
handler: (result, detail) => shapeProposalRejectOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -2,6 +2,10 @@
|
|
|
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
|
// Output shape registration for `akm proposal show` (#225).
|
|
5
|
-
import { shapeProposalShowOutput } from "
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import { shapeProposalShowOutput } from "../helpers.js";
|
|
6
|
+
export const proposalShowShapes = [
|
|
7
|
+
{
|
|
8
|
+
command: "proposal-show",
|
|
9
|
+
handler: (result, detail) => shapeProposalShowOutput(result, detail),
|
|
10
|
+
},
|
|
11
|
+
];
|
|
@@ -1,6 +1,10 @@
|
|
|
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
|
-
import { shapeRegistrySearchOutput } from "./helpers";
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { shapeRegistrySearchOutput } from "./helpers.js";
|
|
5
|
+
export const registrySearchShapes = [
|
|
6
|
+
{
|
|
7
|
+
command: "registry-search",
|
|
8
|
+
handler: (result, detail) => shapeRegistrySearchOutput(result, detail),
|
|
9
|
+
},
|
|
10
|
+
];
|
|
@@ -15,6 +15,18 @@ const OUTPUT_SHAPE_REGISTRY = new Map();
|
|
|
15
15
|
export function registerOutputShape(command, handler) {
|
|
16
16
|
OUTPUT_SHAPE_REGISTRY.set(command, handler);
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a batch of {@link OutputShapeEntry} definitions in iteration order.
|
|
20
|
+
*
|
|
21
|
+
* This is the explicit-assembly entry point used by `shapes.ts`: the built-in
|
|
22
|
+
* shape set is registered by iterating a single explicit list exactly once,
|
|
23
|
+
* with no reliance on module import order.
|
|
24
|
+
*/
|
|
25
|
+
export function registerOutputShapes(entries) {
|
|
26
|
+
for (const { command, handler } of entries) {
|
|
27
|
+
OUTPUT_SHAPE_REGISTRY.set(command, handler);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
18
30
|
/**
|
|
19
31
|
* Remove a previously-registered output shape. Test-only utility.
|
|
20
32
|
*/
|
|
@@ -1,6 +1,10 @@
|
|
|
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
|
-
import { shapeSearchOutput } from "./helpers";
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { shapeSearchOutput } from "./helpers.js";
|
|
5
|
+
export const searchShapes = [
|
|
6
|
+
{
|
|
7
|
+
command: "search",
|
|
8
|
+
handler: (result, detail, shape) => shapeSearchOutput(result, detail, shape),
|
|
9
|
+
},
|
|
10
|
+
];
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
4
|
+
export const secretListShapes = [
|
|
5
|
+
{
|
|
6
|
+
command: "secret-list",
|
|
7
|
+
handler: (result) => {
|
|
8
|
+
const r = result;
|
|
9
|
+
const secrets = Array.isArray(r.secrets) ? r.secrets : [];
|
|
10
|
+
return {
|
|
11
|
+
...r,
|
|
12
|
+
shape: r.shape ?? "secret-list",
|
|
13
|
+
schemaVersion: r.schemaVersion ?? 1,
|
|
14
|
+
secrets: secrets.map((s) => {
|
|
15
|
+
const { path: _path, ...rest } = s;
|
|
16
|
+
return rest;
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
];
|
|
@@ -1,6 +1,10 @@
|
|
|
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
|
-
import { shapeShowOutput } from "./helpers";
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { shapeShowOutput } from "./helpers.js";
|
|
5
|
+
export const showShapes = [
|
|
6
|
+
{
|
|
7
|
+
command: "show",
|
|
8
|
+
handler: (result, detail, shape) => shapeShowOutput(result, detail, shape),
|
|
9
|
+
},
|
|
10
|
+
];
|