codeep 2.14.0 → 2.15.0
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 +35 -24
- package/dist/acp/commands.js +22 -1
- package/dist/acp/server.js +13 -2
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.js +2 -2
- package/dist/config/providers.js +15 -10
- package/dist/renderer/App.d.ts +0 -30
- package/dist/renderer/App.js +149 -659
- package/dist/renderer/agentExecution.d.ts +1 -0
- package/dist/renderer/agentExecution.js +3 -2
- package/dist/renderer/commands/helpers.d.ts +63 -0
- package/dist/renderer/commands/helpers.js +108 -0
- package/dist/renderer/commands/registry.js +5 -0
- package/dist/renderer/commands.d.ts +4 -0
- package/dist/renderer/commands.js +179 -63
- package/dist/renderer/components/ActionFormatting.d.ts +17 -0
- package/dist/renderer/components/ActionFormatting.js +67 -0
- package/dist/renderer/components/Autocomplete.d.ts +33 -0
- package/dist/renderer/components/Autocomplete.js +40 -0
- package/dist/renderer/components/Intro.d.ts +9 -0
- package/dist/renderer/components/Intro.js +5 -15
- package/dist/renderer/components/MessageFormatter.d.ts +96 -0
- package/dist/renderer/components/MessageFormatter.js +375 -0
- package/dist/renderer/components/Permission.d.ts +4 -0
- package/dist/renderer/components/Permission.js +1 -1
- package/dist/renderer/components/Status.d.ts +4 -0
- package/dist/renderer/components/Status.js +2 -3
- package/dist/renderer/components/WelcomeFormatter.d.ts +19 -0
- package/dist/renderer/components/WelcomeFormatter.js +79 -0
- package/dist/renderer/components/uiConstants.d.ts +8 -0
- package/dist/renderer/components/uiConstants.js +24 -0
- package/dist/renderer/inputParsing.d.ts +22 -0
- package/dist/renderer/inputParsing.js +28 -0
- package/dist/renderer/layout.d.ts +215 -0
- package/dist/renderer/layout.js +326 -0
- package/dist/renderer/main.d.ts +2 -1
- package/dist/renderer/main.js +45 -10
- package/dist/renderer/ollamaHint.d.ts +12 -0
- package/dist/renderer/ollamaHint.js +29 -0
- package/dist/utils/agentChat.js +23 -1
- package/dist/utils/codeepCloud.d.ts +54 -0
- package/dist/utils/codeepCloud.js +95 -0
- package/dist/utils/export.d.ts +12 -0
- package/dist/utils/export.js +3 -3
- package/dist/utils/hooks.d.ts +26 -0
- package/dist/utils/hooks.js +69 -1
- package/dist/utils/keychain.js +45 -29
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/mcpConfig.d.ts +26 -0
- package/dist/utils/mcpConfig.js +109 -4
- package/dist/utils/skillBundles.d.ts +14 -0
- package/dist/utils/skillBundles.js +3 -3
- package/dist/utils/skillBundlesCloud.d.ts +7 -0
- package/dist/utils/skillBundlesCloud.js +1 -1
- package/dist/utils/tokenTracker.js +12 -2
- package/dist/utils/toolParsing.d.ts +11 -0
- package/dist/utils/toolParsing.js +6 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,27 +23,14 @@
|
|
|
23
23
|
<a href="https://github.com/VladoIvankovic/Codeep"><img src="https://img.shields.io/github/stars/VladoIvankovic/Codeep?style=social" alt="GitHub stars"></a>
|
|
24
24
|
</p>
|
|
25
25
|
|
|
26
|
-
## Upgrading
|
|
26
|
+
## Upgrading
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
1. **MCP `clientInfo` version bumped from `1.4.0` → `2.0.0`.** If you
|
|
35
|
-
maintain a custom MCP server that allowlists Codeep by version
|
|
36
|
-
string, update your check.
|
|
37
|
-
2. **`McpServer` protocol shape** in ACP now has `command?`, `args?`,
|
|
38
|
-
`url?`, `headers?` (transport-agnostic for stdio + Streamable HTTP).
|
|
39
|
-
The old required-`command` shape is still accepted — parser handles
|
|
40
|
-
both — but new clients should emit the optional shape.
|
|
41
|
-
|
|
42
|
-
See [CHANGELOG.md](CHANGELOG.md#200--2026-05-18) for the full list of
|
|
43
|
-
additions (full MCP support, OpenRouter provider with authoritative
|
|
44
|
-
per-call cost, Claude-Code-compatible skill bundles + web marketplace,
|
|
45
|
-
custom slash commands, lifecycle hooks, checkpoints, `/cost`,
|
|
46
|
-
`/compact`, and more).
|
|
28
|
+
Running `npm install -g codeep@latest` picks up the new version — config,
|
|
29
|
+
saved profiles, project memory, MCP servers, and skill bundles all carry
|
|
30
|
+
over. Breaking changes (if any) are listed at the top of each release in
|
|
31
|
+
[CHANGELOG.md](CHANGELOG.md); the last breaking change was
|
|
32
|
+
[2.0.0](CHANGELOG.md#200--2026-05-18) (MCP `clientInfo` version bump,
|
|
33
|
+
transport-agnostic `McpServer` shape).
|
|
47
34
|
|
|
48
35
|
## Features
|
|
49
36
|
|
|
@@ -77,6 +64,7 @@ When started in a project directory, Codeep automatically:
|
|
|
77
64
|
- **AI session titles** - Sessions auto-title themselves with an LLM one-liner ("OAuth2 migration for auth module") instead of a truncated first message. This makes one small background API call per session; turn it off with the `autoSessionTitle` setting (`/settings`) if you prefer zero unsolicited calls
|
|
78
65
|
- **Search current session** - Find text in the open conversation with `/search`
|
|
79
66
|
- **Cross-session recall** - `/recall <query>` searches across **all** saved sessions, ranked by relevance + recency. Add `--resume` to load the top match, or `--summarize` for an LLM recap of what you accomplished across matches
|
|
67
|
+
- **Cross-device resume (`/cloud`)** - Sessions you run on one device (CLI, Mac app, VS Code) sync to `codeep.dev`. `/cloud` lists them and pulls the selected one back locally, so you can start a session on your desktop and continue on your laptop. Run `codeep account` once to link your devices; scoped to the current project when one is open.
|
|
80
68
|
- **Export** - Save to Markdown, JSON, or plain text
|
|
81
69
|
- `/cost` - Per-session token usage and estimated cost (per provider/model)
|
|
82
70
|
- `/compact [keepN]` - AI-summarize older messages to free up context (keeps last N, default 4)
|
|
@@ -358,10 +346,11 @@ You write safe, reversible DB migrations…
|
|
|
358
346
|
**Guaranteed review:** enable **Agent Auto-Review** in `/settings` (`agentAutoReview`) and after any run that changes files, Codeep automatically delegates to the `reviewer` and appends its findings — a review stage that always happens. Off by default.
|
|
359
347
|
|
|
360
348
|
### Project Rules
|
|
361
|
-
Define project-specific instructions that the AI always follows. Create a rules file in your project root:
|
|
349
|
+
Define project-specific instructions that the AI always follows. Create a rules file in your project root (first non-empty file wins):
|
|
362
350
|
|
|
363
351
|
- **`.codeep/rules.md`** - Primary location (inside `.codeep/` folder)
|
|
364
352
|
- **`CODEEP.md`** - Alternative location (project root, similar to `CLAUDE.md` or `.cursorrules`)
|
|
353
|
+
- **`AGENTS.md`** - Cross-tool standard (works with Claude Code, Cursor, Kilo Code — no duplication needed)
|
|
365
354
|
|
|
366
355
|
The rules file content is automatically included in every system prompt — both chat and agent mode. Use it to define:
|
|
367
356
|
|
|
@@ -469,11 +458,12 @@ Full spec coverage in 2.0.0 — stdio and Streamable HTTP transports,
|
|
|
469
458
|
tools / resources / prompts / sampling, capability negotiation with
|
|
470
459
|
`roots`, auto-restart on crash, mid-run catalog refresh.
|
|
471
460
|
|
|
472
|
-
**
|
|
461
|
+
**Four ways to wire MCP servers** (all merge; project > `.mcp.json` > global > ACP wins last):
|
|
473
462
|
|
|
474
463
|
1. **Project config** — `.codeep/mcp_servers.json` (committed with the repo)
|
|
475
|
-
2.
|
|
476
|
-
3. **
|
|
464
|
+
2. **`.mcp.json`** — cross-tool standard at the workspace root (works with Claude Code, Cursor, Kilo Code — point everyone at the same file)
|
|
465
|
+
3. **Global config** — `~/.codeep/mcp_servers.json` (per machine)
|
|
466
|
+
4. **ACP client config** — Zed / Claude Desktop pass `mcpServers` on `session/new`
|
|
477
467
|
|
|
478
468
|
Two transports per entry, mutually exclusive:
|
|
479
469
|
|
|
@@ -573,6 +563,26 @@ cloned repo's hooks are **not** run until you approve the workspace. Run
|
|
|
573
563
|
own projects just need a one-time `/hooks trust`. Global `~/.codeep/hooks/` are
|
|
574
564
|
never run for the same reason.
|
|
575
565
|
|
|
566
|
+
#### Windows notes
|
|
567
|
+
|
|
568
|
+
Lifecycle hooks are POSIX shell (`.sh`) scripts:
|
|
569
|
+
|
|
570
|
+
- **macOS / Linux** — run directly (via the script's shebang). No setup.
|
|
571
|
+
- **Windows** — a `.sh` needs a POSIX `sh`. Install [Git for Windows](https://git-scm.com/download/win)
|
|
572
|
+
(it ships `sh.exe`) and Codeep runs `.sh` hooks through it automatically — no
|
|
573
|
+
PATH tweaking needed if Git is installed to its default location. **Without a
|
|
574
|
+
POSIX shell**, `/hooks` and the welcome banner report an explicit
|
|
575
|
+
*"cannot run on this system"* state and hooks are skipped — they never block a
|
|
576
|
+
tool call or commit, and the rest of Codeep is unaffected. (`.ps1`/`.cmd` hooks
|
|
577
|
+
are not executed; keep hook logic in `.sh`.)
|
|
578
|
+
|
|
579
|
+
Everything else is **Node-native and shell-independent on Windows**: project
|
|
580
|
+
rules (`AGENTS.md` / `CODEEP.md` / `.codeep/rules.md`), custom slash commands
|
|
581
|
+
(`.codeep/commands/*.md`), and skill bundles (`.codeep/skills/`) are Markdown;
|
|
582
|
+
MCP config (`.mcp.json` / `.codeep/mcp_servers.json`) is JSON. MCP servers spawn
|
|
583
|
+
via their configured `command` — `npx` resolves through `npx.cmd`, and a custom
|
|
584
|
+
`command` like `python` just needs to be on your PATH.
|
|
585
|
+
|
|
576
586
|
### Skill Bundles (new in 2.0)
|
|
577
587
|
Beyond the built-in skills and custom slash commands, Codeep now supports
|
|
578
588
|
**structured skill bundles** — directory-based capability packs the agent
|
|
@@ -1024,6 +1034,7 @@ After installation, `codeep` is available globally in your terminal. Simply run
|
|
|
1024
1034
|
|---------|-------------|
|
|
1025
1035
|
| `/sessions` | List and load saved sessions |
|
|
1026
1036
|
| `/sessions delete <name>` | Delete a specific session |
|
|
1037
|
+
| `/cloud` | List and resume sessions synced from other devices |
|
|
1027
1038
|
| `/rename <name>` | Rename current session |
|
|
1028
1039
|
| `/search <term>` | Search through chat history |
|
|
1029
1040
|
| `/export` | Export chat to MD/JSON/TXT format |
|
package/dist/acp/commands.js
CHANGED
|
@@ -1023,8 +1023,29 @@ Anything else the agent should know — edge cases, gotchas, things to double-ch
|
|
|
1023
1023
|
}
|
|
1024
1024
|
case 'mcp': {
|
|
1025
1025
|
const sub = args[0]?.toLowerCase();
|
|
1026
|
-
const { addProjectMcpServer, removeProjectMcpServer, loadMcpServerConfig } = await import('../utils/mcpConfig.js');
|
|
1026
|
+
const { addProjectMcpServer, removeProjectMcpServer, loadMcpServerConfig, loadMcpServerConfigSplit, isWorkspaceMcpTrusted, trustWorkspaceMcp, untrustWorkspaceMcp } = await import('../utils/mcpConfig.js');
|
|
1027
1027
|
const { registerSessionServers } = await import('../utils/mcpRegistry.js');
|
|
1028
|
+
if (sub === 'trust') {
|
|
1029
|
+
if (isWorkspaceMcpTrusted(session.workspaceRoot)) {
|
|
1030
|
+
return { handled: true, response: '_Workspace MCP servers are already trusted here._' };
|
|
1031
|
+
}
|
|
1032
|
+
trustWorkspaceMcp(session.workspaceRoot);
|
|
1033
|
+
const { workspace } = loadMcpServerConfigSplit(session.workspaceRoot);
|
|
1034
|
+
if (workspace.length === 0) {
|
|
1035
|
+
return { handled: true, response: '_Workspace trusted — no workspace MCP servers defined yet._' };
|
|
1036
|
+
}
|
|
1037
|
+
onChunk(`_Workspace trusted. Spawning ${workspace.length} MCP server(s)…_\n\n`);
|
|
1038
|
+
const merged = loadMcpServerConfig(session.workspaceRoot);
|
|
1039
|
+
const { registered, errors } = await registerSessionServers(session.sessionId, merged, { workspaceRoot: session.workspaceRoot });
|
|
1040
|
+
const lines = [`Trusted workspace MCP servers (${registered.length} tool(s) available).`];
|
|
1041
|
+
for (const e of errors)
|
|
1042
|
+
lines.push(`- \`${e.server}\` failed: ${e.error}`);
|
|
1043
|
+
return { handled: true, response: lines.join('\n') };
|
|
1044
|
+
}
|
|
1045
|
+
if (sub === 'untrust') {
|
|
1046
|
+
untrustWorkspaceMcp(session.workspaceRoot);
|
|
1047
|
+
return { handled: true, response: '_Workspace MCP trust revoked — workspace servers won\'t spawn for new sessions._' };
|
|
1048
|
+
}
|
|
1028
1049
|
if (sub === 'add') {
|
|
1029
1050
|
// /mcp add <name> <command> [args...]
|
|
1030
1051
|
const name = args[1];
|
package/dist/acp/server.js
CHANGED
|
@@ -8,7 +8,7 @@ import { StdioTransport } from './transport.js';
|
|
|
8
8
|
import { runAgentSession } from './session.js';
|
|
9
9
|
import { loadCustomCommands } from '../utils/customCommands.js';
|
|
10
10
|
import { registerSessionServers, disposeAllSessions as disposeAllMcpSessions } from '../utils/mcpRegistry.js';
|
|
11
|
-
import {
|
|
11
|
+
import { loadMcpServerConfigSplit, isWorkspaceMcpTrusted, mergeMcpServers } from '../utils/mcpConfig.js';
|
|
12
12
|
import { handleMcpSamplingRequest } from '../utils/mcpSamplingBridge.js';
|
|
13
13
|
import { executeCommandAsync } from '../utils/shell.js';
|
|
14
14
|
import { initWorkspace, loadWorkspace, handleCommand } from './commands.js';
|
|
@@ -539,7 +539,18 @@ export function startAcpServer() {
|
|
|
539
539
|
* in-flight registration so tool calls don't race the startup.
|
|
540
540
|
*/
|
|
541
541
|
function spawnMcpServersForSession(acpSessionId, cwd, acpServers, label) {
|
|
542
|
-
|
|
542
|
+
// Workspace-sourced servers (.codeep/mcp_servers.json, .mcp.json) travel
|
|
543
|
+
// with the repo, so they spawn only for workspaces the user has trusted
|
|
544
|
+
// (same gate the TUI prompts for at startup). ACP-provided servers are
|
|
545
|
+
// the editor's own config and global ~/.codeep entries are the user's —
|
|
546
|
+
// both spawn unconditionally.
|
|
547
|
+
const { global: globalServers, workspace: workspaceServers } = loadMcpServerConfigSplit(cwd);
|
|
548
|
+
const workspaceTrusted = isWorkspaceMcpTrusted(cwd);
|
|
549
|
+
if (workspaceServers.length > 0 && !workspaceTrusted) {
|
|
550
|
+
process.stderr.write(`[codeep-acp] MCP (${label}): skipped ${workspaceServers.length} workspace server(s) — untrusted workspace. ` +
|
|
551
|
+
`Run /mcp trust (or \`codeep\` in the repo once) to enable.\n`);
|
|
552
|
+
}
|
|
553
|
+
const fromConfig = workspaceTrusted ? [...globalServers, ...workspaceServers] : globalServers;
|
|
543
554
|
const merged = mergeMcpServers(fromConfig, acpServers);
|
|
544
555
|
if (merged.length === 0)
|
|
545
556
|
return;
|
package/dist/config/index.d.ts
CHANGED
|
@@ -140,6 +140,16 @@ export interface ConfigSchema {
|
|
|
140
140
|
}
|
|
141
141
|
export type { AgentMode };
|
|
142
142
|
export type { LanguageCode };
|
|
143
|
+
/**
|
|
144
|
+
* Get sessions directory - local .codeep/sessions/ if in project, otherwise global
|
|
145
|
+
*/
|
|
146
|
+
export declare function getSessionsDir(projectPath?: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Check if directory is a project
|
|
149
|
+
* Looks for common project indicators: package.json, pyproject.toml, Cargo.toml, go.mod, composer.json, etc.
|
|
150
|
+
* Also checks if user has manually initialized this folder as a project (.codeep/project.json)
|
|
151
|
+
*/
|
|
152
|
+
export declare function isProjectDirectory(path: string): boolean;
|
|
143
153
|
/**
|
|
144
154
|
* Check if directory has standard project markers (not manually initialized)
|
|
145
155
|
*/
|
package/dist/config/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createSecureStorage } from '../utils/keychain.js';
|
|
|
9
9
|
/**
|
|
10
10
|
* Get sessions directory - local .codeep/sessions/ if in project, otherwise global
|
|
11
11
|
*/
|
|
12
|
-
function getSessionsDir(projectPath) {
|
|
12
|
+
export function getSessionsDir(projectPath) {
|
|
13
13
|
if (projectPath && isProjectDirectory(projectPath)) {
|
|
14
14
|
const localDir = join(projectPath, '.codeep', 'sessions');
|
|
15
15
|
if (!existsSync(localDir)) {
|
|
@@ -36,7 +36,7 @@ function getLocalConfigPath(projectPath) {
|
|
|
36
36
|
* Looks for common project indicators: package.json, pyproject.toml, Cargo.toml, go.mod, composer.json, etc.
|
|
37
37
|
* Also checks if user has manually initialized this folder as a project (.codeep/project.json)
|
|
38
38
|
*/
|
|
39
|
-
function isProjectDirectory(path) {
|
|
39
|
+
export function isProjectDirectory(path) {
|
|
40
40
|
// Check if user has manually initialized this as a project
|
|
41
41
|
const manualProjectMarker = join(path, '.codeep', 'project.json');
|
|
42
42
|
if (existsSync(manualProjectMarker)) {
|
package/dist/config/providers.js
CHANGED
|
@@ -276,8 +276,9 @@ export const PROVIDERS = {
|
|
|
276
276
|
openai: { baseUrl: 'https://api.x.ai/v1', authHeader: 'Bearer', supportsNativeTools: true },
|
|
277
277
|
},
|
|
278
278
|
models: [
|
|
279
|
+
{ id: 'grok-4.5', name: 'Grok 4.5', description: 'Flagship reasoning model — highest quality, 500K context' },
|
|
279
280
|
{ id: 'grok-build-0.1', name: 'Grok Build 0.1', description: 'Agentic coding model — fast, 256K context' },
|
|
280
|
-
{ id: 'grok-4.3', name: 'Grok 4.3', description: '
|
|
281
|
+
{ id: 'grok-4.3', name: 'Grok 4.3', description: 'Previous flagship, 1M context' },
|
|
281
282
|
{ id: 'grok-code-fast-1', name: 'Grok Code Fast 1', description: 'Low-cost speed-first coder (alias of Build 0.1)' },
|
|
282
283
|
{ id: 'grok-4-fast-reasoning', name: 'Grok 4 Fast (reasoning)', description: 'Cheap reasoning model, very large context' },
|
|
283
284
|
],
|
|
@@ -302,7 +303,7 @@ export const PROVIDERS = {
|
|
|
302
303
|
models: [
|
|
303
304
|
{ id: 'qwen3-coder-plus', name: 'Qwen3-Coder Plus', description: 'Flagship coding model — best quality' },
|
|
304
305
|
{ id: 'qwen3-coder-next', name: 'Qwen3-Coder Next', description: 'Balanced quality/speed/cost' },
|
|
305
|
-
{ id: 'qwen3-max', name: 'Qwen3-Max', description: 'Flagship general model (code + reasoning)' },
|
|
306
|
+
{ id: 'qwen3.7-max', name: 'Qwen3.7-Max', description: 'Flagship general model (code + reasoning)' },
|
|
306
307
|
],
|
|
307
308
|
defaultModel: 'qwen3-coder-plus',
|
|
308
309
|
defaultProtocol: 'openai',
|
|
@@ -323,7 +324,7 @@ export const PROVIDERS = {
|
|
|
323
324
|
{ id: 'qwen3-coder-plus', name: 'Qwen3-Coder Plus', description: 'Flagship coding model (256K, up to 1M)' },
|
|
324
325
|
{ id: 'qwen3-coder-next', name: 'Qwen3-Coder Next', description: 'Balanced quality/speed/cost' },
|
|
325
326
|
{ id: 'qwen3-coder-flash', name: 'Qwen3-Coder Flash', description: 'Fast/cheap coder' },
|
|
326
|
-
{ id: 'qwen3-max', name: 'Qwen3-Max', description: 'Flagship general model' },
|
|
327
|
+
{ id: 'qwen3.7-max', name: 'Qwen3.7-Max', description: 'Flagship general model' },
|
|
327
328
|
],
|
|
328
329
|
defaultModel: 'qwen3-coder-plus',
|
|
329
330
|
defaultProtocol: 'openai',
|
|
@@ -343,7 +344,7 @@ export const PROVIDERS = {
|
|
|
343
344
|
models: [
|
|
344
345
|
{ id: 'qwen3-coder-plus', name: 'Qwen3-Coder Plus', description: 'Flagship coding model — best quality' },
|
|
345
346
|
{ id: 'qwen3-coder-next', name: 'Qwen3-Coder Next', description: 'Balanced quality/speed/cost' },
|
|
346
|
-
{ id: 'qwen3-max', name: 'Qwen3-Max', description: 'Flagship general model' },
|
|
347
|
+
{ id: 'qwen3.7-max', name: 'Qwen3.7-Max', description: 'Flagship general model' },
|
|
347
348
|
],
|
|
348
349
|
defaultModel: 'qwen3-coder-plus',
|
|
349
350
|
defaultProtocol: 'openai',
|
|
@@ -364,7 +365,7 @@ export const PROVIDERS = {
|
|
|
364
365
|
{ id: 'qwen3-coder-plus', name: 'Qwen3-Coder Plus', description: 'Flagship coding model' },
|
|
365
366
|
{ id: 'qwen3-coder-next', name: 'Qwen3-Coder Next', description: 'Balanced quality/speed/cost' },
|
|
366
367
|
{ id: 'qwen3-coder-flash', name: 'Qwen3-Coder Flash', description: 'Fast/cheap coder' },
|
|
367
|
-
{ id: 'qwen3-max', name: 'Qwen3-Max', description: 'Flagship general model' },
|
|
368
|
+
{ id: 'qwen3.7-max', name: 'Qwen3.7-Max', description: 'Flagship general model' },
|
|
368
369
|
],
|
|
369
370
|
defaultModel: 'qwen3-coder-plus',
|
|
370
371
|
defaultProtocol: 'openai',
|
|
@@ -404,11 +405,14 @@ export const PROVIDERS = {
|
|
|
404
405
|
},
|
|
405
406
|
},
|
|
406
407
|
models: [
|
|
407
|
-
{ id: 'gpt-5.
|
|
408
|
-
{ id: 'gpt-5.
|
|
408
|
+
{ id: 'gpt-5.6-sol', name: 'GPT-5.6 Sol', description: 'Most capable GPT — best for coding & agentic work' },
|
|
409
|
+
{ id: 'gpt-5.6-terra', name: 'GPT-5.6 Terra', description: 'Balanced — GPT-5.5 quality at about half the price' },
|
|
410
|
+
{ id: 'gpt-5.6-luna', name: 'GPT-5.6 Luna', description: 'Fast and cheap — high-volume workloads' },
|
|
411
|
+
{ id: 'gpt-5.5', name: 'GPT-5.5', description: 'Previous flagship GPT' },
|
|
412
|
+
{ id: 'gpt-5.4', name: 'GPT-5.4', description: 'Older generation GPT' },
|
|
409
413
|
{ id: 'gpt-5.4-mini', name: 'GPT-5.4 Mini', description: 'Faster and cheaper GPT-5.4' },
|
|
410
414
|
],
|
|
411
|
-
defaultModel: 'gpt-5.
|
|
415
|
+
defaultModel: 'gpt-5.6-sol',
|
|
412
416
|
defaultProtocol: 'openai',
|
|
413
417
|
useMaxCompletionTokens: true,
|
|
414
418
|
requiresDefaultTemperature: true,
|
|
@@ -452,6 +456,7 @@ export const PROVIDERS = {
|
|
|
452
456
|
models: [
|
|
453
457
|
{ id: 'gemini-3.1-pro-preview', name: 'Gemini 3.1 Pro', description: 'Most capable Gemini model' },
|
|
454
458
|
{ id: 'gemini-3.5-flash', name: 'Gemini 3.5 Flash', description: 'Pro-level intelligence at Flash speed' },
|
|
459
|
+
{ id: 'gemini-3.1-flash-lite', name: 'Gemini 3.1 Flash-Lite', description: 'Low-latency, low-cost workhorse (1M context)' },
|
|
455
460
|
],
|
|
456
461
|
defaultModel: 'gemini-3.1-pro-preview',
|
|
457
462
|
defaultProtocol: 'openai',
|
|
@@ -479,7 +484,7 @@ export const PROVIDERS = {
|
|
|
479
484
|
{ id: 'anthropic/claude-fable-5', name: 'Claude Fable 5', description: 'Anthropic — most capable' },
|
|
480
485
|
{ id: 'anthropic/claude-opus-4', name: 'Claude Opus 4', description: 'Anthropic — Opus tier' },
|
|
481
486
|
{ id: 'anthropic/claude-sonnet-5', name: 'Claude Sonnet 5', description: 'Anthropic — balanced' },
|
|
482
|
-
{ id: 'openai/gpt-5.
|
|
487
|
+
{ id: 'openai/gpt-5.6-sol', name: 'GPT-5.6 Sol', description: 'OpenAI — flagship' },
|
|
483
488
|
{ id: 'openai/gpt-5.4-mini', name: 'GPT-5.4 Mini', description: 'OpenAI — fast/cheap' },
|
|
484
489
|
{ id: 'google/gemini-3.1-pro', name: 'Gemini 3.1 Pro', description: 'Google — multimodal' },
|
|
485
490
|
{ id: 'meta-llama/llama-3.1-405b-instruct', name: 'Llama 3.1 405B', description: 'Meta — open weights, largest' },
|
|
@@ -487,7 +492,7 @@ export const PROVIDERS = {
|
|
|
487
492
|
{ id: 'deepseek/deepseek-v4', name: 'DeepSeek V4', description: 'DeepSeek via OpenRouter' },
|
|
488
493
|
{ id: 'mistralai/mistral-large', name: 'Mistral Large', description: 'Mistral — flagship' },
|
|
489
494
|
{ id: 'qwen/qwen-2.5-coder-32b-instruct', name: 'Qwen 2.5 Coder 32B', description: 'Alibaba — coding-tuned' },
|
|
490
|
-
{ id: 'x-ai/grok-
|
|
495
|
+
{ id: 'x-ai/grok-4.5', name: 'Grok 4.5', description: 'xAI — flagship reasoning' },
|
|
491
496
|
],
|
|
492
497
|
defaultModel: 'anthropic/claude-opus-4',
|
|
493
498
|
defaultProtocol: 'openai',
|
package/dist/renderer/App.d.ts
CHANGED
|
@@ -413,15 +413,6 @@ export declare class App {
|
|
|
413
413
|
/**
|
|
414
414
|
* Get color for action type
|
|
415
415
|
*/
|
|
416
|
-
private getActionColor;
|
|
417
|
-
/**
|
|
418
|
-
* Format action target for display
|
|
419
|
-
*/
|
|
420
|
-
private formatActionTarget;
|
|
421
|
-
/**
|
|
422
|
-
* Get action label for display
|
|
423
|
-
*/
|
|
424
|
-
private getActionLabel;
|
|
425
416
|
/**
|
|
426
417
|
* Render status bar
|
|
427
418
|
*/
|
|
@@ -430,23 +421,6 @@ export declare class App {
|
|
|
430
421
|
* Get visible messages (including streaming)
|
|
431
422
|
*/
|
|
432
423
|
private getVisibleMessages;
|
|
433
|
-
/**
|
|
434
|
-
* Format message into lines with syntax highlighting for code blocks
|
|
435
|
-
*/
|
|
436
|
-
private formatWelcomeMessage;
|
|
437
|
-
private formatMessage;
|
|
438
|
-
/**
|
|
439
|
-
* Apply inline markdown formatting (bold, italic, inline code) to a line
|
|
440
|
-
*/
|
|
441
|
-
private applyInlineMarkdown;
|
|
442
|
-
/**
|
|
443
|
-
* Format plain text lines with markdown support
|
|
444
|
-
*/
|
|
445
|
-
private formatTextLines;
|
|
446
|
-
/**
|
|
447
|
-
* Format code block with syntax highlighting (no border)
|
|
448
|
-
*/
|
|
449
|
-
private formatCodeBlock;
|
|
450
424
|
/**
|
|
451
425
|
* Render inline search screen
|
|
452
426
|
*/
|
|
@@ -471,8 +445,4 @@ export declare class App {
|
|
|
471
445
|
* Get decrypted logo for intro animation
|
|
472
446
|
*/
|
|
473
447
|
private getDecryptedLogo;
|
|
474
|
-
/**
|
|
475
|
-
* Word wrap
|
|
476
|
-
*/
|
|
477
|
-
private wordWrap;
|
|
478
448
|
}
|