@agent-spaces/server 0.1.2 → 0.2.3

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 (217) hide show
  1. package/dist/adapters/claude-code-runtime/index.js +4 -1
  2. package/dist/adapters/git.js +2 -21
  3. package/dist/agents/issue-agent-runner.js +35 -21
  4. package/dist/agents/issue-task-controller.js +120 -73
  5. package/dist/agents/planner-agent.js +9 -12
  6. package/dist/app.js +12 -1
  7. package/dist/hooks/agent-hooks.js +5 -8
  8. package/dist/package.json +1 -1
  9. package/dist/routes/agent.js +40 -17
  10. package/dist/routes/channel.js +4 -1
  11. package/dist/routes/command.js +108 -0
  12. package/dist/routes/folder.js +44 -7
  13. package/dist/routes/issue.js +57 -23
  14. package/dist/routes/mcp.js +50 -0
  15. package/dist/routes/skill.js +57 -0
  16. package/dist/routes/subscription.js +49 -0
  17. package/dist/routes/task.js +16 -1
  18. package/dist/routes/workflow.js +63 -0
  19. package/dist/routes/workspace.js +2 -21
  20. package/dist/services/agent.js +140 -76
  21. package/dist/services/builtin-tools.js +72 -0
  22. package/dist/services/channel.js +5 -5
  23. package/dist/services/command-process-manager.js +136 -0
  24. package/dist/services/command.js +48 -0
  25. package/dist/services/issue.js +5 -6
  26. package/dist/services/mcp.js +120 -0
  27. package/dist/services/notification-hub/bot-commands.js +48 -16
  28. package/dist/services/notification-hub/helpers.js +12 -0
  29. package/dist/services/pty.js +10 -3
  30. package/dist/services/skill.js +171 -0
  31. package/dist/services/subscription/aicode.js +45 -0
  32. package/dist/services/subscription/base.js +3 -0
  33. package/dist/services/subscription/index.js +20 -0
  34. package/dist/services/subscription/minimax.js +60 -0
  35. package/dist/services/subscription/zhipu.js +39 -0
  36. package/dist/services/workflow.js +203 -0
  37. package/dist/services/workspace.js +0 -1
  38. package/dist/storage/command-store.js +17 -0
  39. package/dist/storage/subscription-store.js +44 -0
  40. package/dist/storage/workflow-store.js +40 -0
  41. package/dist/web/404.html +1 -1
  42. package/dist/web/__next.__PAGE__.txt +4 -4
  43. package/dist/web/__next._full.txt +22 -21
  44. package/dist/web/__next._head.txt +4 -4
  45. package/dist/web/__next._index.txt +9 -8
  46. package/dist/web/__next._tree.txt +2 -2
  47. package/dist/web/_next/static/7UtFGbIZvN_2yiatRc2g3/_buildManifest.js +11 -0
  48. package/dist/web/_next/static/chunks/0-245kun-watp.js +2 -0
  49. package/dist/web/_next/static/chunks/0-ca_fo-yp3~z.js +1 -0
  50. package/dist/web/_next/static/chunks/0-vgd3j-zh3m8.js +2 -0
  51. package/dist/web/_next/static/chunks/0.4.g.8yf4rs0.js +3 -0
  52. package/dist/web/_next/static/chunks/02m_-ngl9w8co.js +1 -0
  53. package/dist/web/_next/static/chunks/03jbh7ud0jw~g.js +1 -0
  54. package/dist/web/_next/static/chunks/07kqxmubf5dua.js +1 -0
  55. package/dist/web/_next/static/chunks/088q-5_51dsrw.js +1 -0
  56. package/dist/web/_next/static/chunks/08fqgb~~a~4ck.js +1 -0
  57. package/dist/web/_next/static/chunks/09_ki3dc5cfwv.css +1 -0
  58. package/dist/web/_next/static/chunks/09jryrjps0vl2.js +1 -0
  59. package/dist/web/_next/static/chunks/0amzlgoqe50tv.js +8 -0
  60. package/dist/web/_next/static/chunks/0b2tump5duj9j.js +1 -0
  61. package/dist/web/_next/static/chunks/0car_w834cbb6.js +1 -0
  62. package/dist/web/_next/static/chunks/0fwvdy-ml8wpk.js +1 -0
  63. package/dist/web/_next/static/chunks/0g4vm6.v0o_lt.js +1 -0
  64. package/dist/web/_next/static/chunks/0g_b4t~000.o~.js +179 -0
  65. package/dist/web/_next/static/chunks/0gyede80jpy3n.js +4 -0
  66. package/dist/web/_next/static/chunks/0h256h-tu4e0r.js +2 -0
  67. package/dist/web/_next/static/chunks/0ib18ul605e~a.js +1 -0
  68. package/dist/web/_next/static/chunks/0j1g_rd9t5ot1.js +1 -0
  69. package/dist/web/_next/static/chunks/0jn~llaqcxo4q.js +1 -0
  70. package/dist/web/_next/static/chunks/0jvmviuftg5e2.css +1 -0
  71. package/dist/web/_next/static/chunks/0lb8l2~6s_owo.js +1 -0
  72. package/dist/web/_next/static/chunks/0o4m39hw4fb_j.js +1 -0
  73. package/dist/web/_next/static/chunks/0pep4mkvt3.rh.js +31 -0
  74. package/dist/web/_next/static/chunks/0pq2670_ezbcj.js +1 -0
  75. package/dist/web/_next/static/chunks/0q_scqkk9.t53.js +2 -0
  76. package/dist/web/_next/static/chunks/0qyjxx0y7rzuu.js +1 -0
  77. package/dist/web/_next/static/chunks/0rrdur.v1a5r7.js +1 -0
  78. package/dist/web/_next/static/chunks/0spo.tmfeas-o.js +1 -0
  79. package/dist/web/_next/static/chunks/0u88ij9dqqh~-.js +1 -0
  80. package/dist/web/_next/static/chunks/0zl19l5tuoppw.js +1 -0
  81. package/dist/web/_next/static/chunks/11n16hogah-5..js +1 -0
  82. package/dist/web/_next/static/chunks/1250wo~-5dgyx.js +1 -0
  83. package/dist/web/_next/static/chunks/14n8i2xz4_y-e.js +1 -0
  84. package/dist/web/_next/static/chunks/160ji-.dfvm20.js +1 -0
  85. package/dist/web/_next/static/chunks/turbopack-0lxiiw.jhevml.js +1 -0
  86. package/dist/web/_next/static/media/favicon.0~ekuj.zhggpa.ico +0 -0
  87. package/dist/web/_not-found/__next._full.txt +26 -19
  88. package/dist/web/_not-found/__next._head.txt +4 -4
  89. package/dist/web/_not-found/__next._index.txt +9 -8
  90. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +2 -2
  91. package/dist/web/_not-found/__next._not-found.txt +3 -3
  92. package/dist/web/_not-found/__next._tree.txt +2 -2
  93. package/dist/web/_not-found.html +1 -1
  94. package/dist/web/_not-found.txt +26 -19
  95. package/dist/web/apple-touch-icon.png +0 -0
  96. package/dist/web/favicon.ico +0 -0
  97. package/dist/web/icon-192.png +0 -0
  98. package/dist/web/icon-512.png +0 -0
  99. package/dist/web/index.html +1 -1
  100. package/dist/web/index.txt +22 -21
  101. package/dist/web/login/__next._full.txt +25 -23
  102. package/dist/web/login/__next._head.txt +4 -4
  103. package/dist/web/login/__next._index.txt +9 -8
  104. package/dist/web/login/__next._tree.txt +2 -2
  105. package/dist/web/login/__next.login.__PAGE__.txt +4 -4
  106. package/dist/web/login/__next.login.txt +3 -3
  107. package/dist/web/login.html +1 -1
  108. package/dist/web/login.txt +25 -23
  109. package/dist/web/settings/__next._full.txt +36 -0
  110. package/dist/web/settings/__next._head.txt +6 -0
  111. package/dist/web/settings/__next._index.txt +11 -0
  112. package/dist/web/settings/__next._tree.txt +8 -0
  113. package/dist/web/settings/__next.settings.__PAGE__.txt +9 -0
  114. package/dist/web/settings/__next.settings.txt +7 -0
  115. package/dist/web/settings/agents/__next._full.txt +39 -0
  116. package/dist/web/settings/agents/__next._head.txt +6 -0
  117. package/dist/web/settings/agents/__next._index.txt +11 -0
  118. package/dist/web/settings/agents/__next._tree.txt +8 -0
  119. package/dist/web/settings/agents/__next.settings.agents.__PAGE__.txt +9 -0
  120. package/dist/web/settings/agents/__next.settings.agents.txt +5 -0
  121. package/dist/web/settings/agents/__next.settings.txt +7 -0
  122. package/dist/web/settings/agents.html +1 -0
  123. package/dist/web/settings/agents.txt +39 -0
  124. package/dist/web/settings/mcps/__next._full.txt +39 -0
  125. package/dist/web/settings/mcps/__next._head.txt +6 -0
  126. package/dist/web/settings/mcps/__next._index.txt +11 -0
  127. package/dist/web/settings/mcps/__next._tree.txt +8 -0
  128. package/dist/web/settings/mcps/__next.settings.mcps.__PAGE__.txt +9 -0
  129. package/dist/web/settings/mcps/__next.settings.mcps.txt +5 -0
  130. package/dist/web/settings/mcps/__next.settings.txt +7 -0
  131. package/dist/web/settings/mcps.html +1 -0
  132. package/dist/web/settings/mcps.txt +39 -0
  133. package/dist/web/settings/models/__next._full.txt +39 -0
  134. package/dist/web/settings/models/__next._head.txt +6 -0
  135. package/dist/web/settings/models/__next._index.txt +11 -0
  136. package/dist/web/settings/models/__next._tree.txt +8 -0
  137. package/dist/web/settings/models/__next.settings.models.__PAGE__.txt +9 -0
  138. package/dist/web/settings/models/__next.settings.models.txt +5 -0
  139. package/dist/web/settings/models/__next.settings.txt +7 -0
  140. package/dist/web/settings/models.html +1 -0
  141. package/dist/web/settings/models.txt +39 -0
  142. package/dist/web/settings/providers/__next._full.txt +39 -0
  143. package/dist/web/settings/providers/__next._head.txt +6 -0
  144. package/dist/web/settings/providers/__next._index.txt +11 -0
  145. package/dist/web/settings/providers/__next._tree.txt +8 -0
  146. package/dist/web/settings/providers/__next.settings.providers.__PAGE__.txt +9 -0
  147. package/dist/web/settings/providers/__next.settings.providers.txt +5 -0
  148. package/dist/web/settings/providers/__next.settings.txt +7 -0
  149. package/dist/web/settings/providers.html +1 -0
  150. package/dist/web/settings/providers.txt +39 -0
  151. package/dist/web/settings/skills/__next._full.txt +39 -0
  152. package/dist/web/settings/skills/__next._head.txt +6 -0
  153. package/dist/web/settings/skills/__next._index.txt +11 -0
  154. package/dist/web/settings/skills/__next._tree.txt +8 -0
  155. package/dist/web/settings/skills/__next.settings.skills.__PAGE__.txt +9 -0
  156. package/dist/web/settings/skills/__next.settings.skills.txt +5 -0
  157. package/dist/web/settings/skills/__next.settings.txt +7 -0
  158. package/dist/web/settings/skills.html +1 -0
  159. package/dist/web/settings/skills.txt +39 -0
  160. package/dist/web/settings.html +1 -0
  161. package/dist/web/settings.txt +36 -0
  162. package/dist/web/workflows/__next._full.txt +35 -0
  163. package/dist/web/workflows/__next._head.txt +6 -0
  164. package/dist/web/workflows/__next._index.txt +11 -0
  165. package/dist/web/workflows/__next._tree.txt +9 -0
  166. package/dist/web/workflows/__next.workflows.__PAGE__.txt +10 -0
  167. package/dist/web/workflows/__next.workflows.txt +5 -0
  168. package/dist/web/workflows.html +1 -0
  169. package/dist/web/workflows.txt +35 -0
  170. package/dist/web/workspace/_/__next._full.txt +25 -20
  171. package/dist/web/workspace/_/__next._head.txt +4 -4
  172. package/dist/web/workspace/_/__next._index.txt +9 -8
  173. package/dist/web/workspace/_/__next._tree.txt +2 -2
  174. package/dist/web/workspace/_/__next.workspace.$d$id.__PAGE__.txt +3 -3
  175. package/dist/web/workspace/_/__next.workspace.$d$id.txt +3 -3
  176. package/dist/web/workspace/_/__next.workspace.txt +3 -3
  177. package/dist/web/workspace/_.html +1 -1
  178. package/dist/web/workspace/_.txt +25 -20
  179. package/dist/web/workspaces/__next._full.txt +25 -23
  180. package/dist/web/workspaces/__next._head.txt +4 -4
  181. package/dist/web/workspaces/__next._index.txt +9 -8
  182. package/dist/web/workspaces/__next._tree.txt +2 -2
  183. package/dist/web/workspaces/__next.workspaces.__PAGE__.txt +4 -4
  184. package/dist/web/workspaces/__next.workspaces.txt +3 -3
  185. package/dist/web/workspaces.html +1 -1
  186. package/dist/web/workspaces.txt +25 -23
  187. package/dist/ws/agent-prompt.js +84 -0
  188. package/dist/ws/agent-runner.js +592 -0
  189. package/dist/ws/handler.js +9 -1200
  190. package/dist/ws/html-utils.js +30 -0
  191. package/dist/ws/message-parts.js +498 -0
  192. package/package.json +12 -10
  193. package/dist/web/_next/static/chunks/038whpa0zpnas.js +0 -1
  194. package/dist/web/_next/static/chunks/06q5go~xoz5a3.js +0 -1
  195. package/dist/web/_next/static/chunks/095.wizobwtyg.js +0 -2
  196. package/dist/web/_next/static/chunks/0bfg.w~u-83h5.js +0 -1
  197. package/dist/web/_next/static/chunks/0ce7i6~sb20rv.js +0 -113
  198. package/dist/web/_next/static/chunks/0d4~pcva1uk-a.js +0 -1
  199. package/dist/web/_next/static/chunks/0iq70n_u75nyu.js +0 -1
  200. package/dist/web/_next/static/chunks/0memz-8zsbxpu.js +0 -1
  201. package/dist/web/_next/static/chunks/0nw~w.3~twebx.js +0 -2
  202. package/dist/web/_next/static/chunks/0pyytgz~5vt0f.js +0 -31
  203. package/dist/web/_next/static/chunks/0ujjcrz~1nq.q.css +0 -1
  204. package/dist/web/_next/static/chunks/0vdnx9n41dyjl.js +0 -1
  205. package/dist/web/_next/static/chunks/0yl4mqmxtll6g.js +0 -1
  206. package/dist/web/_next/static/chunks/0zcbfka5tcle3.js +0 -1
  207. package/dist/web/_next/static/chunks/0~eo58u99i.fr.js +0 -8
  208. package/dist/web/_next/static/chunks/13_2vxyccsv84.js +0 -4
  209. package/dist/web/_next/static/chunks/13wfs~urgxu0w.js +0 -1
  210. package/dist/web/_next/static/chunks/157~3c6wqkt83.js +0 -1
  211. package/dist/web/_next/static/chunks/15jvow_z4uq-..js +0 -1
  212. package/dist/web/_next/static/chunks/15v697nf~r-cy.js +0 -2
  213. package/dist/web/_next/static/chunks/turbopack-164~7ulq9o9yc.js +0 -1
  214. package/dist/web/_next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
  215. package/dist/web/_next/static/owMnKmxATbtXK_J_k_uHh/_buildManifest.js +0 -21
  216. /package/dist/web/_next/static/{owMnKmxATbtXK_J_k_uHh → 7UtFGbIZvN_2yiatRc2g3}/_clientMiddlewareManifest.js +0 -0
  217. /package/dist/web/_next/static/{owMnKmxATbtXK_J_k_uHh → 7UtFGbIZvN_2yiatRc2g3}/_ssgManifest.js +0 -0
