@jevitate/cli 0.12.0 → 0.14.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.
- package/dist/author-journey-cli.d.ts +9 -0
- package/dist/author-journey-cli.js +18 -1
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +25673 -24216
- package/dist/build-info.generated.js +2 -2
- package/dist/catalog-analysis.js +4 -2
- package/dist/catalog-analysis.js.map +1 -1
- package/dist/catalog-bundle-api.js +1 -3
- package/dist/catalog-bundle-api.js.map +1 -1
- package/dist/catalog-bundle-findings.js +1 -3
- package/dist/catalog-bundle-findings.js.map +1 -1
- package/dist/catalog-bundle.js +1 -4
- package/dist/catalog-bundle.js.map +1 -1
- package/dist/catalog-cli.js +48 -6
- package/dist/catalog-cli.js.map +1 -1
- package/dist/catalog-review.d.ts +8 -0
- package/dist/catalog-review.js +26 -0
- package/dist/catalog-review.js.map +1 -1
- package/dist/catalog.d.ts +42 -0
- package/dist/catalog.js +67 -4
- package/dist/catalog.js.map +1 -1
- package/dist/check-execute.js +9 -0
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.d.ts +5 -2
- package/dist/check-plan.js +9 -5
- package/dist/check-plan.js.map +1 -1
- package/dist/check-suite.js +1 -3
- package/dist/check-suite.js.map +1 -1
- package/dist/cli-output.js +1 -3
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +1 -1
- package/dist/cli-shared.js +2 -0
- package/dist/cli-shared.js.map +1 -1
- package/dist/defect-evidence.js +4 -8
- package/dist/defect-evidence.js.map +1 -1
- package/dist/environments.d.ts +1 -1
- package/dist/environments.js +1 -1
- package/dist/environments.js.map +1 -1
- package/dist/exit-codes.d.ts +0 -1
- package/dist/exit-codes.js +2 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-adversarial.d.ts +10 -1
- package/dist/explore-adversarial.js +3 -0
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli/adversarial-strategy.d.ts +3 -0
- package/dist/explore-cli/adversarial-strategy.js +101 -0
- package/dist/explore-cli/adversarial-strategy.js.map +1 -0
- package/dist/explore-cli/coverage-strategy.d.ts +3 -0
- package/dist/explore-cli/coverage-strategy.js +97 -0
- package/dist/explore-cli/coverage-strategy.js.map +1 -0
- package/dist/explore-cli/feature-strategy.d.ts +3 -0
- package/dist/explore-cli/feature-strategy.js +60 -0
- package/dist/explore-cli/feature-strategy.js.map +1 -0
- package/dist/explore-cli/goal-strategy.d.ts +3 -0
- package/dist/explore-cli/goal-strategy.js +185 -0
- package/dist/explore-cli/goal-strategy.js.map +1 -0
- package/dist/explore-cli/options.d.ts +3 -0
- package/dist/explore-cli/options.js +157 -0
- package/dist/explore-cli/options.js.map +1 -0
- package/dist/explore-cli/run.d.ts +7 -0
- package/dist/explore-cli/run.js +702 -0
- package/dist/explore-cli/run.js.map +1 -0
- package/dist/explore-cli/scope-region.d.ts +17 -0
- package/dist/explore-cli/scope-region.js +24 -0
- package/dist/explore-cli/scope-region.js.map +1 -0
- package/dist/explore-cli/shared.d.ts +167 -0
- package/dist/explore-cli/shared.js +20 -0
- package/dist/explore-cli/shared.js.map +1 -0
- package/dist/explore-cli/usability-strategy.d.ts +3 -0
- package/dist/explore-cli/usability-strategy.js +137 -0
- package/dist/explore-cli/usability-strategy.js.map +1 -0
- package/dist/explore-cli.d.ts +2 -2
- package/dist/explore-cli.js +2 -1347
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.d.ts +10 -1
- package/dist/explore-coverage.js +3 -0
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.d.ts +6 -0
- package/dist/explore-feature.js +1 -0
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.d.ts +6 -0
- package/dist/explore-goal.js +1 -0
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-specs.d.ts +3 -1
- package/dist/explore-specs.js +2 -1
- package/dist/explore-specs.js.map +1 -1
- package/dist/github-issue-filer.js +1 -4
- package/dist/github-issue-filer.js.map +1 -1
- package/dist/goal-run-flags.d.ts +0 -1
- package/dist/goal-run-flags.js.map +1 -1
- package/dist/inbox-cli.js +1 -3
- package/dist/inbox-cli.js.map +1 -1
- package/dist/init-skills.js +1 -4
- package/dist/init-skills.js.map +1 -1
- package/dist/journey-anchor-api.d.ts +10 -9
- package/dist/journey-anchor-api.js +12 -22
- package/dist/journey-anchor-api.js.map +1 -1
- package/dist/journey-anchor-cli.d.ts +1 -1
- package/dist/journey-anchor-cli.js +22 -8
- package/dist/journey-anchor-cli.js.map +1 -1
- package/dist/journey-cli/anchors.d.ts +4 -0
- package/dist/journey-cli/anchors.js +48 -0
- package/dist/journey-cli/anchors.js.map +1 -0
- package/dist/journey-cli/find.d.ts +4 -0
- package/dist/journey-cli/find.js +44 -0
- package/dist/journey-cli/find.js.map +1 -0
- package/dist/journey-cli/lint.d.ts +4 -0
- package/dist/journey-cli/lint.js +84 -0
- package/dist/journey-cli/lint.js.map +1 -0
- package/dist/journey-cli/list.d.ts +4 -0
- package/dist/journey-cli/list.js +48 -0
- package/dist/journey-cli/list.js.map +1 -0
- package/dist/journey-cli/migrate.d.ts +4 -0
- package/dist/journey-cli/migrate.js +101 -0
- package/dist/journey-cli/migrate.js.map +1 -0
- package/dist/journey-cli/promote.d.ts +4 -0
- package/dist/journey-cli/promote.js +181 -0
- package/dist/journey-cli/promote.js.map +1 -0
- package/dist/journey-cli/publish.d.ts +4 -0
- package/dist/journey-cli/publish.js +70 -0
- package/dist/journey-cli/publish.js.map +1 -0
- package/dist/journey-cli/review.d.ts +4 -0
- package/dist/journey-cli/review.js +108 -0
- package/dist/journey-cli/review.js.map +1 -0
- package/dist/journey-cli/run.d.ts +4 -0
- package/dist/journey-cli/run.js +244 -0
- package/dist/journey-cli/run.js.map +1 -0
- package/dist/journey-cli/shared.d.ts +9 -0
- package/dist/journey-cli/shared.js +12 -0
- package/dist/journey-cli/shared.js.map +1 -0
- package/dist/journey-cli/verify.d.ts +4 -0
- package/dist/journey-cli/verify.js +125 -0
- package/dist/journey-cli/verify.js.map +1 -0
- package/dist/journey-cli.d.ts +3 -2
- package/dist/journey-cli.js +25 -950
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-link-api.d.ts +40 -0
- package/dist/journey-link-api.js +90 -0
- package/dist/journey-link-api.js.map +1 -0
- package/dist/journey-link-cli.d.ts +7 -0
- package/dist/journey-link-cli.js +58 -0
- package/dist/journey-link-cli.js.map +1 -0
- package/dist/journey-link-hints.d.ts +8 -0
- package/dist/journey-link-hints.js +68 -0
- package/dist/journey-link-hints.js.map +1 -0
- package/dist/journey-lint-sarif.js +3 -0
- package/dist/journey-lint-sarif.js.map +1 -1
- package/dist/journey-network-checks.d.ts +9 -1
- package/dist/journey-network-checks.js +55 -12
- package/dist/journey-network-checks.js.map +1 -1
- package/dist/journey-prefix.d.ts +9 -1
- package/dist/journey-prefix.js +12 -0
- package/dist/journey-prefix.js.map +1 -1
- package/dist/journey-review/render.d.ts +43 -0
- package/dist/journey-review/render.js +461 -0
- package/dist/journey-review/render.js.map +1 -0
- package/dist/journey-review-api.d.ts +1 -0
- package/dist/journey-review-api.js +7 -0
- package/dist/journey-review-api.js.map +1 -1
- package/dist/journey-review-store.js +1 -0
- package/dist/journey-review-store.js.map +1 -1
- package/dist/journey-review.d.ts +6 -4
- package/dist/journey-review.js +18 -393
- package/dist/journey-review.js.map +1 -1
- package/dist/journey-verify.js +2 -1
- package/dist/journey-verify.js.map +1 -1
- package/dist/ledger-api.js +1 -4
- package/dist/ledger-api.js.map +1 -1
- package/dist/locator-health-api.js +1 -3
- package/dist/locator-health-api.js.map +1 -1
- package/dist/locator-health.d.ts +0 -1
- package/dist/locator-health.js +0 -3
- package/dist/locator-health.js.map +1 -1
- package/dist/log-classes.js +1 -3
- package/dist/log-classes.js.map +1 -1
- package/dist/log-sources.js +17 -1
- package/dist/log-sources.js.map +1 -1
- package/dist/mcp-api.js +16 -821
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-tools.js +48 -7
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mcp-tools/cli.d.ts +3 -0
- package/dist/mcp-tools/cli.js +20 -0
- package/dist/mcp-tools/cli.js.map +1 -0
- package/dist/mcp-tools/explore.d.ts +3 -0
- package/dist/mcp-tools/explore.js +141 -0
- package/dist/mcp-tools/explore.js.map +1 -0
- package/dist/mcp-tools/findings.d.ts +3 -0
- package/dist/mcp-tools/findings.js +277 -0
- package/dist/mcp-tools/findings.js.map +1 -0
- package/dist/mcp-tools/inbox.d.ts +3 -0
- package/dist/mcp-tools/inbox.js +106 -0
- package/dist/mcp-tools/inbox.js.map +1 -0
- package/dist/mcp-tools/journey.d.ts +3 -0
- package/dist/mcp-tools/journey.js +260 -0
- package/dist/mcp-tools/journey.js.map +1 -0
- package/dist/mcp-tools/shared.d.ts +39 -0
- package/dist/mcp-tools/shared.js +69 -0
- package/dist/mcp-tools/shared.js.map +1 -0
- package/dist/mission-fixtures.js +1 -8
- package/dist/mission-fixtures.js.map +1 -1
- package/dist/mission-queue-cli.js +1 -3
- package/dist/mission-queue-cli.js.map +1 -1
- package/dist/multi-run.js +1 -3
- package/dist/multi-run.js.map +1 -1
- package/dist/pre-approval.js +4 -4
- package/dist/pre-approval.js.map +1 -1
- package/dist/readiness.js +2 -2
- package/dist/readiness.js.map +1 -1
- package/dist/report-api.js +1 -4
- package/dist/report-api.js.map +1 -1
- package/dist/resource-preflight.js.map +1 -1
- package/dist/run-metadata.js +1 -3
- package/dist/run-metadata.js.map +1 -1
- package/dist/run-tags-cli.d.ts +0 -2
- package/dist/run-tags-cli.js +0 -4
- package/dist/run-tags-cli.js.map +1 -1
- package/dist/session-check.js +1 -3
- package/dist/session-check.js.map +1 -1
- package/dist/signal-triage.js +6 -2
- package/dist/signal-triage.js.map +1 -1
- package/dist/suite-explore-options.d.ts +8 -0
- package/dist/suite-explore-options.js +4 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/sweep-api.d.ts +9 -0
- package/dist/sweep-api.js +70 -4
- package/dist/sweep-api.js.map +1 -1
- package/dist/sweep-cli.d.ts +2 -0
- package/dist/sweep-cli.js +22 -5
- package/dist/sweep-cli.js.map +1 -1
- package/dist/transcript-file.d.ts +0 -3
- package/dist/transcript-file.js +0 -9
- package/dist/transcript-file.js.map +1 -1
- package/dist/ui-api.js +1 -4
- package/dist/ui-api.js.map +1 -1
- package/dist/ux-usability/analysis.d.ts +14 -0
- package/dist/ux-usability/analysis.js +106 -0
- package/dist/ux-usability/analysis.js.map +1 -0
- package/dist/ux-usability/done-adjudication.d.ts +15 -0
- package/dist/ux-usability/done-adjudication.js +56 -0
- package/dist/ux-usability/done-adjudication.js.map +1 -0
- package/dist/ux-usability/hang.d.ts +5 -0
- package/dist/ux-usability/hang.js +41 -0
- package/dist/ux-usability/hang.js.map +1 -0
- package/dist/ux-usability/loop.d.ts +15 -0
- package/dist/ux-usability/loop.js +104 -0
- package/dist/ux-usability/loop.js.map +1 -0
- package/dist/ux-usability/observe.d.ts +7 -0
- package/dist/ux-usability/observe.js +89 -0
- package/dist/ux-usability/observe.js.map +1 -0
- package/dist/ux-usability/result.d.ts +11 -0
- package/dist/ux-usability/result.js +113 -0
- package/dist/ux-usability/result.js.map +1 -0
- package/dist/ux-usability/setup.d.ts +76 -0
- package/dist/ux-usability/setup.js +204 -0
- package/dist/ux-usability/setup.js.map +1 -0
- package/dist/ux-usability/teardown.d.ts +3 -0
- package/dist/ux-usability/teardown.js +13 -0
- package/dist/ux-usability/teardown.js.map +1 -0
- package/dist/ux-usability.d.ts +20 -17
- package/dist/ux-usability.js +15 -589
- package/dist/ux-usability.js.map +1 -1
- package/dist/verify-fix-api.js +1 -4
- package/dist/verify-fix-api.js.map +1 -1
- package/package.json +5 -6
- package/skills/jevitate-explore/SKILL.md +9 -1
- package/skills/jevitate-getting-started/SKILL.md +1 -0
- package/skills/jevitate-promotion-ready/SKILL.md +76 -0
- package/skills/jevitate-record/SKILL.md +3 -0
- package/skills/jevitate-run-journey/SKILL.md +3 -0
- package/skills/jevitate-test-campaign/SKILL.md +5 -3
package/dist/exit-codes.js
CHANGED
|
@@ -76,6 +76,8 @@ const USAGE_ERROR_CODES = new Set([
|
|
|
76
76
|
"E_JOURNEY_PROPOSAL_STALE", // #453: `journey promote --proposal`: the Journey changed since the proposal was made; re-run the self-heal
|
|
77
77
|
"E_JOURNEY_PROPOSAL_PROOF", // #453: the proposal file touches the Journey's proof fields
|
|
78
78
|
"E_JOURNEY_PROPOSAL_INVALID", // #453: the proposal file is not valid
|
|
79
|
+
"E_CATALOG_DRAFT_EXISTS", // #523: `catalog draft` of an id the catalog already has — link it, or pick another id
|
|
80
|
+
"E_JOURNEY_LINK_ARGS", // #523: `journey link` with nothing to change, a set+unlink of one field, or an id the catalog does not have (the message lists its ids)
|
|
79
81
|
"E_CATALOG_REVIEW_STALE", // #433: `persona|job approve --reviewed-hash`: the item changed since the sheet was read; review again // #432: `journey promote --reviewed-hash`: the Journey changed since the sheet was read; review again
|
|
80
82
|
"E_DEMO_PRODUCTION_ENV", // #249: `demo` refuses an environment flagged production: true
|
|
81
83
|
"E_DEMO_EXISTS", // #249: `demo` would overwrite an existing Journey / pending demo draft
|
package/dist/exit-codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,CAAC;IACP,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,KAAK,EAAE,EAAE;CACD,CAAC;
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { JudgmentPort, GenerationPort, UsageTracker, UsageCounts } from "@j
|
|
|
2
2
|
import { type BrowserPort, type EmulationSpec } from "@jevitate/playwright";
|
|
3
3
|
import { type BrowserRunOptions } from "./browser-run-options.js";
|
|
4
4
|
import { type ScreenshotsSpec } from "./run-screenshots.js";
|
|
5
|
-
import { type InvariantSpec } from "@jevitate/recording";
|
|
5
|
+
import { type InvariantSpec, type TargetDescriptor } from "@jevitate/recording";
|
|
6
6
|
import type { HostHealthSampler } from "@jevitate/explore";
|
|
7
7
|
import type { DefectOutcome, EnvironmentDegraded, HostHealthSummary } from "@jevitate/domain";
|
|
8
8
|
import { type Bounds, type AdversarialOutcome, type AdversarialDefect, type MisuseStrategy, type CoverageThresholds } from "@jevitate/explore";
|
|
@@ -66,6 +66,12 @@ export interface RunAdversarialCliMissionOptions {
|
|
|
66
66
|
readonly saveStorageState?: string;
|
|
67
67
|
/** Registered secret values (`--secret`): kept out of the transcript, Recording and issue drafts. */
|
|
68
68
|
readonly secrets?: readonly string[];
|
|
69
|
+
/**
|
|
70
|
+
* #521 `--block-off-allowlist-navigation` (opt-in, off by default): arm the navigation guard on this
|
|
71
|
+
* run's mission session (and its fresh/hang-replay sessions) — an off-allowlist page navigation is
|
|
72
|
+
* stopped in place and the mission treats it as a departure. Never on login, Journey or demo sessions.
|
|
73
|
+
*/
|
|
74
|
+
readonly blockOffAllowlistNavigation?: boolean;
|
|
69
75
|
/** #303 `--action-deltas` (opt-in): record what each action changed (code verdict) — evidence only. */
|
|
70
76
|
readonly actionDeltas?: boolean;
|
|
71
77
|
/** Issue filing (off unless enabled + a repo is configured). Default: drafts only. */
|
|
@@ -82,6 +88,9 @@ export interface RunAdversarialCliMissionOptions {
|
|
|
82
88
|
readonly target?: TargetConfig;
|
|
83
89
|
/** Extra in-scope route globs (`--route`); the start URL's route is always in scope. */
|
|
84
90
|
readonly routeGlobs?: readonly string[];
|
|
91
|
+
/** #519: only the controls inside these page regions are measured and hunted (`scopeRegionSpec` is how the report names them). */
|
|
92
|
+
readonly scopeRegions?: readonly TargetDescriptor[];
|
|
93
|
+
readonly scopeRegionSpec?: string;
|
|
85
94
|
/** Coverage a silent run needs to be `clean` (`--min-control-coverage`, `--no-require-form-submit`). */
|
|
86
95
|
readonly coverageThresholds?: Partial<CoverageThresholds>;
|
|
87
96
|
/** App-declared invariants (`--invariants`, #86), already validated against the allowlist. */
|
|
@@ -73,6 +73,7 @@ export async function runAdversarialCliMission(opts) {
|
|
|
73
73
|
const launch = {
|
|
74
74
|
...sessionLaunchOptions(opts.browser, videoDir),
|
|
75
75
|
allowedOrigins: [...opts.allowlist],
|
|
76
|
+
...(opts.blockOffAllowlistNavigation === true ? { blockOffAllowlistNavigation: true } : {}),
|
|
76
77
|
baseUrl: origin,
|
|
77
78
|
...opts.emulation,
|
|
78
79
|
...(opts.storageState !== undefined ? { storageState: opts.storageState } : {}),
|
|
@@ -137,6 +138,8 @@ export async function runAdversarialCliMission(opts) {
|
|
|
137
138
|
allowlist: opts.allowlist,
|
|
138
139
|
strategies: opts.strategies,
|
|
139
140
|
...(opts.routeGlobs === undefined ? {} : { routeGlobs: opts.routeGlobs }),
|
|
141
|
+
...(opts.scopeRegions === undefined ? {} : { scopeRegions: opts.scopeRegions }),
|
|
142
|
+
...(opts.scopeRegionSpec === undefined ? {} : { scopeRegionSpec: opts.scopeRegionSpec }),
|
|
140
143
|
...(opts.coverageThresholds === undefined ? {} : { coverageThresholds: opts.coverageThresholds }),
|
|
141
144
|
site: origin,
|
|
142
145
|
...(opts.bounds === undefined ? {} : { bounds: opts.bounds }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explore-adversarial.js","sourceRoot":"","sources":["../src/explore-adversarial.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"explore-adversarial.js","sourceRoot":"","sources":["../src/explore-adversarial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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, withScopeRegion, 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
|
+
...(o.blockOffAllowlistNavigation === true ? { blockOffAllowlistNavigation: true } : {}),
|
|
55
|
+
seedUrl: o.url,
|
|
56
|
+
allowlist: advAllowlist,
|
|
57
|
+
usage: advUsage,
|
|
58
|
+
...(o.route.length > 0 ? { routeGlobs: o.route } : {}),
|
|
59
|
+
coverageThresholds,
|
|
60
|
+
bounds: Object.keys(advBounds).length > 0 ? advBounds : undefined,
|
|
61
|
+
secrets: o.secret.length > 0 ? o.secret : undefined,
|
|
62
|
+
...(runFiling === undefined ? {} : { filing: runFiling }),
|
|
63
|
+
issueFiler,
|
|
64
|
+
...(o.hangReplays === undefined ? {} : { hangReplays: o.hangReplays }),
|
|
65
|
+
strategies: CLI_ADVERSARIAL_STRATEGIES,
|
|
66
|
+
judgment: advJudge,
|
|
67
|
+
generation: advGen,
|
|
68
|
+
browserPortFactory: deps.explore?.browserPortFactory,
|
|
69
|
+
browser,
|
|
70
|
+
...screenshotsOpt,
|
|
71
|
+
...(emulation === undefined ? {} : { emulation }),
|
|
72
|
+
overflow,
|
|
73
|
+
outDir: o.out,
|
|
74
|
+
...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
|
|
75
|
+
...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
|
|
76
|
+
...withInvariants,
|
|
77
|
+
...triagedServerLog(serverLog, advJudge, o.real === true),
|
|
78
|
+
...withPrefix,
|
|
79
|
+
...withScopeRegion,
|
|
80
|
+
});
|
|
81
|
+
// The typed verdict gates CI: 0 clean · 1 defects found (a failing check) · 2 the run
|
|
82
|
+
// itself broke (inconclusive/crashed) — see exit-codes.ts.
|
|
83
|
+
emitExplore(ok(await withEvidence(result)), result.exitCode);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (emitJourneyFailure(err))
|
|
87
|
+
return;
|
|
88
|
+
if (err instanceof UnauthorizedExploreTargetError) {
|
|
89
|
+
emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
90
|
+
}
|
|
91
|
+
else if (err instanceof ScopeUnderivableError) {
|
|
92
|
+
// #224: no default route scope from --url — a usage error (64), refused before any browser.
|
|
93
|
+
emitExplore(fail("E_EXPLORE_ARGS", err.message));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
//# 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,97 @@
|
|
|
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, withScopeRegion, 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
|
+
...(o.blockOffAllowlistNavigation === true ? { blockOffAllowlistNavigation: true } : {}),
|
|
56
|
+
url: o.url,
|
|
57
|
+
allowlist: covAllowlist,
|
|
58
|
+
judge: covJudge,
|
|
59
|
+
gen: covGen,
|
|
60
|
+
usage: covUsage,
|
|
61
|
+
bounds: Object.keys(covBounds).length > 0 ? covBounds : undefined,
|
|
62
|
+
...(covRouteGlobs.length > 0 ? { routeGlobs: covRouteGlobs } : {}),
|
|
63
|
+
strategy,
|
|
64
|
+
...(covStall === undefined ? {} : { stallTimeoutMs: covStall }),
|
|
65
|
+
outDir: o.out,
|
|
66
|
+
browserPortFactory: deps.explore?.browserPortFactory,
|
|
67
|
+
browser,
|
|
68
|
+
...screenshotsOpt,
|
|
69
|
+
...(emulation === undefined ? {} : { emulation }),
|
|
70
|
+
overflow,
|
|
71
|
+
...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
|
|
72
|
+
...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
|
|
73
|
+
...withInvariants,
|
|
74
|
+
...triagedServerLog(serverLog, covJudge, o.real === true),
|
|
75
|
+
...withPrefix,
|
|
76
|
+
...withScopeRegion,
|
|
77
|
+
});
|
|
78
|
+
// Typed verdict → exit code (0 clean · 1 defects · 2 crashed; see exit-codes.ts).
|
|
79
|
+
emitExplore(ok(await withEvidence(result)), result.exitCode);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (emitJourneyFailure(err))
|
|
83
|
+
return;
|
|
84
|
+
if (err instanceof UnauthorizedExploreTargetError) {
|
|
85
|
+
emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
86
|
+
}
|
|
87
|
+
else if (err instanceof ScopeUnderivableError) {
|
|
88
|
+
// #224: no default route scope from --url — a usage error (64), refused before any browser.
|
|
89
|
+
emitExplore(fail("E_EXPLORE_ARGS", err.message));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
//# 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,60 @@
|
|
|
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
|
+
...(o.blockOffAllowlistNavigation === true ? { blockOffAllowlistNavigation: true } : {}),
|
|
31
|
+
routeGlobs: o.route ?? [],
|
|
32
|
+
bounds: Object.keys(featBounds).length > 0 ? featBounds : undefined,
|
|
33
|
+
outDir: o.out,
|
|
34
|
+
browserPortFactory: deps.explore?.browserPortFactory,
|
|
35
|
+
browser,
|
|
36
|
+
...screenshotsOpt,
|
|
37
|
+
...(emulation === undefined ? {} : { emulation }),
|
|
38
|
+
...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
|
|
39
|
+
...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
|
|
40
|
+
...withInvariants,
|
|
41
|
+
...withServerLog,
|
|
42
|
+
...(target?.safety === undefined ? {} : { safety: target.safety }),
|
|
43
|
+
});
|
|
44
|
+
emitExplore(ok(await withEvidence(result)), result.exitCode);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err instanceof UnauthorizedExploreTargetError) {
|
|
48
|
+
emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
49
|
+
}
|
|
50
|
+
else if (err instanceof ScopeUnderivableError) {
|
|
51
|
+
// #224: no default route scope from --url — a usage error (64), refused before any browser.
|
|
52
|
+
emitExplore(fail("E_EXPLORE_ARGS", err.message));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
//# 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":"AAAA,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAsB;IAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;IAC3H,MAAM,CAAC,GAAG,GAAG,CAAC,CAAsC,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;QAAE,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,6DAA6D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACpI,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;YACxC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;YACjE,OAAO,EAAE,CAAC,CAAC,GAAG;YACd,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,CAAC,CAAC,OAAO;YACrB,GAAG,CAAC,CAAC,CAAC,2BAA2B,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,UAAU,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACnE,MAAM,EAAE,CAAC,CAAC,GAAG;YACb,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,kBAAkB;YACpD,OAAO;YACP,GAAG,cAAc;YACjB,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACjD,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,GAAG,cAAc;YACjB,GAAG,aAAa;YAChB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SACnE,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,8BAA8B,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YAChD,4FAA4F;YAC5F,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
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
|
+
...(o.blockOffAllowlistNavigation === true ? { blockOffAllowlistNavigation: true } : {}),
|
|
128
|
+
allowlist,
|
|
129
|
+
judge,
|
|
130
|
+
gen,
|
|
131
|
+
usage,
|
|
132
|
+
bounds: Object.keys(bounds).length > 0 ? bounds : undefined,
|
|
133
|
+
...(o.minActions === undefined && o.minDistinctStates === undefined
|
|
134
|
+
? {}
|
|
135
|
+
: {
|
|
136
|
+
minEffort: {
|
|
137
|
+
...(o.minActions === undefined ? {} : { minActions: Number(o.minActions) }),
|
|
138
|
+
...(o.minDistinctStates === undefined ? {} : { minDistinctStates: Number(o.minDistinctStates) }),
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
secrets: o.secret.length > 0 ? o.secret : undefined,
|
|
142
|
+
...(secretFields.length > 0 ? { secretFields } : {}),
|
|
143
|
+
...(secretCommand === undefined ? {} : { secretCommand }),
|
|
144
|
+
...(o.secretCmdAttempts === undefined ? {} : { secretCommandAttempts: o.secretCmdAttempts }),
|
|
145
|
+
...(typeFixtures.length > 0 ? { typeFixtures } : {}),
|
|
146
|
+
fixture: o.fixture,
|
|
147
|
+
outDir: o.out,
|
|
148
|
+
browserPortFactory: deps.explore?.browserPortFactory,
|
|
149
|
+
browser,
|
|
150
|
+
...screenshotsOpt,
|
|
151
|
+
...(emulation === undefined ? {} : { emulation }),
|
|
152
|
+
...(primaryStorageState !== undefined ? { storageState: primaryStorageState } : {}),
|
|
153
|
+
...(o.saveStorageState !== undefined ? { saveStorageState: o.saveStorageState } : {}),
|
|
154
|
+
...(actors === null ? {} : { actors }),
|
|
155
|
+
...(runFiling === undefined ? {} : { filing: runFiling }),
|
|
156
|
+
issueFiler,
|
|
157
|
+
...(o.hangReplays === undefined ? {} : { hangReplays: o.hangReplays }),
|
|
158
|
+
conversation,
|
|
159
|
+
...runInvariants,
|
|
160
|
+
...triagedServerLog(serverLog, judge, o.real === true),
|
|
161
|
+
...(fx === undefined ? {} : { fixtures: fx }),
|
|
162
|
+
...(journeyPrefix === undefined ? {} : { journeyPrefix }), // #399: re-resolved when a --param was bound
|
|
163
|
+
});
|
|
164
|
+
// 0 succeeded · 1 assertion not met · 2 the run broke (inconclusive/crashed).
|
|
165
|
+
emitExplore(ok(await withEvidence(result)), result.exitCode);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (emitJourneyFailure(err))
|
|
169
|
+
return;
|
|
170
|
+
if (err instanceof UnauthorizedExploreTargetError) {
|
|
171
|
+
emitExplore(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
172
|
+
}
|
|
173
|
+
else if (err instanceof FixtureNotFoundError || err instanceof FixturePathError) {
|
|
174
|
+
emitExplore(fail("E_EXPLORE_FIXTURE", err.message));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
emitExplore(fail("E_EXPLORE_RUN", String(err instanceof Error ? err.message : err)));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
finally {
|
|
181
|
+
// Every exit path restores the fixture state (a no-op when the mission already did).
|
|
182
|
+
await fx?.restore();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=goal-strategy.js.map
|