@jevitate/cli 0.6.0 → 0.8.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 (250) hide show
  1. package/dist/ai-cli.d.ts +3 -1
  2. package/dist/ai-cli.js +60 -16
  3. package/dist/ai-cli.js.map +1 -1
  4. package/dist/approval-provenance.d.ts +120 -0
  5. package/dist/approval-provenance.js +300 -0
  6. package/dist/approval-provenance.js.map +1 -0
  7. package/dist/author-journey-cli.js +11 -18
  8. package/dist/author-journey-cli.js.map +1 -1
  9. package/dist/bin.js +29012 -20685
  10. package/dist/build-info.generated.js +2 -2
  11. package/dist/builtin-analyzers.d.ts +7 -0
  12. package/dist/builtin-analyzers.js +19 -0
  13. package/dist/builtin-analyzers.js.map +1 -0
  14. package/dist/campaign-cli.d.ts +6 -0
  15. package/dist/campaign-cli.js +9 -4
  16. package/dist/campaign-cli.js.map +1 -1
  17. package/dist/catalog-analysis.d.ts +70 -0
  18. package/dist/catalog-analysis.js +507 -0
  19. package/dist/catalog-analysis.js.map +1 -0
  20. package/dist/catalog-api.d.ts +73 -0
  21. package/dist/catalog-api.js +97 -0
  22. package/dist/catalog-api.js.map +1 -0
  23. package/dist/catalog-cli.d.ts +12 -0
  24. package/dist/catalog-cli.js +224 -0
  25. package/dist/catalog-cli.js.map +1 -0
  26. package/dist/catalog-review.d.ts +29 -0
  27. package/dist/catalog-review.js +290 -0
  28. package/dist/catalog-review.js.map +1 -0
  29. package/dist/catalog.d.ts +133 -0
  30. package/dist/catalog.js +352 -0
  31. package/dist/catalog.js.map +1 -0
  32. package/dist/check-api.js +24 -2
  33. package/dist/check-api.js.map +1 -1
  34. package/dist/check-cli.d.ts +3 -0
  35. package/dist/check-cli.js +18 -4
  36. package/dist/check-cli.js.map +1 -1
  37. package/dist/check-execute.js +25 -9
  38. package/dist/check-execute.js.map +1 -1
  39. package/dist/check-plan.js +4 -1
  40. package/dist/check-plan.js.map +1 -1
  41. package/dist/check-suite.js +6 -3
  42. package/dist/check-suite.js.map +1 -1
  43. package/dist/check-types.d.ts +12 -1
  44. package/dist/check-types.js.map +1 -1
  45. package/dist/cli-output.js +86 -4
  46. package/dist/cli-output.js.map +1 -1
  47. package/dist/cli-shared.d.ts +22 -2
  48. package/dist/cli-shared.js +34 -5
  49. package/dist/cli-shared.js.map +1 -1
  50. package/dist/demo-aspect-api.d.ts +21 -5
  51. package/dist/demo-aspect-api.js +30 -1
  52. package/dist/demo-aspect-api.js.map +1 -1
  53. package/dist/demo-aspect-cli.js +64 -5
  54. package/dist/demo-aspect-cli.js.map +1 -1
  55. package/dist/environments.js +6 -1
  56. package/dist/environments.js.map +1 -1
  57. package/dist/exit-codes.js +4 -0
  58. package/dist/exit-codes.js.map +1 -1
  59. package/dist/explore-adversarial.d.ts +3 -1
  60. package/dist/explore-adversarial.js +3 -3
  61. package/dist/explore-adversarial.js.map +1 -1
  62. package/dist/explore-author.js +5 -2
  63. package/dist/explore-author.js.map +1 -1
  64. package/dist/explore-cli.js +162 -13
  65. package/dist/explore-cli.js.map +1 -1
  66. package/dist/explore-coverage.d.ts +6 -2
  67. package/dist/explore-coverage.js +5 -4
  68. package/dist/explore-coverage.js.map +1 -1
  69. package/dist/explore-feature.d.ts +3 -1
  70. package/dist/explore-feature.js +2 -2
  71. package/dist/explore-feature.js.map +1 -1
  72. package/dist/explore-goal.d.ts +37 -6
  73. package/dist/explore-goal.js +70 -52
  74. package/dist/explore-goal.js.map +1 -1
  75. package/dist/explore-shared.d.ts +12 -7
  76. package/dist/explore-shared.js +9 -1
  77. package/dist/explore-shared.js.map +1 -1
  78. package/dist/goal-run-flags.d.ts +2 -0
  79. package/dist/goal-run-flags.js +8 -1
  80. package/dist/goal-run-flags.js.map +1 -1
  81. package/dist/http-5xx-outcome.d.ts +8 -3
  82. package/dist/http-5xx-outcome.js +5 -15
  83. package/dist/http-5xx-outcome.js.map +1 -1
  84. package/dist/init-cli.d.ts +7 -0
  85. package/dist/init-cli.js +79 -9
  86. package/dist/init-cli.js.map +1 -1
  87. package/dist/init-codeowners.d.ts +39 -0
  88. package/dist/init-codeowners.js +91 -0
  89. package/dist/init-codeowners.js.map +1 -0
  90. package/dist/init-keys.d.ts +3 -1
  91. package/dist/init-keys.js +20 -8
  92. package/dist/init-keys.js.map +1 -1
  93. package/dist/init-skills.d.ts +85 -7
  94. package/dist/init-skills.js +303 -36
  95. package/dist/init-skills.js.map +1 -1
  96. package/dist/jev-advisor.d.ts +72 -0
  97. package/dist/jev-advisor.js +172 -0
  98. package/dist/jev-advisor.js.map +1 -0
  99. package/dist/journey-api.d.ts +104 -5
  100. package/dist/journey-api.js +165 -23
  101. package/dist/journey-api.js.map +1 -1
  102. package/dist/journey-cli.d.ts +1 -1
  103. package/dist/journey-cli.js +320 -13
  104. package/dist/journey-cli.js.map +1 -1
  105. package/dist/journey-demo-api.d.ts +7 -1
  106. package/dist/journey-demo-api.js +8 -3
  107. package/dist/journey-demo-api.js.map +1 -1
  108. package/dist/journey-demo-cli.js +3 -0
  109. package/dist/journey-demo-cli.js.map +1 -1
  110. package/dist/journey-lint-sarif.d.ts +19 -0
  111. package/dist/journey-lint-sarif.js +48 -0
  112. package/dist/journey-lint-sarif.js.map +1 -0
  113. package/dist/journey-network-checks.d.ts +45 -9
  114. package/dist/journey-network-checks.js +117 -30
  115. package/dist/journey-network-checks.js.map +1 -1
  116. package/dist/journey-prefix.d.ts +24 -15
  117. package/dist/journey-prefix.js +53 -7
  118. package/dist/journey-prefix.js.map +1 -1
  119. package/dist/journey-review-api.d.ts +19 -0
  120. package/dist/journey-review-api.js +46 -0
  121. package/dist/journey-review-api.js.map +1 -0
  122. package/dist/journey-review-store.d.ts +16 -0
  123. package/dist/journey-review-store.js +95 -0
  124. package/dist/journey-review-store.js.map +1 -0
  125. package/dist/journey-review.d.ts +47 -0
  126. package/dist/journey-review.js +499 -0
  127. package/dist/journey-review.js.map +1 -0
  128. package/dist/journey-verify.d.ts +61 -0
  129. package/dist/journey-verify.js +144 -0
  130. package/dist/journey-verify.js.map +1 -0
  131. package/dist/key-report.d.ts +20 -5
  132. package/dist/key-report.js +32 -9
  133. package/dist/key-report.js.map +1 -1
  134. package/dist/kill-signal.js +10 -2
  135. package/dist/kill-signal.js.map +1 -1
  136. package/dist/load-api.js +9 -3
  137. package/dist/load-api.js.map +1 -1
  138. package/dist/load-cli.js +4 -2
  139. package/dist/load-cli.js.map +1 -1
  140. package/dist/log-classes.d.ts +73 -0
  141. package/dist/log-classes.js +167 -0
  142. package/dist/log-classes.js.map +1 -0
  143. package/dist/log-correlation.d.ts +29 -10
  144. package/dist/log-correlation.js +44 -21
  145. package/dist/log-correlation.js.map +1 -1
  146. package/dist/login-cli.d.ts +15 -0
  147. package/dist/login-cli.js +116 -0
  148. package/dist/login-cli.js.map +1 -0
  149. package/dist/logs-cli.js +3 -1
  150. package/dist/logs-cli.js.map +1 -1
  151. package/dist/mcp-api.d.ts +1 -0
  152. package/dist/mcp-api.js +61 -12
  153. package/dist/mcp-api.js.map +1 -1
  154. package/dist/mcp-cli-runner.d.ts +2 -0
  155. package/dist/mcp-cli-runner.js +3 -1
  156. package/dist/mcp-cli-runner.js.map +1 -1
  157. package/dist/mcp-cli-tools.d.ts +6 -0
  158. package/dist/mcp-cli-tools.js +182 -23
  159. package/dist/mcp-cli-tools.js.map +1 -1
  160. package/dist/mission-cli.js +8 -4
  161. package/dist/mission-cli.js.map +1 -1
  162. package/dist/mission-journal.d.ts +4 -1
  163. package/dist/mission-journal.js +9 -3
  164. package/dist/mission-journal.js.map +1 -1
  165. package/dist/mission-queue-cli.js +21 -2
  166. package/dist/mission-queue-cli.js.map +1 -1
  167. package/dist/mission-queue-runner.d.ts +6 -0
  168. package/dist/mission-queue-runner.js +33 -3
  169. package/dist/mission-queue-runner.js.map +1 -1
  170. package/dist/multi-run-cli.d.ts +7 -1
  171. package/dist/multi-run-cli.js +10 -3
  172. package/dist/multi-run-cli.js.map +1 -1
  173. package/dist/multi-run.d.ts +38 -3
  174. package/dist/multi-run.js +115 -23
  175. package/dist/multi-run.js.map +1 -1
  176. package/dist/persona-login.d.ts +199 -0
  177. package/dist/persona-login.js +574 -0
  178. package/dist/persona-login.js.map +1 -0
  179. package/dist/pre-approval.d.ts +98 -0
  180. package/dist/pre-approval.js +175 -0
  181. package/dist/pre-approval.js.map +1 -0
  182. package/dist/program.js +10 -0
  183. package/dist/program.js.map +1 -1
  184. package/dist/project-dir.d.ts +2 -1
  185. package/dist/project-dir.js +3 -1
  186. package/dist/project-dir.js.map +1 -1
  187. package/dist/promotions.d.ts +15 -0
  188. package/dist/promotions.js +52 -0
  189. package/dist/promotions.js.map +1 -0
  190. package/dist/readiness.d.ts +29 -0
  191. package/dist/readiness.js +291 -0
  192. package/dist/readiness.js.map +1 -0
  193. package/dist/regression-cli.js +4 -2
  194. package/dist/regression-cli.js.map +1 -1
  195. package/dist/report-api.d.ts +24 -2
  196. package/dist/report-api.js +33 -5
  197. package/dist/report-api.js.map +1 -1
  198. package/dist/report-cli.js +8 -1
  199. package/dist/report-cli.js.map +1 -1
  200. package/dist/result-schema.d.ts +12 -0
  201. package/dist/result-schema.js +8 -0
  202. package/dist/result-schema.js.map +1 -1
  203. package/dist/run-index.d.ts +4 -2
  204. package/dist/run-index.js +3 -1
  205. package/dist/run-index.js.map +1 -1
  206. package/dist/run-key-preflight.d.ts +2 -1
  207. package/dist/run-key-preflight.js +3 -2
  208. package/dist/run-key-preflight.js.map +1 -1
  209. package/dist/run-metadata.d.ts +26 -0
  210. package/dist/run-metadata.js +41 -0
  211. package/dist/run-metadata.js.map +1 -0
  212. package/dist/run-tags-cli.d.ts +12 -0
  213. package/dist/run-tags-cli.js +35 -0
  214. package/dist/run-tags-cli.js.map +1 -0
  215. package/dist/self-heal-adapter.js +3 -1
  216. package/dist/self-heal-adapter.js.map +1 -1
  217. package/dist/site-cli.d.ts +1 -1
  218. package/dist/site-cli.js +24 -1
  219. package/dist/site-cli.js.map +1 -1
  220. package/dist/source-cli.js +4 -2
  221. package/dist/source-cli.js.map +1 -1
  222. package/dist/source-run-api.js +17 -7
  223. package/dist/source-run-api.js.map +1 -1
  224. package/dist/suite-explore-options.d.ts +14 -0
  225. package/dist/suite-explore-options.js +7 -0
  226. package/dist/suite-explore-options.js.map +1 -1
  227. package/dist/sweep-api.d.ts +266 -0
  228. package/dist/sweep-api.js +828 -0
  229. package/dist/sweep-api.js.map +1 -0
  230. package/dist/sweep-cli.d.ts +9 -0
  231. package/dist/sweep-cli.js +115 -0
  232. package/dist/sweep-cli.js.map +1 -0
  233. package/dist/target-config.d.ts +5 -2
  234. package/dist/target-config.js +15 -0
  235. package/dist/target-config.js.map +1 -1
  236. package/dist/usability-capture.js +6 -0
  237. package/dist/usability-capture.js.map +1 -1
  238. package/dist/ux-cli.js +3 -1
  239. package/dist/ux-cli.js.map +1 -1
  240. package/dist/ux-usability.d.ts +9 -3
  241. package/dist/ux-usability.js +6 -4
  242. package/dist/ux-usability.js.map +1 -1
  243. package/dist/verify-fix-cli.js +4 -2
  244. package/dist/verify-fix-cli.js.map +1 -1
  245. package/package.json +13 -13
  246. package/skills/jevitate-demo/SKILL.md +5 -2
  247. package/skills/jevitate-explore/SKILL.md +6 -2
  248. package/skills/jevitate-getting-started/SKILL.md +12 -0
  249. package/skills/jevitate-run-journey/SKILL.md +17 -4
  250. package/skills/jevitate-test-campaign/SKILL.md +26 -5
