@jevitate/cli 0.9.0 → 0.11.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.
Files changed (190) hide show
  1. package/dist/anchor-baselines.d.ts +26 -0
  2. package/dist/anchor-baselines.js +25 -0
  3. package/dist/anchor-baselines.js.map +1 -0
  4. package/dist/approval-provenance.d.ts +32 -2
  5. package/dist/approval-provenance.js +92 -5
  6. package/dist/approval-provenance.js.map +1 -1
  7. package/dist/approved-demo.d.ts +86 -0
  8. package/dist/approved-demo.js +184 -0
  9. package/dist/approved-demo.js.map +1 -0
  10. package/dist/bin.js +13352 -7050
  11. package/dist/build-info.generated.js +2 -2
  12. package/dist/campaign-api.d.ts +15 -0
  13. package/dist/campaign-api.js +67 -6
  14. package/dist/campaign-api.js.map +1 -1
  15. package/dist/campaign-cli.js +7 -2
  16. package/dist/campaign-cli.js.map +1 -1
  17. package/dist/campaign-preflight.d.ts +76 -0
  18. package/dist/campaign-preflight.js +117 -0
  19. package/dist/campaign-preflight.js.map +1 -0
  20. package/dist/catalog-analysis.js +14 -0
  21. package/dist/catalog-analysis.js.map +1 -1
  22. package/dist/catalog-api.js +12 -4
  23. package/dist/catalog-api.js.map +1 -1
  24. package/dist/catalog-bundle-api.d.ts +83 -0
  25. package/dist/catalog-bundle-api.js +309 -0
  26. package/dist/catalog-bundle-api.js.map +1 -0
  27. package/dist/catalog-bundle-findings.d.ts +64 -0
  28. package/dist/catalog-bundle-findings.js +326 -0
  29. package/dist/catalog-bundle-findings.js.map +1 -0
  30. package/dist/catalog-bundle.d.ts +296 -0
  31. package/dist/catalog-bundle.js +777 -0
  32. package/dist/catalog-bundle.js.map +1 -0
  33. package/dist/catalog-cli.d.ts +6 -0
  34. package/dist/catalog-cli.js +181 -5
  35. package/dist/catalog-cli.js.map +1 -1
  36. package/dist/catalog-refs.d.ts +42 -0
  37. package/dist/catalog-refs.js +188 -0
  38. package/dist/catalog-refs.js.map +1 -0
  39. package/dist/catalog-review.d.ts +3 -1
  40. package/dist/catalog-review.js +61 -0
  41. package/dist/catalog-review.js.map +1 -1
  42. package/dist/catalog.d.ts +27 -3
  43. package/dist/catalog.js +46 -2
  44. package/dist/catalog.js.map +1 -1
  45. package/dist/check-api.js +180 -9
  46. package/dist/check-api.js.map +1 -1
  47. package/dist/check-cli.d.ts +2 -0
  48. package/dist/check-cli.js +96 -2
  49. package/dist/check-cli.js.map +1 -1
  50. package/dist/check-execute.d.ts +18 -0
  51. package/dist/check-execute.js +56 -3
  52. package/dist/check-execute.js.map +1 -1
  53. package/dist/check-types.d.ts +105 -0
  54. package/dist/check-types.js.map +1 -1
  55. package/dist/cli-output.d.ts +6 -0
  56. package/dist/cli-output.js +38 -1
  57. package/dist/cli-output.js.map +1 -1
  58. package/dist/cli-shared.d.ts +10 -0
  59. package/dist/cli-shared.js +0 -4
  60. package/dist/cli-shared.js.map +1 -1
  61. package/dist/cold-start-report.d.ts +32 -0
  62. package/dist/cold-start-report.js +31 -0
  63. package/dist/cold-start-report.js.map +1 -0
  64. package/dist/defect-evidence.js +10 -5
  65. package/dist/defect-evidence.js.map +1 -1
  66. package/dist/demo-aspect-api.d.ts +11 -0
  67. package/dist/demo-aspect-api.js +27 -2
  68. package/dist/demo-aspect-api.js.map +1 -1
  69. package/dist/demo-aspect-cli.js +5 -0
  70. package/dist/demo-aspect-cli.js.map +1 -1
  71. package/dist/demo-capture.d.ts +79 -2
  72. package/dist/demo-capture.js +504 -12
  73. package/dist/demo-capture.js.map +1 -1
  74. package/dist/environments.d.ts +8 -1
  75. package/dist/environments.js +14 -3
  76. package/dist/environments.js.map +1 -1
  77. package/dist/exit-codes.js +16 -0
  78. package/dist/exit-codes.js.map +1 -1
  79. package/dist/explore-adversarial.js +2 -2
  80. package/dist/explore-adversarial.js.map +1 -1
  81. package/dist/explore-shared.d.ts +11 -0
  82. package/dist/explore-shared.js +9 -0
  83. package/dist/explore-shared.js.map +1 -1
  84. package/dist/findings-filing.js +7 -3
  85. package/dist/findings-filing.js.map +1 -1
  86. package/dist/forge-verify.d.ts +224 -0
  87. package/dist/forge-verify.js +649 -0
  88. package/dist/forge-verify.js.map +1 -0
  89. package/dist/github-issue-filer.js +15 -9
  90. package/dist/github-issue-filer.js.map +1 -1
  91. package/dist/init-codeowners.d.ts +19 -0
  92. package/dist/init-codeowners.js +66 -0
  93. package/dist/init-codeowners.js.map +1 -1
  94. package/dist/job-draft-api.d.ts +52 -0
  95. package/dist/job-draft-api.js +110 -0
  96. package/dist/job-draft-api.js.map +1 -0
  97. package/dist/journeeze-api.d.ts +77 -0
  98. package/dist/journeeze-api.js +371 -0
  99. package/dist/journeeze-api.js.map +1 -0
  100. package/dist/journeeze-connect.d.ts +156 -0
  101. package/dist/journeeze-connect.js +357 -0
  102. package/dist/journeeze-connect.js.map +1 -0
  103. package/dist/journey-anchor-api.d.ts +37 -0
  104. package/dist/journey-anchor-api.js +58 -0
  105. package/dist/journey-anchor-api.js.map +1 -0
  106. package/dist/journey-anchor-cli.d.ts +17 -0
  107. package/dist/journey-anchor-cli.js +104 -0
  108. package/dist/journey-anchor-cli.js.map +1 -0
  109. package/dist/journey-anchor-gate.d.ts +52 -0
  110. package/dist/journey-anchor-gate.js +101 -0
  111. package/dist/journey-anchor-gate.js.map +1 -0
  112. package/dist/journey-api.d.ts +30 -1
  113. package/dist/journey-api.js +118 -16
  114. package/dist/journey-api.js.map +1 -1
  115. package/dist/journey-cli.js +93 -10
  116. package/dist/journey-cli.js.map +1 -1
  117. package/dist/journey-demo-api.d.ts +29 -0
  118. package/dist/journey-demo-api.js +29 -7
  119. package/dist/journey-demo-api.js.map +1 -1
  120. package/dist/journey-heal.js +1 -1
  121. package/dist/journey-heal.js.map +1 -1
  122. package/dist/journey-lint-sarif.d.ts +3 -2
  123. package/dist/journey-lint-sarif.js +11 -2
  124. package/dist/journey-lint-sarif.js.map +1 -1
  125. package/dist/journey-migrate-api.d.ts +54 -0
  126. package/dist/journey-migrate-api.js +64 -0
  127. package/dist/journey-migrate-api.js.map +1 -0
  128. package/dist/journey-network-checks.d.ts +11 -0
  129. package/dist/journey-network-checks.js +36 -13
  130. package/dist/journey-network-checks.js.map +1 -1
  131. package/dist/journey-proposal-store.d.ts +9 -0
  132. package/dist/journey-proposal-store.js +23 -0
  133. package/dist/journey-proposal-store.js.map +1 -1
  134. package/dist/journey-result-record.d.ts +2 -0
  135. package/dist/journey-result-record.js +5 -0
  136. package/dist/journey-result-record.js.map +1 -1
  137. package/dist/journey-review-api.js +9 -1
  138. package/dist/journey-review-api.js.map +1 -1
  139. package/dist/journey-review.d.ts +11 -1
  140. package/dist/journey-review.js +77 -5
  141. package/dist/journey-review.js.map +1 -1
  142. package/dist/journey-stale-api.d.ts +40 -0
  143. package/dist/journey-stale-api.js +57 -0
  144. package/dist/journey-stale-api.js.map +1 -0
  145. package/dist/load-api.js +4 -2
  146. package/dist/load-api.js.map +1 -1
  147. package/dist/locator-health-api.d.ts +101 -0
  148. package/dist/locator-health-api.js +203 -0
  149. package/dist/locator-health-api.js.map +1 -0
  150. package/dist/locator-health.d.ts +195 -0
  151. package/dist/locator-health.js +419 -0
  152. package/dist/locator-health.js.map +1 -0
  153. package/dist/mcp-api.d.ts +3 -1
  154. package/dist/mcp-api.js +21 -2
  155. package/dist/mcp-api.js.map +1 -1
  156. package/dist/mcp-cli-tools.d.ts +4 -1
  157. package/dist/mcp-cli-tools.js +82 -10
  158. package/dist/mcp-cli-tools.js.map +1 -1
  159. package/dist/openrouter-call.d.ts +23 -10
  160. package/dist/openrouter-call.js +14 -11
  161. package/dist/openrouter-call.js.map +1 -1
  162. package/dist/png-pixels.d.ts +12 -0
  163. package/dist/png-pixels.js +96 -0
  164. package/dist/png-pixels.js.map +1 -0
  165. package/dist/project-config.d.ts +29 -0
  166. package/dist/project-config.js +76 -0
  167. package/dist/project-config.js.map +1 -0
  168. package/dist/regression-api.js +2 -1
  169. package/dist/regression-api.js.map +1 -1
  170. package/dist/server-log-verify.js +2 -1
  171. package/dist/server-log-verify.js.map +1 -1
  172. package/dist/signal-triage.js +7 -3
  173. package/dist/signal-triage.js.map +1 -1
  174. package/dist/source-run-api.js +2 -2
  175. package/dist/source-run-api.js.map +1 -1
  176. package/dist/verify-fix-api.d.ts +29 -0
  177. package/dist/verify-fix-api.js +43 -2
  178. package/dist/verify-fix-api.js.map +1 -1
  179. package/dist/verify-fix-cli.js +4 -0
  180. package/dist/verify-fix-cli.js.map +1 -1
  181. package/dist/zip-store.d.ts +15 -0
  182. package/dist/zip-store.js +93 -0
  183. package/dist/zip-store.js.map +1 -0
  184. package/package.json +12 -10
  185. package/skills/jevitate-ci-check/SKILL.md +16 -0
  186. package/skills/jevitate-demo/SKILL.md +4 -1
  187. package/skills/jevitate-getting-started/SKILL.md +7 -2
  188. package/skills/jevitate-run-journey/SKILL.md +15 -0
  189. package/skills/jevitate-test-campaign/SKILL.md +26 -0
  190. package/skills/jevitate-verify-fix/SKILL.md +5 -0
