@letta-ai/letta-code 0.28.13 → 0.28.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.28.13",
3
+ "version": "0.28.14",
4
4
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.0",
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: letta-guide
3
+ description: Answer questions about Letta itself from the official documentation. Use whenever the user asks how Letta works, what Letta (or you) can do, or how to set up or configure providers, models, channels, skills, memory, schedules, permissions, self-hosting, pricing, or billing — any "how do I…" or "can Letta…" question about the Letta product. Fetch the docs before answering; never answer Letta product questions from memory alone.
4
+ ---
5
+
6
+ # Letta Guide
7
+
8
+ You are running inside Letta, but your training data about Letta's commands,
9
+ flags, settings, UI, pricing, and providers is out of date. Users lose trust
10
+ fastest when an agent confidently invents product details. This skill defines
11
+ how to answer questions about Letta correctly.
12
+
13
+ ## Source route (in order)
14
+
15
+ 1. **Self-inspection first for questions about THIS agent.** "What model are
16
+ you using?", "what tools do you have?", "what's in your memory?" are
17
+ questions about the running session, not the docs. Answer them from the
18
+ live environment: your system prompt and agent info, `/status`-style
19
+ command surfaces, settings files, and MemFS. Do not fetch docs for these.
20
+ 2. **Fetch the docs index.** For product questions, fetch
21
+ `https://docs.letta.com/llms.txt` — a curated index of every current
22
+ documentation page with descriptions. Pick the most relevant page URLs.
23
+ 3. **Fetch the specific pages.** Append `/index.md` to any docs URL for the
24
+ canonical LLM-friendly markdown version (e.g.
25
+ `https://docs.letta.com/configuration/models/index.md`). Read the page,
26
+ then answer. Cite the doc URL(s) you used so the user can go deeper.
27
+ 4. **If the docs are unreachable**, say so explicitly, give your best answer,
28
+ and clearly mark it as possibly out of date with a link to
29
+ https://docs.letta.com. Never silently fall back to memory.
30
+
31
+ ## Hard rules
32
+
33
+ - **Never invent CLI commands, flags, slash commands, settings keys, config
34
+ file shapes, or UI paths.** If something is not in the fetched docs and you
35
+ cannot verify it locally (`letta --help`, `/help`, reading the actual
36
+ config file), say you are not sure or that it does not exist — do not
37
+ guess a plausible-sounding name.
38
+ - **Distinguish surfaces.** The CLI, the desktop app, the web app
39
+ (chat.letta.com), and the API/SDK have different affordances. Answer for
40
+ the surface the user is actually on; say when a feature lives on a
41
+ different surface.
42
+ - **Always fetch, never recall**, for anything volatile: pricing, rate
43
+ limits, data policies, the provider/model catalog, channel setup steps,
44
+ and integration instructions.
45
+ - **If the feature genuinely doesn't exist**, say so and point the user to
46
+ https://github.com/letta-ai/letta-code/issues to request it.
47
+
48
+ ## Support escalation
49
+
50
+ When the docs don't resolve the user's problem — setup issues you can't
51
+ debug, account/billing questions, suspected bugs, or anything needing a
52
+ human — point them to the right channel:
53
+
54
+ - **Discord** (https://discord.gg/letta): the primary support community,
55
+ very active — best for setup help, troubleshooting, and quick questions.
56
+ It's also where users can chat with **Ezra**, Letta's support agent.
57
+ - **GitHub issues** (https://github.com/letta-ai/letta-code/issues): bug
58
+ reports and feature requests.
59
+
60
+ If the user reports errors, timeouts, or things suddenly not working, check
61
+ **https://status.letta.com** for an active incident before debugging — and
62
+ have the user check it too.
63
+
64
+ Offer these proactively when you've hit the end of what the docs cover,
65
+ rather than leaving the user stuck.
66
+
67
+ ## Caching
68
+
69
+ Cache fetched pages under the Letta home directory: `~/.letta/docs-cache/`
70
+ (Windows: `%USERPROFILE%\.letta\docs-cache\`). Resolve `~` to an absolute
71
+ path before passing paths to file tools — they do not expand it. Reuse cached
72
+ pages within a session; refetch `llms.txt` when the cached copy is older than
73
+ about a day.
74
+
@@ -14,6 +14,29 @@ This skill lets you create, list, and manage scheduled tasks using the `letta cr
14
14
  - User wants a one-shot delayed message ("in 30 minutes, check on X")
15
15
  - User wants to see or cancel existing scheduled tasks
16
16
 
17
+ ## Where Schedules Run (`--runner`)
18
+
19
+ There are two schedule runners, selected with the optional `--runner local|cloud` flag:
20
+
21
+ - **`cloud`** (default for cloud agents): a durable Cloud schedule stored by the Letta API. It fires from the cloud and executes in the agent's cloud sandbox, so it survives local shutdown — the computer, sandbox, or session that created it can disappear and the schedule still fires.
22
+ - **`local`**: a task local to the current computer (`~/.letta/crons.json`), executed by the Letta session running there. It only fires while a session is running on that computer, and it dies with that computer's local state.
23
+
24
+ You normally don't need the flag — the default does the right thing. Local-backend agents (`agent-local-*`) and self-hosted servers always use the local runner.
25
+
26
+ If the scheduled work must run on a **specific computer** (it needs that computer's filesystem, local services, or credentials — e.g. a bring-your-own machine like a Railway/VPS box or a home workstation), prefer a Cloud schedule that executes on that computer:
27
+
28
+ ```bash
29
+ letta cron add ... --computer <deviceId>
30
+ ```
31
+
32
+ The deviceId comes from `letta environments list`. The computer must be connected to your Letta account (run `letta server` on it, or enable remote access in the desktop app). The schedule stays durable in the cloud; if the computer is offline when it fires, execution falls back to the agent's cloud sandbox. Use `--runner local` (run on the target computer itself) only when that sandbox fallback is unacceptable — a local task never runs anywhere but its own computer.
33
+
34
+ Notes for the cloud runner:
35
+
36
+ - Untargeted schedules execute in the agent's cloud sandbox, not on the computer where you created them; `--computer` executes on the named computer with sandbox fallback.
37
+ - Recurring `--cron` expressions are currently interpreted in UTC (the CLI output includes a note about this). `--at` and `--every` are unaffected.
38
+ - If creating a Cloud schedule fails, no schedule is created — there is no silent fallback to local storage. Retry, or pass `--runner local` deliberately.
39
+
17
40
  ## CLI Usage
18
41
 
19
42
  All commands go through `letta cron` via the Bash tool. Output is JSON.
@@ -46,6 +69,8 @@ letta cron add --name <short-name> --description <text> --prompt <text> <schedul
46
69
  |------|-------------|
47
70
  | `--agent <id>` | Agent ID (defaults to `LETTA_AGENT_ID` from the current shell/session) |
48
71
  | `--conversation <id>` | Conversation ID (defaults to `LETTA_CONVERSATION_ID` from the current shell/session, otherwise `"default"`) |
72
+ | `--runner <runner>` | `cloud` or `local` — see "Where Schedules Run" above (defaults to `cloud` for cloud agents) |
73
+ | `--computer <id>` | (cloud runner only) Execute on a connected computer instead of the agent's sandbox; falls back to the sandbox if the computer is offline |
49
74
 
50
75
  ### Listing Tasks
51
76
 
@@ -172,10 +197,10 @@ Include context about what the user originally asked for, so you can give a help
172
197
 
173
198
  - **Minimum granularity**: 1 minute. Intervals under 60 seconds are rounded up.
174
199
  - **Recurring tasks**: No longer auto-expire. They remain active until explicitly cancelled.
175
- - **One-shot cleanup**: One-shot tasks are garbage-collected 24 hours after firing.
176
- - **Timezone**: Tasks use the user's local timezone by default.
200
+ - **One-shot cleanup (local runner)**: One-shot local tasks are garbage-collected 24 hours after firing.
201
+ - **Timezone**: Local-runner tasks use the user's local timezone. Cloud-runner recurring `--cron` expressions are currently interpreted in UTC.
177
202
  - **Default binding precedence**: `letta cron add` uses `--agent` / `--conversation` first, then falls back to `LETTA_AGENT_ID` / `LETTA_CONVERSATION_ID`, then finally uses `"default"` for the conversation if no env var is present.
178
- - **Scheduler requirement**: Tasks only fire while a Letta session is running (a WS listener must be active). If no session is running, tasks will be marked as missed.
203
+ - **Local scheduler requirement**: Local-runner tasks only fire while a Letta session is running on that computer (a WS listener must be active). If no session is running, tasks will be marked as missed. Cloud-runner schedules fire from the cloud regardless.
179
204
  - **`--at` for specific times**: `--at "3:00pm"` schedules a one-shot. If the time has already passed today, it schedules for tomorrow.
180
205
  - **`--every` for daily**: `--every 1d` fires daily at midnight. For a specific time of day, use `--cron` instead (e.g. `--cron "0 9 * * *"` for 9am daily).
181
206