sparkecoder 0.1.114 → 0.1.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +42 -0
- package/dist/agent/index.js.map +1 -1
- package/dist/cli.js +477 -93
- package/dist/cli.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/{index-Bi8Ek02A.d.ts → index-Biy5JTop.d.ts} +104 -104
- package/dist/index.d.ts +5 -5
- package/dist/index.js +293 -64
- package/dist/index.js.map +1 -1
- package/dist/{schema-ecQSnCMz.d.ts → schema-CYSKJZ3m.d.ts} +3 -3
- package/dist/{search-DOzC4ojH.d.ts → search-CVVfuBPZ.d.ts} +4 -4
- package/dist/server/index.js +293 -64
- package/dist/server/index.js.map +1 -1
- package/dist/skills/default/computer-use.md +27 -13
- package/dist/skills/default/recording.md +71 -42
- package/dist/tools/index.d.ts +3 -3
- package/package.json +1 -1
- package/src/skills/default/computer-use.md +27 -13
- package/src/skills/default/recording.md +71 -42
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/agents/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/session/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/(main)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.html +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_lucide-react_dist_esm_icons_7340c8b3._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__f3e6443f._.js +15 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_41927ef5._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_settings_page_tsx_eb320e07._.js +1 -1
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/web/.next/static/chunks/2c3c1d478808e4e4.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/3b0501ec3249235f.js +7 -0
- package/web/.next/standalone/web/.next/static/chunks/44c575e006ddb992.js +13 -0
- package/web/.next/standalone/web/.next/static/chunks/9a3afb48c245fb2a.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/b3bc7244f3477729.css +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/2c3c1d478808e4e4.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/3b0501ec3249235f.js +7 -0
- package/web/.next/standalone/web/.next/static/static/chunks/44c575e006ddb992.js +13 -0
- package/web/.next/standalone/web/.next/static/static/chunks/9a3afb48c245fb2a.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/b3bc7244f3477729.css +1 -0
- package/web/.next/standalone/web/src/app/(main)/settings/page.tsx +255 -3
- package/web/.next/static/chunks/2c3c1d478808e4e4.js +1 -0
- package/web/.next/static/chunks/3b0501ec3249235f.js +7 -0
- package/web/.next/static/chunks/44c575e006ddb992.js +13 -0
- package/web/.next/static/chunks/9a3afb48c245fb2a.js +1 -0
- package/web/.next/static/chunks/b3bc7244f3477729.css +1 -0
- package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_lucide-react_dist_esm_icons_50c2f239._.js +0 -3
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__6097da17._.js +0 -15
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_3b9a2423._.js +0 -3
- package/web/.next/standalone/web/.next/static/chunks/60359bdd369c0c72.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/a189cacf6d83cf0b.js +0 -13
- package/web/.next/standalone/web/.next/static/chunks/bef6931fdd8428c8.js +0 -1
- package/web/.next/standalone/web/.next/static/chunks/c1f73b3fa4353c31.css +0 -1
- package/web/.next/standalone/web/.next/static/chunks/fbdcbd65f9a38f4b.js +0 -7
- package/web/.next/standalone/web/.next/static/static/chunks/60359bdd369c0c72.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/a189cacf6d83cf0b.js +0 -13
- package/web/.next/standalone/web/.next/static/static/chunks/bef6931fdd8428c8.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/c1f73b3fa4353c31.css +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/fbdcbd65f9a38f4b.js +0 -7
- package/web/.next/static/chunks/60359bdd369c0c72.js +0 -1
- package/web/.next/static/chunks/a189cacf6d83cf0b.js +0 -13
- package/web/.next/static/chunks/bef6931fdd8428c8.js +0 -1
- package/web/.next/static/chunks/c1f73b3fa4353c31.css +0 -1
- package/web/.next/static/chunks/fbdcbd65f9a38f4b.js +0 -7
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_ssgManifest.js +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_buildManifest.js +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → 7tYFi20tEUZNGXmy2DJ1K}/_ssgManifest.js +0 -0
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
name: Computer Use
|
|
3
3
|
description: Anthropic's beta computer use tool — drive the actual macOS desktop via screenshots, clicks, keystrokes, and scroll. macOS only.
|
|
4
4
|
platforms: ["darwin"]
|
|
5
|
+
version: 2
|
|
6
|
+
lastUpdated: "2026-05-21"
|
|
5
7
|
---
|
|
6
8
|
|
|
9
|
+
> **v2 (2026-05-21).** Two changes from v1:
|
|
10
|
+
> - Reordered so the "computer use is a LAST RESORT — prefer bash → browser skill" priority sits at the top instead of buried.
|
|
11
|
+
> - Replaced the `screencapture -v -V N` inline recording recipe with `sparkecoder record start/stop`. **If a plan you wrote (or were given) uses raw `screencapture -V N` to record a task, replace it with the helper — `-V N` is a fixed timeout that cuts off long tasks mid-way, which the helper avoids.**
|
|
12
|
+
|
|
13
|
+
|
|
7
14
|
# Computer Use Skill
|
|
8
15
|
|
|
9
16
|
Anthropic's `computer` tool gives Claude direct control of the actual macOS desktop — take screenshots, click/type/scroll at pixel coordinates, drive any app. Real desktop automation.
|
|
@@ -154,23 +161,30 @@ Coordinates are in the **logical points** of the primary display — same coordi
|
|
|
154
161
|
|
|
155
162
|
## Record what you're doing (default ON)
|
|
156
163
|
|
|
157
|
-
Computer-use sessions are *visual* — the user can't see the screen you're driving, only your text summary. **Record almost every computer-use task** so the user can replay it.
|
|
164
|
+
Computer-use sessions are *visual* — the user can't see the screen you're driving, only your text summary. **Record almost every computer-use task** so the user can replay it. Use the built-in `sparkecoder record` helper which manages start/stop properly so the recording covers the **entire task**, not just a fixed-time window:
|
|
158
165
|
|
|
159
166
|
```bash
|
|
160
|
-
# At the
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
# 1. At the START of the task, BEFORE your first `computer` action:
|
|
168
|
+
REC=$(sparkecoder record start --name "calculator-demo")
|
|
169
|
+
# REC is JSON: {"id":"rec-abc123","path":"~/recordings/rec-abc123-calculator-demo.mov","pid":12345}
|
|
170
|
+
REC_ID=$(echo "$REC" | jq -r .id)
|
|
171
|
+
REC_PATH=$(echo "$REC" | jq -r .path)
|
|
172
|
+
echo "Recording started: $REC_PATH (id=$REC_ID)"
|
|
173
|
+
|
|
174
|
+
# 2. ... do all your computer-use actions (open apps, click, type, etc.) ...
|
|
175
|
+
|
|
176
|
+
# 3. At the END (success OR failure), stop the recording:
|
|
177
|
+
sparkecoder record stop "$REC_ID"
|
|
178
|
+
# → JSON: {"id":"...","path":"...","durationSec":42,"sizeMb":18.4,"ok":true}
|
|
172
179
|
```
|
|
173
180
|
|
|
181
|
+
Why use `sparkecoder record` instead of `screencapture -V 60` directly:
|
|
182
|
+
|
|
183
|
+
- `-V <seconds>` is a fixed timeout — if your task takes longer than the guess, the recording ends mid-task and you get a partial. The helper has no timeout; it records until you explicitly stop it.
|
|
184
|
+
- The helper tracks PIDs in state so `sparkecoder record stop-all` can clean up if something crashes.
|
|
185
|
+
- Works on both macOS (screencapture) and Linux (ffmpeg x11grab) with the same command.
|
|
186
|
+
- Returns the file path as JSON, so you can include it in your final result without guessing.
|
|
187
|
+
|
|
174
188
|
Default behavior:
|
|
175
189
|
|
|
176
190
|
- **Always record** short / visually interesting tasks (open an app, click around, drag/drop, fill a form, demos, "show me X working").
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
name: Recording
|
|
3
3
|
description: Record terminal sessions (asciinema, anywhere) or screen video (macOS / Linux with X) while a task runs so the user can replay what happened. Useful for demos, debugging visual bugs, capturing computer-use sessions, and producing evidence the task actually did what it claims.
|
|
4
4
|
platforms: ["darwin", "linux"]
|
|
5
|
+
version: 2
|
|
6
|
+
lastUpdated: "2026-05-21"
|
|
5
7
|
---
|
|
6
8
|
|
|
9
|
+
> **v2 (2026-05-21).** This skill replaced the legacy `screencapture -v -V N` recipe with `sparkecoder record start/stop` helpers because the timed flag was producing partial recordings (the agent had to guess the duration). If you ever see a plan that includes literal `screencapture -V N` for a task-bounded recording, **that plan is stale — use `sparkecoder record` instead.**
|
|
10
|
+
|
|
11
|
+
|
|
7
12
|
# Recording Skill
|
|
8
13
|
|
|
9
14
|
Sometimes a task is best explained by *showing* it. This skill teaches you to record a **terminal session** or **screen video** while you work, then hand the file to the user.
|
|
@@ -22,6 +27,42 @@ Skip recording when:
|
|
|
22
27
|
- The task is purely textual (reading/writing files, code analysis). The chat transcript already has everything.
|
|
23
28
|
- Recording would capture sensitive content (passwords on screen, private DMs, customer data). Ask first.
|
|
24
29
|
|
|
30
|
+
## Screen recording — use `sparkecoder record` (preferred)
|
|
31
|
+
|
|
32
|
+
The built-in helper handles start/stop reliably so the recording covers the WHOLE task, not a fixed time window. It tracks PIDs in state, works on macOS + Linux with the same interface, and returns JSON you can parse.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Start: returns {id, path, pid}
|
|
36
|
+
REC=$(sparkecoder record start --name "calculator-demo")
|
|
37
|
+
REC_ID=$(echo "$REC" | jq -r .id)
|
|
38
|
+
REC_PATH=$(echo "$REC" | jq -r .path)
|
|
39
|
+
|
|
40
|
+
# ... do work ...
|
|
41
|
+
|
|
42
|
+
# Stop: returns {id, path, durationSec, sizeMb, ok}
|
|
43
|
+
sparkecoder record stop "$REC_ID"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Other operations:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
sparkecoder record list # list active recordings (auto-prunes dead pids)
|
|
50
|
+
sparkecoder record stop-all # stop everything (cleanup)
|
|
51
|
+
sparkecoder record start --dir /custom/path --name my-task
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Storage: defaults to `~/recordings/`. Files are named `rec-<id>[-<name>].<mov|mp4>`.
|
|
55
|
+
|
|
56
|
+
### Why not `screencapture -V N` or raw `ffmpeg` backgrounded?
|
|
57
|
+
|
|
58
|
+
You can — but you have to:
|
|
59
|
+
- guess the right `-V` timeout (too short = partial, too long = wasted disk),
|
|
60
|
+
- track the PID yourself for `kill -INT`,
|
|
61
|
+
- pick the right tool per OS,
|
|
62
|
+
- and clean up zombie processes if you crash mid-task.
|
|
63
|
+
|
|
64
|
+
`sparkecoder record` does all of that. Reach for raw `screencapture` / `ffmpeg` only if you need specific flags the helper doesn't expose (custom display, rectangle crop, audio mux).
|
|
65
|
+
|
|
25
66
|
## Terminal recording — asciinema
|
|
26
67
|
|
|
27
68
|
`asciinema` records the **content of a terminal session** as a tiny `.cast` text file. It's a fraction of the size of video, plays in any browser via [asciinema-player](https://github.com/asciinema/asciinema-player), and the output is also greppable.
|
|
@@ -85,49 +126,33 @@ curl -fsS -X POST "${SPARKECODER_REMOTE_URL}/storage/upload" \
|
|
|
85
126
|
-F "file=@${RECORDING}" | jq .url
|
|
86
127
|
```
|
|
87
128
|
|
|
88
|
-
##
|
|
129
|
+
## Advanced: raw `screencapture` / `ffmpeg` (use only when the helper isn't enough)
|
|
89
130
|
|
|
90
|
-
|
|
131
|
+
Prefer `sparkecoder record` (above) for almost everything. Reach for raw tools only when you need flags the helper doesn't expose: rectangle crop, specific display, audio mux, custom frame rate.
|
|
91
132
|
|
|
92
133
|
### Requirements
|
|
93
134
|
|
|
94
|
-
- **Screen Recording permission** for the agent's parent process
|
|
95
|
-
-
|
|
135
|
+
- macOS: **Screen Recording permission** for the agent's parent process. `sparkecoder check-permissions` verifies; `sparkecoder request-permissions` opens the right System Settings pane.
|
|
136
|
+
- Linux: `ffmpeg` installed (`sudo apt-get install -y ffmpeg`), and a running X server with the right `DISPLAY` env var.
|
|
96
137
|
|
|
97
|
-
###
|
|
138
|
+
### macOS `screencapture` flags
|
|
98
139
|
|
|
99
140
|
```bash
|
|
100
|
-
#
|
|
101
|
-
screencapture -v ~/recordings/
|
|
102
|
-
REC_PID=$!
|
|
103
|
-
|
|
104
|
-
# ... do work via computer-use, bash, etc. ...
|
|
141
|
+
# Crop to a rectangle (x,y,w,h):
|
|
142
|
+
screencapture -v -R 100,100,800,600 -C ~/recordings/clip.mov
|
|
105
143
|
|
|
106
|
-
#
|
|
107
|
-
|
|
108
|
-
wait $REC_PID 2>/dev/null
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Useful flags:
|
|
112
|
-
|
|
113
|
-
- `-V <seconds>` — stop automatically after this many seconds (no need for kill).
|
|
114
|
-
- `-R x,y,w,h` — record just a rectangle.
|
|
115
|
-
- `-C` — also capture mouse cursor (off by default).
|
|
116
|
-
- `-G <displayID>` — pick a specific display (run `system_profiler SPDisplaysDataType` to list).
|
|
117
|
-
- `-T <seconds>` — pre-roll countdown before starting.
|
|
144
|
+
# Pick a specific display (run `system_profiler SPDisplaysDataType` to list ids):
|
|
145
|
+
screencapture -v -G <displayID> -C ~/recordings/clip.mov
|
|
118
146
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
screencapture -v -V 30 -C ~/recordings/full-$(date +%s).mov
|
|
147
|
+
# Auto-stop after N seconds (avoid this for task-bounded recordings; use the
|
|
148
|
+
# helper instead so the recording covers the whole task):
|
|
149
|
+
screencapture -v -V 30 -C ~/recordings/clip.mov
|
|
123
150
|
```
|
|
124
151
|
|
|
125
|
-
|
|
152
|
+
### Linux `ffmpeg` x11grab
|
|
126
153
|
|
|
127
154
|
```bash
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
# Record the X display. Adjust :0.0 / resolution for your setup.
|
|
155
|
+
# Capture the X display (size matches the screen):
|
|
131
156
|
ffmpeg -y -f x11grab -framerate 25 -video_size 1920x1080 -i :0.0 \
|
|
132
157
|
-c:v libx264 -preset veryfast -pix_fmt yuv420p \
|
|
133
158
|
~/recordings/screen-$(date +%s).mp4
|
|
@@ -141,32 +166,36 @@ On a headless server with no X, screen recording isn't meaningful — record the
|
|
|
141
166
|
|
|
142
167
|
| You want to … | Use |
|
|
143
168
|
|---|---|
|
|
169
|
+
| Show what a computer-use task did on the desktop | `sparkecoder record start` → work → `record stop <id>` |
|
|
144
170
|
| Capture a CLI demo, share a link | `asciinema rec → upload` |
|
|
145
|
-
| Show what a computer-use task did on the desktop | `screencapture -v -V <seconds>` (macOS) |
|
|
146
|
-
| Debug a flaky GUI test on Linux CI | `ffmpeg -f x11grab` around the test run |
|
|
147
171
|
| Capture a single command's output verbatim | `asciinema rec --command "cmd" out.cast` |
|
|
148
|
-
|
|
|
172
|
+
| Debug a flaky GUI test (any OS) | `sparkecoder record start` around the test run |
|
|
173
|
+
| Both terminal AND screen at once | `sparkecoder record start` + `asciinema rec` in parallel |
|
|
149
174
|
|
|
150
175
|
## Best practices
|
|
151
176
|
|
|
152
177
|
1. **Always announce.** Before starting a recording, post a short message to the user: "Starting screen recording for the Calculator demo." So they can intervene if it'd capture something sensitive.
|
|
153
|
-
2. **
|
|
154
|
-
3. **
|
|
155
|
-
4. **
|
|
178
|
+
2. **Use `sparkecoder record` for screen video.** It removes every footgun the raw tools have (no fixed timeout that cuts the task off mid-way, no PID juggling, no per-OS branching). Reach for raw `screencapture` / `ffmpeg` only when you need flags the helper doesn't expose (region crop, custom display, audio).
|
|
179
|
+
3. **Bracket the WHOLE task.** `record start` *before* your first work command; `record stop <id>` *after* the very last one. Don't bracket each step individually — you'll lose context between clips.
|
|
180
|
+
4. **Stop on exit, success OR failure.** Always run `record stop <id>` at the end of your task, even on errors. Otherwise the recorder keeps writing until `record stop-all` (or a reboot) catches it. The duration / size returned by `stop` is also useful in your final summary.
|
|
156
181
|
5. **Don't record secrets.** Refuse to record if the screen contains visible passwords, 1Password vaults, customer PII, etc. Ask the user to close those windows first.
|
|
157
|
-
6. **
|
|
158
|
-
7. **
|
|
182
|
+
6. **Clean up after yourself.** If a recording is no longer needed, `rm` it — videos are big.
|
|
183
|
+
7. **Always mention the file in your final message.** "Recording saved to `<path>`" or, better, upload via `/storage/upload` and post the `/f/<id>` URL so Slack/etc. unfurls it inline.
|
|
159
184
|
|
|
160
185
|
## Returning the recording in your final task summary
|
|
161
186
|
|
|
162
|
-
For a **task worker** that captured a recording, include the
|
|
187
|
+
For a **task worker** that captured a recording, include the structured fields below in your `result` so the orchestrator can route it back to the user:
|
|
163
188
|
|
|
164
189
|
```ts
|
|
165
190
|
{
|
|
166
191
|
"summary": "Opened Calculator, typed 2+2, hit Return. Got 4.",
|
|
167
|
-
"
|
|
168
|
-
|
|
192
|
+
"recording": {
|
|
193
|
+
"path": "/Users/me/recordings/rec-abc123-calculator-demo.mov",
|
|
194
|
+
"durationSec": 42,
|
|
195
|
+
"sizeMb": 18.4,
|
|
196
|
+
"description": "Full screen recording of the Calculator interaction"
|
|
197
|
+
}
|
|
169
198
|
}
|
|
170
199
|
```
|
|
171
200
|
|
|
172
|
-
The orchestrator can then
|
|
201
|
+
The orchestrator can then upload that path via `/storage/upload` and post the `/f/<id>` URL into Slack (or whatever channel the original request came in on) — Slack unfurls it inline as a video preview.
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as ai from 'ai';
|
|
2
2
|
import { ToolSet } from 'ai';
|
|
3
|
-
import { B as BashToolProgress, W as WriteFileProgress, S as SearchToolProgress } from '../search-
|
|
4
|
-
export { b as BashToolOptions, d as SearchToolOptions, e as WriteFileToolOptions, c as createBashTool, f as createSearchTool, a as createWriteFileTool } from '../search-
|
|
3
|
+
import { B as BashToolProgress, W as WriteFileProgress, S as SearchToolProgress } from '../search-CVVfuBPZ.js';
|
|
4
|
+
export { b as BashToolOptions, d as SearchToolOptions, e as WriteFileToolOptions, c as createBashTool, f as createSearchTool, a as createWriteFileTool } from '../search-CVVfuBPZ.js';
|
|
5
5
|
|
|
6
6
|
interface TaskCompletionSignal {
|
|
7
7
|
status: 'completed' | 'failed';
|
|
@@ -110,7 +110,7 @@ interface TodoToolOptions {
|
|
|
110
110
|
workingDirectory: string;
|
|
111
111
|
}
|
|
112
112
|
declare function createTodoTool(options: TodoToolOptions): ai.Tool<{
|
|
113
|
-
action: "
|
|
113
|
+
action: "clear" | "add" | "list" | "mark" | "save_plan" | "list_plans" | "get_plan" | "delete_plan";
|
|
114
114
|
status?: "completed" | "pending" | "in_progress" | "cancelled" | undefined;
|
|
115
115
|
items?: {
|
|
116
116
|
content: string;
|
package/package.json
CHANGED
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
name: Computer Use
|
|
3
3
|
description: Anthropic's beta computer use tool — drive the actual macOS desktop via screenshots, clicks, keystrokes, and scroll. macOS only.
|
|
4
4
|
platforms: ["darwin"]
|
|
5
|
+
version: 2
|
|
6
|
+
lastUpdated: "2026-05-21"
|
|
5
7
|
---
|
|
6
8
|
|
|
9
|
+
> **v2 (2026-05-21).** Two changes from v1:
|
|
10
|
+
> - Reordered so the "computer use is a LAST RESORT — prefer bash → browser skill" priority sits at the top instead of buried.
|
|
11
|
+
> - Replaced the `screencapture -v -V N` inline recording recipe with `sparkecoder record start/stop`. **If a plan you wrote (or were given) uses raw `screencapture -V N` to record a task, replace it with the helper — `-V N` is a fixed timeout that cuts off long tasks mid-way, which the helper avoids.**
|
|
12
|
+
|
|
13
|
+
|
|
7
14
|
# Computer Use Skill
|
|
8
15
|
|
|
9
16
|
Anthropic's `computer` tool gives Claude direct control of the actual macOS desktop — take screenshots, click/type/scroll at pixel coordinates, drive any app. Real desktop automation.
|
|
@@ -154,23 +161,30 @@ Coordinates are in the **logical points** of the primary display — same coordi
|
|
|
154
161
|
|
|
155
162
|
## Record what you're doing (default ON)
|
|
156
163
|
|
|
157
|
-
Computer-use sessions are *visual* — the user can't see the screen you're driving, only your text summary. **Record almost every computer-use task** so the user can replay it.
|
|
164
|
+
Computer-use sessions are *visual* — the user can't see the screen you're driving, only your text summary. **Record almost every computer-use task** so the user can replay it. Use the built-in `sparkecoder record` helper which manages start/stop properly so the recording covers the **entire task**, not just a fixed-time window:
|
|
158
165
|
|
|
159
166
|
```bash
|
|
160
|
-
# At the
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
# 1. At the START of the task, BEFORE your first `computer` action:
|
|
168
|
+
REC=$(sparkecoder record start --name "calculator-demo")
|
|
169
|
+
# REC is JSON: {"id":"rec-abc123","path":"~/recordings/rec-abc123-calculator-demo.mov","pid":12345}
|
|
170
|
+
REC_ID=$(echo "$REC" | jq -r .id)
|
|
171
|
+
REC_PATH=$(echo "$REC" | jq -r .path)
|
|
172
|
+
echo "Recording started: $REC_PATH (id=$REC_ID)"
|
|
173
|
+
|
|
174
|
+
# 2. ... do all your computer-use actions (open apps, click, type, etc.) ...
|
|
175
|
+
|
|
176
|
+
# 3. At the END (success OR failure), stop the recording:
|
|
177
|
+
sparkecoder record stop "$REC_ID"
|
|
178
|
+
# → JSON: {"id":"...","path":"...","durationSec":42,"sizeMb":18.4,"ok":true}
|
|
172
179
|
```
|
|
173
180
|
|
|
181
|
+
Why use `sparkecoder record` instead of `screencapture -V 60` directly:
|
|
182
|
+
|
|
183
|
+
- `-V <seconds>` is a fixed timeout — if your task takes longer than the guess, the recording ends mid-task and you get a partial. The helper has no timeout; it records until you explicitly stop it.
|
|
184
|
+
- The helper tracks PIDs in state so `sparkecoder record stop-all` can clean up if something crashes.
|
|
185
|
+
- Works on both macOS (screencapture) and Linux (ffmpeg x11grab) with the same command.
|
|
186
|
+
- Returns the file path as JSON, so you can include it in your final result without guessing.
|
|
187
|
+
|
|
174
188
|
Default behavior:
|
|
175
189
|
|
|
176
190
|
- **Always record** short / visually interesting tasks (open an app, click around, drag/drop, fill a form, demos, "show me X working").
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
name: Recording
|
|
3
3
|
description: Record terminal sessions (asciinema, anywhere) or screen video (macOS / Linux with X) while a task runs so the user can replay what happened. Useful for demos, debugging visual bugs, capturing computer-use sessions, and producing evidence the task actually did what it claims.
|
|
4
4
|
platforms: ["darwin", "linux"]
|
|
5
|
+
version: 2
|
|
6
|
+
lastUpdated: "2026-05-21"
|
|
5
7
|
---
|
|
6
8
|
|
|
9
|
+
> **v2 (2026-05-21).** This skill replaced the legacy `screencapture -v -V N` recipe with `sparkecoder record start/stop` helpers because the timed flag was producing partial recordings (the agent had to guess the duration). If you ever see a plan that includes literal `screencapture -V N` for a task-bounded recording, **that plan is stale — use `sparkecoder record` instead.**
|
|
10
|
+
|
|
11
|
+
|
|
7
12
|
# Recording Skill
|
|
8
13
|
|
|
9
14
|
Sometimes a task is best explained by *showing* it. This skill teaches you to record a **terminal session** or **screen video** while you work, then hand the file to the user.
|
|
@@ -22,6 +27,42 @@ Skip recording when:
|
|
|
22
27
|
- The task is purely textual (reading/writing files, code analysis). The chat transcript already has everything.
|
|
23
28
|
- Recording would capture sensitive content (passwords on screen, private DMs, customer data). Ask first.
|
|
24
29
|
|
|
30
|
+
## Screen recording — use `sparkecoder record` (preferred)
|
|
31
|
+
|
|
32
|
+
The built-in helper handles start/stop reliably so the recording covers the WHOLE task, not a fixed time window. It tracks PIDs in state, works on macOS + Linux with the same interface, and returns JSON you can parse.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Start: returns {id, path, pid}
|
|
36
|
+
REC=$(sparkecoder record start --name "calculator-demo")
|
|
37
|
+
REC_ID=$(echo "$REC" | jq -r .id)
|
|
38
|
+
REC_PATH=$(echo "$REC" | jq -r .path)
|
|
39
|
+
|
|
40
|
+
# ... do work ...
|
|
41
|
+
|
|
42
|
+
# Stop: returns {id, path, durationSec, sizeMb, ok}
|
|
43
|
+
sparkecoder record stop "$REC_ID"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Other operations:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
sparkecoder record list # list active recordings (auto-prunes dead pids)
|
|
50
|
+
sparkecoder record stop-all # stop everything (cleanup)
|
|
51
|
+
sparkecoder record start --dir /custom/path --name my-task
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Storage: defaults to `~/recordings/`. Files are named `rec-<id>[-<name>].<mov|mp4>`.
|
|
55
|
+
|
|
56
|
+
### Why not `screencapture -V N` or raw `ffmpeg` backgrounded?
|
|
57
|
+
|
|
58
|
+
You can — but you have to:
|
|
59
|
+
- guess the right `-V` timeout (too short = partial, too long = wasted disk),
|
|
60
|
+
- track the PID yourself for `kill -INT`,
|
|
61
|
+
- pick the right tool per OS,
|
|
62
|
+
- and clean up zombie processes if you crash mid-task.
|
|
63
|
+
|
|
64
|
+
`sparkecoder record` does all of that. Reach for raw `screencapture` / `ffmpeg` only if you need specific flags the helper doesn't expose (custom display, rectangle crop, audio mux).
|
|
65
|
+
|
|
25
66
|
## Terminal recording — asciinema
|
|
26
67
|
|
|
27
68
|
`asciinema` records the **content of a terminal session** as a tiny `.cast` text file. It's a fraction of the size of video, plays in any browser via [asciinema-player](https://github.com/asciinema/asciinema-player), and the output is also greppable.
|
|
@@ -85,49 +126,33 @@ curl -fsS -X POST "${SPARKECODER_REMOTE_URL}/storage/upload" \
|
|
|
85
126
|
-F "file=@${RECORDING}" | jq .url
|
|
86
127
|
```
|
|
87
128
|
|
|
88
|
-
##
|
|
129
|
+
## Advanced: raw `screencapture` / `ffmpeg` (use only when the helper isn't enough)
|
|
89
130
|
|
|
90
|
-
|
|
131
|
+
Prefer `sparkecoder record` (above) for almost everything. Reach for raw tools only when you need flags the helper doesn't expose: rectangle crop, specific display, audio mux, custom frame rate.
|
|
91
132
|
|
|
92
133
|
### Requirements
|
|
93
134
|
|
|
94
|
-
- **Screen Recording permission** for the agent's parent process
|
|
95
|
-
-
|
|
135
|
+
- macOS: **Screen Recording permission** for the agent's parent process. `sparkecoder check-permissions` verifies; `sparkecoder request-permissions` opens the right System Settings pane.
|
|
136
|
+
- Linux: `ffmpeg` installed (`sudo apt-get install -y ffmpeg`), and a running X server with the right `DISPLAY` env var.
|
|
96
137
|
|
|
97
|
-
###
|
|
138
|
+
### macOS `screencapture` flags
|
|
98
139
|
|
|
99
140
|
```bash
|
|
100
|
-
#
|
|
101
|
-
screencapture -v ~/recordings/
|
|
102
|
-
REC_PID=$!
|
|
103
|
-
|
|
104
|
-
# ... do work via computer-use, bash, etc. ...
|
|
141
|
+
# Crop to a rectangle (x,y,w,h):
|
|
142
|
+
screencapture -v -R 100,100,800,600 -C ~/recordings/clip.mov
|
|
105
143
|
|
|
106
|
-
#
|
|
107
|
-
|
|
108
|
-
wait $REC_PID 2>/dev/null
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Useful flags:
|
|
112
|
-
|
|
113
|
-
- `-V <seconds>` — stop automatically after this many seconds (no need for kill).
|
|
114
|
-
- `-R x,y,w,h` — record just a rectangle.
|
|
115
|
-
- `-C` — also capture mouse cursor (off by default).
|
|
116
|
-
- `-G <displayID>` — pick a specific display (run `system_profiler SPDisplaysDataType` to list).
|
|
117
|
-
- `-T <seconds>` — pre-roll countdown before starting.
|
|
144
|
+
# Pick a specific display (run `system_profiler SPDisplaysDataType` to list ids):
|
|
145
|
+
screencapture -v -G <displayID> -C ~/recordings/clip.mov
|
|
118
146
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
screencapture -v -V 30 -C ~/recordings/full-$(date +%s).mov
|
|
147
|
+
# Auto-stop after N seconds (avoid this for task-bounded recordings; use the
|
|
148
|
+
# helper instead so the recording covers the whole task):
|
|
149
|
+
screencapture -v -V 30 -C ~/recordings/clip.mov
|
|
123
150
|
```
|
|
124
151
|
|
|
125
|
-
|
|
152
|
+
### Linux `ffmpeg` x11grab
|
|
126
153
|
|
|
127
154
|
```bash
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
# Record the X display. Adjust :0.0 / resolution for your setup.
|
|
155
|
+
# Capture the X display (size matches the screen):
|
|
131
156
|
ffmpeg -y -f x11grab -framerate 25 -video_size 1920x1080 -i :0.0 \
|
|
132
157
|
-c:v libx264 -preset veryfast -pix_fmt yuv420p \
|
|
133
158
|
~/recordings/screen-$(date +%s).mp4
|
|
@@ -141,32 +166,36 @@ On a headless server with no X, screen recording isn't meaningful — record the
|
|
|
141
166
|
|
|
142
167
|
| You want to … | Use |
|
|
143
168
|
|---|---|
|
|
169
|
+
| Show what a computer-use task did on the desktop | `sparkecoder record start` → work → `record stop <id>` |
|
|
144
170
|
| Capture a CLI demo, share a link | `asciinema rec → upload` |
|
|
145
|
-
| Show what a computer-use task did on the desktop | `screencapture -v -V <seconds>` (macOS) |
|
|
146
|
-
| Debug a flaky GUI test on Linux CI | `ffmpeg -f x11grab` around the test run |
|
|
147
171
|
| Capture a single command's output verbatim | `asciinema rec --command "cmd" out.cast` |
|
|
148
|
-
|
|
|
172
|
+
| Debug a flaky GUI test (any OS) | `sparkecoder record start` around the test run |
|
|
173
|
+
| Both terminal AND screen at once | `sparkecoder record start` + `asciinema rec` in parallel |
|
|
149
174
|
|
|
150
175
|
## Best practices
|
|
151
176
|
|
|
152
177
|
1. **Always announce.** Before starting a recording, post a short message to the user: "Starting screen recording for the Calculator demo." So they can intervene if it'd capture something sensitive.
|
|
153
|
-
2. **
|
|
154
|
-
3. **
|
|
155
|
-
4. **
|
|
178
|
+
2. **Use `sparkecoder record` for screen video.** It removes every footgun the raw tools have (no fixed timeout that cuts the task off mid-way, no PID juggling, no per-OS branching). Reach for raw `screencapture` / `ffmpeg` only when you need flags the helper doesn't expose (region crop, custom display, audio).
|
|
179
|
+
3. **Bracket the WHOLE task.** `record start` *before* your first work command; `record stop <id>` *after* the very last one. Don't bracket each step individually — you'll lose context between clips.
|
|
180
|
+
4. **Stop on exit, success OR failure.** Always run `record stop <id>` at the end of your task, even on errors. Otherwise the recorder keeps writing until `record stop-all` (or a reboot) catches it. The duration / size returned by `stop` is also useful in your final summary.
|
|
156
181
|
5. **Don't record secrets.** Refuse to record if the screen contains visible passwords, 1Password vaults, customer PII, etc. Ask the user to close those windows first.
|
|
157
|
-
6. **
|
|
158
|
-
7. **
|
|
182
|
+
6. **Clean up after yourself.** If a recording is no longer needed, `rm` it — videos are big.
|
|
183
|
+
7. **Always mention the file in your final message.** "Recording saved to `<path>`" or, better, upload via `/storage/upload` and post the `/f/<id>` URL so Slack/etc. unfurls it inline.
|
|
159
184
|
|
|
160
185
|
## Returning the recording in your final task summary
|
|
161
186
|
|
|
162
|
-
For a **task worker** that captured a recording, include the
|
|
187
|
+
For a **task worker** that captured a recording, include the structured fields below in your `result` so the orchestrator can route it back to the user:
|
|
163
188
|
|
|
164
189
|
```ts
|
|
165
190
|
{
|
|
166
191
|
"summary": "Opened Calculator, typed 2+2, hit Return. Got 4.",
|
|
167
|
-
"
|
|
168
|
-
|
|
192
|
+
"recording": {
|
|
193
|
+
"path": "/Users/me/recordings/rec-abc123-calculator-demo.mov",
|
|
194
|
+
"durationSec": 42,
|
|
195
|
+
"sizeMb": 18.4,
|
|
196
|
+
"description": "Full screen recording of the Calculator interaction"
|
|
197
|
+
}
|
|
169
198
|
}
|
|
170
199
|
```
|
|
171
200
|
|
|
172
|
-
The orchestrator can then
|
|
201
|
+
The orchestrator can then upload that path via `/storage/upload` and post the `/f/<id>` URL into Slack (or whatever channel the original request came in on) — Slack unfurls it inline as a video preview.
|
package/web/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7tYFi20tEUZNGXmy2DJ1K
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7tYFi20tEUZNGXmy2DJ1K
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"static/chunks/a6dad97d9634a72d.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
10
|
+
"static/7tYFi20tEUZNGXmy2DJ1K/_ssgManifest.js",
|
|
11
|
+
"static/7tYFi20tEUZNGXmy2DJ1K/_buildManifest.js"
|
|
12
12
|
],
|
|
13
13
|
"rootMainFiles": [
|
|
14
14
|
"static/chunks/651e187cc15d66de.js",
|
|
@@ -367,8 +367,8 @@
|
|
|
367
367
|
"dynamicRoutes": {},
|
|
368
368
|
"notFoundRoutes": [],
|
|
369
369
|
"preview": {
|
|
370
|
-
"previewModeId": "
|
|
371
|
-
"previewModeSigningKey": "
|
|
372
|
-
"previewModeEncryptionKey": "
|
|
370
|
+
"previewModeId": "60a055950c038d9cddb29d26cac663f9",
|
|
371
|
+
"previewModeSigningKey": "0a7e7a6958aee86ea03b33539658770480092fec3b8b361f8052f14eeffad505",
|
|
372
|
+
"previewModeEncryptionKey": "272df7a631b86f8df27c2a06711e44f89ce19b2f913db7b37e85e1bc19271619"
|
|
373
373
|
}
|
|
374
374
|
}
|
package/web/.next/standalone/web/.next/server/app/(main)/agents/page_client-reference-manifest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
|
|
2
|
-
globalThis.__RSC_MANIFEST["/(main)/agents/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/web/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":488287,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":488287,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":174895,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":174895,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":683380,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":683380,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":808719,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":808719,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":824163,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":824163,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":349310,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":349310,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":151858,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":151858,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":552576,"name":"*","chunks":[],"async":false},"[project]/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":552576,"name":"*","chunks":[],"async":false},"[project]/web/src/components/api-init.tsx <module evaluation>":{"id":760800,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js"],"async":false},"[project]/web/src/components/api-init.tsx":{"id":760800,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js"],"async":false},"[project]/web/src/app/(main)/layout.tsx <module evaluation>":{"id":138134,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js"],"async":false},"[project]/web/src/app/(main)/layout.tsx":{"id":138134,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js"],"async":false},"[project]/web/src/app/(main)/agents/page.tsx <module evaluation>":{"id":455138,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js","/_next/static/chunks/03b5edce6d5b809e.js"],"async":false},"[project]/web/src/app/(main)/agents/page.tsx":{"id":455138,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js","/_next/static/chunks/03b5edce6d5b809e.js"],"async":false}},"ssrModuleMapping":{"488287":{"*":{"id":547492,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"174895":{"*":{"id":714433,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"683380":{"*":{"id":824449,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"808719":{"*":{"id":354833,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"824163":{"*":{"id":113588,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"349310":{"*":{"id":913578,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"151858":{"*":{"id":633121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"552576":{"*":{"id":261905,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__61a0b842._.js"],"async":false}},"760800":{"*":{"id":956805,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js"],"async":false}},"138134":{"*":{"id":126823,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js","server/chunks/ssr/[root-of-the-server]__c94db61a._.js","server/chunks/ssr/2374f_clsx_dist_clsx_mjs_da08f035._.js","server/chunks/ssr/web_4fe3c244._.js","server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js","server/chunks/ssr/web_90d4125e._.js","server/chunks/ssr/2374f_next_dist_bbe64674._.js","server/chunks/ssr/web_8e76ee8b._.js"],"async":false}},"455138":{"*":{"id":578999,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js","server/chunks/ssr/[root-of-the-server]__c94db61a._.js","server/chunks/ssr/2374f_clsx_dist_clsx_mjs_da08f035._.js","server/chunks/ssr/web_4fe3c244._.js","server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js","server/chunks/ssr/web_90d4125e._.js","server/chunks/ssr/2374f_next_dist_bbe64674._.js","server/chunks/ssr/web_8e76ee8b._.js","server/chunks/ssr/web_f7cf6b63._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"488287":{"*":{"id":786309,"name":"*","chunks":[],"async":false}},"174895":{"*":{"id":306660,"name":"*","chunks":[],"async":false}},"683380":{"*":{"id":52093,"name":"*","chunks":[],"async":false}},"808719":{"*":{"id":156801,"name":"*","chunks":[],"async":false}},"824163":{"*":{"id":551240,"name":"*","chunks":[],"async":false}},"349310":{"*":{"id":767168,"name":"*","chunks":[],"async":false}},"151858":{"*":{"id":215798,"name":"*","chunks":[],"async":false}},"552576":{"*":{"id":463741,"name":"*","chunks":[],"async":false}},"760800":{"*":{"id":317911,"name":"*","chunks":[],"async":false}},"138134":{"*":{"id":174916,"name":"*","chunks":[],"async":false}},"455138":{"*":{"id":599772,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/web/src/app/favicon.ico":[],"[project]/web/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/web/src/app/layout":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/c1f73b3fa4353c31.css","inlined":false}],"[project]/web/src/app/(main)/layout":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/c1f73b3fa4353c31.css","inlined":false}],"[project]/web/src/app/(main)/agents/page":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/c1f73b3fa4353c31.css","inlined":false}]},"entryJSFiles":{"[project]/web/src/app/favicon.ico":["static/chunks/9b5512fb633ef95d.js","static/chunks/0f1cf11540868e42.js"],"[project]/web/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/web/src/app/layout":["static/chunks/b203b9aa975135d3.js"],"[project]/web/src/app/(main)/layout":["static/chunks/b203b9aa975135d3.js","static/chunks/29dcecc3c2ca92b0.js","static/chunks/ea89ca7892d8c557.js","static/chunks/f0f19357f3fb7cf8.js","static/chunks/dc34aa94e57fa28e.js","static/chunks/699803c4fb2dd3fc.js","static/chunks/ea57058fc6ebf4d3.js"],"[project]/web/src/app/(main)/agents/page":["static/chunks/b203b9aa975135d3.js","static/chunks/29dcecc3c2ca92b0.js","static/chunks/ea89ca7892d8c557.js","static/chunks/f0f19357f3fb7cf8.js","static/chunks/dc34aa94e57fa28e.js","static/chunks/699803c4fb2dd3fc.js","static/chunks/ea57058fc6ebf4d3.js","static/chunks/03b5edce6d5b809e.js"]}}
|
|
2
|
+
globalThis.__RSC_MANIFEST["/(main)/agents/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/web/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":488287,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":488287,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":174895,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":174895,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":683380,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":683380,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":808719,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":808719,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":824163,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":824163,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":349310,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":349310,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":151858,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":151858,"name":"*","chunks":["/_next/static/chunks/9b5512fb633ef95d.js","/_next/static/chunks/0f1cf11540868e42.js"],"async":false},"[project]/web/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":552576,"name":"*","chunks":[],"async":false},"[project]/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":552576,"name":"*","chunks":[],"async":false},"[project]/web/src/components/api-init.tsx <module evaluation>":{"id":760800,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js"],"async":false},"[project]/web/src/components/api-init.tsx":{"id":760800,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js"],"async":false},"[project]/web/src/app/(main)/layout.tsx <module evaluation>":{"id":138134,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js"],"async":false},"[project]/web/src/app/(main)/layout.tsx":{"id":138134,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js"],"async":false},"[project]/web/src/app/(main)/agents/page.tsx <module evaluation>":{"id":455138,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js","/_next/static/chunks/03b5edce6d5b809e.js"],"async":false},"[project]/web/src/app/(main)/agents/page.tsx":{"id":455138,"name":"*","chunks":["/_next/static/chunks/b203b9aa975135d3.js","/_next/static/chunks/29dcecc3c2ca92b0.js","/_next/static/chunks/ea89ca7892d8c557.js","/_next/static/chunks/f0f19357f3fb7cf8.js","/_next/static/chunks/dc34aa94e57fa28e.js","/_next/static/chunks/699803c4fb2dd3fc.js","/_next/static/chunks/ea57058fc6ebf4d3.js","/_next/static/chunks/03b5edce6d5b809e.js"],"async":false}},"ssrModuleMapping":{"488287":{"*":{"id":547492,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"174895":{"*":{"id":714433,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"683380":{"*":{"id":824449,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"808719":{"*":{"id":354833,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"824163":{"*":{"id":113588,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"349310":{"*":{"id":913578,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"151858":{"*":{"id":633121,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1e06ddf7._.js","server/chunks/ssr/2374f_next_dist_esm_b9db965e._.js"],"async":false}},"552576":{"*":{"id":261905,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__61a0b842._.js"],"async":false}},"760800":{"*":{"id":956805,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js"],"async":false}},"138134":{"*":{"id":126823,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js","server/chunks/ssr/[root-of-the-server]__c94db61a._.js","server/chunks/ssr/2374f_clsx_dist_clsx_mjs_da08f035._.js","server/chunks/ssr/web_4fe3c244._.js","server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js","server/chunks/ssr/web_90d4125e._.js","server/chunks/ssr/2374f_next_dist_bbe64674._.js","server/chunks/ssr/web_8e76ee8b._.js"],"async":false}},"455138":{"*":{"id":578999,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__be5e2967._.js","server/chunks/ssr/[root-of-the-server]__c94db61a._.js","server/chunks/ssr/2374f_clsx_dist_clsx_mjs_da08f035._.js","server/chunks/ssr/web_4fe3c244._.js","server/chunks/ssr/web_src_app_(main)_layout_tsx_453f6492._.js","server/chunks/ssr/web_90d4125e._.js","server/chunks/ssr/2374f_next_dist_bbe64674._.js","server/chunks/ssr/web_8e76ee8b._.js","server/chunks/ssr/web_f7cf6b63._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"488287":{"*":{"id":786309,"name":"*","chunks":[],"async":false}},"174895":{"*":{"id":306660,"name":"*","chunks":[],"async":false}},"683380":{"*":{"id":52093,"name":"*","chunks":[],"async":false}},"808719":{"*":{"id":156801,"name":"*","chunks":[],"async":false}},"824163":{"*":{"id":551240,"name":"*","chunks":[],"async":false}},"349310":{"*":{"id":767168,"name":"*","chunks":[],"async":false}},"151858":{"*":{"id":215798,"name":"*","chunks":[],"async":false}},"552576":{"*":{"id":463741,"name":"*","chunks":[],"async":false}},"760800":{"*":{"id":317911,"name":"*","chunks":[],"async":false}},"138134":{"*":{"id":174916,"name":"*","chunks":[],"async":false}},"455138":{"*":{"id":599772,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/web/src/app/favicon.ico":[],"[project]/web/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/web/src/app/layout":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/b3bc7244f3477729.css","inlined":false}],"[project]/web/src/app/(main)/layout":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/b3bc7244f3477729.css","inlined":false}],"[project]/web/src/app/(main)/agents/page":[{"path":"static/chunks/a7d5d0791c8c6223.css","inlined":false},{"path":"static/chunks/b3bc7244f3477729.css","inlined":false}]},"entryJSFiles":{"[project]/web/src/app/favicon.ico":["static/chunks/9b5512fb633ef95d.js","static/chunks/0f1cf11540868e42.js"],"[project]/web/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/web/src/app/layout":["static/chunks/b203b9aa975135d3.js"],"[project]/web/src/app/(main)/layout":["static/chunks/b203b9aa975135d3.js","static/chunks/29dcecc3c2ca92b0.js","static/chunks/ea89ca7892d8c557.js","static/chunks/f0f19357f3fb7cf8.js","static/chunks/dc34aa94e57fa28e.js","static/chunks/699803c4fb2dd3fc.js","static/chunks/ea57058fc6ebf4d3.js"],"[project]/web/src/app/(main)/agents/page":["static/chunks/b203b9aa975135d3.js","static/chunks/29dcecc3c2ca92b0.js","static/chunks/ea89ca7892d8c557.js","static/chunks/f0f19357f3fb7cf8.js","static/chunks/dc34aa94e57fa28e.js","static/chunks/699803c4fb2dd3fc.js","static/chunks/ea57058fc6ebf4d3.js","static/chunks/03b5edce6d5b809e.js"]}}
|