@@ -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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"}
@@ -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 {};
@@ -2,6 +2,7 @@ import { describeProvenance } from "./approval-provenance.js";
2
2
  import { CatalogStatusSchema, GTWR_SET_CHARACTERISTICS, JobReviewSchema, PersonaReviewSchema, } from "@jevitate/journey";
3
3
  import { journeyLinks, journeysForJob, journeysForPersona, personaLinkId, requireJob, requirePersona } from "./catalog.js";
4
4
  import { preApprovalFindings } from "./pre-approval.js";
5
+ import { catalogRefIssues, describeRefIssue, jobSheetRefIssues } from "./catalog-refs.js";
5
6
  import { jevLayerOf } from "./jev-advisor.js";
6
7
  function sheetCtx(action, opts) {
7
8
  return { action, ...(opts.readiness === true ? { readiness: true } : {}), ...(opts.jev === undefined ? {} : { jev: opts.jev }) };
@@ -64,8 +65,16 @@ export async function buildJobReview(catalog, id, action = "review", opts = {})
64
65
  ...(opts.jev === undefined ? {} : { jev: jevLayerOf(opts.jev) }),
65
66
  ...(job.approval === undefined ? {} : { approval: job.approval }),
66
67
  contentHash: job.contentHash,
68
+ ...jtbdFields(job.job),
69
+ refIssues: jobSheetRefIssues(catalog, id),
67
70
  });
