c0de-agent 1.12.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.
Files changed (142) hide show
  1. package/README.md +51 -23
  2. package/dist/cli/commands/acp.js +26 -8
  3. package/dist/cli/commands/chat.js +70 -6
  4. package/dist/cli/commands/config.d.ts +2 -0
  5. package/dist/cli/commands/config.js +46 -0
  6. package/dist/cli/commands/serve.js +11 -2
  7. package/dist/cli/commands/sessions.js +51 -4
  8. package/dist/cli/commands/trust.d.ts +11 -0
  9. package/dist/cli/commands/trust.js +31 -0
  10. package/dist/cli/commands/update.js +4 -0
  11. package/dist/cli/deps.d.ts +9 -6
  12. package/dist/cli/deps.js +66 -19
  13. package/dist/cli/index.d.ts +4 -1
  14. package/dist/cli/index.js +92 -12
  15. package/dist/cli/modes/acp.js +39 -8
  16. package/dist/cli/modes/print.d.ts +3 -0
  17. package/dist/cli/modes/print.js +71 -8
  18. package/dist/core/agent.d.ts +1 -1
  19. package/dist/core/agent.js +9 -4
  20. package/dist/core/agents/builtin.js +2 -2
  21. package/dist/core/agents/index.d.ts +0 -1
  22. package/dist/core/agents/index.js +0 -1
  23. package/dist/core/config.d.ts +43 -1
  24. package/dist/core/config.js +163 -14
  25. package/dist/core/loop/segment.d.ts +3 -1
  26. package/dist/core/loop/segment.js +24 -1
  27. package/dist/core/loop/subagent.js +65 -32
  28. package/dist/core/loop.d.ts +7 -0
  29. package/dist/core/loop.js +90 -6
  30. package/dist/core/slash.d.ts +10 -0
  31. package/dist/core/slash.js +150 -20
  32. package/dist/core/types.d.ts +20 -1
  33. package/dist/core/workflows/context.js +44 -4
  34. package/dist/core/workflows/discovery.d.ts +2 -2
  35. package/dist/core/workflows/discovery.js +5 -7
  36. package/dist/core/workflows/index.d.ts +2 -1
  37. package/dist/core/workflows/index.js +2 -1
  38. package/dist/core/workflows/registry.d.ts +13 -3
  39. package/dist/core/workflows/registry.js +14 -9
  40. package/dist/core/workflows/resolve.d.ts +22 -0
  41. package/dist/core/workflows/resolve.js +23 -0
  42. package/dist/core/workflows/runtime.d.ts +6 -1
  43. package/dist/core/workflows/runtime.js +19 -2
  44. package/dist/db/schema.d.ts +356 -1
  45. package/dist/db/schema.js +57 -3
  46. package/dist/kanban/index.d.ts +2 -1
  47. package/dist/kanban/index.js +1 -1
  48. package/dist/kanban/store.d.ts +84 -2
  49. package/dist/kanban/store.js +358 -25
  50. package/dist/llm/registry.d.ts +7 -1
  51. package/dist/llm/registry.js +7 -1
  52. package/dist/plugins/init.d.ts +7 -0
  53. package/dist/plugins/init.js +22 -1
  54. package/dist/plugins/loader.d.ts +7 -1
  55. package/dist/plugins/loader.js +12 -4
  56. package/dist/project/index.d.ts +1 -1
  57. package/dist/project/index.js +1 -1
  58. package/dist/project/project.d.ts +23 -0
  59. package/dist/project/project.js +65 -0
  60. package/dist/project/trust.d.ts +65 -0
  61. package/dist/project/trust.js +328 -0
  62. package/dist/server/agent-manager.d.ts +6 -2
  63. package/dist/server/agent-manager.js +4 -2
  64. package/dist/server/app.js +45 -30
  65. package/dist/server/auth-manager.d.ts +15 -4
  66. package/dist/server/auth-manager.js +41 -24
  67. package/dist/server/context.js +11 -1
  68. package/dist/server/index.d.ts +1 -1
  69. package/dist/server/index.js +1 -1
  70. package/dist/server/middleware/auth.d.ts +11 -1
  71. package/dist/server/middleware/auth.js +25 -3
  72. package/dist/server/permission/interactive.d.ts +5 -0
  73. package/dist/server/permission/interactive.js +4 -1
  74. package/dist/server/permission/store.d.ts +2 -0
  75. package/dist/server/permission/store.js +8 -0
  76. package/dist/server/routes/auth.js +35 -9
  77. package/dist/server/routes/chat.d.ts +16 -7
  78. package/dist/server/routes/chat.js +483 -28
  79. package/dist/server/routes/commands.d.ts +2 -2
  80. package/dist/server/routes/commands.js +4 -6
  81. package/dist/server/routes/config.js +81 -4
  82. package/dist/server/routes/files.js +120 -24
  83. package/dist/server/routes/kanban.js +152 -22
  84. package/dist/server/routes/permissions.js +7 -0
  85. package/dist/server/routes/project.js +76 -22
  86. package/dist/server/routes/provider.js +6 -0
  87. package/dist/server/routes/session.js +177 -13
  88. package/dist/server/routes/tool.js +24 -5
  89. package/dist/server/routes/update.js +58 -2
  90. package/dist/server/routes/usage.d.ts +4 -0
  91. package/dist/server/routes/usage.js +133 -0
  92. package/dist/server/routes/workflows.js +476 -87
  93. package/dist/server/server.d.ts +12 -1
  94. package/dist/server/server.js +194 -33
  95. package/dist/server/terminal/pty-manager.d.ts +12 -0
  96. package/dist/server/terminal/pty-manager.js +63 -7
  97. package/dist/server/types.d.ts +9 -0
  98. package/dist/session/branch.d.ts +2 -1
  99. package/dist/session/branch.js +75 -10
  100. package/dist/session/context.js +28 -2
  101. package/dist/session/index.d.ts +1 -1
  102. package/dist/session/index.js +1 -1
  103. package/dist/session/session.d.ts +67 -10
  104. package/dist/session/session.js +180 -67
  105. package/dist/session/types.d.ts +2 -0
  106. package/dist/session/usage.d.ts +62 -0
  107. package/dist/session/usage.js +194 -0
  108. package/dist/shared/types/agent.d.ts +19 -3
  109. package/dist/shared/types/config.d.ts +59 -4
  110. package/dist/shared/types/kanban.d.ts +4 -2
  111. package/dist/shared/types/message.d.ts +14 -0
  112. package/dist/tools/builtin/kanban.js +13 -2
  113. package/dist/tools/index.d.ts +14 -3
  114. package/dist/tools/index.js +23 -5
  115. package/dist/tools/websearch/index.d.ts +5 -1
  116. package/dist/tools/websearch/index.js +40 -4
  117. package/dist/tools/websearch/providers/brave.js +2 -2
  118. package/dist/tools/websearch/providers/duckduckgo.js +2 -1
  119. package/dist/tools/websearch/providers/tavily.js +2 -2
  120. package/dist/tools/websearch/types.d.ts +5 -1
  121. package/dist/tools/websearch/types.js +7 -1
  122. package/dist/update/scheduler.js +5 -2
  123. package/dist/update/snapshot.d.ts +17 -3
  124. package/dist/update/snapshot.js +3 -2
  125. package/dist/update/updater.d.ts +2 -0
  126. package/dist/update/updater.js +2 -1
  127. package/dist/update/version.d.ts +3 -0
  128. package/dist/update/version.js +9 -3
  129. package/drizzle/0010_usage_events_ledger.sql +17 -0
  130. package/drizzle/0011_slow_slapstick.sql +12 -0
  131. package/drizzle/0012_chief_timeslip.sql +1 -0
  132. package/drizzle/0013_swift_zeigeist.sql +1 -0
  133. package/drizzle/0014_flimsy_legion.sql +1 -0
  134. package/drizzle/meta/0010_snapshot.json +1010 -0
  135. package/drizzle/meta/0011_snapshot.json +1055 -0
  136. package/drizzle/meta/0012_snapshot.json +1062 -0
  137. package/drizzle/meta/0013_snapshot.json +1068 -0
  138. package/drizzle/meta/0014_snapshot.json +1075 -0
  139. package/drizzle/meta/_journal.json +35 -0
  140. package/package.json +24 -23
  141. package/dist/core/agents/discovery.d.ts +0 -6
  142. package/dist/core/agents/discovery.js +0 -96