@@ -0,0 +1,60 @@
1
+ import { SubscriptionProviderBase } from './base.js';
2
+ const ALLOWED_MODELS = ['MiniMax-M*', 'coding-plan-vlm', 'coding-plan-search'];
3
+ export class MiniMaxSubscriptionProvider extends SubscriptionProviderBase {
4
+ provider = 'minimax';
5
+ async fetchQuota(config) {
6
+ // Auto-extract X-Group-Id from cookie if not in headers
7
+ const groupId = config.headers?.['X-Group-Id'] ?? config.headers?.['x-group-id']
8
+ ?? this.extractCookieValue(config.cookie, 'minimax_group_id_v2');
9
+ const url = 'https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains';
10
+ const res = await fetch(url, {
11
+ method: 'GET',
12
+ headers: {
13
+ 'Accept': 'application/json, text/plain, */*',
14
+ 'Referer': 'https://platform.minimaxi.com/',
15
+ 'Origin': 'https://platform.minimaxi.com',
16
+ ...(groupId ? { 'X-Group-Id': groupId } : {}),
17
+ ...(config.cookie ? { 'Cookie': config.cookie } : {}),
18
+ ...(config.headers ?? {}),
19
+ },
20
+ });
21
+ console.log(`[subscription:minimax] quota response: ${res.status} ${res.statusText}`);
22
+ if (!res.ok) {
23
+ throw new Error(`MiniMax API returned ${res.status}: ${res.statusText}`);
24
+ }
25
+ const json = await res.json();
26
+ if (json.base_resp.status_code !== 0) {
27
+ throw new Error(`MiniMax API error: ${json.base_resp.status_msg}`);
28
+ }
29
+ const limits = json.model_remains
30
+ .filter(m => ALLOWED_MODELS.includes(m.model_name))
31
+ .map(m => {
32
+ const total = m.current_interval_total_count;
33
+ const used = m.current_interval_usage_count;
34
+ const remaining = total - used;
35
+ const percentage = total > 0 ? Math.round((used / total) * 100) : 0;
36
+ return {
37
+ type: m.model_name,
38
+ usage: used,
39
+ currentValue: remaining,
40
+ remaining,
41
+ percentage,
42
+ nextResetTime: m.end_time,
43
+ usageDetails: [],
44
+ };
45
+ });
46
+ return {
47
+ provider: 'minimax',
48
+ label: config.label,
49
+ limits,
50
+ fetchedAt: new Date().toISOString(),
51
+ };
52
+ }
53
+ extractCookieValue(cookie, name) {
54
+ if (!cookie)
55
+ return undefined;
56
+ const match = cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
57
+ return match?.[1];
58
+ }
59
+ }
60
+ //# sourceMappingURL=minimax.js.map
@@ -0,0 +1,39 @@
1
+ import { SubscriptionProviderBase } from './base.js';
2
+ export class ZhiPuSubscriptionProvider extends SubscriptionProviderBase {
3
+ provider = 'zhipu';
4
+ async fetchQuota(config) {
5
+ const url = 'https://bigmodel.cn/api/monitor/usage/quota/limit';
6
+ const res = await fetch(url, {
7
+ method: 'GET',
8
+ headers: {
9
+ 'Accept': 'application/json, text/plain, */*',
10
+ 'Set-Language': 'zh',
11
+ ...config.headers,
12
+ },
13
+ });
14
+ if (!res.ok) {
15
+ throw new Error(`ZhiPu API returned ${res.status}: ${res.statusText}`);
16
+ }
17
+ const json = await res.json();
18
+ if (json.code !== 200 || !json.success) {
19
+ throw new Error(`ZhiPu API error: ${json.msg}`);
20
+ }
21
+ return {
22
+ provider: 'zhipu',
23
+ label: config.label,
24
+ limits: json.data.limits.map(l => ({
25
+ type: l.type,
26
+ unit: l.unit,
27
+ number: l.number,
28
+ usage: l.usage,
29
+ currentValue: l.currentValue,
30
+ remaining: l.remaining,
31
+ percentage: l.percentage,
32
+ nextResetTime: l.nextResetTime,
33
+ usageDetails: l.usageDetails,
34
+ })),
35
+ fetchedAt: new Date().toISOString(),
36
+ };
37
+ }
38
+ }
39
+ //# sourceMappingURL=zhipu.js.map
@@ -0,0 +1,203 @@
1
+ // packages/server/src/services/workflow.ts
2
+ // NOTE: All storage functions are synchronous (matching json-store pattern).
3
+ // Service functions are also synchronous where they only call sync storage.
4
+ // Route handlers wrap in async for Express compatibility.
5
+ import { v4 as uuid } from 'uuid';
6
+ import * as workflowStore from '../storage/workflow-store.js';
7
+ import { listTemplates } from './agent.js';
8
+ // --- DAG Validation ---
9
+ function topologicalSort(nodes, edges) {
10
+ const adj = new Map();
11
+ const inDegree = new Map();
12
+ for (const node of nodes) {
13
+ adj.set(node.id, []);
14
+ inDegree.set(node.id, 0);
15
+ }
16
+ for (const edge of edges) {
17
+ adj.get(edge.source).push(edge.target);
18
+ inDegree.set(edge.target, (inDegree.get(edge.target) ?? 0) + 1);
19
+ }
20
+ const queue = [];
21
+ for (const [id, deg] of inDegree) {
22
+ if (deg === 0)
23
+ queue.push(id);
24
+ }
25
+ const result = [];
26
+ while (queue.length > 0) {
27
+ const id = queue.shift();
28
+ result.push(id);
29
+ for (const neighbor of adj.get(id) ?? []) {
30
+ const newDeg = (inDegree.get(neighbor) ?? 1) - 1;
31
+ inDegree.set(neighbor, newDeg);
32
+ if (newDeg === 0)
33
+ queue.push(neighbor);
34
+ }
35
+ }
36
+ return result.length === nodes.length ? result : null;
37
+ }
38
+ function hasDuplicateEdges(edges) {
39
+ const seen = new Set();
40
+ for (const e of edges) {
41
+ const key = `${e.source}->${e.target}`;
42
+ if (seen.has(key))
43
+ return true;
44
+ seen.add(key);
45
+ }
46
+ return false;
47
+ }
48
+ function hasSelfLoops(edges) {
49
+ return edges.some(e => e.source === e.target);
50
+ }
51
+ export function validateDAG(template) {
52
+ if (template.nodes.length === 0)
53
+ return 'Workflow must have at least one node';
54
+ if (hasSelfLoops(template.edges))
55
+ return 'Self-loops are not allowed';
56
+ if (hasDuplicateEdges(template.edges))
57
+ return 'Duplicate edges are not allowed';
58
+ const allNodeIds = new Set(template.nodes.map(n => n.id));
59
+ for (const e of template.edges) {
60
+ if (!allNodeIds.has(e.source))
61
+ return `Edge references unknown source node: ${e.source}`;
62
+ if (!allNodeIds.has(e.target))
63
+ return `Edge references unknown target node: ${e.target}`;
64
+ }
65
+ if (topologicalSort(template.nodes, template.edges) === null) {
66
+ return 'Workflow contains a cycle';
67
+ }
68
+ return null;
69
+ }
70
+ // --- Role Staleness Resolution ---
71
+ function resolveStaleRoles(nodes) {
72
+ const agentMap = new Map(listTemplates().map(a => [a.id, a]));
73
+ const invalidIds = [];
74
+ const resolved = nodes.map(node => {
75
+ const agent = agentMap.get(node.data.agentConfigId);
76
+ if (!agent) {
77
+ invalidIds.push(node.id);
78
+ return node;
79
+ }
80
+ return {
81
+ ...node,
82
+ data: {
83
+ ...node.data,
84
+ role: agent.role,
85
+ avatarUrl: agent.avatarUrl,
86
+ modelId: agent.modelId,
87
+ },
88
+ };
89
+ });
90
+ return { nodes: resolved, invalidIds };
91
+ }
92
+ // --- CRUD (synchronous) ---
93
+ export function listWorkflows() {
94
+ return workflowStore.listWorkflows();
95
+ }
96
+ export function getWorkflow(workflowId) {
97
+ return workflowStore.getWorkflow(workflowId);
98
+ }
99
+ export function createWorkflow(input) {
100
+ const now = new Date().toISOString();
101
+ const nodes = input.nodes ?? [];
102
+ const edges = input.edges ?? [];
103
+ const { nodes: resolvedNodes, invalidIds } = resolveStaleRoles(nodes);
104
+ if (invalidIds.length > 0) {
105
+ throw new Error(`Invalid agent references in nodes: ${invalidIds.join(', ')}`);
106
+ }
107
+ const template = {
108
+ id: uuid(),
109
+ name: input.name,
110
+ description: input.description,
111
+ nodes: resolvedNodes,
112
+ edges,
113
+ viewport: input.viewport,
114
+ createdAt: now,
115
+ updatedAt: now,
116
+ };
117
+ const error = validateDAG(template);
118
+ if (error)
119
+ throw new Error(error);
120
+ workflowStore.createWorkflow(template);
121
+ return template;
122
+ }
123
+ export function updateWorkflow(workflowId, updates) {
124
+ const existing = workflowStore.getWorkflow(workflowId);
125
+ if (!existing)
126
+ throw new Error('Workflow not found');
127
+ let nodes = updates.nodes ?? existing.nodes;
128
+ if (updates.nodes) {
129
+ const resolved = resolveStaleRoles(updates.nodes);
130
+ if (resolved.invalidIds.length > 0) {
131
+ throw new Error(`Invalid agent references in nodes: ${resolved.invalidIds.join(', ')}`);
132
+ }
133
+ nodes = resolved.nodes;
134
+ }
135
+ const updated = {
136
+ ...existing,
137
+ ...updates,
138
+ nodes,
139
+ id: existing.id,
140
+ createdAt: existing.createdAt,
141
+ updatedAt: new Date().toISOString(),
142
+ };
143
+ if (updates.nodes || updates.edges) {
144
+ const error = validateDAG(updated);
145
+ if (error)
146
+ throw new Error(error);
147
+ }
148
+ workflowStore.updateWorkflow(updated);
149
+ return updated;
150
+ }
151
+ export function deleteWorkflow(workflowId) {
152
+ const existing = workflowStore.getWorkflow(workflowId);
153
+ if (!existing)
154
+ throw new Error('Workflow not found');
155
+ workflowStore.deleteWorkflow(workflowId);
156
+ }
157
+ export function duplicateWorkflow(workflowId) {
158
+ const existing = workflowStore.getWorkflow(workflowId);
159
+ if (!existing)
160
+ throw new Error('Workflow not found');
161
+ const now = new Date().toISOString();
162
+ const duplicated = {
163
+ ...existing,
164
+ id: uuid(),
165
+ name: `${existing.name} (Copy)`,
166
+ createdAt: now,
167
+ updatedAt: now,
168
+ };
169
+ workflowStore.createWorkflow(duplicated);
170
+ return duplicated;
171
+ }
172
+ export function mapWorkflowToTaskDrafts(template) {
173
+ const dependsOn = new Map();
174
+ for (const node of template.nodes) {
175
+ dependsOn.set(node.id, []);
176
+ }
177
+ for (const edge of template.edges) {
178
+ dependsOn.get(edge.target)?.push(edge.source);
179
+ }
180
+ return template.nodes.map(node => ({
181
+ key: node.id,
182
+ title: node.data.taskTitleTemplate || `Execute ${node.data.label}`,
183
+ description: node.data.taskDescriptionTemplate || `Task assigned to ${node.data.label} (${node.data.role})`,
184
+ agentConfigId: node.data.agentConfigId,
185
+ dependsOnKeys: dependsOn.get(node.id)?.length ? dependsOn.get(node.id) : undefined,
186
+ sandboxDirs: undefined,
187
+ }));
188
+ }
189
+ // --- Run-time Validation ---
190
+ export function validateWorkflowForRun(_workspaceId, template, memberAgentIds) {
191
+ const agentMap = new Map(listTemplates().map((a) => [a.id, a]));
192
+ for (const node of template.nodes) {
193
+ const agent = agentMap.get(node.data.agentConfigId);
194
+ if (!agent)
195
+ return `Agent "${node.data.label}" (${node.data.agentConfigId}) no longer exists`;
196
+ if (!agent.enabled)
197
+ return `Agent "${agent.name}" is disabled`;
198
+ if (!memberAgentIds.has(node.data.agentConfigId))
199
+ return `Agent "${agent.name}" is not in the issue channel members`;
200
+ }
201
+ return null;
202
+ }
203
+ //# sourceMappingURL=workflow.js.map
@@ -39,7 +39,6 @@ export function create(input) {
39
39
  updatedAt: now,
40
40
  activeChannels: [],
41
41
  activeIssues: [],
42
- agents: [],
43
42
  };
