@brainpilot/web 0.0.4 → 0.0.5

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 (97) hide show
  1. package/dist/assets/index-C-8G4D4j.js +448 -0
  2. package/dist/assets/index-C501m5OS.css +1 -0
  3. package/dist/index.html +2 -2
  4. package/index.html +13 -0
  5. package/package.json +9 -3
  6. package/src/App.tsx +10 -0
  7. package/src/__tests__/api.test.ts +103 -0
  8. package/src/__tests__/messageGroups.test.ts +80 -0
  9. package/src/__tests__/newUiComponents.test.tsx +101 -0
  10. package/src/__tests__/newUiEvents.test.ts +236 -0
  11. package/src/components/chat/AskUserCard.tsx +123 -0
  12. package/src/components/chat/AutoRetryIndicator.tsx +71 -0
  13. package/src/components/chat/ComposerInput.tsx +73 -0
  14. package/src/components/chat/ComposerSendButton.tsx +26 -0
  15. package/src/components/chat/MarkdownMessage.tsx +24 -0
  16. package/src/components/chat/MessageStream.tsx +464 -0
  17. package/src/components/chat/PromptComposer.tsx +398 -0
  18. package/src/components/chat/SystemMessageBubble.tsx +46 -0
  19. package/src/components/demo/DemoFileTree.tsx +146 -0
  20. package/src/components/demo/DemoView.tsx +668 -0
  21. package/src/components/demo/TraceNodeModal.tsx +76 -0
  22. package/src/components/demo/demoBundle.ts +218 -0
  23. package/src/components/demo/demoCache.ts +42 -0
  24. package/src/components/files/FilePreviewView.tsx +153 -0
  25. package/src/components/files/FileSidebar.tsx +664 -0
  26. package/src/components/files/filePreview.ts +113 -0
  27. package/src/components/primitives/CustomSelect.tsx +200 -0
  28. package/src/components/primitives/IconButton.tsx +27 -0
  29. package/src/components/quota/DiskQuotaCriticalDialog.tsx +56 -0
  30. package/src/components/quota/DiskQuotaWarningDialog.tsx +65 -0
  31. package/src/components/quota/QuotaFileManager.tsx +197 -0
  32. package/src/components/search/SearchDialog.tsx +101 -0
  33. package/src/components/session/AgentNetwork.tsx +1240 -0
  34. package/src/components/session/AgentTraceViews.tsx +381 -0
  35. package/src/components/session/AnalyticsTab.tsx +386 -0
  36. package/src/components/session/GlobalOverview.tsx +108 -0
  37. package/src/components/session/NodeTooltip.tsx +127 -0
  38. package/src/components/session/TimelineTab.tsx +320 -0
  39. package/src/components/session/TraceGraphView.tsx +301 -0
  40. package/src/components/session/TraceNodeDetail.tsx +142 -0
  41. package/src/components/session/agentAnalytics.ts +397 -0
  42. package/src/components/session/agentNetworkShared.ts +329 -0
  43. package/src/components/session/traceLayout.ts +150 -0
  44. package/src/components/settings/SettingsDialog.tsx +719 -0
  45. package/src/components/shell/DesktopShell.tsx +236 -0
  46. package/src/components/shell/SandboxBuildingOverlay.tsx +73 -0
  47. package/src/components/shell/SandboxStatus.tsx +287 -0
  48. package/src/components/shell/TerminalDrawer.tsx +387 -0
  49. package/src/components/sidebar/Sidebar.tsx +187 -0
  50. package/src/config.ts +10 -0
  51. package/src/contexts/AppProviders.tsx +20 -0
  52. package/src/contexts/AuthContext.tsx +61 -0
  53. package/src/contexts/PreferencesContext.tsx +125 -0
  54. package/src/contexts/SSEContext.tsx +175 -0
  55. package/src/contexts/SandboxContext.tsx +310 -0
  56. package/src/contexts/SessionContext.tsx +608 -0
  57. package/src/contexts/draftStore.ts +103 -0
  58. package/src/contexts/messageFilters.ts +29 -0
  59. package/src/contexts/messageGroups.ts +77 -0
  60. package/src/contexts/messageReducer.ts +401 -0
  61. package/src/contexts/newUiEvents.ts +190 -0
  62. package/src/contracts/backend.ts +846 -0
  63. package/src/contracts/demoBundle.ts +83 -0
  64. package/src/i18n/messages/analytics.ts +96 -0
  65. package/src/i18n/messages/chat.ts +108 -0
  66. package/src/i18n/messages/contexts.ts +40 -0
  67. package/src/i18n/messages/demo.ts +80 -0
  68. package/src/i18n/messages/files.ts +82 -0
  69. package/src/i18n/messages/network.ts +186 -0
  70. package/src/i18n/messages/profile.ts +40 -0
  71. package/src/i18n/messages/quota.ts +36 -0
  72. package/src/i18n/messages/sandbox.ts +116 -0
  73. package/src/i18n/messages/search.ts +16 -0
  74. package/src/i18n/messages/settings.ts +184 -0
  75. package/src/i18n/messages/shell.ts +38 -0
  76. package/src/i18n/messages/sidebar.ts +52 -0
  77. package/src/i18n/messages/terminal.ts +22 -0
  78. package/src/i18n/messages/trace.ts +84 -0
  79. package/src/i18n/messages.ts +32 -0
  80. package/src/i18n/translate.ts +46 -0
  81. package/src/i18n/types.ts +15 -0
  82. package/src/i18n/useT.ts +15 -0
  83. package/src/main.tsx +13 -0
  84. package/src/mocks/backend.ts +722 -0
  85. package/src/styles/global.css +7429 -0
  86. package/src/styles/tokens.css +161 -0
  87. package/src/utils/api.ts +627 -0
  88. package/src/utils/download.ts +18 -0
  89. package/src/utils/format.ts +7 -0
  90. package/src/utils/zip.ts +119 -0
  91. package/src/vite-env.d.ts +1 -0
  92. package/tsconfig.app.json +22 -0
  93. package/tsconfig.json +7 -0
  94. package/tsconfig.node.json +13 -0
  95. package/vite.config.ts +13 -0
  96. package/dist/assets/index-Cd0Mi_WU.css +0 -1
  97. package/dist/assets/index-FGg-DeYR.js +0 -448
