opensteer 0.8.11 → 0.8.12
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/{chunk-33FDEOQY.js → chunk-AXTKKAPW.js} +12 -3
- package/dist/{chunk-33FDEOQY.js.map → chunk-AXTKKAPW.js.map} +1 -1
- package/dist/cli/bin.cjs +114 -40
- package/dist/cli/bin.cjs.map +1 -1
- package/dist/cli/bin.js +105 -40
- package/dist/cli/bin.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/package.json +7 -7
- package/skills/recorder/SKILL.md +54 -24
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { resolveOpensteerEnvironment, resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, OpensteerBrowserManager } from './chunk-
|
|
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, OpensteerSessionRuntime, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorDescription, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord } from './chunk-
|
|
1
|
+
import { resolveOpensteerEnvironment, resolveOpensteerRuntimeConfig, createOpensteerSemanticRuntime, OpensteerBrowserManager } from './chunk-AXTKKAPW.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, OpensteerSessionRuntime, STABLE_PRIMARY_ATTR_KEYS, assertProviderSupportsEngine, buildArrayFieldPathCandidates, buildDomDescriptorKey, buildDomDescriptorPayload, buildDomDescriptorVersion, buildPathCandidates, buildPathSelectorHint, buildSegmentSelector, clearPersistedSessionRecord, cloneElementPath, cloneReplayElementPath, cloneStructuralElementAnchor, createArtifactStore, createDomDescriptorStore, createDomRuntime, createFilesystemOpensteerWorkspace, createObservationStore, createOpensteerExtractionDescriptorStore, createOpensteerSemanticRuntime, defaultFallbackPolicy, defaultPolicy, defaultRetryPolicy, defaultSettlePolicy, defaultTimeoutPolicy, delayWithSignal, discoverLocalCdpBrowsers, dispatchSemanticOperation, hashDomDescriptorDescription, inspectCdpEndpoint, isCurrentUrlField, isValidCssAttributeKey, listLocalChromeProfiles, manifestToExternalBinaryLocation, normalizeExtractedValue, normalizeObservabilityConfig, normalizeOpensteerEngineName, normalizeOpensteerProviderMode, normalizeWorkspaceId, parseDomDescriptorRecord, parseExtractionDescriptorRecord, readPersistedCloudSessionRecord, readPersistedLocalBrowserSessionRecord, readPersistedSessionRecord, resolveCloudConfig, resolveCloudSessionRecordPath, resolveDomActionBridge, resolveExtractedValueInContext, resolveFilesystemWorkspacePath, resolveLiveSessionRecordPath, resolveLocalSessionRecordPath, resolveOpensteerEngineName, resolveOpensteerProvider, resolveOpensteerRuntimeConfig, runWithPolicyTimeout, sanitizeElementPath, sanitizeReplayElementPath, sanitizeStructuralElementAnchor, settleWithPolicy, shouldKeepAttributeForPath, writePersistedSessionRecord } from './chunk-AXTKKAPW.js';
|
|
3
3
|
|
|
4
4
|
// src/sdk/opensteer.ts
|
|
5
5
|
var Opensteer = class {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opensteer",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.12",
|
|
4
4
|
"description": "Opensteer browser automation, replay, and reverse-engineering toolkit.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"sharp": "^0.34.5",
|
|
57
57
|
"skills": "^1.4.6",
|
|
58
58
|
"ws": "^8.18.0",
|
|
59
|
-
"@opensteer/engine-playwright": "0.8.
|
|
60
|
-
"@opensteer/runtime-core": "0.1.
|
|
59
|
+
"@opensteer/engine-playwright": "0.8.4",
|
|
60
|
+
"@opensteer/runtime-core": "0.1.4"
|
|
61
61
|
},
|
|
62
62
|
"optionalDependencies": {
|
|
63
63
|
"webcrack": "^2.15.1"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@opensteer/engine-abp": "0.8.
|
|
66
|
+
"@opensteer/engine-abp": "0.8.5"
|
|
67
67
|
},
|
|
68
68
|
"peerDependenciesMeta": {
|
|
69
69
|
"@opensteer/engine-abp": {
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@opensteer/browser-core": "0.7.
|
|
75
|
-
"@opensteer/engine-abp": "0.8.
|
|
76
|
-
"@opensteer/protocol": "0.7.
|
|
74
|
+
"@opensteer/browser-core": "0.7.4",
|
|
75
|
+
"@opensteer/engine-abp": "0.8.5",
|
|
76
|
+
"@opensteer/protocol": "0.7.4"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|
|
79
79
|
"build": "tsup && node ../../scripts/sync-package-skills.mjs",
|
package/skills/recorder/SKILL.md
CHANGED
|
@@ -1,52 +1,82 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: recorder
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user wants to record a live browser workflow and turn it into a replayable Opensteer script. Prefer this for manual browser capture, multi-tab recording, and record-then-rerun workflows with the Opensteer CLI.
|
|
4
4
|
argument-hint: "[url]"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Recorder
|
|
8
8
|
|
|
9
|
-
Use the Opensteer recorder to
|
|
9
|
+
Use the Opensteer recorder when the user wants to perform a real browser flow manually and save it as a deterministic replay script.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Inputs
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
13
|
+
- `url`: starting URL to open
|
|
14
|
+
- `workspace`: target Opensteer workspace id
|
|
15
|
+
- `provider`: `local` or `cloud`
|
|
16
|
+
- optional `output`: explicit output path
|
|
16
17
|
|
|
17
|
-
## Quick
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
Local recording:
|
|
18
21
|
|
|
19
22
|
```bash
|
|
20
23
|
opensteer record --workspace <id> --url <url>
|
|
21
|
-
opensteer record --workspace <id> --url <url> --output <path>
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
Cloud recording:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
opensteer record --provider cloud --workspace <id> --url <url>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Cloud recording requires:
|
|
33
|
+
|
|
34
|
+
- `OPENSTEER_BASE_URL`
|
|
35
|
+
- `OPENSTEER_API_KEY`
|
|
36
|
+
- `OPENSTEER_CLOUD_APP_BASE_URL`
|
|
37
|
+
|
|
38
|
+
## Mode Selection
|
|
39
|
+
|
|
40
|
+
- Use `provider=local` when the user wants to interact with a local Playwright browser window.
|
|
41
|
+
- Use `provider=cloud` when the user wants to interact through the cloud browser session UI.
|
|
42
|
+
- Keep local recording on the default headed persistent browser flow.
|
|
43
|
+
- In cloud mode, do not force `headless=false`. Use the normal cloud launch behavior unless the user explicitly overrides it.
|
|
44
|
+
|
|
45
|
+
## Workflow
|
|
46
|
+
|
|
47
|
+
1. Start the recorder with `opensteer record`.
|
|
48
|
+
2. If the provider is `cloud`, give the user the browser session URL printed by the CLI.
|
|
49
|
+
3. Tell the user to perform the workflow manually.
|
|
50
|
+
4. Tell the user exactly how to stop:
|
|
51
|
+
- local: click the injected `Stop recording` button in the browser page
|
|
52
|
+
- cloud: click `Stop recording` in the browser session toolbar UI
|
|
53
|
+
5. Wait for the recorder process to finish. Do not assume recording is complete just because the browser URL was printed.
|
|
54
|
+
6. Only after the CLI exits, read the generated script from disk and inspect what was captured.
|
|
55
|
+
7. If the user wants verification, rerun the generated script instead of only reviewing the file.
|
|
29
56
|
|
|
30
57
|
## Guardrails
|
|
31
58
|
|
|
32
|
-
- Recording requires `provider=local`.
|
|
33
59
|
- Recording requires `engine=playwright`.
|
|
34
|
-
-
|
|
35
|
-
-
|
|
60
|
+
- Local recording only supports a persistent browser.
|
|
61
|
+
- Local recording requires a headed browser. Do not pass `--headless true` in local mode.
|
|
62
|
+
- Cloud recording does not support `browser.mode="attach"`.
|
|
63
|
+
- Do not stop recording with `Ctrl+C` unless the user explicitly wants to abort the run.
|
|
64
|
+
- Do not use removed timeout flags such as `--record-timeout-ms`.
|
|
36
65
|
- If a launch argument value starts with `--`, pass it as `--arg=...`, not `--arg ...`.
|
|
66
|
+
- If the flow depends on recorder limits such as iframes, file upload, drag-and-drop, or canvas behavior, read the reference file before promising support.
|
|
37
67
|
|
|
38
|
-
## Output
|
|
68
|
+
## Output Contract
|
|
39
69
|
|
|
40
70
|
- Default output path: `.opensteer/workspaces/<id>/recorded-flow.ts`
|
|
41
|
-
- The
|
|
42
|
-
-
|
|
71
|
+
- The CLI writes the replay script locally after recording completes in both local and cloud modes.
|
|
72
|
+
- Generated scripts use the public Opensteer SDK surface. Cloud recordings bootstrap `provider.mode = "cloud"` and local recordings bootstrap the workspace-backed local flow.
|
|
43
73
|
|
|
44
|
-
## Agent
|
|
74
|
+
## Agent Guidance
|
|
45
75
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
- If
|
|
76
|
+
- Keep the `record` command alive while the user is recording.
|
|
77
|
+
- If the user is actively driving the session, avoid mixing in extra agent actions unless they explicitly ask for help recording a combined flow.
|
|
78
|
+
- After recording completes, summarize the captured flow before editing it.
|
|
79
|
+
- If replay fails, debug the generated script and rerun it instead of re-recording immediately.
|
|
50
80
|
|
|
51
81
|
## References
|
|
52
82
|
|