@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.
Files changed (192) 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 +48 -2
  5. package/dist/approval-provenance.js +110 -6
  6. package/dist/approval-provenance.js.map +1 -1
  7. package/dist/bin.js +25111 -17835
  8. package/dist/browser-cli.d.ts +10 -0
  9. package/dist/browser-cli.js +50 -0
  10. package/dist/browser-cli.js.map +1 -0
  11. package/dist/build-info.generated.js +2 -2
  12. package/dist/catalog-analysis.js +14 -0
  13. package/dist/catalog-analysis.js.map +1 -1
  14. package/dist/catalog-api.js +12 -4
  15. package/dist/catalog-api.js.map +1 -1
  16. package/dist/catalog-bundle-api.d.ts +73 -0
  17. package/dist/catalog-bundle-api.js +206 -0
  18. package/dist/catalog-bundle-api.js.map +1 -0
  19. package/dist/catalog-bundle-findings.d.ts +54 -0
  20. package/dist/catalog-bundle-findings.js +252 -0
  21. package/dist/catalog-bundle-findings.js.map +1 -0
  22. package/dist/catalog-bundle.d.ts +192 -0
  23. package/dist/catalog-bundle.js +578 -0
  24. package/dist/catalog-bundle.js.map +1 -0
  25. package/dist/catalog-cli.d.ts +6 -0
  26. package/dist/catalog-cli.js +180 -5
  27. package/dist/catalog-cli.js.map +1 -1
  28. package/dist/catalog-refs.d.ts +42 -0
  29. package/dist/catalog-refs.js +188 -0
  30. package/dist/catalog-refs.js.map +1 -0
  31. package/dist/catalog-review.d.ts +3 -1
  32. package/dist/catalog-review.js +61 -0
  33. package/dist/catalog-review.js.map +1 -1
  34. package/dist/catalog.d.ts +27 -3
  35. package/dist/catalog.js +46 -2
  36. package/dist/catalog.js.map +1 -1
  37. package/dist/change-context.d.ts +44 -0
  38. package/dist/change-context.js +203 -0
  39. package/dist/change-context.js.map +1 -0
  40. package/dist/check-api.d.ts +1 -1
  41. package/dist/check-api.js +206 -16
  42. package/dist/check-api.js.map +1 -1
  43. package/dist/check-cli.d.ts +2 -1
  44. package/dist/check-cli.js +117 -8
  45. package/dist/check-cli.js.map +1 -1
  46. package/dist/check-execute.d.ts +28 -1
  47. package/dist/check-execute.js +110 -27
  48. package/dist/check-execute.js.map +1 -1
  49. package/dist/check-plan.d.ts +14 -0
  50. package/dist/check-plan.js +24 -1
  51. package/dist/check-plan.js.map +1 -1
  52. package/dist/check-types.d.ts +137 -5
  53. package/dist/check-types.js +8 -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 +26 -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/exit-codes.d.ts +6 -3
  62. package/dist/exit-codes.js +24 -3
  63. package/dist/exit-codes.js.map +1 -1
  64. package/dist/explore-adversarial.js +2 -2
  65. package/dist/explore-adversarial.js.map +1 -1
  66. package/dist/explore-cli.js +3 -2
  67. package/dist/explore-cli.js.map +1 -1
  68. package/dist/explore-coverage.js +3 -3
  69. package/dist/explore-coverage.js.map +1 -1
  70. package/dist/explore-feature.js +3 -3
  71. package/dist/explore-feature.js.map +1 -1
  72. package/dist/explore-goal.js +11 -5
  73. package/dist/explore-goal.js.map +1 -1
  74. package/dist/findings-filing.d.ts +6 -0
  75. package/dist/findings-filing.js +15 -1
  76. package/dist/findings-filing.js.map +1 -1
  77. package/dist/forge-verify.d.ts +224 -0
  78. package/dist/forge-verify.js +649 -0
  79. package/dist/forge-verify.js.map +1 -0
  80. package/dist/heal-probe-guard.d.ts +9 -0
  81. package/dist/heal-probe-guard.js +113 -0
  82. package/dist/heal-probe-guard.js.map +1 -0
  83. package/dist/host-health-run.d.ts +32 -1
  84. package/dist/host-health-run.js +38 -1
  85. package/dist/host-health-run.js.map +1 -1
  86. package/dist/init-codeowners.d.ts +19 -0
  87. package/dist/init-codeowners.js +66 -0
  88. package/dist/init-codeowners.js.map +1 -1
  89. package/dist/job-draft-api.d.ts +52 -0
  90. package/dist/job-draft-api.js +110 -0
  91. package/dist/job-draft-api.js.map +1 -0
  92. package/dist/journeeze-api.d.ts +71 -0
  93. package/dist/journeeze-api.js +285 -0
  94. package/dist/journeeze-api.js.map +1 -0
  95. package/dist/journeeze-connect.d.ts +156 -0
  96. package/dist/journeeze-connect.js +357 -0
  97. package/dist/journeeze-connect.js.map +1 -0
  98. package/dist/journey-anchor-gate.d.ts +52 -0
  99. package/dist/journey-anchor-gate.js +101 -0
  100. package/dist/journey-anchor-gate.js.map +1 -0
  101. package/dist/journey-api.d.ts +43 -3
  102. package/dist/journey-api.js +226 -21
  103. package/dist/journey-api.js.map +1 -1
  104. package/dist/journey-cli.js +162 -20
  105. package/dist/journey-cli.js.map +1 -1
  106. package/dist/journey-heal.d.ts +74 -0
  107. package/dist/journey-heal.js +180 -0
  108. package/dist/journey-heal.js.map +1 -0
  109. package/dist/journey-lint-sarif.d.ts +3 -2
  110. package/dist/journey-lint-sarif.js +9 -2
  111. package/dist/journey-lint-sarif.js.map +1 -1
  112. package/dist/journey-migrate-api.d.ts +54 -0
  113. package/dist/journey-migrate-api.js +64 -0
  114. package/dist/journey-migrate-api.js.map +1 -0
  115. package/dist/journey-network-checks.d.ts +5 -1
  116. package/dist/journey-network-checks.js +15 -4
  117. package/dist/journey-network-checks.js.map +1 -1
  118. package/dist/journey-prefix.js +2 -2
  119. package/dist/journey-prefix.js.map +1 -1
  120. package/dist/journey-proposal-store.d.ts +109 -0
  121. package/dist/journey-proposal-store.js +365 -0
  122. package/dist/journey-proposal-store.js.map +1 -0
  123. package/dist/journey-result-record.d.ts +42 -0
  124. package/dist/journey-result-record.js +33 -0
  125. package/dist/journey-result-record.js.map +1 -0
  126. package/dist/journey-review-api.js +16 -1
  127. package/dist/journey-review-api.js.map +1 -1
  128. package/dist/journey-review.d.ts +18 -1
  129. package/dist/journey-review.js +116 -5
  130. package/dist/journey-review.js.map +1 -1
  131. package/dist/journey-stale-api.d.ts +40 -0
  132. package/dist/journey-stale-api.js +57 -0
  133. package/dist/journey-stale-api.js.map +1 -0
  134. package/dist/launch-armed.js +5 -1
  135. package/dist/launch-armed.js.map +1 -1
  136. package/dist/locator-health-api.d.ts +101 -0
  137. package/dist/locator-health-api.js +203 -0
  138. package/dist/locator-health-api.js.map +1 -0
  139. package/dist/locator-health.d.ts +195 -0
  140. package/dist/locator-health.js +419 -0
  141. package/dist/locator-health.js.map +1 -0
  142. package/dist/login-cli.d.ts +2 -0
  143. package/dist/login-cli.js +56 -11
  144. package/dist/login-cli.js.map +1 -1
  145. package/dist/mcp-api.d.ts +5 -1
  146. package/dist/mcp-api.js +53 -8
  147. package/dist/mcp-api.js.map +1 -1
  148. package/dist/mcp-cli-tools.d.ts +3 -1
  149. package/dist/mcp-cli-tools.js +80 -10
  150. package/dist/mcp-cli-tools.js.map +1 -1
  151. package/dist/multi-run.d.ts +7 -6
  152. package/dist/multi-run.js +5 -4
  153. package/dist/multi-run.js.map +1 -1
  154. package/dist/persona-login.d.ts +60 -3
  155. package/dist/persona-login.js +341 -31
  156. package/dist/persona-login.js.map +1 -1
  157. package/dist/program.js +2 -0
  158. package/dist/program.js.map +1 -1
  159. package/dist/project-config.d.ts +29 -0
  160. package/dist/project-config.js +76 -0
  161. package/dist/project-config.js.map +1 -0
  162. package/dist/report-api.d.ts +1 -0
  163. package/dist/report-api.js +1 -0
  164. package/dist/report-api.js.map +1 -1
  165. package/dist/resource-preflight.js +5 -3
  166. package/dist/resource-preflight.js.map +1 -1
  167. package/dist/run-metadata.d.ts +5 -2
  168. package/dist/run-metadata.js +10 -3
  169. package/dist/run-metadata.js.map +1 -1
  170. package/dist/run-tags-cli.d.ts +2 -0
  171. package/dist/run-tags-cli.js +8 -2
  172. package/dist/run-tags-cli.js.map +1 -1
  173. package/dist/self-heal-adapter.d.ts +43 -27
  174. package/dist/self-heal-adapter.js +196 -62
  175. package/dist/self-heal-adapter.js.map +1 -1
  176. package/dist/source-cli.js +5 -3
  177. package/dist/source-cli.js.map +1 -1
  178. package/dist/suite-explore-options.js +1 -0
  179. package/dist/suite-explore-options.js.map +1 -1
  180. package/dist/sweep-api.d.ts +23 -0
  181. package/dist/sweep-api.js +39 -8
  182. package/dist/sweep-api.js.map +1 -1
  183. package/dist/sweep-cli.js +3 -1
  184. package/dist/sweep-cli.js.map +1 -1
  185. package/dist/ux-usability.js +3 -2
  186. package/dist/ux-usability.js.map +1 -1
  187. package/package.json +17 -15
  188. package/skills/jevitate-ci-check/SKILL.md +25 -1
  189. package/skills/jevitate-getting-started/SKILL.md +9 -3
  190. package/skills/jevitate-mission-scope/SKILL.md +2 -2
  191. package/skills/jevitate-run-journey/SKILL.md +36 -5
  192. package/skills/jevitate-test-campaign/SKILL.md +13 -0
