mirror of
https://github.com/vercel/eve.git
synced 2026-09-20 05:35:39 +08:00
Default new agents to GPT-5.6 Luna Fast (#2683)
Co-authored-by: vercel-gh-bot-2[bot] <282331341+vercel-gh-bot-2[bot]@users.noreply.github.com> Co-authored-by: AndrewBarba <1316152+AndrewBarba@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
3e95a2706c
commit
c77faa55eb
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"eve": patch
|
||||
---
|
||||
|
||||
Use `openai/gpt-5.6-luna-fast` as the default model for config-less agents, new projects, and the setup model picker.
|
||||
@@ -21,9 +21,7 @@ For a static AI Gateway model ID, you can make the same source change from the
|
||||
project root with `eve set --model anthropic/claude-opus-4.8` or from the local
|
||||
dev TUI with `/model anthropic/claude-opus-4.8`.
|
||||
|
||||
The root `agent.ts` can be omitted when no runtime config is needed. eve then selects its default `agent.ts` source at the same slot, configured with `zai/glm-5.2`; authoring the file replaces that source. GLM 5.2 does not support image input; choose a
|
||||
vision-capable model or [route image inputs to Gemini
|
||||
Flash](./guides/dynamic-capabilities#route-image-inputs-to-a-vision-model).
|
||||
The root `agent.ts` can be omitted when no runtime config is needed. eve then selects its default `agent.ts` source at the same slot, configured with `openai/gpt-5.6-luna-fast`; authoring the file replaces that source.
|
||||
When `agent.ts` is present, `model` is required.
|
||||
|
||||
A config that selects a static Gateway model is compile-only. A config that contains a dynamic model or a direct-provider `LanguageModel` remains a runtime entry because eve must resolve that authored value while the agent runs. See [Authored module lifecycle](./reference/typescript-api#authored-module-lifecycle).
|
||||
|
||||
@@ -54,7 +54,7 @@ After scaffolding, a human terminal usually continues into `eve dev`. If a codin
|
||||
|
||||
| Flag | Type | Default | Description |
|
||||
| ---------------------- | ------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `--model <model>` | string | `zai/glm-5.2` | Set the root agent's AI Gateway model ID. |
|
||||
| `--model <model>` | string | `openai/gpt-5.6-luna-fast` | Set the root agent's AI Gateway model ID. |
|
||||
| `--reasoning <effort>` | enum | provider default | Set reasoning to `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. `provider-default` leaves the field unauthored. |
|
||||
| `--channel-web-nextjs` | flag | off | Add the Web Chat app (Next.js). Not for existing projects — run `eve add channel/web` there instead. |
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ describe("initAgentInstructions", () => {
|
||||
describe("initAgentReadySummary", () => {
|
||||
it("reports the model and generated instructions path", () => {
|
||||
expect(stripAnsi(initAgentReadySummary(undefined, "/app"))).toBe(
|
||||
"✓ Model zai/glm-5.2 (eve default)\n✓ Instructions /app/agent/instructions.md",
|
||||
"✓ Model openai/gpt-5.6-luna-fast (eve default)\n✓ Instructions /app/agent/instructions.md",
|
||||
);
|
||||
expect(stripAnsi(initAgentReadySummary("openai/gpt-5.5", "/app"))).toContain(
|
||||
"✓ Model openai/gpt-5.5\n",
|
||||
|
||||
@@ -55,10 +55,10 @@ const CATALOG: GatewayCatalogModel[] = [
|
||||
tags: ["web-search"],
|
||||
},
|
||||
{
|
||||
id: "zai/glm-5.2",
|
||||
name: "GLM 5.2",
|
||||
id: "openai/gpt-5.6-luna-fast",
|
||||
name: "GPT-5.6 Luna Fast",
|
||||
type: "language",
|
||||
owned_by: "zai",
|
||||
owned_by: "openai",
|
||||
released: 100,
|
||||
tags: ["reasoning"],
|
||||
},
|
||||
@@ -110,14 +110,14 @@ describe("modelOptionsFromCatalog", () => {
|
||||
const options = modelOptionsFromCatalog(CATALOG);
|
||||
|
||||
expect(options.map((option) => option.value)).toEqual([
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
"zai/glm-4.6",
|
||||
"openai/gpt-5-mini",
|
||||
]);
|
||||
expect(options.filter((option) => option.featured).map((o) => o.value)).toEqual([
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
]);
|
||||
expect(options[0]?.hint).toBe("Z.AI");
|
||||
expect(options[0]?.hint).toBe("OpenAI");
|
||||
});
|
||||
|
||||
it("falls back to the static shortlist without a catalog or matches", () => {
|
||||
@@ -149,7 +149,7 @@ describe("selectModel box", () => {
|
||||
let captured: SingleSelectOptions<PrompterValue> | undefined;
|
||||
const { prompter } = createSelectPrompter((opts) => {
|
||||
captured = opts;
|
||||
return "zai/glm-5.2";
|
||||
return "openai/gpt-5.6-luna-fast";
|
||||
});
|
||||
const box = selectModel({ asker: interactiveAsker(prompter), deps: catalogDeps() });
|
||||
|
||||
@@ -157,16 +157,16 @@ describe("selectModel box", () => {
|
||||
|
||||
expect(result.kind).toBe("done");
|
||||
if (result.kind !== "done") return;
|
||||
expect(result.state.modelId).toBe("zai/glm-5.2");
|
||||
expect(result.state.modelId).toBe("openai/gpt-5.6-luna-fast");
|
||||
expect(captured?.search).toBe(true);
|
||||
// The featured default remains first; the rest are newest release first.
|
||||
expect(captured?.options.map((option) => option.value)).toEqual([
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
"zai/glm-4.6",
|
||||
"openai/gpt-5-mini",
|
||||
]);
|
||||
// Cursor defaults to the top catalog entry when no default is configured.
|
||||
expect(captured?.initialValue).toBe("zai/glm-5.2");
|
||||
expect(captured?.initialValue).toBe("openai/gpt-5.6-luna-fast");
|
||||
});
|
||||
|
||||
it("orders the curated shortlist first, marks it featured, and pre-selects the default", async () => {
|
||||
@@ -194,7 +194,7 @@ describe("selectModel box", () => {
|
||||
expect(result.kind).toBe("done");
|
||||
if (result.kind !== "done") return;
|
||||
expect(captured?.options.map((option) => option.value)).toEqual([
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
"anthropic/claude-opus-4.8",
|
||||
"zai/glm-4.6",
|
||||
"openai/gpt-5-mini",
|
||||
@@ -202,7 +202,7 @@ describe("selectModel box", () => {
|
||||
// Only the curated entries are featured: the picker's default view shows
|
||||
// them alone, and scrolling or search surfaces the rest of the catalog.
|
||||
expect(captured?.options.filter((option) => option.featured).map((o) => o.value)).toEqual([
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
"anthropic/claude-opus-4.8",
|
||||
]);
|
||||
expect(captured?.initialValue).toBe(DEFAULT_AGENT_MODEL_ID);
|
||||
|
||||
@@ -55,7 +55,7 @@ const FEATURED_MODEL_IDS: readonly string[] = [
|
||||
];
|
||||
|
||||
const FALLBACK_MODELS: SelectOption<string>[] = [
|
||||
modelOption(DEFAULT_AGENT_MODEL_ID, "GLM 5.2", "Z.AI"),
|
||||
modelOption(DEFAULT_AGENT_MODEL_ID, "GPT-5.6 Luna Fast", "OpenAI"),
|
||||
modelOption("anthropic/claude-opus-4.8", "Claude Opus 4.8", "Anthropic"),
|
||||
modelOption("openai/gpt-5.5", "GPT-5.5", "OpenAI"),
|
||||
modelOption("google/gemini-3.5", "Gemini 3.5", "Google", false),
|
||||
|
||||
@@ -23,10 +23,10 @@ const APP_ROOT = "/app/my-agent";
|
||||
|
||||
const CATALOG: GatewayCatalogModel[] = [
|
||||
{
|
||||
id: "zai/glm-5.2",
|
||||
name: "GLM 5.2",
|
||||
id: "openai/gpt-5.6-luna-fast",
|
||||
name: "GPT-5.6 Luna Fast",
|
||||
type: "language",
|
||||
owned_by: "zai",
|
||||
owned_by: "openai",
|
||||
tags: ["reasoning"],
|
||||
},
|
||||
{
|
||||
@@ -433,7 +433,7 @@ describe("runModelFlow", () => {
|
||||
expect(captured?.model).toEqual({
|
||||
kind: "pick",
|
||||
options: expect.arrayContaining([
|
||||
expect.objectContaining({ value: "zai/glm-5.2", featured: true }),
|
||||
expect.objectContaining({ value: "openai/gpt-5.6-luna-fast", featured: true }),
|
||||
expect.objectContaining({ value: "anthropic/claude-sonnet-5" }),
|
||||
expect.objectContaining({ value: "test/no-frills" }),
|
||||
]),
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
* Model used when an agent does not declare one, baked in by `eve init`, and
|
||||
* pre-selected in the setup model picker.
|
||||
*/
|
||||
export const DEFAULT_AGENT_MODEL_ID = "zai/glm-5.2";
|
||||
export const DEFAULT_AGENT_MODEL_ID = "openai/gpt-5.6-luna-fast";
|
||||
|
||||
@@ -47,7 +47,7 @@ const ROOT_TYPE_DEFINITIONS = fileURLToPath(
|
||||
const TSC_BIN_PATH = fileURLToPath(
|
||||
new URL("../../../../node_modules/typescript/bin/tsc", import.meta.url),
|
||||
);
|
||||
const DEFAULT_AGENT_MODEL_ID = "zai/glm-5.2";
|
||||
const DEFAULT_AGENT_MODEL_ID = "openai/gpt-5.6-luna-fast";
|
||||
|
||||
function applicationOwnedEntries<TEntry extends { readonly sourceId: string }>(
|
||||
manifest: CompiledAgentManifest,
|
||||
|
||||
@@ -69,6 +69,7 @@ function collectGatewayModelIds(rootPaths: readonly string[]): ReadonlySet<strin
|
||||
"anthropic/claude-opus-4.7",
|
||||
"anthropic/claude-sonnet-5",
|
||||
"zai/glm-5.2",
|
||||
"openai/gpt-5.6-luna-fast",
|
||||
"openai/gpt-5.4",
|
||||
"openai/gpt-5.4-mini",
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user