@letta-ai/letta-code 0.27.8 → 0.27.9

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.
Files changed (35) hide show
  1. package/README.md +2 -2
  2. package/dist/app-server-client.js +387 -0
  3. package/dist/app-server-client.js.map +10 -0
  4. package/dist/types/app-server-client.d.ts +99 -0
  5. package/dist/types/app-server-client.d.ts.map +1 -0
  6. package/dist/types/types/app-server-protocol.d.ts +3 -0
  7. package/dist/types/types/app-server-protocol.d.ts.map +1 -0
  8. package/dist/types/types/protocol.d.ts.map +1 -0
  9. package/dist/types/types/protocol_v2.d.ts +2277 -0
  10. package/dist/types/types/protocol_v2.d.ts.map +1 -0
  11. package/letta.js +21106 -18642
  12. package/package.json +11 -2
  13. package/scripts/check-test-coverage.cjs +1 -1
  14. package/scripts/run-unit-tests.cjs +1 -1
  15. package/skills/{creating-extensions → creating-mods}/SKILL.md +29 -29
  16. package/skills/{creating-extensions → creating-mods}/references/architecture.md +9 -9
  17. package/skills/{creating-extensions → creating-mods}/references/commands.md +10 -10
  18. package/skills/{creating-extensions → creating-mods}/references/events.md +10 -10
  19. package/skills/{creating-extensions → creating-mods}/references/permissions.md +3 -3
  20. package/skills/{creating-extensions → creating-mods}/references/plan-mode.md +10 -8
  21. package/skills/{creating-extensions → creating-mods}/references/providers.md +7 -7
  22. package/skills/{creating-extensions → creating-mods}/references/tools.md +20 -2
  23. package/skills/{creating-extensions → creating-mods}/references/ui.md +4 -4
  24. package/skills/customizing-commands/SKILL.md +18 -18
  25. package/skills/customizing-statusline/SKILL.md +11 -11
  26. package/skills/customizing-statusline/references/api.md +8 -8
  27. package/skills/customizing-statusline/references/examples.md +1 -1
  28. package/skills/customizing-statusline/references/migration.md +1 -1
  29. package/skills/editing-letta-code-desktop-preferences/SKILL.md +67 -0
  30. package/skills/image-generation/SKILL.md +22 -12
  31. package/skills/modifying-the-harness/SKILL.md +21 -2
  32. package/skills/modifying-the-harness/scripts/add_permission.py +2 -1
  33. package/skills/modifying-the-harness/scripts/show_config.py +4 -3
  34. package/dist/types/protocol.d.ts.map +0 -1
  35. /package/dist/types/{protocol.d.ts → types/protocol.d.ts} +0 -0
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: customizing-statusline
3
- description: Creates, edits, and migrates Letta Code statusline extensions. Use when handling the /statusline command or continuing work started by /statusline.
3
+ description: Creates, edits, and migrates Letta Code statusline mods. Use when handling the /statusline command or continuing work started by /statusline.
4
4
  ---
5
5
 
6
6
  # Customizing Statusline
7
7
 
8
- Use this skill to create or update the global Letta Code statusline extension:
8
+ Use this skill to create or update the global Letta Code statusline mod:
9
9
 
10
10
  ```text
11
- ~/.letta/extensions/statusline.tsx
11
+ ~/.letta/mods/statusline.tsx
12
12
  ```
13
13
 
14
14
  The statusline is a full-row idle renderer. Host UI can still temporarily preempt it for safety confirmations and transient hints.
@@ -18,7 +18,7 @@ The statusline is a full-row idle renderer. Host UI can still temporarily preemp
18
18
  ```text
19
19
  safety preemption
20
20
  else transient host hint
21
- else custom statusline extension
21
+ else custom statusline mod
22
22
  else built-in default statusline
23
23
  ```
24
24
 
@@ -26,14 +26,14 @@ A custom statusline owns the whole idle row. Do not preserve legacy left/right s
26
26
 