@@ -0,0 +1,26 @@
1
+ import { type Journey } from "@jevitate/journey";
2
+ import type { CheckBaseline } from "./check-types.js";
3
+ /**
4
+ * #469 (contract §4.3): the machine baseline of ONE clean Journey run. Pure — no I/O, no clock.
5
+ * `atMs` of an anchor = milliseconds from the first executed step's start to the anchor step's
6
+ * COMPLETION (its start + duration). Never produced from a run that did not complete.
7
+ *
8
+ * Check integration: after replaying a Journey item, pass the interpreter's outcome plus the per-step
9
+ * `StepTiming`s the run sank (`RecordedStep.timing` + `stepId`, with the flat step `index`) —
10
+ * `baseline: anchorBaseline(journey, { outcome: result.outcome, steps })`.
11
+ */
12
+ export interface BaselineRunStep {
13
+ /** The step's 0-based flat position in the Journey (the interpreter's numbering). */
14
+ readonly index: number;
15
+ readonly stepId?: string;
16
+ /** Milliseconds from the run's start to this step's start (`StepTiming.atMs`). */
17
+ readonly atMs: number;
18
+ readonly durationMs: number;
19
+ }
20
+ export interface BaselineRun {
21
+ /** The interpreter's run outcome; only `completed` yields a baseline. */
22
+ readonly outcome: string;
23
+ /** One entry per step actually executed (skipped steps record none). */
24
+ readonly steps: readonly BaselineRunStep[];
25
+ }
26
+ export declare function anchorBaseline(journey: Journey, run: BaselineRun): CheckBaseline | undefined;
@@ -0,0 +1,25 @@
1
+ import { flatJourneySteps } from "@jevitate/journey";
2
+ export function anchorBaseline(journey, run) {
3
+ if (run.outcome !== "completed" || run.steps.length === 0)
4
+ return undefined;
5
+ const firstStart = Math.min(...run.steps.map((s) => s.atMs));
6
+ const end = (s) => s.atMs - firstStart + s.durationMs;
7
+ const byIndex = new Map(run.steps.map((s) => [s.index, s]));
8
+ const flat = flatJourneySteps(journey);
9
+ const totalMs = Math.round(Math.max(...run.steps.map(end)));
10
+ const lastStep = Math.max(...run.steps.map((s) => s.index)) + 1;
11
+ const firstStepNo = Math.min(...run.steps.map((s) => s.index)) + 1;
12
+ const anchors = [{ name: "job_start", step: firstStepNo, atMs: 0 }];
13
+ for (const a of journey.metadata.anchors ?? []) {
14
+ const byId = a.stepId === undefined ? -1 : flat.findIndex((f) => f.recorded.stepId === a.stepId);
15
+ const index = byId >= 0 ? byId : a.step - 1;
16
+ const ran = byIndex.get(index);
17
+ if (ran === undefined)
18
+ continue;
19
+ const stepId = flat[index]?.recorded.stepId;
20
+ anchors.push({ name: a.name, step: index + 1, ...(stepId === undefined ? {} : { stepId }), atMs: Math.round(end(ran)) });
21
+ }
22
+ anchors.push({ name: "job_end", step: lastStep, atMs: totalMs });
23
+ return { steps: run.steps.length, totalMs, anchors };
24
+ }
25
+ //# sourceMappingURL=anchor-baselines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor-baselines.js","sourceRoot":"","sources":["../src/anchor-baselines.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type ApprovalChannel, type ApprovalProvenance, type ApprovalsReport } from "@jevitate/journey";
2
2
  import type { Catalog } from "./catalog.js";
