clawconnect-agent 0.1.20 → 0.1.22
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/.env.example +22 -2
- package/README.md +8 -0
- package/README.zh-CN.md +29 -0
- package/dist/commands/install.js +3 -19
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/set-token.js +2 -1
- package/dist/commands/set-token.js.map +1 -1
- package/dist/commands/status.js +34 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/config/config.d.ts +1 -1
- package/dist/config/config.js +38 -10
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts +2 -1
- package/dist/config/env.js +32 -2
- package/dist/config/env.js.map +1 -1
- package/dist/core/relay/voice-input.js +13 -7
- package/dist/core/relay/voice-input.js.map +1 -1
- package/dist/hermes/relay/hermes-state-db-realtime.js +4 -21
- package/dist/hermes/relay/hermes-state-db-realtime.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-api-client.js +5 -30
- package/dist/hermes/runtime/hermes-runtime-api-client.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-api-settings.d.ts +19 -0
- package/dist/hermes/runtime/hermes-runtime-api-settings.js +69 -0
- package/dist/hermes/runtime/hermes-runtime-api-settings.js.map +1 -0
- package/dist/hermes/runtime/hermes-runtime-backups.js +6 -4
- package/dist/hermes/runtime/hermes-runtime-backups.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-chat.js +3 -2
- package/dist/hermes/runtime/hermes-runtime-chat.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-lifecycle.js +3 -2
- package/dist/hermes/runtime/hermes-runtime-lifecycle.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-paths.d.ts +9 -0
- package/dist/hermes/runtime/hermes-runtime-paths.js +67 -0
- package/dist/hermes/runtime/hermes-runtime-paths.js.map +1 -0
- package/dist/hermes/runtime/hermes-runtime-process.d.ts +2 -0
- package/dist/hermes/runtime/hermes-runtime-process.js +70 -30
- package/dist/hermes/runtime/hermes-runtime-process.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-skills.js +10 -5
- package/dist/hermes/runtime/hermes-runtime-skills.js.map +1 -1
- package/dist/hermes/runtime/hermes-runtime-state-db.js +3 -18
- package/dist/hermes/runtime/hermes-runtime-state-db.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/openclaw/backups/backup-manager.js +10 -8
- package/dist/openclaw/backups/backup-manager.js.map +1 -1
- package/dist/openclaw/config/provider-config.js +19 -19
- package/dist/openclaw/config/provider-config.js.map +1 -1
- package/dist/openclaw/handlers/local-handlers.d.ts +1 -0
- package/dist/openclaw/handlers/local-handlers.js +29 -45
- package/dist/openclaw/handlers/local-handlers.js.map +1 -1
- package/dist/openclaw/relay/chat-send-attachments.js +2 -3
- package/dist/openclaw/relay/chat-send-attachments.js.map +1 -1
- package/dist/openclaw/relay/outgoing-media-relay.d.ts +1 -0
- package/dist/openclaw/relay/outgoing-media-relay.js +18 -7
- package/dist/openclaw/relay/outgoing-media-relay.js.map +1 -1
- package/dist/openclaw/relay/session-context.js +2 -3
- package/dist/openclaw/relay/session-context.js.map +1 -1
- package/dist/openclaw/runtime/local-runtime.d.ts +1 -0
- package/dist/openclaw/runtime/local-runtime.js +81 -50
- package/dist/openclaw/runtime/local-runtime.js.map +1 -1
- package/dist/openclaw/runtime/openclaw-paths.d.ts +15 -0
- package/dist/openclaw/runtime/openclaw-paths.js +52 -0
- package/dist/openclaw/runtime/openclaw-paths.js.map +1 -0
- package/dist/openclaw/session-store.js +3 -3
- package/dist/openclaw/session-store.js.map +1 -1
- package/dist/platform/process-invocation.d.ts +14 -0
- package/dist/platform/process-invocation.js +72 -0
- package/dist/platform/process-invocation.js.map +1 -0
- package/dist/platform/service-manager-windows.d.ts +18 -5
- package/dist/platform/service-manager-windows.js +124 -92
- package/dist/platform/service-manager-windows.js.map +1 -1
- package/dist/platform/service-manager.js +5 -5
- package/dist/platform/service-manager.js.map +1 -1
- package/dist/platform/text-file-decoder.d.ts +5 -0
- package/dist/platform/text-file-decoder.js +40 -0
- package/dist/platform/text-file-decoder.js.map +1 -0
- package/package.json +3 -2
package/.env.example
CHANGED
|
@@ -22,11 +22,18 @@ CLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn
|
|
|
22
22
|
# CLAWCONNECT_ENV_FILE=/Users/you/.clawconnect/.env
|
|
23
23
|
|
|
24
24
|
# Optional: force the local OpenClaw Gateway websocket URL instead of reading
|
|
25
|
-
#
|
|
25
|
+
# OPENCLAW_CONFIG_PATH / OPENCLAW_STATE_DIR and falling back to ws://localhost:18789.
|
|
26
26
|
# CLAWCONNECT_GATEWAY_URL=ws://localhost:18789
|
|
27
|
+
# OPENCLAW_GATEWAY_PORT=18789
|
|
28
|
+
|
|
29
|
+
# Official OpenClaw path overrides for source, Homebrew, container-mounted,
|
|
30
|
+
# dedicated-service-user, and multi-gateway installations.
|
|
31
|
+
# OPENCLAW_HOME=/path/to/openclaw-user-home
|
|
32
|
+
# OPENCLAW_STATE_DIR=/path/to/openclaw-state
|
|
33
|
+
# OPENCLAW_CONFIG_PATH=/path/to/openclaw.json
|
|
27
34
|
|
|
28
35
|
# Optional: Gateway auth fallback.
|
|
29
|
-
# Prefer `clawconnect set-token` or
|
|
36
|
+
# Prefer `clawconnect set-token` or the resolved OPENCLAW_CONFIG_PATH when possible.
|
|
30
37
|
# OPENCLAW_GATEWAY_TOKEN=
|
|
31
38
|
# OPENCLAW_GATEWAY_PASSWORD=
|
|
32
39
|
|
|
@@ -39,3 +46,16 @@ CLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn
|
|
|
39
46
|
# Optional: override how local maintenance commands find the OpenClaw CLI.
|
|
40
47
|
# OPENCLAW_BIN=/usr/local/bin/openclaw
|
|
41
48
|
# OPENCLAW_PACKAGE_BIN=/path/to/openclaw/package/dist/index.js
|
|
49
|
+
# OPENCLAW_INSTALL_DIR=/path/to/openclaw/source-or-package
|
|
50
|
+
|
|
51
|
+
# Optional Hermes source/data/runtime overrides. Native Windows installs are
|
|
52
|
+
# auto-detected under %LOCALAPPDATA%\hermes; Unix/WSL defaults to ~/.hermes.
|
|
53
|
+
# HERMES_HOME=/path/to/hermes-data
|
|
54
|
+
# HERMES_BIN=/path/to/hermes
|
|
55
|
+
# HERMES_PYTHON=/path/to/python
|
|
56
|
+
# HERMES_SKILLS_DIR=/path/to/hermes-skills
|
|
57
|
+
# CLAWCONNECT_HERMES_STATE_DB=/path/to/state.db
|
|
58
|
+
# CLAWCONNECT_HERMES_API_URL=http://127.0.0.1:8642
|
|
59
|
+
# CLAWCONNECT_HERMES_API_KEY=
|
|
60
|
+
# API_SERVER_HOST=127.0.0.1
|
|
61
|
+
# API_SERVER_PORT=8642
|
package/README.md
CHANGED
|
@@ -136,6 +136,12 @@ Supported values:
|
|
|
136
136
|
|
|
137
137
|
- `CLAWCONNECT_RELAY_SERVER_URL` — default relay URL used by `clawconnect pair` when `--server` is omitted
|
|
138
138
|
- `CLAWCONNECT_GATEWAY_URL` — optional local Gateway websocket URL override
|
|
139
|
+
- `OPENCLAW_GATEWAY_PORT` — optional OpenClaw Gateway port override; the full `CLAWCONNECT_GATEWAY_URL` wins
|
|
140
|
+
- `OPENCLAW_HOME` / `OPENCLAW_STATE_DIR` / `OPENCLAW_CONFIG_PATH` — official OpenClaw path overrides for source, package-manager, container, service-user, or multi-gateway layouts
|
|
141
|
+
- `OPENCLAW_BIN` / `OPENCLAW_PACKAGE_BIN` / `OPENCLAW_INSTALL_DIR` — locate a non-npm or non-PATH OpenClaw CLI/runtime
|
|
142
|
+
- `HERMES_HOME` / `HERMES_BIN` / `HERMES_PYTHON` — override Hermes data, CLI, and Python paths; native Windows auto-detects `%LOCALAPPDATA%\hermes`
|
|
143
|
+
- `HERMES_SKILLS_DIR` / `CLAWCONNECT_HERMES_STATE_DB` — optional explicit Hermes skills and state database paths
|
|
144
|
+
- `CLAWCONNECT_HERMES_API_URL` / `CLAWCONNECT_HERMES_API_KEY` — explicit Hermes API connection; Hermes `API_SERVER_HOST`, `API_SERVER_PORT`, and `API_SERVER_KEY` remain supported
|
|
139
145
|
- `CLAWCONNECT_ENV_FILE` — optional explicit env file path. When unset, the agent reads `~/.clawconnect/.env`, then `.env.local`, then `.env`
|
|
140
146
|
- `OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` — Gateway auth fallback
|
|
141
147
|
- `CLAWCONNECT_ASR_COMMAND` — host-side speech-to-text command for ClawLink `chat.voice.send` messages. The agent saves the audio to a temporary file and runs this command; it must print the transcript to stdout. Placeholders: `{file}`, `{language}`, `{mimeType}`
|
|
@@ -179,6 +185,8 @@ clawconnect install
|
|
|
179
185
|
- Linux: prefers `systemd --user`, and falls back to `nohup` when `systemctl --user` is unavailable
|
|
180
186
|
- Windows: registers a Windows Task Scheduler task that auto-starts at logon with silent console (`powershell -WindowStyle Hidden`)
|
|
181
187
|
|
|
188
|
+
Windows profiles use isolated scheduled tasks and UTF-8 logs, for example `ClawConnectAgent-openclaw` and `ClawConnectAgent-hermes`.
|
|
189
|
+
|
|
182
190
|
On Linux hosts without `systemd --user`, `clawconnect install` will generate a fallback launcher at:
|
|
183
191
|
|
|
184
192
|
```bash
|
package/README.zh-CN.md
CHANGED
|
@@ -143,6 +143,12 @@ $EDITOR ~/.clawconnect/.env
|
|
|
143
143
|
|
|
144
144
|
- `CLAWCONNECT_RELAY_SERVER_URL`:未传 `--server` 时,`clawconnect pair` 使用的默认中继地址
|
|
145
145
|
- `CLAWCONNECT_GATEWAY_URL`:可选,本机 OpenClaw Gateway WebSocket 地址覆盖值
|
|
146
|
+
- `OPENCLAW_GATEWAY_PORT`:只覆盖 OpenClaw Gateway 端口;`CLAWCONNECT_GATEWAY_URL` 优先级更高
|
|
147
|
+
- `OPENCLAW_HOME` / `OPENCLAW_STATE_DIR` / `OPENCLAW_CONFIG_PATH`:OpenClaw 官方路径覆盖;源码、Homebrew、容器挂载、独立服务用户和多网关安装都应使用这些值
|
|
148
|
+
- `OPENCLAW_BIN` / `OPENCLAW_PACKAGE_BIN` / `OPENCLAW_INSTALL_DIR`:OpenClaw 不在 PATH 或不是 npm 安装时,指定 CLI/JS 入口或安装根目录
|
|
149
|
+
- `HERMES_HOME` / `HERMES_BIN` / `HERMES_PYTHON`:Hermes 数据目录、CLI 与 Python 覆盖;Windows 会先自动探测 `%LOCALAPPDATA%\hermes`
|
|
150
|
+
- `HERMES_SKILLS_DIR` / `CLAWCONNECT_HERMES_STATE_DB`:可选,单独指定 Hermes 技能目录和状态数据库路径
|
|
151
|
+
- `CLAWCONNECT_HERMES_API_URL` / `CLAWCONNECT_HERMES_API_KEY`:Hermes API 完整地址与鉴权;也兼容 Hermes 自己的 `API_SERVER_HOST`、`API_SERVER_PORT`、`API_SERVER_KEY`
|
|
146
152
|
- `CLAWCONNECT_ENV_FILE`:可选,显式指定 env 文件路径;未设置时会依次读取 `~/.clawconnect/.env`、`.env.local`、`.env`
|
|
147
153
|
- `OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`:Gateway 鉴权兜底值
|
|
148
154
|
- `CLAWCONNECT_ASR_COMMAND`:宿主机语音转文字命令。ClawLink 发送 `chat.voice.send` 后,agent 会把音频保存到临时文件,并执行这个命令;命令必须把识别文本输出到 stdout。可用占位符:`{file}`、`{language}`、`{mimeType}`
|
|
@@ -150,6 +156,27 @@ $EDITOR ~/.clawconnect/.env
|
|
|
150
156
|
|
|
151
157
|
Shell 里已经设置的环境变量优先级高于 env 文件。`clawconnect run`、`status`、`send-file` 会继续使用 `~/.clawconnect/config.json` 或 `~/.clawconnect/profiles/<profile>/config.json` 里已配对保存的 relay;如果要切换中继服务器,请执行 `clawconnect pair --profile <name> --server <url>` 或 `clawconnect reset --profile <name>`。
|
|
152
158
|
|
|
159
|
+
例如 OpenClaw 使用自定义状态目录和 `19001` 端口时:
|
|
160
|
+
|
|
161
|
+
```dotenv
|
|
162
|
+
OPENCLAW_STATE_DIR=D:\OpenClawData
|
|
163
|
+
OPENCLAW_CONFIG_PATH=D:\OpenClawData\openclaw.json
|
|
164
|
+
OPENCLAW_GATEWAY_PORT=19001
|
|
165
|
+
OPENCLAW_BIN=D:\Apps\OpenClaw\openclaw.cmd
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Hermes 原生 Windows 非默认安装可配置:
|
|
169
|
+
|
|
170
|
+
```dotenv
|
|
171
|
+
HERMES_HOME=D:\HermesData
|
|
172
|
+
HERMES_BIN=D:\Hermes\hermes-agent\venv\Scripts\hermes.exe
|
|
173
|
+
HERMES_PYTHON=D:\Hermes\hermes-agent\venv\Scripts\python.exe
|
|
174
|
+
CLAWCONNECT_HERMES_STATE_DB=D:\HermesData\state.db
|
|
175
|
+
CLAWCONNECT_HERMES_API_URL=http://127.0.0.1:9642
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
保存后执行 `clawconnect restart --profile <name>`,再用 `clawconnect status --profile <name>` 核对实际使用的 Gateway、state/config、Hermes home/API。如仅使用 Hermes CLI,可以不配置 API URL。
|
|
179
|
+
|
|
153
180
|
### 3. 前台运行
|
|
154
181
|
|
|
155
182
|
以当前终端前台方式启动代理:
|
|
@@ -191,6 +218,8 @@ clawconnect install
|
|
|
191
218
|
- 如果 Linux 当前环境不支持 `systemd --user`,会自动回退到 `nohup`
|
|
192
219
|
- Windows:注册为 Windows Task Scheduler 任务,登录时自动静默启动(`powershell -WindowStyle Hidden`)
|
|
193
220
|
|
|
221
|
+
Windows 的不同 profile 使用独立计划任务(例如 `ClawConnectAgent-openclaw`、`ClawConnectAgent-hermes`)和独立 UTF-8 日志,不会互相覆盖。
|
|
222
|
+
|
|
194
223
|
在不支持 `systemd --user` 的 Linux 环境下,会生成一个备用启动脚本:
|
|
195
224
|
|
|
196
225
|
```bash
|
package/dist/commands/install.js
CHANGED
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
import { existsSync, unlinkSync } from "fs";
|
|
2
|
-
import { execFileSync } from "child_process";
|
|
3
2
|
import { t } from "../i18n/index.js";
|
|
4
3
|
import { getServicePlatform, getServiceStatus, getServicePaths, installService, restartService, setRestrictiveFilePermissions, stopService, uninstallService, } from "../platform/service-manager.js";
|
|
5
4
|
import { getActiveProfile, profileConfigPath, profileDisplayName } from "../config/profile.js";
|
|
6
5
|
import { pairCommandForProfile } from "./profile-hints.js";
|
|
7
6
|
export function isInstalled() {
|
|
8
|
-
|
|
9
|
-
const servicePaths = getServicePaths();
|
|
10
|
-
if (platform === "macos")
|
|
11
|
-
return existsSync(servicePaths.macPlistPath);
|
|
12
|
-
if (platform === "linux") {
|
|
13
|
-
return existsSync(servicePaths.linuxServicePath) || existsSync(servicePaths.linuxNohupStartScriptPath);
|
|
14
|
-
}
|
|
15
|
-
if (platform === "windows") {
|
|
16
|
-
try {
|
|
17
|
-
execFileSync("schtasks", ["/query", "/tn", "ClawConnectAgent"], { stdio: "pipe" });
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return false;
|
|
7
|
+
return getServiceStatus().installed;
|
|
25
8
|
}
|
|
26
9
|
export function installCommand() {
|
|
27
10
|
const platform = getServicePlatform();
|
|
@@ -49,7 +32,8 @@ export function installCommand() {
|
|
|
49
32
|
console.log(t("install.startManually", `bash "${servicePaths.linuxNohupStartScriptPath}"`));
|
|
50
33
|
}
|
|
51
34
|
else if (platform === "windows") {
|
|
52
|
-
|
|
35
|
+
const taskName = getServiceStatus().serviceName;
|
|
36
|
+
console.log(t("install.startManually", `schtasks /run /tn "${taskName}"`));
|
|
53
37
|
}
|
|
54
38
|
}
|
|
55
39
|
export function restartCommand() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import readline from "readline";
|
|
2
2
|
import { readConfig, writeConfig } from "../config/config.js";
|
|
3
3
|
import { t } from "../i18n/index.js";
|
|
4
|
+
import { resolveOpenClawConfigPath } from "../openclaw/runtime/openclaw-paths.js";
|
|
4
5
|
export async function setTokenCommand() {
|
|
5
6
|
// Require pairing to be done first
|
|
6
7
|
let config;
|
|
@@ -15,7 +16,7 @@ export async function setTokenCommand() {
|
|
|
15
16
|
console.log(t("setToken.whereToFind"));
|
|
16
17
|
console.log(t("setToken.option1"));
|
|
17
18
|
console.log(t("setToken.option2"));
|
|
18
|
-
console.log(t("setToken.
|
|
19
|
+
console.log(t("setToken.option2path", resolveOpenClawConfigPath()));
|
|
19
20
|
console.log(t("setToken.option3"));
|
|
20
21
|
// Prompt for the token
|
|
21
22
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-token.js","sourceRoot":"","sources":["../../src/commands/set-token.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"set-token.js","sourceRoot":"","sources":["../../src/commands/set-token.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,mCAAmC;IACnC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wCAAwC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEnC,uBAAuB;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QAClD,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;IACP,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,OAAO,MAAM,CAAC,eAAe,CAAC;QAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,YAAY,CAAC;QAC3B,OAAO,MAAM,CAAC,eAAe,CAAC;QAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "fs";
|
|
2
|
-
import {
|
|
2
|
+
import { execFileSync } from "child_process";
|
|
3
3
|
import { configExists, readConfig, readGatewayUrl } from "../config/config.js";
|
|
4
4
|
import { listProfileNames, profileDisplayName } from "../config/profile.js";
|
|
5
5
|
import { t } from "../i18n/index.js";
|
|
6
6
|
import { getServiceStatus } from "../platform/service-manager.js";
|
|
7
|
+
import { decodeTextBuffer } from "../platform/text-file-decoder.js";
|
|
8
|
+
import { resolveOpenClawConfigPath, resolveOpenClawStateDir } from "../openclaw/runtime/openclaw-paths.js";
|
|
9
|
+
import { resolveHermesHomeDir } from "../hermes/runtime/hermes-runtime-paths.js";
|
|
10
|
+
import { resolveHermesApiSettings } from "../hermes/runtime/hermes-runtime-api-settings.js";
|
|
7
11
|
export function statusCommand(opts = {}) {
|
|
8
12
|
if (opts.profile === "all") {
|
|
9
13
|
const profiles = listProfileNames();
|
|
@@ -43,6 +47,21 @@ function statusOne(profile) {
|
|
|
43
47
|
}
|
|
44
48
|
if (gatewayType === "openclaw") {
|
|
45
49
|
console.log(t("status.gateway", readGatewayUrl()));
|
|
50
|
+
console.log(`OpenClaw state: ${resolveOpenClawStateDir()}`);
|
|
51
|
+
console.log(`OpenClaw config: ${resolveOpenClawConfigPath()}`);
|
|
52
|
+
const openClawInstall = process.env.OPENCLAW_BIN?.trim()
|
|
53
|
+
|| process.env.OPENCLAW_PACKAGE_BIN?.trim()
|
|
54
|
+
|| process.env.OPENCLAW_INSTALL_DIR?.trim();
|
|
55
|
+
if (openClawInstall) {
|
|
56
|
+
console.log(`OpenClaw runtime: ${openClawInstall}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(`Hermes home: ${resolveHermesHomeDir()}`);
|
|
61
|
+
const hermesApi = resolveHermesApiSettings();
|
|
62
|
+
if (hermesApi.configured) {
|
|
63
|
+
console.log(`Hermes API: ${hermesApi.baseUrl}`);
|
|
64
|
+
}
|
|
46
65
|
}
|
|
47
66
|
const service = getServiceStatus(profile);
|
|
48
67
|
if (service.platform === "unsupported") {
|
|
@@ -88,15 +107,24 @@ export function readHealth(logPath, gatewayType = "openclaw") {
|
|
|
88
107
|
function readTailLines(path, maxLines) {
|
|
89
108
|
let raw;
|
|
90
109
|
try {
|
|
91
|
-
raw = readFileSync(path
|
|
110
|
+
raw = decodeTextBuffer(readFileSync(path)).text;
|
|
92
111
|
}
|
|
93
112
|
catch {
|
|
94
|
-
// Windows
|
|
95
|
-
// causing EBUSY/EPERM on read. Attempt to read via 'type' command which
|
|
96
|
-
// often bypasses simple write locks.
|
|
113
|
+
// Windows 兜底通过环境变量传路径并返回 Base64,避免 cmd 路径转义和控制台代码页污染日志内容。
|
|
97
114
|
if (process.platform === "win32") {
|
|
98
115
|
try {
|
|
99
|
-
|
|
116
|
+
const base64 = execFileSync("powershell.exe", [
|
|
117
|
+
"-NoProfile",
|
|
118
|
+
"-NonInteractive",
|
|
119
|
+
"-Command",
|
|
120
|
+
"[Convert]::ToBase64String([IO.File]::ReadAllBytes($env:CLAWCONNECT_LOG_PATH))",
|
|
121
|
+
], {
|
|
122
|
+
encoding: "utf8",
|
|
123
|
+
env: { ...process.env, CLAWCONNECT_LOG_PATH: path },
|
|
124
|
+
stdio: "pipe",
|
|
125
|
+
windowsHide: true,
|
|
126
|
+
}).trim();
|
|
127
|
+
raw = decodeTextBuffer(Buffer.from(base64, "base64")).text;
|
|
100
128
|
}
|
|
101
129
|
catch {
|
|
102
130
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/config/config.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function readGatewayUrl(): string;
|
|
|
18
18
|
/**
|
|
19
19
|
* Reads the gateway token or password. Priority order:
|
|
20
20
|
* 1. ~/.clawconnect/config.json (gatewayToken / gatewayPassword)
|
|
21
|
-
* 2.
|
|
21
|
+
* 2. The resolved OpenClaw config (gateway.token / gateway.auth.token)
|
|
22
22
|
* 3. Environment variables (OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD)
|
|
23
23
|
*/
|
|
24
24
|
export declare function readGatewayAuth(cfg: ClawConnectConfig): {
|
package/dist/config/config.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import JSON5 from "json5";
|
|
3
|
+
import { DEFAULT_GATEWAY_URL, getConfiguredGatewayPort, getConfiguredGatewayUrl } from "./env.js";
|
|
4
|
+
import { parseEnvFile } from "./env.js";
|
|
5
5
|
import { setRestrictiveDirPermissions, setRestrictiveFilePermissions, } from "../platform/service-manager-common.js";
|
|
6
6
|
import { CLAWCONNECT_HOME, profileConfigPath, profileRoot } from "./profile.js";
|
|
7
|
-
|
|
7
|
+
import { resolveOpenClawConfigPath, resolveOpenClawStateDir } from "../openclaw/runtime/openclaw-paths.js";
|
|
8
|
+
import { join } from "node:path";
|
|
8
9
|
export function getConfigPath(profile) {
|
|
9
10
|
return profileConfigPath(profile);
|
|
10
11
|
}
|
|
@@ -33,10 +34,22 @@ export function readGatewayUrl() {
|
|
|
33
34
|
if (configuredGatewayUrl) {
|
|
34
35
|
return configuredGatewayUrl;
|
|
35
36
|
}
|
|
37
|
+
const configuredGatewayPort = getConfiguredGatewayPort();
|
|
38
|
+
if (configuredGatewayPort) {
|
|
39
|
+
return `ws://localhost:${configuredGatewayPort}`;
|
|
40
|
+
}
|
|
41
|
+
const stateEnvGatewayPort = getConfiguredGatewayPort(readOpenClawStateEnv());
|
|
42
|
+
if (stateEnvGatewayPort) {
|
|
43
|
+
return `ws://localhost:${stateEnvGatewayPort}`;
|
|
44
|
+
}
|
|
36
45
|
try {
|
|
37
|
-
const raw = readFileSync(
|
|
38
|
-
const json =
|
|
39
|
-
const
|
|
46
|
+
const raw = readFileSync(resolveOpenClawConfigPath(), "utf-8");
|
|
47
|
+
const json = JSON5.parse(raw);
|
|
48
|
+
const configuredPort = json?.gateway?.port;
|
|
49
|
+
const port = typeof configuredPort === "number" && Number.isInteger(configuredPort)
|
|
50
|
+
&& configuredPort >= 1 && configuredPort <= 65_535
|
|
51
|
+
? configuredPort
|
|
52
|
+
: 18789;
|
|
40
53
|
return `ws://localhost:${port}`;
|
|
41
54
|
}
|
|
42
55
|
catch {
|
|
@@ -46,7 +59,7 @@ export function readGatewayUrl() {
|
|
|
46
59
|
/**
|
|
47
60
|
* Reads the gateway token or password. Priority order:
|
|
48
61
|
* 1. ~/.clawconnect/config.json (gatewayToken / gatewayPassword)
|
|
49
|
-
* 2.
|
|
62
|
+
* 2. The resolved OpenClaw config (gateway.token / gateway.auth.token)
|
|
50
63
|
* 3. Environment variables (OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD)
|
|
51
64
|
*/
|
|
52
65
|
export function readGatewayAuth(cfg) {
|
|
@@ -55,8 +68,8 @@ export function readGatewayAuth(cfg) {
|
|
|
55
68
|
}
|
|
56
69
|
// Try to read the token from OpenClaw's own config
|
|
57
70
|
try {
|
|
58
|
-
const raw = readFileSync(
|
|
59
|
-
const json =
|
|
71
|
+
const raw = readFileSync(resolveOpenClawConfigPath(), "utf-8");
|
|
72
|
+
const json = JSON5.parse(raw);
|
|
60
73
|
const token = json?.gateway?.token ?? json?.gateway?.auth?.token ?? undefined;
|
|
61
74
|
const password = json?.gateway?.password ?? json?.gateway?.auth?.password ?? undefined;
|
|
62
75
|
if (token || password)
|
|
@@ -71,6 +84,21 @@ export function readGatewayAuth(cfg) {
|
|
|
71
84
|
if (envToken || envPassword) {
|
|
72
85
|
return { token: envToken, password: envPassword };
|
|
73
86
|
}
|
|
87
|
+
const stateEnv = readOpenClawStateEnv();
|
|
88
|
+
if (stateEnv.OPENCLAW_GATEWAY_TOKEN || stateEnv.OPENCLAW_GATEWAY_PASSWORD) {
|
|
89
|
+
return {
|
|
90
|
+
token: stateEnv.OPENCLAW_GATEWAY_TOKEN,
|
|
91
|
+
password: stateEnv.OPENCLAW_GATEWAY_PASSWORD,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
74
94
|
return {};
|
|
75
95
|
}
|
|
96
|
+
function readOpenClawStateEnv() {
|
|
97
|
+
try {
|
|
98
|
+
return parseEnvFile(readFileSync(join(resolveOpenClawStateDir(), ".env"), "utf8"));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
76
104
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/env.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const DEFAULT_RELAY_SERVER_URL = "https://clawlinks.cn";
|
|
2
2
|
export declare const DEFAULT_GATEWAY_URL = "ws://localhost:18789";
|
|
3
|
-
export declare const AGENT_ENV_TEMPLATE = "# ClawConnect Agent environment configuration.\n# Copy this file to ~/.clawconnect/.env for an installed agent.\n# For local development from this package directory, copy it to .env.local.\n#\n# Precedence:\n# 1. Shell environment variables\n# 2. CLAWCONNECT_ENV_FILE, if set\n# 3. ~/.clawconnect/.env\n# 4. .env.local\n# 5. .env\n# 6. Built-in defaults\n#\n# Existing pairing credentials in ~/.clawconnect/config.json still control\n# `clawconnect run`, `status`, and `send-file`. Use `clawconnect pair --server`\n# or `clawconnect reset` when switching relay servers.\n\n# Default relay used by `clawconnect pair` when --server is omitted.\nCLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn\n\n# Optional: explicitly select another env file.\n# Usually set this in your shell, not inside ~/.clawconnect/.env.\n# CLAWCONNECT_ENV_FILE=/Users/you/.clawconnect/.env\n\n# Optional: force the local OpenClaw Gateway websocket URL instead of reading\n#
|
|
3
|
+
export declare const AGENT_ENV_TEMPLATE = "# ClawConnect Agent environment configuration.\n# Copy this file to ~/.clawconnect/.env for an installed agent.\n# For local development from this package directory, copy it to .env.local.\n#\n# Precedence:\n# 1. Shell environment variables\n# 2. CLAWCONNECT_ENV_FILE, if set\n# 3. ~/.clawconnect/.env\n# 4. .env.local\n# 5. .env\n# 6. Built-in defaults\n#\n# Existing pairing credentials in ~/.clawconnect/config.json still control\n# `clawconnect run`, `status`, and `send-file`. Use `clawconnect pair --server`\n# or `clawconnect reset` when switching relay servers.\n\n# Default relay used by `clawconnect pair` when --server is omitted.\nCLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn\n\n# Optional: explicitly select another env file.\n# Usually set this in your shell, not inside ~/.clawconnect/.env.\n# CLAWCONNECT_ENV_FILE=/Users/you/.clawconnect/.env\n\n# Optional: force the local OpenClaw Gateway websocket URL instead of reading\n# OPENCLAW_CONFIG_PATH / OPENCLAW_STATE_DIR and falling back to ws://localhost:18789.\n# CLAWCONNECT_GATEWAY_URL=ws://localhost:18789\n\n# Optional: override only the OpenClaw Gateway port. The full URL above wins.\n# OPENCLAW_GATEWAY_PORT=18789\n\n# Optional: OpenClaw official path overrides. These support source, Homebrew,\n# container-mounted, dedicated-service-user, and multi-gateway installations.\n# OPENCLAW_HOME=/path/to/openclaw-user-home\n# OPENCLAW_STATE_DIR=/path/to/openclaw-state\n# OPENCLAW_CONFIG_PATH=/path/to/openclaw.json\n\n# Optional: Gateway auth fallback.\n# Prefer `clawconnect set-token` or the resolved OPENCLAW_CONFIG_PATH when possible.\n# OPENCLAW_GATEWAY_TOKEN=\n# OPENCLAW_GATEWAY_PASSWORD=\n\n# Optional: host-side speech-to-text for ClawLink voice messages.\n# Command must print the transcript to stdout. Available placeholders:\n# {file}, {language}, {mimeType}\n# OPENCLAW_ASR_COMMAND=/usr/local/bin/transcribe-audio {file} {language}\n\n# Optional: override how local maintenance commands find the OpenClaw CLI.\n# OPENCLAW_BIN=/usr/local/bin/openclaw\n# OPENCLAW_PACKAGE_BIN=/path/to/openclaw/package/dist/index.js\n# OPENCLAW_INSTALL_DIR=/path/to/openclaw/source-or-package\n\n# Optional: Hermes source/data/runtime overrides. Native Windows installs are\n# auto-detected under %LOCALAPPDATA%hermes; Unix/WSL defaults to ~/.hermes.\n# HERMES_HOME=/path/to/hermes-data\n# HERMES_BIN=/path/to/hermes\n# HERMES_PYTHON=/path/to/python\n# HERMES_SKILLS_DIR=/path/to/hermes-skills\n# CLAWCONNECT_HERMES_STATE_DB=/path/to/state.db\n# CLAWCONNECT_HERMES_API_URL=http://127.0.0.1:8642\n# CLAWCONNECT_HERMES_API_KEY=\n# API_SERVER_HOST=127.0.0.1\n# API_SERVER_PORT=8642\n";
|
|
4
4
|
type EnvMap = Record<string, string | undefined>;
|
|
5
5
|
export interface LoadEnvOptions {
|
|
6
6
|
cwd?: string;
|
|
@@ -9,6 +9,7 @@ export interface LoadEnvOptions {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function getDefaultRelayServerUrl(env?: EnvMap): string;
|
|
11
11
|
export declare function getConfiguredGatewayUrl(env?: EnvMap): string | undefined;
|
|
12
|
+
export declare function getConfiguredGatewayPort(env?: EnvMap): number | undefined;
|
|
12
13
|
export declare function getUserEnvPath(): string;
|
|
13
14
|
export declare function ensureUserEnvFile(path?: string): boolean;
|
|
14
15
|
export declare function loadAgentEnv(options?: LoadEnvOptions): string[];
|
package/dist/config/env.js
CHANGED
|
@@ -28,11 +28,20 @@ CLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn
|
|
|
28
28
|
# CLAWCONNECT_ENV_FILE=/Users/you/.clawconnect/.env
|
|
29
29
|
|
|
30
30
|
# Optional: force the local OpenClaw Gateway websocket URL instead of reading
|
|
31
|
-
#
|
|
31
|
+
# OPENCLAW_CONFIG_PATH / OPENCLAW_STATE_DIR and falling back to ws://localhost:18789.
|
|
32
32
|
# CLAWCONNECT_GATEWAY_URL=ws://localhost:18789
|
|
33
33
|
|
|
34
|
+
# Optional: override only the OpenClaw Gateway port. The full URL above wins.
|
|
35
|
+
# OPENCLAW_GATEWAY_PORT=18789
|
|
36
|
+
|
|
37
|
+
# Optional: OpenClaw official path overrides. These support source, Homebrew,
|
|
38
|
+
# container-mounted, dedicated-service-user, and multi-gateway installations.
|
|
39
|
+
# OPENCLAW_HOME=/path/to/openclaw-user-home
|
|
40
|
+
# OPENCLAW_STATE_DIR=/path/to/openclaw-state
|
|
41
|
+
# OPENCLAW_CONFIG_PATH=/path/to/openclaw.json
|
|
42
|
+
|
|
34
43
|
# Optional: Gateway auth fallback.
|
|
35
|
-
# Prefer \`clawconnect set-token\` or
|
|
44
|
+
# Prefer \`clawconnect set-token\` or the resolved OPENCLAW_CONFIG_PATH when possible.
|
|
36
45
|
# OPENCLAW_GATEWAY_TOKEN=
|
|
37
46
|
# OPENCLAW_GATEWAY_PASSWORD=
|
|
38
47
|
|
|
@@ -44,6 +53,19 @@ CLAWCONNECT_RELAY_SERVER_URL=https://clawlinks.cn
|
|
|
44
53
|
# Optional: override how local maintenance commands find the OpenClaw CLI.
|
|
45
54
|
# OPENCLAW_BIN=/usr/local/bin/openclaw
|
|
46
55
|
# OPENCLAW_PACKAGE_BIN=/path/to/openclaw/package/dist/index.js
|
|
56
|
+
# OPENCLAW_INSTALL_DIR=/path/to/openclaw/source-or-package
|
|
57
|
+
|
|
58
|
+
# Optional: Hermes source/data/runtime overrides. Native Windows installs are
|
|
59
|
+
# auto-detected under %LOCALAPPDATA%\hermes; Unix/WSL defaults to ~/.hermes.
|
|
60
|
+
# HERMES_HOME=/path/to/hermes-data
|
|
61
|
+
# HERMES_BIN=/path/to/hermes
|
|
62
|
+
# HERMES_PYTHON=/path/to/python
|
|
63
|
+
# HERMES_SKILLS_DIR=/path/to/hermes-skills
|
|
64
|
+
# CLAWCONNECT_HERMES_STATE_DB=/path/to/state.db
|
|
65
|
+
# CLAWCONNECT_HERMES_API_URL=http://127.0.0.1:8642
|
|
66
|
+
# CLAWCONNECT_HERMES_API_KEY=
|
|
67
|
+
# API_SERVER_HOST=127.0.0.1
|
|
68
|
+
# API_SERVER_PORT=8642
|
|
47
69
|
`;
|
|
48
70
|
export function getDefaultRelayServerUrl(env = process.env) {
|
|
49
71
|
return normalizeNonEmpty(env.CLAWCONNECT_RELAY_SERVER_URL) ?? DEFAULT_RELAY_SERVER_URL;
|
|
@@ -51,6 +73,14 @@ export function getDefaultRelayServerUrl(env = process.env) {
|
|
|
51
73
|
export function getConfiguredGatewayUrl(env = process.env) {
|
|
52
74
|
return normalizeNonEmpty(env.CLAWCONNECT_GATEWAY_URL);
|
|
53
75
|
}
|
|
76
|
+
export function getConfiguredGatewayPort(env = process.env) {
|
|
77
|
+
const value = normalizeNonEmpty(env.OPENCLAW_GATEWAY_PORT);
|
|
78
|
+
if (!value || !/^\d+$/.test(value)) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const port = Number.parseInt(value, 10);
|
|
82
|
+
return port >= 1 && port <= 65_535 ? port : undefined;
|
|
83
|
+
}
|
|
54
84
|
export function getUserEnvPath() {
|
|
55
85
|
return join(homedir(), ".clawconnect", ".env");
|
|
56
86
|
}
|
package/dist/config/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { basename, extname, join } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
6
|
import { extensionForMimeType } from "./attachment-staging.js";
|
|
7
|
+
import { buildShellCommandInvocation, quoteShellArgument } from "../../platform/process-invocation.js";
|
|
7
8
|
const execFile = promisify(execFileCb);
|
|
8
9
|
export async function prepareVoiceSendParams(rawParams, options = {}) {
|
|
9
10
|
const record = rawParams && typeof rawParams === "object" && !Array.isArray(rawParams)
|
|
@@ -60,12 +61,20 @@ async function transcribeAudioWithConfiguredCommand(opts) {
|
|
|
60
61
|
throw new Error("voice_asr_not_configured");
|
|
61
62
|
}
|
|
62
63
|
const rendered = command
|
|
63
|
-
.replaceAll("{file}",
|
|
64
|
-
.replaceAll("{language}",
|
|
65
|
-
.replaceAll("{mimeType}",
|
|
66
|
-
const
|
|
64
|
+
.replaceAll("{file}", quoteShellArgument(opts.audioPath))
|
|
65
|
+
.replaceAll("{language}", quoteShellArgument(opts.languageHint ?? ""))
|
|
66
|
+
.replaceAll("{mimeType}", quoteShellArgument(opts.mimeType));
|
|
67
|
+
const invocation = buildShellCommandInvocation(rendered);
|
|
68
|
+
const { stdout } = await execFile(invocation.command, invocation.args, {
|
|
67
69
|
timeout: 120_000,
|
|
68
70
|
maxBuffer: 10 * 1024 * 1024,
|
|
71
|
+
encoding: "utf8",
|
|
72
|
+
windowsHide: true,
|
|
73
|
+
env: {
|
|
74
|
+
...process.env,
|
|
75
|
+
PYTHONUTF8: "1",
|
|
76
|
+
PYTHONIOENCODING: "utf-8",
|
|
77
|
+
},
|
|
69
78
|
});
|
|
70
79
|
return stdout.trim();
|
|
71
80
|
}
|
|
@@ -114,7 +123,4 @@ function sanitizeFileName(value, mimeType) {
|
|
|
114
123
|
function stringValue(value) {
|
|
115
124
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
116
125
|
}
|
|
117
|
-
function shellQuote(value) {
|
|
118
|
-
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
119
|
-
}
|
|
120
126
|
//# sourceMappingURL=voice-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-input.js","sourceRoot":"","sources":["../../../src/core/relay/voice-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"voice-input.js","sourceRoot":"","sources":["../../../src/core/relay/voice-input.ts"],"names":[],"mappings":"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"}
|