@jevitate/cli 0.1.0 → 0.2.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 (375) hide show
  1. package/README.md +23 -0
  2. package/dist/ai-cli.js +40 -30
  3. package/dist/ai-cli.js.map +1 -1
  4. package/dist/author-journey-cli.d.ts +4 -0
  5. package/dist/author-journey-cli.js +109 -0
  6. package/dist/author-journey-cli.js.map +1 -0
  7. package/dist/bin.js +58077 -22454
  8. package/dist/bin.js.map +1 -1
  9. package/dist/browser-run-options.d.ts +58 -0
  10. package/dist/browser-run-options.js +106 -0
  11. package/dist/browser-run-options.js.map +1 -0
  12. package/dist/build-info.generated.d.ts +2 -0
  13. package/dist/build-info.generated.js +10 -0
  14. package/dist/build-info.generated.js.map +1 -0
  15. package/dist/check-api.d.ts +5 -0
  16. package/dist/check-api.js +233 -0
  17. package/dist/check-api.js.map +1 -0
  18. package/dist/check-budget.d.ts +26 -0
  19. package/dist/check-budget.js +89 -0
  20. package/dist/check-budget.js.map +1 -0
  21. package/dist/check-cli.d.ts +31 -0
  22. package/dist/check-cli.js +109 -0
  23. package/dist/check-cli.js.map +1 -0
  24. package/dist/check-execute.d.ts +25 -0
  25. package/dist/check-execute.js +385 -0
  26. package/dist/check-execute.js.map +1 -0
  27. package/dist/check-plan.d.ts +113 -0
  28. package/dist/check-plan.js +448 -0
  29. package/dist/check-plan.js.map +1 -0
  30. package/dist/check-suite.d.ts +171 -0
  31. package/dist/check-suite.js +515 -0
  32. package/dist/check-suite.js.map +1 -0
  33. package/dist/check-types.d.ts +181 -0
  34. package/dist/check-types.js +35 -0
  35. package/dist/check-types.js.map +1 -0
  36. package/dist/cli-args.d.ts +26 -0
  37. package/dist/cli-args.js +50 -0
  38. package/dist/cli-args.js.map +1 -0
  39. package/dist/cli-output.d.ts +102 -0
  40. package/dist/cli-output.js +516 -0
  41. package/dist/cli-output.js.map +1 -0
  42. package/dist/cli-reference.d.ts +3 -0
  43. package/dist/cli-reference.js +81 -0
  44. package/dist/cli-reference.js.map +1 -0
  45. package/dist/cli-refusal.d.ts +12 -0
  46. package/dist/cli-refusal.js +52 -0
  47. package/dist/cli-refusal.js.map +1 -0
  48. package/dist/cli-shared.d.ts +330 -0
  49. package/dist/cli-shared.js +492 -0
  50. package/dist/cli-shared.js.map +1 -0
  51. package/dist/cli-surface.d.ts +33 -0
  52. package/dist/cli-surface.js +48 -0
  53. package/dist/cli-surface.js.map +1 -0
  54. package/dist/conversation-options.d.ts +15 -0
  55. package/dist/conversation-options.js +10 -0
  56. package/dist/conversation-options.js.map +1 -0
  57. package/dist/credentials-file.d.ts +15 -0
  58. package/dist/credentials-file.js +56 -0
  59. package/dist/credentials-file.js.map +1 -0
  60. package/dist/data-dir.d.ts +1 -1
  61. package/dist/data-dir.js +1 -1
  62. package/dist/defect-evidence.d.ts +141 -0
  63. package/dist/defect-evidence.js +502 -0
  64. package/dist/defect-evidence.js.map +1 -0
  65. package/dist/demo-aspect-api.d.ts +209 -0
  66. package/dist/demo-aspect-api.js +397 -0
  67. package/dist/demo-aspect-api.js.map +1 -0
  68. package/dist/demo-aspect-cli.d.ts +3 -0
  69. package/dist/demo-aspect-cli.js +241 -0
  70. package/dist/demo-aspect-cli.js.map +1 -0
  71. package/dist/demo-capture.d.ts +108 -0
  72. package/dist/demo-capture.js +438 -0
  73. package/dist/demo-capture.js.map +1 -0
  74. package/dist/engine.d.ts +35 -0
  75. package/dist/engine.js +25 -0
  76. package/dist/engine.js.map +1 -0
  77. package/dist/environments.d.ts +155 -0
  78. package/dist/environments.js +364 -0
  79. package/dist/environments.js.map +1 -0
  80. package/dist/exit-codes.d.ts +46 -0
  81. package/dist/exit-codes.js +91 -0
  82. package/dist/exit-codes.js.map +1 -0
  83. package/dist/explore-adversarial.d.ts +137 -0
  84. package/dist/explore-adversarial.js +218 -0
  85. package/dist/explore-adversarial.js.map +1 -0
  86. package/dist/explore-api.d.ts +7 -187
  87. package/dist/explore-api.js +7 -301
  88. package/dist/explore-api.js.map +1 -1
  89. package/dist/explore-author.d.ts +79 -0
  90. package/dist/explore-author.js +86 -0
  91. package/dist/explore-author.js.map +1 -0
  92. package/dist/explore-cli.d.ts +7 -0
  93. package/dist/explore-cli.js +963 -0
  94. package/dist/explore-cli.js.map +1 -0
  95. package/dist/explore-coverage.d.ts +158 -0
  96. package/dist/explore-coverage.js +240 -0
  97. package/dist/explore-coverage.js.map +1 -0
  98. package/dist/explore-feature.d.ts +127 -0
  99. package/dist/explore-feature.js +220 -0
  100. package/dist/explore-feature.js.map +1 -0
  101. package/dist/explore-goal.d.ts +253 -0
  102. package/dist/explore-goal.js +374 -0
  103. package/dist/explore-goal.js.map +1 -0
  104. package/dist/explore-shared.d.ts +152 -0
  105. package/dist/explore-shared.js +129 -0
  106. package/dist/explore-shared.js.map +1 -0
  107. package/dist/explore-specs.d.ts +53 -0
  108. package/dist/explore-specs.js +333 -0
  109. package/dist/explore-specs.js.map +1 -0
  110. package/dist/findings-filing.d.ts +64 -0
  111. package/dist/findings-filing.js +108 -0
  112. package/dist/findings-filing.js.map +1 -0
  113. package/dist/fixture-auth.d.ts +52 -0
  114. package/dist/fixture-auth.js +82 -0
  115. package/dist/fixture-auth.js.map +1 -0
  116. package/dist/fixture-cli.d.ts +70 -0
  117. package/dist/fixture-cli.js +178 -0
  118. package/dist/fixture-cli.js.map +1 -0
  119. package/dist/github-issue-filer.d.ts +62 -0
  120. package/dist/github-issue-filer.js +188 -0
  121. package/dist/github-issue-filer.js.map +1 -0
  122. package/dist/host-health-run.d.ts +24 -0
  123. package/dist/host-health-run.js +27 -0
  124. package/dist/host-health-run.js.map +1 -0
  125. package/dist/http-5xx-outcome.d.ts +6 -0
  126. package/dist/http-5xx-outcome.js +39 -0
  127. package/dist/http-5xx-outcome.js.map +1 -0
  128. package/dist/inbox-cli.d.ts +7 -0
  129. package/dist/inbox-cli.js +197 -0
  130. package/dist/inbox-cli.js.map +1 -0
  131. package/dist/index.d.ts +1 -0
  132. package/dist/index.js +1 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/init-cli.d.ts +4 -0
  135. package/dist/init-cli.js +127 -0
  136. package/dist/init-cli.js.map +1 -0
  137. package/dist/init-keys.d.ts +19 -2
  138. package/dist/init-keys.js +15 -4
  139. package/dist/init-keys.js.map +1 -1
  140. package/dist/init-next-steps.d.ts +35 -0
  141. package/dist/init-next-steps.js +79 -0
  142. package/dist/init-next-steps.js.map +1 -0
  143. package/dist/invariants-file.d.ts +34 -0
  144. package/dist/invariants-file.js +68 -0
  145. package/dist/invariants-file.js.map +1 -0
  146. package/dist/invariants-validate.d.ts +30 -0
  147. package/dist/invariants-validate.js +105 -0
  148. package/dist/invariants-validate.js.map +1 -0
  149. package/dist/journey-annotate-api.d.ts +76 -0
  150. package/dist/journey-annotate-api.js +256 -0
  151. package/dist/journey-annotate-api.js.map +1 -0
  152. package/dist/journey-annotate-cli.d.ts +9 -0
  153. package/dist/journey-annotate-cli.js +179 -0
  154. package/dist/journey-annotate-cli.js.map +1 -0
  155. package/dist/journey-api.d.ts +79 -2
  156. package/dist/journey-api.js +136 -19
  157. package/dist/journey-api.js.map +1 -1
  158. package/dist/journey-cli.d.ts +4 -0
  159. package/dist/journey-cli.js +370 -0
  160. package/dist/journey-cli.js.map +1 -0
  161. package/dist/journey-demo-api.d.ts +112 -0
  162. package/dist/journey-demo-api.js +392 -0
  163. package/dist/journey-demo-api.js.map +1 -0
  164. package/dist/journey-demo-cli.d.ts +10 -0
  165. package/dist/journey-demo-cli.js +155 -0
  166. package/dist/journey-demo-cli.js.map +1 -0
  167. package/dist/kill-signal.d.ts +193 -0
  168. package/dist/kill-signal.js +284 -0
  169. package/dist/kill-signal.js.map +1 -0
  170. package/dist/launch-armed.d.ts +37 -0
  171. package/dist/launch-armed.js +31 -0
  172. package/dist/launch-armed.js.map +1 -0
  173. package/dist/ledger-api.d.ts +106 -0
  174. package/dist/ledger-api.js +237 -0
  175. package/dist/ledger-api.js.map +1 -0
  176. package/dist/ledger-cli.d.ts +18 -0
  177. package/dist/ledger-cli.js +107 -0
  178. package/dist/ledger-cli.js.map +1 -0
  179. package/dist/load-api.d.ts +29 -11
  180. package/dist/load-api.js +23 -15
  181. package/dist/load-api.js.map +1 -1
  182. package/dist/load-cli.d.ts +4 -0
  183. package/dist/load-cli.js +97 -0
  184. package/dist/load-cli.js.map +1 -0
  185. package/dist/log-correlation.d.ts +147 -0
  186. package/dist/log-correlation.js +325 -0
  187. package/dist/log-correlation.js.map +1 -0
  188. package/dist/log-lines.d.ts +131 -0
  189. package/dist/log-lines.js +389 -0
  190. package/dist/log-lines.js.map +1 -0
  191. package/dist/log-sources.d.ts +71 -0
  192. package/dist/log-sources.js +235 -0
  193. package/dist/log-sources.js.map +1 -0
  194. package/dist/logs-cli.d.ts +3 -0
  195. package/dist/logs-cli.js +51 -0
  196. package/dist/logs-cli.js.map +1 -0
  197. package/dist/logs-retention.d.ts +28 -0
  198. package/dist/logs-retention.js +84 -0
  199. package/dist/logs-retention.js.map +1 -0
  200. package/dist/mcp-api.d.ts +89 -1
  201. package/dist/mcp-api.js +472 -18
  202. package/dist/mcp-api.js.map +1 -1
  203. package/dist/mcp-args.d.ts +38 -0
  204. package/dist/mcp-args.js +131 -0
  205. package/dist/mcp-args.js.map +1 -0
  206. package/dist/mcp-cli-bridge.d.ts +34 -0
  207. package/dist/mcp-cli-bridge.js +62 -0
  208. package/dist/mcp-cli-bridge.js.map +1 -0
  209. package/dist/mcp-cli-runner.d.ts +29 -0
  210. package/dist/mcp-cli-runner.js +44 -0
  211. package/dist/mcp-cli-runner.js.map +1 -0
  212. package/dist/mcp-cli-tools.d.ts +125 -0
  213. package/dist/mcp-cli-tools.js +680 -0
  214. package/dist/mcp-cli-tools.js.map +1 -0
  215. package/dist/mcp-paths.d.ts +28 -0
  216. package/dist/mcp-paths.js +76 -0
  217. package/dist/mcp-paths.js.map +1 -0
  218. package/dist/mission-actors.d.ts +40 -0
  219. package/dist/mission-actors.js +72 -0
  220. package/dist/mission-actors.js.map +1 -0
  221. package/dist/mission-api.d.ts +35 -0
  222. package/dist/mission-api.js +58 -2
  223. package/dist/mission-api.js.map +1 -1
  224. package/dist/mission-cli.d.ts +4 -0
  225. package/dist/mission-cli.js +247 -0
  226. package/dist/mission-cli.js.map +1 -0
  227. package/dist/mission-exit.d.ts +22 -0
  228. package/dist/mission-exit.js +26 -0
  229. package/dist/mission-exit.js.map +1 -0
  230. package/dist/mission-fixtures.d.ts +225 -0
  231. package/dist/mission-fixtures.js +828 -0
  232. package/dist/mission-fixtures.js.map +1 -0
  233. package/dist/mission-journal.d.ts +60 -0
  234. package/dist/mission-journal.js +115 -0
  235. package/dist/mission-journal.js.map +1 -0
  236. package/dist/mission-queue-cli.d.ts +10 -0
  237. package/dist/mission-queue-cli.js +198 -0
  238. package/dist/mission-queue-cli.js.map +1 -0
  239. package/dist/mission-queue-runner.d.ts +126 -0
  240. package/dist/mission-queue-runner.js +397 -0
  241. package/dist/mission-queue-runner.js.map +1 -0
  242. package/dist/multi-run-cli.d.ts +37 -0
  243. package/dist/multi-run-cli.js +110 -0
  244. package/dist/multi-run-cli.js.map +1 -0
  245. package/dist/multi-run.d.ts +339 -0
  246. package/dist/multi-run.js +619 -0
  247. package/dist/multi-run.js.map +1 -0
  248. package/dist/openrouter-call.d.ts +22 -0
  249. package/dist/openrouter-call.js +63 -0
  250. package/dist/openrouter-call.js.map +1 -0
  251. package/dist/profile-cli.d.ts +4 -0
  252. package/dist/profile-cli.js +57 -0
  253. package/dist/profile-cli.js.map +1 -0
  254. package/dist/program.d.ts +3 -75
  255. package/dist/program.js +119 -1921
  256. package/dist/program.js.map +1 -1
  257. package/dist/project-dir.d.ts +96 -0
  258. package/dist/project-dir.js +220 -0
  259. package/dist/project-dir.js.map +1 -0
  260. package/dist/record-api.d.ts +10 -6
  261. package/dist/record-api.js +39 -28
  262. package/dist/record-api.js.map +1 -1
  263. package/dist/record-cli.d.ts +4 -0
  264. package/dist/record-cli.js +64 -0
  265. package/dist/record-cli.js.map +1 -0
  266. package/dist/recording-cli.d.ts +4 -0
  267. package/dist/recording-cli.js +248 -0
  268. package/dist/recording-cli.js.map +1 -0
  269. package/dist/regression-api.d.ts +101 -0
  270. package/dist/regression-api.js +384 -5
  271. package/dist/regression-api.js.map +1 -1
  272. package/dist/regression-cli.d.ts +4 -0
  273. package/dist/regression-cli.js +232 -0
  274. package/dist/regression-cli.js.map +1 -0
  275. package/dist/report-api.d.ts +146 -0
  276. package/dist/report-api.js +430 -0
  277. package/dist/report-api.js.map +1 -0
  278. package/dist/report-cli.d.ts +12 -0
  279. package/dist/report-cli.js +147 -0
  280. package/dist/report-cli.js.map +1 -0
  281. package/dist/result-schema.d.ts +22 -0
  282. package/dist/result-schema.js +28 -0
  283. package/dist/result-schema.js.map +1 -0
  284. package/dist/run-index.d.ts +29 -0
  285. package/dist/run-index.js +70 -0
  286. package/dist/run-index.js.map +1 -0
  287. package/dist/run-screenshots.d.ts +123 -0
  288. package/dist/run-screenshots.js +229 -0
  289. package/dist/run-screenshots.js.map +1 -0
  290. package/dist/runtime-env.d.ts +8 -0
  291. package/dist/runtime-env.js +22 -0
  292. package/dist/runtime-env.js.map +1 -0
  293. package/dist/secret-args.d.ts +23 -0
  294. package/dist/secret-args.js +45 -0
  295. package/dist/secret-args.js.map +1 -0
  296. package/dist/serve-cli.d.ts +4 -0
  297. package/dist/serve-cli.js +95 -0
  298. package/dist/serve-cli.js.map +1 -0
  299. package/dist/server-log-verify.d.ts +34 -0
  300. package/dist/server-log-verify.js +115 -0
  301. package/dist/server-log-verify.js.map +1 -0
  302. package/dist/session-check.d.ts +14 -0
  303. package/dist/session-check.js +44 -0
  304. package/dist/session-check.js.map +1 -0
  305. package/dist/site-cli.d.ts +4 -0
  306. package/dist/site-cli.js +127 -0
  307. package/dist/site-cli.js.map +1 -0
  308. package/dist/site-gate-cli.d.ts +28 -0
  309. package/dist/site-gate-cli.js +58 -0
  310. package/dist/site-gate-cli.js.map +1 -0
  311. package/dist/source-api.js +18 -3
  312. package/dist/source-api.js.map +1 -1
  313. package/dist/source-cli.d.ts +4 -0
  314. package/dist/source-cli.js +284 -0
  315. package/dist/source-cli.js.map +1 -0
  316. package/dist/source-run-api.d.ts +27 -1
  317. package/dist/source-run-api.js +22 -11
  318. package/dist/source-run-api.js.map +1 -1
  319. package/dist/storage-state-snapshot.d.ts +50 -0
  320. package/dist/storage-state-snapshot.js +87 -0
  321. package/dist/storage-state-snapshot.js.map +1 -0
  322. package/dist/suite-explore-options.d.ts +289 -0
  323. package/dist/suite-explore-options.js +140 -0
  324. package/dist/suite-explore-options.js.map +1 -0
  325. package/dist/target-config.d.ts +109 -0
  326. package/dist/target-config.js +216 -0
  327. package/dist/target-config.js.map +1 -0
  328. package/dist/transcript-file.d.ts +12 -0
  329. package/dist/transcript-file.js +23 -0
  330. package/dist/transcript-file.js.map +1 -0
  331. package/dist/ui-api.d.ts +3 -0
  332. package/dist/ui-api.js +7 -1
  333. package/dist/ui-api.js.map +1 -1
  334. package/dist/usability-capture.d.ts +43 -0
  335. package/dist/usability-capture.js +326 -0
  336. package/dist/usability-capture.js.map +1 -0
  337. package/dist/usage-config.d.ts +36 -0
  338. package/dist/usage-config.js +114 -0
  339. package/dist/usage-config.js.map +1 -0
  340. package/dist/ux-api.d.ts +3 -75
  341. package/dist/ux-api.js +3 -220
  342. package/dist/ux-api.js.map +1 -1
  343. package/dist/ux-cli.d.ts +4 -0
  344. package/dist/ux-cli.js +102 -0
  345. package/dist/ux-cli.js.map +1 -0
  346. package/dist/ux-config.d.ts +29 -0
  347. package/dist/ux-config.js +103 -0
  348. package/dist/ux-config.js.map +1 -0
  349. package/dist/ux-evidence.d.ts +54 -0
  350. package/dist/ux-evidence.js +197 -0
  351. package/dist/ux-evidence.js.map +1 -0
  352. package/dist/ux-review.d.ts +112 -0
  353. package/dist/ux-review.js +151 -0
  354. package/dist/ux-review.js.map +1 -0
  355. package/dist/ux-usability.d.ts +238 -0
  356. package/dist/ux-usability.js +494 -0
  357. package/dist/ux-usability.js.map +1 -0
  358. package/dist/verify-fix-api.d.ts +173 -0
  359. package/dist/verify-fix-api.js +454 -0
  360. package/dist/verify-fix-api.js.map +1 -0
  361. package/dist/verify-fix-cli.d.ts +4 -0
  362. package/dist/verify-fix-cli.js +110 -0
  363. package/dist/verify-fix-cli.js.map +1 -0
  364. package/package.json +19 -14
  365. package/skills/jevitate-ci-check/SKILL.md +77 -0
  366. package/skills/jevitate-demo/SKILL.md +61 -0
  367. package/skills/jevitate-explore/SKILL.md +88 -87
  368. package/skills/jevitate-getting-started/SKILL.md +88 -0
  369. package/skills/jevitate-load-test/SKILL.md +11 -2
  370. package/skills/jevitate-mission-scope/SKILL.md +19 -11
  371. package/skills/jevitate-record/SKILL.md +23 -5
  372. package/skills/jevitate-run-journey/SKILL.md +61 -17
  373. package/skills/jevitate-sources/SKILL.md +57 -14
  374. package/skills/jevitate-ux-review/SKILL.md +106 -16
  375. package/skills/jevitate-verify-fix/SKILL.md +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-fixtures.js","sourceRoot":"","sources":["../src/mission-fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { Recording } from "@jevitate/recording";