@@ -0,0 +1,300 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { userInfo } from "node:os";
3
+ import { createInterface } from "node:readline/promises";
4
+ import { APPROVAL_CHANNELS, } from "@jevitate/journey";
5
+ /**
6
+ * #437 — approval provenance and the human confirmation on every approval path (`journey promote`,
7
+ * `demo approve`, `persona approve`, `job approve`, and the `--accept-*` waivers given with them).
8
+ *
9
+ * Three layers, each guaranteeing exactly what it says (docs/catalog.md "What 'human approval'
10
+ * guarantees"):
11
+ * 1. provenance (DETECTION): every approval records how it was made — `tty` | `non-interactive` |
12
+ * `mcp` | `ci`, the NAMES of agent/CI markers found in the environment, the OS user. A determined
13
+ * process can fake all of it.
14
+ * 2. the typed confirmation (FRICTION): a CLI approval needs a real TTY and the item's id (or the
15
+ * first 8 characters of its content hash) typed back; without one it is refused
16
+ * (`E_APPROVAL_NEEDS_HUMAN`, exit 64). `--non-interactive-approval "<reason>"` is the scripted
17
+ * escape hatch: allowed, and recorded as `non-interactive` (or `ci`) — never as a person's.
18
+ * 3. git review (ENFORCEMENT): CODEOWNERS on `.jevitate/` + branch protection, and
19
+ * `jevitate check --require-approvals` in CI (`approvalsReport` below).
20
+ */
21
+ /**
22
+ * Agent-harness markers: environment variables a coding agent's shell sets. Only the NAME of a
23
+ * marker is ever recorded (never its value). Kept conservative and documented in docs/catalog.md:
24
+ * - `CLAUDECODE`, `CLAUDE_CODE_*` — Claude Code (`CLAUDECODE=1`, `CLAUDE_CODE_ENTRYPOINT`, …)
25
+ * - `CODEX_*` — OpenAI Codex CLI (`CODEX_SANDBOX`, `CODEX_SANDBOX_NETWORK_DISABLED`, …)
26
+ * - `CURSOR_*` — Cursor (`CURSOR_AGENT` in its agent's terminal; `CURSOR_TRACE_ID` in its editor)
27
+ * - `AIDER_*` — aider
28
+ * - `GEMINI_CLI` — Gemini CLI
29
+ * A marker is a hint, not a verdict: a person may run a terminal inside an editor that sets one.
30
+ */
31
+ export const AGENT_ENV_MARKERS = [
32
+ { name: "CLAUDECODE", prefix: false },
33
+ { name: "CLAUDE_CODE_", prefix: true },
34
+ { name: "CODEX_", prefix: true },
35
+ { name: "CURSOR_", prefix: true },
36
+ { name: "AIDER_", prefix: true },
37
+ { name: "GEMINI_CLI", prefix: false },
38
+ ];
39
+ /** CI markers: an escape-hatch approval under one of these is recorded as channel `ci`. */
40
+ export const CI_ENV_MARKERS = ["CI", "GITHUB_ACTIONS", "GITLAB_CI", "BUILDKITE", "CIRCLECI", "JENKINS_URL", "TF_BUILD"];
41
+ const STDIN_NOT_TTY = "stdin-not-tty";
42
+ const STDOUT_NOT_TTY = "stdout-not-tty";
43
+ const MAX_SIGNALS = 20;
44
+ function isSet(value) {
45
+ if (value === undefined)
46
+ return false;
47
+ const v = value.trim().toLowerCase();
48
+ return v !== "" && v !== "0" && v !== "false";
49
+ }
50
+ /** The agent/CI marker NAMES set in `env`, then `stdin-not-tty` / `stdout-not-tty`. Never a value. */
51
+ export function detectAgentSignals(env, tty) {
52
+ const names = Object.keys(env)
53
+ .filter((k) => isSet(env[k]) && /^[A-Za-z0-9_-]{1,64}$/.test(k))
54
+ .filter((k) => CI_ENV_MARKERS.includes(k) || AGENT_ENV_MARKERS.some((m) => (m.prefix ? k.startsWith(m.name) : k === m.name)))
55
+ .sort();
56
+ return [...names.slice(0, MAX_SIGNALS), ...(tty.stdin ? [] : [STDIN_NOT_TTY]), ...(tty.stdout ? [] : [STDOUT_NOT_TTY])];
57
+ }
58
+ /** The OS user name — never an email (a `user@domain` login keeps only its user part). */
59
+ export function osUserName() {
60
+ try {
61
+ const name = userInfo().username.split("@")[0]?.trim() ?? "";
62
+ return name === "" ? undefined : name.slice(0, 256);
63
+ }
64
+ catch {
65
+ return undefined; // no passwd entry (a container's arbitrary uid): the provenance names no user
66
+ }
67
+ }
68
+ // ── The MCP channel ──────────────────────────────────────────────────────────────────────────
69
+ const mcpScope = new AsyncLocalStorage();
70
+ /** Runs `fn` as an MCP tool call: every approval it makes is recorded as channel `mcp` (mcp-cli-runner.ts). */
71
+ export function runAsMcpInvocation(fn) {
72
+ return mcpScope.run(true, fn);
73
+ }
74
+ /** True inside `runAsMcpInvocation`. */
75
+ export function inMcpInvocation() {
76
+ return mcpScope.getStore() === true;
77
+ }
78
+ /** A CLI approval with no TTY to confirm on, and no `--non-interactive-approval`. Exit 64. */
79
+ export class ApprovalNeedsHumanError extends Error {
80
+ code = "E_APPROVAL_NEEDS_HUMAN";
81
+ }
82
+ /** The typed confirmation did not match: nothing was approved. Exit 64. */
83
+ export class ApprovalNotConfirmedError extends Error {
84
+ code = "E_APPROVAL_NOT_CONFIRMED";
85
+ }
86
+ /** A bad `--non-interactive-approval` / `--allow-channels` argument. Exit 64. */
87
+ export class ApprovalArgsError extends Error {
88
+ code = "E_APPROVAL_ARGS";
89
+ }
90
+ /** The refusal (code, message) of an approval error, or null for any other error. */
91
+ export function approvalRefusal(err) {
92
+ if (err instanceof ApprovalNeedsHumanError || err instanceof ApprovalNotConfirmedError || err instanceof ApprovalArgsError)
93
+ return { code: err.code, message: err.message };
94
+ return null;
95
+ }
96
+ function approveCommand(r) {
97
+ return r.kind === "journey" ? `jevitate journey promote ${r.id}` : r.kind === "demo" ? `jevitate demo approve ${r.id}` : `jevitate ${r.kind} approve ${r.id}`;
98
+ }
99
+ /** The refusal text: why, and how a person approves. */
100
+ export function needsHumanMessage(r) {
101
+ return (`approving ${r.kind === "demo" ? "demo" : r.kind} '${r.id}' needs a person: there is no interactive terminal to confirm it on (stdin/stdout is not a TTY), so nothing was approved. ` +
102
+ `A person approves by running \`${approveCommand(r)}\` in their own terminal and typing the ${r.kind === "demo" ? "Journey" : r.kind} id (or the first 8 characters of the content hash its review sheet shows) when asked. ` +
103
+ `A coding agent hands this approval to a person — it never approves its own work. ` +
104
+ `A scripted setup may pass --non-interactive-approval "<reason>": it is recorded as a non-interactive approval, never as a person's, and \`jevitate check --require-approvals\` fails it.`);
105
+ }
106
+ function confirmed(answer, r) {
107
+ const a = answer.trim();
108
+ if (a === "")
109
+ return false;
110
+ if (a === r.id)
111
+ return true;
112
+ const lower = a.toLowerCase();
113
+ return lower.length >= 8 && /^[0-9a-f]+$/.test(lower) && r.contentHash.toLowerCase().startsWith(lower);
114
+ }
115
+ /** The real terminal prompt: the question on stderr (stdout may carry --json), the answer from stdin. */
116
+ async function terminalPrompt(question) {
117
+ const rl = createInterface({ input: process.stdin, output: process.stderr, terminal: true });
118
+ try {
119
+ return await new Promise((resolveAnswer) => {
120
+ rl.once("close", () => resolveAnswer("")); // Ctrl-D / a closed stdin: an empty answer, so not confirmed
121
+ rl.question(question).then(resolveAnswer, () => resolveAnswer(""));
122
+ });
123
+ }
124
+ finally {
125
+ rl.close();
126
+ }
127
+ }
128
+ function provenanceOf(channel, deps, reason) {
129
+ const env = deps?.env ?? process.env;
130
+ const signals = detectAgentSignals(env, {
131
+ stdin: deps?.stdinIsTTY?.() ?? process.stdin.isTTY === true,
132
+ stdout: deps?.stdoutIsTTY?.() ?? process.stdout.isTTY === true,
133
+ });
134
+ const user = deps?.user === undefined ? osUserName() : deps.user();
135
+ return { channel, agentSignals: signals, ...(user === undefined ? {} : { user }), ...(reason === undefined ? {} : { reason }) };
136
+ }
137
+ /** True when a CI marker is among the detected signals. */
138
+ function underCi(signals) {
139
+ return signals.some((s) => CI_ENV_MARKERS.includes(s));
140
+ }
141
+ /** Validates `--non-interactive-approval`: a reason is required (it is recorded). */
142
+ export function checkNonInteractiveReason(reason) {
143
+ if (reason !== undefined && reason.trim() === "")
144
+ 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
+ * 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);
149
+ * - `--non-interactive-approval "<reason>"`: no prompt, recorded as `non-interactive` (or `ci` under a CI marker) with the reason;
150
+ * - otherwise a real TTY is required (else `E_APPROVAL_NEEDS_HUMAN`), and the person types the id or
151
+ * the first 8 characters of the content hash — once for the approval, once per waiver
152
+ * (else `E_APPROVAL_NOT_CONFIRMED`); recorded as `tty`.
153
+ */
154
+ export function makeApprovalConfirm(deps, opts = {}) {
155
+ return async (r) => {
156
+ if (inMcpInvocation())
157
+ return provenanceOf("mcp", deps);
158
+ const reason = opts.nonInteractiveReason?.trim();
159
+ if (reason !== undefined) {
160
+ checkNonInteractiveReason(reason);
161
+ const p = provenanceOf("non-interactive", deps, reason);
162
+ return underCi(p.agentSignals) ? { ...p, channel: "ci" } : p;
163
+ }
164
+ const interactive = (deps?.stdinIsTTY?.() ?? process.stdin.isTTY === true) && (deps?.stdoutIsTTY?.() ?? process.stdout.isTTY === true);
165
+ if (!interactive)
166
+ throw new ApprovalNeedsHumanError(needsHumanMessage(r));
167
+ const ask = deps?.prompt ?? terminalPrompt;
168
+ 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: `);
170
+ if (!confirmed(first, r))
171
+ throw new ApprovalNotConfirmedError(`the typed confirmation did not match ${r.kind} '${r.id}' or its content hash — nothing was approved`);
172
+ for (const w of r.waivers) {
173
+ const answer = await ask(`Waiver ${w.flag} "${w.reason}"${w.detail === undefined || w.detail === "" ? "" : ` (${w.detail})`}: type the id or the hash prefix again to confirm this waiver: `);
174
+ if (!confirmed(answer, r))
175
+ throw new ApprovalNotConfirmedError(`the waiver ${w.flag} was not confirmed — nothing was approved`);
176
+ }
177
+ return provenanceOf("tty", deps);
178
+ };
179
+ }
180
+ /**
181
+ * The provenance of an approval made through the programmatic API with no confirmation step
182
+ * (a caller of `promoteJourney` / `approveCatalogItem` that passes no `confirm`): recorded as
183
+ * `non-interactive`, so it never passes for a person's approval.
184
+ */
185
+ export function programmaticProvenance() {
186
+ return provenanceOf("non-interactive", undefined, "approved through the programmatic API (no confirmation step)");
187
+ }
188
+ // ── Describing ───────────────────────────────────────────────────────────────────────────────
189
+ /** One phrase: "approved at a terminal by mc (typed confirmation)", "approved non-interactively (likely an agent: CLAUDECODE)", … */
190
+ export function describeProvenance(p) {
191
+ if (p === undefined)
192
+ return "approved before provenance was recorded (channel unknown)";
193
+ const markers = p.agentSignals.filter((s) => s !== STDIN_NOT_TTY && s !== STDOUT_NOT_TTY);
194
+ const by = p.user === undefined ? "" : ` by ${p.user}`;
195
+ const reason = p.reason === undefined ? "" : ` — reason: "${p.reason}"`;
196
+ switch (p.channel) {
197
+ case "tty":
198
+ return `approved at a terminal${by} (typed confirmation)${markers.length === 0 ? "" : ` — agent markers present: ${markers.join(", ")}`}`;
199
+ case "mcp":
200
+ return `approved over MCP — an agent's approval${markers.length === 0 ? "" : ` (${markers.join(", ")})`}`;
201
+ case "ci":
202
+ return `approved non-interactively in CI${markers.length === 0 ? "" : ` (${markers.join(", ")})`}${reason}`;
203
+ case "non-interactive":
204
+ return `approved non-interactively${markers.length === 0 ? "" : ` (likely an agent: ${markers.join(", ")})`}${by}${reason}`;
205
+ }
206
+ }
207
+ // ── Enforcement: --require-approvals ─────────────────────────────────────────────────────────
208
+ /** `--allow-channels tty,ci` → the channels; default `tty`. An unknown channel is refused. */
209
+ export function parseAllowedChannels(list) {
210
+ if (list === undefined)
211
+ return ["tty"];
212
+ const parts = list
213
+ .split(",")
214
+ .map((s) => s.trim())
215
+ .filter((s) => s !== "");
216
+ if (parts.length === 0)
217
+ throw new ApprovalArgsError(`--allow-channels needs at least one of ${APPROVAL_CHANNELS.join(", ")}`);
218
+ for (const p of parts) {
219
+ if (!APPROVAL_CHANNELS.includes(p))
220
+ throw new ApprovalArgsError(`--allow-channels: unknown channel '${p}' (one of ${APPROVAL_CHANNELS.join(", ")})`);
221
+ }
222
+ return [...new Set(parts)];
223
+ }
224
+ /**
225
+ * #437: every recorded approval in the catalogs (promoted Journeys, approved personas and jobs) and
226
+ * how it was made; with `allowed`, the violations — a promoted Journey with no approval, an approval
227
+ * that is stale (the item changed since), one recorded before provenance existed, or one made over
228
+ * a channel not allowed.
229
+ */
230
+ export function approvalsReport(catalogs, allowed) {
231
+ const records = [];
232
+ const violations = [];
233
+ const seen = new Set();
234
+ const judge = (kind, id, at, stale, provenance, missing) => {
235
+ const key = `${kind}:${id}`;
236
+ if (seen.has(key))
237
+ return;
238
+ seen.add(key);
239
+ records.push({
240
+ kind,
241
+ id,
242
+ ...(at === undefined ? {} : { at }),
243
+ stale,
244
+ ...(provenance === undefined ? {} : { provenance }),
245
+ how: missing ? "promoted with no recorded approval" : describeProvenance(provenance),
246
+ });
247
+ if (allowed === undefined)
248
+ return;
249
+ if (missing) {
250
+ violations.push({ kind, id, problem: "missing", message: `${kind} '${id}' is promoted with no recorded approval — a person approves it: ${kind === "journey" ? `jevitate journey promote ${id}` : `jevitate ${kind} approve ${id}`}` });
251
+ return;
252
+ }
253
+ if (stale)
254
+ violations.push({ kind, id, problem: "stale", message: `${kind} '${id}' changed since its approval (content hash mismatch) — it needs re-review and a new approval` });
255
+ if (provenance === undefined) {
256
+ violations.push({ kind, id, problem: "no-provenance", message: `${kind} '${id}' was approved before provenance was recorded — a person re-approves it at a terminal` });
257
+ }
258
+ else if (!allowed.includes(provenance.channel)) {
259
+ violations.push({
260
+ kind,
261
+ id,
262
+ problem: "channel",
263
+ message: `${kind} '${id}': ${describeProvenance(provenance)} — channel '${provenance.channel}' is not allowed (allowed: ${allowed.join(", ")}); a person re-approves it at a terminal`,
264
+ });
265
+ }
266
+ };
267
+ for (const c of catalogs) {
268
+ for (const p of c.personas)
269
+ if (p.approval !== undefined)
270
+ judge("persona", p.id, p.approval.at, p.status === "stale", p.approval.provenance, false);
271
+ for (const j of c.jobs)
272
+ if (j.approval !== undefined)
273
+ judge("job", j.id, j.approval.at, j.status === "stale", j.approval.provenance, false);
274
+ for (const j of c.journeys) {
275
+ if (!j.promoted)
276
+ continue;
277
+ if (j.approval === undefined)
278
+ judge("journey", j.id, undefined, false, undefined, true);
279
+ else
280
+ judge("journey", j.id, j.approval.at, j.approval.contentHash !== j.contentHash, j.approval.provenance, false);
281
+ }
282
+ }
283
+ return { records, ...(allowed === undefined ? {} : { requirement: { allowedChannels: [...allowed], violations } }) };
284
+ }
285
+ /** The approvals section of `catalog status` (text). */
286
+ export function renderApprovals(report) {
287
+ const lines = ["", "APPROVALS"];
288
+ if (report.records.length === 0)
289
+ lines.push(" - none recorded");
290
+ for (const r of report.records)
291
+ lines.push(` - ${r.kind} ${r.id}: ${r.how}${r.at === undefined ? "" : ` (${r.at})`}${r.stale ? " — STALE" : ""}`);
292
+ if (report.requirement !== undefined) {
293
+ const v = report.requirement.violations;
294
+ lines.push("", `REQUIRE APPROVALS (allowed: ${report.requirement.allowedChannels.join(", ")}): ${v.length === 0 ? "PASS" : `FAIL — ${v.length} violation(s)`}`);
295
+ for (const x of v)
296
+ lines.push(` - ${x.message}`);
297
+ }
298
+ return `${lines.join("\n")}\n`;
299
+ }
300
+ //# sourceMappingURL=approval-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-provenance.js","sourceRoot":"","sources":["../src/approval-provenance.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { JEV_PROVIDER_FLAG_HELP, jevProviderArg } from "./cli-shared.js";
1
2
  import { existsSync } from "node:fs";
