opensteer 0.7.1 → 0.8.2
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/README.md +2 -1
- package/dist/{chunk-7QTHGTGN.js → chunk-X3G6QSCF.js} +16206 -16906
- package/dist/chunk-X3G6QSCF.js.map +1 -0
- package/dist/cli/bin.cjs +30118 -35773
- package/dist/cli/bin.cjs.map +1 -1
- package/dist/cli/bin.js +610 -5520
- package/dist/cli/bin.js.map +1 -1
- package/dist/index.cjs +6880 -7361
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +275 -320
- package/dist/index.d.ts +275 -320
- package/dist/index.js +65 -161
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/skills/README.md +14 -2
- package/skills/opensteer/SKILL.md +34 -73
- package/skills/opensteer/references/cli-reference.md +90 -72
- package/skills/opensteer/references/request-workflow.md +145 -9
- package/skills/opensteer/references/sdk-reference.md +168 -32
- package/dist/chunk-7QTHGTGN.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,32 +1,57 @@
|
|
|
1
|
-
import { createOpensteerSemanticRuntime,
|
|
2
|
-
export { CloudSessionProxy, DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL,
|
|
1
|
+
import { resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, OpensteerBrowserManager, OpensteerRuntime } from './chunk-X3G6QSCF.js';
|
|
2
|
+
export { CloudSessionProxy, DEFAULT_OPENSTEER_ENGINE, DEFERRED_MATCH_ATTR_KEYS, ElementPathError, MATCH_ATTRIBUTE_PRIORITY, OPENSTEER_DOM_ACTION_BRIDGE_SYMBOL, OPENSTEER_ENGINE_NAMES, OPENSTEER_FILESYSTEM_WORKSPACE_LAYOUT, OPENSTEER_FILESYSTEM_WORKSPACE_VERSION, OpensteerAttachAmbiguousError, OpensteerBrowserManager, OpensteerCloudClient, OpensteerRuntime, STABLE_PRIMARY_ATTR_KEYS, buildArrayFieldPathCandidates, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createDomRuntime, createFilesystemOpensteerWorkspace, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hasPersistedCloudSession, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, normalizeExtractedValue, normalizeOpensteerEngineName, normalizeOpensteerExecutionMode, normalizeWorkspaceId, readPersistedCloudSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveOpensteerEngineName, resolveOpensteerExecutionMode, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath } from './chunk-X3G6QSCF.js';
|
|
3
3
|
|
|
4
4
|
// src/sdk/opensteer.ts
|
|
5
|
-
var Opensteer = class
|
|
5
|
+
var Opensteer = class {
|
|
6
6
|
runtime;
|
|
7
|
-
|
|
7
|
+
browserManager;
|
|
8
|
+
browser;
|
|
8
9
|
constructor(options = {}) {
|
|
10
|
+
const runtimeConfig = resolveOpensteerRuntimeConfig({
|
|
11
|
+
...options.cloud === void 0 ? {} : { cloud: options.cloud },
|
|
12
|
+
...process.env.OPENSTEER_MODE === void 0 ? {} : { environmentMode: process.env.OPENSTEER_MODE }
|
|
13
|
+
});
|
|
14
|
+
if (runtimeConfig.mode === "cloud") {
|
|
15
|
+
this.browserManager = void 0;
|
|
16
|
+
this.runtime = createOpensteerSemanticRuntime({
|
|
17
|
+
mode: runtimeConfig.mode,
|
|
18
|
+
...options.cloud === void 0 ? {} : { cloud: options.cloud },
|
|
19
|
+
...options.engineName === void 0 ? {} : { engine: options.engineName },
|
|
20
|
+
runtimeOptions: {
|
|
21
|
+
...options
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
this.browser = createUnsupportedBrowserController();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.browserManager = new OpensteerBrowserManager({
|
|
28
|
+
...options.rootDir === void 0 ? {} : { rootDir: options.rootDir },
|
|
29
|
+
...options.rootPath === void 0 ? {} : { rootPath: options.rootPath },
|
|
30
|
+
...options.workspace === void 0 ? {} : { workspace: options.workspace },
|
|
31
|
+
...options.engineName === void 0 ? {} : { engineName: options.engineName },
|
|
32
|
+
...options.browser === void 0 ? {} : { browser: options.browser },
|
|
33
|
+
...options.launch === void 0 ? {} : { launch: options.launch },
|
|
34
|
+
...options.context === void 0 ? {} : { context: options.context }
|
|
35
|
+
});
|
|
9
36
|
this.runtime = createOpensteerSemanticRuntime({
|
|
10
|
-
|
|
11
|
-
...options.cloud === void 0 ? {} : { cloud: options.cloud }
|
|
37
|
+
mode: runtimeConfig.mode,
|
|
38
|
+
...options.cloud === void 0 ? {} : { cloud: options.cloud },
|
|
39
|
+
...options.engineName === void 0 ? {} : { engine: options.engineName },
|
|
40
|
+
runtimeOptions: {
|
|
41
|
+
...options,
|
|
42
|
+
rootPath: this.browserManager.rootPath,
|
|
43
|
+
cleanupRootOnClose: this.browserManager.cleanupRootOnDisconnect
|
|
44
|
+
}
|
|
12
45
|
});
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
...options.rootDir === void 0 ? {} : { rootDir: options.rootDir }
|
|
20
|
-
}),
|
|
21
|
-
"attached"
|
|
22
|
-
);
|
|
46
|
+
this.browser = {
|
|
47
|
+
status: () => this.browserManager.status(),
|
|
48
|
+
clone: (input) => this.browserManager.clonePersistentBrowser(input),
|
|
49
|
+
reset: () => this.browserManager.reset(),
|
|
50
|
+
delete: () => this.browserManager.delete()
|
|
51
|
+
};
|
|
23
52
|
}
|
|
24
53
|
async open(input = {}) {
|
|
25
|
-
|
|
26
|
-
if (this.ownership === "attached") {
|
|
27
|
-
assertAttachedOpenInputAllowed(normalized);
|
|
28
|
-
}
|
|
29
|
-
return this.runtime.open(normalized);
|
|
54
|
+
return this.runtime.open(typeof input === "string" ? { url: input } : input);
|
|
30
55
|
}
|
|
31
56
|
async listPages(input = {}) {
|
|
32
57
|
return this.runtime.listPages(input);
|
|
@@ -275,39 +300,33 @@ var Opensteer = class _Opensteer {
|
|
|
275
300
|
return this.runtime.computerExecute(input);
|
|
276
301
|
}
|
|
277
302
|
async close() {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
async disconnect() {
|
|
281
|
-
if (this.ownership === "owned") {
|
|
282
|
-
await this.close();
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
if (isDisconnectableRuntime(this.runtime)) {
|
|
286
|
-
await this.runtime.disconnect();
|
|
303
|
+
if (this.browserManager === void 0 || this.browserManager.mode === "temporary") {
|
|
304
|
+
return this.runtime.close();
|
|
287
305
|
}
|
|
306
|
+
const output = await this.runtime.close();
|
|
307
|
+
await this.browserManager.close();
|
|
308
|
+
return output;
|
|
288
309
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
instance.runtime = runtime;
|
|
292
|
-
instance.ownership = ownership;
|
|
293
|
-
return instance;
|
|
310
|
+
async disconnect() {
|
|
311
|
+
await this.runtime.disconnect();
|
|
294
312
|
}
|
|
295
313
|
requireOwnedInstrumentationRuntime(method) {
|
|
296
|
-
if (this.runtime instanceof
|
|
314
|
+
if (this.runtime instanceof OpensteerRuntime) {
|
|
297
315
|
return this.runtime;
|
|
298
316
|
}
|
|
299
317
|
throw new Error(`${method}() is only available on owned local SDK sessions.`);
|
|
300
318
|
}
|
|
301
319
|
};
|
|
302
|
-
function
|
|
303
|
-
|
|
304
|
-
throw new Error(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
320
|
+
function createUnsupportedBrowserController() {
|
|
321
|
+
const fail = async () => {
|
|
322
|
+
throw new Error("browser.* helpers are only available in local mode.");
|
|
323
|
+
};
|
|
324
|
+
return {
|
|
325
|
+
status: fail,
|
|
326
|
+
clone: fail,
|
|
327
|
+
reset: fail,
|
|
328
|
+
delete: fail
|
|
329
|
+
};
|
|
311
330
|
}
|
|
312
331
|
function normalizeTargetOptions(input) {
|
|
313
332
|
const hasElement = input.element !== void 0;
|
|
@@ -350,121 +369,6 @@ function delay(ms) {
|
|
|
350
369
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
351
370
|
}
|
|
352
371
|
|
|
353
|
-
|
|
354
|
-
function generateMousePath(input) {
|
|
355
|
-
const dx = input.end.x - input.start.x;
|
|
356
|
-
const dy = input.end.y - input.start.y;
|
|
357
|
-
const distance = Math.hypot(dx, dy);
|
|
358
|
-
const durationMs = input.durationMs ?? Math.max(180, Math.round(distance * 2.2));
|
|
359
|
-
const fps = input.fps ?? 60;
|
|
360
|
-
const jitter = input.jitter ?? 3;
|
|
361
|
-
const curvature = input.curvature ?? 0.3;
|
|
362
|
-
const frameCount = Math.max(2, Math.round(durationMs / 1e3 * fps));
|
|
363
|
-
const normal = distance === 0 ? { x: 0, y: 1 } : { x: -dy / distance, y: dx / distance };
|
|
364
|
-
const controlDistance = distance * curvature;
|
|
365
|
-
const control1 = {
|
|
366
|
-
x: input.start.x + dx * 0.33 + normal.x * controlDistance,
|
|
367
|
-
y: input.start.y + dy * 0.33 + normal.y * controlDistance
|
|
368
|
-
};
|
|
369
|
-
const control2 = {
|
|
370
|
-
x: input.start.x + dx * 0.66 - normal.x * controlDistance * 0.6,
|
|
371
|
-
y: input.start.y + dy * 0.66 - normal.y * controlDistance * 0.6
|
|
372
|
-
};
|
|
373
|
-
const points = [];
|
|
374
|
-
for (let index = 0; index <= frameCount; index += 1) {
|
|
375
|
-
const linear = index / frameCount;
|
|
376
|
-
const eased = easeInOutCubic(linear);
|
|
377
|
-
const base = cubicBezier(input.start, control1, control2, input.end, eased);
|
|
378
|
-
const noise = index === 0 || index === frameCount ? 0 : gaussianRandom() * jitter;
|
|
379
|
-
points.push({
|
|
380
|
-
x: base.x + normal.x * noise,
|
|
381
|
-
y: base.y + normal.y * noise,
|
|
382
|
-
t: Math.round(linear * durationMs)
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
return {
|
|
386
|
-
points,
|
|
387
|
-
durationMs
|
|
388
|
-
};
|
|
389
|
-
}
|
|
390
|
-
function generateDragTrail(input) {
|
|
391
|
-
return generateMousePath({
|
|
392
|
-
start: input.start,
|
|
393
|
-
end: input.end,
|
|
394
|
-
...input.durationMs === void 0 ? {} : { durationMs: input.durationMs },
|
|
395
|
-
...input.fps === void 0 ? {} : { fps: input.fps },
|
|
396
|
-
jitter: 1.5,
|
|
397
|
-
curvature: 0.18
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
function cubicBezier(start, control1, control2, end, t) {
|
|
401
|
-
const inverse = 1 - t;
|
|
402
|
-
return {
|
|
403
|
-
x: inverse ** 3 * start.x + 3 * inverse ** 2 * t * control1.x + 3 * inverse * t ** 2 * control2.x + t ** 3 * end.x,
|
|
404
|
-
y: inverse ** 3 * start.y + 3 * inverse ** 2 * t * control1.y + 3 * inverse * t ** 2 * control2.y + t ** 3 * end.y
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
function easeInOutCubic(t) {
|
|
408
|
-
return t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2;
|
|
409
|
-
}
|
|
410
|
-
function gaussianRandom() {
|
|
411
|
-
let u = 0;
|
|
412
|
-
let v = 0;
|
|
413
|
-
while (u === 0) {
|
|
414
|
-
u = Math.random();
|
|
415
|
-
}
|
|
416
|
-
while (v === 0) {
|
|
417
|
-
v = Math.random();
|
|
418
|
-
}
|
|
419
|
-
return Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v);
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
// src/behavior/typing.ts
|
|
423
|
-
function generateTypingCadence(input) {
|
|
424
|
-
const baseDelayMs = input.baseDelayMs ?? 75;
|
|
425
|
-
const jitterMs = input.jitterMs ?? 35;
|
|
426
|
-
const hesitationProbability = input.hesitationProbability ?? 0.08;
|
|
427
|
-
return [...input.text].map((character, index) => {
|
|
428
|
-
const previous = input.text[index - 1];
|
|
429
|
-
const punctuationPause = /[.,!?;:]/.test(previous ?? "") ? 90 : 0;
|
|
430
|
-
const whitespacePause = /\s/.test(character) ? 30 : 0;
|
|
431
|
-
const hesitation = Math.random() < hesitationProbability ? 120 + Math.random() * 180 : 0;
|
|
432
|
-
const jitter = (Math.random() * 2 - 1) * jitterMs;
|
|
433
|
-
return {
|
|
434
|
-
character,
|
|
435
|
-
delayMs: Math.max(
|
|
436
|
-
10,
|
|
437
|
-
Math.round(baseDelayMs + punctuationPause + whitespacePause + hesitation + jitter)
|
|
438
|
-
)
|
|
439
|
-
};
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// src/behavior/scroll.ts
|
|
444
|
-
function generateScrollPattern(input) {
|
|
445
|
-
const durationMs = input.durationMs ?? Math.max(220, Math.round(Math.abs(input.distancePx) * 0.9));
|
|
446
|
-
const fps = input.fps ?? 60;
|
|
447
|
-
const frames = Math.max(2, Math.round(durationMs / 1e3 * fps));
|
|
448
|
-
let previousDistance = 0;
|
|
449
|
-
const points = [];
|
|
450
|
-
for (let index = 0; index <= frames; index += 1) {
|
|
451
|
-
const progress = easeInOutQuad(index / frames);
|
|
452
|
-
const currentDistance = progress * input.distancePx;
|
|
453
|
-
points.push({
|
|
454
|
-
deltaY: Math.round(currentDistance - previousDistance),
|
|
455
|
-
t: Math.round(index / frames * durationMs)
|
|
456
|
-
});
|
|
457
|
-
previousDistance = currentDistance;
|
|
458
|
-
}
|
|
459
|
-
return {
|
|
460
|
-
points,
|
|
461
|
-
durationMs
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
function easeInOutQuad(t) {
|
|
465
|
-
return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
export { Opensteer, generateDragTrail, generateMousePath, generateScrollPattern, generateTypingCadence };
|
|
372
|
+
export { Opensteer };
|
|
469
373
|
//# sourceMappingURL=index.js.map
|
|
470
374
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk/opensteer.ts","../src/behavior/mouse.ts","../src/behavior/typing.ts","../src/behavior/scroll.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n OpensteerArtifactReadInput,\n OpensteerArtifactReadOutput,\n CookieRecord,\n OpensteerAddInitScriptInput,\n OpensteerAddInitScriptOutput,\n OpensteerCaptchaSolveInput,\n OpensteerCaptchaSolveOutput,\n OpensteerCaptureScriptsInput,\n OpensteerCaptureScriptsOutput,\n OpensteerGetRecipeInput,\n OpensteerGetAuthRecipeInput,\n OpensteerActionResult,\n OpensteerComputerExecuteInput,\n OpensteerComputerExecuteOutput,\n OpensteerDomExtractOutput,\n OpensteerGetRequestPlanInput,\n OpensteerInferRequestPlanInput,\n OpensteerListRecipesInput,\n OpensteerListRecipesOutput,\n OpensteerListAuthRecipesInput,\n OpensteerListAuthRecipesOutput,\n OpensteerNetworkClearInput,\n OpensteerNetworkClearOutput,\n OpensteerNetworkDiffInput,\n OpensteerNetworkDiffOutput,\n OpensteerNetworkMinimizeInput,\n OpensteerNetworkMinimizeOutput,\n OpensteerNetworkQueryInput,\n OpensteerNetworkQueryOutput,\n OpensteerNetworkSaveInput,\n OpensteerNetworkSaveOutput,\n OpensteerInteractionCaptureInput,\n OpensteerInteractionCaptureOutput,\n OpensteerInteractionDiffInput,\n OpensteerInteractionDiffOutput,\n OpensteerInteractionGetInput,\n OpensteerInteractionGetOutput,\n OpensteerInteractionReplayInput,\n OpensteerInteractionReplayOutput,\n OpensteerPageActivateInput,\n OpensteerPageActivateOutput,\n OpensteerPageCloseInput,\n OpensteerPageCloseOutput,\n OpensteerPageEvaluateInput,\n OpensteerPageEvaluateOutput,\n OpensteerPageGotoInput,\n OpensteerPageGotoOutput,\n OpensteerPageListInput,\n OpensteerPageListOutput,\n OpensteerPageNewInput,\n OpensteerPageNewOutput,\n OpensteerPageSnapshotOutput,\n OpensteerListRequestPlansInput,\n OpensteerListRequestPlansOutput,\n OpensteerRawRequestInput,\n OpensteerRawRequestOutput,\n OpensteerRequestExecuteInput,\n OpensteerRequestExecuteOutput,\n OpensteerRunRecipeInput,\n OpensteerRunRecipeOutput,\n OpensteerRunAuthRecipeInput,\n OpensteerRunAuthRecipeOutput,\n OpensteerScriptBeautifyInput,\n OpensteerScriptBeautifyOutput,\n OpensteerScriptDeobfuscateInput,\n OpensteerScriptDeobfuscateOutput,\n OpensteerScriptSandboxInput,\n OpensteerScriptSandboxOutput,\n OpensteerReverseExportInput,\n OpensteerReverseExportOutput,\n OpensteerReverseDiscoverInput,\n OpensteerReverseDiscoverOutput,\n OpensteerReverseQueryInput,\n OpensteerReverseQueryOutput,\n OpensteerReversePackageCreateInput,\n OpensteerReversePackageCreateOutput,\n OpensteerReversePackageGetInput,\n OpensteerReversePackageGetOutput,\n OpensteerReversePackageListInput,\n OpensteerReversePackageListOutput,\n OpensteerReversePackagePatchInput,\n OpensteerReversePackagePatchOutput,\n OpensteerReversePackageRunInput,\n OpensteerReversePackageRunOutput,\n OpensteerReverseReportInput,\n OpensteerReverseReportOutput,\n OpensteerSessionCloseOutput,\n OpensteerSessionOpenInput,\n OpensteerSessionOpenOutput,\n OpensteerSnapshotMode,\n OpensteerTargetInput,\n OpensteerTransportProbeInput,\n OpensteerTransportProbeOutput,\n OpensteerWriteRecipeInput,\n OpensteerWriteAuthRecipeInput,\n OpensteerWriteRequestPlanInput,\n StorageSnapshot,\n} from \"@opensteer/protocol\";\n\nimport type { AuthRecipeRecord, RecipeRecord, RequestPlanRecord } from \"../registry.js\";\nimport { AttachedOpensteerSessionProxy } from \"../session-service/attached-session-proxy.js\";\nimport type {\n OpensteerDisconnectableRuntime,\n OpensteerSemanticRuntime,\n} from \"./semantic-runtime.js\";\nimport { OpensteerSessionRuntime, type OpensteerRuntimeOptions } from \"./runtime.js\";\nimport type {\n OpensteerInterceptScriptOptions,\n OpensteerRouteOptions,\n OpensteerRouteRegistration,\n} from \"./instrumentation.js\";\nimport {\n createOpensteerSemanticRuntime,\n type OpensteerCloudOptions,\n} from \"./runtime-resolution.js\";\n\nexport interface OpensteerTargetOptions {\n readonly element?: number;\n readonly selector?: string;\n readonly description?: string;\n readonly networkTag?: string;\n}\n\nexport interface OpensteerInputOptions extends OpensteerTargetOptions {\n readonly text: string;\n readonly pressEnter?: boolean;\n}\n\nexport interface OpensteerScrollOptions extends OpensteerTargetOptions {\n readonly direction: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount: number;\n}\n\nexport interface OpensteerExtractOptions {\n readonly description: string;\n readonly schema?: Record<string, unknown>;\n}\n\nexport interface OpensteerWaitForNetworkOptions extends OpensteerNetworkQueryInput {\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport interface OpensteerWaitForPageOptions {\n readonly openerPageRef?: string;\n readonly urlIncludes?: string;\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport type OpensteerGotoOptions = OpensteerPageGotoInput;\n\nexport type OpensteerComputerExecuteOptions = OpensteerComputerExecuteInput;\nexport type OpensteerComputerExecuteResult = OpensteerComputerExecuteOutput;\nexport type OpensteerNetworkQueryOptions = OpensteerNetworkQueryInput;\nexport type OpensteerNetworkQueryResult = OpensteerNetworkQueryOutput;\nexport type OpensteerNetworkSaveOptions = OpensteerNetworkSaveInput;\nexport type OpensteerNetworkSaveResult = OpensteerNetworkSaveOutput;\nexport type OpensteerNetworkMinimizeOptions = OpensteerNetworkMinimizeInput;\nexport type OpensteerNetworkMinimizeResult = OpensteerNetworkMinimizeOutput;\nexport type OpensteerNetworkDiffOptions = OpensteerNetworkDiffInput;\nexport type OpensteerNetworkDiffResult = OpensteerNetworkDiffOutput;\nexport type OpensteerNetworkProbeOptions = OpensteerTransportProbeInput;\nexport type OpensteerNetworkProbeResult = OpensteerTransportProbeOutput;\nexport type OpensteerReverseDiscoverOptions = OpensteerReverseDiscoverInput;\nexport type OpensteerReverseDiscoverResult = OpensteerReverseDiscoverOutput;\nexport type OpensteerReverseQueryOptions = OpensteerReverseQueryInput;\nexport type OpensteerReverseQueryResult = OpensteerReverseQueryOutput;\nexport type OpensteerReversePackageCreateOptions = OpensteerReversePackageCreateInput;\nexport type OpensteerReversePackageCreateResult = OpensteerReversePackageCreateOutput;\nexport type OpensteerReversePackageRunOptions = OpensteerReversePackageRunInput;\nexport type OpensteerReversePackageRunResult = OpensteerReversePackageRunOutput;\nexport type OpensteerReverseExportOptions = OpensteerReverseExportInput;\nexport type OpensteerReverseExportResult = OpensteerReverseExportOutput;\nexport type OpensteerReverseReportOptions = OpensteerReverseReportInput;\nexport type OpensteerReverseReportResult = OpensteerReverseReportOutput;\nexport type OpensteerReversePackageGetOptions = OpensteerReversePackageGetInput;\nexport type OpensteerReversePackageGetResult = OpensteerReversePackageGetOutput;\nexport type OpensteerReversePackageListOptions = OpensteerReversePackageListInput;\nexport type OpensteerReversePackageListResult = OpensteerReversePackageListOutput;\nexport type OpensteerReversePackagePatchOptions = OpensteerReversePackagePatchInput;\nexport type OpensteerReversePackagePatchResult = OpensteerReversePackagePatchOutput;\nexport type OpensteerInteractionCaptureOptions = OpensteerInteractionCaptureInput;\nexport type OpensteerInteractionCaptureResult = OpensteerInteractionCaptureOutput;\nexport type OpensteerInteractionGetOptions = OpensteerInteractionGetInput;\nexport type OpensteerInteractionGetResult = OpensteerInteractionGetOutput;\nexport type OpensteerInteractionDiffOptions = OpensteerInteractionDiffInput;\nexport type OpensteerInteractionDiffResult = OpensteerInteractionDiffOutput;\nexport type OpensteerInteractionReplayOptions = OpensteerInteractionReplayInput;\nexport type OpensteerInteractionReplayResult = OpensteerInteractionReplayOutput;\nexport type OpensteerNetworkClearOptions = OpensteerNetworkClearInput;\nexport type OpensteerNetworkClearResult = OpensteerNetworkClearOutput;\nexport type OpensteerRawRequestOptions = OpensteerRawRequestInput;\nexport type OpensteerRawRequestResult = OpensteerRawRequestOutput;\nexport type OpensteerRequestOptions = Omit<OpensteerRequestExecuteInput, \"key\">;\nexport type OpensteerRequestResult = OpensteerRequestExecuteOutput;\nexport type OpensteerCaptureScriptsOptions = OpensteerCaptureScriptsInput;\nexport type OpensteerCaptureScriptsResult = OpensteerCaptureScriptsOutput;\nexport type OpensteerScriptBeautifyOptions = OpensteerScriptBeautifyInput;\nexport type OpensteerScriptBeautifyResult = OpensteerScriptBeautifyOutput;\nexport type OpensteerScriptDeobfuscateOptions = OpensteerScriptDeobfuscateInput;\nexport type OpensteerScriptDeobfuscateResult = OpensteerScriptDeobfuscateOutput;\nexport type OpensteerScriptSandboxOptions = OpensteerScriptSandboxInput;\nexport type OpensteerScriptSandboxResult = OpensteerScriptSandboxOutput;\nexport type OpensteerArtifactReadOptions = OpensteerArtifactReadInput;\nexport type OpensteerArtifactReadResult = OpensteerArtifactReadOutput;\nexport type OpensteerCaptchaSolveOptions = OpensteerCaptchaSolveInput;\nexport type OpensteerCaptchaSolveResult = OpensteerCaptchaSolveOutput;\nexport type OpensteerAddInitScriptOptions = OpensteerAddInitScriptInput;\n\nexport interface OpensteerOptions extends OpensteerRuntimeOptions {\n readonly cloud?: boolean | OpensteerCloudOptions;\n}\n\nexport interface OpensteerAttachOptions {\n readonly name?: string;\n readonly rootDir?: string;\n}\n\nexport class Opensteer {\n private runtime!: OpensteerSemanticRuntime;\n private ownership!: \"owned\" | \"attached\";\n\n constructor(options: OpensteerOptions = {}) {\n this.runtime = createOpensteerSemanticRuntime({\n runtimeOptions: options,\n ...(options.cloud === undefined ? {} : { cloud: options.cloud }),\n });\n this.ownership = \"owned\";\n }\n\n static attach(options: OpensteerAttachOptions = {}): Opensteer {\n return Opensteer.fromRuntime(\n new AttachedOpensteerSessionProxy({\n ...(options.name === undefined ? {} : { name: options.name }),\n ...(options.rootDir === undefined ? {} : { rootDir: options.rootDir }),\n }),\n \"attached\",\n );\n }\n\n async open(input: string | OpensteerSessionOpenInput = {}): Promise<OpensteerSessionOpenOutput> {\n const normalized = typeof input === \"string\" ? { url: input } : input;\n if (this.ownership === \"attached\") {\n assertAttachedOpenInputAllowed(normalized);\n }\n\n return this.runtime.open(normalized);\n }\n\n async listPages(input: OpensteerPageListInput = {}): Promise<OpensteerPageListOutput> {\n return this.runtime.listPages(input);\n }\n\n async newPage(input: OpensteerPageNewInput = {}): Promise<OpensteerPageNewOutput> {\n return this.runtime.newPage(input);\n }\n\n async activatePage(input: OpensteerPageActivateInput): Promise<OpensteerPageActivateOutput> {\n return this.runtime.activatePage(input);\n }\n\n async closePage(input: OpensteerPageCloseInput = {}): Promise<OpensteerPageCloseOutput> {\n return this.runtime.closePage(input);\n }\n\n async goto(input: string | OpensteerGotoOptions): Promise<OpensteerPageGotoOutput> {\n return this.runtime.goto(typeof input === \"string\" ? { url: input } : input);\n }\n\n async evaluate(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n const result = await this.runtime.evaluate(normalized);\n return result.value;\n }\n\n async evaluateJson(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n return this.evaluate(input);\n }\n\n async addInitScript(\n input: string | OpensteerAddInitScriptInput,\n ): Promise<OpensteerAddInitScriptOutput> {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n return this.runtime.addInitScript(normalized);\n }\n\n async snapshot(\n input: OpensteerSnapshotMode | { readonly mode?: OpensteerSnapshotMode } = {},\n ): Promise<OpensteerPageSnapshotOutput> {\n const mode = typeof input === \"string\" ? input : input.mode;\n return this.runtime.snapshot(mode === undefined ? {} : { mode });\n }\n\n async click(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.click(normalized);\n }\n\n async hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.hover(normalized);\n }\n\n async input(input: OpensteerInputOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.input({\n ...normalized,\n text: input.text,\n ...(input.pressEnter === undefined ? {} : { pressEnter: input.pressEnter }),\n });\n }\n\n async scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.scroll({\n ...normalized,\n direction: input.direction,\n amount: input.amount,\n });\n }\n\n async extract(input: OpensteerExtractOptions): Promise<OpensteerDomExtractOutput[\"data\"]> {\n const result = await this.runtime.extract(input);\n return result.data;\n }\n\n async queryNetwork(\n input: OpensteerNetworkQueryOptions = {},\n ): Promise<OpensteerNetworkQueryResult> {\n return this.runtime.queryNetwork(input);\n }\n\n async waitForNetwork(\n input: OpensteerWaitForNetworkOptions,\n ): Promise<OpensteerNetworkQueryResult[\"records\"][number]> {\n const { timeoutMs, pollIntervalMs, ...query } = input;\n const timeoutAt = Date.now() + (timeoutMs ?? 30_000);\n const pollInterval = pollIntervalMs ?? 100;\n\n while (true) {\n const { records } = await this.runtime.queryNetwork({\n ...query,\n limit: 1,\n });\n if (records[0] !== undefined) {\n return records[0];\n }\n if (Date.now() >= timeoutAt) {\n throw new Error(\"waitForNetwork timed out\");\n }\n await delay(pollInterval);\n }\n }\n\n async waitForResponse(\n input: OpensteerWaitForNetworkOptions,\n ): Promise<OpensteerNetworkQueryResult[\"records\"][number]> {\n return this.waitForNetwork(input);\n }\n\n async waitForPage(\n input: OpensteerWaitForPageOptions = {},\n ): Promise<OpensteerPageListOutput[\"pages\"][number]> {\n const baseline = new Set((await this.runtime.listPages()).pages.map((page) => page.pageRef));\n const timeoutAt = Date.now() + (input.timeoutMs ?? 30_000);\n const pollIntervalMs = input.pollIntervalMs ?? 100;\n\n while (true) {\n const { pages } = await this.runtime.listPages();\n const match = pages.find((page) => {\n if (baseline.has(page.pageRef)) {\n return false;\n }\n if (input.openerPageRef !== undefined && page.openerPageRef !== input.openerPageRef) {\n return false;\n }\n if (input.urlIncludes !== undefined && !page.url.includes(input.urlIncludes)) {\n return false;\n }\n return true;\n });\n if (match !== undefined) {\n return match;\n }\n if (Date.now() >= timeoutAt) {\n throw new Error(\"waitForPage timed out\");\n }\n await delay(pollIntervalMs);\n }\n }\n\n async saveNetwork(input: OpensteerNetworkSaveOptions): Promise<OpensteerNetworkSaveResult> {\n return this.runtime.saveNetwork(input);\n }\n\n async minimizeNetwork(\n input: OpensteerNetworkMinimizeOptions,\n ): Promise<OpensteerNetworkMinimizeResult> {\n return this.runtime.minimizeNetwork(input);\n }\n\n async diffNetwork(input: OpensteerNetworkDiffOptions): Promise<OpensteerNetworkDiffResult> {\n return this.runtime.diffNetwork(input);\n }\n\n async probeNetwork(input: OpensteerNetworkProbeOptions): Promise<OpensteerNetworkProbeResult> {\n return this.runtime.probeNetwork(input);\n }\n\n async reverseDiscover(\n input: OpensteerReverseDiscoverOptions = {},\n ): Promise<OpensteerReverseDiscoverResult> {\n return this.runtime.discoverReverse(input);\n }\n\n async reverseQuery(input: OpensteerReverseQueryOptions): Promise<OpensteerReverseQueryResult> {\n return this.runtime.queryReverse(input);\n }\n\n async createReversePackage(\n input: OpensteerReversePackageCreateOptions,\n ): Promise<OpensteerReversePackageCreateResult> {\n return this.runtime.createReversePackage(input);\n }\n\n async runReversePackage(\n input: OpensteerReversePackageRunOptions,\n ): Promise<OpensteerReversePackageRunResult> {\n return this.runtime.runReversePackage(input);\n }\n\n async reverseExport(input: OpensteerReverseExportOptions): Promise<OpensteerReverseExportResult> {\n return this.runtime.exportReverse(input);\n }\n\n async reverseReport(input: OpensteerReverseReportOptions): Promise<OpensteerReverseReportResult> {\n return this.runtime.getReverseReport(input);\n }\n\n async getReversePackage(\n input: OpensteerReversePackageGetOptions,\n ): Promise<OpensteerReversePackageGetResult> {\n return this.runtime.getReversePackage(input);\n }\n\n async listReversePackages(\n input: OpensteerReversePackageListOptions = {},\n ): Promise<OpensteerReversePackageListResult> {\n return this.runtime.listReversePackages(input);\n }\n\n async patchReversePackage(\n input: OpensteerReversePackagePatchOptions,\n ): Promise<OpensteerReversePackagePatchResult> {\n return this.runtime.patchReversePackage(input);\n }\n\n async interactionCapture(\n input: OpensteerInteractionCaptureOptions,\n ): Promise<OpensteerInteractionCaptureResult> {\n return this.runtime.captureInteraction(input);\n }\n\n async getInteraction(\n input: OpensteerInteractionGetOptions,\n ): Promise<OpensteerInteractionGetResult> {\n return this.runtime.getInteraction(input);\n }\n\n async interactionDiff(\n input: OpensteerInteractionDiffOptions,\n ): Promise<OpensteerInteractionDiffResult> {\n return this.runtime.diffInteraction(input);\n }\n\n async interactionReplay(\n input: OpensteerInteractionReplayOptions,\n ): Promise<OpensteerInteractionReplayResult> {\n return this.runtime.replayInteraction(input);\n }\n\n async clearNetwork(\n input: OpensteerNetworkClearOptions = {},\n ): Promise<OpensteerNetworkClearResult> {\n return this.runtime.clearNetwork(input);\n }\n\n async captureScripts(\n input: OpensteerCaptureScriptsOptions = {},\n ): Promise<OpensteerCaptureScriptsResult> {\n return this.runtime.captureScripts(input);\n }\n\n async readArtifact(input: OpensteerArtifactReadOptions): Promise<OpensteerArtifactReadResult> {\n return this.runtime.readArtifact(input);\n }\n\n async beautifyScript(\n input: OpensteerScriptBeautifyOptions,\n ): Promise<OpensteerScriptBeautifyResult> {\n return this.runtime.beautifyScript(input);\n }\n\n async deobfuscateScript(\n input: OpensteerScriptDeobfuscateOptions,\n ): Promise<OpensteerScriptDeobfuscateResult> {\n return this.runtime.deobfuscateScript(input);\n }\n\n async sandboxScript(input: OpensteerScriptSandboxOptions): Promise<OpensteerScriptSandboxResult> {\n return this.runtime.sandboxScript(input);\n }\n\n async solveCaptcha(input: OpensteerCaptchaSolveOptions): Promise<OpensteerCaptchaSolveResult> {\n return this.runtime.solveCaptcha(input);\n }\n\n async getCookies(\n input: { readonly urls?: readonly string[] } = {},\n ): Promise<readonly CookieRecord[]> {\n return this.runtime.getCookies(input);\n }\n\n async getStorageSnapshot(\n input: {\n readonly includeSessionStorage?: boolean;\n readonly includeIndexedDb?: boolean;\n } = {},\n ): Promise<StorageSnapshot> {\n return this.runtime.getStorageSnapshot(input);\n }\n\n async writeRequestPlan(input: OpensteerWriteRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.writeRequestPlan(input);\n }\n\n async inferRequestPlan(input: OpensteerInferRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.inferRequestPlan(input);\n }\n\n async getRequestPlan(input: OpensteerGetRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.getRequestPlan(input);\n }\n\n async listRequestPlans(\n input: OpensteerListRequestPlansInput = {},\n ): Promise<OpensteerListRequestPlansOutput> {\n return this.runtime.listRequestPlans(input);\n }\n\n async writeAuthRecipe(input: OpensteerWriteAuthRecipeInput): Promise<AuthRecipeRecord> {\n return this.runtime.writeAuthRecipe(input);\n }\n\n async writeRecipe(input: OpensteerWriteRecipeInput): Promise<RecipeRecord> {\n return this.runtime.writeRecipe(input);\n }\n\n async getAuthRecipe(input: OpensteerGetAuthRecipeInput): Promise<AuthRecipeRecord> {\n return this.runtime.getAuthRecipe(input);\n }\n\n async getRecipe(input: OpensteerGetRecipeInput): Promise<RecipeRecord> {\n return this.runtime.getRecipe(input);\n }\n\n async listAuthRecipes(\n input: OpensteerListAuthRecipesInput = {},\n ): Promise<OpensteerListAuthRecipesOutput> {\n return this.runtime.listAuthRecipes(input);\n }\n\n async listRecipes(input: OpensteerListRecipesInput = {}): Promise<OpensteerListRecipesOutput> {\n return this.runtime.listRecipes(input);\n }\n\n async runAuthRecipe(input: OpensteerRunAuthRecipeInput): Promise<OpensteerRunAuthRecipeOutput> {\n return this.runtime.runAuthRecipe(input);\n }\n\n async runRecipe(input: OpensteerRunRecipeInput): Promise<OpensteerRunRecipeOutput> {\n return this.runtime.runRecipe(input);\n }\n\n async request(key: string, input: OpensteerRequestOptions = {}): Promise<OpensteerRequestResult> {\n return this.runtime.request({\n key,\n ...input,\n });\n }\n\n async rawRequest(input: OpensteerRawRequestOptions): Promise<OpensteerRawRequestResult> {\n return this.runtime.rawRequest(input);\n }\n\n async route(input: OpensteerRouteOptions): Promise<OpensteerRouteRegistration> {\n return this.requireOwnedInstrumentationRuntime(\"route\").route(input);\n }\n\n async interceptScript(\n input: OpensteerInterceptScriptOptions,\n ): Promise<OpensteerRouteRegistration> {\n return this.requireOwnedInstrumentationRuntime(\"interceptScript\").interceptScript(input);\n }\n\n async computerExecute(\n input: OpensteerComputerExecuteOptions,\n ): Promise<OpensteerComputerExecuteResult> {\n return this.runtime.computerExecute(input);\n }\n\n async close(): Promise<OpensteerSessionCloseOutput> {\n return this.runtime.close();\n }\n\n async disconnect(): Promise<void> {\n if (this.ownership === \"owned\") {\n await this.close();\n return;\n }\n\n if (isDisconnectableRuntime(this.runtime)) {\n await this.runtime.disconnect();\n }\n }\n\n private static fromRuntime(\n runtime: OpensteerSemanticRuntime,\n ownership: \"owned\" | \"attached\",\n ): Opensteer {\n const instance = Object.create(Opensteer.prototype) as Opensteer;\n instance.runtime = runtime;\n instance.ownership = ownership;\n return instance;\n }\n\n private requireOwnedInstrumentationRuntime(\n method: \"route\" | \"interceptScript\",\n ): OpensteerSessionRuntime {\n if (this.runtime instanceof OpensteerSessionRuntime) {\n return this.runtime;\n }\n throw new Error(`${method}() is only available on owned local SDK sessions.`);\n }\n}\n\nfunction assertAttachedOpenInputAllowed(input: OpensteerSessionOpenInput): void {\n if (input.browser !== undefined || input.context !== undefined || input.name !== undefined) {\n throw new Error(\n \"Opensteer.attach(...) reuses an existing session. open() may only receive url when attached.\",\n );\n }\n}\n\nfunction isDisconnectableRuntime(\n runtime: OpensteerSemanticRuntime,\n): runtime is OpensteerDisconnectableRuntime {\n return \"disconnect\" in runtime;\n}\n\nfunction normalizeTargetOptions(input: OpensteerTargetOptions): {\n readonly target: OpensteerTargetInput;\n readonly persistAsDescription?: string;\n readonly networkTag?: string;\n} {\n const hasElement = input.element !== undefined;\n const hasSelector = input.selector !== undefined;\n if (hasElement && hasSelector) {\n throw new Error(\"Specify exactly one of element, selector, or description.\");\n }\n\n if (hasElement) {\n return {\n target: {\n kind: \"element\",\n element: input.element!,\n },\n ...(input.description === undefined ? {} : { persistAsDescription: input.description }),\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n }\n\n if (hasSelector) {\n return {\n target: {\n kind: \"selector\",\n selector: input.selector!,\n },\n ...(input.description === undefined ? {} : { persistAsDescription: input.description }),\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n }\n\n if (input.description === undefined) {\n throw new Error(\"Specify exactly one of element, selector, or description.\");\n }\n\n return {\n target: {\n kind: \"description\",\n description: input.description,\n },\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","export interface MousePathPoint {\n readonly x: number;\n readonly y: number;\n readonly t: number;\n}\n\nexport interface MousePath {\n readonly points: readonly MousePathPoint[];\n readonly durationMs: number;\n}\n\nexport function generateMousePath(input: {\n readonly start: { readonly x: number; readonly y: number };\n readonly end: { readonly x: number; readonly y: number };\n readonly durationMs?: number;\n readonly fps?: number;\n readonly jitter?: number;\n readonly curvature?: number;\n}): MousePath {\n const dx = input.end.x - input.start.x;\n const dy = input.end.y - input.start.y;\n const distance = Math.hypot(dx, dy);\n const durationMs = input.durationMs ?? Math.max(180, Math.round(distance * 2.2));\n const fps = input.fps ?? 60;\n const jitter = input.jitter ?? 3;\n const curvature = input.curvature ?? 0.3;\n const frameCount = Math.max(2, Math.round((durationMs / 1000) * fps));\n const normal = distance === 0 ? { x: 0, y: 1 } : { x: -dy / distance, y: dx / distance };\n const controlDistance = distance * curvature;\n const control1 = {\n x: input.start.x + dx * 0.33 + normal.x * controlDistance,\n y: input.start.y + dy * 0.33 + normal.y * controlDistance,\n };\n const control2 = {\n x: input.start.x + dx * 0.66 - normal.x * controlDistance * 0.6,\n y: input.start.y + dy * 0.66 - normal.y * controlDistance * 0.6,\n };\n\n const points: MousePathPoint[] = [];\n for (let index = 0; index <= frameCount; index += 1) {\n const linear = index / frameCount;\n const eased = easeInOutCubic(linear);\n const base = cubicBezier(input.start, control1, control2, input.end, eased);\n const noise = index === 0 || index === frameCount ? 0 : gaussianRandom() * jitter;\n points.push({\n x: base.x + normal.x * noise,\n y: base.y + normal.y * noise,\n t: Math.round(linear * durationMs),\n });\n }\n return {\n points,\n durationMs,\n };\n}\n\nexport function generateDragTrail(input: {\n readonly start: { readonly x: number; readonly y: number };\n readonly end: { readonly x: number; readonly y: number };\n readonly durationMs?: number;\n readonly fps?: number;\n}): MousePath {\n return generateMousePath({\n start: input.start,\n end: input.end,\n ...(input.durationMs === undefined ? {} : { durationMs: input.durationMs }),\n ...(input.fps === undefined ? {} : { fps: input.fps }),\n jitter: 1.5,\n curvature: 0.18,\n });\n}\n\nfunction cubicBezier(\n start: { readonly x: number; readonly y: number },\n control1: { readonly x: number; readonly y: number },\n control2: { readonly x: number; readonly y: number },\n end: { readonly x: number; readonly y: number },\n t: number,\n) {\n const inverse = 1 - t;\n return {\n x:\n inverse ** 3 * start.x +\n 3 * inverse ** 2 * t * control1.x +\n 3 * inverse * t ** 2 * control2.x +\n t ** 3 * end.x,\n y:\n inverse ** 3 * start.y +\n 3 * inverse ** 2 * t * control1.y +\n 3 * inverse * t ** 2 * control2.y +\n t ** 3 * end.y,\n };\n}\n\nfunction easeInOutCubic(t: number): number {\n return t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2;\n}\n\nfunction gaussianRandom(): number {\n let u = 0;\n let v = 0;\n while (u === 0) {\n u = Math.random();\n }\n while (v === 0) {\n v = Math.random();\n }\n return Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v);\n}\n","export interface TypingCadenceSample {\n readonly character: string;\n readonly delayMs: number;\n}\n\nexport function generateTypingCadence(input: {\n readonly text: string;\n readonly baseDelayMs?: number;\n readonly jitterMs?: number;\n readonly hesitationProbability?: number;\n}): readonly TypingCadenceSample[] {\n const baseDelayMs = input.baseDelayMs ?? 75;\n const jitterMs = input.jitterMs ?? 35;\n const hesitationProbability = input.hesitationProbability ?? 0.08;\n\n return [...input.text].map((character, index) => {\n const previous = input.text[index - 1];\n const punctuationPause = /[.,!?;:]/.test(previous ?? \"\") ? 90 : 0;\n const whitespacePause = /\\s/.test(character) ? 30 : 0;\n const hesitation = Math.random() < hesitationProbability ? 120 + Math.random() * 180 : 0;\n const jitter = (Math.random() * 2 - 1) * jitterMs;\n return {\n character,\n delayMs: Math.max(\n 10,\n Math.round(baseDelayMs + punctuationPause + whitespacePause + hesitation + jitter),\n ),\n };\n });\n}\n","export interface ScrollPatternPoint {\n readonly deltaY: number;\n readonly t: number;\n}\n\nexport interface ScrollPattern {\n readonly points: readonly ScrollPatternPoint[];\n readonly durationMs: number;\n}\n\nexport function generateScrollPattern(input: {\n readonly distancePx: number;\n readonly durationMs?: number;\n readonly fps?: number;\n}): ScrollPattern {\n const durationMs =\n input.durationMs ?? Math.max(220, Math.round(Math.abs(input.distancePx) * 0.9));\n const fps = input.fps ?? 60;\n const frames = Math.max(2, Math.round((durationMs / 1000) * fps));\n let previousDistance = 0;\n const points: ScrollPatternPoint[] = [];\n for (let index = 0; index <= frames; index += 1) {\n const progress = easeInOutQuad(index / frames);\n const currentDistance = progress * input.distancePx;\n points.push({\n deltaY: Math.round(currentDistance - previousDistance),\n t: Math.round((index / frames) * durationMs),\n });\n previousDistance = currentDistance;\n }\n return {\n points,\n durationMs,\n };\n}\n\nfunction easeInOutQuad(t: number): number {\n return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/sdk/opensteer.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n OpensteerArtifactReadInput,\n OpensteerArtifactReadOutput,\n CookieRecord,\n OpensteerAddInitScriptInput,\n OpensteerAddInitScriptOutput,\n OpensteerCaptchaSolveInput,\n OpensteerCaptchaSolveOutput,\n OpensteerCaptureScriptsInput,\n OpensteerCaptureScriptsOutput,\n OpensteerGetRecipeInput,\n OpensteerGetAuthRecipeInput,\n OpensteerActionResult,\n OpensteerComputerExecuteInput,\n OpensteerComputerExecuteOutput,\n OpensteerDomExtractOutput,\n OpensteerGetRequestPlanInput,\n OpensteerInferRequestPlanInput,\n OpensteerListRecipesInput,\n OpensteerListRecipesOutput,\n OpensteerListAuthRecipesInput,\n OpensteerListAuthRecipesOutput,\n OpensteerNetworkClearInput,\n OpensteerNetworkClearOutput,\n OpensteerNetworkDiffInput,\n OpensteerNetworkDiffOutput,\n OpensteerNetworkMinimizeInput,\n OpensteerNetworkMinimizeOutput,\n OpensteerNetworkQueryInput,\n OpensteerNetworkQueryOutput,\n OpensteerNetworkSaveInput,\n OpensteerNetworkSaveOutput,\n OpensteerInteractionCaptureInput,\n OpensteerInteractionCaptureOutput,\n OpensteerInteractionDiffInput,\n OpensteerInteractionDiffOutput,\n OpensteerInteractionGetInput,\n OpensteerInteractionGetOutput,\n OpensteerInteractionReplayInput,\n OpensteerInteractionReplayOutput,\n OpensteerPageActivateInput,\n OpensteerPageActivateOutput,\n OpensteerPageCloseInput,\n OpensteerPageCloseOutput,\n OpensteerPageEvaluateInput,\n OpensteerPageEvaluateOutput,\n OpensteerPageGotoInput,\n OpensteerPageGotoOutput,\n OpensteerPageListInput,\n OpensteerPageListOutput,\n OpensteerPageNewInput,\n OpensteerPageNewOutput,\n OpensteerPageSnapshotOutput,\n OpensteerListRequestPlansInput,\n OpensteerListRequestPlansOutput,\n OpensteerRawRequestInput,\n OpensteerRawRequestOutput,\n OpensteerRequestExecuteInput,\n OpensteerRequestExecuteOutput,\n OpensteerRunRecipeInput,\n OpensteerRunRecipeOutput,\n OpensteerRunAuthRecipeInput,\n OpensteerRunAuthRecipeOutput,\n OpensteerScriptBeautifyInput,\n OpensteerScriptBeautifyOutput,\n OpensteerScriptDeobfuscateInput,\n OpensteerScriptDeobfuscateOutput,\n OpensteerScriptSandboxInput,\n OpensteerScriptSandboxOutput,\n OpensteerReverseExportInput,\n OpensteerReverseExportOutput,\n OpensteerReverseDiscoverInput,\n OpensteerReverseDiscoverOutput,\n OpensteerReverseQueryInput,\n OpensteerReverseQueryOutput,\n OpensteerReversePackageCreateInput,\n OpensteerReversePackageCreateOutput,\n OpensteerReversePackageGetInput,\n OpensteerReversePackageGetOutput,\n OpensteerReversePackageListInput,\n OpensteerReversePackageListOutput,\n OpensteerReversePackagePatchInput,\n OpensteerReversePackagePatchOutput,\n OpensteerReversePackageRunInput,\n OpensteerReversePackageRunOutput,\n OpensteerReverseReportInput,\n OpensteerReverseReportOutput,\n OpensteerSessionCloseOutput,\n OpensteerOpenInput,\n OpensteerOpenOutput,\n OpensteerSnapshotMode,\n OpensteerTargetInput,\n OpensteerTransportProbeInput,\n OpensteerTransportProbeOutput,\n OpensteerWriteRecipeInput,\n OpensteerWriteAuthRecipeInput,\n OpensteerWriteRequestPlanInput,\n StorageSnapshot,\n} from \"@opensteer/protocol\";\n\nimport type { AuthRecipeRecord, RecipeRecord, RequestPlanRecord } from \"../registry.js\";\nimport {\n OpensteerBrowserManager,\n type OpensteerBrowserStatus,\n type WorkspaceBrowserManifest,\n} from \"../browser-manager.js\";\nimport { OpensteerRuntime, type OpensteerRuntimeOptions } from \"./runtime.js\";\nimport {\n createOpensteerSemanticRuntime,\n resolveOpensteerRuntimeConfig,\n type OpensteerCloudOptions,\n} from \"./runtime-resolution.js\";\nimport type {\n OpensteerInterceptScriptOptions,\n OpensteerRouteOptions,\n OpensteerRouteRegistration,\n} from \"./instrumentation.js\";\nimport type { OpensteerDisconnectableRuntime } from \"./semantic-runtime.js\";\n\nexport interface OpensteerTargetOptions {\n readonly element?: number;\n readonly selector?: string;\n readonly description?: string;\n readonly networkTag?: string;\n}\n\nexport interface OpensteerInputOptions extends OpensteerTargetOptions {\n readonly text: string;\n readonly pressEnter?: boolean;\n}\n\nexport interface OpensteerScrollOptions extends OpensteerTargetOptions {\n readonly direction: \"up\" | \"down\" | \"left\" | \"right\";\n readonly amount: number;\n}\n\nexport interface OpensteerExtractOptions {\n readonly description: string;\n readonly schema?: Record<string, unknown>;\n}\n\nexport interface OpensteerWaitForNetworkOptions extends OpensteerNetworkQueryInput {\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport interface OpensteerWaitForPageOptions {\n readonly openerPageRef?: string;\n readonly urlIncludes?: string;\n readonly timeoutMs?: number;\n readonly pollIntervalMs?: number;\n}\n\nexport type OpensteerGotoOptions = OpensteerPageGotoInput;\n\nexport type OpensteerComputerExecuteOptions = OpensteerComputerExecuteInput;\nexport type OpensteerComputerExecuteResult = OpensteerComputerExecuteOutput;\nexport type OpensteerNetworkQueryOptions = OpensteerNetworkQueryInput;\nexport type OpensteerNetworkQueryResult = OpensteerNetworkQueryOutput;\nexport type OpensteerNetworkSaveOptions = OpensteerNetworkSaveInput;\nexport type OpensteerNetworkSaveResult = OpensteerNetworkSaveOutput;\nexport type OpensteerNetworkMinimizeOptions = OpensteerNetworkMinimizeInput;\nexport type OpensteerNetworkMinimizeResult = OpensteerNetworkMinimizeOutput;\nexport type OpensteerNetworkDiffOptions = OpensteerNetworkDiffInput;\nexport type OpensteerNetworkDiffResult = OpensteerNetworkDiffOutput;\nexport type OpensteerNetworkProbeOptions = OpensteerTransportProbeInput;\nexport type OpensteerNetworkProbeResult = OpensteerTransportProbeOutput;\nexport type OpensteerReverseDiscoverOptions = OpensteerReverseDiscoverInput;\nexport type OpensteerReverseDiscoverResult = OpensteerReverseDiscoverOutput;\nexport type OpensteerReverseQueryOptions = OpensteerReverseQueryInput;\nexport type OpensteerReverseQueryResult = OpensteerReverseQueryOutput;\nexport type OpensteerReversePackageCreateOptions = OpensteerReversePackageCreateInput;\nexport type OpensteerReversePackageCreateResult = OpensteerReversePackageCreateOutput;\nexport type OpensteerReversePackageRunOptions = OpensteerReversePackageRunInput;\nexport type OpensteerReversePackageRunResult = OpensteerReversePackageRunOutput;\nexport type OpensteerReverseExportOptions = OpensteerReverseExportInput;\nexport type OpensteerReverseExportResult = OpensteerReverseExportOutput;\nexport type OpensteerReverseReportOptions = OpensteerReverseReportInput;\nexport type OpensteerReverseReportResult = OpensteerReverseReportOutput;\nexport type OpensteerReversePackageGetOptions = OpensteerReversePackageGetInput;\nexport type OpensteerReversePackageGetResult = OpensteerReversePackageGetOutput;\nexport type OpensteerReversePackageListOptions = OpensteerReversePackageListInput;\nexport type OpensteerReversePackageListResult = OpensteerReversePackageListOutput;\nexport type OpensteerReversePackagePatchOptions = OpensteerReversePackagePatchInput;\nexport type OpensteerReversePackagePatchResult = OpensteerReversePackagePatchOutput;\nexport type OpensteerInteractionCaptureOptions = OpensteerInteractionCaptureInput;\nexport type OpensteerInteractionCaptureResult = OpensteerInteractionCaptureOutput;\nexport type OpensteerInteractionGetOptions = OpensteerInteractionGetInput;\nexport type OpensteerInteractionGetResult = OpensteerInteractionGetOutput;\nexport type OpensteerInteractionDiffOptions = OpensteerInteractionDiffInput;\nexport type OpensteerInteractionDiffResult = OpensteerInteractionDiffOutput;\nexport type OpensteerInteractionReplayOptions = OpensteerInteractionReplayInput;\nexport type OpensteerInteractionReplayResult = OpensteerInteractionReplayOutput;\nexport type OpensteerNetworkClearOptions = OpensteerNetworkClearInput;\nexport type OpensteerNetworkClearResult = OpensteerNetworkClearOutput;\nexport type OpensteerRawRequestOptions = OpensteerRawRequestInput;\nexport type OpensteerRawRequestResult = OpensteerRawRequestOutput;\nexport type OpensteerRequestOptions = Omit<OpensteerRequestExecuteInput, \"key\">;\nexport type OpensteerRequestResult = OpensteerRequestExecuteOutput;\nexport type OpensteerCaptureScriptsOptions = OpensteerCaptureScriptsInput;\nexport type OpensteerCaptureScriptsResult = OpensteerCaptureScriptsOutput;\nexport type OpensteerScriptBeautifyOptions = OpensteerScriptBeautifyInput;\nexport type OpensteerScriptBeautifyResult = OpensteerScriptBeautifyOutput;\nexport type OpensteerScriptDeobfuscateOptions = OpensteerScriptDeobfuscateInput;\nexport type OpensteerScriptDeobfuscateResult = OpensteerScriptDeobfuscateOutput;\nexport type OpensteerScriptSandboxOptions = OpensteerScriptSandboxInput;\nexport type OpensteerScriptSandboxResult = OpensteerScriptSandboxOutput;\nexport type OpensteerArtifactReadOptions = OpensteerArtifactReadInput;\nexport type OpensteerArtifactReadResult = OpensteerArtifactReadOutput;\nexport type OpensteerCaptchaSolveOptions = OpensteerCaptchaSolveInput;\nexport type OpensteerCaptchaSolveResult = OpensteerCaptchaSolveOutput;\nexport type OpensteerAddInitScriptOptions = OpensteerAddInitScriptInput;\n\nexport interface OpensteerOptions extends OpensteerRuntimeOptions {\n readonly cloud?: boolean | OpensteerCloudOptions;\n}\n\nexport interface OpensteerBrowserCloneOptions {\n readonly sourceUserDataDir: string;\n readonly sourceProfileDirectory?: string;\n}\n\nexport interface OpensteerBrowserController {\n status(): Promise<OpensteerBrowserStatus>;\n clone(input: OpensteerBrowserCloneOptions): Promise<WorkspaceBrowserManifest>;\n reset(): Promise<void>;\n delete(): Promise<void>;\n}\n\nexport class Opensteer {\n private readonly runtime: OpensteerDisconnectableRuntime;\n private readonly browserManager: OpensteerBrowserManager | undefined;\n readonly browser: OpensteerBrowserController;\n\n constructor(options: OpensteerOptions = {}) {\n const runtimeConfig = resolveOpensteerRuntimeConfig({\n ...(options.cloud === undefined ? {} : { cloud: options.cloud }),\n ...(process.env.OPENSTEER_MODE === undefined\n ? {}\n : { environmentMode: process.env.OPENSTEER_MODE }),\n });\n\n if (runtimeConfig.mode === \"cloud\") {\n this.browserManager = undefined;\n this.runtime = createOpensteerSemanticRuntime({\n mode: runtimeConfig.mode,\n ...(options.cloud === undefined ? {} : { cloud: options.cloud }),\n ...(options.engineName === undefined ? {} : { engine: options.engineName }),\n runtimeOptions: {\n ...options,\n },\n });\n this.browser = createUnsupportedBrowserController();\n return;\n }\n\n this.browserManager = new OpensteerBrowserManager({\n ...(options.rootDir === undefined ? {} : { rootDir: options.rootDir }),\n ...(options.rootPath === undefined ? {} : { rootPath: options.rootPath }),\n ...(options.workspace === undefined ? {} : { workspace: options.workspace }),\n ...(options.engineName === undefined ? {} : { engineName: options.engineName }),\n ...(options.browser === undefined ? {} : { browser: options.browser }),\n ...(options.launch === undefined ? {} : { launch: options.launch }),\n ...(options.context === undefined ? {} : { context: options.context }),\n });\n this.runtime = createOpensteerSemanticRuntime({\n mode: runtimeConfig.mode,\n ...(options.cloud === undefined ? {} : { cloud: options.cloud }),\n ...(options.engineName === undefined ? {} : { engine: options.engineName }),\n runtimeOptions: {\n ...options,\n rootPath: this.browserManager.rootPath,\n cleanupRootOnClose: this.browserManager.cleanupRootOnDisconnect,\n },\n });\n this.browser = {\n status: () => this.browserManager!.status(),\n clone: (input) => this.browserManager!.clonePersistentBrowser(input),\n reset: () => this.browserManager!.reset(),\n delete: () => this.browserManager!.delete(),\n };\n }\n\n async open(input: string | OpensteerOpenInput = {}): Promise<OpensteerOpenOutput> {\n return this.runtime.open(typeof input === \"string\" ? { url: input } : input);\n }\n\n async listPages(input: OpensteerPageListInput = {}): Promise<OpensteerPageListOutput> {\n return this.runtime.listPages(input);\n }\n\n async newPage(input: OpensteerPageNewInput = {}): Promise<OpensteerPageNewOutput> {\n return this.runtime.newPage(input);\n }\n\n async activatePage(input: OpensteerPageActivateInput): Promise<OpensteerPageActivateOutput> {\n return this.runtime.activatePage(input);\n }\n\n async closePage(input: OpensteerPageCloseInput = {}): Promise<OpensteerPageCloseOutput> {\n return this.runtime.closePage(input);\n }\n\n async goto(input: string | OpensteerGotoOptions): Promise<OpensteerPageGotoOutput> {\n return this.runtime.goto(typeof input === \"string\" ? { url: input } : input);\n }\n\n async evaluate(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n const result = await this.runtime.evaluate(normalized);\n return result.value;\n }\n\n async evaluateJson(\n input: string | OpensteerPageEvaluateInput,\n ): Promise<OpensteerPageEvaluateOutput[\"value\"]> {\n return this.evaluate(input);\n }\n\n async addInitScript(\n input: string | OpensteerAddInitScriptInput,\n ): Promise<OpensteerAddInitScriptOutput> {\n const normalized =\n typeof input === \"string\"\n ? {\n script: input,\n }\n : input;\n return this.runtime.addInitScript(normalized);\n }\n\n async snapshot(\n input: OpensteerSnapshotMode | { readonly mode?: OpensteerSnapshotMode } = {},\n ): Promise<OpensteerPageSnapshotOutput> {\n const mode = typeof input === \"string\" ? input : input.mode;\n return this.runtime.snapshot(mode === undefined ? {} : { mode });\n }\n\n async click(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.click(normalized);\n }\n\n async hover(input: OpensteerTargetOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.hover(normalized);\n }\n\n async input(input: OpensteerInputOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.input({\n ...normalized,\n text: input.text,\n ...(input.pressEnter === undefined ? {} : { pressEnter: input.pressEnter }),\n });\n }\n\n async scroll(input: OpensteerScrollOptions): Promise<OpensteerActionResult> {\n const normalized = normalizeTargetOptions(input);\n return this.runtime.scroll({\n ...normalized,\n direction: input.direction,\n amount: input.amount,\n });\n }\n\n async extract(input: OpensteerExtractOptions): Promise<OpensteerDomExtractOutput[\"data\"]> {\n const result = await this.runtime.extract(input);\n return result.data;\n }\n\n async queryNetwork(\n input: OpensteerNetworkQueryOptions = {},\n ): Promise<OpensteerNetworkQueryResult> {\n return this.runtime.queryNetwork(input);\n }\n\n async waitForNetwork(\n input: OpensteerWaitForNetworkOptions,\n ): Promise<OpensteerNetworkQueryResult[\"records\"][number]> {\n const { timeoutMs, pollIntervalMs, ...query } = input;\n const timeoutAt = Date.now() + (timeoutMs ?? 30_000);\n const pollInterval = pollIntervalMs ?? 100;\n\n while (true) {\n const { records } = await this.runtime.queryNetwork({\n ...query,\n limit: 1,\n });\n if (records[0] !== undefined) {\n return records[0];\n }\n if (Date.now() >= timeoutAt) {\n throw new Error(\"waitForNetwork timed out\");\n }\n await delay(pollInterval);\n }\n }\n\n async waitForResponse(\n input: OpensteerWaitForNetworkOptions,\n ): Promise<OpensteerNetworkQueryResult[\"records\"][number]> {\n return this.waitForNetwork(input);\n }\n\n async waitForPage(\n input: OpensteerWaitForPageOptions = {},\n ): Promise<OpensteerPageListOutput[\"pages\"][number]> {\n const baseline = new Set((await this.runtime.listPages()).pages.map((page) => page.pageRef));\n const timeoutAt = Date.now() + (input.timeoutMs ?? 30_000);\n const pollIntervalMs = input.pollIntervalMs ?? 100;\n\n while (true) {\n const { pages } = await this.runtime.listPages();\n const match = pages.find((page) => {\n if (baseline.has(page.pageRef)) {\n return false;\n }\n if (input.openerPageRef !== undefined && page.openerPageRef !== input.openerPageRef) {\n return false;\n }\n if (input.urlIncludes !== undefined && !page.url.includes(input.urlIncludes)) {\n return false;\n }\n return true;\n });\n if (match !== undefined) {\n return match;\n }\n if (Date.now() >= timeoutAt) {\n throw new Error(\"waitForPage timed out\");\n }\n await delay(pollIntervalMs);\n }\n }\n\n async saveNetwork(input: OpensteerNetworkSaveOptions): Promise<OpensteerNetworkSaveResult> {\n return this.runtime.saveNetwork(input);\n }\n\n async minimizeNetwork(\n input: OpensteerNetworkMinimizeOptions,\n ): Promise<OpensteerNetworkMinimizeResult> {\n return this.runtime.minimizeNetwork(input);\n }\n\n async diffNetwork(input: OpensteerNetworkDiffOptions): Promise<OpensteerNetworkDiffResult> {\n return this.runtime.diffNetwork(input);\n }\n\n async probeNetwork(input: OpensteerNetworkProbeOptions): Promise<OpensteerNetworkProbeResult> {\n return this.runtime.probeNetwork(input);\n }\n\n async reverseDiscover(\n input: OpensteerReverseDiscoverOptions = {},\n ): Promise<OpensteerReverseDiscoverResult> {\n return this.runtime.discoverReverse(input);\n }\n\n async reverseQuery(input: OpensteerReverseQueryOptions): Promise<OpensteerReverseQueryResult> {\n return this.runtime.queryReverse(input);\n }\n\n async createReversePackage(\n input: OpensteerReversePackageCreateOptions,\n ): Promise<OpensteerReversePackageCreateResult> {\n return this.runtime.createReversePackage(input);\n }\n\n async runReversePackage(\n input: OpensteerReversePackageRunOptions,\n ): Promise<OpensteerReversePackageRunResult> {\n return this.runtime.runReversePackage(input);\n }\n\n async reverseExport(input: OpensteerReverseExportOptions): Promise<OpensteerReverseExportResult> {\n return this.runtime.exportReverse(input);\n }\n\n async reverseReport(input: OpensteerReverseReportOptions): Promise<OpensteerReverseReportResult> {\n return this.runtime.getReverseReport(input);\n }\n\n async getReversePackage(\n input: OpensteerReversePackageGetOptions,\n ): Promise<OpensteerReversePackageGetResult> {\n return this.runtime.getReversePackage(input);\n }\n\n async listReversePackages(\n input: OpensteerReversePackageListOptions = {},\n ): Promise<OpensteerReversePackageListResult> {\n return this.runtime.listReversePackages(input);\n }\n\n async patchReversePackage(\n input: OpensteerReversePackagePatchOptions,\n ): Promise<OpensteerReversePackagePatchResult> {\n return this.runtime.patchReversePackage(input);\n }\n\n async interactionCapture(\n input: OpensteerInteractionCaptureOptions,\n ): Promise<OpensteerInteractionCaptureResult> {\n return this.runtime.captureInteraction(input);\n }\n\n async getInteraction(\n input: OpensteerInteractionGetOptions,\n ): Promise<OpensteerInteractionGetResult> {\n return this.runtime.getInteraction(input);\n }\n\n async interactionDiff(\n input: OpensteerInteractionDiffOptions,\n ): Promise<OpensteerInteractionDiffResult> {\n return this.runtime.diffInteraction(input);\n }\n\n async interactionReplay(\n input: OpensteerInteractionReplayOptions,\n ): Promise<OpensteerInteractionReplayResult> {\n return this.runtime.replayInteraction(input);\n }\n\n async clearNetwork(\n input: OpensteerNetworkClearOptions = {},\n ): Promise<OpensteerNetworkClearResult> {\n return this.runtime.clearNetwork(input);\n }\n\n async captureScripts(\n input: OpensteerCaptureScriptsOptions = {},\n ): Promise<OpensteerCaptureScriptsResult> {\n return this.runtime.captureScripts(input);\n }\n\n async readArtifact(input: OpensteerArtifactReadOptions): Promise<OpensteerArtifactReadResult> {\n return this.runtime.readArtifact(input);\n }\n\n async beautifyScript(\n input: OpensteerScriptBeautifyOptions,\n ): Promise<OpensteerScriptBeautifyResult> {\n return this.runtime.beautifyScript(input);\n }\n\n async deobfuscateScript(\n input: OpensteerScriptDeobfuscateOptions,\n ): Promise<OpensteerScriptDeobfuscateResult> {\n return this.runtime.deobfuscateScript(input);\n }\n\n async sandboxScript(input: OpensteerScriptSandboxOptions): Promise<OpensteerScriptSandboxResult> {\n return this.runtime.sandboxScript(input);\n }\n\n async solveCaptcha(input: OpensteerCaptchaSolveOptions): Promise<OpensteerCaptchaSolveResult> {\n return this.runtime.solveCaptcha(input);\n }\n\n async getCookies(\n input: { readonly urls?: readonly string[] } = {},\n ): Promise<readonly CookieRecord[]> {\n return this.runtime.getCookies(input);\n }\n\n async getStorageSnapshot(\n input: {\n readonly includeSessionStorage?: boolean;\n readonly includeIndexedDb?: boolean;\n } = {},\n ): Promise<StorageSnapshot> {\n return this.runtime.getStorageSnapshot(input);\n }\n\n async writeRequestPlan(input: OpensteerWriteRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.writeRequestPlan(input);\n }\n\n async inferRequestPlan(input: OpensteerInferRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.inferRequestPlan(input);\n }\n\n async getRequestPlan(input: OpensteerGetRequestPlanInput): Promise<RequestPlanRecord> {\n return this.runtime.getRequestPlan(input);\n }\n\n async listRequestPlans(\n input: OpensteerListRequestPlansInput = {},\n ): Promise<OpensteerListRequestPlansOutput> {\n return this.runtime.listRequestPlans(input);\n }\n\n async writeAuthRecipe(input: OpensteerWriteAuthRecipeInput): Promise<AuthRecipeRecord> {\n return this.runtime.writeAuthRecipe(input);\n }\n\n async writeRecipe(input: OpensteerWriteRecipeInput): Promise<RecipeRecord> {\n return this.runtime.writeRecipe(input);\n }\n\n async getAuthRecipe(input: OpensteerGetAuthRecipeInput): Promise<AuthRecipeRecord> {\n return this.runtime.getAuthRecipe(input);\n }\n\n async getRecipe(input: OpensteerGetRecipeInput): Promise<RecipeRecord> {\n return this.runtime.getRecipe(input);\n }\n\n async listAuthRecipes(\n input: OpensteerListAuthRecipesInput = {},\n ): Promise<OpensteerListAuthRecipesOutput> {\n return this.runtime.listAuthRecipes(input);\n }\n\n async listRecipes(input: OpensteerListRecipesInput = {}): Promise<OpensteerListRecipesOutput> {\n return this.runtime.listRecipes(input);\n }\n\n async runAuthRecipe(input: OpensteerRunAuthRecipeInput): Promise<OpensteerRunAuthRecipeOutput> {\n return this.runtime.runAuthRecipe(input);\n }\n\n async runRecipe(input: OpensteerRunRecipeInput): Promise<OpensteerRunRecipeOutput> {\n return this.runtime.runRecipe(input);\n }\n\n async request(key: string, input: OpensteerRequestOptions = {}): Promise<OpensteerRequestResult> {\n return this.runtime.request({\n key,\n ...input,\n });\n }\n\n async rawRequest(input: OpensteerRawRequestOptions): Promise<OpensteerRawRequestResult> {\n return this.runtime.rawRequest(input);\n }\n\n async route(input: OpensteerRouteOptions): Promise<OpensteerRouteRegistration> {\n return this.requireOwnedInstrumentationRuntime(\"route\").route(input);\n }\n\n async interceptScript(\n input: OpensteerInterceptScriptOptions,\n ): Promise<OpensteerRouteRegistration> {\n return this.requireOwnedInstrumentationRuntime(\"interceptScript\").interceptScript(input);\n }\n\n async computerExecute(\n input: OpensteerComputerExecuteOptions,\n ): Promise<OpensteerComputerExecuteResult> {\n return this.runtime.computerExecute(input);\n }\n\n async close(): Promise<OpensteerSessionCloseOutput> {\n if (this.browserManager === undefined || this.browserManager.mode === \"temporary\") {\n return this.runtime.close();\n }\n\n const output = await this.runtime.close();\n await this.browserManager.close();\n return output;\n }\n\n async disconnect(): Promise<void> {\n await this.runtime.disconnect();\n }\n\n private requireOwnedInstrumentationRuntime(\n method: \"route\" | \"interceptScript\",\n ): OpensteerRuntime {\n if (this.runtime instanceof OpensteerRuntime) {\n return this.runtime;\n }\n throw new Error(`${method}() is only available on owned local SDK sessions.`);\n }\n}\n\nfunction createUnsupportedBrowserController(): OpensteerBrowserController {\n const fail = async (): Promise<never> => {\n throw new Error(\"browser.* helpers are only available in local mode.\");\n };\n\n return {\n status: fail,\n clone: fail,\n reset: fail,\n delete: fail,\n };\n}\n\nfunction normalizeTargetOptions(input: OpensteerTargetOptions): {\n readonly target: OpensteerTargetInput;\n readonly persistAsDescription?: string;\n readonly networkTag?: string;\n} {\n const hasElement = input.element !== undefined;\n const hasSelector = input.selector !== undefined;\n if (hasElement && hasSelector) {\n throw new Error(\"Specify exactly one of element, selector, or description.\");\n }\n\n if (hasElement) {\n return {\n target: {\n kind: \"element\",\n element: input.element!,\n },\n ...(input.description === undefined ? {} : { persistAsDescription: input.description }),\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n }\n\n if (hasSelector) {\n return {\n target: {\n kind: \"selector\",\n selector: input.selector!,\n },\n ...(input.description === undefined ? {} : { persistAsDescription: input.description }),\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n }\n\n if (input.description === undefined) {\n throw new Error(\"Specify exactly one of element, selector, or description.\");\n }\n\n return {\n target: {\n kind: \"description\",\n description: input.description,\n },\n ...(input.networkTag === undefined ? {} : { networkTag: input.networkTag }),\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opensteer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Opensteer browser automation, replay, and reverse-engineering toolkit.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"prettier": "^3.8.1",
|
|
56
56
|
"sharp": "^0.34.5",
|
|
57
57
|
"skills": "^1.4.6",
|
|
58
|
-
"@opensteer/engine-playwright": "0.
|
|
58
|
+
"@opensteer/engine-playwright": "0.8.0"
|
|
59
59
|
},
|
|
60
60
|
"optionalDependencies": {
|
|
61
61
|
"webcrack": "^2.15.1"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
|
-
"@opensteer/engine-abp": "0.
|
|
64
|
+
"@opensteer/engine-abp": "0.8.0"
|
|
65
65
|
},
|
|
66
66
|
"peerDependenciesMeta": {
|
|
67
67
|
"@opensteer/engine-abp": {
|
|
@@ -69,10 +69,10 @@
|
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
+
"@opensteer/browser-core": "0.7.0",
|
|
72
73
|
"@opensteer/cloud-contracts": "0.7.0",
|
|
73
|
-
"@opensteer/engine-abp": "0.
|
|
74
|
-
"@opensteer/protocol": "0.7.0"
|
|
75
|
-
"@opensteer/browser-core": "0.7.0"
|
|
74
|
+
"@opensteer/engine-abp": "0.8.0",
|
|
75
|
+
"@opensteer/protocol": "0.7.0"
|
|
76
76
|
},
|
|
77
77
|
"scripts": {
|
|
78
78
|
"build": "tsup && node ../../scripts/sync-package-skills.mjs",
|
package/skills/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Opensteer Skills
|
|
2
2
|
|
|
3
|
-
First-party Opensteer skills published from this repository
|
|
3
|
+
First-party Opensteer skills published from this repository. Install them through the upstream [`skills`](https://skills.sh) CLI into Claude Code, Codex, and other compatible agents.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -8,9 +8,21 @@ First-party Opensteer skills published from this repository for agents that use
|
|
|
8
8
|
opensteer skills install
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
Install into Claude Code explicitly:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
opensteer skills install --agent claude-code
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
List the packaged skills without installing them:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
opensteer skills install --list
|
|
21
|
+
```
|
|
22
|
+
|
|
11
23
|
## Available Skills
|
|
12
24
|
|
|
13
|
-
- `opensteer`: browser automation, structured extraction, and browser-backed
|
|
25
|
+
- `opensteer`: workspace-backed browser automation, structured DOM extraction, and browser-backed request replay with the Opensteer CLI and SDK
|
|
14
26
|
|
|
15
27
|
## Repository Layout
|
|
16
28
|
|