c0de-agent 1.11.0 → 1.13.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 +63 -16
- package/dist/cli/commands/acp.js +26 -8
- package/dist/cli/commands/chat.js +151 -1
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +63 -3
- package/dist/cli/commands/serve.js +11 -2
- package/dist/cli/commands/sessions.js +109 -3
- package/dist/cli/commands/trust.d.ts +11 -0
- package/dist/cli/commands/trust.js +31 -0
- package/dist/cli/commands/update.js +4 -0
- package/dist/cli/deps.d.ts +9 -6
- package/dist/cli/deps.js +66 -19
- package/dist/cli/index.d.ts +4 -1
- package/dist/cli/index.js +110 -11
- package/dist/cli/modes/acp.js +39 -8
- package/dist/cli/modes/print.d.ts +3 -0
- package/dist/cli/modes/print.js +78 -8
- package/dist/core/agent.d.ts +1 -1
- package/dist/core/agent.js +9 -4
- package/dist/core/agents/builtin.js +2 -2
- package/dist/core/agents/index.d.ts +0 -1
- package/dist/core/agents/index.js +0 -1
- package/dist/core/compact.d.ts +2 -0
- package/dist/core/compact.js +1 -0
- package/dist/core/config.d.ts +53 -2
- package/dist/core/config.js +235 -19
- package/dist/core/loop/compaction.d.ts +2 -1
- package/dist/core/loop/compaction.js +19 -6
- package/dist/core/loop/segment.d.ts +3 -1
- package/dist/core/loop/segment.js +24 -1
- package/dist/core/loop/stream-collect.js +9 -1
- package/dist/core/loop/subagent.js +88 -37
- package/dist/core/loop.d.ts +7 -0
- package/dist/core/loop.js +90 -6
- package/dist/core/redact.d.ts +11 -0
- package/dist/core/redact.js +49 -0
- package/dist/core/slash.d.ts +10 -0
- package/dist/core/slash.js +237 -65
- package/dist/core/title.js +7 -1
- package/dist/core/types.d.ts +22 -1
- package/dist/core/workflows/context.js +44 -4
- package/dist/core/workflows/discovery.d.ts +2 -2
- package/dist/core/workflows/discovery.js +5 -7
- package/dist/core/workflows/index.d.ts +2 -1
- package/dist/core/workflows/index.js +2 -1
- package/dist/core/workflows/registry.d.ts +13 -3
- package/dist/core/workflows/registry.js +14 -9
- package/dist/core/workflows/resolve.d.ts +22 -0
- package/dist/core/workflows/resolve.js +23 -0
- package/dist/core/workflows/runtime.d.ts +6 -1
- package/dist/core/workflows/runtime.js +19 -2
- package/dist/db/schema.d.ts +373 -1
- package/dist/db/schema.js +60 -4
- package/dist/kanban/index.d.ts +2 -1
- package/dist/kanban/index.js +1 -1
- package/dist/kanban/store.d.ts +87 -1
- package/dist/kanban/store.js +429 -22
- package/dist/llm/index.d.ts +1 -1
- package/dist/llm/index.js +1 -1
- package/dist/llm/provider.js +1 -1
- package/dist/llm/registry.d.ts +7 -1
- package/dist/llm/registry.js +7 -1
- package/dist/llm/retry.d.ts +5 -2
- package/dist/llm/retry.js +6 -5
- package/dist/llm/routing.d.ts +24 -1
- package/dist/llm/routing.js +29 -1
- package/dist/plugins/init.d.ts +7 -0
- package/dist/plugins/init.js +22 -1
- package/dist/plugins/loader.d.ts +7 -1
- package/dist/plugins/loader.js +12 -4
- package/dist/project/index.d.ts +1 -1
- package/dist/project/index.js +1 -1
- package/dist/project/project.d.ts +37 -0
- package/dist/project/project.js +142 -1
- package/dist/project/trust.d.ts +65 -0
- package/dist/project/trust.js +328 -0
- package/dist/server/agent-manager.d.ts +15 -2
- package/dist/server/agent-manager.js +18 -3
- package/dist/server/app.js +45 -30
- package/dist/server/auth-manager.d.ts +26 -9
- package/dist/server/auth-manager.js +78 -42
- package/dist/server/context.js +14 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/middleware/auth.d.ts +11 -1
- package/dist/server/middleware/auth.js +25 -3
- package/dist/server/permission/interactive.d.ts +11 -3
- package/dist/server/permission/interactive.js +23 -4
- package/dist/server/permission/store.d.ts +14 -2
- package/dist/server/permission/store.js +39 -3
- package/dist/server/registry-config.d.ts +14 -0
- package/dist/server/registry-config.js +44 -0
- package/dist/server/routes/auth.js +66 -10
- package/dist/server/routes/chat.d.ts +21 -0
- package/dist/server/routes/chat.js +685 -52
- package/dist/server/routes/commands.d.ts +4 -2
- package/dist/server/routes/commands.js +9 -4
- package/dist/server/routes/config.js +180 -23
- package/dist/server/routes/files.js +142 -28
- package/dist/server/routes/kanban.js +218 -26
- package/dist/server/routes/permissions.d.ts +0 -4
- package/dist/server/routes/permissions.js +140 -7
- package/dist/server/routes/project.js +132 -29
- package/dist/server/routes/provider.js +54 -3
- package/dist/server/routes/session.js +463 -23
- package/dist/server/routes/tool.js +24 -5
- package/dist/server/routes/update.d.ts +11 -5
- package/dist/server/routes/update.js +145 -29
- package/dist/server/routes/usage.d.ts +4 -0
- package/dist/server/routes/usage.js +133 -0
- package/dist/server/routes/workflows.js +476 -87
- package/dist/server/server.d.ts +16 -13
- package/dist/server/server.js +364 -107
- package/dist/server/terminal/pty-manager.d.ts +12 -0
- package/dist/server/terminal/pty-manager.js +63 -7
- package/dist/server/types.d.ts +16 -0
- package/dist/session/archive.d.ts +3 -1
- package/dist/session/archive.js +13 -1
- package/dist/session/branch.d.ts +2 -1
- package/dist/session/branch.js +92 -9
- package/dist/session/context.js +28 -2
- package/dist/session/import.d.ts +44 -0
- package/dist/session/import.js +83 -0
- package/dist/session/index.d.ts +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/jobs.d.ts +12 -0
- package/dist/session/jobs.js +53 -0
- package/dist/session/message.d.ts +7 -1
- package/dist/session/message.js +21 -1
- package/dist/session/session.d.ts +186 -12
- package/dist/session/session.js +577 -33
- package/dist/session/snapshot.d.ts +5 -2
- package/dist/session/snapshot.js +10 -2
- package/dist/session/types.d.ts +13 -1
- package/dist/session/usage.d.ts +62 -0
- package/dist/session/usage.js +194 -0
- package/dist/shared/types/agent.d.ts +29 -2
- package/dist/shared/types/config.d.ts +64 -5
- package/dist/shared/types/kanban.d.ts +17 -2
- package/dist/shared/types/message.d.ts +23 -0
- package/dist/tools/builtin/kanban.js +13 -2
- package/dist/tools/index.d.ts +14 -3
- package/dist/tools/index.js +23 -5
- package/dist/tools/websearch/index.d.ts +5 -1
- package/dist/tools/websearch/index.js +46 -7
- package/dist/tools/websearch/providers/brave.js +2 -2
- package/dist/tools/websearch/providers/duckduckgo.js +2 -1
- package/dist/tools/websearch/providers/tavily.js +2 -2
- package/dist/tools/websearch/types.d.ts +5 -1
- package/dist/tools/websearch/types.js +7 -1
- package/dist/update/index.d.ts +3 -3
- package/dist/update/index.js +2 -2
- package/dist/update/ipc.d.ts +13 -2
- package/dist/update/ipc.js +36 -2
- package/dist/update/scheduler.js +5 -2
- package/dist/update/snapshot.d.ts +18 -3
- package/dist/update/snapshot.js +5 -2
- package/dist/update/updater.d.ts +17 -1
- package/dist/update/updater.js +47 -18
- package/dist/update/version.d.ts +3 -0
- package/dist/update/version.js +9 -3
- package/drizzle/0008_tranquil_lily_hollister.sql +1 -0
- package/drizzle/0010_usage_events_ledger.sql +17 -0
- package/drizzle/0011_slow_slapstick.sql +12 -0
- package/drizzle/0012_chief_timeslip.sql +1 -0
- package/drizzle/0013_swift_zeigeist.sql +1 -0
- package/drizzle/0014_flimsy_legion.sql +1 -0
- package/drizzle/meta/0008_snapshot.json +875 -0
- package/drizzle/meta/0010_snapshot.json +1010 -0
- package/drizzle/meta/0011_snapshot.json +1055 -0
- package/drizzle/meta/0012_snapshot.json +1062 -0
- package/drizzle/meta/0013_snapshot.json +1068 -0
- package/drizzle/meta/0014_snapshot.json +1075 -0
- package/drizzle/meta/_journal.json +42 -0
- package/package.json +42 -42
- package/dist/core/agents/discovery.d.ts +0 -6
- package/dist/core/agents/discovery.js +0 -96
|
@@ -57,6 +57,48 @@
|
|
|
57
57
|
"when": 1788425007432,
|
|
58
58
|
"tag": "0007_same_wilson_fisk",
|
|
59
59
|
"breakpoints": true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"idx": 8,
|
|
63
|
+
"version": "7",
|
|
64
|
+
"when": 1788730611917,
|
|
65
|
+
"tag": "0008_tranquil_lily_hollister",
|
|
66
|
+
"breakpoints": true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"idx": 10,
|
|
70
|
+
"version": "7",
|
|
71
|
+
"when": 1788950024430,
|
|
72
|
+
"tag": "0010_usage_events_ledger",
|
|
73
|
+
"breakpoints": true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"idx": 11,
|
|
77
|
+
"version": "7",
|
|
78
|
+
"when": 1788995144108,
|
|
79
|
+
"tag": "0011_slow_slapstick",
|
|
80
|
+
"breakpoints": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"idx": 12,
|
|
84
|
+
"version": "7",
|
|
85
|
+
"when": 1789032562634,
|
|
86
|
+
"tag": "0012_chief_timeslip",
|
|
87
|
+
"breakpoints": true
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"idx": 13,
|
|
91
|
+
"version": "7",
|
|
92
|
+
"when": 1789041898540,
|
|
93
|
+
"tag": "0013_swift_zeigeist",
|
|
94
|
+
"breakpoints": true
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"idx": 14,
|
|
98
|
+
"version": "7",
|
|
99
|
+
"when": 1789122153126,
|
|
100
|
+
"tag": "0014_flimsy_legion",
|
|
101
|
+
"breakpoints": true
|
|
60
102
|
}
|
|
61
103
|
]
|
|
62
104
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c0de-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "Open-source AI coding assistant with Browser-Server architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -49,63 +49,63 @@
|
|
|
49
49
|
"node": ">=22.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@biomejs/biome": "^2.5.
|
|
52
|
+
"@biomejs/biome": "^2.5.14",
|
|
53
53
|
"@codemirror/lang-javascript": "^6.2.5",
|
|
54
|
-
"@codemirror/state": "^6.7.
|
|
54
|
+
"@codemirror/state": "^6.7.5",
|
|
55
55
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
56
|
-
"@codemirror/view": "^6.43.
|
|
57
|
-
"@shikijs/langs": "^4.3
|
|
58
|
-
"@shikijs/themes": "^4.3
|
|
59
|
-
"@testing-library/jest-dom": "^
|
|
60
|
-
"@testing-library/react": "^16.3.
|
|
61
|
-
"@testing-library/user-event": "^14.6.
|
|
62
|
-
"@types/
|
|
63
|
-
"@types/
|
|
64
|
-
"@types/
|
|
65
|
-
"@types/react": "^19.
|
|
66
|
-
"@types/react-dom": "^19.2.3",
|
|
56
|
+
"@codemirror/view": "^6.43.12",
|
|
57
|
+
"@shikijs/langs": "^4.4.3",
|
|
58
|
+
"@shikijs/themes": "^4.4.3",
|
|
59
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
60
|
+
"@testing-library/react": "^16.3.3",
|
|
61
|
+
"@testing-library/user-event": "^14.6.7",
|
|
62
|
+
"@types/node": "^26.6.1",
|
|
63
|
+
"@types/pg": "^8.23.1",
|
|
64
|
+
"@types/react": "^19.3.0",
|
|
65
|
+
"@types/react-dom": "^19.3.0",
|
|
67
66
|
"@types/ws": "^8.18.1",
|
|
68
|
-
"@vitejs/plugin-react": "^6.
|
|
69
|
-
"@wyw-in-js/vite": "^2.1
|
|
67
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
68
|
+
"@wyw-in-js/vite": "^2.5.1",
|
|
70
69
|
"drizzle-kit": "^0.31.10",
|
|
71
|
-
"happy-dom": "^20.
|
|
72
|
-
"node-gyp": "^13.0.
|
|
73
|
-
"pg": "^8.
|
|
74
|
-
"tsx": "^4.
|
|
70
|
+
"happy-dom": "^20.14.5",
|
|
71
|
+
"node-gyp": "^13.0.2",
|
|
72
|
+
"pg": "^8.23.0",
|
|
73
|
+
"tsx": "^4.23.13",
|
|
75
74
|
"typescript": "^6.0.3",
|
|
76
|
-
"vite": "^8.
|
|
75
|
+
"vite": "^8.3.0",
|
|
77
76
|
"vite-plugin-pwa": "^1.3.0",
|
|
78
|
-
"vitest": "^
|
|
77
|
+
"vitest": "^5.0.1"
|
|
79
78
|
},
|
|
80
79
|
"dependencies": {
|
|
81
|
-
"@codemirror/commands": "^6.
|
|
80
|
+
"@codemirror/commands": "^6.11.1",
|
|
82
81
|
"@dnd-kit/core": "^6.3.1",
|
|
83
82
|
"@dnd-kit/sortable": "^10.0.0",
|
|
84
|
-
"@electric-sql/pglite": "^0.5.
|
|
85
|
-
"@hono/node-server": "^2.
|
|
86
|
-
"@linaria/core": "^8.
|
|
87
|
-
"@linaria/react": "^8.
|
|
88
|
-
"@native-router/core": "^1.
|
|
89
|
-
"@native-router/react": "^1.1
|
|
90
|
-
"@tanstack/react-query": "^5.
|
|
91
|
-
"@tanstack/react-virtual": "^3.14.
|
|
83
|
+
"@electric-sql/pglite": "^0.5.8",
|
|
84
|
+
"@hono/node-server": "^2.1.1",
|
|
85
|
+
"@linaria/core": "^8.2.0",
|
|
86
|
+
"@linaria/react": "^8.2.0",
|
|
87
|
+
"@native-router/core": "^1.17.0",
|
|
88
|
+
"@native-router/react": "^1.16.1",
|
|
89
|
+
"@tanstack/react-query": "^5.103.0",
|
|
90
|
+
"@tanstack/react-virtual": "^3.14.13",
|
|
92
91
|
"@xterm/addon-fit": "^0.11.0",
|
|
93
92
|
"@xterm/addon-web-links": "^0.12.0",
|
|
94
93
|
"@xterm/xterm": "^6.0.0",
|
|
95
94
|
"diff": "^9.0.0",
|
|
96
95
|
"drizzle-orm": "^0.45.2",
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
96
|
+
"fetch-fun": "^0.15.0",
|
|
97
|
+
"fuzzysort": "^4.0.2",
|
|
98
|
+
"haze-ui": "^1.30.0",
|
|
99
|
+
"hono": "^4.13.8",
|
|
100
|
+
"lucide-react": "^1.46.0",
|
|
101
|
+
"marked": "^18.0.13",
|
|
102
102
|
"node-pty": "^1.1.0",
|
|
103
|
-
"react": "^19.
|
|
104
|
-
"react-dom": "^19.
|
|
105
|
-
"react-
|
|
106
|
-
"shiki": "^4.3
|
|
103
|
+
"react": "^19.3.0",
|
|
104
|
+
"react-dom": "^19.3.0",
|
|
105
|
+
"react-use-control": "^1.6.1",
|
|
106
|
+
"shiki": "^4.4.3",
|
|
107
107
|
"trash": "^10.1.1",
|
|
108
|
-
"undici": "^8.
|
|
109
|
-
"ws": "^8.21.
|
|
108
|
+
"undici": "^8.10.2",
|
|
109
|
+
"ws": "^8.21.3"
|
|
110
110
|
}
|
|
111
111
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AgentDefinition, AgentSource } from './types.js';
|
|
2
|
-
/** 解析单个 markdown 文件为 AgentDefinition。无 frontmatter 返回 null。 */
|
|
3
|
-
declare function loadAgentFile(filePath: string, source: AgentSource): Promise<AgentDefinition | null>;
|
|
4
|
-
/** 加载项目 agents 目录下所有 .md 为 AgentDefinition(源: project)。 */
|
|
5
|
-
declare function loadAgents(projectDir: string): Promise<AgentDefinition[]>;
|
|
6
|
-
export { loadAgentFile, loadAgents };
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
-
import { basename, join } from 'node:path';
|
|
3
|
-
/** 默认 agent markdown 目录(相对项目根)。 */
|
|
4
|
-
const AGENTS_DIR = '.c0de/agents';
|
|
5
|
-
/** 解析简单 YAML 行(key: value 或 key: [a, b])。不处理嵌套。 */
|
|
6
|
-
function parseFrontmatterLine(line) {
|
|
7
|
-
const idx = line.indexOf(':');
|
|
8
|
-
if (idx === -1)
|
|
9
|
-
return null;
|
|
10
|
-
const key = line.slice(0, idx).trim();
|
|
11
|
-
let value = line.slice(idx + 1).trim();
|
|
12
|
-
// 数组:[a, b, c]
|
|
13
|
-
if (typeof value === 'string' && value.startsWith('[') && value.endsWith(']')) {
|
|
14
|
-
value = value
|
|
15
|
-
.slice(1, -1)
|
|
16
|
-
.split(',')
|
|
17
|
-
.map((s) => s.trim())
|
|
18
|
-
.filter(Boolean);
|
|
19
|
-
}
|
|
20
|
-
else if (value === 'true') {
|
|
21
|
-
value = true;
|
|
22
|
-
}
|
|
23
|
-
else if (value === 'false') {
|
|
24
|
-
value = false;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// 尝试数字
|
|
28
|
-
const num = Number(value);
|
|
29
|
-
if (!Number.isNaN(num) && value !== '')
|
|
30
|
-
value = num;
|
|
31
|
-
}
|
|
32
|
-
return [key, value];
|
|
33
|
-
}
|
|
34
|
-
/** 解析单个 markdown 文件为 AgentDefinition。无 frontmatter 返回 null。 */
|
|
35
|
-
async function loadAgentFile(filePath, source) {
|
|
36
|
-
let content;
|
|
37
|
-
try {
|
|
38
|
-
content = await readFile(filePath, 'utf-8');
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
// frontmatter 必须以 --- 开头
|
|
44
|
-
if (!content.startsWith('---'))
|
|
45
|
-
return null;
|
|
46
|
-
const endIdx = content.indexOf('\n---', 3);
|
|
47
|
-
if (endIdx === -1)
|
|
48
|
-
return null;
|
|
49
|
-
const fmRaw = content.slice(3, endIdx);
|
|
50
|
-
const body = content.slice(endIdx + 4).trim(); // 跳过 \n---
|
|
51
|
-
const fm = {};
|
|
52
|
-
for (const line of fmRaw.split('\n')) {
|
|
53
|
-
const parsed = parseFrontmatterLine(line);
|
|
54
|
-
if (parsed)
|
|
55
|
-
fm[parsed[0]] = parsed[1];
|
|
56
|
-
}
|
|
57
|
-
const name = fm.name ?? basename(filePath, '.md');
|
|
58
|
-
const description = fm.description ?? '';
|
|
59
|
-
const mode = fm.mode ?? 'subagent';
|
|
60
|
-
return {
|
|
61
|
-
name,
|
|
62
|
-
description,
|
|
63
|
-
systemPrompt: body,
|
|
64
|
-
...(fm.tools ? { tools: fm.tools } : {}),
|
|
65
|
-
...(fm.model ? { model: fm.model } : {}),
|
|
66
|
-
mode,
|
|
67
|
-
...(fm.isolated !== undefined ? { isolated: fm.isolated } : {}),
|
|
68
|
-
...(fm.maxRecursion !== undefined ? { maxRecursion: fm.maxRecursion } : {}),
|
|
69
|
-
source,
|
|
70
|
-
filePath,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/** 加载项目 agents 目录下所有 .md 为 AgentDefinition(源: project)。 */
|
|
74
|
-
async function loadAgents(projectDir) {
|
|
75
|
-
const agentsDir = join(projectDir, AGENTS_DIR);
|
|
76
|
-
let entries;
|
|
77
|
-
try {
|
|
78
|
-
const s = await stat(agentsDir);
|
|
79
|
-
if (!s.isDirectory())
|
|
80
|
-
return [];
|
|
81
|
-
entries = await readdir(agentsDir);
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
const defs = [];
|
|
87
|
-
for (const entry of entries) {
|
|
88
|
-
if (!entry.endsWith('.md'))
|
|
89
|
-
continue;
|
|
90
|
-
const def = await loadAgentFile(join(agentsDir, entry), 'project');
|
|
91
|
-
if (def)
|
|
92
|
-
defs.push(def);
|
|
93
|
-
}
|
|
94
|
-
return defs;
|
|
95
|
-
}
|
|
96
|
-
export { loadAgentFile, loadAgents };
|