@jevitate/cli 0.7.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 (220) 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 +4 -2
  8. package/dist/author-journey-cli.js.map +1 -1
  9. package/dist/bin.js +29019 -22450
  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 +82 -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 +15 -0
  51. package/dist/demo-aspect-api.js +26 -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/exit-codes.js +4 -0
  56. package/dist/exit-codes.js.map +1 -1
  57. package/dist/explore-adversarial.d.ts +3 -1
  58. package/dist/explore-adversarial.js +2 -2
  59. package/dist/explore-adversarial.js.map +1 -1
  60. package/dist/explore-author.js +5 -2
  61. package/dist/explore-author.js.map +1 -1
  62. package/dist/explore-cli.js +144 -9
  63. package/dist/explore-cli.js.map +1 -1
  64. package/dist/explore-coverage.d.ts +6 -2
  65. package/dist/explore-coverage.js +4 -3
  66. package/dist/explore-coverage.js.map +1 -1
  67. package/dist/explore-feature.d.ts +3 -1
  68. package/dist/explore-feature.js +2 -2
  69. package/dist/explore-feature.js.map +1 -1
  70. package/dist/explore-goal.d.ts +37 -6
  71. package/dist/explore-goal.js +61 -48
  72. package/dist/explore-goal.js.map +1 -1
  73. package/dist/explore-shared.d.ts +12 -7
  74. package/dist/explore-shared.js +9 -1
  75. package/dist/explore-shared.js.map +1 -1
  76. package/dist/goal-run-flags.d.ts +2 -0
  77. package/dist/goal-run-flags.js +8 -1
  78. package/dist/goal-run-flags.js.map +1 -1
  79. package/dist/http-5xx-outcome.d.ts +8 -3
  80. package/dist/http-5xx-outcome.js +5 -15
  81. package/dist/http-5xx-outcome.js.map +1 -1
  82. package/dist/init-cli.d.ts +7 -0
  83. package/dist/init-cli.js +79 -9
  84. package/dist/init-cli.js.map +1 -1
  85. package/dist/init-codeowners.d.ts +39 -0
  86. package/dist/init-codeowners.js +91 -0
  87. package/dist/init-codeowners.js.map +1 -0
  88. package/dist/init-keys.d.ts +3 -1
  89. package/dist/init-keys.js +20 -8
  90. package/dist/init-keys.js.map +1 -1
  91. package/dist/init-skills.d.ts +85 -7
  92. package/dist/init-skills.js +303 -36
  93. package/dist/init-skills.js.map +1 -1
  94. package/dist/jev-advisor.d.ts +72 -0
  95. package/dist/jev-advisor.js +172 -0
  96. package/dist/jev-advisor.js.map +1 -0
  97. package/dist/journey-api.d.ts +34 -2
  98. package/dist/journey-api.js +51 -20
  99. package/dist/journey-api.js.map +1 -1
  100. package/dist/journey-cli.js +156 -12
  101. package/dist/journey-cli.js.map +1 -1
  102. package/dist/journey-review-api.d.ts +19 -0
  103. package/dist/journey-review-api.js +46 -0
  104. package/dist/journey-review-api.js.map +1 -0
  105. package/dist/journey-review-store.d.ts +16 -0
  106. package/dist/journey-review-store.js +95 -0
  107. package/dist/journey-review-store.js.map +1 -0
  108. package/dist/journey-review.d.ts +47 -0
  109. package/dist/journey-review.js +499 -0
  110. package/dist/journey-review.js.map +1 -0
  111. package/dist/journey-verify.js +14 -1
  112. package/dist/journey-verify.js.map +1 -1
  113. package/dist/key-report.d.ts +20 -5
  114. package/dist/key-report.js +32 -9
  115. package/dist/key-report.js.map +1 -1
  116. package/dist/kill-signal.js +10 -2
  117. package/dist/kill-signal.js.map +1 -1
  118. package/dist/load-cli.js +4 -2
  119. package/dist/load-cli.js.map +1 -1
  120. package/dist/log-classes.d.ts +73 -0
  121. package/dist/log-classes.js +167 -0
  122. package/dist/log-classes.js.map +1 -0
  123. package/dist/log-correlation.d.ts +29 -10
  124. package/dist/log-correlation.js +44 -21
  125. package/dist/log-correlation.js.map +1 -1
  126. package/dist/login-cli.d.ts +15 -0
  127. package/dist/login-cli.js +116 -0
  128. package/dist/login-cli.js.map +1 -0
  129. package/dist/logs-cli.js +3 -1
  130. package/dist/logs-cli.js.map +1 -1
  131. package/dist/mcp-api.d.ts +1 -0
  132. package/dist/mcp-api.js +61 -12
  133. package/dist/mcp-api.js.map +1 -1
  134. package/dist/mcp-cli-runner.d.ts +2 -0
  135. package/dist/mcp-cli-runner.js +3 -1
  136. package/dist/mcp-cli-runner.js.map +1 -1
  137. package/dist/mcp-cli-tools.d.ts +5 -0
  138. package/dist/mcp-cli-tools.js +158 -23
  139. package/dist/mcp-cli-tools.js.map +1 -1
  140. package/dist/mission-cli.js +8 -4
  141. package/dist/mission-cli.js.map +1 -1
  142. package/dist/mission-journal.d.ts +4 -1
  143. package/dist/mission-journal.js +9 -3
  144. package/dist/mission-journal.js.map +1 -1
  145. package/dist/mission-queue-cli.js +21 -2
  146. package/dist/mission-queue-cli.js.map +1 -1
  147. package/dist/mission-queue-runner.d.ts +6 -0
  148. package/dist/mission-queue-runner.js +33 -3
  149. package/dist/mission-queue-runner.js.map +1 -1
  150. package/dist/multi-run-cli.d.ts +7 -1
  151. package/dist/multi-run-cli.js +10 -3
  152. package/dist/multi-run-cli.js.map +1 -1
  153. package/dist/multi-run.d.ts +38 -3
  154. package/dist/multi-run.js +115 -23
  155. package/dist/multi-run.js.map +1 -1
  156. package/dist/persona-login.d.ts +199 -0
  157. package/dist/persona-login.js +574 -0
  158. package/dist/persona-login.js.map +1 -0
  159. package/dist/pre-approval.d.ts +98 -0
  160. package/dist/pre-approval.js +175 -0
  161. package/dist/pre-approval.js.map +1 -0
  162. package/dist/program.js +10 -0
  163. package/dist/program.js.map +1 -1
  164. package/dist/project-dir.d.ts +2 -1
  165. package/dist/project-dir.js +3 -1
  166. package/dist/project-dir.js.map +1 -1
  167. package/dist/readiness.d.ts +29 -0
  168. package/dist/readiness.js +291 -0
  169. package/dist/readiness.js.map +1 -0
  170. package/dist/regression-cli.js +4 -2
  171. package/dist/regression-cli.js.map +1 -1
  172. package/dist/report-api.d.ts +24 -2
  173. package/dist/report-api.js +33 -5
  174. package/dist/report-api.js.map +1 -1
  175. package/dist/report-cli.js +8 -1
  176. package/dist/report-cli.js.map +1 -1
  177. package/dist/result-schema.d.ts +12 -0
  178. package/dist/result-schema.js +8 -0
  179. package/dist/result-schema.js.map +1 -1
  180. package/dist/run-index.d.ts +4 -2
  181. package/dist/run-index.js +3 -1
  182. package/dist/run-index.js.map +1 -1
  183. package/dist/run-key-preflight.d.ts +2 -1
  184. package/dist/run-key-preflight.js +3 -2
  185. package/dist/run-key-preflight.js.map +1 -1
  186. package/dist/run-metadata.d.ts +26 -0
  187. package/dist/run-metadata.js +41 -0
  188. package/dist/run-metadata.js.map +1 -0
  189. package/dist/run-tags-cli.d.ts +12 -0
  190. package/dist/run-tags-cli.js +35 -0
  191. package/dist/run-tags-cli.js.map +1 -0
  192. package/dist/site-cli.d.ts +1 -1
  193. package/dist/site-cli.js +24 -1
  194. package/dist/site-cli.js.map +1 -1
  195. package/dist/source-cli.js +4 -2
  196. package/dist/source-cli.js.map +1 -1
  197. package/dist/suite-explore-options.d.ts +14 -0
  198. package/dist/suite-explore-options.js +7 -0
  199. package/dist/suite-explore-options.js.map +1 -1
  200. package/dist/sweep-api.d.ts +266 -0
  201. package/dist/sweep-api.js +828 -0
  202. package/dist/sweep-api.js.map +1 -0
  203. package/dist/sweep-cli.d.ts +9 -0
  204. package/dist/sweep-cli.js +115 -0
  205. package/dist/sweep-cli.js.map +1 -0
  206. package/dist/target-config.d.ts +5 -2
  207. package/dist/target-config.js +15 -0
  208. package/dist/target-config.js.map +1 -1
  209. package/dist/ux-cli.js +3 -1
  210. package/dist/ux-cli.js.map +1 -1
  211. package/dist/ux-usability.d.ts +9 -3
  212. package/dist/ux-usability.js +5 -3
  213. package/dist/ux-usability.js.map +1 -1
  214. package/dist/verify-fix-cli.js +4 -2
  215. package/dist/verify-fix-cli.js.map +1 -1
  216. package/package.json +12 -12
  217. package/skills/jevitate-demo/SKILL.md +5 -2
  218. package/skills/jevitate-getting-started/SKILL.md +12 -0
  219. package/skills/jevitate-run-journey/SKILL.md +17 -4
  220. package/skills/jevitate-test-campaign/SKILL.md +26 -5