@@ -64,6 +64,41 @@
64
64
  "when": 1788730611917,
65
65
  "tag": "0008_tranquil_lily_hollister",
66
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
67
102
  }
68
103
  ]
69
104
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c0de-agent",
3
- "version": "1.12.0",
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,62 +49,63 @@
49
49
  "node": ">=22.0.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@biomejs/biome": "^2.5.12",
52
+ "@biomejs/biome": "^2.5.14",
53
53
  "@codemirror/lang-javascript": "^6.2.5",
54
- "@codemirror/state": "^6.7.2",
54
+ "@codemirror/state": "^6.7.5",
55
55
  "@codemirror/theme-one-dark": "^6.1.3",
56
- "@codemirror/view": "^6.43.11",
56
+ "@codemirror/view": "^6.43.12",
57
57
  "@shikijs/langs": "^4.4.3",
58
58
  "@shikijs/themes": "^4.4.3",
59
59
  "@testing-library/jest-dom": "^7.0.1",
60
60
  "@testing-library/react": "^16.3.3",
61
61
  "@testing-library/user-event": "^14.6.7",
62
- "@types/node": "^26.4.1",
62
+ "@types/node": "^26.6.1",
63
63
  "@types/pg": "^8.23.1",
64
- "@types/react": "^19.2.18",
65
- "@types/react-dom": "^19.2.7",
64
+ "@types/react": "^19.3.0",
65
+ "@types/react-dom": "^19.3.0",
66
66
  "@types/ws": "^8.18.1",