@@ -0,0 +1,186 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ // Empty state
6
+ "network.empty":
7
+ "当前会话还没有 Agent 协作活动。发送一条消息开始任务后,这里会出现 Agent 节点和它们之间的消息流。",
8
+
9
+ // Legend
10
+ "network.legend.running": "运行中",
11
+ "network.legend.live": "在线",
12
+ "network.legend.dormant": "休眠",
13
+ "network.legend.error": "错误",
14
+ "network.legend.delegate": "委派",
15
+ "network.legend.result": "结果",
16
+ "network.legend.counter": "{live}/{total} 在线 · {running} 运行中 · {edges} 条连线 · {msgs} 条消息",
17
+
18
+ // Aria labels
19
+ "network.aria.legend": "网络图例",
20
+ "network.aria.viewport": "Agent 协作网络",
21
+ "network.aria.detail": "选中详情",
22
+ "network.aria.tabs": "Agent 面板视图",
23
+ "network.aria.edgeOne": "{from} 向 {to} 发送了 {count} 条消息",
24
+ "network.aria.edgeMany": "{from} 向 {to} 发送了 {count} 条消息",
25
+ "network.aria.node": "{name} agent({status})",
26
+
27
+ // Status labels (display)
28
+ "network.status.running": "运行中",
29
+ "network.status.idle": "空闲",
30
+ "network.status.error": "错误",
31
+ "network.status.stopped": "已停止",
32
+ "network.status.live": "在线",
33
+ "network.status.dormant": "休眠",
34
+
35
+ // Node
36
+ "network.node.notSpawned": "尚未创建",
37
+
38
+ // Tabs
39
+ "network.tab.detail": "详情",
40
+ "network.tab.analytics": "分析",
41
+ "network.tab.timeline": "时间线",
42
+
43
+ // Agent detail
44
+ "network.detail.dormant": "休眠",
45
+ "network.detail.notSpawned": "尚未创建",
46
+ "network.detail.notAlive": "未存活",
47
+ "network.detail.responsibility": "职责",
48
+ "network.detail.status": "状态",
49
+ "network.detail.state": "状态",
50
+ "network.detail.currentTask": "当前任务",
51
+ "network.detail.idleWaiting": "空闲 — 等待指令",
52
+ "network.detail.notSpawnedByPrincipal": "尚未由 Principal 创建",
53
+ "network.detail.updated": "更新于",
54
+ "network.detail.communication": "通信",
55
+ "network.detail.commCount": "{sent} 已发送 · {received} 已接收",
56
+ "network.detail.activityStats": "活动统计",
57
+ "network.detail.totalMessages": "消息总数",
58
+ "network.detail.pctOfSession": "(占会话 {pct}%)",
59
+ "network.detail.messageBreakdown": "消息构成",
60
+ "network.detail.breakdownValue": "{assistant} 回复 · {reasoning} 推理 · {tool} 工具",
61
+ "network.detail.toolCalls": "工具调用",
62
+ "network.detail.topTools": "常用工具",
63
+ "network.detail.contentVolume": "内容量",
64
+ "network.detail.volumeValue": "{chars} 字符 · 约 {tokens} tokens",
65
+ "network.detail.communicationPartners": "通信对象",
66
+ "network.detail.availableTools": "可用工具",
67
+ "network.detail.noMcpTools": "无 MCP 工具",
68
+ "network.detail.displayFilters": "显示筛选",
69
+ "network.detail.filtersNote": "仅影响该 Agent 在聊天视图中的显示,网络图不受影响。",
70
+ "network.detail.sent": "已发送({count})",
71
+ "network.detail.received": "已接收({count})",
72
+ "network.detail.noOutgoing": "暂无发出的消息。",
73
+ "network.detail.noIncoming": "暂无收到的消息。",
74
+
75
+ // Edge detail
76
+ "network.edge.messages": "{count} 条消息",
77
+ "network.edge.last": "最近:{time}",
78
+ "network.edge.conversation": "对话",
79
+
80
+ // Message list / shared
81
+ "network.msg.fallback": "消息",
82
+ "network.msg.empty": "(空)",
83
+ "network.msg.more": "+ 还有 {count} 条",
84
+
85
+ // Filter chips
86
+ "network.filter.ariaGroup": "已隐藏的事件类型",
87
+ "network.filter.hiding": "隐藏:",
88
+ "network.filter.nothing": "无",
89
+ "network.filter.stopHiding": "取消隐藏 {label}",
90
+ "network.filter.addRule": "添加隐藏规则",
91
+ "network.filter.addFilter": "添加筛选",
92
+ "network.filter.popoverHeader": "隐藏以下类型的事件:",
93
+ "network.filter.messages.label": "消息",
94
+ "network.filter.messages.description": "该 Agent 的文本回复",
95
+ "network.filter.tools.label": "工具调用",
96
+ "network.filter.tools.description": "工具调用与结果",
97
+ "network.filter.hooks.label": "钩子",
98
+ "network.filter.hooks.description": "系统诊断事件",
99
+ },
100
+ {
101
+ "network.empty":
102
+ "No agent collaboration activity in this session yet. Once you send a message to start a task, agent nodes and the message flow between them will appear here.",
103
+
104
+ "network.legend.running": "running",
105
+ "network.legend.live": "live",
106
+ "network.legend.dormant": "dormant",
107
+ "network.legend.error": "error",
108
+ "network.legend.delegate": "delegate",
109
+ "network.legend.result": "result",
110
+ "network.legend.counter": "{live}/{total} live · {running} running · {edges} edges · {msgs} msgs",
111
+
112
+ "network.aria.legend": "Network legend",
113
+ "network.aria.viewport": "Agent collaboration network",
114
+ "network.aria.detail": "Selection detail",
115
+ "network.aria.tabs": "Agent panel views",
116
+ "network.aria.edgeOne": "{from} sent {count} message to {to}",
117
+ "network.aria.edgeMany": "{from} sent {count} messages to {to}",
118
+ "network.aria.node": "{name} agent ({status})",
119
+
120
+ "network.status.running": "running",
121
+ "network.status.idle": "idle",
122
+ "network.status.error": "error",
123
+ "network.status.stopped": "stopped",
124
+ "network.status.live": "live",
125
+ "network.status.dormant": "dormant",
126
+
127
+ "network.node.notSpawned": "not yet spawned",
128
+
129
+ "network.tab.detail": "Detail",
130
+ "network.tab.analytics": "Analytics",
131
+ "network.tab.timeline": "Timeline",
132
+
133
+ "network.detail.dormant": "dormant",
134
+ "network.detail.notSpawned": "not yet spawned",
135
+ "network.detail.notAlive": "not alive",
136
+ "network.detail.responsibility": "Responsibility",
137
+ "network.detail.status": "Status",
138
+ "network.detail.state": "State",
139
+ "network.detail.currentTask": "Current task",
140
+ "network.detail.idleWaiting": "Idle — waiting for instructions",
141
+ "network.detail.notSpawnedByPrincipal": "Not yet spawned by Principal",
142
+ "network.detail.updated": "Updated",
143
+ "network.detail.communication": "Communication",
144
+ "network.detail.commCount": "{sent} sent · {received} received",
145
+ "network.detail.activityStats": "Activity Statistics",
146
+ "network.detail.totalMessages": "Total messages",
147
+ "network.detail.pctOfSession": "({pct}% of session)",
148
+ "network.detail.messageBreakdown": "Message breakdown",
149
+ "network.detail.breakdownValue": "{assistant} assistant · {reasoning} reasoning · {tool} tool",
150
+ "network.detail.toolCalls": "Tool calls",
151
+ "network.detail.topTools": "Top tools",
152
+ "network.detail.contentVolume": "Content volume",
153
+ "network.detail.volumeValue": "{chars} chars · ~{tokens} tokens",
154
+ "network.detail.communicationPartners": "Communication partners",
155
+ "network.detail.availableTools": "Available tools",
156
+ "network.detail.noMcpTools": "no MCP tools",
157
+ "network.detail.displayFilters": "Display filters",
158
+ "network.detail.filtersNote": "Affects this agent in the Chat view only. Network graph is unchanged.",
159
+ "network.detail.sent": "Sent ({count})",
160
+ "network.detail.received": "Received ({count})",
161
+ "network.detail.noOutgoing": "No outgoing messages.",
162
+ "network.detail.noIncoming": "No incoming messages.",
163
+
164
+ "network.edge.messages": "{count} messages",
165
+ "network.edge.last": "last: {time}",
166
+ "network.edge.conversation": "Conversation",
167
+
168
+ "network.msg.fallback": "msg",
169
+ "network.msg.empty": "(empty)",
170
+ "network.msg.more": "+ {count} more",
171
+
172
+ "network.filter.ariaGroup": "Hidden event types",
173
+ "network.filter.hiding": "Hiding:",
174
+ "network.filter.nothing": "nothing",
175
+ "network.filter.stopHiding": "Stop hiding {label}",
176
+ "network.filter.addRule": "Add a hide rule",
177
+ "network.filter.addFilter": "add filter",
178
+ "network.filter.popoverHeader": "Hide events of type:",
179
+ "network.filter.messages.label": "messages",
180
+ "network.filter.messages.description": "Text replies from this agent",
181
+ "network.filter.tools.label": "tool calls",
182
+ "network.filter.tools.description": "Tool invocations and results",
183
+ "network.filter.hooks.label": "hooks",
184
+ "network.filter.hooks.description": "System diagnostic events",
185
+ },
186
+ );
@@ -0,0 +1,40 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ "profile.principal.role": "协调者 · 决策者",
6
+ "profile.principal.desc": "统筹整个研究流程,分解用户目标,将子任务分派给专家 Agent,校验结果并回复用户。是唯一可以创建或销毁其他 Agent 的 Agent。",
7
+ "profile.librarian.role": "知识检索 · 文献综合",
8
+ "profile.librarian.desc": "检索论文、网络资源与知识库;将发现综合为背景笔记、概念解释,以及有证据支撑的假设,供其他 Agent 使用。",
9
+ "profile.trace.role": "内部 · 轨迹图记录器",
10
+ "profile.trace.desc": "内部系统 Agent。将推理步骤记录为会话轨迹图中的节点与边;从不直接回复用户。",
11
+ "profile.experimentalist.role": "实验设计 · 验证",
12
+ "profile.experimentalist.desc": "设计并执行实验以检验假设;控制变量、将测量操作化,并根据结果迭代。",
13
+ "profile.engineer.role": "实现 · 可复现性",
14
+ "profile.engineer.desc": "将科学意图转化为可运行的代码,管理环境、数据管线、统计计算与可视化,并保证可复现性。",
15
+ "profile.writer.role": "科学写作 · 报告",
16
+ "profile.writer.desc": "将研究发现转化为清晰、严谨的论文、文档与报告,并针对受众进行调整。",
17
+ "profile.user.role": "人类用户",
18
+ "profile.user.desc": "通过聊天提示驱动会话的人类研究者。",
19
+ "profile.default.role": "专家 · 领域 Agent",
20
+ "profile.default.desc": "由主研究员创建的自定义专家 Agent。默认工具集涵盖消息通信、轨迹记录与网络/文档查询。",
21
+ },
22
+ {
23
+ "profile.principal.role": "Coordinator · Decision-maker",
24
+ "profile.principal.desc": "Oversees the entire research process, decomposes user goals, dispatches subtasks to expert agents, validates results and replies to the user. The only agent that can spawn or destroy other agents.",
25
+ "profile.librarian.role": "Knowledge search · Literature synthesis",
26
+ "profile.librarian.desc": "Searches papers, web sources and knowledge bases; synthesizes findings into background notes, concept explanations and evidence-grounded hypotheses for other agents.",
27
+ "profile.trace.role": "Internal · Graph-of-Trace recorder",
28
+ "profile.trace.desc": "Internal system agent. Records reasoning steps as nodes and edges in the session's Graph of Trace; never replies to the user directly.",
29
+ "profile.experimentalist.role": "Experiment design · Validation",
30
+ "profile.experimentalist.desc": "Designs and executes experiments to test hypotheses; controls variables, operationalizes measurements and iterates based on results.",
31
+ "profile.engineer.role": "Implementation · Reproducibility",
32
+ "profile.engineer.desc": "Translates scientific intent into working code, manages environments, data pipelines, statistical computation and visualization with reproducibility guarantees.",
33
+ "profile.writer.role": "Scientific writing · Reporting",
34
+ "profile.writer.desc": "Transforms research findings into clear, rigorous papers, documentation and reports tailored to the audience.",
35
+ "profile.user.role": "Human user",
36
+ "profile.user.desc": "The human researcher driving the session through chat prompts.",
37
+ "profile.default.role": "Expert · Domain agent",
38
+ "profile.default.desc": "A custom expert agent spawned by the principal. Default toolkit covers messaging, trace recording and web/document lookup.",
39
+ },
40
+ );
@@ -0,0 +1,36 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ "quota.warning.title": "磁盘空间不足",
6
+ "quota.warning.close": "关闭",
7
+ "quota.warning.bodyPrefix": "当前沙盒磁盘使用已达 ",
8
+ "quota.warning.bodySuffix": ",接近配额上限。",
9
+ "quota.warning.body2": "请及时清理不必要的文件,否则达到 100% 后沙盒将无法正常使用。",
10
+ "quota.warning.ack": "知道了",
11
+ "quota.critical.title": "磁盘配额已超限 — 请立即清理文件",
12
+ "quota.critical.unavailable": "沙盒已不可用",
13
+ "quota.critical.used": "已用 {used} / 限额 {limit}",
14
+ "quota.fm.loadFailed": "加载文件列表失败",
15
+ "quota.fm.confirmDelete": "确认删除 {name} 吗?",
16
+ "quota.fm.deleteFailed": "删除失败",
17
+ "quota.fm.delete": "删除",
18
+ "quota.fm.loading": "加载中…",
19
+ },
20
+ {
21
+ "quota.warning.title": "Low disk space",
22
+ "quota.warning.close": "Close",
23
+ "quota.warning.bodyPrefix": "Sandbox disk usage has reached ",
24
+ "quota.warning.bodySuffix": ", approaching the quota limit.",
25
+ "quota.warning.body2": "Please clean up unnecessary files promptly, otherwise the sandbox will stop working once it reaches 100%.",
26
+ "quota.warning.ack": "Got it",
27
+ "quota.critical.title": "Disk quota exceeded — clean up files now",
28
+ "quota.critical.unavailable": "Sandbox is no longer available",
29
+ "quota.critical.used": "Used {used} / Limit {limit}",
30
+ "quota.fm.loadFailed": "Failed to load file list",
31
+ "quota.fm.confirmDelete": "Delete {name}?",
32
+ "quota.fm.deleteFailed": "Delete failed",
33
+ "quota.fm.delete": "Delete",
34
+ "quota.fm.loading": "Loading…",
35
+ },
36
+ );
@@ -0,0 +1,116 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ // connection state
6
+ "sandbox.conn.disconnected": "断联",
7
+ "sandbox.conn.connected": "正常",
8
+ "sandbox.conn.connecting": "连接中",
9
+ "sandbox.conn.creating": "创建中",
10
+ // status notice
11
+ "sandbox.status.creating": "正在创建沙盒",
12
+ "sandbox.status.rebuilding": "正在重建沙盒",
13
+ "sandbox.status.destroying": "正在删除沙盒",
14
+ "sandbox.status.missing": "尚未创建沙盒",
15
+ "sandbox.status.quotaExceeded": "沙盒磁盘配额已超限",
16
+ "sandbox.status.error": "沙盒状态异常",
17
+ "sandbox.status.running": "沙盒运行正常",
18
+ "sandbox.status.runningDisconnected": "沙盒运行中,消息流未连接",
19
+ "sandbox.status.fallback": "沙盒状态:{status}",
20
+ "sandbox.empty": "创建沙盒后,将在这里显示容器、端口、资源占用和文件工作区状态。",
21
+ // detail labels
22
+ "sandbox.label.name": "名称",
23
+ "sandbox.label.id": "ID",
24
+ "sandbox.label.container": "容器",
25
+ "sandbox.label.hostApi": "宿主 API",
26
+ "sandbox.label.port": "端口",
27
+ "sandbox.label.created": "创建于",
28
+ "sandbox.label.memory": "内存",
29
+ "sandbox.label.cpu": "CPU",
30
+ "sandbox.label.pids": "进程数",
31
+ "sandbox.label.disk": "磁盘",
32
+ "sandbox.label.health": "健康",
33
+ "sandbox.label.runtime": "运行时",
34
+ "sandbox.label.sse": "消息流",
35
+ "sandbox.label.checked": "检查于",
36
+ // values
37
+ "sandbox.cpuUsed": "{percent}% 占用",
38
+ "sandbox.cpuQuota": "配额 {quota}% · {cpus} 核",
39
+ "sandbox.unlimited": "无限制",
40
+ "sandbox.health.checking": "检查中",
41
+ "sandbox.health.unknown": "未知",
42
+ "sandbox.health.online": "在线",
43
+ "sandbox.health.offline": "离线",
44
+ "sandbox.health.connected": "已连接",
45
+ "sandbox.logs.loading": "正在加载日志…",
46
+ "sandbox.logs.empty": "尚未加载沙盒日志。",
47
+ "sandbox.logs.failed": "加载沙盒详情失败。",
48
+ // actions
49
+ "sandbox.action.rebuild": "重建",
50
+ "sandbox.action.refresh": "刷新",
51
+ "sandbox.action.logs": "日志",
52
+ "sandbox.action.delete": "删除",
53
+ "sandbox.action.build": "创建",
54
+ "sandbox.aria.status": "沙盒状态",
55
+ // building overlay
56
+ "sandbox.overlay.timeout": "创建超时",
57
+ "sandbox.overlay.creating": "正在创建沙盒…",
58
+ "sandbox.overlay.rebuilding": "正在重建沙盒…",
59
+ "sandbox.overlay.preparing": "正在准备环境…",
60
+ "sandbox.overlay.title": "正在准备您的研究环境",
61
+ "sandbox.overlay.aria": "沙盒构建中",
62
+ },
63
+ {
64
+ "sandbox.conn.disconnected": "Disconnected",
65
+ "sandbox.conn.connected": "Connected",
66
+ "sandbox.conn.connecting": "Connecting",
67
+ "sandbox.conn.creating": "Creating",
68
+ "sandbox.status.creating": "Creating sandbox",
69
+ "sandbox.status.rebuilding": "Rebuilding sandbox",
70
+ "sandbox.status.destroying": "Deleting sandbox",
71
+ "sandbox.status.missing": "No sandbox yet",
72
+ "sandbox.status.quotaExceeded": "Sandbox disk quota exceeded",
73
+ "sandbox.status.error": "Sandbox error",
74
+ "sandbox.status.running": "Sandbox running",
75
+ "sandbox.status.runningDisconnected": "Running — message stream disconnected",
76
+ "sandbox.status.fallback": "Sandbox status: {status}",
77
+ "sandbox.empty": "Once a sandbox is created, its container, port, resource usage and file workspace will appear here.",
78
+ "sandbox.label.name": "Name",
79
+ "sandbox.label.id": "ID",
80
+ "sandbox.label.container": "Container",
81
+ "sandbox.label.hostApi": "Host API",
82
+ "sandbox.label.port": "Port",
83
+ "sandbox.label.created": "Created",
84
+ "sandbox.label.memory": "Memory",
85
+ "sandbox.label.cpu": "CPU",
86
+ "sandbox.label.pids": "PIDs",
87
+ "sandbox.label.disk": "Disk",
88
+ "sandbox.label.health": "Health",
89
+ "sandbox.label.runtime": "Runtime",
90
+ "sandbox.label.sse": "SSE",
91
+ "sandbox.label.checked": "Checked",
92
+ "sandbox.cpuUsed": "{percent}% used",
93
+ "sandbox.cpuQuota": "quota {quota}% · {cpus} CPUs",
94
+ "sandbox.unlimited": "unlimited",
95
+ "sandbox.health.checking": "checking",
96
+ "sandbox.health.unknown": "unknown",
97
+ "sandbox.health.online": "online",
98
+ "sandbox.health.offline": "offline",
99
+ "sandbox.health.connected": "connected",
100
+ "sandbox.logs.loading": "Loading logs...",
101
+ "sandbox.logs.empty": "No sandbox logs loaded.",
102
+ "sandbox.logs.failed": "Failed to load sandbox details.",
103
+ "sandbox.action.rebuild": "Rebuild",
104
+ "sandbox.action.refresh": "Refresh",
105
+ "sandbox.action.logs": "Logs",
106
+ "sandbox.action.delete": "Delete",
107
+ "sandbox.action.build": "Build",
108
+ "sandbox.aria.status": "Sandbox status",
109
+ "sandbox.overlay.timeout": "Creation timed out",
110
+ "sandbox.overlay.creating": "Creating sandbox…",
111
+ "sandbox.overlay.rebuilding": "Rebuilding sandbox…",
112
+ "sandbox.overlay.preparing": "Preparing environment…",
113
+ "sandbox.overlay.title": "Preparing your research environment",
114
+ "sandbox.overlay.aria": "Sandbox building",
115
+ },
116
+ );
@@ -0,0 +1,16 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ "search.aria": "搜索对话",
6
+ "search.placeholder": "搜索对话",
7
+ "search.recent": "近期对话",
8
+ "search.empty": "没有找到匹配的对话",
9
+ },
10
+ {
11
+ "search.aria": "Search conversations",
12
+ "search.placeholder": "Search conversations",
13
+ "search.recent": "Recent conversations",
14
+ "search.empty": "No matching conversations found",
15
+ },
16
+ );
@@ -0,0 +1,184 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ "settings.aria.dialog": "设置",
6
+ "settings.eyebrow.workspace": "工作区",
7
+ "settings.title": "设置",
8
+ "settings.aria.close": "关闭设置",
9
+ "settings.aria.sections": "设置分区",
10
+ "settings.loading": "正在加载设置…",
11
+ "settings.loadFailed": "加载设置失败",
12
+ "settings.tab.account": "账户",
13
+ "settings.tab.providers": "服务商",
14
+ "settings.tab.mcp": "MCP",
15
+ "settings.tab.preferences": "偏好",
16
+ // account
17
+ "settings.account.title": "账户",
18
+ "settings.account.username": "用户名",
19
+ "settings.account.userId": "用户 ID",
20
+ "settings.account.created": "创建于",
21
+ "settings.account.managedByHost": "身份与登录由托管层管理。",
22
+ // providers
23
+ "settings.providers.title": "服务商",
24
+ "settings.providers.desc": "服务商配置包含 API 接入设置和可供新会话使用的模型列表。",
25
+ "settings.providers.add": "添加服务商",
26
+ "settings.providers.noModelList": "无模型列表",
27
+ "settings.providers.statusTitle": "状态:{status}",
28
+ "settings.providers.edit": "编辑",
29
+ "settings.providers.test": "测试",
30
+ "settings.providers.use": "使用",
31
+ "settings.providers.remove": "移除",
32
+ "settings.providers.shared": "共享服务商",
33
+ "settings.providers.private": "私有服务商",
34
+ "settings.providers.tested": "已测试 “{name}”:{status}",
35
+ "settings.providers.testFailed": "测试失败",
36
+ "settings.providers.updated": "服务商已更新",
37
+ "settings.providers.added": "服务商已添加",
38
+ "settings.providers.activeSwitched": "已切换活动服务商为 “{name}”。新会话将使用该服务商。",
39
+ "settings.providers.saveFailed": "保存服务商失败",
40
+ "settings.providers.modelRequired": "至少需要配置一个模型",
41
+ // mcp
42
+ "settings.mcp.title": "MCP 服务器",
43
+ "settings.mcp.desc": "MCP 服务器配置定义了智能体会话可用的外部工具。",
44
+ "settings.mcp.addServer": "添加服务器",
45
+ "settings.mcp.edit": "编辑",
46
+ "settings.mcp.remove": "移除",
47
+ "settings.mcp.updated": "MCP 服务器已更新",
48
+ "settings.mcp.added": "MCP 服务器已添加",
49
+ "settings.mcp.saveFailed": "保存 MCP 服务器失败",
50
+ // preferences
51
+ "settings.prefs.title": "偏好设置",
52
+ "settings.prefs.theme": "主题",
53
+ "settings.prefs.themeLight": "浅色",
54
+ "settings.prefs.themeDark": "深色",
55
+ "settings.prefs.themeSystem": "跟随系统",
56
+ "settings.prefs.language": "语言",
57
+ "settings.prefs.confirmDangerous": "危险操作前确认",
58
+ "settings.prefs.notifyDone": "智能体任务完成时通知",
59
+ // provider form
60
+ "settings.providerForm.editAria": "编辑服务商",
61
+ "settings.providerForm.addAria": "添加服务商",
62
+ "settings.providerForm.eyebrow": "服务商",
63
+ "settings.providerForm.editTitle": "编辑服务商",
64
+ "settings.providerForm.addTitle": "添加服务商",
65
+ "settings.providerForm.close": "关闭服务商表单",
66
+ "settings.providerForm.name": "服务商名称",
67
+ "settings.providerForm.baseUrl": "基础 URL",
68
+ "settings.providerForm.apiKey": "API 密钥",
69
+ "settings.providerForm.apiKeyKeep": "(留空则保持不变)",
70
+ "settings.providerForm.hideKey": "隐藏 API 密钥",
71
+ "settings.providerForm.showKey": "显示 API 密钥",
72
+ "settings.providerForm.notes": "备注",
73
+ "settings.providerForm.notesPlaceholder": "用途备注、计费或路由提示",
74
+ "settings.providerForm.models": "模型",
75
+ "settings.providerForm.addModel": "添加模型",
76
+ "settings.providerForm.removeModel": "移除模型",
77
+ "settings.providerForm.useColor": "使用颜色 {color}",
78
+ "settings.providerForm.color": "颜色",
79
+ "settings.providerForm.cancel": "取消",
80
+ "settings.providerForm.save": "保存服务商",
81
+ // mcp form
82
+ "settings.mcpForm.editAria": "编辑 MCP 服务器",
83
+ "settings.mcpForm.addAria": "添加 MCP 服务器",
84
+ "settings.mcpForm.eyebrow": "MCP 服务器",
85
+ "settings.mcpForm.editTitle": "编辑服务器",
86
+ "settings.mcpForm.addTitle": "添加服务器",
87
+ "settings.mcpForm.close": "关闭 MCP 服务器表单",
88
+ "settings.mcpForm.name": "名称",
89
+ "settings.mcpForm.transport": "传输方式",
90
+ "settings.mcpForm.transportAria": "MCP 传输方式",
91
+ "settings.mcpForm.command": "命令",
92
+ "settings.mcpForm.arguments": "参数",
93
+ "settings.mcpForm.url": "URL",
94
+ "settings.mcpForm.cancel": "取消",
95
+ "settings.mcpForm.save": "保存服务器",
96
+ },
97
+ {
98
+ "settings.aria.dialog": "Settings",
99
+ "settings.eyebrow.workspace": "Workspace",
100
+ "settings.title": "Settings",
101
+ "settings.aria.close": "Close settings",
102
+ "settings.aria.sections": "Settings sections",
103
+ "settings.loading": "Loading settings...",
104
+ "settings.loadFailed": "Failed to load settings",
105
+ "settings.tab.account": "Account",
106
+ "settings.tab.providers": "Providers",
107
+ "settings.tab.mcp": "MCP",
108
+ "settings.tab.preferences": "Preferences",
109
+ "settings.account.title": "Account",
110
+ "settings.account.username": "Username",
111
+ "settings.account.userId": "User ID",
112
+ "settings.account.created": "Created",
113
+ "settings.account.managedByHost": "Identity and sign-in are managed by the hosting layer.",
114
+ "settings.providers.title": "Providers",
115
+ "settings.providers.desc": "Provider profiles contain both API provider settings and the model list available for new sessions.",
116
+ "settings.providers.add": "Add Provider",
117
+ "settings.providers.noModelList": "No model list",
118
+ "settings.providers.statusTitle": "Status: {status}",
119
+ "settings.providers.edit": "Edit",
120
+ "settings.providers.test": "Test",
121
+ "settings.providers.use": "Use",
122
+ "settings.providers.remove": "Remove",
123
+ "settings.providers.shared": "Shared Providers",
124
+ "settings.providers.private": "Private Providers",
125
+ "settings.providers.tested": "Tested \"{name}\": {status}",
126
+ "settings.providers.testFailed": "Test failed",
127
+ "settings.providers.updated": "Provider updated",
128
+ "settings.providers.added": "Provider added",
129
+ "settings.providers.activeSwitched": "Active provider switched to \"{name}\". New sessions will use this provider.",
130
+ "settings.providers.saveFailed": "Failed to save provider",
131
+ "settings.providers.modelRequired": "At least one model is required",
132
+ "settings.mcp.title": "MCP Servers",
133
+ "settings.mcp.desc": "MCP server profiles define external tools available to agent sessions.",
134
+ "settings.mcp.addServer": "Add Server",
135
+ "settings.mcp.edit": "Edit",
136
+ "settings.mcp.remove": "Remove",
137
+ "settings.mcp.updated": "MCP server updated",
138
+ "settings.mcp.added": "MCP server added",
139
+ "settings.mcp.saveFailed": "Failed to save MCP server",
140
+ "settings.prefs.title": "Preferences",
141
+ "settings.prefs.theme": "Theme",
142
+ "settings.prefs.themeLight": "Light",
143
+ "settings.prefs.themeDark": "Dark",
144
+ "settings.prefs.themeSystem": "System",
145
+ "settings.prefs.language": "Language",
146
+ "settings.prefs.confirmDangerous": "Confirm dangerous actions",
147
+ "settings.prefs.notifyDone": "Notify when agent work completes",
148
+ "settings.providerForm.editAria": "Edit provider",
149
+ "settings.providerForm.addAria": "Add provider",
150
+ "settings.providerForm.eyebrow": "Provider",
151
+ "settings.providerForm.editTitle": "Edit Provider",
152
+ "settings.providerForm.addTitle": "Add Provider",
153
+ "settings.providerForm.close": "Close provider form",
154
+ "settings.providerForm.name": "Provider name",
155
+ "settings.providerForm.baseUrl": "Base URL",
156
+ "settings.providerForm.apiKey": "API key",
157
+ "settings.providerForm.apiKeyKeep": "(leave blank to keep current)",
158
+ "settings.providerForm.hideKey": "Hide API key",
159
+ "settings.providerForm.showKey": "Show API key",
160
+ "settings.providerForm.notes": "Notes",
161
+ "settings.providerForm.notesPlaceholder": "Usage notes, billing, or routing hint",
162
+ "settings.providerForm.models": "Models",
163
+ "settings.providerForm.addModel": "Add model",
164
+ "settings.providerForm.removeModel": "Remove model",
165
+ "settings.providerForm.useColor": "Use color {color}",
166
+ "settings.providerForm.color": "Color",
167
+ "settings.providerForm.cancel": "Cancel",
168
+ "settings.providerForm.save": "Save Provider",
169
+ "settings.mcpForm.editAria": "Edit MCP server",
170
+ "settings.mcpForm.addAria": "Add MCP server",
171
+ "settings.mcpForm.eyebrow": "MCP Server",
172
+ "settings.mcpForm.editTitle": "Edit Server",
173
+ "settings.mcpForm.addTitle": "Add Server",
174
+ "settings.mcpForm.close": "Close MCP server form",
175
+ "settings.mcpForm.name": "Name",
176
+ "settings.mcpForm.transport": "Transport",
177
+ "settings.mcpForm.transportAria": "MCP transport",
178
+ "settings.mcpForm.command": "Command",
179
+ "settings.mcpForm.arguments": "Arguments",
180
+ "settings.mcpForm.url": "URL",
181
+ "settings.mcpForm.cancel": "Cancel",
182
+ "settings.mcpForm.save": "Save Server",
183
+ },
184
+ );
@@ -0,0 +1,38 @@
1
+ import { defineMessages } from "../types";
2
+
3
+ export default defineMessages(
4
+ {
5
+ "shell.aria.workspace": "科研工作区",
6
+ "shell.aria.toolbarActions": "工作区操作",
7
+ "shell.aria.activeSession": "当前会话",
8
+ "shell.sessionLabel": "会话",
9
+ "shell.defaultWorkspace": "BrainPilot 科研工作区",
10
+ "shell.aria.viewTabs": "工作区视图",
11
+ "shell.view.chat": "对话",
12
+ "shell.view.agents": "智能体",
13
+ "shell.view.trace": "轨迹",
14
+ "shell.aria.refreshMessages": "刷新消息",
15
+ "shell.terminal.minimize": "最小化终端",
16
+ "shell.terminal.open": "打开终端",
17
+ "shell.files.close": "关闭文件",
18
+ "shell.files.open": "打开文件",
19
+ "shell.bootstrapping": "正在载入工作区…",
20
+ },
21
+ {
22
+ "shell.aria.workspace": "Research workspace",
23
+ "shell.aria.toolbarActions": "Workspace actions",
24
+ "shell.aria.activeSession": "Active session",
25
+ "shell.sessionLabel": "Session",
26
+ "shell.defaultWorkspace": "BrainPilot research workspace",
27
+ "shell.aria.viewTabs": "Workspace view",
28
+ "shell.view.chat": "Chat",
29
+ "shell.view.agents": "Agents",
30
+ "shell.view.trace": "Trace",
31
+ "shell.aria.refreshMessages": "Refresh messages",
32
+ "shell.terminal.minimize": "Minimize terminal",
33
+ "shell.terminal.open": "Open terminal",
34
+ "shell.files.close": "Close files",
35
+ "shell.files.open": "Open files",
36
+ "shell.bootstrapping": "Loading workspace…",
37
+ },
38
+ );