@iamu-dev/iamu 0.2.0-beta.1 → 0.2.0-beta.11
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/bin.js +2817 -618
- package/dist/commands/browse.d.ts +14 -0
- package/dist/commands/complete.d.ts +1 -0
- package/dist/commands/credentials.d.ts +1 -1
- package/dist/commands/doctor.d.ts +11 -2
- package/dist/commands/evaluate.d.ts +2 -0
- package/dist/commands/explore-crawl.d.ts +67 -0
- package/dist/commands/explore.d.ts +52 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/instructions-walk.d.ts +11 -1
- package/dist/commands/live-run-client.d.ts +127 -0
- package/dist/commands/match.d.ts +1 -0
- package/dist/commands/new-entity.d.ts +13 -0
- package/dist/commands/start-run.d.ts +7 -2
- package/dist/commands/step.d.ts +1 -0
- package/dist/eval/gemini-eval-cli.d.ts +10 -0
- package/dist/eval/gemini-eval-cli.js +976 -0
- package/dist/eval/gemini-walker.d.ts +46 -0
- package/dist/eval/walkthrough-evaluator.d.ts +61 -0
- package/dist/index.js +3003 -804
- package/dist/templates/prompts/walk.md +18 -4
- package/dist/templates/skills/iamu-findings.md +70 -32
- package/dist/templates/skills/iamu-new.md +123 -66
- package/dist/templates/skills/iamu-propose.md +60 -27
- package/dist/templates/skills/iamu-run.md +193 -61
- package/dist/templates/skills/iamu-setup.md +269 -125
- package/dist/templates/skills/iamu-status.md +21 -14
- package/package.json +7 -4
|
@@ -18,6 +18,7 @@ export interface BrowseOptions {
|
|
|
18
18
|
note?: string;
|
|
19
19
|
surface?: string;
|
|
20
20
|
maxSteps?: string | number;
|
|
21
|
+
stepFile?: string;
|
|
21
22
|
json?: boolean;
|
|
22
23
|
}
|
|
23
24
|
interface BrowseState {
|
|
@@ -126,6 +127,19 @@ export interface PageResult {
|
|
|
126
127
|
/** Absolute path of the screenshot written, or null when none was asked for. */
|
|
127
128
|
screenshot: string | null;
|
|
128
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Wait for the page to visually settle before taking a screenshot.
|
|
132
|
+
*
|
|
133
|
+
* SPA actions (state updates, CSS transitions, element mounts) do not trigger
|
|
134
|
+
* a navigation, so `domcontentloaded` returns immediately. Rather than a blunt
|
|
135
|
+
* hardcoded sleep, this flushes the rendering pipeline via double
|
|
136
|
+
* `requestAnimationFrame` and waits for in-flight CSS/web animations to finish,
|
|
137
|
+
* bounded by `maxWaitMs` (default 300ms) to ensure it never hangs on continuous
|
|
138
|
+
* animations like spinners.
|
|
139
|
+
*
|
|
140
|
+
* @public
|
|
141
|
+
*/
|
|
142
|
+
export declare function waitForVisualStability(page: Page, maxWaitMs?: number): Promise<void>;
|
|
129
143
|
/**
|
|
130
144
|
* Attach to the running browser, run `fn` on the page the persona is
|
|
131
145
|
* on, optionally screenshot it, and return where the page is. Prints
|
|
@@ -8,7 +8,7 @@ import { IamuConfigError } from "@iamu-dev/protocol";
|
|
|
8
8
|
* const url = config.cloud_api_url ?? DEFAULT_API_URL;
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
|
-
export declare const DEFAULT_API_URL = "https://
|
|
11
|
+
export declare const DEFAULT_API_URL = "https://app.iamu.dev";
|
|
12
12
|
/**
|
|
13
13
|
* Stored credentials, keyed by API URL. Values are left `unknown` on
|
|
14
14
|
* purpose: the file is user-editable, so every reader narrows.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface DoctorCheck {
|
|
2
|
-
category: "runtime" | "browser" | "project" | "agent" | "cloud";
|
|
2
|
+
category: "runtime" | "browser" | "project" | "agent" | "cloud" | "target";
|
|
3
3
|
name: string;
|
|
4
4
|
status: "ok" | "warn" | "error";
|
|
5
5
|
message: string;
|
|
@@ -18,7 +18,16 @@ export interface DoctorResult {
|
|
|
18
18
|
export declare function checkPortAvailable(port: number): Promise<boolean>;
|
|
19
19
|
/** Check CDP responsiveness on a port */
|
|
20
20
|
export declare function checkCdpResponsive(port: number): Promise<boolean>;
|
|
21
|
-
export declare function
|
|
21
|
+
export declare function checkTargetHealth(targetUrl: string): Promise<DoctorCheck[]>;
|
|
22
|
+
export declare function checkProjectHarnesses(projectRoot: string): Promise<DoctorCheck[]>;
|
|
23
|
+
export declare function checkProjectTestabilityContract(projectRoot: string): Promise<{
|
|
24
|
+
checks: DoctorCheck[];
|
|
25
|
+
targetUrl?: string;
|
|
26
|
+
}>;
|
|
27
|
+
export declare function runDoctorChecks(projectRoot?: string, opts?: {
|
|
28
|
+
target?: string;
|
|
29
|
+
}): Promise<DoctorResult>;
|
|
22
30
|
export declare function doctor(opts?: {
|
|
23
31
|
json?: boolean;
|
|
32
|
+
target?: string;
|
|
24
33
|
}): Promise<void>;
|
|
@@ -20,6 +20,7 @@ export interface RecordedVerdicts {
|
|
|
20
20
|
export declare function applyVerdicts(canonical: CanonicalWalkthrough, recorded: RecordedVerdicts): CanonicalWalkthrough;
|
|
21
21
|
export declare function evaluate(runId: string, opts?: {
|
|
22
22
|
json?: boolean;
|
|
23
|
+
promptFile?: string;
|
|
23
24
|
}): Promise<void>;
|
|
24
25
|
export declare function evaluateRecord(runId: string, opts: {
|
|
25
26
|
file: string;
|
|
@@ -27,4 +28,5 @@ export declare function evaluateRecord(runId: string, opts: {
|
|
|
27
28
|
yes?: boolean;
|
|
28
29
|
prompt?: boolean;
|
|
29
30
|
view?: boolean;
|
|
31
|
+
push?: boolean;
|
|
30
32
|
}): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The read-only crawl behind `iamu explore`.
|
|
3
|
+
*
|
|
4
|
+
* Breadth-first from the start URL: on every surface, try every visible
|
|
5
|
+
* link and button once, and see where it leads. A surface is a page
|
|
6
|
+
* (keyed by its templated URL, see `explorePlaceKey`) or a view a click
|
|
7
|
+
* switched to on the same URL (keyed by its headings). Every surface is
|
|
8
|
+
* reached by replaying its path from the start, so the crawl does not
|
|
9
|
+
* depend on what the previous click left behind, and two crawls of one
|
|
10
|
+
* build should produce the same map.
|
|
11
|
+
*
|
|
12
|
+
* Read-only is enforced twice:
|
|
13
|
+
* - Controls whose name or link reads like a write (delete, pay, send,
|
|
14
|
+
* save, log out …), form submits, downloads and other origins are
|
|
15
|
+
* never clicked. Nothing is typed into a field.
|
|
16
|
+
* - Every request that is not GET/HEAD/OPTIONS is aborted before it
|
|
17
|
+
* leaves the browser, and recorded on the action that caused it.
|
|
18
|
+
*
|
|
19
|
+
* Dialogs are dismissed (`confirm()` answers no) and popups closed.
|
|
20
|
+
* WebSocket messages are not guarded; a page controlled by a service
|
|
21
|
+
* worker (whose requests the guard cannot see) is refused.
|
|
22
|
+
*/
|
|
23
|
+
import { type ExploreBudget, type ExploreStats, type ExploreSurface } from "@iamu-dev/local-store";
|
|
24
|
+
import type { Page } from "playwright-core";
|
|
25
|
+
/**
|
|
26
|
+
* Options for {@link crawl}.
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export interface CrawlOptions {
|
|
31
|
+
startUrl: string;
|
|
32
|
+
budget: ExploreBudget;
|
|
33
|
+
/** Extra patterns: a control whose name or link matches is never tried. */
|
|
34
|
+
deny?: RegExp[];
|
|
35
|
+
/** Longest wait for the page to settle after an action. */
|
|
36
|
+
settleMs?: number;
|
|
37
|
+
/** One line per new surface, for progress output. */
|
|
38
|
+
log?: (line: string) => void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* What {@link crawl} found.
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
45
|
+
export interface CrawlResult {
|
|
46
|
+
surfaces: ExploreSurface[];
|
|
47
|
+
stats: ExploreStats;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Crawl the product read-only from `opts.startUrl`.
|
|
51
|
+
*
|
|
52
|
+
* @param page - A page of its own; the crawl navigates it freely and
|
|
53
|
+
* installs a request guard on it.
|
|
54
|
+
* @param opts - Start URL, budget, extra deny patterns.
|
|
55
|
+
* @returns The surfaces found and counts.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const { surfaces, stats } = await crawl(page, {
|
|
60
|
+
* startUrl: "http://localhost:3000/",
|
|
61
|
+
* budget: { max_surfaces: 40, max_actions: 300, max_depth: 6 },
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
export declare function crawl(page: Page, opts: CrawlOptions): Promise<CrawlResult>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** Parsed options for `iamu explore [url]`. */
|
|
2
|
+
export interface ExploreOptions {
|
|
3
|
+
maxSurfaces?: string;
|
|
4
|
+
maxActions?: string;
|
|
5
|
+
maxDepth?: string;
|
|
6
|
+
deny?: string[];
|
|
7
|
+
viewport?: string;
|
|
8
|
+
attach?: boolean;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* `iamu explore [url]`: crawl the product read-only and write a map.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* await exploreRun("http://localhost:3000/", { maxSurfaces: "20" });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function exploreRun(url: string | undefined, opts: ExploreOptions): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* `iamu explore list`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* await exploreList({ json: true });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function exploreList(opts: {
|
|
29
|
+
json?: boolean;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* `iamu explore coverage [map]`.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* await exploreCoverageCommand(undefined, {});
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function exploreCoverageCommand(mapId: string | undefined, opts: {
|
|
40
|
+
json?: boolean;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* `iamu explore diff [a] [b]` — default: the two latest maps.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* await exploreDiffCommand(undefined, undefined, { json: true });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function exploreDiffCommand(a: string | undefined, b: string | undefined, opts: {
|
|
51
|
+
json?: boolean;
|
|
52
|
+
}): Promise<void>;
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import type { HostAdapter } from "../adapters/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The setup skill as the user will see it. With the Iamu plugin enabled,
|
|
4
|
+
* Claude Code has `/iamu:init` and no `iamu-setup`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setupCommand(projectRoot: string, hosts: HostAdapter[]): string;
|
|
1
7
|
export interface InitOptions {
|
|
2
8
|
name?: string;
|
|
3
9
|
yes?: boolean;
|
|
4
10
|
json?: boolean;
|
|
11
|
+
cloud?: boolean;
|
|
5
12
|
}
|
|
6
13
|
/**
|
|
7
14
|
* Scaffold `iamu/` and install skills for the detected hosts.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type GuidanceRule, type RevisitPlace } from "@iamu-dev/local-store";
|
|
2
|
-
import { type RunViewport } from "@iamu-dev/protocol";
|
|
2
|
+
import { type RunViewport, type ScenarioState } from "@iamu-dev/protocol";
|
|
3
3
|
/** "The browser is sized as a phone screen, 390×844." */
|
|
4
4
|
export declare function viewportLine(v: RunViewport): string;
|
|
5
5
|
interface WalkerPromptParts {
|
|
@@ -33,7 +33,17 @@ interface WalkerPromptParts {
|
|
|
33
33
|
surface: string;
|
|
34
34
|
/** The run's viewport (`start-run`, from persona tags), if any. */
|
|
35
35
|
viewport?: RunViewport | null;
|
|
36
|
+
/** Scenario environment state and semantic approximation guidance */
|
|
37
|
+
state?: ScenarioState | null;
|
|
38
|
+
/** Product domain and regulatory context from context.yml */
|
|
39
|
+
context?: string | null;
|
|
40
|
+
/** Untestable execution boundaries from testability.md */
|
|
41
|
+
untestableBoundaries?: string[] | null;
|
|
36
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Extracts bullet points from a markdown "## Untestable Boundaries" section.
|
|
45
|
+
*/
|
|
46
|
+
export declare function extractUntestableBoundaries(body: string): string[];
|
|
37
47
|
/**
|
|
38
48
|
* The places-to-pass-through section: where this scenario's fixes
|
|
39
49
|
* awaiting a re-run were observed, framed as part of the persona's own
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { RunStep } from "@iamu-dev/protocol";
|
|
2
|
+
/** Timeout for run registration on start-run (3 seconds). */
|
|
3
|
+
export declare const REGISTER_TIMEOUT_MS = 3000;
|
|
4
|
+
/** Timeout for per-step and phase event dispatches (1.5 seconds). */
|
|
5
|
+
export declare const EVENT_TIMEOUT_MS = 1500;
|
|
6
|
+
/** Cap screenshot base64 at 5 MB raw binary (~6.7 MB base64, under the 8 MB payload cap). */
|
|
7
|
+
export declare const MAX_LIVE_SCREENSHOT_BYTES: number;
|
|
8
|
+
export type LiveRunPhase = "walking" | "completing" | "matching" | "judging" | "publishing";
|
|
9
|
+
export interface LiveRunMeta {
|
|
10
|
+
walkthrough_id: string;
|
|
11
|
+
viewer_url: string;
|
|
12
|
+
project_id: string;
|
|
13
|
+
api_url: string;
|
|
14
|
+
last_seq: number;
|
|
15
|
+
}
|
|
16
|
+
export interface RegisterLiveRunParams {
|
|
17
|
+
projectRoot: string;
|
|
18
|
+
runId: string;
|
|
19
|
+
scenarioSlug: string;
|
|
20
|
+
targetUrl: string;
|
|
21
|
+
startedAt?: string;
|
|
22
|
+
lenses?: string[];
|
|
23
|
+
fetchFn?: typeof fetch;
|
|
24
|
+
}
|
|
25
|
+
export interface RegisterLiveRunResult {
|
|
26
|
+
walkthroughId: string;
|
|
27
|
+
viewerUrl: string;
|
|
28
|
+
status: "created" | "resumed";
|
|
29
|
+
}
|
|
30
|
+
export interface LiveStepEvent {
|
|
31
|
+
seq: number;
|
|
32
|
+
type: "step";
|
|
33
|
+
step: {
|
|
34
|
+
number: number;
|
|
35
|
+
title: string;
|
|
36
|
+
persona_reasoning?: string | null;
|
|
37
|
+
grounding?: string | null;
|
|
38
|
+
page_url?: string | null;
|
|
39
|
+
surface?: string | null;
|
|
40
|
+
screenshot_base64?: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface LiveActionEvent {
|
|
44
|
+
seq: number;
|
|
45
|
+
type: "action";
|
|
46
|
+
step_number: number;
|
|
47
|
+
action_type: string;
|
|
48
|
+
target?: string | null;
|
|
49
|
+
}
|
|
50
|
+
export interface LiveFindingEvent {
|
|
51
|
+
seq: number;
|
|
52
|
+
type: "finding";
|
|
53
|
+
finding: {
|
|
54
|
+
id: string;
|
|
55
|
+
title: string;
|
|
56
|
+
type: "helps" | "hinders" | "missing" | "irrelevant" | "incorrect";
|
|
57
|
+
severity: "critical" | "major" | "minor" | "observation";
|
|
58
|
+
ui_fact?: string | null;
|
|
59
|
+
consequence?: string | null;
|
|
60
|
+
step_number?: number | null;
|
|
61
|
+
task_impact?: string | null;
|
|
62
|
+
confidence?: string | null;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export interface LivePhaseEvent {
|
|
66
|
+
seq: number;
|
|
67
|
+
type: "phase";
|
|
68
|
+
phase: LiveRunPhase;
|
|
69
|
+
}
|
|
70
|
+
export interface LiveAbandonEvent {
|
|
71
|
+
seq: number;
|
|
72
|
+
type: "abandon";
|
|
73
|
+
reason?: string;
|
|
74
|
+
}
|
|
75
|
+
export type LiveRunEvent = LiveStepEvent | LiveActionEvent | LiveFindingEvent | LivePhaseEvent | LiveAbandonEvent;
|
|
76
|
+
export interface LiveEventsResponse {
|
|
77
|
+
accepted_seq?: number;
|
|
78
|
+
cancelled?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Reads `<runDir>/live.json`. Returns null when absent or malformed.
|
|
82
|
+
*/
|
|
83
|
+
export declare function loadLiveRunMeta(runDirPath: string): Promise<LiveRunMeta | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Saves `<runDir>/live.json` atomically.
|
|
86
|
+
*/
|
|
87
|
+
export declare function saveLiveRunMeta(runDirPath: string, meta: LiveRunMeta): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Register a running walkthrough with Iamu Cloud (POST /api/projects/:id/live-runs).
|
|
90
|
+
*
|
|
91
|
+
* Runs only when the project is cloud-linked, IAMU_LIVE != "0", and valid
|
|
92
|
+
* credentials exist. Never throws: network errors or 4xx/5xx silently return null.
|
|
93
|
+
*/
|
|
94
|
+
export declare function registerLiveRun(params: RegisterLiveRunParams): Promise<RegisterLiveRunResult | null>;
|
|
95
|
+
/**
|
|
96
|
+
* Dispatch ordered events to POST /api/projects/:id/live-runs/:runId/events.
|
|
97
|
+
*
|
|
98
|
+
* Reads `<runDir>/live.json`. If absent or not cloud-linked, makes 0 network
|
|
99
|
+
* requests. Increments `last_seq` and catches all network errors silently.
|
|
100
|
+
*/
|
|
101
|
+
export declare function sendLiveEvents(projectRoot: string, runId: string, buildEvents: (startSeq: number) => LiveRunEvent[] | LiveRunEvent, fetchFn?: typeof fetch): Promise<LiveEventsResponse>;
|
|
102
|
+
/**
|
|
103
|
+
* Post a step event with optional base64 screenshot.
|
|
104
|
+
*/
|
|
105
|
+
export declare function sendLiveStep(projectRoot: string, runId: string, step: RunStep, screenshotPath?: string | null, fetchFn?: typeof fetch): Promise<LiveEventsResponse>;
|
|
106
|
+
/**
|
|
107
|
+
* Post a phase transition event (completing, matching, judging, publishing).
|
|
108
|
+
*/
|
|
109
|
+
export declare function sendLivePhase(projectRoot: string, runId: string, phase: LiveRunPhase, fetchFn?: typeof fetch): Promise<LiveEventsResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* Post a finding event.
|
|
112
|
+
*/
|
|
113
|
+
export declare function sendLiveFinding(projectRoot: string, runId: string, finding: {
|
|
114
|
+
id: string;
|
|
115
|
+
title: string;
|
|
116
|
+
type: "helps" | "hinders" | "missing" | "irrelevant" | "incorrect";
|
|
117
|
+
severity: "critical" | "major" | "minor" | "observation";
|
|
118
|
+
ui_fact?: string | null;
|
|
119
|
+
consequence?: string | null;
|
|
120
|
+
step_number?: number | null;
|
|
121
|
+
task_impact?: string | null;
|
|
122
|
+
confidence?: string | null;
|
|
123
|
+
}, fetchFn?: typeof fetch): Promise<LiveEventsResponse>;
|
|
124
|
+
/**
|
|
125
|
+
* Post an abandon event if a run was discarded or failed locally.
|
|
126
|
+
*/
|
|
127
|
+
export declare function sendLiveAbandon(projectRoot: string, runId: string, reason?: string, fetchFn?: typeof fetch): Promise<LiveEventsResponse>;
|
package/dist/commands/match.d.ts
CHANGED
|
@@ -2,14 +2,27 @@ export interface NewEntityOptions {
|
|
|
2
2
|
name: string;
|
|
3
3
|
slug?: string;
|
|
4
4
|
description?: string;
|
|
5
|
+
body?: string;
|
|
6
|
+
narrative?: string;
|
|
7
|
+
access?: string;
|
|
5
8
|
role?: string;
|
|
6
9
|
disposition?: string;
|
|
7
10
|
outline?: string;
|
|
8
11
|
persona?: string;
|
|
9
12
|
url?: string;
|
|
10
13
|
authority?: string;
|
|
14
|
+
/** Primary capability slug (outline only). */
|
|
15
|
+
capability?: string;
|
|
16
|
+
/** Structural tension driving the situation (outline only). */
|
|
17
|
+
tension?: string;
|
|
18
|
+
/** Human-test question to evaluate at walkthrough completion (outline only). */
|
|
19
|
+
humanTest?: string | string[];
|
|
11
20
|
/** Scenario start path, e.g. /en/episodes/1. */
|
|
12
21
|
entry?: string;
|
|
22
|
+
/** Scenario assumed environment state description. */
|
|
23
|
+
stateDescription?: string;
|
|
24
|
+
/** Scenario squint/approximation guidance when exact records are missing. */
|
|
25
|
+
stateApproximation?: string;
|
|
13
26
|
json?: boolean;
|
|
14
27
|
}
|
|
15
28
|
export declare function newEntity(type: string, opts: NewEntityOptions): Promise<void>;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type BuildMetadata, type RunViewport, type ScenarioFrontmatter } from "@iamu-dev/protocol";
|
|
2
|
+
/** `target_url` from `iamu/testability.md`, when there is one. */
|
|
3
|
+
export declare function testabilityTarget(projectRoot: string): Promise<string | null>;
|
|
2
4
|
/**
|
|
3
|
-
* The URL a run starts at: `--target` (or the scenario's `target_url`)
|
|
5
|
+
* The URL a run starts at: `--target` (or the scenario's `target_url` or `iamu/testability.md`)
|
|
4
6
|
* as the base, with the scenario's `entry_path` resolved against it.
|
|
5
7
|
* Returns an error message instead when there is nothing usable.
|
|
6
8
|
*/
|
|
7
|
-
export declare function resolveStartUrl(target: string | undefined, scenario: Pick<ScenarioFrontmatter, "target_url" | "entry_path"
|
|
9
|
+
export declare function resolveStartUrl(target: string | undefined, scenario: Pick<ScenarioFrontmatter, "target_url" | "entry_path">, fallbackTarget?: string | null): {
|
|
8
10
|
url: string;
|
|
9
11
|
} | {
|
|
10
12
|
error: string;
|
|
@@ -45,5 +47,8 @@ export interface StartRunOptions {
|
|
|
45
47
|
env?: string;
|
|
46
48
|
json?: boolean;
|
|
47
49
|
check?: boolean;
|
|
50
|
+
walker?: string;
|
|
51
|
+
judge?: string;
|
|
52
|
+
matcher?: string;
|
|
48
53
|
}
|
|
49
54
|
export declare function startRun(scenarioSlug: string, opts: StartRunOptions): Promise<void>;
|
package/dist/commands/step.d.ts
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Entrypoint: Autonomous Gemini Walker Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Runs Gemini 2.5 Flash through the live iamu CLI walking prompt and tools,
|
|
5
|
+
* grading autonomous decisions against ground-truth contracts.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* GEMINI_API_KEY=... pnpm eval:gemini
|
|
9
|
+
*/
|
|
10
|
+
export {};
|