@relayflows/core 0.0.1 → 1.0.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/agent-handle.d.ts +27 -0
- package/dist/agent-handle.d.ts.map +1 -0
- package/dist/agent-handle.js +32 -0
- package/dist/agent-handle.js.map +1 -0
- package/dist/api-executor.d.ts +16 -0
- package/dist/api-executor.d.ts.map +1 -0
- package/dist/api-executor.js +94 -0
- package/dist/api-executor.js.map +1 -0
- package/dist/barrier.d.ts +72 -0
- package/dist/barrier.d.ts.map +1 -0
- package/dist/barrier.js +162 -0
- package/dist/barrier.js.map +1 -0
- package/dist/budget-tracker.d.ts +75 -0
- package/dist/budget-tracker.d.ts.map +1 -0
- package/dist/budget-tracker.js +184 -0
- package/dist/budget-tracker.js.map +1 -0
- package/dist/builder.d.ts +229 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +430 -0
- package/dist/builder.js.map +1 -0
- package/dist/builtin-templates/bug-fix.yaml +139 -0
- package/dist/builtin-templates/code-review.yaml +137 -0
- package/dist/builtin-templates/competitive.yaml +107 -0
- package/dist/builtin-templates/documentation.yaml +128 -0
- package/dist/builtin-templates/feature-dev.yaml +146 -0
- package/dist/builtin-templates/refactor.yaml +145 -0
- package/dist/builtin-templates/review-loop.yaml +227 -0
- package/dist/builtin-templates/security-audit.yaml +139 -0
- package/dist/channel-messenger.d.ts +28 -0
- package/dist/channel-messenger.d.ts.map +1 -0
- package/dist/channel-messenger.js +275 -0
- package/dist/channel-messenger.js.map +1 -0
- package/dist/cli-registry.d.ts +77 -0
- package/dist/cli-registry.d.ts.map +1 -0
- package/dist/cli-registry.js +268 -0
- package/dist/cli-registry.js.map +1 -0
- package/dist/cli-session-collector.d.ts +39 -0
- package/dist/cli-session-collector.d.ts.map +1 -0
- package/dist/cli-session-collector.js +23 -0
- package/dist/cli-session-collector.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +395 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud-runner.d.ts +15 -0
- package/dist/cloud-runner.d.ts.map +1 -0
- package/dist/cloud-runner.js +41 -0
- package/dist/cloud-runner.js.map +1 -0
- package/dist/cloud-schedules.d.ts +3 -0
- package/dist/cloud-schedules.d.ts.map +1 -0
- package/dist/cloud-schedules.js +2 -0
- package/dist/cloud-schedules.js.map +1 -0
- package/dist/collectors/claude.d.ts +6 -0
- package/dist/collectors/claude.d.ts.map +1 -0
- package/dist/collectors/claude.js +330 -0
- package/dist/collectors/claude.js.map +1 -0
- package/dist/collectors/codex.d.ts +18 -0
- package/dist/collectors/codex.d.ts.map +1 -0
- package/dist/collectors/codex.js +265 -0
- package/dist/collectors/codex.js.map +1 -0
- package/dist/collectors/opencode.d.ts +6 -0
- package/dist/collectors/opencode.d.ts.map +1 -0
- package/dist/collectors/opencode.js +204 -0
- package/dist/collectors/opencode.js.map +1 -0
- package/dist/coordinator.d.ts +73 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +647 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/custom-steps.d.ts +73 -0
- package/dist/custom-steps.d.ts.map +1 -0
- package/dist/custom-steps.js +321 -0
- package/dist/custom-steps.js.map +1 -0
- package/dist/default-logger.d.ts +9 -0
- package/dist/default-logger.d.ts.map +1 -0
- package/dist/default-logger.js +104 -0
- package/dist/default-logger.js.map +1 -0
- package/dist/dry-run-format.d.ts +6 -0
- package/dist/dry-run-format.d.ts.map +1 -0
- package/dist/dry-run-format.js +76 -0
- package/dist/dry-run-format.js.map +1 -0
- package/dist/file-db.d.ts +85 -0
- package/dist/file-db.d.ts.map +1 -0
- package/dist/file-db.js +215 -0
- package/dist/file-db.js.map +1 -0
- package/dist/index.d.ts +37 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -3
- package/dist/index.js.map +1 -0
- package/dist/integrations/browser.d.ts +99 -0
- package/dist/integrations/browser.d.ts.map +1 -0
- package/dist/integrations/browser.js +419 -0
- package/dist/integrations/browser.js.map +1 -0
- package/dist/integrations/github.d.ts +79 -0
- package/dist/integrations/github.d.ts.map +1 -0
- package/dist/integrations/github.js +459 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations/slack.d.ts +80 -0
- package/dist/integrations/slack.d.ts.map +1 -0
- package/dist/integrations/slack.js +355 -0
- package/dist/integrations/slack.js.map +1 -0
- package/dist/listr-renderer.d.ts +26 -0
- package/dist/listr-renderer.d.ts.map +1 -0
- package/dist/listr-renderer.js +230 -0
- package/dist/listr-renderer.js.map +1 -0
- package/dist/memory-db.d.ts +17 -0
- package/dist/memory-db.d.ts.map +1 -0
- package/dist/memory-db.js +33 -0
- package/dist/memory-db.js.map +1 -0
- package/dist/process-backend-executor.d.ts +18 -0
- package/dist/process-backend-executor.d.ts.map +1 -0
- package/dist/process-backend-executor.js +74 -0
- package/dist/process-backend-executor.js.map +1 -0
- package/dist/process-spawner.d.ts +35 -0
- package/dist/process-spawner.d.ts.map +1 -0
- package/dist/process-spawner.js +173 -0
- package/dist/process-spawner.js.map +1 -0
- package/dist/provisioner.d.ts +64 -0
- package/dist/provisioner.d.ts.map +1 -0
- package/dist/provisioner.js +269 -0
- package/dist/provisioner.js.map +1 -0
- package/dist/proxy-env.d.ts +52 -0
- package/dist/proxy-env.d.ts.map +1 -0
- package/dist/proxy-env.js +92 -0
- package/dist/proxy-env.js.map +1 -0
- package/dist/run-script.d.ts +82 -0
- package/dist/run-script.d.ts.map +1 -0
- package/dist/run-script.js +527 -0
- package/dist/run-script.js.map +1 -0
- package/dist/run-summary-table.d.ts +5 -0
- package/dist/run-summary-table.d.ts.map +1 -0
- package/dist/run-summary-table.js +132 -0
- package/dist/run-summary-table.js.map +1 -0
- package/dist/run.d.ts +45 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +37 -0
- package/dist/run.js.map +1 -0
- package/dist/runner.d.ts +528 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +6269 -0
- package/dist/runner.js.map +1 -0
- package/dist/schema.d.ts +275 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +27 -0
- package/dist/schema.js.map +1 -0
- package/dist/schema.json +940 -0
- package/dist/sibling-links.d.ts +100 -0
- package/dist/sibling-links.d.ts.map +1 -0
- package/dist/sibling-links.js +205 -0
- package/dist/sibling-links.js.map +1 -0
- package/dist/state.d.ts +77 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +140 -0
- package/dist/state.js.map +1 -0
- package/dist/step-executor.d.ts +95 -0
- package/dist/step-executor.d.ts.map +1 -0
- package/dist/step-executor.js +393 -0
- package/dist/step-executor.js.map +1 -0
- package/dist/template-resolver.d.ts +33 -0
- package/dist/template-resolver.d.ts.map +1 -0
- package/dist/template-resolver.js +144 -0
- package/dist/template-resolver.js.map +1 -0
- package/dist/templates.d.ts +47 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +405 -0
- package/dist/templates.js.map +1 -0
- package/dist/trajectory.d.ts +87 -0
- package/dist/trajectory.d.ts.map +1 -0
- package/dist/trajectory.js +412 -0
- package/dist/trajectory.js.map +1 -0
- package/dist/types.d.ts +471 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/validator.d.ts +11 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +186 -0
- package/dist/validator.js.map +1 -0
- package/dist/verification.d.ts +53 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +238 -0
- package/dist/verification.js.map +1 -0
- package/package.json +12 -8
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { BrowserClient } from '@relayflows/browser-primitive';
|
|
2
|
+
const BROWSER_INTEGRATION = 'browser';
|
|
3
|
+
const BROWSER_RUN_ACTION = 'run';
|
|
4
|
+
const EXTRACTION_ACTIONS = new Set([
|
|
5
|
+
'text',
|
|
6
|
+
'getText',
|
|
7
|
+
'html',
|
|
8
|
+
'getHTML',
|
|
9
|
+
'attribute',
|
|
10
|
+
'getAttribute',
|
|
11
|
+
'screenshot',
|
|
12
|
+
'elementScreenshot',
|
|
13
|
+
'evaluate',
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Create a Relay integration step that can be used in relay.yaml or passed to
|
|
17
|
+
* WorkflowRunner directly. Complex action/config objects are serialized into
|
|
18
|
+
* params so the existing workflow template resolver can interpolate them.
|
|
19
|
+
*/
|
|
20
|
+
export function createBrowserStep(config) {
|
|
21
|
+
validateBrowserStepConfig(config);
|
|
22
|
+
const params = {
|
|
23
|
+
actions: JSON.stringify(config.actions),
|
|
24
|
+
};
|
|
25
|
+
if (config.config !== undefined) {
|
|
26
|
+
params.config = JSON.stringify(config.config);
|
|
27
|
+
}
|
|
28
|
+
if (config.output !== undefined) {
|
|
29
|
+
params.output = JSON.stringify(config.output);
|
|
30
|
+
}
|
|
31
|
+
if (config.sessionId !== undefined) {
|
|
32
|
+
params.sessionId = config.sessionId;
|
|
33
|
+
}
|
|
34
|
+
if (config.closeSession !== undefined) {
|
|
35
|
+
params.closeSession = String(config.closeSession);
|
|
36
|
+
}
|
|
37
|
+
const step = {
|
|
38
|
+
name: config.name,
|
|
39
|
+
type: 'integration',
|
|
40
|
+
integration: BROWSER_INTEGRATION,
|
|
41
|
+
action: BROWSER_RUN_ACTION,
|
|
42
|
+
params,
|
|
43
|
+
};
|
|
44
|
+
if (config.dependsOn !== undefined)
|
|
45
|
+
step.dependsOn = config.dependsOn;
|
|
46
|
+
if (config.timeoutMs !== undefined)
|
|
47
|
+
step.timeoutMs = config.timeoutMs;
|
|
48
|
+
if (config.retries !== undefined)
|
|
49
|
+
step.retries = config.retries;
|
|
50
|
+
return step;
|
|
51
|
+
}
|
|
52
|
+
export class BrowserStepExecutor {
|
|
53
|
+
options;
|
|
54
|
+
sessions = new Map();
|
|
55
|
+
constructor(options = {}) {
|
|
56
|
+
this.options = options;
|
|
57
|
+
}
|
|
58
|
+
async executeAgentStep() {
|
|
59
|
+
throw new Error('BrowserStepExecutor only executes browser integration steps.');
|
|
60
|
+
}
|
|
61
|
+
async execute(config, context = {}) {
|
|
62
|
+
validateBrowserStepConfig(config);
|
|
63
|
+
const client = context.client ?? this.getOrCreateClient(config, context);
|
|
64
|
+
const records = [];
|
|
65
|
+
let hardFailure;
|
|
66
|
+
for (let index = 0; index < config.actions.length; index += 1) {
|
|
67
|
+
const action = config.actions[index];
|
|
68
|
+
const started = Date.now();
|
|
69
|
+
const result = await client.executeWorkflowAction(action);
|
|
70
|
+
const record = {
|
|
71
|
+
index,
|
|
72
|
+
id: action.id,
|
|
73
|
+
action: action.action,
|
|
74
|
+
success: result.success,
|
|
75
|
+
output: result.output,
|
|
76
|
+
error: result.error,
|
|
77
|
+
metadata: result.metadata,
|
|
78
|
+
};
|
|
79
|
+
records.push(record);
|
|
80
|
+
if (!result.success && !action.continueOnError) {
|
|
81
|
+
hardFailure = record;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
if (!record.metadata) {
|
|
85
|
+
record.metadata = {
|
|
86
|
+
action: action.action,
|
|
87
|
+
sessionId: client.getSession().id,
|
|
88
|
+
currentUrl: client.getCurrentUrl(),
|
|
89
|
+
executionTime: Date.now() - started,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const session = client.getSession();
|
|
94
|
+
const output = formatStepOutput(config, records, session);
|
|
95
|
+
const success = hardFailure === undefined;
|
|
96
|
+
if (config.closeSession || config.config?.persistSession === false) {
|
|
97
|
+
if (context.client) {
|
|
98
|
+
await context.client.close();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
await this.closeSession(this.resolveSessionKey(config, context));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
success,
|
|
106
|
+
output,
|
|
107
|
+
results: records,
|
|
108
|
+
session,
|
|
109
|
+
error: hardFailure?.error,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async executeIntegrationStep(step, resolvedParams, context = {}) {
|
|
113
|
+
if (step.integration !== BROWSER_INTEGRATION) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
output: `BrowserStepExecutor only handles "${BROWSER_INTEGRATION}" integration steps`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const config = browserStepConfigFromWorkflowStep(step, resolvedParams);
|
|
121
|
+
const result = await this.execute(config, context);
|
|
122
|
+
return {
|
|
123
|
+
success: result.success,
|
|
124
|
+
output: result.success ? result.output : result.output || result.error || 'Browser step failed',
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
output: error instanceof Error ? error.message : String(error),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async closeSession(sessionId) {
|
|
135
|
+
const client = this.sessions.get(sessionId);
|
|
136
|
+
if (!client) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
await client.close();
|
|
140
|
+
this.sessions.delete(sessionId);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
async closeAll() {
|
|
144
|
+
await Promise.all([...this.sessions.values()].map((client) => client.close()));
|
|
145
|
+
this.sessions.clear();
|
|
146
|
+
}
|
|
147
|
+
listSessions() {
|
|
148
|
+
return [...this.sessions.values()].map((client) => client.getSession());
|
|
149
|
+
}
|
|
150
|
+
getOrCreateClient(config, context) {
|
|
151
|
+
const key = this.resolveSessionKey(config, context);
|
|
152
|
+
const existing = this.sessions.get(key);
|
|
153
|
+
if (existing) {
|
|
154
|
+
return existing;
|
|
155
|
+
}
|
|
156
|
+
const client = new BrowserClient({
|
|
157
|
+
...this.options,
|
|
158
|
+
config: {
|
|
159
|
+
...this.options.config,
|
|
160
|
+
...config.config,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
this.sessions.set(key, client);
|
|
164
|
+
return client;
|
|
165
|
+
}
|
|
166
|
+
resolveSessionKey(config, context) {
|
|
167
|
+
if (context.sessionId)
|
|
168
|
+
return context.sessionId;
|
|
169
|
+
if (config.sessionId)
|
|
170
|
+
return config.sessionId;
|
|
171
|
+
const workspace = context.workspaceId ?? 'default';
|
|
172
|
+
return `${workspace}:${stableStringify(config.config ?? {})}`;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export function browserStepConfigFromWorkflowStep(step, resolvedParams) {
|
|
176
|
+
const params = normalizeResolvedParams(resolvedParams);
|
|
177
|
+
const config = readJsonParam(params.config ?? params.browserConfig, 'config') ?? undefined;
|
|
178
|
+
const output = readJsonParam(params.output, 'output') ?? undefined;
|
|
179
|
+
const closeSession = params.closeSession === undefined ? undefined : Boolean(coerceScalar(params.closeSession));
|
|
180
|
+
const sessionId = params.sessionId === undefined ? undefined : String(params.sessionId);
|
|
181
|
+
const actions = readActions(step, params);
|
|
182
|
+
return {
|
|
183
|
+
name: step.name,
|
|
184
|
+
dependsOn: step.dependsOn,
|
|
185
|
+
config,
|
|
186
|
+
actions,
|
|
187
|
+
output,
|
|
188
|
+
sessionId,
|
|
189
|
+
closeSession,
|
|
190
|
+
timeoutMs: step.timeoutMs,
|
|
191
|
+
retries: step.retries,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function validateBrowserStepConfig(config) {
|
|
195
|
+
if (!config.name) {
|
|
196
|
+
throw new Error('Browser step requires a non-empty name');
|
|
197
|
+
}
|
|
198
|
+
if (!Array.isArray(config.actions) || config.actions.length === 0) {
|
|
199
|
+
throw new Error(`Browser step "${config.name}" requires at least one action`);
|
|
200
|
+
}
|
|
201
|
+
for (const [index, action] of config.actions.entries()) {
|
|
202
|
+
if (!action || typeof action !== 'object') {
|
|
203
|
+
throw new Error(`Browser step "${config.name}" action ${index} must be an object`);
|
|
204
|
+
}
|
|
205
|
+
if (!action.action || typeof action.action !== 'string') {
|
|
206
|
+
throw new Error(`Browser step "${config.name}" action ${index} requires an action name`);
|
|
207
|
+
}
|
|
208
|
+
if (action.params === undefined || typeof action.params !== 'object' || action.params === null) {
|
|
209
|
+
throw new Error(`Browser step "${config.name}" action ${index} requires params`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function readActions(step, params) {
|
|
214
|
+
const serializedActions = params.actions;
|
|
215
|
+
if (serializedActions !== undefined) {
|
|
216
|
+
const parsed = readJsonParam(serializedActions, 'actions');
|
|
217
|
+
if (!Array.isArray(parsed)) {
|
|
218
|
+
throw new Error('Browser step params.actions must be a JSON array');
|
|
219
|
+
}
|
|
220
|
+
return parsed;
|
|
221
|
+
}
|
|
222
|
+
if (!step.action || step.action === BROWSER_RUN_ACTION) {
|
|
223
|
+
throw new Error(`Browser step "${step.name}" requires params.actions or a browser action`);
|
|
224
|
+
}
|
|
225
|
+
const actionParams = {};
|
|
226
|
+
for (const [key, value] of Object.entries(params)) {
|
|
227
|
+
if (key === 'config' ||
|
|
228
|
+
key === 'browserConfig' ||
|
|
229
|
+
key === 'output' ||
|
|
230
|
+
key === 'sessionId' ||
|
|
231
|
+
key === 'closeSession') {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
actionParams[key] = value;
|
|
235
|
+
}
|
|
236
|
+
return [
|
|
237
|
+
{
|
|
238
|
+
action: step.action,
|
|
239
|
+
params: actionParams,
|
|
240
|
+
},
|
|
241
|
+
];
|
|
242
|
+
}
|
|
243
|
+
function formatStepOutput(config, records, session) {
|
|
244
|
+
const outputConfig = config.output ?? {};
|
|
245
|
+
const mode = outputConfig.mode ?? 'last';
|
|
246
|
+
const format = outputConfig.format ?? 'json';
|
|
247
|
+
if (mode === 'none') {
|
|
248
|
+
return '';
|
|
249
|
+
}
|
|
250
|
+
const projection = buildOutputProjection(mode, config.actions, records, session, outputConfig);
|
|
251
|
+
if (format === 'text') {
|
|
252
|
+
return projectionToText(projection);
|
|
253
|
+
}
|
|
254
|
+
return JSON.stringify(projection, undefined, outputConfig.pretty ? 2 : undefined);
|
|
255
|
+
}
|
|
256
|
+
function buildOutputProjection(mode, actions, records, session, outputConfig) {
|
|
257
|
+
if (mode === 'summary') {
|
|
258
|
+
const failed = records.find((record) => !record.success);
|
|
259
|
+
return withOptionalSession({
|
|
260
|
+
success: failed === undefined,
|
|
261
|
+
actionCount: records.length,
|
|
262
|
+
currentUrl: session.currentUrl,
|
|
263
|
+
failedAction: failed
|
|
264
|
+
? {
|
|
265
|
+
index: failed.index,
|
|
266
|
+
id: failed.id,
|
|
267
|
+
action: failed.action,
|
|
268
|
+
error: failed.error,
|
|
269
|
+
}
|
|
270
|
+
: undefined,
|
|
271
|
+
}, session, outputConfig);
|
|
272
|
+
}
|
|
273
|
+
if (mode === 'all') {
|
|
274
|
+
return withOptionalSession({
|
|
275
|
+
results: records.map((record) => projectRecord(record, outputConfig.includeMetadata ?? false)),
|
|
276
|
+
}, session, outputConfig);
|
|
277
|
+
}
|
|
278
|
+
if (mode === 'captures') {
|
|
279
|
+
const captures = {};
|
|
280
|
+
for (const record of records) {
|
|
281
|
+
const action = record.action;
|
|
282
|
+
const actionConfig = actions[record.index];
|
|
283
|
+
const capture = actionConfig?.capture ?? (EXTRACTION_ACTIONS.has(action) && record.success);
|
|
284
|
+
if (!capture)
|
|
285
|
+
continue;
|
|
286
|
+
const key = actionConfig?.outputKey ?? actionConfig?.id ?? record.id ?? `action_${record.index}`;
|
|
287
|
+
captures[key] = projectRecord(record, outputConfig.includeMetadata ?? false);
|
|
288
|
+
}
|
|
289
|
+
return withOptionalSession({ captures }, session, outputConfig);
|
|
290
|
+
}
|
|
291
|
+
const last = records.at(-1);
|
|
292
|
+
return withOptionalSession(last ? projectRecord(last, outputConfig.includeMetadata ?? false) : null, session, outputConfig);
|
|
293
|
+
}
|
|
294
|
+
function projectRecord(record, includeMetadata) {
|
|
295
|
+
const projected = {
|
|
296
|
+
index: record.index,
|
|
297
|
+
action: record.action,
|
|
298
|
+
success: record.success,
|
|
299
|
+
};
|
|
300
|
+
if (record.id !== undefined)
|
|
301
|
+
projected.id = record.id;
|
|
302
|
+
if (record.output !== undefined)
|
|
303
|
+
projected.output = record.output;
|
|
304
|
+
if (record.error !== undefined)
|
|
305
|
+
projected.error = record.error;
|
|
306
|
+
if (includeMetadata && record.metadata !== undefined)
|
|
307
|
+
projected.metadata = record.metadata;
|
|
308
|
+
return projected;
|
|
309
|
+
}
|
|
310
|
+
function withOptionalSession(value, session, outputConfig) {
|
|
311
|
+
if (!outputConfig.includeSession) {
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
value,
|
|
316
|
+
session: {
|
|
317
|
+
id: session.id,
|
|
318
|
+
active: session.active,
|
|
319
|
+
currentUrl: session.currentUrl,
|
|
320
|
+
startTime: session.startTime,
|
|
321
|
+
config: session.config,
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function projectionToText(value) {
|
|
326
|
+
if (typeof value === 'string')
|
|
327
|
+
return value;
|
|
328
|
+
if (value === null || value === undefined)
|
|
329
|
+
return '';
|
|
330
|
+
if (isRecord(value)) {
|
|
331
|
+
if ('output' in value) {
|
|
332
|
+
return projectionToText(value.output);
|
|
333
|
+
}
|
|
334
|
+
if ('value' in value) {
|
|
335
|
+
return projectionToText(value.value);
|
|
336
|
+
}
|
|
337
|
+
if ('text' in value) {
|
|
338
|
+
return projectionToText(value.text);
|
|
339
|
+
}
|
|
340
|
+
if ('html' in value) {
|
|
341
|
+
return projectionToText(value.html);
|
|
342
|
+
}
|
|
343
|
+
if ('captures' in value) {
|
|
344
|
+
return JSON.stringify(value.captures);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (Array.isArray(value)) {
|
|
348
|
+
return value.map((entry) => projectionToText(entry)).join('\n');
|
|
349
|
+
}
|
|
350
|
+
return JSON.stringify(value);
|
|
351
|
+
}
|
|
352
|
+
function normalizeResolvedParams(params) {
|
|
353
|
+
const normalized = {};
|
|
354
|
+
for (const [key, value] of Object.entries(params)) {
|
|
355
|
+
normalized[key] = coerceScalar(value);
|
|
356
|
+
}
|
|
357
|
+
return normalized;
|
|
358
|
+
}
|
|
359
|
+
function coerceScalar(value) {
|
|
360
|
+
if (typeof value !== 'string') {
|
|
361
|
+
return value;
|
|
362
|
+
}
|
|
363
|
+
const trimmed = value.trim();
|
|
364
|
+
if (trimmed === 'true')
|
|
365
|
+
return true;
|
|
366
|
+
if (trimmed === 'false')
|
|
367
|
+
return false;
|
|
368
|
+
if (trimmed === 'null')
|
|
369
|
+
return null;
|
|
370
|
+
if (/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/.test(trimmed))
|
|
371
|
+
return Number(trimmed);
|
|
372
|
+
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
|
|
373
|
+
(trimmed.startsWith('[') && trimmed.endsWith(']')) ||
|
|
374
|
+
(trimmed.startsWith('"') && trimmed.endsWith('"'))) {
|
|
375
|
+
try {
|
|
376
|
+
return JSON.parse(trimmed);
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
return value;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
function readJsonParam(value, name) {
|
|
385
|
+
if (value === undefined)
|
|
386
|
+
return undefined;
|
|
387
|
+
if (typeof value !== 'string')
|
|
388
|
+
return value;
|
|
389
|
+
try {
|
|
390
|
+
return JSON.parse(value);
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
throw new Error(`Browser step params.${name} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function stableStringify(value) {
|
|
397
|
+
if (!isRecord(value) && !Array.isArray(value)) {
|
|
398
|
+
return JSON.stringify(value);
|
|
399
|
+
}
|
|
400
|
+
return JSON.stringify(sortJson(value));
|
|
401
|
+
}
|
|
402
|
+
function sortJson(value) {
|
|
403
|
+
if (Array.isArray(value)) {
|
|
404
|
+
return value.map(sortJson);
|
|
405
|
+
}
|
|
406
|
+
if (!isRecord(value)) {
|
|
407
|
+
return value;
|
|
408
|
+
}
|
|
409
|
+
return Object.keys(value)
|
|
410
|
+
.sort()
|
|
411
|
+
.reduce((acc, key) => {
|
|
412
|
+
acc[key] = sortJson(value[key]);
|
|
413
|
+
return acc;
|
|
414
|
+
}, {});
|
|
415
|
+
}
|
|
416
|
+
function isRecord(value) {
|
|
417
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/integrations/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA6B,MAAM,+BAA+B,CAAC;AA6FzF,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAoB;IACpD,MAAM;IACN,SAAS;IACT,MAAM;IACN,SAAS;IACT,WAAW;IACX,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,UAAU;CACX,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;KACxC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACtC,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAiB;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,kBAAkB;QAC1B,MAAM;KACP,CAAC;IAEF,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACtE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACtE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,mBAAmB;IAGD;IAFZ,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7D,YAA6B,UAAgC,EAAE;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAAG,CAAC;IAEnE,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAyB,EACzB,UAAuC,EAAE;QAEzC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,OAAO,GAA8B,EAAE,CAAC;QAC9C,IAAI,WAAgD,CAAC;QAErD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,MAA8B,CAAC,CAAC;YAElF,MAAM,MAAM,GAA4B;gBACtC,KAAK;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC/C,WAAW,GAAG,MAAM,CAAC;gBACrB,MAAM;YACR,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,GAAG;oBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;oBACjC,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;oBAClC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC;QAE1C,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,KAAK,EAAE,CAAC;YACnE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,MAAM;YACN,OAAO,EAAE,OAAO;YAChB,OAAO;YACP,KAAK,EAAE,WAAW,EAAE,KAAK;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,IAAkB,EAClB,cAAsC,EACtC,UAAoC,EAAE;QAEtC,IAAI,IAAI,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,qCAAqC,mBAAmB,qBAAqB;aACtF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,iCAAiC,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,qBAAqB;aAChG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,iBAAiB,CAAC,MAAyB,EAAE,OAAoC;QACvF,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,GAAG,IAAI,CAAC,OAAO;YACf,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBACtB,GAAG,MAAM,CAAC,MAAM;aACjB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,MAAyB,EAAE,OAAoC;QACvF,IAAI,OAAO,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,SAAS,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS;YAAE,OAAO,MAAM,CAAC,SAAS,CAAC;QAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACnD,OAAO,GAAG,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;CACF;AAED,MAAM,UAAU,iCAAiC,CAC/C,IAAkB,EAClB,cAAsC;IAEtC,MAAM,MAAM,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,aAAa,CAAgB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC1G,MAAM,MAAM,GAAG,aAAa,CAA0B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC5F,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAExF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,MAAM;QACN,SAAS;QACT,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAyB;IAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,gCAAgC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,YAAY,KAAK,oBAAoB,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,YAAY,KAAK,0BAA0B,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,YAAY,KAAK,kBAAkB,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB,EAAE,MAAsB;IAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC;IACzC,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,aAAa,CAAsB,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,+CAA+C,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IACE,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,eAAe;YACvB,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,cAAc,EACtB,CAAC;YACD,SAAS;QACX,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO;QACL;YACE,MAAM,EAAE,IAAI,CAAC,MAA2B;YACxC,MAAM,EAAE,YAAyD;SAC7C;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAyB,EACzB,OAAkC,EAClC,OAAuB;IAEvB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC;IAE7C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAE/F,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAA2B,EAC3B,OAA4B,EAC5B,OAAkC,EAClC,OAAuB,EACvB,YAAqC;IAErC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,mBAAmB,CACxB;YACE,OAAO,EAAE,MAAM,KAAK,SAAS;YAC7B,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,MAAM;gBAClB,CAAC,CAAC;oBACE,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB;gBACH,CAAC,CAAC,SAAS;SACd,EACD,OAAO,EACP,YAAY,CACb,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,mBAAmB,CACxB;YACE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;SAC/F,EACD,OAAO,EACP,YAAY,CACb,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,SAAS,IAAI,YAAY,EAAE,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACjG,QAAQ,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,mBAAmB,CACxB,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EACxE,OAAO,EACP,YAAY,CACb,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAA+B,EAAE,eAAwB;IAC9E,MAAM,SAAS,GAA4B;QACzC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;IAEF,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;QAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/D,IAAI,eAAe,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE3F,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,OAAuB,EACvB,YAAqC;IAErC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,KAAK;QACL,OAAO,EAAE;YACP,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAErD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACpB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACpB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA8B;IAC7D,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzE,IACE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAClD,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAI,KAAc,EAAE,IAAY;IACpD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAU,CAAC;IAEjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,IAAI,EAAE;SACN,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { RunnerStepExecutor, WorkflowStep } from '../types.js';
|
|
2
|
+
import { GitHubClient } from '@relayflows/github-primitive';
|
|
3
|
+
import type { GitHubActionName, GitHubActionParamsMap, GitHubActionResult, GitHubRuntime, GitHubRuntimeConfig, RepositoryRef } from '@relayflows/github-primitive';
|
|
4
|
+
export type GitHubStepOutputMode = 'data' | 'result' | 'summary' | 'raw' | 'none';
|
|
5
|
+
export type GitHubStepOutputFormat = 'json' | 'text';
|
|
6
|
+
type RepoParamKeys = 'owner' | 'repo';
|
|
7
|
+
type ParamsFor<TName extends GitHubActionName> = TName extends keyof GitHubActionParamsMap ? GitHubActionParamsMap[TName] : Record<string, unknown>;
|
|
8
|
+
type StripRepoParams<TParams> = Omit<TParams, Extract<keyof TParams, RepoParamKeys>> & Partial<Pick<TParams, Extract<keyof TParams, RepoParamKeys>>>;
|
|
9
|
+
export type GitHubStepParams<TName extends GitHubActionName = GitHubActionName> = [
|
|
10
|
+
NonNullable<ParamsFor<TName>>
|
|
11
|
+
] extends [never] ? Record<string, unknown> : StripRepoParams<NonNullable<ParamsFor<TName>>>;
|
|
12
|
+
export interface GitHubStepOutputConfig {
|
|
13
|
+
/** Which action result becomes the workflow step output. Defaults to "data". */
|
|
14
|
+
mode?: GitHubStepOutputMode;
|
|
15
|
+
/** Emit JSON for structured chaining or text for simple downstream interpolation. Defaults to "json". */
|
|
16
|
+
format?: GitHubStepOutputFormat;
|
|
17
|
+
/** Select a nested field from the projected output, e.g. "number" or "data.htmlUrl". */
|
|
18
|
+
path?: string;
|
|
19
|
+
/** Include adapter metadata such as runtime and timing in JSON output. Defaults false. */
|
|
20
|
+
includeMetadata?: boolean;
|
|
21
|
+
/** Include the selected runtime in JSON output. Defaults false. */
|
|
22
|
+
includeRuntime?: boolean;
|
|
23
|
+
/** Pretty-print JSON output. Defaults false. */
|
|
24
|
+
pretty?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface GitHubStepConfig<TName extends GitHubActionName = GitHubActionName> {
|
|
27
|
+
/** Unique step name within the workflow. */
|
|
28
|
+
name: string;
|
|
29
|
+
/** Dependencies in the Relay workflow DAG. */
|
|
30
|
+
dependsOn?: string[];
|
|
31
|
+
/** GitHub action to execute. */
|
|
32
|
+
action: TName;
|
|
33
|
+
/** Repository in owner/repo format. Used as owner and repo params for repository-scoped actions. */
|
|
34
|
+
repo?: string | RepositoryRef;
|
|
35
|
+
/** Action-specific parameters. Values may include workflow templates such as {{steps.plan.output}}. */
|
|
36
|
+
params?: GitHubStepParams<TName>;
|
|
37
|
+
/** Runtime settings for local gh CLI, cloud/Nango, or auto detection. */
|
|
38
|
+
config?: GitHubRuntimeConfig;
|
|
39
|
+
/** Controls the string captured as {{steps.<name>.output}}. */
|
|
40
|
+
output?: GitHubStepOutputConfig;
|
|
41
|
+
/** Workflow step timeout in milliseconds. */
|
|
42
|
+
timeoutMs?: number;
|
|
43
|
+
/** Number of retry attempts when the workflow runner retries this integration step. */
|
|
44
|
+
retries?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface GitHubStepExecutionContext {
|
|
47
|
+
workspaceId?: string;
|
|
48
|
+
client?: GitHubClient;
|
|
49
|
+
config?: GitHubRuntimeConfig;
|
|
50
|
+
}
|
|
51
|
+
export interface GitHubStepExecutionResult<TOutput = unknown> {
|
|
52
|
+
success: boolean;
|
|
53
|
+
output: string;
|
|
54
|
+
result: GitHubActionResult<TOutput>;
|
|
55
|
+
runtime?: GitHubRuntime;
|
|
56
|
+
error?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface GitHubIntegrationStepResult {
|
|
59
|
+
output: string;
|
|
60
|
+
success: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a Relay integration step that can be used in TypeScript workflows or
|
|
64
|
+
* emitted into .relay YAML. Complex params/config objects are serialized so the
|
|
65
|
+
* workflow template resolver can interpolate values before execution.
|
|
66
|
+
*/
|
|
67
|
+
export declare function createGitHubStep<TName extends GitHubActionName>(config: GitHubStepConfig<TName>): WorkflowStep;
|
|
68
|
+
export declare class GitHubStepExecutor implements RunnerStepExecutor {
|
|
69
|
+
private readonly options;
|
|
70
|
+
constructor(options?: GitHubRuntimeConfig);
|
|
71
|
+
executeAgentStep(): Promise<string>;
|
|
72
|
+
execute<TOutput = unknown>(config: GitHubStepConfig, context?: GitHubStepExecutionContext): Promise<GitHubStepExecutionResult<TOutput>>;
|
|
73
|
+
executeIntegrationStep(step: WorkflowStep, resolvedParams: Record<string, string>, context?: {
|
|
74
|
+
workspaceId?: string;
|
|
75
|
+
}): Promise<GitHubIntegrationStepResult>;
|
|
76
|
+
}
|
|
77
|
+
export declare function githubStepConfigFromWorkflowStep(step: WorkflowStep, resolvedParams: Record<string, string>): GitHubStepConfig;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/integrations/github.ts"],"names":[],"mappings":"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"}
|