3
+ import { type ForgeFactory, type GitTracked, type PrReviewEntry, type PrReviewVerdict } from "./forge-verify.js";
3
4
  /**
4
5
  * #437 — approval provenance and the human confirmation on every approval path (`journey promote`,
5
6
  * `demo approve`, `persona approve`, `job approve`, and the `--accept-*` waivers given with them).
@@ -51,6 +52,12 @@ export interface ApprovalDeps {
51
52
  /** Asks one question on the terminal and returns the typed line. */
52
53
  readonly prompt?: (question: string) => Promise<string>;
53
54
  readonly user?: () => string | undefined;
55
+ /** #469: the forge `pr-review` is verified through (default: GitHub over HTTPS). Tests inject a fake. */
56
+ readonly forge?: ForgeFactory;
57
+ /** #469: where a CI approval says why `pr-review` was not granted (default: stderr). */
58
+ readonly notice?: (line: string) => void;
59
+ /** #469: whether the re-verification cache dir holds git-tracked files (then it is not trusted). */
60
+ readonly gitTracked?: GitTracked;
54
61
  }
55
62
  /** What a person confirms: the item, the content hash its sheet shows, and the waivers given with it. */
56
63
  export interface ApprovalRequest {
@@ -62,6 +69,21 @@ export interface ApprovalRequest {
62
69
  readonly reason: string;
63
70
  readonly detail?: string;
64
71
  }[];
72
+ /** #453: a self-heal proposal being accepted — shown to the person before they confirm. */
73
+ readonly proposal?: {
74
+ readonly id: string;
75
+ readonly baseHash: string;
76
+ readonly steps: readonly {
77
+ readonly number: number;
78
+ readonly before: string;
79
+ readonly after: string;
80
+ }[];
81
+ };
82
+ /**
83
+ * #469: where the entry lives (its file and how to find it in any version of that file). With it,
84
+ * an approval in CI is checked for a verified pull-request review (`pr-review`) first.
85
+ */
86
+ readonly entry?: PrReviewEntry;
65
87
  }
