@jevitate/cli 0.7.0 → 0.9.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 (263) 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 +136 -0
  5. package/dist/approval-provenance.js +317 -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 +30544 -20851
  10. package/dist/browser-cli.d.ts +10 -0
  11. package/dist/browser-cli.js +50 -0
  12. package/dist/browser-cli.js.map +1 -0
  13. package/dist/build-info.generated.js +2 -2
  14. package/dist/builtin-analyzers.d.ts +7 -0
  15. package/dist/builtin-analyzers.js +19 -0
  16. package/dist/builtin-analyzers.js.map +1 -0
  17. package/dist/campaign-cli.d.ts +6 -0
  18. package/dist/campaign-cli.js +9 -4
  19. package/dist/campaign-cli.js.map +1 -1
  20. package/dist/catalog-analysis.d.ts +70 -0
  21. package/dist/catalog-analysis.js +507 -0
  22. package/dist/catalog-analysis.js.map +1 -0
  23. package/dist/catalog-api.d.ts +73 -0
  24. package/dist/catalog-api.js +97 -0
  25. package/dist/catalog-api.js.map +1 -0
  26. package/dist/catalog-cli.d.ts +12 -0
  27. package/dist/catalog-cli.js +224 -0
  28. package/dist/catalog-cli.js.map +1 -0
  29. package/dist/catalog-review.d.ts +29 -0
  30. package/dist/catalog-review.js +290 -0
  31. package/dist/catalog-review.js.map +1 -0
  32. package/dist/catalog.d.ts +133 -0
  33. package/dist/catalog.js +352 -0
  34. package/dist/catalog.js.map +1 -0
  35. package/dist/change-context.d.ts +44 -0
  36. package/dist/change-context.js +203 -0
  37. package/dist/change-context.js.map +1 -0
  38. package/dist/check-api.d.ts +1 -1
  39. package/dist/check-api.js +68 -9
  40. package/dist/check-api.js.map +1 -1
  41. package/dist/check-cli.d.ts +5 -1
  42. package/dist/check-cli.js +64 -10
  43. package/dist/check-cli.js.map +1 -1
  44. package/dist/check-execute.d.ts +16 -1
  45. package/dist/check-execute.js +78 -31
  46. package/dist/check-execute.js.map +1 -1
  47. package/dist/check-plan.d.ts +14 -0
  48. package/dist/check-plan.js +28 -2
  49. package/dist/check-plan.js.map +1 -1
  50. package/dist/check-suite.js +6 -3
  51. package/dist/check-suite.js.map +1 -1
  52. package/dist/check-types.d.ts +51 -6
  53. package/dist/check-types.js +8 -0
  54. package/dist/check-types.js.map +1 -1
  55. package/dist/cli-output.js +85 -5
  56. package/dist/cli-output.js.map +1 -1
  57. package/dist/cli-shared.d.ts +22 -2
  58. package/dist/cli-shared.js +34 -5
  59. package/dist/cli-shared.js.map +1 -1
  60. package/dist/demo-aspect-api.d.ts +15 -0
  61. package/dist/demo-aspect-api.js +26 -1
  62. package/dist/demo-aspect-api.js.map +1 -1
  63. package/dist/demo-aspect-cli.js +64 -5
  64. package/dist/demo-aspect-cli.js.map +1 -1
  65. package/dist/exit-codes.d.ts +6 -3
  66. package/dist/exit-codes.js +13 -3
  67. package/dist/exit-codes.js.map +1 -1
  68. package/dist/explore-adversarial.d.ts +3 -1
  69. package/dist/explore-adversarial.js +4 -4
  70. package/dist/explore-adversarial.js.map +1 -1
  71. package/dist/explore-author.js +5 -2
  72. package/dist/explore-author.js.map +1 -1
  73. package/dist/explore-cli.js +145 -9
  74. package/dist/explore-cli.js.map +1 -1
  75. package/dist/explore-coverage.d.ts +6 -2
  76. package/dist/explore-coverage.js +7 -6
  77. package/dist/explore-coverage.js.map +1 -1
  78. package/dist/explore-feature.d.ts +3 -1
  79. package/dist/explore-feature.js +5 -5
  80. package/dist/explore-feature.js.map +1 -1
  81. package/dist/explore-goal.d.ts +37 -6
  82. package/dist/explore-goal.js +69 -50
  83. package/dist/explore-goal.js.map +1 -1
  84. package/dist/explore-shared.d.ts +12 -7
  85. package/dist/explore-shared.js +9 -1
  86. package/dist/explore-shared.js.map +1 -1
  87. package/dist/findings-filing.d.ts +6 -0
  88. package/dist/findings-filing.js +15 -1
  89. package/dist/findings-filing.js.map +1 -1
  90. package/dist/goal-run-flags.d.ts +2 -0
  91. package/dist/goal-run-flags.js +8 -1
  92. package/dist/goal-run-flags.js.map +1 -1
  93. package/dist/heal-probe-guard.d.ts +9 -0
  94. package/dist/heal-probe-guard.js +113 -0
  95. package/dist/heal-probe-guard.js.map +1 -0
  96. package/dist/host-health-run.d.ts +32 -1
  97. package/dist/host-health-run.js +38 -1
  98. package/dist/host-health-run.js.map +1 -1
  99. package/dist/http-5xx-outcome.d.ts +8 -3
  100. package/dist/http-5xx-outcome.js +5 -15
  101. package/dist/http-5xx-outcome.js.map +1 -1
  102. package/dist/init-cli.d.ts +7 -0
  103. package/dist/init-cli.js +79 -9
  104. package/dist/init-cli.js.map +1 -1
  105. package/dist/init-codeowners.d.ts +39 -0
  106. package/dist/init-codeowners.js +91 -0
  107. package/dist/init-codeowners.js.map +1 -0
  108. package/dist/init-keys.d.ts +3 -1
  109. package/dist/init-keys.js +20 -8
  110. package/dist/init-keys.js.map +1 -1
  111. package/dist/init-skills.d.ts +85 -7
  112. package/dist/init-skills.js +303 -36
  113. package/dist/init-skills.js.map +1 -1
  114. package/dist/jev-advisor.d.ts +72 -0
  115. package/dist/jev-advisor.js +172 -0
  116. package/dist/jev-advisor.js.map +1 -0
  117. package/dist/journey-api.d.ts +76 -5
  118. package/dist/journey-api.js +238 -29
  119. package/dist/journey-api.js.map +1 -1
  120. package/dist/journey-cli.js +257 -23
  121. package/dist/journey-cli.js.map +1 -1
  122. package/dist/journey-heal.d.ts +74 -0
  123. package/dist/journey-heal.js +180 -0
  124. package/dist/journey-heal.js.map +1 -0
  125. package/dist/journey-network-checks.d.ts +5 -1
  126. package/dist/journey-network-checks.js +15 -4
  127. package/dist/journey-network-checks.js.map +1 -1
  128. package/dist/journey-prefix.js +2 -2
  129. package/dist/journey-prefix.js.map +1 -1
  130. package/dist/journey-proposal-store.d.ts +100 -0
  131. package/dist/journey-proposal-store.js +342 -0
  132. package/dist/journey-proposal-store.js.map +1 -0
  133. package/dist/journey-result-record.d.ts +40 -0
  134. package/dist/journey-result-record.js +28 -0
  135. package/dist/journey-result-record.js.map +1 -0
  136. package/dist/journey-review-api.d.ts +19 -0
  137. package/dist/journey-review-api.js +53 -0
  138. package/dist/journey-review-api.js.map +1 -0
  139. package/dist/journey-review-store.d.ts +16 -0
  140. package/dist/journey-review-store.js +95 -0
  141. package/dist/journey-review-store.js.map +1 -0
  142. package/dist/journey-review.d.ts +54 -0
  143. package/dist/journey-review.js +538 -0
  144. package/dist/journey-review.js.map +1 -0
  145. package/dist/journey-verify.js +14 -1
  146. package/dist/journey-verify.js.map +1 -1
  147. package/dist/key-report.d.ts +20 -5
  148. package/dist/key-report.js +32 -9
  149. package/dist/key-report.js.map +1 -1
  150. package/dist/kill-signal.js +10 -2
  151. package/dist/kill-signal.js.map +1 -1
  152. package/dist/launch-armed.js +5 -1
  153. package/dist/launch-armed.js.map +1 -1
  154. package/dist/load-cli.js +4 -2
  155. package/dist/load-cli.js.map +1 -1
  156. package/dist/log-classes.d.ts +73 -0
  157. package/dist/log-classes.js +167 -0
  158. package/dist/log-classes.js.map +1 -0
  159. package/dist/log-correlation.d.ts +29 -10
  160. package/dist/log-correlation.js +44 -21
  161. package/dist/log-correlation.js.map +1 -1
  162. package/dist/login-cli.d.ts +17 -0
  163. package/dist/login-cli.js +161 -0
  164. package/dist/login-cli.js.map +1 -0
  165. package/dist/logs-cli.js +3 -1
  166. package/dist/logs-cli.js.map +1 -1
  167. package/dist/mcp-api.d.ts +6 -1
  168. package/dist/mcp-api.js +110 -16
  169. package/dist/mcp-api.js.map +1 -1
  170. package/dist/mcp-cli-runner.d.ts +2 -0
  171. package/dist/mcp-cli-runner.js +3 -1
  172. package/dist/mcp-cli-runner.js.map +1 -1
  173. package/dist/mcp-cli-tools.d.ts +5 -0
  174. package/dist/mcp-cli-tools.js +178 -23
  175. package/dist/mcp-cli-tools.js.map +1 -1
  176. package/dist/mission-cli.js +8 -4
  177. package/dist/mission-cli.js.map +1 -1
  178. package/dist/mission-journal.d.ts +4 -1
  179. package/dist/mission-journal.js +9 -3
  180. package/dist/mission-journal.js.map +1 -1
  181. package/dist/mission-queue-cli.js +21 -2
  182. package/dist/mission-queue-cli.js.map +1 -1
  183. package/dist/mission-queue-runner.d.ts +6 -0
  184. package/dist/mission-queue-runner.js +33 -3
  185. package/dist/mission-queue-runner.js.map +1 -1
  186. package/dist/multi-run-cli.d.ts +7 -1
  187. package/dist/multi-run-cli.js +10 -3
  188. package/dist/multi-run-cli.js.map +1 -1
  189. package/dist/multi-run.d.ts +44 -8
  190. package/dist/multi-run.js +118 -25
  191. package/dist/multi-run.js.map +1 -1
  192. package/dist/persona-login.d.ts +256 -0
  193. package/dist/persona-login.js +884 -0
  194. package/dist/persona-login.js.map +1 -0
  195. package/dist/pre-approval.d.ts +98 -0
  196. package/dist/pre-approval.js +175 -0
  197. package/dist/pre-approval.js.map +1 -0
  198. package/dist/program.js +12 -0
  199. package/dist/program.js.map +1 -1
  200. package/dist/project-dir.d.ts +2 -1
  201. package/dist/project-dir.js +3 -1
  202. package/dist/project-dir.js.map +1 -1
  203. package/dist/readiness.d.ts +29 -0
  204. package/dist/readiness.js +291 -0
  205. package/dist/readiness.js.map +1 -0
  206. package/dist/regression-cli.js +4 -2
  207. package/dist/regression-cli.js.map +1 -1
  208. package/dist/report-api.d.ts +25 -2
  209. package/dist/report-api.js +34 -5
  210. package/dist/report-api.js.map +1 -1
  211. package/dist/report-cli.js +8 -1
  212. package/dist/report-cli.js.map +1 -1
  213. package/dist/resource-preflight.js +5 -3
  214. package/dist/resource-preflight.js.map +1 -1
  215. package/dist/result-schema.d.ts +12 -0
  216. package/dist/result-schema.js +8 -0
  217. package/dist/result-schema.js.map +1 -1
  218. package/dist/run-index.d.ts +4 -2
  219. package/dist/run-index.js +3 -1
  220. package/dist/run-index.js.map +1 -1
  221. package/dist/run-key-preflight.d.ts +2 -1
  222. package/dist/run-key-preflight.js +3 -2
  223. package/dist/run-key-preflight.js.map +1 -1
  224. package/dist/run-metadata.d.ts +29 -0
  225. package/dist/run-metadata.js +48 -0
  226. package/dist/run-metadata.js.map +1 -0
  227. package/dist/run-tags-cli.d.ts +14 -0
  228. package/dist/run-tags-cli.js +41 -0
  229. package/dist/run-tags-cli.js.map +1 -0
  230. package/dist/self-heal-adapter.d.ts +43 -27
  231. package/dist/self-heal-adapter.js +196 -62
  232. package/dist/self-heal-adapter.js.map +1 -1
  233. package/dist/site-cli.d.ts +1 -1
  234. package/dist/site-cli.js +24 -1
  235. package/dist/site-cli.js.map +1 -1
  236. package/dist/source-cli.js +9 -5
  237. package/dist/source-cli.js.map +1 -1
  238. package/dist/suite-explore-options.d.ts +14 -0
  239. package/dist/suite-explore-options.js +8 -0
  240. package/dist/suite-explore-options.js.map +1 -1
  241. package/dist/sweep-api.d.ts +289 -0
  242. package/dist/sweep-api.js +859 -0
  243. package/dist/sweep-api.js.map +1 -0
  244. package/dist/sweep-cli.d.ts +9 -0
  245. package/dist/sweep-cli.js +117 -0
  246. package/dist/sweep-cli.js.map +1 -0
  247. package/dist/target-config.d.ts +5 -2
  248. package/dist/target-config.js +15 -0
  249. package/dist/target-config.js.map +1 -1
  250. package/dist/ux-cli.js +3 -1
  251. package/dist/ux-cli.js.map +1 -1
  252. package/dist/ux-usability.d.ts +9 -3
  253. package/dist/ux-usability.js +8 -5
  254. package/dist/ux-usability.js.map +1 -1
  255. package/dist/verify-fix-cli.js +4 -2
  256. package/dist/verify-fix-cli.js.map +1 -1
  257. package/package.json +9 -9
  258. package/skills/jevitate-ci-check/SKILL.md +9 -1
  259. package/skills/jevitate-demo/SKILL.md +5 -2
  260. package/skills/jevitate-getting-started/SKILL.md +14 -1
  261. package/skills/jevitate-mission-scope/SKILL.md +2 -2
  262. package/skills/jevitate-run-journey/SKILL.md +42 -9
  263. package/skills/jevitate-test-campaign/SKILL.md +26 -5
