@jevitate/cli 0.12.0 → 0.13.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 (135) hide show
  1. package/dist/bin.js +48283 -47589
  2. package/dist/build-info.generated.js +2 -2
  3. package/dist/explore-cli/adversarial-strategy.d.ts +3 -0
  4. package/dist/explore-cli/adversarial-strategy.js +99 -0
  5. package/dist/explore-cli/adversarial-strategy.js.map +1 -0
  6. package/dist/explore-cli/coverage-strategy.d.ts +3 -0
  7. package/dist/explore-cli/coverage-strategy.js +95 -0
  8. package/dist/explore-cli/coverage-strategy.js.map +1 -0
  9. package/dist/explore-cli/feature-strategy.d.ts +3 -0
  10. package/dist/explore-cli/feature-strategy.js +59 -0
  11. package/dist/explore-cli/feature-strategy.js.map +1 -0
  12. package/dist/explore-cli/goal-strategy.d.ts +3 -0
  13. package/dist/explore-cli/goal-strategy.js +184 -0
  14. package/dist/explore-cli/goal-strategy.js.map +1 -0
  15. package/dist/explore-cli/options.d.ts +3 -0
  16. package/dist/explore-cli/options.js +155 -0
  17. package/dist/explore-cli/options.js.map +1 -0
  18. package/dist/explore-cli/run.d.ts +7 -0
  19. package/dist/explore-cli/run.js +682 -0
  20. package/dist/explore-cli/run.js.map +1 -0
  21. package/dist/explore-cli/shared.d.ts +158 -0
  22. package/dist/explore-cli/shared.js +20 -0
  23. package/dist/explore-cli/shared.js.map +1 -0
  24. package/dist/explore-cli/usability-strategy.d.ts +3 -0
  25. package/dist/explore-cli/usability-strategy.js +136 -0
  26. package/dist/explore-cli/usability-strategy.js.map +1 -0
  27. package/dist/explore-cli.d.ts +2 -2
  28. package/dist/explore-cli.js +2 -1347
  29. package/dist/explore-cli.js.map +1 -1
  30. package/dist/journey-anchor-api.d.ts +10 -9
  31. package/dist/journey-anchor-api.js +12 -22
  32. package/dist/journey-anchor-api.js.map +1 -1
  33. package/dist/journey-anchor-cli.d.ts +1 -1
  34. package/dist/journey-anchor-cli.js +10 -6
  35. package/dist/journey-anchor-cli.js.map +1 -1
  36. package/dist/journey-cli/anchors.d.ts +4 -0
  37. package/dist/journey-cli/anchors.js +48 -0
  38. package/dist/journey-cli/anchors.js.map +1 -0
  39. package/dist/journey-cli/find.d.ts +4 -0
  40. package/dist/journey-cli/find.js +44 -0
  41. package/dist/journey-cli/find.js.map +1 -0
  42. package/dist/journey-cli/lint.d.ts +4 -0
  43. package/dist/journey-cli/lint.js +76 -0
  44. package/dist/journey-cli/lint.js.map +1 -0
  45. package/dist/journey-cli/list.d.ts +4 -0
  46. package/dist/journey-cli/list.js +48 -0
  47. package/dist/journey-cli/list.js.map +1 -0
  48. package/dist/journey-cli/migrate.d.ts +4 -0
  49. package/dist/journey-cli/migrate.js +101 -0
  50. package/dist/journey-cli/migrate.js.map +1 -0
  51. package/dist/journey-cli/promote.d.ts +4 -0
  52. package/dist/journey-cli/promote.js +181 -0
  53. package/dist/journey-cli/promote.js.map +1 -0
  54. package/dist/journey-cli/publish.d.ts +4 -0
  55. package/dist/journey-cli/publish.js +70 -0
  56. package/dist/journey-cli/publish.js.map +1 -0
  57. package/dist/journey-cli/review.d.ts +4 -0
  58. package/dist/journey-cli/review.js +103 -0
  59. package/dist/journey-cli/review.js.map +1 -0
  60. package/dist/journey-cli/run.d.ts +4 -0
  61. package/dist/journey-cli/run.js +244 -0
  62. package/dist/journey-cli/run.js.map +1 -0
  63. package/dist/journey-cli/shared.d.ts +9 -0
  64. package/dist/journey-cli/shared.js +12 -0
  65. package/dist/journey-cli/shared.js.map +1 -0
  66. package/dist/journey-cli/verify.d.ts +4 -0
  67. package/dist/journey-cli/verify.js +125 -0
  68. package/dist/journey-cli/verify.js.map +1 -0
  69. package/dist/journey-cli.d.ts +3 -2
  70. package/dist/journey-cli.js +21 -949
  71. package/dist/journey-cli.js.map +1 -1
  72. package/dist/journey-review/render.d.ts +43 -0
  73. package/dist/journey-review/render.js +461 -0
  74. package/dist/journey-review/render.js.map +1 -0
  75. package/dist/journey-review.d.ts +1 -4
  76. package/dist/journey-review.js +16 -391
  77. package/dist/journey-review.js.map +1 -1
  78. package/dist/log-sources.js +17 -1
  79. package/dist/log-sources.js.map +1 -1
  80. package/dist/mcp-api.js +16 -821
  81. package/dist/mcp-api.js.map +1 -1
  82. package/dist/mcp-cli-tools.js +12 -4
  83. package/dist/mcp-cli-tools.js.map +1 -1
  84. package/dist/mcp-tools/cli.d.ts +3 -0
  85. package/dist/mcp-tools/cli.js +20 -0
  86. package/dist/mcp-tools/cli.js.map +1 -0
  87. package/dist/mcp-tools/explore.d.ts +3 -0
  88. package/dist/mcp-tools/explore.js +141 -0
  89. package/dist/mcp-tools/explore.js.map +1 -0
  90. package/dist/mcp-tools/findings.d.ts +3 -0
  91. package/dist/mcp-tools/findings.js +277 -0
  92. package/dist/mcp-tools/findings.js.map +1 -0
  93. package/dist/mcp-tools/inbox.d.ts +3 -0
  94. package/dist/mcp-tools/inbox.js +106 -0
  95. package/dist/mcp-tools/inbox.js.map +1 -0
  96. package/dist/mcp-tools/journey.d.ts +3 -0
  97. package/dist/mcp-tools/journey.js +260 -0
  98. package/dist/mcp-tools/journey.js.map +1 -0
  99. package/dist/mcp-tools/shared.d.ts +39 -0
  100. package/dist/mcp-tools/shared.js +69 -0
  101. package/dist/mcp-tools/shared.js.map +1 -0
  102. package/dist/sweep-api.d.ts +9 -0
  103. package/dist/sweep-api.js +70 -2
  104. package/dist/sweep-api.js.map +1 -1
  105. package/dist/sweep-cli.d.ts +2 -0
  106. package/dist/sweep-cli.js +22 -5
  107. package/dist/sweep-cli.js.map +1 -1
  108. package/dist/ux-usability/analysis.d.ts +14 -0
  109. package/dist/ux-usability/analysis.js +106 -0
  110. package/dist/ux-usability/analysis.js.map +1 -0
  111. package/dist/ux-usability/done-adjudication.d.ts +15 -0
  112. package/dist/ux-usability/done-adjudication.js +56 -0
  113. package/dist/ux-usability/done-adjudication.js.map +1 -0
  114. package/dist/ux-usability/hang.d.ts +5 -0
  115. package/dist/ux-usability/hang.js +41 -0
  116. package/dist/ux-usability/hang.js.map +1 -0
  117. package/dist/ux-usability/loop.d.ts +15 -0
  118. package/dist/ux-usability/loop.js +104 -0
  119. package/dist/ux-usability/loop.js.map +1 -0
  120. package/dist/ux-usability/observe.d.ts +7 -0
  121. package/dist/ux-usability/observe.js +89 -0
  122. package/dist/ux-usability/observe.js.map +1 -0
  123. package/dist/ux-usability/result.d.ts +11 -0
  124. package/dist/ux-usability/result.js +113 -0
  125. package/dist/ux-usability/result.js.map +1 -0
  126. package/dist/ux-usability/setup.d.ts +75 -0
  127. package/dist/ux-usability/setup.js +203 -0
  128. package/dist/ux-usability/setup.js.map +1 -0
  129. package/dist/ux-usability/teardown.d.ts +3 -0
  130. package/dist/ux-usability/teardown.js +13 -0
  131. package/dist/ux-usability/teardown.js.map +1 -0
  132. package/dist/ux-usability.d.ts +14 -17
  133. package/dist/ux-usability.js +15 -589
  134. package/dist/ux-usability.js.map +1 -1
  135. package/package.json +7 -7