66
88
  /** Confirms an approval (or refuses it) and returns how it was made. */
67
89
  export type ApprovalConfirm = (request: ApprovalRequest) => Promise<ApprovalProvenance>;
@@ -92,13 +114,23 @@ export interface ApprovalConfirmOptions {
92
114
  export declare function checkNonInteractiveReason(reason: string | undefined): void;
93
115
  /**
94
116
  * The confirmation every CLI approval path runs just before it writes:
95
- * - inside an MCP tool call: no prompt, recorded as `mcp` (an agent's approval);
117
+ * - inside an MCP tool call: no prompt, recorded as `mcp` (an agent's approval) — never `pr-review`;
118
+ * - #469: in CI with no terminal, for an entry the forge verifies (a merged, approved pull request
119
+ * changed it last): recorded as `pr-review` with the pull request and its reviewer. When the
120
+ * verification fails, why is printed and the paths below apply unchanged (`ci` with the escape
121
+ * hatch, else `E_APPROVAL_NEEDS_HUMAN`);
96
122
  * - `--non-interactive-approval "<reason>"`: no prompt, recorded as `non-interactive` (or `ci` under a CI marker) with the reason;
97
123
  * - otherwise a real TTY is required (else `E_APPROVAL_NEEDS_HUMAN`), and the person types the id or
98
124
  * the first 8 characters of the content hash — once for the approval, once per waiver
99
125
  * (else `E_APPROVAL_NOT_CONFIRMED`); recorded as `tty`.
100
126
  */
101
127
  export declare function makeApprovalConfirm(deps: ApprovalDeps | undefined, opts?: ApprovalConfirmOptions): ApprovalConfirm;
128
+ /**
129
+ * #453: how a REJECTION was made (`journey promote --reject-proposal`). Rejecting is fail-closed, so
130
+ * it needs no typed confirmation: inside an MCP call it is `mcp`, at a terminal `tty`, otherwise
131
+ * `non-interactive` (or `ci`) with the reason recorded.
132
+ */
133
+ export declare function rejectionProvenance(deps: ApprovalDeps | undefined, rejectionReason: string): ApprovalProvenance;
102
134
  /**
103
135
  * The provenance of an approval made through the programmatic API with no confirmation step
104
136
  * (a caller of `promoteJourney` / `approveCatalogItem` that passes no `confirm`): recorded as
@@ -115,6 +147,20 @@ export declare function parseAllowedChannels(list: string | undefined): Approval
115
147
  * that is stale (the item changed since), one recorded before provenance existed, or one made over
116
148
  * a channel not allowed.
117
149
  */
118
- export declare function approvalsReport(catalogs: readonly Catalog[], allowed?: readonly ApprovalChannel[]): ApprovalsReport;
150
+ export declare function approvalsReport(catalogs: readonly Catalog[], allowed?: readonly ApprovalChannel[], prVerdicts?: ReadonlyMap<string, PrReviewVerdict>): ApprovalsReport;
151
+ export interface PrReviewCheckDeps {
152
+ readonly env?: Readonly<Record<string, string | undefined>>;
153
+ readonly forge?: ForgeFactory;
154
+ readonly gitTracked?: GitTracked;
155
+ /** The project data dir whose `cache/pr-review/` caches positive re-verifications (null: no cache). */
156
+ readonly catalogDir?: string | null;
157
+ }
158
+ /**
159
+ * #469: `approvalsReport` with every recorded `pr-review` approval RE-VERIFIED through the forge
160
+ * (when `pr-review` is among `allowed`; otherwise it is a channel violation anyway and the forge is
161
+ * not asked). A record the forge does not confirm — a hand-written one, or one that cannot be
162
+ * re-verified (no token, offline) — is an `unverified` violation, never a pass.
163
+ */
164
+ export declare function approvalsReportVerified(catalogs: readonly Catalog[], allowed: readonly ApprovalChannel[] | undefined, deps?: PrReviewCheckDeps): Promise<ApprovalsReport>;
119
165
  /** The approvals section of `catalog status` (text). */
120
166
  export declare function renderApprovals(report: ApprovalsReport): string;
@@ -2,6 +2,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { userInfo } from "node:os";
3
3
  import { createInterface } from "node:readline/promises";
4
4
  import { APPROVAL_CHANNELS, } from "@jevitate/journey";
5
+ import { catalogItemEntry, githubForgeFactory, journeyEntry, PrReviewCache, prReviewCacheDir, reverifyPrReviewCached, verifyPrReviewForApproval, } from "./forge-verify.js";
5
6
  /**
6
7
  * #437 — approval provenance and the human confirmation on every approval path (`journey promote`,
7
8
  * `demo approve`, `persona approve`, `job approve`, and the `--accept-*` waivers given with them).
@@ -143,9 +144,30 @@ export function checkNonInteractiveReason(reason) {
143
144
  if (reason !== undefined && reason.trim() === "")
144
145
  throw new ApprovalArgsError('--non-interactive-approval needs a reason (it is recorded with the approval): --non-interactive-approval "<why no person confirms this>"');
145
146
  }
147
+ /**
148
+ * #469: in CI with no terminal, the `pr-review` channel — granted ONLY when the forge verifies the
149
+ * entry's last change came from a merged pull request approved by someone other than its author
150
+ * (forge-verify.ts). Never with waivers or a self-heal proposal: those are this run's own choices,
151
+ * which no reviewer saw. Returns the verdict, or null when not attempted (no entry, not in CI).
152
+ */
153
+ async function prReviewAttempt(r, deps) {
154
+ if (r.entry === undefined)
155
+ return null;
156
+ const env = deps?.env ?? process.env;
157
+ if (!underCi(detectAgentSignals(env, { stdin: true, stdout: true })))
158
+ return null;
159
+ if (r.waivers.length > 0 || r.proposal !== undefined) {
160
+ return { ok: false, code: "has-waivers", reason: "an approval with waivers or a self-heal proposal needs a person: no pull-request reviewer saw them" };
161
+ }
162
+ return verifyPrReviewForApproval(r.entry, env, deps?.forge ?? githubForgeFactory);
163
+ }
146
164
  /**
147
165
  * The confirmation every CLI approval path runs just before it writes:
148
- * - inside an MCP tool call: no prompt, recorded as `mcp` (an agent's approval);
166
+ * - inside an MCP tool call: no prompt, recorded as `mcp` (an agent's approval) — never `pr-review`;
167
+ * - #469: in CI with no terminal, for an entry the forge verifies (a merged, approved pull request
168
+ * changed it last): recorded as `pr-review` with the pull request and its reviewer. When the
169
+ * verification fails, why is printed and the paths below apply unchanged (`ci` with the escape
170
+ * hatch, else `E_APPROVAL_NEEDS_HUMAN`);
149
171
  * - `--non-interactive-approval "<reason>"`: no prompt, recorded as `non-interactive` (or `ci` under a CI marker) with the reason;
150
172
  * - otherwise a real TTY is required (else `E_APPROVAL_NEEDS_HUMAN`), and the person types the id or
151
173
  * the first 8 characters of the content hash — once for the approval, once per waiver
@@ -156,17 +178,31 @@ export function makeApprovalConfirm(deps, opts = {}) {
156
178
  if (inMcpInvocation())
157
179
  return provenanceOf("mcp", deps);
158
180
  const reason = opts.nonInteractiveReason?.trim();
159
- if (reason !== undefined) {
181
+ if (reason !== undefined)
160
182
  checkNonInteractiveReason(reason);
183
+ const interactive = (deps?.stdinIsTTY?.() ?? process.stdin.isTTY === true) && (deps?.stdoutIsTTY?.() ?? process.stdout.isTTY === true);
184
+ let notGranted = "";
185
+ if (!interactive) {
186
+ const verdict = await prReviewAttempt(r, deps);
187
+ if (verdict?.ok === true)
188
+ return { ...provenanceOf("pr-review", deps), pr: verdict.pr };
189
+ if (verdict !== null && !verdict.ok) {
190
+ notGranted = `pr-review not granted for ${r.kind} '${r.id}': ${verdict.reason}`;
191
+ (deps?.notice ?? ((line) => process.stderr.write(`${line}\n`)))(notGranted);
192
+ }
193
+ }
194
+ if (reason !== undefined) {
161
195
  const p = provenanceOf("non-interactive", deps, reason);
162
196
  return underCi(p.agentSignals) ? { ...p, channel: "ci" } : p;
163
197
  }
164
- const interactive = (deps?.stdinIsTTY?.() ?? process.stdin.isTTY === true) && (deps?.stdoutIsTTY?.() ?? process.stdout.isTTY === true);
165
198
  if (!interactive)
166
- throw new ApprovalNeedsHumanError(needsHumanMessage(r));
199
+ throw new ApprovalNeedsHumanError(`${needsHumanMessage(r)}${notGranted === "" ? "" : ` (${notGranted})`}`);
167
200
  const ask = deps?.prompt ?? terminalPrompt;
168
201
  const what = r.kind === "demo" ? `demo '${r.id}' (promotes Journey '${r.id}')` : `${r.kind} '${r.id}'`;
169
- const first = await ask(`\nApprove ${what}, content hash ${r.contentHash.slice(0, 8)}…?\nType its id (${r.id}) or the first 8 characters of its content hash to approve — anything else cancels: `);
202
+ const proposalText = r.proposal === undefined
203
+ ? ""
204
+ : `\nProposed revision ${r.proposal.id} (self-heal, against ${r.proposal.baseHash.slice(0, 8)}…):\n${r.proposal.steps.map((st) => ` step ${st.number}: ${st.before}\n -> ${st.after}`).join("\n")}`;
205
+ const first = await ask(`${proposalText}\nApprove ${what}, content hash ${r.contentHash.slice(0, 8)}…?\nType its id (${r.id}) or the first 8 characters of its content hash to approve — anything else cancels: `);
170
206
  if (!confirmed(first, r))
171
207
  throw new ApprovalNotConfirmedError(`the typed confirmation did not match ${r.kind} '${r.id}' or its content hash — nothing was approved`);
172
208
  for (const w of r.waivers) {
@@ -177,6 +213,20 @@ export function makeApprovalConfirm(deps, opts = {}) {
177
213
  return provenanceOf("tty", deps);
178
214
  };
179
215
  }
216
+ /**
217
+ * #453: how a REJECTION was made (`journey promote --reject-proposal`). Rejecting is fail-closed, so
218
+ * it needs no typed confirmation: inside an MCP call it is `mcp`, at a terminal `tty`, otherwise
219
+ * `non-interactive` (or `ci`) with the reason recorded.
220
+ */
221
+ export function rejectionProvenance(deps, rejectionReason) {
222
+ if (inMcpInvocation())
223
+ return provenanceOf("mcp", deps);
224
+ const interactive = (deps?.stdinIsTTY?.() ?? process.stdin.isTTY === true) && (deps?.stdoutIsTTY?.() ?? process.stdout.isTTY === true);
225
+ if (interactive)
226
+ return provenanceOf("tty", deps);
227
+ const p = provenanceOf("non-interactive", deps, `rejected without a terminal: ${rejectionReason}`.slice(0, 2000));
228
+ return underCi(p.agentSignals) ? { ...p, channel: "ci" } : p;
229
+ }
180
230
  /**
181
231
  * The provenance of an approval made through the programmatic API with no confirmation step
182
232
  * (a caller of `promoteJourney` / `approveCatalogItem` that passes no `confirm`): recorded as
@@ -202,6 +252,8 @@ export function describeProvenance(p) {
202
252
  return `approved non-interactively in CI${markers.length === 0 ? "" : ` (${markers.join(", ")})`}${reason}`;
203
253
  case "non-interactive":
204
254
  return `approved non-interactively${markers.length === 0 ? "" : ` (likely an agent: ${markers.join(", ")})`}${by}${reason}`;
255
+ case "pr-review":
256
+ return p.pr === undefined ? "approved by a pull-request review (unverified: no PR recorded)" : `approved by ${p.pr.reviewer}'s review of merged PR #${p.pr.number}`;
205
257
  }
206
258
  }
207
259
  // ── Enforcement: --require-approvals ─────────────────────────────────────────────────────────
@@ -227,7 +279,7 @@ export function parseAllowedChannels(list) {
227
279
  * that is stale (the item changed since), one recorded before provenance existed, or one made over
228
280
  * a channel not allowed.
229
281
  */
230
- export function approvalsReport(catalogs, allowed) {
282
+ export function approvalsReport(catalogs, allowed, prVerdicts) {
231
283
  const records = [];
232
284
  const violations = [];
233
285
  const seen = new Set();
@@ -263,6 +315,18 @@ export function approvalsReport(catalogs, allowed) {
263
315
  message: `${kind} '${id}': ${describeProvenance(provenance)} — channel '${provenance.channel}' is not allowed (allowed: ${allowed.join(", ")}); a person re-approves it at a terminal`,
264
316
  });
265
317
  }
318
+ else if (provenance.channel === "pr-review" && !stale) {
319
+ // #469: a recorded pr-review is honoured only when the forge re-confirms it — never on the record's word.
320
+ const v = prVerdicts?.get(key);
321
+ if (v?.ok !== true) {
322
+ violations.push({
323
+ kind,
324
+ id,
325
+ problem: "unverified",
326
+ message: `${kind} '${id}': ${describeProvenance(provenance)} — not confirmed by the forge (${v === undefined ? "it was not re-verified" : v.reason}); a pr-review approval counts only when GitHub confirms it`,
327
+ });
328
+ }
329
+ }
266
330
  };