44
43
  ensureDir(agentspaceDir);
45
44
  initAgentspace(agentspaceDir);
@@ -0,0 +1,17 @@
1
+ import { ensureDir, readJsonFile, writeJsonFile } from './json-store.js';
2
+ import path from 'node:path';
3
+ import { getDataDir } from './json-store.js';
4
+ function commandsFile(workspaceId) {
5
+ return path.join(getDataDir(), 'workspaces', workspaceId, 'commands.json');
6
+ }
7
+ export function listCommands(workspaceId) {
8
+ return readJsonFile(commandsFile(workspaceId)) ?? [];
9
+ }
10
+ export function getCommand(workspaceId, commandId) {
11
+ return listCommands(workspaceId).find(c => c.id === commandId) ?? null;
12
+ }
13
+ export function saveCommands(workspaceId, commands) {
14
+ ensureDir(path.dirname(commandsFile(workspaceId)));
15
+ writeJsonFile(commandsFile(workspaceId), commands);
16
+ }
17
+ //# sourceMappingURL=command-store.js.map
@@ -0,0 +1,44 @@
1
+ import { join } from 'node:path';
2
+ import { v4 as uuid } from 'uuid';
3
+ import { getDataDir, ensureDir, readJsonFile, writeJsonFile } from './json-store.js';
4
+ const FILE = () => {
5
+ const dir = join(getDataDir(), 'subscriptions');
6
+ ensureDir(dir);
7
+ return join(dir, 'configs.json');
8
+ };
9
+ export function listSubscriptions() {
10
+ return readJsonFile(FILE()) ?? [];
11
+ }
12
+ function saveAll(items) {
13
+ writeJsonFile(FILE(), items);
14
+ }
15
+ export function getSubscription(id) {
16
+ return listSubscriptions().find(s => s.id === id);
17
+ }
18
+ export function createSubscription(data) {
19
+ const items = listSubscriptions();
20
+ const now = new Date().toISOString();
21
+ const item = { ...data, id: uuid(), createdAt: now, updatedAt: now };
22
+ items.push(item);
23
+ saveAll(items);
24
+ return item;
25
+ }
26
+ export function updateSubscription(id, patch) {
27
+ const items = listSubscriptions();
28
+ const idx = items.findIndex(s => s.id === id);
29
+ if (idx < 0)
30
+ return undefined;
31
+ Object.assign(items[idx], patch, { updatedAt: new Date().toISOString() });
32
+ saveAll(items);
33
+ return items[idx];
34
+ }
35
+ export function deleteSubscription(id) {
36
+ const items = listSubscriptions();
37
+ const len = items.length;
38
+ const filtered = items.filter(s => s.id !== id);
39
+ if (filtered.length === len)
40
+ return false;
41
+ saveAll(filtered);
42
+ return true;
43
+ }
44
+ //# sourceMappingURL=subscription-store.js.map
@@ -0,0 +1,40 @@
1
+ // packages/server/src/storage/workflow-store.ts
2
+ // NOTE: All functions are synchronous to match json-store.ts and issue-store.ts patterns
3
+ import { ensureDir, readJsonFile, writeJsonFile, deleteFile, getDataDir } from './json-store.js';
4
+ import path from 'node:path';
5
+ function workflowsDir() {
6
+ return path.join(getDataDir(), 'workflows');
7
+ }
8
+ function workflowsIndex() {
9
+ return path.join(workflowsDir(), 'index.json');
10
+ }
11
+ function workflowFile(workflowId) {
12
+ return path.join(workflowsDir(), `${workflowId}.json`);
13
+ }
14
+ export function listWorkflows() {
15
+ return readJsonFile(workflowsIndex()) ?? [];
16
+ }
17
+ export function getWorkflow(workflowId) {
18
+ return readJsonFile(workflowFile(workflowId));
19
+ }
20
+ export function createWorkflow(workflow) {
21
+ ensureDir(workflowsDir());
22
+ writeJsonFile(workflowFile(workflow.id), workflow);
23
+ const index = listWorkflows();
24
+ index.push(workflow);
25
+ writeJsonFile(workflowsIndex(), index);
26
+ }
27
+ export function updateWorkflow(workflow) {
28
+ writeJsonFile(workflowFile(workflow.id), workflow);
29
+ const index = listWorkflows();
30
+ const idx = index.findIndex(w => w.id === workflow.id);
31
+ if (idx !== -1)
32
+ index[idx] = workflow;
33
+ writeJsonFile(workflowsIndex(), index);
34
+ }
35
+ export function deleteWorkflow(workflowId) {
36
+ deleteFile(workflowFile(workflowId));
37
+ const index = listWorkflows();
38
+ writeJsonFile(workflowsIndex(), index.filter(w => w.id !== workflowId));
39
+ }
40
+ //# sourceMappingURL=workflow-store.js.map
package/dist/web/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="zh-CN" class="dm_sans_81a33cc5-module___RQdfW__variable outfit_8334a424-module__TwcMYa__variable poppins_37c4598a-module__JRG3Wq__variable h-dvh overflow-hidden antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0-oog4zg4_m~m.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/0ujjcrz~1nq.q.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0pyytgz~5vt0f.js"/><script src="/_next/static/chunks/031c~uxc3ie87.js" async=""></script><script src="/_next/static/chunks/0yl4mqmxtll6g.js" async=""></script><script src="/_next/static/chunks/0202ia13sijwb.js" async=""></script><script src="/_next/static/chunks/13_2vxyccsv84.js" async=""></script><script src="/_next/static/chunks/095.wizobwtyg.js" async=""></script><script src="/_next/static/chunks/turbopack-164~7ulq9o9yc.js" async=""></script><script src="/_next/static/chunks/15jvow_z4uq-..js" async=""></script><script src="/_next/static/chunks/0memz-8zsbxpu.js" async=""></script><script src="/_next/static/chunks/157~3c6wqkt83.js" async=""></script><script src="/_next/static/chunks/0d4~pcva1uk-a.js" async=""></script><script src="/_next/static/chunks/038whpa0zpnas.js" async=""></script><script src="/_next/static/chunks/0zcbfka5tcle3.js" async=""></script><script src="/_next/static/chunks/15v697nf~r-cy.js" async=""></script><script src="/_next/static/chunks/0nw~w.3~twebx.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>Agent Spaces</title><meta name="description" content="Multi-agent collaborative coding workspace"/><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script></head><body class="h-full overflow-hidden font-sans"><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/0pyytgz~5vt0f.js" id="_R_" async=""></script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[950396,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"ThemeProvider\"]\n3:I[177053,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"AuthGuard\"]\n4:I[994876,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"AppShell\"]\n5:I[242864,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"default\"]\n6:I[46907,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"default\"]\n7:I[360112,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"Toaster\"]\n8:I[990774,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[990774,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"ViewportBoundary\"]\ne:I[990774,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"MetadataBoundary\"]\n10:I[785502,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"style\"]\n:HL[\"/_next/static/chunks/0ujjcrz~1nq.q.css\",\"style\"]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0ujjcrz~1nq.q.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/15jvow_z4uq-..js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0memz-8zsbxpu.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/157~3c6wqkt83.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/038whpa0zpnas.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/0zcbfka5tcle3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/15v697nf~r-cy.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/_next/static/chunks/0nw~w.3~twebx.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"className\":\"dm_sans_81a33cc5-module___RQdfW__variable outfit_8334a424-module__TwcMYa__variable poppins_37c4598a-module__JRG3Wq__variable h-dvh overflow-hidden antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full overflow-hidden font-sans\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"system\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L7\",null,{\"richColors\":true,\"position\":\"bottom-right\"}]]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,\"$@b\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0ujjcrz~1nq.q.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"owMnKmxATbtXK_J_k_uHh\"}\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>self.__next_f.push([1,"11:[]\nb:\"$W11\"\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>self.__next_f.push([1,"12:I[946513,[\"/_next/static/chunks/15jvow_z4uq-..js\",\"/_next/static/chunks/0memz-8zsbxpu.js\",\"/_next/static/chunks/157~3c6wqkt83.js\",\"/_next/static/chunks/0d4~pcva1uk-a.js\",\"/_next/static/chunks/038whpa0zpnas.js\",\"/_next/static/chunks/0zcbfka5tcle3.js\",\"/_next/static/chunks/15v697nf~r-cy.js\",\"/_next/static/chunks/0nw~w.3~twebx.js\"],\"IconMark\"]\na:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"Agent Spaces\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaborative coding workspace\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L12\",\"3\",{}]]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script></body></html><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script>
1
+ <!DOCTYPE html><html lang="" class="dm_sans_81a33cc5-module___RQdfW__variable outfit_8334a424-module__TwcMYa__variable poppins_37c4598a-module__JRG3Wq__variable h-dvh overflow-hidden antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/_next/static/chunks/0-oog4zg4_m~m.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/09_ki3dc5cfwv.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0pep4mkvt3.rh.js"/><script src="/_next/static/chunks/031c~uxc3ie87.js" async=""></script><script src="/_next/static/chunks/0h256h-tu4e0r.js" async=""></script><script src="/_next/static/chunks/0202ia13sijwb.js" async=""></script><script src="/_next/static/chunks/0gyede80jpy3n.js" async=""></script><script src="/_next/static/chunks/turbopack-0lxiiw.jhevml.js" async=""></script><script src="/_next/static/chunks/0o4m39hw4fb_j.js" async=""></script><script src="/_next/static/chunks/088q-5_51dsrw.js" async=""></script><script src="/_next/static/chunks/02m_-ngl9w8co.js" async=""></script><script src="/_next/static/chunks/0qyjxx0y7rzuu.js" async=""></script><script src="/_next/static/chunks/0-245kun-watp.js" async=""></script><script src="/_next/static/chunks/0u88ij9dqqh~-.js" async=""></script><script src="/_next/static/chunks/08fqgb~~a~4ck.js" async=""></script><script src="/_next/static/chunks/0.4.g.8yf4rs0.js" async=""></script><script src="/_next/static/chunks/1250wo~-5dgyx.js" async=""></script><script src="/_next/static/chunks/0fwvdy-ml8wpk.js" async=""></script><script src="/_next/static/chunks/0q_scqkk9.t53.js" async=""></script><script src="/_next/static/chunks/03jbh7ud0jw~g.js" async=""></script><script src="/_next/static/chunks/0b2tump5duj9j.js" async=""></script><script src="/_next/static/chunks/0rrdur.v1a5r7.js" async=""></script><script src="/_next/static/chunks/0car_w834cbb6.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>Agent Spaces</title><meta name="description" content="Multi-agent collaborative coding workspace"/><link rel="icon" href="/favicon.ico?favicon.0~ekuj.zhggpa.ico" sizes="32x32" type="image/x-icon"/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script></head><body class="h-full overflow-hidden font-sans"><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/0pep4mkvt3.rh.js" id="_R_" async=""></script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[950396,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"ThemeProvider\"]\n3:I[556106,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"LocaleProvider\"]\n4:I[177053,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"AuthGuard\"]\n5:I[994876,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"AppShell\"]\n6:I[242864,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"default\"]\n7:I[46907,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"default\"]\n8:I[360112,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0."])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"Toaster\"]\ne:I[785502,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"style\"]\n:HL[\"/_next/static/chunks/09_ki3dc5cfwv.css\",\"style\"]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/09_ki3dc5cfwv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/088q-5_51dsrw.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/02m_-ngl9w8co.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/0-245kun-watp.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/_next/static/chunks/1250wo~-5dgyx.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/_next/static/chunks/0q_scqkk9.t53.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/_next/static/chunks/0b2tump5duj9j.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-14\",{\"src\":\"/_next/static/chunks/0car_w834cbb6.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"\",\"className\":\"dm_sans_81a33cc5-module___RQdfW__variable outfit_8334a424-module__TwcMYa__variable poppins_37c4598a-module__JRG3Wq__variable h-dvh overflow-hidden antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full overflow-hidden font-sans\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"system\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L8\",null,{\"richColors\":true,\"position\":\"bottom-right\"}]]}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],\"$L9\",\"$La\"]}]}]],null,\"$Lb\"]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[\"$Lf\",\"$L10\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"7UtFGbIZvN_2yiatRc2g3\"}\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"11:I[990774,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"OutletBoundary\"]\n12:\"$Sreact.suspense\"\n15:I[990774,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"ViewportBoundary\"]\n17:I[990774,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"MetadataBoundary\"]\n9:[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}]\na:[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]\nb:[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@13\"}]}]\n14:[]\nc:\"$W14\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L15\",null,{\"children\":\"$L16\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nf:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-oog4zg4_m~m.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n10:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/09_ki3dc5cfwv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"16:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}]]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script><script>self.__next_f.push([1,"19:I[946513,[\"/_next/static/chunks/0o4m39hw4fb_j.js\",\"/_next/static/chunks/088q-5_51dsrw.js\",\"/_next/static/chunks/02m_-ngl9w8co.js\",\"/_next/static/chunks/0qyjxx0y7rzuu.js\",\"/_next/static/chunks/0-245kun-watp.js\",\"/_next/static/chunks/0u88ij9dqqh~-.js\",\"/_next/static/chunks/08fqgb~~a~4ck.js\",\"/_next/static/chunks/0.4.g.8yf4rs0.js\",\"/_next/static/chunks/1250wo~-5dgyx.js\",\"/_next/static/chunks/0fwvdy-ml8wpk.js\",\"/_next/static/chunks/0q_scqkk9.t53.js\",\"/_next/static/chunks/03jbh7ud0jw~g.js\",\"/_next/static/chunks/0b2tump5duj9j.js\",\"/_next/static/chunks/0rrdur.v1a5r7.js\",\"/_next/static/chunks/0car_w834cbb6.js\"],\"IconMark\"]\n13:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"Agent Spaces\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Multi-agent collaborative coding workspace\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0~ekuj.zhggpa.ico\",\"sizes\":\"32x32\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$L19\",\"5\",{}]]\n"])</script><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script></body></html><script>(function(){try{var t=localStorage.getItem('agent-spaces-theme');var d=t==='dark'||((!t||t==='system')&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.classList.add(d?'dark':'light');document.documentElement.style.colorScheme=d?'dark':'light'}catch(e){}})()</script><script>(function(){try{var l=localStorage.getItem('agent-spaces-locale');document.documentElement.lang=(l==='en')?'en':'zh-CN'}catch(e){}})()</script>
@@ -1,9 +1,9 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[487786,["/_next/static/chunks/15jvow_z4uq-..js","/_next/static/chunks/0memz-8zsbxpu.js","/_next/static/chunks/157~3c6wqkt83.js","/_next/static/chunks/0d4~pcva1uk-a.js","/_next/static/chunks/038whpa0zpnas.js","/_next/static/chunks/0zcbfka5tcle3.js","/_next/static/chunks/15v697nf~r-cy.js","/_next/static/chunks/0nw~w.3~twebx.js"],"ClientPageRoot"]
3
- 3:I[330997,["/_next/static/chunks/15jvow_z4uq-..js","/_next/static/chunks/0memz-8zsbxpu.js","/_next/static/chunks/157~3c6wqkt83.js","/_next/static/chunks/0d4~pcva1uk-a.js","/_next/static/chunks/038whpa0zpnas.js","/_next/static/chunks/0zcbfka5tcle3.js","/_next/static/chunks/15v697nf~r-cy.js","/_next/static/chunks/0nw~w.3~twebx.js","/_next/static/chunks/13wfs~urgxu0w.js","/_next/static/chunks/0~eo58u99i.fr.js"],"default"]
4
- 6:I[990774,["/_next/static/chunks/15jvow_z4uq-..js","/_next/static/chunks/0memz-8zsbxpu.js","/_next/static/chunks/157~3c6wqkt83.js","/_next/static/chunks/0d4~pcva1uk-a.js","/_next/static/chunks/038whpa0zpnas.js","/_next/static/chunks/0zcbfka5tcle3.js","/_next/static/chunks/15v697nf~r-cy.js","/_next/static/chunks/0nw~w.3~twebx.js"],"OutletBoundary"]
2
+ 2:I[487786,["/_next/static/chunks/0o4m39hw4fb_j.js","/_next/static/chunks/088q-5_51dsrw.js","/_next/static/chunks/02m_-ngl9w8co.js","/_next/static/chunks/0qyjxx0y7rzuu.js","/_next/static/chunks/0-245kun-watp.js","/_next/static/chunks/0u88ij9dqqh~-.js","/_next/static/chunks/08fqgb~~a~4ck.js","/_next/static/chunks/0.4.g.8yf4rs0.js","/_next/static/chunks/1250wo~-5dgyx.js","/_next/static/chunks/0fwvdy-ml8wpk.js","/_next/static/chunks/0q_scqkk9.t53.js","/_next/static/chunks/03jbh7ud0jw~g.js","/_next/static/chunks/0b2tump5duj9j.js","/_next/static/chunks/0rrdur.v1a5r7.js","/_next/static/chunks/0car_w834cbb6.js"],"ClientPageRoot"]
3
+ 3:I[330997,["/_next/static/chunks/0o4m39hw4fb_j.js","/_next/static/chunks/088q-5_51dsrw.js","/_next/static/chunks/02m_-ngl9w8co.js","/_next/static/chunks/0qyjxx0y7rzuu.js","/_next/static/chunks/0-245kun-watp.js","/_next/static/chunks/0u88ij9dqqh~-.js","/_next/static/chunks/08fqgb~~a~4ck.js","/_next/static/chunks/0.4.g.8yf4rs0.js","/_next/static/chunks/1250wo~-5dgyx.js","/_next/static/chunks/0fwvdy-ml8wpk.js","/_next/static/chunks/0q_scqkk9.t53.js","/_next/static/chunks/03jbh7ud0jw~g.js","/_next/static/chunks/0b2tump5duj9j.js","/_next/static/chunks/0rrdur.v1a5r7.js","/_next/static/chunks/0car_w834cbb6.js","/_next/static/chunks/160ji-.dfvm20.js","/_next/static/chunks/0amzlgoqe50tv.js"],"default"]
4
+ 6:I[990774,["/_next/static/chunks/0o4m39hw4fb_j.js","/_next/static/chunks/088q-5_51dsrw.js","/_next/static/chunks/02m_-ngl9w8co.js","/_next/static/chunks/0qyjxx0y7rzuu.js","/_next/static/chunks/0-245kun-watp.js","/_next/static/chunks/0u88ij9dqqh~-.js","/_next/static/chunks/08fqgb~~a~4ck.js","/_next/static/chunks/0.4.g.8yf4rs0.js","/_next/static/chunks/1250wo~-5dgyx.js","/_next/static/chunks/0fwvdy-ml8wpk.js","/_next/static/chunks/0q_scqkk9.t53.js","/_next/static/chunks/03jbh7ud0jw~g.js","/_next/static/chunks/0b2tump5duj9j.js","/_next/static/chunks/0rrdur.v1a5r7.js","/_next/static/chunks/0car_w834cbb6.js"],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
- 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/13wfs~urgxu0w.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0~eo58u99i.fr.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"owMnKmxATbtXK_J_k_uHh"}
6
+ 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/160ji-.dfvm20.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0amzlgoqe50tv.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"7UtFGbIZvN_2yiatRc2g3"}
7
7
  4:{}
8
8
  5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
9
9
  8:null