27
27
  ## Workflow
28
28
 
29
- 1. Check whether `~/.letta/extensions/statusline.tsx` exists.
29
+ 1. Check whether `~/.letta/mods/statusline.tsx` exists.
30
30
  2. If it exists, read it before editing and preserve unrelated code.
31
31
  3. If it does not exist, start from the built-in default template or synthesize a focused starter for the user's request.
32
32
  4. If the user asks to migrate, import a `.sh` file, or match a shell prompt, read `references/migration.md`.
33
33
  5. If API details or concrete patterns are needed, read `references/api.md` and `references/examples.md`.
34
- 6. If the request combines statusline work with commands, tools, events, panels, or stateful extension behavior, also use `creating-extensions` and its `references/architecture.md`.
34
+ 6. If the request combines statusline work with commands, tools, events, panels, or stateful mod behavior, also use `creating-mods` and its `references/architecture.md`.
35
35
  7. Guard statusline-specific behavior with `letta.capabilities.ui.customStatuslineRenderer` when writing new files.
36
- 8. Edit `~/.letta/extensions/statusline.tsx`.
36
+ 8. Edit `~/.letta/mods/statusline.tsx`.
37
37
  9. Summarize the absolute file path changed and tell the user to run `/reload` unless the command can reload automatically.
38
38
 
39
39
  ## Bare `/statusline` behavior
@@ -52,8 +52,8 @@ Keep this conversational. Do not build a menu UI unless the product command expl
52
52
 
53
53
  ## Rules
54
54
 
55
- - Global-only for now. Do not create project extensions.
56
- - Keep the extension single-file for MVP.
55
+ - Global-only for now. Do not create project mods.
56
+ - Keep the mod single-file for MVP.
57
57
  - Do not assume extra npm packages are available.
58
58
  - Do not use relative multi-file imports yet.
59
59
  - Keep renderers synchronous. Do not shell, fetch, or await inside render.
@@ -61,11 +61,11 @@ Keep this conversational. Do not build a menu UI unless the product command expl
61
61
  - Use `letta.ui.setStatus` for data and `setStatuslineRenderer` for drawing that data.
62
62
  - Guard optional APIs with `letta.capabilities.ui.statusValues` and `letta.capabilities.ui.customStatuslineRenderer` in new files.
63
63
  - Return a disposer that clears timers/subscriptions.
64
- - Preserve existing extension code unless the user asks to reset.
64
+ - Preserve existing mod code unless the user asks to reset.
65
65
  - Do not delete legacy command statusline files or settings unless the user explicitly asks.
66
66
 
67
67
  ## Useful references
68
68
 
69
- - `references/api.md` - extension API, render context, lifecycle rules
69
+ - `references/api.md` - mod API, render context, lifecycle rules
70
70
  - `references/examples.md` - common statusline patterns
71
71
  - `references/migration.md` - legacy command `.sh` and PS1 migration
@@ -1,14 +1,14 @@
1
- # Statusline Extension API
1
+ # Statusline Mod API
2
2
 
3
- Use this reference when creating or editing `~/.letta/extensions/statusline.tsx`.
3
+ Use this reference when creating or editing `~/.letta/mods/statusline.tsx`.
4
4
 
5
5
  ## Location
6
6
 
7
7
  ```text
8
- ~/.letta/extensions/statusline.tsx
8
+ ~/.letta/mods/statusline.tsx
9
9
  ```
10
10
 
11
- This is a trusted, user-owned global extension file. Project extensions are intentionally unsupported for now.
11
+ This is a trusted, user-owned global mod file. Project mods are intentionally unsupported for now.
12
12
 
13
13
  ## Activation
14
14
 