267
331
  for (const c of catalogs) {
268
332
  for (const p of c.personas)
@@ -282,6 +346,46 @@ export function approvalsReport(catalogs, allowed) {
282
346
  }
283
347
  return { records, ...(allowed === undefined ? {} : { requirement: { allowedChannels: [...allowed], violations } }) };
284
348
  }
349
+ /** The entry a recorded approval binds to (its file and hash), or null when it has no verifiable file. */
350
+ function recordedEntry(c, kind, id, contentHash) {
351
+ if (kind === "journey")
352
+ return c.journeysDir === undefined ? null : journeyEntry(c.journeysDir, id, contentHash);
353
+ const file = kind === "persona" ? c.personasFile : c.jobsFile;
354
+ return file === null ? null : catalogItemEntry(kind, file, id, contentHash);
355
+ }
356
+ /**
357
+ * #469: `approvalsReport` with every recorded `pr-review` approval RE-VERIFIED through the forge
358
+ * (when `pr-review` is among `allowed`; otherwise it is a channel violation anyway and the forge is
359
+ * not asked). A record the forge does not confirm — a hand-written one, or one that cannot be
360
+ * re-verified (no token, offline) — is an `unverified` violation, never a pass.
361
+ */
362
+ export async function approvalsReportVerified(catalogs, allowed, deps = {}) {
363
+ if (allowed === undefined || !allowed.includes("pr-review"))
364
+ return approvalsReport(catalogs, allowed);
365
+ const env = deps.env ?? process.env;
366
+ const cache = new PrReviewCache(prReviewCacheDir(deps.catalogDir ?? catalogs.find((c) => c.dir !== null)?.dir ?? null), deps.gitTracked);
367
+ const verdicts = new Map();
368
+ const verify = async (c, kind, id, approval, stale) => {
369
+ const key = `${kind}:${id}`;
370
+ const pr = approval?.provenance?.pr;
371
+ if (approval?.provenance?.channel !== "pr-review" || pr === undefined || stale || verdicts.has(key))
372
+ return;
373
+ const entry = recordedEntry(c, kind, id, approval.contentHash);
374
+ verdicts.set(key, entry === null
375
+ ? { ok: false, code: "not-repo-file", reason: `${kind} '${id}' has no file of its own in this repository to verify` }
376
+ : await reverifyPrReviewCached(entry, pr, env, cache, deps.forge ?? githubForgeFactory));
377
+ };
378
+ for (const c of catalogs) {
379
+ for (const p of c.personas)
380
+ await verify(c, "persona", p.id, p.approval, p.status === "stale");
381
+ for (const j of c.jobs)
382
+ await verify(c, "job", j.id, j.approval, j.status === "stale");
383
+ for (const j of c.journeys)
384
+ if (j.promoted)
385
+ await verify(c, "journey", j.id, j.approval, j.approval !== undefined && j.approval.contentHash !== j.contentHash);
386
+ }
387
+ return approvalsReport(catalogs, allowed, verdicts);
388
+ }
285
389
  /** The approvals section of `catalog status` (text). */
286
390
  export function renderApprovals(report) {
287
391
  const lines = ["", "APPROVALS"];
@@ -1 +1 @@
1
- {"version":3,"file":"approval-provenance.js","sourceRoot":"","sources":["../src/approval-provenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-provenance.js","sourceRoot":"","sources":["../src/approval-provenance.ts"],"names":[],"mappings":"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"}