@@ -1,31 +1,47 @@
1
1
  import type { SelfHealer } from "@jevitate/runtime";
2
- import type { JudgmentPort, GenerationPort } from "@jevitate/ai-core";
2
+ import type { GenerationPort, UsageLedger } from "@jevitate/ai-core";
3
+ import type { Actor } from "@jevitate/screenplay";
3
4
  /**
4
- * The real `@jevitate/runtime.SelfHealer`, backed by `@jevitate/explore`'s
5
- * `runGoalBasedMission`. This is the ONLY edge from the CLI to
6
- * `@jevitate/explore` used for self-healing — `@jevitate/runtime` itself
7
- * never depends on `@jevitate/explore` (it only knows the `SelfHealer`
8
- * port), preserving ticket #1's "nothing depends on explore except cli"
9
- * constraint.
5
+ * #453: the CLI's `SelfHealer` — EVIDENCE-ONLY. It never acts on the page (`actsOnPage: false`), so
6
+ * the runner may consult it for a guarded click/fill step too (whose probe runs under the write
7
+ * blocker). Its whole input is:
8
+ * - the broken step (sanitised: `hideValue`),
9
+ * - a read-only snapshot of the page's controls (the observed inventory: role, name, test id, label),
10
+ * - the change evidence as `{kind, before, after}` facts only — never a raw hunk, never a credential
11
+ * (every string is scrubbed of the run's secret params, `redactSecretValues`).
10
12
  *
11
- * DEVIATION (real-API vs plan): the plan assumed `runGoalBasedMission` took a
12
- * loose `{goal, successAssertion, allowlist, actor, judgment, generation}`
13
- * bag returning `{outcome, recording, transcript}`. The SHIPPED API
14
- * (`GoalBasedMissionConfig` = `Omit<ExploreConfig,"missionContext"> +
15
- * successAssertion`) takes a single config object with `judge`/`gen` (not
16
- * `judgment`/`generation`) and REQUIRES `startUrl` + `allowlist`, returning a
17
- * `GoalBasedResult` whose `outcome` is `"succeeded" | "exhausted" |
18
- * "blocked"`. Only `"succeeded"` (the independent oracle held) maps to
19
- * `"healed"`; everything else is `"not-healed"` — the healer never certifies
20
- * its own success (guardrail #4, mirrored from explore's oracle).
21
- *
22
- * DEVIATION (start-from-live-state): the plan's `SelfHealer` contract says
23
- * the actor is already sitting in the live state right after the last-good
24
- * step, so no re-navigation is needed. The shipped `explore()` ALWAYS
25
- * navigates to `startUrl` first, so this adapter re-anchors by using the
26
- * actor's CURRENT live URL as `startUrl` (a reload of the page we are
27
- * already on) — the closest the shipped mission API allows. Flagged as a
28
- * follow-up: a future `runGoalBasedMission` variant could skip the initial
29
- * navigation to honor the pure resume-from-state design.
13
+ * It proposes single-step RETARGETS of the broken step: the step with only its `target` changed, its
14
+ * proof (`expect`, `value`, …) as recorded. Deterministic candidates come first: an inventory control
15
+ * whose name / test id / label equals some evidence `after`. The model (`GenerationPort`, task
16
+ * `heal.rank`) is only an advisory ranker of those candidates and may pick at most ONE more control
17
+ * from the inventory — within the request's `maxModelCalls` and `deadlineAtMs`; past the deadline its
18
+ * answer is dropped. The runner adjudicates every candidate (proof untouched, change evidence, the
19
+ * floor, the probe): nothing here decides that a heal holds.
30
20
  */