package/dist/ai-cli.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Command } from "commander";
2
2
  import { type CredentialKey, type SecureKeyIO, type GenerationPort, type CatalogModel, type ModelConstraints, type KeyVerdict, type VerifyFetch } from "@jevitate/ai-core";
3
3
  import type { CliDeps } from "./program.js";
4
- import { type KeySourceReport, type KeyVerificationReport } from "./key-report.js";
4
+ import { type JevRouteReport, type KeySourceReport, type KeyVerificationReport } from "./key-report.js";
5
5
  /**
6
6
  * Additive, optional wiring for `@jevitate/ai-core` threaded through `CliDeps`.
7
7
  * Every field is injectable so `ai-cli.test.ts` never touches real env,
@@ -47,5 +47,7 @@ export interface FeatureKeyStatus {
47
47
  sources: KeySourceReport[];
48
48
  /** #291: the live check per key (absent with --no-verify). */
49
49
  verification?: KeyVerificationReport[];
50
+ /** #429 (judgment only): the Jev route judgment will use — provider, key, model, why; null when no key resolves one. */
51
+ route?: JevRouteReport | null;
50
52
  }
51
53
  export declare function registerAiCommands(program: Command, deps: CliDeps): void;
package/dist/ai-cli.js CHANGED
@@ -1,4 +1,5 @@
1
- import { envCredentialStore, ALL_CREDENTIAL_KEYS, FEATURE_KEYS, requireKeys, MissingCredentialError, FakeGenerationGateway, OpenRouterGenerationGateway, GEN_TASKS, UsageTracker, collectKeys, verifyKey, KEY_PROVIDERS, } from "@jevitate/ai-core";
1
+ import { envCredentialStore, ALL_CREDENTIAL_KEYS, requireKeys, MissingCredentialError, FakeGenerationGateway, OpenRouterGenerationGateway, GEN_TASKS, UsageTracker, collectKeys, verifyKey, KEY_PROVIDERS, featureKeys, jevProviderOverride, } from "@jevitate/ai-core";
2
+ import { jevProviderArg } from "./cli-shared.js";
2
3
  import { ok, fail } from "./envelope.js";