@@ -59,7 +59,7 @@ letta.ui.setStatuslineRenderer((context) => {
59
59
 
60
60
  ## Async state pattern
61
61
 
62
- Use Node/Bun APIs directly from the trusted extension file. Do not assume helper methods like `letta.shell` exist.
62
+ Use Node/Bun APIs directly from the trusted mod file. Do not assume helper methods like `letta.shell` exist.
63
63
 
64
64
  ```tsx
65
65
  import { execFile } from "node:child_process";
@@ -117,7 +117,7 @@ Common fields:
117
117
 
118
118
  ```ts
119
119
  context.components // Display components such as Text, Box, Spacer
120
- context.statuses // evaluated extension status strings
120
+ context.statuses // evaluated mod status strings
121
121
  context.app.version
122
122
  context.workspace.cwd
123
123
  context.workspace.currentDir
@@ -159,10 +159,10 @@ return (
159
159
 
160
160
  ## Reload behavior
161
161
 
162
- After editing `~/.letta/extensions/statusline.tsx`, tell the user to run:
162
+ After editing `~/.letta/mods/statusline.tsx`, tell the user to run:
163
163
 
164
164
  ```text
165
165
  /reload
166
166
  ```
167
167
 
168
- The runtime tracks extension loading separately from “no custom statusline,” so a custom statusline should not flash back to the built-in default during reload.
168
+ The runtime tracks mod loading separately from “no custom statusline,” so a custom statusline should not flash back to the built-in default during reload.
@@ -1,6 +1,6 @@
1
1
  # Statusline Examples
2
2
 
3
- Use these as patterns, not mandatory templates. Keep the final extension focused on the user's request.
3
+ Use these as patterns, not mandatory templates. Keep the final mod focused on the user's request.
4
4
 
5
5
  ## Agent and model
6
6
 
@@ -39,7 +39,7 @@ Look for either shape:
39
39
  When migrating:
40
40
 
41
41
  - Preserve old config and referenced files unless the user explicitly asks to delete them.
42
- - If `command` references a `.sh` file, read it before writing the new extension.
42
+ - If `command` references a `.sh` file, read it before writing the new mod.
43
43
  - Translate polling (`refreshIntervalMs`) to `setInterval`.
44
44
  - Translate direct command output into cached status plus synchronous rendering.
45
45
  - If the command output used `\x1e` to split left/right output, convert it to internal full-row layout with `Box`; do not create a new left/right API.
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: editing-letta-code-desktop-preferences
3
+ description: Edits Letta Code Desktop (LCD) preferences by safely reading and updating ~/.letta/desktop_preferences.json. Use only when the user asks to change current Desktop/LCD settings such as theme, default working directory, remote access preference, or remote environment name via the preferences JSON.
4
+ ---
5
+
6
+ # Editing Letta Code Desktop Preferences
7
+
8
+ Use this skill only to edit the active Letta Code Desktop preferences JSON file. Do not use it for Desktop product-code changes, Electron IPC work, UI changes, or general Letta Cloud Desktop implementation tasks.
9
+
10
+ ## Preferences file
11
+
12
+ The Desktop preferences file is:
13
+
14
+ ```text
15
+ ~/.letta/desktop_preferences.json
16
+ ```
17
+
18
+ Known preference keys:
19
+
20
+ - `defaultWorkingDirectory`: default folder for new local sessions.
21
+ - `theme`: `auto`, `light`, or `dark`.
22
+ - `allowRemoteAccess`: boolean for whether remote access should be enabled in preferences.
23
+ - `remoteEnvName`: environment name shown for remote access.
24
+
25
+ ## Workflow
26
+
27
+ 1. Read the existing JSON first.
28
+ 2. Preserve unknown keys.
29
+ 3. Merge only the requested preference updates.
30
+ 4. Write pretty JSON with a trailing newline.
31
+ 5. Do not edit token, provider, secret, agent, conversation, memory, or unrelated state files.
32
+ 6. Tell the user that the change applies live only if their Desktop build watches preference-file changes; otherwise they should reload/restart Desktop or use Preferences → General.
33
+
34
+ ## Safe edit command
35
+
36
+ Use a merge-style edit like this, changing only the requested keys:
37
+
38
+ ```bash
39
+ node - <<'NODE'
40
+ const fs = require('fs');
41
+ const os = require('os');
42
+ const path = require('path');
43
+
44
+ const file = path.join(os.homedir(), '.letta', 'desktop_preferences.json');
45
+ fs.mkdirSync(path.dirname(file), { recursive: true });
46
+
47
+ const current = fs.existsSync(file)
48
+ ? JSON.parse(fs.readFileSync(file, 'utf8'))
49
+ : {};
50
+
51
+ const next = {
52
+ ...current,
53
+ // Example update. Replace this with the user's requested setting.
54
+ theme: 'dark',
55
+ };
56
+
57
+ fs.writeFileSync(file, JSON.stringify(next, null, 2) + '\n');
58
+ NODE
59
+ ```
60
+
61
+ ## Validation
62
+
63
+ After editing, read the file back or parse it to confirm valid JSON:
64
+
65
+ ```bash
66
+ node -e "JSON.parse(require('fs').readFileSync(require('os').homedir() + '/.letta/desktop_preferences.json', 'utf8')); console.log('desktop_preferences.json is valid')"
67
+ ```
@@ -6,8 +6,8 @@ description: Generate images from text prompts (and optionally edit/remix input
6
6
  # Image Generation
7
7
 
8
8
  Generate images via Letta's hosted endpoint `POST /v1/images/generations`. The API
9
- usually returns base64 image bytes, so save the response to a local image file
10
- before replying.
9
+ usually returns base64 image bytes, but some providers return signed image URLs;
10
+ save either form to a local image file before replying.
11
11
 
12
12
  ## Example
13
13
 
@@ -21,13 +21,19 @@ curl -sS -X POST "https://api.letta.com/v1/images/generations" \
21
21
  > image-response.json
22
22
 
23
23
  python3 - <<'PY'
24
- import base64, json
24
+ import base64, json, urllib.request
25
25
 
26
26
  with open("image-response.json") as f:
27
27
  response = json.load(f)
28
28
 
29
+ image = response["images"][0]
30
+ if image.get("b64_json"):
31
+ data = base64.b64decode(image["b64_json"])
32
+ else:
33
+ data = urllib.request.urlopen(image["url"]).read()
34
+
29
35
  with open("robot-mascot.png", "wb") as f:
30
- f.write(base64.b64decode(response["images"][0]["b64_json"]))
36
+ f.write(data)
31
37
 
32
38
  print("saved robot-mascot.png; credits:", response["billing"]["credits_charged"])
33
39
  PY
@@ -37,9 +43,9 @@ In Bash tools launched by Letta Code, the current Letta credential is available
37
43
  as `$LETTA_API_KEY`. This works for both Letta auth modes: it may be a normal
38
44
  Letta API key, or the OAuth access token from a Letta Cloud OAuth login. Reference
39
45
  it directly. If it is missing, the user needs to authenticate with Letta Cloud (or
40
- provide a Letta API key); do **not** ask for an OpenAI/Gemini provider key. This
46
+ provide a Letta API key); do **not** ask for a Flux/OpenAI/Gemini provider key. This
41
47
  endpoint also does not use `/connect` BYOK providers — the only `provider` values
42
- supported here are `gemini` and `openai`.
48
+ supported here are `flux`, `gemini`, and `openai`.
43
49
 
44
50
  Then **show the image to the user** by embedding the saved file in your reply:
45
51
 
@@ -59,7 +65,7 @@ embed each on its own line. Also tell the user the `credits_charged`.
59
65
 
60
66
  | Field | Type | Notes |
61
67
  |-------|------|-------|
62
- | `provider` | `"gemini"` \| `"openai"` | Required. |
68
+ | `provider` | `"flux"` \| `"gemini"` \| `"openai"` | Required. |
63
69
  | `prompt` | string | Required, 1–32000 chars. |
64
70
  | `model` | string | Optional; defaults per provider (below). |
65
71
  | `n` | int 1–4 | Optional, default 1. Request variations in one call. |
@@ -71,10 +77,13 @@ embed each on its own line. Also tell the user the `credits_charged`.
71
77
 
72
78
  | Provider | Default model | Use for |
73
79
  |----------|---------------|---------|
74
- | `gemini` | `gemini-3-pro-image` | Default. Strong prompt adherence, image editing/remix. |
80
+ | `flux` | `flux-2-pro` | Default for normal text-to-image. High-quality general image generation; commonly returns signed URLs. |
81
+ | `gemini` | `gemini-3-pro-image` | Strong prompt adherence, image editing/remix. |
75
82
  | `openai` | `gpt-image-2` | Photoreal output, explicit `size`/`quality`/`output_format`. |
76
83
 
77
- Default to `gemini` unless the user wants photoreal or a specific size/quality.
84
+ Default to `flux` for normal text-to-image requests. Use `gemini` when the user
85
+ provides input images or wants image editing/remix. Use `openai` when the user
86
+ wants photoreal output or a specific size/quality.
78
87
 
79
88
  ## Response
80
89
 
@@ -88,8 +97,9 @@ Default to `gemini` unless the user wants photoreal or a specific size/quality.
88
97
  ```
89
98
 
90
99
  Each `images[]` entry has either `b64_json` or `url`, plus `mime_type`. Gemini
91
- always returns `b64_json`. If OpenAI returns a `url`, download that URL to your
92
- local image file instead of base64-decoding.
100
+ always returns `b64_json`. Flux commonly returns a signed `url`; download it to
101
+ your local image file immediately because signed URLs expire. If OpenAI returns a
102
+ `url`, download that URL instead of base64-decoding.
93
103
 
94
104
  ## Editing / remixing images
95
105
 
@@ -107,4 +117,4 @@ DATA_URL="data:image/png;base64,$(base64 < input.png | tr -d '\n')"
107
117
  `credits_charged`.
108
118
  - **Errors**: `402` = insufficient credits (`credits_required` in body); `400`/`500`
109
119
  return `{ "message": "..." }` — surface it to the user.
110
- - Only `gemini` and `openai` are supported here.
120
+ - Only `flux`, `gemini`, and `openai` are supported here.
@@ -75,6 +75,14 @@ Load the `letta-api-client` skill for richer SDK examples.
75
75
  ## 1. Change permissions
76
76
 
77
77
  Permissions decide which tool calls are allowed, denied, or require approval.
78
+ Use `alwaysAsk` when a rule should request human approval even in
79
+ `unrestricted`/yolo mode.
80
+
81
+ Settings `ask` rules request approval in normal permission modes, but they do
82
+ not override `unrestricted`/yolo mode. For a mod tool that must pause for human
83
+ approval even in unrestricted mode, set `approvalPolicy: "alwaysAsk"` in the
84
+ tool registration. For broader dynamic policy, use a mod permission overlay or
85
+ a blocking hook.
78
86
 
79
87
  ### Rule syntax
80
88
 
@@ -91,6 +99,15 @@ python3 <skill-dir>/scripts/add_permission.py \
91
99
  --scope user
92
100
  ```
93
101
 
102
+ Force approval even in yolo mode:
103
+
104
+ ```bash
105
+ python3 <skill-dir>/scripts/add_permission.py \
106
+ --rule "Bash(git push:*)" \
107
+ --type alwaysAsk \
108
+ --scope user
109
+ ```
110
+
94
111
  ### Edit directly
95
112
 
96
113
  ```json
@@ -98,7 +115,8 @@ python3 <skill-dir>/scripts/add_permission.py \
98
115
  "permissions": {
99
116
  "allow": ["Bash(npm:*)", "Read(src/**)"],
100
117
  "deny": ["Bash(rm -rf:*)"],
101
- "ask": []
118
+ "ask": [],
119
+ "alwaysAsk": ["Bash(git push:*)"]
102
120
  }
103
121
  }
104
122
  ```
@@ -215,6 +233,7 @@ Find your own entry by matching `agentId === $LETTA_AGENT_ID`, then edit the fie
215
233
  |------|----------------|
216
234
  | Auto-approve curl | `add_permission.py --rule "Bash(curl:*)" --type allow --scope user` |
217
235
  | Block `rm -rf` | Add `"Bash(rm -rf:*)"` to `permissions.deny`, or add a `PreToolUse` hook |
236
+ | Always ask before git push | `add_permission.py --rule "Bash(git push:*)" --type alwaysAsk --scope user` |
218
237
  | Log all Bash calls | `add_hook.py --event PreToolUse --matcher Bash --type command --command '...' --scope user` |
219
238
  | Auto-format after edits | `add_hook.py --event PostToolUse --matcher "Edit|Write" --type command --command '...' --scope project` |
220
239
  | Gate edits with LLM | `add_hook.py --event PreToolUse --matcher "Edit|Write" --type prompt --prompt '...' --scope user` |
@@ -237,7 +256,7 @@ Find your own entry by matching `agentId === $LETTA_AGENT_ID`, then edit the fie
237
256
 
238
257
  | Script | Purpose |
239
258
  |--------|---------|
240
- | `scripts/add_permission.py` | Add an allow/deny/ask rule to any scope |
259
+ | `scripts/add_permission.py` | Add an allow/deny/ask/alwaysAsk rule to any scope |
241
260
  | `scripts/add_hook.py` | Add a command or prompt hook to any event |
242
261
  | `scripts/show_config.py` | Show merged permissions, hooks, and per-agent settings across all scopes |
243
262
 
@@ -5,6 +5,7 @@ Add a permission rule to Letta Code settings.
5
5
  Usage:
6
6
  python3 add_permission.py --rule "Bash(npm run:*)" --type allow --scope user
7
7
  python3 add_permission.py --rule "Read(src/**)" --type allow --scope project
8
+ python3 add_permission.py --rule "Bash(git push:*)" --type alwaysAsk --scope user
8
9
  """
9
10
 
10
11
  import argparse
@@ -99,7 +100,7 @@ def main():
99
100
  parser.add_argument(
100
101
  "--type",
101
102
  required=True,
102
- choices=["allow", "deny", "ask"],
103
+ choices=["allow", "deny", "ask", "alwaysAsk"],
103
104
  help="Type of permission rule",
104
105
  )
105
106
  parser.add_argument(
@@ -40,10 +40,11 @@ def format_permissions(
40
40
  all_settings: list[tuple[str, dict]], as_json: bool
41
41
  ) -> dict | None:
42
42
  """Collect permissions from all scopes with sources."""
43
- rules: dict[str, list[tuple[str, str]]] = {"allow": [], "deny": [], "ask": []}
43
+ rule_types = ["allow", "deny", "ask", "alwaysAsk"]
44
+ rules: dict[str, list[tuple[str, str]]] = {rule_type: [] for rule_type in rule_types}
44
45
  for scope, settings in all_settings:
45
46
  perms = settings.get("permissions", {})
46
- for rule_type in ["allow", "deny", "ask"]:
47
+ for rule_type in rule_types:
47
48
  for rule in perms.get(rule_type, []):
48
49
  rules[rule_type].append((rule, scope))
49
50
 
@@ -59,7 +60,7 @@ def format_permissions(
59
60
  if total == 0:
60
61
  print(" (none)")
61
62
  else:
62
- for rule_type in ["allow", "deny", "ask"]:
63
+ for rule_type in rule_types:
63
64
  if rules[rule_type]:
64
65
  print(f"\n {rule_type.upper()}:")
65
66
  for rule, scope in rules[rule_type]:
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}