2
+ import type { TranscriptEntry } from "@jevitate/explore";
3
+ import { type UsageLedger } from "@jevitate/ai-core";
4
+ /**
5
+ * Crash-safe persistence for a running mission: the transcript and the (partial) Recording are
6
+ * written to disk AS THE RUN PROGRESSES — after every transcript step and every recorded step —
7
+ * not only at the end. A run that dies mid-way (browser crash, OOM, a killed process) therefore
8
+ * still leaves every step up to the failure next to where its final artifacts would have been.
9
+ *
10
+ * Writes are synchronous on purpose: the flush must have landed before the next browser action
11
+ * can crash the process. Entries and Recordings arrive already redacted (TranscriptLog /
12
+ * RunRecorder apply the redaction seam before emitting), so nothing here adds page data.
13
+ */
14
+ export declare class MissionJournal {
15
+ #private;
16
+ readonly recordingPath: string;
17
+ readonly transcriptPath: string;
18
+ /**
19
+ * `recordingPath` is the run's Recording file; the transcript goes to `<recording>.transcript.json`
20
+ * unless `transcriptPath` names another file (a usability run keys both off its report).
21
+ */
22
+ constructor(recordingPath: string, transcriptPath?: string);
23
+ /** TranscriptLog listener: rewrites the whole (small) transcript file after each step. */
24
+ readonly onTranscriptEntry: (_entry: TranscriptEntry, all: readonly TranscriptEntry[]) => void;
25
+ /** Every transcript entry flushed so far (a copy). */
26
+ get transcript(): readonly TranscriptEntry[];
27
+ /** RunRecorder listener: rewrites the partial Recording after each recorded step. */
28
+ readonly onRecording: (recording: Recording) => void;
29
+ /** Final write of the Recording (also used when the run ended before any step was recorded). */
30
+ writeRecording(recording: Recording): void;
31
+ /** Final write of the transcript (idempotent with the incremental writes). */
32
+ writeTranscript(entries: readonly TranscriptEntry[]): void;
33
+ }
34
+ /** `<dir>/<stem>.json` → `<dir>/<stem>.result.json`: the typed mission result next to its Recording. */
35
+ export declare function resultPathFor(recordingPath: string): string;
36
+ /**
37
+ * Persists a mission's typed result (`{ missionOutcome, exitCode, result }`) so it can be read back
38
+ * later — by `verify-fix` and by the MCP `get_mission_result` tool — without re-running anything.
39
+ */
40
+ export declare function writeMissionResult(recordingPath: string, missionOutcome: string, exitCode: number, result: unknown, usage?: UsageLedger): string;
41
+ /**
42
+ * `<dir>/<stem>.result.json` (or any `<stem>.json`) → `<dir>/<stem>.usage.json`: the run's per-call
43
+ * usage breakdown (#163), next to its result.
44
+ */
45
+ export declare function usagePathFor(resultPath: string): string;
46
+ /**
47
+ * Writes the per-call usage sidecar (#163): kind, task, model, tokens, cost and its source for every
48
+ * model call the run made — never prompt contents, answers or credentials (a `UsageCall` has no
49
+ * field that could hold one). Best-effort: accounting never replaces a run's result with an error.
50
+ */
51
+ export declare function writeUsageSidecar(resultPath: string, usage: UsageLedger): string | undefined;
52
+ /** `<prefix>-<iso with : and . replaced>` — the artifact stamp every mission file uses. */
53
+ export declare function artifactStamp(iso: string): string;
54
+ /**
55
+ * Closes a browser session without letting a close failure (a crashed browser often fails to
56
+ * close cleanly) replace the mission's typed result with an exception.
57
+ */
58
+ export declare function closeQuietly(session: {
59
+ close(): Promise<void>;
60
+ }): Promise<void>;
@@ -0,0 +1,115 @@
1
+ import { recordRun } from "./run-index.js";
2
+ import { mkdirSync, writeFileSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { usageSidecar } from "@jevitate/ai-core";
5
+ import { transcriptPathFor } from "./transcript-file.js";
6
+ /**
7
+ * Crash-safe persistence for a running mission: the transcript and the (partial) Recording are
8
+ * written to disk AS THE RUN PROGRESSES — after every transcript step and every recorded step —
9
+ * not only at the end. A run that dies mid-way (browser crash, OOM, a killed process) therefore
10
+ * still leaves every step up to the failure next to where its final artifacts would have been.
11
+ *
12
+ * Writes are synchronous on purpose: the flush must have landed before the next browser action
13
+ * can crash the process. Entries and Recordings arrive already redacted (TranscriptLog /
14
+ * RunRecorder apply the redaction seam before emitting), so nothing here adds page data.
15
+ */
16
+ export class MissionJournal {
17
+ recordingPath;
18
+ transcriptPath;
19
+ /** The entries last flushed — the live step list a killed run reports (#120). */
20
+ #entries = [];
21
+ /**
22
+ * `recordingPath` is the run's Recording file; the transcript goes to `<recording>.transcript.json`
23
+ * unless `transcriptPath` names another file (a usability run keys both off its report).
24
+ */
25
+ constructor(recordingPath, transcriptPath = transcriptPathFor(recordingPath)) {
26
+ this.recordingPath = recordingPath;
27
+ this.transcriptPath = transcriptPath;
28
+ mkdirSync(dirname(recordingPath), { recursive: true });
29
+ }
30
+ /** TranscriptLog listener: rewrites the whole (small) transcript file after each step. */
31
+ onTranscriptEntry = (_entry, all) => {
32
+ this.#entries = [...all];
33
+ writeFileSync(this.transcriptPath, `${JSON.stringify(all, null, 2)}\n`, "utf8");
34
+ };
35
+ /** Every transcript entry flushed so far (a copy). */
36
+ get transcript() {
37
+ return this.#entries;
38
+ }
39
+ /** RunRecorder listener: rewrites the partial Recording after each recorded step. */
40
+ onRecording = (recording) => {
41
+ this.writeRecording(recording);
42
+ };
43
+ /** Final write of the Recording (also used when the run ended before any step was recorded). */
44
+ writeRecording(recording) {
45
+ writeFileSync(this.recordingPath, `${JSON.stringify(recording, null, 2)}\n`, "utf8");
46
+ }
47
+ /** Final write of the transcript (idempotent with the incremental writes). */
48
+ writeTranscript(entries) {
49
+ this.#entries = [...entries];
50
+ writeFileSync(this.transcriptPath, `${JSON.stringify(entries, null, 2)}\n`, "utf8");
51
+ }
52
+ }
53
+ /** `<dir>/<stem>.json` → `<dir>/<stem>.result.json`: the typed mission result next to its Recording. */
54
+ export function resultPathFor(recordingPath) {
55
+ return recordingPath.endsWith(".json")
56
+ ? `${recordingPath.slice(0, -".json".length)}.result.json`
57
+ : `${recordingPath}.result.json`;
58
+ }
59
+ /**
60
+ * Persists a mission's typed result (`{ missionOutcome, exitCode, result }`) so it can be read back
61
+ * later — by `verify-fix` and by the MCP `get_mission_result` tool — without re-running anything.
62
+ */
63
+ export function writeMissionResult(recordingPath, missionOutcome, exitCode, result, usage) {
64
+ const path = resultPathFor(recordingPath);
65
+ writeFileSync(path, `${JSON.stringify({ missionOutcome, exitCode, result }, null, 2)}\n`, "utf8");
66
+ if (usage !== undefined)
67
+ writeUsageSidecar(path, usage);
68
+ // #213: recorded for this project, so a bare `report` finds it — wherever it was written (`--out`).
69
+ recordRun(path);
70
+ return path;
71
+ }
72
+ /**
73
+ * `<dir>/<stem>.result.json` (or any `<stem>.json`) → `<dir>/<stem>.usage.json`: the run's per-call
74
+ * usage breakdown (#163), next to its result.
75
+ */
76
+ export function usagePathFor(resultPath) {
77
+ const stem = resultPath.endsWith(".result.json")
78
+ ? resultPath.slice(0, -".result.json".length)
79
+ : resultPath.endsWith(".json")
80
+ ? resultPath.slice(0, -".json".length)
81
+ : resultPath;
82
+ return `${stem}.usage.json`;
83
+ }
84
+ /**
85
+ * Writes the per-call usage sidecar (#163): kind, task, model, tokens, cost and its source for every
86
+ * model call the run made — never prompt contents, answers or credentials (a `UsageCall` has no
87
+ * field that could hold one). Best-effort: accounting never replaces a run's result with an error.
88
+ */
89
+ export function writeUsageSidecar(resultPath, usage) {
90
+ const path = usagePathFor(resultPath);
91
+ try {
92
+ writeFileSync(path, `${JSON.stringify(usageSidecar(usage), null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
93
+ return path;
94
+ }
95
+ catch {
96
+ return undefined;
97
+ }
98
+ }
99
+ /** `<prefix>-<iso with : and . replaced>` — the artifact stamp every mission file uses. */
100
+ export function artifactStamp(iso) {
101
+ return iso.replace(/[:.]/g, "-");
102
+ }
103
+ /**
104
+ * Closes a browser session without letting a close failure (a crashed browser often fails to
105
+ * close cleanly) replace the mission's typed result with an exception.
106
+ */
107
+ export async function closeQuietly(session) {
108
+ try {
109
+ await session.close();
110
+ }
111
+ catch {
112
+ // The run's outcome already carries the crash evidence; a failed teardown adds nothing.
113
+ }
114
+ }
115
+ //# sourceMappingURL=mission-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-journal.js","sourceRoot":"","sources":["../src/mission-journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { type CliDeps } from "./cli-shared.js";
3
+ /**
4
+ * A `get_mission_result` body's exit code (exit-codes.ts): a finished mission's own `exitCode`; a
5
+ * mission still queued/running, or one that could not run (`failed`), proves nothing yet — 2, never 0.
6
+ */
7
+ export declare function missionResultExitCode(body: Record<string, unknown>): number;
8
+ export declare function formatMissionResultHuman(data: unknown): string;
9
+ /** Registers `mission queue <target>` and `mission result <id>` under `jevitate mission`. */
10
+ export declare function registerMissionQueueCommands(program: Command, mission: Command, deps: CliDeps): void;
@@ -0,0 +1,198 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { Option } from "commander";
3
+ import { MISSION_STRATEGIES, QUEUED_SCREENSHOT_MODES } from "@jevitate/missions";
4
+ import { ok, fail } from "./envelope.js";
5
+ import { emitEnvelope } from "./cli-output.js";
6
+ import { emitJsonOrRefusal } from "./cli-refusal.js";
7
+ import { EXIT_CODES } from "./exit-codes.js";
8
+ import { positiveIntArg } from "./cli-args.js";
9
+ import { parseAssertionSpec } from "./explore-specs.js";
10
+ import { emulationFromFlags, resolveMissionTargetsDir, withEmulationFlags } from "./cli-shared.js";
11
+ import { callMcpTool, mcpErrorOf, mcpToolDeps, refusalFor } from "./mcp-cli-bridge.js";
12
+ /**
13
+ * `jevitate mission queue` / `mission result` (#254) — MCP `queue_exploration` / `get_mission_result`
14
+ * from the CLI, through the SAME served handlers (mcp-cli-bridge.ts) over the SAME stores. `queue`
15
+ * only enqueues (`jevitate mission run` drains); `result` prints exactly MCP's status body
16
+ * (status, exitCode, isError, goalOutcome, coverage, result) and exits with its contract code.
17
+ */
18
+ const QUEUE_DIR_HELP = "mission queue directory (default: ~/.jevitate/missions/queue — the queue `jevitate mcp` and `mission run` use)";
19
+ function isRecord(v) {
20
+ return v !== null && typeof v === "object" && !Array.isArray(v);
21
+ }
22
+ /**
23
+ * A `get_mission_result` body's exit code (exit-codes.ts): a finished mission's own `exitCode`; a
24
+ * mission still queued/running, or one that could not run (`failed`), proves nothing yet — 2, never 0.
25
+ */
26
+ export function missionResultExitCode(body) {
27
+ if (body.pending === true || body.status === "failed")
28
+ return EXIT_CODES.inconclusive;
29
+ return typeof body.exitCode === "number" ? body.exitCode : EXIT_CODES.inconclusive;
30
+ }
31
+ export function formatMissionResultHuman(data) {
32
+ if (!isRecord(data))
33
+ return "";
34
+ const id = String(data.missionId ?? data.id);
35
+ if (data.pending === true) {
36
+ return `${String(data.status).toUpperCase()} ${id} (enqueued ${String(data.enqueuedAtIso)})\nnext: jevitate mission run — then jevitate mission result ${id}\n`;
37
+ }
38
+ if (data.status === "failed")
39
+ return `FAILED ${id}: ${String(data.error)} — the mission could not run\n`;
40
+ const lines = [`${String(data.status).toUpperCase()} ${id}${data.resultId === undefined ? "" : ` → ${String(data.resultId)}`} (exit ${String(data.exitCode)})`];
41
+ if (data.goalOutcome !== undefined)
42
+ lines.push(` goal: ${String(data.goalOutcome)}`);
43
+ const result = isRecord(data.result) ? data.result : undefined;
44
+ if (result !== undefined && Array.isArray(result.defects))
45
+ lines.push(` defects: ${result.defects.length}`);
46
+ if (data.coverage !== undefined)
47
+ lines.push(` coverage: ${JSON.stringify(data.coverage)}`);
48
+ lines.push(`next: jevitate mission result ${id} --json for the full typed result`);
49
+ return `${lines.join("\n")}\n`;
50
+ }
51
+ /** Registers `mission queue <target>` and `mission result <id>` under `jevitate mission`. */
52
+ export function registerMissionQueueCommands(program, mission, deps) {
53
+ withEmulationFlags(mission
54
+ .command("queue <target>")
55
+ .description("enqueue an exploration mission against a PROMOTED target — only queues; `mission run` drains (MCP queue_exploration)")
56
+ .addOption(new Option("--strategy <strategy>", `${MISSION_STRATEGIES.join(" | ")} (required)`).choices(MISSION_STRATEGIES))
57
+ .option("--goal <text>", "goal-based: the objective (exactly one of --goal/--feature/--route)")
58
+ .option("--feature <name>", "feature: the capability to test (goal-based: the objective)")
59
+ .option("--route <glob>", "coverage/exploratory/adversarial/feature: an in-scope route glob, e.g. /thread/** (goal-based: the objective)")
60
+ .option("--success <spec>", "goal-based: the independent success check (required there), e.g. urlIncludes:/done — the `explore --success` page-check forms")
61
+ .option("--max-actions <n>", "budget: max actions (bounded by the queue's ceiling)", positiveIntArg)
62
+ .option("--max-decisions <n>", "budget: max decisions", positiveIntArg)
63
+ .option("--max-candidates <n>", "budget: max candidates", positiveIntArg)
64
+ .option("--invariants <file>", "app-declared invariants JSON file (the `explore --invariants` format; probes GET/HEAD on the target's origins; no authFrom.secret)")
65
+ // #255 (MCP queue_exploration parity): media next to the result — never a path in a queued request.
66
+ .option("--record-video", "record a video of the run (headless too), written next to its result; listed as videoPaths")
67
+ .option("--screenshots [mode]", "masked screenshots + index.md next to the result: screens (default, one per distinct screen) | steps (one per step)")
68
+ .option("--evidence-video", "per defect: a captioned evidence clip of its minimal repro + before/at screenshots (defects[].evidence)")
69
+ .option("--persona <name>", "run as this persona: its session in ~/.jevitate/targets.json (personas) for the target's origin — a name, never a path"))
70
+ .option("--dir <path>", QUEUE_DIR_HELP)
71
+ .option("--targets-dir <path>", "mission targets directory (default: ~/.jevitate/missions/targets)")
72
+ .option("--json", "emit a JSON envelope")
73
+ .action(async function (target) {
74
+ const o = this.opts();
75
+ const refuse = (code, message) => emitJsonOrRefusal(program, fail(code, message));
76
+ if (o.strategy === undefined) {
77
+ refuse("E_MISSION_QUEUE_ARGS", `--strategy is required (${MISSION_STRATEGIES.join(" | ")})`);
78
+ return;
79
+ }
80
+ let successAssertion;
81
+ if (o.success !== undefined) {
82
+ try {
83
+ successAssertion = parseAssertionSpec(o.success);
84
+ }
85
+ catch (e) {
86
+ refuse("E_MISSION_QUEUE_ASSERTION", e instanceof Error ? e.message : String(e));
87
+ return;
88
+ }
89
+ }
90
+ let invariants;
91
+ if (o.invariants !== undefined) {
92
+ try {
93
+ invariants = JSON.parse(readFileSync(o.invariants, "utf8"));
94
+ }
95
+ catch (e) {
96
+ refuse("E_MISSION_QUEUE_INVARIANTS", `cannot read invariants file ${o.invariants}: ${e instanceof Error ? e.message.split("\n")[0] : String(e)}`);
97
+ return;
98
+ }
99
+ }
100
+ const screenshots = o.screenshots === undefined ? undefined : o.screenshots === true ? "screens" : o.screenshots;
101
+ if (screenshots !== undefined && !QUEUED_SCREENSHOT_MODES.includes(screenshots)) {
102
+ refuse("E_MISSION_QUEUE_ARGS", `--screenshots takes a mode only (${QUEUED_SCREENSHOT_MODES.join(" | ")}): a queued mission writes next to its result, never to a chosen directory`);
103
+ return;
104
+ }
105
+ let emulation;
106
+ try {
107
+ emulation = emulationFromFlags(o);
108
+ }
109
+ catch (e) {
110
+ refuse("E_MISSION_QUEUE_ARGS", e instanceof Error ? e.message : String(e));
111
+ return;
112
+ }
113
+ const budget = {
114
+ ...(o.maxActions === undefined ? {} : { maxActions: o.maxActions }),
115
+ ...(o.maxDecisions === undefined ? {} : { maxDecisions: o.maxDecisions }),
116
+ ...(o.maxCandidates === undefined ? {} : { maxCandidates: o.maxCandidates }),
117
+ };
118
+ // Exactly the MCP request shape; `enqueueMission` (behind the handler) does every other check.
119
+ const args = {
120
+ target,
121
+ strategy: o.strategy,
122
+ ...(o.goal === undefined ? {} : { goal: o.goal }),
123
+ ...(o.feature === undefined ? {} : { feature: o.feature }),
124
+ ...(o.route === undefined ? {} : { route: o.route }),
125
+ ...(successAssertion === undefined ? {} : { successAssertion }),
126
+ ...(Object.keys(budget).length === 0 ? {} : { budget }),
127
+ ...(invariants === undefined ? {} : { invariants }),
128
+ ...(emulation?.viewport === undefined ? {} : { viewport: emulation.viewport }),
129
+ ...(emulation?.device === undefined ? {} : { device: emulation.device }),
130
+ ...(o.recordVideo === true ? { recordVideo: true } : {}),
131
+ ...(screenshots === undefined ? {} : { screenshots }),
132
+ ...(o.evidenceVideo === true ? { evidenceVideo: true } : {}),
133
+ ...(o.persona === undefined ? {} : { persona: o.persona }),
134
+ };
135
+ let envelope;
136
+ try {
137
+ const apiDeps = mcpToolDeps(deps, {
138
+ missionTargetsDir: resolveMissionTargetsDir(deps, o.targetsDir),
139
+ ...(o.dir === undefined ? {} : { missionQueueDir: o.dir }),
140
+ });
141
+ const { body } = await callMcpTool(apiDeps, "queue_exploration", args);
142
+ const err = mcpErrorOf(body);
143
+ // queue_exploration_refused: an unknown/unpromoted target, a bad shape, an over-ceiling budget
144
+ // or an invalid invariant spec — the request was unusable, nothing was queued (64).
145
+ envelope = err === undefined ? ok(body) : err.error === "queue_exploration_refused" ? fail("E_MISSION_QUEUE_REFUSED", err.message ?? "refused") : refusalFor(this, "MISSION_QUEUE", err, "refused");
146
+ }
147
+ catch (e) {
148
+ envelope = fail("E_MISSION_QUEUE", e instanceof Error ? e.message : String(e));
149
+ }
150
+ if (!envelope.ok) {
151
+ emitJsonOrRefusal(program, envelope);
152
+ return;
153
+ }
154
+ emitEnvelope(program, envelope, {
155
+ json: o.json === true,
156
+ command: "mission queue",
157
+ human: (data) => {
158
+ const id = isRecord(data) ? String(data.missionId) : "?";
159
+ return `queued mission ${id} (${o.strategy} on '${target}')\nnext: jevitate mission run — then jevitate mission result ${id}\n`;
160
+ },
161
+ });
162
+ });
163
+ mission
164
+ .command("result <id>")
165
+ .description("a mission's status and typed result, by result id or queued missionId (MCP get_mission_result); exits with its contract code")
166
+ .option("--dir <path>", QUEUE_DIR_HELP)
167
+ .option("--results-dir <path>", "read the result file from this directory only (default: where `mission run` writes — .jevitate/logs/<date>, then ~/.jevitate)")
168
+ .option("--json", "emit a JSON envelope")
169
+ .action(async function (id) {
170
+ const o = this.opts();
171
+ let envelope;
172
+ let exitCode;
173
+ try {
174
+ const apiDeps = mcpToolDeps(deps, {
175
+ ...(o.dir === undefined ? {} : { missionQueueDir: o.dir }),
176
+ ...(o.resultsDir === undefined ? {} : { recordingsDir: o.resultsDir, resultDirsFor: () => [o.resultsDir] }),
177
+ });
178
+ const { body } = await callMcpTool(apiDeps, "get_mission_result", { id });
179
+ // A status body (finished, pending or failed) is the answer; any other typed error is a refusal.
180
+ if (isRecord(body) && typeof body.status === "string") {
181
+ envelope = ok(body);
182
+ exitCode = missionResultExitCode(body);
183
+ }
184
+ else {
185
+ envelope = refusalFor(this, "MISSION_RESULT", mcpErrorOf(body) ?? { error: "internal" }, `no mission result '${id}'`);
186
+ }
187
+ }
188
+ catch (e) {
189
+ envelope = fail("E_MISSION_RESULT", e instanceof Error ? e.message : String(e));
190
+ }
191
+ if (!envelope.ok) {
192
+ emitJsonOrRefusal(program, envelope);
193
+ return;
194
+ }
195
+ emitEnvelope(program, envelope, { json: o.json === true, command: "mission result", human: formatMissionResultHuman, ...(exitCode === undefined ? {} : { exitCode }) });
196
+ });
197
+ }
198
+ //# sourceMappingURL=mission-queue-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-queue-cli.js","sourceRoot":"","sources":["../src/mission-queue-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import type { GenerationPort, JudgmentPort, UsageTracker } from "@jevitate/ai-core";
2
+ import { type BrowserPort, type BrowserLaunchOptions } from "@jevitate/playwright";
3
+ import { type DrainableMissionQueueStore, type MissionTarget, type MissionTargetRegistry, type QueuedMission } from "@jevitate/missions";
4
+ import { type ServerLogOptions } from "./explore-api.js";
5
+ import { type TargetConfig } from "./target-config.js";
6
+ /**
7
+ * The queue drain behind `jevitate mission run` (#117). `queue_exploration` (MCP) only ENQUEUES —
8
+ * a `QueuedMission` in `~/.jevitate/missions/queue/<missionId>.json`. This runs each queued mission
9
+ * through the SAME runner its strategy uses on the CLI (`explore --strategy goal|coverage|adversarial`,
10
+ * `explore --feature`), writes its typed result where `get_mission_result` reads it, and records the
11
+ * lifecycle on the queue record: `queued` → `running` → `done` (with the result's id) | `failed`.
12
+ *
13
+ * Security: the target is re-resolved through the PROMOTED-only registry at run time (a target
14
+ * unpromoted since the enqueue fails the mission, never runs it), and the run's allowlist is the
15
+ * target's own `[authorizedOrigin, ...apiOrigins]` — nothing from the request widens it. A queued
16
+ * mission never carries a credential; a model call gets only the run's redacted state.
17
+ */
18
+ /** What a strategy runner hands back: enough to link the queue record to the persisted result. */
19
+ export interface QueuedMissionRun {
20
+ readonly resultPath: string;
21
+ /** The canonical outcome (#217). */
22
+ readonly missionOutcome: string;
23
+ /** #217: a goal run's own ending, beside the canonical `missionOutcome`. */
24
+ readonly goalOutcome?: string;
25
+ readonly exitCode: number;
26
+ }
27
+ /** A queued mission plus its resolved (promoted) target and the allowlist the run may reach. */
28
+ export interface QueuedMissionSpec {
29
+ readonly mission: QueuedMission;
30
+ readonly target: MissionTarget;
31
+ readonly allowlist: readonly string[];
32
+ }
33
+ export type QueuedMissionExecutor = (spec: QueuedMissionSpec) => Promise<QueuedMissionRun>;
34
+ export interface DrainedMission {
35
+ readonly missionId: string;
36
+ readonly strategy: string;
37
+ readonly status: "done" | "failed";
38
+ readonly resultId?: string;
39
+ readonly missionOutcome?: string;
40
+ readonly goalOutcome?: string;
41
+ readonly exitCode?: number;
42
+ readonly error?: string;
43
+ }
44
+ export interface RecoveredMission {
45
+ readonly missionId: string;
46
+ readonly error: string;
47
+ }
48
+ export interface SkippedMission {
49
+ readonly missionId: string;
50
+ readonly reason: string;
51
+ }
52
+ export interface DrainReport {
53
+ readonly ran: DrainedMission[];
54
+ /**
55
+ * Missions a previous drain left `running` when it died (SIGKILL, OOM, reboot), now recorded
56
+ * `failed` — never re-run, since they may already have sent writes.
57
+ */
58
+ readonly recovered: RecoveredMission[];
59
+ /** Left `queued` for a later drain (e.g. a model-driven mission when no gateway was selected). */
60
+ readonly skipped: SkippedMission[];
61
+ }
62
+ export interface DrainMissionQueueOptions {
63
+ readonly queue: DrainableMissionQueueStore;
64
+ readonly targets: MissionTargetRegistry;
65
+ readonly execute: QueuedMissionExecutor;
66
+ /** Which queued missions this drain can run; the rest stay `queued` and are reported as skipped. */
67
+ readonly accepts?: (mission: QueuedMission) => string | true;
68
+ readonly nowIso?: () => string;
69
+ /** Called once per mission as it finishes (a `--watch` drain streams these). */
70
+ readonly onMission?: (m: DrainedMission) => void;
71
+ /** This drain's identity, recorded on each claim (default: this process and host). */
72
+ readonly owner?: {
73
+ readonly pid: number;
74
+ readonly host: string;
75
+ };
76
+ /** Is a process on this host alive? (default: `process.kill(pid, 0)`) */
77
+ readonly isAlive?: (pid: number) => boolean;
78
+ /** A `running` mission whose drain cannot be checked (another host, an old claim) is abandoned after this long (default 12h). */
79
+ readonly orphanAfterMs?: number;
80
+ }
81
+ /** `<dir>/<stem>.result.json` → `<stem>`: the id `get_mission_result` takes. */
82
+ export declare function resultIdFromPath(resultPath: string): string;
83
+ /** Strategies that need the judgment/generation gateways (every one but the model-free feature mission). */
84
+ export declare function needsModel(mission: QueuedMission): boolean;
85
+ /**
86
+ * Drains every mission currently `queued`, oldest first, one at a time. A mission another drain
87
+ * already claimed is left alone. Never throws for a single mission: its failure is recorded on its
88
+ * queue record (`failed` + `error`) and the drain moves on.
89
+ */
90
+ export declare function drainMissionQueue(opts: DrainMissionQueueOptions): Promise<DrainReport>;
91
+ export interface RealExecutorOptions {
92
+ /** Where results are written — the dir `jevitate mcp`'s `get_mission_result` reads. */
93
+ readonly outDir: string;
94
+ /** Builds fresh gateways (and a fresh usage tracker) per model-driven mission. */
95
+ readonly gateways: () => Promise<{
96
+ judge: JudgmentPort;
97
+ gen: GenerationPort;
98
+ usage: UsageTracker;
99
+ }>;
100
+ readonly browserPortFactory?: () => BrowserPort;
101
+ /**
102
+ * Launch options only — typed `BrowserLaunchOptions`, never the demo-mode `BrowserRunOptions`
103
+ * (#245): a queued mission (what MCP `queue_exploration` feeds) runs unattended, so it is always
104
+ * headless and overlay-free; `mission run` takes no --headed flag. It records a video only when
105
+ * the queued request itself asked (`recordVideo`, #255 — next to its result, never a path).
106
+ */
107
+ readonly browser?: BrowserLaunchOptions;
108
+ /**
109
+ * `~/.jevitate/targets.json`, by origin (#142 follow-up): a queued mission NEVER carries its own
110
+ * `--log-source` (a `MissionRequest`/`QueuedMission` may not name a path or a command — see
111
+ * `packages/missions/src/schema.ts`), so a source is only ever the OPERATOR's own file-declared
112
+ * default for the target's origin. Omitted or empty ⇒ no log sources for any queued mission.
113
+ */
114
+ readonly targets?: Readonly<Record<string, TargetConfig>>;
115
+ /** Where a target's `secretFields` read their values (default `process.env`). */
116
+ readonly env?: Readonly<Record<string, string | undefined>>;
117
+ }
118
+ /** The operator-declared `--log-source`/`--log-defect` for one origin, already parsed (#142 follow-up).
119
+ * Throws (via `parseLogSourceSpecs`/`parseLogDefectSpecs`) on a malformed targets.json entry — the
120
+ * caller's existing per-mission try/catch turns that into a `failed` queue record, never a crash. */
121
+ export declare function serverLogFromTargetConfig(targets: Readonly<Record<string, TargetConfig>> | undefined, baseUrl: string): ServerLogOptions | undefined;
122
+ /**
123
+ * Maps a queued mission onto the runner its strategy uses on the CLI. The start URL is the
124
+ * target's `baseUrl`; `route` is an in-scope glob for coverage/adversarial/feature.
125
+ */
126
+ export declare function realQueuedMissionExecutor(opts: RealExecutorOptions): QueuedMissionExecutor;