2
3
  import { MissingCredentialError } from "@jevitate/ai-core";
3
4
  import { FixtureNotFoundError, UnauthorizedExploreTargetError } from "@jevitate/explore";
@@ -13,12 +14,10 @@ import { GOAL_RUN_OPTIONS, GoalRunFlagError, resolveGoalRunFlags } from "./goal-
13
14
  */
14
15
  const AUTHOR_GOAL_RUN_FLAGS = [
15
16
  "successWhen", "allowVacuousChecks", "actionDeltas", "secret", "secretField", "totp", "typeFixture", "fixture",
16
- "saveStorageState", "replyWaitMs", "replyQuietMs", "replyCeilingMs", "replyMaxChars", "jobWaitMs", "deny", "paid",
17
+ "saveStorageState", "replyWaitMs", "replyQuietMs", "replyCeilingMs", "replyMaxChars", "jobWaitMs", "deny", "paid", "allowControl",
17
18
  "allowDestructive", "dialogs", "readRpc", "hangReplays", "settleIgnore", "longPollMs", "apiPrefix", "ignoreNoProgress",
18
19
  "allowSecretCmd", "secretCmdAttempts",
19
20
  ];
20
- /** `reloadThen:<check>` → the inner `<check>` (what the Journey CAN assert). */
21
- const innerOfReloadThen = (spec) => spec.replace(/^\s*reloadThen:/, "");
22
21
  /** #369: one take's diagnostics as human lines (the paths a person opens next). */
