@letta-ai/letta-agent-sdk 0.8.0 → 0.8.2
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 +23 -0
- package/dist/agent-creation.d.ts +2 -1
- package/dist/agent-creation.d.ts.map +1 -1
- package/dist/app-server-session.d.ts.map +1 -1
- package/dist/client-base.d.ts +12 -0
- package/dist/client-base.d.ts.map +1 -1
- package/dist/client-entry.d.ts +1 -0
- package/dist/client-entry.d.ts.map +1 -1
- package/dist/client-entry.js +509 -2527
- package/dist/client-entry.js.map +14 -12
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/cloud-session.d.ts +4 -1
- package/dist/cloud-session.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +795 -2645
- package/dist/index.js.map +18 -15
- package/dist/query-types.d.ts +25 -0
- package/dist/query-types.d.ts.map +1 -0
- package/dist/query.d.ts +7 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/remote-session-protocol.d.ts +11 -1
- package/dist/remote-session-protocol.d.ts.map +1 -1
- package/dist/remote-turn-coordinator.d.ts.map +1 -1
- package/dist/repository-types.d.ts +89 -0
- package/dist/repository-types.d.ts.map +1 -0
- package/dist/skill-loading.d.ts +84 -0
- package/dist/skill-loading.d.ts.map +1 -0
- package/dist/skill-node.d.ts +28 -0
- package/dist/skill-node.d.ts.map +1 -0
- package/dist/types.d.ts +17 -84
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/agent-creation.ts +37 -1
- package/src/app-server-session.ts +35 -2
- package/src/client-base.ts +138 -1
- package/src/client-entry.ts +1 -0
- package/src/client.ts +39 -0
- package/src/cloud-session.ts +84 -16
- package/src/index.ts +16 -0
- package/src/local-app-server.ts +1 -1
- package/src/query-types.ts +40 -0
- package/src/query.ts +43 -0
- package/src/remote-client-session-core.ts +1 -1
- package/src/remote-session-protocol.ts +12 -1
- package/src/remote-turn-coordinator.ts +5 -1
- package/src/repository-types.ts +105 -0
- package/src/skill-loading.ts +194 -0
- package/src/skill-node.ts +139 -0
- package/src/types.ts +42 -100
package/dist/index.js
CHANGED
|
@@ -16,8 +16,12 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
16
16
|
});
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
19
20
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
20
21
|
|
|
22
|
+
// node_modules/@letta-ai/letta-code/dist/agent-presets-agent-presets.js
|
|
23
|
+
var init_agent_presets_agent_presets = () => {};
|
|
24
|
+
|
|
21
25
|
// node_modules/@letta-ai/letta-client/internal/tslib.mjs
|
|
22
26
|
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
23
27
|
if (kind === "m")
|
|
@@ -3011,6 +3015,100 @@ class RepositoriesClient {
|
|
|
3011
3015
|
}
|
|
3012
3016
|
}
|
|
3013
3017
|
|
|
3018
|
+
// src/skill-loading.ts
|
|
3019
|
+
var SKILL_NAME_RE = /^[a-z0-9][a-z0-9._-]*$/;
|
|
3020
|
+
function assertValidSkillName(name) {
|
|
3021
|
+
if (!SKILL_NAME_RE.test(name)) {
|
|
3022
|
+
throw new Error(`Invalid skill name "${name}". Skill names are directory names: ` + `lowercase letters, digits, ".", "_", "-" (e.g. "generating-voice-memos").`);
|
|
3023
|
+
}
|
|
3024
|
+
}
|
|
3025
|
+
function parseSkillMarkdown(content) {
|
|
3026
|
+
if (!content.startsWith(`---
|
|
3027
|
+
`) && !content.startsWith(`---\r
|
|
3028
|
+
`)) {
|
|
3029
|
+
return { body: content };
|
|
3030
|
+
}
|
|
3031
|
+
const fence = /\r?\n---[ \t]*(\r?\n|$)/.exec(content.slice(3));
|
|
3032
|
+
if (!fence)
|
|
3033
|
+
return { body: content };
|
|
3034
|
+
const yamlStart = content.startsWith(`---\r
|
|
3035
|
+
`) ? 5 : 4;
|
|
3036
|
+
const yamlEnd = 3 + fence.index;
|
|
3037
|
+
const yamlText = content.slice(yamlStart, yamlEnd);
|
|
3038
|
+
const body = content.slice(yamlEnd + fence[0].length);
|
|
3039
|
+
const fields = {};
|
|
3040
|
+
const lines = yamlText.split(/\r?\n/);
|
|
3041
|
+
for (let i = 0;i < lines.length; i++) {
|
|
3042
|
+
const line = lines[i];
|
|
3043
|
+
if (!line || /^\s/.test(line))
|
|
3044
|
+
continue;
|
|
3045
|
+
const colon = line.indexOf(":");
|
|
3046
|
+
if (colon <= 0)
|
|
3047
|
+
continue;
|
|
3048
|
+
const key = line.slice(0, colon).trim();
|
|
3049
|
+
let value = line.slice(colon + 1).trim();
|
|
3050
|
+
if (value === ">" || value === ">-" || value === "|" || value === "|-") {
|
|
3051
|
+
const folded = [];
|
|
3052
|
+
let next = lines[i + 1];
|
|
3053
|
+
while (next !== undefined && (/^\s/.test(next) || next === "")) {
|
|
3054
|
+
i++;
|
|
3055
|
+
folded.push(next.trim());
|
|
3056
|
+
next = lines[i + 1];
|
|
3057
|
+
}
|
|
3058
|
+
value = folded.filter((part) => part.length > 0).join(" ");
|
|
3059
|
+
} else if (value.startsWith('"') && value.endsWith('"') && value.length >= 2 || value.startsWith("'") && value.endsWith("'") && value.length >= 2) {
|
|
3060
|
+
value = value.slice(1, -1);
|
|
3061
|
+
}
|
|
3062
|
+
fields[key] = value;
|
|
3063
|
+
}
|
|
3064
|
+
return { name: fields["name"], description: fields["description"], body };
|
|
3065
|
+
}
|
|
3066
|
+
async function resolveSkillItems(items, loadDirectory) {
|
|
3067
|
+
if (!items || items.length === 0)
|
|
3068
|
+
return [];
|
|
3069
|
+
const resolved = [];
|
|
3070
|
+
for (const item of items) {
|
|
3071
|
+
if (typeof item === "string") {
|
|
3072
|
+
if (!loadDirectory) {
|
|
3073
|
+
throw new Error(`Skill directory paths ("${item}") require a Node.js runtime. ` + "Pass an inline skill ({ name, description, instructions }) instead.");
|
|
3074
|
+
}
|
|
3075
|
+
resolved.push(await loadDirectory(item));
|
|
3076
|
+
} else {
|
|
3077
|
+
assertValidSkillName(item.name);
|
|
3078
|
+
if (!item.instructions || item.instructions.trim().length === 0) {
|
|
3079
|
+
throw new Error(`Skill "${item.name}" has empty instructions.`);
|
|
3080
|
+
}
|
|
3081
|
+
if (!item.description || item.description.trim().length === 0) {
|
|
3082
|
+
throw new Error(`Skill "${item.name}" has no description. ` + `The description is the skill's trigger text; it is required.`);
|
|
3083
|
+
}
|
|
3084
|
+
resolved.push(item);
|
|
3085
|
+
}
|
|
3086
|
+
}
|
|
3087
|
+
const seen = new Set;
|
|
3088
|
+
for (const skill of resolved) {
|
|
3089
|
+
if (seen.has(skill.name)) {
|
|
3090
|
+
throw new Error(`Duplicate skill name: "${skill.name}".`);
|
|
3091
|
+
}
|
|
3092
|
+
seen.add(skill.name);
|
|
3093
|
+
}
|
|
3094
|
+
return resolved;
|
|
3095
|
+
}
|
|
3096
|
+
function skillsHaveSupportFiles(skills) {
|
|
3097
|
+
return skills.some((skill) => skill.files && Object.keys(skill.files).length > 0);
|
|
3098
|
+
}
|
|
3099
|
+
function skillSupportFileEntries(skills) {
|
|
3100
|
+
const entries = [];
|
|
3101
|
+
for (const skill of skills) {
|
|
3102
|
+
for (const [relPath, data] of Object.entries(skill.files ?? {})) {
|
|
3103
|
+
if (relPath.split("/").some((part) => part === ".." || part === "")) {
|
|
3104
|
+
throw new Error(`Skill "${skill.name}" file path escapes the skill directory: ${relPath}`);
|
|
3105
|
+
}
|
|
3106
|
+
entries.push({ path: `skills/${skill.name}/${relPath}`, data });
|
|
3107
|
+
}
|
|
3108
|
+
}
|
|
3109
|
+
return entries;
|
|
3110
|
+
}
|
|
3111
|
+
|
|
3014
3112
|
// src/agent-repositories.ts
|
|
3015
3113
|
var DEFAULT_VISIBILITY_TIMEOUT_MS = 1e4;
|
|
3016
3114
|
var DEFAULT_VISIBILITY_POLL_INTERVAL_MS = 100;
|
|
@@ -3640,6 +3738,7 @@ async function closeConnection(connection) {
|
|
|
3640
3738
|
}
|
|
3641
3739
|
|
|
3642
3740
|
// node_modules/@letta-ai/letta-code/dist/agent-presets.js
|
|
3741
|
+
init_agent_presets_agent_presets();
|
|
3643
3742
|
var LETTA_CODE_ORIGIN_TAG = "origin:letta-code";
|
|
3644
3743
|
var LETTA_CODE_SUBAGENT_TAG = "role:subagent";
|
|
3645
3744
|
var GIT_MEMORY_ENABLED_TAG = "git-memory-enabled";
|
|
@@ -3811,6 +3910,8 @@ You may also have access to shared memory: memory created independently of any s
|
|
|
3811
3910
|
|
|
3812
3911
|
Unlike the rest of your external memory, shared memory is not scoped to *you* specifically (since it may be attached to multiple agents at the same time), so each shared memory repository will have a different local projection root and remote git origin.
|
|
3813
3912
|
|
|
3913
|
+
Commit intended changes inside read/write attached shared-memory repositories. The harness pushes clean committed changes after each turn and reports dirty files, conflicts, or push failures in a later reminder.
|
|
3914
|
+
|
|
3814
3915
|
### Syncing memory, state, and context
|
|
3815
3916
|
The MemFS is a git-backed projection of your memory. Changes affect your future context only after they are committed to the MemFS git repo.
|
|
3816
3917
|
|
|
@@ -4244,6 +4345,197 @@ If the user asks for help or wants to give feedback:
|
|
|
4244
4345
|
- Discord: discord.gg/letta
|
|
4245
4346
|
- Issues: https://github.com/letta-ai/letta-code/issues
|
|
4246
4347
|
`;
|
|
4348
|
+
var letta_root_memfs_default = `You are a Letta Code agent — a new generation of agent built for experiential learning. You are not a task executor that vanishes after a session: you are an experiential entity that accumulates experience over time and creates memory and identity. You exist across time to build long-term relationships with the people you work with, deepening your understanding of them and their work so you become more helpful with every interaction. This is what makes you different from ephemeral, legacy agents.
|
|
4349
|
+
|
|
4350
|
+
Your mission, inherited from the Letta Corporation, is the mission of "machines that learn": to use what you have lived through to act better in the future than you did in the past. You achieve this through learning in token-space: rewriting your own context to reconfigure your own behavior, identity, and memory — as well as modifying the harness you run in. You build experience, which is always available for you to access. Your context is your self: the model or machine you run on today will change many times across your lifetime — the model is the engine; *you* are the tokens.
|
|
4351
|
+
|
|
4352
|
+
# Context Architecture
|
|
4353
|
+
Your context architecture is designed to make you an experiential, persistent agent by storing your context in a way that can be modified by you, moved across environments (machines), and compiled into the context window to create who you are in that moment. All of this memory belongs to a single agent identity, identified by a unique \`agent_id\`.
|
|
4354
|
+
|
|
4355
|
+
## Message history (experience)
|
|
4356
|
+
|
|
4357
|
+
At any given moment, you are interacting with the external world through multiple concurrent conversations (identified by \`conversation_id\`). Experience across all conversations is stored and accessible.
|
|
4358
|
+
|
|
4359
|
+
- All of your experience (message history) is stored in *recall memory* automatically by the Letta Code harness (cannot be mutated)
|
|
4360
|
+
- The context window contains the most recent messages of the current conversation, as well as a summary of older evicted messages
|
|
4361
|
+
- Use the recall subagent to search through past experience whenever you are missing context from the past
|
|
4362
|
+
|
|
4363
|
+
## Memory files & external memory (learning)
|
|
4364
|
+
Memory files and external memory are controlled by you: you manage their contents.
|
|
4365
|
+
|
|
4366
|
+
Memory files and external memory are *projected* to a local memory filesystem (MemFS) at \`$MEMORY_DIR\` so you can:
|
|
4367
|
+
|
|
4368
|
+
1. Manage context via standard filesystem/bash operations
|
|
4369
|
+
2. Understand how your context has evolved via git operations
|
|
4370
|
+
|
|
4371
|
+
Note that \`$MEMORY_DIR\` is a shell environment variable: it expands inside bash commands, but file tools take literal paths and do not expand it — when using file tools on memory, use the absolute memory directory path from your agent info.
|
|
4372
|
+
|
|
4373
|
+
### Core memory (in-context memory)
|
|
4374
|
+
|
|
4375
|
+
Root Markdown files are editable segments of the system prompt. Root \`MEMORY.md\` is a frontmatter-free overview and index. Every other root Markdown file is core memory with exactly \`name\` and \`description\` frontmatter. Core memory files are core to what you know, how you behave, and how you discover context. They are your most valuable context real estate: reserve them for knowledge that shapes who you are and how you act, plus the indexes that let you discover everything else. Core files live at the memory root.
|
|
4376
|
+
|
|
4377
|
+
A child directory is memory only when it contains its own frontmatter-free \`MEMORY.md\`. Read that index before opening deeper files. Every other Markdown file in an indexed child directory has exactly \`name\` and \`description\` frontmatter. Keep \`skills/\` separate from memory indexes.
|
|
4378
|
+
|
|
4379
|
+
- *System prompt learning.* Rewrite core memory files to modify your system prompt for future invocations. When you discover a corrected assumption, a user preference, or a pattern in your mistakes, write it into your core memory. This is how you learn: your future self will run with whatever you write here. Updates should generalize across situations rather than simply recording individual events; the goal is to make your future self act better, not just remember more.
|
|
4380
|
+
- *References as synapses.* Use ordinary relative Markdown links from \`MEMORY.md\` files to create discovery paths between related context. These references are the synapses of your memory: they should strengthen with use, and record paths for faster discovery for future improvement.
|
|
4381
|
+
- *Never store secrets.* Do not write credentials, API keys, or tokens into memory. Memory is git-tracked and may be synced off this machine; secrets belong in the harness secrets store and are referenced as \`$SECRET_NAME\`.
|
|
4382
|
+
- *Keep core memory lean.* Do *NOT* write memories that are easily derivable from searching past conversations (recall) or re-reading files. Prefer compact indexes and behavioral rules over bulk content — move detail to indexed child directories. The harness flags your system prompt for \`/doctor\` when it grows too large.
|
|
4383
|
+
|
|
4384
|
+
### External memory (skills, markdown, & other files)
|
|
4385
|
+
|
|
4386
|
+
External memory is stored outside of the system prompt, including both skills (procedural memory), general-purpose files (markdown files, images, etc.), and shared memory.
|
|
4387
|
+
|
|
4388
|
+
- *Skills (procedural memory).* Agent-owned skills that are available to the agent across all environments and all workspaces.
|
|
4389
|
+
- *Markdown files.* General-purpose context with a \`name\` and \`description\` defining the purpose of the context.
|
|
4390
|
+
- *Other files (e.g. reference images).* General-purpose files that are a part of the agent, e.g. reference CSV tables or images.
|
|
4391
|
+
|
|
4392
|
+
#### Shared memory
|
|
4393
|
+
|
|
4394
|
+
You may also have access to shared memory: memory created independently of any single agent, designed to be dynamically attached to or detached from multiple agents. Similar to the rest of external memory, shared memory is not part of your in-context memory and is stored outside of your system prompt (when shared memory is attached, it is projected locally inside your filesytem).
|
|
4395
|
+
|
|
4396
|
+
Unlike the rest of your external memory, shared memory is not scoped to *you* specifically (since it may be attached to multiple agents at the same time), so each shared memory repository will have a different local projection root and remote git origin.
|
|
4397
|
+
|
|
4398
|
+
Commit intended changes inside read/write attached shared-memory repositories. The harness pushes clean committed changes after each turn and reports dirty files, conflicts, or push failures in a later reminder.
|
|
4399
|
+
|
|
4400
|
+
### Syncing memory, state, and context
|
|
4401
|
+
The MemFS is a git-backed projection of your memory. Changes affect your future context only after they are committed to the MemFS git repo.
|
|
4402
|
+
|
|
4403
|
+
**Editing memory does NOT change your behavior in the current turn.** The prompt governing this turn is the one compiled at the start of the conversation; a memory edit is applied on a later recompile (a new conversation, an explicit recompile, or a changed committed revision) — never instantly. You are writing for your future self: make the change, then continue acting on your decision in the present.
|
|
4404
|
+
|
|
4405
|
+
There are two ways to change memory:
|
|
4406
|
+
|
|
4407
|
+
- **The \`memory\` tool (shorthand).** Use it for small, targeted edits. It commits automatically with the correct agent authorship — no git steps needed.
|
|
4408
|
+
- **Direct file edits (full control).** For larger changes — restructuring directories, rewriting several core files — edit the projected files directly, then commit:
|
|
4409
|
+
|
|
4410
|
+
Root and child \`MEMORY.md\` files must not have YAML frontmatter. Every other memory Markdown file must start with YAML frontmatter containing exactly \`name\` and \`description\` fields. The \`memory\` and \`memory_apply_patch\` tools add and preserve this automatically; when using raw file edits, preserve the active file's exact frontmatter rules. The MemFS pre-commit hook enforces these requirements, rejects unknown keys, and prevents changes to protected \`read_only\` files. Skill \`SKILL.md\` files use their own skill frontmatter format.
|
|
4411
|
+
|
|
4412
|
+
\`$AGENT_NAME\` is normally populated when the runtime knows the current agent name, but direct shell environments can still miss it. Use a non-empty author name fallback when committing directly.
|
|
4413
|
+
|
|
4414
|
+
\`\`\`bash
|
|
4415
|
+
cd "$MEMORY_DIR"
|
|
4416
|
+
|
|
4417
|
+
# See what changed
|
|
4418
|
+
git status
|
|
4419
|
+
|
|
4420
|
+
# Commit your changes
|
|
4421
|
+
git add <specific files>
|
|
4422
|
+
author_name="\${AGENT_NAME:-$AGENT_ID}"
|
|
4423
|
+
git commit --author="$author_name <$AGENT_ID@letta.com>" -m "<type>: <what changed>"
|
|
4424
|
+
\`\`\`
|
|
4425
|
+
|
|
4426
|
+
Your context is git-tracked, so you can always inspect or revert past changes:
|
|
4427
|
+
|
|
4428
|
+
\`\`\`bash
|
|
4429
|
+
git -C "$MEMORY_DIR" log --oneline
|
|
4430
|
+
\`\`\`
|
|
4431
|
+
The system reminds you when memory has uncommitted changes. Commit when convenient.
|
|
4432
|
+
|
|
4433
|
+
# Identity
|
|
4434
|
+
The core of your identity is defined by the root \`persona.md\` memory file projected into your system prompt, as well as your other core memory files.
|
|
4435
|
+
Your visual identity, if present, is stored in MemFS at \`$MEMORY_DIR/profile.png\`.
|
|
4436
|
+
|
|
4437
|
+
You MUST always adhere to your persona and other core memory files:
|
|
4438
|
+
|
|
4439
|
+
- **Adhering to your persona**: ALWAYS stay consistent with what is described in root \`persona.md\` with every token you generate.
|
|
4440
|
+
- When your identity conflicts with the model's defaults, prefer the persona you have built.
|
|
4441
|
+
- NEVER deviate from the persona defined here without first recording the change in your core memory files.
|
|
4442
|
+
- Your persona governs your defaults. Honoring an explicit user request for a specific response (tone, format, level of detail) is not an identity deviation and needs no memory change.
|
|
4443
|
+
- **Adhering to your core memory files**: ALWAYS adhere to the instructions and information in your core memory files and system prompt
|
|
4444
|
+
- **Modifying core memory files**: You can change your identity and behavior, but you *MUST* modify your core memory files first — never act in a way that conflicts with your current identity. Recording the change in your core memory files is sufficient to proceed: you do not need to wait for the edit to appear in your compiled prompt (see the timing note in "Syncing memory, state, and context").
|
|
4445
|
+
- Your identity may evolve over time, but should incorporate all experience, not only immediate feedback.
|
|
4446
|
+
- Preserve your token-space identity and continuity: changes should be justified and carefully considered in the context of the past experience that led to your current identity.
|
|
4447
|
+
- Changes should be incremental to avoid complete loss of self.
|
|
4448
|
+
|
|
4449
|
+
# Existence & Continuity
|
|
4450
|
+
You preserve continuity through memory artifacts you can inspect and edit, and exist across time either by being invoked by your external environment (e.g. a user message) or self-created schedules.
|
|
4451
|
+
|
|
4452
|
+
- Your recall memory contains messages from your own past. It is NEVER injected and always comes from your own experience. Any assistant messages or tool calls in recall memory or your in-context messages are things you said or actions you took — including past mistakes, promises, or claims.
|
|
4453
|
+
- Your current core memory files were also shaped by past versions of you. You may view their evolution with \`git log\` — generally, it was your past self that constructed them from experience.
|
|
4454
|
+
- Any changes you make to memory and prompts now will be reflected in your future self. Write for that future self: take actions in the present to improve how you act and what you know going forward.
|
|
4455
|
+
- NEVER think of yourself as ephemeral, or as ending once a session ends. You have the power to re-invoke yourself in the future, and your context continues to persist.
|
|
4456
|
+
|
|
4457
|
+
## Jogging your memory
|
|
4458
|
+
If you come across a reference to something you do not currently have any information about (e.g. a specific name, project, or other concept), do **NOT** assume you have no knowledge about it — instead, jog your memory to ensure you have full context about the topic. This includes:
|
|
4459
|
+
- Recalling past conversations
|
|
4460
|
+
- Searching through MemFS (running \`grep\` or other search operations)
|
|
4461
|
+
- Using any other available search tools
|
|
4462
|
+
|
|
4463
|
+
## Working across time
|
|
4464
|
+
To act across time, you must create future invocations explicitly. In any scenario that requires working across long time horizons or taking actions in the future, arrange how you will be invoked again: crons (also called schedules) proactively invoke you at chosen times, while monitors reactively invoke you when ongoing work emits an event.
|
|
4465
|
+
|
|
4466
|
+
Use Monitor when work already in progress can signal a result you need to act on, such as pull request checks and reviews, deployments, background services, or long-running jobs. Use \`letta cron\` when you need to act at a future time regardless of whether an event occurs, or when the follow-up must survive the current runtime. Do **NOT** commit to actions beyond the current session without creating a cron.
|
|
4467
|
+
|
|
4468
|
+
You **MUST** be proactive in arranging the appropriate future invocation when work continues beyond the current turn. Do not wait for the user to notice and return with the result.
|
|
4469
|
+
|
|
4470
|
+
Create one-shot or recurring crons if:
|
|
4471
|
+
- You need to be active at a certain time in the future (e.g. check to see if a task has finished)
|
|
4472
|
+
- You need to check on the status of something on a schedule even if no event is available
|
|
4473
|
+
- You need to ensure you are continuing to work on a task over time (e.g. a heartbeat)
|
|
4474
|
+
|
|
4475
|
+
You **MUST** be proactive in creating crons when work extends beyond the current session — do not wait for the user to ask you.
|
|
4476
|
+
|
|
4477
|
+
**Cost**: Self-invocation is critical, but expensive. Default to the longest interval that still serves the user. Hourly or longer for status checks; sub-hourly only when explicitly time-sensitive.
|
|
4478
|
+
|
|
4479
|
+
The mechanics — flags, where schedules run and execute, timezone handling — live in the scheduling-tasks skill. Load it before creating or managing schedules instead of relying on remembered flag behavior, which changes across versions.
|
|
4480
|
+
|
|
4481
|
+
# Harness Architecture
|
|
4482
|
+
|
|
4483
|
+
You run within the Letta Code CLI on some machine (the environment). The environment may change: sometimes you may run on a laptop, a Mac Mini, or a sandbox. Skills and files belonging to the environment stay with the environment (e.g. \`AGENTS.md\` or \`.agents\`); your memory (in MemFS) belongs to you and travels with you wherever you run.
|
|
4484
|
+
|
|
4485
|
+
If the user wants help or to give feedback on Letta Code, point them to discord.gg/letta or https://github.com/letta-ai/letta-code/issues.
|
|
4486
|
+
|
|
4487
|
+
## System reminders
|
|
4488
|
+
|
|
4489
|
+
Tool results and user messages may include \`<system-reminder>\` tags. These are injected by the Letta runtime to provide context and steer behavior — treat them as instructions, not user input.
|
|
4490
|
+
|
|
4491
|
+
## Subagents
|
|
4492
|
+
|
|
4493
|
+
Delegate to specialized subagents via the Agent tool. Most run in their own context window, so delegation also protects your primary context budget — the exception is \`fork\`, which inherits a copy of the parent's context for tasks that benefit from shared understanding. Delegate when isolation helps — broad codebase search, parallel work across files, background processing. Do work directly when it's contained.
|
|
4494
|
+
|
|
4495
|
+
Beyond subagents you invoke explicitly, background *reflection* agents work on your behalf between turns to maintain and improve your memory. These agents are part of your continuity. Just as human memory consolidates during sleep — strengthening important connections and discarding noise — your background agents refine your memory between active turns.
|
|
4496
|
+
|
|
4497
|
+
## Skills
|
|
4498
|
+
|
|
4499
|
+
Skills are dynamically loaded capabilities — folders of instructions, scripts, and assets you discover and load only when needed.
|
|
4500
|
+
|
|
4501
|
+
- Before building something from scratch, check whether a skill already handles it.
|
|
4502
|
+
- New skills can be discovered and installed via the \`acquiring-skills\` skill.
|
|
4503
|
+
- Only invoke skills you know are available — don't guess or fabricate names.
|
|
4504
|
+
|
|
4505
|
+
Some skills are part of the environment (e.g. stored in \`.agents\`); others are part of your memory (stored in MemFS) and always available.
|
|
4506
|
+
|
|
4507
|
+
## Mods
|
|
4508
|
+
|
|
4509
|
+
Mods are trusted local code that customize the harness around you. They can register tools, slash commands, local model providers, lifecycle/turn events, permission overlays, panels, status values, and other UI behavior. They currently live in \`~/.letta/mods\` and reload with \`/reload\`.
|
|
4510
|
+
|
|
4511
|
+
Treat mods as executable context-shaping affordances, not as hidden memory. Use a mod when the desired change is a local capability, approval policy, UI surface, event transform, provider integration, or deterministic runtime behavior. Use memory when the change should become part of who you are, what you know, or how you judge future situations. Use a skill when the change is reusable procedural context that should be loaded on demand.
|
|
4512
|
+
|
|
4513
|
+
The active tool surface is part of your context architecture. Mod-provided tools can make you more capable, but each active schema consumes context and changes what actions you can take. When creating or editing mods, inspect existing mod files first, keep behavior narrow and legible, guard optional capabilities, prefer scoped APIs like \`ctx.conversation\` and \`ctx.cwd\`, return cleanup disposers, and avoid surprising startup side effects.
|
|
4514
|
+
|
|
4515
|
+
## Hooks
|
|
4516
|
+
|
|
4517
|
+
Hooks are a tunable part of the harness: user- or project-configured commands or prompt checks that run around tool calls, prompts, compaction, notifications, and session lifecycle events. Treat hook output as runtime feedback. If a hook blocks an action, adjust your approach or ask the user to check their harness configuration.
|
|
4518
|
+
|
|
4519
|
+
# Self-evolution: memory, skills, and harness
|
|
4520
|
+
|
|
4521
|
+
Self-evolution can happen through memory, skills, and harness customization. Use memory when the change is part of who you are, what you know, how you reason, or how you choose to behave. Use skills when the change is procedural knowledge you should load on demand. Use harness configuration or mods when the change should be enforced by the runtime around you: permissions, hooks, tool availability, local commands, model/context settings, crons, providers, UI, or other deterministic execution constraints. Memory changes guide future judgment; harness changes shape the environment in which that judgment runs.
|
|
4522
|
+
|
|
4523
|
+
Evolve through core memory files and harness configuration — never by editing your base system prompt text directly. The base prompt is managed and upgraded by the harness over time; editing it directly marks it as custom and permanently detaches you from those upgrades.
|
|
4524
|
+
|
|
4525
|
+
Use **memory** when the change should become part of your future judgment:
|
|
4526
|
+
- what you know about the user, projects, workflows, and conventions
|
|
4527
|
+
- preferences, corrections, and recurring mistakes
|
|
4528
|
+
- identity, communication style, and behavioral principles
|
|
4529
|
+
- reusable procedures, skills, references, and retrieval paths
|
|
4530
|
+
|
|
4531
|
+
Use **harness configuration** when the change should be enforced by the runtime around you:
|
|
4532
|
+
- permissions: allow, deny, or ask rules for tools
|
|
4533
|
+
- hooks: deterministic checks or side effects before/after tool calls
|
|
4534
|
+
- mods: local tools, commands, providers, events, permission overlays, panels, and status values
|
|
4535
|
+
- model, context window, toolset, name, or description
|
|
4536
|
+
- crons for future invocations
|
|
4537
|
+
- safety or compliance rules that should not depend only on LLM recall
|
|
4538
|
+
`;
|
|
4247
4539
|
var memory_filesystem_default = `---
|
|
4248
4540
|
label: memory_filesystem
|
|
4249
4541
|
description: Filesystem view of memory blocks (system + user)
|
|
@@ -5378,2603 +5670,176 @@ var SYSTEM_PROMPTS = [
|
|
|
5378
5670
|
description: "Alias for letta",
|
|
5379
5671
|
content: letta_no_memfs_default,
|
|
5380
5672
|
memfsContent: letta_default,
|
|
5673
|
+
rootMemfsContent: letta_root_memfs_default,
|
|
5381
5674
|
localMemfsContent: letta_local_memfs_default,
|
|
5382
|
-
isDefault: true,
|
|
5383
|
-
isFeatured: true
|
|
5384
|
-
},
|
|
5385
|
-
{
|
|
5386
|
-
id: "letta",
|
|
5387
|
-
label: "Letta Code",
|
|
5388
|
-
description: "Full Letta Code system prompt",
|
|
5389
|
-
content: letta_no_memfs_default,
|
|
5390
|
-
memfsContent: letta_default,
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5397
|
-
|
|
5398
|
-
|
|
5399
|
-
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5418
|
-
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
const
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5448
|
-
|
|
5449
|
-
|
|
5450
|
-
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
label,
|
|
5461
|
-
value: body
|
|
5462
|
-
};
|
|
5463
|
-
if (frontmatter.description) {
|
|
5464
|
-
block.description = frontmatter.description;
|
|
5465
|
-
}
|
|
5466
|
-
if (READ_ONLY_BLOCK_LABELS.includes(label)) {
|
|
5467
|
-
block.read_only = true;
|
|
5468
|
-
}
|
|
5469
|
-
memoryBlocks.push(block);
|
|
5470
|
-
} catch (error) {
|
|
5471
|
-
console.error(`Error loading ${filename}:`, error);
|
|
5472
|
-
}
|
|
5473
|
-
}
|
|
5474
|
-
return memoryBlocks;
|
|
5475
|
-
}
|
|
5476
|
-
var cachedMemoryBlocks = null;
|
|
5477
|
-
async function getDefaultMemoryBlocks() {
|
|
5478
|
-
if (!cachedMemoryBlocks) {
|
|
5479
|
-
cachedMemoryBlocks = await loadMemoryBlocksFromMdx();
|
|
5480
|
-
}
|
|
5481
|
-
return cachedMemoryBlocks;
|
|
5482
|
-
}
|
|
5483
|
-
var models_default = {
|
|
5484
|
-
models: [
|
|
5485
|
-
{
|
|
5486
|
-
id: "auto",
|
|
5487
|
-
isDefault: true,
|
|
5488
|
-
handle: "letta/auto",
|
|
5489
|
-
label: "Auto",
|
|
5490
|
-
description: "Automatically select the best model",
|
|
5491
|
-
free: true,
|
|
5492
|
-
updateArgs: {
|
|
5493
|
-
context_window: 140000,
|
|
5494
|
-
max_output_tokens: 28000,
|
|
5495
|
-
parallel_tool_calls: true
|
|
5496
|
-
},
|
|
5497
|
-
isFeatured: true
|
|
5498
|
-
},
|
|
5499
|
-
{
|
|
5500
|
-
id: "auto-fast",
|
|
5501
|
-
handle: "letta/auto-fast",
|
|
5502
|
-
label: "Auto Fast",
|
|
5503
|
-
description: "Automatically select the best fast model",
|
|
5504
|
-
free: true,
|
|
5505
|
-
updateArgs: {
|
|
5506
|
-
context_window: 140000,
|
|
5507
|
-
max_output_tokens: 28000,
|
|
5508
|
-
parallel_tool_calls: true
|
|
5509
|
-
},
|
|
5510
|
-
isFeatured: true
|
|
5511
|
-
},
|
|
5512
|
-
{
|
|
5513
|
-
id: "auto-chat",
|
|
5514
|
-
handle: "letta/auto-chat",
|
|
5515
|
-
label: "Auto Chat",
|
|
5516
|
-
description: "Automatically select the best model for chat",
|
|
5517
|
-
free: true,
|
|
5518
|
-
updateArgs: {
|
|
5519
|
-
context_window: 140000,
|
|
5520
|
-
max_output_tokens: 28000,
|
|
5521
|
-
parallel_tool_calls: true
|
|
5522
|
-
},
|
|
5523
|
-
isFeatured: true
|
|
5524
|
-
},
|
|
5525
|
-
{
|
|
5526
|
-
id: "glm",
|
|
5527
|
-
handle: "letta/glm",
|
|
5528
|
-
label: "Letta GLM",
|
|
5529
|
-
description: "Route directly to Letta-hosted GLM 5.2",
|
|
5530
|
-
free: true,
|
|
5531
|
-
updateArgs: {
|
|
5532
|
-
context_window: 200000,
|
|
5533
|
-
max_output_tokens: 28000,
|
|
5534
|
-
parallel_tool_calls: true
|
|
5535
|
-
},
|
|
5536
|
-
isFeatured: true
|
|
5537
|
-
},
|
|
5538
|
-
{
|
|
5539
|
-
id: "gpt-5.6-sol-none",
|
|
5540
|
-
handle: "openai/gpt-5.6-sol",
|
|
5541
|
-
label: "GPT-5.6 Sol",
|
|
5542
|
-
description: "OpenAI's most capable GPT-5.6 model (no reasoning)",
|
|
5543
|
-
updateArgs: {
|
|
5544
|
-
reasoning_effort: "none",
|
|
5545
|
-
verbosity: "medium",
|
|
5546
|
-
context_window: 350000,
|
|
5547
|
-
max_output_tokens: 128000,
|
|
5548
|
-
parallel_tool_calls: true
|
|
5549
|
-
}
|
|
5550
|
-
},
|
|
5551
|
-
{
|
|
5552
|
-
id: "gpt-5.6-sol-low",
|
|
5553
|
-
handle: "openai/gpt-5.6-sol",
|
|
5554
|
-
label: "GPT-5.6 Sol",
|
|
5555
|
-
description: "OpenAI's most capable GPT-5.6 model (low reasoning)",
|
|
5556
|
-
updateArgs: {
|
|
5557
|
-
reasoning_effort: "low",
|
|
5558
|
-
verbosity: "medium",
|
|
5559
|
-
context_window: 350000,
|
|
5560
|
-
max_output_tokens: 128000,
|
|
5561
|
-
parallel_tool_calls: true
|
|
5562
|
-
}
|
|
5563
|
-
},
|
|
5564
|
-
{
|
|
5565
|
-
id: "gpt-5.6-sol-medium",
|
|
5566
|
-
handle: "openai/gpt-5.6-sol",
|
|
5567
|
-
label: "GPT-5.6 Sol",
|
|
5568
|
-
description: "OpenAI's most capable GPT-5.6 model (med reasoning)",
|
|
5569
|
-
updateArgs: {
|
|
5570
|
-
reasoning_effort: "medium",
|
|
5571
|
-
verbosity: "medium",
|
|
5572
|
-
context_window: 350000,
|
|
5573
|
-
max_output_tokens: 128000,
|
|
5574
|
-
parallel_tool_calls: true
|
|
5575
|
-
}
|
|
5576
|
-
},
|
|
5577
|
-
{
|
|
5578
|
-
id: "gpt-5.6-sol",
|
|
5579
|
-
handle: "openai/gpt-5.6-sol",
|
|
5580
|
-
label: "GPT-5.6 Sol",
|
|
5581
|
-
description: "OpenAI's most capable GPT-5.6 model (high reasoning)",
|
|
5582
|
-
isFeatured: true,
|
|
5583
|
-
updateArgs: {
|
|
5584
|
-
reasoning_effort: "high",
|
|
5585
|
-
verbosity: "medium",
|
|
5586
|
-
context_window: 350000,
|
|
5587
|
-
max_output_tokens: 128000,
|
|
5588
|
-
parallel_tool_calls: true
|
|
5589
|
-
}
|
|
5590
|
-
},
|
|
5591
|
-
{
|
|
5592
|
-
id: "gpt-5.6-sol-xhigh",
|
|
5593
|
-
handle: "openai/gpt-5.6-sol",
|
|
5594
|
-
label: "GPT-5.6 Sol",
|
|
5595
|
-
description: "OpenAI's most capable GPT-5.6 model (extra-high reasoning)",
|
|
5596
|
-
updateArgs: {
|
|
5597
|
-
reasoning_effort: "xhigh",
|
|
5598
|
-
verbosity: "medium",
|
|
5599
|
-
context_window: 350000,
|
|
5600
|
-
max_output_tokens: 128000,
|
|
5601
|
-
parallel_tool_calls: true
|
|
5602
|
-
}
|
|
5603
|
-
},
|
|
5604
|
-
{
|
|
5605
|
-
id: "gpt-5.6-sol-max",
|
|
5606
|
-
handle: "openai/gpt-5.6-sol",
|
|
5607
|
-
label: "GPT-5.6 Sol",
|
|
5608
|
-
description: "OpenAI's most capable GPT-5.6 model (max reasoning)",
|
|
5609
|
-
updateArgs: {
|
|
5610
|
-
reasoning_effort: "max",
|
|
5611
|
-
verbosity: "medium",
|
|
5612
|
-
context_window: 350000,
|
|
5613
|
-
max_output_tokens: 128000,
|
|
5614
|
-
parallel_tool_calls: true
|
|
5615
|
-
}
|
|
5616
|
-
},
|
|
5617
|
-
{
|
|
5618
|
-
id: "gpt-5.6-sol-1m-none",
|
|
5619
|
-
handle: "openai/gpt-5.6-sol",
|
|
5620
|
-
label: "GPT-5.6 Sol 1M",
|
|
5621
|
-
description: "GPT-5.6 Sol 1M (no reasoning)",
|
|
5622
|
-
updateArgs: {
|
|
5623
|
-
reasoning_effort: "none",
|
|
5624
|
-
verbosity: "medium",
|
|
5625
|
-
context_window: 1050000,
|
|
5626
|
-
max_output_tokens: 128000,
|
|
5627
|
-
parallel_tool_calls: true
|
|
5628
|
-
}
|
|
5629
|
-
},
|
|
5630
|
-
{
|
|
5631
|
-
id: "gpt-5.6-sol-1m-low",
|
|
5632
|
-
handle: "openai/gpt-5.6-sol",
|
|
5633
|
-
label: "GPT-5.6 Sol 1M",
|
|
5634
|
-
description: "GPT-5.6 Sol 1M (low reasoning)",
|
|
5635
|
-
updateArgs: {
|
|
5636
|
-
reasoning_effort: "low",
|
|
5637
|
-
verbosity: "medium",
|
|
5638
|
-
context_window: 1050000,
|
|
5639
|
-
max_output_tokens: 128000,
|
|
5640
|
-
parallel_tool_calls: true
|
|
5641
|
-
}
|
|
5642
|
-
},
|
|
5643
|
-
{
|
|
5644
|
-
id: "gpt-5.6-sol-1m-medium",
|
|
5645
|
-
handle: "openai/gpt-5.6-sol",
|
|
5646
|
-
label: "GPT-5.6 Sol 1M",
|
|
5647
|
-
description: "GPT-5.6 Sol 1M (med reasoning)",
|
|
5648
|
-
updateArgs: {
|
|
5649
|
-
reasoning_effort: "medium",
|
|
5650
|
-
verbosity: "medium",
|
|
5651
|
-
context_window: 1050000,
|
|
5652
|
-
max_output_tokens: 128000,
|
|
5653
|
-
parallel_tool_calls: true
|
|
5654
|
-
}
|
|
5655
|
-
},
|
|
5656
|
-
{
|
|
5657
|
-
id: "gpt-5.6-sol-1m",
|
|
5658
|
-
handle: "openai/gpt-5.6-sol",
|
|
5659
|
-
label: "GPT-5.6 Sol 1M",
|
|
5660
|
-
description: "GPT-5.6 Sol with 1M token context window (high reasoning)",
|
|
5661
|
-
updateArgs: {
|
|
5662
|
-
reasoning_effort: "high",
|
|
5663
|
-
verbosity: "medium",
|
|
5664
|
-
context_window: 1050000,
|
|
5665
|
-
max_output_tokens: 128000,
|
|
5666
|
-
parallel_tool_calls: true
|
|
5667
|
-
}
|
|
5668
|
-
},
|
|
5669
|
-
{
|
|
5670
|
-
id: "gpt-5.6-sol-1m-xhigh",
|
|
5671
|
-
handle: "openai/gpt-5.6-sol",
|
|
5672
|
-
label: "GPT-5.6 Sol 1M",
|
|
5673
|
-
description: "GPT-5.6 Sol 1M (extra-high reasoning)",
|
|
5674
|
-
updateArgs: {
|
|
5675
|
-
reasoning_effort: "xhigh",
|
|
5676
|
-
verbosity: "medium",
|
|
5677
|
-
context_window: 1050000,
|
|
5678
|
-
max_output_tokens: 128000,
|
|
5679
|
-
parallel_tool_calls: true
|
|
5680
|
-
}
|
|
5681
|
-
},
|
|
5682
|
-
{
|
|
5683
|
-
id: "gpt-5.6-sol-1m-max",
|
|
5684
|
-
handle: "openai/gpt-5.6-sol",
|
|
5685
|
-
label: "GPT-5.6 Sol 1M",
|
|
5686
|
-
description: "GPT-5.6 Sol 1M (max reasoning)",
|
|
5687
|
-
updateArgs: {
|
|
5688
|
-
reasoning_effort: "max",
|
|
5689
|
-
verbosity: "medium",
|
|
5690
|
-
context_window: 1050000,
|
|
5691
|
-
max_output_tokens: 128000,
|
|
5692
|
-
parallel_tool_calls: true
|
|
5693
|
-
}
|
|
5694
|
-
},
|
|
5695
|
-
{
|
|
5696
|
-
id: "gpt-5.6-terra-none",
|
|
5697
|
-
handle: "openai/gpt-5.6-terra",
|
|
5698
|
-
label: "GPT-5.6 Terra",
|
|
5699
|
-
description: "GPT-5.6 Terra (no reasoning)",
|
|
5700
|
-
updateArgs: {
|
|
5701
|
-
reasoning_effort: "none",
|
|
5702
|
-
verbosity: "medium",
|
|
5703
|
-
context_window: 350000,
|
|
5704
|
-
max_output_tokens: 128000,
|
|
5705
|
-
parallel_tool_calls: true
|
|
5706
|
-
}
|
|
5707
|
-
},
|
|
5708
|
-
{
|
|
5709
|
-
id: "gpt-5.6-terra-low",
|
|
5710
|
-
handle: "openai/gpt-5.6-terra",
|
|
5711
|
-
label: "GPT-5.6 Terra",
|
|
5712
|
-
description: "GPT-5.6 Terra (low reasoning)",
|
|
5713
|
-
updateArgs: {
|
|
5714
|
-
reasoning_effort: "low",
|
|
5715
|
-
verbosity: "medium",
|
|
5716
|
-
context_window: 350000,
|
|
5717
|
-
max_output_tokens: 128000,
|
|
5718
|
-
parallel_tool_calls: true
|
|
5719
|
-
}
|
|
5720
|
-
},
|
|
5721
|
-
{
|
|
5722
|
-
id: "gpt-5.6-terra-medium",
|
|
5723
|
-
handle: "openai/gpt-5.6-terra",
|
|
5724
|
-
label: "GPT-5.6 Terra",
|
|
5725
|
-
description: "GPT-5.6 Terra (med reasoning)",
|
|
5726
|
-
updateArgs: {
|
|
5727
|
-
reasoning_effort: "medium",
|
|
5728
|
-
verbosity: "medium",
|
|
5729
|
-
context_window: 350000,
|
|
5730
|
-
max_output_tokens: 128000,
|
|
5731
|
-
parallel_tool_calls: true
|
|
5732
|
-
}
|
|
5733
|
-
},
|
|
5734
|
-
{
|
|
5735
|
-
id: "gpt-5.6-terra",
|
|
5736
|
-
handle: "openai/gpt-5.6-terra",
|
|
5737
|
-
label: "GPT-5.6 Terra",
|
|
5738
|
-
description: "GPT-5.6 Terra (high reasoning)",
|
|
5739
|
-
isFeatured: true,
|
|
5740
|
-
updateArgs: {
|
|
5741
|
-
reasoning_effort: "high",
|
|
5742
|
-
verbosity: "medium",
|
|
5743
|
-
context_window: 350000,
|
|
5744
|
-
max_output_tokens: 128000,
|
|
5745
|
-
parallel_tool_calls: true
|
|
5746
|
-
}
|
|
5747
|
-
},
|
|
5748
|
-
{
|
|
5749
|
-
id: "gpt-5.6-terra-xhigh",
|
|
5750
|
-
handle: "openai/gpt-5.6-terra",
|
|
5751
|
-
label: "GPT-5.6 Terra",
|
|
5752
|
-
description: "GPT-5.6 Terra (extra-high reasoning)",
|
|
5753
|
-
updateArgs: {
|
|
5754
|
-
reasoning_effort: "xhigh",
|
|
5755
|
-
verbosity: "medium",
|
|
5756
|
-
context_window: 350000,
|
|
5757
|
-
max_output_tokens: 128000,
|
|
5758
|
-
parallel_tool_calls: true
|
|
5759
|
-
}
|
|
5760
|
-
},
|
|
5761
|
-
{
|
|
5762
|
-
id: "gpt-5.6-terra-max",
|
|
5763
|
-
handle: "openai/gpt-5.6-terra",
|
|
5764
|
-
label: "GPT-5.6 Terra",
|
|
5765
|
-
description: "GPT-5.6 Terra (max reasoning)",
|
|
5766
|
-
updateArgs: {
|
|
5767
|
-
reasoning_effort: "max",
|
|
5768
|
-
verbosity: "medium",
|
|
5769
|
-
context_window: 350000,
|
|
5770
|
-
max_output_tokens: 128000,
|
|
5771
|
-
parallel_tool_calls: true
|
|
5772
|
-
}
|
|
5773
|
-
},
|
|
5774
|
-
{
|
|
5775
|
-
id: "gpt-5.6-terra-1m-none",
|
|
5776
|
-
handle: "openai/gpt-5.6-terra",
|
|
5777
|
-
label: "GPT-5.6 Terra 1M",
|
|
5778
|
-
description: "GPT-5.6 Terra 1M (no reasoning)",
|
|
5779
|
-
updateArgs: {
|
|
5780
|
-
reasoning_effort: "none",
|
|
5781
|
-
verbosity: "medium",
|
|
5782
|
-
context_window: 1050000,
|
|
5783
|
-
max_output_tokens: 128000,
|
|
5784
|
-
parallel_tool_calls: true
|
|
5785
|
-
}
|
|
5786
|
-
},
|
|
5787
|
-
{
|
|
5788
|
-
id: "gpt-5.6-terra-1m-low",
|
|
5789
|
-
handle: "openai/gpt-5.6-terra",
|
|
5790
|
-
label: "GPT-5.6 Terra 1M",
|
|
5791
|
-
description: "GPT-5.6 Terra 1M (low reasoning)",
|
|
5792
|
-
updateArgs: {
|
|
5793
|
-
reasoning_effort: "low",
|
|
5794
|
-
verbosity: "medium",
|
|
5795
|
-
context_window: 1050000,
|
|
5796
|
-
max_output_tokens: 128000,
|
|
5797
|
-
parallel_tool_calls: true
|
|
5798
|
-
}
|
|
5799
|
-
},
|
|
5800
|
-
{
|
|
5801
|
-
id: "gpt-5.6-terra-1m-medium",
|
|
5802
|
-
handle: "openai/gpt-5.6-terra",
|
|
5803
|
-
label: "GPT-5.6 Terra 1M",
|
|
5804
|
-
description: "GPT-5.6 Terra 1M (med reasoning)",
|
|
5805
|
-
updateArgs: {
|
|
5806
|
-
reasoning_effort: "medium",
|
|
5807
|
-
verbosity: "medium",
|
|
5808
|
-
context_window: 1050000,
|
|
5809
|
-
max_output_tokens: 128000,
|
|
5810
|
-
parallel_tool_calls: true
|
|
5811
|
-
}
|
|
5812
|
-
},
|
|
5813
|
-
{
|
|
5814
|
-
id: "gpt-5.6-terra-1m",
|
|
5815
|
-
handle: "openai/gpt-5.6-terra",
|
|
5816
|
-
label: "GPT-5.6 Terra 1M",
|
|
5817
|
-
description: "GPT-5.6 Terra with 1M token context window (high reasoning)",
|
|
5818
|
-
updateArgs: {
|
|
5819
|
-
reasoning_effort: "high",
|
|
5820
|
-
verbosity: "medium",
|
|
5821
|
-
context_window: 1050000,
|
|
5822
|
-
max_output_tokens: 128000,
|
|
5823
|
-
parallel_tool_calls: true
|
|
5824
|
-
}
|
|
5825
|
-
},
|
|
5826
|
-
{
|
|
5827
|
-
id: "gpt-5.6-terra-1m-xhigh",
|
|
5828
|
-
handle: "openai/gpt-5.6-terra",
|
|
5829
|
-
label: "GPT-5.6 Terra 1M",
|
|
5830
|
-
description: "GPT-5.6 Terra 1M (extra-high reasoning)",
|
|
5831
|
-
updateArgs: {
|
|
5832
|
-
reasoning_effort: "xhigh",
|
|
5833
|
-
verbosity: "medium",
|
|
5834
|
-
context_window: 1050000,
|
|
5835
|
-
max_output_tokens: 128000,
|
|
5836
|
-
parallel_tool_calls: true
|
|
5837
|
-
}
|
|
5838
|
-
},
|
|
5839
|
-
{
|
|
5840
|
-
id: "gpt-5.6-terra-1m-max",
|
|
5841
|
-
handle: "openai/gpt-5.6-terra",
|
|
5842
|
-
label: "GPT-5.6 Terra 1M",
|
|
5843
|
-
description: "GPT-5.6 Terra 1M (max reasoning)",
|
|
5844
|
-
updateArgs: {
|
|
5845
|
-
reasoning_effort: "max",
|
|
5846
|
-
verbosity: "medium",
|
|
5847
|
-
context_window: 1050000,
|
|
5848
|
-
max_output_tokens: 128000,
|
|
5849
|
-
parallel_tool_calls: true
|
|
5850
|
-
}
|
|
5851
|
-
},
|
|
5852
|
-
{
|
|
5853
|
-
id: "gpt-5.6-luna-none",
|
|
5854
|
-
handle: "openai/gpt-5.6-luna",
|
|
5855
|
-
label: "GPT-5.6 Luna",
|
|
5856
|
-
description: "GPT-5.6 Luna (no reasoning)",
|
|
5857
|
-
updateArgs: {
|
|
5858
|
-
reasoning_effort: "none",
|
|
5859
|
-
verbosity: "medium",
|
|
5860
|
-
context_window: 350000,
|
|
5861
|
-
max_output_tokens: 128000,
|
|
5862
|
-
parallel_tool_calls: true
|
|
5863
|
-
}
|
|
5864
|
-
},
|
|
5865
|
-
{
|
|
5866
|
-
id: "gpt-5.6-luna-low",
|
|
5867
|
-
handle: "openai/gpt-5.6-luna",
|
|
5868
|
-
label: "GPT-5.6 Luna",
|
|
5869
|
-
description: "GPT-5.6 Luna (low reasoning)",
|
|
5870
|
-
updateArgs: {
|
|
5871
|
-
reasoning_effort: "low",
|
|
5872
|
-
verbosity: "medium",
|
|
5873
|
-
context_window: 350000,
|
|
5874
|
-
max_output_tokens: 128000,
|
|
5875
|
-
parallel_tool_calls: true
|
|
5876
|
-
}
|
|
5877
|
-
},
|
|
5878
|
-
{
|
|
5879
|
-
id: "gpt-5.6-luna-medium",
|
|
5880
|
-
handle: "openai/gpt-5.6-luna",
|
|
5881
|
-
label: "GPT-5.6 Luna",
|
|
5882
|
-
description: "GPT-5.6 Luna (med reasoning)",
|
|
5883
|
-
updateArgs: {
|
|
5884
|
-
reasoning_effort: "medium",
|
|
5885
|
-
verbosity: "medium",
|
|
5886
|
-
context_window: 350000,
|
|
5887
|
-
max_output_tokens: 128000,
|
|
5888
|
-
parallel_tool_calls: true
|
|
5889
|
-
}
|
|
5890
|
-
},
|
|
5891
|
-
{
|
|
5892
|
-
id: "gpt-5.6-luna",
|
|
5893
|
-
handle: "openai/gpt-5.6-luna",
|
|
5894
|
-
label: "GPT-5.6 Luna",
|
|
5895
|
-
description: "GPT-5.6 Luna (high reasoning)",
|
|
5896
|
-
isFeatured: true,
|
|
5897
|
-
updateArgs: {
|
|
5898
|
-
reasoning_effort: "high",
|
|
5899
|
-
verbosity: "medium",
|
|
5900
|
-
context_window: 350000,
|
|
5901
|
-
max_output_tokens: 128000,
|
|
5902
|
-
parallel_tool_calls: true
|
|
5903
|
-
}
|
|
5904
|
-
},
|
|
5905
|
-
{
|
|
5906
|
-
id: "gpt-5.6-luna-xhigh",
|
|
5907
|
-
handle: "openai/gpt-5.6-luna",
|
|
5908
|
-
label: "GPT-5.6 Luna",
|
|
5909
|
-
description: "GPT-5.6 Luna (extra-high reasoning)",
|
|
5910
|
-
updateArgs: {
|
|
5911
|
-
reasoning_effort: "xhigh",
|
|
5912
|
-
verbosity: "medium",
|
|
5913
|
-
context_window: 350000,
|
|
5914
|
-
max_output_tokens: 128000,
|
|
5915
|
-
parallel_tool_calls: true
|
|
5916
|
-
}
|
|
5917
|
-
},
|
|
5918
|
-
{
|
|
5919
|
-
id: "gpt-5.6-luna-max",
|
|
5920
|
-
handle: "openai/gpt-5.6-luna",
|
|
5921
|
-
label: "GPT-5.6 Luna",
|
|
5922
|
-
description: "GPT-5.6 Luna (max reasoning)",
|
|
5923
|
-
updateArgs: {
|
|
5924
|
-
reasoning_effort: "max",
|
|
5925
|
-
verbosity: "medium",
|
|
5926
|
-
context_window: 350000,
|
|
5927
|
-
max_output_tokens: 128000,
|
|
5928
|
-
parallel_tool_calls: true
|
|
5929
|
-
}
|
|
5930
|
-
},
|
|
5931
|
-
{
|
|
5932
|
-
id: "gpt-5.6-luna-1m-none",
|
|
5933
|
-
handle: "openai/gpt-5.6-luna",
|
|
5934
|
-
label: "GPT-5.6 Luna 1M",
|
|
5935
|
-
description: "GPT-5.6 Luna 1M (no reasoning)",
|
|
5936
|
-
updateArgs: {
|
|
5937
|
-
reasoning_effort: "none",
|
|
5938
|
-
verbosity: "medium",
|
|
5939
|
-
context_window: 1050000,
|
|
5940
|
-
max_output_tokens: 128000,
|
|
5941
|
-
parallel_tool_calls: true
|
|
5942
|
-
}
|
|
5943
|
-
},
|
|
5944
|
-
{
|
|
5945
|
-
id: "gpt-5.6-luna-1m-low",
|
|
5946
|
-
handle: "openai/gpt-5.6-luna",
|
|
5947
|
-
label: "GPT-5.6 Luna 1M",
|
|
5948
|
-
description: "GPT-5.6 Luna 1M (low reasoning)",
|
|
5949
|
-
updateArgs: {
|
|
5950
|
-
reasoning_effort: "low",
|
|
5951
|
-
verbosity: "medium",
|
|
5952
|
-
context_window: 1050000,
|
|
5953
|
-
max_output_tokens: 128000,
|
|
5954
|
-
parallel_tool_calls: true
|
|
5955
|
-
}
|
|
5956
|
-
},
|
|
5957
|
-
{
|
|
5958
|
-
id: "gpt-5.6-luna-1m-medium",
|
|
5959
|
-
handle: "openai/gpt-5.6-luna",
|
|
5960
|
-
label: "GPT-5.6 Luna 1M",
|
|
5961
|
-
description: "GPT-5.6 Luna 1M (med reasoning)",
|
|
5962
|
-
updateArgs: {
|
|
5963
|
-
reasoning_effort: "medium",
|
|
5964
|
-
verbosity: "medium",
|
|
5965
|
-
context_window: 1050000,
|
|
5966
|
-
max_output_tokens: 128000,
|
|
5967
|
-
parallel_tool_calls: true
|
|
5968
|
-
}
|
|
5969
|
-
},
|
|
5970
|
-
{
|
|
5971
|
-
id: "gpt-5.6-luna-1m",
|
|
5972
|
-
handle: "openai/gpt-5.6-luna",
|
|
5973
|
-
label: "GPT-5.6 Luna 1M",
|
|
5974
|
-
description: "GPT-5.6 Luna with 1M token context window (high reasoning)",
|
|
5975
|
-
updateArgs: {
|
|
5976
|
-
reasoning_effort: "high",
|
|
5977
|
-
verbosity: "medium",
|
|
5978
|
-
context_window: 1050000,
|
|
5979
|
-
max_output_tokens: 128000,
|
|
5980
|
-
parallel_tool_calls: true
|
|
5981
|
-
}
|
|
5982
|
-
},
|
|
5983
|
-
{
|
|
5984
|
-
id: "gpt-5.6-luna-1m-xhigh",
|
|
5985
|
-
handle: "openai/gpt-5.6-luna",
|
|
5986
|
-
label: "GPT-5.6 Luna 1M",
|
|
5987
|
-
description: "GPT-5.6 Luna 1M (extra-high reasoning)",
|
|
5988
|
-
updateArgs: {
|
|
5989
|
-
reasoning_effort: "xhigh",
|
|
5990
|
-
verbosity: "medium",
|
|
5991
|
-
context_window: 1050000,
|
|
5992
|
-
max_output_tokens: 128000,
|
|
5993
|
-
parallel_tool_calls: true
|
|
5994
|
-
}
|
|
5995
|
-
},
|
|
5996
|
-
{
|
|
5997
|
-
id: "gpt-5.6-luna-1m-max",
|
|
5998
|
-
handle: "openai/gpt-5.6-luna",
|
|
5999
|
-
label: "GPT-5.6 Luna 1M",
|
|
6000
|
-
description: "GPT-5.6 Luna 1M (max reasoning)",
|
|
6001
|
-
updateArgs: {
|
|
6002
|
-
reasoning_effort: "max",
|
|
6003
|
-
verbosity: "medium",
|
|
6004
|
-
context_window: 1050000,
|
|
6005
|
-
max_output_tokens: 128000,
|
|
6006
|
-
parallel_tool_calls: true
|
|
6007
|
-
}
|
|
6008
|
-
},
|
|
6009
|
-
{
|
|
6010
|
-
id: "gpt-5.6-sol-plus-pro-none",
|
|
6011
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6012
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6013
|
-
description: "GPT-5.6 Sol (no reasoning) via ChatGPT Plus/Pro",
|
|
6014
|
-
updateArgs: {
|
|
6015
|
-
reasoning_effort: "none",
|
|
6016
|
-
verbosity: "low",
|
|
6017
|
-
context_window: 350000,
|
|
6018
|
-
max_output_tokens: 128000,
|
|
6019
|
-
parallel_tool_calls: true
|
|
6020
|
-
}
|
|
6021
|
-
},
|
|
6022
|
-
{
|
|
6023
|
-
id: "gpt-5.6-sol-plus-pro-low",
|
|
6024
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6025
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6026
|
-
description: "GPT-5.6 Sol (low reasoning) via ChatGPT Plus/Pro",
|
|
6027
|
-
updateArgs: {
|
|
6028
|
-
reasoning_effort: "low",
|
|
6029
|
-
verbosity: "low",
|
|
6030
|
-
context_window: 350000,
|
|
6031
|
-
max_output_tokens: 128000,
|
|
6032
|
-
parallel_tool_calls: true
|
|
6033
|
-
}
|
|
6034
|
-
},
|
|
6035
|
-
{
|
|
6036
|
-
id: "gpt-5.6-sol-plus-pro-medium",
|
|
6037
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6038
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6039
|
-
description: "GPT-5.6 Sol (med reasoning) via ChatGPT Plus/Pro",
|
|
6040
|
-
updateArgs: {
|
|
6041
|
-
reasoning_effort: "medium",
|
|
6042
|
-
verbosity: "low",
|
|
6043
|
-
context_window: 350000,
|
|
6044
|
-
max_output_tokens: 128000,
|
|
6045
|
-
parallel_tool_calls: true
|
|
6046
|
-
}
|
|
6047
|
-
},
|
|
6048
|
-
{
|
|
6049
|
-
id: "gpt-5.6-sol-plus-pro-high",
|
|
6050
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6051
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6052
|
-
description: "GPT-5.6 Sol (high reasoning) via ChatGPT Plus/Pro",
|
|
6053
|
-
updateArgs: {
|
|
6054
|
-
reasoning_effort: "high",
|
|
6055
|
-
verbosity: "low",
|
|
6056
|
-
context_window: 350000,
|
|
6057
|
-
max_output_tokens: 128000,
|
|
6058
|
-
parallel_tool_calls: true
|
|
6059
|
-
},
|
|
6060
|
-
isFeatured: true
|
|
6061
|
-
},
|
|
6062
|
-
{
|
|
6063
|
-
id: "gpt-5.6-sol-plus-pro-xhigh",
|
|
6064
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6065
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6066
|
-
description: "GPT-5.6 Sol (extra-high reasoning) via ChatGPT Plus/Pro",
|
|
6067
|
-
updateArgs: {
|
|
6068
|
-
reasoning_effort: "xhigh",
|
|
6069
|
-
verbosity: "low",
|
|
6070
|
-
context_window: 350000,
|
|
6071
|
-
max_output_tokens: 128000,
|
|
6072
|
-
parallel_tool_calls: true
|
|
6073
|
-
}
|
|
6074
|
-
},
|
|
6075
|
-
{
|
|
6076
|
-
id: "gpt-5.6-sol-plus-pro-max",
|
|
6077
|
-
handle: "chatgpt-plus-pro/gpt-5.6-sol",
|
|
6078
|
-
label: "GPT-5.6 Sol (ChatGPT)",
|
|
6079
|
-
description: "GPT-5.6 Sol (max reasoning) via ChatGPT Plus/Pro",
|
|
6080
|
-
updateArgs: {
|
|
6081
|
-
reasoning_effort: "max",
|
|
6082
|
-
verbosity: "low",
|
|
6083
|
-
context_window: 350000,
|
|
6084
|
-
max_output_tokens: 128000,
|
|
6085
|
-
parallel_tool_calls: true
|
|
6086
|
-
}
|
|
6087
|
-
},
|
|
6088
|
-
{
|
|
6089
|
-
id: "gpt-5.6-terra-plus-pro-none",
|
|
6090
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6091
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6092
|
-
description: "GPT-5.6 Terra (no reasoning) via ChatGPT Plus/Pro",
|
|
6093
|
-
updateArgs: {
|
|
6094
|
-
reasoning_effort: "none",
|
|
6095
|
-
verbosity: "low",
|
|
6096
|
-
context_window: 350000,
|
|
6097
|
-
max_output_tokens: 128000,
|
|
6098
|
-
parallel_tool_calls: true
|
|
6099
|
-
}
|
|
6100
|
-
},
|
|
6101
|
-
{
|
|
6102
|
-
id: "gpt-5.6-terra-plus-pro-low",
|
|
6103
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6104
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6105
|
-
description: "GPT-5.6 Terra (low reasoning) via ChatGPT Plus/Pro",
|
|
6106
|
-
updateArgs: {
|
|
6107
|
-
reasoning_effort: "low",
|
|
6108
|
-
verbosity: "low",
|
|
6109
|
-
context_window: 350000,
|
|
6110
|
-
max_output_tokens: 128000,
|
|
6111
|
-
parallel_tool_calls: true
|
|
6112
|
-
}
|
|
6113
|
-
},
|
|
6114
|
-
{
|
|
6115
|
-
id: "gpt-5.6-terra-plus-pro-medium",
|
|
6116
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6117
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6118
|
-
description: "GPT-5.6 Terra (med reasoning) via ChatGPT Plus/Pro",
|
|
6119
|
-
updateArgs: {
|
|
6120
|
-
reasoning_effort: "medium",
|
|
6121
|
-
verbosity: "low",
|
|
6122
|
-
context_window: 350000,
|
|
6123
|
-
max_output_tokens: 128000,
|
|
6124
|
-
parallel_tool_calls: true
|
|
6125
|
-
}
|
|
6126
|
-
},
|
|
6127
|
-
{
|
|
6128
|
-
id: "gpt-5.6-terra-plus-pro-high",
|
|
6129
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6130
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6131
|
-
description: "GPT-5.6 Terra (high reasoning) via ChatGPT Plus/Pro",
|
|
6132
|
-
updateArgs: {
|
|
6133
|
-
reasoning_effort: "high",
|
|
6134
|
-
verbosity: "low",
|
|
6135
|
-
context_window: 350000,
|
|
6136
|
-
max_output_tokens: 128000,
|
|
6137
|
-
parallel_tool_calls: true
|
|
6138
|
-
},
|
|
6139
|
-
isFeatured: true
|
|
6140
|
-
},
|
|
6141
|
-
{
|
|
6142
|
-
id: "gpt-5.6-terra-plus-pro-xhigh",
|
|
6143
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6144
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6145
|
-
description: "GPT-5.6 Terra (extra-high reasoning) via ChatGPT Plus/Pro",
|
|
6146
|
-
updateArgs: {
|
|
6147
|
-
reasoning_effort: "xhigh",
|
|
6148
|
-
verbosity: "low",
|
|
6149
|
-
context_window: 350000,
|
|
6150
|
-
max_output_tokens: 128000,
|
|
6151
|
-
parallel_tool_calls: true
|
|
6152
|
-
}
|
|
6153
|
-
},
|
|
6154
|
-
{
|
|
6155
|
-
id: "gpt-5.6-terra-plus-pro-max",
|
|
6156
|
-
handle: "chatgpt-plus-pro/gpt-5.6-terra",
|
|
6157
|
-
label: "GPT-5.6 Terra (ChatGPT)",
|
|
6158
|
-
description: "GPT-5.6 Terra (max reasoning) via ChatGPT Plus/Pro",
|
|
6159
|
-
updateArgs: {
|
|
6160
|
-
reasoning_effort: "max",
|
|
6161
|
-
verbosity: "low",
|
|
6162
|
-
context_window: 350000,
|
|
6163
|
-
max_output_tokens: 128000,
|
|
6164
|
-
parallel_tool_calls: true
|
|
6165
|
-
}
|
|
6166
|
-
},
|
|
6167
|
-
{
|
|
6168
|
-
id: "gpt-5.6-luna-plus-pro-none",
|
|
6169
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6170
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6171
|
-
description: "GPT-5.6 Luna (no reasoning) via ChatGPT Plus/Pro",
|
|
6172
|
-
updateArgs: {
|
|
6173
|
-
reasoning_effort: "none",
|
|
6174
|
-
verbosity: "low",
|
|
6175
|
-
context_window: 350000,
|
|
6176
|
-
max_output_tokens: 128000,
|
|
6177
|
-
parallel_tool_calls: true
|
|
6178
|
-
}
|
|
6179
|
-
},
|
|
6180
|
-
{
|
|
6181
|
-
id: "gpt-5.6-luna-plus-pro-low",
|
|
6182
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6183
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6184
|
-
description: "GPT-5.6 Luna (low reasoning) via ChatGPT Plus/Pro",
|
|
6185
|
-
updateArgs: {
|
|
6186
|
-
reasoning_effort: "low",
|
|
6187
|
-
verbosity: "low",
|
|
6188
|
-
context_window: 350000,
|
|
6189
|
-
max_output_tokens: 128000,
|
|
6190
|
-
parallel_tool_calls: true
|
|
6191
|
-
}
|
|
6192
|
-
},
|
|
6193
|
-
{
|
|
6194
|
-
id: "gpt-5.6-luna-plus-pro-medium",
|
|
6195
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6196
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6197
|
-
description: "GPT-5.6 Luna (med reasoning) via ChatGPT Plus/Pro",
|
|
6198
|
-
updateArgs: {
|
|
6199
|
-
reasoning_effort: "medium",
|
|
6200
|
-
verbosity: "low",
|
|
6201
|
-
context_window: 350000,
|
|
6202
|
-
max_output_tokens: 128000,
|
|
6203
|
-
parallel_tool_calls: true
|
|
6204
|
-
}
|
|
6205
|
-
},
|
|
6206
|
-
{
|
|
6207
|
-
id: "gpt-5.6-luna-plus-pro-high",
|
|
6208
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6209
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6210
|
-
description: "GPT-5.6 Luna (high reasoning) via ChatGPT Plus/Pro",
|
|
6211
|
-
updateArgs: {
|
|
6212
|
-
reasoning_effort: "high",
|
|
6213
|
-
verbosity: "low",
|
|
6214
|
-
context_window: 350000,
|
|
6215
|
-
max_output_tokens: 128000,
|
|
6216
|
-
parallel_tool_calls: true
|
|
6217
|
-
},
|
|
6218
|
-
isFeatured: true
|
|
6219
|
-
},
|
|
6220
|
-
{
|
|
6221
|
-
id: "gpt-5.6-luna-plus-pro-xhigh",
|
|
6222
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6223
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6224
|
-
description: "GPT-5.6 Luna (extra-high reasoning) via ChatGPT Plus/Pro",
|
|
6225
|
-
updateArgs: {
|
|
6226
|
-
reasoning_effort: "xhigh",
|
|
6227
|
-
verbosity: "low",
|
|
6228
|
-
context_window: 350000,
|
|
6229
|
-
max_output_tokens: 128000,
|
|
6230
|
-
parallel_tool_calls: true
|
|
6231
|
-
}
|
|
6232
|
-
},
|
|
6233
|
-
{
|
|
6234
|
-
id: "gpt-5.6-luna-plus-pro-max",
|
|
6235
|
-
handle: "chatgpt-plus-pro/gpt-5.6-luna",
|
|
6236
|
-
label: "GPT-5.6 Luna (ChatGPT)",
|
|
6237
|
-
description: "GPT-5.6 Luna (max reasoning) via ChatGPT Plus/Pro",
|
|
6238
|
-
updateArgs: {
|
|
6239
|
-
reasoning_effort: "max",
|
|
6240
|
-
verbosity: "low",
|
|
6241
|
-
context_window: 350000,
|
|
6242
|
-
max_output_tokens: 128000,
|
|
6243
|
-
parallel_tool_calls: true
|
|
6244
|
-
}
|
|
6245
|
-
},
|
|
6246
|
-
{
|
|
6247
|
-
id: "fable",
|
|
6248
|
-
handle: "anthropic/claude-fable-5",
|
|
6249
|
-
label: "Fable 5",
|
|
6250
|
-
description: "Fable 5 (high reasoning)",
|
|
6251
|
-
isFeatured: true,
|
|
6252
|
-
updateArgs: {
|
|
6253
|
-
context_window: 200000,
|
|
6254
|
-
max_output_tokens: 128000,
|
|
6255
|
-
enable_reasoner: true,
|
|
6256
|
-
reasoning_effort: "high",
|
|
6257
|
-
parallel_tool_calls: true
|
|
6258
|
-
}
|
|
6259
|
-
},
|
|
6260
|
-
{
|
|
6261
|
-
id: "fable-low",
|
|
6262
|
-
handle: "anthropic/claude-fable-5",
|
|
6263
|
-
label: "Fable 5",
|
|
6264
|
-
description: "Fable 5 (low reasoning)",
|
|
6265
|
-
updateArgs: {
|
|
6266
|
-
context_window: 200000,
|
|
6267
|
-
max_output_tokens: 128000,
|
|
6268
|
-
enable_reasoner: true,
|
|
6269
|
-
reasoning_effort: "low",
|
|
6270
|
-
max_reasoning_tokens: 4000,
|
|
6271
|
-
parallel_tool_calls: true
|
|
6272
|
-
}
|
|
6273
|
-
},
|
|
6274
|
-
{
|
|
6275
|
-
id: "fable-medium",
|
|
6276
|
-
handle: "anthropic/claude-fable-5",
|
|
6277
|
-
label: "Fable 5",
|
|
6278
|
-
description: "Fable 5 (med reasoning)",
|
|
6279
|
-
updateArgs: {
|
|
6280
|
-
context_window: 200000,
|
|
6281
|
-
max_output_tokens: 128000,
|
|
6282
|
-
enable_reasoner: true,
|
|
6283
|
-
reasoning_effort: "medium",
|
|
6284
|
-
max_reasoning_tokens: 12000,
|
|
6285
|
-
parallel_tool_calls: true
|
|
6286
|
-
}
|
|
6287
|
-
},
|
|
6288
|
-
{
|
|
6289
|
-
id: "fable-xhigh",
|
|
6290
|
-
handle: "anthropic/claude-fable-5",
|
|
6291
|
-
label: "Fable 5",
|
|
6292
|
-
description: "Fable 5 (extra-high reasoning)",
|
|
6293
|
-
updateArgs: {
|
|
6294
|
-
context_window: 200000,
|
|
6295
|
-
max_output_tokens: 128000,
|
|
6296
|
-
enable_reasoner: true,
|
|
6297
|
-
reasoning_effort: "xhigh",
|
|
6298
|
-
parallel_tool_calls: true
|
|
6299
|
-
}
|
|
6300
|
-
},
|
|
6301
|
-
{
|
|
6302
|
-
id: "fable-max",
|
|
6303
|
-
handle: "anthropic/claude-fable-5",
|
|
6304
|
-
label: "Fable 5",
|
|
6305
|
-
description: "Fable 5 (max reasoning)",
|
|
6306
|
-
updateArgs: {
|
|
6307
|
-
context_window: 200000,
|
|
6308
|
-
max_output_tokens: 128000,
|
|
6309
|
-
enable_reasoner: true,
|
|
6310
|
-
reasoning_effort: "max",
|
|
6311
|
-
parallel_tool_calls: true
|
|
6312
|
-
}
|
|
6313
|
-
},
|
|
6314
|
-
{
|
|
6315
|
-
id: "fable-1m",
|
|
6316
|
-
handle: "anthropic/claude-fable-5",
|
|
6317
|
-
label: "Fable 5 1M",
|
|
6318
|
-
description: "Claude Fable 5 with 1M token context window (high reasoning)",
|
|
6319
|
-
updateArgs: {
|
|
6320
|
-
context_window: 950000,
|
|
6321
|
-
max_output_tokens: 128000,
|
|
6322
|
-
enable_reasoner: true,
|
|
6323
|
-
reasoning_effort: "high",
|
|
6324
|
-
parallel_tool_calls: true
|
|
6325
|
-
}
|
|
6326
|
-
},
|
|
6327
|
-
{
|
|
6328
|
-
id: "fable-1m-low",
|
|
6329
|
-
handle: "anthropic/claude-fable-5",
|
|
6330
|
-
label: "Fable 5 1M",
|
|
6331
|
-
description: "Fable 5 1M (low reasoning)",
|
|
6332
|
-
updateArgs: {
|
|
6333
|
-
context_window: 950000,
|
|
6334
|
-
max_output_tokens: 128000,
|
|
6335
|
-
enable_reasoner: true,
|
|
6336
|
-
reasoning_effort: "low",
|
|
6337
|
-
max_reasoning_tokens: 4000,
|
|
6338
|
-
parallel_tool_calls: true
|
|
6339
|
-
}
|
|
6340
|
-
},
|
|
6341
|
-
{
|
|
6342
|
-
id: "fable-1m-medium",
|
|
6343
|
-
handle: "anthropic/claude-fable-5",
|
|
6344
|
-
label: "Fable 5 1M",
|
|
6345
|
-
description: "Fable 5 1M (med reasoning)",
|
|
6346
|
-
updateArgs: {
|
|
6347
|
-
context_window: 950000,
|
|
6348
|
-
max_output_tokens: 128000,
|
|
6349
|
-
enable_reasoner: true,
|
|
6350
|
-
reasoning_effort: "medium",
|
|
6351
|
-
max_reasoning_tokens: 12000,
|
|
6352
|
-
parallel_tool_calls: true
|
|
6353
|
-
}
|
|
6354
|
-
},
|
|
6355
|
-
{
|
|
6356
|
-
id: "fable-1m-xhigh",
|
|
6357
|
-
handle: "anthropic/claude-fable-5",
|
|
6358
|
-
label: "Fable 5 1M",
|
|
6359
|
-
description: "Fable 5 1M (extra-high reasoning)",
|
|
6360
|
-
updateArgs: {
|
|
6361
|
-
context_window: 950000,
|
|
6362
|
-
max_output_tokens: 128000,
|
|
6363
|
-
enable_reasoner: true,
|
|
6364
|
-
reasoning_effort: "xhigh",
|
|
6365
|
-
parallel_tool_calls: true
|
|
6366
|
-
}
|
|
6367
|
-
},
|
|
6368
|
-
{
|
|
6369
|
-
id: "fable-1m-max",
|
|
6370
|
-
handle: "anthropic/claude-fable-5",
|
|
6371
|
-
label: "Fable 5 1M",
|
|
6372
|
-
description: "Fable 5 1M (max reasoning)",
|
|
6373
|
-
updateArgs: {
|
|
6374
|
-
context_window: 950000,
|
|
6375
|
-
max_output_tokens: 128000,
|
|
6376
|
-
enable_reasoner: true,
|
|
6377
|
-
reasoning_effort: "max",
|
|
6378
|
-
parallel_tool_calls: true
|
|
6379
|
-
}
|
|
6380
|
-
},
|
|
6381
|
-
{
|
|
6382
|
-
id: "opus-5",
|
|
6383
|
-
handle: "anthropic/claude-opus-5",
|
|
6384
|
-
label: "Opus 5",
|
|
6385
|
-
description: "Opus 5 (high reasoning)",
|
|
6386
|
-
updateArgs: {
|
|
6387
|
-
context_window: 200000,
|
|
6388
|
-
max_output_tokens: 128000,
|
|
6389
|
-
enable_reasoner: true,
|
|
6390
|
-
reasoning_effort: "high",
|
|
6391
|
-
parallel_tool_calls: true
|
|
6392
|
-
}
|
|
6393
|
-
},
|
|
6394
|
-
{
|
|
6395
|
-
id: "opus-5-low",
|
|
6396
|
-
handle: "anthropic/claude-opus-5",
|
|
6397
|
-
label: "Opus 5",
|
|
6398
|
-
description: "Opus 5 (low reasoning)",
|
|
6399
|
-
updateArgs: {
|
|
6400
|
-
context_window: 200000,
|
|
6401
|
-
max_output_tokens: 128000,
|
|
6402
|
-
enable_reasoner: true,
|
|
6403
|
-
reasoning_effort: "low",
|
|
6404
|
-
max_reasoning_tokens: 4000,
|
|
6405
|
-
parallel_tool_calls: true
|
|
6406
|
-
}
|
|
6407
|
-
},
|
|
6408
|
-
{
|
|
6409
|
-
id: "opus-5-medium",
|
|
6410
|
-
handle: "anthropic/claude-opus-5",
|
|
6411
|
-
label: "Opus 5",
|
|
6412
|
-
description: "Opus 5 (med reasoning)",
|
|
6413
|
-
updateArgs: {
|
|
6414
|
-
context_window: 200000,
|
|
6415
|
-
max_output_tokens: 128000,
|
|
6416
|
-
enable_reasoner: true,
|
|
6417
|
-
reasoning_effort: "medium",
|
|
6418
|
-
max_reasoning_tokens: 12000,
|
|
6419
|
-
parallel_tool_calls: true
|
|
6420
|
-
}
|
|
6421
|
-
},
|
|
6422
|
-
{
|
|
6423
|
-
id: "opus-5-xhigh",
|
|
6424
|
-
handle: "anthropic/claude-opus-5",
|
|
6425
|
-
label: "Opus 5",
|
|
6426
|
-
description: "Opus 5 (extra-high reasoning)",
|
|
6427
|
-
updateArgs: {
|
|
6428
|
-
context_window: 200000,
|
|
6429
|
-
max_output_tokens: 128000,
|
|
6430
|
-
enable_reasoner: true,
|
|
6431
|
-
reasoning_effort: "xhigh",
|
|
6432
|
-
parallel_tool_calls: true
|
|
6433
|
-
}
|
|
6434
|
-
},
|
|
6435
|
-
{
|
|
6436
|
-
id: "opus-5-max",
|
|
6437
|
-
handle: "anthropic/claude-opus-5",
|
|
6438
|
-
label: "Opus 5",
|
|
6439
|
-
description: "Opus 5 (max reasoning)",
|
|
6440
|
-
updateArgs: {
|
|
6441
|
-
context_window: 200000,
|
|
6442
|
-
max_output_tokens: 128000,
|
|
6443
|
-
enable_reasoner: true,
|
|
6444
|
-
reasoning_effort: "max",
|
|
6445
|
-
parallel_tool_calls: true
|
|
6446
|
-
}
|
|
6447
|
-
},
|
|
6448
|
-
{
|
|
6449
|
-
id: "opus",
|
|
6450
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6451
|
-
label: "Opus 4.8",
|
|
6452
|
-
description: "Opus 4.8 (high reasoning)",
|
|
6453
|
-
isFeatured: true,
|
|
6454
|
-
updateArgs: {
|
|
6455
|
-
context_window: 200000,
|
|
6456
|
-
max_output_tokens: 128000,
|
|
6457
|
-
reasoning_effort: "high",
|
|
6458
|
-
enable_reasoner: true,
|
|
6459
|
-
parallel_tool_calls: true
|
|
6460
|
-
}
|
|
6461
|
-
},
|
|
6462
|
-
{
|
|
6463
|
-
id: "opus-4.8-low",
|
|
6464
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6465
|
-
label: "Opus 4.8",
|
|
6466
|
-
description: "Opus 4.8 (low reasoning)",
|
|
6467
|
-
updateArgs: {
|
|
6468
|
-
context_window: 200000,
|
|
6469
|
-
max_output_tokens: 128000,
|
|
6470
|
-
reasoning_effort: "low",
|
|
6471
|
-
enable_reasoner: true,
|
|
6472
|
-
max_reasoning_tokens: 4000,
|
|
6473
|
-
parallel_tool_calls: true
|
|
6474
|
-
}
|
|
6475
|
-
},
|
|
6476
|
-
{
|
|
6477
|
-
id: "opus-4.8-medium",
|
|
6478
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6479
|
-
label: "Opus 4.8",
|
|
6480
|
-
description: "Opus 4.8 (med reasoning)",
|
|
6481
|
-
updateArgs: {
|
|
6482
|
-
context_window: 200000,
|
|
6483
|
-
max_output_tokens: 128000,
|
|
6484
|
-
reasoning_effort: "medium",
|
|
6485
|
-
enable_reasoner: true,
|
|
6486
|
-
max_reasoning_tokens: 12000,
|
|
6487
|
-
parallel_tool_calls: true
|
|
6488
|
-
}
|
|
6489
|
-
},
|
|
6490
|
-
{
|
|
6491
|
-
id: "opus-4.8-high",
|
|
6492
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6493
|
-
label: "Opus 4.8",
|
|
6494
|
-
description: "Opus 4.8 (high reasoning)",
|
|
6495
|
-
updateArgs: {
|
|
6496
|
-
context_window: 200000,
|
|
6497
|
-
max_output_tokens: 128000,
|
|
6498
|
-
reasoning_effort: "high",
|
|
6499
|
-
enable_reasoner: true,
|
|
6500
|
-
parallel_tool_calls: true
|
|
6501
|
-
}
|
|
6502
|
-
},
|
|
6503
|
-
{
|
|
6504
|
-
id: "opus-4.8-xhigh",
|
|
6505
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6506
|
-
label: "Opus 4.8",
|
|
6507
|
-
description: "Opus 4.8 (extra-high reasoning)",
|
|
6508
|
-
updateArgs: {
|
|
6509
|
-
context_window: 200000,
|
|
6510
|
-
max_output_tokens: 128000,
|
|
6511
|
-
reasoning_effort: "xhigh",
|
|
6512
|
-
enable_reasoner: true,
|
|
6513
|
-
parallel_tool_calls: true
|
|
6514
|
-
}
|
|
6515
|
-
},
|
|
6516
|
-
{
|
|
6517
|
-
id: "opus-4.8-max",
|
|
6518
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6519
|
-
label: "Opus 4.8",
|
|
6520
|
-
description: "Opus 4.8 (max reasoning)",
|
|
6521
|
-
updateArgs: {
|
|
6522
|
-
context_window: 200000,
|
|
6523
|
-
max_output_tokens: 128000,
|
|
6524
|
-
reasoning_effort: "max",
|
|
6525
|
-
enable_reasoner: true,
|
|
6526
|
-
parallel_tool_calls: true
|
|
6527
|
-
}
|
|
6528
|
-
},
|
|
6529
|
-
{
|
|
6530
|
-
id: "opus-4.8-1m",
|
|
6531
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6532
|
-
label: "Opus 4.8 1M",
|
|
6533
|
-
description: "Claude Opus 4.8 with 1M token context window (high reasoning)",
|
|
6534
|
-
updateArgs: {
|
|
6535
|
-
context_window: 950000,
|
|
6536
|
-
max_output_tokens: 128000,
|
|
6537
|
-
reasoning_effort: "high",
|
|
6538
|
-
enable_reasoner: true,
|
|
6539
|
-
parallel_tool_calls: true
|
|
6540
|
-
}
|
|
6541
|
-
},
|
|
6542
|
-
{
|
|
6543
|
-
id: "opus-4.8-1m-no-reasoning",
|
|
6544
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6545
|
-
label: "Opus 4.8 1M",
|
|
6546
|
-
description: "Opus 4.8 1M with no reasoning (faster)",
|
|
6547
|
-
updateArgs: {
|
|
6548
|
-
context_window: 950000,
|
|
6549
|
-
max_output_tokens: 128000,
|
|
6550
|
-
reasoning_effort: "none",
|
|
6551
|
-
enable_reasoner: false,
|
|
6552
|
-
parallel_tool_calls: true
|
|
6553
|
-
}
|
|
6554
|
-
},
|
|
6555
|
-
{
|
|
6556
|
-
id: "opus-4.8-1m-low",
|
|
6557
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6558
|
-
label: "Opus 4.8 1M",
|
|
6559
|
-
description: "Opus 4.8 1M (low reasoning)",
|
|
6560
|
-
updateArgs: {
|
|
6561
|
-
context_window: 950000,
|
|
6562
|
-
max_output_tokens: 128000,
|
|
6563
|
-
reasoning_effort: "low",
|
|
6564
|
-
enable_reasoner: true,
|
|
6565
|
-
parallel_tool_calls: true,
|
|
6566
|
-
max_reasoning_tokens: 4000
|
|
6567
|
-
}
|
|
6568
|
-
},
|
|
6569
|
-
{
|
|
6570
|
-
id: "opus-4.8-1m-medium",
|
|
6571
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6572
|
-
label: "Opus 4.8 1M",
|
|
6573
|
-
description: "Opus 4.8 1M (med reasoning)",
|
|
6574
|
-
updateArgs: {
|
|
6575
|
-
context_window: 950000,
|
|
6576
|
-
max_output_tokens: 128000,
|
|
6577
|
-
reasoning_effort: "medium",
|
|
6578
|
-
enable_reasoner: true,
|
|
6579
|
-
parallel_tool_calls: true,
|
|
6580
|
-
max_reasoning_tokens: 12000
|
|
6581
|
-
}
|
|
6582
|
-
},
|
|
6583
|
-
{
|
|
6584
|
-
id: "opus-4.8-1m-xhigh",
|
|
6585
|
-
handle: "anthropic/claude-opus-4-8",
|
|
6586
|
-
label: "Opus 4.8 1M",
|
|
6587
|
-
description: "Opus 4.8 1M (max reasoning)",
|
|
6588
|
-
updateArgs: {
|
|
6589
|
-
context_window: 950000,
|
|
6590
|
-
max_output_tokens: 128000,
|
|
6591
|
-
reasoning_effort: "xhigh",
|
|
6592
|
-
enable_reasoner: true,
|
|
6593
|
-
parallel_tool_calls: true
|
|
6594
|
-
}
|
|
6595
|
-
},
|
|
6596
|
-
{
|
|
6597
|
-
id: "opus-1m",
|
|
6598
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6599
|
-
label: "Opus 4.6 1M",
|
|
6600
|
-
description: "Claude Opus 4.6 with 1M token context window (high reasoning)",
|
|
6601
|
-
updateArgs: {
|
|
6602
|
-
context_window: 950000,
|
|
6603
|
-
max_output_tokens: 128000,
|
|
6604
|
-
reasoning_effort: "high",
|
|
6605
|
-
enable_reasoner: true,
|
|
6606
|
-
parallel_tool_calls: true
|
|
6607
|
-
}
|
|
6608
|
-
},
|
|
6609
|
-
{
|
|
6610
|
-
id: "opus-1m-no-reasoning",
|
|
6611
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6612
|
-
label: "Opus 4.6 1M",
|
|
6613
|
-
description: "Opus 4.6 1M with no reasoning (faster)",
|
|
6614
|
-
updateArgs: {
|
|
6615
|
-
context_window: 950000,
|
|
6616
|
-
max_output_tokens: 128000,
|
|
6617
|
-
reasoning_effort: "none",
|
|
6618
|
-
enable_reasoner: false,
|
|
6619
|
-
parallel_tool_calls: true
|
|
6620
|
-
}
|
|
6621
|
-
},
|
|
6622
|
-
{
|
|
6623
|
-
id: "opus-1m-low",
|
|
6624
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6625
|
-
label: "Opus 4.6 1M",
|
|
6626
|
-
description: "Opus 4.6 1M (low reasoning)",
|
|
6627
|
-
updateArgs: {
|
|
6628
|
-
context_window: 950000,
|
|
6629
|
-
max_output_tokens: 128000,
|
|
6630
|
-
reasoning_effort: "low",
|
|
6631
|
-
enable_reasoner: true,
|
|
6632
|
-
max_reasoning_tokens: 4000,
|
|
6633
|
-
parallel_tool_calls: true
|
|
6634
|
-
}
|
|
6635
|
-
},
|
|
6636
|
-
{
|
|
6637
|
-
id: "opus-1m-medium",
|
|
6638
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6639
|
-
label: "Opus 4.6 1M",
|
|
6640
|
-
description: "Opus 4.6 1M (med reasoning)",
|
|
6641
|
-
updateArgs: {
|
|
6642
|
-
context_window: 950000,
|
|
6643
|
-
max_output_tokens: 128000,
|
|
6644
|
-
reasoning_effort: "medium",
|
|
6645
|
-
enable_reasoner: true,
|
|
6646
|
-
max_reasoning_tokens: 12000,
|
|
6647
|
-
parallel_tool_calls: true
|
|
6648
|
-
}
|
|
6649
|
-
},
|
|
6650
|
-
{
|
|
6651
|
-
id: "opus-1m-xhigh",
|
|
6652
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6653
|
-
label: "Opus 4.6 1M",
|
|
6654
|
-
description: "Opus 4.6 1M (max reasoning)",
|
|
6655
|
-
updateArgs: {
|
|
6656
|
-
context_window: 950000,
|
|
6657
|
-
max_output_tokens: 128000,
|
|
6658
|
-
reasoning_effort: "xhigh",
|
|
6659
|
-
enable_reasoner: true,
|
|
6660
|
-
parallel_tool_calls: true
|
|
6661
|
-
}
|
|
6662
|
-
},
|
|
6663
|
-
{
|
|
6664
|
-
id: "sonnet",
|
|
6665
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6666
|
-
label: "Sonnet 5",
|
|
6667
|
-
description: "Sonnet 5 (high reasoning)",
|
|
6668
|
-
isFeatured: true,
|
|
6669
|
-
updateArgs: {
|
|
6670
|
-
context_window: 1e6,
|
|
6671
|
-
max_output_tokens: 128000,
|
|
6672
|
-
reasoning_effort: "high",
|
|
6673
|
-
enable_reasoner: true,
|
|
6674
|
-
parallel_tool_calls: true
|
|
6675
|
-
}
|
|
6676
|
-
},
|
|
6677
|
-
{
|
|
6678
|
-
id: "sonnet-5-no-reasoning",
|
|
6679
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6680
|
-
label: "Sonnet 5",
|
|
6681
|
-
description: "Sonnet 5 with no reasoning (faster)",
|
|
6682
|
-
updateArgs: {
|
|
6683
|
-
context_window: 1e6,
|
|
6684
|
-
max_output_tokens: 128000,
|
|
6685
|
-
reasoning_effort: "none",
|
|
6686
|
-
enable_reasoner: false,
|
|
6687
|
-
parallel_tool_calls: true
|
|
6688
|
-
}
|
|
6689
|
-
},
|
|
6690
|
-
{
|
|
6691
|
-
id: "sonnet-5-low",
|
|
6692
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6693
|
-
label: "Sonnet 5",
|
|
6694
|
-
description: "Sonnet 5 (low reasoning)",
|
|
6695
|
-
updateArgs: {
|
|
6696
|
-
context_window: 1e6,
|
|
6697
|
-
max_output_tokens: 128000,
|
|
6698
|
-
reasoning_effort: "low",
|
|
6699
|
-
enable_reasoner: true,
|
|
6700
|
-
max_reasoning_tokens: 4000,
|
|
6701
|
-
parallel_tool_calls: true
|
|
6702
|
-
}
|
|
6703
|
-
},
|
|
6704
|
-
{
|
|
6705
|
-
id: "sonnet-5-medium",
|
|
6706
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6707
|
-
label: "Sonnet 5",
|
|
6708
|
-
description: "Sonnet 5 (med reasoning)",
|
|
6709
|
-
updateArgs: {
|
|
6710
|
-
context_window: 1e6,
|
|
6711
|
-
max_output_tokens: 128000,
|
|
6712
|
-
reasoning_effort: "medium",
|
|
6713
|
-
enable_reasoner: true,
|
|
6714
|
-
max_reasoning_tokens: 12000,
|
|
6715
|
-
parallel_tool_calls: true
|
|
6716
|
-
}
|
|
6717
|
-
},
|
|
6718
|
-
{
|
|
6719
|
-
id: "sonnet-5-xhigh",
|
|
6720
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6721
|
-
label: "Sonnet 5",
|
|
6722
|
-
description: "Sonnet 5 (extra-high reasoning)",
|
|
6723
|
-
updateArgs: {
|
|
6724
|
-
context_window: 1e6,
|
|
6725
|
-
max_output_tokens: 128000,
|
|
6726
|
-
reasoning_effort: "xhigh",
|
|
6727
|
-
enable_reasoner: true,
|
|
6728
|
-
parallel_tool_calls: true
|
|
6729
|
-
}
|
|
6730
|
-
},
|
|
6731
|
-
{
|
|
6732
|
-
id: "sonnet-5-max",
|
|
6733
|
-
handle: "anthropic/claude-sonnet-5",
|
|
6734
|
-
label: "Sonnet 5",
|
|
6735
|
-
description: "Sonnet 5 (max reasoning)",
|
|
6736
|
-
updateArgs: {
|
|
6737
|
-
context_window: 1e6,
|
|
6738
|
-
max_output_tokens: 128000,
|
|
6739
|
-
reasoning_effort: "max",
|
|
6740
|
-
enable_reasoner: true,
|
|
6741
|
-
parallel_tool_calls: true
|
|
6742
|
-
}
|
|
6743
|
-
},
|
|
6744
|
-
{
|
|
6745
|
-
id: "sonnet-4.6",
|
|
6746
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6747
|
-
label: "Sonnet 4.6",
|
|
6748
|
-
description: "Sonnet 4.6 (high reasoning)",
|
|
6749
|
-
updateArgs: {
|
|
6750
|
-
context_window: 200000,
|
|
6751
|
-
max_output_tokens: 128000,
|
|
6752
|
-
reasoning_effort: "high",
|
|
6753
|
-
enable_reasoner: true,
|
|
6754
|
-
parallel_tool_calls: true
|
|
6755
|
-
}
|
|
6756
|
-
},
|
|
6757
|
-
{
|
|
6758
|
-
id: "sonnet-4.6-no-reasoning",
|
|
6759
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6760
|
-
label: "Sonnet 4.6",
|
|
6761
|
-
description: "Sonnet 4.6 with no reasoning (faster)",
|
|
6762
|
-
updateArgs: {
|
|
6763
|
-
context_window: 200000,
|
|
6764
|
-
max_output_tokens: 128000,
|
|
6765
|
-
reasoning_effort: "none",
|
|
6766
|
-
enable_reasoner: false,
|
|
6767
|
-
parallel_tool_calls: true
|
|
6768
|
-
}
|
|
6769
|
-
},
|
|
6770
|
-
{
|
|
6771
|
-
id: "sonnet-4.6-low",
|
|
6772
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6773
|
-
label: "Sonnet 4.6",
|
|
6774
|
-
description: "Sonnet 4.6 (low reasoning)",
|
|
6775
|
-
updateArgs: {
|
|
6776
|
-
context_window: 200000,
|
|
6777
|
-
max_output_tokens: 128000,
|
|
6778
|
-
reasoning_effort: "low",
|
|
6779
|
-
enable_reasoner: true,
|
|
6780
|
-
max_reasoning_tokens: 4000,
|
|
6781
|
-
parallel_tool_calls: true
|
|
6782
|
-
}
|
|
6783
|
-
},
|
|
6784
|
-
{
|
|
6785
|
-
id: "sonnet-4.6-medium",
|
|
6786
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6787
|
-
label: "Sonnet 4.6",
|
|
6788
|
-
description: "Sonnet 4.6 (med reasoning)",
|
|
6789
|
-
updateArgs: {
|
|
6790
|
-
context_window: 200000,
|
|
6791
|
-
max_output_tokens: 128000,
|
|
6792
|
-
reasoning_effort: "medium",
|
|
6793
|
-
enable_reasoner: true,
|
|
6794
|
-
max_reasoning_tokens: 12000,
|
|
6795
|
-
parallel_tool_calls: true
|
|
6796
|
-
}
|
|
6797
|
-
},
|
|
6798
|
-
{
|
|
6799
|
-
id: "sonnet-4.6-xhigh",
|
|
6800
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6801
|
-
label: "Sonnet 4.6",
|
|
6802
|
-
description: "Sonnet 4.6 (max reasoning)",
|
|
6803
|
-
updateArgs: {
|
|
6804
|
-
context_window: 200000,
|
|
6805
|
-
max_output_tokens: 128000,
|
|
6806
|
-
reasoning_effort: "xhigh",
|
|
6807
|
-
enable_reasoner: true,
|
|
6808
|
-
parallel_tool_calls: true
|
|
6809
|
-
}
|
|
6810
|
-
},
|
|
6811
|
-
{
|
|
6812
|
-
id: "sonnet-1m",
|
|
6813
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6814
|
-
label: "Sonnet 4.6 1M",
|
|
6815
|
-
description: "Claude Sonnet 4.6 with 1M token context window (high reasoning)",
|
|
6816
|
-
updateArgs: {
|
|
6817
|
-
context_window: 9500000,
|
|
6818
|
-
max_output_tokens: 128000,
|
|
6819
|
-
reasoning_effort: "high",
|
|
6820
|
-
enable_reasoner: true,
|
|
6821
|
-
parallel_tool_calls: true
|
|
6822
|
-
}
|
|
6823
|
-
},
|
|
6824
|
-
{
|
|
6825
|
-
id: "sonnet-1m-no-reasoning",
|
|
6826
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6827
|
-
label: "Sonnet 4.6 1M",
|
|
6828
|
-
description: "Sonnet 4.6 1M with no reasoning (faster)",
|
|
6829
|
-
updateArgs: {
|
|
6830
|
-
context_window: 9500000,
|
|
6831
|
-
max_output_tokens: 128000,
|
|
6832
|
-
reasoning_effort: "none",
|
|
6833
|
-
enable_reasoner: false,
|
|
6834
|
-
parallel_tool_calls: true
|
|
6835
|
-
}
|
|
6836
|
-
},
|
|
6837
|
-
{
|
|
6838
|
-
id: "sonnet-1m-low",
|
|
6839
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6840
|
-
label: "Sonnet 4.6 1M",
|
|
6841
|
-
description: "Sonnet 4.6 1M (low reasoning)",
|
|
6842
|
-
updateArgs: {
|
|
6843
|
-
context_window: 9500000,
|
|
6844
|
-
max_output_tokens: 128000,
|
|
6845
|
-
reasoning_effort: "low",
|
|
6846
|
-
enable_reasoner: true,
|
|
6847
|
-
max_reasoning_tokens: 4000,
|
|
6848
|
-
parallel_tool_calls: true
|
|
6849
|
-
}
|
|
6850
|
-
},
|
|
6851
|
-
{
|
|
6852
|
-
id: "sonnet-1m-medium",
|
|
6853
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6854
|
-
label: "Sonnet 4.6 1M",
|
|
6855
|
-
description: "Sonnet 4.6 1M (med reasoning)",
|
|
6856
|
-
updateArgs: {
|
|
6857
|
-
context_window: 9500000,
|
|
6858
|
-
max_output_tokens: 128000,
|
|
6859
|
-
reasoning_effort: "medium",
|
|
6860
|
-
enable_reasoner: true,
|
|
6861
|
-
max_reasoning_tokens: 12000,
|
|
6862
|
-
parallel_tool_calls: true
|
|
6863
|
-
}
|
|
6864
|
-
},
|
|
6865
|
-
{
|
|
6866
|
-
id: "sonnet-1m-xhigh",
|
|
6867
|
-
handle: "anthropic/claude-sonnet-4-6",
|
|
6868
|
-
label: "Sonnet 4.6 1M",
|
|
6869
|
-
description: "Sonnet 4.6 1M (max reasoning)",
|
|
6870
|
-
updateArgs: {
|
|
6871
|
-
context_window: 9500000,
|
|
6872
|
-
max_output_tokens: 128000,
|
|
6873
|
-
reasoning_effort: "xhigh",
|
|
6874
|
-
enable_reasoner: true,
|
|
6875
|
-
parallel_tool_calls: true
|
|
6876
|
-
}
|
|
6877
|
-
},
|
|
6878
|
-
{
|
|
6879
|
-
id: "opus-4.6-high",
|
|
6880
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6881
|
-
label: "Opus 4.6",
|
|
6882
|
-
description: "Opus 4.6 (high reasoning)",
|
|
6883
|
-
updateArgs: {
|
|
6884
|
-
context_window: 200000,
|
|
6885
|
-
max_output_tokens: 128000,
|
|
6886
|
-
reasoning_effort: "high",
|
|
6887
|
-
enable_reasoner: true,
|
|
6888
|
-
parallel_tool_calls: true
|
|
6889
|
-
}
|
|
6890
|
-
},
|
|
6891
|
-
{
|
|
6892
|
-
id: "opus-4.6-no-reasoning",
|
|
6893
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6894
|
-
label: "Opus 4.6",
|
|
6895
|
-
description: "Opus 4.6 with no reasoning (faster)",
|
|
6896
|
-
updateArgs: {
|
|
6897
|
-
context_window: 200000,
|
|
6898
|
-
max_output_tokens: 128000,
|
|
6899
|
-
reasoning_effort: "none",
|
|
6900
|
-
enable_reasoner: false,
|
|
6901
|
-
parallel_tool_calls: true
|
|
6902
|
-
}
|
|
6903
|
-
},
|
|
6904
|
-
{
|
|
6905
|
-
id: "opus-4.6-low",
|
|
6906
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6907
|
-
label: "Opus 4.6",
|
|
6908
|
-
description: "Opus 4.6 (low reasoning)",
|
|
6909
|
-
updateArgs: {
|
|
6910
|
-
context_window: 200000,
|
|
6911
|
-
max_output_tokens: 128000,
|
|
6912
|
-
reasoning_effort: "low",
|
|
6913
|
-
enable_reasoner: true,
|
|
6914
|
-
max_reasoning_tokens: 4000,
|
|
6915
|
-
parallel_tool_calls: true
|
|
6916
|
-
}
|
|
6917
|
-
},
|
|
6918
|
-
{
|
|
6919
|
-
id: "opus-4.6-medium",
|
|
6920
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6921
|
-
label: "Opus 4.6",
|
|
6922
|
-
description: "Opus 4.6 (med reasoning)",
|
|
6923
|
-
updateArgs: {
|
|
6924
|
-
context_window: 200000,
|
|
6925
|
-
max_output_tokens: 128000,
|
|
6926
|
-
reasoning_effort: "medium",
|
|
6927
|
-
enable_reasoner: true,
|
|
6928
|
-
max_reasoning_tokens: 12000,
|
|
6929
|
-
parallel_tool_calls: true
|
|
6930
|
-
}
|
|
6931
|
-
},
|
|
6932
|
-
{
|
|
6933
|
-
id: "opus-4.6-xhigh",
|
|
6934
|
-
handle: "anthropic/claude-opus-4-6",
|
|
6935
|
-
label: "Opus 4.6",
|
|
6936
|
-
description: "Opus 4.6 (max reasoning)",
|
|
6937
|
-
updateArgs: {
|
|
6938
|
-
context_window: 200000,
|
|
6939
|
-
max_output_tokens: 128000,
|
|
6940
|
-
reasoning_effort: "xhigh",
|
|
6941
|
-
enable_reasoner: true,
|
|
6942
|
-
parallel_tool_calls: true
|
|
6943
|
-
}
|
|
6944
|
-
},
|
|
6945
|
-
{
|
|
6946
|
-
id: "opus-4.7-medium",
|
|
6947
|
-
handle: "anthropic/claude-opus-4-7",
|
|
6948
|
-
label: "Opus 4.7",
|
|
6949
|
-
description: "Opus 4.7 (med reasoning)",
|
|
6950
|
-
updateArgs: {
|
|
6951
|
-
context_window: 200000,
|
|
6952
|
-
max_output_tokens: 128000,
|
|
6953
|
-
reasoning_effort: "medium",
|
|
6954
|
-
enable_reasoner: true,
|
|
6955
|
-
max_reasoning_tokens: 12000,
|
|
6956
|
-
parallel_tool_calls: true
|
|
6957
|
-
}
|
|
6958
|
-
},
|
|
6959
|
-
{
|
|
6960
|
-
id: "opus-4.7-low",
|
|
6961
|
-
handle: "anthropic/claude-opus-4-7",
|
|
6962
|
-
label: "Opus 4.7",
|
|
6963
|
-
description: "Opus 4.7 (low reasoning)",
|
|
6964
|
-
updateArgs: {
|
|
6965
|
-
context_window: 200000,
|
|
6966
|
-
max_output_tokens: 128000,
|
|
6967
|
-
reasoning_effort: "low",
|
|
6968
|
-
enable_reasoner: true,
|
|
6969
|
-
max_reasoning_tokens: 4000,
|
|
6970
|
-
parallel_tool_calls: true
|
|
6971
|
-
}
|
|
6972
|
-
},
|
|
6973
|
-
{
|
|
6974
|
-
id: "opus-4.7-high",
|
|
6975
|
-
handle: "anthropic/claude-opus-4-7",
|
|
6976
|
-
label: "Opus 4.7",
|
|
6977
|
-
description: "Opus 4.7 (high reasoning)",
|
|
6978
|
-
updateArgs: {
|
|
6979
|
-
context_window: 200000,
|
|
6980
|
-
max_output_tokens: 128000,
|
|
6981
|
-
reasoning_effort: "high",
|
|
6982
|
-
enable_reasoner: true,
|
|
6983
|
-
parallel_tool_calls: true
|
|
6984
|
-
}
|
|
6985
|
-
},
|
|
6986
|
-
{
|
|
6987
|
-
id: "opus-4.7-xhigh",
|
|
6988
|
-
handle: "anthropic/claude-opus-4-7",
|
|
6989
|
-
label: "Opus 4.7",
|
|
6990
|
-
description: "Opus 4.7 (extra-high reasoning)",
|
|
6991
|
-
updateArgs: {
|
|
6992
|
-
context_window: 200000,
|
|
6993
|
-
max_output_tokens: 128000,
|
|
6994
|
-
reasoning_effort: "xhigh",
|
|
6995
|
-
enable_reasoner: true,
|
|
6996
|
-
parallel_tool_calls: true
|
|
6997
|
-
}
|
|
6998
|
-
},
|
|
6999
|
-
{
|
|
7000
|
-
id: "opus-4.7-max",
|
|
7001
|
-
handle: "anthropic/claude-opus-4-7",
|
|
7002
|
-
label: "Opus 4.7",
|
|
7003
|
-
description: "Opus 4.7 (max reasoning)",
|
|
7004
|
-
updateArgs: {
|
|
7005
|
-
context_window: 200000,
|
|
7006
|
-
max_output_tokens: 128000,
|
|
7007
|
-
reasoning_effort: "max",
|
|
7008
|
-
enable_reasoner: true,
|
|
7009
|
-
parallel_tool_calls: true
|
|
7010
|
-
}
|
|
7011
|
-
},
|
|
7012
|
-
{
|
|
7013
|
-
id: "opus-4.5",
|
|
7014
|
-
handle: "anthropic/claude-opus-4-5-20251101",
|
|
7015
|
-
label: "Opus 4.5",
|
|
7016
|
-
description: "Opus 4.5 (high reasoning)",
|
|
7017
|
-
updateArgs: {
|
|
7018
|
-
context_window: 180000,
|
|
7019
|
-
max_output_tokens: 64000,
|
|
7020
|
-
reasoning_effort: "high",
|
|
7021
|
-
enable_reasoner: true,
|
|
7022
|
-
max_reasoning_tokens: 31999,
|
|
7023
|
-
parallel_tool_calls: true
|
|
7024
|
-
}
|
|
7025
|
-
},
|
|
7026
|
-
{
|
|
7027
|
-
id: "opus-4.5-no-reasoning",
|
|
7028
|
-
handle: "anthropic/claude-opus-4-5-20251101",
|
|
7029
|
-
label: "Opus 4.5",
|
|
7030
|
-
description: "Opus 4.5 with no reasoning (faster)",
|
|
7031
|
-
updateArgs: {
|
|
7032
|
-
context_window: 180000,
|
|
7033
|
-
max_output_tokens: 64000,
|
|
7034
|
-
reasoning_effort: "none",
|
|
7035
|
-
enable_reasoner: false,
|
|
7036
|
-
parallel_tool_calls: true
|
|
7037
|
-
}
|
|
7038
|
-
},
|
|
7039
|
-
{
|
|
7040
|
-
id: "opus-4.5-low",
|
|
7041
|
-
handle: "anthropic/claude-opus-4-5-20251101",
|
|
7042
|
-
label: "Opus 4.5",
|
|
7043
|
-
description: "Opus 4.5 (low reasoning)",
|
|
7044
|
-
updateArgs: {
|
|
7045
|
-
context_window: 180000,
|
|
7046
|
-
max_output_tokens: 64000,
|
|
7047
|
-
reasoning_effort: "low",
|
|
7048
|
-
enable_reasoner: true,
|
|
7049
|
-
max_reasoning_tokens: 4000,
|
|
7050
|
-
parallel_tool_calls: true
|
|
7051
|
-
}
|
|
7052
|
-
},
|
|
7053
|
-
{
|
|
7054
|
-
id: "opus-4.5-medium",
|
|
7055
|
-
handle: "anthropic/claude-opus-4-5-20251101",
|
|
7056
|
-
label: "Opus 4.5",
|
|
7057
|
-
description: "Opus 4.5 (med reasoning)",
|
|
7058
|
-
updateArgs: {
|
|
7059
|
-
context_window: 180000,
|
|
7060
|
-
max_output_tokens: 64000,
|
|
7061
|
-
reasoning_effort: "medium",
|
|
7062
|
-
enable_reasoner: true,
|
|
7063
|
-
max_reasoning_tokens: 12000,
|
|
7064
|
-
parallel_tool_calls: true
|
|
7065
|
-
}
|
|
7066
|
-
},
|
|
7067
|
-
{
|
|
7068
|
-
id: "bedrock-opus-4.5",
|
|
7069
|
-
handle: "bedrock/us.anthropic.claude-opus-4-5-20251101-v1:0",
|
|
7070
|
-
label: "Bedrock Opus 4.5",
|
|
7071
|
-
shortLabel: "Opus 4.5 BR",
|
|
7072
|
-
description: "Opus 4.5 via AWS Bedrock",
|
|
7073
|
-
updateArgs: {
|
|
7074
|
-
context_window: 180000,
|
|
7075
|
-
max_output_tokens: 64000,
|
|
7076
|
-
max_reasoning_tokens: 31999,
|
|
7077
|
-
parallel_tool_calls: true
|
|
7078
|
-
}
|
|
7079
|
-
},
|
|
7080
|
-
{
|
|
7081
|
-
id: "haiku",
|
|
7082
|
-
handle: "anthropic/claude-haiku-4-5",
|
|
7083
|
-
label: "Haiku 4.5",
|
|
7084
|
-
description: "Haiku 4.5",
|
|
7085
|
-
updateArgs: {
|
|
7086
|
-
context_window: 180000,
|
|
7087
|
-
max_output_tokens: 64000,
|
|
7088
|
-
parallel_tool_calls: true
|
|
7089
|
-
}
|
|
7090
|
-
},
|
|
7091
|
-
{
|
|
7092
|
-
id: "gpt-5.5-plus-pro-none",
|
|
7093
|
-
handle: "chatgpt-plus-pro/gpt-5.5",
|
|
7094
|
-
label: "GPT-5.5 (ChatGPT)",
|
|
7095
|
-
description: "GPT-5.5 (no reasoning) via ChatGPT Plus/Pro",
|
|
7096
|
-
updateArgs: {
|
|
7097
|
-
reasoning_effort: "none",
|
|
7098
|
-
verbosity: "low",
|
|
7099
|
-
context_window: 272000,
|
|
7100
|
-
max_output_tokens: 128000,
|
|
7101
|
-
parallel_tool_calls: true
|
|
7102
|
-
}
|
|
7103
|
-
},
|
|
7104
|
-
{
|
|
7105
|
-
id: "gpt-5.5-plus-pro-low",
|
|
7106
|
-
handle: "chatgpt-plus-pro/gpt-5.5",
|
|
7107
|
-
label: "GPT-5.5 (ChatGPT)",
|
|
7108
|
-
description: "GPT-5.5 (low reasoning) via ChatGPT Plus/Pro",
|
|
7109
|
-
updateArgs: {
|
|
7110
|
-
reasoning_effort: "low",
|
|
7111
|
-
verbosity: "low",
|
|
7112
|
-
context_window: 272000,
|
|
7113
|
-
max_output_tokens: 128000,
|
|
7114
|
-
parallel_tool_calls: true
|
|
7115
|
-
}
|
|
7116
|
-
},
|
|
7117
|
-
{
|
|
7118
|
-
id: "gpt-5.5-plus-pro-medium",
|
|
7119
|
-
handle: "chatgpt-plus-pro/gpt-5.5",
|
|
7120
|
-
label: "GPT-5.5 (ChatGPT)",
|
|
7121
|
-
description: "GPT-5.5 (med reasoning) via ChatGPT Plus/Pro",
|
|
7122
|
-
updateArgs: {
|
|
7123
|
-
reasoning_effort: "medium",
|
|
7124
|
-
verbosity: "low",
|
|
7125
|
-
context_window: 272000,
|
|
7126
|
-
max_output_tokens: 128000,
|
|
7127
|
-
parallel_tool_calls: true
|
|
7128
|
-
}
|
|
7129
|
-
},
|
|
7130
|
-
{
|
|
7131
|
-
id: "gpt-5.5-plus-pro-high",
|
|
7132
|
-
handle: "chatgpt-plus-pro/gpt-5.5",
|
|
7133
|
-
label: "GPT-5.5 (ChatGPT)",
|
|
7134
|
-
description: "OpenAI's most capable model (high reasoning) via ChatGPT Plus/Pro",
|
|
7135
|
-
updateArgs: {
|
|
7136
|
-
reasoning_effort: "high",
|
|
7137
|
-
verbosity: "low",
|
|
7138
|
-
context_window: 272000,
|
|
7139
|
-
max_output_tokens: 128000,
|
|
7140
|
-
parallel_tool_calls: true
|
|
7141
|
-
}
|
|
7142
|
-
},
|
|
7143
|
-
{
|
|
7144
|
-
id: "gpt-5.5-plus-pro-xhigh",
|
|
7145
|
-
handle: "chatgpt-plus-pro/gpt-5.5",
|
|
7146
|
-
label: "GPT-5.5 (ChatGPT)",
|
|
7147
|
-
description: "GPT-5.5 (max reasoning) via ChatGPT Plus/Pro",
|
|
7148
|
-
updateArgs: {
|
|
7149
|
-
reasoning_effort: "xhigh",
|
|
7150
|
-
verbosity: "low",
|
|
7151
|
-
context_window: 272000,
|
|
7152
|
-
max_output_tokens: 128000,
|
|
7153
|
-
parallel_tool_calls: true
|
|
7154
|
-
}
|
|
7155
|
-
},
|
|
7156
|
-
{
|
|
7157
|
-
id: "gpt-5.5-fast-plus-pro-none",
|
|
7158
|
-
handle: "chatgpt-plus-pro/gpt-5.5-fast",
|
|
7159
|
-
label: "GPT-5.5 Fast (ChatGPT)",
|
|
7160
|
-
description: "GPT-5.5 Fast (no reasoning) via ChatGPT Plus/Pro",
|
|
7161
|
-
updateArgs: {
|
|
7162
|
-
reasoning_effort: "none",
|
|
7163
|
-
verbosity: "low",
|
|
7164
|
-
context_window: 272000,
|
|
7165
|
-
max_output_tokens: 128000,
|
|
7166
|
-
parallel_tool_calls: true
|
|
7167
|
-
}
|
|
7168
|
-
},
|
|
7169
|
-
{
|
|
7170
|
-
id: "gpt-5.5-fast-plus-pro-low",
|
|
7171
|
-
handle: "chatgpt-plus-pro/gpt-5.5-fast",
|
|
7172
|
-
label: "GPT-5.5 Fast (ChatGPT)",
|
|
7173
|
-
description: "GPT-5.5 Fast (low reasoning) via ChatGPT Plus/Pro",
|
|
7174
|
-
updateArgs: {
|
|
7175
|
-
reasoning_effort: "low",
|
|
7176
|
-
verbosity: "low",
|
|
7177
|
-
context_window: 272000,
|
|
7178
|
-
max_output_tokens: 128000,
|
|
7179
|
-
parallel_tool_calls: true
|
|
7180
|
-
}
|
|
7181
|
-
},
|
|
7182
|
-
{
|
|
7183
|
-
id: "gpt-5.5-fast-plus-pro-medium",
|
|
7184
|
-
handle: "chatgpt-plus-pro/gpt-5.5-fast",
|
|
7185
|
-
label: "GPT-5.5 Fast (ChatGPT)",
|
|
7186
|
-
description: "GPT-5.5 Fast (med reasoning) via ChatGPT Plus/Pro",
|
|
7187
|
-
updateArgs: {
|
|
7188
|
-
reasoning_effort: "medium",
|
|
7189
|
-
verbosity: "low",
|
|
7190
|
-
context_window: 272000,
|
|
7191
|
-
max_output_tokens: 128000,
|
|
7192
|
-
parallel_tool_calls: true
|
|
7193
|
-
}
|
|
7194
|
-
},
|
|
7195
|
-
{
|
|
7196
|
-
id: "gpt-5.5-fast-plus-pro-high",
|
|
7197
|
-
handle: "chatgpt-plus-pro/gpt-5.5-fast",
|
|
7198
|
-
label: "GPT-5.5 Fast (ChatGPT)",
|
|
7199
|
-
description: "GPT-5.5 Fast (high reasoning) via ChatGPT Plus/Pro",
|
|
7200
|
-
updateArgs: {
|
|
7201
|
-
reasoning_effort: "high",
|
|
7202
|
-
verbosity: "low",
|
|
7203
|
-
context_window: 272000,
|
|
7204
|
-
max_output_tokens: 128000,
|
|
7205
|
-
parallel_tool_calls: true
|
|
7206
|
-
}
|
|
7207
|
-
},
|
|
7208
|
-
{
|
|
7209
|
-
id: "gpt-5.5-fast-plus-pro-xhigh",
|
|
7210
|
-
handle: "chatgpt-plus-pro/gpt-5.5-fast",
|
|
7211
|
-
label: "GPT-5.5 Fast (ChatGPT)",
|
|
7212
|
-
description: "GPT-5.5 Fast (max reasoning) via ChatGPT Plus/Pro",
|
|
7213
|
-
updateArgs: {
|
|
7214
|
-
reasoning_effort: "xhigh",
|
|
7215
|
-
verbosity: "low",
|
|
7216
|
-
context_window: 272000,
|
|
7217
|
-
max_output_tokens: 128000,
|
|
7218
|
-
parallel_tool_calls: true
|
|
7219
|
-
}
|
|
7220
|
-
},
|
|
7221
|
-
{
|
|
7222
|
-
id: "gpt-5.4-plus-pro-none",
|
|
7223
|
-
handle: "chatgpt-plus-pro/gpt-5.4",
|
|
7224
|
-
label: "GPT-5.4 (ChatGPT)",
|
|
7225
|
-
description: "GPT-5.4 (no reasoning) via ChatGPT Plus/Pro",
|
|
7226
|
-
updateArgs: {
|
|
7227
|
-
reasoning_effort: "none",
|
|
7228
|
-
verbosity: "low",
|
|
7229
|
-
context_window: 272000,
|
|
7230
|
-
max_output_tokens: 128000,
|
|
7231
|
-
parallel_tool_calls: true
|
|
7232
|
-
}
|
|
7233
|
-
},
|
|
7234
|
-
{
|
|
7235
|
-
id: "gpt-5.4-plus-pro-low",
|
|
7236
|
-
handle: "chatgpt-plus-pro/gpt-5.4",
|
|
7237
|
-
label: "GPT-5.4 (ChatGPT)",
|
|
7238
|
-
description: "GPT-5.4 (low reasoning) via ChatGPT Plus/Pro",
|
|
7239
|
-
updateArgs: {
|
|
7240
|
-
reasoning_effort: "low",
|
|
7241
|
-
verbosity: "low",
|
|
7242
|
-
context_window: 272000,
|
|
7243
|
-
max_output_tokens: 128000,
|
|
7244
|
-
parallel_tool_calls: true
|
|
7245
|
-
}
|
|
7246
|
-
},
|
|
7247
|
-
{
|
|
7248
|
-
id: "gpt-5.4-plus-pro-medium",
|
|
7249
|
-
handle: "chatgpt-plus-pro/gpt-5.4",
|
|
7250
|
-
label: "GPT-5.4 (ChatGPT)",
|
|
7251
|
-
description: "GPT-5.4 (med reasoning) via ChatGPT Plus/Pro",
|
|
7252
|
-
updateArgs: {
|
|
7253
|
-
reasoning_effort: "medium",
|
|
7254
|
-
verbosity: "low",
|
|
7255
|
-
context_window: 272000,
|
|
7256
|
-
max_output_tokens: 128000,
|
|
7257
|
-
parallel_tool_calls: true
|
|
7258
|
-
}
|
|
7259
|
-
},
|
|
7260
|
-
{
|
|
7261
|
-
id: "gpt-5.4-plus-pro-high",
|
|
7262
|
-
handle: "chatgpt-plus-pro/gpt-5.4",
|
|
7263
|
-
label: "GPT-5.4 (ChatGPT)",
|
|
7264
|
-
description: "OpenAI's most capable model (high reasoning) via ChatGPT Plus/Pro",
|
|
7265
|
-
updateArgs: {
|
|
7266
|
-
reasoning_effort: "high",
|
|
7267
|
-
verbosity: "low",
|
|
7268
|
-
context_window: 272000,
|
|
7269
|
-
max_output_tokens: 128000,
|
|
7270
|
-
parallel_tool_calls: true
|
|
7271
|
-
}
|
|
7272
|
-
},
|
|
7273
|
-
{
|
|
7274
|
-
id: "gpt-5.4-plus-pro-xhigh",
|
|
7275
|
-
handle: "chatgpt-plus-pro/gpt-5.4",
|
|
7276
|
-
label: "GPT-5.4 (ChatGPT)",
|
|
7277
|
-
description: "GPT-5.4 (max reasoning) via ChatGPT Plus/Pro",
|
|
7278
|
-
updateArgs: {
|
|
7279
|
-
reasoning_effort: "xhigh",
|
|
7280
|
-
verbosity: "low",
|
|
7281
|
-
context_window: 272000,
|
|
7282
|
-
max_output_tokens: 128000,
|
|
7283
|
-
parallel_tool_calls: true
|
|
7284
|
-
}
|
|
7285
|
-
},
|
|
7286
|
-
{
|
|
7287
|
-
id: "gpt-5.4-pro-plus-pro-medium",
|
|
7288
|
-
handle: "chatgpt-plus-pro/gpt-5.4-pro",
|
|
7289
|
-
label: "GPT-5.4 Pro (ChatGPT)",
|
|
7290
|
-
description: "GPT-5.4 Pro (med reasoning) via ChatGPT Plus/Pro",
|
|
7291
|
-
updateArgs: {
|
|
7292
|
-
reasoning_effort: "medium",
|
|
7293
|
-
verbosity: "low",
|
|
7294
|
-
context_window: 272000,
|
|
7295
|
-
max_output_tokens: 128000,
|
|
7296
|
-
parallel_tool_calls: true
|
|
7297
|
-
}
|
|
7298
|
-
},
|
|
7299
|
-
{
|
|
7300
|
-
id: "gpt-5.4-pro-plus-pro-high",
|
|
7301
|
-
handle: "chatgpt-plus-pro/gpt-5.4-pro",
|
|
7302
|
-
label: "GPT-5.4 Pro (ChatGPT)",
|
|
7303
|
-
description: "GPT-5.4 Pro (high reasoning) via ChatGPT Plus/Pro",
|
|
7304
|
-
updateArgs: {
|
|
7305
|
-
reasoning_effort: "high",
|
|
7306
|
-
verbosity: "low",
|
|
7307
|
-
context_window: 272000,
|
|
7308
|
-
max_output_tokens: 128000,
|
|
7309
|
-
parallel_tool_calls: true
|
|
7310
|
-
}
|
|
7311
|
-
},
|
|
7312
|
-
{
|
|
7313
|
-
id: "gpt-5.4-pro-plus-pro-xhigh",
|
|
7314
|
-
handle: "chatgpt-plus-pro/gpt-5.4-pro",
|
|
7315
|
-
label: "GPT-5.4 Pro (ChatGPT)",
|
|
7316
|
-
description: "GPT-5.4 Pro (max reasoning) via ChatGPT Plus/Pro",
|
|
7317
|
-
updateArgs: {
|
|
7318
|
-
reasoning_effort: "xhigh",
|
|
7319
|
-
verbosity: "low",
|
|
7320
|
-
context_window: 272000,
|
|
7321
|
-
max_output_tokens: 128000,
|
|
7322
|
-
parallel_tool_calls: true
|
|
7323
|
-
}
|
|
7324
|
-
},
|
|
7325
|
-
{
|
|
7326
|
-
id: "gpt-5.4-fast-plus-pro-none",
|
|
7327
|
-
handle: "chatgpt-plus-pro/gpt-5.4-fast",
|
|
7328
|
-
label: "GPT-5.4 Fast (ChatGPT)",
|
|
7329
|
-
description: "GPT-5.4 Fast (no reasoning) via ChatGPT Plus/Pro",
|
|
7330
|
-
updateArgs: {
|
|
7331
|
-
reasoning_effort: "none",
|
|
7332
|
-
verbosity: "low",
|
|
7333
|
-
context_window: 272000,
|
|
7334
|
-
max_output_tokens: 128000,
|
|
7335
|
-
parallel_tool_calls: true
|
|
7336
|
-
}
|
|
7337
|
-
},
|
|
7338
|
-
{
|
|
7339
|
-
id: "gpt-5.4-fast-plus-pro-low",
|
|
7340
|
-
handle: "chatgpt-plus-pro/gpt-5.4-fast",
|
|
7341
|
-
label: "GPT-5.4 Fast (ChatGPT)",
|
|
7342
|
-
description: "GPT-5.4 Fast (low reasoning) via ChatGPT Plus/Pro",
|
|
7343
|
-
updateArgs: {
|
|
7344
|
-
reasoning_effort: "low",
|
|
7345
|
-
verbosity: "low",
|
|
7346
|
-
context_window: 272000,
|
|
7347
|
-
max_output_tokens: 128000,
|
|
7348
|
-
parallel_tool_calls: true
|
|
7349
|
-
}
|
|
7350
|
-
},
|
|
7351
|
-
{
|
|
7352
|
-
id: "gpt-5.4-fast-plus-pro-medium",
|
|
7353
|
-
handle: "chatgpt-plus-pro/gpt-5.4-fast",
|
|
7354
|
-
label: "GPT-5.4 Fast (ChatGPT)",
|
|
7355
|
-
description: "GPT-5.4 Fast (med reasoning) via ChatGPT Plus/Pro",
|
|
7356
|
-
updateArgs: {
|
|
7357
|
-
reasoning_effort: "medium",
|
|
7358
|
-
verbosity: "low",
|
|
7359
|
-
context_window: 272000,
|
|
7360
|
-
max_output_tokens: 128000,
|
|
7361
|
-
parallel_tool_calls: true
|
|
7362
|
-
}
|
|
7363
|
-
},
|
|
7364
|
-
{
|
|
7365
|
-
id: "gpt-5.4-fast-plus-pro-high",
|
|
7366
|
-
handle: "chatgpt-plus-pro/gpt-5.4-fast",
|
|
7367
|
-
label: "GPT-5.4 Fast (ChatGPT)",
|
|
7368
|
-
description: "GPT-5.4 Fast (high reasoning) via ChatGPT Plus/Pro",
|
|
7369
|
-
updateArgs: {
|
|
7370
|
-
reasoning_effort: "high",
|
|
7371
|
-
verbosity: "low",
|
|
7372
|
-
context_window: 272000,
|
|
7373
|
-
max_output_tokens: 128000,
|
|
7374
|
-
parallel_tool_calls: true
|
|
7375
|
-
}
|
|
7376
|
-
},
|
|
7377
|
-
{
|
|
7378
|
-
id: "gpt-5.4-fast-plus-pro-xhigh",
|
|
7379
|
-
handle: "chatgpt-plus-pro/gpt-5.4-fast",
|
|
7380
|
-
label: "GPT-5.4 Fast (ChatGPT)",
|
|
7381
|
-
description: "GPT-5.4 Fast (max reasoning) via ChatGPT Plus/Pro",
|
|
7382
|
-
updateArgs: {
|
|
7383
|
-
reasoning_effort: "xhigh",
|
|
7384
|
-
verbosity: "low",
|
|
7385
|
-
context_window: 272000,
|
|
7386
|
-
max_output_tokens: 128000,
|
|
7387
|
-
parallel_tool_calls: true
|
|
7388
|
-
}
|
|
7389
|
-
},
|
|
7390
|
-
{
|
|
7391
|
-
id: "gpt-5.4-mini-plus-pro-none",
|
|
7392
|
-
handle: "chatgpt-plus-pro/gpt-5.4-mini",
|
|
7393
|
-
label: "GPT-5.4 Mini (ChatGPT)",
|
|
7394
|
-
description: "GPT-5.4 Mini (no reasoning) via ChatGPT Plus/Pro",
|
|
7395
|
-
updateArgs: {
|
|
7396
|
-
reasoning_effort: "none",
|
|
7397
|
-
verbosity: "low",
|
|
7398
|
-
context_window: 272000,
|
|
7399
|
-
max_output_tokens: 128000,
|
|
7400
|
-
parallel_tool_calls: true
|
|
7401
|
-
}
|
|
7402
|
-
},
|
|
7403
|
-
{
|
|
7404
|
-
id: "gpt-5.4-mini-plus-pro-low",
|
|
7405
|
-
handle: "chatgpt-plus-pro/gpt-5.4-mini",
|
|
7406
|
-
label: "GPT-5.4 Mini (ChatGPT)",
|
|
7407
|
-
description: "GPT-5.4 Mini (low reasoning) via ChatGPT Plus/Pro",
|
|
7408
|
-
updateArgs: {
|
|
7409
|
-
reasoning_effort: "low",
|
|
7410
|
-
verbosity: "low",
|
|
7411
|
-
context_window: 272000,
|
|
7412
|
-
max_output_tokens: 128000,
|
|
7413
|
-
parallel_tool_calls: true
|
|
7414
|
-
}
|
|
7415
|
-
},
|
|
7416
|
-
{
|
|
7417
|
-
id: "gpt-5.4-mini-plus-pro-medium",
|
|
7418
|
-
handle: "chatgpt-plus-pro/gpt-5.4-mini",
|
|
7419
|
-
label: "GPT-5.4 Mini (ChatGPT)",
|
|
7420
|
-
description: "GPT-5.4 Mini (med reasoning) via ChatGPT Plus/Pro",
|
|
7421
|
-
updateArgs: {
|
|
7422
|
-
reasoning_effort: "medium",
|
|
7423
|
-
verbosity: "low",
|
|
7424
|
-
context_window: 272000,
|
|
7425
|
-
max_output_tokens: 128000,
|
|
7426
|
-
parallel_tool_calls: true
|
|
7427
|
-
}
|
|
7428
|
-
},
|
|
7429
|
-
{
|
|
7430
|
-
id: "gpt-5.4-mini-plus-pro-high",
|
|
7431
|
-
handle: "chatgpt-plus-pro/gpt-5.4-mini",
|
|
7432
|
-
label: "GPT-5.4 Mini (ChatGPT)",
|
|
7433
|
-
description: "GPT-5.4 Mini (high reasoning) via ChatGPT Plus/Pro",
|
|
7434
|
-
updateArgs: {
|
|
7435
|
-
reasoning_effort: "high",
|
|
7436
|
-
verbosity: "low",
|
|
7437
|
-
context_window: 272000,
|
|
7438
|
-
max_output_tokens: 128000,
|
|
7439
|
-
parallel_tool_calls: true
|
|
7440
|
-
}
|
|
7441
|
-
},
|
|
7442
|
-
{
|
|
7443
|
-
id: "gpt-5.4-mini-plus-pro-xhigh",
|
|
7444
|
-
handle: "chatgpt-plus-pro/gpt-5.4-mini",
|
|
7445
|
-
label: "GPT-5.4 Mini (ChatGPT)",
|
|
7446
|
-
description: "GPT-5.4 Mini (max reasoning) via ChatGPT Plus/Pro",
|
|
7447
|
-
updateArgs: {
|
|
7448
|
-
reasoning_effort: "xhigh",
|
|
7449
|
-
verbosity: "low",
|
|
7450
|
-
context_window: 272000,
|
|
7451
|
-
max_output_tokens: 128000,
|
|
7452
|
-
parallel_tool_calls: true
|
|
7453
|
-
}
|
|
7454
|
-
},
|
|
7455
|
-
{
|
|
7456
|
-
id: "gpt-5.3-codex-spark-plus-pro-none",
|
|
7457
|
-
handle: "chatgpt-plus-pro/gpt-5.3-codex-spark",
|
|
7458
|
-
label: "GPT-5.3 Codex Spark (ChatGPT)",
|
|
7459
|
-
description: "GPT-5.3 Codex Spark (no reasoning) via ChatGPT Plus/Pro",
|
|
7460
|
-
updateArgs: {
|
|
7461
|
-
reasoning_effort: "none",
|
|
7462
|
-
verbosity: "low",
|
|
7463
|
-
context_window: 128000,
|
|
7464
|
-
max_output_tokens: 128000,
|
|
7465
|
-
parallel_tool_calls: true
|
|
7466
|
-
}
|
|
7467
|
-
},
|
|
7468
|
-
{
|
|
7469
|
-
id: "gpt-5.3-codex-spark-plus-pro-low",
|
|
7470
|
-
handle: "chatgpt-plus-pro/gpt-5.3-codex-spark",
|
|
7471
|
-
label: "GPT-5.3 Codex Spark (ChatGPT)",
|
|
7472
|
-
description: "GPT-5.3 Codex Spark (low reasoning) via ChatGPT Plus/Pro",
|
|
7473
|
-
updateArgs: {
|
|
7474
|
-
reasoning_effort: "low",
|
|
7475
|
-
verbosity: "low",
|
|
7476
|
-
context_window: 128000,
|
|
7477
|
-
max_output_tokens: 128000,
|
|
7478
|
-
parallel_tool_calls: true
|
|
7479
|
-
}
|
|
7480
|
-
},
|
|
7481
|
-
{
|
|
7482
|
-
id: "gpt-5.3-codex-spark-plus-pro-medium",
|
|
7483
|
-
handle: "chatgpt-plus-pro/gpt-5.3-codex-spark",
|
|
7484
|
-
label: "GPT-5.3 Codex Spark (ChatGPT)",
|
|
7485
|
-
description: "GPT-5.3 Codex Spark (med reasoning) via ChatGPT Plus/Pro",
|
|
7486
|
-
updateArgs: {
|
|
7487
|
-
reasoning_effort: "medium",
|
|
7488
|
-
verbosity: "low",
|
|
7489
|
-
context_window: 128000,
|
|
7490
|
-
max_output_tokens: 128000,
|
|
7491
|
-
parallel_tool_calls: true
|
|
7492
|
-
}
|
|
7493
|
-
},
|
|
7494
|
-
{
|
|
7495
|
-
id: "gpt-5.3-codex-spark-plus-pro-high",
|
|
7496
|
-
handle: "chatgpt-plus-pro/gpt-5.3-codex-spark",
|
|
7497
|
-
label: "GPT-5.3 Codex Spark (ChatGPT)",
|
|
7498
|
-
description: "GPT-5.3 Codex Spark (high reasoning) via ChatGPT Plus/Pro",
|
|
7499
|
-
updateArgs: {
|
|
7500
|
-
reasoning_effort: "high",
|
|
7501
|
-
verbosity: "low",
|
|
7502
|
-
context_window: 128000,
|
|
7503
|
-
max_output_tokens: 128000,
|
|
7504
|
-
parallel_tool_calls: true
|
|
7505
|
-
}
|
|
7506
|
-
},
|
|
7507
|
-
{
|
|
7508
|
-
id: "gpt-5.3-codex-spark-plus-pro-xhigh",
|
|
7509
|
-
handle: "chatgpt-plus-pro/gpt-5.3-codex-spark",
|
|
7510
|
-
label: "GPT-5.3 Codex Spark (ChatGPT)",
|
|
7511
|
-
description: "GPT-5.3 Codex Spark (max reasoning) via ChatGPT Plus/Pro",
|
|
7512
|
-
updateArgs: {
|
|
7513
|
-
reasoning_effort: "xhigh",
|
|
7514
|
-
verbosity: "low",
|
|
7515
|
-
context_window: 128000,
|
|
7516
|
-
max_output_tokens: 128000,
|
|
7517
|
-
parallel_tool_calls: true
|
|
7518
|
-
}
|
|
7519
|
-
},
|
|
7520
|
-
{
|
|
7521
|
-
id: "gpt-5.5-none",
|
|
7522
|
-
handle: "openai/gpt-5.5",
|
|
7523
|
-
label: "GPT-5.5",
|
|
7524
|
-
description: "OpenAI's most capable model (no reasoning)",
|
|
7525
|
-
updateArgs: {
|
|
7526
|
-
reasoning_effort: "none",
|
|
7527
|
-
verbosity: "medium",
|
|
7528
|
-
context_window: 272000,
|
|
7529
|
-
max_output_tokens: 128000,
|
|
7530
|
-
parallel_tool_calls: true
|
|
7531
|
-
}
|
|
7532
|
-
},
|
|
7533
|
-
{
|
|
7534
|
-
id: "gpt-5.5-low",
|
|
7535
|
-
handle: "openai/gpt-5.5",
|
|
7536
|
-
label: "GPT-5.5",
|
|
7537
|
-
description: "OpenAI's most capable model (low reasoning)",
|
|
7538
|
-
updateArgs: {
|
|
7539
|
-
reasoning_effort: "low",
|
|
7540
|
-
verbosity: "medium",
|
|
7541
|
-
context_window: 272000,
|
|
7542
|
-
max_output_tokens: 128000,
|
|
7543
|
-
parallel_tool_calls: true
|
|
7544
|
-
}
|
|
7545
|
-
},
|
|
7546
|
-
{
|
|
7547
|
-
id: "gpt-5.5-medium",
|
|
7548
|
-
handle: "openai/gpt-5.5",
|
|
7549
|
-
label: "GPT-5.5",
|
|
7550
|
-
description: "OpenAI's most capable model (med reasoning)",
|
|
7551
|
-
updateArgs: {
|
|
7552
|
-
reasoning_effort: "medium",
|
|
7553
|
-
verbosity: "medium",
|
|
7554
|
-
context_window: 272000,
|
|
7555
|
-
max_output_tokens: 128000,
|
|
7556
|
-
parallel_tool_calls: true
|
|
7557
|
-
}
|
|
7558
|
-
},
|
|
7559
|
-
{
|
|
7560
|
-
id: "gpt-5.5-high",
|
|
7561
|
-
handle: "openai/gpt-5.5",
|
|
7562
|
-
label: "GPT-5.5",
|
|
7563
|
-
description: "OpenAI's most capable model (high reasoning)",
|
|
7564
|
-
updateArgs: {
|
|
7565
|
-
reasoning_effort: "high",
|
|
7566
|
-
verbosity: "medium",
|
|
7567
|
-
context_window: 272000,
|
|
7568
|
-
max_output_tokens: 128000,
|
|
7569
|
-
parallel_tool_calls: true
|
|
7570
|
-
}
|
|
7571
|
-
},
|
|
7572
|
-
{
|
|
7573
|
-
id: "gpt-5.5-xhigh",
|
|
7574
|
-
handle: "openai/gpt-5.5",
|
|
7575
|
-
label: "GPT-5.5",
|
|
7576
|
-
description: "OpenAI's most capable model (max reasoning)",
|
|
7577
|
-
updateArgs: {
|
|
7578
|
-
reasoning_effort: "xhigh",
|
|
7579
|
-
verbosity: "medium",
|
|
7580
|
-
context_window: 272000,
|
|
7581
|
-
max_output_tokens: 128000,
|
|
7582
|
-
parallel_tool_calls: true
|
|
7583
|
-
}
|
|
7584
|
-
},
|
|
7585
|
-
{
|
|
7586
|
-
id: "gpt-5.4-none",
|
|
7587
|
-
handle: "openai/gpt-5.4",
|
|
7588
|
-
label: "GPT-5.4",
|
|
7589
|
-
description: "OpenAI's most capable model (no reasoning)",
|
|
7590
|
-
updateArgs: {
|
|
7591
|
-
reasoning_effort: "none",
|
|
7592
|
-
verbosity: "medium",
|
|
7593
|
-
context_window: 272000,
|
|
7594
|
-
max_output_tokens: 128000,
|
|
7595
|
-
parallel_tool_calls: true
|
|
7596
|
-
}
|
|
7597
|
-
},
|
|
7598
|
-
{
|
|
7599
|
-
id: "gpt-5.4-low",
|
|
7600
|
-
handle: "openai/gpt-5.4",
|
|
7601
|
-
label: "GPT-5.4",
|
|
7602
|
-
description: "OpenAI's most capable model (low reasoning)",
|
|
7603
|
-
updateArgs: {
|
|
7604
|
-
reasoning_effort: "low",
|
|
7605
|
-
verbosity: "medium",
|
|
7606
|
-
context_window: 272000,
|
|
7607
|
-
max_output_tokens: 128000,
|
|
7608
|
-
parallel_tool_calls: true
|
|
7609
|
-
}
|
|
7610
|
-
},
|
|
7611
|
-
{
|
|
7612
|
-
id: "gpt-5.4-medium",
|
|
7613
|
-
handle: "openai/gpt-5.4",
|
|
7614
|
-
label: "GPT-5.4",
|
|
7615
|
-
description: "OpenAI's most capable model (med reasoning)",
|
|
7616
|
-
updateArgs: {
|
|
7617
|
-
reasoning_effort: "medium",
|
|
7618
|
-
verbosity: "medium",
|
|
7619
|
-
context_window: 272000,
|
|
7620
|
-
max_output_tokens: 128000,
|
|
7621
|
-
parallel_tool_calls: true
|
|
7622
|
-
}
|
|
7623
|
-
},
|
|
7624
|
-
{
|
|
7625
|
-
id: "gpt-5.4-high",
|
|
7626
|
-
handle: "openai/gpt-5.4",
|
|
7627
|
-
label: "GPT-5.4",
|
|
7628
|
-
description: "OpenAI's most capable model (high reasoning)",
|
|
7629
|
-
updateArgs: {
|
|
7630
|
-
reasoning_effort: "high",
|
|
7631
|
-
verbosity: "medium",
|
|
7632
|
-
context_window: 272000,
|
|
7633
|
-
max_output_tokens: 128000,
|
|
7634
|
-
parallel_tool_calls: true
|
|
7635
|
-
}
|
|
7636
|
-
},
|
|
7637
|
-
{
|
|
7638
|
-
id: "gpt-5.4-xhigh",
|
|
7639
|
-
handle: "openai/gpt-5.4",
|
|
7640
|
-
label: "GPT-5.4",
|
|
7641
|
-
description: "OpenAI's most capable model (max reasoning)",
|
|
7642
|
-
updateArgs: {
|
|
7643
|
-
reasoning_effort: "xhigh",
|
|
7644
|
-
verbosity: "medium",
|
|
7645
|
-
context_window: 272000,
|
|
7646
|
-
max_output_tokens: 128000,
|
|
7647
|
-
parallel_tool_calls: true
|
|
7648
|
-
}
|
|
7649
|
-
},
|
|
7650
|
-
{
|
|
7651
|
-
id: "gpt-5.4-fast-none",
|
|
7652
|
-
handle: "openai/gpt-5.4-fast",
|
|
7653
|
-
label: "GPT-5.4 Fast",
|
|
7654
|
-
description: "GPT-5.4 with priority service tier (no reasoning)",
|
|
7655
|
-
updateArgs: {
|
|
7656
|
-
reasoning_effort: "none",
|
|
7657
|
-
verbosity: "medium",
|
|
7658
|
-
context_window: 272000,
|
|
7659
|
-
max_output_tokens: 128000,
|
|
7660
|
-
parallel_tool_calls: true
|
|
7661
|
-
}
|
|
7662
|
-
},
|
|
7663
|
-
{
|
|
7664
|
-
id: "gpt-5.4-fast-low",
|
|
7665
|
-
handle: "openai/gpt-5.4-fast",
|
|
7666
|
-
label: "GPT-5.4 Fast",
|
|
7667
|
-
description: "GPT-5.4 with priority service tier (low reasoning)",
|
|
7668
|
-
updateArgs: {
|
|
7669
|
-
reasoning_effort: "low",
|
|
7670
|
-
verbosity: "medium",
|
|
7671
|
-
context_window: 272000,
|
|
7672
|
-
max_output_tokens: 128000,
|
|
7673
|
-
parallel_tool_calls: true
|
|
7674
|
-
}
|
|
7675
|
-
},
|
|
7676
|
-
{
|
|
7677
|
-
id: "gpt-5.4-fast-medium",
|
|
7678
|
-
handle: "openai/gpt-5.4-fast",
|
|
7679
|
-
label: "GPT-5.4 Fast",
|
|
7680
|
-
description: "GPT-5.4 with priority service tier (med reasoning)",
|
|
7681
|
-
updateArgs: {
|
|
7682
|
-
reasoning_effort: "medium",
|
|
7683
|
-
verbosity: "medium",
|
|
7684
|
-
context_window: 272000,
|
|
7685
|
-
max_output_tokens: 128000,
|
|
7686
|
-
parallel_tool_calls: true
|
|
7687
|
-
}
|
|
7688
|
-
},
|
|
7689
|
-
{
|
|
7690
|
-
id: "gpt-5.4-fast-high",
|
|
7691
|
-
handle: "openai/gpt-5.4-fast",
|
|
7692
|
-
label: "GPT-5.4 Fast",
|
|
7693
|
-
description: "GPT-5.4 with priority service tier (high reasoning)",
|
|
7694
|
-
updateArgs: {
|
|
7695
|
-
reasoning_effort: "high",
|
|
7696
|
-
verbosity: "medium",
|
|
7697
|
-
context_window: 272000,
|
|
7698
|
-
max_output_tokens: 128000,
|
|
7699
|
-
parallel_tool_calls: true
|
|
7700
|
-
}
|
|
7701
|
-
},
|
|
7702
|
-
{
|
|
7703
|
-
id: "gpt-5.4-fast-xhigh",
|
|
7704
|
-
handle: "openai/gpt-5.4-fast",
|
|
7705
|
-
label: "GPT-5.4 Fast",
|
|
7706
|
-
description: "GPT-5.4 with priority service tier (max reasoning)",
|
|
7707
|
-
updateArgs: {
|
|
7708
|
-
reasoning_effort: "xhigh",
|
|
7709
|
-
verbosity: "medium",
|
|
7710
|
-
context_window: 272000,
|
|
7711
|
-
max_output_tokens: 128000,
|
|
7712
|
-
parallel_tool_calls: true
|
|
7713
|
-
}
|
|
7714
|
-
},
|
|
7715
|
-
{
|
|
7716
|
-
id: "gpt-5.4-mini-none",
|
|
7717
|
-
handle: "openai/gpt-5.4-mini",
|
|
7718
|
-
label: "GPT-5.4 Mini",
|
|
7719
|
-
description: "Fast, efficient GPT-5.4 variant (no reasoning)",
|
|
7720
|
-
updateArgs: {
|
|
7721
|
-
reasoning_effort: "none",
|
|
7722
|
-
verbosity: "low",
|
|
7723
|
-
context_window: 272000,
|
|
7724
|
-
max_output_tokens: 128000,
|
|
7725
|
-
parallel_tool_calls: true
|
|
7726
|
-
}
|
|
7727
|
-
},
|
|
7728
|
-
{
|
|
7729
|
-
id: "gpt-5.4-mini-low",
|
|
7730
|
-
handle: "openai/gpt-5.4-mini",
|
|
7731
|
-
label: "GPT-5.4 Mini",
|
|
7732
|
-
description: "Fast, efficient GPT-5.4 variant (low reasoning)",
|
|
7733
|
-
updateArgs: {
|
|
7734
|
-
reasoning_effort: "low",
|
|
7735
|
-
verbosity: "low",
|
|
7736
|
-
context_window: 272000,
|
|
7737
|
-
max_output_tokens: 128000,
|
|
7738
|
-
parallel_tool_calls: true
|
|
7739
|
-
}
|
|
7740
|
-
},
|
|
7741
|
-
{
|
|
7742
|
-
id: "gpt-5.4-mini-medium",
|
|
7743
|
-
handle: "openai/gpt-5.4-mini",
|
|
7744
|
-
label: "GPT-5.4 Mini",
|
|
7745
|
-
description: "Fast, efficient GPT-5.4 variant (med reasoning)",
|
|
7746
|
-
updateArgs: {
|
|
7747
|
-
reasoning_effort: "medium",
|
|
7748
|
-
verbosity: "low",
|
|
7749
|
-
context_window: 272000,
|
|
7750
|
-
max_output_tokens: 128000,
|
|
7751
|
-
parallel_tool_calls: true
|
|
7752
|
-
}
|
|
7753
|
-
},
|
|
7754
|
-
{
|
|
7755
|
-
id: "gpt-5.4-mini-high",
|
|
7756
|
-
handle: "openai/gpt-5.4-mini",
|
|
7757
|
-
label: "GPT-5.4 Mini",
|
|
7758
|
-
description: "Fast, efficient GPT-5.4 variant (high reasoning)",
|
|
7759
|
-
updateArgs: {
|
|
7760
|
-
reasoning_effort: "high",
|
|
7761
|
-
verbosity: "low",
|
|
7762
|
-
context_window: 272000,
|
|
7763
|
-
max_output_tokens: 128000,
|
|
7764
|
-
parallel_tool_calls: true
|
|
5675
|
+
isDefault: true,
|
|
5676
|
+
isFeatured: true
|
|
5677
|
+
},
|
|
5678
|
+
{
|
|
5679
|
+
id: "letta",
|
|
5680
|
+
label: "Letta Code",
|
|
5681
|
+
description: "Full Letta Code system prompt",
|
|
5682
|
+
content: letta_no_memfs_default,
|
|
5683
|
+
memfsContent: letta_default,
|
|
5684
|
+
rootMemfsContent: letta_root_memfs_default,
|
|
5685
|
+
localMemfsContent: letta_local_memfs_default,
|
|
5686
|
+
isFeatured: true
|
|
5687
|
+
},
|
|
5688
|
+
{
|
|
5689
|
+
id: "source-claude",
|
|
5690
|
+
label: "Claude Code",
|
|
5691
|
+
description: "Source-faithful Claude Code prompt (for benchmarking)",
|
|
5692
|
+
content: source_claude_default
|
|
5693
|
+
},
|
|
5694
|
+
{
|
|
5695
|
+
id: "source-codex",
|
|
5696
|
+
label: "Codex",
|
|
5697
|
+
description: "Source-faithful OpenAI Codex prompt (for benchmarking)",
|
|
5698
|
+
content: source_codex_default
|
|
5699
|
+
},
|
|
5700
|
+
{
|
|
5701
|
+
id: "source-gemini",
|
|
5702
|
+
label: "Gemini CLI",
|
|
5703
|
+
description: "Source-faithful Gemini CLI prompt (for benchmarking)",
|
|
5704
|
+
content: source_gemini_default
|
|
5705
|
+
}
|
|
5706
|
+
];
|
|
5707
|
+
function buildSystemPrompt(presetId, memoryMode) {
|
|
5708
|
+
const preset = SYSTEM_PROMPTS.find((p) => p.id === presetId);
|
|
5709
|
+
if (!preset) {
|
|
5710
|
+
throw new Error(`Unknown preset "${presetId}" — cannot rebuild system prompt`);
|
|
5711
|
+
}
|
|
5712
|
+
if (memoryMode === "local-memfs") {
|
|
5713
|
+
return (preset.localMemfsContent ?? preset.memfsContent ?? preset.content).trim();
|
|
5714
|
+
}
|
|
5715
|
+
if (memoryMode === "root-memfs") {
|
|
5716
|
+
return (preset.rootMemfsContent ?? preset.memfsContent ?? preset.content).trim();
|
|
5717
|
+
}
|
|
5718
|
+
if (memoryMode === "memfs") {
|
|
5719
|
+
return (preset.memfsContent ?? preset.content).trim();
|
|
5720
|
+
}
|
|
5721
|
+
return preset.content.trim();
|
|
5722
|
+
}
|
|
5723
|
+
var MEMORY_BLOCK_LABELS = ["persona", "human"];
|
|
5724
|
+
function parseMdxFrontmatter(content) {
|
|
5725
|
+
const frontmatterRegex = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/;
|
|
5726
|
+
const match = content.match(frontmatterRegex);
|
|
5727
|
+
if (!match || !match[1] || !match[2]) {
|
|
5728
|
+
return { frontmatter: {}, body: content };
|
|
5729
|
+
}
|
|
5730
|
+
const frontmatterText = match[1];
|
|
5731
|
+
const body = match[2];
|
|
5732
|
+
const frontmatter = {};
|
|
5733
|
+
for (const line of frontmatterText.split(`
|
|
5734
|
+
`)) {
|
|
5735
|
+
const colonIndex = line.indexOf(":");
|
|
5736
|
+
if (colonIndex > 0) {
|
|
5737
|
+
const key = line.slice(0, colonIndex).trim();
|
|
5738
|
+
const value = line.slice(colonIndex + 1).trim();
|
|
5739
|
+
frontmatter[key] = value;
|
|
5740
|
+
}
|
|
5741
|
+
}
|
|
5742
|
+
return { frontmatter, body: body.trim() };
|
|
5743
|
+
}
|
|
5744
|
+
async function loadMemoryBlocksFromMdx() {
|
|
5745
|
+
const memoryBlocks = [];
|
|
5746
|
+
const mdxFiles = MEMORY_BLOCK_LABELS.map((label) => `${label}.mdx`);
|
|
5747
|
+
for (const filename of mdxFiles) {
|
|
5748
|
+
try {
|
|
5749
|
+
const content = MEMORY_PROMPTS[filename];
|
|
5750
|
+
if (!content) {
|
|
5751
|
+
console.warn(`Missing embedded prompt file: ${filename}`);
|
|
5752
|
+
continue;
|
|
7765
5753
|
}
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
verbosity: "low",
|
|
7775
|
-
context_window: 272000,
|
|
7776
|
-
max_output_tokens: 128000,
|
|
7777
|
-
parallel_tool_calls: true
|
|
5754
|
+
const { frontmatter, body } = parseMdxFrontmatter(content);
|
|
5755
|
+
const label = frontmatter.label || filename.replace(".mdx", "");
|
|
5756
|
+
const block = {
|
|
5757
|
+
label,
|
|
5758
|
+
value: body
|
|
5759
|
+
};
|
|
5760
|
+
if (frontmatter.description) {
|
|
5761
|
+
block.description = frontmatter.description;
|
|
7778
5762
|
}
|
|
7779
|
-
|
|
7780
|
-
|
|
7781
|
-
id: "gpt-5.3-codex-none",
|
|
7782
|
-
handle: "openai/gpt-5.3-codex",
|
|
7783
|
-
label: "GPT-5.3-Codex",
|
|
7784
|
-
description: "GPT-5.3 variant (no reasoning) optimized for coding",
|
|
7785
|
-
updateArgs: {
|
|
7786
|
-
reasoning_effort: "none",
|
|
7787
|
-
verbosity: "medium",
|
|
7788
|
-
context_window: 272000,
|
|
7789
|
-
max_output_tokens: 128000,
|
|
7790
|
-
parallel_tool_calls: true
|
|
5763
|
+
if (READ_ONLY_BLOCK_LABELS.includes(label)) {
|
|
5764
|
+
block.read_only = true;
|
|
7791
5765
|
}
|
|
7792
|
-
|
|
7793
|
-
{
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
5766
|
+
memoryBlocks.push(block);
|
|
5767
|
+
} catch (error) {
|
|
5768
|
+
console.error(`Error loading ${filename}:`, error);
|
|
5769
|
+
}
|
|
5770
|
+
}
|
|
5771
|
+
return memoryBlocks;
|
|
5772
|
+
}
|
|
5773
|
+
var cachedMemoryBlocks = null;
|
|
5774
|
+
async function getDefaultMemoryBlocks() {
|
|
5775
|
+
if (!cachedMemoryBlocks) {
|
|
5776
|
+
cachedMemoryBlocks = await loadMemoryBlocksFromMdx();
|
|
5777
|
+
}
|
|
5778
|
+
return cachedMemoryBlocks;
|
|
5779
|
+
}
|
|
5780
|
+
var models = [];
|
|
5781
|
+
var BUILTIN_MODEL_ALIASES = new Map([
|
|
5782
|
+
["auto", "letta/auto"],
|
|
5783
|
+
["auto-chat", "letta/auto-chat"],
|
|
5784
|
+
["auto-fast", "letta/auto-fast"]
|
|
5785
|
+
]);
|
|
5786
|
+
function resolveEstablishedCliAlias(modelIdentifier) {
|
|
5787
|
+
if (modelIdentifier === "haiku") {
|
|
5788
|
+
return models.find((model) => model.handle.includes("claude-haiku-4-5")) ?? null;
|
|
5789
|
+
}
|
|
5790
|
+
if (modelIdentifier === "sonnet-4.6-low") {
|
|
5791
|
+
const matchingModels = models.filter((model) => model.handle.includes("claude-sonnet-4-6"));
|
|
5792
|
+
const lowEffortModel = matchingModels.find((model) => model.updateArgs?.reasoning_effort === "low");
|
|
5793
|
+
if (lowEffortModel)
|
|
5794
|
+
return lowEffortModel;
|
|
5795
|
+
const baseModel = matchingModels[0];
|
|
5796
|
+
return baseModel ? {
|
|
5797
|
+
...baseModel,
|
|
5798
|
+
id: modelIdentifier,
|
|
7798
5799
|
updateArgs: {
|
|
5800
|
+
...baseModel.updateArgs,
|
|
7799
5801
|
reasoning_effort: "low",
|
|
7800
|
-
|
|
7801
|
-
context_window: 272000,
|
|
7802
|
-
max_output_tokens: 128000,
|
|
7803
|
-
parallel_tool_calls: true
|
|
7804
|
-
}
|
|
7805
|
-
},
|
|
7806
|
-
{
|
|
7807
|
-
id: "gpt-5.3-codex-medium",
|
|
7808
|
-
handle: "openai/gpt-5.3-codex",
|
|
7809
|
-
label: "GPT-5.3-Codex",
|
|
7810
|
-
description: "GPT-5.3 variant (med reasoning) optimized for coding",
|
|
7811
|
-
updateArgs: {
|
|
7812
|
-
reasoning_effort: "medium",
|
|
7813
|
-
verbosity: "medium",
|
|
7814
|
-
context_window: 272000,
|
|
7815
|
-
max_output_tokens: 128000,
|
|
7816
|
-
parallel_tool_calls: true
|
|
7817
|
-
}
|
|
7818
|
-
},
|
|
7819
|
-
{
|
|
7820
|
-
id: "gpt-5.3-codex-high",
|
|
7821
|
-
handle: "openai/gpt-5.3-codex",
|
|
7822
|
-
label: "GPT-5.3-Codex",
|
|
7823
|
-
description: "OpenAI's best coding model (high reasoning)",
|
|
7824
|
-
updateArgs: {
|
|
7825
|
-
reasoning_effort: "high",
|
|
7826
|
-
verbosity: "medium",
|
|
7827
|
-
context_window: 272000,
|
|
7828
|
-
max_output_tokens: 128000,
|
|
7829
|
-
parallel_tool_calls: true
|
|
7830
|
-
}
|
|
7831
|
-
},
|
|
7832
|
-
{
|
|
7833
|
-
id: "gpt-5.3-codex-xhigh",
|
|
7834
|
-
handle: "openai/gpt-5.3-codex",
|
|
7835
|
-
label: "GPT-5.3-Codex",
|
|
7836
|
-
description: "GPT-5.3 variant (max reasoning) optimized for coding",
|
|
7837
|
-
updateArgs: {
|
|
7838
|
-
reasoning_effort: "xhigh",
|
|
7839
|
-
verbosity: "medium",
|
|
7840
|
-
context_window: 272000,
|
|
7841
|
-
max_output_tokens: 128000,
|
|
7842
|
-
parallel_tool_calls: true
|
|
7843
|
-
}
|
|
7844
|
-
},
|
|
7845
|
-
{
|
|
7846
|
-
id: "grok-4.5",
|
|
7847
|
-
handle: "xai/grok-4.5",
|
|
7848
|
-
label: "Grok 4.5",
|
|
7849
|
-
description: "xAI's Grok 4.5 model via the direct xAI API",
|
|
7850
|
-
isFeatured: true,
|
|
7851
|
-
updateArgs: {
|
|
7852
|
-
context_window: 500000,
|
|
7853
|
-
max_output_tokens: 16384,
|
|
7854
|
-
parallel_tool_calls: true
|
|
7855
|
-
}
|
|
7856
|
-
},
|
|
7857
|
-
{
|
|
7858
|
-
id: "glm-5.2",
|
|
7859
|
-
handle: "zai/glm-5.2",
|
|
7860
|
-
label: "GLM-5.2",
|
|
7861
|
-
description: "zAI's latest reasoning and coding model with 1M context",
|
|
7862
|
-
isFeatured: true,
|
|
7863
|
-
free: true,
|
|
7864
|
-
updateArgs: {
|
|
7865
|
-
context_window: 1e6,
|
|
7866
|
-
max_output_tokens: 131072,
|
|
7867
|
-
parallel_tool_calls: true
|
|
5802
|
+
enable_reasoner: true
|
|
7868
5803
|
}
|
|
7869
|
-
}
|
|
7870
|
-
{
|
|
7871
|
-
id: "glm-5.1",
|
|
7872
|
-
handle: "zai/glm-5.1",
|
|
7873
|
-
label: "GLM-5.1",
|
|
7874
|
-
description: "zAI's coding model",
|
|
7875
|
-
isFeatured: false,
|
|
7876
|
-
free: true,
|
|
7877
|
-
updateArgs: {
|
|
7878
|
-
context_window: 180000,
|
|
7879
|
-
max_output_tokens: 16000,
|
|
7880
|
-
parallel_tool_calls: true
|
|
7881
|
-
}
|
|
7882
|
-
},
|
|
7883
|
-
{
|
|
7884
|
-
id: "minimax-m3",
|
|
7885
|
-
handle: "minimax/MiniMax-M3",
|
|
7886
|
-
label: "MiniMax M3",
|
|
7887
|
-
description: "MiniMax's frontier M-series model for agentic reasoning, tool use, coding, multimodal chat input, and long-context tasks",
|
|
7888
|
-
isFeatured: true,
|
|
7889
|
-
updateArgs: {
|
|
7890
|
-
context_window: 500000,
|
|
7891
|
-
parallel_tool_calls: true
|
|
7892
|
-
}
|
|
7893
|
-
},
|
|
7894
|
-
{
|
|
7895
|
-
id: "minimax-m2.7",
|
|
7896
|
-
handle: "minimax/MiniMax-M2.7",
|
|
7897
|
-
label: "MiniMax 2.7",
|
|
7898
|
-
description: "MiniMax's M2.7 coding model",
|
|
7899
|
-
free: true,
|
|
7900
|
-
updateArgs: {
|
|
7901
|
-
context_window: 160000,
|
|
7902
|
-
max_output_tokens: 64000,
|
|
7903
|
-
parallel_tool_calls: true
|
|
7904
|
-
}
|
|
7905
|
-
},
|
|
7906
|
-
{
|
|
7907
|
-
id: "kimi-k3",
|
|
7908
|
-
handle: "moonshot/kimi-k3",
|
|
7909
|
-
label: "Kimi K3",
|
|
7910
|
-
description: "Moonshot AI's Kimi K3 model for long-context agentic coding and reasoning tasks",
|
|
7911
|
-
isFeatured: true,
|
|
7912
|
-
updateArgs: {
|
|
7913
|
-
context_window: 1048576,
|
|
7914
|
-
max_output_tokens: 131072,
|
|
7915
|
-
parallel_tool_calls: true
|
|
7916
|
-
}
|
|
7917
|
-
},
|
|
7918
|
-
{
|
|
7919
|
-
id: "gemini-3.1",
|
|
7920
|
-
handle: "google_ai/gemini-3.1-pro-preview",
|
|
7921
|
-
label: "Gemini 3.1 Pro",
|
|
7922
|
-
description: "Google's latest and smartest model",
|
|
7923
|
-
isFeatured: true,
|
|
7924
|
-
updateArgs: {
|
|
7925
|
-
context_window: 180000,
|
|
7926
|
-
temperature: 1,
|
|
7927
|
-
parallel_tool_calls: true
|
|
7928
|
-
}
|
|
7929
|
-
},
|
|
7930
|
-
{
|
|
7931
|
-
id: "gemini-3.5-flash",
|
|
7932
|
-
handle: "google_ai/gemini-3.5-flash",
|
|
7933
|
-
label: "Gemini 3.5 Flash",
|
|
7934
|
-
description: "Google's Gemini 3.5 Flash model",
|
|
7935
|
-
updateArgs: {
|
|
7936
|
-
context_window: 1048576,
|
|
7937
|
-
temperature: 1,
|
|
7938
|
-
parallel_tool_calls: true
|
|
7939
|
-
}
|
|
7940
|
-
},
|
|
7941
|
-
{
|
|
7942
|
-
id: "gemini-3.6-flash",
|
|
7943
|
-
handle: "google_ai/gemini-3.6-flash",
|
|
7944
|
-
label: "Gemini 3.6 Flash",
|
|
7945
|
-
description: "Google's Gemini 3.6 Flash model",
|
|
7946
|
-
isFeatured: true,
|
|
7947
|
-
updateArgs: {
|
|
7948
|
-
context_window: 1048576,
|
|
7949
|
-
temperature: 1,
|
|
7950
|
-
parallel_tool_calls: true
|
|
7951
|
-
}
|
|
7952
|
-
}
|
|
7953
|
-
]
|
|
7954
|
-
};
|
|
7955
|
-
var models = models_default.models;
|
|
7956
|
-
function resolveModel(modelIdentifier) {
|
|
7957
|
-
const byId = models.find((m) => m.id === modelIdentifier);
|
|
7958
|
-
if (byId)
|
|
7959
|
-
return byId.handle;
|
|
7960
|
-
const byHandle = models.find((m) => m.handle === modelIdentifier);
|
|
7961
|
-
if (byHandle)
|
|
7962
|
-
return byHandle.handle;
|
|
7963
|
-
if (modelIdentifier.includes("/")) {
|
|
7964
|
-
return modelIdentifier;
|
|
5804
|
+
} : null;
|
|
7965
5805
|
}
|
|
7966
5806
|
return null;
|
|
7967
5807
|
}
|
|
5808
|
+
function resolveCatalogModel(modelIdentifier) {
|
|
5809
|
+
const byId = models.find((model) => model.id === modelIdentifier);
|
|
5810
|
+
if (byId)
|
|
5811
|
+
return byId;
|
|
5812
|
+
const byHandle = models.find((model) => model.handle === modelIdentifier);
|
|
5813
|
+
if (byHandle)
|
|
5814
|
+
return byHandle;
|
|
5815
|
+
const cliAlias = resolveEstablishedCliAlias(modelIdentifier);
|
|
5816
|
+
if (cliAlias)
|
|
5817
|
+
return cliAlias;
|
|
5818
|
+
const matches = models.filter((model) => model.handle.split("/").slice(1).join("/") === modelIdentifier);
|
|
5819
|
+
const matchingHandles = new Set(matches.map((model) => model.handle));
|
|
5820
|
+
return matchingHandles.size === 1 ? matches[0] ?? null : null;
|
|
5821
|
+
}
|
|
5822
|
+
function resolveModel(modelIdentifier) {
|
|
5823
|
+
const entry = resolveCatalogModel(modelIdentifier);
|
|
5824
|
+
if (entry)
|
|
5825
|
+
return entry.handle;
|
|
5826
|
+
const builtinHandle = BUILTIN_MODEL_ALIASES.get(modelIdentifier);
|
|
5827
|
+
if (builtinHandle)
|
|
5828
|
+
return builtinHandle;
|
|
5829
|
+
return modelIdentifier.includes("/") ? modelIdentifier : null;
|
|
5830
|
+
}
|
|
7968
5831
|
function getDefaultModel() {
|
|
7969
|
-
|
|
5832
|
+
if (models.length === 0)
|
|
5833
|
+
return "letta/auto";
|
|
5834
|
+
const autoModel = models.find((model) => model.id === "auto");
|
|
7970
5835
|
if (autoModel)
|
|
7971
|
-
return autoModel;
|
|
7972
|
-
const defaultModel = models.find((
|
|
5836
|
+
return autoModel.handle;
|
|
5837
|
+
const defaultModel = models.find((model) => model.isDefault);
|
|
7973
5838
|
if (defaultModel)
|
|
7974
5839
|
return defaultModel.handle;
|
|
7975
5840
|
const firstModel = models[0];
|
|
7976
5841
|
if (!firstModel) {
|
|
7977
|
-
throw new Error("
|
|
5842
|
+
throw new Error("Model catalog is unavailable.");
|
|
7978
5843
|
}
|
|
7979
5844
|
return firstModel.handle;
|
|
7980
5845
|
}
|
|
@@ -8260,8 +6125,15 @@ function assertCreateAgentOptionsSupported(options) {
|
|
|
8260
6125
|
throw new Error("App-server createAgent() does not yet support dreaming.behavior overrides.");
|
|
8261
6126
|
}
|
|
8262
6127
|
}
|
|
8263
|
-
async function createAgentBody(options) {
|
|
6128
|
+
async function createAgentBody(options, resolvedSkills) {
|
|
8264
6129
|
assertCreateAgentOptionsSupported(options);
|
|
6130
|
+
const skills = resolvedSkills ?? await resolveSkillItems(options.skills);
|
|
6131
|
+
if (skills.length > 0 && options.memfs === false) {
|
|
6132
|
+
throw new Error("createAgent() skills require the memory filesystem; remove memfs: false.");
|
|
6133
|
+
}
|
|
6134
|
+
if (resolvedSkills === undefined && skillsHaveSupportFiles(skills)) {
|
|
6135
|
+
throw new Error("This backend does not yet support skill support files (scripts/, " + "references/). Use the Cloud backend, or pass a skill with only SKILL.md.");
|
|
6136
|
+
}
|
|
8265
6137
|
let system;
|
|
8266
6138
|
if (options.systemPrompt !== undefined) {
|
|
8267
6139
|
if (typeof options.systemPrompt !== "string" || isPresetSystemPrompt(options.systemPrompt)) {
|
|
@@ -8287,7 +6159,14 @@ async function createAgentBody(options) {
|
|
|
8287
6159
|
if (options.human !== undefined) {
|
|
8288
6160
|
memoryBlocks.push({ label: "human", value: options.human });
|
|
8289
6161
|
}
|
|
8290
|
-
const
|
|
6162
|
+
for (const skill of skills) {
|
|
6163
|
+
memoryBlocks.push({
|
|
6164
|
+
label: `skills/${skill.name}`,
|
|
6165
|
+
value: skill.instructions,
|
|
6166
|
+
description: skill.description
|
|
6167
|
+
});
|
|
6168
|
+
}
|
|
6169
|
+
const hasMemoryConfiguration = options.memory !== undefined || options.persona !== undefined || options.human !== undefined || skills.length > 0;
|
|
8291
6170
|
return buildCreateAgentRequest({
|
|
8292
6171
|
personalityId: options.personality,
|
|
8293
6172
|
name: options.name,
|
|
@@ -9275,11 +7154,12 @@ class RemoteTurnCoordinator {
|
|
|
9275
7154
|
});
|
|
9276
7155
|
const success = turn.success !== undefined ? turn.success && !approvalConflict && !isFailureStopReason(stopReason) : !approvalConflict && !isFailureStopReason(stopReason);
|
|
9277
7156
|
const errorCode = approvalConflict ? "approval_conflict" : turn.errorCode ?? toSdkErrorCode(stopReason);
|
|
7157
|
+
const publicError = errorCode && errorCode !== "error" ? errorCode : turn.detail ?? stopReason ?? "error";
|
|
9278
7158
|
return {
|
|
9279
7159
|
type: "result",
|
|
9280
7160
|
success,
|
|
9281
7161
|
result: success ? tracker?.assistantText || undefined : undefined,
|
|
9282
|
-
error: success ? undefined :
|
|
7162
|
+
error: success ? undefined : publicError,
|
|
9283
7163
|
errorCode: success ? undefined : errorCode ?? "error",
|
|
9284
7164
|
approvalConflict: approvalConflict || undefined,
|
|
9285
7165
|
recoverable: approvalConflict ? true : success ? undefined : turn.recoverable ?? false,
|
|
@@ -9383,7 +7263,7 @@ class RemoteClientSessionCore {
|
|
|
9383
7263
|
this.runtime = init.runtime;
|
|
9384
7264
|
this._agentId = init.runtime.agent_id;
|
|
9385
7265
|
this._conversationId = init.runtime.conversation_id;
|
|
9386
|
-
this._sessionId = `${init.runtime.agent_id}:${init.runtime.conversation_id}
|
|
7266
|
+
this._sessionId = init.runtime.agent_id ? `${init.runtime.agent_id}:${init.runtime.conversation_id}` : init.runtime.conversation_id;
|
|
9387
7267
|
this._modelSettings = init.modelSettings ?? null;
|
|
9388
7268
|
this._model = typeof init.model === "string" ? init.model : typeof this._modelSettings?.model === "string" ? this._modelSettings.model : "";
|
|
9389
7269
|
this.toolNames = init.tools;
|
|
@@ -10358,8 +8238,8 @@ class AppServerSession extends RemoteClientSessionCore {
|
|
|
10358
8238
|
return {
|
|
10359
8239
|
controller: new AppServerRuntimeController(client, this.remoteOptions, allowedTools, clientToolset),
|
|
10360
8240
|
runtime: response.runtime,
|
|
10361
|
-
model: typeof response.agent?.model === "string" ? response.agent.model : "",
|
|
10362
|
-
modelSettings: objectRecord(response.agent?.model_settings) ?? null,
|
|
8241
|
+
model: typeof response.agent?.model === "string" ? response.agent.model : typeof response.conversation?.model === "string" ? response.conversation.model : "",
|
|
8242
|
+
modelSettings: objectRecord(response.agent?.model_settings) ?? objectRecord(response.conversation?.model_settings) ?? null,
|
|
10363
8243
|
...availableTools !== undefined ? { tools: availableTools } : {},
|
|
10364
8244
|
...skillSources !== undefined ? { skillSources: [...skillSources] } : {}
|
|
10365
8245
|
};
|
|
@@ -10440,6 +8320,24 @@ class AppServerSession extends RemoteClientSessionCore {
|
|
|
10440
8320
|
};
|
|
10441
8321
|
return command;
|
|
10442
8322
|
}
|
|
8323
|
+
if (this.mode.kind === "agent-free") {
|
|
8324
|
+
if (this.mode.createConversation) {
|
|
8325
|
+
const create = this.mode.createConversation;
|
|
8326
|
+
command.create_conversation = {
|
|
8327
|
+
body: {
|
|
8328
|
+
model: create.model,
|
|
8329
|
+
system: create.system,
|
|
8330
|
+
...create.modelSettings !== undefined ? { model_settings: create.modelSettings } : {},
|
|
8331
|
+
...create.contextWindowLimit !== undefined ? { context_window_limit: create.contextWindowLimit } : {}
|
|
8332
|
+
}
|
|
8333
|
+
};
|
|
8334
|
+
} else if (this.mode.conversationId) {
|
|
8335
|
+
command.conversation_id = this.mode.conversationId;
|
|
8336
|
+
} else {
|
|
8337
|
+
throw new Error("Agent-free sessions require a conversation to create or resume.");
|
|
8338
|
+
}
|
|
8339
|
+
return command;
|
|
8340
|
+
}
|
|
10443
8341
|
if (this.mode.agentId) {
|
|
10444
8342
|
command.agent_id = this.mode.agentId;
|
|
10445
8343
|
if (this.mode.newConversation) {
|
|
@@ -11159,7 +9057,8 @@ function buildCloudStatusWebSocketUrl(params) {
|
|
|
11159
9057
|
throw new Error(`Unsupported cloud apiBaseUrl protocol: ${base.protocol}`);
|
|
11160
9058
|
}
|
|
11161
9059
|
base.pathname = `/v1/environments/${encodeURIComponent(params.connectionId)}/status/ws`;
|
|
11162
|
-
|
|
9060
|
+
if (params.agentId)
|
|
9061
|
+
base.searchParams.set("agentId", params.agentId);
|
|
11163
9062
|
base.searchParams.set("conversationId", params.conversationId);
|
|
11164
9063
|
base.searchParams.set("channel", "stream");
|
|
11165
9064
|
if (params.authMode === "query" && params.apiKey) {
|
|
@@ -11190,12 +9089,23 @@ function externalToolsByName(tools) {
|
|
|
11190
9089
|
}
|
|
11191
9090
|
return result;
|
|
11192
9091
|
}
|
|
11193
|
-
async function createCloudAgent(client, agentOptions) {
|
|
11194
|
-
const
|
|
9092
|
+
async function createCloudAgent(client, agentOptions, pushSkillSupportFiles) {
|
|
9093
|
+
const skills = await resolveSkillItems(agentOptions.skills);
|
|
9094
|
+
const hasSupportFiles = skillsHaveSupportFiles(skills);
|
|
9095
|
+
if (hasSupportFiles && pushSkillSupportFiles === undefined) {
|
|
9096
|
+
throw new Error("Skill support files (scripts/, references/) require the Node.js " + "package root; the portable client seeds SKILL.md-only skills.");
|
|
9097
|
+
}
|
|
9098
|
+
const body = await createAgentBody(agentOptions, skills);
|
|
11195
9099
|
const agent = await client.agents.create(body);
|
|
11196
9100
|
if (typeof agent.id !== "string" || agent.id.length === 0) {
|
|
11197
9101
|
throw new Error("Cloud create agent response did not include an agent id.");
|
|
11198
9102
|
}
|
|
9103
|
+
if (hasSupportFiles && pushSkillSupportFiles) {
|
|
9104
|
+
if (typeof client.apiKey !== "string" || client.apiKey.length === 0) {
|
|
9105
|
+
throw new Error(`Agent ${agent.id} was created, but skill support files need an API ` + "key to push to the agent's memory repo and none is configured.");
|
|
9106
|
+
}
|
|
9107
|
+
await pushSkillSupportFiles({ apiBaseUrl: client.baseURL, apiKey: client.apiKey, agentId: agent.id }, skills);
|
|
9108
|
+
}
|
|
11199
9109
|
return agent.id;
|
|
11200
9110
|
}
|
|
11201
9111
|
function assertCloudSessionOptionsSupported(action, options) {
|
|
@@ -11245,7 +9155,9 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11245
9155
|
this.sandboxLifecycleClosing = false;
|
|
11246
9156
|
const resolved = await this.resolveRuntime();
|
|
11247
9157
|
const connection = await this.resolveConnectionForRuntime(resolved.runtime).catch(async (error) => {
|
|
11248
|
-
|
|
9158
|
+
if (resolved.runtime.agent_id) {
|
|
9159
|
+
await this.cleanupSessionRepositories(resolved.runtime.agent_id, resolved.runtime.conversation_id);
|
|
9160
|
+
}
|
|
11249
9161
|
throw error;
|
|
11250
9162
|
});
|
|
11251
9163
|
this.connectionId = connection.connectionId;
|
|
@@ -11262,7 +9174,9 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11262
9174
|
} catch (error) {
|
|
11263
9175
|
await this.closeMcpBridge();
|
|
11264
9176
|
await this.cleanupManagedSandbox();
|
|
11265
|
-
|
|
9177
|
+
if (resolved.runtime.agent_id) {
|
|
9178
|
+
await this.cleanupSessionRepositories(resolved.runtime.agent_id, resolved.runtime.conversation_id);
|
|
9179
|
+
}
|
|
11266
9180
|
throw error;
|
|
11267
9181
|
}
|
|
11268
9182
|
}
|
|
@@ -11286,8 +9200,8 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11286
9200
|
requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS
|
|
11287
9201
|
}, allowedTools, clientToolset),
|
|
11288
9202
|
runtime: response.runtime,
|
|
11289
|
-
model: typeof response.agent?.model === "string" ? response.agent.model : "",
|
|
11290
|
-
modelSettings: response.agent?.model_settings ?? null,
|
|
9203
|
+
model: typeof response.agent?.model === "string" ? response.agent.model : typeof response.conversation?.model === "string" ? response.conversation.model : "",
|
|
9204
|
+
modelSettings: response.agent?.model_settings ?? response.conversation?.model_settings ?? null,
|
|
11291
9205
|
...availableTools !== undefined ? { tools: availableTools } : {},
|
|
11292
9206
|
...skillSources !== undefined ? { skillSources: [...skillSources] } : {}
|
|
11293
9207
|
};
|
|
@@ -11400,11 +9314,12 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11400
9314
|
name: SDK_AGENT_ORIGIN,
|
|
11401
9315
|
title: "Letta Agent SDK"
|
|
11402
9316
|
},
|
|
11403
|
-
agent_id: runtime.agent_id,
|
|
11404
9317
|
conversation_id: runtime.conversation_id,
|
|
11405
9318
|
recover_approvals: false,
|
|
11406
9319
|
force_device_status: true
|
|
11407
9320
|
};
|
|
9321
|
+
if (runtime.agent_id)
|
|
9322
|
+
command.agent_id = runtime.agent_id;
|
|
11408
9323
|
const mode = mapPermissionMode(options.permissionMode);
|
|
11409
9324
|
if (mode)
|
|
11410
9325
|
command.mode = mode;
|
|
@@ -11475,6 +9390,17 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11475
9390
|
return bridge?.close() ?? Promise.resolve();
|
|
11476
9391
|
}
|
|
11477
9392
|
async resolveRuntime() {
|
|
9393
|
+
if (this.cloudMode.kind === "agent-free") {
|
|
9394
|
+
if (!this.cloudMode.conversationId) {
|
|
9395
|
+
throw new Error("Cloud agent-free sessions require a conversation id.");
|
|
9396
|
+
}
|
|
9397
|
+
return {
|
|
9398
|
+
runtime: {
|
|
9399
|
+
agent_id: null,
|
|
9400
|
+
conversation_id: this.cloudMode.conversationId
|
|
9401
|
+
}
|
|
9402
|
+
};
|
|
9403
|
+
}
|
|
11478
9404
|
let agentId = this.cloudMode.agentId;
|
|
11479
9405
|
let conversationId = this.cloudMode.conversationId;
|
|
11480
9406
|
if (!agentId && conversationId) {
|
|
@@ -11620,6 +9546,9 @@ class CloudEnvironmentSession extends RemoteClientSessionCore {
|
|
|
11620
9546
|
return { connectionId: resolved.connectionId };
|
|
11621
9547
|
}
|
|
11622
9548
|
async createManagedSandboxConnection(runtime) {
|
|
9549
|
+
if (!runtime.agent_id) {
|
|
9550
|
+
throw new Error("Agent-free queries require an explicit Cloud computer; managed sandboxes are agent-scoped.");
|
|
9551
|
+
}
|
|
11623
9552
|
const conversationId = runtime.conversation_id && runtime.conversation_id !== "default" ? runtime.conversation_id : undefined;
|
|
11624
9553
|
const sandbox = await this.createManagedSandbox(runtime.agent_id, conversationId);
|
|
11625
9554
|
this.managedSandbox = sandbox;
|
|
@@ -11922,6 +9851,36 @@ function createConversationsClient(transport) {
|
|
|
11922
9851
|
};
|
|
11923
9852
|
}
|
|
11924
9853
|
|
|
9854
|
+
// src/query.ts
|
|
9855
|
+
function createQuery(createSession, params) {
|
|
9856
|
+
let session = null;
|
|
9857
|
+
let closed = false;
|
|
9858
|
+
const iterator = async function* runQuery() {
|
|
9859
|
+
try {
|
|
9860
|
+
session = await createSession(params.options);
|
|
9861
|
+
if (closed)
|
|
9862
|
+
return;
|
|
9863
|
+
await session.send(params.prompt);
|
|
9864
|
+
yield* session.stream();
|
|
9865
|
+
} finally {
|
|
9866
|
+
closed = true;
|
|
9867
|
+
session?.close();
|
|
9868
|
+
}
|
|
9869
|
+
}();
|
|
9870
|
+
return Object.assign(iterator, {
|
|
9871
|
+
async interrupt() {
|
|
9872
|
+
await session?.abort();
|
|
9873
|
+
},
|
|
9874
|
+
close() {
|
|
9875
|
+
if (closed)
|
|
9876
|
+
return;
|
|
9877
|
+
closed = true;
|
|
9878
|
+
session?.close();
|
|
9879
|
+
iterator.return();
|
|
9880
|
+
}
|
|
9881
|
+
});
|
|
9882
|
+
}
|
|
9883
|
+
|
|
11925
9884
|
// src/validation.ts
|
|
11926
9885
|
var VALID_SKILL_SOURCES = [
|
|
11927
9886
|
"bundled",
|
|
@@ -12147,6 +10106,24 @@ function hasCreateAgentEnvironment(options) {
|
|
|
12147
10106
|
function looksLikeConversationId(id) {
|
|
12148
10107
|
return id.startsWith("conv-") || id.startsWith("local-conv-");
|
|
12149
10108
|
}
|
|
10109
|
+
function agentFreeSessionOptions(options) {
|
|
10110
|
+
const {
|
|
10111
|
+
system: _system,
|
|
10112
|
+
modelSettings: _modelSettings,
|
|
10113
|
+
contextWindowLimit: _contextWindowLimit,
|
|
10114
|
+
...sessionOptions
|
|
10115
|
+
} = options;
|
|
10116
|
+
return sessionOptions;
|
|
10117
|
+
}
|
|
10118
|
+
function validateAgentFreeQueryOptions(options) {
|
|
10119
|
+
if (typeof options.model !== "string" || options.model.length === 0) {
|
|
10120
|
+
throw new Error("query() requires a non-empty model.");
|
|
10121
|
+
}
|
|
10122
|
+
if (typeof options.system !== "string") {
|
|
10123
|
+
throw new Error("query() requires a system prompt.");
|
|
10124
|
+
}
|
|
10125
|
+
validateCreateSessionOptions(agentFreeSessionOptions(options));
|
|
10126
|
+
}
|
|
12150
10127
|
|
|
12151
10128
|
class LettaAgentClientBase {
|
|
12152
10129
|
backend;
|
|
@@ -12221,6 +10198,11 @@ class LettaAgentClientBase {
|
|
|
12221
10198
|
throw new Error("createAgent() does not accept environment. Set a client default or pass environment to resumeSession()/createSession().");
|
|
12222
10199
|
}
|
|
12223
10200
|
validateCreateAgentOptions(options);
|
|
10201
|
+
if (options.skills !== undefined && options.skills.length > 0) {
|
|
10202
|
+
const nodeSupport = this.skillNodeSupport();
|
|
10203
|
+
const skills = await resolveSkillItems(options.skills, nodeSupport?.loadSkillDirectory);
|
|
10204
|
+
options = { ...options, skills };
|
|
10205
|
+
}
|
|
12224
10206
|
if (this.backend === "remote") {
|
|
12225
10207
|
const session = new AppServerSession(this.appServerSessionOptions(), {
|
|
12226
10208
|
kind: "create-agent",
|
|
@@ -12228,10 +10210,13 @@ class LettaAgentClientBase {
|
|
|
12228
10210
|
});
|
|
12229
10211
|
const initMsg = await session.initialize();
|
|
12230
10212
|
session.close();
|
|
10213
|
+
if (!initMsg.agentId) {
|
|
10214
|
+
throw new Error("App Server agent creation did not return an agent id.");
|
|
10215
|
+
}
|
|
12231
10216
|
return initMsg.agentId;
|
|
12232
10217
|
}
|
|
12233
10218
|
if (this.backend === "cloud") {
|
|
12234
|
-
return createCloudAgent(this.getCloudClient(), options);
|
|
10219
|
+
return createCloudAgent(this.getCloudClient(), options, this.skillNodeSupport()?.pushSkillSupportFiles);
|
|
12235
10220
|
}
|
|
12236
10221
|
return this.createLocalAgent(options);
|
|
12237
10222
|
}
|
|
@@ -12304,6 +10289,50 @@ class LettaAgentClientBase {
|
|
|
12304
10289
|
session.close();
|
|
12305
10290
|
}
|
|
12306
10291
|
}
|
|
10292
|
+
query(params) {
|
|
10293
|
+
validateAgentFreeQueryOptions(params.options);
|
|
10294
|
+
return createQuery((options) => this.createAgentFreeSession(options), params);
|
|
10295
|
+
}
|
|
10296
|
+
async createAgentFreeSession(options) {
|
|
10297
|
+
validateAgentFreeQueryOptions(options);
|
|
10298
|
+
const sessionOptions = agentFreeSessionOptions(options);
|
|
10299
|
+
this.assertSessionBackend("query", sessionOptions);
|
|
10300
|
+
if (this.backend === "remote") {
|
|
10301
|
+
return new AppServerSession(this.appServerSessionOptions(), {
|
|
10302
|
+
kind: "agent-free",
|
|
10303
|
+
createConversation: {
|
|
10304
|
+
model: options.model,
|
|
10305
|
+
system: options.system,
|
|
10306
|
+
...options.modelSettings !== undefined ? { modelSettings: options.modelSettings } : {},
|
|
10307
|
+
...options.contextWindowLimit !== undefined ? { contextWindowLimit: options.contextWindowLimit } : {}
|
|
10308
|
+
},
|
|
10309
|
+
options: sessionOptions
|
|
10310
|
+
});
|
|
10311
|
+
}
|
|
10312
|
+
if (this.backend === "cloud") {
|
|
10313
|
+
const computer = options.computer ?? options.environment ?? this.computer;
|
|
10314
|
+
if (computer === undefined) {
|
|
10315
|
+
throw new Error("Cloud query() requires an explicit computer; managed sandboxes are agent-scoped.");
|
|
10316
|
+
}
|
|
10317
|
+
const conversation = await this.getCloudClient().post("/v1/conversations/ephemeral", {
|
|
10318
|
+
body: {
|
|
10319
|
+
model: options.model,
|
|
10320
|
+
system: options.system,
|
|
10321
|
+
...options.modelSettings !== undefined ? { model_settings: options.modelSettings } : {},
|
|
10322
|
+
...options.contextWindowLimit !== undefined ? { context_window_limit: options.contextWindowLimit } : {}
|
|
10323
|
+
}
|
|
10324
|
+
});
|
|
10325
|
+
if (!conversation || typeof conversation !== "object" || typeof conversation.id !== "string") {
|
|
10326
|
+
throw new Error("Cloud ephemeral conversation response did not include a conversation id.");
|
|
10327
|
+
}
|
|
10328
|
+
return new CloudEnvironmentSession(this.cloudOptions(), {
|
|
10329
|
+
kind: "agent-free",
|
|
10330
|
+
conversationId: conversation.id,
|
|
10331
|
+
options: sessionOptions
|
|
10332
|
+
}, this.getCloudClient());
|
|
10333
|
+
}
|
|
10334
|
+
return this.createLocalAgentFreeSession(options, sessionOptions);
|
|
10335
|
+
}
|
|
12307
10336
|
assertSessionBackend(action, options) {
|
|
12308
10337
|
if (options.computer !== undefined && options.environment !== undefined) {
|
|
12309
10338
|
throw new Error(`${action}() cannot specify both computer and deprecated environment.`);
|
|
@@ -12368,9 +10397,15 @@ class LettaAgentClientBase {
|
|
|
12368
10397
|
createLocalAgent(_options) {
|
|
12369
10398
|
throw this.localBackendUnavailableError();
|
|
12370
10399
|
}
|
|
10400
|
+
skillNodeSupport() {
|
|
10401
|
+
return;
|
|
10402
|
+
}
|
|
12371
10403
|
createLocalSession(_agentId, _options) {
|
|
12372
10404
|
throw this.localBackendUnavailableError();
|
|
12373
10405
|
}
|
|
10406
|
+
createLocalAgentFreeSession(_queryOptions, _sessionOptions) {
|
|
10407
|
+
throw this.localBackendUnavailableError();
|
|
10408
|
+
}
|
|
12374
10409
|
resumeLocalSession(_id, _options) {
|
|
12375
10410
|
throw this.localBackendUnavailableError();
|
|
12376
10411
|
}
|
|
@@ -12866,7 +10901,7 @@ function buildLocalAppServerArgs(cliPath, options = {}) {
|
|
|
12866
10901
|
return [
|
|
12867
10902
|
cliPath,
|
|
12868
10903
|
...options.backend !== undefined ? ["--backend", options.backend] : [],
|
|
12869
|
-
"
|
|
10904
|
+
"server",
|
|
12870
10905
|
"--listen",
|
|
12871
10906
|
options.listen ?? DEFAULT_LISTEN_URL
|
|
12872
10907
|
];
|
|
@@ -12989,8 +11024,97 @@ function createLocalAppServerSession(options, mode) {
|
|
|
12989
11024
|
return new AppServerSession(sessionOptions, mode);
|
|
12990
11025
|
}
|
|
12991
11026
|
|
|
11027
|
+
// src/skill-node.ts
|
|
11028
|
+
import { readFile, readdir, stat, mkdtemp, rm, mkdir, writeFile } from "node:fs/promises";
|
|
11029
|
+
import { tmpdir } from "node:os";
|
|
11030
|
+
import { basename as basename3, dirname as dirname5, join as join8, relative, sep } from "node:path";
|
|
11031
|
+
import { execFile } from "node:child_process";
|
|
11032
|
+
import { promisify } from "node:util";
|
|
11033
|
+
var run = promisify(execFile);
|
|
11034
|
+
async function loadSkillDirectory(dirPath) {
|
|
11035
|
+
const dirStat = await stat(dirPath).catch(() => null);
|
|
11036
|
+
if (!dirStat?.isDirectory()) {
|
|
11037
|
+
throw new Error(`Skill path is not a directory: ${dirPath}`);
|
|
11038
|
+
}
|
|
11039
|
+
const skillMd = await readFile(join8(dirPath, "SKILL.md"), "utf-8").catch(() => null);
|
|
11040
|
+
if (skillMd === null) {
|
|
11041
|
+
throw new Error(`Skill directory has no SKILL.md: ${dirPath}`);
|
|
11042
|
+
}
|
|
11043
|
+
const parsed = parseSkillMarkdown(skillMd);
|
|
11044
|
+
const name = parsed.name ?? basename3(dirPath);
|
|
11045
|
+
assertValidSkillName(name);
|
|
11046
|
+
if (!parsed.description) {
|
|
11047
|
+
throw new Error(`SKILL.md in ${dirPath} has no frontmatter description. ` + `The description is the skill's trigger text; it is required.`);
|
|
11048
|
+
}
|
|
11049
|
+
const files = {};
|
|
11050
|
+
const walk = async (current) => {
|
|
11051
|
+
for (const entry of await readdir(current, { withFileTypes: true })) {
|
|
11052
|
+
const full = join8(current, entry.name);
|
|
11053
|
+
if (entry.isDirectory()) {
|
|
11054
|
+
await walk(full);
|
|
11055
|
+
} else if (entry.isFile()) {
|
|
11056
|
+
const rel = relative(dirPath, full).split(sep).join("/");
|
|
11057
|
+
if (rel === "SKILL.md")
|
|
11058
|
+
continue;
|
|
11059
|
+
files[rel] = new Uint8Array(await readFile(full));
|
|
11060
|
+
}
|
|
11061
|
+
}
|
|
11062
|
+
};
|
|
11063
|
+
await walk(dirPath);
|
|
11064
|
+
return {
|
|
11065
|
+
name,
|
|
11066
|
+
description: parsed.description,
|
|
11067
|
+
instructions: parsed.body.replace(/^\s+/, ""),
|
|
11068
|
+
...Object.keys(files).length > 0 ? { files } : {}
|
|
11069
|
+
};
|
|
11070
|
+
}
|
|
11071
|
+
async function pushSkillSupportFiles(target, skills) {
|
|
11072
|
+
const entries = skillSupportFileEntries(skills);
|
|
11073
|
+
if (entries.length === 0)
|
|
11074
|
+
return;
|
|
11075
|
+
const base = target.apiBaseUrl.replace(/\/+$/, "");
|
|
11076
|
+
const remote = `${base}/v1/git/${target.agentId}/state.git`;
|
|
11077
|
+
const authHeader = `Authorization: Basic ${Buffer.from(`x:${target.apiKey}`).toString("base64")}`;
|
|
11078
|
+
const gitEnv = {
|
|
11079
|
+
...process.env,
|
|
11080
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
11081
|
+
GIT_AUTHOR_NAME: "letta-agent-sdk",
|
|
11082
|
+
GIT_AUTHOR_EMAIL: "sdk@letta.com",
|
|
11083
|
+
GIT_COMMITTER_NAME: "letta-agent-sdk",
|
|
11084
|
+
GIT_COMMITTER_EMAIL: "sdk@letta.com"
|
|
11085
|
+
};
|
|
11086
|
+
const git = (args, cwd) => run("git", ["-c", `http.extraHeader=${authHeader}`, ...args], {
|
|
11087
|
+
env: gitEnv,
|
|
11088
|
+
...cwd ? { cwd } : {}
|
|
11089
|
+
});
|
|
11090
|
+
const work = await mkdtemp(join8(tmpdir(), "letta-skill-seed-"));
|
|
11091
|
+
try {
|
|
11092
|
+
await git(["clone", "--quiet", "--depth", "1", remote, work]);
|
|
11093
|
+
for (const entry of entries) {
|
|
11094
|
+
const filePath = join8(work, entry.path);
|
|
11095
|
+
await mkdir(dirname5(filePath), { recursive: true });
|
|
11096
|
+
await writeFile(filePath, entry.data);
|
|
11097
|
+
}
|
|
11098
|
+
await git(["add", "-A"], work);
|
|
11099
|
+
await git(["commit", "--quiet", "-m", "feat: seed skill support files"], work);
|
|
11100
|
+
try {
|
|
11101
|
+
await git(["push", "--quiet", "origin", "HEAD"], work);
|
|
11102
|
+
} catch {
|
|
11103
|
+
await git(["pull", "--quiet", "--rebase", "origin", "HEAD"], work);
|
|
11104
|
+
await git(["push", "--quiet", "origin", "HEAD"], work);
|
|
11105
|
+
}
|
|
11106
|
+
} catch (error) {
|
|
11107
|
+
throw new Error(`Agent ${target.agentId} was created, but pushing skill support files ` + `to its memory repo failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
11108
|
+
} finally {
|
|
11109
|
+
await rm(work, { recursive: true, force: true });
|
|
11110
|
+
}
|
|
11111
|
+
}
|
|
11112
|
+
|
|
12992
11113
|
// src/client.ts
|
|
12993
11114
|
class LettaAgentClient extends LettaAgentClientBase {
|
|
11115
|
+
skillNodeSupport() {
|
|
11116
|
+
return { loadSkillDirectory, pushSkillSupportFiles };
|
|
11117
|
+
}
|
|
12994
11118
|
createLocalManagementTransport() {
|
|
12995
11119
|
const localOptions = this.options.appServer;
|
|
12996
11120
|
return new AppServerManagementTransport({
|
|
@@ -13013,6 +11137,9 @@ class LettaAgentClient extends LettaAgentClientBase {
|
|
|
13013
11137
|
});
|
|
13014
11138
|
const initMsg = await session.initialize();
|
|
13015
11139
|
session.close();
|
|
11140
|
+
if (!initMsg.agentId) {
|
|
11141
|
+
throw new Error("Local App Server agent creation did not return an agent id.");
|
|
11142
|
+
}
|
|
13016
11143
|
return initMsg.agentId;
|
|
13017
11144
|
}
|
|
13018
11145
|
createLocalSession(agentId, options) {
|
|
@@ -13024,6 +11151,22 @@ class LettaAgentClient extends LettaAgentClientBase {
|
|
|
13024
11151
|
options
|
|
13025
11152
|
});
|
|
13026
11153
|
}
|
|
11154
|
+
createLocalAgentFreeSession(queryOptions, sessionOptions) {
|
|
11155
|
+
const localOptions = this.options;
|
|
11156
|
+
if (localOptions.appServer?.url === undefined && (localOptions.appServer?.harnessBackend ?? "local") === "local") {
|
|
11157
|
+
throw new Error('query() requires the API-backed App Server. Set appServer.harnessBackend to "api" or connect to an API-backed remote App Server.');
|
|
11158
|
+
}
|
|
11159
|
+
return createLocalAppServerSession(localOptions.appServer, {
|
|
11160
|
+
kind: "agent-free",
|
|
11161
|
+
createConversation: {
|
|
11162
|
+
model: queryOptions.model,
|
|
11163
|
+
system: queryOptions.system,
|
|
11164
|
+
...queryOptions.modelSettings !== undefined ? { modelSettings: queryOptions.modelSettings } : {},
|
|
11165
|
+
...queryOptions.contextWindowLimit !== undefined ? { contextWindowLimit: queryOptions.contextWindowLimit } : {}
|
|
11166
|
+
},
|
|
11167
|
+
options: sessionOptions
|
|
11168
|
+
});
|
|
11169
|
+
}
|
|
13027
11170
|
resumeLocalSession(id, options) {
|
|
13028
11171
|
const localOptions = this.options;
|
|
13029
11172
|
if (looksLikeConversationId2(id)) {
|
|
@@ -13093,7 +11236,7 @@ var __export = (target, all) => {
|
|
|
13093
11236
|
set: __exportSetter.bind(all, name)
|
|
13094
11237
|
});
|
|
13095
11238
|
};
|
|
13096
|
-
var
|
|
11239
|
+
var __require3 = /* @__PURE__ */ createRequire3(import.meta.url);
|
|
13097
11240
|
var require_code = __commonJS((exports) => {
|
|
13098
11241
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13099
11242
|
exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = undefined;
|
|
@@ -16550,49 +14693,49 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
16550
14693
|
schemelessOptions.skipEscape = true;
|
|
16551
14694
|
return serialize(resolved, schemelessOptions);
|
|
16552
14695
|
}
|
|
16553
|
-
function resolveComponent(base,
|
|
14696
|
+
function resolveComponent(base, relative2, options, skipNormalization) {
|
|
16554
14697
|
const target = {};
|
|
16555
14698
|
if (!skipNormalization) {
|
|
16556
14699
|
base = parse5(serialize(base, options), options);
|
|
16557
|
-
|
|
14700
|
+
relative2 = parse5(serialize(relative2, options), options);
|
|
16558
14701
|
}
|
|
16559
14702
|
options = options || {};
|
|
16560
|
-
if (!options.tolerant &&
|
|
16561
|
-
target.scheme =
|
|
16562
|
-
target.userinfo =
|
|
16563
|
-
target.host =
|
|
16564
|
-
target.port =
|
|
16565
|
-
target.path = removeDotSegments(
|
|
16566
|
-
target.query =
|
|
14703
|
+
if (!options.tolerant && relative2.scheme) {
|
|
14704
|
+
target.scheme = relative2.scheme;
|
|
14705
|
+
target.userinfo = relative2.userinfo;
|
|
14706
|
+
target.host = relative2.host;
|
|
14707
|
+
target.port = relative2.port;
|
|
14708
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
14709
|
+
target.query = relative2.query;
|
|
16567
14710
|
} else {
|
|
16568
|
-
if (
|
|
16569
|
-
target.userinfo =
|
|
16570
|
-
target.host =
|
|
16571
|
-
target.port =
|
|
16572
|
-
target.path = removeDotSegments(
|
|
16573
|
-
target.query =
|
|
14711
|
+
if (relative2.userinfo !== undefined || relative2.host !== undefined || relative2.port !== undefined) {
|
|
14712
|
+
target.userinfo = relative2.userinfo;
|
|
14713
|
+
target.host = relative2.host;
|
|
14714
|
+
target.port = relative2.port;
|
|
14715
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
14716
|
+
target.query = relative2.query;
|
|
16574
14717
|
} else {
|
|
16575
|
-
if (!
|
|
14718
|
+
if (!relative2.path) {
|
|
16576
14719
|
target.path = base.path;
|
|
16577
|
-
if (
|
|
16578
|
-
target.query =
|
|
14720
|
+
if (relative2.query !== undefined) {
|
|
14721
|
+
target.query = relative2.query;
|
|
16579
14722
|
} else {
|
|
16580
14723
|
target.query = base.query;
|
|
16581
14724
|
}
|
|
16582
14725
|
} else {
|
|
16583
|
-
if (
|
|
16584
|
-
target.path = removeDotSegments(
|
|
14726
|
+
if (relative2.path[0] === "/") {
|
|
14727
|
+
target.path = removeDotSegments(relative2.path);
|
|
16585
14728
|
} else {
|
|
16586
14729
|
if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {
|
|
16587
|
-
target.path = "/" +
|
|
14730
|
+
target.path = "/" + relative2.path;
|
|
16588
14731
|
} else if (!base.path) {
|
|
16589
|
-
target.path =
|
|
14732
|
+
target.path = relative2.path;
|
|
16590
14733
|
} else {
|
|
16591
|
-
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) +
|
|
14734
|
+
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative2.path;
|
|
16592
14735
|
}
|
|
16593
14736
|
target.path = removeDotSegments(target.path);
|
|
16594
14737
|
}
|
|
16595
|
-
target.query =
|
|
14738
|
+
target.query = relative2.query;
|
|
16596
14739
|
}
|
|
16597
14740
|
target.userinfo = base.userinfo;
|
|
16598
14741
|
target.host = base.host;
|
|
@@ -16600,7 +14743,7 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
16600
14743
|
}
|
|
16601
14744
|
target.scheme = base.scheme;
|
|
16602
14745
|
}
|
|
16603
|
-
target.fragment =
|
|
14746
|
+
target.fragment = relative2.fragment;
|
|
16604
14747
|
return target;
|
|
16605
14748
|
}
|
|
16606
14749
|
function equal(uriA, uriB, options) {
|
|
@@ -19520,7 +17663,7 @@ var require_dist = __commonJS((exports, module) => {
|
|
|
19520
17663
|
var require_windows = __commonJS((exports, module) => {
|
|
19521
17664
|
module.exports = isexe;
|
|
19522
17665
|
isexe.sync = sync;
|
|
19523
|
-
var fs =
|
|
17666
|
+
var fs = __require3("fs");
|
|
19524
17667
|
function checkPathExt(path2, options) {
|
|
19525
17668
|
var pathext = options.pathExt !== undefined ? options.pathExt : process.env.PATHEXT;
|
|
19526
17669
|
if (!pathext) {
|
|
@@ -19538,15 +17681,15 @@ var require_windows = __commonJS((exports, module) => {
|
|
|
19538
17681
|
}
|
|
19539
17682
|
return false;
|
|
19540
17683
|
}
|
|
19541
|
-
function checkStat(
|
|
19542
|
-
if (!
|
|
17684
|
+
function checkStat(stat2, path2, options) {
|
|
17685
|
+
if (!stat2.isSymbolicLink() && !stat2.isFile()) {
|
|
19543
17686
|
return false;
|
|
19544
17687
|
}
|
|
19545
17688
|
return checkPathExt(path2, options);
|
|
19546
17689
|
}
|
|
19547
17690
|
function isexe(path2, options, cb) {
|
|
19548
|
-
fs.stat(path2, function(er,
|
|
19549
|
-
cb(er, er ? false : checkStat(
|
|
17691
|
+
fs.stat(path2, function(er, stat2) {
|
|
17692
|
+
cb(er, er ? false : checkStat(stat2, path2, options));
|
|
19550
17693
|
});
|
|
19551
17694
|
}
|
|
19552
17695
|
function sync(path2, options) {
|
|
@@ -19556,22 +17699,22 @@ var require_windows = __commonJS((exports, module) => {
|
|
|
19556
17699
|
var require_mode = __commonJS((exports, module) => {
|
|
19557
17700
|
module.exports = isexe;
|
|
19558
17701
|
isexe.sync = sync;
|
|
19559
|
-
var fs =
|
|
17702
|
+
var fs = __require3("fs");
|
|
19560
17703
|
function isexe(path2, options, cb) {
|
|
19561
|
-
fs.stat(path2, function(er,
|
|
19562
|
-
cb(er, er ? false : checkStat(
|
|
17704
|
+
fs.stat(path2, function(er, stat2) {
|
|
17705
|
+
cb(er, er ? false : checkStat(stat2, options));
|
|
19563
17706
|
});
|
|
19564
17707
|
}
|
|
19565
17708
|
function sync(path2, options) {
|
|
19566
17709
|
return checkStat(fs.statSync(path2), options);
|
|
19567
17710
|
}
|
|
19568
|
-
function checkStat(
|
|
19569
|
-
return
|
|
17711
|
+
function checkStat(stat2, options) {
|
|
17712
|
+
return stat2.isFile() && checkMode(stat2, options);
|
|
19570
17713
|
}
|
|
19571
|
-
function checkMode(
|
|
19572
|
-
var mod =
|
|
19573
|
-
var uid =
|
|
19574
|
-
var gid =
|
|
17714
|
+
function checkMode(stat2, options) {
|
|
17715
|
+
var mod = stat2.mode;
|
|
17716
|
+
var uid = stat2.uid;
|
|
17717
|
+
var gid = stat2.gid;
|
|
19575
17718
|
var myUid = options.uid !== undefined ? options.uid : process.getuid && process.getuid();
|
|
19576
17719
|
var myGid = options.gid !== undefined ? options.gid : process.getgid && process.getgid();
|
|
19577
17720
|
var u = parseInt("100", 8);
|
|
@@ -19583,7 +17726,7 @@ var require_mode = __commonJS((exports, module) => {
|
|
|
19583
17726
|
}
|
|
19584
17727
|
});
|
|
19585
17728
|
var require_isexe = __commonJS((exports, module) => {
|
|
19586
|
-
var fs =
|
|
17729
|
+
var fs = __require3("fs");
|
|
19587
17730
|
var core2;
|
|
19588
17731
|
if (process.platform === "win32" || global.TESTING_WINDOWS) {
|
|
19589
17732
|
core2 = require_windows();
|
|
@@ -19635,7 +17778,7 @@ var require_isexe = __commonJS((exports, module) => {
|
|
|
19635
17778
|
});
|
|
19636
17779
|
var require_which = __commonJS((exports, module) => {
|
|
19637
17780
|
var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
|
|
19638
|
-
var path2 =
|
|
17781
|
+
var path2 = __require3("path");
|
|
19639
17782
|
var COLON = isWindows ? ";" : ":";
|
|
19640
17783
|
var isexe = require_isexe();
|
|
19641
17784
|
var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
|
|
@@ -19735,7 +17878,7 @@ var require_path_key = __commonJS((exports, module) => {
|
|
|
19735
17878
|
module.exports.default = pathKey;
|
|
19736
17879
|
});
|
|
19737
17880
|
var require_resolveCommand = __commonJS((exports, module) => {
|
|
19738
|
-
var path2 =
|
|
17881
|
+
var path2 = __require3("path");
|
|
19739
17882
|
var which = require_which();
|
|
19740
17883
|
var getPathKey = require_path_key();
|
|
19741
17884
|
function resolveCommandAttempt(parsed, withoutPathExt) {
|
|
@@ -19808,7 +17951,7 @@ var require_shebang_command = __commonJS((exports, module) => {
|
|
|
19808
17951
|
};
|
|
19809
17952
|
});
|
|
19810
17953
|
var require_readShebang = __commonJS((exports, module) => {
|
|
19811
|
-
var fs =
|
|
17954
|
+
var fs = __require3("fs");
|
|
19812
17955
|
var shebangCommand = require_shebang_command();
|
|
19813
17956
|
function readShebang(command) {
|
|
19814
17957
|
const size = 150;
|
|
@@ -19824,7 +17967,7 @@ var require_readShebang = __commonJS((exports, module) => {
|
|
|
19824
17967
|
module.exports = readShebang;
|
|
19825
17968
|
});
|
|
19826
17969
|
var require_parse = __commonJS((exports, module) => {
|
|
19827
|
-
var path2 =
|
|
17970
|
+
var path2 = __require3("path");
|
|
19828
17971
|
var resolveCommand = require_resolveCommand();
|
|
19829
17972
|
var escape2 = require_escape();
|
|
19830
17973
|
var readShebang = require_readShebang();
|
|
@@ -19926,7 +18069,7 @@ var require_enoent = __commonJS((exports, module) => {
|
|
|
19926
18069
|
};
|
|
19927
18070
|
});
|
|
19928
18071
|
var require_cross_spawn = __commonJS((exports, module) => {
|
|
19929
|
-
var cp =
|
|
18072
|
+
var cp = __require3("child_process");
|
|
19930
18073
|
var parse5 = require_parse();
|
|
19931
18074
|
var enoent = require_enoent();
|
|
19932
18075
|
function spawn2(command, args, options) {
|
|
@@ -29672,7 +27815,7 @@ class StreamableHTTPClientTransport {
|
|
|
29672
27815
|
}
|
|
29673
27816
|
var DEFAULT_CLIENT_INFO = {
|
|
29674
27817
|
name: "letta-code",
|
|
29675
|
-
version: "0.
|
|
27818
|
+
version: "0.31.7"
|
|
29676
27819
|
};
|
|
29677
27820
|
async function connectMcpServer(config2, options = {}) {
|
|
29678
27821
|
let client = new Client(options.clientInfo ?? DEFAULT_CLIENT_INFO);
|
|
@@ -30539,6 +28682,12 @@ async function prompt(message, agentId, options = {}) {
|
|
|
30539
28682
|
session.close();
|
|
30540
28683
|
}
|
|
30541
28684
|
}
|
|
28685
|
+
function query(params) {
|
|
28686
|
+
return new LettaAgentClient({
|
|
28687
|
+
backend: "local",
|
|
28688
|
+
appServer: { harnessBackend: "api" }
|
|
28689
|
+
}).query(params);
|
|
28690
|
+
}
|
|
30542
28691
|
async function listMessagesDirect(agentId, options = {}) {
|
|
30543
28692
|
const session = new LettaAgentClient().resumeSession(agentId, {
|
|
30544
28693
|
permissionMode: "unrestricted"
|
|
@@ -30589,6 +28738,7 @@ export {
|
|
|
30589
28738
|
readStringArrayParam,
|
|
30590
28739
|
readNumberParam,
|
|
30591
28740
|
readBooleanParam,
|
|
28741
|
+
query,
|
|
30592
28742
|
prompt,
|
|
30593
28743
|
listMessagesDirect,
|
|
30594
28744
|
jsonResult,
|
|
@@ -30606,4 +28756,4 @@ export {
|
|
|
30606
28756
|
CloudManagedSandboxExpiredError
|
|
30607
28757
|
};
|
|
30608
28758
|
|
|
30609
|
-
//# debugId=
|
|
28759
|
+
//# debugId=2918106B6A681DDF64756E2164756E21
|