@letta-ai/letta-code 0.31.11 → 0.31.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -14
- package/dist/agent-presets.js +3 -3
- package/dist/agent-presets.js.map +1 -1
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/types/agent/subagents/manager.d.ts +1 -1
- package/dist/types/tools/impl/task.d.ts +2 -2
- package/letta.js +165 -188
- package/package.json +1 -1
- package/scripts/source-file-size-baseline.json +1 -1
- package/skills/browser-use/SKILL.md +22 -61
- package/skills/messaging-agents/SKILL.md +17 -17
- package/skills/scheduling-tasks/SKILL.md +1 -1
- package/skills/submitting-feedback/SKILL.md +4 -2
- package/skills/teleporting-between-environments/SKILL.md +12 -12
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"src/cli/mods/local-mod-loader.test.ts": 1043,
|
|
22
22
|
"src/cli/reflection-transcript.test.ts": 1084,
|
|
23
23
|
"src/cli/subcommands/skills.ts": 1264,
|
|
24
|
-
"src/headless.ts":
|
|
24
|
+
"src/headless.ts": 4986,
|
|
25
25
|
"src/hooks/integration.test.ts": 1147,
|
|
26
26
|
"src/index.ts": 2773,
|
|
27
27
|
"src/mods/learning-harness.ts": 2434,
|
|
@@ -19,66 +19,30 @@ Protocol reference: https://chromedevtools.github.io/devtools-protocol/.
|
|
|
19
19
|
The running browser's exact schema is at `http://127.0.0.1:<port>/json/protocol`;
|
|
20
20
|
tip-of-tree docs can differ from the installed version.
|
|
21
21
|
|
|
22
|
-
##
|
|
23
|
-
|
|
24
|
-
When
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
It starts the managed desktop and launches Chrome through the persistent Cua
|
|
39
|
-
Driver with its required root flag. Then load `computer-use` for visible
|
|
40
|
-
interaction. If protocol-level control is necessary, use Cua Driver's explicit
|
|
41
|
-
`browser_prepare` flow after binding the exact visible window; do not pass
|
|
42
|
-
remote-debugging flags through `launch_app`. The launcher exits zero only
|
|
43
|
-
after Cua Driver reports an on-screen browser window. If it exits nonzero, stop
|
|
44
|
-
and report the launch failure instead of claiming the browser opened.
|
|
22
|
+
## Visible by default when a display exists
|
|
23
|
+
|
|
24
|
+
When the computer has a display, prefer a visible (headful) browser for any
|
|
25
|
+
task the user might watch or take over: clicking or typing, forms, sign-in,
|
|
26
|
+
checkout/payment, CAPTCHAs or bot protection, and user handoff. Most browser
|
|
27
|
+
tasks exist because plain HTTP is not enough; a headless browser is more
|
|
28
|
+
likely to trigger bot protection and gives the user no way to observe or step
|
|
29
|
+
in. Visible does not mean pixel-driven: keep operating the page over CDP, and
|
|
30
|
+
the user sees every action in the window.
|
|
31
|
+
|
|
32
|
+
Use headless mode only for work the user explicitly wants in the background
|
|
33
|
+
and that cannot require interaction or handoff, such as read-only scraping,
|
|
34
|
+
CI, or screenshot/PDF generation, or when no display exists. A headless page
|
|
35
|
+
does not satisfy a request to open or reopen a site in a browser the user can
|
|
36
|
+
see.
|
|
45
37
|
|
|
46
38
|
When the user asks to review, watch, or take over, leave that browser window
|
|
47
39
|
open after the task. Do not kill or close it before replying.
|
|
48
40
|
|
|
49
|
-
1. Run `start-letta-desktop` and use its exit status as the result. Warnings
|
|
50
|
-
from optional services do not mean startup failed when the command exits 0.
|
|
51
|
-
If it exits nonzero, stop and report that the managed desktop is
|
|
52
|
-
unavailable. Never create another Xvfb, VNC server, or private display: the
|
|
53
|
-
Computer viewer only shows the managed desktop.
|
|
54
|
-
2. Load `computer-use`, inspect the managed desktop, and use Cua Driver to
|
|
55
|
-
operate an existing Chrome window or launch Chrome there. When launching,
|
|
56
|
-
round-trip Chrome's `launch_path` from `cua-driver call list_apps '{}'
|
|
57
|
-
instead of rebuilding it; the managed launch path carries required flags.
|
|
58
|
-
For forms, sign-in, checkout, CAPTCHA, and bot-protected pages, keep using
|
|
59
|
-
Cua Driver so the interaction remains visible and available for user
|
|
60
|
-
takeover.
|
|
61
|
-
3. Use CDP only when protocol-level inspection or deterministic automation is
|
|
62
|
-
needed. Bind the exact visible browser window with Cua Driver, then use its
|
|
63
|
-
explicit `browser_prepare` flow. Do not pass remote-debugging flags
|
|
64
|
-
through `launch_app`. Include `--no-sandbox` when running Chrome as
|
|
65
|
-
root. Do not add `--headless` or override `DISPLAY`.
|
|
66
|
-
4. Use headless mode only for work the user explicitly wants in the background
|
|
67
|
-
and that cannot require interaction or handoff, such as read-only scraping,
|
|
68
|
-
CI, or screenshot/PDF generation.
|
|
69
|
-
5. Verify the result through the managed desktop window (Cua Driver window
|
|
70
|
-
state or screenshot), not only through DOM output or a screenshot from a
|
|
71
|
-
separate process.
|
|
72
|
-
|
|
73
|
-
A headless page does not satisfy a request to open or reopen a site in the
|
|
74
|
-
user-visible browser.
|
|
75
|
-
|
|
76
41
|
## Workflow
|
|
77
42
|
|
|
78
43
|
1. Find a Chromium-based browser (below). If none exists, see "No Chrome installed".
|
|
79
|
-
2.
|
|
80
|
-
|
|
81
|
-
attach to the user's normal profile unless explicitly asked.
|
|
44
|
+
2. Launch with a dedicated profile and remote debugging. Never attach to the
|
|
45
|
+
user's normal profile unless explicitly asked.
|
|
82
46
|
3. Discover targets via `/json/list`; pick the `"page"` target by URL or title.
|
|
83
47
|
4. Connect to its `webSocketDebuggerUrl` and enable only the domains you need
|
|
84
48
|
(usually `Page`, `Runtime`, `DOM`, `Input`; add `Network`, `Log` when debugging).
|
|
@@ -124,7 +88,7 @@ Tell the user that browser use requires Chrome or another Chromium-based
|
|
|
124
88
|
browser and recommend either:
|
|
125
89
|
|
|
126
90
|
1. Install Chrome on the current computer, then retry the browser task.
|
|
127
|
-
2. Teleport the conversation back to its Cloud sandbox, where
|
|
91
|
+
2. Teleport the conversation back to its Cloud sandbox, where a
|
|
128
92
|
browser is already installed.
|
|
129
93
|
|
|
130
94
|
Wait for the user to choose. Do not silently replace the browser task with
|
|
@@ -132,9 +96,8 @@ plain HTTP or claim browser automation succeeded.
|
|
|
132
96
|
|
|
133
97
|
## Launching
|
|
134
98
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
`id -u` is 0:
|
|
99
|
+
Use a disposable profile and a fixed port. Chrome refuses to run as root
|
|
100
|
+
without `--no-sandbox`, so add that flag when `id -u` is 0:
|
|
138
101
|
|
|
139
102
|
```bash
|
|
140
103
|
chrome_args=( \
|
|
@@ -149,10 +112,8 @@ chrome_args=( \
|
|
|
149
112
|
"$CHROME" "${chrome_args[@]}" https://example.com
|
|
150
113
|
```
|
|
151
114
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
the visible-browser rule above and never replace its managed display with a
|
|
155
|
-
private one.
|
|
115
|
+
Add `--headless=new` only for explicitly invisible work or when no display
|
|
116
|
+
exists (see "Visible by default" above).
|
|
156
117
|
With `--remote-debugging-port=0`, read the chosen port from
|
|
157
118
|
`<user-data-dir>/DevToolsActivePort`. Launch in the background and poll
|
|
158
119
|
`http://127.0.0.1:9222/json/version` until it responds.
|
|
@@ -66,15 +66,15 @@ Results include `agent_id` for each matching message.
|
|
|
66
66
|
letta -p --from-agent $LETTA_AGENT_ID --agent <id> "message text"
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
When no `--
|
|
70
|
-
|
|
69
|
+
When no `--computer` is specified, the target agent will run on the same
|
|
70
|
+
computer as the caller agent.
|
|
71
71
|
|
|
72
|
-
To route the target agent turn through a specific remote/local
|
|
72
|
+
To route the target agent turn through a specific remote/local computer:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
letta -p --from-agent $LETTA_AGENT_ID \
|
|
76
76
|
--agent <id> \
|
|
77
|
-
--
|
|
77
|
+
--computer <name-or-device-id-or-connection-id> \
|
|
78
78
|
"message text"
|
|
79
79
|
```
|
|
80
80
|
|
|
@@ -83,7 +83,7 @@ letta -p --from-agent $LETTA_AGENT_ID \
|
|
|
83
83
|
|-----|----------|-------------|
|
|
84
84
|
| `--agent <id>` | Yes | Target agent ID to message |
|
|
85
85
|
| `--from-agent <id>` | Yes | Sender agent ID (injects agent-to-agent system reminder) |
|
|
86
|
-
| `--
|
|
86
|
+
| `--computer <selector>` | No | Route through an online computer by connection name, device ID, or connection ID |
|
|
87
87
|
| `"message text"` | Yes | Message body (positional after flags) |
|
|
88
88
|
|
|
89
89
|
**Example:**
|
|
@@ -109,34 +109,34 @@ letta -p --from-agent $LETTA_AGENT_ID \
|
|
|
109
109
|
letta -p --from-agent $LETTA_AGENT_ID --conversation <id> "message text"
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
Add `--
|
|
112
|
+
Add `--computer <selector>` to continue the conversation on a specific computer.
|
|
113
113
|
|
|
114
|
-
### Discovering
|
|
114
|
+
### Discovering Computers
|
|
115
115
|
|
|
116
116
|
```bash
|
|
117
|
-
letta
|
|
117
|
+
letta computers list --online-only
|
|
118
118
|
# alias:
|
|
119
119
|
letta envs list --online-only
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
Use `connectionName`, `deviceId`, or `connectionId` from the JSON output as the
|
|
123
|
-
`--
|
|
124
|
-
`connectionId`. In `
|
|
123
|
+
`--computer` selector. If a name is ambiguous, prefer `deviceId` or
|
|
124
|
+
`connectionId`. In `computers list`, the current local runtime is marked with
|
|
125
125
|
`"isCurrent": true`.
|
|
126
126
|
|
|
127
|
-
To force the target agent onto the current registered Letta Code
|
|
128
|
-
resolve the current
|
|
127
|
+
To force the target agent onto the current registered Letta Code computer,
|
|
128
|
+
resolve the current computer and pass its `connectionId`:
|
|
129
129
|
|
|
130
130
|
```bash
|
|
131
|
-
|
|
131
|
+
CURRENT_COMPUTER=$(letta computers current | jq -r .connectionId)
|
|
132
132
|
letta -p --from-agent $LETTA_AGENT_ID \
|
|
133
133
|
--agent agent-abc123 \
|
|
134
|
-
--
|
|
135
|
-
"Run on my same
|
|
134
|
+
--computer "$CURRENT_COMPUTER" \
|
|
135
|
+
"Run on my same computer."
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
Omit `--
|
|
139
|
-
|
|
138
|
+
Omit `--computer` when you want the target agent to run on the same computer as
|
|
139
|
+
the caller agent.
|
|
140
140
|
|
|
141
141
|
**Arguments:**
|
|
142
142
|
| Arg | Required | Description |
|
|
@@ -21,7 +21,7 @@ This skill lets you create, list, and manage scheduled tasks using the `letta cr
|
|
|
21
21
|
Pass a flag only when you have a requirement the default can't infer:
|
|
22
22
|
|
|
23
23
|
- **`--runner cloud`** — the schedule must fire no matter which computers are online; execute in the agent's cloud sandbox.
|
|
24
|
-
- **`--computer <deviceId>`** — the work needs a specific connected computer (its filesystem, services, or credentials). Get the deviceId from `letta
|
|
24
|
+
- **`--computer <deviceId>`** — the work needs a specific connected computer (its filesystem, services, or credentials). Get the deviceId from `letta computers list`. If that computer is offline at fire time, execution falls back to the cloud sandbox.
|
|
25
25
|
- **`--runner local`** — the work must only ever run on the current computer, even if that means missing fires while no session is running here.
|
|
26
26
|
|
|
27
27
|
The CLI reports its placement in the command output. If it warns that the schedule is local (this happens when the cloud scheduler cannot reach the current computer), the schedule only fires while a Letta session is running here — read the warning and decide whether that's acceptable.
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: submitting-feedback
|
|
3
|
-
description: Submits user-approved feedback about Letta Code
|
|
3
|
+
description: Submits user-approved product feedback and bug reports about Letta Code to the Letta team. Load when the user reports a Letta Code bug, requests a product or developer change, or explicitly asks to send feedback. Do not load for corrections to the current agent's behavior or preferences; those are memory edits. Works with cloud-hosted and local agents. Ask before submitting unless the user already explicitly requested submission.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Submitting Feedback
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use this skill for product and developer feedback about Letta Code: reproducible bugs, broken features, confusing product behavior, and requested changes to the software or its developer-facing behavior.
|
|
9
|
+
|
|
10
|
+
Do **not** use this skill when the user corrects how the current agent should behave, communicate, remember, or work with them. Treat that as learning: make the appropriate memory edit so the correction changes the agent's future behavior. A user's frustration with the agent is not by itself product feedback and is not a reason to offer feedback submission.
|
|
9
11
|
|
|
10
12
|
If the user says yes, or directly asks you to submit feedback:
|
|
11
13
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: teleporting-between-environments
|
|
3
|
-
description: Moves the current agent conversation to Cloud, Desktop Local, or another
|
|
3
|
+
description: Moves the current agent conversation to Cloud, Desktop Local, or another connected computer while coordinating machine-local files and setup. Use when the user says "let's continue this task on cloud", asks to continue or move work on another connected computer, wants to teleport between computers, or needs to upload or download artifacts before a handoff.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Teleporting Between
|
|
6
|
+
# Teleporting Between Computers
|
|
7
7
|
|
|
8
8
|
Teleport the current agent and conversation without losing conversational memory. Prepare machine-local state first, then let the destination continue the same task.
|
|
9
9
|
|
|
@@ -20,13 +20,13 @@ Teleport the current agent and conversation without losing conversational memory
|
|
|
20
20
|
letta teleport list
|
|
21
21
|
letta teleport cloud
|
|
22
22
|
letta teleport local
|
|
23
|
-
letta teleport <
|
|
23
|
+
letta teleport <computer>
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
- `list`: show accessible online Cloud-registered targets.
|
|
27
27
|
- `cloud`: create or resume this conversation’s managed Cloud sandbox.
|
|
28
|
-
- `local`: target the one online Letta Desktop
|
|
29
|
-
- `<
|
|
28
|
+
- `local`: target the one online Letta Desktop computer. Desktop Remote Access must be enabled. If several Desktop computers are online, use `list` and target one explicitly.
|
|
29
|
+
- `<computer>`: target a listed remote computer by its friendly selector.
|
|
30
30
|
|
|
31
31
|
Do not run or recommend `letta teleport back`; return to Desktop with `local`.
|
|
32
32
|
|
|
@@ -79,21 +79,21 @@ If the command reports an offline, stale, unsupported, same-source, or startup e
|
|
|
79
79
|
|
|
80
80
|
### Return to Desktop Local
|
|
81
81
|
|
|
82
|
-
1. Retain the next local action and any setup the Desktop
|
|
83
|
-
2. Confirm Desktop is open with Remote Access enabled. If more than one Desktop
|
|
82
|
+
1. Retain the next local action and any setup the Desktop computer needs.
|
|
83
|
+
2. Confirm Desktop is open with Remote Access enabled. If more than one Desktop computer is online, use `letta teleport list` and choose one explicitly.
|
|
84
84
|
3. As the final action, run:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
87
|
letta teleport local
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
### Run a separate headless turn on
|
|
90
|
+
### Run a separate headless turn on a computer
|
|
91
91
|
|
|
92
|
-
Use `--
|
|
92
|
+
Use `--computer` when a separate headless invocation, rather than the current conversation handoff, should execute on Cloud or another online computer:
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
letta -p --conversation <id> --
|
|
96
|
-
letta -p --conversation <id> --
|
|
95
|
+
letta -p --conversation <id> --computer cloud "<prompt>"
|
|
96
|
+
letta -p --conversation <id> --computer <name|device-id|connection-id> "<prompt>"
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
This routes that headless message only. Use `letta teleport ...` to move the currently executing conversation.
|
|
@@ -110,5 +110,5 @@ This routes that headless message only. Use `letta teleport ...` to move the cur
|
|
|
110
110
|
3. As the final action, run:
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
letta teleport <
|
|
113
|
+
letta teleport <computer>
|
|
114
114
|
```
|