pi-agent-browser-native 0.2.31 → 0.2.33

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 (66) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +64 -18
  3. package/docs/ARCHITECTURE.md +13 -10
  4. package/docs/COMMAND_REFERENCE.md +71 -16
  5. package/docs/ELECTRON.md +387 -0
  6. package/docs/RELEASE.md +34 -4
  7. package/docs/REQUIREMENTS.md +5 -3
  8. package/docs/SUPPORT_MATRIX.md +36 -21
  9. package/docs/TOOL_CONTRACT.md +198 -40
  10. package/extensions/agent-browser/index.ts +1585 -3486
  11. package/extensions/agent-browser/lib/electron/cleanup.ts +287 -0
  12. package/extensions/agent-browser/lib/electron/discovery.ts +717 -0
  13. package/extensions/agent-browser/lib/electron/launch.ts +553 -0
  14. package/extensions/agent-browser/lib/input-modes/electron.ts +170 -0
  15. package/extensions/agent-browser/lib/input-modes/job.ts +203 -0
  16. package/extensions/agent-browser/lib/input-modes/lookups.ts +447 -0
  17. package/extensions/agent-browser/lib/input-modes/params.ts +188 -0
  18. package/extensions/agent-browser/lib/input-modes/semantic-action.ts +107 -0
  19. package/extensions/agent-browser/lib/input-modes/shared.ts +46 -0
  20. package/extensions/agent-browser/lib/input-modes/types.ts +221 -0
  21. package/extensions/agent-browser/lib/input-modes.ts +41 -0
  22. package/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.ts +696 -0
  23. package/extensions/agent-browser/lib/orchestration/browser-run/final-result.ts +450 -0
  24. package/extensions/agent-browser/lib/orchestration/browser-run/index.ts +46 -0
  25. package/extensions/agent-browser/lib/orchestration/browser-run/prepare.ts +711 -0
  26. package/extensions/agent-browser/lib/orchestration/browser-run/process-output.ts +386 -0
  27. package/extensions/agent-browser/lib/orchestration/browser-run/session-state.ts +868 -0
  28. package/extensions/agent-browser/lib/orchestration/browser-run/types.ts +476 -0
  29. package/extensions/agent-browser/lib/orchestration/browser-run.ts +1 -0
  30. package/extensions/agent-browser/lib/orchestration/input-plan.ts +338 -0
  31. package/extensions/agent-browser/lib/playbook.ts +15 -13
  32. package/extensions/agent-browser/lib/process.ts +106 -4
  33. package/extensions/agent-browser/lib/results/action-recommendations.ts +269 -0
  34. package/extensions/agent-browser/lib/results/artifact-manifest.ts +114 -0
  35. package/extensions/agent-browser/lib/results/artifact-state.ts +13 -0
  36. package/extensions/agent-browser/lib/results/categories.ts +106 -0
  37. package/extensions/agent-browser/lib/results/contracts.ts +220 -0
  38. package/extensions/agent-browser/lib/results/editable-ref-evidence.ts +72 -0
  39. package/extensions/agent-browser/lib/results/envelope.ts +2 -1
  40. package/extensions/agent-browser/lib/results/network.ts +64 -0
  41. package/extensions/agent-browser/lib/results/next-actions.ts +117 -0
  42. package/extensions/agent-browser/lib/results/presentation/artifacts.ts +506 -0
  43. package/extensions/agent-browser/lib/results/presentation/batch.ts +355 -0
  44. package/extensions/agent-browser/lib/results/presentation/common.ts +53 -0
  45. package/extensions/agent-browser/lib/results/presentation/content.ts +36 -0
  46. package/extensions/agent-browser/lib/results/presentation/diagnostics.ts +730 -0
  47. package/extensions/agent-browser/lib/results/presentation/errors.ts +125 -0
  48. package/extensions/agent-browser/lib/results/presentation/large-output.ts +182 -0
  49. package/extensions/agent-browser/lib/results/presentation/navigation.ts +216 -0
  50. package/extensions/agent-browser/lib/results/presentation/registry.ts +154 -0
  51. package/extensions/agent-browser/lib/results/presentation/skills.ts +143 -0
  52. package/extensions/agent-browser/lib/results/presentation.ts +87 -2369
  53. package/extensions/agent-browser/lib/results/recovery-actions.ts +139 -0
  54. package/extensions/agent-browser/lib/results/recovery-next-actions.ts +71 -0
  55. package/extensions/agent-browser/lib/results/selector-recovery.ts +312 -0
  56. package/extensions/agent-browser/lib/results/shared.ts +17 -701
  57. package/extensions/agent-browser/lib/results/snapshot-high-value-controls.ts +262 -0
  58. package/extensions/agent-browser/lib/results/snapshot-refs.ts +100 -0
  59. package/extensions/agent-browser/lib/results/snapshot-segments.ts +366 -0
  60. package/extensions/agent-browser/lib/results/snapshot-spill.ts +63 -0
  61. package/extensions/agent-browser/lib/results/snapshot.ts +37 -489
  62. package/extensions/agent-browser/lib/results/text.ts +40 -0
  63. package/extensions/agent-browser/lib/results.ts +16 -5
  64. package/extensions/agent-browser/lib/session-page-state.ts +486 -0
  65. package/extensions/agent-browser/lib/temp.ts +26 -0
  66. package/package.json +6 -4
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Purpose: Compile semanticAction shorthand inputs into upstream agent-browser commands.
3
+ * Responsibilities: Validate shorthand locator/action fields and expose compiled-command helpers.
4
+ * Scope: semanticAction mode only.
5
+ */
6
+
7
+ import { isRecord } from "../parsing.js";
8
+ import { getSelectValues } from "./shared.js";
9
+ import {
10
+ AGENT_BROWSER_SEMANTIC_ACTIONS,
11
+ AGENT_BROWSER_SEMANTIC_LOCATORS,
12
+ type AgentBrowserSemanticActionName,
13
+ type AgentBrowserSemanticLocator,
14
+ type CompiledAgentBrowserSemanticAction,
15
+ } from "./types.js";
16
+
17
+ export function getCompiledSemanticActionCommandIndex(compiled: CompiledAgentBrowserSemanticAction): number {
18
+ return compiled.args[0] === "--session" ? 2 : 0;
19
+ }
20
+
21
+ export function getCompiledSemanticActionSessionPrefix(compiled: CompiledAgentBrowserSemanticAction): string[] {
22
+ const commandIndex = getCompiledSemanticActionCommandIndex(compiled);
23
+ return commandIndex > 0 ? compiled.args.slice(0, commandIndex) : [];
24
+ }
25
+
26
+ export function isCompiledSemanticActionFindCommand(compiled: CompiledAgentBrowserSemanticAction | undefined): boolean {
27
+ if (!compiled) return false;
28
+ return compiled.args[getCompiledSemanticActionCommandIndex(compiled)] === "find";
29
+ }
30
+
31
+ export function compileAgentBrowserSemanticAction(input: unknown): { compiled?: CompiledAgentBrowserSemanticAction; error?: string } {
32
+ if (!isRecord(input)) {
33
+ return { error: "semanticAction must be an object." };
34
+ }
35
+ const action = input.action;
36
+ const locator = input.locator;
37
+ const value = input.value;
38
+ const values = input.values;
39
+ const selector = input.selector;
40
+ const text = input.text;
41
+ const role = input.role;
42
+ const name = input.name;
43
+ const session = input.session;
44
+ if (typeof action !== "string" || !AGENT_BROWSER_SEMANTIC_ACTIONS.includes(action as AgentBrowserSemanticActionName)) {
45
+ return { error: `semanticAction.action must be one of: ${AGENT_BROWSER_SEMANTIC_ACTIONS.join(", ")}.` };
46
+ }
47
+ if (session !== undefined && (typeof session !== "string" || session.trim().length === 0)) {
48
+ return { error: "semanticAction.session must be a non-empty string when provided." };
49
+ }
50
+ if (action === "select") {
51
+ if (locator !== undefined || role !== undefined || name !== undefined) {
52
+ return { error: "semanticAction.locator, role, and name are not supported for select; use selector plus value or values." };
53
+ }
54
+ if (text !== undefined) {
55
+ return { error: "semanticAction.text is not supported for select; use value or values for option values." };
56
+ }
57
+ if (typeof selector !== "string" || selector.trim().length === 0) {
58
+ return { error: "semanticAction.selector is required for select." };
59
+ }
60
+ const selectedValues = getSelectValues(input, "semanticAction");
61
+ if (selectedValues.error) return { error: selectedValues.error };
62
+ const args = typeof session === "string" ? ["--session", session, "select", selector, ...(selectedValues.values as string[])] : ["select", selector, ...(selectedValues.values as string[])];
63
+ return { compiled: { action: "select", selector, values: selectedValues.values, args } };
64
+ }
65
+ if (selector !== undefined || values !== undefined) {
66
+ return { error: "semanticAction.selector and values are only supported for select actions." };
67
+ }
68
+ if (typeof locator !== "string" || !AGENT_BROWSER_SEMANTIC_LOCATORS.includes(locator as AgentBrowserSemanticLocator)) {
69
+ return { error: `semanticAction.locator must be one of: ${AGENT_BROWSER_SEMANTIC_LOCATORS.join(", ")}.` };
70
+ }
71
+ if (value !== undefined && (typeof value !== "string" || value.trim().length === 0)) {
72
+ return { error: "semanticAction.value must be a non-empty string when provided." };
73
+ }
74
+ if (role !== undefined && (typeof role !== "string" || role.trim().length === 0)) {
75
+ return { error: "semanticAction.role must be a non-empty string when provided." };
76
+ }
77
+ const locatorValue = locator === "role" && typeof role === "string" ? role : value;
78
+ if (typeof locatorValue !== "string" || locatorValue.trim().length === 0) {
79
+ return { error: locator === "role" ? "semanticAction.value or semanticAction.role must be a non-empty string for locator=role." : "semanticAction.value must be a non-empty string." };
80
+ }
81
+ if (text !== undefined && typeof text !== "string") {
82
+ return { error: "semanticAction.text must be a string when provided." };
83
+ }
84
+ if (action === "fill" && (typeof text !== "string" || text.length === 0)) {
85
+ return { error: `semanticAction.text is required for ${action}.` };
86
+ }
87
+ if (action !== "fill" && text !== undefined) {
88
+ return { error: "semanticAction.text is only supported for fill actions." };
89
+ }
90
+ if (role !== undefined && locator !== "role") {
91
+ return { error: "semanticAction.role is only supported for locator=role." };
92
+ }
93
+ if (role !== undefined && value !== undefined && role !== value) {
94
+ return { error: "semanticAction.role must match value when both are provided for locator=role." };
95
+ }
96
+ if (name !== undefined && (locator !== "role" || typeof name !== "string" || name.length === 0)) {
97
+ return { error: "semanticAction.name is only supported as a non-empty string for locator=role." };
98
+ }
99
+ const args = typeof session === "string" ? ["--session", session, "find", locator, locatorValue, action] : ["find", locator, locatorValue, action];
100
+ if (action === "fill") {
101
+ args.push(text as string);
102
+ }
103
+ if (locator === "role" && typeof name === "string") {
104
+ args.push("--name", name);
105
+ }
106
+ return { compiled: { action: action as AgentBrowserSemanticActionName, locator: locator as AgentBrowserSemanticLocator, args } };
107
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Purpose: Hold tiny shared parsing helpers for structured agent_browser input modes.
3
+ * Responsibilities: Normalize common select values, batch result rows, and workspace scan limits.
4
+ * Scope: Generic input-mode helpers only; mode-specific policy stays in the owning module.
5
+ */
6
+
7
+ import { isRecord } from "../parsing.js";
8
+ import { SOURCE_LOOKUP_DEFAULT_MAX_WORKSPACE_FILES, SOURCE_LOOKUP_MAX_WORKSPACE_FILES } from "./types.js";
9
+
10
+ export function getSelectValues(input: Record<string, unknown>, context: string): { values?: string[]; error?: string } {
11
+ const rawValue = input.value;
12
+ const rawValues = input.values;
13
+ if (rawValue !== undefined && rawValues !== undefined) {
14
+ return { error: `${context}.value and ${context}.values cannot both be provided for select.` };
15
+ }
16
+ if (rawValues !== undefined) {
17
+ if (!Array.isArray(rawValues) || rawValues.length === 0 || rawValues.some((value) => typeof value !== "string" || value.trim().length === 0)) {
18
+ return { error: `${context}.values must be a non-empty array of non-empty strings for select.` };
19
+ }
20
+ return { values: rawValues };
21
+ }
22
+ if (typeof rawValue === "string" && rawValue.trim().length > 0) {
23
+ return { values: [rawValue] };
24
+ }
25
+ return { error: `${context}.value or ${context}.values is required for select.` };
26
+ }
27
+
28
+ export function getBatchResultItems(data: unknown): Array<Record<string, unknown>> {
29
+ return Array.isArray(data) ? data.filter(isRecord) : [];
30
+ }
31
+
32
+ export function getCommandNameFromBatchItem(item: Record<string, unknown>): string | undefined {
33
+ const command = item.command;
34
+ return Array.isArray(command) && typeof command[0] === "string" ? command[0] : undefined;
35
+ }
36
+
37
+ export function validateLookupMaxWorkspaceFiles(value: unknown, fieldName: string): { value?: number; error?: string } {
38
+ if (value === undefined) return { value: SOURCE_LOOKUP_DEFAULT_MAX_WORKSPACE_FILES };
39
+ if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) {
40
+ return { error: `${fieldName} must be a positive integer when provided.` };
41
+ }
42
+ if (value > SOURCE_LOOKUP_MAX_WORKSPACE_FILES) {
43
+ return { error: `${fieldName} must be ${SOURCE_LOOKUP_MAX_WORKSPACE_FILES} or less.` };
44
+ }
45
+ return { value };
46
+ }
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Purpose: Define structured agent_browser input-mode constants and TypeScript contracts.
3
+ * Responsibilities: Share schema enums and compiled input-mode result types across input-mode modules.
4
+ * Scope: Types and constants only; validation and compilation live in sibling modules.
5
+ */
6
+
7
+ export const DEFAULT_SESSION_MODE = "auto" as const;
8
+
9
+ export const AGENT_BROWSER_SEMANTIC_ACTIONS = ["check", "click", "fill", "select", "uncheck"] as const;
10
+
11
+ export const AGENT_BROWSER_SEMANTIC_LOCATORS = ["alt", "label", "placeholder", "role", "testid", "text", "title"] as const;
12
+
13
+ export const AGENT_BROWSER_JOB_STEP_ACTIONS = ["open", "click", "fill", "select", "wait", "assertText", "assertUrl", "waitForDownload", "screenshot"] as const;
14
+
15
+ export const AGENT_BROWSER_QA_LOAD_STATES = ["domcontentloaded", "load", "networkidle"] as const;
16
+
17
+ export const AGENT_BROWSER_ELECTRON_ACTIONS = ["list", "launch", "status", "cleanup", "probe"] as const;
18
+
19
+ export const AGENT_BROWSER_ELECTRON_HANDOFFS = ["connect", "tabs", "snapshot"] as const;
20
+
21
+ export const AGENT_BROWSER_ELECTRON_TARGET_TYPES = ["page", "webview", "any"] as const;
22
+
23
+ export const AGENT_BROWSER_ELECTRON_LIST_FIELDS = new Set(["action", "query", "maxResults"]);
24
+
25
+ export const AGENT_BROWSER_ELECTRON_PROBE_FIELDS = new Set(["action", "launchId", "timeoutMs"]);
26
+
27
+ export const AGENT_BROWSER_ELECTRON_RESERVED_APP_ARGS = ["--user-data-dir", "--remote-debugging-port", "--remote-debugging-address", "--remote-debugging-pipe"] as const;
28
+
29
+ export const SOURCE_LOOKUP_WORKSPACE_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx"]);
30
+
31
+ export const SOURCE_LOOKUP_IGNORED_DIRECTORIES = new Set([".git", "node_modules", "dist", "build", "coverage", ".next", "out", "tmp", "temp"]);
32
+
33
+ export const SOURCE_LOOKUP_DEFAULT_MAX_WORKSPACE_FILES = 2_000;
34
+
35
+ export const SOURCE_LOOKUP_MAX_WORKSPACE_FILES = 5_000;
36
+
37
+ export type AgentBrowserSemanticActionName = (typeof AGENT_BROWSER_SEMANTIC_ACTIONS)[number];
38
+
39
+ export type AgentBrowserSemanticLocator = (typeof AGENT_BROWSER_SEMANTIC_LOCATORS)[number];
40
+
41
+ export type AgentBrowserJobStepAction = (typeof AGENT_BROWSER_JOB_STEP_ACTIONS)[number];
42
+
43
+ export type AgentBrowserQaLoadState = (typeof AGENT_BROWSER_QA_LOAD_STATES)[number];
44
+
45
+ export type AgentBrowserElectronAction = (typeof AGENT_BROWSER_ELECTRON_ACTIONS)[number];
46
+
47
+ export type AgentBrowserSourceLookupStatus = "candidates-found" | "no-candidates" | "unsupported";
48
+
49
+ export type AgentBrowserNetworkSourceLookupStatus = "failed-requests-found" | "no-failed-requests" | "no-candidates";
50
+
51
+ export type CompiledAgentBrowserElectron =
52
+ | {
53
+ action: "list";
54
+ maxResults?: number;
55
+ query?: string;
56
+ }
57
+ | {
58
+ action: "launch";
59
+ allow?: string[];
60
+ appArgs?: string[];
61
+ deny?: string[];
62
+ appName?: string;
63
+ appPath?: string;
64
+ bundleId?: string;
65
+ executablePath?: string;
66
+ handoff: "connect" | "snapshot" | "tabs";
67
+ targetType: "any" | "page" | "webview";
68
+ timeoutMs?: number;
69
+ }
70
+ | {
71
+ action: "cleanup" | "status";
72
+ all?: boolean;
73
+ launchId?: string;
74
+ timeoutMs?: number;
75
+ }
76
+ | {
77
+ action: "probe";
78
+ launchId?: string;
79
+ timeoutMs?: number;
80
+ };
81
+
82
+ export interface AgentBrowserSemanticActionInput {
83
+ action: AgentBrowserSemanticActionName;
84
+ locator?: AgentBrowserSemanticLocator;
85
+ value?: string;
86
+ values?: string[];
87
+ selector?: string;
88
+ text?: string;
89
+ role?: string;
90
+ name?: string;
91
+ session?: string;
92
+ }
93
+
94
+ export interface CompiledAgentBrowserSemanticAction {
95
+ action: AgentBrowserSemanticActionName;
96
+ locator?: AgentBrowserSemanticLocator;
97
+ selector?: string;
98
+ values?: string[];
99
+ args: string[];
100
+ }
101
+
102
+ export interface CompiledAgentBrowserJobStep {
103
+ action: AgentBrowserJobStepAction;
104
+ args: string[];
105
+ }
106
+
107
+ export interface CompiledAgentBrowserJob {
108
+ args: string[];
109
+ stdin: string;
110
+ steps: CompiledAgentBrowserJobStep[];
111
+ }
112
+
113
+ export interface CompiledAgentBrowserQaPreset extends CompiledAgentBrowserJob {
114
+ checks: {
115
+ checkConsole: boolean;
116
+ checkErrors: boolean;
117
+ checkNetwork: boolean;
118
+ loadState: AgentBrowserQaLoadState;
119
+ expectedText: string[];
120
+ expectedSelector?: string;
121
+ screenshotPath?: string;
122
+ attached: boolean;
123
+ url?: string;
124
+ };
125
+ }
126
+
127
+ export interface CompiledAgentBrowserSourceLookupStep {
128
+ action: "dom" | "react";
129
+ args: string[];
130
+ }
131
+
132
+ export interface CompiledAgentBrowserSourceLookup {
133
+ args: string[];
134
+ stdin: string;
135
+ steps: CompiledAgentBrowserSourceLookupStep[];
136
+ query: {
137
+ componentName?: string;
138
+ includeDomHints: boolean;
139
+ maxWorkspaceFiles: number;
140
+ reactFiberId?: string;
141
+ selector?: string;
142
+ };
143
+ }
144
+
145
+ export interface AgentBrowserSourceLookupCandidate {
146
+ column?: number;
147
+ componentName?: string;
148
+ confidence: "high" | "medium" | "low";
149
+ evidence: string[];
150
+ file?: string;
151
+ line?: number;
152
+ source: "react-inspect" | "dom-attribute" | "workspace-search";
153
+ }
154
+
155
+ export interface AgentBrowserSourceLookupElectronContext {
156
+ appName?: string;
157
+ appPath?: string;
158
+ executablePath?: string;
159
+ launchId?: string;
160
+ sessionName?: string;
161
+ url?: string;
162
+ }
163
+
164
+ export interface AgentBrowserSourceLookupAnalysis {
165
+ candidates: AgentBrowserSourceLookupCandidate[];
166
+ electronContext?: AgentBrowserSourceLookupElectronContext;
167
+ limitations: string[];
168
+ status: AgentBrowserSourceLookupStatus;
169
+ summary: string;
170
+ workspaceRoot?: string;
171
+ }
172
+
173
+ export interface AgentBrowserSourceLookupAnalysisContext {
174
+ electronContext?: AgentBrowserSourceLookupElectronContext;
175
+ workspaceRoot: string;
176
+ }
177
+
178
+ export interface CompiledAgentBrowserNetworkSourceLookup {
179
+ args: string[];
180
+ stdin: string;
181
+ steps: Array<{ action: "network"; args: string[] }>;
182
+ query: {
183
+ filter?: string;
184
+ maxWorkspaceFiles: number;
185
+ requestId?: string;
186
+ session?: string;
187
+ url?: string;
188
+ };
189
+ }
190
+
191
+ export interface AgentBrowserNetworkSourceLookupRequest {
192
+ error?: string;
193
+ method?: string;
194
+ requestId?: string;
195
+ status?: number;
196
+ url?: string;
197
+ }
198
+
199
+ export interface AgentBrowserNetworkSourceLookupCandidate {
200
+ confidence: "high" | "medium" | "low";
201
+ evidence: string[];
202
+ file?: string;
203
+ line?: number;
204
+ requestUrl?: string;
205
+ source: "initiator" | "workspace-search";
206
+ }
207
+
208
+ export interface AgentBrowserNetworkSourceLookupAnalysis {
209
+ candidates: AgentBrowserNetworkSourceLookupCandidate[];
210
+ failedRequests: AgentBrowserNetworkSourceLookupRequest[];
211
+ limitations: string[];
212
+ status: AgentBrowserNetworkSourceLookupStatus;
213
+ summary: string;
214
+ }
215
+
216
+ export interface AgentBrowserQaPresetAnalysis {
217
+ failedChecks: string[];
218
+ passed: boolean;
219
+ summary: string;
220
+ warnings: string[];
221
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Purpose: Re-export focused input-mode schema, compiler, and analysis modules for the agent_browser wrapper.
3
+ * Responsibilities: Preserve the extension entrypoint's import surface while keeping input-mode code split by concern.
4
+ * Scope: Barrel only; add behavior to focused files under ./input-modes/.
5
+ */
6
+
7
+ export { AGENT_BROWSER_PARAMS } from "./input-modes/params.js";
8
+ export {
9
+ analyzeQaPresetResults,
10
+ compileAgentBrowserJob,
11
+ compileAgentBrowserQaPreset,
12
+ } from "./input-modes/job.js";
13
+ export {
14
+ analyzeNetworkSourceLookupResults,
15
+ analyzeSourceLookupResults,
16
+ compileAgentBrowserNetworkSourceLookup,
17
+ compileAgentBrowserSourceLookup,
18
+ redactNetworkSourceLookupAnalysis,
19
+ redactNetworkSourceLookupArgs,
20
+ redactNetworkSourceLookupSurface,
21
+ redactNetworkSourceLookupUrl,
22
+ } from "./input-modes/lookups.js";
23
+ export { compileAgentBrowserElectron } from "./input-modes/electron.js";
24
+ export {
25
+ compileAgentBrowserSemanticAction,
26
+ getCompiledSemanticActionCommandIndex,
27
+ getCompiledSemanticActionSessionPrefix,
28
+ isCompiledSemanticActionFindCommand,
29
+ } from "./input-modes/semantic-action.js";
30
+ export type {
31
+ AgentBrowserNetworkSourceLookupAnalysis,
32
+ AgentBrowserQaPresetAnalysis,
33
+ AgentBrowserSourceLookupAnalysis,
34
+ AgentBrowserSourceLookupElectronContext,
35
+ CompiledAgentBrowserElectron,
36
+ CompiledAgentBrowserJob,
37
+ CompiledAgentBrowserNetworkSourceLookup,
38
+ CompiledAgentBrowserQaPreset,
39
+ CompiledAgentBrowserSemanticAction,
40
+ CompiledAgentBrowserSourceLookup,
41
+ } from "./input-modes/types.js";