31
- export declare function makeExploreSelfHealer(judgment: JudgmentPort, generation: GenerationPort): SelfHealer;
21
+ /** One observed control: what the healer and the model see of the page. */
22
+ export interface InventoryControl {
23
+ readonly role: string;
24
+ readonly name: string;
25
+ readonly testId?: string;
26
+ readonly label?: string;
27
+ readonly enabled: boolean;
28
+ /** Model-facing one-liner (redacted page content). */
29
+ readonly summary: string;
30
+ }
31
+ /** Reads the live page's controls without acting on it. */
32
+ export type ControlInventoryReader = (actor: Actor, secrets: readonly string[]) => Promise<readonly InventoryControl[]>;
33
+ export interface EvidenceSelfHealerOptions {
34
+ /** Test seam; default: `snapshot()` of the actor's page (read-only). */
35
+ readonly inventory?: ControlInventoryReader;
36
+ /** The most inventory controls shown to the model. Default 80. */
37
+ readonly maxControls?: number;
38
+ /**
39
+ * #453 review: the run's usage ledger (the gateway's `UsageTracker`). When given, the tokens a
40
+ * ranker call reported (input + output) are charged to the heal budget (`usage.tokens`). A gateway
41
+ * that reports none (the fake) charges none.
42
+ */
43
+ readonly usage?: UsageLedger;
44
+ }
45
+ /** The default inventory: the explore snapshot's controls (read-only, already redacted). */
46
+ export declare const snapshotInventory: ControlInventoryReader;
47
+ export declare function makeEvidenceSelfHealer(generation?: GenerationPort, opts?: EvidenceSelfHealerOptions): SelfHealer;
@@ -1,72 +1,206 @@
1
- import { runGoalBasedMission } from "@jevitate/explore";
1
+ import { normalizeAnchor, sanitizeStep } from "@jevitate/runtime";
2
+ import { snapshot } from "@jevitate/explore";
2
3
  import { BrowseTheWebToken } from "@jevitate/screenplay";
