@clawpump/claw-agent 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/.mailmap +4 -0
- package/agent/apps/desktop/README.md +3 -3
- package/agent/apps/desktop/assets/icon.icns +0 -0
- package/agent/apps/desktop/assets/icon.ico +0 -0
- package/agent/apps/desktop/assets/icon.png +0 -0
- package/agent/apps/desktop/electron/backend-ready.cjs +2 -2
- package/agent/apps/desktop/electron/dashboard-token.cjs +3 -3
- package/agent/apps/desktop/electron/hardening.cjs +1 -1
- package/agent/apps/desktop/electron/main.cjs +65 -65
- package/agent/apps/desktop/index.html +1 -1
- package/agent/apps/desktop/package.json +11 -11
- package/agent/apps/desktop/public/apple-touch-icon.png +0 -0
- package/agent/apps/desktop/public/claw-mark.png +0 -0
- package/agent/apps/desktop/scripts/set-exe-identity.cjs +2 -2
- package/agent/apps/desktop/src/app/chat/composer/controls.tsx +2 -0
- package/agent/apps/desktop/src/app/chat/composer/index.tsx +10 -0
- package/agent/apps/desktop/src/app/chat/composer/pod-credits.tsx +49 -0
- package/agent/apps/desktop/src/app/chat/index.tsx +1 -1
- package/agent/apps/desktop/src/app/chat/sidebar/index.tsx +4 -2
- package/agent/apps/desktop/src/app/desktop-controller.tsx +18 -0
- package/agent/apps/desktop/src/app/gateway/hooks/use-gateway-request.ts +1 -1
- package/agent/apps/desktop/src/app/messaging/index.tsx +5 -5
- package/agent/apps/desktop/src/app/routes.ts +9 -1
- package/agent/apps/desktop/src/app/session/hooks/use-message-stream.ts +3 -3
- package/agent/apps/desktop/src/app/settings/constants.ts +5 -5
- package/agent/apps/desktop/src/app/settings/model-settings.tsx +1 -1
- package/agent/apps/desktop/src/app/settings/providers-settings.tsx +46 -1
- package/agent/apps/desktop/src/app/settings/uninstall-section.tsx +5 -5
- package/agent/apps/desktop/src/app/types.ts +9 -1
- package/agent/apps/desktop/src/app/wallet/index.tsx +244 -0
- package/agent/apps/desktop/src/app/x402/index.tsx +162 -0
- package/agent/apps/desktop/src/components/assistant-ui/thread.tsx +1 -1
- package/agent/apps/desktop/src/components/brand-mark.tsx +2 -2
- package/agent/apps/desktop/src/components/chat/intro-copy.jsonl +6 -6
- package/agent/apps/desktop/src/components/chat/intro.tsx +4 -4
- package/agent/apps/desktop/src/components/model-picker.tsx +64 -4
- package/agent/apps/desktop/src/components/pod-setup-dialog.tsx +227 -0
- package/agent/apps/desktop/src/hermes.ts +109 -3
- package/agent/apps/desktop/src/i18n/en.ts +80 -78
- package/agent/apps/desktop/src/i18n/ja.ts +82 -82
- package/agent/apps/desktop/src/i18n/runtime.test.ts +2 -2
- package/agent/apps/desktop/src/i18n/zh-hant.ts +82 -82
- package/agent/apps/desktop/src/i18n/zh.ts +87 -87
- package/agent/apps/desktop/src/lib/desktop-fs.ts +1 -1
- package/agent/apps/desktop/src/lib/desktop-slash-commands.ts +4 -4
- package/agent/apps/desktop/src/store/composer.ts +7 -0
- package/agent/apps/desktop/src/store/onboarding.ts +5 -5
- package/agent/apps/desktop/src/themes/presets.ts +54 -54
- package/agent/cli.py +184 -10
- package/agent/hermes_cli/distribution.py +188 -8
- package/agent/hermes_cli/providers.py +29 -0
- package/agent/hermes_cli/web_server.py +180 -2
- package/agent/plugins/model-providers/usepod/__init__.py +7 -1
- package/agent/scripts/release.py +1 -0
- package/agent/web/src/components/ChatSidebar.tsx +5 -0
- package/agent/web/src/components/ModelPickerDialog.tsx +28 -1
- package/agent/web/src/components/PodCredits.tsx +57 -0
- package/agent/web/src/components/PodSetupDialog.tsx +240 -0
- package/agent/web/src/lib/api.ts +23 -0
- package/package.json +1 -1
|
@@ -43,25 +43,25 @@ export const zh: Translations = {
|
|
|
43
43
|
},
|
|
44
44
|
|
|
45
45
|
boot: {
|
|
46
|
-
ready: '
|
|
46
|
+
ready: 'Claw Agent 桌面版已就绪',
|
|
47
47
|
desktopBootFailedWithMessage: message => `桌面启动失败:${message}`,
|
|
48
48
|
steps: {
|
|
49
49
|
connectingGateway: '正在连接桌面网关',
|
|
50
|
-
loadingSettings: '正在加载
|
|
50
|
+
loadingSettings: '正在加载 Claw Agent 设置',
|
|
51
51
|
loadingSessions: '正在加载最近会话',
|
|
52
52
|
startingDesktopConnection: '正在启动桌面连接',
|
|
53
|
-
startingHermesDesktop: '正在启动
|
|
53
|
+
startingHermesDesktop: '正在启动 Claw Agent 桌面版…'
|
|
54
54
|
},
|
|
55
55
|
errors: {
|
|
56
|
-
backgroundExited: '
|
|
57
|
-
backgroundExitedDuringStartup: '
|
|
56
|
+
backgroundExited: 'Claw Agent 后台进程已退出。',
|
|
57
|
+
backgroundExitedDuringStartup: 'Claw Agent 后台进程在启动期间退出。',
|
|
58
58
|
backendStopped: '后端已停止',
|
|
59
59
|
desktopBootFailed: '桌面启动失败',
|
|
60
60
|
gatewaySignInRequired: '需要登录网关',
|
|
61
61
|
ipcBridgeUnavailable: '桌面 IPC 桥不可用。'
|
|
62
62
|
},
|
|
63
63
|
failure: {
|
|
64
|
-
title: '
|
|
64
|
+
title: 'Claw Agent 无法启动',
|
|
65
65
|
description: '后台网关没有启动。请尝试下面的恢复步骤;这里不会删除你的对话或设置。',
|
|
66
66
|
remoteTitle: '需要重新登录远程网关',
|
|
67
67
|
remoteDescription: '你的远程网关会话已过期。请重新登录以恢复连接。这些操作不会删除你的对话或设置。',
|
|
@@ -95,15 +95,15 @@ export const zh: Translations = {
|
|
|
95
95
|
copyDetail: '复制详情',
|
|
96
96
|
copyDetailFailed: '无法复制通知详情',
|
|
97
97
|
backendOutOfDateTitle: '后端版本过旧',
|
|
98
|
-
backendOutOfDateMessage: '你的
|
|
99
|
-
updateHermes: '更新
|
|
98
|
+
backendOutOfDateMessage: '你的 Claw Agent 后端早于当前桌面构建,可能无法正常工作。请更新以保持一致。',
|
|
99
|
+
updateHermes: '更新 Claw Agent',
|
|
100
100
|
updateReadyTitle: '有可用更新',
|
|
101
101
|
updateReadyMessage: count => `有 ${count} 项新更改可用。`,
|
|
102
102
|
seeWhatsNew: '查看更新内容',
|
|
103
103
|
errors: {
|
|
104
104
|
elevenLabsNeedsKey: 'ElevenLabs STT 需要 ELEVENLABS_API_KEY。',
|
|
105
105
|
elevenLabsRejectedKey: 'ElevenLabs 拒绝了该 API key (401)。',
|
|
106
|
-
methodNotAllowed: '桌面后端拒绝了该请求 (405 Method Not Allowed)。请尝试重启
|
|
106
|
+
methodNotAllowed: '桌面后端拒绝了该请求 (405 Method Not Allowed)。请尝试重启 Claw Agent Desktop。',
|
|
107
107
|
microphonePermission: '麦克风权限已被拒绝。',
|
|
108
108
|
openaiRejectedApiKey: 'OpenAI 拒绝了该 API key。',
|
|
109
109
|
openaiRejectedApiKeyWithStatus: status => `OpenAI 拒绝了该 API key (${status} invalid_api_key)。`,
|
|
@@ -133,8 +133,8 @@ export const zh: Translations = {
|
|
|
133
133
|
approveAction: '批准',
|
|
134
134
|
rejectAction: '拒绝',
|
|
135
135
|
inputTitle: '需要输入',
|
|
136
|
-
inputBody: '
|
|
137
|
-
turnDoneTitle: '
|
|
136
|
+
inputBody: 'Claw Agent 正在等待你的回应。',
|
|
137
|
+
turnDoneTitle: 'Claw Agent 已完成',
|
|
138
138
|
turnDoneBody: '回复已就绪。',
|
|
139
139
|
turnErrorTitle: '本轮失败',
|
|
140
140
|
backgroundDoneTitle: '后台任务已完成',
|
|
@@ -259,7 +259,7 @@ export const zh: Translations = {
|
|
|
259
259
|
exportConfig: '导出配置',
|
|
260
260
|
importConfig: '导入配置',
|
|
261
261
|
resetToDefaults: '恢复默认',
|
|
262
|
-
resetConfirm: '将所有设置恢复为
|
|
262
|
+
resetConfirm: '将所有设置恢复为 Claw Agent 默认值?',
|
|
263
263
|
exportFailed: '导出失败',
|
|
264
264
|
resetFailed: '重置失败',
|
|
265
265
|
nav: {
|
|
@@ -280,7 +280,7 @@ export const zh: Translations = {
|
|
|
280
280
|
intro: '原生桌面通知,区别于应用内提示。设置按设备保存,每台电脑各自独立。',
|
|
281
281
|
enableAll: '启用通知',
|
|
282
282
|
enableAllDesc: '总开关。关闭后将静音下方所有通知。',
|
|
283
|
-
focusedHint: '完成提醒仅在
|
|
283
|
+
focusedHint: '完成提醒仅在 Claw Agent 处于后台时触发。',
|
|
284
284
|
kinds: {
|
|
285
285
|
approval: {
|
|
286
286
|
label: '需要批准',
|
|
@@ -288,11 +288,11 @@ export const zh: Translations = {
|
|
|
288
288
|
},
|
|
289
289
|
input: {
|
|
290
290
|
label: '需要输入',
|
|
291
|
-
description: '
|
|
291
|
+
description: 'Claw Agent 提出了问题,或需要密码或密钥。'
|
|
292
292
|
},
|
|
293
293
|
turnDone: {
|
|
294
294
|
label: '回复就绪',
|
|
295
|
-
description: '
|
|
295
|
+
description: 'Claw Agent 在后台时完成了一轮对话。'
|
|
296
296
|
},
|
|
297
297
|
turnError: {
|
|
298
298
|
label: '本轮失败',
|
|
@@ -304,7 +304,7 @@ export const zh: Translations = {
|
|
|
304
304
|
}
|
|
305
305
|
},
|
|
306
306
|
test: '发送测试通知',
|
|
307
|
-
testTitle: '
|
|
307
|
+
testTitle: 'Claw Agent',
|
|
308
308
|
testBody: '通知工作正常。',
|
|
309
309
|
testSent: '测试已发送。如果没有出现,请检查系统通知权限和专注模式/勿扰模式。',
|
|
310
310
|
testUnsupported: '此系统不支持原生通知。',
|
|
@@ -323,7 +323,7 @@ export const zh: Translations = {
|
|
|
323
323
|
advanced: '高级'
|
|
324
324
|
},
|
|
325
325
|
searchPlaceholder: {
|
|
326
|
-
about: '关于
|
|
326
|
+
about: '关于 Claw Agent Desktop',
|
|
327
327
|
config: '搜索设置…',
|
|
328
328
|
gateway: '网关连接…',
|
|
329
329
|
keys: '搜索 API 密钥…',
|
|
@@ -339,7 +339,7 @@ export const zh: Translations = {
|
|
|
339
339
|
title: '外观',
|
|
340
340
|
intro: '这些是仅桌面端的显示偏好。模式控制明暗;主题控制强调色与对话界面样式。',
|
|
341
341
|
colorMode: '颜色模式',
|
|
342
|
-
colorModeDesc: '选择固定模式,或让
|
|
342
|
+
colorModeDesc: '选择固定模式,或让 Claw Agent 跟随系统设置。',
|
|
343
343
|
toolViewTitle: '工具调用显示',
|
|
344
344
|
toolViewDesc: '产品模式隐藏原始工具数据;技术模式显示完整输入/输出。',
|
|
345
345
|
translucencyTitle: '窗口透明',
|
|
@@ -521,10 +521,10 @@ export const zh: Translations = {
|
|
|
521
521
|
personality: '新会话的默认助手风格。',
|
|
522
522
|
showReasoning: '当后端提供推理内容时予以显示。'
|
|
523
523
|
},
|
|
524
|
-
timezone: '当
|
|
524
|
+
timezone: '当 Claw Agent 需要本地时间上下文时使用。留空则使用系统时区。',
|
|
525
525
|
agent: {
|
|
526
526
|
imageInputMode: '控制图片附件如何发送给模型。',
|
|
527
|
-
maxTurns: '
|
|
527
|
+
maxTurns: 'Claw Agent 停止一次运行前工具调用轮次的上限。'
|
|
528
528
|
},
|
|
529
529
|
terminal: {
|
|
530
530
|
cwd: '工具与终端操作的默认项目目录。',
|
|
@@ -534,9 +534,9 @@ export const zh: Translations = {
|
|
|
534
534
|
codeExecution: {
|
|
535
535
|
mode: '代码执行被限定到当前项目的严格程度。'
|
|
536
536
|
},
|
|
537
|
-
fileReadMaxChars: '
|
|
537
|
+
fileReadMaxChars: 'Claw Agent 单次文件读取可读取的最大字符数。',
|
|
538
538
|
approvals: {
|
|
539
|
-
mode: '
|
|
539
|
+
mode: 'Claw Agent 如何处理需要显式审批的命令。',
|
|
540
540
|
timeout: '审批提示在超时前等待的时长。'
|
|
541
541
|
},
|
|
542
542
|
security: {
|
|
@@ -566,11 +566,11 @@ export const zh: Translations = {
|
|
|
566
566
|
},
|
|
567
567
|
updates: {
|
|
568
568
|
nonInteractiveLocalChanges:
|
|
569
|
-
'
|
|
569
|
+
'Claw Agent 从应用内更新时(无终端提示),保留本地源码修改(暂存)或丢弃(放弃)。通过终端更新时始终会询问。'
|
|
570
570
|
}
|
|
571
571
|
}),
|
|
572
572
|
about: {
|
|
573
|
-
heading: '
|
|
573
|
+
heading: 'Claw Agent Desktop',
|
|
574
574
|
version: value => `版本 ${value}`,
|
|
575
575
|
versionUnavailable: '版本不可用',
|
|
576
576
|
updates: '更新',
|
|
@@ -587,7 +587,7 @@ export const zh: Translations = {
|
|
|
587
587
|
lastChecked: age => `上次检查:${age}`,
|
|
588
588
|
justNowSuffix: ' · 刚刚',
|
|
589
589
|
automaticUpdates: '自动更新',
|
|
590
|
-
automaticUpdatesDesc: '
|
|
590
|
+
automaticUpdatesDesc: 'Claw Agent 会在后台自动检查更新,并在有可用更新时通知你。',
|
|
591
591
|
branchCommit: (branch, commit) => `分支 ${branch} · 提交 ${commit}`,
|
|
592
592
|
never: '从未',
|
|
593
593
|
justNow: '刚刚',
|
|
@@ -600,7 +600,7 @@ export const zh: Translations = {
|
|
|
600
600
|
noneParen: '(无)',
|
|
601
601
|
notSet: '未设置',
|
|
602
602
|
commaSeparated: '逗号分隔的值',
|
|
603
|
-
loading: '正在加载
|
|
603
|
+
loading: '正在加载 Claw Agent 配置...',
|
|
604
604
|
emptyTitle: '无可配置项',
|
|
605
605
|
emptyDesc: '此分区没有可调整的设置。',
|
|
606
606
|
failedLoad: '设置加载失败',
|
|
@@ -637,7 +637,7 @@ export const zh: Translations = {
|
|
|
637
637
|
title: '网关连接',
|
|
638
638
|
envOverride: '环境变量覆盖',
|
|
639
639
|
intro:
|
|
640
|
-
'
|
|
640
|
+
'Claw Agent Desktop 默认会启动自己的本地网关。当你希望此应用控制另一台机器上或可信代理后的现有 Claw Agent 后端时,可以使用远程网关。下面可按 profile 指定各自的远程主机。',
|
|
641
641
|
appliesTo: '应用于',
|
|
642
642
|
allProfiles: '所有 profile',
|
|
643
643
|
defaultConnection: '默认连接会用于所有没有自定义覆盖的 profile。',
|
|
@@ -645,10 +645,10 @@ export const zh: Translations = {
|
|
|
645
645
|
envOverrideTitle: '环境变量正在控制此桌面会话。',
|
|
646
646
|
envOverrideDesc: '取消设置 HERMES_DESKTOP_REMOTE_URL 和 HERMES_DESKTOP_REMOTE_TOKEN 后才会使用下面保存的设置。',
|
|
647
647
|
localTitle: '本地网关',
|
|
648
|
-
localDesc: '在 localhost 启动私有
|
|
648
|
+
localDesc: '在 localhost 启动私有 Claw Agent 后端。这是默认方式,并且可离线工作。',
|
|
649
649
|
remoteTitle: '远程网关',
|
|
650
650
|
remoteDesc:
|
|
651
|
-
'将此桌面外壳连接到远程
|
|
651
|
+
'将此桌面外壳连接到远程 Claw Agent 后端。托管网关使用 OAuth 或用户名密码;自托管网关也可能使用会话 token。',
|
|
652
652
|
remoteUrlTitle: '远程 URL',
|
|
653
653
|
remoteUrlDesc: '远程 dashboard 后端的基础 URL。支持路径前缀,例如 /hermes。',
|
|
654
654
|
probing: '正在检查此网关的认证方式…',
|
|
@@ -681,9 +681,9 @@ export const zh: Translations = {
|
|
|
681
681
|
enterUrlFirst: '请先输入远程 URL。',
|
|
682
682
|
restartingTitle: '网关连接正在重启',
|
|
683
683
|
savedTitle: '网关设置已保存',
|
|
684
|
-
restartingMessage: '
|
|
684
|
+
restartingMessage: 'Claw Agent Desktop 将使用已保存设置重新连接。',
|
|
685
685
|
savedMessage: '已保存,下一次重启生效。',
|
|
686
|
-
connectedTo: (baseUrl, version) => `已连接到 ${baseUrl}${version ? ` ·
|
|
686
|
+
connectedTo: (baseUrl, version) => `已连接到 ${baseUrl}${version ? ` · Claw Agent ${version}` : ''}`,
|
|
687
687
|
reachableTitle: '远程网关可访问',
|
|
688
688
|
signedOutTitle: '已退出登录',
|
|
689
689
|
signedOutMessage: '已清除远程网关会话。',
|
|
@@ -758,7 +758,7 @@ export const zh: Translations = {
|
|
|
758
758
|
providers: {
|
|
759
759
|
connectAccount: '连接账号',
|
|
760
760
|
haveApiKey: '改用 API 密钥?',
|
|
761
|
-
intro: '使用订阅登录,无需复制 API 密钥。
|
|
761
|
+
intro: '使用订阅登录,无需复制 API 密钥。Claw Agent 会在应用中为你完成浏览器登录。',
|
|
762
762
|
connected: '已连接',
|
|
763
763
|
collapse: '收起',
|
|
764
764
|
connectAnother: '连接其他提供方',
|
|
@@ -930,7 +930,7 @@ export const zh: Translations = {
|
|
|
930
930
|
},
|
|
931
931
|
nav: {
|
|
932
932
|
newChat: { title: '新建会话', detail: '开始一个新会话' },
|
|
933
|
-
settings: { title: '设置', detail: '配置
|
|
933
|
+
settings: { title: '设置', detail: '配置 Claw Agent 桌面端' },
|
|
934
934
|
skills: { title: '技能与工具', detail: '启用技能、工具集与提供方' },
|
|
935
935
|
messaging: { title: '消息平台', detail: '配置 Telegram、Slack、Discord 等' },
|
|
936
936
|
artifacts: { title: '产物', detail: '浏览生成的输出' }
|
|
@@ -952,10 +952,10 @@ export const zh: Translations = {
|
|
|
952
952
|
noSessions: '暂无会话。',
|
|
953
953
|
gatewayRunning: '消息网关运行中',
|
|
954
954
|
gatewayStopped: '消息网关已停止',
|
|
955
|
-
hermesActiveSessions: (version, count) => `
|
|
955
|
+
hermesActiveSessions: (version, count) => `Claw Agent ${version} · 活跃会话 ${count}`,
|
|
956
956
|
restartGateway: '重启网关',
|
|
957
957
|
gatewayRestartFailed: '网关重启失败。',
|
|
958
|
-
updateHermes: '更新
|
|
958
|
+
updateHermes: '更新 Claw Agent',
|
|
959
959
|
actionRunning: '运行中',
|
|
960
960
|
actionDone: '完成',
|
|
961
961
|
actionFailed: '失败',
|
|
@@ -1094,10 +1094,10 @@ export const zh: Translations = {
|
|
|
1094
1094
|
slack: '创建 Slack 应用,启用 Socket Mode,安装到你的工作区,然后复制 bot 令牌和 app 级令牌。',
|
|
1095
1095
|
mattermost: '在你的 Mattermost 服务器上,创建机器人账户或个人访问令牌,然后在此粘贴服务器 URL 和令牌。',
|
|
1096
1096
|
matrix: '用机器人账户登录你的 homeserver,然后复制访问令牌、用户 ID 和 homeserver URL。',
|
|
1097
|
-
signal: '在可访问的位置运行 signal-cli REST 桥接,然后把
|
|
1098
|
-
whatsapp: '启动
|
|
1097
|
+
signal: '在可访问的位置运行 signal-cli REST 桥接,然后把 Claw Agent 指向该 URL 和已注册的电话号码。',
|
|
1098
|
+
whatsapp: '启动 Claw Agent 自带的 WhatsApp 桥接,首次运行时扫描二维码,然后启用该平台。',
|
|
1099
1099
|
bluebubbles:
|
|
1100
|
-
'在装有 iMessage 的 Mac 上运行 BlueBubbles Server,暴露其 API,然后用服务器密码把
|
|
1100
|
+
'在装有 iMessage 的 Mac 上运行 BlueBubbles Server,暴露其 API,然后用服务器密码把 Claw Agent 指向该 URL。',
|
|
1101
1101
|
homeassistant: '在 Home Assistant 中打开你的个人资料并创建长期访问令牌。把它连同你的 HA URL 一起粘贴到这里。',
|
|
1102
1102
|
email: '使用专用邮箱。对于 Gmail/Workspace,创建应用专用密码并使用 imap.gmail.com / smtp.gmail.com。',
|
|
1103
1103
|
sms: '从 Twilio 控制台获取你的 Account SID 和 Auth Token,以及一个可发送短信的电话号码。',
|
|
@@ -1106,10 +1106,10 @@ export const zh: Translations = {
|
|
|
1106
1106
|
wecom: '在企业微信中添加群机器人,复制其 webhook key 作为 WECOM_BOT_ID。仅可发送——双向请用企业微信 (应用) 选项。',
|
|
1107
1107
|
wecom_callback: '设置一个企业微信自建应用,暴露其回调 URL,并提供 corp ID、secret、agent ID 和 AES key。',
|
|
1108
1108
|
weixin:
|
|
1109
|
-
'运行 `hermes gateway setup`,选择 Weixin,然后使用个人微信账号扫描并确认二维码。
|
|
1109
|
+
'运行 `hermes gateway setup`,选择 Weixin,然后使用个人微信账号扫描并确认二维码。Claw Agent 会通过腾讯 iLink Bot API 连接并保存凭据。',
|
|
1110
1110
|
qqbot: '在 QQ 开放平台 (q.qq.com) 注册一个应用,复制 App ID 和 Client Secret。',
|
|
1111
1111
|
api_server:
|
|
1112
|
-
'把
|
|
1112
|
+
'把 Claw Agent 暴露为兼容 OpenAI 的 API。设置一个鉴权密钥,然后把 Open WebUI / LobeChat 等指向 host:port。',
|
|
1113
1113
|
webhook: '运行一个 HTTP 服务器,供其他工具 (GitHub、GitLab、自定义应用)POST。用 secret 验证签名。'
|
|
1114
1114
|
}
|
|
1115
1115
|
},
|
|
@@ -1159,7 +1159,7 @@ export const zh: Translations = {
|
|
|
1159
1159
|
deleteDescMid: ' 并移除其 ',
|
|
1160
1160
|
deleteDescSuffix: ' 目录。此操作无法撤销。',
|
|
1161
1161
|
deleting: '删除中…',
|
|
1162
|
-
createDesc: '配置档案是相互独立的
|
|
1162
|
+
createDesc: '配置档案是相互独立的 Claw Agent 环境:各自拥有独立的配置、技能和 SOUL.md。',
|
|
1163
1163
|
nameLabel: '名称',
|
|
1164
1164
|
cloneFrom: '克隆来源',
|
|
1165
1165
|
cloneFromNone: '无(空白)',
|
|
@@ -1245,7 +1245,7 @@ export const zh: Translations = {
|
|
|
1245
1245
|
topOfHour: '每个整点',
|
|
1246
1246
|
everyHourAt: minute => `每小时的 :${minute}`,
|
|
1247
1247
|
newCron: '新建定时任务',
|
|
1248
|
-
emptyDescNew: '按 cron 表达式排程一个提示词。
|
|
1248
|
+
emptyDescNew: '按 cron 表达式排程一个提示词。Claw Agent 会运行它,并把结果发送到你选择的目的地。',
|
|
1249
1249
|
emptyDescSearch: '尝试更宽泛的搜索词。',
|
|
1250
1250
|
emptyTitleNew: '暂无排程任务',
|
|
1251
1251
|
emptyTitleSearch: '无匹配项',
|
|
@@ -1391,12 +1391,12 @@ export const zh: Translations = {
|
|
|
1391
1391
|
composer: {
|
|
1392
1392
|
message: '消息',
|
|
1393
1393
|
wakingProfile: profile => `正在唤醒 ${profile}…`,
|
|
1394
|
-
placeholderStarting: '正在启动
|
|
1395
|
-
placeholderReconnecting: '正在重新连接
|
|
1394
|
+
placeholderStarting: '正在启动 Claw Agent…',
|
|
1395
|
+
placeholderReconnecting: '正在重新连接 Claw Agent…',
|
|
1396
1396
|
placeholderFollowUp: '发送后续消息',
|
|
1397
1397
|
newSessionPlaceholders: [
|
|
1398
1398
|
'我们要构建什么?',
|
|
1399
|
-
'给
|
|
1399
|
+
'给 Claw Agent 一个任务',
|
|
1400
1400
|
'你在想什么?',
|
|
1401
1401
|
'描述你需要什么',
|
|
1402
1402
|
'我们该处理什么?',
|
|
@@ -1457,7 +1457,7 @@ export const zh: Translations = {
|
|
|
1457
1457
|
'composer.history': '循环弹窗 / 历史'
|
|
1458
1458
|
},
|
|
1459
1459
|
attachUrlTitle: '附加 URL',
|
|
1460
|
-
attachUrlDesc: '
|
|
1460
|
+
attachUrlDesc: 'Claw Agent 将抓取该页面并作为本回合的上下文。',
|
|
1461
1461
|
urlPlaceholder: 'https://example.com/post',
|
|
1462
1462
|
urlHintPre: '请包含完整 URL,例如 ',
|
|
1463
1463
|
attach: '附加',
|
|
@@ -1535,7 +1535,7 @@ export const zh: Translations = {
|
|
|
1535
1535
|
fetch: '下载中…',
|
|
1536
1536
|
pull: '马上完成…',
|
|
1537
1537
|
pydeps: '收尾中…',
|
|
1538
|
-
restart: '正在重启
|
|
1538
|
+
restart: '正在重启 Claw Agent…',
|
|
1539
1539
|
manual: '从终端更新',
|
|
1540
1540
|
error: '更新已暂停'
|
|
1541
1541
|
},
|
|
@@ -1543,28 +1543,28 @@ export const zh: Translations = {
|
|
|
1543
1543
|
checkFailedTitle: '无法检查更新',
|
|
1544
1544
|
tryAgain: '重试',
|
|
1545
1545
|
notAvailableTitle: '更新不可用',
|
|
1546
|
-
unsupportedMessage: '此版本的
|
|
1546
|
+
unsupportedMessage: '此版本的 Claw Agent 无法在应用内自行更新。',
|
|
1547
1547
|
connectionRetry: '请检查网络连接后重试。',
|
|
1548
1548
|
latestBody: '你正在运行最新版本。',
|
|
1549
1549
|
latestBodyBackend: '后端正在运行最新版本。',
|
|
1550
1550
|
allSetTitle: '已是最新',
|
|
1551
1551
|
availableTitle: '有可用更新',
|
|
1552
|
-
availableBody: '新版
|
|
1552
|
+
availableBody: '新版 Claw Agent 已可安装。',
|
|
1553
1553
|
availableTitleBackend: '后端有可用更新',
|
|
1554
|
-
availableBodyBackend: '已连接的
|
|
1554
|
+
availableBodyBackend: '已连接的 Claw Agent 后端有新版本可安装。',
|
|
1555
1555
|
availableBodyNoChangelog: '已有新版本可用。此安装方式无法显示更新日志。',
|
|
1556
1556
|
updateNow: '立即更新',
|
|
1557
1557
|
maybeLater: '稍后再说',
|
|
1558
1558
|
moreChanges: count => `另有 ${count} 项更改。`,
|
|
1559
1559
|
manualTitle: '从终端更新',
|
|
1560
|
-
manualBody: '你是从命令行安装的
|
|
1561
|
-
manualPickedUp: '下次启动
|
|
1560
|
+
manualBody: '你是从命令行安装的 Claw Agent,因此更新也需要在那里运行。请将此命令粘贴到终端:',
|
|
1561
|
+
manualPickedUp: '下次启动 Claw Agent 时会使用新版本。',
|
|
1562
1562
|
copy: '复制',
|
|
1563
1563
|
copied: '已复制',
|
|
1564
1564
|
done: '完成',
|
|
1565
|
-
applyingBody: '
|
|
1566
|
-
applyingBodyBackend: '远程后端正在应用更新并将重启。恢复后
|
|
1567
|
-
applyingClose: '
|
|
1565
|
+
applyingBody: 'Claw Agent 更新器会在自己的窗口中接管,并在完成后重新打开 Claw Agent。',
|
|
1566
|
+
applyingBodyBackend: '远程后端正在应用更新并将重启。恢复后 Claw Agent 会自动重新连接。',
|
|
1567
|
+
applyingClose: 'Claw Agent 将关闭以应用更新。',
|
|
1568
1568
|
errorTitle: '更新未完成',
|
|
1569
1569
|
errorBody: '没有数据丢失。你可以现在重试。',
|
|
1570
1570
|
notNow: '暂不',
|
|
@@ -1586,7 +1586,7 @@ export const zh: Translations = {
|
|
|
1586
1586
|
skipped: '已跳过',
|
|
1587
1587
|
failed: '失败'
|
|
1588
1588
|
},
|
|
1589
|
-
oneTimeTitle: '
|
|
1589
|
+
oneTimeTitle: 'Claw Agent 需要一次性安装',
|
|
1590
1590
|
unsupportedDesc: platform =>
|
|
1591
1591
|
`${platform} 暂不支持自动首次启动安装。请打开终端并运行下面的命令,然后重新启动此应用。之后启动会跳过此步骤。`,
|
|
1592
1592
|
installCommand: '安装命令',
|
|
@@ -1595,11 +1595,11 @@ export const zh: Translations = {
|
|
|
1595
1595
|
installTo: '将安装到',
|
|
1596
1596
|
retryAfterRun: '我已运行 -- 重试',
|
|
1597
1597
|
failedTitle: '安装失败',
|
|
1598
|
-
settingUpTitle: '正在设置
|
|
1598
|
+
settingUpTitle: '正在设置 Claw Agent',
|
|
1599
1599
|
finishingTitle: '正在收尾',
|
|
1600
1600
|
failedDesc:
|
|
1601
|
-
'某个安装步骤失败。在 Windows 上,如果另一个
|
|
1602
|
-
activeDesc: '这是一次性设置。
|
|
1601
|
+
'某个安装步骤失败。在 Windows 上,如果另一个 Claw Agent CLI 或桌面实例正在运行,可能会出现这种情况。请停止正在运行的 Claw Agent 实例后重试。可查看下面的详情或 desktop 日志中的完整记录。',
|
|
1602
|
+
activeDesc: '这是一次性设置。Claw Agent 安装器正在下载依赖并配置你的机器。之后启动会跳过此步骤。',
|
|
1603
1603
|
progress: (completed, total) => `${completed}/${total} 个步骤已完成`,
|
|
1604
1604
|
currentStage: stage => ` -- 当前:${stage}`,
|
|
1605
1605
|
fetchingManifest: '正在获取安装器 manifest...',
|
|
@@ -1617,10 +1617,10 @@ export const zh: Translations = {
|
|
|
1617
1617
|
},
|
|
1618
1618
|
|
|
1619
1619
|
onboarding: {
|
|
1620
|
-
headerTitle: '开始设置
|
|
1620
|
+
headerTitle: '开始设置 Claw Agent',
|
|
1621
1621
|
headerDesc: '连接模型提供方即可开始对话。大多数选项只需一次点击。',
|
|
1622
|
-
preparingInstall: '
|
|
1623
|
-
starting: '正在启动
|
|
1622
|
+
preparingInstall: 'Claw Agent 正在完成安装。首次运行通常不到一分钟。',
|
|
1623
|
+
starting: '正在启动 Claw Agent…',
|
|
1624
1624
|
lookingUpProviders: '正在查找提供方...',
|
|
1625
1625
|
collapse: '收起',
|
|
1626
1626
|
otherProviders: '其他提供方',
|
|
@@ -1628,7 +1628,7 @@ export const zh: Translations = {
|
|
|
1628
1628
|
chooseLater: '稍后再选择提供方',
|
|
1629
1629
|
recommended: '推荐',
|
|
1630
1630
|
connected: '已连接',
|
|
1631
|
-
featuredPitch: '一个订阅,300+ 前沿模型 — 运行
|
|
1631
|
+
featuredPitch: '一个订阅,300+ 前沿模型 — 运行 Claw Agent 的推荐方式',
|
|
1632
1632
|
openRouterPitch: '一个密钥,数百个模型 — 稳妥的默认选择',
|
|
1633
1633
|
apiKeyOptions: {
|
|
1634
1634
|
openrouter: { short: '一个密钥,多个模型', description: '用一个密钥访问数百个模型。适合新安装的默认选择。' },
|
|
@@ -1637,7 +1637,7 @@ export const zh: Translations = {
|
|
|
1637
1637
|
xai: { short: 'Grok 模型', description: '直接访问 xAI Grok 模型。' },
|
|
1638
1638
|
local: {
|
|
1639
1639
|
short: '自托管',
|
|
1640
|
-
description: '将
|
|
1640
|
+
description: '将 Claw Agent 指向本地或自托管的 OpenAI 兼容端点 (vLLM、llama.cpp、Ollama 等)。'
|
|
1641
1641
|
}
|
|
1642
1642
|
},
|
|
1643
1643
|
backToSignIn: '返回登录',
|
|
@@ -1650,8 +1650,8 @@ export const zh: Translations = {
|
|
|
1650
1650
|
update: '更新',
|
|
1651
1651
|
flowSubtitles: {
|
|
1652
1652
|
pkce: '打开浏览器登录,然后回到这里继续',
|
|
1653
|
-
device_code: '在浏览器中打开验证页面 —
|
|
1654
|
-
loopback: '打开浏览器登录 —
|
|
1653
|
+
device_code: '在浏览器中打开验证页面 — Claw Agent 会自动连接',
|
|
1654
|
+
loopback: '打开浏览器登录 — Claw Agent 会自动连接',
|
|
1655
1655
|
external: '先在终端登录一次,然后回来继续对话'
|
|
1656
1656
|
},
|
|
1657
1657
|
startingSignIn: provider => `正在为 ${provider} 启动登录...`,
|
|
@@ -1662,11 +1662,11 @@ export const zh: Translations = {
|
|
|
1662
1662
|
pickDifferentProvider: '选择其他提供方',
|
|
1663
1663
|
signInWith: provider => `使用 ${provider} 登录`,
|
|
1664
1664
|
openedBrowser: provider => `已在浏览器中打开 ${provider}。`,
|
|
1665
|
-
authorizeThere: '请在那里授权
|
|
1665
|
+
authorizeThere: '请在那里授权 Claw Agent。',
|
|
1666
1666
|
copyAuthCode: '复制授权码并粘贴到下面。',
|
|
1667
1667
|
pasteAuthCode: '粘贴授权码',
|
|
1668
1668
|
reopenAuthPage: '重新打开授权页面',
|
|
1669
|
-
autoBrowser: provider => `已在浏览器中打开 ${provider}。请在那里授权
|
|
1669
|
+
autoBrowser: provider => `已在浏览器中打开 ${provider}。请在那里授权 Claw Agent,连接会自动完成,无需复制或粘贴。`,
|
|
1670
1670
|
reopenSignInPage: '重新打开登录页面',
|
|
1671
1671
|
waitingAuthorize: '等待你授权...',
|
|
1672
1672
|
externalPending: provider => `${provider} 通过自己的 CLI 登录。请在终端运行此命令,然后回来选择“我已登录”:`,
|
|
@@ -1754,7 +1754,7 @@ export const zh: Translations = {
|
|
|
1754
1754
|
update: '更新',
|
|
1755
1755
|
updateInProgress: '正在更新',
|
|
1756
1756
|
commitsBehind: (count, branch) => `落后 ${branch} ${count} 个提交`,
|
|
1757
|
-
desktopVersion: version => `
|
|
1757
|
+
desktopVersion: version => `Claw Agent Desktop v${version}`,
|
|
1758
1758
|
backendVersion: version => `后端 v${version}`,
|
|
1759
1759
|
clientLabel: version => `客户端 v${version}`,
|
|
1760
1760
|
backendLabel: version => `后端 v${version}`,
|
|
@@ -1771,7 +1771,7 @@ export const zh: Translations = {
|
|
|
1771
1771
|
gatewayConnecting: '连接中',
|
|
1772
1772
|
gatewayOffline: '离线',
|
|
1773
1773
|
gatewayRestarting: '重启中…',
|
|
1774
|
-
gatewayTitle: '
|
|
1774
|
+
gatewayTitle: 'Claw Agent 推理网关状态',
|
|
1775
1775
|
agents: '代理',
|
|
1776
1776
|
closeAgents: '关闭代理',
|
|
1777
1777
|
openAgents: '打开代理',
|
|
@@ -1843,7 +1843,7 @@ export const zh: Translations = {
|
|
|
1843
1843
|
binaryTitle: '这看起来像二进制文件',
|
|
1844
1844
|
binaryBody: label => `预览 ${label} 可能会显示不可读文本。`,
|
|
1845
1845
|
largeTitle: '此文件较大',
|
|
1846
|
-
largeBody: (label, size) => `${label} 大小为 ${size}。
|
|
1846
|
+
largeBody: (label, size) => `${label} 大小为 ${size}。Claw Agent 只会显示前 512 KB。`,
|
|
1847
1847
|
previewAnyway: '仍然预览',
|
|
1848
1848
|
truncated: '显示前 512 KB。',
|
|
1849
1849
|
noInlineTitle: '没有内联预览',
|
|
@@ -1873,25 +1873,25 @@ export const zh: Translations = {
|
|
|
1873
1873
|
serverNotFound: '未找到服务器',
|
|
1874
1874
|
failedToLoad: '预览加载失败',
|
|
1875
1875
|
tryAgain: '重试',
|
|
1876
|
-
restarting: '
|
|
1877
|
-
askRestart: '让
|
|
1878
|
-
lookingRestart: taskId => `
|
|
1876
|
+
restarting: 'Claw Agent 正在重启...',
|
|
1877
|
+
askRestart: '让 Claw Agent 重启服务器',
|
|
1878
|
+
lookingRestart: taskId => `Claw Agent 正在查找要重启的预览服务器 (${taskId})`,
|
|
1879
1879
|
restartingTitle: '正在重启预览服务器',
|
|
1880
|
-
restartingMessage: '
|
|
1880
|
+
restartingMessage: 'Claw Agent 正在后台工作。可在预览控制台查看进度。',
|
|
1881
1881
|
startRestartFailed: message => `无法启动服务器重启:${message}`,
|
|
1882
1882
|
restartFailed: '服务器重启失败',
|
|
1883
1883
|
hideConsole: '隐藏预览控制台',
|
|
1884
1884
|
showConsole: '显示预览控制台',
|
|
1885
1885
|
hideDevTools: '隐藏预览 DevTools',
|
|
1886
1886
|
openDevTools: '打开预览 DevTools',
|
|
1887
|
-
finishedRestarting: message => `
|
|
1887
|
+
finishedRestarting: message => `Claw Agent 已完成预览服务器重启${message ? `: ${message}` : ''}`,
|
|
1888
1888
|
failedRestarting: message => `服务器重启失败:${message}`,
|
|
1889
1889
|
unknownError: '未知错误',
|
|
1890
1890
|
restartedTitle: '预览服务器已重启',
|
|
1891
1891
|
reloadingNow: '正在重新加载预览。',
|
|
1892
1892
|
restartFailedTitle: '预览重启失败',
|
|
1893
|
-
restartFailedMessage: '
|
|
1894
|
-
stillWorking: '
|
|
1893
|
+
restartFailedMessage: 'Claw Agent 无法重启服务器。',
|
|
1894
|
+
stillWorking: 'Claw Agent 仍在工作,但还没有收到重启结果。服务器命令可能正在前台运行。',
|
|
1895
1895
|
workspaceReloading: '工作区已变更,正在重新加载预览',
|
|
1896
1896
|
fileChanged: url => `文件已变更,正在重新加载预览:${url}`,
|
|
1897
1897
|
filesChanged: (count, url) => `${count} 个文件变更,正在重新加载预览:${url}`,
|
|
@@ -1909,7 +1909,7 @@ export const zh: Translations = {
|
|
|
1909
1909
|
thread: {
|
|
1910
1910
|
loadingSession: '正在加载会话',
|
|
1911
1911
|
showEarlier: '显示更早的消息',
|
|
1912
|
-
loadingResponse: '
|
|
1912
|
+
loadingResponse: 'Claw Agent 正在加载回复',
|
|
1913
1913
|
thinking: '思考中',
|
|
1914
1914
|
today: time => `今天,${time}`,
|
|
1915
1915
|
yesterday: time => `昨天,${time}`,
|
|
@@ -1937,7 +1937,7 @@ export const zh: Translations = {
|
|
|
1937
1937
|
attachingFile: '正在附加…'
|
|
1938
1938
|
},
|
|
1939
1939
|
approval: {
|
|
1940
|
-
gatewayDisconnected: '
|
|
1940
|
+
gatewayDisconnected: 'Claw Agent 网关未连接',
|
|
1941
1941
|
sendFailed: '无法发送审批响应',
|
|
1942
1942
|
run: '运行',
|
|
1943
1943
|
command: '命令',
|
|
@@ -1948,12 +1948,12 @@ export const zh: Translations = {
|
|
|
1948
1948
|
reject: '拒绝',
|
|
1949
1949
|
alwaysTitle: '始终允许此命令?',
|
|
1950
1950
|
alwaysDescription: pattern =>
|
|
1951
|
-
`这会将“${pattern}”模式加入永久允许列表 (~/.hermes/config.yaml)。
|
|
1951
|
+
`这会将“${pattern}”模式加入永久允许列表 (~/.hermes/config.yaml)。Claw Agent 对类似命令将不再询问,包括当前会话和未来会话。`,
|
|
1952
1952
|
alwaysAllow: '始终允许'
|
|
1953
1953
|
},
|
|
1954
1954
|
clarify: {
|
|
1955
1955
|
notReady: '澄清请求尚未就绪',
|
|
1956
|
-
gatewayDisconnected: '
|
|
1956
|
+
gatewayDisconnected: 'Claw Agent 网关未连接',
|
|
1957
1957
|
sendFailed: '无法发送澄清响应',
|
|
1958
1958
|
loadingQuestion: '正在加载问题…',
|
|
1959
1959
|
other: '其他 (输入你的答案)',
|
|
@@ -1990,14 +1990,14 @@ export const zh: Translations = {
|
|
|
1990
1990
|
},
|
|
1991
1991
|
|
|
1992
1992
|
prompts: {
|
|
1993
|
-
gatewayDisconnected: '
|
|
1993
|
+
gatewayDisconnected: 'Claw Agent 网关未连接',
|
|
1994
1994
|
sudoSendFailed: '无法发送 sudo 密码',
|
|
1995
1995
|
secretSendFailed: '无法发送密钥',
|
|
1996
1996
|
sudoTitle: '管理员密码',
|
|
1997
|
-
sudoDesc: '
|
|
1997
|
+
sudoDesc: 'Claw Agent 需要你的 sudo 密码来运行特权命令。它只会发送给你的本地 agent。',
|
|
1998
1998
|
sudoPlaceholder: 'sudo 密码',
|
|
1999
1999
|
secretTitle: '需要密钥',
|
|
2000
|
-
secretDesc: '
|
|
2000
|
+
secretDesc: 'Claw Agent 需要一个凭据才能继续。',
|
|
2001
2001
|
secretPlaceholder: '密钥值'
|
|
2002
2002
|
},
|
|
2003
2003
|
|
|
@@ -2047,8 +2047,8 @@ export const zh: Translations = {
|
|
|
2047
2047
|
sessionExportFailed: '无法导出会话',
|
|
2048
2048
|
imageSaved: '图片已保存',
|
|
2049
2049
|
downloadStarted: '下载已开始',
|
|
2050
|
-
restartToUseSaveImage: '重启
|
|
2051
|
-
restartToSaveImages: '重启
|
|
2050
|
+
restartToUseSaveImage: '重启 Claw Agent 桌面版后可使用保存图片。',
|
|
2051
|
+
restartToSaveImages: '重启 Claw Agent 桌面版以保存图片',
|
|
2052
2052
|
imageDownloadFailed: '图片下载失败',
|
|
2053
2053
|
openImage: '打开图片',
|
|
2054
2054
|
downloadImage: '下载图片',
|
|
@@ -39,7 +39,7 @@ function fsPath(endpoint: string, filePath: string) {
|
|
|
39
39
|
function bridge() {
|
|
40
40
|
const desktop = window.hermesDesktop
|
|
41
41
|
if (!desktop) {
|
|
42
|
-
throw new Error('
|
|
42
|
+
throw new Error('Claw Agent Desktop bridge is unavailable')
|
|
43
43
|
}
|
|
44
44
|
return desktop
|
|
45
45
|
}
|
|
@@ -42,7 +42,7 @@ export type DesktopActionId =
|
|
|
42
42
|
/** A command fulfilled by opening a desktop overlay picker. */
|
|
43
43
|
export type DesktopPickerId = 'model' | 'session'
|
|
44
44
|
|
|
45
|
-
/** Why a known
|
|
45
|
+
/** Why a known Claw Agent command has no desktop UI surface. */
|
|
46
46
|
export type DesktopUnavailableReason = 'advanced' | 'messaging' | 'settings' | 'terminal'
|
|
47
47
|
|
|
48
48
|
/**
|
|
@@ -100,7 +100,7 @@ const DESKTOP_COMMAND_SPECS: readonly DesktopCommandSpec[] = [
|
|
|
100
100
|
{ name: '/branch', description: 'Branch the latest message into a new chat', aliases: ['/fork'], surface: action('branch') },
|
|
101
101
|
{ name: '/yolo', description: 'Toggle YOLO — auto-approve dangerous commands', surface: action('yolo') },
|
|
102
102
|
{ name: '/handoff', description: 'Hand off this session to a messaging platform', surface: action('handoff'), args: true },
|
|
103
|
-
{ name: '/profile', description: 'Switch the active
|
|
103
|
+
{ name: '/profile', description: 'Switch the active Claw Agent profile', surface: action('profile') },
|
|
104
104
|
{ name: '/skin', description: 'Switch desktop theme or cycle to the next one', surface: action('skin'), args: true },
|
|
105
105
|
{ name: '/title', description: 'Rename the current session', surface: action('title') },
|
|
106
106
|
{ name: '/help', description: 'Show desktop slash commands', aliases: ['/commands'], surface: action('help') },
|
|
@@ -138,7 +138,7 @@ const DESKTOP_COMMAND_SPECS: readonly DesktopCommandSpec[] = [
|
|
|
138
138
|
{ name: '/tools', description: 'List or toggle tools available to the agent', surface: exec(), args: true },
|
|
139
139
|
{ name: '/undo', description: 'Remove the last user/assistant exchange', surface: exec() },
|
|
140
140
|
{ name: '/usage', description: 'Show token usage for this session', surface: exec() },
|
|
141
|
-
{ name: '/version', description: 'Show
|
|
141
|
+
{ name: '/version', description: 'Show Claw Agent version', surface: exec() },
|
|
142
142
|
|
|
143
143
|
// No desktop surface, but carry an alias (underscore spelling variants).
|
|
144
144
|
{ name: '/reload-mcp', aliases: ['/reload_mcp'], surface: unavailable('advanced') },
|
|
@@ -211,7 +211,7 @@ function isKnownHermesSlashCommand(command: string): boolean {
|
|
|
211
211
|
|
|
212
212
|
/**
|
|
213
213
|
* An "extension" command is anything the backend surfaces that is NOT one of
|
|
214
|
-
*
|
|
214
|
+
* Claw Agent' built-in slash commands — i.e. skill commands (`/gif-search`,
|
|
215
215
|
* `/codex`, …) and user-defined quick commands. These are user-activated, so
|
|
216
216
|
* they appear in the desktop slash palette and execute when typed.
|
|
217
217
|
*/
|
|
@@ -21,6 +21,13 @@ export const $composerDraft = atom('')
|
|
|
21
21
|
export const $composerAttachments = atom<ComposerAttachment[]>([])
|
|
22
22
|
export const $composerTerminalSelections = atom<Record<string, string>>({})
|
|
23
23
|
|
|
24
|
+
// A one-shot prompt to drop into the main composer once it's ready. Set by
|
|
25
|
+
// "send to chat" flows that navigate to a fresh chat (e.g. x402 "Use in chat",
|
|
26
|
+
// wallet "Tokenize") — navigating + an immediate insert event races the
|
|
27
|
+
// composer mount, so the composer drains this atom when it becomes ready
|
|
28
|
+
// instead. Cleared on drain so it fires exactly once.
|
|
29
|
+
export const $pendingChatPrompt = atom<string | null>(null)
|
|
30
|
+
|
|
24
31
|
// Per-thread draft stash for the decoupled composer. Session lifecycle never
|
|
25
32
|
// touches this — only ChatBar's scope swap reads/writes it. Text mirrors to
|
|
26
33
|
// localStorage; attachments are memory-only (blobs, upload state).
|