@kirrosh/zond 0.26.0 → 0.27.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 +59 -0
- package/README.md +22 -21
- package/bin/zond.mjs +23 -0
- package/package.json +13 -16
- package/scripts/npm/postinstall.mjs +76 -0
- package/src/CLAUDE.md +0 -112
- package/src/bun-types.d.ts +0 -5
- package/src/cli/argv.ts +0 -122
- package/src/cli/commands/add-api.ts +0 -146
- package/src/cli/commands/api/annotate/idempotency.ts +0 -59
- package/src/cli/commands/api/annotate/index.ts +0 -880
- package/src/cli/commands/api/annotate/lifecycle.ts +0 -74
- package/src/cli/commands/api/annotate/overlay.ts +0 -206
- package/src/cli/commands/api/annotate/pagination.ts +0 -64
- package/src/cli/commands/api/annotate/prompts.ts +0 -220
- package/src/cli/commands/api/annotate/readback.ts +0 -58
- package/src/cli/commands/api/annotate/resources.ts +0 -91
- package/src/cli/commands/api/annotate/seed-bodies.ts +0 -61
- package/src/cli/commands/audit.ts +0 -786
- package/src/cli/commands/catalog.ts +0 -97
- package/src/cli/commands/check.ts +0 -361
- package/src/cli/commands/checks.ts +0 -1072
- package/src/cli/commands/ci-init.ts +0 -223
- package/src/cli/commands/clean.ts +0 -212
- package/src/cli/commands/cleanup.ts +0 -236
- package/src/cli/commands/completions.ts +0 -192
- package/src/cli/commands/coverage.ts +0 -872
- package/src/cli/commands/db.ts +0 -611
- package/src/cli/commands/describe.ts +0 -120
- package/src/cli/commands/discover.ts +0 -1356
- package/src/cli/commands/doctor.ts +0 -661
- package/src/cli/commands/fixtures.ts +0 -402
- package/src/cli/commands/generate.ts +0 -577
- package/src/cli/commands/init/agents-md.ts +0 -61
- package/src/cli/commands/init/bootstrap.ts +0 -111
- package/src/cli/commands/init/index.ts +0 -244
- package/src/cli/commands/init/skills.ts +0 -141
- package/src/cli/commands/init/templates/agents.md +0 -86
- package/src/cli/commands/init/templates/markdown.d.ts +0 -4
- package/src/cli/commands/init/templates/skills/warm-up-target.md +0 -122
- package/src/cli/commands/init/templates/skills/zond-checks.md +0 -621
- package/src/cli/commands/init/templates/skills/zond-seed.md +0 -114
- package/src/cli/commands/init/templates/skills/zond-triage.md +0 -272
- package/src/cli/commands/init/templates/skills/zond.md +0 -861
- package/src/cli/commands/init/templates/zond-config.yml +0 -14
- package/src/cli/commands/prepare-fixtures.ts +0 -97
- package/src/cli/commands/probe/_seed-bodies.ts +0 -52
- package/src/cli/commands/probe/mass-assignment.ts +0 -594
- package/src/cli/commands/probe/security.ts +0 -537
- package/src/cli/commands/probe/static.ts +0 -255
- package/src/cli/commands/probe/webhooks.ts +0 -163
- package/src/cli/commands/probe.ts +0 -535
- package/src/cli/commands/reference.ts +0 -87
- package/src/cli/commands/refresh-api.ts +0 -227
- package/src/cli/commands/remove-api.ts +0 -150
- package/src/cli/commands/report-bundle.ts +0 -310
- package/src/cli/commands/report.ts +0 -241
- package/src/cli/commands/request.ts +0 -548
- package/src/cli/commands/run.ts +0 -1142
- package/src/cli/commands/schema-from-runs.ts +0 -128
- package/src/cli/commands/secrets.ts +0 -133
- package/src/cli/commands/session.ts +0 -244
- package/src/cli/commands/use.ts +0 -74
- package/src/cli/index.ts +0 -55
- package/src/cli/json-envelope.ts +0 -108
- package/src/cli/json-schemas.ts +0 -314
- package/src/cli/output.ts +0 -40
- package/src/cli/program.ts +0 -219
- package/src/cli/resolve.ts +0 -105
- package/src/cli/runtime.ts +0 -7
- package/src/cli/safe-live.ts +0 -24
- package/src/cli/status-filter.ts +0 -114
- package/src/cli/util/api-context.ts +0 -85
- package/src/cli/version.ts +0 -8
- package/src/core/audit/persist.ts +0 -183
- package/src/core/checks/budget.ts +0 -59
- package/src/core/checks/checks/_crud-helpers.ts +0 -133
- package/src/core/checks/checks/_negative_mutator.ts +0 -133
- package/src/core/checks/checks/_readback-helpers.ts +0 -133
- package/src/core/checks/checks/content_type_conformance.ts +0 -39
- package/src/core/checks/checks/cross_call_references.ts +0 -147
- package/src/core/checks/checks/cursor_boundary_fuzzing.ts +0 -219
- package/src/core/checks/checks/ensure_resource_availability.ts +0 -62
- package/src/core/checks/checks/idempotency_replay.ts +0 -242
- package/src/core/checks/checks/ignored_auth.ts +0 -254
- package/src/core/checks/checks/index.ts +0 -68
- package/src/core/checks/checks/lifecycle_transitions.ts +0 -416
- package/src/core/checks/checks/missing_required_header.ts +0 -40
- package/src/core/checks/checks/negative_data_rejection.ts +0 -148
- package/src/core/checks/checks/not_a_server_error.ts +0 -35
- package/src/core/checks/checks/open_cors_on_sensitive.ts +0 -160
- package/src/core/checks/checks/pagination_invariants.ts +0 -419
- package/src/core/checks/checks/positive_data_acceptance.ts +0 -33
- package/src/core/checks/checks/rate_limit_headers_absent.ts +0 -77
- package/src/core/checks/checks/response_headers_conformance.ts +0 -74
- package/src/core/checks/checks/response_schema_conformance.ts +0 -30
- package/src/core/checks/checks/status_code_conformance.ts +0 -132
- package/src/core/checks/checks/unsupported_method.ts +0 -63
- package/src/core/checks/checks/use_after_free.ts +0 -78
- package/src/core/checks/index.ts +0 -30
- package/src/core/checks/mode.ts +0 -82
- package/src/core/checks/recommended-action.ts +0 -68
- package/src/core/checks/registry.ts +0 -78
- package/src/core/checks/runner.ts +0 -1461
- package/src/core/checks/sarif.ts +0 -230
- package/src/core/checks/spec-findings.ts +0 -308
- package/src/core/checks/stateful.ts +0 -121
- package/src/core/checks/types.ts +0 -305
- package/src/core/checks/zond-extensions.ts +0 -73
- package/src/core/classifier/recommended-action.ts +0 -251
- package/src/core/context/current.ts +0 -51
- package/src/core/context/session.ts +0 -78
- package/src/core/coverage/loader.ts +0 -216
- package/src/core/coverage/reasons.ts +0 -300
- package/src/core/diagnostics/db-analysis.ts +0 -666
- package/src/core/diagnostics/failure-class.ts +0 -140
- package/src/core/diagnostics/failure-hints.ts +0 -112
- package/src/core/diagnostics/spec-pointer.ts +0 -99
- package/src/core/diagnostics/suggested-fixes.ts +0 -155
- package/src/core/exporter/case-study/index.ts +0 -270
- package/src/core/exporter/curl.ts +0 -40
- package/src/core/exporter/exporter.ts +0 -48
- package/src/core/exporter/html-report/escape.ts +0 -24
- package/src/core/exporter/html-report/index.ts +0 -479
- package/src/core/exporter/html-report/script.ts +0 -100
- package/src/core/exporter/html-report/styles.ts +0 -408
- package/src/core/generator/catalog-builder.ts +0 -179
- package/src/core/generator/chunker.ts +0 -78
- package/src/core/generator/coverage-phase.ts +0 -0
- package/src/core/generator/coverage-scanner.ts +0 -87
- package/src/core/generator/data-factory.ts +0 -759
- package/src/core/generator/describe.ts +0 -302
- package/src/core/generator/endpoint-warnings.ts +0 -52
- package/src/core/generator/fixtures-builder.ts +0 -332
- package/src/core/generator/index.ts +0 -14
- package/src/core/generator/openapi-reader.ts +0 -297
- package/src/core/generator/path-param-disambig.ts +0 -140
- package/src/core/generator/resources-builder.ts +0 -898
- package/src/core/generator/schema-utils.ts +0 -112
- package/src/core/generator/serializer.ts +0 -343
- package/src/core/generator/suite-generator.ts +0 -1301
- package/src/core/generator/types.ts +0 -63
- package/src/core/identity/identity-file.ts +0 -0
- package/src/core/lint/affects.ts +0 -28
- package/src/core/lint/config.ts +0 -96
- package/src/core/lint/format.ts +0 -42
- package/src/core/lint/index.ts +0 -94
- package/src/core/lint/reporter.ts +0 -128
- package/src/core/lint/rules/consistency.ts +0 -158
- package/src/core/lint/rules/heuristics.ts +0 -97
- package/src/core/lint/rules/strictness.ts +0 -109
- package/src/core/lint/types.ts +0 -96
- package/src/core/lint/walker.ts +0 -248
- package/src/core/meta/meta-store.ts +0 -11
- package/src/core/output/README.md +0 -73
- package/src/core/output/index.ts +0 -13
- package/src/core/output/run.ts +0 -91
- package/src/core/output/types.ts +0 -122
- package/src/core/parser/dynamic-values.ts +0 -160
- package/src/core/parser/env-interpolation.ts +0 -104
- package/src/core/parser/filter.ts +0 -97
- package/src/core/parser/schema.ts +0 -359
- package/src/core/parser/types.ts +0 -117
- package/src/core/parser/variables.ts +0 -0
- package/src/core/parser/yaml-parser.ts +0 -181
- package/src/core/probe/bootstrap.ts +0 -34
- package/src/core/probe/dry-run-envelope.ts +0 -61
- package/src/core/probe/mass-assignment/classify.ts +0 -175
- package/src/core/probe/mass-assignment/cleanup.ts +0 -52
- package/src/core/probe/mass-assignment/digest.ts +0 -114
- package/src/core/probe/mass-assignment/orchestrator.ts +0 -459
- package/src/core/probe/mass-assignment/regression.ts +0 -141
- package/src/core/probe/mass-assignment/suspects.ts +0 -92
- package/src/core/probe/mass-assignment/types.ts +0 -135
- package/src/core/probe/mass-assignment-probe-class.ts +0 -198
- package/src/core/probe/mass-assignment-probe.ts +0 -27
- package/src/core/probe/mass-assignment-template.ts +0 -240
- package/src/core/probe/method-probe.ts +0 -164
- package/src/core/probe/method-shared.ts +0 -69
- package/src/core/probe/negative-probe.ts +0 -691
- package/src/core/probe/orphan-tracker.ts +0 -188
- package/src/core/probe/path-discovery.ts +0 -439
- package/src/core/probe/probe-harness.ts +0 -119
- package/src/core/probe/registry.ts +0 -89
- package/src/core/probe/runner.ts +0 -136
- package/src/core/probe/security/baseline.ts +0 -174
- package/src/core/probe/security/classify.ts +0 -341
- package/src/core/probe/security/cleanup.ts +0 -125
- package/src/core/probe/security/detectors.ts +0 -71
- package/src/core/probe/security/digest.ts +0 -104
- package/src/core/probe/security/orchestrator.ts +0 -398
- package/src/core/probe/security/regression.ts +0 -103
- package/src/core/probe/security/types.ts +0 -151
- package/src/core/probe/security-probe-class.ts +0 -207
- package/src/core/probe/security-probe.ts +0 -32
- package/src/core/probe/shared.ts +0 -531
- package/src/core/probe/static-probe-class.ts +0 -125
- package/src/core/probe/types.ts +0 -165
- package/src/core/probe/verdict-aggregator.ts +0 -33
- package/src/core/probe/webhooks-probe.ts +0 -282
- package/src/core/reporter/console.ts +0 -240
- package/src/core/reporter/index.ts +0 -22
- package/src/core/reporter/json.ts +0 -22
- package/src/core/reporter/junit.ts +0 -93
- package/src/core/reporter/ndjson.ts +0 -37
- package/src/core/reporter/types.ts +0 -15
- package/src/core/runner/assertions.ts +0 -383
- package/src/core/runner/async-pool.ts +0 -108
- package/src/core/runner/auth-path.ts +0 -8
- package/src/core/runner/ci-context.ts +0 -72
- package/src/core/runner/executor.ts +0 -652
- package/src/core/runner/expr-eval.ts +0 -41
- package/src/core/runner/form-encode.ts +0 -41
- package/src/core/runner/http-client.ts +0 -224
- package/src/core/runner/learn-drift.ts +0 -293
- package/src/core/runner/preflight-vars.ts +0 -153
- package/src/core/runner/progress-tracker.ts +0 -73
- package/src/core/runner/rate-limiter.ts +0 -185
- package/src/core/runner/run-kind.ts +0 -45
- package/src/core/runner/schema-validator.ts +0 -308
- package/src/core/runner/send-request.ts +0 -232
- package/src/core/runner/transforms.ts +0 -65
- package/src/core/runner/types.ts +0 -94
- package/src/core/secrets/registry.ts +0 -164
- package/src/core/secrets/secrets-file.ts +0 -115
- package/src/core/selectors/operation-filter.ts +0 -144
- package/src/core/setup-api.ts +0 -590
- package/src/core/severity/category.ts +0 -94
- package/src/core/severity/index.ts +0 -58
- package/src/core/spec/infer-schema.ts +0 -102
- package/src/core/spec/layers.ts +0 -154
- package/src/core/spec/merge-specs.ts +0 -156
- package/src/core/spec/schema-from-runs.ts +0 -117
- package/src/core/spec/schema-overlay.ts +0 -130
- package/src/core/util/ajv.ts +0 -13
- package/src/core/util/format-eta.ts +0 -21
- package/src/core/util/headers.ts +0 -9
- package/src/core/util/url.ts +0 -24
- package/src/core/utils.ts +0 -13
- package/src/core/workspace/config.ts +0 -129
- package/src/core/workspace/fixture-gap-report.ts +0 -84
- package/src/core/workspace/fixture-gaps.ts +0 -71
- package/src/core/workspace/manifest.ts +0 -283
- package/src/core/workspace/output-rotation.ts +0 -62
- package/src/core/workspace/root.ts +0 -96
- package/src/core/workspace/triage-path.ts +0 -87
- package/src/db/lint-runs.ts +0 -47
- package/src/db/migrate.ts +0 -128
- package/src/db/migrations/0001_run_kind.sql +0 -25
- package/src/db/migrations/0002_run_kind_request.sql +0 -59
- package/src/db/migrations/sql.d.ts +0 -4
- package/src/db/queries/collections.ts +0 -133
- package/src/db/queries/coverage.ts +0 -9
- package/src/db/queries/dashboard.ts +0 -59
- package/src/db/queries/results.ts +0 -216
- package/src/db/queries/runs.ts +0 -289
- package/src/db/queries/sessions.ts +0 -42
- package/src/db/queries/settings.ts +0 -28
- package/src/db/queries/types.ts +0 -172
- package/src/db/queries.ts +0 -75
- package/src/db/schema.ts +0 -298
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# zond workspace config
|
|
2
|
-
#
|
|
3
|
-
# The presence of this file marks the workspace root for `zond` walk-up
|
|
4
|
-
# resolution (.zond/zond.db, apis/<name>/, .zond/current-api are anchored here).
|
|
5
|
-
|
|
6
|
-
version: 1
|
|
7
|
-
|
|
8
|
-
# Workspace-level defaults. Per-command flags always win; per-API
|
|
9
|
-
# override lives in apis/<name>/.env.yaml as `rateLimit:` / `timeoutMs:`.
|
|
10
|
-
# Resolution: CLI flag > .env.yaml meta > defaults below > built-in fallback.
|
|
11
|
-
#
|
|
12
|
-
# defaults:
|
|
13
|
-
# timeout_ms: 30000 # cleanup / prepare-fixtures / probe / request
|
|
14
|
-
# rate_limit: 5 # `zond run` (number rps, or "auto" for adaptive)
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `zond prepare-fixtures` — single-pass fixture-pack command.
|
|
3
|
-
*
|
|
4
|
-
* Deterministically fills `apis/<name>/.env.yaml` with FK ids that can be
|
|
5
|
-
* resolved from list/read endpoints in a single discover pass, and reports
|
|
6
|
-
* which fixtures are still missing so an agent (or the user) can fill the
|
|
7
|
-
* gaps by hand (`fixtures add` / editing `.env.yaml`).
|
|
8
|
-
*
|
|
9
|
-
* - default → single-pass discover (auto-fill FK ids
|
|
10
|
-
* from list endpoints).
|
|
11
|
-
* - --verify / --refresh → revalidate fixtures via read-by-id.
|
|
12
|
-
*
|
|
13
|
-
* The imperative core (`discoverCommand`) lives in the original module and
|
|
14
|
-
* is still consumed directly by tests. This module only owns the CLI
|
|
15
|
-
* surface.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type { Command } from "commander";
|
|
19
|
-
import { globalJson, resolveSpecArg } from "../resolve.ts";
|
|
20
|
-
import { parsePositiveInt } from "../argv.ts";
|
|
21
|
-
import { getDb } from "../../db/schema.ts";
|
|
22
|
-
import { findCollectionByNameOrId } from "../../db/queries.ts";
|
|
23
|
-
import { printError } from "../output.ts";
|
|
24
|
-
import { discoverCommand } from "./discover.ts";
|
|
25
|
-
import { loadEnvMeta } from "../../core/parser/variables.ts";
|
|
26
|
-
import { resolveTimeoutMs } from "../../core/workspace/config.ts";
|
|
27
|
-
import { getApi, MISSING_API_MESSAGE } from "../util/api-context.ts";
|
|
28
|
-
|
|
29
|
-
export function registerPrepareFixtures(program: Command): void {
|
|
30
|
-
program
|
|
31
|
-
.command("prepare-fixtures")
|
|
32
|
-
.description(
|
|
33
|
-
"Auto-fill apis/<name>/.env.yaml in a single discover pass: resolve FK " +
|
|
34
|
-
"ids from list/read endpoints and report which fixtures are still " +
|
|
35
|
-
"missing (fill those by hand via `fixtures add` / editing .env.yaml).",
|
|
36
|
-
)
|
|
37
|
-
// Not `requiredOption` — the value can also come from the program-level
|
|
38
|
-
// --api flag (parsed by program.ts and mirrored into ZOND_API_GLOBAL),
|
|
39
|
-
// ZOND_API env, or .zond/current-api. Commander would otherwise reject
|
|
40
|
-
// `zond prepare-fixtures --api foo` because it routes `--api` to the
|
|
41
|
-
// global option, leaving the subcommand's opts.api undefined.
|
|
42
|
-
.option("--api <name>", "Registered API to prepare (apis/<name>/.env.yaml). Falls back to ZOND_API / .zond/current-api.")
|
|
43
|
-
.option("--db <path>", "Path to SQLite database file")
|
|
44
|
-
.option("--api-dir <path>", "Override apis/<name>/ root (defaults to the collection's base_dir)")
|
|
45
|
-
.option("--env <path>", "Override .env.yaml path (defaults to <api-dir>/.env.yaml)")
|
|
46
|
-
.option("--apply", "Write discovered values to .env.yaml (with .env.yaml.bak backup). Default: dry-run.")
|
|
47
|
-
.option("--verify", "GET each fixture's read-by-id endpoint and classify live/stale/unknown. Combine with --apply (or use --refresh) to drop stale fixtures and re-resolve them. (TASK-281)")
|
|
48
|
-
.option("--refresh", "Shortcut for --verify --apply. (TASK-281)")
|
|
49
|
-
.option("--timeout <ms>", "Per-request timeout in ms (overrides apis/<name>/.env.yaml `timeoutMs` and zond.config.yml `defaults.timeout_ms`; default 30000)", parsePositiveInt("--timeout"))
|
|
50
|
-
.action(async (opts, cmd: Command) => {
|
|
51
|
-
// ARV-53: --api resolution lives in cli/util/api-context.ts —
|
|
52
|
-
// local opt > ancestor opt > ZOND_API_GLOBAL/ZOND_API/.zond/current-api.
|
|
53
|
-
const apiName = getApi(cmd, opts);
|
|
54
|
-
if (!apiName) {
|
|
55
|
-
printError(MISSING_API_MESSAGE);
|
|
56
|
-
process.exitCode = 2;
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
opts.api = apiName;
|
|
60
|
-
|
|
61
|
-
const refresh = opts.refresh === true;
|
|
62
|
-
const verify = opts.verify === true || refresh;
|
|
63
|
-
|
|
64
|
-
const resolved = resolveSpecArg(undefined, opts.api, opts.db);
|
|
65
|
-
if ("error" in resolved) { printError(resolved.error); process.exitCode = 2; return; }
|
|
66
|
-
|
|
67
|
-
let apiDir = opts.apiDir as string | undefined;
|
|
68
|
-
if (!apiDir) {
|
|
69
|
-
try {
|
|
70
|
-
getDb(opts.db);
|
|
71
|
-
const col = findCollectionByNameOrId(opts.api);
|
|
72
|
-
apiDir = col?.base_dir ?? `apis/${opts.api}`;
|
|
73
|
-
} catch {
|
|
74
|
-
apiDir = `apis/${opts.api}`;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
let envTimeout: number | undefined;
|
|
79
|
-
try {
|
|
80
|
-
envTimeout = (await loadEnvMeta(undefined, apiDir)).timeoutMs;
|
|
81
|
-
} catch { /* meta is best-effort */ }
|
|
82
|
-
const timeoutMs = resolveTimeoutMs(opts.timeout, envTimeout);
|
|
83
|
-
|
|
84
|
-
process.exitCode = await discoverCommand({
|
|
85
|
-
specPath: resolved.spec,
|
|
86
|
-
apiDir,
|
|
87
|
-
envPath: opts.env,
|
|
88
|
-
apply: opts.apply === true || refresh,
|
|
89
|
-
verify,
|
|
90
|
-
timeoutMs,
|
|
91
|
-
json: globalJson(cmd),
|
|
92
|
-
// ARV-205 (R10/F6, R13/F19, R14): single-pass branch also delegates,
|
|
93
|
-
// so surface the user-facing command name in the JSON envelope.
|
|
94
|
-
commandName: "prepare-fixtures",
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ARV-269: shared loader for agent-authored `seed_body` overlays.
|
|
3
|
-
*
|
|
4
|
-
* Stateful checks already consume `.api-resources.local.yaml::seed_body`
|
|
5
|
-
* via `resolveCreateBody` (`core/checks/checks/_crud-helpers.ts`). Before
|
|
6
|
-
* ARV-269 the live probes (mass-assignment, security) did not — every
|
|
7
|
-
* baseline POST fell back to `generateFromSchema`, which strict APIs like
|
|
8
|
-
* Stripe v1 routinely reject as 400 with `INCONCLUSIVE-baseline`. The
|
|
9
|
-
* agent-authored overlay (ARV-187 pipeline) silently lost half its ROI.
|
|
10
|
-
*
|
|
11
|
-
* This helper builds the `Map<"METHOD path", SeedBodyConfig>` the probe
|
|
12
|
-
* runners consume. It's a CLI-layer helper because it crosses into
|
|
13
|
-
* `cli/commands/discover.ts` (the resource-map loader); keeping it under
|
|
14
|
-
* `core/probe` would inject a CLI dependency into the runtime.
|
|
15
|
-
*/
|
|
16
|
-
import { resolveApiCollection } from "../../resolve.ts";
|
|
17
|
-
import { readResourceMap } from "../discover.ts";
|
|
18
|
-
import type { SeedBodyConfig } from "../../../core/generator/resources-builder.ts";
|
|
19
|
-
|
|
20
|
-
/** Parse the "METHOD /path" labels used in `.api-resources.yaml`. */
|
|
21
|
-
function parseLabel(label: string): { method: string; path: string } | null {
|
|
22
|
-
const parts = label.trim().split(/\s+/);
|
|
23
|
-
if (parts.length < 2) return null;
|
|
24
|
-
return { method: parts[0]!.toUpperCase(), path: parts[1]! };
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Returns undefined when no API context is in scope (raw `--spec`
|
|
29
|
-
* invocation) or when no resource declares `seed_body`. Probe runners
|
|
30
|
-
* treat undefined as "no overlay" and keep the legacy generator path.
|
|
31
|
-
*/
|
|
32
|
-
export async function loadSeedBodyOverlays(
|
|
33
|
-
apiName: string | undefined,
|
|
34
|
-
dbPath?: string,
|
|
35
|
-
): Promise<Map<string, SeedBodyConfig> | undefined> {
|
|
36
|
-
if (!apiName) return undefined;
|
|
37
|
-
const col = resolveApiCollection(apiName, dbPath);
|
|
38
|
-
if ("error" in col || !col.baseDir) return undefined;
|
|
39
|
-
const map = await readResourceMap(col.baseDir);
|
|
40
|
-
if (!map) return undefined;
|
|
41
|
-
const out = new Map<string, SeedBodyConfig>();
|
|
42
|
-
for (const r of map.resources) {
|
|
43
|
-
if (!r.seed_body || !r.endpoints?.create) continue;
|
|
44
|
-
const parsed = parseLabel(r.endpoints.create);
|
|
45
|
-
if (!parsed) continue;
|
|
46
|
-
out.set(`${parsed.method} ${parsed.path}`, {
|
|
47
|
-
contentType: r.seed_body.content_type,
|
|
48
|
-
body: r.seed_body.body,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return out.size > 0 ? out : undefined;
|
|
52
|
-
}
|