3
- /**
4
- * The real `@jevitate/runtime.SelfHealer`, backed by `@jevitate/explore`'s
5
- * `runGoalBasedMission`. This is the ONLY edge from the CLI to
6
- * `@jevitate/explore` used for self-healing — `@jevitate/runtime` itself
7
- * never depends on `@jevitate/explore` (it only knows the `SelfHealer`
8
- * port), preserving ticket #1's "nothing depends on explore except cli"
9
- * constraint.
10
- *
11
- * DEVIATION (real-API vs plan): the plan assumed `runGoalBasedMission` took a
12
- * loose `{goal, successAssertion, allowlist, actor, judgment, generation}`
13
- * bag returning `{outcome, recording, transcript}`. The SHIPPED API
14
- * (`GoalBasedMissionConfig` = `Omit<ExploreConfig,"missionContext"> +
15
- * successAssertion`) takes a single config object with `judge`/`gen` (not
16
- * `judgment`/`generation`) and REQUIRES `startUrl` + `allowlist`, returning a
17
- * `GoalBasedResult` whose `outcome` is `"succeeded" | "exhausted" |
18
- * "blocked"`. Only `"succeeded"` (the independent oracle held) maps to
19
- * `"healed"`; everything else is `"not-healed"` — the healer never certifies
20
- * its own success (guardrail #4, mirrored from explore's oracle).
21
- *
22
- * DEVIATION (start-from-live-state): the plan's `SelfHealer` contract says
23
- * the actor is already sitting in the live state right after the last-good
24
- * step, so no re-navigation is needed. The shipped `explore()` ALWAYS
25
- * navigates to `startUrl` first, so this adapter re-anchors by using the
26
- * actor's CURRENT live URL as `startUrl` (a reload of the page we are
27
- * already on) — the closest the shipped mission API allows. Flagged as a
28
- * follow-up: a future `runGoalBasedMission` variant could skip the initial
29
- * navigation to honor the pure resume-from-state design.
30
- */
31
- export function makeExploreSelfHealer(judgment, generation) {
4
+ import { clock } from "@jevitate/domain";
5
+ import { describeStep } from "@jevitate/journey";
6
+ import { redactSecretValues } from "./journey-api.js";
7
+ /** Roles a fill step may target. */
8
+ const FIELD_ROLES = new Set(["textbox", "searchbox", "combobox", "spinbutton"]);
9
+ const DEFAULT_MAX_CONTROLS = 80;
10
+ const MAX_CANDIDATES = 8;
11
+ /** The default inventory: the explore snapshot's controls (read-only, already redacted). */
12
+ export const snapshotInventory = async (actor, secrets) => {
13
+ let page;
14
+ try {
15
+ page = actor.ability(BrowseTheWebToken).session.page;
16
+ }
17
+ catch {
18
+ return [];
19
+ }
20
+ const snap = await snapshot(page, { secrets, maxCandidates: 120 });
21
+ return snap.controls.map(inventoryOf);
22
+ };
23
+ function inventoryOf(c) {
24
+ const d = c.descriptor;
32
25
  return {
33
- async reLearnStep({ actor, brokenStep, expectedPostcondition, allowedOrigins, secrets }) {
34
- const allowlist = allowedOrigins ?? [];
35
- const result = await runGoalBasedMission({
36
- goal: describeBrokenStepGoal(brokenStep),
37
- successAssertion: expectedPostcondition,
38
- allowlist,
39
- // Re-anchor to the live page we are already on (see DEVIATION above).
40
- // Authorization is still enforced by explore's own
41
- // `assertAuthorizedExploreTarget` against `allowlist` — an
42
- // off-allowlist current URL fails closed there (it throws), never
43
- // silently healed.
44
- startUrl: currentUrl(actor, allowlist),
45
- actor,
46
- judge: judgment,
47
- gen: generation,
48
- // #399: the run's secret params (the live URL may carry one) are redacted from every prompt.
49
- ...(secrets === undefined || secrets.length === 0 ? {} : { secrets }),
26
+ role: c.role,
27
+ name: c.name,
28
+ ...(d.testId === undefined ? {} : { testId: d.testId }),
29
+ ...(d.label === undefined ? {} : { label: d.label }),
30
+ enabled: c.enabled,
31
+ summary: c.summary,
32
+ };
33
+ }
34
+ export function makeEvidenceSelfHealer(generation, opts = {}) {
35
+ const readInventory = opts.inventory ?? snapshotInventory;
36
+ const maxControls = opts.maxControls ?? DEFAULT_MAX_CONTROLS;
37
+ return {
38
+ actsOnPage: false,
39
+ async proposeCandidates(req) {
40
+ const secrets = req.secrets ?? [];
41
+ const broken = req.brokenStep;
42
+ if (!("target" in broken) || broken.target === undefined) {
43
+ return { candidates: [], usage: { modelCalls: 0 }, reason: `a ${broken.kind} step has no target to retarget onto a page control` };
44
+ }
45
+ // Only the change FACTS, scrubbed of the run's secrets.
46
+ const evidence = redactSecretValues(req.evidence.map(factOf), secrets);
47
+ let inventory;
48
+ try {
49
+ inventory = redactSecretValues((await readInventory(req.actor, secrets)).filter((c) => c.enabled && fits(broken, c)), secrets);
50
+ }
51
+ catch {
52
+ inventory = [];
53
+ }
54
+ const tried = new Set(req.tried.map((s) => JSON.stringify(s)));
55
+ const fresh = (s) => !tried.has(JSON.stringify(sanitizeStep(s))) && JSON.stringify(s) !== JSON.stringify(broken);
56
+ const deterministic = dedupe(evidenceRetargets(broken, inventory, evidence).filter((c) => fresh(c.step)));
57
+ const ask = generation !== undefined && req.maxModelCalls >= 1 && clock.now() < req.deadlineAtMs && (deterministic.length > 0 || inventory.length > 0);
58
+ if (!ask) {
59
+ return deterministic.length === 0
60
+ ? { candidates: [], usage: { modelCalls: 0 }, reason: "no observed control matches the change evidence" }
61
+ : { candidates: deterministic.slice(0, MAX_CANDIDATES), usage: { modelCalls: 0 } };
62
+ }
63
+ const shown = inventory.slice(0, maxControls);
64
+ const input = redactSecretValues({
65
+ step: describeStep(sanitizeStep(broken)).slice(0, 1000),
66
+ evidence: evidence.slice(0, 40).map((e) => ({ kind: e.kind.slice(0, 40), before: clip(e.before), after: clip(e.after) })),
67
+ candidates: deterministic.slice(0, 40).map((c, index) => ({ index, summary: c.hypothesis.slice(0, 300) })),
68
+ controls: shown.map((c, index) => ({ index, summary: c.summary.slice(0, 300) })),
69
+ }, secrets);
70
+ const tokensSoFar = () => {
71
+ const c = opts.usage?.snapshot();
72
+ return c === undefined ? 0 : c.inputTokens + c.outputTokens;
73
+ };
74
+ const before = tokensSoFar();
75
+ const usage = { modelCalls: 1 };
76
+ let ranked;
77
+ try {
78
+ ranked = (await withDeadline(generation.generate("heal.rank", input), req.deadlineAtMs)).output;
79
+ }
80
+ catch {
81
+ ranked = undefined;
82
+ }
83
+ const spent = tokensSoFar() - before;
84
+ if (spent > 0)
85
+ usage.tokens = spent;
86
+ if (ranked === undefined) {
87
+ return { candidates: deterministic.slice(0, MAX_CANDIDATES), usage, reason: "the model ranker gave no usable answer within the heal deadline" };
88
+ }
89
+ const seen = new Set();
90
+ const ordered = [];
91
+ for (const i of ranked.order) {
92
+ const c = deterministic[i];
93
+ if (c === undefined || seen.has(i))
94
+ continue;
95
+ seen.add(i);
96
+ ordered.push(c);
97
+ }
98
+ // The ranker is advisory: an evidence candidate it left out is still tried, after its picks.
99
+ deterministic.forEach((c, i) => {
100
+ if (!seen.has(i))
101
+ ordered.push(c);
50
102
  });
51
- return result.outcome === "succeeded"
52
- ? { outcome: "healed", segment: result.recording }
53
- : { outcome: "not-healed", reason: `re-learn mission ${result.outcome}` };
103
+ const picked = ranked.control === null ? undefined : shown[ranked.control];
104
+ const extra = picked === undefined ? undefined : controlRetarget(broken, picked, `the model picked the page's ${picked.role || "control"} ${quote(picked.name)}`);
105
+ const all = dedupe(extra === undefined || !fresh(extra.step) ? ordered : [...ordered, extra]);
106
+ return { candidates: all.slice(0, MAX_CANDIDATES), usage };
54
107
  },
55
108
  };
56
109
  }
57
- /** The actor's current live URL — the natural start for a scoped re-learn.
58
- * Falls back to the first authorized origin when the actor exposes no live
59
- * browsing ability (e.g. a test double); an empty allowlist then yields ""
60
- * and explore's authorization guard fails closed. */
61
- function currentUrl(actor, fallbackOrigins) {
62
- try {
63
- return actor.ability(BrowseTheWebToken).session.page.url();
64
- }
65
- catch {
66
- return fallbackOrigins[0] ?? "";
110
+ function factOf(e) {
111
+ return { kind: e.kind, ...(e.before === undefined ? {} : { before: e.before }), ...(e.after === undefined ? {} : { after: e.after }) };
112
+ }
113
+ function clip(s) {
114
+ return s === undefined ? null : s.slice(0, 300);
115
+ }
116
+ /** Can `broken` (a click/fill/extract) target this control at all? */
117
+ function fits(broken, c) {
118
+ if (broken.kind === "fill")
119
+ return FIELD_ROLES.has(c.role);
120
+ if (broken.kind === "click")
121
+ return !FIELD_ROLES.has(c.role);
122
+ return true;
123
+ }
124
+ /** Inventory controls whose name / test id / label equals an evidence `after` → a retarget onto that anchor. */
125
+ function evidenceRetargets(broken, inventory, evidence) {
126
+ const out = [];
127
+ for (const e of evidence) {
128
+ if (e.after === undefined || e.kind === "inserted-ui")
129
+ continue;
130
+ const after = normalizeAnchor(e.after);
131
+ for (const c of inventory) {
132
+ const via = c.testId !== undefined && normalizeAnchor(c.testId) === after && (e.kind === "test-id" || e.kind === "note")
133
+ ? "testId"
134
+ : normalizeAnchor(c.name) === after
135
+ ? "name"
136
+ : c.label !== undefined && normalizeAnchor(c.label) === after
137
+ ? "label"
138
+ : undefined;
139
+ if (via === undefined)
140
+ continue;
141
+ const cand = controlRetarget(broken, c, `${e.kind} ${quote(e.before)} → ${quote(e.after)} matches the page's ${c.role || "control"} ${quote(c.name)}`, via);
142
+ if (cand !== undefined)
143
+ out.push(cand);
144
+ }
67
145
  }
146
+ return out;
147
+ }
148
+ /** `broken` retargeted onto control `c` by one anchor (its frame and container kept, everything else as recorded). */
149
+ function controlRetarget(broken, c, why, via) {
150
+ if (!("target" in broken) || broken.target === undefined)
151
+ return undefined;
152
+ const old = broken.target;
153
+ const by = via ?? (c.name.trim() === "" ? (c.testId !== undefined ? "testId" : "label") : "name");
154
+ const anchor = by === "testId"
155
+ ? c.testId === undefined
156
+ ? undefined
157
+ : { testId: c.testId }
158
+ : by === "label"
159
+ ? c.label === undefined
160
+ ? undefined
161
+ : { label: c.label }
162
+ : c.name.trim() === ""
163
+ ? undefined
164
+ : { ...(c.role === "" ? {} : { role: c.role }), name: c.name.trim() };
165
+ if (anchor === undefined)
166
+ return undefined;
167
+ const target = { ...anchor, ...(old.frameUrl === undefined ? {} : { frameUrl: old.frameUrl }), ...(old.container === undefined ? {} : { container: old.container }) };
168
+ return { step: { ...broken, target }, hypothesis: `${why}: retarget to ${describeTarget(target)}` };
169
+ }
170
+ function describeTarget(t) {
171
+ if (t.testId !== undefined)
172
+ return `test id ${quote(t.testId)}`;
173
+ if (t.label !== undefined)
174
+ return `label ${quote(t.label)}`;
175
+ return `${t.role ?? "control"} ${quote(t.name)}`;
176
+ }
177
+ function quote(s) {
178
+ return s === undefined ? "(none)" : JSON.stringify(s);
179
+ }
180
+ function dedupe(cs) {
181
+ const seen = new Set();
182
+ return cs.filter((c) => {
183
+ const k = JSON.stringify(c.step);
184
+ if (seen.has(k))
185
+ return false;
186
+ seen.add(k);
187
+ return true;
188
+ });
68
189
  }
69
- function describeBrokenStepGoal(step) {
70
- return `Perform the equivalent of a "${step.kind}" step to satisfy the expected postcondition — the site appears to have changed since this step was recorded.`;
190
+ /** `p`, or a rejection once the `clock.now()` instant `deadlineAtMs` passes. */
191
+ function withDeadline(p, deadlineAtMs) {
192
+ const left = deadlineAtMs - clock.now();
193
+ if (left <= 0)
194
+ return Promise.reject(new Error("heal deadline passed"));
195
+ return new Promise((resolve, reject) => {
196
+ const timer = clock.setTimeout(() => reject(new Error("heal deadline passed")), left);
197
+ p.then((v) => {
198
+ clock.clearTimeout(timer);
199
+ resolve(v);
200
+ }, (e) => {
201
+ clock.clearTimeout(timer);
202
+ reject(e instanceof Error ? e : new Error(String(e)));
203
+ });
204
+ });
71
205
  }
72
206
  //# sourceMappingURL=self-heal-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-heal-adapter.js","sourceRoot":"","sources":["../src/self-heal-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAsB,EAAE,UAA0B;IACtF,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,OAAO,EAAE;YACrF,MAAM,SAAS,GAAG,cAAc,IAAI,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;gBACvC,IAAI,EAAE,sBAAsB,CAAC,UAAU,CAAC;gBACxC,gBAAgB,EAAE,qBAAqB;gBACvC,SAAS;gBACT,sEAAsE;gBACtE,mDAAmD;gBACnD,2DAA2D;gBAC3D,kEAAkE;gBAClE,mBAAmB;gBACnB,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;gBACtC,KAAK;gBACL,KAAK,EAAE,QAAQ;gBACf,GAAG,EAAE,UAAU;gBACf,6FAA6F;gBAC7F,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aACtE,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW;gBACnC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE;gBAClD,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;qDAGqD;AACrD,SAAS,UAAU,CAAC,KAAY,EAAE,eAAkC;IAClE,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU;IACxC,OAAO,gCAAgC,IAAI,CAAC,IAAI,+GAA+G,CAAC;AAClK,CAAC"}
1
+ {"version":3,"file":"self-heal-adapter.js","sourceRoot":"","sources":["../src/self-heal-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { Command } from "commander";
2
2
  import { type CliDeps } from "./cli-shared.js";
3
- /** Registers `jevitate site`: `policy get|set` and `simulate`. */
3
+ /** Registers `jevitate site`: `policy get|set|rules` and `simulate`. */
4
4
  export declare function registerSiteCommands(program: Command, deps: CliDeps): void;
package/dist/site-cli.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { SitePolicySchema, simulateTiming } from "@jevitate/domain";
3
+ import { SAFETY_RULES } from "@jevitate/explore";
3
4
  import { ok, fail } from "./envelope.js";
4
5
  import { sitePolicyKey } from "./site-gate-cli.js";
5
6
  import { resolveDbPath, withSitePolicyRepository, parsePlannedScript, emitJson } from "./cli-shared.js";
6
- /** Registers `jevitate site`: `policy get|set` and `simulate`. */
7
+ /** Registers `jevitate site`: `policy get|set|rules` and `simulate`. */
7
8
  export function registerSiteCommands(program, deps) {
8
9
  const site = program
9
10
  .command("site")
@@ -40,6 +41,28 @@ export function registerSiteCommands(program, deps) {
40
41
  emitJson(program, fail("E_SITE_POLICY_GET", String(err)));
41
42
  }
42
43
  });
44
+ sitePolicy
45
+ .command("rules")
46
+ .description("#428: list the control safety rules every run applies — built-in heuristics (ids, what they match, their regex), operator patterns and hard " +
47
+ "boundaries — and whether --allow-control can waive each (only the soft 'may cost money' heuristic). A refusal names the rule id it matched")
48
+ .option("--json", "emit a JSON envelope")
49
+ .action(function () {
50
+ const { json } = this.opts();
51
+ const rules = SAFETY_RULES.map((r) => ({ ...r }));
52
+ if (json) {
53
+ emitJson(program, ok({ rules }));
54
+ return;
55
+ }
56
+ const out = program.configureOutput().writeOut;
57
+ for (const r of rules) {
58
+ out?.(`${r.id} [${r.source}] ${r.allowControl ? "waivable by --allow-control" : "not waivable by --allow-control"}\n`);
59
+ out?.(` matches: ${r.matches}\n`);
60
+ if (r.regex !== undefined)
61
+ out?.(` regex: /${r.regex}/i\n`);
62
+ out?.(` lifted by: ${r.liftedBy}\n`);
63
+ }
64
+ process.exitCode = 0;
65
+ });
43
66
  sitePolicy
44
67
  .command("set <site>")
45
68
  .description("set the policy for a site (an origin): Journey runs there are paced, throttled, budgeted and kept out of quiet hours " +
@@ -1 +1 @@
1
- {"version":3,"file":"site-cli.js","sourceRoot":"","sources":["../src/site-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site-cli.js","sourceRoot":"","sources":["../src/site-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAqC,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAgB,aAAa,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtH,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,IAAa;IAClE,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+FAA+F,CAAC,CAAC;IAChH,MAAM,UAAU,GAAG,IAAI;SACpB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8FAA8F,CAAC,CAAC;IAE/G,UAAU;SACP,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACvC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,KAAK,WAA0B,MAAc;QACnD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAoD,CAAC;QAC5F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACtH,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAClC,eAAe,MAAM,cAAc,MAAM,CAAC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAClF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAClC,6BAA6B,MAAM,eAAe,OAAO,MAAM,CAChE,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,8IAA8I;QAC5I,4IAA4I,CAC/I;SACA,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC;QACN,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAsB,CAAC;QACjD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,iCAAiC,IAAI,CAAC,CAAC;YACxH,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YAC/D,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,uHAAuH;QACrH,qFAAqF,CACxF;SACA,cAAc,CAAC,eAAe,EAAE,4BAA4B,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACvC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,KAAK,WAA0B,MAAc;QACnD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAKzC,CAAC;QACL,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,4FAA4F;YAC5F,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,wBAAwB,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9F,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAClC,eAAe,IAAI,eAAe,OAAO,qBAAqB,MAAM,CAAC,OAAO,IAAI,CACjF,CAAC;gBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,sFAAsF,CAAC;SACnG,cAAc,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SAC5E,MAAM,CAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,CAAC;SACnD,MAAM,CAAC,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACvC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,KAAK,WAA0B,MAAc;QACnD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAMjD,CAAC;QACL,IAAI,aAA4B,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACtH,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAC/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC;gBAC7D,CAAC;gBACD,GAAG,EAAE,CAAC,YAAY,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,7 @@
1
+ import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js";
1
2
  import { existsSync } from "node:fs";
2
3
  import { ParamValidationError } from "@jevitate/journey";
4
+ import { journeyExitCode } from "@jevitate/domain";
3
5
  import { ok, fail } from "./envelope.js";
4
6
  import { SiteGateRefusedError } from "@jevitate/runtime";
5
7
  import { UnknownJourneyError, JourneyRequiresAuthError } from "./journey-api.js";
@@ -203,7 +205,8 @@ export function registerSourceCommands(program, deps) {
203
205
  .option("--param <kv>", "param as key=value (repeatable)", collectParam, {})
204
206
  .option("--storage-state <file>", "Playwright storageState JSON to start the session authenticated (#118: required when the journey declares metadata.requiresAuth); must exist")
205
207
  .option("--json", "emit a JSON envelope")
206
- .action(async function (name, journeyId) {
208
+ .option(TAG_FLAG, TAG_HELP, collectTag, [])
209
+ .action(taggedAction(program, "source run", async function (name, journeyId) {
207
210
  const { param, storageState, json, ...emulationFlags } = this.opts();
208
211
  if (storageState !== undefined && !existsSync(storageState)) {
209
212
  emitJson(program, fail("E_SOURCE_RUN_ARGS", `storage state not found: ${storageState}`));
@@ -234,12 +237,13 @@ export function registerSourceCommands(program, deps) {
234
237
  const envelope = ok(result);
235
238
  if (json) {
236
239
  emitJson(program, envelope);
237
- if (result.outcome === "quarantined")
238
- process.exitCode = 1;
240
+ const code = journeyExitCode(result.outcome);
241
+ if (code !== 0)
242
+ process.exitCode = code;
239
243
  }
240
244
  else {
241
245
  writeRawResult(program, result);
242
- process.exitCode = result.outcome === "quarantined" ? 1 : 0;
246
+ process.exitCode = journeyExitCode(result.outcome);
243
247
  }
244
248
  }
245
249
  catch (err) {
@@ -279,6 +283,6 @@ export function registerSourceCommands(program, deps) {
279
283
  emitJson(program, fail("E_SOURCE_RUN", String(err instanceof Error ? err.message : err)));
280
284
  }
281
285
  }
282
- });
286
+ }));
283
287
  }
284
288
  //# sourceMappingURL=source-cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-cli.js","sourceRoot":"","sources":["../src/source-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-cli.js","sourceRoot":"","sources":["../src/source-cli.ts"],"names":[],"mappings":"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"}
@@ -143,6 +143,10 @@ export declare const SUITE_EXPLORE_OPTIONS: {
143
143
  readonly shape: "strings";
144
144
  readonly appliesTo: readonly ExploreItemKind[];
145
145
  };
146
+ readonly allowControl: {
147
+ readonly shape: "strings";
148
+ readonly appliesTo: readonly ExploreItemKind[];
149
+ };
146
150
  readonly allowDestructive: {
147
151
  readonly shape: "boolean";
148
152
  readonly appliesTo: readonly ExploreItemKind[];
@@ -264,6 +268,16 @@ export declare const SUITE_EXPLORE_OPTIONS: {
264
268
  readonly shape: "named-paths";
265
269
  readonly appliesTo: readonly ["goal"];
266
270
  };
271
+ readonly minActions: {
272
+ readonly shape: "integer";
273
+ readonly appliesTo: readonly ["goal"];
274
+ readonly range: readonly [1, 100000];
275
+ };
276
+ readonly minDistinctStates: {
277
+ readonly shape: "integer";
278
+ readonly appliesTo: readonly ["goal"];
279
+ readonly range: readonly [1, 100000];
280
+ };
267
281
  readonly allowVacuousChecks: {
268
282
  readonly shape: "boolean";
269
283
  readonly appliesTo: readonly ExploreItemKind[];
@@ -49,6 +49,7 @@ export const SUITE_EXPLORE_OPTIONS = {
49
49
  // safety, settle, timing (the target config explore builds from its flags)
50
50
  deny: { shape: "strings", appliesTo: ALL_KINDS },
51
51
  paid: { shape: "strings", appliesTo: ALL_KINDS },
52
+ allowControl: { shape: "strings", appliesTo: ALL_KINDS },
52
53
  allowDestructive: { shape: "boolean", appliesTo: ALL_KINDS },
53
54
  dialogs: { shape: "string", appliesTo: ALL_KINDS, oneOf: ["dismiss", "accept"] },
54
55
  allowWrites: { shape: "boolean", appliesTo: ALL_KINDS },
@@ -84,6 +85,9 @@ export const SUITE_EXPLORE_OPTIONS = {
84
85
  hookTimeoutMs: { shape: "integer", appliesTo: ["goal"] },
85
86
  // #243: named identities a fixture step authenticates as (`auth.identity`), not the item's own session
86
87
  fixtureIdentity: { shape: "named-paths", appliesTo: ["goal"] },
88
+ // #424: the minimum exploration effort before a goal run's model may conclude
89
+ minActions: { shape: "integer", appliesTo: ["goal"], range: [1, 100000] },
90
+ minDistinctStates: { shape: "integer", appliesTo: ["goal"], range: [1, 100000] },
87
91
  // #202: a success check satisfied before the run's first action is a warning, not a failure
88
92
  allowVacuousChecks: { shape: "boolean", appliesTo: GOAL_UX },
89
93
  // #303: opt-in action deltas (every explore item kind but feature)
@@ -138,6 +142,7 @@ export const SUITE_EXCLUDED_EXPLORE_OPTIONS = {
138
142
  ignoreHostLoad: "#205: whether a check starts on a starved host is decided once, for the whole check: pass --ignore-host-load to `jevitate check`",
139
143
  real: "one model gateway per check: the suite's `ai` or `jevitate check --real`",
140
144
  fakeAi: "one model gateway per check: the suite's `ai` or `jevitate check --fake-ai`",
145
+ jevProvider: "one Jev provider per check: `jevitate check --jev-provider` (or JEVITATE_JEV_PROVIDER)",
141
146
  out: "one output directory per check (`jevitate check --out`); item results go to <out>/results",
142
147
  json: "one envelope per check (`jevitate check --json` / --json-out)",
143
148
  fileIssues: "a check is a CI gate: findings are reported in JUnit/SARIF/report.md, never filed mid-run",
@@ -145,6 +150,9 @@ export const SUITE_EXCLUDED_EXPLORE_OPTIONS = {
145
150
  jevitateRepo: "a check is a CI gate: findings are reported in JUnit/SARIF/report.md, never filed mid-run",
146
151
  repeat: "a check gates each item once by finding identity; track flakes across checks with --baseline",
147
152
  minAgreement: "a check gates each item once by finding identity; track flakes across checks with --baseline",
153
+ target: "#451: a check item is attributed by its suite item id (stamped on every item result); `explore --target` is for a standalone run",
154
+ tag: "#426: tags are per check — `jevitate check --tag` stamps every item result; a suite item takes none of its own",
155
+ authCheck: "#427: the pre-flight auth check runs before `explore` runs and queued missions; a check runs its items' missions directly, without it — mint the suite's sessions with `jevitate login` before `jevitate check`",
148
156
  typeFixture: "#281: a file typed verbatim into a field is an `explore --type-fixture` binding; a suite goal declares none",
149
157
  };
150
158
  /** Suite key of a generic option (the explore attribute name itself). */