@next-open-ai/openclawx 0.6.6
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 +523 -0
- package/apps/desktop/README.md +210 -0
- package/apps/desktop/renderer/dist/assets/index-CYkSfhcp.css +10 -0
- package/apps/desktop/renderer/dist/assets/index-FI6O25Ms.js +89 -0
- package/apps/desktop/renderer/dist/index.html +22 -0
- package/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.js +198 -0
- package/dist/cli/service.d.ts +13 -0
- package/dist/cli/service.js +243 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +5 -0
- package/dist/core/agent/agent-dir.d.ts +14 -0
- package/dist/core/agent/agent-dir.js +75 -0
- package/dist/core/agent/agent-manager.d.ts +64 -0
- package/dist/core/agent/agent-manager.js +278 -0
- package/dist/core/agent/config-manager.d.ts +25 -0
- package/dist/core/agent/config-manager.js +84 -0
- package/dist/core/agent/run.d.ts +26 -0
- package/dist/core/agent/run.js +65 -0
- package/dist/core/agent/skills.d.ts +20 -0
- package/dist/core/agent/skills.js +86 -0
- package/dist/core/config/desktop-config.d.ts +90 -0
- package/dist/core/config/desktop-config.js +521 -0
- package/dist/core/config/provider-support-default.d.ts +21 -0
- package/dist/core/config/provider-support-default.js +57 -0
- package/dist/core/installer/index.d.ts +1 -0
- package/dist/core/installer/index.js +1 -0
- package/dist/core/installer/skill-installer.d.ts +39 -0
- package/dist/core/installer/skill-installer.js +215 -0
- package/dist/core/mcp/adapter.d.ts +17 -0
- package/dist/core/mcp/adapter.js +49 -0
- package/dist/core/mcp/client.d.ts +24 -0
- package/dist/core/mcp/client.js +70 -0
- package/dist/core/mcp/config.d.ts +22 -0
- package/dist/core/mcp/config.js +69 -0
- package/dist/core/mcp/index.d.ts +18 -0
- package/dist/core/mcp/index.js +20 -0
- package/dist/core/mcp/operator.d.ts +15 -0
- package/dist/core/mcp/operator.js +72 -0
- package/dist/core/mcp/transport/index.d.ts +11 -0
- package/dist/core/mcp/transport/index.js +16 -0
- package/dist/core/mcp/transport/sse.d.ts +20 -0
- package/dist/core/mcp/transport/sse.js +82 -0
- package/dist/core/mcp/transport/stdio.d.ts +32 -0
- package/dist/core/mcp/transport/stdio.js +132 -0
- package/dist/core/mcp/types.d.ts +72 -0
- package/dist/core/mcp/types.js +5 -0
- package/dist/core/memory/build-summary.d.ts +6 -0
- package/dist/core/memory/build-summary.js +27 -0
- package/dist/core/memory/compaction-extension.d.ts +6 -0
- package/dist/core/memory/compaction-extension.js +23 -0
- package/dist/core/memory/embedding.d.ts +4 -0
- package/dist/core/memory/embedding.js +15 -0
- package/dist/core/memory/index.d.ts +29 -0
- package/dist/core/memory/index.js +70 -0
- package/dist/core/memory/remote-embedding.d.ts +10 -0
- package/dist/core/memory/remote-embedding.js +36 -0
- package/dist/core/memory/types.d.ts +16 -0
- package/dist/core/memory/types.js +1 -0
- package/dist/core/memory/vector-store.d.ts +15 -0
- package/dist/core/memory/vector-store.js +65 -0
- package/dist/core/tools/bookmark-tool.d.ts +9 -0
- package/dist/core/tools/bookmark-tool.js +118 -0
- package/dist/core/tools/browser-tool.d.ts +10 -0
- package/dist/core/tools/browser-tool.js +362 -0
- package/dist/core/tools/index.d.ts +4 -0
- package/dist/core/tools/index.js +4 -0
- package/dist/core/tools/install-skill-tool.d.ts +6 -0
- package/dist/core/tools/install-skill-tool.js +53 -0
- package/dist/core/tools/save-experience-tool.d.ts +5 -0
- package/dist/core/tools/save-experience-tool.js +54 -0
- package/dist/gateway/auth-hooks.d.ts +17 -0
- package/dist/gateway/auth-hooks.js +19 -0
- package/dist/gateway/backend-url.d.ts +2 -0
- package/dist/gateway/backend-url.js +11 -0
- package/dist/gateway/channel-handler.d.ts +6 -0
- package/dist/gateway/channel-handler.js +3 -0
- package/dist/gateway/clients.d.ts +5 -0
- package/dist/gateway/clients.js +4 -0
- package/dist/gateway/connection-handler.d.ts +6 -0
- package/dist/gateway/connection-handler.js +48 -0
- package/dist/gateway/index.d.ts +3 -0
- package/dist/gateway/index.js +2 -0
- package/dist/gateway/message-handler.d.ts +5 -0
- package/dist/gateway/message-handler.js +65 -0
- package/dist/gateway/methods/agent-cancel.d.ts +10 -0
- package/dist/gateway/methods/agent-cancel.js +17 -0
- package/dist/gateway/methods/agent-chat.d.ts +8 -0
- package/dist/gateway/methods/agent-chat.js +148 -0
- package/dist/gateway/methods/connect.d.ts +9 -0
- package/dist/gateway/methods/connect.js +18 -0
- package/dist/gateway/methods/install-skill-from-path.d.ts +13 -0
- package/dist/gateway/methods/install-skill-from-path.js +15 -0
- package/dist/gateway/methods/install-skill-from-upload.d.ts +14 -0
- package/dist/gateway/methods/install-skill-from-upload.js +13 -0
- package/dist/gateway/methods/run-scheduled-task.d.ts +15 -0
- package/dist/gateway/methods/run-scheduled-task.js +127 -0
- package/dist/gateway/paths.d.ts +20 -0
- package/dist/gateway/paths.js +19 -0
- package/dist/gateway/server.d.ts +8 -0
- package/dist/gateway/server.js +190 -0
- package/dist/gateway/sse-handler.d.ts +6 -0
- package/dist/gateway/sse-handler.js +3 -0
- package/dist/gateway/types.d.ts +90 -0
- package/dist/gateway/types.js +1 -0
- package/dist/gateway/utils.d.ts +22 -0
- package/dist/gateway/utils.js +67 -0
- package/dist/gateway/voice-handler.d.ts +12 -0
- package/dist/gateway/voice-handler.js +18 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/server/agent-config/agent-config.controller.d.ts +30 -0
- package/dist/server/agent-config/agent-config.controller.js +83 -0
- package/dist/server/agent-config/agent-config.module.d.ts +2 -0
- package/dist/server/agent-config/agent-config.module.js +19 -0
- package/dist/server/agent-config/agent-config.service.d.ts +53 -0
- package/dist/server/agent-config/agent-config.service.js +213 -0
- package/dist/server/agents/agents.controller.d.ts +41 -0
- package/dist/server/agents/agents.controller.js +118 -0
- package/dist/server/agents/agents.gateway.d.ts +21 -0
- package/dist/server/agents/agents.gateway.js +103 -0
- package/dist/server/agents/agents.module.d.ts +2 -0
- package/dist/server/agents/agents.module.js +20 -0
- package/dist/server/agents/agents.service.d.ts +63 -0
- package/dist/server/agents/agents.service.js +169 -0
- package/dist/server/app.module.d.ts +2 -0
- package/dist/server/app.module.js +38 -0
- package/dist/server/auth/auth.controller.d.ts +20 -0
- package/dist/server/auth/auth.controller.js +64 -0
- package/dist/server/auth/auth.module.d.ts +2 -0
- package/dist/server/auth/auth.module.js +19 -0
- package/dist/server/bootstrap.d.ts +15 -0
- package/dist/server/bootstrap.js +38 -0
- package/dist/server/config/config.controller.d.ts +73 -0
- package/dist/server/config/config.controller.js +95 -0
- package/dist/server/config/config.module.d.ts +2 -0
- package/dist/server/config/config.module.js +21 -0
- package/dist/server/config/config.service.d.ts +82 -0
- package/dist/server/config/config.service.js +123 -0
- package/dist/server/database/database.module.d.ts +2 -0
- package/dist/server/database/database.module.js +18 -0
- package/dist/server/database/database.service.d.ts +26 -0
- package/dist/server/database/database.service.js +253 -0
- package/dist/server/main.d.ts +1 -0
- package/dist/server/main.js +9 -0
- package/dist/server/saved-items/saved-items.controller.d.ts +57 -0
- package/dist/server/saved-items/saved-items.controller.js +229 -0
- package/dist/server/saved-items/saved-items.module.d.ts +2 -0
- package/dist/server/saved-items/saved-items.module.js +25 -0
- package/dist/server/saved-items/saved-items.service.d.ts +31 -0
- package/dist/server/saved-items/saved-items.service.js +105 -0
- package/dist/server/saved-items/tags.controller.d.ts +30 -0
- package/dist/server/saved-items/tags.controller.js +85 -0
- package/dist/server/saved-items/tags.service.d.ts +24 -0
- package/dist/server/saved-items/tags.service.js +84 -0
- package/dist/server/skills/skills.controller.d.ts +63 -0
- package/dist/server/skills/skills.controller.js +194 -0
- package/dist/server/skills/skills.module.d.ts +2 -0
- package/dist/server/skills/skills.module.js +22 -0
- package/dist/server/skills/skills.service.d.ts +65 -0
- package/dist/server/skills/skills.service.js +388 -0
- package/dist/server/tasks/tasks.controller.d.ts +52 -0
- package/dist/server/tasks/tasks.controller.js +163 -0
- package/dist/server/tasks/tasks.module.d.ts +2 -0
- package/dist/server/tasks/tasks.module.js +23 -0
- package/dist/server/tasks/tasks.service.d.ts +86 -0
- package/dist/server/tasks/tasks.service.js +327 -0
- package/dist/server/usage/usage.controller.d.ts +12 -0
- package/dist/server/usage/usage.controller.js +46 -0
- package/dist/server/usage/usage.module.d.ts +2 -0
- package/dist/server/usage/usage.module.js +19 -0
- package/dist/server/usage/usage.service.d.ts +21 -0
- package/dist/server/usage/usage.service.js +55 -0
- package/dist/server/users/users.controller.d.ts +35 -0
- package/dist/server/users/users.controller.js +69 -0
- package/dist/server/users/users.module.d.ts +2 -0
- package/dist/server/users/users.module.js +19 -0
- package/dist/server/users/users.service.d.ts +39 -0
- package/dist/server/users/users.service.js +140 -0
- package/dist/server/workspace/workspace.controller.d.ts +24 -0
- package/dist/server/workspace/workspace.controller.js +132 -0
- package/dist/server/workspace/workspace.module.d.ts +2 -0
- package/dist/server/workspace/workspace.module.js +21 -0
- package/dist/server/workspace/workspace.service.d.ts +36 -0
- package/dist/server/workspace/workspace.service.js +142 -0
- package/package.json +90 -0
- package/skills/agent-browser/SKILL.md +207 -0
- package/skills/agent-browser/references/authentication.md +202 -0
- package/skills/agent-browser/references/commands.md +259 -0
- package/skills/agent-browser/references/proxy-support.md +188 -0
- package/skills/agent-browser/references/session-management.md +193 -0
- package/skills/agent-browser/references/snapshot-refs.md +194 -0
- package/skills/agent-browser/references/video-recording.md +173 -0
- package/skills/agent-browser/templates/authenticated-session.sh +97 -0
- package/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/skills/agent-browser/templates/form-automation.sh +62 -0
- package/skills/find-skills/SKILL.md +140 -0
- package/skills/url-bookmark/SKILL.md +36 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Video Recording
|
|
2
|
+
|
|
3
|
+
Capture browser automation as video for debugging, documentation, or verification.
|
|
4
|
+
|
|
5
|
+
**Related**: [commands.md](commands.md) for full command reference, [SKILL.md](../SKILL.md) for quick start.
|
|
6
|
+
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
- [Basic Recording](#basic-recording)
|
|
10
|
+
- [Recording Commands](#recording-commands)
|
|
11
|
+
- [Use Cases](#use-cases)
|
|
12
|
+
- [Best Practices](#best-practices)
|
|
13
|
+
- [Output Format](#output-format)
|
|
14
|
+
- [Limitations](#limitations)
|
|
15
|
+
|
|
16
|
+
## Basic Recording
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Start recording
|
|
20
|
+
agent-browser record start ./demo.webm
|
|
21
|
+
|
|
22
|
+
# Perform actions
|
|
23
|
+
agent-browser open https://example.com
|
|
24
|
+
agent-browser snapshot -i
|
|
25
|
+
agent-browser click @e1
|
|
26
|
+
agent-browser fill @e2 "test input"
|
|
27
|
+
|
|
28
|
+
# Stop and save
|
|
29
|
+
agent-browser record stop
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Recording Commands
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Start recording to file
|
|
36
|
+
agent-browser record start ./output.webm
|
|
37
|
+
|
|
38
|
+
# Stop current recording
|
|
39
|
+
agent-browser record stop
|
|
40
|
+
|
|
41
|
+
# Restart with new file (stops current + starts new)
|
|
42
|
+
agent-browser record restart ./take2.webm
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Use Cases
|
|
46
|
+
|
|
47
|
+
### Debugging Failed Automation
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
#!/bin/bash
|
|
51
|
+
# Record automation for debugging
|
|
52
|
+
|
|
53
|
+
agent-browser record start ./debug-$(date +%Y%m%d-%H%M%S).webm
|
|
54
|
+
|
|
55
|
+
# Run your automation
|
|
56
|
+
agent-browser open https://app.example.com
|
|
57
|
+
agent-browser snapshot -i
|
|
58
|
+
agent-browser click @e1 || {
|
|
59
|
+
echo "Click failed - check recording"
|
|
60
|
+
agent-browser record stop
|
|
61
|
+
exit 1
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
agent-browser record stop
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Documentation Generation
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
#!/bin/bash
|
|
71
|
+
# Record workflow for documentation
|
|
72
|
+
|
|
73
|
+
agent-browser record start ./docs/how-to-login.webm
|
|
74
|
+
|
|
75
|
+
agent-browser open https://app.example.com/login
|
|
76
|
+
agent-browser wait 1000 # Pause for visibility
|
|
77
|
+
|
|
78
|
+
agent-browser snapshot -i
|
|
79
|
+
agent-browser fill @e1 "demo@example.com"
|
|
80
|
+
agent-browser wait 500
|
|
81
|
+
|
|
82
|
+
agent-browser fill @e2 "password"
|
|
83
|
+
agent-browser wait 500
|
|
84
|
+
|
|
85
|
+
agent-browser click @e3
|
|
86
|
+
agent-browser wait --load networkidle
|
|
87
|
+
agent-browser wait 1000 # Show result
|
|
88
|
+
|
|
89
|
+
agent-browser record stop
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### CI/CD Test Evidence
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
#!/bin/bash
|
|
96
|
+
# Record E2E test runs for CI artifacts
|
|
97
|
+
|
|
98
|
+
TEST_NAME="${1:-e2e-test}"
|
|
99
|
+
RECORDING_DIR="./test-recordings"
|
|
100
|
+
mkdir -p "$RECORDING_DIR"
|
|
101
|
+
|
|
102
|
+
agent-browser record start "$RECORDING_DIR/$TEST_NAME-$(date +%s).webm"
|
|
103
|
+
|
|
104
|
+
# Run test
|
|
105
|
+
if run_e2e_test; then
|
|
106
|
+
echo "Test passed"
|
|
107
|
+
else
|
|
108
|
+
echo "Test failed - recording saved"
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
agent-browser record stop
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Best Practices
|
|
115
|
+
|
|
116
|
+
### 1. Add Pauses for Clarity
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Slow down for human viewing
|
|
120
|
+
agent-browser click @e1
|
|
121
|
+
agent-browser wait 500 # Let viewer see result
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 2. Use Descriptive Filenames
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Include context in filename
|
|
128
|
+
agent-browser record start ./recordings/login-flow-2024-01-15.webm
|
|
129
|
+
agent-browser record start ./recordings/checkout-test-run-42.webm
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 3. Handle Recording in Error Cases
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
#!/bin/bash
|
|
136
|
+
set -e
|
|
137
|
+
|
|
138
|
+
cleanup() {
|
|
139
|
+
agent-browser record stop 2>/dev/null || true
|
|
140
|
+
agent-browser close 2>/dev/null || true
|
|
141
|
+
}
|
|
142
|
+
trap cleanup EXIT
|
|
143
|
+
|
|
144
|
+
agent-browser record start ./automation.webm
|
|
145
|
+
# ... automation steps ...
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 4. Combine with Screenshots
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Record video AND capture key frames
|
|
152
|
+
agent-browser record start ./flow.webm
|
|
153
|
+
|
|
154
|
+
agent-browser open https://example.com
|
|
155
|
+
agent-browser screenshot ./screenshots/step1-homepage.png
|
|
156
|
+
|
|
157
|
+
agent-browser click @e1
|
|
158
|
+
agent-browser screenshot ./screenshots/step2-after-click.png
|
|
159
|
+
|
|
160
|
+
agent-browser record stop
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Output Format
|
|
164
|
+
|
|
165
|
+
- Default format: WebM (VP8/VP9 codec)
|
|
166
|
+
- Compatible with all modern browsers and video players
|
|
167
|
+
- Compressed but high quality
|
|
168
|
+
|
|
169
|
+
## Limitations
|
|
170
|
+
|
|
171
|
+
- Recording adds slight overhead to automation
|
|
172
|
+
- Large recordings can consume significant disk space
|
|
173
|
+
- Some headless environments may have codec limitations
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Template: Authenticated Session Workflow
|
|
3
|
+
# Purpose: Login once, save state, reuse for subsequent runs
|
|
4
|
+
# Usage: ./authenticated-session.sh <login-url> [state-file]
|
|
5
|
+
#
|
|
6
|
+
# Environment variables:
|
|
7
|
+
# APP_USERNAME - Login username/email
|
|
8
|
+
# APP_PASSWORD - Login password
|
|
9
|
+
#
|
|
10
|
+
# Two modes:
|
|
11
|
+
# 1. Discovery mode (default): Shows form structure so you can identify refs
|
|
12
|
+
# 2. Login mode: Performs actual login after you update the refs
|
|
13
|
+
#
|
|
14
|
+
# Setup steps:
|
|
15
|
+
# 1. Run once to see form structure (discovery mode)
|
|
16
|
+
# 2. Update refs in LOGIN FLOW section below
|
|
17
|
+
# 3. Set APP_USERNAME and APP_PASSWORD
|
|
18
|
+
# 4. Delete the DISCOVERY section
|
|
19
|
+
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
|
|
22
|
+
LOGIN_URL="${1:?Usage: $0 <login-url> [state-file]}"
|
|
23
|
+
STATE_FILE="${2:-./auth-state.json}"
|
|
24
|
+
|
|
25
|
+
echo "Authentication workflow: $LOGIN_URL"
|
|
26
|
+
|
|
27
|
+
# ================================================================
|
|
28
|
+
# SAVED STATE: Skip login if valid saved state exists
|
|
29
|
+
# ================================================================
|
|
30
|
+
if [[ -f "$STATE_FILE" ]]; then
|
|
31
|
+
echo "Loading saved state from $STATE_FILE..."
|
|
32
|
+
agent-browser state load "$STATE_FILE"
|
|
33
|
+
agent-browser open "$LOGIN_URL"
|
|
34
|
+
agent-browser wait --load networkidle
|
|
35
|
+
|
|
36
|
+
CURRENT_URL=$(agent-browser get url)
|
|
37
|
+
if [[ "$CURRENT_URL" != *"login"* ]] && [[ "$CURRENT_URL" != *"signin"* ]]; then
|
|
38
|
+
echo "Session restored successfully"
|
|
39
|
+
agent-browser snapshot -i
|
|
40
|
+
exit 0
|
|
41
|
+
fi
|
|
42
|
+
echo "Session expired, performing fresh login..."
|
|
43
|
+
rm -f "$STATE_FILE"
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# ================================================================
|
|
47
|
+
# DISCOVERY MODE: Shows form structure (delete after setup)
|
|
48
|
+
# ================================================================
|
|
49
|
+
echo "Opening login page..."
|
|
50
|
+
agent-browser open "$LOGIN_URL"
|
|
51
|
+
agent-browser wait --load networkidle
|
|
52
|
+
|
|
53
|
+
echo ""
|
|
54
|
+
echo "Login form structure:"
|
|
55
|
+
echo "---"
|
|
56
|
+
agent-browser snapshot -i
|
|
57
|
+
echo "---"
|
|
58
|
+
echo ""
|
|
59
|
+
echo "Next steps:"
|
|
60
|
+
echo " 1. Note the refs: username=@e?, password=@e?, submit=@e?"
|
|
61
|
+
echo " 2. Update the LOGIN FLOW section below with your refs"
|
|
62
|
+
echo " 3. Set: export APP_USERNAME='...' APP_PASSWORD='...'"
|
|
63
|
+
echo " 4. Delete this DISCOVERY MODE section"
|
|
64
|
+
echo ""
|
|
65
|
+
agent-browser close
|
|
66
|
+
exit 0
|
|
67
|
+
|
|
68
|
+
# ================================================================
|
|
69
|
+
# LOGIN FLOW: Uncomment and customize after discovery
|
|
70
|
+
# ================================================================
|
|
71
|
+
# : "${APP_USERNAME:?Set APP_USERNAME environment variable}"
|
|
72
|
+
# : "${APP_PASSWORD:?Set APP_PASSWORD environment variable}"
|
|
73
|
+
#
|
|
74
|
+
# agent-browser open "$LOGIN_URL"
|
|
75
|
+
# agent-browser wait --load networkidle
|
|
76
|
+
# agent-browser snapshot -i
|
|
77
|
+
#
|
|
78
|
+
# # Fill credentials (update refs to match your form)
|
|
79
|
+
# agent-browser fill @e1 "$APP_USERNAME"
|
|
80
|
+
# agent-browser fill @e2 "$APP_PASSWORD"
|
|
81
|
+
# agent-browser click @e3
|
|
82
|
+
# agent-browser wait --load networkidle
|
|
83
|
+
#
|
|
84
|
+
# # Verify login succeeded
|
|
85
|
+
# FINAL_URL=$(agent-browser get url)
|
|
86
|
+
# if [[ "$FINAL_URL" == *"login"* ]] || [[ "$FINAL_URL" == *"signin"* ]]; then
|
|
87
|
+
# echo "Login failed - still on login page"
|
|
88
|
+
# agent-browser screenshot /tmp/login-failed.png
|
|
89
|
+
# agent-browser close
|
|
90
|
+
# exit 1
|
|
91
|
+
# fi
|
|
92
|
+
#
|
|
93
|
+
# # Save state for future runs
|
|
94
|
+
# echo "Saving state to $STATE_FILE"
|
|
95
|
+
# agent-browser state save "$STATE_FILE"
|
|
96
|
+
# echo "Login successful"
|
|
97
|
+
# agent-browser snapshot -i
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Template: Content Capture Workflow
|
|
3
|
+
# Purpose: Extract content from web pages (text, screenshots, PDF)
|
|
4
|
+
# Usage: ./capture-workflow.sh <url> [output-dir]
|
|
5
|
+
#
|
|
6
|
+
# Outputs:
|
|
7
|
+
# - page-full.png: Full page screenshot
|
|
8
|
+
# - page-structure.txt: Page element structure with refs
|
|
9
|
+
# - page-text.txt: All text content
|
|
10
|
+
# - page.pdf: PDF version
|
|
11
|
+
#
|
|
12
|
+
# Optional: Load auth state for protected pages
|
|
13
|
+
|
|
14
|
+
set -euo pipefail
|
|
15
|
+
|
|
16
|
+
TARGET_URL="${1:?Usage: $0 <url> [output-dir]}"
|
|
17
|
+
OUTPUT_DIR="${2:-.}"
|
|
18
|
+
|
|
19
|
+
echo "Capturing: $TARGET_URL"
|
|
20
|
+
mkdir -p "$OUTPUT_DIR"
|
|
21
|
+
|
|
22
|
+
# Optional: Load authentication state
|
|
23
|
+
# if [[ -f "./auth-state.json" ]]; then
|
|
24
|
+
# echo "Loading authentication state..."
|
|
25
|
+
# agent-browser state load "./auth-state.json"
|
|
26
|
+
# fi
|
|
27
|
+
|
|
28
|
+
# Navigate to target
|
|
29
|
+
agent-browser open "$TARGET_URL"
|
|
30
|
+
agent-browser wait --load networkidle
|
|
31
|
+
|
|
32
|
+
# Get metadata
|
|
33
|
+
TITLE=$(agent-browser get title)
|
|
34
|
+
URL=$(agent-browser get url)
|
|
35
|
+
echo "Title: $TITLE"
|
|
36
|
+
echo "URL: $URL"
|
|
37
|
+
|
|
38
|
+
# Capture full page screenshot
|
|
39
|
+
agent-browser screenshot --full "$OUTPUT_DIR/page-full.png"
|
|
40
|
+
echo "Saved: $OUTPUT_DIR/page-full.png"
|
|
41
|
+
|
|
42
|
+
# Get page structure with refs
|
|
43
|
+
agent-browser snapshot -i > "$OUTPUT_DIR/page-structure.txt"
|
|
44
|
+
echo "Saved: $OUTPUT_DIR/page-structure.txt"
|
|
45
|
+
|
|
46
|
+
# Extract all text content
|
|
47
|
+
agent-browser get text body > "$OUTPUT_DIR/page-text.txt"
|
|
48
|
+
echo "Saved: $OUTPUT_DIR/page-text.txt"
|
|
49
|
+
|
|
50
|
+
# Save as PDF
|
|
51
|
+
agent-browser pdf "$OUTPUT_DIR/page.pdf"
|
|
52
|
+
echo "Saved: $OUTPUT_DIR/page.pdf"
|
|
53
|
+
|
|
54
|
+
# Optional: Extract specific elements using refs from structure
|
|
55
|
+
# agent-browser get text @e5 > "$OUTPUT_DIR/main-content.txt"
|
|
56
|
+
|
|
57
|
+
# Optional: Handle infinite scroll pages
|
|
58
|
+
# for i in {1..5}; do
|
|
59
|
+
# agent-browser scroll down 1000
|
|
60
|
+
# agent-browser wait 1000
|
|
61
|
+
# done
|
|
62
|
+
# agent-browser screenshot --full "$OUTPUT_DIR/page-scrolled.png"
|
|
63
|
+
|
|
64
|
+
# Cleanup
|
|
65
|
+
agent-browser close
|
|
66
|
+
|
|
67
|
+
echo ""
|
|
68
|
+
echo "Capture complete:"
|
|
69
|
+
ls -la "$OUTPUT_DIR"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Template: Form Automation Workflow
|
|
3
|
+
# Purpose: Fill and submit web forms with validation
|
|
4
|
+
# Usage: ./form-automation.sh <form-url>
|
|
5
|
+
#
|
|
6
|
+
# This template demonstrates the snapshot-interact-verify pattern:
|
|
7
|
+
# 1. Navigate to form
|
|
8
|
+
# 2. Snapshot to get element refs
|
|
9
|
+
# 3. Fill fields using refs
|
|
10
|
+
# 4. Submit and verify result
|
|
11
|
+
#
|
|
12
|
+
# Customize: Update the refs (@e1, @e2, etc.) based on your form's snapshot output
|
|
13
|
+
|
|
14
|
+
set -euo pipefail
|
|
15
|
+
|
|
16
|
+
FORM_URL="${1:?Usage: $0 <form-url>}"
|
|
17
|
+
|
|
18
|
+
echo "Form automation: $FORM_URL"
|
|
19
|
+
|
|
20
|
+
# Step 1: Navigate to form
|
|
21
|
+
agent-browser open "$FORM_URL"
|
|
22
|
+
agent-browser wait --load networkidle
|
|
23
|
+
|
|
24
|
+
# Step 2: Snapshot to discover form elements
|
|
25
|
+
echo ""
|
|
26
|
+
echo "Form structure:"
|
|
27
|
+
agent-browser snapshot -i
|
|
28
|
+
|
|
29
|
+
# Step 3: Fill form fields (customize these refs based on snapshot output)
|
|
30
|
+
#
|
|
31
|
+
# Common field types:
|
|
32
|
+
# agent-browser fill @e1 "John Doe" # Text input
|
|
33
|
+
# agent-browser fill @e2 "user@example.com" # Email input
|
|
34
|
+
# agent-browser fill @e3 "SecureP@ss123" # Password input
|
|
35
|
+
# agent-browser select @e4 "Option Value" # Dropdown
|
|
36
|
+
# agent-browser check @e5 # Checkbox
|
|
37
|
+
# agent-browser click @e6 # Radio button
|
|
38
|
+
# agent-browser fill @e7 "Multi-line text" # Textarea
|
|
39
|
+
# agent-browser upload @e8 /path/to/file.pdf # File upload
|
|
40
|
+
#
|
|
41
|
+
# Uncomment and modify:
|
|
42
|
+
# agent-browser fill @e1 "Test User"
|
|
43
|
+
# agent-browser fill @e2 "test@example.com"
|
|
44
|
+
# agent-browser click @e3 # Submit button
|
|
45
|
+
|
|
46
|
+
# Step 4: Wait for submission
|
|
47
|
+
# agent-browser wait --load networkidle
|
|
48
|
+
# agent-browser wait --url "**/success" # Or wait for redirect
|
|
49
|
+
|
|
50
|
+
# Step 5: Verify result
|
|
51
|
+
echo ""
|
|
52
|
+
echo "Result:"
|
|
53
|
+
agent-browser get url
|
|
54
|
+
agent-browser snapshot -i
|
|
55
|
+
|
|
56
|
+
# Optional: Capture evidence
|
|
57
|
+
agent-browser screenshot /tmp/form-result.png
|
|
58
|
+
echo "Screenshot saved: /tmp/form-result.png"
|
|
59
|
+
|
|
60
|
+
# Cleanup
|
|
61
|
+
agent-browser close
|
|
62
|
+
echo "Done"
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: find-skills
|
|
3
|
+
description: Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Find Skills
|
|
7
|
+
|
|
8
|
+
This skill helps you discover and install skills from the open agent skills ecosystem.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Use this skill when the user:
|
|
13
|
+
|
|
14
|
+
- Asks "how do I do X" where X might be a common task with an existing skill
|
|
15
|
+
- Says "find a skill for X" or "is there a skill for X"
|
|
16
|
+
- Asks "can you do X" where X is a specialized capability
|
|
17
|
+
- Expresses interest in extending agent capabilities
|
|
18
|
+
- Wants to search for tools, templates, or workflows
|
|
19
|
+
- Mentions they wish they had help with a specific domain (design, testing, deployment, etc.)
|
|
20
|
+
|
|
21
|
+
## OpenBot: Install to Correct Path
|
|
22
|
+
|
|
23
|
+
When you have the **install_skill** tool available, you are in OpenBot. Always use **install_skill** with the skill URL to install—do not run `npx skills add` in the terminal. The tool installs to the **current agent's workspace** (the same place as "手动安装" in that agent's config). For global installs, the user should use the app's global skills management and manual install there.
|
|
24
|
+
|
|
25
|
+
## What is the Skills CLI?
|
|
26
|
+
|
|
27
|
+
The Skills CLI (`npx skills`) is the package manager for the open agent skills ecosystem. Skills are modular packages that extend agent capabilities with specialized knowledge, workflows, and tools.
|
|
28
|
+
|
|
29
|
+
**Key commands:**
|
|
30
|
+
|
|
31
|
+
- `npx skills find [query]` - Search for skills interactively or by keyword
|
|
32
|
+
- `npx skills add <package>` - Install a skill from GitHub or other sources
|
|
33
|
+
- `npx skills check` - Check for skill updates
|
|
34
|
+
- `npx skills update` - Update all installed skills
|
|
35
|
+
|
|
36
|
+
**Browse skills at:** https://skills.sh/
|
|
37
|
+
|
|
38
|
+
## How to Help Users Find Skills
|
|
39
|
+
|
|
40
|
+
### Step 1: Understand What They Need
|
|
41
|
+
|
|
42
|
+
When a user asks for help with something, identify:
|
|
43
|
+
|
|
44
|
+
1. The domain (e.g., React, testing, design, deployment)
|
|
45
|
+
2. The specific task (e.g., writing tests, creating animations, reviewing PRs)
|
|
46
|
+
3. Whether this is a common enough task that a skill likely exists
|
|
47
|
+
|
|
48
|
+
### Step 2: Search for Skills
|
|
49
|
+
|
|
50
|
+
Run the find command with a relevant query:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx skills find [query]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
For example:
|
|
57
|
+
|
|
58
|
+
- User asks "how do I make my React app faster?" → `npx skills find react performance`
|
|
59
|
+
- User asks "can you help me with PR reviews?" → `npx skills find pr review`
|
|
60
|
+
- User asks "I need to create a changelog" → `npx skills find changelog`
|
|
61
|
+
|
|
62
|
+
The command will return results like:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Install with npx skills add <owner/repo@skill>
|
|
66
|
+
|
|
67
|
+
vercel-labs/agent-skills@vercel-react-best-practices
|
|
68
|
+
└ https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 3: Present Options to the User
|
|
72
|
+
|
|
73
|
+
When you find relevant skills, present them to the user with:
|
|
74
|
+
|
|
75
|
+
1. The skill name and what it does
|
|
76
|
+
2. The install command they can run
|
|
77
|
+
3. A link to learn more at skills.sh
|
|
78
|
+
|
|
79
|
+
Example response:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
I found a skill that might help! The "vercel-react-best-practices" skill provides
|
|
83
|
+
React and Next.js performance optimization guidelines from Vercel Engineering.
|
|
84
|
+
|
|
85
|
+
To install it (in OpenBot use the install_skill tool with the URL; elsewhere run in terminal):
|
|
86
|
+
npx skills add vercel-labs/agent-skills@vercel-react-best-practices
|
|
87
|
+
|
|
88
|
+
Learn more: https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Step 4: Offer to Install
|
|
92
|
+
|
|
93
|
+
If the user wants to proceed, install the skill:
|
|
94
|
+
|
|
95
|
+
- **In OpenBot**: Use the **install_skill** tool with the skill URL (e.g. `owner/repo@skillName` or `owner/repo`). This installs to the **current agent's workspace** skills directory. Do **not** run `npx skills add` for installation in this app.
|
|
96
|
+
- **In other agents (Cursor, Codex, etc.)**: Run in the terminal:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx skills add <owner/repo@skill> -g -y
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The `-g` flag installs globally (user-level) and `-y` skips confirmation prompts.
|
|
103
|
+
|
|
104
|
+
## Common Skill Categories
|
|
105
|
+
|
|
106
|
+
When searching, consider these common categories:
|
|
107
|
+
|
|
108
|
+
| Category | Example Queries |
|
|
109
|
+
| --------------- | ---------------------------------------- |
|
|
110
|
+
| Web Development | react, nextjs, typescript, css, tailwind |
|
|
111
|
+
| Testing | testing, jest, playwright, e2e |
|
|
112
|
+
| DevOps | deploy, docker, kubernetes, ci-cd |
|
|
113
|
+
| Documentation | docs, readme, changelog, api-docs |
|
|
114
|
+
| Code Quality | review, lint, refactor, best-practices |
|
|
115
|
+
| Design | ui, ux, design-system, accessibility |
|
|
116
|
+
| Productivity | workflow, automation, git |
|
|
117
|
+
|
|
118
|
+
## Tips for Effective Searches
|
|
119
|
+
|
|
120
|
+
1. **Use specific keywords**: "react testing" is better than just "testing"
|
|
121
|
+
2. **Try alternative terms**: If "deploy" doesn't work, try "deployment" or "ci-cd"
|
|
122
|
+
3. **Check popular sources**: Many skills come from `vercel-labs/agent-skills` or `ComposioHQ/awesome-claude-skills`
|
|
123
|
+
|
|
124
|
+
## When No Skills Are Found
|
|
125
|
+
|
|
126
|
+
If no relevant skills exist:
|
|
127
|
+
|
|
128
|
+
1. Acknowledge that no existing skill was found
|
|
129
|
+
2. Offer to help with the task directly using your general capabilities
|
|
130
|
+
3. Suggest the user could create their own skill with `npx skills init`
|
|
131
|
+
|
|
132
|
+
Example:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
I searched for skills related to "xyz" but didn't find any matches.
|
|
136
|
+
I can still help you with this task directly! Would you like me to proceed?
|
|
137
|
+
|
|
138
|
+
If this is something you do often, you could create your own skill:
|
|
139
|
+
npx skills init my-xyz-skill
|
|
140
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: url-bookmark
|
|
3
|
+
description: 根据用户指令将 URL 保存为收藏,并匹配系统中已维护的标签。当用户说「收藏这个链接」「把这条存到技术标签」「保存网址」等时使用。先调用 get_bookmark_tags 获取可用标签列表,再根据用户意图选择匹配的标签,最后用 save_bookmark 保存。
|
|
4
|
+
allowed-tools: get_bookmark_tags, save_bookmark
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# URL 收藏技能
|
|
8
|
+
|
|
9
|
+
## 何时使用
|
|
10
|
+
|
|
11
|
+
当用户希望**保存一个链接/URL 到收藏**时使用本技能,例如:
|
|
12
|
+
|
|
13
|
+
- 「收藏这个链接」「把这条链接存一下」
|
|
14
|
+
- 「把这个网址加到技术标签」「存到待读里」
|
|
15
|
+
- 「保存当前页面」「记一下这个地址」
|
|
16
|
+
|
|
17
|
+
## 工作流程
|
|
18
|
+
|
|
19
|
+
1. **获取可用标签**:先调用工具 `get_bookmark_tags`,获取系统中已维护的标签列表(用户在「设置 → 标签管理」中维护)。
|
|
20
|
+
2. **理解用户意图**:从用户话里提取:
|
|
21
|
+
- 要收藏的 **URL**(用户可能直接给出,或说「当前页面」「刚发的那条」等,需结合上下文确定);
|
|
22
|
+
- 用户指定的**标签**(如「技术」「待读」),须与 `get_bookmark_tags` 返回的标签名**完全一致**;若用户未指定,可根据内容推断一个已有标签或留空。
|
|
23
|
+
3. **保存收藏**:调用工具 `save_bookmark`,传入:
|
|
24
|
+
- `url`:必填,要收藏的链接;
|
|
25
|
+
- `title`:可选,可取自页面标题或用户描述;
|
|
26
|
+
- `tagNames`:可选,从可用标签中选出的名称数组(须与系统标签一致)。
|
|
27
|
+
|
|
28
|
+
## 工具说明
|
|
29
|
+
|
|
30
|
+
- **get_bookmark_tags**:无参数。返回当前可用的标签名称列表,供后续匹配。
|
|
31
|
+
- **save_bookmark**:参数 `url`(必填)、`title`(可选)、`tagNames`(可选,字符串数组)。标签名必须来自 get_bookmark_tags,否则不会关联成功。
|
|
32
|
+
|
|
33
|
+
## 注意
|
|
34
|
+
|
|
35
|
+
- 标签由用户在「设置 → 标签管理」中维护;若尚无标签,可只保存 URL,不传 `tagNames`。
|
|
36
|
+
- 用户说「存到某某分类」时,将「某某」与 get_bookmark_tags 返回的标签名做匹配(同义或相近即可选对应标签)。
|