@jevitate/cli 0.8.0 → 0.10.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/dist/anchor-baselines.d.ts +26 -0
- package/dist/anchor-baselines.js +25 -0
- package/dist/anchor-baselines.js.map +1 -0
- package/dist/approval-provenance.d.ts +48 -2
- package/dist/approval-provenance.js +110 -6
- package/dist/approval-provenance.js.map +1 -1
- package/dist/bin.js +25111 -17835
- package/dist/browser-cli.d.ts +10 -0
- package/dist/browser-cli.js +50 -0
- package/dist/browser-cli.js.map +1 -0
- package/dist/build-info.generated.js +2 -2
- package/dist/catalog-analysis.js +14 -0
- package/dist/catalog-analysis.js.map +1 -1
- package/dist/catalog-api.js +12 -4
- package/dist/catalog-api.js.map +1 -1
- package/dist/catalog-bundle-api.d.ts +73 -0
- package/dist/catalog-bundle-api.js +206 -0
- package/dist/catalog-bundle-api.js.map +1 -0
- package/dist/catalog-bundle-findings.d.ts +54 -0
- package/dist/catalog-bundle-findings.js +252 -0
- package/dist/catalog-bundle-findings.js.map +1 -0
- package/dist/catalog-bundle.d.ts +192 -0
- package/dist/catalog-bundle.js +578 -0
- package/dist/catalog-bundle.js.map +1 -0
- package/dist/catalog-cli.d.ts +6 -0
- package/dist/catalog-cli.js +180 -5
- package/dist/catalog-cli.js.map +1 -1
- package/dist/catalog-refs.d.ts +42 -0
- package/dist/catalog-refs.js +188 -0
- package/dist/catalog-refs.js.map +1 -0
- package/dist/catalog-review.d.ts +3 -1
- package/dist/catalog-review.js +61 -0
- package/dist/catalog-review.js.map +1 -1
- package/dist/catalog.d.ts +27 -3
- package/dist/catalog.js +46 -2
- package/dist/catalog.js.map +1 -1
- package/dist/change-context.d.ts +44 -0
- package/dist/change-context.js +203 -0
- package/dist/change-context.js.map +1 -0
- package/dist/check-api.d.ts +1 -1
- package/dist/check-api.js +206 -16
- package/dist/check-api.js.map +1 -1
- package/dist/check-cli.d.ts +2 -1
- package/dist/check-cli.js +117 -8
- package/dist/check-cli.js.map +1 -1
- package/dist/check-execute.d.ts +28 -1
- package/dist/check-execute.js +110 -27
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.d.ts +14 -0
- package/dist/check-plan.js +24 -1
- package/dist/check-plan.js.map +1 -1
- package/dist/check-types.d.ts +137 -5
- package/dist/check-types.js +8 -0
- package/dist/check-types.js.map +1 -1
- package/dist/cli-output.d.ts +6 -0
- package/dist/cli-output.js +26 -1
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +10 -0
- package/dist/cli-shared.js +0 -4
- package/dist/cli-shared.js.map +1 -1
- package/dist/exit-codes.d.ts +6 -3
- package/dist/exit-codes.js +24 -3
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-adversarial.js +2 -2
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli.js +3 -2
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.js +3 -3
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.js +3 -3
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.js +11 -5
- package/dist/explore-goal.js.map +1 -1
- package/dist/findings-filing.d.ts +6 -0
- package/dist/findings-filing.js +15 -1
- package/dist/findings-filing.js.map +1 -1
- package/dist/forge-verify.d.ts +224 -0
- package/dist/forge-verify.js +649 -0
- package/dist/forge-verify.js.map +1 -0
- package/dist/heal-probe-guard.d.ts +9 -0
- package/dist/heal-probe-guard.js +113 -0
- package/dist/heal-probe-guard.js.map +1 -0
- package/dist/host-health-run.d.ts +32 -1
- package/dist/host-health-run.js +38 -1
- package/dist/host-health-run.js.map +1 -1
- package/dist/init-codeowners.d.ts +19 -0
- package/dist/init-codeowners.js +66 -0
- package/dist/init-codeowners.js.map +1 -1
- package/dist/job-draft-api.d.ts +52 -0
- package/dist/job-draft-api.js +110 -0
- package/dist/job-draft-api.js.map +1 -0
- package/dist/journeeze-api.d.ts +71 -0
- package/dist/journeeze-api.js +285 -0
- package/dist/journeeze-api.js.map +1 -0
- package/dist/journeeze-connect.d.ts +156 -0
- package/dist/journeeze-connect.js +357 -0
- package/dist/journeeze-connect.js.map +1 -0
- package/dist/journey-anchor-gate.d.ts +52 -0
- package/dist/journey-anchor-gate.js +101 -0
- package/dist/journey-anchor-gate.js.map +1 -0
- package/dist/journey-api.d.ts +43 -3
- package/dist/journey-api.js +226 -21
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.js +162 -20
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-heal.d.ts +74 -0
- package/dist/journey-heal.js +180 -0
- package/dist/journey-heal.js.map +1 -0
- package/dist/journey-lint-sarif.d.ts +3 -2
- package/dist/journey-lint-sarif.js +9 -2
- package/dist/journey-lint-sarif.js.map +1 -1
- package/dist/journey-migrate-api.d.ts +54 -0
- package/dist/journey-migrate-api.js +64 -0
- package/dist/journey-migrate-api.js.map +1 -0
- package/dist/journey-network-checks.d.ts +5 -1
- package/dist/journey-network-checks.js +15 -4
- package/dist/journey-network-checks.js.map +1 -1
- package/dist/journey-prefix.js +2 -2
- package/dist/journey-prefix.js.map +1 -1
- package/dist/journey-proposal-store.d.ts +109 -0
- package/dist/journey-proposal-store.js +365 -0
- package/dist/journey-proposal-store.js.map +1 -0
- package/dist/journey-result-record.d.ts +42 -0
- package/dist/journey-result-record.js +33 -0
- package/dist/journey-result-record.js.map +1 -0
- package/dist/journey-review-api.js +16 -1
- package/dist/journey-review-api.js.map +1 -1
- package/dist/journey-review.d.ts +18 -1
- package/dist/journey-review.js +116 -5
- package/dist/journey-review.js.map +1 -1
- package/dist/journey-stale-api.d.ts +40 -0
- package/dist/journey-stale-api.js +57 -0
- package/dist/journey-stale-api.js.map +1 -0
- package/dist/launch-armed.js +5 -1
- package/dist/launch-armed.js.map +1 -1
- package/dist/locator-health-api.d.ts +101 -0
- package/dist/locator-health-api.js +203 -0
- package/dist/locator-health-api.js.map +1 -0
- package/dist/locator-health.d.ts +195 -0
- package/dist/locator-health.js +419 -0
- package/dist/locator-health.js.map +1 -0
- package/dist/login-cli.d.ts +2 -0
- package/dist/login-cli.js +56 -11
- package/dist/login-cli.js.map +1 -1
- package/dist/mcp-api.d.ts +5 -1
- package/dist/mcp-api.js +53 -8
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +3 -1
- package/dist/mcp-cli-tools.js +80 -10
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/multi-run.d.ts +7 -6
- package/dist/multi-run.js +5 -4
- package/dist/multi-run.js.map +1 -1
- package/dist/persona-login.d.ts +60 -3
- package/dist/persona-login.js +341 -31
- package/dist/persona-login.js.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/project-config.d.ts +29 -0
- package/dist/project-config.js +76 -0
- package/dist/project-config.js.map +1 -0
- package/dist/report-api.d.ts +1 -0
- package/dist/report-api.js +1 -0
- package/dist/report-api.js.map +1 -1
- package/dist/resource-preflight.js +5 -3
- package/dist/resource-preflight.js.map +1 -1
- package/dist/run-metadata.d.ts +5 -2
- package/dist/run-metadata.js +10 -3
- package/dist/run-metadata.js.map +1 -1
- package/dist/run-tags-cli.d.ts +2 -0
- package/dist/run-tags-cli.js +8 -2
- package/dist/run-tags-cli.js.map +1 -1
- package/dist/self-heal-adapter.d.ts +43 -27
- package/dist/self-heal-adapter.js +196 -62
- package/dist/self-heal-adapter.js.map +1 -1
- package/dist/source-cli.js +5 -3
- package/dist/source-cli.js.map +1 -1
- package/dist/suite-explore-options.js +1 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/sweep-api.d.ts +23 -0
- package/dist/sweep-api.js +39 -8
- package/dist/sweep-api.js.map +1 -1
- package/dist/sweep-cli.js +3 -1
- package/dist/sweep-cli.js.map +1 -1
- package/dist/ux-usability.js +3 -2
- package/dist/ux-usability.js.map +1 -1
- package/package.json +17 -15
- package/skills/jevitate-ci-check/SKILL.md +25 -1
- package/skills/jevitate-getting-started/SKILL.md +9 -3
- package/skills/jevitate-mission-scope/SKILL.md +2 -2
- package/skills/jevitate-run-journey/SKILL.md +36 -5
- package/skills/jevitate-test-campaign/SKILL.md +13 -0
package/dist/catalog-cli.js
CHANGED
|
@@ -2,7 +2,12 @@ import { writeFile } from "node:fs/promises";
|
|
|
2
2
|
import { ok, fail } from "./envelope.js";
|
|
3
3
|
import { MissingCredentialError } from "@jevitate/ai-core";
|
|
4
4
|
import { GatewaySelectionError, JEV_PROVIDER_FLAG_HELP, emitJson, emitUsageLine, jevProviderArg, resolveJourneysDir } from "./cli-shared.js";
|
|
5
|
-
import { positiveIntArg } from "./cli-args.js";
|
|
5
|
+
import { intArg, positiveIntArg } from "./cli-args.js";
|
|
6
|
+
import { CATALOG_ID_RE } from "@jevitate/journey";
|
|
7
|
+
import { DRAFT_OUTCOMES_DEFAULT, DRAFT_OUTCOMES_MAX, DRAFT_OUTCOMES_MIN, draftJobOutcomes, renderDraftJobOutcomes } from "./job-draft-api.js";
|
|
8
|
+
import { CATALOG_EXPORT_FORMATS, exportCatalogBundle, isPlainProductName, renderCatalogExport } from "./catalog-bundle-api.js";
|
|
9
|
+
import { JOURNEEZE_DEFAULT_URL, connectJourneeze, publishToJourneeze, renderPublishJourneeze } from "./journeeze-api.js";
|
|
10
|
+
import { JourneezeError } from "./journeeze-connect.js";
|
|
6
11
|
import { buildJevSetup, jevCacheDir } from "./jev-advisor.js";
|
|
7
12
|
import { analyzeCatalog, renderCatalogAnalysis, ANALYZE_PAIR_CAP } from "./catalog-analysis.js";
|
|
8
13
|
import { CatalogInputError, UnknownCatalogItemError } from "./catalog.js";
|
|
@@ -10,13 +15,19 @@ import { StaleCatalogReviewError, approveCatalogItem, catalogJourneysDir, loadCa
|
|
|
10
15
|
import { buildCatalogStatus, buildJobReview, buildPersonaReview, renderCatalogStatus, renderJobReview, renderPersonaReview } from "./catalog-review.js";
|
|
11
16
|
import { ApprovalFindingsError } from "./pre-approval.js";
|
|
12
17
|
import { EXIT_CODES } from "./exit-codes.js";
|
|
13
|
-
import { ApprovalArgsError, approvalRefusal,
|
|
18
|
+
import { ApprovalArgsError, approvalRefusal, approvalsReportVerified, checkNonInteractiveReason, describeProvenance, inMcpInvocation, makeApprovalConfirm, parseAllowedChannels, renderApprovals, } from "./approval-provenance.js";
|
|
14
19
|
/**
|
|
15
20
|
* #433 — the catalog commands: `persona review|approve <id>`, `job review|approve <id>` and
|
|
16
21
|
* `catalog status`. Approving is a person's act: these approve commands are CLI only (no MCP tool;
|
|
17
22
|
* MCP gets the read-only `review_persona`, `review_job` and `catalog_status`).
|
|
18
23
|
*/
|
|
19
24
|
const DIR_HELP = "the project data dir holding personas.json and jobs.json (default: the repo's .jevitate/); its journeys/ are the Journeys";
|
|
25
|
+
/**
|
|
26
|
+
* #437/#469: `--allow-channels` help (catalog status; check uses the same text). `pr-review` is a channel a
|
|
27
|
+
* caller can ALLOW, never one it can claim: jevitate records it only after verifying the approving
|
|
28
|
+
* review through the forge API (in CI) — no flag or MCP argument sets it.
|
|
29
|
+
*/
|
|
30
|
+
export const ALLOW_CHANNELS_HELP = "#437: with --require-approvals, the approval channels that pass (comma list of tty, non-interactive, mcp, ci, pr-review; default tty). #469: pr-review is recorded only by jevitate after it verifies an approving review of the merged PR through the forge API — never set by a caller";
|
|
20
31
|
/** #434/#435: `--readiness` / `--real` / `--jev-provider` help. */
|
|
21
32
|
export const READINESS_FLAG_HELP = "#434: add the Readiness section — deterministic checks with INCOSE GtWR rule findings, and (with --real and a judgment key) advisory Jev questions with probabilities";
|
|
22
33
|
export const REAL_JEV_FLAG_HELP = "#434/#435: ask Jev (advisory; never blocks on its own) — readiness questions and catalog pair classifications, cached by content hash. Without a judgment key the Jev layer is skipped, the deterministic layer still runs";
|
|
@@ -24,9 +35,18 @@ export const REAL_JEV_FLAG_HELP = "#434/#435: ask Jev (advisory; never blocks on
|
|
|
24
35
|
export function jevSetupFor(deps, catalogDir, o) {
|
|
25
36
|
return buildJevSetup(deps, { ...(o.real === undefined ? {} : { real: o.real }), ...(o.jevProvider === undefined ? {} : { jevProvider: o.jevProvider }), cacheDir: jevCacheDir(catalogDir) });
|
|
26
37
|
}
|
|
38
|
+
/** A repeatable option's accumulator (`--check a --check b`). */
|
|
39
|
+
function collectRepeatable(value, previous) {
|
|
40
|
+
return [...previous, value];
|
|
41
|
+
}
|
|
27
42
|
function refuse(program, err, fallbackCode) {
|
|
28
43
|
const refusal = approvalRefusal(err);
|
|
29
|
-
if (
|
|
44
|
+
if (err instanceof JourneezeError) {
|
|
45
|
+
// #464: the specific Journeeze refusal (E_JOURNEEZE_*, E_CONNECT_NEEDS_TTY) — its code, and the
|
|
46
|
+
// exit code that class carries (exit-codes.ts). The message is already scrubbed of the key.
|
|
47
|
+
emitJson(program, fail(err.code, err.message));
|
|
48
|
+
}
|
|
49
|
+
else if (refusal !== null) {
|
|
30
50
|
emitJson(program, fail(refusal.code, refusal.message));
|
|
31
51
|
}
|
|
32
52
|
else if (err instanceof GatewaySelectionError || err instanceof MissingCredentialError) {
|
|
@@ -154,6 +174,51 @@ function registerItemCommands(program, deps, kind) {
|
|
|
154
174
|
refuse(program, err, `${code}_APPROVE`);
|
|
155
175
|
}
|
|
156
176
|
});
|
|
177
|
+
if (kind === "job")
|
|
178
|
+
registerJobDraftOutcomes(group, program, deps);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* #465b: `job draft-outcomes <jobId>` — 1–3 desired outcomes drafted by the generation model and
|
|
182
|
+
* written into the jobs file as `provenance: ai_draft` for the team to review. It never approves
|
|
183
|
+
* (MCP `draft_job_outcomes` mirrors it; approving stays `job approve`, CLI only).
|
|
184
|
+
*/
|
|
185
|
+
function registerJobDraftOutcomes(group, program, deps) {
|
|
186
|
+
group
|
|
187
|
+
.command("draft-outcomes <jobId>")
|
|
188
|
+
.description(`#465: draft ${DRAFT_OUTCOMES_MIN}–${DRAFT_OUTCOMES_MAX} desired outcomes for a job with the generation model and write them into its jobs file marked provenance ai_draft, for the team to review. Never approves: an approved job becomes "needs re-review"`)
|
|
189
|
+
.option("--dir <path>", DIR_HELP)
|
|
190
|
+
.option("--count <n>", `how many outcomes to draft (${DRAFT_OUTCOMES_MIN}-${DRAFT_OUTCOMES_MAX}, default ${DRAFT_OUTCOMES_DEFAULT})`, intArg({ min: DRAFT_OUTCOMES_MIN, max: DRAFT_OUTCOMES_MAX }))
|
|
191
|
+
.option("--real", "draft with the live OpenRouter generation gateway (requires keys)", false)
|
|
192
|
+
.option("--fake-ai", "draft with the deterministic fake generator (pipeline smoke only)", false)
|
|
193
|
+
.option("--json", "emit a JSON envelope")
|
|
194
|
+
.action(async function (jobId) {
|
|
195
|
+
const { dir, json, count, real, fakeAi } = this.opts();
|
|
196
|
+
if (!CATALOG_ID_RE.test(jobId)) {
|
|
197
|
+
emitJson(program, fail("E_JOB_DRAFT_ARGS", `<jobId> must be a catalog id (1-64 of [A-Za-z0-9._-], starting alphanumeric), got ${JSON.stringify(jobId)}`));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if ((real === true) === (fakeAi === true)) {
|
|
201
|
+
emitJson(program, fail("E_JOB_DRAFT_ARGS", "drafting needs exactly one generation gateway: --real (live) or --fake-ai (deterministic)"));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
const result = await draftJobOutcomes({
|
|
206
|
+
catalogDir: resolveCatalogDir(deps.catalogDir, dir),
|
|
207
|
+
journeysDir: catalogJourneysDir(dir, resolveJourneysDir(deps)),
|
|
208
|
+
jobId,
|
|
209
|
+
count: count ?? DRAFT_OUTCOMES_DEFAULT,
|
|
210
|
+
ai: { real: real === true, fakeAi: fakeAi === true },
|
|
211
|
+
}, deps);
|
|
212
|
+
if (json)
|
|
213
|
+
emitJson(program, ok(result));
|
|
214
|
+
else
|
|
215
|
+
program.configureOutput().writeOut?.(renderDraftJobOutcomes(result));
|
|
216
|
+
process.exitCode = 0;
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
refuse(program, err, "E_JOB_DRAFT");
|
|
220
|
+
}
|
|
221
|
+
});
|
|
157
222
|
}
|
|
158
223
|
export function registerCatalogCommands(program, deps) {
|
|
159
224
|
registerItemCommands(program, deps, "persona");
|
|
@@ -164,7 +229,7 @@ export function registerCatalogCommands(program, deps) {
|
|
|
164
229
|
.description("the jobs × personas matrix (which have a promoted Journey), approved jobs with no promoted Journey, Journeys linked to nothing, dangling links and stale approvals")
|
|
165
230
|
.option("--dir <path>", DIR_HELP)
|
|
166
231
|
.option("--require-approvals", "#437: exit 1 when a promoted Journey or an approved persona/job has a missing or stale approval, or one made over a channel not allowed (--allow-channels)")
|
|
167
|
-
.option("--allow-channels <list>",
|
|
232
|
+
.option("--allow-channels <list>", ALLOW_CHANNELS_HELP)
|
|
168
233
|
.option("--json", "emit a JSON envelope (the schema-checked report)")
|
|
169
234
|
.action(async function () {
|
|
170
235
|
const { dir, json, requireApprovals, allowChannels } = this.opts();
|
|
@@ -174,7 +239,8 @@ export function registerCatalogCommands(program, deps) {
|
|
|
174
239
|
const allowed = requireApprovals === true ? parseAllowedChannels(allowChannels) : undefined;
|
|
175
240
|
const catalog = await loadCatalog(resolveCatalogDir(deps.catalogDir, dir), catalogJourneysDir(dir, resolveJourneysDir(deps)));
|
|
176
241
|
// #437: every recorded approval and how it was made; with --require-approvals, the violations.
|
|
177
|
-
|
|
242
|
+
// #469: with pr-review allowed, each recorded pr-review approval is re-verified through the forge.
|
|
243
|
+
const approvals = await approvalsReportVerified([catalog], allowed, { ...(deps.approval ?? {}), catalogDir: catalog.dir });
|
|
178
244
|
const report = { ...buildCatalogStatus(catalog), approvals };
|
|
179
245
|
const failed = (approvals.requirement?.violations.length ?? 0) > 0;
|
|
180
246
|
if (json)
|
|
@@ -220,5 +286,114 @@ export function registerCatalogCommands(program, deps) {
|
|
|
220
286
|
refuse(program, err, "E_CATALOG_ANALYZE");
|
|
221
287
|
}
|
|
222
288
|
});
|
|
289
|
+
// #464: the Journeeze catalog bundle — written under --out; never uploads, never approves.
|
|
290
|
+
catalog
|
|
291
|
+
.command("export")
|
|
292
|
+
.description("#464: write the catalog (personas, jobs, Journeys with their approvals, links, checks, findings; no media) as a Journeeze catalog bundle (bundle.json) under --out. Never uploads (publish journeeze) and never approves")
|
|
293
|
+
.requiredOption("--format <format>", `the bundle format (${CATALOG_EXPORT_FORMATS.join(" | ")})`)
|
|
294
|
+
.requiredOption("--out <dir>", "the directory bundle.json is written to (created if missing)")
|
|
295
|
+
.option("--check <file>", "a `jevitate check` record (check.json) to include; repeatable (default: <project>/jevitate-check/check.json when it exists)", collectRepeatable, [])
|
|
296
|
+
.option("--product-name <name>", "the bundle's product.name (default: the project's package.json name, else its folder name)")
|
|
297
|
+
.option("--dir <path>", DIR_HELP)
|
|
298
|
+
.option("--json", "emit a JSON envelope")
|
|
299
|
+
.action(async function () {
|
|
300
|
+
const { dir, json, format, out, check, productName } = this.opts();
|
|
301
|
+
if (!CATALOG_EXPORT_FORMATS.includes(format)) {
|
|
302
|
+
emitJson(program, fail("E_CATALOG_EXPORT_ARGS", `--format must be one of ${CATALOG_EXPORT_FORMATS.join(" | ")} (got ${JSON.stringify(format)})`));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (out.trim() === "" || out.includes("\0")) {
|
|
306
|
+
emitJson(program, fail("E_CATALOG_EXPORT_ARGS", "--out needs a directory path"));
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
if (check.some((f) => f.trim() === "" || f.includes("\0"))) {
|
|
310
|
+
emitJson(program, fail("E_CATALOG_EXPORT_ARGS", "--check needs a check.json path"));
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
if (productName !== undefined && !isPlainProductName(productName)) {
|
|
314
|
+
emitJson(program, fail("E_CATALOG_EXPORT_ARGS", "--product-name must be one plain line of 1-200 characters (no control characters, no e-mail address or other personal data)"));
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
try {
|
|
318
|
+
const result = await exportCatalogBundle({
|
|
319
|
+
format: format,
|
|
320
|
+
catalogDir: resolveCatalogDir(deps.catalogDir, dir),
|
|
321
|
+
journeysDir: catalogJourneysDir(dir, resolveJourneysDir(deps)),
|
|
322
|
+
outDir: out,
|
|
323
|
+
...(check.length === 0 ? {} : { checkFiles: check }),
|
|
324
|
+
...(productName === undefined ? {} : { productName }),
|
|
325
|
+
});
|
|
326
|
+
if (json)
|
|
327
|
+
emitJson(program, ok(result));
|
|
328
|
+
else
|
|
329
|
+
program.configureOutput().writeOut?.(renderCatalogExport(result));
|
|
330
|
+
process.exitCode = 0;
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
refuse(program, err, "E_CATALOG_EXPORT");
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
// #464: `connect journeeze` — CLI ONLY (it handles the upload key: read from stdin without echo,
|
|
337
|
+
// never from a flag or argument); there is no MCP tool for it (mcp-cli-parity.test.ts EXCLUDED).
|
|
338
|
+
const connect = program.command("connect").description("#464: connect this project to a service it publishes to (stores the service's key in jevitate's secret store; a person at a terminal)");
|
|
339
|
+
connect
|
|
340
|
+
.command("journeeze")
|
|
341
|
+
.description(`#464: connect this project to a Journeeze product: reads the product's upload key from stdin without echo (never a flag), checks it (whoami), asks you to confirm the product, and stores key + URL in jevitate's secret store. CLI only — never an MCP tool`)
|
|
342
|
+
.option("--url <url>", `the Journeeze base URL (default ${JOURNEEZE_DEFAULT_URL})`)
|
|
343
|
+
.option("--json", "emit a JSON envelope (never contains the key)")
|
|
344
|
+
.action(async function () {
|
|
345
|
+
const { json, url } = this.opts();
|
|
346
|
+
const baseUrl = url ?? JOURNEEZE_DEFAULT_URL;
|
|
347
|
+
let parsed;
|
|
348
|
+
try {
|
|
349
|
+
parsed = new URL(baseUrl);
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
parsed = undefined;
|
|
353
|
+
}
|
|
354
|
+
if (parsed === undefined || (parsed.protocol !== "https:" && parsed.protocol !== "http:") || parsed.username !== "" || parsed.password !== "" || parsed.search !== "") {
|
|
355
|
+
emitJson(program, fail("E_CONNECT_ARGS", `--url must be an http(s) base URL with no credentials or query (got ${JSON.stringify(baseUrl)})`));
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
if (inMcpInvocation()) {
|
|
359
|
+
// Belt and braces: no MCP tool maps here, but the key is never handled inside an MCP call.
|
|
360
|
+
emitJson(program, fail("E_CONNECT_NEEDS_HUMAN", "connect journeeze is a person's act at their own terminal (it reads the upload key); it never runs over MCP"));
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
try {
|
|
364
|
+
const result = await connectJourneeze({ baseUrl: parsed.origin + parsed.pathname.replace(/\/+$/, ""), projectDir: resolveCatalogDir(deps.catalogDir) }, deps.journeeze);
|
|
365
|
+
if (json)
|
|
366
|
+
emitJson(program, ok(result));
|
|
367
|
+
else
|
|
368
|
+
program.configureOutput().writeOut?.(`connected to Journeeze product '${result.product.name}' (key ${result.keyPrefix}…) at ${result.baseUrl}\n`);
|
|
369
|
+
process.exitCode = 0;
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
refuse(program, err, "E_CONNECT");
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
// #464: `publish journeeze` — export + upload with the key jevitate resolves itself (secret store
|
|
376
|
+
// or JOURNEEZE_UPLOAD_KEY in CI). MCP `publish_to_journeeze` mirrors it and never sees the key.
|
|
377
|
+
const publish = program.command("publish").description("#464: publish this project's catalog to a connected service");
|
|
378
|
+
publish
|
|
379
|
+
.command("journeeze")
|
|
380
|
+
.description("#464: export the catalog bundle and upload it to the connected Journeeze product (key from jevitate's secret store, or JOURNEEZE_UPLOAD_KEY in CI — never an argument), then wait for it to be imported or refused. Never approves")
|
|
381
|
+
.option("--dir <path>", DIR_HELP)
|
|
382
|
+
.option("--dry-run", "export and validate the bundle and resolve the connection, but send nothing")
|
|
383
|
+
.option("--json", "emit a JSON envelope (never contains the key)")
|
|
384
|
+
.action(async function () {
|
|
385
|
+
const { dir, json, dryRun } = this.opts();
|
|
386
|
+
try {
|
|
387
|
+
const result = await publishToJourneeze({ catalogDir: resolveCatalogDir(deps.catalogDir, dir), journeysDir: catalogJourneysDir(dir, resolveJourneysDir(deps)), dryRun: dryRun === true }, deps.journeeze);
|
|
388
|
+
if (json)
|
|
389
|
+
emitJson(program, ok(result));
|
|
390
|
+
else
|
|
391
|
+
program.configureOutput().writeOut?.(renderPublishJourneeze(result));
|
|
392
|
+
process.exitCode = result.status === "refused" ? EXIT_CODES.defects : 0;
|
|
393
|
+
}
|
|
394
|
+
catch (err) {
|
|
395
|
+
refuse(program, err, "E_PUBLISH_JOURNEEZE");
|
|
396
|
+
}
|
|
397
|
+
});
|
|
223
398
|
}
|
|
224
399
|
//# sourceMappingURL=catalog-cli.js.map
|
package/dist/catalog-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-cli.js","sourceRoot":"","sources":["../src/catalog-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog-cli.js","sourceRoot":"","sources":["../src/catalog-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { CatalogRefIssue, Finding } from "@jevitate/journey";
|
|
2
|
+
import { BrokenJobRefsError, type Catalog, type CatalogJourney } from "./catalog.js";
|
|
3
|
+
/**
|
|
4
|
+
* #465 — the catalog's reference checks (jtbd-data-model §7.4, catalog-bundle-v1 §9.5). Within a
|
|
5
|
+
* job: step ids are unique, an outcome's `step` is a step of the job, outcome ids are unique, a
|
|
6
|
+
* metric's `from`/`to`/`at` is `job_start`/`job_end` or an anchor some Journey linked to the job
|
|
7
|
+
* declares, a target's unit fits its metric, and `parent` names a declared job with no cycle. On a
|
|
8
|
+
* Journey: `serves[]` names desired outcomes of its own job, and an anchor's `jobStep` a step of it.
|
|
9
|
+
*
|
|
10
|
+
* Severity (#466 ruling): a problem in the data as loaded is a `warning` — nothing here blocks a
|
|
11
|
+
* load, a run, `catalog status` or a review sheet. An approval enforces (`enforce: true`): the
|
|
12
|
+
* STRUCTURAL problems — the ones a catalog bundle refuses — become `error`s, and `job approve`
|
|
13
|
+
* refuses a job that has one (`assertJobRefs`, E_JOB_BROKEN_REF, exit 64). Gaps (an unmeasurable
|
|
14
|
+
* metric, a target unit that does not fit) stay warnings: the spec calls them gaps, not errors.
|
|
15
|
+
* A Journey linking an undeclared job is the dangling-link report's, not checked here.
|
|
16
|
+
*/
|
|
17
|
+
export { BrokenJobRefsError };
|
|
18
|
+
/** The anchors every job has: the start and the end of the job itself. */
|
|
19
|
+
export declare const RESERVED_ANCHORS: readonly ["job_start", "job_end"];
|
|
20
|
+
export type CatalogRefCode = "job.duplicate-step" | "job.unknown-outcome-step" | "job.duplicate-outcome" | "job.unknown-parent" | "job.parent-cycle" | "job.unmeasurable-metric" | "job.target-unit-mismatch" | "journey.unknown-serves" | "journey.serves-without-job" | "journey.unknown-job-step" | "journey.job-step-without-job";
|
|
21
|
+
/** The problems a catalog bundle refuses (catalog-bundle-v1 §9.5); the others are gaps. */
|
|
22
|
+
export declare const STRUCTURAL_REF_CODES: ReadonlySet<CatalogRefCode>;
|
|
23
|
+
export interface RefCheckOptions {
|
|
24
|
+
/** An approval: structural problems are `error`s. Default: every problem is a `warning`. */
|
|
25
|
+
readonly enforce?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** The anchor names the Journeys linked to a job declare. */
|
|
28
|
+
export declare function jobAnchorNames(catalog: Catalog, jobId: string): Set<string>;
|
|
29
|
+
/** #465: the reference problems of one job (its own fields; a Journey's are `journeyRefIssues`). */
|
|
30
|
+
export declare function jobRefIssues(catalog: Catalog, jobId: string, opts?: RefCheckOptions): CatalogRefIssue[];
|
|
31
|
+
/** #465: the reference problems of one Journey (`serves`, anchors' `jobStep`). */
|
|
32
|
+
export declare function journeyRefIssues(catalog: Catalog, j: CatalogJourney, opts?: RefCheckOptions): CatalogRefIssue[];
|
|
33
|
+
/** #465: every reference problem in the catalog — the jobs' (in file order), then the Journeys'. */
|
|
34
|
+
export declare function catalogRefIssues(catalog: Catalog, opts?: RefCheckOptions): CatalogRefIssue[];
|
|
35
|
+
/** #465: the problems a job review sheet shows — the job's own, then those of the Journeys linked to it. */
|
|
36
|
+
export declare function jobSheetRefIssues(catalog: Catalog, jobId: string): CatalogRefIssue[];
|
|
37
|
+
/** One issue as one line: `job invite · steps[2].id: step id 'send' is declared twice — fix: …`. */
|
|
38
|
+
export declare function describeRefIssue(i: CatalogRefIssue): string;
|
|
39
|
+
/** #465: refuses approving a job whose own references are structurally broken (gaps pass). */
|
|
40
|
+
export declare function assertJobRefs(catalog: Catalog, jobId: string): void;
|
|
41
|
+
/** #465: reference problems as catalog-analysis findings (warnings; never an acknowledgment). */
|
|
42
|
+
export declare function refIssueFindings(issues: readonly CatalogRefIssue[], analyzer?: string): Finding[];
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { BrokenJobRefsError, findJob, journeysForJob } from "./catalog.js";
|
|
2
|
+
/**
|
|
3
|
+
* #465 — the catalog's reference checks (jtbd-data-model §7.4, catalog-bundle-v1 §9.5). Within a
|
|
4
|
+
* job: step ids are unique, an outcome's `step` is a step of the job, outcome ids are unique, a
|
|
5
|
+
* metric's `from`/`to`/`at` is `job_start`/`job_end` or an anchor some Journey linked to the job
|
|
6
|
+
* declares, a target's unit fits its metric, and `parent` names a declared job with no cycle. On a
|
|
7
|
+
* Journey: `serves[]` names desired outcomes of its own job, and an anchor's `jobStep` a step of it.
|
|
8
|
+
*
|
|
9
|
+
* Severity (#466 ruling): a problem in the data as loaded is a `warning` — nothing here blocks a
|
|
10
|
+
* load, a run, `catalog status` or a review sheet. An approval enforces (`enforce: true`): the
|
|
11
|
+
* STRUCTURAL problems — the ones a catalog bundle refuses — become `error`s, and `job approve`
|
|
12
|
+
* refuses a job that has one (`assertJobRefs`, E_JOB_BROKEN_REF, exit 64). Gaps (an unmeasurable
|
|
13
|
+
* metric, a target unit that does not fit) stay warnings: the spec calls them gaps, not errors.
|
|
14
|
+
* A Journey linking an undeclared job is the dangling-link report's, not checked here.
|
|
15
|
+
*/
|
|
16
|
+
export { BrokenJobRefsError };
|
|
17
|
+
/** The anchors every job has: the start and the end of the job itself. */
|
|
18
|
+
export const RESERVED_ANCHORS = ["job_start", "job_end"];
|
|
19
|
+
/** The problems a catalog bundle refuses (catalog-bundle-v1 §9.5); the others are gaps. */
|
|
20
|
+
export const STRUCTURAL_REF_CODES = new Set([
|
|
21
|
+
"job.duplicate-step",
|
|
22
|
+
"job.unknown-outcome-step",
|
|
23
|
+
"job.duplicate-outcome",
|
|
24
|
+
"job.unknown-parent",
|
|
25
|
+
"job.parent-cycle",
|
|
26
|
+
"journey.unknown-serves",
|
|
27
|
+
"journey.serves-without-job",
|
|
28
|
+
"journey.unknown-job-step",
|
|
29
|
+
"journey.job-step-without-job",
|
|
30
|
+
]);
|
|
31
|
+
function issue(owner, path, code, message, fix, opts) {
|
|
32
|
+
const structural = STRUCTURAL_REF_CODES.has(code);
|
|
33
|
+
return { ...owner, path, code, structural, severity: structural && opts.enforce === true ? "error" : "warning", message, fix };
|
|
34
|
+
}
|
|
35
|
+
const list = (ids) => (ids.length === 0 ? "none" : ids.join(", "));
|
|
36
|
+
/** The units a target can have for a metric (a duration's percentile is seconds; a share is a percent). */
|
|
37
|
+
function unitsFor(m) {
|
|
38
|
+
if (m.kind === "duration")
|
|
39
|
+
return m.stat === "share_under" ? ["percent"] : ["s"];
|
|
40
|
+
if (m.kind === "error")
|
|
41
|
+
return ["count", "percent"];
|
|
42
|
+
return ["percent"];
|
|
43
|
+
}
|
|
44
|
+
function metricAnchors(m) {
|
|
45
|
+
if (m.kind === "duration" || m.kind === "completion")
|
|
46
|
+
return [["from", m.from], ["to", m.to]];
|
|
47
|
+
if (m.kind === "answer")
|
|
48
|
+
return [];
|
|
49
|
+
return [["at", m.at]];
|
|
50
|
+
}
|
|
51
|
+
/** The anchor names the Journeys linked to a job declare. */
|
|
52
|
+
export function jobAnchorNames(catalog, jobId) {
|
|
53
|
+
return new Set(journeysForJob(catalog, jobId).flatMap((j) => (j.journey.metadata.anchors ?? []).map((a) => a.name)));
|
|
54
|
+
}
|
|
55
|
+
function parentCycle(catalog, start) {
|
|
56
|
+
const seen = new Set([start.id]);
|
|
57
|
+
let next = start.job.parent;
|
|
58
|
+
while (next !== undefined) {
|
|
59
|
+
if (next === start.id)
|
|
60
|
+
return true;
|
|
61
|
+
if (seen.has(next))
|
|
62
|
+
return false; // a cycle further up, not through this job
|
|
63
|
+
seen.add(next);
|
|
64
|
+
next = findJob(catalog, next)?.job.parent;
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/** #465: the reference problems of one job (its own fields; a Journey's are `journeyRefIssues`). */
|
|
69
|
+
export function jobRefIssues(catalog, jobId, opts = {}) {
|
|
70
|
+
const cj = findJob(catalog, jobId);
|
|
71
|
+
if (cj === undefined)
|
|
72
|
+
return [];
|
|
73
|
+
const { job } = cj;
|
|
74
|
+
const owner = { jobId };
|
|
75
|
+
const out = [];
|
|
76
|
+
const steps = job.steps ?? [];
|
|
77
|
+
const stepIds = steps.map((s) => s.id);
|
|
78
|
+
steps.forEach((s, i) => {
|
|
79
|
+
if (stepIds.indexOf(s.id) !== i)
|
|
80
|
+
out.push(issue(owner, `steps[${i}].id`, "job.duplicate-step", `step id '${s.id}' is declared twice`, "give each step its own id", opts));
|
|
81
|
+
});
|
|
82
|
+
const outcomes = job.desiredOutcomes ?? [];
|
|
83
|
+
const outcomeIds = outcomes.map((o) => o.id);
|
|
84
|
+
const anchors = jobAnchorNames(catalog, jobId);
|
|
85
|
+
outcomes.forEach((o, i) => {
|
|
86
|
+
const at = `desiredOutcomes[${i}]`;
|
|
87
|
+
if (outcomeIds.indexOf(o.id) !== i)
|
|
88
|
+
out.push(issue(owner, `${at}.id`, "job.duplicate-outcome", `desired outcome id '${o.id}' is declared twice`, "give each desired outcome its own id", opts));
|
|
89
|
+
if (o.step !== undefined && !stepIds.includes(o.step)) {
|
|
90
|
+
out.push(issue(owner, `${at}.step`, "job.unknown-outcome-step", `desired outcome '${o.id}' names step '${o.step}', which is not a step of job '${jobId}' (steps: ${list(stepIds)})`, "name one of the job's step ids, or leave `step` out (the whole job)", opts));
|
|
91
|
+
}
|
|
92
|
+
if (o.metric === undefined)
|
|
93
|
+
return;
|
|
94
|
+
for (const [field, name] of metricAnchors(o.metric)) {
|
|
95
|
+
if (RESERVED_ANCHORS.includes(name) || anchors.has(name))
|
|
96
|
+
continue;
|
|
97
|
+
out.push(issue(owner, `${at}.metric.${field}`, "job.unmeasurable-metric", `desired outcome '${o.id}': metric ${field} '${name}' is an anchor no Journey of job '${jobId}' declares — unmeasurable until one does`, `add an anchor named '${name}' to a Journey linked to '${jobId}', or use job_start / job_end`, opts));
|
|
98
|
+
}
|
|
99
|
+
if (o.target !== undefined) {
|
|
100
|
+
const units = unitsFor(o.metric);
|
|
101
|
+
if (!units.includes(o.target.unit)) {
|
|
102
|
+
out.push(issue(owner, `${at}.target.unit`, "job.target-unit-mismatch", `desired outcome '${o.id}': a ${o.metric.kind} metric is measured in ${units.join(" or ")}, not ${o.target.unit}`, `set target.unit to ${units.join(" or ")}`, opts));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
if (job.parent !== undefined) {
|
|
107
|
+
if (findJob(catalog, job.parent) === undefined) {
|
|
108
|
+
out.push(issue(owner, "parent", "job.unknown-parent", `parent '${job.parent}' is not a declared job`, "name a job in jobs.json, or leave `parent` out", opts));
|
|
109
|
+
}
|
|
110
|
+
else if (parentCycle(catalog, cj)) {
|
|
111
|
+
out.push(issue(owner, "parent", "job.parent-cycle", `parent '${job.parent}' leads back to job '${jobId}' (a parent cycle)`, "break the cycle: a job cannot be its own ancestor", opts));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
/** #465: the reference problems of one Journey (`serves`, anchors' `jobStep`). */
|
|
117
|
+
export function journeyRefIssues(catalog, j, opts = {}) {
|
|
118
|
+
const m = j.journey.metadata;
|
|
119
|
+
const owner = { journeyId: j.id };
|
|
120
|
+
const out = [];
|
|
121
|
+
const anchors = m.anchors ?? [];
|
|
122
|
+
if (j.job === undefined) {
|
|
123
|
+
if (m.serves !== undefined && m.serves.length > 0) {
|
|
124
|
+
out.push(issue(owner, "metadata.serves", "journey.serves-without-job", `serves ${list(m.serves)}, but the Journey links no job (metadata.job)`, "link the job whose outcomes it serves, or remove `serves`", opts));
|
|
125
|
+
}
|
|
126
|
+
anchors.forEach((a, i) => {
|
|
127
|
+
if (a.jobStep !== undefined) {
|
|
128
|
+
out.push(issue(owner, `metadata.anchors[${i}].jobStep`, "journey.job-step-without-job", `anchor '${a.name}' names job step '${a.jobStep}', but the Journey links no job`, "link the job (metadata.job), or remove the anchor's jobStep", opts));
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
const job = findJob(catalog, j.job);
|
|
134
|
+
if (job === undefined)
|
|
135
|
+
return out; // a dangling job link: `catalog status` reports it
|
|
136
|
+
const outcomeIds = (job.job.desiredOutcomes ?? []).map((o) => o.id);
|
|
137
|
+
const stepIds = (job.job.steps ?? []).map((s) => s.id);
|
|
138
|
+
(m.serves ?? []).forEach((id, i) => {
|
|
139
|
+
if (!outcomeIds.includes(id)) {
|
|
140
|
+
out.push(issue(owner, `metadata.serves[${i}]`, "journey.unknown-serves", `serves '${id}', which is not a desired outcome of job '${job.id}' (outcomes: ${list(outcomeIds)})`, "name one of the job's desired outcome ids", opts));
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
anchors.forEach((a, i) => {
|
|
144
|
+
if (a.jobStep !== undefined && !stepIds.includes(a.jobStep)) {
|
|
145
|
+
out.push(issue(owner, `metadata.anchors[${i}].jobStep`, "journey.unknown-job-step", `anchor '${a.name}' names job step '${a.jobStep}', which is not a step of job '${job.id}' (steps: ${list(stepIds)})`, "name one of the job's step ids", opts));
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
/** #465: every reference problem in the catalog — the jobs' (in file order), then the Journeys'. */
|
|
151
|
+
export function catalogRefIssues(catalog, opts = {}) {
|
|
152
|
+
return [...catalog.jobs.flatMap((j) => jobRefIssues(catalog, j.id, opts)), ...catalog.journeys.flatMap((j) => journeyRefIssues(catalog, j, opts))];
|
|
153
|
+
}
|
|
154
|
+
/** #465: the problems a job review sheet shows — the job's own, then those of the Journeys linked to it. */
|
|
155
|
+
export function jobSheetRefIssues(catalog, jobId) {
|
|
156
|
+
return [...jobRefIssues(catalog, jobId), ...journeysForJob(catalog, jobId).flatMap((j) => journeyRefIssues(catalog, j))];
|
|
157
|
+
}
|
|
158
|
+
/** One issue as one line: `job invite · steps[2].id: step id 'send' is declared twice — fix: …`. */
|
|
159
|
+
export function describeRefIssue(i) {
|
|
160
|
+
const who = i.jobId !== undefined ? `job ${i.jobId}` : `journey ${i.journeyId ?? "?"}`;
|
|
161
|
+
return `${who} · ${i.path}: ${i.message}${i.fix === undefined ? "" : ` — fix: ${i.fix}`}`;
|
|
162
|
+
}
|
|
163
|
+
/** #465: refuses approving a job whose own references are structurally broken (gaps pass). */
|
|
164
|
+
export function assertJobRefs(catalog, jobId) {
|
|
165
|
+
const errors = jobRefIssues(catalog, jobId, { enforce: true }).filter((i) => i.severity === "error");
|
|
166
|
+
if (errors.length === 0)
|
|
167
|
+
return;
|
|
168
|
+
throw new BrokenJobRefsError(`job '${jobId}' has ${errors.length} broken reference(s), so it cannot be approved: ${errors.map(describeRefIssue).join("; ")} — fix the jobs file, then review it again (jevitate job review ${jobId})`, errors);
|
|
169
|
+
}
|
|
170
|
+
function characteristicOf(i) {
|
|
171
|
+
if (i.code === "job.unmeasurable-metric")
|
|
172
|
+
return "able to be validated";
|
|
173
|
+
return "consistent";
|
|
174
|
+
}
|
|
175
|
+
/** #465: reference problems as catalog-analysis findings (warnings; never an acknowledgment). */
|
|
176
|
+
export function refIssueFindings(issues, analyzer = "catalog-analysis") {
|
|
177
|
+
return issues.map((i) => ({
|
|
178
|
+
analyzer,
|
|
179
|
+
code: `ref.${i.code}:${i.jobId ?? i.journeyId ?? ""}:${i.path}`,
|
|
180
|
+
severity: "warn",
|
|
181
|
+
message: `${i.jobId !== undefined ? `job '${i.jobId}'` : `journey '${i.journeyId ?? ""}'`} ${i.path}: ${i.message}`,
|
|
182
|
+
...(i.fix === undefined ? {} : { fix: i.fix }),
|
|
183
|
+
requiresAcknowledgment: false,
|
|
184
|
+
items: [i.jobId !== undefined ? `job:${i.jobId}` : `journey:${i.journeyId ?? ""}`],
|
|
185
|
+
characteristic: characteristicOf(i),
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=catalog-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-refs.js","sourceRoot":"","sources":["../src/catalog-refs.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog-review.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CatalogStatusReport, type Finding, type JobReview, type PersonaReview } from "@jevitate/journey";
|
|
1
|
+
import { type CatalogStatusReport, type DesiredOutcome, type Finding, type JobReview, type PersonaReview } from "@jevitate/journey";
|
|
2
2
|
import { type Catalog } from "./catalog.js";
|
|
3
3
|
import { type ApprovalAction } from "./pre-approval.js";
|
|
4
4
|
import { type JevSetup } from "./jev-advisor.js";
|
|
@@ -25,5 +25,7 @@ export declare function renderAnalysisGroups(findings: readonly Finding[], style
|
|
|
25
25
|
export declare function renderFindings(findings: readonly Finding[], style: Style): string[];
|
|
26
26
|
export declare function renderPersonaReview(r: PersonaReview, style: Style): string;
|
|
27
27
|
export declare function renderJobReview(r: JobReview, style: Style): string;
|
|
28
|
+
/** #465: a metric in words: `duration p50 from a to b`, `abandon at x`, `answer got_it_done = yes`. */
|
|
29
|
+
export declare function describeMetric(m: NonNullable<DesiredOutcome["metric"]>): string;
|
|
28
30
|
export declare function renderCatalogStatus(r: CatalogStatusReport): string;
|
|
29
31
|
export {};
|