3
4
  import { resolveDataDir } from "./data-dir.js";
4
5
  import { loadLocalCredentials } from "./credentials-file.js";
@@ -6,7 +7,7 @@ import { realOpenRouterCall } from "./openrouter-call.js";
6
7
  import { resolveUsagePricing } from "./usage-config.js";
7
8
  import { emitJsonOrRefusal } from "./cli-refusal.js";
8
9
  import { readMaskedLine } from "./masked-input.js";
9
- import { describeFeatureKeys, keySources, realVerifyFetch, shadowWarnings, verificationProblems, verifyFeatureKeys, } from "./key-report.js";
10
+ import { describeFeatureKeys, jevRouteReport, keySources, realVerifyFetch, shadowWarnings, verificationProblems, verifyFeatureKeys, } from "./key-report.js";
10
11
  const DEFAULT_CATALOG = [
11
12
  { id: "openai/gpt-4o-mini", promptUsdPer1k: 0.15, completionUsdPer1k: 0.6, regions: [], latencyClass: "fast", capabilities: [] },
12
13
  ];
@@ -95,18 +96,34 @@ export function registerAiCommands(program, deps) {
95
96
  ai.command("status")
96
97
  .description("which keys each AI feature uses, where each comes from (env or ~/.jevitate/credentials.json), and whether the provider accepts it (a live auth check; never prints a key)")
97
98
  .option("--no-verify", "skip the live auth check (offline / CI): report presence and source only")
99
+ .option("--jev-provider <provider>", "report judgment as it would run with this Jev provider: typesafe or openrouter (default: JEVITATE_JEV_PROVIDER, else the TypeSafe key when both are set)", jevProviderArg)
98
100
  .option("--json", "emit a JSON envelope")
99
101
  .action(async function () {
100
- const { json, verify } = this.opts();
102
+ const { json, verify, jevProvider: flag } = this.opts();
101
103
  const store = buildStore(deps.ai);
102
104
  const { env, localConfig } = credentialInputs(deps.ai);
103
105
  const fetchFn = deps.ai?.verifyFetch ?? realVerifyFetch;
106
+ let jevProvider;
107
+ try {
108
+ jevProvider = jevProviderOverride(env, flag);
109
+ }
110
+ catch (err) {
111
+ emitJsonOrRefusal(program, fail("E_INVALID_ARGS", err instanceof Error ? err.message : String(err)), 2);
112
+ return;
113
+ }
104
114
  const data = {};
105
115
  for (const feature of FEATURES) {
106
- const required = [...FEATURE_KEYS[feature]];
116
+ // #429: judgment needs EITHER Jev key — `required` names the key its route uses (both when none is set).
117
+ const required = featureKeys(feature, store, jevProvider);
107
118
  const missing = required.filter((k) => !store.detect(k));
108
- const sources = keySources(feature, env, localConfig);
109
- data[feature] = { required, missing, sources, ...(verify ? { verification: await verifyFeatureKeys(feature, store, fetchFn) } : {}) };
119
+ const sources = keySources(feature, env, localConfig, jevProvider);
120
+ data[feature] = {
121
+ required,
122
+ missing,
123
+ sources,
124
+ ...(verify ? { verification: await verifyFeatureKeys(feature, store, fetchFn, undefined, jevProvider) } : {}),
125
+ ...(feature === "judgment" ? { route: jevRouteReport(store, env, jevProvider) } : {}),
126
+ };
110
127
  }
111
128
  // A key the provider refuses (or that could not be checked) is not "ready": exit 2, never 0.
112
129
  const all = FEATURES.flatMap((f) => data[f].verification ?? []);
@@ -119,7 +136,7 @@ export function registerAiCommands(program, deps) {
119
136
  else {
120
137
  const out = program.configureOutput().writeOut;
121
138
  for (const feature of FEATURES)
122
- out?.(`${describeFeatureKeys(feature, data[feature].sources, data[feature].verification)}\n`);
139
+ out?.(`${describeFeatureKeys(feature, data[feature].sources, data[feature].verification, data[feature].route)}\n`);
123
140
  if (problems.unreachable.length > 0)
124
141
  out?.("could not reach a provider to verify a key — retry when online, or pass --no-verify to skip the check\n");
125
142
  process.exitCode = exitCode;
@@ -129,49 +146,76 @@ export function registerAiCommands(program, deps) {
129
146
  .description("enter (masked) and store the keys a feature needs in ~/.jevitate/credentials.json (0600); each key is verified with its provider before it is stored")
130
147
  .option("--replace", "prompt for a new value even when a key is already stored (rotate / replace it)")
131
148
  .option("--no-verify", "store the entered key without the live auth check (offline / CI)")
149
+ .option("--jev-provider <provider>", "judgment only: which Jev key to set up — typesafe (TYPESAFE_API_KEY, the default) or openrouter (OPENROUTER_API_KEY: Jev through OpenRouter)", jevProviderArg)
132
150
  .option("--json", "emit a JSON envelope")
133
151
  .action(async function (feature) {
134
- const { json, replace, verify } = this.opts();
152
+ const { json, replace, verify, jevProvider: flag } = this.opts();
135
153
  if (feature !== "generation" && feature !== "judgment") {
136
154
  emitJsonLine(program, fail("E_INVALID_FEATURE", `unknown feature '${feature}' — expected 'generation' or 'judgment'`));
137
155
  return;
138
156
  }
157
+ if (flag !== undefined && feature !== "judgment") {
158
+ emitJsonLine(program, fail("E_INVALID_ARGS", "--jev-provider applies to `ai setup judgment` only"));
159
+ return;
160
+ }
139
161
  try {
140
162
  const store = buildStore(deps.ai);
141
163
  const { env, localConfig } = credentialInputs(deps.ai);
164
+ // #429: judgment is satisfied by EITHER Jev key; the flag (else JEVITATE_JEV_PROVIDER) picks which one to set up.
165
+ const jevProvider = feature === "judgment" ? jevProviderOverride(env, flag) : undefined;
142
166
  const injected = deps.ai?.secureIO;
143
- const needsPrompt = replace === true || FEATURE_KEYS[feature].some((k) => !store.detect(k));
167
+ const usesNow = featureKeys(feature, store, jevProvider);
168
+ const needsPrompt = replace === true || usesNow.some((k) => !store.detect(k));
144
169
  if (injected === undefined && needsPrompt && !(deps.ai?.isInteractive?.() ?? process.stdin.isTTY === true)) {
145
- emitJsonLine(program, fail("E_AI_SETUP", `key entry needs an interactive terminal (stdin is not a TTY) — run \`jevitate ai setup ${feature}${replace === true ? " --replace" : ""}\` in a terminal, or set ${FEATURE_KEYS[feature].join(", ")} in the environment`));
170
+ const flagHint = flag === undefined ? "" : ` --jev-provider ${flag}`;
171
+ emitJsonLine(program, fail("E_AI_SETUP", `key entry needs an interactive terminal (stdin is not a TTY) — run \`jevitate ai setup ${feature}${flagHint}${replace === true ? " --replace" : ""}\` in a terminal, or set ${usesNow.join(feature === "judgment" ? " or " : ", ")} in the environment`));
146
172
  return;
147
173
  }
148
174
  const io = injected ?? realSecureIO();
149
175
  const fetchFn = deps.ai?.verifyFetch ?? realVerifyFetch;
150
176
  const gate = enteredKeyCheck(fetchFn);
151
- const collected = await collectKeys(feature, store, io, { replace: replace === true, ...(verify ? { check: gate.check } : {}) });
177
+ const collected = await collectKeys(feature, store, io, {
178
+ replace: replace === true,
179
+ ...(verify ? { check: gate.check } : {}),
180
+ ...(jevProvider === undefined ? {} : { jevProvider }),
181
+ });
152
182
  // What resolves NOW: the stored file plus what was just entered (env still wins).
153
183
  const nowLocal = { ...localConfig, ...Object.fromEntries(gate.entered) };
154
184
  const nowStore = envCredentialStore(env, nowLocal);
155
- const sources = keySources(feature, env, verify ? nowLocal : { ...localConfig, ...Object.fromEntries(collected.map((k) => [k, "set"])) });
185
+ const reportLocal = verify ? nowLocal : { ...localConfig, ...Object.fromEntries(collected.map((k) => [k, "set"])) };
186
+ const sources = keySources(feature, env, reportLocal, jevProvider);
156
187
  const warnings = shadowWarnings(collected, sources);
157
188
  // Every key the feature uses is verified, including ones already present ("nothing missing").
158
- const verification = verify ? await verifyFeatureKeys(feature, nowStore, fetchFn, gate.verdicts) : undefined;
189
+ const verification = verify ? await verifyFeatureKeys(feature, nowStore, fetchFn, gate.verdicts, jevProvider) : undefined;
190
+ const route = feature === "judgment" ? jevRouteReport(envCredentialStore(env, reportLocal), env, jevProvider) : undefined;
159
191
  const problems = verificationProblems(verification ?? []);
160
192
  if (problems.invalid.length > 0 || problems.unreachable.length > 0) {
161
- const line = describeFeatureKeys(feature, sources, verification);
193
+ const line = describeFeatureKeys(feature, sources, verification, route);
162
194
  emitJsonLine(program, fail(problems.invalid.length > 0 ? "E_AI_KEY_INVALID" : "E_AI_KEY_UNVERIFIED", problems.invalid.length > 0
163
195
  ? `${line}`
164
196
  : `${line} — retry when online, or pass --no-verify to skip the check`));
165
197
  return;
166
198
  }
167
- const envelope = ok({ feature, collected, sources, ...(verification === undefined ? {} : { verification }), ...(warnings.length === 0 ? {} : { warnings }) });
199
+ const envelope = ok({
200
+ feature,
201
+ collected,
202
+ sources,
203
+ ...(verification === undefined ? {} : { verification }),
204
+ ...(route === undefined ? {} : { route }),
205
+ ...(warnings.length === 0 ? {} : { warnings }),
206
+ });
168
207
  if (json) {
169
208
  emitJsonLine(program, envelope);
170
209
  }
171
210
  else {
172
211
  const out = program.configureOutput().writeOut;
173
212
  out?.(`collected: ${collected.join(", ") || "(nothing missing)"}\n`);
174
- out?.(`${describeFeatureKeys(feature, sources, verification)}\n`);
213
+ out?.(`${describeFeatureKeys(feature, sources, verification, route)}\n`);
214
+ // #429: say how to set up the other Jev key, so both routes are discoverable from setup.
215
+ if (feature === "judgment" && route !== undefined && route !== null && flag === undefined) {
216
+ const other = route.provider === "typesafe" ? "openrouter" : "typesafe";
217
+ out?.(`judgment can also use ${other === "openrouter" ? "an OpenRouter key (Jev through OpenRouter)" : "a TypeSafe key"}: \`jevitate ai setup judgment --jev-provider ${other}\`\n`);
218
+ }
175
219
  for (const w of warnings)
176
220
  out?.(`warning: ${w}\n`);
177
221
  process.exitCode = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-cli.js","sourceRoot":"","sources":["../src/ai-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-cli.js","sourceRoot":"","sources":["../src/ai-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { type ApprovalChannel, type ApprovalProvenance, type ApprovalsReport } from "@jevitate/journey";
2
+ import type { Catalog } from "./catalog.js";
3
+ /**
4
+ * #437 — approval provenance and the human confirmation on every approval path (`journey promote`,
5
+ * `demo approve`, `persona approve`, `job approve`, and the `--accept-*` waivers given with them).
6
+ *
7
+ * Three layers, each guaranteeing exactly what it says (docs/catalog.md "What 'human approval'
8
+ * guarantees"):
9
+ * 1. provenance (DETECTION): every approval records how it was made — `tty` | `non-interactive` |
10
+ * `mcp` | `ci`, the NAMES of agent/CI markers found in the environment, the OS user. A determined
11
+ * process can fake all of it.
12
+ * 2. the typed confirmation (FRICTION): a CLI approval needs a real TTY and the item's id (or the
13
+ * first 8 characters of its content hash) typed back; without one it is refused
14
+ * (`E_APPROVAL_NEEDS_HUMAN`, exit 64). `--non-interactive-approval "<reason>"` is the scripted
15
+ * escape hatch: allowed, and recorded as `non-interactive` (or `ci`) — never as a person's.
16
+ * 3. git review (ENFORCEMENT): CODEOWNERS on `.jevitate/` + branch protection, and
17
+ * `jevitate check --require-approvals` in CI (`approvalsReport` below).
18
+ */
19
+ /**
20
+ * Agent-harness markers: environment variables a coding agent's shell sets. Only the NAME of a
21
+ * marker is ever recorded (never its value). Kept conservative and documented in docs/catalog.md:
22
+ * - `CLAUDECODE`, `CLAUDE_CODE_*` — Claude Code (`CLAUDECODE=1`, `CLAUDE_CODE_ENTRYPOINT`, …)
23
+ * - `CODEX_*` — OpenAI Codex CLI (`CODEX_SANDBOX`, `CODEX_SANDBOX_NETWORK_DISABLED`, …)
24
+ * - `CURSOR_*` — Cursor (`CURSOR_AGENT` in its agent's terminal; `CURSOR_TRACE_ID` in its editor)
25
+ * - `AIDER_*` — aider
26
+ * - `GEMINI_CLI` — Gemini CLI
27
+ * A marker is a hint, not a verdict: a person may run a terminal inside an editor that sets one.
28
+ */
29
+ export declare const AGENT_ENV_MARKERS: readonly {
30
+ readonly name: string;
31
+ readonly prefix: boolean;
32
+ }[];
33
+ /** CI markers: an escape-hatch approval under one of these is recorded as channel `ci`. */
34
+ export declare const CI_ENV_MARKERS: readonly string[];
35
+ /** The agent/CI marker NAMES set in `env`, then `stdin-not-tty` / `stdout-not-tty`. Never a value. */
36
+ export declare function detectAgentSignals(env: Readonly<Record<string, string | undefined>>, tty: {
37
+ readonly stdin: boolean;
38
+ readonly stdout: boolean;
39
+ }): string[];
40
+ /** The OS user name — never an email (a `user@domain` login keeps only its user part). */
41
+ export declare function osUserName(): string | undefined;
42
+ /** Runs `fn` as an MCP tool call: every approval it makes is recorded as channel `mcp` (mcp-cli-runner.ts). */
43
+ export declare function runAsMcpInvocation<T>(fn: () => Promise<T>): Promise<T>;
44
+ /** True inside `runAsMcpInvocation`. */
45
+ export declare function inMcpInvocation(): boolean;
46
+ /** The seam a test injects (`CliDeps.approval`); production reads the real process. */
47
+ export interface ApprovalDeps {
48
+ readonly env?: Readonly<Record<string, string | undefined>>;
49
+ readonly stdinIsTTY?: () => boolean;
50
+ readonly stdoutIsTTY?: () => boolean;
51
+ /** Asks one question on the terminal and returns the typed line. */
52
+ readonly prompt?: (question: string) => Promise<string>;
53
+ readonly user?: () => string | undefined;
54
+ }
55
+ /** What a person confirms: the item, the content hash its sheet shows, and the waivers given with it. */
56
+ export interface ApprovalRequest {
57
+ readonly kind: "journey" | "demo" | "persona" | "job";
58
+ readonly id: string;
59
+ readonly contentHash: string;
60
+ readonly waivers: readonly {
61
+ readonly flag: string;
62
+ readonly reason: string;
63
+ readonly detail?: string;
64
+ }[];
65
+ }
66
+ /** Confirms an approval (or refuses it) and returns how it was made. */
67
+ export type ApprovalConfirm = (request: ApprovalRequest) => Promise<ApprovalProvenance>;
68
+ /** A CLI approval with no TTY to confirm on, and no `--non-interactive-approval`. Exit 64. */
69
+ export declare class ApprovalNeedsHumanError extends Error {
70
+ readonly code = "E_APPROVAL_NEEDS_HUMAN";
71
+ }
72
+ /** The typed confirmation did not match: nothing was approved. Exit 64. */
73
+ export declare class ApprovalNotConfirmedError extends Error {
74
+ readonly code = "E_APPROVAL_NOT_CONFIRMED";
75
+ }
76
+ /** A bad `--non-interactive-approval` / `--allow-channels` argument. Exit 64. */
77
+ export declare class ApprovalArgsError extends Error {
78
+ readonly code = "E_APPROVAL_ARGS";
79
+ }
80
+ /** The refusal (code, message) of an approval error, or null for any other error. */
81
+ export declare function approvalRefusal(err: unknown): {
82
+ code: string;
83
+ message: string;
84
+ } | null;
85
+ /** The refusal text: why, and how a person approves. */
86
+ export declare function needsHumanMessage(r: ApprovalRequest): string;
87
+ export interface ApprovalConfirmOptions {
88
+ /** `--non-interactive-approval "<reason>"`: approve without a TTY, recorded as `non-interactive` (or `ci`). */
89
+ readonly nonInteractiveReason?: string;
90
+ }
91
+ /** Validates `--non-interactive-approval`: a reason is required (it is recorded). */
92
+ export declare function checkNonInteractiveReason(reason: string | undefined): void;
93
+ /**
94
+ * 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);
96
+ * - `--non-interactive-approval "<reason>"`: no prompt, recorded as `non-interactive` (or `ci` under a CI marker) with the reason;
97
+ * - otherwise a real TTY is required (else `E_APPROVAL_NEEDS_HUMAN`), and the person types the id or
98
+ * the first 8 characters of the content hash — once for the approval, once per waiver
99
+ * (else `E_APPROVAL_NOT_CONFIRMED`); recorded as `tty`.
100
+ */
101
+ export declare function makeApprovalConfirm(deps: ApprovalDeps | undefined, opts?: ApprovalConfirmOptions): ApprovalConfirm;
102
+ /**
103
+ * The provenance of an approval made through the programmatic API with no confirmation step
104
+ * (a caller of `promoteJourney` / `approveCatalogItem` that passes no `confirm`): recorded as
105
+ * `non-interactive`, so it never passes for a person's approval.
106
+ */
107
+ export declare function programmaticProvenance(): ApprovalProvenance;
108
+ /** One phrase: "approved at a terminal by mc (typed confirmation)", "approved non-interactively (likely an agent: CLAUDECODE)", … */
109
+ export declare function describeProvenance(p: ApprovalProvenance | undefined): string;
110
+ /** `--allow-channels tty,ci` → the channels; default `tty`. An unknown channel is refused. */
111
+ export declare function parseAllowedChannels(list: string | undefined): ApprovalChannel[];
112
+ /**
113
+ * #437: every recorded approval in the catalogs (promoted Journeys, approved personas and jobs) and
114
+ * how it was made; with `allowed`, the violations — a promoted Journey with no approval, an approval
115
+ * that is stale (the item changed since), one recorded before provenance existed, or one made over
116
+ * a channel not allowed.
117
+ */
118
+ export declare function approvalsReport(catalogs: readonly Catalog[], allowed?: readonly ApprovalChannel[]): ApprovalsReport;
119
+ /** The approvals section of `catalog status` (text). */
120
+ export declare function renderApprovals(report: ApprovalsReport): string;