68
71
  }
72
+ /** #465: the job's jtbd fields as written, each only when present. */
73
+ function jtbdFields(job) {
74
+ const { kind, parent, context, steps, desiredOutcomes, constraints, provenance, revision, lastValidated, extensions } = job;
75
+ const all = { kind, parent, context, steps, desiredOutcomes, constraints, provenance, revision, lastValidated, extensions };
76
+ return Object.fromEntries(Object.entries(all).filter(([, v]) => v !== undefined));
77
+ }
69
78
  /** #433: `catalog status` — the jobs × personas matrix, gaps, unlinked Journeys, dangling links, stale approvals. */
70
79
  export function buildCatalogStatus(catalog) {
71
80
  const personaIds = catalog.personas.map((p) => p.id);
@@ -113,6 +122,7 @@ export function buildCatalogStatus(catalog) {
113
122
  danglingLinks,
114
123
  stale,
115
124
  files: { personas: catalog.personasFile, jobs: catalog.jobsFile },
125
+ refIssues: catalogRefIssues(catalog),
116
126
  });
117
127
  }
118
128
  function helpers(style) {
@@ -237,6 +247,7 @@ export function renderJobReview(r, style) {
237
247
  li(`Outcome (so I can): ${r.outcome}`),
238
248
  ...(r.priority === undefined ? [] : [li(`Priority: ${r.priority}`)]),
239
249
  "",
250
+ ...renderJobMap(r, style),
240
251
  h2("Personas"),
241
252
  "",
242
253
  ...(r.personas.length === 0
@@ -253,6 +264,7 @@ export function renderJobReview(r, style) {
253
264
  ? [li(em("none"))]
254
265
  : r.journeys.map((j) => li(`${code(j.id)} — ${j.name}${j.persona === undefined ? "" : ` as ${j.persona}`} (${j.promoted ? "promoted" : "not promoted"})${j.needsReReview ? " — needs re-review" : ""}`))),
255
266
  "",
267
+ ...renderRefIssues(r.refIssues, style, "approving refuses a job with a structural problem (E_JOB_BROKEN_REF); the others are gaps"),
256
268
  ...renderFindings(r.findings, style),
257
269
  "",
258
270
  h2("Approve"),
@@ -261,6 +273,54 @@ export function renderJobReview(r, style) {
261
273
  ];
262
274
  return finish(out);
263
275
  }
276
+ /** #465: a metric in words: `duration p50 from a to b`, `abandon at x`, `answer got_it_done = yes`. */
277
+ export function describeMetric(m) {
278
+ if (m.kind === "duration")
279
+ return `duration ${m.stat}${m.threshold === undefined ? "" : ` ${m.threshold}s`} from ${m.from} to ${m.to}`;
280
+ if (m.kind === "completion")
281
+ return `completion from ${m.from} to ${m.to}`;
282
+ if (m.kind === "answer")
283
+ return `answer ${m.question} = ${m.value}`;
284
+ return `${m.kind} at ${m.at}`;
285
+ }
286
+ function outcomeLine(o, code) {
287
+ return [
288
+ `${code(o.id)}${o.guardrail === true ? " GUARDRAIL (must never get worse)" : ""}: ${o.direction} ${o.measure} — ${o.object}`,
289
+ o.clarifier === undefined ? "" : ` (${o.clarifier})`,
290
+ o.step === undefined ? " · whole job" : ` · step ${code(o.step)}`,
291
+ o.metric === undefined ? " · no metric" : ` · metric: ${describeMetric(o.metric)}`,
292
+ o.target === undefined ? "" : ` · target ${o.target.op} ${o.target.value} ${o.target.unit}`,
293
+ o.gulf === undefined ? "" : ` · gulf: ${o.gulf}`,
294
+ o.priority === undefined ? "" : ` · priority: ${o.priority}`,
295
+ ].join("");
296
+ }
297
+ /** #465: the job map — kind, parent, context, steps, desired outcomes, constraints, provenance, extensions (only what the job has). */
298
+ function renderJobMap(r, style) {
299
+ const { h2, li, code } = helpers(style);
300
+ const about = [
301
+ ...(r.kind === undefined ? [] : [li(`Kind: ${r.kind}`)]),
302
+ ...(r.parent === undefined ? [] : [li(`Parent job: ${code(r.parent)}`)]),
303
+ ...(r.context === undefined ? [] : [li(`Context: ${r.context.join("; ")}`)]),
304
+ ...(r.provenance === undefined ? [] : [li(`Provenance: ${r.provenance}`)]),
305
+ ...(r.revision === undefined ? [] : [li(`Revision: ${r.revision}`)]),
306
+ ...(r.lastValidated === undefined ? [] : [li(`Last validated: ${r.lastValidated}`)]),
307
+ ];
308
+ const section = (title, lines) => (lines.length === 0 ? [] : [h2(title), "", ...lines, ""]);
309
+ return [
310
+ ...section("About the job", about),
311
+ ...section("Job steps", (r.steps ?? []).map((st) => li(`${code(st.id)} — ${st.name}${st.stage === undefined ? "" : ` (${st.stage})`}`))),
312
+ ...section("Desired outcomes", (r.desiredOutcomes ?? []).map((o) => li(outcomeLine(o, code)))),
313
+ ...section("Constraints", (r.constraints ?? []).map((c) => li(c))),
314
+ ...section("Extensions", Object.entries(r.extensions ?? {}).map(([ns, v]) => li(`${ns}: ${JSON.stringify(v)}`))),
315
+ ];
316
+ }
317
+ /** #465: the reference checks section (only when there are problems). */
318
+ function renderRefIssues(issues, style, note) {
319
+ const { h2, li } = helpers(style);
320
+ if (issues === undefined || issues.length === 0)
321
+ return [];
322
+ return [h2("Reference checks"), "", ...issues.map((i) => li(`${i.severity}${i.structural ? " (structural)" : " (gap)"} ${describeRefIssue(i)}`)), "", note, ""];
323
+ }
264
324
  const CELL = { "n/a": "·", promoted: "✓", draft: "draft", missing: "MISSING" };
265
325
  export function renderCatalogStatus(r) {
266
326
  const out = ["Catalog status", "=============="];
@@ -285,6 +345,7 @@ export function renderCatalogStatus(r) {
285
345
  section("Journeys linked to nothing", r.unlinkedJourneys);
286
346
  section("Dangling links", r.danglingLinks.map((d) => `journey ${d.journey} → ${d.kind} '${d.id}' (not declared)`));
287
347
  section("Stale approvals (needs re-review)", r.stale.map((s) => `${s.kind} ${s.id}: ${s.reason}`));
348
+ section("Reference checks (warnings; a structural one refuses job approve)", (r.refIssues ?? []).map(describeRefIssue));
288
349
  return `${out.join("\n")}\n`;
289
350
  }
290
351
  //# sourceMappingURL=catalog-review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-review.js","sourceRoot":"","sources":["../src/catalog-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-review.js","sourceRoot":"","sources":["../src/catalog-review.ts"],"names":[],"mappings":"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"}
package/dist/catalog.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type CatalogApproval, type CatalogItemStatus, type Job, type Journey, type JourneyApproval, type JourneyCatalogLinks } from "@jevitate/journey";
1
+ import { type CatalogApproval, type CatalogItemStatus, type CatalogRefIssue, type Job, type Journey, type JourneyApproval, type JourneyCatalogLinks } from "@jevitate/journey";
2
2
  /**
3
3
  * #433 — the catalog: personas, jobs and Journeys, with their ids, content hashes and approval
4
4
  * state, loaded in one place (`CatalogLoader`) for every approval path, every review sheet and
@@ -23,7 +23,16 @@ export declare const JOBS_FILE = "jobs.json";
23
23
  export declare const LEGACY_JOBS_FILE: string;
24
24
  /** A catalog file that exists but is not a valid catalog — refused (exit 64), never skipped. */
25
25
  export declare class CatalogInputError extends Error {
26
- readonly code = "E_CATALOG_INPUT";
26
+ readonly code: string;
27
+ }
28
+ /**
29
+ * #465: `job approve` of a job with a structural reference problem (catalog-refs.ts `assertJobRefs`) —
30
+ * refused, exit 64 (fix the jobs file). A `CatalogInputError`, so every catalog command reports it.
31
+ */
32
+ export declare class BrokenJobRefsError extends CatalogInputError {
33
+ readonly issues: readonly CatalogRefIssue[];
34
+ readonly code: string;
35
+ constructor(message: string, issues: readonly CatalogRefIssue[]);
27
36
  }
28
37
  /** `persona|job review|approve <id>`: no such item in the catalog. */
29
38
  export declare class UnknownCatalogItemError extends Error {
@@ -80,7 +89,16 @@ export interface Catalog {
80
89
  }
81
90
  /** #433: a persona's content hash — its id and descriptive keys, without its approval or session settings. */
82
91
  export declare function personaContentHash(id: string, fields: Readonly<Record<string, unknown>>): string;
83
- /** #433: a job's content hash — the job without its approval. */
92
+ /**
93
+ * #433/#465: a parsed job as the catalog holds it. Reference problems (catalog-refs.ts) never
94
+ * refuse a load: they are reported by `catalog status`/`analyze` and the review sheet, and an
95
+ * approval refuses only the structural ones of the job being approved.
96
+ */
97
+ export declare function catalogJobOf(job: Job): CatalogJob;
98
+ /**
99
+ * #433: a job's content hash — the job without its approval. #465: every jtbd field counts
100
+ * (`extensions` included), so editing a step, an outcome, a target or an extension needs re-approval.
101
+ */
84
102
  export declare function jobContentHash(job: Job): string;
85
103
  export declare function catalogJourney(journey: Journey): CatalogJourney;
86
104
  export interface CatalogLoaderOptions {
@@ -131,3 +149,9 @@ export declare function journeyLinks(catalog: Catalog, j: CatalogJourney): Journ
131
149
  export declare function writePersonaApproval(file: string, id: string, approval: CatalogApproval): Promise<void>;
132
150
  /** #433: records a job's approval in its jobs file. */
133
151
  export declare function writeJobApproval(file: string, id: string, approval: CatalogApproval): Promise<void>;
152
+ /**
153
+ * #469: the content hash of persona/job `id` in one version of its catalog file (`text`, e.g. the
154
+ * file at a commit, read through the forge) — the hash its approval binds to — or null when that
155
+ * version does not hold the entry or is not a valid catalog file.
156
+ */
157
+ export declare function catalogEntryHash(kind: "persona" | "job", text: string | null, id: string): string | null;
package/dist/catalog.js CHANGED
@@ -30,6 +30,18 @@ export const LEGACY_JOBS_FILE = join("campaign", "jobs.json");
30
30
  export class CatalogInputError extends Error {
31
31
  code = "E_CATALOG_INPUT";
32
32
  }
33
+ /**
34
+ * #465: `job approve` of a job with a structural reference problem (catalog-refs.ts `assertJobRefs`) —
35
+ * refused, exit 64 (fix the jobs file). A `CatalogInputError`, so every catalog command reports it.
36
+ */
37
+ export class BrokenJobRefsError extends CatalogInputError {
38
+ issues;
39
+ code = "E_JOB_BROKEN_REF";
40
+ constructor(message, issues) {
41
+ super(message);
42
+ this.issues = issues;
43
+ }
44
+ }
33
45
  /** `persona|job review|approve <id>`: no such item in the catalog. */
34
46
  export class UnknownCatalogItemError extends Error {
35
47
  kind;
@@ -148,7 +160,14 @@ function catalogJob(entry, index, path) {
148
160
  if (!parsed.success) {
149
161
  throw new CatalogInputError(`${path}: ${where}: ${parsed.error.issues.map((i) => (i.path.length === 0 ? i.message : `${i.path.join(".")}: ${i.message}`)).join("; ")}`);
150
162
  }
151
- const job = parsed.data;
163
+ return catalogJobOf(parsed.data);
164
+ }
165
+ /**
166
+ * #433/#465: a parsed job as the catalog holds it. Reference problems (catalog-refs.ts) never
167
+ * refuse a load: they are reported by `catalog status`/`analyze` and the review sheet, and an
168
+ * approval refuses only the structural ones of the job being approved.
169
+ */
170
+ export function catalogJobOf(job) {
152
171
  const hash = jobContentHash(job);
153
172
  return {
154
173
  id: job.id,
@@ -160,7 +179,10 @@ function catalogJob(entry, index, path) {
160
179
  status: statusOf(job.approval, hash),
161
180
  };
162
181
  }
163
- /** #433: a job's content hash — the job without its approval. */
182
+ /**
183
+ * #433: a job's content hash — the job without its approval. #465: every jtbd field counts
184
+ * (`extensions` included), so editing a step, an outcome, a target or an extension needs re-approval.
185
+ */
164
186
  export function jobContentHash(job) {
165
187
  const { approval: _a, ...rest } = job;
166
188
  return contentHash(rest);
@@ -349,4 +371,26 @@ export async function writeJobApproval(file, id, approval) {
349
371
  catalogJob(list[index], index, file);
350
372
  await writeJsonFile(file, Array.isArray(raw) ? list : { ...raw, jobs: list });
351
373
  }
374
+ /**
375
+ * #469: the content hash of persona/job `id` in one version of its catalog file (`text`, e.g. the
376
+ * file at a commit, read through the forge) — the hash its approval binds to — or null when that
377
+ * version does not hold the entry or is not a valid catalog file.
378
+ */
379
+ export function catalogEntryHash(kind, text, id) {
380
+ if (text === null)
381
+ return null;
382
+ try {
383
+ const raw = JSON.parse(text);
384
+ if (kind === "persona") {
385
+ const p = rawPersonas(raw, "(forge)").find((x) => x.id === id);
386
+ return p === undefined ? null : personaContentHash(p.id, p.fields);
387
+ }
388
+ const entry = jobList(raw, "(forge)").find((e) => isRecord(e) && e.id === id);
389
+ const parsed = JobSchema.safeParse(entry);
390
+ return parsed.success ? jobContentHash(parsed.data) : null;
391
+ }
392
+ catch {
393
+ return null; // not JSON / not a catalog file at that version: it does not hold the entry
394
+ }
395
+ }
352
396
  //# sourceMappingURL=catalog.js.map