67
67
  "@vitejs/plugin-react": "^6.1.1",
68
68
  "@wyw-in-js/vite": "^2.5.1",
69
69
  "drizzle-kit": "^0.31.10",
70
- "happy-dom": "^20.14.0",
70
+ "happy-dom": "^20.14.5",
71
71
  "node-gyp": "^13.0.2",
72
72
  "pg": "^8.23.0",
73
73
  "tsx": "^4.23.13",
74
74
  "typescript": "^6.0.3",
75
- "vite": "^8.2.2",
75
+ "vite": "^8.3.0",
76
76
  "vite-plugin-pwa": "^1.3.0",
77
- "vitest": "^5.0.0"
77
+ "vitest": "^5.0.1"
78
78
  },
79
79
  "dependencies": {
80
- "@codemirror/commands": "^6.11.0",
80
+ "@codemirror/commands": "^6.11.1",
81
81
  "@dnd-kit/core": "^6.3.1",
82
82
  "@dnd-kit/sortable": "^10.0.0",
83
83
  "@electric-sql/pglite": "^0.5.8",
84
84
  "@hono/node-server": "^2.1.1",
85
85
  "@linaria/core": "^8.2.0",
86
86
  "@linaria/react": "^8.2.0",
87
- "@native-router/core": "^1.15.1",
88
- "@native-router/react": "^1.14.0",
89
- "@tanstack/react-query": "^5.102.8",
90
- "@tanstack/react-virtual": "^3.14.10",
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",
91
91
  "@xterm/addon-fit": "^0.11.0",
92
92
  "@xterm/addon-web-links": "^0.12.0",
93
93
  "@xterm/xterm": "^6.0.0",
94
94
  "diff": "^9.0.0",
95
95
  "drizzle-orm": "^0.45.2",
96
+ "fetch-fun": "^0.15.0",
96
97
  "fuzzysort": "^4.0.2",
97
- "haze-ui": "^1.21.0",
98
- "hono": "^4.13.5",
99
- "lucide-react": "^1.40.0",
100
- "marked": "^18.0.11",
98
+ "haze-ui": "^1.30.0",
99
+ "hono": "^4.13.8",
100
+ "lucide-react": "^1.46.0",
101
+ "marked": "^18.0.13",
101
102
  "node-pty": "^1.1.0",
102
- "react": "^19.2.8",
103
- "react-dom": "^19.2.8",
104
- "react-router-dom": "^7.18.3",
103
+ "react": "^19.3.0",
104
+ "react-dom": "^19.3.0",
105
+ "react-use-control": "^1.6.1",
105
106
  "shiki": "^4.4.3",
106
107
  "trash": "^10.1.1",
107
- "undici": "^8.10.1",
108
+ "undici": "^8.10.2",
108
109
  "ws": "^8.21.3"
109
110
  }
110
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 };