@@ -5,6 +5,6 @@
5
5
  // this plain `tsc --build` dist (no bundler substitution), so it needs real committed values
6
6
  // here instead. See ./engine.ts, which prefers the esbuild-injected value when present and
7
7
  // falls back to these.
8
- export const GENERATED_COMMIT = "444f0b4";
9
- export const GENERATED_BUILT_AT = "2026-10-11T18:38:57.929Z";
8
+ export const GENERATED_COMMIT = "98d84e3";
9
+ export const GENERATED_BUILT_AT = "2026-10-12T13:40:54.217Z";
10
10
  //# sourceMappingURL=build-info.generated.js.map
@@ -0,0 +1,3 @@
1
+ import type { ExploreRunContext } from "./shared.js";
2
+ /** `--strategy adversarial` (moved verbatim out of registerExploreCommands). */
3
+ export declare function runAdversarialStrategy(ctx: ExploreRunContext): Promise<void>;
@@ -0,0 +1,99 @@
1
+ import { MissingCredentialError } from "@jevitate/ai-core";
2
+ import { ScopeUnderivableError, UnauthorizedExploreTargetError, resolveCoverageThresholds } from "@jevitate/explore";
3
+ import { ok, fail } from "../envelope.js";
4
+ import { runAdversarialCliMission, CLI_ADVERSARIAL_STRATEGIES, resolveExploreAllowlist } from "../explore-api.js";
5
+ import { triagedServerLog } from "../explore-shared.js";
6
+ import { GatewaySelectionError, buildExploreGateways } from "../cli-shared.js";
7
+ /** `--strategy adversarial` (moved verbatim out of registerExploreCommands). */
8
+ export async function runAdversarialStrategy(ctx) {
9
+ const { deps, o, emitExplore, strategy, target, browser, screenshotsOpt, emulation, overflow, withInvariants, serverLog, withPrefix, emitJourneyFailure, withEvidence, runFiling, issueFiler } = ctx;
10
+ if (!o.url) {
11
+ emitExplore(fail("E_EXPLORE_ARGS", "--url is required for --strategy adversarial"));
12
+ return;
13
+ }
14
+ const advAllowlist = resolveExploreAllowlist(o.url, o.allow);
15
+ let advJudge;
16
+ let advGen;
17
+ let advUsage;
18
+ try {
19
+ ({ judge: advJudge, gen: advGen, usage: advUsage } = await buildExploreGateways(deps, {
20
+ real: o.real ?? false,
21
+ fakeAi: o.fakeAi ?? false,
22
+ jevProvider: o.jevProvider,
23
+ }));
24
+ }
25
+ catch (err) {
26
+ if (err instanceof MissingCredentialError || err instanceof GatewaySelectionError) {
27
+ emitExplore(fail("E_AI_SETUP_REQUIRED", err.message));
28
+ }
29
+ else {
30
+ emitExplore(fail("E_EXPLORE_SETUP", String(err instanceof Error ? err.message : err)));
31
+ }
32
+ return;
33
+ }
34
+ let coverageThresholds;
35
+ try {
36
+ coverageThresholds = resolveCoverageThresholds({
37
+ ...(o.minControlCoverage === undefined ? {} : { minControlRatio: Number(o.minControlCoverage) }),
38
+ requireFormSubmit: o.requireFormSubmit,
39
+ });
40
+ }
41
+ catch (err) {
42
+ emitExplore(fail("E_EXPLORE_ARGS", String(err instanceof Error ? err.message : err)));
43
+ return;
44
+ }
45
+ const advBounds = {};
46
+ if (o.maxActions !== undefined)
47
+ advBounds.maxActions = Number(o.maxActions);
48
+ if (o.maxDecisions !== undefined)
49
+ advBounds.maxDecisions = Number(o.maxDecisions);
50
+ try {
51
+ const result = await runAdversarialCliMission({
52
+ ...(target === undefined ? {} : { target }),
53
+ ...(o.actionDeltas === true ? { actionDeltas: true } : {}),
54
+ seedUrl: o.url,
55
+ allowlist: advAllowlist,
56
+ usage: advUsage,
57
+ ...(o.route.length > 0 ? { routeGlobs: o.route } : {}),
58
+ coverageThresholds,
59
+ bounds: Object.keys(advBounds).length > 0 ? advBounds : undefined,
60
+ secrets: o.secret.length > 0 ? o.secret : undefined,
61
+ ...(runFiling === undefined ? {} : { filing: runFiling }),
62
+ issueFiler,
63
+ ...(o.hangReplays === undefined ? {} : { hangReplays: o.hangReplays }),
64
+ strategies: CLI_ADVERSARIAL_STRATEGIES,
65
+ judgment: advJudge,
66
+ generation: advGen,
67
+ browserPortFactory: deps.explore?.browserPortFactory,
68
+ browser,
69
+ ...screenshotsOpt,
70
+ ...(emulation === undefined ? {} : { emulation }),
71
+ overflow,
72
+ outDir: o.out,
73
+ ...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
74
+ ...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
75
+ ...withInvariants,
76
+ ...triagedServerLog(serverLog, advJudge, o.real === true),
77
+ ...withPrefix,
78
+ });
79
+ // The typed verdict gates CI: 0 clean · 1 defects found (a failing check) · 2 the run
80
+ // itself broke (inconclusive/crashed) — see exit-codes.ts.
81
+ emitExplore(ok(await withEvidence(result)), result.exitCode);
82
+ }
83
+ catch (err) {
84
+ if (emitJourneyFailure(err))
85
+ return;
86
+ if (err instanceof UnauthorizedExploreTargetError) {
87
+ emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
88
+ }
89
+ else if (err instanceof ScopeUnderivableError) {
90
+ // #224: no default route scope from --url — a usage error (64), refused before any browser.
91
+ emitExplore(fail("E_EXPLORE_ARGS", err.message));
92
+ }
93
+ else {
94
+ emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
95
+ }
96
+ }
97
+ return;
98
+ }
99
+ //# sourceMappingURL=adversarial-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adversarial-strategy.js","sourceRoot":"","sources":["../../src/explore-cli/adversarial-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ExploreRunContext } from "./shared.js";
2
+ /** `--strategy coverage|exploratory` (moved verbatim out of registerExploreCommands). */
3
+ export declare function runCoverageStrategy(ctx: ExploreRunContext<"coverage" | "exploratory">): Promise<void>;
@@ -0,0 +1,95 @@
1
+ import { MissingCredentialError } from "@jevitate/ai-core";
2
+ import { ScopeUnderivableError, UnauthorizedExploreTargetError } from "@jevitate/explore";
3
+ import { ok, fail } from "../envelope.js";
4
+ import { runCoverageMission, resolveExploreAllowlist } from "../explore-api.js";
5
+ import { triagedServerLog } from "../explore-shared.js";
6
+ import { stallTimeoutMs, GatewaySelectionError, buildExploreGateways } from "../cli-shared.js";
7
+ /** `--strategy coverage|exploratory` (moved verbatim out of registerExploreCommands). */
8
+ export async function runCoverageStrategy(ctx) {
9
+ const { deps, o, emitExplore, strategy, target, browser, screenshotsOpt, emulation, overflow, withInvariants, serverLog, withPrefix, emitJourneyFailure, withEvidence } = ctx;
10
+ if (!o.url) {
11
+ emitExplore(fail("E_EXPLORE_ARGS", "--url is required"));
12
+ return;
13
+ }
14
+ if (o.scope !== undefined && o.scope !== "app") {
15
+ emitExplore(fail("E_EXPLORE_ARGS", `--scope must be "app" (got ${JSON.stringify(o.scope)})`));
16
+ return;
17
+ }
18
+ const covAllowlist = resolveExploreAllowlist(o.url, o.allow);
19
+ const covBounds = {};
20
+ if (o.maxActions !== undefined)
21
+ covBounds.maxActions = Number(o.maxActions);
22
+ if (o.maxDecisions !== undefined)
23
+ covBounds.maxDecisions = Number(o.maxDecisions);
24
+ // Scope containment (#89, reusing #64's model): the start URL's route plus --route globs;
25
+ // --scope app (or --route '/**') widens it to the whole app.
26
+ const covRouteGlobs = [...o.route, ...(o.scope === "app" ? ["/**"] : [])];
27
+ const covStall = stallTimeoutMs(o.stallTimeout);
28
+ if (covStall === null) {
29
+ emitExplore(fail("E_EXPLORE_ARGS", `--stall-timeout must be a positive number of seconds (got ${JSON.stringify(o.stallTimeout)})`));
30
+ return;
31
+ }
32
+ let covJudge;
33
+ let covGen;
34
+ let covUsage;
35
+ try {
36
+ ({ judge: covJudge, gen: covGen, usage: covUsage } = await buildExploreGateways(deps, {
37
+ real: o.real ?? false,
38
+ fakeAi: o.fakeAi ?? false,
39
+ jevProvider: o.jevProvider,
40
+ }));
41
+ }
42
+ catch (err) {
43
+ if (err instanceof MissingCredentialError || err instanceof GatewaySelectionError) {
44
+ emitExplore(fail("E_AI_SETUP_REQUIRED", err.message));
45
+ }
46
+ else {
47
+ emitExplore(fail("E_EXPLORE_SETUP", String(err instanceof Error ? err.message : err)));
48
+ }
49
+ return;
50
+ }
51
+ try {
52
+ const result = await runCoverageMission({
53
+ ...(target === undefined ? {} : { target }),
54
+ ...(o.actionDeltas === true ? { actionDeltas: true } : {}),
55
+ url: o.url,
56
+ allowlist: covAllowlist,
57
+ judge: covJudge,
58
+ gen: covGen,
59
+ usage: covUsage,
60
+ bounds: Object.keys(covBounds).length > 0 ? covBounds : undefined,
61
+ ...(covRouteGlobs.length > 0 ? { routeGlobs: covRouteGlobs } : {}),
62
+ strategy,
63
+ ...(covStall === undefined ? {} : { stallTimeoutMs: covStall }),
64
+ outDir: o.out,
65
+ browserPortFactory: deps.explore?.browserPortFactory,
66
+ browser,
67
+ ...screenshotsOpt,
68
+ ...(emulation === undefined ? {} : { emulation }),
69
+ overflow,
70
+ ...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
71
+ ...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
72
+ ...withInvariants,
73
+ ...triagedServerLog(serverLog, covJudge, o.real === true),
74
+ ...withPrefix,
75
+ });
76
+ // Typed verdict → exit code (0 clean · 1 defects · 2 crashed; see exit-codes.ts).
77
+ emitExplore(ok(await withEvidence(result)), result.exitCode);
78
+ }
79
+ catch (err) {
80
+ if (emitJourneyFailure(err))
81
+ return;
82
+ if (err instanceof UnauthorizedExploreTargetError) {
83
+ emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
84
+ }
85
+ else if (err instanceof ScopeUnderivableError) {
86
+ // #224: no default route scope from --url — a usage error (64), refused before any browser.
87
+ emitExplore(fail("E_EXPLORE_ARGS", err.message));
88
+ }
89
+ else {
90
+ emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
91
+ }
92
+ }
93
+ return;
94
+ }
95
+ //# sourceMappingURL=coverage-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-strategy.js","sourceRoot":"","sources":["../../src/explore-cli/coverage-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ExploreRunContext } from "./shared.js";
2
+ /** `--feature <name>` (moved verbatim out of registerExploreCommands). */
3
+ export declare function runFeatureStrategy(ctx: ExploreRunContext): Promise<void>;
@@ -0,0 +1,59 @@
1
+ import { ScopeUnderivableError, UnauthorizedExploreTargetError } from "@jevitate/explore";
2
+ import { ok, fail } from "../envelope.js";
3
+ import { runFeatureCliMission, resolveExploreAllowlist } from "../explore-api.js";
4
+ import { stallTimeoutMs } from "../cli-shared.js";
5
+ /** `--feature <name>` (moved verbatim out of registerExploreCommands). */
6
+ export async function runFeatureStrategy(ctx) {
7
+ const { deps, emitExplore, target, browser, screenshotsOpt, emulation, withInvariants, withServerLog, withEvidence } = ctx;
8
+ const o = ctx.o;
9
+ if (!o.url) {
10
+ emitExplore(fail("E_EXPLORE_ARGS", "--url is required with --feature"));
11
+ return;
12
+ }
13
+ const featAllowlist = resolveExploreAllowlist(o.url, o.allow);
14
+ const featBounds = {};
15
+ if (o.maxActions !== undefined)
16
+ featBounds.maxActions = Number(o.maxActions);
17
+ if (o.maxDecisions !== undefined)
18
+ featBounds.maxDecisions = Number(o.maxDecisions);
19
+ const featStall = stallTimeoutMs(o.stallTimeout);
20
+ if (featStall === null) {
21
+ emitExplore(fail("E_EXPLORE_ARGS", `--stall-timeout must be a positive number of seconds (got ${JSON.stringify(o.stallTimeout)})`));
22
+ return;
23
+ }
24
+ try {
25
+ const result = await runFeatureCliMission({
26
+ ...(featStall === undefined ? {} : { stallTimeoutMs: featStall }),
27
+ seedUrl: o.url,
28
+ allowlist: featAllowlist,
29
+ capability: o.feature,
30
+ routeGlobs: o.route ?? [],
31
+ bounds: Object.keys(featBounds).length > 0 ? featBounds : undefined,
32
+ outDir: o.out,
33
+ browserPortFactory: deps.explore?.browserPortFactory,
34
+ browser,
35
+ ...screenshotsOpt,
36
+ ...(emulation === undefined ? {} : { emulation }),
37
+ ...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
38
+ ...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
39
+ ...withInvariants,
40
+ ...withServerLog,
41
+ ...(target?.safety === undefined ? {} : { safety: target.safety }),
42
+ });
43
+ emitExplore(ok(await withEvidence(result)), result.exitCode);
44
+ }
45
+ catch (err) {
46
+ if (err instanceof UnauthorizedExploreTargetError) {
47
+ emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
48
+ }
49
+ else if (err instanceof ScopeUnderivableError) {
50
+ // #224: no default route scope from --url — a usage error (64), refused before any browser.
51
+ emitExplore(fail("E_EXPLORE_ARGS", err.message));
52
+ }
53
+ else {
54
+ emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
55
+ }
56
+ }
57
+ return;
58
+ }
59
+ //# sourceMappingURL=feature-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-strategy.js","sourceRoot":"","sources":["../../src/explore-cli/feature-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ExploreRunContext } from "./shared.js";
2
+ /** The default goal strategy: `--url` + `--goal` (+ `--success`), with fixtures (moved verbatim out of registerExploreCommands). */
3
+ export declare function runGoalStrategy(ctx: ExploreRunContext): Promise<void>;
@@ -0,0 +1,184 @@
1
+ import { FixturePathError } from "@jevitate/recording";
2
+ import { MissingCredentialError } from "@jevitate/ai-core";
3
+ import { FixtureNotFoundError, UnauthorizedExploreTargetError } from "@jevitate/explore";
4
+ import { ok, fail } from "../envelope.js";
5
+ import { buildMissionFixtures, checkSetupRefs, checkUrlRefOrigin, substituteUrlSetupRefs, setupRefFreeUrl, invariantSetupTexts, substituteSpecSetupRefs, fixtureSetupFailedResult } from "../fixture-cli.js";
6
+ import { FixtureSetupError, FixtureSpecError, UnboundSetupRefError, substituteSetupRefs } from "../mission-fixtures.js";
7
+ import { withEngine } from "../engine.js";
8
+ import { EXIT_CODES } from "../exit-codes.js";
9
+ import { runExploration, parseSuccessSpec, resolveExploreAllowlist } from "../explore-api.js";
10
+ import { triagedServerLog } from "../explore-shared.js";
11
+ import { GatewaySelectionError, buildExploreGateways } from "../cli-shared.js";
12
+ import { resolveJourneyPrefix } from "../journey-prefix.js";
13
+ import { GoalRunFlagError, successWhenFromFlags } from "../goal-run-flags.js";
14
+ /** The default goal strategy: `--url` + `--goal` (+ `--success`), with fixtures (moved verbatim out of registerExploreCommands). */
15
+ export async function runGoalStrategy(ctx) {
16
+ const { deps, o, emitExplore, target, browser, screenshotsOpt, emulation, withInvariants, serverLog, emitJourneyFailure, withEvidence, runFiling, issueFiler, conversation, secretFields, secretCommand, actors, primaryStorageState, invariants, prefixRequest, typeFixtures } = ctx;
17
+ let { journeyPrefix } = ctx;
18
+ // --success may be omitted for a find-out goal (#130d): the run is then verified by a grounded
19
+ // `report` answer (#101) instead of an independent page/network check.
20
+ if (!o.url || !o.goal) {
21
+ emitExplore(fail("E_EXPLORE_ARGS", "--url and --goal are required"));
22
+ return;
23
+ }
24
+ let successChecks;
25
+ try {
26
+ successChecks = o.success.map(parseSuccessSpec);
27
+ }
28
+ catch (err) {
29
+ emitExplore(fail("E_EXPLORE_ASSERTION", String(err instanceof Error ? err.message : err)));
30
+ return;
31
+ }
32
+ let successWhen;
33
+ try {
34
+ successWhen = successWhenFromFlags(o);
35
+ }
36
+ catch (err) {
37
+ if (!(err instanceof GoalRunFlagError))
38
+ throw err;
39
+ emitExplore(fail(err.code, err.message));
40
+ return;
41
+ }
42
+ const allowlist = resolveExploreAllowlist(setupRefFreeUrl(o.url), o.allow);
43
+ // Fixtures (#140/#144): the spec and every ${setup.x} reference are validated here, before any
44
+ // browser or request; the setup itself runs just before the mission (below).
45
+ let fx;
46
+ try {
47
+ checkUrlRefOrigin(o.url);
48
+ fx = buildMissionFixtures(o, {
49
+ allowlist,
50
+ baseUrl: setupRefFreeUrl(o.url),
51
+ ...(primaryStorageState === undefined ? {} : { storageState: primaryStorageState }),
52
+ secretFields,
53
+ secrets: o.secret,
54
+ ...(target?.fixtures === undefined ? {} : { targetFixtures: target.fixtures }),
55
+ ...(target?.personas === undefined ? {} : { personas: target.personas }),
56
+ });
57
+ checkSetupRefs({ "--url": o.url, "--goal": o.goal, "--success": o.success, ...invariantSetupTexts(invariants), ...(journeyPrefix === undefined ? {} : { "--param": Object.values(o.param) }) }, fx);
58
+ }
59
+ catch (err) {
60
+ if (!(err instanceof FixtureSpecError || err instanceof UnboundSetupRefError))
61
+ throw err;
62
+ emitExplore(fail(err.code, err.message));
63
+ return;
64
+ }
65
+ const bounds = {};
66
+ if (o.maxActions !== undefined)
67
+ bounds.maxActions = Number(o.maxActions);
68
+ if (o.maxDecisions !== undefined)
69
+ bounds.maxDecisions = Number(o.maxDecisions);
70
+ let judge;
71
+ let gen;
72
+ let usage;
73
+ try {
74
+ ({ judge, gen, usage } = await buildExploreGateways(deps, { real: o.real ?? false, fakeAi: o.fakeAi ?? false, jevProvider: o.jevProvider }));
75
+ }
76
+ catch (err) {
77
+ if (err instanceof MissingCredentialError || err instanceof GatewaySelectionError) {
78
+ emitExplore(fail("E_AI_SETUP_REQUIRED", err.message));
79
+ }
80
+ else {
81
+ emitExplore(fail("E_EXPLORE_SETUP", String(err instanceof Error ? err.message : err)));
82
+ }
83
+ return;
84
+ }
85
+ let url = o.url;
86
+ let goal = o.goal;
87
+ let runInvariants = withInvariants;
88
+ if (fx !== undefined) {
89
+ // Never run the mission on unknown state: a failed setup ends the run inconclusive (a
90
+ // configuration error), after restoring whatever the partial setup created.
91
+ try {
92
+ await fx.setup();
93
+ const b = fx.bindings();
94
+ url = substituteUrlSetupRefs(o.url, b);
95
+ goal = substituteSetupRefs(o.goal, b, { where: "--goal" });
96
+ successChecks = o.success.map((spec) => parseSuccessSpec(substituteSetupRefs(spec, b, { where: "--success" })));
97
+ // #187: ${setup.x} in the invariants (probe paths, deniedAs.open, capture routes), origin-fixed.
98
+ if (invariants !== undefined)
99
+ runInvariants = { ...withInvariants, invariants: substituteSpecSetupRefs(invariants, b, url) };
100
+ // #399: `--param name=${setup.x}` for the Journey prefix is bound to the fixture's output, and the
101
+ // prefix re-resolved so its secret params (and so every redaction) hold the bound value.
102
+ if (journeyPrefix !== undefined && prefixRequest !== undefined && Object.values(o.param).some((v) => v.includes("${setup."))) {
103
+ const params = Object.fromEntries(Object.entries(o.param).map(([k, v]) => [k, substituteSetupRefs(v, b, { where: `--param ${k}` })]));
104
+ journeyPrefix = await resolveJourneyPrefix({ ...prefixRequest, params });
105
+ o.secret = [...new Set([...o.secret, ...journeyPrefix.secrets])];
106
+ }
107
+ }
108
+ catch (err) {
109
+ if (!(err instanceof FixtureSetupError || err instanceof UnboundSetupRefError)) {
110
+ await fx.restore();
111
+ throw err;
112
+ }
113
+ await fx.restore();
114
+ emitExplore(ok(withEngine(fixtureSetupFailedResult(err, fx))), EXIT_CODES.inconclusive);
115
+ return;
116
+ }
117
+ }
118
+ try {
119
+ const result = await runExploration({
120
+ ...(target === undefined ? {} : { target }),
121
+ url,
122
+ goal,
123
+ successChecks,
124
+ ...(successWhen === undefined ? {} : { successWhen }),
125
+ ...(o.allowVacuousChecks === true ? { allowVacuousChecks: true } : {}),
126
+ ...(o.actionDeltas === true ? { actionDeltas: true } : {}),
127
+ allowlist,
128
+ judge,
129
+ gen,
130
+ usage,
131
+ bounds: Object.keys(bounds).length > 0 ? bounds : undefined,
132
+ ...(o.minActions === undefined && o.minDistinctStates === undefined
133
+ ? {}
134
+ : {
135
+ minEffort: {
136
+ ...(o.minActions === undefined ? {} : { minActions: Number(o.minActions) }),
137
+ ...(o.minDistinctStates === undefined ? {} : { minDistinctStates: Number(o.minDistinctStates) }),
138
+ },
139
+ }),
140
+ secrets: o.secret.length > 0 ? o.secret : undefined,
141
+ ...(secretFields.length > 0 ? { secretFields } : {}),
142
+ ...(secretCommand === undefined ? {} : { secretCommand }),
143
+ ...(o.secretCmdAttempts === undefined ? {} : { secretCommandAttempts: o.secretCmdAttempts }),
144
+ ...(typeFixtures.length > 0 ? { typeFixtures } : {}),
145
+ fixture: o.fixture,
146
+ outDir: o.out,
147
+ browserPortFactory: deps.explore?.browserPortFactory,
148
+ browser,
149
+ ...screenshotsOpt,
150
+ ...(emulation === undefined ? {} : { emulation }),
151
+ ...(primaryStorageState !== undefined ? { storageState: primaryStorageState } : {}),
152
+ ...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
153
+ ...(actors === null ? {} : { actors }),
154
+ ...(runFiling === undefined ? {} : { filing: runFiling }),
155
+ issueFiler,
156
+ ...(o.hangReplays === undefined ? {} : { hangReplays: o.hangReplays }),
157
+ conversation,
158
+ ...runInvariants,
159
+ ...triagedServerLog(serverLog, judge, o.real === true),
160
+ ...(fx === undefined ? {} : { fixtures: fx }),
161
+ ...(journeyPrefix === undefined ? {} : { journeyPrefix }), // #399: re-resolved when a --param was bound
162
+ });
163
+ // 0 succeeded · 1 assertion not met · 2 the run broke (inconclusive/crashed).
164
+ emitExplore(ok(await withEvidence(result)), result.exitCode);
165
+ }
166
+ catch (err) {
167
+ if (emitJourneyFailure(err))
168
+ return;
169
+ if (err instanceof UnauthorizedExploreTargetError) {
170
+ emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
171
+ }
172
+ else if (err instanceof FixtureNotFoundError || err instanceof FixturePathError) {
173
+ emitExplore(fail("E_EXPLORE_FIXTURE", err.message));
174
+ }
175
+ else {
176
+ emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
177
+ }
178
+ }
179
+ finally {
180
+ // Every exit path restores the fixture state (a no-op when the mission already did).
181
+ await fx?.restore();
182
+ }
183
+ }
184
+ //# sourceMappingURL=goal-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-strategy.js","sourceRoot":"","sources":["../../src/explore-cli/goal-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ /** The `jevitate explore` command and every flag it takes (moved verbatim out of registerExploreCommands). */
3
+ export declare function declareExploreCommand(program: Command): Command;