23
22
  function takeLines(label, d) {
24
23
  const lines = [` ${label}: ${d.outcome}${d.stop === undefined ? "" : ` (stop: ${d.stop})`}${d.actions === undefined ? "" : ` · ${d.actions} action(s), ${d.decisions ?? 0} decision(s)`}`];
@@ -69,8 +68,8 @@ export function registerAuthorJourneyCommands(program, deps) {
69
68
  .description("Jev-driving authors a promotable Journey (authoring plane); never auto-promoted"))
70
69
  .option("--url <url>", "target URL (must be an authorized origin)")
71
70
  .option("--goal <text>", "natural-language goal")
72
- .option("--success <spec>", "independent success check (repeatable; all must hold), any explore --success kind but reloadThen, e.g. urlIncludes:/confirmed or " +
73
- "'requestMade:POST /api/save': a page check becomes the Journey's last assert step, a requestMade/responseStatus check is re-checked over every replay's requests", (v, prev) => [...prev, v], [])
71
+ .option("--success <spec>", "independent success check (repeatable; all must hold), any explore --success kind, e.g. urlIncludes:/confirmed, " +
72
+ "'reloadThen:textIncludes:css=main|Saved' or 'responseStatus:POST /api/save=2xx': every check is kept as the Journey's end state and re-checked after every replay's last step", (v, prev) => [...prev, v], [])
74
73
  .option("--id <id>", "journey id (used for the <id>.json filename in the store)")
75
74
  .option("--name <name>", "human-readable journey name")
76
75
  .option("--takes <n>", "corroborating takes incl. discovery (default 1)", positiveIntArg, 1)
@@ -82,6 +81,7 @@ export function registerAuthorJourneyCommands(program, deps) {
82
81
  .option("--out <dir>", "directory each take's result, transcript and Recording are written to (default: .jevitate/logs/<date>)")
83
82
  .option("--real", "use live Jev + OpenRouter gateways (requires keys)", false)
84
83
  .option("--fake-ai", "use deterministic fake gateways (pipeline smoke only)", false)
84
+ .option("--jev-provider <provider>", JEV_PROVIDER_FLAG_HELP, jevProviderArg)
85
85
  .option("--json", "emit a JSON envelope");
86
86
  // #369: every take is `explore`'s goal run, so author takes its run-shaping flags too.
87
87
  for (const name of AUTHOR_GOAL_RUN_FLAGS)
@@ -93,7 +93,8 @@ export function registerAuthorJourneyCommands(program, deps) {
93
93
  "writing its own result, transcript and Recording (under --out). A take that does not reach the goal",
94
94
  "is reported with its stop reason, its checks' verdicts and those paths. A field code types itself",
95
95
  "(--secret-field/--totp) becomes a secret Journey parameter (secret1, …), passed with --param at replay.",
96
- "A reloadThen: check is refused before any browser opens: author with its inner check instead.",
96
+ "Every --success check is kept as the Journey's end state (metadata.endState); each step's expect comes from what it",
97
+ "changed (a write's responseStatus, text it added — richer with --action-deltas), never from its own target.",
97
98
  ].join("\n"))
98
99
  .action(async function () {
99
100
  const o = this.opts();
@@ -105,19 +106,11 @@ export function registerAuthorJourneyCommands(program, deps) {
105
106
  emitJson(program, fail("E_AUTHOR_ARGS", "--url, --goal, --success, --id and --name are all required"));
106
107
  return;
107
108
  }
108
- // #322: every kind `explore --success` takes — page and network checks — but reloadThen.
109
+ // #322/#400: every kind `explore --success` takes — page, reloadThen and network checks.
109
110
  const successChecks = [];
110
111
  try {
111
- for (const spec of o.success) {
112
- const check = parseSuccessSpec(spec);
113
- if (check.kind === "reloadThen") {
114
- // #369: refused here, before any gateway or browser — a Journey has no reload step to re-check after.
115
- throw new Error(`--success ${JSON.stringify(spec)}: a reloadThen check can't be authored into a Journey (a Journey has no reload step); nothing was run. ` +
116
- `Author with its inner check (--success ${JSON.stringify(innerOfReloadThen(spec))}) and prove persistence with \`jevitate explore --success ${JSON.stringify(spec)}\`, ` +
117
- "or use a requestMade/responseStatus check");
118
- }
119
- successChecks.push(check);
120
- }
112
+ for (const spec of o.success)
113
+ successChecks.push(parseSuccessSpec(spec));
121
114
  }
122
115
  catch (err) {
123
116
  emitJson(program, fail("E_EXPLORE_ASSERTION", String(err instanceof Error ? err.message : err)));
@@ -148,7 +141,7 @@ export function registerAuthorJourneyCommands(program, deps) {
148
141
  let gen;
149
142
  let authorUsage;
150
143
  try {
151
- ({ judge, gen, usage: authorUsage } = await buildExploreGateways(deps, { real: o.real ?? false, fakeAi: o.fakeAi ?? false }));
144
+ ({ judge, gen, usage: authorUsage } = await buildExploreGateways(deps, { real: o.real ?? false, fakeAi: o.fakeAi ?? false, jevProvider: o.jevProvider }));
152
145
  }
153
146
  catch (err) {
154
147
  if (err instanceof MissingCredentialError || err instanceof GatewaySelectionError) {
@@ -1 +1 @@
1
- {"version":3,"file":"author-journey-cli.js","sourceRoot":"","sources":["../src/author-journey-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"author-journey-cli.js","sourceRoot":"","sources":["../src/author-journey-cli.ts"],"names":[],"mappings":"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"}