@yoooclaw/cli 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +3108 -3083
- package/dist/bin.cjs.map +23 -23
- package/dist/index.cjs +3108 -3083
- package/dist/index.cjs.map +23 -23
- package/package.json +1 -1
- package/skills/yoooclaw-lightrule-create/SKILL.md +3 -2
- package/skills/yoooclaw-tunnel-debug/SKILL.md +39 -28
package/dist/bin.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/openclaw/dist/json-files-DMrq2IfK.js", "../node_modules/openclaw/dist/home-dir-BnP38vVl.js", "../node_modules/openclaw/dist/paths-Y4UT24Of.js", "../node_modules/openclaw/dist/pairing-token-C5g4QivV.js", "../node_modules/openclaw/dist/device-auth-BRUxebMD.js", "../node_modules/openclaw/dist/device-pairing-DeNkV6bj.js", "../node_modules/openclaw/dist/device-bootstrap-DKsEcfsd.js", "../node_modules/openclaw/dist/device-bootstrap-DTI1FU3A.js", "../node_modules/openclaw/dist/plugin-sdk/device-bootstrap.js", "../src/program.ts", "../src/command-tree.ts", "../src/context.ts", "../src/paths.ts", "../src/errors.ts", "../src/output/format.ts", "../src/version.ts", "../src/fs-utils.ts", "../src/prompt.ts", "../src/config/store.ts", "../src/config/schema.ts", "../src/credentials/store.ts", "../src/credentials/keychain.ts", "../src/credentials/refs.ts", "../src/commands/
|
|
3
|
+
"sources": ["../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/openclaw/dist/json-files-DMrq2IfK.js", "../node_modules/openclaw/dist/home-dir-BnP38vVl.js", "../node_modules/openclaw/dist/paths-Y4UT24Of.js", "../node_modules/openclaw/dist/pairing-token-C5g4QivV.js", "../node_modules/openclaw/dist/device-auth-BRUxebMD.js", "../node_modules/openclaw/dist/device-pairing-DeNkV6bj.js", "../node_modules/openclaw/dist/device-bootstrap-DKsEcfsd.js", "../node_modules/openclaw/dist/device-bootstrap-DTI1FU3A.js", "../node_modules/openclaw/dist/plugin-sdk/device-bootstrap.js", "../src/program.ts", "../src/command-tree.ts", "../src/context.ts", "../src/paths.ts", "../src/errors.ts", "../src/output/format.ts", "../src/version.ts", "../src/fs-utils.ts", "../src/prompt.ts", "../src/config/store.ts", "../src/config/schema.ts", "../src/credentials/store.ts", "../src/credentials/keychain.ts", "../src/credentials/refs.ts", "../src/commands/daemon.ts", "../src/daemon/lock.ts", "../src/daemon/client.ts", "../src/daemon/main.ts", "../src/daemon/logger.ts", "../src/vendor/cli/helpers.ts", "../src/vendor/cli/ntf-query.ts", "../src/vendor/notification/storage.ts", "../src/vendor/notification/feishu-normalize.ts", "../src/vendor/ingest-context.ts", "../src/vendor/plugin/notifications.ts", "../src/vendor/tunnel/utils.ts", "../src/vendor/tunnel/http-proxy.ts", "../src/vendor/plugin/shared.ts", "../src/vendor/recording/storage.ts", "../src/vendor/recording/state-machine.ts", "../src/vendor/recording/transcript-document.ts", "../src/vendor/recording/downloader.ts", "../src/vendor/recording/asr.ts", "../src/vendor/auth/credentials.ts", "../src/vendor/profile/detect.ts", "../src/vendor/profile/paths.ts", "../src/vendor/profile/runtime-paths.ts", "../src/vendor/env.ts", "../src/vendor/recording/whisper-local.ts", "../src/vendor/recording/handler.ts", "../src/vendor/plugin/recordings.ts", "../src/vendor/light-rules/storage.ts", "../src/vendor/light/repeat.ts", "../src/vendor/light-rules/registry.ts", "../src/vendor/light/validators.ts", "../src/vendor/light-rules/names.ts", "../src/vendor/light-rules/gateway.ts", "../src/vendor/light/sender.ts", "../src/vendor/light/protocol.ts", "../src/vendor/tunnel/relay-client.ts", "../node_modules/ws/wrapper.mjs", "../src/vendor/tunnel/proxy.ts", "../src/vendor/tunnel/device-identity.ts", "../src/vendor/tunnel/ws-proxy.ts", "../src/shared.ts", "../src/daemon/runtime.ts", "../src/image/channel.ts", "../src/image/storage.ts", "../src/monitor/store.ts", "../src/daemon/light-send.ts", "../src/daemon/recording-events.ts", "../src/daemon/recording-bridge.ts", "../src/daemon/gateway-compat.ts", "../src/daemon/relay-dispatcher.ts", "../src/daemon/relay.ts", "../src/daemon/tunnel-supervisor.ts", "../src/commands/config.ts", "../src/commands/profile.ts", "../src/commands/auth.ts", "../src/notification/query.ts", "../src/commands/notification.ts", "../src/notification/sync.ts", "../src/commands/sync.ts", "../src/commands/recording.ts", "../src/commands/image.ts", "../src/log/reader.ts", "../src/commands/log.ts", "../src/commands/migrate.ts", "../src/commands/update.ts", "../src/commands/doctor.ts", "../src/commands/skills.ts", "../src/commands/daemon-services.ts", "../src/commands/registry.ts", "../src/index.ts", "../src/bin.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n",
|
|
6
6
|
"'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from \"./json-files-DMrq2IfK.js\";\nimport { a as pruneExpiredPending, n as verifyPairingToken, o as resolvePairingPaths, t as generatePairingToken } from \"./pairing-token-C5g4QivV.js\";\nimport { n as normalizeDeviceAuthScopes, t as normalizeDeviceAuthRole } from \"./device-auth-BRUxebMD.js\";\nimport path from \"node:path\";\n//#region src/shared/device-bootstrap-profile.ts\nconst PAIRING_SETUP_BOOTSTRAP_PROFILE = {\n\troles: [\"node\"],\n\tscopes: []\n};\nfunction normalizeBootstrapRoles(roles) {\n\tif (!Array.isArray(roles)) return [];\n\tconst out = /* @__PURE__ */ new Set();\n\tfor (const role of roles) {\n\t\tconst normalized = normalizeDeviceAuthRole(role);\n\t\tif (normalized) out.add(normalized);\n\t}\n\treturn [...out].toSorted();\n}\nfunction normalizeDeviceBootstrapProfile(input) {\n\treturn {\n\t\troles: normalizeBootstrapRoles(input?.roles),\n\t\tscopes: normalizeDeviceAuthScopes(input?.scopes ? [...input.scopes] : [])\n\t};\n}\nfunction sameDeviceBootstrapProfile(left, right) {\n\treturn left.roles.length === right.roles.length && left.scopes.length === right.scopes.length && left.roles.every((value, index) => value === right.roles[index]) && left.scopes.every((value, index) => value === right.scopes[index]);\n}\n//#endregion\n//#region src/infra/device-bootstrap.ts\nconst DEVICE_BOOTSTRAP_TOKEN_TTL_MS = 600 * 1e3;\nconst withLock = createAsyncLock();\nfunction resolveBootstrapPath(baseDir) {\n\treturn path.join(resolvePairingPaths(baseDir, \"devices\").dir, \"bootstrap.json\");\n}\nfunction resolvePersistedBootstrapProfile(record) {\n\treturn normalizeDeviceBootstrapProfile(record.profile ?? record);\n}\nfunction resolveIssuedBootstrapProfile(params) {\n\tif (params.profile) return normalizeDeviceBootstrapProfile(params.profile);\n\tif (params.roles || params.scopes) return normalizeDeviceBootstrapProfile({\n\t\troles: params.roles,\n\t\tscopes: params.scopes\n\t});\n\treturn PAIRING_SETUP_BOOTSTRAP_PROFILE;\n}\nasync function loadState(baseDir) {\n\tconst rawState = await readJsonFile(resolveBootstrapPath(baseDir)) ?? {};\n\tconst state = {};\n\tif (!rawState || typeof rawState !== \"object\" || Array.isArray(rawState)) return state;\n\tfor (const [tokenKey, entry] of Object.entries(rawState)) {\n\t\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue;\n\t\tconst record = entry;\n\t\tconst token = typeof record.token === \"string\" && record.token.trim().length > 0 ? record.token : tokenKey;\n\t\tconst issuedAtMs = typeof record.issuedAtMs === \"number\" ? record.issuedAtMs : 0;\n\t\tstate[tokenKey] = {\n\t\t\ttoken,\n\t\t\tprofile: resolvePersistedBootstrapProfile(record),\n\t\t\tdeviceId: typeof record.deviceId === \"string\" ? record.deviceId : void 0,\n\t\t\tpublicKey: typeof record.publicKey === \"string\" ? record.publicKey : void 0,\n\t\t\tissuedAtMs,\n\t\t\tts: typeof record.ts === \"number\" ? record.ts : issuedAtMs,\n\t\t\tlastUsedAtMs: typeof record.lastUsedAtMs === \"number\" ? record.lastUsedAtMs : void 0\n\t\t};\n\t}\n\tpruneExpiredPending(state, Date.now(), DEVICE_BOOTSTRAP_TOKEN_TTL_MS);\n\treturn state;\n}\nasync function persistState(state, baseDir) {\n\tawait writeJsonAtomic(resolveBootstrapPath(baseDir), state);\n}\nasync function issueDeviceBootstrapToken(params = {}) {\n\treturn await withLock(async () => {\n\t\tconst state = await loadState(params.baseDir);\n\t\tconst token = generatePairingToken();\n\t\tconst issuedAtMs = Date.now();\n\t\tstate[token] = {\n\t\t\ttoken,\n\t\t\tts: issuedAtMs,\n\t\t\tprofile: resolveIssuedBootstrapProfile(params),\n\t\t\tissuedAtMs\n\t\t};\n\t\tawait persistState(state, params.baseDir);\n\t\treturn {\n\t\t\ttoken,\n\t\t\texpiresAtMs: issuedAtMs + DEVICE_BOOTSTRAP_TOKEN_TTL_MS\n\t\t};\n\t});\n}\nasync function clearDeviceBootstrapTokens(params = {}) {\n\treturn await withLock(async () => {\n\t\tconst state = await loadState(params.baseDir);\n\t\tconst removed = Object.keys(state).length;\n\t\tawait persistState({}, params.baseDir);\n\t\treturn { removed };\n\t});\n}\nasync function revokeDeviceBootstrapToken(params) {\n\treturn await withLock(async () => {\n\t\tconst providedToken = params.token.trim();\n\t\tif (!providedToken) return { removed: false };\n\t\tconst state = await loadState(params.baseDir);\n\t\tconst found = Object.entries(state).find(([, candidate]) => verifyPairingToken(providedToken, candidate.token));\n\t\tif (!found) return { removed: false };\n\t\tdelete state[found[0]];\n\t\tawait persistState(state, params.baseDir);\n\t\treturn { removed: true };\n\t});\n}\nasync function verifyDeviceBootstrapToken(params) {\n\treturn await withLock(async () => {\n\t\tconst state = await loadState(params.baseDir);\n\t\tconst providedToken = params.token.trim();\n\t\tif (!providedToken) return {\n\t\t\tok: false,\n\t\t\treason: \"bootstrap_token_invalid\"\n\t\t};\n\t\tconst found = Object.entries(state).find(([, candidate]) => verifyPairingToken(providedToken, candidate.token));\n\t\tif (!found) return {\n\t\t\tok: false,\n\t\t\treason: \"bootstrap_token_invalid\"\n\t\t};\n\t\tconst [tokenKey, record] = found;\n\t\tconst deviceId = params.deviceId.trim();\n\t\tconst publicKey = params.publicKey.trim();\n\t\tconst role = params.role.trim();\n\t\tif (!deviceId || !publicKey || !role) return {\n\t\t\tok: false,\n\t\t\treason: \"bootstrap_token_invalid\"\n\t\t};\n\t\tconst requestedProfile = normalizeDeviceBootstrapProfile({\n\t\t\troles: [role],\n\t\t\tscopes: params.scopes\n\t\t});\n\t\tconst allowedProfile = resolvePersistedBootstrapProfile(record);\n\t\tif (allowedProfile.roles.length === 0 || !sameDeviceBootstrapProfile(requestedProfile, allowedProfile)) return {\n\t\t\tok: false,\n\t\t\treason: \"bootstrap_token_invalid\"\n\t\t};\n\t\tdelete state[tokenKey];\n\t\tawait persistState(state, params.baseDir);\n\t\treturn { ok: true };\n\t});\n}\n//#endregion\nexport { PAIRING_SETUP_BOOTSTRAP_PROFILE as a, verifyDeviceBootstrapToken as i, issueDeviceBootstrapToken as n, normalizeDeviceBootstrapProfile as o, revokeDeviceBootstrapToken as r, sameDeviceBootstrapProfile as s, clearDeviceBootstrapTokens as t };\n",
|
|
25
25
|
"import \"./device-pairing-DeNkV6bj.js\";\nimport \"./device-bootstrap-DKsEcfsd.js\";\nexport {};\n",
|
|
26
26
|
"import { i as listDevicePairing, t as approveDevicePairing } from \"../device-pairing-DeNkV6bj.js\";\nimport { a as PAIRING_SETUP_BOOTSTRAP_PROFILE, n as issueDeviceBootstrapToken, o as normalizeDeviceBootstrapProfile, r as revokeDeviceBootstrapToken, s as sameDeviceBootstrapProfile, t as clearDeviceBootstrapTokens } from \"../device-bootstrap-DKsEcfsd.js\";\nimport \"../device-bootstrap-DTI1FU3A.js\";\nexport { PAIRING_SETUP_BOOTSTRAP_PROFILE, approveDevicePairing, clearDeviceBootstrapTokens, issueDeviceBootstrapToken, listDevicePairing, normalizeDeviceBootstrapProfile, revokeDeviceBootstrapToken, sameDeviceBootstrapProfile };\n",
|
|
27
|
-
"/**\n * 构建 yoooclaw 的 commander 程序。\n *\n * 命令树结构(service / subcommand / shortcut / options)来自 command-tree.ts;\n * 实现体由 commands/registry.ts 按 path(如 `config init`)提供,未注册则回落 notImplemented。\n */\nimport { Command } from \"commander\";\nimport {\n COMMAND_TREE,\n type OptionSpec,\n type ServiceSpec,\n} from \"./command-tree.js\";\nimport { buildContext, type CliContext, type GlobalFlags } from \"./context.js\";\nimport { renderError, renderResult } from \"./output/format.js\";\nimport { YoooclawError, notImplemented } from \"./errors.js\";\nimport { CLI_VERSION } from \"./version.js\";\nimport { HANDLERS } from \"./commands/registry.js\";\n\n/** 命令处理器签名:拿到上下文 + commander 解析后的参数/选项,返回可序列化结果。 */\nexport type CommandHandler = (\n ctx: CliContext,\n args: unknown[],\n opts: Record<string, unknown>,\n) => unknown;\n\n/** 把 handler 包成 commander action:解析 ctx → 执行 → 统一渲染结果 / 错误。 */\nfunction wrapAction(handler: CommandHandler) {\n return async (...rawArgs: unknown[]): Promise<void> => {\n // commander 传参:[...positional, options, command]\n const command = rawArgs.at(-1) as Command;\n const opts = rawArgs.at(-2) as Record<string, unknown>;\n const positionals = rawArgs.slice(0, -2);\n const globals = command.optsWithGlobals() as GlobalFlags;\n\n let ctx: CliContext | undefined;\n try {\n ctx = buildContext(globals);\n const result = await handler(ctx, positionals, opts);\n renderResult(result, { format: ctx.format });\n } catch (err) {\n const format = ctx?.format ?? \"json\";\n renderError(err, { format });\n process.exitCode = err instanceof YoooclawError ? err.exitCode : 1;\n }\n };\n}\n\n/** 解析某个 path 的 handler,未注册则给 notImplemented 占位。 */\nfunction resolveHandler(path: string): CommandHandler {\n const handler = HANDLERS[path];\n if (handler) return handler;\n return () => {\n throw notImplemented(path);\n };\n}\n\nfunction applyOptions(cmd: Command, options: OptionSpec[] | undefined): void {\n for (const opt of options ?? []) {\n if (opt.default !== undefined) {\n cmd.option(opt.flags, opt.summary, opt.default);\n } else {\n cmd.option(opt.flags, opt.summary);\n }\n }\n}\n\nfunction attachService(program: Command, spec: ServiceSpec): void {\n const service = program.command(spec.name).description(spec.summary);\n\n // leaf 命令:直接挂 action(如 `yoooclaw doctor` / `yoooclaw api <method> <path>`)\n if (!spec.subcommands || spec.subcommands.length === 0) {\n if (spec.args) {\n service.arguments(spec.args);\n }\n applyOptions(service, spec.options);\n service.action(wrapAction(resolveHandler(spec.name)));\n } else {\n for (const sub of spec.subcommands) {\n const subCmd = service.command(sub.name).description(sub.summary);\n applyOptions(subCmd, sub.options);\n // path 的注册 key 用「服务名 + 子命令名(去掉位置参数占位)」\n subCmd.action(wrapAction(resolveHandler(handlerKey(spec.name, sub.name))));\n }\n }\n\n // shortcuts(`+` 前缀)作为该 service 下的子命令注册\n for (const shortcut of spec.shortcuts ?? []) {\n const shortcutCmd = service\n .command(shortcut.name)\n .description(shortcut.summary);\n applyOptions(shortcutCmd, shortcut.options);\n shortcutCmd.action(\n wrapAction(resolveHandler(handlerKey(spec.name, shortcut.name))),\n );\n }\n}\n\n/** 注册表的 path key:去掉子命令名里的位置参数占位(`show <id>` → `show`)。 */\nexport function handlerKey(service: string, subName: string): string {\n const bare = subName.split(/\\s+/)[0];\n return `${service} ${bare}`;\n}\n\n/** 构建并返回顶层 commander 程序。 */\nexport function buildProgram(): Command {\n const program = new Command();\n\n program\n .name(\"yoooclaw\")\n .description(\n \"yoooclaw —— 独立守护进程 + CLI:接收手机通知、Relay 隧道、灯效规则评估(Agent-Native)\",\n )\n .version(CLI_VERSION, \"-v, --version\", \"显示 CLI 版本号\")\n // 全局 flags(对所有命令生效)\n .option(\"--profile <name>\", \"切换 profile(默认 default)\")\n .option(\n \"--format <format>\",\n \"输出格式:json|pretty|table|ndjson(TTY 默认 pretty,管道默认 json)\",\n )\n .option(\"--quiet\", \"抑制进度日志,只输出最终结果\")\n .option(\"--no-color\", \"关闭终端颜色\")\n .showHelpAfterError();\n\n for (const spec of COMMAND_TREE) {\n attachService(program, spec);\n }\n\n return program;\n}\n",
|
|
28
|
-
"/**\n * 命令树声明 —— Service-oriented,对齐 lark-cli 形态与本仓 PRD「命令树总览」。\n *\n * 这是命令树的**单一事实来源**:program.ts 据此构建 commander 程序(结构 + options),\n * 实现体由 commands/registry.ts 按 path 提供;未注册的 path 回落 notImplemented 占位。\n *\n * daemon 依赖标记(仅文档用途,体现在 summary 里):\n * 🟢 不需要 daemon 🟡 需要 daemon 在跑 🔵 进程类(管理 daemon 自身)\n */\n\nexport interface OptionSpec {\n /** commander flags,如 `--from <iso8601>`、`--follow` */\n flags: string;\n summary: string;\n /** 默认值(仅对带值的 option 有意义) */\n default?: string;\n}\n\nexport interface SubcommandSpec {\n /** 子命令名 + 位置参数,如 `show <id>`、`api <method> <path>` */\n name: string;\n summary: string;\n options?: OptionSpec[];\n}\n\nexport interface ShortcutSpec {\n /** 含 `+` 前缀的快捷命令名,如 `+today` */\n name: string;\n summary: string;\n options?: OptionSpec[];\n}\n\nexport interface ServiceSpec {\n name: string;\n summary: string;\n /** 子命令列表。leaf 命令(直接执行,无子命令)省略此项并提供 `args`。 */\n subcommands?: SubcommandSpec[];\n /** leaf 命令的位置参数,如 `[keyword]`、`<method> <path>`。 */\n args?: string;\n /** leaf 命令的 options。 */\n options?: OptionSpec[];\n shortcuts?: ShortcutSpec[];\n}\n\nconst NOTIFICATION_QUERY_OPTIONS: OptionSpec[] = [\n { flags: \"--from <iso8601>\", summary: \"开始时间,如 2026-03-01T09:00:00+08:00\" },\n { flags: \"--to <iso8601>\", summary: \"结束时间\" },\n { flags: \"--app <name>\", summary: \"按应用过滤(支持中英文别名)\" },\n { flags: \"--sender <name>\", summary: \"按发送人/标题过滤\" },\n { flags: \"--conversation-type <type>\", summary: \"会话类型 group|private\" },\n { flags: \"--keyword <text>\", summary: \"在标题/内容/发送人/会话名中搜索\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"100\" },\n];\n\nexport const COMMAND_TREE: ServiceSpec[] = [\n {\n name: \"config\",\n summary: \"配置管理 🟢\",\n subcommands: [\n {\n name: \"init\",\n summary: \"交互式首次向导,生成 config + gateway token\",\n options: [\n { flags: \"--non-interactive\", summary: \"跳过向导(配合 --from-file)\" },\n { flags: \"--from-file <path>\", summary: \"从 JSON 文件导入配置(- 为 stdin)\" },\n { flags: \"--force\", summary: \"已存在 config 时覆盖\" },\n ],\n },\n {\n name: \"show\",\n summary: \"显示当前 profile 配置(敏感字段遮罩)\",\n options: [{ flags: \"--show-secrets\", summary: \"输出敏感字段明文(需 TTY)\" }],\n },\n { name: \"set <key> <value>\", summary: \"设置单个配置项(点号路径)\" },\n { name: \"unset <key>\", summary: \"删除单个配置项\" },\n ],\n },\n {\n name: \"profile\",\n summary: \"多 profile 管理 🟢\",\n subcommands: [\n { name: \"list\", summary: \"列出所有 profile,标注 active\" },\n { name: \"use <name>\", summary: \"切换 active profile\" },\n { name: \"create <name>\", summary: \"新建 profile(走 config init 向导)\" },\n {\n name: \"delete <name>\",\n summary: \"删除 profile(非 active,需 --yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n ],\n },\n {\n name: \"auth\",\n summary: \"凭据与鉴权 🟢/🟡\",\n subcommands: [\n {\n name: \"set-api-key <key>\",\n summary: \"设置/轮换 account 级 default api-key(- 从 stdin 读)🟢\",\n options: [{ flags: \"--keychain\", summary: \"写入 OS keychain 而非文件\" }],\n },\n {\n name: \"add-api-key <key>\",\n summary: \"新增一条 multi-key api-key(- 从 stdin 读)🟢\",\n options: [\n { flags: \"--label <label>\", summary: \"api-key label([a-z0-9-]{1,32})\" },\n { flags: \"--default\", summary: \"设为 default key\" },\n { flags: \"--force\", summary: \"label 已存在时覆盖\" },\n ],\n },\n { name: \"list-api-keys\", summary: \"列出 api-key 条目(key 自动遮罩)🟢\" },\n { name: \"remove-api-key <label>\", summary: \"删除指定 label 的 api-key 🟢\" },\n { name: \"set-default-api-key <label>\", summary: \"切换 default api-key 🟢\" },\n {\n name: \"token-rotate\",\n summary: \"生成新 gateway token 并热重载 🟡\",\n options: [{ flags: \"--length <n>\", summary: \"token 字节长度\", default: \"32\" }],\n },\n { name: \"status\", summary: \"显示鉴权状态(本地检查,不调 daemon)🟢\" },\n { name: \"check\", summary: \"端到端鉴权体检(调 daemon /daemon/status)🟡\" },\n ],\n },\n {\n name: \"daemon\",\n summary: \"守护进程管理 🔵\",\n subcommands: [\n {\n name: \"start\",\n summary: \"启动 daemon(默认后台 detach)\",\n options: [\n { flags: \"--bind <host>\", summary: \"监听地址(默认 config.daemon.bind)\" },\n { flags: \"--port <n>\", summary: \"监听端口(默认 config.daemon.port)\" },\n { flags: \"--no-detach\", summary: \"前台运行(systemd/launchd 用)\" },\n { flags: \"--log-level <level>\", summary: \"error|warn|info|debug|trace\" },\n ],\n },\n { name: \"stop\", summary: \"停止 daemon(SIGTERM → 10s → SIGKILL)\" },\n { name: \"restart\", summary: \"stop + start,保留原启动参数\" },\n { name: \"reload\", summary: \"重读凭据并增量刷新 Relay 隧道\" },\n { name: \"status\", summary: \"打印 daemon 状态(PID/端口/relay/规则数...)\" },\n {\n name: \"logs\",\n summary: \"跟踪 daemon 日志\",\n options: [\n { flags: \"-f, --follow\", summary: \"持续 tail\" },\n { flags: \"--lines <n>\", summary: \"初始展示行数\", default: \"100\" },\n { flags: \"--level <level>\", summary: \"过滤日志级别\" },\n ],\n },\n {\n name: \"run-foreground\",\n summary: \"(内部)前台运行 daemon 主循环,供 detach 子进程调用\",\n options: [\n { flags: \"--bind <host>\", summary: \"监听地址\" },\n { flags: \"--port <n>\", summary: \"监听端口\" },\n { flags: \"--log-level <level>\", summary: \"日志级别\" },\n ],\n },\n ],\n },\n {\n name: \"notification\",\n summary: \"通知查询 🟢\",\n subcommands: [\n { name: \"search\", summary: \"按筛选条件查询通知,时间倒序\", options: NOTIFICATION_QUERY_OPTIONS },\n {\n name: \"summary\",\n summary: \"聚合统计 + 样例摘要,供 Agent 总结\",\n options: [\n ...NOTIFICATION_QUERY_OPTIONS,\n { flags: \"--sample <n>\", summary: \"返回最近样例条数\", default: \"30\" },\n { flags: \"--top <n>\", summary: \"聚合榜单条数\", default: \"10\" },\n ],\n },\n {\n name: \"stats\",\n summary: \"按维度聚合统计\",\n options: [\n { flags: \"--from <date>\", summary: \"YYYY-MM-DD,默认 7 天前\" },\n { flags: \"--to <date>\", summary: \"YYYY-MM-DD,默认今天\" },\n { flags: \"--app <name>\", summary: \"仅统计指定应用\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--dim <dim>\", summary: \"date|app|sender|hour|client|all\", default: \"all\" },\n ],\n },\n { name: \"storage-path\", summary: \"打印 notifications 目录绝对路径\" },\n ],\n shortcuts: [\n { name: \"+today\", summary: \"今日通知摘要\", options: [{ flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" }] },\n { name: \"+recent\", summary: \"最近 1 小时通知\", options: [{ flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" }] },\n { name: \"+unread\", summary: \"(预留)未读通知\" },\n ],\n },\n {\n name: \"sync\",\n summary: \"通知同步给记忆系统 🟢\",\n subcommands: [\n { name: \"scan\", summary: \"扫描未处理通知,返回各日期待同步摘要\" },\n {\n name: \"fetch\",\n summary: \"获取指定日期未处理通知详情\",\n options: [\n { flags: \"--date <YYYY-MM-DD>\", summary: \"目标日期(必填)\" },\n { flags: \"--max-end-index <index>\", summary: \"本次快照允许读取的最大 endIndex\" },\n ],\n },\n {\n name: \"commit\",\n summary: \"标记指定日期当前批次处理完成\",\n options: [\n { flags: \"--date <YYYY-MM-DD>\", summary: \"目标日期(必填)\" },\n { flags: \"--end-index <index>\", summary: \"本批次 fetch 返回的 endIndex\" },\n ],\n },\n ],\n },\n {\n name: \"recording\",\n summary: \"录音管理 🟢/🟡\",\n subcommands: [\n {\n name: \"list\",\n summary: \"列出所有录音 🟢\",\n options: [\n { flags: \"--status <status>\", summary: \"按传输状态过滤\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n ],\n },\n { name: \"status <id>\", summary: \"查看单条录音详情 🟢\" },\n { name: \"storage-path\", summary: \"打印录音存储目录绝对路径 🟢\" },\n {\n name: \"setup-asr\",\n summary: \"交互式配置 ASR 转写参数 🟢\",\n options: [\n { flags: \"--mode <mode>\", summary: \"api | local(默认 api)\" },\n { flags: \"--api-key <key>\", summary: \"api 模式:可选;留空则用 account ock- key\" },\n { flags: \"--endpoint <url>\", summary: \"api 模式:自定义 model-proxy 端点\" },\n { flags: \"--language <lang>\", summary: \"api 模式:语言提示,如 zh / en / auto\" },\n { flags: \"--model <name>\", summary: \"local 模式:Whisper 模型名\" },\n { flags: \"--non-interactive\", summary: \"跳过向导,从参数构造配置\" },\n ],\n },\n {\n name: \"events\",\n summary: \"查询录音状态事件流(JSONL) 🟢\",\n options: [\n { flags: \"--id <recordingId>\", summary: \"只看某条录音的事件\" },\n { flags: \"--since <duration>\", summary: \"回看时间窗,如 10m / 1h / 24h\" },\n { flags: \"--watch\", summary: \"持续跟随新事件(tail -f)\" },\n { flags: \"--limit <n>\", summary: \"返回条数上限\", default: \"200\" },\n ],\n },\n ],\n shortcuts: [{ name: \"+latest\", summary: \"展示最新一条录音详情\" }],\n },\n {\n name: \"image\",\n summary: \"图片管理 🟢\",\n subcommands: [\n {\n name: \"list\",\n summary: \"列出所有图片\",\n options: [\n { flags: \"--status <status>\", summary: \"syncing|synced|sync_failed\" },\n { flags: \"--app <name>\", summary: \"按来源应用过滤\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--from <iso8601>\", summary: \"created_at 起\" },\n { flags: \"--to <iso8601>\", summary: \"created_at 止\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"100\" },\n ],\n },\n { name: \"status <id>\", summary: \"查看单张图片详情\" },\n {\n name: \"path <id>\",\n summary: \"打印图片本地文件绝对路径\",\n options: [{ flags: \"--thumbnail\", summary: \"返回缩略图路径(若有)\" }],\n },\n { name: \"storage-path\", summary: \"打印图片存储目录绝对路径\" },\n ],\n shortcuts: [{ name: \"+latest\", summary: \"展示最新一张图片详情\" }],\n },\n {\n name: \"light\",\n summary: \"灯效硬件控制 🟡\",\n subcommands: [\n {\n name: \"send\",\n summary: \"发送灯效指令到硬件(--segments / --preset / --rule 三选一)\",\n options: [\n { flags: \"--segments <json>\", summary: \"灯效参数 JSON(原始段)\" },\n { flags: \"--preset <name>\", summary: \"内置预设 id(如 red-steady / red-strobe-3)\" },\n { flags: \"--rule <name>\", summary: \"已保存的 lightrule 名\" },\n { flags: \"--repeat\", summary: \"无限循环播放(覆盖来源默认值)\" },\n { flags: \"--repeat-times <n>\", summary: \"整条组合重复次数(0=无限,覆盖来源默认值)\" },\n ],\n },\n ],\n shortcuts: [{ name: \"+blink\", summary: \"灯效连通性测试(red-strobe-3)\" }],\n },\n {\n name: \"lightrule\",\n summary: \"灯效规则管理 🟡\",\n subcommands: [\n { name: \"list\", summary: \"列出所有规则及状态\" },\n { name: \"show <id>\", summary: \"查看单条规则详情\" },\n {\n name: \"create\",\n summary: \"创建规则(--from-file / --intent ...)\",\n options: [\n { flags: \"--from-file <path>\", summary: \"从 JSON/YAML 读规则(- 为 stdin)\" },\n { flags: \"--name <text>\", summary: \"规则名\" },\n { flags: \"--intent <text>\", summary: \"自然语言意图描述\" },\n { flags: \"--light-action <json>\", summary: \"命中后的 light 动作 JSON\" },\n { flags: \"--match-rules <json>\", summary: \"前置硬过滤规则 JSON\" },\n ],\n },\n {\n name: \"update <id>\",\n summary: \"更新现有规则\",\n options: [\n { flags: \"--from-file <path>\", summary: \"从 JSON/YAML 读规则(- 为 stdin)\" },\n { flags: \"--name <text>\", summary: \"规则名\" },\n { flags: \"--intent <text>\", summary: \"自然语言意图描述\" },\n { flags: \"--light-action <json>\", summary: \"命中后的 light 动作 JSON\" },\n { flags: \"--match-rules <json>\", summary: \"前置硬过滤规则 JSON\" },\n ],\n },\n {\n name: \"delete <id>\",\n summary: \"删除规则(--yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n { name: \"enable <id>\", summary: \"启用单条规则\" },\n { name: \"disable <id>\", summary: \"停用单条规则\" },\n ],\n shortcuts: [\n { name: \"+on\", summary: \"启用所有规则\" },\n { name: \"+off\", summary: \"停用所有规则(保留定义)\" },\n ],\n },\n {\n name: \"monitor\",\n summary: \"定时通知监控任务 🟡\",\n subcommands: [\n { name: \"list\", summary: \"列出所有监控任务\" },\n { name: \"show <name>\", summary: \"查看监控任务详情\" },\n {\n name: \"create <name>\",\n summary: \"创建监控任务(cron 驱动)\",\n options: [\n { flags: \"--description <text>\", summary: \"任务描述(必填)\" },\n { flags: \"--match-rules <json>\", summary: \"匹配规则 JSON(必填)\" },\n { flags: \"--schedule <cron>\", summary: \"cron 表达式(必填)\" },\n ],\n },\n {\n name: \"delete <name>\",\n summary: \"删除监控任务(--yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n { name: \"enable <name>\", summary: \"启用监控任务\" },\n { name: \"disable <name>\", summary: \"暂停监控任务\" },\n ],\n },\n {\n name: \"tunnel\",\n summary: \"Relay 隧道 🟡\",\n subcommands: [\n {\n name: \"status\",\n summary: \"查询 Relay 连接状态\",\n options: [{ flags: \"--client <label>\", summary: \"只看指定 clientLabel;all 为全部\" }],\n },\n {\n name: \"reconnect\",\n summary: \"强制重连\",\n options: [{ flags: \"--client <label>\", summary: \"只重连指定 clientLabel\" }],\n },\n ],\n shortcuts: [\n {\n name: \"+test\",\n summary: \"端到端联通性自检(echo 回环)\",\n options: [{ flags: \"--client <label>\", summary: \"用指定 clientLabel 的 api-key 做回环写入\" }],\n },\n ],\n },\n {\n name: \"log\",\n summary: \"日志检索 🟢\",\n args: \"[keyword]\",\n options: [\n { flags: \"--from <date>\", summary: \"YYYY-MM-DD,默认 7 天前\" },\n { flags: \"--to <date>\", summary: \"YYYY-MM-DD,默认今天\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"50\" },\n { flags: \"--level <level>\", summary: \"过滤日志级别\" },\n ],\n shortcuts: [{ name: \"+errors\", summary: \"昨天起的 error 级日志\" }],\n },\n {\n name: \"gateway\",\n summary: \"协议自检 🟢/🟡\",\n subcommands: [\n {\n name: \"test\",\n summary: \"模拟手机端调 daemon /notifications,验证连通/鉴权/relay 🟡\",\n options: [\n { flags: \"--from-phone-ip <ip>\", summary: \"模拟来源 IP\" },\n { flags: \"--via-relay\", summary: \"强制走 Relay 隧道\" },\n ],\n },\n ],\n },\n {\n name: \"api\",\n summary: \"Raw HTTP escape hatch 🟡\",\n args: \"<method> <path>\",\n options: [\n { flags: \"--data <json>\", summary: \"请求体(@file 读文件、- 读 stdin)\" },\n { flags: \"--header <key:value>\", summary: \"追加 header(可重复)\" },\n ],\n },\n {\n name: \"migrate\",\n summary: \"从 openclaw 插件迁移数据 🟢\",\n subcommands: [\n {\n name: \"from-openclaw\",\n summary: \"迁移 notifications/recordings/规则/api-key 到 ~/.yoooclaw\",\n options: [\n { flags: \"--dry-run\", summary: \"只打印迁移计划,不写入\" },\n { flags: \"--source <path>\", summary: \"自定义源目录,默认 ~/.openclaw\" },\n ],\n },\n ],\n },\n {\n name: \"update\",\n summary: \"版本检查 🟢\",\n subcommands: [\n {\n name: \"self\",\n summary: \"检查 npm 最新版本并提示(不自动更新)\",\n options: [\n { flags: \"--beta\", summary: \"检查 beta channel\" },\n { flags: \"--json\", summary: \"只输出版本信息 JSON\" },\n ],\n },\n ],\n },\n {\n name: \"skills\",\n summary: \"Agent 技能管理:把随包发布的 SKILL.md 装到 agent 可发现目录 🟢\",\n subcommands: [\n { name: \"list\", summary: \"列出随 CLI 发布的内置 Skill 及其触发说明\" },\n { name: \"targets\", summary: \"列出支持的 Agent skills 目录与自动探测结果\" },\n {\n name: \"install\",\n summary: \"把内置 Skill 安装到 agent skills 目录(默认自动探测,软链)\",\n options: [\n { flags: \"--agent <agent>\", summary: \"安装目标 agent:auto|claude|codex|custom\", default: \"auto\" },\n { flags: \"--target <dir>\", summary: \"安装目标目录;传入后优先于自动探测\" },\n { flags: \"--copy\", summary: \"复制而非软链(升级后不随包自动更新)\" },\n { flags: \"--force\", summary: \"目标已存在同名 Skill 时覆盖\" },\n ],\n },\n ],\n },\n {\n name: \"doctor\",\n summary: \"环境自检:Node/目录/keychain/daemon/relay 🟢/🟡\",\n options: [\n { flags: \"--json\", summary: \"JSON 输出(给脚本用)\" },\n { flags: \"--fix\", summary: \"自动修复可修复的问题\" },\n ],\n },\n];\n",
|
|
27
|
+
"/**\n * 构建 yoooclaw 的 commander 程序。\n *\n * 命令树结构(service / subcommand / shortcut / options)来自 command-tree.ts;\n * 实现体由 commands/registry.ts 按 path(如 `config init`)提供,未注册则回落 notImplemented。\n */\nimport { Command } from \"commander\";\nimport {\n COMMAND_TREE,\n type OptionSpec,\n type ServiceSpec,\n} from \"./command-tree.js\";\nimport { buildContext, type CliContext, type GlobalFlags } from \"./context.js\";\nimport { renderError, renderResult } from \"./output/format.js\";\nimport { YoooclawError, notImplemented } from \"./errors.js\";\nimport { CLI_VERSION } from \"./version.js\";\nimport { HANDLERS } from \"./commands/registry.js\";\n\n/** 命令处理器签名:拿到上下文 + commander 解析后的参数/选项,返回可序列化结果。 */\nexport type CommandHandler = (\n ctx: CliContext,\n args: unknown[],\n opts: Record<string, unknown>,\n) => unknown;\n\n/** 把 handler 包成 commander action:解析 ctx → 执行 → 统一渲染结果 / 错误。 */\nfunction wrapAction(handler: CommandHandler) {\n return async (...rawArgs: unknown[]): Promise<void> => {\n // commander 传参:[...positional, options, command]\n const command = rawArgs.at(-1) as Command;\n const opts = rawArgs.at(-2) as Record<string, unknown>;\n const positionals = rawArgs.slice(0, -2);\n const globals = command.optsWithGlobals() as GlobalFlags;\n\n let ctx: CliContext | undefined;\n try {\n ctx = buildContext(globals);\n const result = await handler(ctx, positionals, opts);\n // doctor / update self 保留局部 --json 作为全局 --format json 的兼容别名。\n renderResult(result, { format: opts.json === true ? \"json\" : ctx.format });\n } catch (err) {\n const format = opts.json === true ? \"json\" : ctx?.format ?? \"json\";\n renderError(err, { format });\n process.exitCode = err instanceof YoooclawError ? err.exitCode : 1;\n }\n };\n}\n\n/** 解析某个 path 的 handler,未注册则给 notImplemented 占位。 */\nfunction resolveHandler(path: string): CommandHandler {\n const handler = HANDLERS[path];\n if (handler) return handler;\n return () => {\n throw notImplemented(path);\n };\n}\n\nfunction applyOptions(cmd: Command, options: OptionSpec[] | undefined): void {\n for (const opt of options ?? []) {\n if (opt.default !== undefined) {\n cmd.option(opt.flags, opt.summary, opt.default);\n } else {\n cmd.option(opt.flags, opt.summary);\n }\n }\n}\n\nfunction attachService(program: Command, spec: ServiceSpec): void {\n const service = program.command(spec.name).description(spec.summary);\n\n // leaf 命令:直接挂 action(如 `yoooclaw doctor` / `yoooclaw api <method> <path>`)\n if (!spec.subcommands || spec.subcommands.length === 0) {\n if (spec.args) {\n service.arguments(spec.args);\n }\n applyOptions(service, spec.options);\n service.action(wrapAction(resolveHandler(spec.name)));\n } else {\n for (const sub of spec.subcommands) {\n const subCmd = service.command(sub.name).description(sub.summary);\n applyOptions(subCmd, sub.options);\n // path 的注册 key 用「服务名 + 子命令名(去掉位置参数占位)」\n subCmd.action(wrapAction(resolveHandler(handlerKey(spec.name, sub.name))));\n }\n }\n\n // shortcuts(`+` 前缀)作为该 service 下的子命令注册\n for (const shortcut of spec.shortcuts ?? []) {\n const shortcutCmd = service\n .command(shortcut.name)\n .description(shortcut.summary);\n applyOptions(shortcutCmd, shortcut.options);\n shortcutCmd.action(\n wrapAction(resolveHandler(handlerKey(spec.name, shortcut.name))),\n );\n }\n}\n\n/** 注册表的 path key:去掉子命令名里的位置参数占位(`show <id>` → `show`)。 */\nexport function handlerKey(service: string, subName: string): string {\n const bare = subName.split(/\\s+/)[0];\n return `${service} ${bare}`;\n}\n\n/** 构建并返回顶层 commander 程序。 */\nexport function buildProgram(): Command {\n const program = new Command();\n\n program\n .name(\"yoooclaw\")\n .description(\n \"yoooclaw —— 独立守护进程 + CLI:接收手机通知、Relay 隧道、灯效规则评估(Agent-Native)\",\n )\n .version(CLI_VERSION, \"-v, --version\", \"显示 CLI 版本号\")\n // 全局 flags(对所有命令生效)\n .option(\"--profile <name>\", \"切换 profile(默认 default)\")\n .option(\n \"--format <format>\",\n \"输出格式:json|pretty|table|ndjson(TTY 默认 pretty,管道默认 json)\",\n )\n .option(\"--quiet\", \"抑制进度日志,只输出最终结果\")\n .option(\"--no-color\", \"关闭终端颜色\")\n .showHelpAfterError();\n\n for (const spec of COMMAND_TREE) {\n attachService(program, spec);\n }\n\n return program;\n}\n",
|
|
28
|
+
"/**\n * 命令树声明 —— Service-oriented,对齐 lark-cli 形态与本仓 PRD「命令树总览」。\n *\n * 这是命令树的**单一事实来源**:program.ts 据此构建 commander 程序(结构 + options),\n * 实现体由 commands/registry.ts 按 path 提供;未注册的 path 回落 notImplemented 占位。\n *\n * daemon 依赖标记(仅文档用途,体现在 summary 里):\n * 🟢 不需要 daemon 🟡 需要 daemon 在跑 🔵 进程类(管理 daemon 自身)\n */\n\nexport interface OptionSpec {\n /** commander flags,如 `--from <iso8601>`、`--follow` */\n flags: string;\n summary: string;\n /** 默认值(仅对带值的 option 有意义) */\n default?: string;\n}\n\nexport interface SubcommandSpec {\n /** 子命令名 + 位置参数,如 `show <id>`、`api <method> <path>` */\n name: string;\n summary: string;\n options?: OptionSpec[];\n}\n\nexport interface ShortcutSpec {\n /** 含 `+` 前缀的快捷命令名,如 `+today` */\n name: string;\n summary: string;\n options?: OptionSpec[];\n}\n\nexport interface ServiceSpec {\n name: string;\n summary: string;\n /** 子命令列表。leaf 命令(直接执行,无子命令)省略此项并提供 `args`。 */\n subcommands?: SubcommandSpec[];\n /** leaf 命令的位置参数,如 `[keyword]`、`<method> <path>`。 */\n args?: string;\n /** leaf 命令的 options。 */\n options?: OptionSpec[];\n shortcuts?: ShortcutSpec[];\n}\n\nconst NOTIFICATION_QUERY_OPTIONS: OptionSpec[] = [\n { flags: \"--from <iso8601>\", summary: \"开始时间,如 2026-03-01T09:00:00+08:00\" },\n { flags: \"--to <iso8601>\", summary: \"结束时间\" },\n { flags: \"--app <name>\", summary: \"按应用过滤(支持中英文别名)\" },\n { flags: \"--sender <name>\", summary: \"按发送人/标题过滤\" },\n { flags: \"--conversation-type <type>\", summary: \"会话类型 group|private\" },\n { flags: \"--keyword <text>\", summary: \"在标题/内容/发送人/会话名中搜索\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"100\" },\n];\n\nexport const COMMAND_TREE: ServiceSpec[] = [\n {\n name: \"config\",\n summary: \"配置管理 🟢\",\n subcommands: [\n {\n name: \"init\",\n summary: \"交互式首次向导,生成 config + gateway token 并启动 daemon\",\n options: [\n { flags: \"--non-interactive\", summary: \"跳过向导(配合 --from-file)\" },\n { flags: \"--from-file <path>\", summary: \"从 JSON 文件导入配置(- 为 stdin)\" },\n { flags: \"--force\", summary: \"已存在 config 时覆盖\" },\n { flags: \"--no-start\", summary: \"只生成配置,不自动启动 daemon\" },\n ],\n },\n {\n name: \"show\",\n summary: \"显示当前 profile 配置(敏感字段遮罩)\",\n options: [{ flags: \"--show-secrets\", summary: \"输出敏感字段明文(需 TTY)\" }],\n },\n { name: \"set <key> <value>\", summary: \"设置单个配置项(点号路径)\" },\n { name: \"unset <key>\", summary: \"删除单个配置项\" },\n ],\n },\n {\n name: \"profile\",\n summary: \"多 profile 管理 🟢\",\n subcommands: [\n { name: \"list\", summary: \"列出所有 profile,标注 active\" },\n { name: \"use <name>\", summary: \"切换 active profile\" },\n { name: \"create <name>\", summary: \"新建 profile(走 config init 向导)\" },\n {\n name: \"delete <name>\",\n summary: \"删除 profile(非 active,需 --yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n ],\n },\n {\n name: \"auth\",\n summary: \"凭据与鉴权 🟢/🟡\",\n subcommands: [\n {\n name: \"set-api-key <key>\",\n summary: \"设置/轮换 account 级 default api-key(- 从 stdin 读)🟢\",\n options: [{ flags: \"--keychain\", summary: \"写入 OS keychain 而非文件\" }],\n },\n {\n name: \"add-api-key <key>\",\n summary: \"新增一条 multi-key api-key(- 从 stdin 读)🟢\",\n options: [\n { flags: \"--label <label>\", summary: \"api-key label([a-z0-9-]{1,32})\" },\n { flags: \"--default\", summary: \"设为 default key\" },\n { flags: \"--force\", summary: \"label 已存在时覆盖\" },\n ],\n },\n { name: \"list-api-keys\", summary: \"列出 api-key 条目(key 自动遮罩)🟢\" },\n { name: \"remove-api-key <label>\", summary: \"删除指定 label 的 api-key 🟢\" },\n { name: \"set-default-api-key <label>\", summary: \"切换 default api-key 🟢\" },\n {\n name: \"token-rotate\",\n summary: \"生成新 gateway token;daemon 在跑时随后 restart 生效 🟢\",\n options: [{ flags: \"--length <n>\", summary: \"token 字节长度\", default: \"32\" }],\n },\n { name: \"status\", summary: \"显示鉴权状态(本地检查,不调 daemon)🟢\" },\n { name: \"check\", summary: \"端到端鉴权体检(调 daemon /daemon/status)🟡\" },\n ],\n },\n {\n name: \"daemon\",\n summary: \"守护进程管理 🔵\",\n subcommands: [\n {\n name: \"start\",\n summary: \"启动 daemon(默认后台 detach)\",\n options: [\n { flags: \"--bind <host>\", summary: \"监听地址(默认 config.daemon.bind)\" },\n { flags: \"--port <n>\", summary: \"监听端口(默认 config.daemon.port)\" },\n { flags: \"--no-detach\", summary: \"前台运行(systemd/launchd 用)\" },\n { flags: \"--log-level <level>\", summary: \"error|warn|info|debug|trace\" },\n ],\n },\n { name: \"stop\", summary: \"停止 daemon(SIGTERM → 10s → SIGKILL)\" },\n { name: \"restart\", summary: \"stop + start,保留原启动参数\" },\n { name: \"reload\", summary: \"重读凭据并增量刷新 Relay 隧道\" },\n { name: \"status\", summary: \"打印 daemon 状态(PID/端口/relay/规则数...)\" },\n {\n name: \"logs\",\n summary: \"跟踪 daemon 日志\",\n options: [\n { flags: \"-f, --follow\", summary: \"持续 tail\" },\n { flags: \"--lines <n>\", summary: \"初始展示行数\", default: \"100\" },\n { flags: \"--level <level>\", summary: \"过滤日志级别\" },\n ],\n },\n {\n name: \"run-foreground\",\n summary: \"(内部)前台运行 daemon 主循环,供 detach 子进程调用\",\n options: [\n { flags: \"--bind <host>\", summary: \"监听地址\" },\n { flags: \"--port <n>\", summary: \"监听端口\" },\n { flags: \"--log-level <level>\", summary: \"日志级别\" },\n ],\n },\n ],\n },\n {\n name: \"notification\",\n summary: \"通知查询 🟢\",\n subcommands: [\n { name: \"search\", summary: \"按筛选条件查询通知,时间倒序\", options: NOTIFICATION_QUERY_OPTIONS },\n {\n name: \"summary\",\n summary: \"聚合统计 + 样例摘要,供 Agent 总结\",\n options: [\n ...NOTIFICATION_QUERY_OPTIONS,\n { flags: \"--sample <n>\", summary: \"返回最近样例条数\", default: \"30\" },\n { flags: \"--top <n>\", summary: \"聚合榜单条数\", default: \"10\" },\n ],\n },\n {\n name: \"stats\",\n summary: \"按维度聚合统计\",\n options: [\n { flags: \"--from <date>\", summary: \"YYYY-MM-DD,默认 7 天前\" },\n { flags: \"--to <date>\", summary: \"YYYY-MM-DD,默认今天\" },\n { flags: \"--app <name>\", summary: \"仅统计指定应用\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--dim <dim>\", summary: \"date|app|sender|hour|client|all\", default: \"all\" },\n ],\n },\n { name: \"storage-path\", summary: \"打印 notifications 目录绝对路径\" },\n ],\n shortcuts: [\n { name: \"+today\", summary: \"今日通知摘要\", options: [{ flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" }] },\n { name: \"+recent\", summary: \"最近 1 小时通知\", options: [{ flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" }] },\n { name: \"+unread\", summary: \"(预留)未读通知\" },\n ],\n },\n {\n name: \"sync\",\n summary: \"通知同步给记忆系统 🟢\",\n subcommands: [\n { name: \"scan\", summary: \"扫描未处理通知,返回各日期待同步摘要\" },\n {\n name: \"fetch\",\n summary: \"获取指定日期未处理通知详情\",\n options: [\n { flags: \"--date <YYYY-MM-DD>\", summary: \"目标日期(必填)\" },\n { flags: \"--max-end-index <index>\", summary: \"本次快照允许读取的最大 endIndex\" },\n ],\n },\n {\n name: \"commit\",\n summary: \"标记指定日期当前批次处理完成\",\n options: [\n { flags: \"--date <YYYY-MM-DD>\", summary: \"目标日期(必填)\" },\n { flags: \"--end-index <index>\", summary: \"本批次 fetch 返回的 endIndex\" },\n ],\n },\n ],\n },\n {\n name: \"recording\",\n summary: \"录音查询与 ASR 配置 🟢\",\n subcommands: [\n {\n name: \"list\",\n summary: \"列出所有录音 🟢\",\n options: [\n { flags: \"--status <status>\", summary: \"按传输状态过滤\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n ],\n },\n { name: \"status <id>\", summary: \"查看单条录音详情 🟢\" },\n { name: \"storage-path\", summary: \"打印录音存储目录绝对路径 🟢\" },\n {\n name: \"setup-asr\",\n summary: \"交互式配置 ASR 转写参数 🟢\",\n options: [\n { flags: \"--mode <mode>\", summary: \"api | local(默认 api)\" },\n { flags: \"--api-key <key>\", summary: \"api 模式:可选;留空则用 account ock- key\" },\n { flags: \"--endpoint <url>\", summary: \"api 模式:自定义 model-proxy 端点\" },\n { flags: \"--language <lang>\", summary: \"api 模式:语言提示,如 zh / en / auto\" },\n { flags: \"--model <name>\", summary: \"local 模式:Whisper 模型名\" },\n { flags: \"--non-interactive\", summary: \"跳过向导,从参数构造配置\" },\n ],\n },\n {\n name: \"events\",\n summary: \"查询录音状态事件流(JSONL) 🟢\",\n options: [\n { flags: \"--id <recordingId>\", summary: \"只看某条录音的事件\" },\n { flags: \"--since <duration>\", summary: \"回看时间窗,如 10m / 1h / 24h\" },\n { flags: \"--watch\", summary: \"持续跟随新事件(tail -f)\" },\n { flags: \"--limit <n>\", summary: \"返回条数上限\", default: \"200\" },\n ],\n },\n ],\n shortcuts: [{ name: \"+latest\", summary: \"展示最新一条录音详情\" }],\n },\n {\n name: \"image\",\n summary: \"图片管理 🟢\",\n subcommands: [\n {\n name: \"list\",\n summary: \"列出所有图片\",\n options: [\n { flags: \"--status <status>\", summary: \"syncing|synced|sync_failed\" },\n { flags: \"--app <name>\", summary: \"按来源应用过滤\" },\n { flags: \"--client <label>\", summary: \"按 clientLabel 过滤;all 为全部\" },\n { flags: \"--from <iso8601>\", summary: \"created_at 起\" },\n { flags: \"--to <iso8601>\", summary: \"created_at 止\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"100\" },\n ],\n },\n { name: \"status <id>\", summary: \"查看单张图片详情\" },\n {\n name: \"path <id>\",\n summary: \"打印图片本地文件绝对路径\",\n options: [{ flags: \"--thumbnail\", summary: \"返回缩略图路径(若有)\" }],\n },\n { name: \"storage-path\", summary: \"打印图片存储目录绝对路径\" },\n ],\n shortcuts: [{ name: \"+latest\", summary: \"展示最新一张图片详情\" }],\n },\n {\n name: \"light\",\n summary: \"灯效硬件控制 🟡\",\n subcommands: [\n {\n name: \"send\",\n summary: \"发送灯效指令到硬件(--segments / --preset / --rule 三选一)\",\n options: [\n { flags: \"--segments <json>\", summary: \"灯效参数 JSON(原始段)\" },\n { flags: \"--preset <name>\", summary: \"内置预设 id(如 red-steady / red-strobe-3)\" },\n { flags: \"--rule <name>\", summary: \"已保存的 lightrule 名\" },\n { flags: \"--repeat\", summary: \"无限循环播放(覆盖来源默认值)\" },\n { flags: \"--repeat-times <n>\", summary: \"整条组合重复次数(0=无限,覆盖来源默认值)\" },\n ],\n },\n ],\n shortcuts: [{ name: \"+blink\", summary: \"灯效连通性测试(red-strobe-3)\" }],\n },\n {\n name: \"lightrule\",\n summary: \"灯效规则管理 🟡\",\n subcommands: [\n { name: \"list\", summary: \"列出所有规则及状态\" },\n { name: \"show <id>\", summary: \"查看单条规则详情\" },\n {\n name: \"create\",\n summary: \"创建规则(--from-file / --intent ...)\",\n options: [\n { flags: \"--from-file <path>\", summary: \"从 JSON 读规则(- 为 stdin)\" },\n { flags: \"--name <text>\", summary: \"规则名\" },\n { flags: \"--intent <text>\", summary: \"自然语言意图描述\" },\n { flags: \"--light-action <json>\", summary: \"命中后的 light 动作 JSON\" },\n { flags: \"--match-rules <json>\", summary: \"前置硬过滤规则 JSON\" },\n ],\n },\n {\n name: \"update <id>\",\n summary: \"更新现有规则\",\n options: [\n { flags: \"--from-file <path>\", summary: \"从 JSON 读规则(- 为 stdin)\" },\n { flags: \"--name <text>\", summary: \"规则名\" },\n { flags: \"--intent <text>\", summary: \"自然语言意图描述\" },\n { flags: \"--light-action <json>\", summary: \"命中后的 light 动作 JSON\" },\n { flags: \"--match-rules <json>\", summary: \"前置硬过滤规则 JSON\" },\n ],\n },\n {\n name: \"delete <id>\",\n summary: \"删除规则(--yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n { name: \"enable <id>\", summary: \"启用单条规则\" },\n { name: \"disable <id>\", summary: \"停用单条规则\" },\n ],\n shortcuts: [\n { name: \"+on\", summary: \"启用所有规则\" },\n { name: \"+off\", summary: \"停用所有规则(保留定义)\" },\n ],\n },\n {\n name: \"monitor\",\n summary: \"定时通知监控任务 🟡\",\n subcommands: [\n { name: \"list\", summary: \"列出所有监控任务\" },\n { name: \"show <name>\", summary: \"查看监控任务详情\" },\n {\n name: \"create <name>\",\n summary: \"创建监控任务(cron 驱动)\",\n options: [\n { flags: \"--description <text>\", summary: \"任务描述(必填)\" },\n { flags: \"--match-rules <json>\", summary: \"匹配规则 JSON(必填)\" },\n { flags: \"--schedule <cron>\", summary: \"cron 表达式(必填)\" },\n ],\n },\n {\n name: \"delete <name>\",\n summary: \"删除监控任务(--yes)\",\n options: [{ flags: \"--yes\", summary: \"跳过确认\" }],\n },\n { name: \"enable <name>\", summary: \"启用监控任务\" },\n { name: \"disable <name>\", summary: \"暂停监控任务\" },\n ],\n },\n {\n name: \"tunnel\",\n summary: \"Relay 隧道 🟡\",\n subcommands: [\n {\n name: \"status\",\n summary: \"查询 Relay 连接状态\",\n options: [{ flags: \"--client <label>\", summary: \"只看指定 clientLabel;all 为全部\" }],\n },\n {\n name: \"reconnect\",\n summary: \"强制重连\",\n options: [{ flags: \"--client <label>\", summary: \"只重连指定 clientLabel\" }],\n },\n ],\n shortcuts: [\n {\n name: \"+test\",\n summary: \"daemon 本地 ingest + 鉴权自检(echo 回环)\",\n options: [{ flags: \"--client <label>\", summary: \"用指定 clientLabel 的 api-key 做回环写入\" }],\n },\n ],\n },\n {\n name: \"log\",\n summary: \"日志检索 🟢\",\n args: \"[keyword]\",\n options: [\n { flags: \"--from <date>\", summary: \"YYYY-MM-DD,默认 7 天前\" },\n { flags: \"--to <date>\", summary: \"YYYY-MM-DD,默认今天\" },\n { flags: \"--limit <n>\", summary: \"最大返回条数\", default: \"50\" },\n { flags: \"--level <level>\", summary: \"过滤日志级别\" },\n ],\n shortcuts: [{ name: \"+errors\", summary: \"昨天起的 error 级日志\" }],\n },\n {\n name: \"gateway\",\n summary: \"协议自检 🟢/🟡\",\n subcommands: [\n {\n name: \"test\",\n summary: \"模拟手机端调 daemon /notifications,验证本地连通与鉴权 🟡\",\n options: [\n { flags: \"--from-phone-ip <ip>\", summary: \"模拟来源 IP\" },\n { flags: \"--via-relay\", summary: \"复用 tunnel +test 本地回环路径\" },\n ],\n },\n ],\n },\n {\n name: \"api\",\n summary: \"Raw HTTP escape hatch 🟡\",\n args: \"<method> <path>\",\n options: [\n { flags: \"--data <json>\", summary: \"请求体(@file 读文件、- 读 stdin)\" },\n { flags: \"--header <key:value>\", summary: \"追加 header(可重复)\" },\n ],\n },\n {\n name: \"migrate\",\n summary: \"从 openclaw 插件迁移数据 🟢\",\n subcommands: [\n {\n name: \"from-openclaw\",\n summary: \"迁移 notifications/recordings/规则/api-key 到 ~/.yoooclaw\",\n options: [\n { flags: \"--dry-run\", summary: \"只打印迁移计划,不写入\" },\n { flags: \"--source <path>\", summary: \"自定义源目录,默认 ~/.openclaw\" },\n ],\n },\n ],\n },\n {\n name: \"update\",\n summary: \"版本检查 🟢\",\n subcommands: [\n {\n name: \"self\",\n summary: \"检查 npm 最新版本并提示(不自动更新)\",\n options: [\n { flags: \"--beta\", summary: \"检查 beta channel\" },\n { flags: \"--json\", summary: \"只输出版本信息 JSON\" },\n ],\n },\n ],\n },\n {\n name: \"skills\",\n summary: \"Agent 技能管理:把随包发布的 SKILL.md 装到 agent 可发现目录 🟢\",\n subcommands: [\n { name: \"list\", summary: \"列出随 CLI 发布的内置 Skill 及其触发说明\" },\n { name: \"targets\", summary: \"列出支持的 Agent skills 目录与自动探测结果\" },\n {\n name: \"install\",\n summary: \"把内置 Skill 安装到 agent skills 目录(默认自动探测,软链)\",\n options: [\n { flags: \"--agent <agent>\", summary: \"安装目标 agent:auto|claude|codex|custom\", default: \"auto\" },\n { flags: \"--target <dir>\", summary: \"安装目标目录;传入后优先于自动探测\" },\n { flags: \"--copy\", summary: \"复制而非软链(升级后不随包自动更新)\" },\n { flags: \"--force\", summary: \"目标已存在同名 Skill 时覆盖\" },\n ],\n },\n ],\n },\n {\n name: \"doctor\",\n summary: \"本地环境自检:Node/目录/keychain/config/daemon 🟢\",\n options: [\n { flags: \"--json\", summary: \"JSON 输出(给脚本用)\" },\n { flags: \"--fix\", summary: \"自动修复可修复的问题\" },\n ],\n },\n];\n",
|
|
29
29
|
"/**\n * 全局执行上下文 —— 由全局 flags 解析得到,贯穿所有命令。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport {\n DEFAULT_PROFILE,\n activeProfilePath,\n profilePaths,\n type ProfilePaths,\n} from \"./paths.js\";\nimport { resolveFormat, type OutputFormat } from \"./output/format.js\";\n\nexport interface GlobalFlags {\n profile?: string;\n format?: string;\n quiet?: boolean;\n color?: boolean;\n}\n\nexport interface CliContext {\n profile: string;\n paths: ProfilePaths;\n format: OutputFormat;\n quiet: boolean;\n color: boolean;\n}\n\n/** 解析当前 active profile:--profile > $YOOOCLAW_PROFILE > active-profile 文件 > default。 */\nexport function resolveActiveProfile(flagProfile?: string): string {\n if (flagProfile?.trim()) return flagProfile.trim();\n const envProfile = process.env.YOOOCLAW_PROFILE?.trim();\n if (envProfile) return envProfile;\n const file = activeProfilePath();\n if (existsSync(file)) {\n const name = readFileSync(file, \"utf-8\").trim();\n if (name) return name;\n }\n return DEFAULT_PROFILE;\n}\n\n/** 把全局 flags 物化成贯穿命令的 CliContext。 */\nexport function buildContext(flags: GlobalFlags): CliContext {\n const profile = resolveActiveProfile(flags.profile);\n return {\n profile,\n paths: profilePaths(profile),\n format: resolveFormat(flags.format),\n quiet: flags.quiet ?? false,\n // commander 对 --no-color 解析为 color:false;缺省 true\n color: flags.color ?? true,\n };\n}\n",
|
|
30
30
|
"/**\n * `~/.yoooclaw/` 目录布局解析(对齐 PRD「数据模型 / 目录布局」)。\n *\n * ~/.yoooclaw/\n * credentials.json account 级共享凭据(api-key),跨 profile 且与插件共享\n * active-profile 当前 active profile 名(文本)\n * profiles/<profile>/\n * config.json\n * credentials.json instance 级密文(gateway token / webhook secret)\n * daemon.lock / daemon.log\n * notifications/ recordings/ images/ light-rules/ state/\n */\nimport { existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport const DEFAULT_PROFILE = \"default\";\n\n/** CLI 根数据目录。可用 `YOOOCLAW_HOME` 覆盖(测试 / 多实例隔离)。 */\nexport function rootDir(): string {\n return process.env.YOOOCLAW_HOME?.trim() || join(homedir(), \".yoooclaw\");\n}\n\n/** account 级共享凭据文件(顶层,跨 profile + 插件共享)。 */\nexport function sharedCredentialsPath(): string {\n return join(rootDir(), \"credentials.json\");\n}\n\n/** 记录当前 active profile 的文本文件。 */\nexport function activeProfilePath(): string {\n return join(rootDir(), \"active-profile\");\n}\n\n/** 某个 profile 的目录。 */\nexport function profileDir(profile: string): string {\n return join(rootDir(), \"profiles\", profile);\n}\n\nexport interface ProfilePaths {\n profile: string;\n dir: string;\n config: string;\n credentials: string;\n daemonLock: string;\n daemonLog: string;\n notifications: string;\n recordings: string;\n images: string;\n lightRules: string;\n state: string;\n}\n\n/** profiles/ 根目录。 */\nexport function profilesRoot(): string {\n return join(rootDir(), \"profiles\");\n}\n\n/** 列出已存在的 profile 名(profiles/ 下的目录)。 */\nexport function listProfileNames(): string[] {\n const root = profilesRoot();\n if (!existsSync(root)) return [];\n return readdirSync(root, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\n/** 读取 active-profile 文件内容(不存在返回 undefined)。 */\nexport function readActiveProfile(): string | undefined {\n const file = activeProfilePath();\n if (!existsSync(file)) return undefined;\n const name = readFileSync(file, \"utf-8\").trim();\n return name || undefined;\n}\n\n/** 解析某个 profile 下的全部关键路径。 */\nexport function profilePaths(profile: string): ProfilePaths {\n const dir = profileDir(profile);\n return {\n profile,\n dir,\n config: join(dir, \"config.json\"),\n credentials: join(dir, \"credentials.json\"),\n daemonLock: join(dir, \"daemon.lock\"),\n daemonLog: join(dir, \"daemon.log\"),\n notifications: join(dir, \"notifications\"),\n recordings: join(dir, \"recordings\"),\n images: join(dir, \"images\"),\n lightRules: join(dir, \"light-rules\"),\n state: join(dir, \"state\"),\n };\n}\n",
|
|
31
31
|
"/**\n * 结构化错误码 —— 进入半正式契约,命名前缀统一 `YOOOCLAW_*`。\n * 命令失败时统一以 `{ ok: false, error: { code, message, ... } }` 输出(见 output/format.ts)。\n */\nexport const ErrorCode = {\n /** 通用 / 未归类错误 */\n UNKNOWN: \"YOOOCLAW_UNKNOWN\",\n /** 参数校验失败 */\n INVALID_ARGUMENT: \"YOOOCLAW_INVALID_ARGUMENT\",\n /** 该命令尚未实现(脚手架阶段占位) */\n NOT_IMPLEMENTED: \"YOOOCLAW_NOT_IMPLEMENTED\",\n /** daemon 未运行 */\n DAEMON_NOT_RUNNING: \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n /** daemon 已在运行(单例保护) */\n DAEMON_ALREADY_RUNNING: \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n /** 鉴权失败 / token 不一致 */\n UNAUTHORIZED: \"YOOOCLAW_UNAUTHORIZED\",\n /** 配置缺失或非法 */\n CONFIG_INVALID: \"YOOOCLAW_CONFIG_INVALID\",\n /** profile 不存在 */\n PROFILE_NOT_FOUND: \"YOOOCLAW_PROFILE_NOT_FOUND\",\n /** 图片尚未下载完成 */\n IMAGE_NOT_READY: \"YOOOCLAW_IMAGE_NOT_READY\",\n /** 资源未找到 */\n NOT_FOUND: \"YOOOCLAW_NOT_FOUND\",\n /** 资源已存在(如 profile 重名) */\n ALREADY_EXISTS: \"YOOOCLAW_ALREADY_EXISTS\",\n /** 存储目录不可用 */\n STORAGE_UNAVAILABLE: \"YOOOCLAW_STORAGE_UNAVAILABLE\",\n /** 凭据缺失 */\n CREDENTIAL_MISSING: \"YOOOCLAW_CREDENTIAL_MISSING\",\n /** OS keychain 不可用 */\n KEYCHAIN_UNAVAILABLE: \"YOOOCLAW_KEYCHAIN_UNAVAILABLE\",\n /** api-key label 不合法 */\n APIKEY_LABEL_INVALID: \"YOOOCLAW_APIKEY_LABEL_INVALID\",\n /** api-key label 已存在 */\n APIKEY_LABEL_DUPLICATE: \"YOOOCLAW_APIKEY_LABEL_DUPLICATE\",\n /** api-key label 不存在 */\n APIKEY_LABEL_NOT_FOUND: \"YOOOCLAW_APIKEY_LABEL_NOT_FOUND\",\n /** multi-key 模式不支持 keychain 写入 */\n KEYCHAIN_MULTI_UNSUPPORTED: \"YOOOCLAW_KEYCHAIN_MULTI_UNSUPPORTED\",\n /** tunnel label 不存在 */\n TUNNEL_LABEL_NOT_FOUND: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\",\n /** 网络 / 出站调用失败 */\n NETWORK_ERROR: \"YOOOCLAW_NETWORK_ERROR\",\n /** 操作被用户取消或需要确认 */\n CONFIRMATION_REQUIRED: \"YOOOCLAW_CONFIRMATION_REQUIRED\",\n /** 需要 TTY 交互但当前非交互环境 */\n NOT_INTERACTIVE: \"YOOOCLAW_NOT_INTERACTIVE\",\n} as const;\n\nexport type ErrorCodeValue = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nexport interface YoooclawErrorDetails {\n hint?: string;\n checkedPaths?: string[];\n [key: string]: unknown;\n}\n\n/**\n * 携带结构化错误码的错误。CLI 顶层捕获后按 `--format` 序列化为统一错误 schema。\n */\nexport class YoooclawError extends Error {\n readonly code: ErrorCodeValue;\n readonly details: YoooclawErrorDetails;\n /** 进程退出码,默认 1 */\n readonly exitCode: number;\n\n constructor(\n code: ErrorCodeValue,\n message: string,\n details: YoooclawErrorDetails = {},\n exitCode = 1,\n ) {\n super(message);\n this.name = \"YoooclawError\";\n this.code = code;\n this.details = details;\n this.exitCode = exitCode;\n }\n\n toErrorPayload(): {\n code: ErrorCodeValue;\n message: string;\n } & YoooclawErrorDetails {\n return { code: this.code, message: this.message, ...this.details };\n }\n}\n\nexport function notImplemented(command: string): YoooclawError {\n return new YoooclawError(\n ErrorCode.NOT_IMPLEMENTED,\n `命令 \\`${command}\\` 尚未实现`,\n { hint: \"该命令处于脚手架阶段,后续按 imp 文档逐步落地\" },\n );\n}\n",
|
|
@@ -38,12 +38,11 @@
|
|
|
38
38
|
"/**\n * 凭据存取 —— account 级 api-key(共享)与 instance 级 gateway token(per-profile)。\n *\n * api-key 分层解析(PRD「凭据解析顺序与插件共享」),命中即停:\n * 1. env YOOOCLAW_API_KEY —— 显式覆盖\n * 2. keychain yoooclaw/api-key —— 可选加固\n * 3. file ~/.yoooclaw/credentials.json#apiKey —— 默认共享底座(与插件共用)\n */\nimport { randomBytes } from \"node:crypto\";\nimport { sharedCredentialsPath } from \"../paths.js\";\nimport { readJsonFile, writeJsonFile, SECRET_FILE_MODE } from \"../fs-utils.js\";\nimport { keychainAvailable, keychainGet, keychainSet } from \"./keychain.js\";\nimport { resolveRef, writeRef, type ResolvedRef } from \"./refs.js\";\nimport type { YoooclawConfig } from \"../config/schema.js\";\nimport { ErrorCode, YoooclawError } from \"../errors.js\";\n\nexport const API_KEY_ENV = \"YOOOCLAW_API_KEY\";\nexport const KEYCHAIN_SERVICE = \"yoooclaw\";\nexport const KEYCHAIN_API_KEY_ACCOUNT = \"api-key\";\nexport const API_KEY_FIELD = \"apiKey\";\nexport const API_KEYS_FIELD = \"apiKeys\";\n\nexport interface ApiKeyResolution {\n value?: string;\n source: ApiKeyEntry[\"source\"] | \"none\";\n location?: string;\n label?: string;\n}\n\nexport interface ApiKeyEntry {\n label: string;\n key: string;\n default: boolean;\n source: \"env\" | \"keychain\" | \"file\";\n createdAt?: string;\n}\n\nexport type CredentialMode =\n | \"env-single\"\n | \"file-multi\"\n | \"keychain-single\"\n | \"legacy-file-single\"\n | \"none\";\n\nexport interface CredentialSet {\n mode: CredentialMode;\n entries: ApiKeyEntry[];\n defaultEntry?: ApiKeyEntry;\n location?: string;\n legacyApiKeyPresent: boolean;\n shadowedKeychainPresent: boolean;\n warnings: string[];\n}\n\nexport interface StoredApiKeyEntry {\n label: string;\n key: string;\n default?: boolean;\n createdAt?: string;\n}\n\nconst RESERVED_LABELS = new Set([\"all\", \"legacy\", \"env\", \"keychain\", \"local\"]);\nconst LABEL_RE = /^[a-z0-9-]{1,32}$/;\n\nfunction readSharedCredentials(): Record<string, unknown> {\n return readJsonFile<Record<string, unknown>>(sharedCredentialsPath()) ?? {};\n}\n\nfunction writeSharedCredentials(data: Record<string, unknown>): void {\n writeJsonFile(sharedCredentialsPath(), data, SECRET_FILE_MODE);\n}\n\nfunction normalizeStoredEntry(raw: unknown, warnings: string[]): StoredApiKeyEntry | null {\n if (!raw || typeof raw !== \"object\") {\n warnings.push(\"apiKeys[] 包含非对象条目,已跳过\");\n return null;\n }\n const item = raw as Record<string, unknown>;\n const label = typeof item.label === \"string\" ? item.label.trim() : \"\";\n const key = typeof item.key === \"string\" ? item.key.trim() : \"\";\n if (!isValidApiKeyLabel(label)) {\n warnings.push(`apiKeys[] 包含非法 label: ${label || \"<empty>\"},已跳过`);\n return null;\n }\n if (!key) {\n warnings.push(`apiKeys[] label=${label} 的 key 为空,已跳过`);\n return null;\n }\n return {\n label,\n key,\n default: item.default === true,\n createdAt: typeof item.createdAt === \"string\" ? item.createdAt : undefined,\n };\n}\n\nfunction normalizeStoredEntries(raw: unknown, warnings: string[]): StoredApiKeyEntry[] {\n if (!Array.isArray(raw)) return [];\n const seen = new Set<string>();\n const entries: StoredApiKeyEntry[] = [];\n for (const item of raw) {\n const normalized = normalizeStoredEntry(item, warnings);\n if (!normalized) continue;\n if (seen.has(normalized.label)) {\n warnings.push(`apiKeys[] label=${normalized.label} 重复,已跳过后续条目`);\n continue;\n }\n seen.add(normalized.label);\n entries.push(normalized);\n }\n return entries;\n}\n\nfunction toRuntimeEntries(entries: StoredApiKeyEntry[]): ApiKeyEntry[] {\n const defaultIdx = entries.findIndex((entry) => entry.default === true);\n const effectiveDefaultIdx = entries.length === 0 ? -1 : defaultIdx >= 0 ? defaultIdx : 0;\n return entries.map((entry, idx) => ({\n label: entry.label,\n key: entry.key,\n default: idx === effectiveDefaultIdx,\n source: \"file\",\n createdAt: entry.createdAt,\n }));\n}\n\nfunction defaultEntry(entries: ApiKeyEntry[]): ApiKeyEntry | undefined {\n return entries.find((entry) => entry.default) ?? entries[0];\n}\n\nfunction keychainValue(): string | undefined {\n if (!keychainAvailable()) return undefined;\n const r = keychainGet(KEYCHAIN_SERVICE, KEYCHAIN_API_KEY_ACCOUNT);\n return r.value || undefined;\n}\n\nfunction hasOwn(data: Record<string, unknown>, field: string): boolean {\n return Object.prototype.hasOwnProperty.call(data, field);\n}\n\nexport function isValidApiKeyLabel(label: string): boolean {\n return LABEL_RE.test(label) && !RESERVED_LABELS.has(label);\n}\n\nexport function assertValidApiKeyLabel(label: string): void {\n if (!isValidApiKeyLabel(label)) {\n throw new YoooclawError(\n ErrorCode.APIKEY_LABEL_INVALID,\n \"label 不合法:仅允许 [a-z0-9-]{1,32},且不能使用保留字 all/legacy/env/keychain/local\",\n { label },\n );\n }\n}\n\nfunction storedEntriesFromFile(data: Record<string, unknown>): StoredApiKeyEntry[] {\n const warnings: string[] = [];\n return normalizeStoredEntries(data[API_KEYS_FIELD], warnings);\n}\n\nfunction writeApiKeys(entries: StoredApiKeyEntry[], extra?: Record<string, unknown>): ApiKeyResolution {\n const data = { ...readSharedCredentials(), ...(extra ?? {}) };\n data[API_KEYS_FIELD] = entries.map((entry) => ({\n label: entry.label,\n key: entry.key,\n ...(entry.default ? { default: true } : {}),\n ...(entry.createdAt ? { createdAt: entry.createdAt } : {}),\n }));\n delete data[API_KEY_FIELD];\n writeSharedCredentials(data);\n const runtime = toRuntimeEntries(entries);\n const chosen = defaultEntry(runtime);\n return { value: chosen?.key, source: chosen?.source ?? \"none\", location: sharedCredentialsPath(), label: chosen?.label };\n}\n\nexport function resolveApiKeyEntries(): CredentialSet {\n const env = process.env[API_KEY_ENV]?.trim();\n if (env) {\n const entry: ApiKeyEntry = { label: \"env\", key: env, default: true, source: \"env\" };\n return {\n mode: \"env-single\",\n entries: [entry],\n defaultEntry: entry,\n location: API_KEY_ENV,\n legacyApiKeyPresent: false,\n shadowedKeychainPresent: false,\n warnings: [],\n };\n }\n\n const file = sharedCredentialsPath();\n const data = readSharedCredentials();\n const legacy = typeof data[API_KEY_FIELD] === \"string\" && Boolean((data[API_KEY_FIELD] as string).trim());\n const kc = keychainValue();\n\n if (hasOwn(data, API_KEYS_FIELD)) {\n const warnings: string[] = [];\n const stored = normalizeStoredEntries(data[API_KEYS_FIELD], warnings);\n if (stored.length > 0 && !stored.some((entry) => entry.default)) {\n warnings.push(`apiKeys[] 未标记 default,运行时使用第一条 label=${stored[0].label}`);\n }\n const entries = toRuntimeEntries(stored);\n return {\n mode: \"file-multi\",\n entries,\n defaultEntry: defaultEntry(entries),\n location: file,\n legacyApiKeyPresent: legacy,\n shadowedKeychainPresent: Boolean(kc),\n warnings,\n };\n }\n\n if (kc) {\n const entry: ApiKeyEntry = { label: \"keychain\", key: kc, default: true, source: \"keychain\" };\n return {\n mode: \"keychain-single\",\n entries: [entry],\n defaultEntry: entry,\n location: `${KEYCHAIN_SERVICE}/${KEYCHAIN_API_KEY_ACCOUNT}`,\n legacyApiKeyPresent: legacy,\n shadowedKeychainPresent: false,\n warnings: [],\n };\n }\n\n const value = legacy ? (data[API_KEY_FIELD] as string).trim() : \"\";\n if (value) {\n const entry: ApiKeyEntry = { label: \"default\", key: value, default: true, source: \"file\" };\n return {\n mode: \"legacy-file-single\",\n entries: [entry],\n defaultEntry: entry,\n location: file,\n legacyApiKeyPresent: true,\n shadowedKeychainPresent: false,\n warnings: [],\n };\n }\n\n return {\n mode: \"none\",\n entries: [],\n location: file,\n legacyApiKeyPresent: false,\n shadowedKeychainPresent: false,\n warnings: [],\n };\n}\n\n/** 按分层顺序解析 account 级 api-key。 */\nexport function resolveApiKey(): ApiKeyResolution {\n const set = resolveApiKeyEntries();\n const entry = set.defaultEntry;\n if (!entry) return { source: \"none\", location: set.location };\n return { value: entry.key, source: entry.source, location: set.location, label: entry.label };\n}\n\n/** 写入 account 级 api-key。默认写共享文件;--keychain 时写 OS keychain。 */\nexport function setApiKey(key: string, useKeychain: boolean): ApiKeyResolution {\n const trimmed = key.trim();\n if (!trimmed) {\n throw new YoooclawError(ErrorCode.INVALID_ARGUMENT, \"api-key 不能为空\");\n }\n if (useKeychain) {\n const data = readSharedCredentials();\n if (hasOwn(data, API_KEYS_FIELD)) {\n throw new YoooclawError(\n ErrorCode.KEYCHAIN_MULTI_UNSUPPORTED,\n \"multi-key 模式不支持 --keychain;请使用文件 apiKeys[] 管理多 key\",\n );\n }\n if (!keychainSet(KEYCHAIN_SERVICE, KEYCHAIN_API_KEY_ACCOUNT, trimmed)) {\n throw new YoooclawError(\n ErrorCode.KEYCHAIN_UNAVAILABLE,\n \"当前平台无法写入 keychain,请去掉 --keychain 改写共享文件\",\n );\n }\n return { value: trimmed, source: \"keychain\", location: `${KEYCHAIN_SERVICE}/${KEYCHAIN_API_KEY_ACCOUNT}`, label: \"keychain\" };\n }\n const file = sharedCredentialsPath();\n const data = readSharedCredentials();\n if (hasOwn(data, API_KEYS_FIELD)) {\n const entries = storedEntriesFromFile(data);\n if (entries.length === 0) {\n return writeApiKeys([{ label: \"default\", key: trimmed, default: true, createdAt: new Date().toISOString() }]);\n }\n const idx = entries.findIndex((entry) => entry.default) >= 0\n ? entries.findIndex((entry) => entry.default)\n : 0;\n const next = entries.map((entry, entryIdx) => ({\n ...entry,\n key: entryIdx === idx ? trimmed : entry.key,\n default: entryIdx === idx,\n }));\n return writeApiKeys(next);\n }\n data[API_KEY_FIELD] = trimmed;\n writeJsonFile(file, data, SECRET_FILE_MODE);\n return { value: trimmed, source: \"file\", location: file, label: \"default\" };\n}\n\nexport function addApiKey(\n key: string,\n label: string,\n opts: { makeDefault?: boolean; force?: boolean } = {},\n): ApiKeyResolution {\n const trimmed = key.trim();\n if (!trimmed) {\n throw new YoooclawError(ErrorCode.INVALID_ARGUMENT, \"api-key 不能为空\");\n }\n assertValidApiKeyLabel(label);\n const data = readSharedCredentials();\n let entries: StoredApiKeyEntry[];\n if (hasOwn(data, API_KEYS_FIELD)) {\n entries = storedEntriesFromFile(data);\n } else {\n const legacy = typeof data[API_KEY_FIELD] === \"string\" ? data[API_KEY_FIELD].trim() : \"\";\n entries = legacy\n ? [{ label: \"default\", key: legacy, default: true, createdAt: new Date().toISOString() }]\n : [];\n }\n\n const existingIdx = entries.findIndex((entry) => entry.label === label);\n if (existingIdx >= 0 && !opts.force) {\n throw new YoooclawError(\n ErrorCode.APIKEY_LABEL_DUPLICATE,\n `api-key label 已存在:${label}`,\n { hint: \"如需覆盖,追加 --force\", label },\n );\n }\n\n const shouldDefault = opts.makeDefault || entries.length === 0;\n const nextEntry: StoredApiKeyEntry = {\n label,\n key: trimmed,\n default: shouldDefault,\n createdAt: existingIdx >= 0 ? entries[existingIdx].createdAt : new Date().toISOString(),\n };\n if (existingIdx >= 0) entries[existingIdx] = nextEntry;\n else entries.push(nextEntry);\n if (shouldDefault) {\n entries = entries.map((entry) => ({ ...entry, default: entry.label === label }));\n } else if (!entries.some((entry) => entry.default)) {\n entries[0] = { ...entries[0], default: true };\n }\n\n return writeApiKeys(entries);\n}\n\nexport function removeApiKey(label: string): { result: ApiKeyResolution; removed: string; newDefault?: string } {\n assertValidApiKeyLabel(label);\n const data = readSharedCredentials();\n const entries = hasOwn(data, API_KEYS_FIELD)\n ? storedEntriesFromFile(data)\n : (() => {\n const legacy = typeof data[API_KEY_FIELD] === \"string\" ? data[API_KEY_FIELD].trim() : \"\";\n return legacy ? [{ label: \"default\", key: legacy, default: true, createdAt: new Date().toISOString() }] : [];\n })();\n const idx = entries.findIndex((entry) => entry.label === label);\n if (idx < 0) {\n throw new YoooclawError(ErrorCode.APIKEY_LABEL_NOT_FOUND, `api-key label 不存在:${label}`, { label });\n }\n const removedDefault = entries[idx].default === true;\n let next = entries.filter((entry) => entry.label !== label);\n if (next.length > 0 && (removedDefault || !next.some((entry) => entry.default))) {\n next = next.map((entry, entryIdx) => ({ ...entry, default: entryIdx === 0 }));\n }\n const result = writeApiKeys(next);\n return { result, removed: label, newDefault: result.label };\n}\n\nexport function setDefaultApiKey(label: string): ApiKeyResolution {\n assertValidApiKeyLabel(label);\n const data = readSharedCredentials();\n const entries = hasOwn(data, API_KEYS_FIELD) ? storedEntriesFromFile(data) : [];\n const idx = entries.findIndex((entry) => entry.label === label);\n if (idx < 0) {\n throw new YoooclawError(ErrorCode.APIKEY_LABEL_NOT_FOUND, `api-key label 不存在:${label}`, { label });\n }\n return writeApiKeys(entries.map((entry) => ({ ...entry, default: entry.label === label })));\n}\n\nexport function maskSecret(value: string | undefined): string | undefined {\n if (!value) return undefined;\n if (value.length <= 8) return \"***\";\n return `${value.slice(0, 4)}***${value.slice(-4)}`;\n}\n\n/** 解析当前 profile 的 gateway token(按 config.auth.tokenRef)。 */\nexport function resolveGatewayToken(config: YoooclawConfig): ResolvedRef {\n return resolveRef(config.auth.tokenRef);\n}\n\n/** 写入/轮换 gateway token(按 config.auth.tokenRef 的 scheme)。 */\nexport function writeGatewayToken(config: YoooclawConfig, value: string): ResolvedRef {\n return writeRef(config.auth.tokenRef, value);\n}\n\n/** 生成一个随机 token(hex)。 */\nexport function generateToken(bytes = 32): string {\n return randomBytes(bytes).toString(\"hex\");\n}\n",
|
|
39
39
|
"/**\n * OS keychain 适配(可选加固,默认不强制)。\n *\n * - macOS:`security`(generic password)\n * - Linux:`secret-tool`(libsecret / Secret Service)\n * - Windows:暂无可明文取回的内置 CLI → 视为不可用,调用方降级到文件\n *\n * 任何工具缺失 / 调用失败都返回 `unavailable`,绝不抛崩溃,保证 CI 无 keychain 时的确定性。\n */\nimport { spawnSync } from \"node:child_process\";\nimport { platform } from \"node:os\";\n\nexport interface KeychainResult {\n available: boolean;\n value?: string;\n}\n\nfunction hasCommand(cmd: string): boolean {\n const probe = spawnSync(process.platform === \"win32\" ? \"where\" : \"which\", [cmd], {\n encoding: \"utf-8\",\n });\n return probe.status === 0;\n}\n\n/** keychain 在当前平台是否可用(工具存在)。 */\nexport function keychainAvailable(): boolean {\n switch (platform()) {\n case \"darwin\":\n return hasCommand(\"security\");\n case \"linux\":\n return hasCommand(\"secret-tool\");\n default:\n return false;\n }\n}\n\n/** 读取 keychain 条目;不可用或未命中返回 { available, value: undefined }。 */\nexport function keychainGet(service: string, account: string): KeychainResult {\n switch (platform()) {\n case \"darwin\": {\n if (!hasCommand(\"security\")) return { available: false };\n const r = spawnSync(\n \"security\",\n [\"find-generic-password\", \"-s\", service, \"-a\", account, \"-w\"],\n { encoding: \"utf-8\" },\n );\n if (r.status !== 0) return { available: true, value: undefined };\n return { available: true, value: r.stdout.replace(/\\n$/, \"\") };\n }\n case \"linux\": {\n if (!hasCommand(\"secret-tool\")) return { available: false };\n const r = spawnSync(\n \"secret-tool\",\n [\"lookup\", \"service\", service, \"account\", account],\n { encoding: \"utf-8\" },\n );\n if (r.status !== 0) return { available: true, value: undefined };\n return { available: true, value: r.stdout.replace(/\\n$/, \"\") };\n }\n default:\n return { available: false };\n }\n}\n\n/** 写入 keychain 条目;返回是否成功。 */\nexport function keychainSet(\n service: string,\n account: string,\n value: string,\n): boolean {\n switch (platform()) {\n case \"darwin\": {\n if (!hasCommand(\"security\")) return false;\n const r = spawnSync(\n \"security\",\n [\"add-generic-password\", \"-U\", \"-s\", service, \"-a\", account, \"-w\", value],\n { encoding: \"utf-8\" },\n );\n return r.status === 0;\n }\n case \"linux\": {\n if (!hasCommand(\"secret-tool\")) return false;\n const r = spawnSync(\n \"secret-tool\",\n [\"store\", \"--label\", `${service}:${account}`, \"service\", service, \"account\", account],\n { encoding: \"utf-8\", input: value },\n );\n return r.status === 0;\n }\n default:\n return false;\n }\n}\n",
|
|
40
40
|
"/**\n * 凭据抽象引用(`*Ref`)解析与写入。\n *\n * 支持 scheme(PRD「config.json 结构」):\n * - env:<VAR> 从环境变量读(最高优先级覆盖)\n * - file:<path>#<jsonField> 从 JSON 文件某字段读/写(默认落点,0600)\n * - keychain:<service>/<acct> 从 OS keychain 读/写(可选加固)\n * - inline:<base64> 直接内嵌(既不支持 keychain 也不便用文件时)\n */\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { readJsonFile, writeJsonFile, SECRET_FILE_MODE } from \"../fs-utils.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { keychainGet, keychainSet } from \"./keychain.js\";\n\nexport type RefSource = \"env\" | \"file\" | \"keychain\" | \"inline\";\n\nexport interface ResolvedRef {\n value?: string;\n source: RefSource;\n /** file: scheme 时的具体路径,用于错误诊断。 */\n location?: string;\n}\n\nfunction expandHome(path: string): string {\n if (path === \"~\") return homedir();\n if (path.startsWith(\"~/\")) return join(homedir(), path.slice(2));\n return path;\n}\n\ninterface ParsedFileRef {\n path: string;\n field: string;\n}\ninterface ParsedKeychainRef {\n service: string;\n account: string;\n}\n\nfunction parseFileRef(rest: string): ParsedFileRef {\n const hashIdx = rest.lastIndexOf(\"#\");\n if (hashIdx < 0) {\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `file: 引用缺少 #字段:${rest}`,\n { hint: \"格式应为 file:<path>#<jsonField>\" },\n );\n }\n return {\n path: expandHome(rest.slice(0, hashIdx)),\n field: rest.slice(hashIdx + 1),\n };\n}\n\nfunction parseKeychainRef(rest: string): ParsedKeychainRef {\n const slashIdx = rest.indexOf(\"/\");\n if (slashIdx < 0) {\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `keychain: 引用缺少 /account:${rest}`,\n { hint: \"格式应为 keychain:<service>/<account>\" },\n );\n }\n return {\n service: rest.slice(0, slashIdx),\n account: rest.slice(slashIdx + 1),\n };\n}\n\n/** 解析一个 ref,返回当前值(可能 undefined)与来源。 */\nexport function resolveRef(ref: string): ResolvedRef {\n const colonIdx = ref.indexOf(\":\");\n if (colonIdx < 0) {\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `非法凭据引用:${ref}`,\n { hint: \"支持 env: / file: / keychain: / inline:\" },\n );\n }\n const scheme = ref.slice(0, colonIdx);\n const rest = ref.slice(colonIdx + 1);\n\n switch (scheme) {\n case \"env\": {\n const value = process.env[rest]?.trim();\n return { source: \"env\", value: value || undefined, location: rest };\n }\n case \"file\": {\n const { path, field } = parseFileRef(rest);\n const data = readJsonFile<Record<string, unknown>>(path);\n const value = data?.[field];\n return {\n source: \"file\",\n value: typeof value === \"string\" && value ? value : undefined,\n location: path,\n };\n }\n case \"keychain\": {\n const { service, account } = parseKeychainRef(rest);\n const r = keychainGet(service, account);\n return { source: \"keychain\", value: r.value, location: `${service}/${account}` };\n }\n case \"inline\": {\n const decoded = Buffer.from(rest, \"base64\").toString(\"utf-8\");\n return { source: \"inline\", value: decoded || undefined };\n }\n default:\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `不支持的凭据引用 scheme:${scheme}`,\n { hint: \"支持 env: / file: / keychain: / inline:\" },\n );\n }\n}\n\n/** 把值写入 ref 指向的后端。env/inline 不可持久写入(抛错)。 */\nexport function writeRef(ref: string, value: string): ResolvedRef {\n const colonIdx = ref.indexOf(\":\");\n const scheme = ref.slice(0, colonIdx);\n const rest = ref.slice(colonIdx + 1);\n\n switch (scheme) {\n case \"file\": {\n const { path, field } = parseFileRef(rest);\n const data = readJsonFile<Record<string, unknown>>(path) ?? {};\n data[field] = value;\n writeJsonFile(path, data, SECRET_FILE_MODE);\n return { source: \"file\", value, location: path };\n }\n case \"keychain\": {\n const { service, account } = parseKeychainRef(rest);\n if (!keychainSet(service, account, value)) {\n throw new YoooclawError(\n \"YOOOCLAW_KEYCHAIN_UNAVAILABLE\",\n `keychain 写入失败:${service}/${account}`,\n { hint: \"当前平台可能没有可用的 keychain 工具,请改用 file: 引用\" },\n );\n }\n return { source: \"keychain\", value, location: `${service}/${account}` };\n }\n case \"env\":\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n \"env: 引用无法持久化写入;请改用 file: 或 keychain:\",\n );\n case \"inline\":\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n \"inline: 引用需直接写进 config,不通过 writeRef\",\n );\n default:\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `不支持的凭据引用 scheme:${scheme}`,\n );\n }\n}\n",
|
|
41
|
-
"/**\n *
|
|
42
|
-
"/**\n * profile service —— list / use / create / delete。\n */\nimport { existsSync, rmSync } from \"node:fs\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { writeFileAtomic } from \"../fs-utils.js\";\nimport { confirm } from \"../prompt.js\";\nimport {\n DEFAULT_PROFILE,\n activeProfilePath,\n listProfileNames,\n profilePaths,\n readActiveProfile,\n} from \"../paths.js\";\nimport { configExists } from \"../config/store.js\";\nimport { configInit } from \"./config.js\";\n\nexport function profileList(ctx: CliContext): unknown {\n const active = readActiveProfile() ?? DEFAULT_PROFILE;\n const names = listProfileNames();\n // active / default 即便目录还没建出来也列出来,避免空列表误导\n for (const implied of [active, DEFAULT_PROFILE]) {\n if (!names.includes(implied)) names.push(implied);\n }\n return names\n .sort((a, b) => a.localeCompare(b))\n .map((name) => ({\n name,\n active: name === active,\n initialized: configExists(profilePaths(name)),\n }));\n}\n\nexport function profileUse(_ctx: CliContext, args: unknown[]): unknown {\n const [name] = args as [string];\n const paths = profilePaths(name);\n if (!existsSync(paths.dir)) {\n throw new YoooclawError(\n \"YOOOCLAW_PROFILE_NOT_FOUND\",\n `profile \\`${name}\\` 不存在`,\n { hint: \"用 yoooclaw profile create 新建\", checkedPaths: [paths.dir] },\n );\n }\n writeFileAtomic(activeProfilePath(), `${name}\\n`);\n return { ok: true, active: name };\n}\n\nexport async function profileCreate(\n ctx: CliContext,\n args: unknown[],\n opts: Record<string, unknown>,\n): Promise<unknown> {\n const [name] = args as [string];\n const paths = profilePaths(name);\n if (configExists(paths)) {\n throw new YoooclawError(\n \"YOOOCLAW_ALREADY_EXISTS\",\n `profile \\`${name}\\` 已存在`,\n );\n }\n // 在目标 profile 的上下文里跑 init 向导\n const subCtx: CliContext = { ...ctx, profile: name, paths };\n return configInit(subCtx, [], opts as never);\n}\n\nexport async function profileDelete(\n ctx: CliContext,\n args: unknown[],\n opts: { yes?: boolean },\n): Promise<unknown> {\n const [name] = args as [string];\n const active = readActiveProfile() ?? DEFAULT_PROFILE;\n if (name === active) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n `不能删除当前 active profile \\`${name}\\``,\n { hint: \"先 yoooclaw profile use <其他 profile> 再删除\" },\n );\n }\n const paths = profilePaths(name);\n if (!existsSync(paths.dir)) {\n throw new YoooclawError(\"YOOOCLAW_PROFILE_NOT_FOUND\", `profile \\`${name}\\` 不存在`);\n }\n if (!opts.yes && !(await confirm(`确认删除 profile \\`${name}\\` 及其全部数据?`, false))) {\n throw new YoooclawError(\"YOOOCLAW_CONFIRMATION_REQUIRED\", \"已取消\");\n }\n rmSync(paths.dir, { recursive: true, force: true });\n return { ok: true, deleted: name };\n}\n",
|
|
41
|
+
"/**\n * daemon service —— start / stop / restart / status / logs / run-foreground(🔵)。\n */\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync, statSync, watchFile } from \"node:fs\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { requireConfig } from \"../config/store.js\";\nimport { daemonState, isProcessAlive, readLock, removeLock } from \"../daemon/lock.js\";\nimport { DaemonClient } from \"../daemon/client.js\";\nimport { runDaemonForeground, type DaemonStartOpts } from \"../daemon/main.js\";\n\ninterface StartOpts {\n bind?: string;\n port?: string;\n detach?: boolean; // commander:--no-detach → false\n logLevel?: string;\n}\n\nfunction startOpts(opts: StartOpts): DaemonStartOpts {\n return {\n bind: opts.bind,\n port: opts.port ? Number(opts.port) : undefined,\n logLevel: opts.logLevel,\n };\n}\n\n/** 内部命令:前台运行 daemon 主循环(detach 子进程入口)。 */\nexport async function daemonRunForeground(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true }; // 实际不会到这(runDaemonForeground 不 resolve)\n}\n\nexport async function daemonStart(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n requireConfig(ctx.paths);\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n { pid: state.lock?.pid },\n );\n }\n if (state.stale) removeLock(ctx.paths);\n\n // --no-detach:前台运行(systemd/launchd 包装)\n if (opts.detach === false) {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true };\n }\n\n // 默认:fork 子进程跑 run-foreground 并 detach\n const binEntry = process.argv[1];\n const args = [binEntry, \"daemon\", \"run-foreground\", \"--profile\", ctx.profile];\n if (opts.bind) args.push(\"--bind\", opts.bind);\n if (opts.port) args.push(\"--port\", opts.port);\n if (opts.logLevel) args.push(\"--log-level\", opts.logLevel);\n\n const child = spawn(process.execPath, args, {\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n env: process.env,\n });\n child.unref();\n\n // 轮询 lock 确认起来(最多 ~3s)\n for (let i = 0; i < 30; i += 1) {\n await sleep(100);\n const s = daemonState(ctx.paths);\n if (s.running) {\n return { ok: true, pid: s.lock?.pid, bind: s.lock?.bind, port: s.lock?.port, detached: true };\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_UNKNOWN\",\n \"daemon 启动超时(3s 内未写出 lock)\",\n { hint: \"查看 yoooclaw daemon logs 排查\" },\n );\n}\n\nexport async function daemonStop(ctx: CliContext): Promise<unknown> {\n const lock = readLock(ctx.paths);\n if (!lock || !isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n throw new YoooclawError(\"YOOOCLAW_DAEMON_NOT_RUNNING\", \"daemon 未运行\");\n }\n\n // Windows 上 Node 没有真正的 POSIX 信号:process.kill(pid, \"SIGTERM\") 等价于\n // TerminateProcess,daemon 的 shutdown() 优雅退出钩子(隧道断开、移除 lock)不会跑。\n // 因此 Windows 优先打 HTTP /daemon/stop 让 daemon 自己走优雅退出,失败再回退到硬杀。\n const graceful = process.platform === \"win32\"\n ? \"stop-endpoint\"\n : \"SIGTERM\";\n if (graceful === \"stop-endpoint\") {\n try {\n await new DaemonClient(ctx.paths).post(\"/daemon/stop\");\n } catch {\n /* daemon 可能拒绝鉴权或刚退出;继续轮询 + 回退硬杀 */\n }\n } else {\n try {\n process.kill(lock.pid, \"SIGTERM\");\n } catch {\n /* 进程可能刚退出 */\n }\n }\n\n // 等待优雅退出,最多 10s\n for (let i = 0; i < 100; i += 1) {\n await sleep(100);\n if (!isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: graceful };\n }\n }\n try {\n process.kill(lock.pid, \"SIGKILL\");\n } catch {\n /* ignore */\n }\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: \"SIGKILL\" };\n}\n\nexport async function daemonRestart(\n ctx: CliContext,\n args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n const lock = readLock(ctx.paths);\n const inheritedOpts: StartOpts = {\n ...opts,\n bind: opts.bind ?? lock?.bind,\n port: opts.port ?? (lock?.port ? String(lock.port) : undefined),\n logLevel: opts.logLevel ?? lock?.logLevel,\n };\n if (lock && isProcessAlive(lock.pid)) {\n await daemonStop(ctx);\n }\n return daemonStart(ctx, args, inheritedOpts);\n}\n\nexport async function daemonReload(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n return { ok: true, running: false, reloaded: false };\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.post(\"/daemon/reload\");\n return res.body;\n}\n\nexport async function daemonStatus(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n \"daemon 未运行\",\n { stale: state.stale, hint: \"yoooclaw daemon start\" },\n );\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.get(\"/daemon/status\");\n return res.body;\n}\n\ninterface LogsOpts {\n follow?: boolean;\n lines?: string;\n level?: string;\n}\n\nfunction tailLines(file: string, n: number): string[] {\n if (!existsSync(file)) return [];\n const content = readFileSync(file, \"utf-8\").split(\"\\n\").filter(Boolean);\n return content.slice(-n);\n}\n\nexport async function daemonLogs(\n ctx: CliContext,\n _args: unknown[],\n opts: LogsOpts,\n): Promise<unknown> {\n const n = opts.lines ? Number(opts.lines) : 100;\n const file = ctx.paths.daemonLog;\n let lines = tailLines(file, n);\n if (opts.level) {\n const want = `[${opts.level.toUpperCase()}]`;\n lines = lines.filter((l) => l.includes(want));\n }\n\n if (!opts.follow) {\n return { ok: true, file, total: lines.length, lines };\n }\n\n // --follow:先打印 tail,再持续输出新增行(raw 到 stdout,不经 --format)\n for (const l of lines) process.stdout.write(l + \"\\n\");\n let size = existsSync(file) ? statSync(file).size : 0;\n await new Promise<void>(() => {\n watchFile(file, { interval: 500 }, () => {\n if (!existsSync(file)) return;\n const cur = statSync(file).size;\n if (cur > size) {\n const chunk = readFileSync(file, \"utf-8\").slice(-(cur - size));\n size = cur;\n process.stdout.write(chunk);\n } else if (cur < size) {\n size = cur; // 轮转\n }\n });\n });\n return { ok: true };\n}\n",
|
|
43
42
|
"/**\n * daemon 进程锁(单实例保护)。\n *\n * daemon.lock 内容:{ pid, startedAt, bind, port, logLevel }。\n * 通过 `process.kill(pid, 0)` 探活;陈旧锁(进程已死)会被视为未运行。\n */\nimport { existsSync, rmSync } from \"node:fs\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { readJsonFile, writeJsonFile } from \"../fs-utils.js\";\n\nexport interface DaemonLock {\n pid: number;\n startedAt: string;\n bind: string;\n port: number;\n logLevel?: string;\n}\n\n/** 进程是否存活(signal 0 探测)。 */\nexport function isProcessAlive(pid: number): boolean {\n if (!Number.isInteger(pid) || pid <= 0) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (err) {\n // EPERM = 存在但无权限(仍算存活);ESRCH = 不存在\n return (err as NodeJS.ErrnoException).code === \"EPERM\";\n }\n}\n\nexport function readLock(paths: ProfilePaths): DaemonLock | undefined {\n if (!existsSync(paths.daemonLock)) return undefined;\n return readJsonFile<DaemonLock>(paths.daemonLock);\n}\n\nexport interface DaemonRunningState {\n running: boolean;\n lock?: DaemonLock;\n /** 锁存在但进程已死。 */\n stale: boolean;\n}\n\nexport function daemonState(paths: ProfilePaths): DaemonRunningState {\n const lock = readLock(paths);\n if (!lock) return { running: false, stale: false };\n const alive = isProcessAlive(lock.pid);\n return { running: alive, lock, stale: !alive };\n}\n\nexport function writeLock(paths: ProfilePaths, lock: DaemonLock): void {\n writeJsonFile(paths.daemonLock, lock);\n}\n\nexport function removeLock(paths: ProfilePaths): void {\n rmSync(paths.daemonLock, { force: true });\n}\n",
|
|
44
43
|
"/**\n * daemon ↔ CLI 客户端的内部 RPC(localhost HTTP)。\n *\n * 鉴权:从 config.auth.tokenRef 解析 gateway token,加 `Authorization: Bearer`。\n * daemon 未运行(连接被拒)时统一抛 YOOOCLAW_DAEMON_NOT_RUNNING。\n */\nimport type { ProfilePaths } from \"../paths.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { loadConfig } from \"../config/store.js\";\nimport { resolveGatewayToken } from \"../credentials/store.js\";\nimport { daemonState } from \"./lock.js\";\n\nexport interface DaemonClientOptions {\n /** 覆盖 base URL(默认按 lock / config 推导)。 */\n baseUrl?: string;\n timeoutMs?: number;\n}\n\nexport class DaemonClient {\n readonly baseUrl: string;\n private readonly token?: string;\n private readonly timeoutMs: number;\n\n constructor(\n private readonly paths: ProfilePaths,\n opts: DaemonClientOptions = {},\n ) {\n const config = loadConfig(paths);\n const state = daemonState(paths);\n const bind = state.lock?.bind ?? config.daemon.bind;\n // 0.0.0.0 监听时,本机用 127.0.0.1 连接\n const host = bind === \"0.0.0.0\" ? \"127.0.0.1\" : bind;\n const port = state.lock?.port ?? config.daemon.port;\n this.baseUrl = opts.baseUrl ?? `http://${host}:${port}`;\n this.token = resolveGatewayToken(config).value;\n this.timeoutMs = opts.timeoutMs ?? 10_000;\n }\n\n async request<T = unknown>(\n method: string,\n path: string,\n body?: unknown,\n extraHeaders?: Record<string, string>,\n ): Promise<{ status: number; body: T }> {\n const headers: Record<string, string> = { ...extraHeaders };\n if (this.token) headers[\"Authorization\"] = `Bearer ${this.token}`;\n let payload: string | undefined;\n if (body !== undefined) {\n headers[\"Content-Type\"] ??= \"application/json\";\n payload = typeof body === \"string\" ? body : JSON.stringify(body);\n }\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeoutMs);\n let res: Response;\n try {\n res = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: payload,\n signal: controller.signal,\n });\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code === \"ECONNREFUSED\" || (err as Error).name === \"AbortError\") {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n \"daemon 未启动或无响应\",\n { hint: \"先执行 yoooclaw daemon start\", baseUrl: this.baseUrl },\n );\n }\n throw new YoooclawError(\"YOOOCLAW_NETWORK_ERROR\", `调用 daemon 失败:${(err as Error).message}`);\n } finally {\n clearTimeout(timer);\n }\n\n const text = await res.text();\n let parsed: unknown = text;\n if (text) {\n try {\n parsed = JSON.parse(text);\n } catch {\n /* 非 JSON 响应原样返回 */\n }\n }\n if (res.status === 401 || res.status === 403) {\n throw new YoooclawError(\"YOOOCLAW_UNAUTHORIZED\", \"daemon 拒绝鉴权(token 不一致)\", {\n status: res.status,\n });\n }\n return { status: res.status, body: parsed as T };\n }\n\n get<T = unknown>(path: string): Promise<{ status: number; body: T }> {\n return this.request<T>(\"GET\", path);\n }\n\n post<T = unknown>(path: string, body?: unknown): Promise<{ status: number; body: T }> {\n return this.request<T>(\"POST\", path, body);\n }\n}\n\n/** 确保 daemon 在运行,否则抛 DAEMON_NOT_RUNNING(用于 🟡 命令前置检查)。 */\nexport function assertDaemonRunning(paths: ProfilePaths): void {\n const state = daemonState(paths);\n if (!state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n \"daemon 未运行\",\n { hint: \"先执行 yoooclaw daemon start\", stale: state.stale },\n );\n }\n}\n",
|
|
45
|
-
"/**\n * auth service —— set-api-key / status / token-rotate / check。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { readStdin } from \"../prompt.js\";\nimport { loadConfig, configExists } from \"../config/store.js\";\nimport {\n addApiKey,\n maskSecret,\n removeApiKey,\n resolveApiKey,\n resolveApiKeyEntries,\n setDefaultApiKey,\n setApiKey,\n resolveGatewayToken,\n writeGatewayToken,\n generateToken,\n} from \"../credentials/store.js\";\nimport { daemonState } from \"../daemon/lock.js\";\nimport { DaemonClient, assertDaemonRunning } from \"../daemon/client.js\";\n\nexport async function authSetApiKey(\n ctx: CliContext,\n args: unknown[],\n opts: { keychain?: boolean },\n): Promise<unknown> {\n let [key] = args as [string];\n if (key === \"-\") {\n key = (await readStdin()).trim();\n }\n if (!key) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"api-key 不能为空\");\n }\n const result = setApiKey(key, Boolean(opts.keychain));\n return {\n ok: true,\n source: result.source,\n location: result.location,\n label: result.label,\n masked: maskSecret(result.value),\n hint: \"插件 / CLI / daemon 共用同一份;daemon 在跑时会经文件 watch 热生效\",\n };\n}\n\ninterface ApiKeyCommandOpts {\n label?: string;\n default?: boolean;\n force?: boolean;\n}\n\nexport async function authAddApiKey(\n _ctx: CliContext,\n args: unknown[],\n opts: ApiKeyCommandOpts,\n): Promise<unknown> {\n let [key] = args as [string];\n if (key === \"-\") {\n key = (await readStdin()).trim();\n }\n if (!key) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"api-key 不能为空\");\n }\n if (!opts.label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--label 必填\");\n }\n const before = resolveApiKeyEntries();\n const result = addApiKey(key, opts.label, {\n makeDefault: Boolean(opts.default),\n force: Boolean(opts.force),\n });\n const after = resolveApiKeyEntries();\n return {\n ok: true,\n mode: after.mode,\n label: opts.label,\n default: after.defaultEntry?.label === opts.label,\n source: result.source,\n location: result.location,\n masked: maskSecret(key),\n shadowedKeychainPresent: after.shadowedKeychainPresent,\n migratedLegacyApiKey: before.mode === \"legacy-file-single\",\n hint: \"daemon 在跑时会经文件 watch 热生效;watch 不可靠时执行 yc daemon reload\",\n };\n}\n\nfunction entryToItem(entry: ReturnType<typeof resolveApiKeyEntries>[\"entries\"][number]) {\n return {\n label: entry.label,\n default: entry.default,\n source: entry.source,\n masked: maskSecret(entry.key),\n };\n}\n\nexport function authListApiKeys(): unknown {\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n location: set.location,\n legacyApiKeyPresent: set.legacyApiKeyPresent,\n shadowedKeychainPresent: set.shadowedKeychainPresent,\n warnings: set.warnings,\n items: set.entries.map(entryToItem),\n };\n}\n\nexport function authRemoveApiKey(\n _ctx: CliContext,\n args: unknown[],\n): unknown {\n const [label] = args as [string];\n if (!label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"label 不能为空\");\n }\n const outcome = removeApiKey(label);\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n removed: outcome.removed,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n newDefault: outcome.newDefault ?? null,\n remaining: set.entries.length,\n };\n}\n\nexport function authSetDefaultApiKey(\n _ctx: CliContext,\n args: unknown[],\n): unknown {\n const [label] = args as [string];\n if (!label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"label 不能为空\");\n }\n const result = setDefaultApiKey(label);\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n source: result.source,\n location: result.location,\n };\n}\n\nexport function authStatus(ctx: CliContext): unknown {\n const apiKey = resolveApiKey();\n const apiKeys = resolveApiKeyEntries();\n const config = configExists(ctx.paths) ? loadConfig(ctx.paths) : undefined;\n const token = config ? resolveGatewayToken(config) : undefined;\n const state = daemonState(ctx.paths);\n return {\n ok: true,\n profile: ctx.profile,\n mode: apiKeys.mode,\n defaultLabel: apiKeys.defaultEntry?.label ?? null,\n apiKeys: apiKeys.entries.map(entryToItem),\n legacyApiKeyPresent: apiKeys.legacyApiKeyPresent,\n shadowedKeychainPresent: apiKeys.shadowedKeychainPresent,\n warnings: apiKeys.warnings,\n apiKey: {\n present: Boolean(apiKey.value),\n source: apiKey.source,\n location: apiKey.location,\n label: apiKey.label,\n masked: maskSecret(apiKey.value),\n },\n gatewayToken: {\n present: Boolean(token?.value),\n source: token?.source,\n location: token?.location,\n masked: maskSecret(token?.value),\n },\n daemon: {\n running: state.running,\n pid: state.lock?.pid,\n stale: state.stale,\n },\n };\n}\n\nexport function authTokenRotate(\n ctx: CliContext,\n _args: unknown[],\n opts: { length?: string },\n): unknown {\n if (!configExists(ctx.paths)) {\n throw new YoooclawError(\"YOOOCLAW_CONFIG_INVALID\", `profile \\`${ctx.profile}\\` 尚未初始化`, {\n hint: \"先运行 yoooclaw config init\",\n });\n }\n const config = loadConfig(ctx.paths);\n const bytes = opts.length ? Number(opts.length) : 32;\n if (!Number.isInteger(bytes) || bytes < 16) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--length 至少 16 字节\");\n }\n const token = generateToken(bytes);\n const written = writeGatewayToken(config, token);\n const state = daemonState(ctx.paths);\n // daemon 在跑时尝试热重载(best-effort,失败不影响 token 已写入)\n let hotReload: string;\n if (state.running) {\n hotReload = \"daemon 在运行:请执行 yoooclaw daemon restart 使新 token 生效\";\n } else {\n hotReload = \"daemon 未运行:下次启动即用新 token\";\n }\n return {\n ok: true,\n token,\n source: written.source,\n location: written.location,\n hint: hotReload,\n };\n}\n\nexport async function authCheck(ctx: CliContext): Promise<unknown> {\n assertDaemonRunning(ctx.paths);\n const client = new DaemonClient(ctx.paths);\n const res = await client.get(\"/daemon/status\");\n return {\n ok: res.status >= 200 && res.status < 300,\n profile: ctx.profile,\n daemonReachable: true,\n status: res.status,\n daemon: res.body,\n };\n}\n",
|
|
46
|
-
"/**\n *
|
|
44
|
+
"/**\n * daemon 主循环(前台运行体)。`daemon start` 默认 fork 一个子进程跑 `daemon run-foreground`,\n * 该命令最终调用这里的 runDaemonForeground。\n *\n * 职责:单实例锁 → 装配 StandaloneRuntime + 存储 + 通知/图片/灯效规则注册 → 起 HTTP server →\n * 起 Relay 隧道 → 写 lock → 捕获信号优雅退出。\n *\n * 关于 Relay:复用 phone-notifications 插件那套托管 Relay 服务(RelayClient + TunnelProxy,见\n * daemon/relay.ts)。daemon 用 account 级 api-key 连上 Relay,手机端经 Relay 转发进来的请求被反代到\n * 本 daemon 的 HTTP server。未设 api-key 时跳过隧道,仍可走直连 HTTP(cloudflared / tailscale serve)。\n */\nimport { watchFile, unwatchFile } from \"node:fs\";\nimport { createServer, type IncomingMessage, type ServerResponse, type Server } from \"node:http\";\nimport type { CliContext } from \"../context.js\";\nimport { loadConfig } from \"../config/store.js\";\nimport { sharedCredentialsPath } from \"../paths.js\";\nimport { resolveGatewayToken } from \"../credentials/store.js\";\nimport { resolveApiKeyEntries, type CredentialSet } from \"../credentials/store.js\";\nimport { daemonState, writeLock, removeLock } from \"./lock.js\";\nimport { DaemonLogger } from \"./logger.js\";\nimport { StandaloneRuntime } from \"./runtime.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport { ingestImage, type ImageSyncPayload } from \"../image/channel.js\";\nimport { listMonitors, createMonitor, deleteMonitor, setMonitorEnabled } from \"../monitor/store.js\";\nimport { CLI_VERSION } from \"../version.js\";\nimport {\n NotificationStorage,\n registerNotificationInterfaces,\n RecordingStorage,\n registerRecordingInterfaces,\n LightRuleRegistry,\n registerLightRulesGateway,\n RELAY_INTERNAL_HTTP_HEADER,\n runWithIngestContext,\n type IngestContext,\n type PluginConfig,\n} from \"../shared.js\";\nimport { performLightSend } from \"./light-send.js\";\nimport { RecordingEventLog } from \"./recording-events.js\";\nimport { overrideRecordingSync } from \"./recording-bridge.js\";\nimport { registerDaemonGatewayCompatMethods } from \"./gateway-compat.js\";\nimport { RELAY_INTERNAL_CLIENT_LABEL_HEADER } from \"./relay-dispatcher.js\";\nimport { TunnelSupervisor } from \"./tunnel-supervisor.js\";\n\nexport const PROTOCOL_VERSION = 1;\nexport const CAPABILITIES = [\"notifications\", \"recordings\", \"images\", \"lightrules\", \"multi-apikey\"];\n\nexport interface DaemonStartOpts {\n bind?: string;\n port?: number;\n logLevel?: string;\n}\n\ninterface DaemonState {\n startedAt: string;\n lastIngestAt: string | null;\n ingestCount: number;\n}\n\nasync function readBody(req: IncomingMessage): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(chunk as Buffer);\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nfunction sendJson(res: ServerResponse, status: number, body: unknown): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n}\n\nexport async function runDaemonForeground(\n ctx: CliContext,\n opts: DaemonStartOpts,\n): Promise<void> {\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n );\n }\n\n const config = loadConfig(ctx.paths);\n const bind = opts.bind ?? config.daemon.bind;\n // 起始端口;listen 时若被占用会自动 +1(见下方 listen 循环),port 最终为实际绑定端口。\n let port = opts.port ?? config.daemon.port;\n const logLevel = (opts.logLevel ?? config.daemon.logLevel) as never;\n const token = resolveGatewayToken(config).value;\n let credentialSet: CredentialSet = resolveApiKeyEntries();\n\n // 安全:绑公网必须有 token\n const loopback = bind === \"127.0.0.1\" || bind === \"::1\" || bind === \"localhost\";\n if (!loopback && !token) {\n throw new YoooclawError(\n \"YOOOCLAW_UNAUTHORIZED\",\n `绑定 ${bind} 需要先设置 gateway token`,\n { hint: \"运行 yoooclaw auth token-rotate 或改回 127.0.0.1\" },\n );\n }\n\n ensureDir(ctx.paths.dir);\n const logger = new DaemonLogger(ctx.paths.daemonLog, logLevel, false);\n const runtimeState: DaemonState = {\n startedAt: new Date().toISOString(),\n lastIngestAt: null,\n ingestCount: 0,\n };\n\n const pluginConfig: PluginConfig = {\n retentionDays: config.notification.retentionDays ?? undefined,\n ignoredApps: config.notification.ignoredApps,\n };\n\n const runtime = new StandaloneRuntime(logger, pluginConfig as Record<string, unknown>, ctx.paths.dir);\n\n // 通知存储\n const storage = new NotificationStorage(ctx.paths.notifications, pluginConfig, logger);\n await storage.init();\n\n // 录音存储(接收手机端 recordings.sync / POST /recordings)\n const recordingStorage = new RecordingStorage(ctx.paths.recordings, logger);\n await recordingStorage.init();\n\n // 录音状态事件流:日志 + JSONL(CLI / Agent 通过 `yc recording events` 消费)+ 反向推手机\n const recordingEventLog = new RecordingEventLog(ctx.paths.recordings);\n // pushRecordingStatus 在 relayHandle 启动后才有值;用 mutable 闭包变量延后绑定\n let pushRecordingStatus: ((event: import(\"../shared.js\").RecordingStatusEvent) => void) | undefined;\n const notifyRecordingStatus = (event: import(\"../shared.js\").RecordingStatusEvent) => {\n logger.info(\n `[recording-status] ${event.recordingId} → ${event.transfer_status}${\n event.error ? ` err=${event.error}` : \"\"\n }`,\n );\n try {\n recordingEventLog.append(event);\n } catch (err) {\n logger.warn(`[recording-status] 事件落盘失败: ${(err as Error).message}`);\n }\n // 反向推送到手机端(客户端合同:recording.status event;recordings.status RPC 是兜底)\n try {\n pushRecordingStatus?.(event);\n } catch (err) {\n logger.warn(`[recording-status] event push 失败: ${(err as Error).message}`);\n }\n };\n\n // 灯效规则注册(rules 落 <profile>/tasks/)\n const lightRuleRegistry = new LightRuleRegistry({ workspaceDir: ctx.paths.dir });\n\n const ignored = new Set(config.notification.ignoredApps ?? []);\n registerNotificationInterfaces({\n // 结构兼容 OpenClawPluginApi 的子集\n api: runtime as never,\n logger,\n getStorage: () => storage,\n filterNotifications: (items) => items.filter((n) => !ignored.has(n.app)),\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n onAfterIngest: (inserted) => {\n runtimeState.lastIngestAt = new Date().toISOString();\n runtimeState.ingestCount += inserted.length;\n },\n });\n registerRecordingInterfaces({\n api: runtime as never,\n logger,\n asrDataDir: ctx.paths.recordings,\n getRecordingStorage: () => recordingStorage,\n notifyRecordingStatus,\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n shouldBroadcastStatusOnHttp: () => true,\n tunnelService: null,\n });\n // 覆盖 sync:注入本地 asr-config.json + account 级 ock- key fallback\n overrideRecordingSync({\n runtime,\n storage: recordingStorage,\n logger,\n fallbackApiKey: () => credentialSet.defaultEntry?.key,\n asrConfigDir: ctx.paths.recordings,\n notifyStatus: notifyRecordingStatus,\n });\n registerLightRulesGateway(runtime as never, lightRuleRegistry, logger);\n\n const server = createServer((req, res) => {\n void handleRequest(req, res).catch((err) => {\n logger.error(`请求处理异常:${(err as Error).message}`);\n if (!res.headersSent) sendJson(res, 500, { ok: false, error: { code: \"INTERNAL_ERROR\", message: (err as Error).message } });\n });\n });\n\n function headerValue(req: IncomingMessage, name: string): string | undefined {\n const value = req.headers[name.toLowerCase()];\n return Array.isArray(value) ? value[0] : value;\n }\n\n function bearerValue(req: IncomingMessage): string | undefined {\n const header = headerValue(req, \"authorization\")?.trim();\n if (!header?.toLowerCase().startsWith(\"bearer \")) return undefined;\n return header.slice(\"Bearer \".length).trim();\n }\n\n function stripBearer(value: string): string {\n return value.startsWith(\"Bearer \") ? value.slice(\"Bearer \".length) : value;\n }\n\n function labelForApiKey(apiKey: string | undefined): string | undefined {\n if (!apiKey) return undefined;\n const raw = stripBearer(apiKey);\n return credentialSet.entries.find((entry) => stripBearer(entry.key) === raw)?.label;\n }\n\n function isIngestPath(path: string): boolean {\n return path === \"/notifications\"\n || path === \"/recordings\"\n || path === \"/images\"\n || path === \"/gateway/notifications.push\"\n || path === \"/gateway/recordings.sync\"\n || path === \"/gateway/images.sync\";\n }\n\n function authContextForRequest(req: IncomingMessage, path: string): { ok: true; context: IngestContext } | { ok: false } {\n const internalRelay = headerValue(req, RELAY_INTERNAL_HTTP_HEADER) === \"1\";\n const internalLabel = headerValue(req, RELAY_INTERNAL_CLIENT_LABEL_HEADER)?.trim();\n const bearer = bearerValue(req);\n const gatewayTokenOk = token ? bearer === token : true;\n\n if (internalRelay && internalLabel && gatewayTokenOk) {\n return { ok: true, context: { clientLabel: internalLabel, authKind: \"relay-api-key\" } };\n }\n\n if (token && bearer === token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"gateway-token\" } };\n }\n\n if (isIngestPath(path)) {\n const label = labelForApiKey(bearer);\n if (label) {\n return { ok: true, context: { clientLabel: label, authKind: \"http-api-key\" } };\n }\n }\n\n if (!token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"local\" } };\n }\n\n return { ok: false };\n }\n\n /** 汇总当前 Relay 状态(隧道未启用/未连时给出可执行提示)。 */\n function relayStatus(): {\n mode: \"relay\" | \"standalone-http\";\n connected: boolean;\n url: string;\n enabled: boolean;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n note?: string;\n } {\n if (tunnelSupervisor) {\n const s = tunnelSupervisor.defaultStatus();\n if (s) {\n return {\n mode: \"relay\",\n connected: s.connected,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.connected ? undefined : \"Relay 重连中\",\n };\n }\n return {\n mode: \"relay\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: \"Relay 已启用但当前 CredentialSet 没有可用 api-key\",\n };\n }\n return {\n mode: \"standalone-http\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: config.relay.enabled\n ? \"Relay 已启用但未设置 api-key:运行 yc auth set-api-key <ock_…> 后重启 daemon;当前可走直连 HTTP(cloudflared / tailscale serve)\"\n : \"Relay 未启用,走直连 HTTP\",\n };\n }\n\n registerDaemonGatewayCompatMethods(runtime, {\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n profile: ctx.profile,\n bind,\n getPort: () => port,\n startedAt: runtimeState.startedAt,\n getLastIngestAt: () => runtimeState.lastIngestAt,\n getIngestCount: () => runtimeState.ingestCount,\n getLightRuleCount: () => lightRuleRegistry.list().length,\n getRelayStatus: relayStatus,\n });\n\n async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const url = new URL(req.url ?? \"/\", \"http://localhost\");\n const path = url.pathname;\n const method = req.method ?? \"GET\";\n\n // /health 公开(手机端协议协商)\n if (path === \"/health\" && method === \"GET\") {\n sendJson(res, 200, {\n server: \"yoooclaw\",\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n });\n return;\n }\n\n const auth = authContextForRequest(req, path);\n if (!auth.ok) {\n sendJson(res, 401, { ok: false, error: { code: \"YOOOCLAW_UNAUTHORIZED\", message: \"token 不一致或缺失\" } });\n return;\n }\n const ingestContext = auth.context;\n\n // ── 控制面 ──\n if (path === \"/daemon/status\" && method === \"GET\") {\n const supervisorStatus = tunnelSupervisor?.status();\n sendJson(res, 200, {\n ok: true,\n server: \"yoooclaw\",\n version: CLI_VERSION,\n pid: process.pid,\n profile: ctx.profile,\n bind,\n port,\n startedAt: runtimeState.startedAt,\n lastIngestAt: runtimeState.lastIngestAt,\n ingestCount: runtimeState.ingestCount,\n lightRules: lightRuleRegistry.list().length,\n relay: relayStatus(),\n tunnels: supervisorStatus?.tunnels ?? [],\n credentialMode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n credentialWarnings: credentialSet.warnings,\n memoryRssBytes: process.memoryUsage().rss,\n });\n return;\n }\n if (path === \"/daemon/reload\" && method === \"POST\") {\n const result = await reloadCredentialsAndTunnels(\"manual\");\n sendJson(res, 200, { ok: true, running: true, reloaded: true, ...result });\n return;\n }\n if (path === \"/daemon/stop\" && method === \"POST\") {\n sendJson(res, 200, { ok: true, stopping: true });\n logger.info(\"收到 /daemon/stop,准备优雅退出\");\n setTimeout(() => void shutdown(\"stop-endpoint\"), 50);\n return;\n }\n if (path === \"/tunnel/status\" && method === \"GET\") {\n const s = relayStatus();\n const supervisorStatus = tunnelSupervisor?.status();\n const clientLabel = url.searchParams.get(\"client\")?.trim();\n const tunnels = clientLabel && clientLabel !== \"all\"\n ? (supervisorStatus?.tunnels ?? []).filter((tunnel) => tunnel.label === clientLabel)\n : supervisorStatus?.tunnels ?? [];\n sendJson(res, 200, {\n ok: true,\n mode: s.mode,\n credentialMode: credentialSet.mode,\n defaultLabel: supervisorStatus?.defaultLabel ?? credentialSet.defaultEntry?.label ?? null,\n connected: s.connected,\n relayUrl: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.note,\n tunnels,\n });\n return;\n }\n if (path === \"/tunnel/reconnect\" && method === \"POST\") {\n if (!tunnelSupervisor) {\n sendJson(res, 200, { ok: true, mode: relayStatus().mode, reconnected: false, note: relayStatus().note });\n return;\n }\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client\n : undefined;\n const result = await tunnelSupervisor.reconnect(clientLabel);\n if (result.missing) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${result.missing}` } });\n return;\n }\n sendJson(res, 200, { ok: true, mode: \"relay\", reconnected: true, labels: result.reconnected });\n return;\n }\n if (path === \"/tunnel/test\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client.trim()\n : undefined;\n const entry = clientLabel && clientLabel !== \"all\"\n ? credentialSet.entries.find((candidate) => candidate.label === clientLabel)\n : undefined;\n if (clientLabel && clientLabel !== \"all\" && !entry) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${clientLabel}` } });\n return;\n }\n // 回环自检:daemon 自己 POST 一条 echo 通知到本地 /notifications\n const echo = await selfEchoCheck(`http://127.0.0.1:${port}`, {\n token: entry ? undefined : token,\n apiKey: entry?.key,\n clientLabel: entry?.label ?? \"local\",\n });\n sendJson(res, 200, { ok: echo.ok, mode: relayStatus().mode, clientLabel: entry?.label ?? \"local\", loopback: echo });\n return;\n }\n if (path === \"/light/send\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const outcome = await performLightSend(body as Parameters<typeof performLightSend>[0], {\n logger,\n registry: lightRuleRegistry,\n });\n sendJson(res, outcome.status, outcome.body);\n return;\n }\n if (path === \"/images\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n const result = runWithIngestContext(ingestContext, () =>\n ingestImage(ctx.paths, body as ImageSyncPayload, {\n maxBytes: config.image.maxBytes,\n logger,\n }));\n sendJson(res, 200, result);\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n // monitors CRUD(定义存储;本 build 不做 live cron 触发)\n if (path === \"/monitors\" && method === \"GET\") {\n sendJson(res, 200, { ok: true, monitors: listMonitors(ctx.paths) });\n return;\n }\n if (path === \"/monitors\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n sendJson(res, 200, { ok: true, monitor: createMonitor(ctx.paths, body as never) });\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"DELETE\") {\n const name = decodeURIComponent(path.slice(\"/monitors/\".length));\n sendJson(res, 200, { ok: true, deleted: deleteMonitor(ctx.paths, name) });\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"POST\") {\n const [, , name, action] = path.split(\"/\");\n const enabled = action === \"enable\";\n sendJson(res, 200, { ok: setMonitorEnabled(ctx.paths, decodeURIComponent(name), enabled), name, enabled });\n return;\n }\n\n // gateway 桥:POST /gateway/<method>\n if (path.startsWith(\"/gateway/\") && method === \"POST\") {\n const gwMethod = path.slice(\"/gateway/\".length);\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const result = await runtime.callGateway(gwMethod, body, ingestContext);\n sendJson(res, result.ok ? 200 : 400, result);\n return;\n }\n\n // 注册的 HTTP 路由(如 POST /notifications)\n const route = runtime.httpRoutes.get(path);\n if (route) {\n await runWithIngestContext(ingestContext, () => route.handler(req, res));\n return;\n }\n\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_NOT_FOUND\", message: `未知路径:${path}` } });\n }\n\n async function parseJson(req: IncomingMessage, res: ServerResponse): Promise<unknown | undefined> {\n try {\n const raw = await readBody(req);\n return raw ? JSON.parse(raw) : {};\n } catch {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: \"请求体不是合法 JSON\" } });\n return undefined;\n }\n }\n\n let serverRef: Server | null = null;\n let tunnelSupervisor: TunnelSupervisor | null = null;\n let credentialWatchTimer: NodeJS.Timeout | null = null;\n let shuttingDown = false;\n\n async function reloadCredentialsAndTunnels(reason: string): Promise<{\n mode: CredentialSet[\"mode\"];\n defaultLabel: string | null;\n started: string[];\n stopped: string[];\n restarted: string[];\n unchanged: string[];\n warnings: string[];\n }> {\n credentialSet = resolveApiKeyEntries();\n const result = tunnelSupervisor\n ? await tunnelSupervisor.apply(credentialSet)\n : { started: [], stopped: [], restarted: [], unchanged: [] };\n logger.info(\n `CredentialSet reload(${reason}): mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"}, ` +\n `started=${result.started.join(\",\") || \"-\"} stopped=${result.stopped.join(\",\") || \"-\"} restarted=${result.restarted.join(\",\") || \"-\"}`,\n );\n return {\n mode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n warnings: credentialSet.warnings,\n ...result,\n };\n }\n\n function startCredentialWatcher(): void {\n const file = sharedCredentialsPath();\n watchFile(file, { interval: 500 }, () => {\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n credentialWatchTimer = setTimeout(() => {\n void reloadCredentialsAndTunnels(\"watch\").catch((err) => {\n logger.warn(`CredentialSet watch reload failed: ${(err as Error).message}`);\n });\n }, 200);\n });\n }\n\n async function shutdown(reason: string): Promise<void> {\n if (shuttingDown) return;\n shuttingDown = true;\n logger.info(`daemon 退出(${reason})`);\n unwatchFile(sharedCredentialsPath());\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n try {\n await tunnelSupervisor?.stopAll(reason);\n } catch {\n /* ignore */\n }\n try {\n await storage.close();\n } catch {\n /* ignore */\n }\n try {\n await recordingStorage.close();\n } catch {\n /* ignore */\n }\n serverRef?.close();\n removeLock(ctx.paths);\n process.exit(0);\n }\n\n // listen;遇 EADDRINUSE(端口被其它进程占用)则端口 +1 重试,port 最终为实际绑定端口。\n const listenOnce = (p: number): Promise<void> =>\n new Promise<void>((resolve, reject) => {\n const onError = (err: NodeJS.ErrnoException) => {\n server.removeListener(\"listening\", onListening);\n reject(err);\n };\n const onListening = () => {\n server.removeListener(\"error\", onError);\n resolve();\n };\n server.once(\"error\", onError);\n server.once(\"listening\", onListening);\n server.listen(p, bind);\n });\n\n const startPort = port;\n for (let attempt = 0; ; attempt += 1) {\n try {\n await listenOnce(port);\n break;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"EADDRINUSE\" && attempt < 64) {\n const next = port + 1;\n logger.warn(`端口 ${port} 被占用,改试 ${next}`);\n port = next;\n continue;\n }\n throw err;\n }\n }\n if (port !== startPort) {\n logger.info(`起始端口 ${startPort} 被占用,最终绑定到 ${port}`);\n }\n serverRef = server;\n writeLock(ctx.paths, {\n pid: process.pid,\n startedAt: runtimeState.startedAt,\n bind,\n port,\n logLevel: String(logLevel),\n });\n logger.info(`yoooclaw daemon 启动:${bind}:${port}(profile=${ctx.profile}, pid=${process.pid})`);\n\n // Relay 隧道:复用插件连接逻辑,反代到本 daemon 自己的 HTTP server。\n if (config.relay.enabled) {\n tunnelSupervisor = new TunnelSupervisor({\n tunnelUrl: config.relay.url,\n runtime,\n httpBaseUrl: `http://127.0.0.1:${port}`,\n httpToken: token,\n heartbeatSec: config.relay.heartbeatSec,\n reconnectBackoffMs: config.relay.reconnectBackoffMs,\n stateDir: ctx.paths.dir,\n logger,\n });\n const result = await tunnelSupervisor.apply(credentialSet);\n pushRecordingStatus = (event) => tunnelSupervisor?.pushEvent(\"recording.status\", event);\n startCredentialWatcher();\n if (credentialSet.entries.length > 0) {\n logger.info(\n `Relay 多隧道已启动:${result.started.join(\",\") || \"-\"}(mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"})`,\n );\n } else {\n logger.warn(\"Relay 已启用但未设置 api-key,跳过隧道连接。运行 yc auth set-api-key <ock_…> 或 yc auth add-api-key <ock_…> --label <label>\");\n }\n } else {\n logger.info(\"Relay 未启用(config.relay.enabled=false),仅走直连 HTTP\");\n }\n\n process.on(\"SIGTERM\", () => void shutdown(\"SIGTERM\"));\n process.on(\"SIGINT\", () => void shutdown(\"SIGINT\"));\n\n // 前台保持运行(http server 维持 event loop);返回的 promise 永不 resolve\n await new Promise<void>(() => {});\n}\n\nasync function selfEchoCheck(\n baseUrl: string,\n opts: { token?: string; apiKey?: string; clientLabel?: string } = {},\n): Promise<{ ok: boolean; status?: number; clientLabel?: string; error?: string }> {\n try {\n const authValue = opts.apiKey\n ? opts.apiKey.replace(/^Bearer\\s+/i, \"\")\n : opts.token;\n const res = await fetch(`${baseUrl}/notifications`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(authValue ? { Authorization: `Bearer ${authValue}` } : {}),\n },\n body: JSON.stringify({\n notifications: [\n {\n id: `echo_${opts.clientLabel ?? \"local\"}_${Date.now()}`,\n app: \"yoooclaw.selftest\",\n title: \"tunnel +test\",\n body: \"echo\",\n timestamp: new Date().toISOString(),\n },\n ],\n }),\n });\n return { ok: res.ok, status: res.status, clientLabel: opts.clientLabel };\n } catch (err) {\n return { ok: false, clientLabel: opts.clientLabel, error: (err as Error).message };\n }\n}\n",
|
|
45
|
+
"/**\n * daemon 文件 logger —— 写 `daemon.log`,按日期轮转为 `daemon.log.YYYY-MM-DD`。\n * 行格式:`<ISO本地时间> [LEVEL] message`(与 src/log/reader.ts 解析一致)。\n */\nimport { appendFileSync, existsSync, renameSync, statSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport type { LogLevel } from \"../config/schema.js\";\n\nconst LEVEL_ORDER: Record<string, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n trace: 4,\n};\n\nfunction isoLocal(d: Date): string {\n const pad = (n: number, w = 2) => String(n).padStart(w, \"0\");\n const off = -d.getTimezoneOffset();\n const sign = off >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(off);\n return (\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` +\n `T${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}` +\n `${sign}${pad(Math.floor(abs / 60))}:${pad(abs % 60)}`\n );\n}\n\nfunction dateKey(d: Date): string {\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\nexport class DaemonLogger {\n private currentDay: string;\n\n constructor(\n private readonly logFile: string,\n private readonly level: LogLevel = \"info\",\n private readonly alsoStderr = false,\n ) {\n ensureDir(dirname(logFile));\n this.currentDay = dateKey(new Date());\n this.rotateIfNeeded(new Date());\n }\n\n private enabled(level: string): boolean {\n return (LEVEL_ORDER[level] ?? 2) <= (LEVEL_ORDER[this.level] ?? 2);\n }\n\n private rotateIfNeeded(now: Date): void {\n if (!existsSync(this.logFile)) return;\n let fileDay: string | undefined;\n try {\n fileDay = dateKey(statSync(this.logFile).mtime);\n } catch {\n return;\n }\n const today = dateKey(now);\n if (fileDay !== today) {\n try {\n renameSync(this.logFile, `${this.logFile}.${fileDay}`);\n } catch {\n // 轮转失败不影响写入\n }\n }\n }\n\n private write(level: string, msg: string): void {\n if (!this.enabled(level)) return;\n const now = new Date();\n if (dateKey(now) !== this.currentDay) {\n this.rotateIfNeeded(now);\n this.currentDay = dateKey(now);\n }\n const line = `${isoLocal(now)} [${level.toUpperCase()}] ${msg}\\n`;\n try {\n appendFileSync(this.logFile, line);\n } catch {\n // 忽略写文件失败\n }\n if (this.alsoStderr) process.stderr.write(line);\n }\n\n debug(msg: string): void { this.write(\"debug\", msg); }\n info(msg: string): void { this.write(\"info\", msg); }\n warn(msg: string): void { this.write(\"warn\", msg); }\n error(msg: string): void { this.write(\"error\", msg); }\n}\n",
|
|
47
46
|
"import { existsSync, readFileSync, readdirSync, mkdirSync } from \"node:fs\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { StoredNotification } from \"../notification/storage.js\";\n\n/**\n * Minimal Commander.js Command interface.\n * The real `Command` instance comes from the openclaw runtime at registration time;\n * we only declare the subset we use so that `commander` need not be a direct dep.\n */\nexport interface CliCommand {\n command(nameAndArgs: string): CliCommand;\n description(str: string): CliCommand;\n version(str: string, flags?: string, description?: string): CliCommand;\n option(flags: string, description: string, defaultValue?: string): CliCommand;\n requiredOption(flags: string, description: string): CliCommand;\n action(fn: (...args: any[]) => void | Promise<void>): CliCommand;\n}\n\nexport interface CliContext {\n workspaceDir?: string;\n stateDir?: string;\n}\n\n/** Resolve the notifications storage directory (stateDir → workspace fallback) */\nexport function resolveNotificationsDir(ctx: CliContext): string | null {\n if (ctx.stateDir) {\n const dir = join(\n ctx.stateDir,\n \"plugins\",\n \"phone-notifications\",\n \"notifications\",\n );\n if (existsSync(dir)) return dir;\n }\n if (ctx.workspaceDir) {\n const dir = join(ctx.workspaceDir, \"notifications\");\n if (existsSync(dir)) return dir;\n }\n return null;\n}\n\n/** List available date keys (YYYY-MM-DD) sorted descending */\nexport function listDateKeys(dir: string): string[] {\n const pattern = /^(\\d{4}-\\d{2}-\\d{2})\\.json$/;\n const keys: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isFile()) continue;\n const m = pattern.exec(entry.name);\n if (m) keys.push(m[1]);\n }\n return keys.sort().reverse();\n}\n\n/** Read notifications for a specific date */\nexport function readDateFile(\n dir: string,\n dateKey: string,\n): StoredNotification[] {\n const filePath = join(dir, `${dateKey}.json`);\n if (!existsSync(filePath)) return [];\n try {\n return JSON.parse(readFileSync(filePath, \"utf-8\"));\n } catch {\n return [];\n }\n}\n\n/** Format today as YYYY-MM-DD */\nexport function today(): string {\n return formatDate(new Date());\n}\n\n/** Format a Date as YYYY-MM-DD */\nexport function formatDate(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${day}`;\n}\n\n/** Get date N days ago as YYYY-MM-DD */\nexport function daysAgo(n: number): string {\n const d = new Date();\n d.setDate(d.getDate() - n);\n return formatDate(d);\n}\n\n/** Filter date keys to a [from, to] range (inclusive) */\nexport function filterDateRange(\n keys: string[],\n from: string,\n to: string,\n): string[] {\n return keys.filter((k) => k >= from && k <= to);\n}\n\n/** Parse an ISO 8601 timestamp and exit with a CLI error on invalid input */\nexport function parseIsoTime(\n value: string,\n optionName: \"--from\" | \"--to\",\n): number {\n const isoPattern =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$/;\n if (!isoPattern.test(value)) {\n exitError(\n \"INVALID_TIME\",\n `${optionName} 必须是 ISO 8601 时间,例如 2026-03-01T09:00:00+08:00`,\n );\n }\n\n const ts = Date.parse(value);\n if (Number.isNaN(ts)) {\n exitError(\n \"INVALID_TIME\",\n `${optionName} 不是合法时间,例如 2026-03-01T09:00:00+08:00`,\n );\n }\n return ts;\n}\n\n/** Sort notifications by timestamp descending (newest first) */\nexport function sortNotificationsByTimestampDesc(\n items: StoredNotification[],\n): StoredNotification[] {\n return items.sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp));\n}\n\nconst APP_ALIAS_GROUPS = [\n [\"微信\", \"wechat\", \"weixin\", \"com.tencent.mm\", \"com.tencent.xin\"],\n [\"企业微信\", \"wecom\", \"wxwork\", \"com.tencent.wework\"],\n [\"飞书\", \"feishu\", \"lark\", \"com.ss.android.lark\", \"com.bytedance.ee.lark\", \"com.larksuite.suite\"],\n [\"钉钉\", \"dingtalk\", \"com.alibaba.android.rimet\"],\n [\"qq\", \"腾讯qq\", \"com.tencent.mobileqq\"],\n];\n\nfunction normalizeLookupText(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction appAliasGroup(value: string): string[] | null {\n const normalized = normalizeLookupText(value);\n if (!normalized) return null;\n return APP_ALIAS_GROUPS.find((group) =>\n group.some((candidate) => normalizeLookupText(candidate) === normalized),\n ) ?? null;\n}\n\nexport function matchesNotificationAppFilter(\n item: StoredNotification,\n app: string,\n): boolean {\n const filter = normalizeLookupText(app);\n if (!filter) return true;\n\n const candidates = [item.appName, item.appDisplayName]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0);\n if (candidates.some((candidate) => normalizeLookupText(candidate) === filter)) {\n return true;\n }\n\n const filterGroup = appAliasGroup(app);\n if (!filterGroup) return false;\n return candidates.some((candidate) => appAliasGroup(candidate) === filterGroup);\n}\n\n/** Async version of listDateKeys */\nexport async function listDateKeysAsync(dir: string): Promise<string[]> {\n const pattern = /^(\\d{4}-\\d{2}-\\d{2})\\.json$/;\n const keys: string[] = [];\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (!entry.isFile()) continue;\n const m = pattern.exec(entry.name);\n if (m) keys.push(m[1]);\n }\n return keys.sort().reverse();\n}\n\n/** Async version of readDateFile */\nexport async function readDateFileAsync(\n dir: string,\n dateKey: string,\n): Promise<StoredNotification[]> {\n const filePath = join(dir, `${dateKey}.json`);\n if (!existsSync(filePath)) return [];\n try {\n const content = await readFile(filePath, \"utf-8\");\n return JSON.parse(content);\n } catch {\n return [];\n }\n}\n\n/** Write progress message to stderr (visible to caller, won't pollute JSON stdout) */\nexport function progress(message: string): void {\n process.stderr.write(message + \"\\n\");\n}\n\n/** Print JSON result to stdout */\nexport function output(data: unknown): void {\n process.stdout.write(JSON.stringify(data, null, 2) + \"\\n\");\n}\n\n/** Print error JSON and exit with code 1 */\nexport function exitError(code: string, message: string): never {\n output({ ok: false, error: { code, message } });\n process.exit(1);\n}\n\n/** Resolve the recordings storage directory (stateDir → workspace fallback) */\nexport function resolveRecordingsDir(ctx: CliContext): string | null {\n if (ctx.stateDir) {\n const dir = join(\n ctx.stateDir,\n \"plugins\",\n \"phone-notifications\",\n \"recordings\",\n );\n if (existsSync(dir)) return dir;\n }\n if (ctx.workspaceDir) {\n const dir = join(ctx.workspaceDir, \"recordings\");\n if (existsSync(dir)) return dir;\n }\n return null;\n}\n\n/** Recording index entry (mirrors RecordingIndexEntry from storage.ts) */\nexport interface CliRecordingEntry {\n id: string;\n clientLabel?: string;\n metadata: {\n name: string;\n duration_sec: number;\n file_size_bytes: number;\n created_at: string;\n transfer_status: string;\n [key: string]: unknown;\n };\n status: string;\n audioFile?: string;\n srtFile?: string;\n transcriptDataFile?: string;\n transcriptFile?: string;\n summaryFile?: string;\n title?: string;\n lastError?: string;\n ingestedAt: string;\n updatedAt: string;\n}\n\n/** Resolve the asr-config.json path; creates parent dirs if needed */\nexport function resolveAsrConfigPath(ctx: CliContext): string {\n let base: string;\n if (ctx.stateDir) {\n base = join(ctx.stateDir, \"plugins\", \"phone-notifications\", \"recordings\");\n } else if (ctx.workspaceDir) {\n base = join(ctx.workspaceDir, \"recordings\");\n } else {\n exitError(\n \"STORAGE_UNAVAILABLE\",\n \"无法确定录音存储目录:stateDir 和 workspaceDir 均未设置\",\n );\n }\n mkdirSync(base, { recursive: true });\n return join(base, \"asr-config.json\");\n}\n\n/** Mask an API key, keeping first 4 and last 4 chars */\nexport function maskApiKey(key: string): string {\n if (key.length <= 8) return \"***\";\n return `${key.slice(0, 4)}***${key.slice(-4)}`;\n}\n\n/** Read recording index.json */\nexport function readRecordingIndex(\n dir: string,\n): CliRecordingEntry[] {\n const indexPath = join(dir, \"index.json\");\n if (!existsSync(indexPath)) return [];\n try {\n const raw = JSON.parse(readFileSync(indexPath, \"utf-8\"));\n return Array.isArray(raw?.recordings) ? raw.recordings : [];\n } catch {\n return [];\n }\n}\n",
|
|
48
47
|
"import type { StoredNotification } from \"../notification/storage.js\";\nimport {\n exitError,\n listDateKeysAsync,\n parseIsoTime,\n readDateFileAsync,\n sortNotificationsByTimestampDesc,\n matchesNotificationAppFilter,\n} from \"./helpers.js\";\n\nexport interface RawNotificationQueryOptions {\n from?: string;\n to?: string;\n app?: string;\n sender?: string;\n conversationType?: string;\n keyword?: string;\n limit?: string;\n client?: string;\n}\n\nexport interface NotificationQueryOptions {\n from?: string;\n to?: string;\n app?: string;\n sender?: string;\n conversationType?: string;\n keyword?: string;\n client?: string;\n limit: number;\n fromTs: number | null;\n toTs: number | null;\n fromDateKey: string | null;\n toDateKey: string | null;\n}\n\nexport function parsePositiveIntegerOption(\n rawValue: string | undefined,\n defaultValue: number,\n optionName: string,\n errorCode: string,\n): number {\n const value = rawValue && rawValue.length > 0 ? rawValue : String(defaultValue);\n if (!/^\\d+$/.test(value)) {\n exitError(errorCode, `${optionName} 必须是大于 0 的整数`);\n }\n\n const parsed = Number.parseInt(value, 10);\n if (parsed <= 0) {\n exitError(errorCode, `${optionName} 必须是大于 0 的整数`);\n }\n return parsed;\n}\n\nexport function parseNotificationQueryOptions(\n opts: RawNotificationQueryOptions,\n defaultLimit = 100,\n): NotificationQueryOptions {\n const limit = parsePositiveIntegerOption(\n opts.limit,\n defaultLimit,\n \"--limit\",\n \"INVALID_LIMIT\",\n );\n\n if (\n opts.conversationType\n && opts.conversationType !== \"group\"\n && opts.conversationType !== \"private\"\n ) {\n exitError(\n \"INVALID_CONVERSATION_TYPE\",\n \"--conversation-type 只能是 group 或 private\",\n );\n }\n\n const hasFrom = typeof opts.from === \"string\" && opts.from.length > 0;\n const hasTo = typeof opts.to === \"string\" && opts.to.length > 0;\n const fromTs = hasFrom ? parseIsoTime(opts.from!, \"--from\") : null;\n const toTs = hasTo ? parseIsoTime(opts.to!, \"--to\") : null;\n\n if (fromTs !== null && toTs !== null && fromTs > toTs) {\n exitError(\"INVALID_TIME_RANGE\", \"--from 不能晚于 --to\");\n }\n\n return {\n from: opts.from,\n to: opts.to,\n app: opts.app,\n sender: opts.sender,\n conversationType: opts.conversationType,\n keyword: opts.keyword,\n client: opts.client,\n limit,\n fromTs,\n toTs,\n fromDateKey: hasFrom ? opts.from!.slice(0, 10) : null,\n toDateKey: hasTo ? opts.to!.slice(0, 10) : null,\n };\n}\n\nexport function matchesNotificationQuery(\n item: StoredNotification,\n opts: NotificationQueryOptions,\n): boolean {\n if (opts.client && opts.client !== \"all\") {\n const label = item.clientLabel ?? \"legacy\";\n if (label !== opts.client) return false;\n }\n if (opts.app && !matchesNotificationAppFilter(item, opts.app)) return false;\n if (\n opts.conversationType\n && item.conversationType !== opts.conversationType\n ) {\n return false;\n }\n\n const senderHaystack = [item.senderName, item.title]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .join(\"\\n\");\n if (opts.sender && !senderHaystack.includes(opts.sender)) return false;\n\n const keywordHaystack = [\n item.title,\n item.content,\n item.senderName,\n item.conversationName,\n ]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .join(\"\\n\");\n if (opts.keyword && !keywordHaystack.includes(opts.keyword)) return false;\n\n const itemTs = Date.parse(item.timestamp);\n if (Number.isNaN(itemTs)) return false;\n if (opts.fromTs !== null && itemTs < opts.fromTs) return false;\n if (opts.toTs !== null && itemTs > opts.toTs) return false;\n\n return true;\n}\n\nexport async function collectMatchingNotifications(\n dir: string,\n opts: NotificationQueryOptions,\n): Promise<StoredNotification[]> {\n const keys = await listDateKeysAsync(dir);\n const results: StoredNotification[] = [];\n const canStopAfterLimit = opts.fromTs === null && opts.toTs === null;\n\n for (const dateKey of keys) {\n if (opts.fromDateKey && dateKey < opts.fromDateKey) continue;\n if (opts.toDateKey && dateKey > opts.toDateKey) continue;\n\n const items = sortNotificationsByTimestampDesc([\n ...(await readDateFileAsync(dir, dateKey)),\n ]);\n for (const item of items) {\n if (!matchesNotificationQuery(item, opts)) continue;\n results.push(item);\n if (canStopAfterLimit && results.length >= opts.limit) {\n return results;\n }\n }\n }\n\n return sortNotificationsByTimestampDesc(results).slice(0, opts.limit);\n}\n",
|
|
49
48
|
"import {\n accessSync,\n mkdirSync,\n appendFileSync,\n readdirSync,\n readFileSync,\n writeFileSync,\n existsSync,\n rmSync,\n constants,\n} from \"node:fs\";\nimport { createHash } from \"node:crypto\";\nimport { join } from \"node:path\";\nimport type { PluginConfig, RawNotification } from \"../types.js\";\nimport { normalizeFeishuFields } from \"./feishu-normalize.js\";\nimport { currentClientLabel } from \"../ingest-context.js\";\n\ninterface Logger {\n info: (message: string) => void;\n warn: (message: string) => void;\n}\n\nexport type NotificationConversationType = \"private\" | \"group\";\n\nexport interface StorageContext {\n stateDir: string;\n workspaceDir?: string;\n}\n\n/** Stored notification entry (JSON format, append-only) */\nexport interface StoredNotification {\n /** 来源客户端 label;旧数据无该字段,查询时视为 legacy */\n clientLabel?: string;\n /** 包名 */\n appName: string;\n /** 应用显示名(由映射补全),缺省时与 appName 一致 */\n appDisplayName?: string;\n title: string;\n content: string;\n /** ISO 8601 with timezone, e.g. \"2026-03-02T08:30:00+08:00\" */\n timestamp: string;\n /**\n * 结构化发送人。当前主要用于飞书消息:\n * iOS 通知里 title 通常是发送人,subtitle 用来区分群聊名。\n */\n senderName?: string;\n /** 结构化会话类型。当前主要用于飞书消息区分群聊/私聊。 */\n conversationType?: NotificationConversationType;\n /** 结构化会话名。当前主要用于飞书群聊名(通常来自 subtitle)。 */\n conversationName?: string;\n}\n\nconst NOTIFICATION_DIR_NAME = \"notifications\";\nconst ID_INDEX_DIR_NAME = \".ids\";\nconst CONTENT_KEY_INDEX_DIR_NAME = \".keys\";\n\nexport interface NotificationIngestResult {\n received: number;\n ingested: number;\n dedupedById: number;\n dedupedByContent: number;\n invalid: number;\n /**\n * 本次 ingest 实际新写入的条目(去重 / 非法之后的产物)。\n * 用于后续事件驱动链路(如 light-rule agent 评估)拿到本次新增的通知列表,\n * 不需要重新读盘。\n */\n inserted: StoredNotification[];\n}\n\ntype WriteOutcome =\n | { kind: \"ingested\"; entry: StoredNotification }\n | { kind: \"dedupedById\" }\n | { kind: \"dedupedByContent\" }\n | { kind: \"invalid\" };\n\nexport function getStateFallbackNotificationDir(stateDir: string): string {\n return join(stateDir, \"plugins\", \"phone-notifications\", NOTIFICATION_DIR_NAME);\n}\n\nfunction computeLagMs(timestamp: string | undefined): number | null {\n if (!timestamp) return null;\n const t = new Date(timestamp).getTime();\n if (Number.isNaN(t)) return null;\n return Date.now() - t;\n}\n\nfunction buildFallbackContent(n: RawNotification): string {\n const body = n.body?.trim();\n if (body) {\n return body;\n }\n\n const fallback: string[] = [];\n if (n.category) {\n fallback.push(`category:${n.category}`);\n }\n if (n.metadata && Object.keys(n.metadata).length > 0) {\n fallback.push(`metadata:${JSON.stringify(n.metadata)}`);\n }\n return fallback.join(\" ; \") || \"-\";\n}\n\nfunction ensureWritableDirectory(dir: string): boolean {\n try {\n mkdirSync(dir, { recursive: true });\n accessSync(dir, constants.R_OK | constants.W_OK);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function resolveNotificationStorageDir(\n ctx: StorageContext,\n logger: Pick<Logger, \"info\" | \"warn\">,\n): string {\n // 优先使用 stateDir(插件私有稳定路径),避免通知随 workspace 切换而分散\n const stateNotifDir = getStateFallbackNotificationDir(ctx.stateDir);\n\n if (ensureWritableDirectory(stateNotifDir)) {\n logger.info(`通知将写入 stateDir 路径: ${stateNotifDir}`);\n return stateNotifDir;\n }\n\n // stateDir 不可用时回退到 workspaceDir\n if (ctx.workspaceDir) {\n const workspaceDir = join(ctx.workspaceDir, NOTIFICATION_DIR_NAME);\n if (ensureWritableDirectory(workspaceDir)) {\n logger.warn(\n `stateDir 不可用,通知已回退到 workspace 路径: ${workspaceDir}`,\n );\n return workspaceDir;\n }\n }\n\n throw new Error(`通知存储目录不可用: ${stateNotifDir}`);\n}\n\n/** 包名 → 应用显示名(异步,未命中时内部可拉取后返回);不提供则落库仅用 appName */\nexport type ResolveDisplayName = (packageName: string) => Promise<string>;\n\nexport class NotificationStorage {\n private dir: string;\n private idIndexDir: string;\n private contentKeyIndexDir: string;\n private idCache = new Map<string, Set<string>>();\n private contentKeyCache = new Map<string, Set<string>>();\n private dateWriteChains = new Map<string, Promise<void>>();\n private resolveDisplayName: ResolveDisplayName | undefined;\n\n constructor(\n dir: string,\n private config: PluginConfig,\n private logger: Logger,\n resolveDisplayName?: ResolveDisplayName,\n ) {\n this.dir = dir;\n this.idIndexDir = join(dir, ID_INDEX_DIR_NAME);\n this.contentKeyIndexDir = join(dir, CONTENT_KEY_INDEX_DIR_NAME);\n this.resolveDisplayName = resolveDisplayName;\n }\n\n async init() {\n mkdirSync(this.dir, { recursive: true });\n mkdirSync(this.idIndexDir, { recursive: true });\n rmSync(this.contentKeyIndexDir, { recursive: true, force: true });\n mkdirSync(this.contentKeyIndexDir, { recursive: true });\n }\n\n async ingest(\n items: RawNotification[],\n ingestId?: string,\n ): Promise<NotificationIngestResult> {\n const result: NotificationIngestResult = {\n received: items.length,\n ingested: 0,\n dedupedById: 0,\n dedupedByContent: 0,\n invalid: 0,\n inserted: [],\n };\n\n const traceTag = ingestId ? `[${ingestId}]` : \"\";\n for (const n of items) {\n const outcome = await this.writeNotification(n);\n const lagMs = computeLagMs(n.timestamp);\n const lagPart = lagMs === null ? \"lag=?\" : `lag=${lagMs}ms`;\n this.logger.info(\n `ingest${traceTag}: app=${n.app ?? \"Unknown\"} id=${n.id ?? \"-\"} ts=${n.timestamp} ${lagPart} outcome=${outcome.kind}`,\n );\n switch (outcome.kind) {\n case \"ingested\":\n result.ingested += 1;\n result.inserted.push(outcome.entry);\n break;\n case \"dedupedById\":\n result.dedupedById += 1;\n break;\n case \"dedupedByContent\":\n result.dedupedByContent += 1;\n break;\n case \"invalid\":\n result.invalid += 1;\n break;\n }\n }\n this.prune();\n return result;\n }\n\n private async writeNotification(n: RawNotification): Promise<WriteOutcome> {\n const ts = new Date(n.timestamp);\n if (Number.isNaN(ts.getTime())) {\n this.logger.warn(`忽略非法 timestamp 的通知: ${n.id}`);\n return { kind: \"invalid\" };\n }\n\n const dateKey = this.formatDate(ts);\n const filePath = join(this.dir, `${dateKey}.json`);\n const normalizedId = typeof n.id === \"string\" ? n.id.trim() : \"\";\n const entry = this.buildStoredNotification(n);\n\n return this.withDateWriteLock(dateKey, async () => {\n if (normalizedId && this.hasNotificationId(dateKey, entry.clientLabel ?? \"legacy\", normalizedId)) {\n return { kind: \"dedupedById\" };\n }\n\n if (this.hasNotificationContentKey(dateKey, filePath, entry)) {\n return { kind: \"dedupedByContent\" };\n }\n\n const appDisplayName = this.resolveDisplayName\n ? await this.resolveDisplayName(entry.appName)\n : entry.appName;\n\n const storedEntry: StoredNotification = {\n ...entry,\n appDisplayName,\n };\n\n const arr = this.readStoredNotifications(filePath);\n arr.push(storedEntry);\n writeFileSync(filePath, JSON.stringify(arr, null, 2), \"utf-8\");\n\n if (normalizedId) {\n this.recordNotificationId(dateKey, storedEntry.clientLabel ?? \"legacy\", normalizedId);\n }\n this.recordNotificationContentKey(dateKey, filePath, storedEntry);\n return { kind: \"ingested\", entry: storedEntry };\n });\n }\n\n private buildStoredNotification(n: RawNotification): StoredNotification {\n const appName = typeof n.app === \"string\" && n.app ? n.app : \"Unknown\";\n const clientLabel = currentClientLabel(\"default\");\n const feishu = normalizeFeishuFields(n);\n if (feishu) {\n return {\n clientLabel,\n appName,\n title: feishu.title,\n content: feishu.content || buildFallbackContent(n),\n timestamp: n.timestamp,\n ...feishu.structured,\n };\n }\n return {\n clientLabel,\n appName,\n title: typeof n.title === \"string\" ? n.title : \"\",\n content: buildFallbackContent(n),\n timestamp: n.timestamp,\n };\n }\n\n private formatDate(d: Date): string {\n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n }\n\n private getIdIndexPath(dateKey: string): string {\n return join(this.idIndexDir, `${dateKey}.ids`);\n }\n\n private getIdSet(dateKey: string): Set<string> {\n const cached = this.idCache.get(dateKey);\n if (cached) {\n return cached;\n }\n\n const idPath = this.getIdIndexPath(dateKey);\n const ids = new Set<string>();\n if (existsSync(idPath)) {\n const lines = readFileSync(idPath, \"utf-8\").split(/\\r?\\n/);\n for (const line of lines) {\n const id = line.trim();\n if (id) {\n ids.add(id);\n }\n }\n }\n\n this.idCache.set(dateKey, ids);\n return ids;\n }\n\n private buildNotificationIdKey(clientLabel: string, id: string): string {\n if (this.usesLegacyIdKey(clientLabel)) {\n return id;\n }\n return `${clientLabel}\\x1f${id}`;\n }\n\n private usesLegacyIdKey(clientLabel: string): boolean {\n return clientLabel === \"legacy\" || clientLabel === \"default\";\n }\n\n private hasNotificationId(dateKey: string, clientLabel: string, id: string): boolean {\n const ids = this.getIdSet(dateKey);\n return ids.has(this.buildNotificationIdKey(clientLabel, id))\n || (this.usesLegacyIdKey(clientLabel) && ids.has(id));\n }\n\n private getContentKeyIndexPath(dateKey: string): string {\n return join(this.contentKeyIndexDir, `${dateKey}.keys`);\n }\n\n private getContentKeySet(dateKey: string, filePath: string): Set<string> {\n const cached = this.contentKeyCache.get(dateKey);\n if (cached) {\n return cached;\n }\n\n const keyPath = this.getContentKeyIndexPath(dateKey);\n const keys = new Set<string>();\n\n if (existsSync(filePath)) {\n for (const item of this.readStoredNotifications(filePath)) {\n keys.add(this.buildNotificationContentKey(item));\n }\n }\n\n if (keys.size > 0) {\n writeFileSync(keyPath, `${Array.from(keys).join(\"\\n\")}\\n`, \"utf-8\");\n } else if (existsSync(keyPath)) {\n rmSync(keyPath, { force: true });\n }\n\n this.contentKeyCache.set(dateKey, keys);\n return keys;\n }\n\n private hasNotificationContentKey(\n dateKey: string,\n filePath: string,\n entry: Pick<StoredNotification, \"appName\" | \"title\" | \"content\" | \"timestamp\" | \"clientLabel\">,\n ): boolean {\n const keys = this.getContentKeySet(dateKey, filePath);\n return this.contentKeyLabels(entry.clientLabel).some((clientLabel) =>\n keys.has(this.buildNotificationContentKey({ ...entry, clientLabel })),\n );\n }\n\n private recordNotificationId(dateKey: string, clientLabel: string, id: string) {\n const ids = this.getIdSet(dateKey);\n const key = this.buildNotificationIdKey(clientLabel, id);\n if (ids.has(key)) {\n return;\n }\n\n appendFileSync(this.getIdIndexPath(dateKey), `${key}\\n`, \"utf-8\");\n ids.add(key);\n }\n\n private recordNotificationContentKey(\n dateKey: string,\n filePath: string,\n entry: Pick<StoredNotification, \"appName\" | \"title\" | \"content\" | \"timestamp\" | \"clientLabel\">,\n ) {\n const keys = this.getContentKeySet(dateKey, filePath);\n const key = this.buildNotificationContentKey(entry);\n\n if (keys.has(key)) {\n return;\n }\n\n appendFileSync(this.getContentKeyIndexPath(dateKey), `${key}\\n`, \"utf-8\");\n keys.add(key);\n }\n\n private buildNotificationContentKey(\n entry: Pick<StoredNotification, \"appName\" | \"title\" | \"content\" | \"timestamp\" | \"clientLabel\">,\n ): string {\n return createHash(\"sha256\")\n .update(entry.clientLabel ?? \"legacy\")\n .update(\"\\x1f\")\n .update(entry.appName)\n .update(\"\\x1f\")\n .update(entry.title)\n .update(\"\\x1f\")\n .update(entry.content)\n .update(\"\\x1f\")\n .update(entry.timestamp)\n .digest(\"hex\");\n }\n\n private contentKeyLabels(clientLabel: string | undefined): string[] {\n const label = clientLabel ?? \"legacy\";\n return label === \"default\" ? [\"default\", \"legacy\"] : [label];\n }\n\n private readStoredNotifications(filePath: string): StoredNotification[] {\n if (!existsSync(filePath)) {\n return [];\n }\n\n try {\n const parsed = JSON.parse(readFileSync(filePath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n\n private async withDateWriteLock<T>(\n dateKey: string,\n task: () => Promise<T>,\n ): Promise<T> {\n const previous = this.dateWriteChains.get(dateKey) ?? Promise.resolve();\n let release!: () => void;\n const current = new Promise<void>((resolve) => {\n release = resolve;\n });\n const chain = previous.then(() => current);\n this.dateWriteChains.set(dateKey, chain);\n\n await previous;\n try {\n return await task();\n } finally {\n release();\n if (this.dateWriteChains.get(dateKey) === chain) {\n this.dateWriteChains.delete(dateKey);\n }\n }\n }\n\n private prune() {\n const retentionDays = this.config.retentionDays;\n if (retentionDays === undefined) {\n return;\n }\n\n const cutoffMs = Date.now() - retentionDays * 24 * 60 * 60 * 1000;\n const cutoffDate = this.formatDate(new Date(cutoffMs));\n\n this.pruneDataFiles(cutoffDate);\n this.pruneIdIndex(cutoffDate);\n this.pruneContentKeyIndex(cutoffDate);\n }\n\n /** Remove expired .json, legacy .md files, and legacy date directories */\n private pruneDataFiles(cutoffDate: string) {\n const dateFilePattern = /^(\\d{4}-\\d{2}-\\d{2})\\.(json|md)$/;\n const dateDirPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n try {\n for (const entry of readdirSync(this.dir, { withFileTypes: true })) {\n if (entry.isFile()) {\n const match = dateFilePattern.exec(entry.name);\n if (match && match[1] < cutoffDate) {\n rmSync(join(this.dir, entry.name), { force: true });\n }\n } else if (entry.isDirectory() && dateDirPattern.test(entry.name) && entry.name < cutoffDate) {\n rmSync(join(this.dir, entry.name), { recursive: true, force: true });\n }\n }\n } catch {\n // ignore\n }\n }\n\n /** Remove expired .ids index files */\n private pruneIdIndex(cutoffDate: string) {\n try {\n for (const entry of readdirSync(this.idIndexDir, { withFileTypes: true })) {\n if (!entry.isFile()) continue;\n const match = /^(\\d{4}-\\d{2}-\\d{2})\\.ids$/.exec(entry.name);\n if (match && match[1] < cutoffDate) {\n rmSync(join(this.idIndexDir, entry.name), { force: true });\n this.idCache.delete(match[1]);\n }\n }\n } catch {\n // ignore\n }\n }\n\n private pruneContentKeyIndex(cutoffDate: string) {\n try {\n for (const entry of readdirSync(this.contentKeyIndexDir, { withFileTypes: true })) {\n if (!entry.isFile()) continue;\n const match = /^(\\d{4}-\\d{2}-\\d{2})\\.keys$/.exec(entry.name);\n if (match && match[1] < cutoffDate) {\n rmSync(join(this.contentKeyIndexDir, entry.name), { force: true });\n this.contentKeyCache.delete(match[1]);\n }\n }\n } catch {\n // ignore\n }\n }\n\n async close() {\n this.idCache.clear();\n this.contentKeyCache.clear();\n this.dateWriteChains.clear();\n }\n}\n",
|
|
@@ -80,11 +79,25 @@
|
|
|
80
79
|
"import * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { resolveStateDir } from \"../host.js\";\n\n// ─── Types ───\n\nexport interface DeviceIdentity {\n deviceId: string;\n publicKeyPem: string;\n privateKeyPem: string;\n}\n\nexport interface DeviceAuthEntry {\n token: string;\n role: string;\n scopes: string[];\n updatedAtMs: number;\n}\n\ninterface DeviceAuthStore {\n version: 1;\n deviceId: string;\n tokens: Record<string, DeviceAuthEntry>;\n}\n\n// ─── Crypto helpers ───\n\nconst ED25519_SPKI_PREFIX = Buffer.from(\"302a300506032b6570032100\", \"hex\");\n\nexport function base64UrlEncode(buf: Buffer): string {\n return buf\n .toString(\"base64\")\n .replaceAll(\"+\", \"-\")\n .replaceAll(\"/\", \"_\")\n .replace(/=+$/g, \"\");\n}\n\nexport function derivePublicKeyRaw(publicKeyPem: string): Buffer {\n const spki = crypto.createPublicKey(publicKeyPem).export({\n type: \"spki\",\n format: \"der\",\n });\n if (\n spki.length === ED25519_SPKI_PREFIX.length + 32 &&\n spki.subarray(0, ED25519_SPKI_PREFIX.length).equals(ED25519_SPKI_PREFIX)\n )\n return spki.subarray(ED25519_SPKI_PREFIX.length);\n return spki;\n}\n\nexport function fingerprintPublicKey(publicKeyPem: string): string {\n const raw = derivePublicKeyRaw(publicKeyPem);\n return crypto.createHash(\"sha256\").update(raw).digest(\"hex\");\n}\n\nexport function publicKeyRawBase64UrlFromPem(publicKeyPem: string): string {\n return base64UrlEncode(derivePublicKeyRaw(publicKeyPem));\n}\n\nexport function signDevicePayload(privateKeyPem: string, payload: string): string {\n const key = crypto.createPrivateKey(privateKeyPem);\n return base64UrlEncode(crypto.sign(null, Buffer.from(payload, \"utf8\"), key));\n}\n\nexport function buildDeviceAuthPayload(params: {\n deviceId: string;\n clientId: string;\n clientMode: string;\n role: string;\n scopes: string[];\n signedAtMs: number;\n token: string | null;\n nonce: string;\n}): string {\n const scopes = params.scopes.join(\",\");\n const token = params.token ?? \"\";\n return [\n \"v2\",\n params.deviceId,\n params.clientId,\n params.clientMode,\n params.role,\n scopes,\n String(params.signedAtMs),\n token,\n params.nonce,\n ].join(\"|\");\n}\n\n// ─── File I/O helpers ───\n\nexport function resolveClientStateDir(stateDir: string | undefined): string {\n return stateDir ?? resolveStateDir();\n}\n\nfunction ensureDir(filePath: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n}\n\nfunction resolveIdentityPath(stateDir: string): string {\n return path.join(stateDir, \"identity\", \"device.json\");\n}\n\nfunction normalizeDeviceAuthRole(role: string): string {\n return role.trim();\n}\n\nfunction normalizeDeviceAuthScopes(scopes: string[]): string[] {\n const out = new Set<string>();\n for (const scope of scopes) {\n const trimmed = scope.trim();\n if (trimmed) {\n out.add(trimmed);\n }\n }\n return [...out].sort();\n}\n\nfunction resolveDeviceAuthPath(stateDir: string): string {\n return path.join(stateDir, \"identity\", \"device-auth.json\");\n}\n\nfunction readDeviceAuthStore(filePath: string): DeviceAuthStore | null {\n try {\n if (!fs.existsSync(filePath)) return null;\n const raw = fs.readFileSync(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n if (parsed?.version !== 1 || typeof parsed.deviceId !== \"string\") return null;\n if (!parsed.tokens || typeof parsed.tokens !== \"object\") return null;\n return parsed as DeviceAuthStore;\n } catch {\n return null;\n }\n}\n\nfunction writeDeviceAuthStore(filePath: string, store: DeviceAuthStore): void {\n ensureDir(filePath);\n fs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\\n`, {\n mode: 0o600,\n });\n try {\n fs.chmodSync(filePath, 0o600);\n } catch {\n // ignore chmod errors on unsupported filesystems\n }\n}\n\n// ─── Token CRUD ───\n\nexport function loadDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n}): DeviceAuthEntry | null {\n const store = readDeviceAuthStore(resolveDeviceAuthPath(params.stateDir));\n if (!store || store.deviceId !== params.deviceId) return null;\n const entry = store.tokens[normalizeDeviceAuthRole(params.role)];\n if (!entry || typeof entry.token !== \"string\") return null;\n return entry;\n}\n\nexport function storeDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n token: string;\n scopes: string[];\n}): DeviceAuthEntry {\n const filePath = resolveDeviceAuthPath(params.stateDir);\n const existing = readDeviceAuthStore(filePath);\n const role = normalizeDeviceAuthRole(params.role);\n const next: DeviceAuthStore = {\n version: 1,\n deviceId: params.deviceId,\n tokens:\n existing && existing.deviceId === params.deviceId && existing.tokens\n ? { ...existing.tokens }\n : {},\n };\n const entry: DeviceAuthEntry = {\n token: params.token,\n role,\n scopes: normalizeDeviceAuthScopes(params.scopes),\n updatedAtMs: Date.now(),\n };\n next.tokens[role] = entry;\n writeDeviceAuthStore(filePath, next);\n return entry;\n}\n\nexport function clearDeviceAuthToken(params: {\n stateDir: string;\n deviceId: string;\n role: string;\n}): void {\n const filePath = resolveDeviceAuthPath(params.stateDir);\n const store = readDeviceAuthStore(filePath);\n if (!store || store.deviceId !== params.deviceId) return;\n const role = normalizeDeviceAuthRole(params.role);\n if (!store.tokens[role]) return;\n const next: DeviceAuthStore = {\n version: 1,\n deviceId: store.deviceId,\n tokens: { ...store.tokens },\n };\n delete next.tokens[role];\n writeDeviceAuthStore(filePath, next);\n}\n\n// ─── Identity lifecycle ───\n\nexport function loadOrCreateDeviceIdentity(stateDir: string): DeviceIdentity {\n const filePath = resolveIdentityPath(stateDir);\n try {\n if (fs.existsSync(filePath)) {\n const raw = fs.readFileSync(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n if (\n parsed?.version === 1 &&\n typeof parsed.deviceId === \"string\" &&\n typeof parsed.publicKeyPem === \"string\" &&\n typeof parsed.privateKeyPem === \"string\"\n ) {\n const derivedId = fingerprintPublicKey(parsed.publicKeyPem);\n return {\n deviceId: derivedId,\n publicKeyPem: parsed.publicKeyPem,\n privateKeyPem: parsed.privateKeyPem,\n };\n }\n }\n } catch {\n // fall through to generate\n }\n // Generate new identity\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ed25519\");\n const publicKeyPem = publicKey\n .export({ type: \"spki\", format: \"pem\" })\n .toString();\n const privateKeyPem = privateKey\n .export({ type: \"pkcs8\", format: \"pem\" })\n .toString();\n const identity: DeviceIdentity = {\n deviceId: fingerprintPublicKey(publicKeyPem),\n publicKeyPem,\n privateKeyPem,\n };\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const stored = {\n version: 1,\n ...identity,\n createdAtMs: Date.now(),\n };\n ensureDir(filePath);\n fs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\\n`, {\n mode: 0o600,\n });\n return identity;\n}\n",
|
|
81
80
|
"import WebSocket from \"ws\";\nimport type { RelayClient } from \"./relay-client.js\";\nimport type { WsOpenFrame, WsDataFrame, WsCloseFrame } from \"./types.js\";\nimport { mapPath } from \"./http-proxy.js\";\n\nconst GATEWAY_WS_HANDSHAKE_TIMEOUT_MS = 10_000;\n\nexport interface WsProxyOptions {\n gatewayBaseUrl: string;\n client: RelayClient;\n logger: {\n info: (msg: string) => void;\n warn: (msg: string) => void;\n error: (msg: string) => void;\n };\n}\n\nexport class WsProxy {\n /** 活跃的 WebSocket 代理连接,按帧 id 索引 */\n private connections = new Map<string, WebSocket>();\n\n constructor(private readonly opts: WsProxyOptions) {}\n\n get activeCount(): number {\n return this.connections.size;\n }\n\n cleanup(): void {\n const connections = [...this.connections.entries()];\n this.connections.clear();\n for (const [id, ws] of connections) {\n this.opts.logger.info(`WsProxy: closing WS id=${id}`);\n try {\n ws.close();\n } catch {\n // ignore\n }\n }\n }\n\n handleWsOpen(frame: WsOpenFrame): void {\n const wsUrl =\n this.opts.gatewayBaseUrl.replace(/^http/, \"ws\") +\n mapPath(frame.path);\n this.opts.logger.info(\n `TunnelProxy: WS open id=${frame.id}, path=${frame.path} → ${wsUrl}`,\n );\n\n try {\n const existing = this.connections.get(frame.id);\n if (existing) {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} already exists, closing previous gateway connection`,\n );\n try {\n existing.close(1000, \"replaced by new relay ws_open\");\n } catch {\n // ignore\n }\n }\n\n const ws = new WebSocket(wsUrl, {\n headers: frame.headers,\n handshakeTimeout: GATEWAY_WS_HANDSHAKE_TIMEOUT_MS,\n });\n this.connections.set(frame.id, ws);\n\n let notifiedClosed = false;\n let connectTimer: ReturnType<typeof setTimeout> | null = setTimeout(\n () => {\n connectTimer = null;\n if (\n this.connections.get(frame.id) !== ws ||\n ws.readyState === WebSocket.OPEN\n ) {\n return;\n }\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} connect timed out after ${GATEWAY_WS_HANDSHAKE_TIMEOUT_MS}ms`,\n );\n notifyClosed(1011, \"gateway websocket connect timeout\");\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n } else {\n ws.close();\n }\n } catch {\n // ignore\n }\n },\n GATEWAY_WS_HANDSHAKE_TIMEOUT_MS,\n );\n\n const clearConnectTimer = () => {\n if (connectTimer) {\n clearTimeout(connectTimer);\n connectTimer = null;\n }\n };\n\n const notifyClosed = (code: number, reason: string) => {\n if (notifiedClosed) return;\n notifiedClosed = true;\n clearConnectTimer();\n if (this.connections.get(frame.id) === ws) {\n this.connections.delete(frame.id);\n }\n this.opts.client.send({\n type: \"ws_close\",\n id: frame.id,\n code,\n reason,\n });\n };\n\n ws.on(\"open\", () => {\n clearConnectTimer();\n if (this.connections.get(frame.id) !== ws) {\n try {\n ws.close(1000, \"stale relay ws_open\");\n } catch {\n // ignore\n }\n return;\n }\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} connected to gateway, active=${this.connections.size}`,\n );\n this.opts.client.send({\n type: \"ws_opened\",\n id: frame.id,\n });\n });\n\n ws.on(\"message\", (data: WebSocket.RawData) => {\n if (this.connections.get(frame.id) !== ws) {\n return;\n }\n const text =\n typeof data === \"string\"\n ? data\n : Buffer.isBuffer(data)\n ? data.toString()\n : String(data);\n\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} ← gateway data (${text.length} chars): ${text.substring(0, 200)}`,\n );\n this.opts.client.send({\n type: \"ws_data\",\n id: frame.id,\n data: text,\n });\n });\n\n ws.on(\"close\", (code: number, reason: Buffer) => {\n clearConnectTimer();\n const reasonText = reason.toString();\n const isCurrent = this.connections.get(frame.id) === ws;\n if (isCurrent) {\n this.connections.delete(frame.id);\n }\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} closed by gateway (code=${code}, reason=${reasonText}), active=${this.connections.size}`,\n );\n if (isCurrent) {\n notifyClosed(code, reasonText);\n }\n });\n\n ws.on(\"error\", (err: Error) => {\n clearConnectTimer();\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} error: ${err.message}, active=${this.connections.size}`,\n );\n if (this.connections.get(frame.id) === ws) {\n notifyClosed(1011, err.message);\n }\n try {\n if (typeof (ws as any).terminate === \"function\") {\n (ws as any).terminate();\n }\n } catch {\n // ignore\n }\n });\n } catch (err) {\n this.opts.logger.error(\n `TunnelProxy: WS id=${frame.id} failed to connect: ${err instanceof Error ? err.message : String(err)}`,\n );\n this.opts.client.send({\n type: \"ws_close\",\n id: frame.id,\n code: 1011,\n reason: `failed to connect: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n handleWsData(frame: WsDataFrame): void {\n const ws = this.connections.get(frame.id);\n if (ws?.readyState === WebSocket.OPEN) {\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} → gateway data (${frame.data.length} chars): ${frame.data.substring(0, 200)}`,\n );\n ws.send(frame.data);\n } else {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} data dropped, ws not open (exists=${!!ws}, readyState=${ws?.readyState ?? \"N/A\"})`,\n );\n }\n }\n\n handleWsClose(frame: WsCloseFrame): void {\n const ws = this.connections.get(frame.id);\n if (ws) {\n this.opts.logger.info(\n `TunnelProxy: WS id=${frame.id} close requested by relay (code=${frame.code ?? 1000}, reason=${frame.reason ?? \"\"})`,\n );\n this.connections.delete(frame.id);\n try {\n ws.close(frame.code ?? 1000, frame.reason ?? \"\");\n } catch {\n // ignore\n }\n } else {\n this.opts.logger.warn(\n `TunnelProxy: WS id=${frame.id} close requested but connection not found`,\n );\n }\n }\n}\n",
|
|
82
81
|
"/**\n * 共享 src 适配层 —— CLI 与 openclaw 插件**共用** phone-notifications 的 `src/`。\n *\n * 跨包相对路径只在本文件出现,其余 CLI 代码从这里 import,避免到处写 `../../phone-notifications/...`。\n * 这些模块是纯函数/纯存储逻辑(不依赖 openclaw 宿主),Bun 构建时会被打进 CLI 产物。\n */\nexport {\n collectMatchingNotifications,\n matchesNotificationQuery,\n type NotificationQueryOptions,\n} from \"./vendor/cli/ntf-query.js\";\n\nexport type {\n StoredNotification,\n NotificationConversationType,\n} from \"./vendor/notification/storage.js\";\n\nexport {\n listDateKeysAsync,\n readDateFileAsync,\n matchesNotificationAppFilter,\n sortNotificationsByTimestampDesc,\n readRecordingIndex,\n daysAgo,\n today,\n formatDate,\n} from \"./vendor/cli/helpers.js\";\n\nexport type { CliRecordingEntry } from \"./vendor/cli/helpers.js\";\n\n// ── daemon 侧复用(接收手机推送 + 灯效规则 + 灯效校验)──\nexport { NotificationStorage } from \"./vendor/notification/storage.js\";\nexport { registerNotificationInterfaces } from \"./vendor/plugin/notifications.js\";\nexport { RecordingStorage } from \"./vendor/recording/storage.js\";\nexport { registerRecordingInterfaces } from \"./vendor/plugin/recordings.js\";\nexport { handleRecordingSync } from \"./vendor/recording/handler.js\";\nexport type { RecordingStatusEvent } from \"./vendor/recording/handler.js\";\nexport { validateAsrConfig } from \"./vendor/recording/asr.js\";\nexport type {\n AsrConfig,\n RecordingMetadata,\n} from \"./vendor/types.js\";\nexport { LightRuleRegistry } from \"./vendor/light-rules/registry.js\";\nexport { registerLightRulesGateway } from \"./vendor/light-rules/gateway.js\";\nexport {\n LIGHT_RULE_GATEWAY_METHODS,\n LIGHT_RULE_GATEWAY_METHOD_LIST,\n} from \"./vendor/light-rules/names.js\";\nexport { validateSegments } from \"./vendor/light/validators.js\";\nexport { normalizeRepeatTimes, assertAncsRepeatTimes } from \"./vendor/light/repeat.js\";\nexport type { LightSegment, PluginConfig, RawNotification } from \"./vendor/types.js\";\nexport { sendLightEffect } from \"./vendor/light/sender.js\";\nexport type { SendLightResult } from \"./vendor/light/sender.js\";\n\nimport presetsV1Raw from \"./vendor/light/presets-v1.json\";\nimport type { LightSegment as _LightSegment } from \"./vendor/types.js\";\n\nexport interface LightPreset {\n presetId: string;\n displayName: string;\n description: string;\n repeat_times: number;\n segments: _LightSegment[];\n}\n\n/** phone-notifications 共享的内置 preset 表(red-steady / red-breath / red-strobe-3 / green-* / blue-* / yellow-strobe-3)。 */\nexport const LIGHT_PRESETS_V1 = presetsV1Raw as {\n version: string;\n presets: LightPreset[];\n};\n\n// ── Relay 隧道:复用插件的连接逻辑(RelayClient 建连/心跳/重连 + TunnelProxy 反代到本地 HTTP)──\nexport { RelayClient } from \"./vendor/tunnel/relay-client.js\";\nexport type { TunnelStatusInfo } from \"./vendor/tunnel/relay-client.js\";\nexport { TunnelProxy } from \"./vendor/tunnel/proxy.js\";\nexport {\n currentClientLabel,\n getIngestContext,\n runWithIngestContext,\n type IngestContext,\n} from \"./vendor/ingest-context.js\";\nexport {\n RELAY_INTERNAL_HTTP_HEADER,\n mapPath as mapRelayHttpPath,\n} from \"./vendor/tunnel/http-proxy.js\";\n",
|
|
82
|
+
"/**\n * StandaloneRuntime —— 对外暴露**结构兼容** OpenClawPluginApi 的子集,\n * 让 phone-notifications 的注册模块(registerNotificationInterfaces /\n * registerLightRulesGateway 等)**不改代码**就能在 daemon 里跑。\n *\n * 实现侧:把注册进来的 HTTP 路由与 gateway 方法收集到 Map,由 daemon HTTP server 派发。\n * 不属于 CLI 形态的能力(registerTool / registerCli / on('before_prompt_build'))做 no-op。\n */\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { runWithIngestContext, type IngestContext } from \"../shared.js\";\n\nexport type HttpAuth = \"gateway\" | \"public\" | string;\nexport interface HttpRouteSpec {\n path: string;\n auth?: HttpAuth;\n handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;\n}\n\nexport type GatewayRespond = (\n ok: boolean,\n data?: unknown,\n error?: { code: string; message: string },\n) => void;\n\nexport interface GatewayOpts {\n params?: unknown;\n respond: GatewayRespond;\n context?: {\n broadcast?: (event: string, payload: unknown) => void;\n } & IngestContext;\n client?: unknown;\n}\nexport type GatewayHandler = (opts: GatewayOpts) => void | Promise<void>;\n\nexport interface GatewayResult {\n ok: boolean;\n data?: unknown;\n error?: { code: string; message: string };\n}\n\ninterface RuntimeLogger {\n debug: (m: string) => void;\n info: (m: string) => void;\n warn: (m: string) => void;\n error: (m: string) => void;\n}\n\nexport class StandaloneRuntime {\n readonly httpRoutes = new Map<string, HttpRouteSpec>();\n readonly gatewayMethods = new Map<string, GatewayHandler>();\n readonly services: string[] = [];\n\n constructor(\n readonly logger: RuntimeLogger,\n readonly pluginConfig: Record<string, unknown>,\n private readonly stateDir: string,\n ) {}\n\n /** runtime.state.resolveStateDir —— 兼容插件读 stateDir 的用法。 */\n readonly runtime = {\n state: {\n resolveStateDir: (): string => this.stateDir,\n },\n };\n\n registerHttpRoute(spec: HttpRouteSpec): void {\n this.httpRoutes.set(spec.path, spec);\n }\n\n registerGatewayMethod(method: string, handler: GatewayHandler): void {\n this.gatewayMethods.set(method, handler);\n }\n\n // ── CLI 形态下的 no-op(PRD「兼容性 shim」)──\n registerService(name: string): void {\n this.services.push(typeof name === \"string\" ? name : \"service\");\n }\n registerCli(): void {\n /* CLI 模式不复用插件 CLI 注册 */\n }\n registerTool(): void {\n /* CLI 不开 MCP,Agent 走 Skill + 直接调命令 */\n }\n on(): void {\n /* before_prompt_build 等宿主事件在 CLI 模式不参与 */\n }\n\n /** 调用一个 gateway 方法,把 respond 收敛成 Promise<GatewayResult>。 */\n callGateway(\n method: string,\n params: unknown,\n context?: IngestContext,\n ): Promise<GatewayResult> {\n const handler = this.gatewayMethods.get(method);\n if (!handler) {\n return Promise.resolve({\n ok: false,\n error: { code: \"METHOD_NOT_FOUND\", message: `未注册的 gateway 方法:${method}` },\n });\n }\n return new Promise<GatewayResult>((resolve) => {\n let settled = false;\n const respond: GatewayRespond = (ok, data, error) => {\n if (settled) return;\n settled = true;\n resolve({ ok, data, error });\n };\n Promise.resolve(runWithIngestContext(context, () => handler({ params, respond, context }))).catch((err) => {\n if (!settled) {\n settled = true;\n resolve({\n ok: false,\n error: { code: \"INTERNAL_ERROR\", message: (err as Error).message },\n });\n }\n });\n });\n }\n}\n",
|
|
83
|
+
"/**\n * 图片下发通道 —— 与录音链路同构:先落元数据 + respond(true),再后台从 OSS 下载本体。\n *\n * 入口:daemon 的 HTTP `POST /images` 与 gateway `images.sync` 都调用 ingestImage。\n * 复刻录音的同步状态机:syncing → synced / sync_failed;imageId 幂等去重。\n */\nimport { createWriteStream, existsSync, readFileSync } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { join } from \"node:path\";\nimport { ensureDir, writeJsonFile } from \"../fs-utils.js\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { currentClientLabel } from \"../shared.js\";\nimport {\n imagesIndexPath,\n type ImageIndexEntry,\n type ImageMetadata,\n} from \"./storage.js\";\n\nexport interface ImageSyncPayload {\n imageId: string;\n image: ImageMetadata;\n}\n\ninterface ChannelLogger {\n info: (m: string) => void;\n warn: (m: string) => void;\n}\n\nfunction readAll(paths: ProfilePaths): ImageIndexEntry[] {\n const p = imagesIndexPath(paths);\n if (!existsSync(p)) return [];\n try {\n const raw = JSON.parse(readFileSync(p, \"utf-8\"));\n return Array.isArray(raw?.images) ? raw.images : [];\n } catch {\n return [];\n }\n}\n\nfunction writeAll(paths: ProfilePaths, images: ImageIndexEntry[]): void {\n ensureDir(paths.images);\n writeJsonFile(imagesIndexPath(paths), { images });\n}\n\nfunction upsert(paths: ProfilePaths, entry: ImageIndexEntry): void {\n const images = readAll(paths);\n const idx = images.findIndex((i) => i.imageId === entry.imageId);\n if (idx >= 0) images[idx] = entry;\n else images.push(entry);\n writeAll(paths, images);\n}\n\nfunction extFromMime(mime?: string): string {\n if (!mime) return \"jpg\";\n if (mime.includes(\"png\")) return \"png\";\n if (mime.includes(\"webp\")) return \"webp\";\n if (mime.includes(\"gif\")) return \"gif\";\n return \"jpg\";\n}\n\nexport interface IngestImageResult {\n ok: boolean;\n imageId: string;\n status: ImageIndexEntry[\"status\"];\n deduped?: boolean;\n}\n\n/**\n * 接收图片下发:校验必填 → 落 syncing 元数据 → 后台下载(fire-and-forget)。\n * 幂等:imageId 已存在且 oss_image_url 未变化则跳过重复下载。\n */\nexport function ingestImage(\n paths: ProfilePaths,\n payload: ImageSyncPayload,\n opts: { maxBytes: number; logger: ChannelLogger },\n): IngestImageResult {\n const { imageId, image } = payload;\n if (!imageId || !image?.oss_image_url || !image?.created_at) {\n throw new Error(\"imageId / image.oss_image_url / image.created_at 必填\");\n }\n\n const existing = readAll(paths).find((i) => i.imageId === imageId);\n if (existing && existing.metadata.oss_image_url === image.oss_image_url && existing.status === \"synced\") {\n return { ok: true, imageId, status: \"synced\", deduped: true };\n }\n\n const entry: ImageIndexEntry = {\n imageId,\n clientLabel: currentClientLabel(\"default\"),\n metadata: image,\n localFile: null,\n thumbnail: null,\n status: \"syncing\",\n lastError: null,\n syncedAt: null,\n };\n upsert(paths, entry);\n\n void downloadInBackground(paths, entry, opts).catch((err) => {\n opts.logger.warn(`image[${imageId}] 后台下载异常:${(err as Error).message}`);\n });\n\n return { ok: true, imageId, status: \"syncing\" };\n}\n\nasync function downloadInBackground(\n paths: ProfilePaths,\n entry: ImageIndexEntry,\n opts: { maxBytes: number; logger: ChannelLogger },\n): Promise<void> {\n const filesDir = join(paths.images, \"files\");\n ensureDir(filesDir);\n const relative = `files/${entry.imageId}.${extFromMime(entry.metadata.mime_type)}`;\n const dest = join(paths.images, relative);\n\n try {\n const res = await fetch(entry.metadata.oss_image_url);\n if (!res.ok || !res.body) {\n throw new Error(`OSS 返回 ${res.status}`);\n }\n const declared = Number(res.headers.get(\"content-length\") ?? \"0\");\n if (declared && declared > opts.maxBytes) {\n throw new Error(`图片超过上限 ${opts.maxBytes} 字节`);\n }\n\n let written = 0;\n const fileStream = createWriteStream(dest);\n const reader = Readable.fromWeb(res.body as never);\n for await (const chunk of reader) {\n written += (chunk as Buffer).length;\n if (written > opts.maxBytes) {\n fileStream.destroy();\n throw new Error(`图片超过上限 ${opts.maxBytes} 字节`);\n }\n fileStream.write(chunk);\n }\n await new Promise<void>((resolve, reject) => {\n fileStream.end((err?: Error | null) => (err ? reject(err) : resolve()));\n });\n\n upsert(paths, {\n ...entry,\n localFile: relative,\n status: \"synced\",\n lastError: null,\n syncedAt: new Date().toISOString(),\n });\n opts.logger.info(`image[${entry.imageId}] 下载完成 (${written} bytes)`);\n } catch (err) {\n upsert(paths, {\n ...entry,\n status: \"sync_failed\",\n lastError: (err as Error).message,\n });\n opts.logger.warn(`image[${entry.imageId}] 下载失败:${(err as Error).message}`);\n }\n}\n",
|
|
84
|
+
"/**\n * 图片本地存储读取(images/index.json)。\n *\n * 元数据与同步状态机由 daemon 的图片通道写入(见 PRD「图片通道」);\n * CLI 的 image 查询命令纯读这里,不需要 daemon 在跑。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { isAbsolute, join } from \"node:path\";\nimport type { ProfilePaths } from \"../paths.js\";\n\nexport type ImageSyncStatus = \"syncing\" | \"synced\" | \"sync_failed\";\n\nexport interface ImageMetadata {\n oss_image_url: string;\n created_at: string;\n mime_type?: string;\n width?: number;\n height?: number;\n size_bytes?: number;\n source_app?: string;\n caption?: string;\n}\n\nexport interface ImageIndexEntry {\n imageId: string;\n /** 来源客户端 label;旧数据无该字段,查询时视为 legacy */\n clientLabel?: string;\n metadata: ImageMetadata;\n /** 相对 images/ 的本地路径,如 files/img_xxx.jpg。 */\n localFile?: string | null;\n thumbnail?: string | null;\n status: ImageSyncStatus;\n lastError?: string | null;\n syncedAt?: string | null;\n}\n\nexport function imagesIndexPath(paths: ProfilePaths): string {\n return join(paths.images, \"index.json\");\n}\n\n/** 读取图片索引;目录/文件不存在返回空数组。 */\nexport function readImageIndex(paths: ProfilePaths): ImageIndexEntry[] {\n const indexPath = imagesIndexPath(paths);\n if (!existsSync(indexPath)) return [];\n try {\n const raw = JSON.parse(readFileSync(indexPath, \"utf-8\"));\n return Array.isArray(raw?.images) ? raw.images : [];\n } catch {\n return [];\n }\n}\n\n/** 把索引里的相对路径解析为绝对路径。 */\nexport function resolveImageFile(\n paths: ProfilePaths,\n relative: string,\n): string {\n return isAbsolute(relative) ? relative : join(paths.images, relative);\n}\n",
|
|
85
|
+
"/**\n * 监控任务定义存储(state/monitors.json)。\n *\n * 本 build 负责定义的 CRUD 与启用状态;cron 实时触发为后续迭代(daemon 当前只持久化定义)。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { ensureDir, writeJsonFile } from \"../fs-utils.js\";\n\nexport interface MonitorTask {\n name: string;\n description: string;\n matchRules: unknown;\n schedule: string;\n enabled: boolean;\n createdAt: string;\n updatedAt: string;\n lastRunAt: string | null;\n lastResult: unknown;\n}\n\nexport interface CreateMonitorInput {\n name: string;\n description: string;\n matchRules: unknown;\n schedule: string;\n}\n\nfunction storePath(paths: ProfilePaths): string {\n return join(paths.state, \"monitors.json\");\n}\n\nexport function listMonitors(paths: ProfilePaths): MonitorTask[] {\n const p = storePath(paths);\n if (!existsSync(p)) return [];\n try {\n const raw = JSON.parse(readFileSync(p, \"utf-8\"));\n return Array.isArray(raw?.monitors) ? raw.monitors : [];\n } catch {\n return [];\n }\n}\n\nfunction save(paths: ProfilePaths, monitors: MonitorTask[]): void {\n ensureDir(paths.state);\n writeJsonFile(storePath(paths), { monitors });\n}\n\nexport function createMonitor(paths: ProfilePaths, input: CreateMonitorInput): MonitorTask {\n if (!input.name || !input.description || !input.schedule || input.matchRules === undefined) {\n throw new Error(\"name / description / matchRules / schedule 均必填\");\n }\n const monitors = listMonitors(paths);\n if (monitors.some((m) => m.name === input.name)) {\n throw new Error(`监控任务已存在:${input.name}`);\n }\n const now = new Date().toISOString();\n const task: MonitorTask = {\n name: input.name,\n description: input.description,\n matchRules: input.matchRules,\n schedule: input.schedule,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n lastRunAt: null,\n lastResult: null,\n };\n monitors.push(task);\n save(paths, monitors);\n return task;\n}\n\nexport function deleteMonitor(paths: ProfilePaths, name: string): boolean {\n const monitors = listMonitors(paths);\n const next = monitors.filter((m) => m.name !== name);\n if (next.length === monitors.length) return false;\n save(paths, next);\n return true;\n}\n\nexport function setMonitorEnabled(paths: ProfilePaths, name: string, enabled: boolean): boolean {\n const monitors = listMonitors(paths);\n const task = monitors.find((m) => m.name === name);\n if (!task) return false;\n task.enabled = enabled;\n task.updatedAt = new Date().toISOString();\n save(paths, monitors);\n return true;\n}\n\nexport function getMonitor(paths: ProfilePaths, name: string): MonitorTask | undefined {\n return listMonitors(paths).find((m) => m.name === name);\n}\n",
|
|
86
|
+
"/**\n * daemon /light/send 实际投递路径。\n *\n * 把 { segments | preset | rule } 解析成最终的 segments + repeat_times,再调\n * phone-notifications 的 sendLightEffect 走云 API(需要 LIGHT_APP_KEY /\n * LIGHT_TEMPLATE_ID 进程环境变量 + OPENCLAW_HOST_* 决定的 apiUrl)。\n *\n * 优先级:rule > preset > segments。用户显式传 --repeat / --repeat-times 时\n * 会覆盖 rule/preset 自带的 repeat_times。\n */\nimport {\n LIGHT_PRESETS_V1,\n sendLightEffect,\n validateSegments,\n normalizeRepeatTimes,\n assertAncsRepeatTimes,\n type LightSegment,\n type LightRuleRegistry,\n} from \"../shared.js\";\nimport { resolveApiKey } from \"../credentials/store.js\";\nimport type { DaemonLogger } from \"./logger.js\";\n\n/** 连通性测试用的 preset id(`+blink` shortcut 映射到这里)。 */\nexport const BLINK_PRESET_ID = \"red-strobe-3\";\n\nexport interface LightSendInput {\n segments?: unknown;\n preset?: string;\n rule?: string;\n repeat?: boolean;\n repeat_times?: number;\n}\n\nexport interface LightSendOutcome {\n ok: boolean;\n status: number;\n body: Record<string, unknown>;\n}\n\ninterface ResolvedSource {\n segments: LightSegment[];\n repeat_times: number;\n source: \"segments\" | \"preset\" | \"rule\";\n reason: string;\n title?: string;\n}\n\nexport async function performLightSend(\n input: LightSendInput,\n deps: { logger: DaemonLogger; registry: LightRuleRegistry },\n): Promise<LightSendOutcome> {\n let resolved: ResolvedSource;\n try {\n resolved = resolveSource(input, deps.registry);\n } catch (err) {\n return errorOutcome(400, \"INVALID_PARAMS\", (err as Error).message);\n }\n\n // 用户显式传 --repeat / --repeat-times 时覆盖 rule/preset 自带的值\n const overrideRepeat = input.repeat !== undefined || input.repeat_times !== undefined;\n let repeatTimes = resolved.repeat_times;\n if (overrideRepeat) {\n try {\n repeatTimes = normalizeRepeatTimes({\n repeat: input.repeat,\n repeat_times: input.repeat_times,\n });\n } catch (err) {\n return errorOutcome(400, \"VALIDATION_FAILED\", (err as Error).message);\n }\n }\n try {\n assertAncsRepeatTimes(repeatTimes);\n } catch (err) {\n return errorOutcome(400, \"VALIDATION_FAILED\", (err as Error).message);\n }\n\n const apiKey = resolveApiKey();\n if (!apiKey.value) {\n return errorOutcome(\n 401,\n \"AUTH_REQUIRED\",\n \"未配置 api-key,运行 `yoooclaw auth set-api-key <ock_…>`\",\n );\n }\n\n deps.logger.info(\n `/light/send 解析完成 source=${resolved.source} reason=${resolved.reason} ` +\n `segments=${resolved.segments.length} repeat_times=${repeatTimes}`,\n );\n\n const result = await sendLightEffect(\n apiKey.value,\n resolved.segments,\n deps.logger,\n { repeat_times: repeatTimes },\n resolved.reason,\n resolved.title,\n );\n\n if (!result.ok) {\n return errorOutcome(\n result.status ?? 502,\n \"LIGHT_SEND_FAILED\",\n result.error ?? \"灯效投递失败\",\n );\n }\n\n return {\n ok: true,\n status: 200,\n body: {\n ok: true,\n accepted: true,\n delivered: true,\n source: resolved.source,\n bizUniqueId: result.bizUniqueId,\n segments: resolved.segments,\n repeat_times: repeatTimes,\n response: result.response,\n },\n };\n}\n\nfunction resolveSource(\n input: LightSendInput,\n registry: LightRuleRegistry,\n): ResolvedSource {\n if (input.rule) {\n const meta = registry.get(input.rule);\n if (!meta) throw new Error(`规则不存在:${input.rule}`);\n return {\n segments: meta.segments,\n repeat_times: meta.repeat_times,\n source: \"rule\",\n reason: `rule:${meta.name}`,\n title: meta.title,\n };\n }\n\n if (input.preset) {\n const preset = LIGHT_PRESETS_V1.presets.find((p) => p.presetId === input.preset);\n if (!preset) {\n const available = LIGHT_PRESETS_V1.presets.map((p) => p.presetId).join(\", \");\n throw new Error(`未知 preset:${input.preset}(可用:${available})`);\n }\n return {\n segments: preset.segments,\n repeat_times: preset.repeat_times,\n source: \"preset\",\n reason: `preset:${preset.presetId}`,\n title: preset.displayName,\n };\n }\n\n if (input.segments !== undefined) {\n const validation = validateSegments(input.segments);\n if (!validation.valid) {\n throw new Error(JSON.stringify(validation.errors));\n }\n return {\n segments: validation.segments,\n repeat_times: 1,\n source: \"segments\",\n reason: \"manual\",\n };\n }\n\n throw new Error(\"需要 segments / preset / rule 之一\");\n}\n\nfunction errorOutcome(status: number, code: string, message: string): LightSendOutcome {\n return {\n ok: false,\n status,\n body: { ok: false, error: { code, message } },\n };\n}\n",
|
|
87
|
+
"/**\n * RecordingEventLog —— 录音状态事件 append-only JSONL 日志。\n *\n * 落 ~/.yoooclaw/profiles/<profile>/recordings/state/events.jsonl,每行一个 JSON:\n * { ts: ISO8601, recordingId, transfer_status, audioFile?, transcriptFile?, summary?, error? }\n *\n * 设计取舍:\n * - daemon 没有面向客户端的广播通道,handler 内部状态机变化通过 notifyStatus 回调对外暴露;\n * 把它落成 JSONL 是最简单的「可观察」方案,CLI / Agent / tail -f 都能消费。\n * - 不做轮转 / 不做大小上限:一条录音事件几条,文件很小;轮转策略等真有量再说。\n */\nimport { appendFileSync, existsSync, mkdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { RecordingStatusEvent } from \"../shared.js\";\n\nexport interface RecordingEventRecord extends RecordingStatusEvent {\n ts: string;\n}\n\nexport class RecordingEventLog {\n readonly path: string;\n\n constructor(recordingsDir: string) {\n this.path = join(recordingsDir, \"state\", \"events.jsonl\");\n mkdirSync(dirname(this.path), { recursive: true });\n }\n\n append(event: RecordingStatusEvent): void {\n const record: RecordingEventRecord = { ts: new Date().toISOString(), ...event };\n appendFileSync(this.path, JSON.stringify(record) + \"\\n\", \"utf-8\");\n }\n\n /** 读取全部事件(按追加顺序)。文件不存在返回空数组。 */\n readAll(): RecordingEventRecord[] {\n if (!existsSync(this.path)) return [];\n const raw = readFileSync(this.path, \"utf-8\");\n const out: RecordingEventRecord[] = [];\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n try {\n out.push(JSON.parse(trimmed) as RecordingEventRecord);\n } catch {\n // 忽略损坏行(理论上 append-only 不应该出现)\n }\n }\n return out;\n }\n}\n",
|
|
88
|
+
"/**\n * daemon 录音桥 —— CLI 独立形态下的 recordings.sync 实现。\n *\n * 为什么不直接用插件 registerRecordingInterfaces 里注册的 sync:\n * - 插件版 sync 要求 caller(手机端)每次把 asr 配置随 params 一起带上来;\n * - CLI 形态下 ASR 配置由 `yc recording setup-asr` 一次性写到 ~/.yoooclaw/<p>/recordings/asr-config.json,\n * 手机端不一定会带 asr —— 没带就要 fallback 读本地配置;\n * - 同时 mode=api 时若用户没填 apiKey,要回退到 account 级 ock- key(resolveApiKey)。\n *\n * 用法:daemon main.ts 先调 registerRecordingInterfaces 装上 list/status/rename/... 一类查询/管理方法,\n * 再调本模块 `overrideRecordingSync` 覆盖 sync 这一项(runtime.gatewayMethods 是 Map,后写覆盖)。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport {\n handleRecordingSync,\n RecordingStorage,\n validateAsrConfig,\n type AsrConfig,\n type RecordingMetadata,\n type RecordingStatusEvent,\n} from \"../shared.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport type { DaemonLogger } from \"./logger.js\";\n\nexport interface RecordingSyncDeps {\n runtime: StandaloneRuntime;\n storage: RecordingStorage;\n logger: DaemonLogger;\n /** account 级 ock- key(mode=api 且未指定 apiKey 时回退) */\n fallbackApiKey?: string | (() => string | undefined);\n /** asr-config.json 所在目录(= ctx.paths.recordings) */\n asrConfigDir: string;\n /** 状态机变化时的回调(写日志 + 落 events.jsonl) */\n notifyStatus: (event: RecordingStatusEvent) => void;\n}\n\ninterface SyncParams {\n recordingId?: unknown;\n recording?: RecordingMetadata;\n asr?: AsrConfig;\n}\n\nconst ASR_CONFIG_FILE = \"asr-config.json\";\n\nfunction trimToString(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\n/** 从 asr-config.json 读 AsrConfig;不存在 / 损坏返回 undefined。 */\nexport function loadLocalAsrConfig(asrConfigDir: string): AsrConfig | undefined {\n const path = join(asrConfigDir, ASR_CONFIG_FILE);\n if (!existsSync(path)) return undefined;\n try {\n const raw = JSON.parse(readFileSync(path, \"utf-8\")) as AsrConfig;\n return raw;\n } catch {\n return undefined;\n }\n}\n\n/**\n * 合并 caller 传入的 asr 与本地 fallback:\n * - 优先用 caller 的;\n * - 没传则用本地;\n * - mode=api 且最终 apiKey 仍为空时,用 account 级 fallback。\n */\nexport function resolveAsrConfig(\n callerAsr: AsrConfig | undefined,\n localAsr: AsrConfig | undefined,\n fallbackApiKey?: string,\n): AsrConfig | undefined {\n const chosen = callerAsr ?? localAsr;\n if (!chosen) return undefined;\n if (chosen.mode !== \"api\") return chosen;\n const apiKey = chosen.api?.apiKey ?? fallbackApiKey;\n if (!apiKey) return chosen;\n return { ...chosen, api: { ...(chosen.api ?? {}), apiKey } };\n}\n\n/**\n * 进入「稳定/终态」即认为一轮 sync 流程已结束,可解除 in-flight 标记并清理 lastError 残留。\n * - synced:sync 阶段成功(如果没有 ASR 也就停在这里)\n * - transcribed:ASR 成功(终态)\n * - transcribe_failed / sync_failed:失败终态\n */\nconst TERMINAL_STATUSES = new Set<string>([\n \"synced\",\n \"transcribed\",\n \"transcribe_failed\",\n \"sync_failed\",\n]);\n/** 仅这两个算「最终成功态」—— 终态时若 lastError 还残留是无用噪音,清掉。 */\nconst TERMINAL_SUCCESS_STATUSES = new Set<string>([\"synced\", \"transcribed\"]);\n/** 单条 in-flight 的兜底超时:5 分钟内若没收到终态事件,强制释放(避免句柄泄漏)。 */\nconst INFLIGHT_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** 覆盖注册 recordings.sync gateway + POST /recordings HTTP。 */\nexport function overrideRecordingSync(deps: RecordingSyncDeps): void {\n const { runtime, storage, logger, fallbackApiKey, asrConfigDir, notifyStatus } = deps;\n const readFallbackApiKey = (): string | undefined =>\n typeof fallbackApiKey === \"function\" ? fallbackApiKey() : fallbackApiKey;\n\n /**\n * 同一 recordingId 在 sync→ASR 全流程中只允许一次 background 跑:\n * 手机端在 OSS 上传过程中常常会以秒级间隔重推同一条 sync,phone-notifications 的 handler 不去重,\n * 两条并行的 runRecordingSyncInBackground 会撞状态机(transcribing → synced 非法)。\n * daemon 层加 in-flight 标记后,第二条直接 short-circuit,仅返回当前 storage 状态。\n */\n const inFlight = new Map<string, NodeJS.Timeout>();\n\n function markInFlight(recordingId: string): void {\n clearTimeout(inFlight.get(recordingId));\n inFlight.set(\n recordingId,\n setTimeout(() => inFlight.delete(recordingId), INFLIGHT_TIMEOUT_MS),\n );\n }\n\n function releaseInFlight(recordingId: string): void {\n const t = inFlight.get(recordingId);\n if (t) {\n clearTimeout(t);\n inFlight.delete(recordingId);\n }\n }\n\n const wrappedNotifyStatus = (event: RecordingStatusEvent): void => {\n notifyStatus(event);\n if (!TERMINAL_STATUSES.has(event.transfer_status)) return;\n releaseInFlight(event.recordingId);\n // 终态成功(synced / transcribed)+ storage lastError 还在 → 清理。\n // 注意:不能用 event.error 做条件,因为 event.error 正是从 storage.lastError 拼出来的,\n // 互为因果。直接看 storage 现状即可。\n if (TERMINAL_SUCCESS_STATUSES.has(event.transfer_status)) {\n const entry = storage.findById(event.recordingId);\n if (entry?.lastError) {\n try {\n storage.setLastError(event.recordingId);\n logger.info(`[recording-sync] 终态 ${event.transfer_status} 清理 lastError 残留: ${event.recordingId}`);\n } catch (err) {\n logger.warn(`[recording-sync] 清理 lastError 失败: ${(err as Error).message}`);\n }\n }\n }\n };\n\n async function doSync(params: SyncParams): Promise<\n | { ok: true; data: Awaited<ReturnType<typeof handleRecordingSync>> }\n | { ok: false; code: string; message: string }\n > {\n const recordingId = trimToString(params.recordingId);\n if (!recordingId) {\n return { ok: false, code: \"INVALID_PARAMS\", message: \"recordingId is required\" };\n }\n const recording = params.recording;\n if (!recording || !recording.oss_audio_url || !recording.created_at) {\n return {\n ok: false,\n code: \"INVALID_PARAMS\",\n message: \"recording with oss_audio_url and created_at is required\",\n };\n }\n if (params.asr) {\n const err = validateAsrConfig(params.asr);\n if (err) return { ok: false, code: \"INVALID_PARAMS\", message: err };\n }\n\n // in-flight 去重:手机重推时直接 short-circuit,返回当前 storage 状态\n if (inFlight.has(recordingId)) {\n const entry = storage.findById(recordingId);\n logger.info(\n `[recording-sync] in-flight 跳过重复 sync: ${recordingId}(当前 ${entry?.status ?? \"unknown\"})`,\n );\n return {\n ok: true,\n data: {\n ok: true,\n recordingId,\n transfer_status: entry?.status ?? \"syncing_openclaw\",\n },\n };\n }\n\n const localAsr = loadLocalAsrConfig(asrConfigDir);\n const asr = resolveAsrConfig(params.asr, localAsr, readFallbackApiKey());\n if (asr && !params.asr) {\n logger.info(\n `[recording-sync] 使用本地 asr-config.json(mode=${asr.mode}${\n asr.mode === \"api\" && asr.api?.apiKey ? \", key=ock-***\" : \"\"\n })`,\n );\n }\n\n markInFlight(recordingId);\n const result = await handleRecordingSync(\n recordingId,\n recording,\n storage,\n asr,\n logger,\n { notifyStatus: wrappedNotifyStatus },\n );\n return { ok: true, data: result };\n }\n\n runtime.registerGatewayMethod(\"recordings.sync\", async ({ params, respond }) => {\n const outcome = await doSync((params ?? {}) as SyncParams);\n if (outcome.ok) {\n respond(outcome.data.ok, outcome.data, outcome.data.ok ? undefined : {\n code: \"SYNC_FAILED\",\n message: outcome.data.error ?? \"Unknown error\",\n });\n } else {\n respond(false, null, { code: outcome.code, message: outcome.message });\n }\n });\n\n runtime.registerHttpRoute({\n path: \"/recordings\",\n auth: \"gateway\",\n async handler(req: IncomingMessage, res: ServerResponse) {\n if (req.method !== \"POST\") {\n res.writeHead(405, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Method Not Allowed\" }));\n return;\n }\n const body = await readJsonBody(req);\n if (body === undefined) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Invalid JSON\" }));\n return;\n }\n const outcome = await doSync(body as SyncParams);\n if (outcome.ok) {\n res.writeHead(outcome.data.ok ? 200 : 500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(outcome.data));\n } else {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: outcome.message }));\n }\n },\n });\n\n logger.info(\"daemon 已覆盖 recordings.sync + POST /recordings(注入本地 ASR 配置)\");\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown | undefined> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(chunk as Buffer);\n const raw = Buffer.concat(chunks).toString(\"utf-8\");\n if (!raw) return {};\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n}\n",
|
|
89
|
+
"import type { StandaloneRuntime } from \"./runtime.js\";\n\nexport interface RelayStatusSnapshot {\n mode: \"relay\" | \"standalone-http\";\n connected: boolean;\n url: string;\n enabled: boolean;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n note?: string;\n}\n\nexport interface DaemonGatewayCompatOptions {\n version: string;\n protocol: number;\n capabilities: string[];\n profile: string;\n bind: string;\n getPort: () => number;\n startedAt: string;\n getLastIngestAt: () => string | null;\n getIngestCount: () => number;\n getLightRuleCount: () => number;\n getRelayStatus: () => RelayStatusSnapshot;\n}\n\nfunction gatewayMethods(runtime: StandaloneRuntime): string[] {\n return [...runtime.gatewayMethods.keys()].sort();\n}\n\nfunction buildHealthPayload(\n runtime: StandaloneRuntime,\n opts: DaemonGatewayCompatOptions,\n): Record<string, unknown> {\n const relay = opts.getRelayStatus();\n return {\n status: \"ok\",\n healthy: true,\n server: \"yoooclaw\",\n version: opts.version,\n protocol: opts.protocol,\n capabilities: opts.capabilities,\n profile: opts.profile,\n bind: opts.bind,\n port: opts.getPort(),\n startedAt: opts.startedAt,\n lastIngestAt: opts.getLastIngestAt(),\n ingestCount: opts.getIngestCount(),\n lightRules: opts.getLightRuleCount(),\n relay,\n features: {\n methods: gatewayMethods(runtime),\n capabilities: opts.capabilities,\n },\n };\n}\n\nfunction buildChannelsPayload(opts: DaemonGatewayCompatOptions): Record<string, unknown> {\n const relay = opts.getRelayStatus();\n const account = {\n id: `yoooclaw.daemon/${opts.profile}`,\n channel: \"yoooclaw.daemon\",\n accountId: opts.profile,\n label: `YoooClaw daemon (${opts.profile})`,\n enabled: true,\n running: true,\n connected: relay.connected,\n mode: relay.mode,\n url: relay.url,\n reconnectAttempt: relay.reconnectAttempt,\n lastError: relay.lastDisconnectReason ?? relay.note,\n };\n\n return {\n channelOrder: [\"yoooclaw.daemon\"],\n channelMeta: [\n {\n id: \"yoooclaw.daemon\",\n label: \"YoooClaw daemon\",\n type: \"daemon\",\n },\n ],\n channels: [\n {\n id: \"yoooclaw.daemon\",\n label: \"YoooClaw daemon\",\n enabled: true,\n running: true,\n connected: relay.connected,\n accounts: [account],\n },\n ],\n accounts: [account],\n relay,\n };\n}\n\nfunction paramsRecord(params: unknown): Record<string, unknown> {\n return params && typeof params === \"object\"\n ? (params as Record<string, unknown>)\n : {};\n}\n\nexport function registerDaemonGatewayCompatMethods(\n runtime: StandaloneRuntime,\n opts: DaemonGatewayCompatOptions,\n): void {\n runtime.registerGatewayMethod(\"health\", async ({ respond }) => {\n respond(true, buildHealthPayload(runtime, opts));\n });\n\n runtime.registerGatewayMethod(\"channels.status\", async ({ respond }) => {\n respond(true, buildChannelsPayload(opts));\n });\n\n runtime.registerGatewayMethod(\"agents.list\", async ({ respond }) => {\n respond(true, { total: 0, agents: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"sessions.list\", async ({ respond }) => {\n respond(true, { total: 0, sessions: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"chat.history\", async ({ params, respond }) => {\n const sessionKey = paramsRecord(params).sessionKey;\n respond(true, {\n sessionKey: typeof sessionKey === \"string\" ? sessionKey : undefined,\n total: 0,\n messages: [],\n });\n });\n\n runtime.registerGatewayMethod(\"usage.cost\", async ({ respond }) => {\n respond(true, {\n totalCost: 0,\n cost: 0,\n currency: \"USD\",\n items: [],\n usage: [],\n });\n });\n\n runtime.registerGatewayMethod(\"cron.list\", async ({ respond }) => {\n respond(true, { total: 0, crons: [], tasks: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"wake\", async ({ respond }) => {\n respond(true, { ok: true, woken: true });\n });\n}\n",
|
|
90
|
+
"/**\n * RelayDispatcher —— CLI daemon 模式下的 Relay 帧分发器。\n *\n * 为什么不直接复用 phone-notifications/tunnel/proxy 的 TunnelProxy:\n * TunnelProxy 把每个 `req` 帧反代到「本地 OpenClaw 桌面端 gateway WebSocket」,依赖 OpenClaw 自带的\n * `connect.challenge` / `pairing` 协议;daemon 不实现那套,反代会 401 卡死。\n *\n * 本 dispatcher 的取舍:保留与插件**对外完全一致**的 Relay 协议(RelayClient 复用,frame schema 不变),\n * 但**绕过 OpenClaw gateway WS 这一层耦合**,直接把 `req` 帧同进程交给 `runtime.callGateway` 处理。\n * 手机端 / Relay 服务端对此完全无感知。\n *\n * 当前覆盖:\n * - `type: \"req\"` → callGateway → 回 `{type:\"res\", id, ok, payload?, error?}`\n * - `type: \"request\" / ws_*` → 暂不支持,回 proxy_error 或日志 warn(手机端目前只发 req)\n *\n * `pushEvent(event, payload)` —— daemon 主动反向推事件给手机端(recording.status 等)。\n */\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport {\n RELAY_INTERNAL_HTTP_HEADER,\n mapRelayHttpPath,\n type RelayClient,\n} from \"../shared.js\";\n\nexport const RELAY_INTERNAL_CLIENT_LABEL_HEADER = \"x-yoooclaw-internal-client-label\";\n\ninterface ReqFrame {\n type: \"req\";\n id: string;\n method: string;\n params?: Record<string, unknown>;\n}\n\ninterface RequestFrame {\n type: \"request\";\n id: string;\n method: string;\n path: string;\n headers?: Record<string, string>;\n body?: string;\n}\n\ninterface AnyFrame {\n type: string;\n id?: string;\n [k: string]: unknown;\n}\n\nexport interface RelayDispatcherDeps {\n client: RelayClient;\n runtime: StandaloneRuntime;\n logger: DaemonLogger;\n /**\n * 用于把 RequestFrame(HTTP-style,如 POST /notifications)loopback 到 daemon 自己的 HTTP server。\n * 这样能直接复用现成的路由实现(包括 authorized check、JSON 解析、ingest 逻辑),\n * 不必为每条 frame 重新 mock node:http 的 IncomingMessage/ServerResponse。\n */\n httpBaseUrl: string;\n /** loopback 时带的 gateway token;未设则不加 Authorization(daemon 默认放行无 token 模式)。 */\n httpToken?: string;\n /** 当前 Relay 隧道对应的 api-key label。 */\n clientLabel: string;\n}\n\nexport class RelayDispatcher {\n constructor(private readonly deps: RelayDispatcherDeps) {}\n\n /** 挂上 RelayClient 的 inbound 回调;幂等:重复调只会重新绑定(沿用 onInbound 的覆盖语义)。 */\n start(): void {\n this.deps.client.onInbound((frame) => {\n void this.handleFrame(frame as unknown as AnyFrame);\n });\n }\n\n private async handleFrame(frame: AnyFrame): Promise<void> {\n const { logger } = this.deps;\n switch (frame.type) {\n case \"req\":\n await this.handleReq(frame as unknown as ReqFrame);\n return;\n case \"request\":\n await this.handleRequest(frame as unknown as RequestFrame);\n return;\n case \"ws_open\":\n case \"ws_data\":\n case \"ws_close\":\n logger.warn(\n `[relay-dispatcher] 暂不支持 WS 子通道帧(type=${frame.type}, id=${frame.id ?? \"?\"})`,\n );\n return;\n default:\n logger.warn(`[relay-dispatcher] 未识别帧 type=${frame.type}`);\n }\n }\n\n private async handleRequest(frame: RequestFrame): Promise<void> {\n const { client, logger, httpBaseUrl, httpToken } = this.deps;\n const { id, method, path, headers: srcHeaders, body } = frame;\n const mappedPath = mapRelayHttpPath(path);\n const url = httpBaseUrl + (mappedPath.startsWith(\"/\") ? mappedPath : \"/\" + mappedPath);\n const headers: Record<string, string> = { ...srcHeaders };\n if (httpToken && !headers[\"authorization\"] && !headers[\"Authorization\"]) {\n headers[\"authorization\"] = `Bearer ${httpToken}`;\n }\n headers[RELAY_INTERNAL_HTTP_HEADER] = \"1\";\n headers[RELAY_INTERNAL_CLIENT_LABEL_HEADER] = this.deps.clientLabel;\n\n logger.info(\n `[relay-dispatcher] request id=${id} ${method} ${path} → ${mappedPath} loopback`,\n );\n\n let status = 502;\n let resHeaders: Record<string, string> = {};\n let resBody = \"\";\n try {\n const res = await fetch(url, { method, headers, body });\n status = res.status;\n resHeaders = Object.fromEntries(res.headers.entries());\n resBody = await res.text();\n } catch (err) {\n logger.error(`[relay-dispatcher] loopback 失败 id=${id} ${method} ${path}: ${(err as Error).message}`);\n client.sendRaw(\n JSON.stringify({\n type: \"proxy_error\",\n id,\n status: 502,\n message: `daemon loopback 失败: ${(err as Error).message}`,\n }),\n );\n return;\n }\n\n client.sendRaw(\n JSON.stringify({\n type: \"proxy_response\",\n id,\n status,\n headers: resHeaders,\n body: resBody,\n }),\n );\n }\n\n private async handleReq(frame: ReqFrame): Promise<void> {\n const { client, runtime, logger } = this.deps;\n const { id, method, params } = frame;\n logger.info(`[relay-dispatcher] req id=${id} method=${method}`);\n let ok = false;\n let payload: unknown;\n let error: { code: string; message: string } | undefined;\n try {\n const result = await runtime.callGateway(method, params, {\n clientLabel: this.deps.clientLabel,\n authKind: \"relay-api-key\",\n });\n ok = result.ok;\n payload = result.data;\n error = result.error;\n } catch (err) {\n ok = false;\n error = { code: \"INTERNAL_ERROR\", message: (err as Error).message };\n logger.error(`[relay-dispatcher] callGateway 异常: ${(err as Error).message}`);\n }\n // JSON.stringify 会跳过 value 为 undefined 的键,所以无需手动剔除\n client.sendRaw(JSON.stringify({ type: \"res\", id, ok, payload, error }));\n }\n\n /** daemon → 手机端反向推 Gateway event。 */\n pushEvent(event: string, payload: unknown): void {\n this.deps.client.sendRaw(JSON.stringify({ type: \"event\", event, payload }));\n }\n}\n",
|
|
91
|
+
"/**\n * Relay 隧道接入 —— daemon 模式专用。\n *\n * 与插件的差别(也是这次解耦的核心):\n * - **复用** RelayClient:连接、心跳、重连、frame 协议跟插件完全一致 —— 这部分本来就跟 OpenClaw 无关。\n * - **不复用** TunnelProxy:那玩意把每个 req 反代到 OpenClaw 桌面端的 gateway WS(含 connect.challenge /\n * pairing),daemon 不实现 OpenClaw 那套协议,反代会 401 卡死。\n * - 改用 RelayDispatcher:拿到 req 帧后直接同进程交给 runtime.callGateway 处理,再以 res 帧回写。\n *\n * 对手机端 / Relay 服务端完全透明:协议帧(req/res schema、心跳、认证)都不变,只是 daemon 内部「frame\n * 接到后怎么处理」从「反代给 OpenClaw gateway」换成「in-process dispatch」。\n *\n * 其他保持:api-key 走 CLI 的分层解析(env/keychain/共享文件),锁/状态文件落 profile 目录。\n */\nimport { join } from \"node:path\";\nimport { RelayClient } from \"../shared.js\";\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport { RelayDispatcher } from \"./relay-dispatcher.js\";\n\nconst DEFAULT_HEARTBEAT_SEC = 10;\nconst DEFAULT_RECONNECT_BACKOFF_MS = 2000;\n\nexport interface RelayTunnelOptions {\n /** api-key label,用于状态文件与日志。 */\n label: string;\n /** Relay Server WebSocket 地址(config.relay.url,默认插件生产地址)。 */\n tunnelUrl: string;\n /** account 级 api-key(CLI resolveApiKey 解析所得)。 */\n apiKey: string;\n /** daemon 的 gateway 路由表,gateway-RPC 帧(type:\"req\")in-process 派发用。 */\n runtime: StandaloneRuntime;\n /** daemon HTTP server base(http://127.0.0.1:port),HTTP-style frame(type:\"request\")loopback 用。 */\n httpBaseUrl: string;\n /** loopback 时带的 gateway token。 */\n httpToken?: string;\n heartbeatSec?: number;\n reconnectBackoffMs?: number;\n /** profile 目录,用于落隧道状态文件与设备身份。 */\n stateDir: string;\n logger: DaemonLogger;\n}\n\nexport interface RelayTunnelHandle {\n stop(reason: string): Promise<void>;\n status(): {\n connected: boolean;\n url: string;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n };\n /** 反向 push event 给手机端(取决于 Relay 服务端是否支持广播,预留接口)。 */\n pushEvent(event: string, payload: unknown): void;\n}\n\nfunction relayCredential(apiKey: string): { query: { apiKey: string } } {\n const raw = apiKey.startsWith(\"Bearer \") ? apiKey.slice(\"Bearer \".length) : apiKey;\n return { query: { apiKey: raw } };\n}\n\n/**\n * 启动 Relay 隧道。返回句柄用于查询状态 / 优雅停止 / 主动重连。\n * 非阻塞:connectWithAutoReconnect 在内部保持运行并自动重连。\n */\nexport function startRelayTunnel(opts: RelayTunnelOptions): RelayTunnelHandle {\n const { logger } = opts;\n const statusFilePath = join(opts.stateDir, \"state\", \"tunnels\", `${opts.label}.json`);\n\n let abortController = new AbortController();\n let connected = false;\n let reconnectAttempt = 0;\n let lastDisconnectReason: string | undefined;\n\n const client = new RelayClient({\n tunnelUrl: opts.tunnelUrl,\n credentialProvider: async () => relayCredential(opts.apiKey),\n heartbeatSec: opts.heartbeatSec ?? DEFAULT_HEARTBEAT_SEC,\n reconnectBackoffMs: opts.reconnectBackoffMs ?? DEFAULT_RECONNECT_BACKOFF_MS,\n statusFilePath,\n logger: {\n info: (m: string) => logger.info(`[tunnel:${opts.label}] ${m}`),\n warn: (m: string) => logger.warn(`[tunnel:${opts.label}] ${m}`),\n error: (m: string) => logger.error(`[tunnel:${opts.label}] ${m}`),\n },\n });\n\n const dispatcher = new RelayDispatcher({\n client,\n runtime: opts.runtime,\n logger,\n httpBaseUrl: opts.httpBaseUrl,\n httpToken: opts.httpToken,\n clientLabel: opts.label,\n });\n dispatcher.start();\n\n client.onConnected(() => {\n connected = true;\n lastDisconnectReason = undefined;\n });\n client.onDisconnected((reason) => {\n connected = false;\n reconnectAttempt += 1;\n lastDisconnectReason = reason;\n });\n\n const run = (): void => {\n client.connectWithAutoReconnect(abortController.signal).catch((err) => {\n logger.error(`Relay tunnel: 意外退出:${(err as Error).message}`);\n });\n };\n run();\n logger.info(`[tunnel:${opts.label}] Relay tunnel: 已启动(url=${opts.tunnelUrl} → in-process gateway dispatch)`);\n\n return {\n async stop(reason: string) {\n abortController.abort();\n await client.stop(reason);\n },\n status() {\n return {\n connected: connected || client.isConnected(),\n url: opts.tunnelUrl,\n reconnectAttempt,\n lastDisconnectReason,\n };\n },\n pushEvent(event: string, payload: unknown) {\n dispatcher.pushEvent(event, payload);\n },\n };\n}\n",
|
|
92
|
+
"import type { ApiKeyEntry, CredentialSet } from \"../credentials/store.js\";\nimport { startRelayTunnel, type RelayTunnelHandle } from \"./relay.js\";\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\n\nexport interface TunnelSupervisorOptions {\n tunnelUrl: string;\n runtime: StandaloneRuntime;\n httpBaseUrl: string;\n httpToken?: string;\n heartbeatSec?: number;\n reconnectBackoffMs?: number;\n stateDir: string;\n logger: DaemonLogger;\n}\n\ninterface ManagedTunnel {\n entry: ApiKeyEntry;\n handle: RelayTunnelHandle;\n}\n\nexport interface TunnelApplyResult {\n started: string[];\n stopped: string[];\n restarted: string[];\n unchanged: string[];\n}\n\nexport class TunnelSupervisor {\n private readonly tunnels = new Map<string, ManagedTunnel>();\n private defaultLabel: string | null = null;\n private mode: CredentialSet[\"mode\"] = \"none\";\n\n constructor(private readonly opts: TunnelSupervisorOptions) {}\n\n async apply(set: CredentialSet): Promise<TunnelApplyResult> {\n const started: string[] = [];\n const stopped: string[] = [];\n const restarted: string[] = [];\n const unchanged: string[] = [];\n const next = new Map(set.entries.map((entry) => [entry.label, entry]));\n\n for (const [label, managed] of this.tunnels) {\n const nextEntry = next.get(label);\n if (!nextEntry) {\n await managed.handle.stop(\"removed\");\n this.tunnels.delete(label);\n stopped.push(label);\n continue;\n }\n if (nextEntry.key !== managed.entry.key) {\n await managed.handle.stop(\"key-changed\");\n this.tunnels.set(label, { entry: nextEntry, handle: this.start(nextEntry) });\n restarted.push(label);\n } else {\n managed.entry = nextEntry;\n unchanged.push(label);\n }\n }\n\n for (const entry of set.entries) {\n if (this.tunnels.has(entry.label)) continue;\n this.tunnels.set(entry.label, { entry, handle: this.start(entry) });\n started.push(entry.label);\n }\n\n this.defaultLabel = set.defaultEntry?.label ?? null;\n this.mode = set.mode;\n return { started, stopped, restarted, unchanged };\n }\n\n async stopAll(reason: string): Promise<void> {\n const handles = [...this.tunnels.values()].map((managed) => managed.handle);\n this.tunnels.clear();\n await Promise.all(handles.map((handle) => handle.stop(reason).catch(() => undefined)));\n }\n\n async reconnect(label?: string): Promise<{ reconnected: string[]; missing?: string }> {\n const labels = label ? [label] : [...this.tunnels.keys()];\n const reconnected: string[] = [];\n for (const item of labels) {\n const managed = this.tunnels.get(item);\n if (!managed) return { reconnected, missing: item };\n await managed.handle.stop(\"manual-reconnect\").catch(() => undefined);\n this.tunnels.set(item, { entry: managed.entry, handle: this.start(managed.entry) });\n reconnected.push(item);\n }\n return { reconnected };\n }\n\n pushEvent(event: string, payload: unknown): void {\n for (const managed of this.tunnels.values()) {\n managed.handle.pushEvent(event, payload);\n }\n }\n\n status(): {\n mode: CredentialSet[\"mode\"];\n defaultLabel: string | null;\n tunnels: Array<{\n label: string;\n default: boolean;\n connected: boolean;\n url: string;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n }>;\n } {\n return {\n mode: this.mode,\n defaultLabel: this.defaultLabel,\n tunnels: [...this.tunnels.values()].map((managed) => {\n const status = managed.handle.status();\n return {\n label: managed.entry.label,\n default: managed.entry.label === this.defaultLabel,\n connected: status.connected,\n url: status.url,\n reconnectAttempt: status.reconnectAttempt,\n lastDisconnectReason: status.lastDisconnectReason,\n };\n }),\n };\n }\n\n defaultStatus() {\n const status = this.status();\n return status.tunnels.find((tunnel) => tunnel.label === status.defaultLabel) ?? status.tunnels[0];\n }\n\n private start(entry: ApiKeyEntry): RelayTunnelHandle {\n return startRelayTunnel({\n label: entry.label,\n tunnelUrl: this.opts.tunnelUrl,\n apiKey: entry.key,\n runtime: this.opts.runtime,\n httpBaseUrl: this.opts.httpBaseUrl,\n httpToken: this.opts.httpToken,\n heartbeatSec: this.opts.heartbeatSec,\n reconnectBackoffMs: this.opts.reconnectBackoffMs,\n stateDir: this.opts.stateDir,\n logger: this.opts.logger,\n });\n }\n}\n",
|
|
93
|
+
"/**\n * config service —— init / show / set / unset。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { readJsonFile, ensureDir } from \"../fs-utils.js\";\nimport { readStdin, ask, confirm, isInteractive } from \"../prompt.js\";\nimport {\n configExists,\n loadConfig,\n saveConfig,\n coerceConfigValue,\n deepMerge,\n getByPath,\n setByPath,\n unsetByPath,\n maskConfig,\n} from \"../config/store.js\";\nimport { defaultConfig, defaultEvaluator, type YoooclawConfig } from \"../config/schema.js\";\nimport { writeGatewayToken, generateToken, resolveApiKey, setApiKey } from \"../credentials/store.js\";\nimport { daemonStart } from \"./daemon.js\";\n\ninterface InitOpts {\n nonInteractive?: boolean;\n fromFile?: string;\n force?: boolean;\n start?: boolean; // commander:--no-start → false,跳过自动拉起 daemon\n}\n\n/** 手机端配置摘要 + 关键路径,作为 init 的返回结果。 */\nfunction phoneSummary(\n ctx: CliContext,\n config: YoooclawConfig,\n token: string,\n daemon: DaemonStartSummary,\n) {\n const apiKey = resolveApiKey();\n return {\n ok: true,\n profile: ctx.profile,\n daemon: {\n // bind/port 由 daemon 自管:默认绑回环,端口被占自动 +1,无需用户配置。\n bind: config.daemon.bind,\n port: config.daemon.port,\n localUrl: `http://${config.daemon.bind}:${config.daemon.port}`,\n started: daemon.started,\n pid: daemon.pid,\n },\n relay: {\n url: config.relay.url,\n enabled: config.relay.enabled,\n apiKeyPresent: Boolean(apiKey.value),\n },\n gatewayToken: token,\n configPath: ctx.paths.config,\n hint: initHint(daemon, Boolean(apiKey.value)),\n };\n}\n\n/** 按 daemon 是否拉起、是否已有 api-key 给出下一步提示。 */\nfunction initHint(daemon: DaemonStartSummary, apiKeyPresent: boolean): string {\n if (!daemon.started) {\n const reason = daemon.error ? `(自动启动失败:${daemon.error})` : \"\";\n return apiKeyPresent\n ? `配置已就绪${reason}:运行 yc daemon start 启动 daemon,连上 Relay 后手机 App 绑定同一账号即可收发`\n : `配置已就绪${reason}:运行 yc auth set-api-key <ock_…> 设置 Relay api-key,再 yc daemon start 启动 daemon`;\n }\n return apiKeyPresent\n ? \"已就绪:daemon 已启动并用 api-key 连上 Relay;手机 App 绑定同一账号即可收发\"\n : \"daemon 已启动,但 Relay 尚未设置 api-key:运行 yc auth set-api-key <ock_…> 后 yc daemon restart 即可连上 Relay\";\n}\n\nexport async function configInit(\n ctx: CliContext,\n _args: unknown[],\n opts: InitOpts,\n): Promise<unknown> {\n if (configExists(ctx.paths) && !opts.force) {\n throw new YoooclawError(\n \"YOOOCLAW_ALREADY_EXISTS\",\n `profile \\`${ctx.profile}\\` 已初始化`,\n { hint: \"加 --force 覆盖,或换一个 --profile\", checkedPaths: [ctx.paths.config] },\n );\n }\n\n ensureDir(ctx.paths.dir);\n let config = defaultConfig(ctx.paths.credentials);\n\n if (opts.nonInteractive || !isInteractive()) {\n if (!opts.fromFile) {\n throw new YoooclawError(\n \"YOOOCLAW_NOT_INTERACTIVE\",\n \"非交互模式必须提供 --from-file <config.json>(- 为 stdin)\",\n );\n }\n const raw = opts.fromFile === \"-\" ? await readStdin() : undefined;\n const imported = raw\n ? (JSON.parse(raw) as Partial<YoooclawConfig>)\n : readJsonFile<Partial<YoooclawConfig>>(opts.fromFile);\n if (!imported) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `无法读取配置文件:${opts.fromFile}`);\n }\n config = deepMerge(config, imported);\n config.version = defaultConfig(ctx.paths.credentials).version;\n } else {\n // daemon 监听地址/端口不再让用户配置:默认绑回环,端口被占时 daemon 启动会自动 +1。\n // relay 复用插件那套托管服务(config.relay.url 已是生产地址),用户只需提供 api-key。\n const existing = resolveApiKey();\n if (existing.value) {\n console.error(`已检测到 Relay api-key(来源 ${existing.source}),跳过设置`);\n } else {\n const key = (await ask(\"Relay api-key(ock_… ,留空可稍后 yc auth set-api-key 设置)\")).trim();\n if (key) setApiKey(key, false);\n }\n const enableEval = await confirm(\"启用灯效 webhook 评估器?\", false);\n if (enableEval) {\n const evaluator = defaultEvaluator(ctx.paths.credentials);\n evaluator.webhookUrl = await ask(\"评估器 webhook URL\");\n config.lightRules.evaluator = evaluator;\n }\n }\n\n // 生成并落 gateway token(按 config.auth.tokenRef,默认 per-profile credentials.json)\n const token = generateToken();\n saveConfig(ctx.paths, config);\n writeGatewayToken(config, token);\n\n // init 即用:直接把 daemon 拉起来,省去用户再单独跑一次 yc daemon start。\n // --no-start 可跳过(例如只想生成配置、稍后手动启动)。\n let daemon: DaemonStartSummary = { started: false };\n if (opts.start !== false) {\n daemon = await startDaemonForInit(ctx);\n }\n\n return phoneSummary(ctx, config, token, daemon);\n}\n\ninterface DaemonStartSummary {\n started: boolean;\n pid?: number;\n alreadyRunning?: boolean;\n error?: string;\n}\n\n/** init 收尾时拉起 daemon;失败不阻断 init(配置已落盘),把结果带回摘要由用户决定下一步。 */\nasync function startDaemonForInit(ctx: CliContext): Promise<DaemonStartSummary> {\n try {\n const res = (await daemonStart(ctx, [], {})) as { pid?: number };\n return { started: true, pid: res.pid };\n } catch (err) {\n if (err instanceof YoooclawError && err.code === \"YOOOCLAW_DAEMON_ALREADY_RUNNING\") {\n return { started: true, alreadyRunning: true, pid: err.details?.pid as number | undefined };\n }\n return { started: false, error: err instanceof Error ? err.message : String(err) };\n }\n}\n\ninterface ShowOpts {\n showSecrets?: boolean;\n}\n\nexport async function configShow(\n ctx: CliContext,\n _args: unknown[],\n opts: ShowOpts,\n): Promise<unknown> {\n if (!configExists(ctx.paths)) {\n throw new YoooclawError(\n \"YOOOCLAW_CONFIG_INVALID\",\n `profile \\`${ctx.profile}\\` 尚未初始化`,\n { hint: \"先运行 yoooclaw config init\", checkedPaths: [ctx.paths.config] },\n );\n }\n const config = loadConfig(ctx.paths);\n if (opts.showSecrets) {\n if (!isInteractive()) {\n throw new YoooclawError(\n \"YOOOCLAW_NOT_INTERACTIVE\",\n \"--show-secrets 需要在 TTY 中运行\",\n );\n }\n if (!(await confirm(\"确认明文输出敏感字段?\", false))) {\n throw new YoooclawError(\"YOOOCLAW_CONFIRMATION_REQUIRED\", \"已取消\");\n }\n return config;\n }\n return maskConfig(config);\n}\n\nexport function configSet(\n ctx: CliContext,\n args: unknown[],\n _opts: unknown,\n): unknown {\n const [key, value] = args as [string, string];\n if (key === \"version\") {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"version 字段不可修改\");\n }\n const config = loadConfig(ctx.paths) as unknown as Record<string, unknown>;\n setByPath(config, key, coerceConfigValue(key, value));\n saveConfig(ctx.paths, config as unknown as YoooclawConfig);\n return { ok: true, key, value: getByPath(config, key) };\n}\n\nexport function configUnset(\n ctx: CliContext,\n args: unknown[],\n _opts: unknown,\n): unknown {\n const [key] = args as [string];\n const config = loadConfig(ctx.paths) as unknown as Record<string, unknown>;\n const removed = unsetByPath(config, key);\n if (removed) saveConfig(ctx.paths, config as unknown as YoooclawConfig);\n return { ok: true, key, removed };\n}\n",
|
|
94
|
+
"/**\n * profile service —— list / use / create / delete。\n */\nimport { existsSync, rmSync } from \"node:fs\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { writeFileAtomic } from \"../fs-utils.js\";\nimport { confirm } from \"../prompt.js\";\nimport {\n DEFAULT_PROFILE,\n activeProfilePath,\n listProfileNames,\n profilePaths,\n readActiveProfile,\n} from \"../paths.js\";\nimport { configExists } from \"../config/store.js\";\nimport { configInit } from \"./config.js\";\n\nexport function profileList(ctx: CliContext): unknown {\n const active = readActiveProfile() ?? DEFAULT_PROFILE;\n const names = listProfileNames();\n // active / default 即便目录还没建出来也列出来,避免空列表误导\n for (const implied of [active, DEFAULT_PROFILE]) {\n if (!names.includes(implied)) names.push(implied);\n }\n return names\n .sort((a, b) => a.localeCompare(b))\n .map((name) => ({\n name,\n active: name === active,\n initialized: configExists(profilePaths(name)),\n }));\n}\n\nexport function profileUse(_ctx: CliContext, args: unknown[]): unknown {\n const [name] = args as [string];\n const paths = profilePaths(name);\n if (!existsSync(paths.dir)) {\n throw new YoooclawError(\n \"YOOOCLAW_PROFILE_NOT_FOUND\",\n `profile \\`${name}\\` 不存在`,\n { hint: \"用 yoooclaw profile create 新建\", checkedPaths: [paths.dir] },\n );\n }\n writeFileAtomic(activeProfilePath(), `${name}\\n`);\n return { ok: true, active: name };\n}\n\nexport async function profileCreate(\n ctx: CliContext,\n args: unknown[],\n opts: Record<string, unknown>,\n): Promise<unknown> {\n const [name] = args as [string];\n const paths = profilePaths(name);\n if (configExists(paths)) {\n throw new YoooclawError(\n \"YOOOCLAW_ALREADY_EXISTS\",\n `profile \\`${name}\\` 已存在`,\n );\n }\n // 在目标 profile 的上下文里跑 init 向导\n const subCtx: CliContext = { ...ctx, profile: name, paths };\n return configInit(subCtx, [], opts as never);\n}\n\nexport async function profileDelete(\n ctx: CliContext,\n args: unknown[],\n opts: { yes?: boolean },\n): Promise<unknown> {\n const [name] = args as [string];\n const active = readActiveProfile() ?? DEFAULT_PROFILE;\n if (name === active) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n `不能删除当前 active profile \\`${name}\\``,\n { hint: \"先 yoooclaw profile use <其他 profile> 再删除\" },\n );\n }\n const paths = profilePaths(name);\n if (!existsSync(paths.dir)) {\n throw new YoooclawError(\"YOOOCLAW_PROFILE_NOT_FOUND\", `profile \\`${name}\\` 不存在`);\n }\n if (!opts.yes && !(await confirm(`确认删除 profile \\`${name}\\` 及其全部数据?`, false))) {\n throw new YoooclawError(\"YOOOCLAW_CONFIRMATION_REQUIRED\", \"已取消\");\n }\n rmSync(paths.dir, { recursive: true, force: true });\n return { ok: true, deleted: name };\n}\n",
|
|
95
|
+
"/**\n * auth service —— set-api-key / status / token-rotate / check。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { readStdin } from \"../prompt.js\";\nimport { loadConfig, configExists } from \"../config/store.js\";\nimport {\n addApiKey,\n maskSecret,\n removeApiKey,\n resolveApiKey,\n resolveApiKeyEntries,\n setDefaultApiKey,\n setApiKey,\n resolveGatewayToken,\n writeGatewayToken,\n generateToken,\n} from \"../credentials/store.js\";\nimport { daemonState } from \"../daemon/lock.js\";\nimport { DaemonClient, assertDaemonRunning } from \"../daemon/client.js\";\n\nexport async function authSetApiKey(\n ctx: CliContext,\n args: unknown[],\n opts: { keychain?: boolean },\n): Promise<unknown> {\n let [key] = args as [string];\n if (key === \"-\") {\n key = (await readStdin()).trim();\n }\n if (!key) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"api-key 不能为空\");\n }\n const result = setApiKey(key, Boolean(opts.keychain));\n return {\n ok: true,\n source: result.source,\n location: result.location,\n label: result.label,\n masked: maskSecret(result.value),\n hint: \"插件 / CLI / daemon 共用同一份;daemon 在跑时会经文件 watch 热生效\",\n };\n}\n\ninterface ApiKeyCommandOpts {\n label?: string;\n default?: boolean;\n force?: boolean;\n}\n\nexport async function authAddApiKey(\n _ctx: CliContext,\n args: unknown[],\n opts: ApiKeyCommandOpts,\n): Promise<unknown> {\n let [key] = args as [string];\n if (key === \"-\") {\n key = (await readStdin()).trim();\n }\n if (!key) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"api-key 不能为空\");\n }\n if (!opts.label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--label 必填\");\n }\n const before = resolveApiKeyEntries();\n const result = addApiKey(key, opts.label, {\n makeDefault: Boolean(opts.default),\n force: Boolean(opts.force),\n });\n const after = resolveApiKeyEntries();\n return {\n ok: true,\n mode: after.mode,\n label: opts.label,\n default: after.defaultEntry?.label === opts.label,\n source: result.source,\n location: result.location,\n masked: maskSecret(key),\n shadowedKeychainPresent: after.shadowedKeychainPresent,\n migratedLegacyApiKey: before.mode === \"legacy-file-single\",\n hint: \"daemon 在跑时会经文件 watch 热生效;watch 不可靠时执行 yc daemon reload\",\n };\n}\n\nfunction entryToItem(entry: ReturnType<typeof resolveApiKeyEntries>[\"entries\"][number]) {\n return {\n label: entry.label,\n default: entry.default,\n source: entry.source,\n masked: maskSecret(entry.key),\n };\n}\n\nexport function authListApiKeys(): unknown {\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n location: set.location,\n legacyApiKeyPresent: set.legacyApiKeyPresent,\n shadowedKeychainPresent: set.shadowedKeychainPresent,\n warnings: set.warnings,\n items: set.entries.map(entryToItem),\n };\n}\n\nexport function authRemoveApiKey(\n _ctx: CliContext,\n args: unknown[],\n): unknown {\n const [label] = args as [string];\n if (!label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"label 不能为空\");\n }\n const outcome = removeApiKey(label);\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n removed: outcome.removed,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n newDefault: outcome.newDefault ?? null,\n remaining: set.entries.length,\n };\n}\n\nexport function authSetDefaultApiKey(\n _ctx: CliContext,\n args: unknown[],\n): unknown {\n const [label] = args as [string];\n if (!label) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"label 不能为空\");\n }\n const result = setDefaultApiKey(label);\n const set = resolveApiKeyEntries();\n return {\n ok: true,\n mode: set.mode,\n defaultLabel: set.defaultEntry?.label ?? null,\n source: result.source,\n location: result.location,\n };\n}\n\nexport function authStatus(ctx: CliContext): unknown {\n const apiKey = resolveApiKey();\n const apiKeys = resolveApiKeyEntries();\n const config = configExists(ctx.paths) ? loadConfig(ctx.paths) : undefined;\n const token = config ? resolveGatewayToken(config) : undefined;\n const state = daemonState(ctx.paths);\n return {\n ok: true,\n profile: ctx.profile,\n mode: apiKeys.mode,\n defaultLabel: apiKeys.defaultEntry?.label ?? null,\n apiKeys: apiKeys.entries.map(entryToItem),\n legacyApiKeyPresent: apiKeys.legacyApiKeyPresent,\n shadowedKeychainPresent: apiKeys.shadowedKeychainPresent,\n warnings: apiKeys.warnings,\n apiKey: {\n present: Boolean(apiKey.value),\n source: apiKey.source,\n location: apiKey.location,\n label: apiKey.label,\n masked: maskSecret(apiKey.value),\n },\n gatewayToken: {\n present: Boolean(token?.value),\n source: token?.source,\n location: token?.location,\n masked: maskSecret(token?.value),\n },\n daemon: {\n running: state.running,\n pid: state.lock?.pid,\n stale: state.stale,\n },\n };\n}\n\nexport function authTokenRotate(\n ctx: CliContext,\n _args: unknown[],\n opts: { length?: string },\n): unknown {\n if (!configExists(ctx.paths)) {\n throw new YoooclawError(\"YOOOCLAW_CONFIG_INVALID\", `profile \\`${ctx.profile}\\` 尚未初始化`, {\n hint: \"先运行 yoooclaw config init\",\n });\n }\n const config = loadConfig(ctx.paths);\n const bytes = opts.length ? Number(opts.length) : 32;\n if (!Number.isInteger(bytes) || bytes < 16) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--length 至少 16 字节\");\n }\n const token = generateToken(bytes);\n const written = writeGatewayToken(config, token);\n const state = daemonState(ctx.paths);\n // daemon 在跑时尝试热重载(best-effort,失败不影响 token 已写入)\n let hotReload: string;\n if (state.running) {\n hotReload = \"daemon 在运行:请执行 yoooclaw daemon restart 使新 token 生效\";\n } else {\n hotReload = \"daemon 未运行:下次启动即用新 token\";\n }\n return {\n ok: true,\n token,\n source: written.source,\n location: written.location,\n hint: hotReload,\n };\n}\n\nexport async function authCheck(ctx: CliContext): Promise<unknown> {\n assertDaemonRunning(ctx.paths);\n const client = new DaemonClient(ctx.paths);\n const res = await client.get(\"/daemon/status\");\n return {\n ok: res.status >= 200 && res.status < 300,\n profile: ctx.profile,\n daemonReachable: true,\n status: res.status,\n daemon: res.body,\n };\n}\n",
|
|
96
|
+
"/**\n * 通知查询 —— 复用 phone-notifications 共享的匹配/收集逻辑,CLI 侧负责参数解析与错误。\n */\nimport { existsSync } from \"node:fs\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport {\n collectMatchingNotifications,\n type NotificationQueryOptions,\n type StoredNotification,\n} from \"../shared.js\";\n\nconst ISO_RE =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2})$/;\n\nfunction parseIso(value: string, name: string): number {\n if (!ISO_RE.test(value)) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n `${name} 必须是 ISO 8601 时间,例如 2026-03-01T09:00:00+08:00`,\n );\n }\n const ts = Date.parse(value);\n if (Number.isNaN(ts)) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `${name} 不是合法时间`);\n }\n return ts;\n}\n\nfunction parseLimit(raw: string | undefined, fallback: number): number {\n if (raw === undefined) return fallback;\n if (!/^\\d+$/.test(raw) || Number(raw) <= 0) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--limit 必须是大于 0 的整数\");\n }\n return Number(raw);\n}\n\nexport interface RawQueryOpts {\n from?: string;\n to?: string;\n app?: string;\n sender?: string;\n conversationType?: string;\n keyword?: string;\n client?: string;\n limit?: string;\n}\n\nexport function buildQueryOptions(\n opts: RawQueryOpts,\n defaultLimit = 100,\n): NotificationQueryOptions {\n if (\n opts.conversationType &&\n opts.conversationType !== \"group\" &&\n opts.conversationType !== \"private\"\n ) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n \"--conversation-type 只能是 group 或 private\",\n );\n }\n const fromTs = opts.from ? parseIso(opts.from, \"--from\") : null;\n const toTs = opts.to ? parseIso(opts.to, \"--to\") : null;\n if (fromTs !== null && toTs !== null && fromTs > toTs) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--from 不能晚于 --to\");\n }\n return {\n from: opts.from,\n to: opts.to,\n app: opts.app,\n sender: opts.sender,\n conversationType: opts.conversationType,\n keyword: opts.keyword,\n client: opts.client,\n limit: parseLimit(opts.limit, defaultLimit),\n fromTs,\n toTs,\n fromDateKey: opts.from ? opts.from.slice(0, 10) : null,\n toDateKey: opts.to ? opts.to.slice(0, 10) : null,\n };\n}\n\n/** 收集匹配的通知;通知目录不存在时返回空数组(无 daemon / 尚无数据是正常态)。 */\nexport async function queryNotifications(\n paths: ProfilePaths,\n options: NotificationQueryOptions,\n): Promise<StoredNotification[]> {\n if (!existsSync(paths.notifications)) return [];\n return collectMatchingNotifications(paths.notifications, options);\n}\n",
|
|
83
97
|
"/**\n * notification service —— search / summary / stats / storage-path + shortcuts。\n * 全部纯读磁盘(🟢),不需要 daemon。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { buildQueryOptions, queryNotifications, type RawQueryOpts } from \"../notification/query.js\";\nimport type { NotificationQueryOptions } from \"../shared.js\";\nimport { daysAgo, today, formatDate } from \"../shared.js\";\nimport type { StoredNotification } from \"../shared.js\";\n\nconst MAX_LIMIT = Number.MAX_SAFE_INTEGER;\n\nexport async function notificationSearch(\n ctx: CliContext,\n _args: unknown[],\n opts: RawQueryOpts,\n): Promise<unknown> {\n const options = buildQueryOptions(opts);\n return queryNotifications(ctx.paths, options);\n}\n\ninterface SummaryOpts extends RawQueryOpts {\n sample?: string;\n top?: string;\n}\n\nfunction topCounts(\n items: StoredNotification[],\n pick: (n: StoredNotification) => string | undefined,\n topN: number,\n): Array<{ key: string; count: number }> {\n const counts = new Map<string, number>();\n for (const item of items) {\n const key = pick(item);\n if (!key) continue;\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return [...counts.entries()]\n .map(([key, count]) => ({ key, count }))\n .sort((a, b) => b.count - a.count || a.key.localeCompare(b.key))\n .slice(0, topN);\n}\n\nexport async function notificationSummary(\n ctx: CliContext,\n _args: unknown[],\n opts: SummaryOpts,\n): Promise<unknown> {\n const sample = opts.sample ? Number(opts.sample) : 30;\n const top = opts.top ? Number(opts.top) : 10;\n const options = buildQueryOptions({ ...opts, limit: String(MAX_LIMIT) }, MAX_LIMIT);\n const items = await queryNotifications(ctx.paths, options);\n return {\n ok: true,\n total: items.length,\n range: { from: opts.from ?? null, to: opts.to ?? null },\n topApps: topCounts(items, (n) => n.appDisplayName || n.appName, top),\n topSenders: topCounts(items, (n) => n.senderName || n.title, top),\n sample: items.slice(0, sample),\n };\n}\n\ninterface StatsOpts {\n from?: string;\n to?: string;\n app?: string;\n client?: string;\n dim?: string;\n}\n\nconst HOUR_KEY = (n: StoredNotification): string =>\n String(new Date(n.timestamp).getHours()).padStart(2, \"0\");\n\nexport async function notificationStats(\n ctx: CliContext,\n _args: unknown[],\n opts: StatsOpts,\n): Promise<unknown> {\n const from = opts.from ?? daysAgo(7);\n const to = opts.to ?? today();\n const dim = opts.dim ?? \"all\";\n const allowed = [\"date\", \"app\", \"sender\", \"hour\", \"client\", \"all\"];\n if (!allowed.includes(dim)) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `--dim 只能是 ${allowed.join(\"|\")}`);\n }\n const options: NotificationQueryOptions = {\n app: opts.app,\n client: opts.client,\n limit: MAX_LIMIT,\n fromTs: null,\n toTs: null,\n fromDateKey: from,\n toDateKey: to,\n };\n const items = await queryNotifications(ctx.paths, options);\n\n const byDate = topCounts(items, (n) => formatDate(new Date(n.timestamp)), MAX_LIMIT);\n const byApp = topCounts(items, (n) => n.appDisplayName || n.appName, MAX_LIMIT);\n const bySender = topCounts(items, (n) => n.senderName || n.title, MAX_LIMIT);\n const byHour = topCounts(items, HOUR_KEY, MAX_LIMIT);\n const byClient = topCounts(items, (n) => n.clientLabel ?? \"legacy\", MAX_LIMIT);\n\n const dims = { date: byDate, app: byApp, sender: bySender, hour: byHour, client: byClient };\n return {\n ok: true,\n total: items.length,\n range: { from, to },\n dim,\n ...(dim === \"all\" ? dims : { [dim]: dims[dim as keyof typeof dims] }),\n };\n}\n\nexport function notificationStoragePath(ctx: CliContext): unknown {\n return { ok: true, path: ctx.paths.notifications };\n}\n\nexport async function notificationToday(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string } = {},\n): Promise<unknown> {\n const day = today();\n const options = buildQueryOptions({\n from: `${day}T00:00:00${tzOffset()}`,\n to: `${day}T23:59:59${tzOffset()}`,\n client: opts.client,\n limit: String(MAX_LIMIT),\n }, MAX_LIMIT);\n return queryNotifications(ctx.paths, options);\n}\n\nexport async function notificationRecent(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string } = {},\n): Promise<unknown> {\n const fromTs = Date.now() - 60 * 60 * 1000;\n const options: NotificationQueryOptions = {\n limit: MAX_LIMIT,\n client: opts.client,\n fromTs,\n toTs: null,\n fromDateKey: formatDate(new Date(fromTs)),\n toDateKey: null,\n };\n return queryNotifications(ctx.paths, options);\n}\n\nexport function notificationUnread(): unknown {\n throw new YoooclawError(\n \"YOOOCLAW_NOT_IMPLEMENTED\",\n \"+unread 预留:需要先落地通知的已读状态模型\",\n );\n}\n\n/** 本地时区偏移,如 +08:00。 */\nfunction tzOffset(): string {\n const min = -new Date().getTimezoneOffset();\n const sign = min >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(min);\n const hh = String(Math.floor(abs / 60)).padStart(2, \"0\");\n const mm = String(abs % 60).padStart(2, \"0\");\n return `${sign}${hh}:${mm}`;\n}\n",
|
|
84
98
|
"/**\n * 通知同步 checkpoint 协议(供外部记忆系统按批拉取)。\n * 与 phone-notifications 插件版 `ntf-sync` 行为一致,错误改走 YoooclawError。\n */\nimport { existsSync, readFileSync, readdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { writeJsonFile } from \"../fs-utils.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport type { StoredNotification } from \"../shared.js\";\n\nexport const SYNC_FETCH_LIMIT = 300;\n\ninterface CheckpointData {\n [dateKey: string]: { lastIndex: number };\n}\n\nfunction checkpointPath(dir: string): string {\n return join(dir, \".checkpoint.json\");\n}\n\nfunction readCheckpoint(dir: string): CheckpointData {\n const p = checkpointPath(dir);\n if (!existsSync(p)) return {};\n try {\n return JSON.parse(readFileSync(p, \"utf-8\")) as CheckpointData;\n } catch {\n return {};\n }\n}\n\nfunction writeCheckpoint(dir: string, data: CheckpointData): void {\n writeJsonFile(checkpointPath(dir), data);\n}\n\nfunction listDateKeys(dir: string): string[] {\n if (!existsSync(dir)) return [];\n const pattern = /^(\\d{4}-\\d{2}-\\d{2})\\.json$/;\n const keys: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isFile()) continue;\n const m = pattern.exec(entry.name);\n if (m) keys.push(m[1]);\n }\n return keys.sort((a, b) => b.localeCompare(a));\n}\n\nfunction readDateFile(dir: string, dateKey: string): StoredNotification[] {\n const filePath = join(dir, `${dateKey}.json`);\n if (!existsSync(filePath)) return [];\n try {\n const parsed = JSON.parse(readFileSync(filePath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\nfunction parseIndexOption(raw: string, label: string): number {\n const n = Number.parseInt(raw, 10);\n if (!Number.isInteger(n) || String(n) !== raw || n < 0) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `${label} 必须是非负整数`);\n }\n return n;\n}\n\nexport function scanSync(dir: string): unknown {\n const checkpoint = readCheckpoint(dir);\n const pending: { date: string; count: number; startIndex: number }[] = [];\n let totalPending = 0;\n for (const dateKey of listDateKeys(dir)) {\n const items = readDateFile(dir, dateKey);\n const lastIndex = checkpoint[dateKey]?.lastIndex ?? -1;\n const unprocessed = items.length - (lastIndex + 1);\n if (unprocessed > 0) {\n pending.push({ date: dateKey, count: unprocessed, startIndex: lastIndex + 1 });\n totalPending += unprocessed;\n }\n }\n return { ok: true, pending, totalPending };\n}\n\nexport function fetchSync(dir: string, date: string, maxEndIndexRaw?: string): unknown {\n const items = readDateFile(dir, date);\n if (items.length === 0) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `日期 ${date} 无通知数据`);\n }\n const checkpoint = readCheckpoint(dir);\n const lastIndex = checkpoint[date]?.lastIndex ?? -1;\n const startIndex = lastIndex + 1;\n let maxEndIndex = items.length - 1;\n if (maxEndIndexRaw) {\n maxEndIndex = Math.min(parseIndexOption(maxEndIndexRaw, \"--max-end-index\"), items.length - 1);\n }\n const snapshotEndExclusive = Math.max(startIndex, maxEndIndex + 1);\n const unprocessed = items.slice(startIndex, snapshotEndExclusive);\n const notifications = unprocessed.slice(0, SYNC_FETCH_LIMIT);\n const endIndex = notifications.length > 0 ? startIndex + notifications.length - 1 : lastIndex;\n const hasMore = unprocessed.length > notifications.length;\n return {\n ok: true,\n date,\n startIndex,\n endIndex,\n nextStartIndex: hasMore ? endIndex + 1 : null,\n limit: SYNC_FETCH_LIMIT,\n maxEndIndex,\n returned: notifications.length,\n totalUnprocessed: unprocessed.length,\n hasMore,\n notifications,\n };\n}\n\nexport function commitSync(dir: string, date: string, endIndexRaw?: string): unknown {\n const items = readDateFile(dir, date);\n if (items.length === 0) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `日期 ${date} 无通知数据`);\n }\n const checkpoint = readCheckpoint(dir);\n const lastIndex = checkpoint[date]?.lastIndex ?? -1;\n let committedIndex: number;\n let commitMode: string;\n if (endIndexRaw) {\n committedIndex = parseIndexOption(endIndexRaw, \"--end-index\");\n if (committedIndex >= items.length) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 超出当前日期通知文件范围\");\n }\n if (committedIndex < lastIndex) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 早于当前 checkpoint,不能回退消费进度\");\n }\n if (committedIndex > lastIndex + SYNC_FETCH_LIMIT) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--end-index 超出单批 fetch 上限,不能跳过未处理通知\");\n }\n commitMode = \"exact-end-index\";\n } else {\n committedIndex = Math.min(items.length - 1, lastIndex + SYNC_FETCH_LIMIT);\n commitMode = \"legacy-batch-limit\";\n }\n const hasMore = committedIndex < items.length - 1;\n checkpoint[date] = { lastIndex: committedIndex };\n writeCheckpoint(dir, checkpoint);\n return {\n ok: true,\n date,\n committedIndex,\n commitMode,\n limit: SYNC_FETCH_LIMIT,\n hasMore,\n nextStartIndex: hasMore ? committedIndex + 1 : null,\n };\n}\n",
|
|
85
99
|
"/**\n * sync service —— scan / fetch / commit(通知同步给记忆系统)。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { scanSync, fetchSync, commitSync } from \"../notification/sync.js\";\n\nexport function syncScan(ctx: CliContext): unknown {\n return scanSync(ctx.paths.notifications);\n}\n\nexport function syncFetch(\n ctx: CliContext,\n _args: unknown[],\n opts: { date?: string; maxEndIndex?: string },\n): unknown {\n if (!opts.date) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--date 必填(YYYY-MM-DD)\");\n }\n return fetchSync(ctx.paths.notifications, opts.date, opts.maxEndIndex);\n}\n\nexport function syncCommit(\n ctx: CliContext,\n _args: unknown[],\n opts: { date?: string; endIndex?: string },\n): unknown {\n if (!opts.date) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--date 必填(YYYY-MM-DD)\");\n }\n return commitSync(ctx.paths.notifications, opts.date, opts.endIndex);\n}\n",
|
|
86
100
|
"/**\n * recording service —— list / status / storage-path / setup-asr + +latest。\n * 查询纯读磁盘(🟢);setup-asr 写 asr-config.json(🟢)。\n */\nimport { createReadStream, existsSync, readFileSync, statSync, watch } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { ensureDir, writeJsonFile } from \"../fs-utils.js\";\nimport { ask, isInteractive } from \"../prompt.js\";\nimport { readRecordingIndex, type CliRecordingEntry } from \"../shared.js\";\n\nfunction readIndex(ctx: CliContext): CliRecordingEntry[] {\n if (!existsSync(ctx.paths.recordings)) return [];\n return readRecordingIndex(ctx.paths.recordings);\n}\n\nfunction toListItem(r: CliRecordingEntry) {\n return {\n id: r.id,\n clientLabel: r.clientLabel ?? \"legacy\",\n name: r.metadata.name,\n duration_sec: r.metadata.duration_sec,\n status: r.status,\n file_size_bytes: r.metadata.file_size_bytes,\n has_audio: Boolean(r.audioFile),\n has_transcript: Boolean(r.transcriptFile),\n created_at: r.metadata.created_at,\n updated_at: r.updatedAt,\n error: r.lastError ?? null,\n };\n}\n\nexport function recordingList(\n ctx: CliContext,\n _args: unknown[],\n opts: { status?: string; client?: string },\n): unknown {\n let recordings = readIndex(ctx);\n if (opts.status) recordings = recordings.filter((r) => r.status === opts.status);\n if (opts.client && opts.client !== \"all\") {\n recordings = recordings.filter((r) => (r.clientLabel ?? \"legacy\") === opts.client);\n }\n return { ok: true, total: recordings.length, recordings: recordings.map(toListItem) };\n}\n\nexport function recordingStatus(ctx: CliContext, args: unknown[]): unknown {\n const [id] = args as [string];\n const entry = readIndex(ctx).find((r) => r.id === id);\n if (!entry) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `录音不存在:${id}`);\n }\n return {\n ok: true,\n recording: {\n id: entry.id,\n clientLabel: entry.clientLabel ?? \"legacy\",\n name: entry.metadata.name,\n duration_sec: entry.metadata.duration_sec,\n file_size_bytes: entry.metadata.file_size_bytes,\n status: entry.status,\n created_at: entry.metadata.created_at,\n location: (entry.metadata as Record<string, unknown>).location ?? null,\n markers: (entry.metadata as Record<string, unknown>).markers ?? [],\n audioFile: entry.audioFile ?? null,\n srtFile: entry.srtFile ?? null,\n transcriptDataFile: entry.transcriptDataFile ?? null,\n transcriptFile: entry.transcriptFile ?? null,\n summaryFile: entry.summaryFile ?? null,\n title: entry.title ?? null,\n error: entry.lastError ?? null,\n ingestedAt: entry.ingestedAt,\n updatedAt: entry.updatedAt,\n },\n };\n}\n\nexport function recordingStoragePath(ctx: CliContext): unknown {\n return { ok: true, path: ctx.paths.recordings };\n}\n\n// ── 录音状态事件流(由 daemon 写到 recordings/state/events.jsonl)──\n\ninterface EventRecord {\n ts: string;\n recordingId: string;\n transfer_status: string;\n error?: string;\n [k: string]: unknown;\n}\n\ninterface RecordingEventsOpts {\n id?: string;\n since?: string;\n watch?: boolean;\n limit?: string;\n}\n\nconst DURATION_UNITS: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n};\n\nfunction parseSince(input: string | undefined): number | undefined {\n if (!input) return undefined;\n const m = /^(\\d+)([smhd])$/.exec(input.trim());\n if (!m) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n `--since 格式应为 <数字><单位>,单位 s/m/h/d(收到 \"${input}\")`,\n );\n }\n return Date.now() - Number(m[1]) * DURATION_UNITS[m[2]];\n}\n\nfunction eventsPath(ctx: CliContext): string {\n return join(ctx.paths.recordings, \"state\", \"events.jsonl\");\n}\n\nfunction readEventsFile(path: string): EventRecord[] {\n if (!existsSync(path)) return [];\n const raw = readFileSync(path, \"utf-8\");\n const out: EventRecord[] = [];\n for (const line of raw.split(\"\\n\")) {\n const t = line.trim();\n if (!t) continue;\n try {\n out.push(JSON.parse(t) as EventRecord);\n } catch {\n // 损坏行跳过\n }\n }\n return out;\n}\n\nfunction filterEvents(\n events: EventRecord[],\n opts: { id?: string; sinceMs?: number; limit: number },\n): EventRecord[] {\n let out = events;\n if (opts.id) out = out.filter((e) => e.recordingId === opts.id);\n if (opts.sinceMs !== undefined) {\n out = out.filter((e) => {\n const ts = Date.parse(e.ts);\n return Number.isFinite(ts) && ts >= opts.sinceMs!;\n });\n }\n if (out.length > opts.limit) out = out.slice(-opts.limit);\n return out;\n}\n\nexport async function recordingEvents(\n ctx: CliContext,\n _args: unknown[],\n opts: RecordingEventsOpts,\n): Promise<unknown> {\n const path = eventsPath(ctx);\n const limit = Number(opts.limit ?? \"200\");\n const sinceMs = parseSince(opts.since);\n const initial = filterEvents(readEventsFile(path), { id: opts.id, sinceMs, limit });\n\n if (!opts.watch) {\n return { ok: true, path, total: initial.length, events: initial };\n }\n\n // --watch:先打印历史,再 tail。直接 stdout 行式输出(脱离命令 JSON 包装)。\n for (const e of initial) {\n process.stdout.write(JSON.stringify(e) + \"\\n\");\n }\n await tailEvents(path, opts.id, (e) => {\n process.stdout.write(JSON.stringify(e) + \"\\n\");\n });\n // tail 永不返回;写在这里只是给类型系统看\n return { ok: true, path, total: initial.length };\n}\n\nfunction tailEvents(\n path: string,\n filterId: string | undefined,\n onEvent: (e: EventRecord) => void,\n): Promise<never> {\n return new Promise<never>(() => {\n let offset = existsSync(path) ? statSync(path).size : 0;\n let buffer = \"\";\n const drain = (): void => {\n if (!existsSync(path)) return;\n const size = statSync(path).size;\n if (size < offset) {\n // 文件被截断/重建,从头读\n offset = 0;\n buffer = \"\";\n }\n if (size === offset) return;\n const stream = createReadStream(path, { start: offset, end: size - 1, encoding: \"utf-8\" });\n stream.on(\"data\", (chunk) => (buffer += chunk));\n stream.on(\"end\", () => {\n offset = size;\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const t = line.trim();\n if (!t) continue;\n try {\n const e = JSON.parse(t) as EventRecord;\n if (!filterId || e.recordingId === filterId) onEvent(e);\n } catch {\n // skip\n }\n }\n });\n };\n drain();\n // 监听目录避免 watch 在文件不存在时报错\n const dir = join(path, \"..\");\n watch(dir, () => drain());\n });\n}\n\nexport function recordingLatest(ctx: CliContext): unknown {\n const recordings = readIndex(ctx).sort(\n (a, b) => Date.parse(b.metadata.created_at) - Date.parse(a.metadata.created_at),\n );\n if (recordings.length === 0) {\n return { ok: true, recording: null };\n }\n return recordingStatus(ctx, [recordings[0].id]);\n}\n\ninterface SetupAsrOpts {\n mode?: string;\n apiKey?: string;\n endpoint?: string;\n language?: string;\n model?: string;\n nonInteractive?: boolean;\n}\n\n/**\n * 写出与 phone-notifications/types.ts 的 AsrConfig 完全兼容的配置:\n * { mode: \"api\" | \"local\", api?: {...}, local?: {...} }\n *\n * api 模式留空 apiKey 时,daemon 跑录音同步会回退到 account 级 ock- key\n * (resolveApiKey),所以普通用户 `yc recording setup-asr --non-interactive` 即可开箱。\n */\nexport async function recordingSetupAsr(\n ctx: CliContext,\n _args: unknown[],\n opts: SetupAsrOpts,\n): Promise<unknown> {\n let mode = (opts.mode ?? \"api\").toLowerCase();\n let apiKey = opts.apiKey;\n let endpoint = opts.endpoint;\n let language = opts.language;\n let model = opts.model;\n\n if (!opts.nonInteractive && isInteractive()) {\n mode = (await ask(\"ASR mode(api / local)\", mode)).toLowerCase();\n if (mode === \"api\") {\n apiKey = await ask(\"API key(留空则使用 account ock- key)\", apiKey ?? \"\");\n endpoint = await ask(\"model-proxy endpoint(留空走默认)\", endpoint ?? \"\");\n language = await ask(\"语言提示(zh / en / auto)\", language ?? \"auto\");\n } else if (mode === \"local\") {\n model = await ask(\"Whisper 模型(留空走推荐值)\", model ?? \"\");\n }\n }\n\n if (mode !== \"api\" && mode !== \"local\") {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n `--mode 必须是 api 或 local(收到 \"${mode}\")`,\n );\n }\n\n const config = buildAsrConfig(mode, { apiKey, endpoint, language, model });\n\n ensureDir(ctx.paths.recordings);\n const path = join(ctx.paths.recordings, \"asr-config.json\");\n writeJsonFile(path, config);\n return {\n ok: true,\n path,\n mode,\n keyConfigured: mode === \"api\" ? Boolean(apiKey) || \"fallback-to-account\" : \"n/a\",\n };\n}\n\nfunction buildAsrConfig(\n mode: \"api\" | \"local\",\n fields: { apiKey?: string; endpoint?: string; language?: string; model?: string },\n): Record<string, unknown> {\n if (mode === \"api\") {\n const api: Record<string, unknown> = {};\n if (fields.apiKey) api.apiKey = fields.apiKey;\n if (fields.endpoint) api.endpoint = fields.endpoint;\n if (fields.language) api.language = fields.language;\n return Object.keys(api).length > 0 ? { mode, api } : { mode };\n }\n const local: Record<string, unknown> = {};\n if (fields.model) local.model = fields.model;\n return Object.keys(local).length > 0 ? { mode, local } : { mode };\n}\n",
|
|
87
|
-
"/**\n * 图片本地存储读取(images/index.json)。\n *\n * 元数据与同步状态机由 daemon 的图片通道写入(见 PRD「图片通道」);\n * CLI 的 image 查询命令纯读这里,不需要 daemon 在跑。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { isAbsolute, join } from \"node:path\";\nimport type { ProfilePaths } from \"../paths.js\";\n\nexport type ImageSyncStatus = \"syncing\" | \"synced\" | \"sync_failed\";\n\nexport interface ImageMetadata {\n oss_image_url: string;\n created_at: string;\n mime_type?: string;\n width?: number;\n height?: number;\n size_bytes?: number;\n source_app?: string;\n caption?: string;\n}\n\nexport interface ImageIndexEntry {\n imageId: string;\n /** 来源客户端 label;旧数据无该字段,查询时视为 legacy */\n clientLabel?: string;\n metadata: ImageMetadata;\n /** 相对 images/ 的本地路径,如 files/img_xxx.jpg。 */\n localFile?: string | null;\n thumbnail?: string | null;\n status: ImageSyncStatus;\n lastError?: string | null;\n syncedAt?: string | null;\n}\n\nexport function imagesIndexPath(paths: ProfilePaths): string {\n return join(paths.images, \"index.json\");\n}\n\n/** 读取图片索引;目录/文件不存在返回空数组。 */\nexport function readImageIndex(paths: ProfilePaths): ImageIndexEntry[] {\n const indexPath = imagesIndexPath(paths);\n if (!existsSync(indexPath)) return [];\n try {\n const raw = JSON.parse(readFileSync(indexPath, \"utf-8\"));\n return Array.isArray(raw?.images) ? raw.images : [];\n } catch {\n return [];\n }\n}\n\n/** 把索引里的相对路径解析为绝对路径。 */\nexport function resolveImageFile(\n paths: ProfilePaths,\n relative: string,\n): string {\n return isAbsolute(relative) ? relative : join(paths.images, relative);\n}\n",
|
|
88
101
|
"/**\n * image service —— list / status / path / storage-path + +latest(🟢,纯读磁盘)。\n */\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport {\n readImageIndex,\n resolveImageFile,\n type ImageIndexEntry,\n} from \"../image/storage.js\";\nimport { matchesNotificationAppFilter } from \"../shared.js\";\n\ninterface ListOpts {\n status?: string;\n app?: string;\n client?: string;\n from?: string;\n to?: string;\n limit?: string;\n}\n\nfunction byCreatedDesc(a: ImageIndexEntry, b: ImageIndexEntry): number {\n return Date.parse(b.metadata.created_at) - Date.parse(a.metadata.created_at);\n}\n\nexport function imageList(\n ctx: CliContext,\n _args: unknown[],\n opts: ListOpts,\n): unknown {\n let items = readImageIndex(ctx.paths);\n if (opts.status) items = items.filter((i) => i.status === opts.status);\n if (opts.client && opts.client !== \"all\") {\n items = items.filter((i) => (i.clientLabel ?? \"legacy\") === opts.client);\n }\n if (opts.app) {\n const app = opts.app;\n items = items.filter((i) =>\n matchesNotificationAppFilter(\n { appName: i.metadata.source_app ?? \"\", title: \"\", content: \"\", timestamp: \"\" },\n app,\n ),\n );\n }\n if (opts.from) {\n const fromTs = Date.parse(opts.from);\n items = items.filter((i) => Date.parse(i.metadata.created_at) >= fromTs);\n }\n if (opts.to) {\n const toTs = Date.parse(opts.to);\n items = items.filter((i) => Date.parse(i.metadata.created_at) <= toTs);\n }\n items = items.sort(byCreatedDesc);\n const limit = opts.limit ? Number(opts.limit) : 100;\n return { ok: true, total: items.length, images: items.slice(0, limit) };\n}\n\nexport function imageStatus(ctx: CliContext, args: unknown[]): unknown {\n const [id] = args as [string];\n const entry = readImageIndex(ctx.paths).find((i) => i.imageId === id);\n if (!entry) throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `图片不存在:${id}`);\n return { ok: true, image: entry };\n}\n\nexport function imagePath(\n ctx: CliContext,\n args: unknown[],\n opts: { thumbnail?: boolean },\n): unknown {\n const [id] = args as [string];\n const entry = readImageIndex(ctx.paths).find((i) => i.imageId === id);\n if (!entry) throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `图片不存在:${id}`);\n\n const relative = opts.thumbnail ? entry.thumbnail : entry.localFile;\n if (entry.status !== \"synced\" || !relative) {\n throw new YoooclawError(\n \"YOOOCLAW_IMAGE_NOT_READY\",\n `图片 ${id} 尚未下载完成`,\n { status: entry.status, lastError: entry.lastError ?? null },\n );\n }\n return { ok: true, path: resolveImageFile(ctx.paths, relative) };\n}\n\nexport function imageStoragePath(ctx: CliContext): unknown {\n return { ok: true, path: ctx.paths.images };\n}\n\nexport function imageLatest(ctx: CliContext): unknown {\n const items = readImageIndex(ctx.paths).sort(byCreatedDesc);\n return { ok: true, image: items[0] ?? null };\n}\n",
|
|
89
102
|
"/**\n * daemon 日志读取 —— 解析 `daemon.log` + 轮转文件 `daemon.log.YYYY-MM-DD`。\n *\n * 行格式(与 daemon logger 写入一致):`<ISO时间> [LEVEL] message`。\n */\nimport { existsSync, readFileSync, readdirSync } from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\n\nexport interface LogLine {\n date: string;\n level: string;\n time: string;\n message: string;\n raw: string;\n}\n\nconst LINE_RE = /^(\\d{4}-\\d{2}-\\d{2})(T\\S+)?\\s+\\[(\\w+)\\]\\s+(.*)$/;\n\nexport interface LogQuery {\n keyword?: string;\n level?: string;\n from?: string;\n to?: string;\n limit: number;\n}\n\n/** 收集 daemon 当前日志 + 轮转日志文件路径(按日期倒序,current 在最前)。 */\nfunction logFiles(daemonLog: string): string[] {\n const dir = dirname(daemonLog);\n const base = basename(daemonLog);\n if (!existsSync(dir)) return [];\n const rotated = readdirSync(dir)\n .filter((f) => f.startsWith(`${base}.`) && /\\.\\d{4}-\\d{2}-\\d{2}$/.test(f))\n .sort((a, b) => b.localeCompare(a))\n .map((f) => join(dir, f));\n const files: string[] = [];\n if (existsSync(daemonLog)) files.push(daemonLog);\n files.push(...rotated);\n return files;\n}\n\nfunction parseLine(raw: string): LogLine | null {\n const m = LINE_RE.exec(raw);\n if (!m) return null;\n return {\n date: m[1],\n time: (m[1] + (m[2] ?? \"\")),\n level: m[3].toLowerCase(),\n message: m[4],\n raw,\n };\n}\n\nexport function searchLogs(daemonLog: string, query: LogQuery): LogLine[] {\n const keyword = query.keyword?.toLowerCase();\n const level = query.level?.toLowerCase();\n const results: LogLine[] = [];\n\n for (const file of logFiles(daemonLog)) {\n const content = readFileSync(file, \"utf-8\");\n // 单文件内按出现顺序,整体最新文件在前 → 反转每个文件使最新行靠前\n const lines = content.split(\"\\n\").filter(Boolean).reverse();\n for (const raw of lines) {\n if (results.length >= query.limit) return results;\n const parsed = parseLine(raw);\n const date = parsed?.date;\n if (query.from && date && date < query.from) continue;\n if (query.to && date && date > query.to) continue;\n if (level && parsed && parsed.level !== level) continue;\n if (keyword && !raw.toLowerCase().includes(keyword)) continue;\n results.push(parsed ?? { date: \"\", time: \"\", level: \"\", message: raw, raw });\n }\n }\n return results;\n}\n",
|
|
90
103
|
"/**\n * log service —— `log [keyword]` + `+errors`(🟢,纯读 daemon 日志文件)。\n */\nimport type { CliContext } from \"../context.js\";\nimport { searchLogs } from \"../log/reader.js\";\nimport { daysAgo, today } from \"../shared.js\";\n\ninterface LogOpts {\n from?: string;\n to?: string;\n limit?: string;\n level?: string;\n}\n\nexport function logSearch(\n ctx: CliContext,\n args: unknown[],\n opts: LogOpts,\n): unknown {\n const [keyword] = args as [string | undefined];\n const lines = searchLogs(ctx.paths.daemonLog, {\n keyword,\n level: opts.level,\n from: opts.from ?? daysAgo(7),\n to: opts.to ?? today(),\n limit: opts.limit ? Number(opts.limit) : 50,\n });\n return { ok: true, keyword: keyword ?? null, total: lines.length, lines };\n}\n\nexport function logErrors(ctx: CliContext): unknown {\n const lines = searchLogs(ctx.paths.daemonLog, {\n level: \"error\",\n from: daysAgo(1),\n to: today(),\n limit: 50,\n });\n return { ok: true, level: \"error\", total: lines.length, lines };\n}\n",
|
|
@@ -92,25 +105,12 @@
|
|
|
92
105
|
"/**\n * update self —— 查 npm registry 比对版本并提示。\n * 不做自动替换:升级方式取决于安装来源(CLI_DIST),命令文本相应区分。\n */\nimport { arch as nodeArch, platform as nodePlatform } from \"node:os\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { CLI_DIST, CLI_VERSION } from \"../version.js\";\n\nconst PACKAGE = \"@yoooclaw/cli\";\nconst REGISTRY = \"https://registry.npmjs.org\";\nconst INSTALL_SH = \"https://raw.githubusercontent.com/Yoooclaw/openclaw-plugin/master/packages/cli/scripts/install.sh\";\n\ninterface UpdateOpts {\n beta?: boolean;\n json?: boolean;\n}\n\nfunction normalizeOs(p: string): \"darwin\" | \"linux\" | null {\n if (p === \"darwin\") return \"darwin\";\n if (p === \"linux\") return \"linux\";\n return null;\n}\n\nfunction normalizeArch(a: string): \"arm64\" | \"x64\" | null {\n if (a === \"arm64\") return \"arm64\";\n if (a === \"x64\") return \"x64\";\n return null;\n}\n\nfunction nativeTargetName(): string | null {\n const os = normalizeOs(nodePlatform());\n const arch = normalizeArch(nodeArch());\n if (!os || !arch) return null;\n return `yoooclaw-${os}-${arch}`;\n}\n\nfunction upgradeCommand(channel: \"latest\" | \"beta\", latest: string): string {\n if (CLI_DIST === \"native\") {\n const target = nativeTargetName();\n if (!target) {\n return `curl -fsSL ${INSTALL_SH} | sh`;\n }\n return `curl -fsSL ${INSTALL_SH} | sh -s -- --version ${latest}`;\n }\n // npm 与 dev 形态都按 npm 升级(dev 形态走源码,提示文案给用户参考)\n if (channel === \"beta\") return `npm i -g ${PACKAGE}@beta`;\n return `npm update -g ${PACKAGE}`;\n}\n\nfunction compareSemver(a: string, b: string): number {\n const pa = a.split(\"-\")[0].split(\".\").map(Number);\n const pb = b.split(\"-\")[0].split(\".\").map(Number);\n for (let i = 0; i < 3; i += 1) {\n const d = (pa[i] ?? 0) - (pb[i] ?? 0);\n if (d !== 0) return d > 0 ? 1 : -1;\n }\n return 0;\n}\n\nexport async function updateSelf(\n _ctx: CliContext,\n _args: unknown[],\n opts: UpdateOpts,\n): Promise<unknown> {\n const tag = opts.beta ? \"beta\" : \"latest\";\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 8000);\n let latest: string;\n try {\n const res = await fetch(`${REGISTRY}/${encodeURIComponent(PACKAGE)}`, {\n signal: controller.signal,\n headers: { Accept: \"application/vnd.npm.install-v1+json\" },\n });\n if (!res.ok) {\n throw new YoooclawError(\"YOOOCLAW_NETWORK_ERROR\", `npm registry 返回 ${res.status}`);\n }\n const body = (await res.json()) as { \"dist-tags\"?: Record<string, string> };\n const resolved = body[\"dist-tags\"]?.[tag];\n if (!resolved) {\n throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `npm dist-tag \\`${tag}\\` 不存在`);\n }\n latest = resolved;\n } catch (err) {\n if (err instanceof YoooclawError) throw err;\n throw new YoooclawError(\"YOOOCLAW_NETWORK_ERROR\", `查询 npm registry 失败:${(err as Error).message}`);\n } finally {\n clearTimeout(timer);\n }\n\n const updateAvailable = compareSemver(latest, CLI_VERSION) > 0;\n return {\n ok: true,\n package: PACKAGE,\n channel: tag,\n dist: CLI_DIST,\n current: CLI_VERSION,\n latest,\n updateAvailable,\n command: updateAvailable ? upgradeCommand(tag, latest) : null,\n hint: updateAvailable\n ? \"发现新版本;CLI 不做自动更新,请手动执行上面的命令\"\n : \"已是最新版本\",\n };\n}\n",
|
|
93
106
|
"/**\n * doctor —— 环境自检。默认仅做**无网络、无 keychain 也确定性**的本地检查(PRD 可测试性要求)。\n * 网络类自检(relay / OSS 出站可达性)交给 gateway test / tunnel +test。\n */\nimport { accessSync, constants, existsSync, statSync } from \"node:fs\";\nimport type { CliContext } from \"../context.js\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport { rootDir } from \"../paths.js\";\nimport { configExists, loadConfig } from \"../config/store.js\";\nimport { resolveApiKey, resolveGatewayToken } from \"../credentials/store.js\";\nimport { keychainAvailable } from \"../credentials/keychain.js\";\nimport { daemonState } from \"../daemon/lock.js\";\n\ntype CheckStatus = \"ok\" | \"warn\" | \"fail\" | \"skip\";\ninterface Check {\n name: string;\n status: CheckStatus;\n detail: string;\n}\n\nconst MIN_NODE = [22, 12, 0];\n\nfunction checkNode(): Check {\n const parts = process.versions.node.split(\".\").map(Number);\n let ok = true;\n for (let i = 0; i < 3; i += 1) {\n if ((parts[i] ?? 0) > MIN_NODE[i]) break;\n if ((parts[i] ?? 0) < MIN_NODE[i]) { ok = false; break; }\n }\n return {\n name: \"node-version\",\n status: ok ? \"ok\" : \"fail\",\n detail: `Node ${process.versions.node}(要求 >= ${MIN_NODE.join(\".\")})`,\n };\n}\n\nfunction checkDir(name: string, dir: string, fix: boolean): Check {\n if (!existsSync(dir)) {\n if (fix) {\n ensureDir(dir);\n return { name, status: \"ok\", detail: `已创建 ${dir}` };\n }\n return { name, status: \"warn\", detail: `目录不存在:${dir}(--fix 可创建)` };\n }\n try {\n accessSync(dir, constants.R_OK | constants.W_OK);\n } catch {\n return { name, status: \"fail\", detail: `目录不可读写:${dir}` };\n }\n const mode = statSync(dir).mode & 0o777;\n const tooOpen = (mode & 0o077) !== 0;\n return {\n name,\n status: tooOpen ? \"warn\" : \"ok\",\n detail: `${dir}(mode ${mode.toString(8)}${tooOpen ? \",建议收紧到 700\" : \"\"})`,\n };\n}\n\nexport function doctor(\n ctx: CliContext,\n _args: unknown[],\n opts: { json?: boolean; fix?: boolean },\n): unknown {\n const fix = Boolean(opts.fix);\n const checks: Check[] = [checkNode(), checkDir(\"root-dir\", rootDir(), fix)];\n\n // profile 配置\n if (configExists(ctx.paths)) {\n try {\n loadConfig(ctx.paths);\n checks.push({ name: \"profile-config\", status: \"ok\", detail: `${ctx.paths.config} 可解析` });\n } catch (err) {\n checks.push({ name: \"profile-config\", status: \"fail\", detail: (err as Error).message });\n }\n } else {\n checks.push({\n name: \"profile-config\",\n status: \"warn\",\n detail: `profile \\`${ctx.profile}\\` 未初始化(yoooclaw config init)`,\n });\n }\n\n // api-key\n const apiKey = resolveApiKey();\n checks.push({\n name: \"api-key\",\n status: apiKey.value ? \"ok\" : \"warn\",\n detail: apiKey.value ? `来源 ${apiKey.source}` : \"未配置(yoooclaw auth set-api-key)\",\n });\n\n // gateway token\n if (configExists(ctx.paths)) {\n const token = resolveGatewayToken(loadConfig(ctx.paths));\n checks.push({\n name: \"gateway-token\",\n status: token.value ? \"ok\" : \"warn\",\n detail: token.value ? `来源 ${token.source}` : \"未设置(yoooclaw auth token-rotate)\",\n });\n }\n\n // keychain(可选加固,不可用只是 skip)\n checks.push({\n name: \"keychain\",\n status: keychainAvailable() ? \"ok\" : \"skip\",\n detail: keychainAvailable() ? \"可用\" : \"当前平台无可用 keychain,凭据将落文件\",\n });\n\n // daemon(不在跑只是 info/warn)\n const state = daemonState(ctx.paths);\n checks.push({\n name: \"daemon\",\n status: state.running ? \"ok\" : state.stale ? \"warn\" : \"skip\",\n detail: state.running\n ? `运行中(pid ${state.lock?.pid})`\n : state.stale\n ? \"锁文件存在但进程已死(陈旧锁)\"\n : \"未运行\",\n });\n\n const failed = checks.filter((c) => c.status === \"fail\").length;\n const warned = checks.filter((c) => c.status === \"warn\").length;\n return {\n ok: failed === 0,\n profile: ctx.profile,\n summary: { total: checks.length, failed, warned },\n checks,\n note: \"网络类自检(relay / OSS 可达性)请用 yoooclaw gateway test / tunnel +test\",\n };\n}\n",
|
|
94
107
|
"/**\n * skills list / install —— 把随包发布的 SKILL.md 安装到 agent 可发现目录。\n *\n * 背景:这些 Skill 在 openclaw 插件里由 `openclaw.plugin.json` 的 `skills` 字段自动注册;\n * 独立 CLI 形态下它们只随 npm 包躺在 `<pkg>/skills/`,没有宿主帮忙装载。本命令负责把它们\n * 软链(默认)或复制到 agent 的 skills 目录,让 agent 能发现并触发。\n */\nimport {\n cpSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n realpathSync,\n rmSync,\n symlinkSync,\n} from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport type { CliContext } from \"../context.js\";\nimport { ErrorCode, YoooclawError } from \"../errors.js\";\n\nconst AGENT_IDS = [\"claude\", \"codex\"] as const;\nconst INSTALL_AGENT_IDS = [\"auto\", \"custom\", ...AGENT_IDS] as const;\n\ntype BuiltInAgentId = (typeof AGENT_IDS)[number];\ntype InstallAgentId = (typeof INSTALL_AGENT_IDS)[number];\n\ninterface AgentAdapter {\n id: BuiltInAgentId;\n label: string;\n homeDir(): string;\n skillsDir(): string;\n envHint?: string;\n}\n\nexport interface SkillTargetCandidate {\n agent: BuiltInAgentId;\n label: string;\n homeDir: string;\n target: string;\n detected: boolean;\n reason: string;\n installCommand: string;\n}\n\ninterface TargetSelection {\n agent: BuiltInAgentId | \"custom\";\n agentLabel: string;\n target: string;\n source: \"explicit-target\" | \"agent-default\" | \"auto-detected\";\n detectedTargets?: SkillTargetCandidate[];\n}\n\nfunction trimEnv(name: string): string | undefined {\n const value = process.env[name]?.trim();\n return value ? value : undefined;\n}\n\nfunction claudeHomeDir(): string {\n return join(homedir(), \".claude\");\n}\n\nfunction codexHomeDir(): string {\n return trimEnv(\"CODEX_HOME\") ?? join(homedir(), \".codex\");\n}\n\nconst AGENT_ADAPTERS: AgentAdapter[] = [\n {\n id: \"claude\",\n label: \"Claude Code\",\n homeDir: claudeHomeDir,\n skillsDir: () => join(claudeHomeDir(), \"skills\"),\n },\n {\n id: \"codex\",\n label: \"Codex\",\n homeDir: codexHomeDir,\n skillsDir: () => join(codexHomeDir(), \"skills\"),\n envHint: \"CODEX_HOME\",\n },\n];\n\nfunction getAgentAdapter(id: BuiltInAgentId): AgentAdapter {\n const adapter = AGENT_ADAPTERS.find((a) => a.id === id);\n if (!adapter) {\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n `不支持的 agent:${id}`,\n { hint: `可选值:${INSTALL_AGENT_IDS.join(\" | \")}` },\n );\n }\n return adapter;\n}\n\nfunction normalizeAgent(raw: unknown): InstallAgentId {\n const agent = typeof raw === \"string\" && raw.trim() ? raw.trim() : \"auto\";\n if ((INSTALL_AGENT_IDS as readonly string[]).includes(agent)) {\n return agent as InstallAgentId;\n }\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n `不支持的 agent:${agent}`,\n { hint: `可选值:${INSTALL_AGENT_IDS.join(\" | \")}` },\n );\n}\n\nfunction hasPath(path: string): boolean {\n return existsSync(path);\n}\n\nexport function listSkillTargetCandidates(): SkillTargetCandidate[] {\n return AGENT_ADAPTERS.map((adapter) => {\n const homeDir = adapter.homeDir();\n const target = adapter.skillsDir();\n const hasHome = hasPath(homeDir);\n const hasTarget = hasPath(target);\n const envValue = adapter.envHint ? trimEnv(adapter.envHint) : undefined;\n return {\n agent: adapter.id,\n label: adapter.label,\n homeDir,\n target,\n detected: hasHome || hasTarget || Boolean(envValue),\n reason: hasTarget\n ? \"skills 目录已存在\"\n : hasHome\n ? \"agent 配置目录已存在\"\n : envValue && adapter.envHint\n ? `${adapter.envHint} 已设置`\n : adapter.envHint\n ? `未发现配置目录;可设置 ${adapter.envHint} 或显式传 --agent ${adapter.id}`\n : `未发现配置目录;可显式传 --agent ${adapter.id}`,\n installCommand: `yoooclaw skills install --agent ${adapter.id}`,\n };\n });\n}\n\nfunction resolveTargetSelection(opts: InstallOpts): TargetSelection {\n const explicitTarget = opts.target?.trim();\n const agent = normalizeAgent(opts.agent);\n\n if (explicitTarget) {\n if (agent === \"auto\" || agent === \"custom\") {\n return {\n agent: \"custom\",\n agentLabel: \"Custom\",\n target: explicitTarget,\n source: \"explicit-target\",\n };\n }\n const adapter = getAgentAdapter(agent);\n return {\n agent,\n agentLabel: adapter.label,\n target: explicitTarget,\n source: \"explicit-target\",\n };\n }\n\n if (agent === \"custom\") {\n throw new YoooclawError(\n ErrorCode.INVALID_ARGUMENT,\n \"`--agent custom` 需要同时传 `--target <dir>`\",\n { hint: \"例如:yoooclaw skills install --agent custom --target ~/.config/agent/skills\" },\n );\n }\n\n if (agent !== \"auto\") {\n const adapter = getAgentAdapter(agent);\n return {\n agent,\n agentLabel: adapter.label,\n target: adapter.skillsDir(),\n source: \"agent-default\",\n };\n }\n\n const candidates = listSkillTargetCandidates();\n const detected = candidates.filter((c) => c.detected);\n if (detected.length === 1) {\n const only = detected[0];\n return {\n agent: only.agent,\n agentLabel: only.label,\n target: only.target,\n source: \"auto-detected\",\n detectedTargets: detected,\n };\n }\n\n if (detected.length === 0) {\n throw new YoooclawError(\n ErrorCode.NOT_FOUND,\n \"未检测到可安装 Skill 的 Agent\",\n {\n hint: \"请显式指定 `--agent claude` / `--agent codex`,或使用 `--target <dir>` 指定任意 skills 目录\",\n targets: candidates,\n },\n );\n }\n\n throw new YoooclawError(\n ErrorCode.CONFIRMATION_REQUIRED,\n \"检测到多个 Agent,无法自动判断 Skill 应安装到哪里\",\n {\n hint: \"请显式指定 `--agent claude` / `--agent codex`,或使用 `--target <dir>`\",\n targets: detected,\n },\n );\n}\n\n/**\n * 候选锚点目录,按可靠性排序,用于向上查找随包发布的 `skills/`。\n *\n * 注意:Bun 打包成 cjs 时会把 `__dirname` / `import.meta.url` 替换成**构建期**绝对路径,\n * 在用户机器上无效;因此优先用运行期入口(require.main / argv[1],node 已对其做 realpath),\n * `import.meta.url` 仅作 dev/test(未打包,源码直跑)的兜底。\n */\nfunction candidateAnchorDirs(): string[] {\n const out: string[] = [];\n // 1) cjs 产物:入口模块真实路径(如 <pkg>/dist/bin.cjs)\n try {\n const mainFile = typeof require !== \"undefined\" ? require.main?.filename : undefined;\n if (mainFile) out.push(dirname(mainFile));\n } catch {\n // ESM 下无 require\n }\n // 2) 被执行脚本路径(npm bin 软链 → realpath 还原到真实文件)\n try {\n const argv1 = process.argv[1];\n if (argv1) out.push(dirname(realpathSync(argv1)));\n } catch {\n // ignore\n }\n // 3) dev/test:模块自身路径(源码直跑时有效)\n try {\n const url = import.meta.url;\n if (url) out.push(dirname(fileURLToPath(url)));\n } catch {\n // import.meta 不可用\n }\n return out;\n}\n\n/** 目录下是否存在「子目录/SKILL.md」结构 —— 据此判定它是 skills 根。 */\nfunction looksLikeSkillsDir(dir: string): boolean {\n if (!existsSync(dir)) return false;\n return readdirSync(dir, { withFileTypes: true }).some(\n (e) => e.isDirectory() && existsSync(join(dir, e.name, \"SKILL.md\")),\n );\n}\n\n/**\n * 定位随包发布的 skills 目录:从模块所在目录逐级向上找 `skills/`。\n * - 产物:`<pkg>/dist/bin.cjs` → 上一级 `<pkg>/skills`\n * - 源码(dev/test):`<pkg>/src/commands/skills.ts` → 上溯到 `<pkg>/skills`\n */\nexport function resolveBundledSkillsDir(): string {\n const checked: string[] = [];\n for (const anchor of candidateAnchorDirs()) {\n let cur = anchor;\n for (let i = 0; i < 6; i += 1) {\n const candidate = join(cur, \"skills\");\n checked.push(candidate);\n if (looksLikeSkillsDir(candidate)) return candidate;\n const parent = dirname(cur);\n if (parent === cur) break;\n cur = parent;\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_NOT_FOUND\",\n \"找不到随包发布的 skills 目录\",\n {\n hint: \"正常安装的 @yoooclaw/cli 应在包根带 skills/;若从源码运行请先 bun run build\",\n checkedPaths: checked,\n },\n );\n}\n\nexport interface BundledSkill {\n name: string;\n dir: string;\n /** frontmatter 的 name 字段(缺省回落目录名) */\n title: string;\n description: string;\n}\n\n/** 从 SKILL.md frontmatter 抽取 name / description(容忍多行被截断的情况,只取首行)。 */\nfunction parseSkillMeta(skillMd: string): { name?: string; description?: string } {\n const fm = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---/.exec(skillMd);\n const block = fm ? fm[1] : skillMd;\n const pick = (key: string): string | undefined => {\n const m = new RegExp(String.raw`^${key}:\\s*(.+)$`, \"m\").exec(block);\n return m ? m[1].trim() : undefined;\n };\n return { name: pick(\"name\"), description: pick(\"description\") };\n}\n\n/** 列出 skills 根下的所有内置 Skill(含 frontmatter 元数据)。 */\nexport function listBundledSkills(skillsDir: string): BundledSkill[] {\n return readdirSync(skillsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && existsSync(join(skillsDir, e.name, \"SKILL.md\")))\n .map((e) => {\n const dir = join(skillsDir, e.name);\n const meta = parseSkillMeta(readFileSync(join(dir, \"SKILL.md\"), \"utf-8\"));\n return {\n name: e.name,\n dir,\n title: meta.name ?? e.name,\n description: meta.description ?? \"\",\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function skillsList(_ctx: CliContext): unknown {\n const skillsDir = resolveBundledSkillsDir();\n const skills = listBundledSkills(skillsDir);\n return {\n ok: true,\n skillsDir,\n count: skills.length,\n skills: skills.map((s) => ({\n name: s.name,\n title: s.title,\n description: s.description,\n })),\n hint: \"用 `yoooclaw skills targets` 查看可安装目标,再用 `yoooclaw skills install --agent <agent>` 安装\",\n };\n}\n\ninterface InstallOpts {\n agent?: string;\n target?: string;\n copy?: boolean;\n force?: boolean;\n}\n\nexport function skillsTargets(_ctx: CliContext): unknown {\n const targets = listSkillTargetCandidates();\n return {\n ok: true,\n targets,\n hint:\n \"裸 `yoooclaw skills install` 只会在检测到唯一 Agent 时自动安装;否则请显式传 `--agent` 或 `--target`\",\n };\n}\n\ninterface InstallResult {\n name: string;\n status: \"installed\" | \"skipped\";\n /** symlink | copy;skipped 时为跳过原因 */\n via?: \"symlink\" | \"copy\";\n reason?: string;\n dest: string;\n}\n\n/** 现有目标是否已是指向同一来源的软链(幂等:重复安装不报错)。 */\nfunction isSameSymlink(dest: string, source: string): boolean {\n try {\n if (!lstatSync(dest).isSymbolicLink()) return false;\n return realpathSync(dest) === realpathSync(source);\n } catch {\n return false;\n }\n}\n\n/** 把单个 Skill 落到 dest:软链或复制;返回安装/跳过结果。 */\nfunction linkOrCopy(source: string, dest: string, mode: \"symlink\" | \"copy\"): void {\n if (mode === \"copy\") {\n cpSync(source, dest, { recursive: true });\n return;\n }\n try {\n symlinkSync(source, dest, \"dir\");\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n if (e.code === \"EPERM\" || e.code === \"EACCES\") {\n throw new YoooclawError(\n \"YOOOCLAW_STORAGE_UNAVAILABLE\",\n `创建软链失败(${e.code}):${dest}`,\n { hint: \"Windows 无管理员权限时无法创建软链,请改用 `yoooclaw skills install --copy`\" },\n );\n }\n throw err;\n }\n}\n\nfunction installOne(\n skill: BundledSkill,\n target: string,\n mode: \"symlink\" | \"copy\",\n force: boolean,\n): InstallResult {\n const source = realpathSync(skill.dir);\n const dest = join(target, skill.name);\n\n if (existsSync(dest) || isSymlinkPresent(dest)) {\n // 已是指向同一来源的软链 → 幂等视作已安装\n if (mode === \"symlink\" && isSameSymlink(dest, source)) {\n return { name: skill.name, status: \"installed\", via: \"symlink\", dest };\n }\n if (!force) {\n return { name: skill.name, status: \"skipped\", reason: \"目标已存在,加 --force 覆盖\", dest };\n }\n rmSync(dest, { recursive: true, force: true });\n }\n\n linkOrCopy(source, dest, mode);\n return { name: skill.name, status: \"installed\", via: mode, dest };\n}\n\nexport function skillsInstall(\n _ctx: CliContext,\n _args: unknown[],\n opts: InstallOpts,\n): unknown {\n const skillsDir = resolveBundledSkillsDir();\n const skills = listBundledSkills(skillsDir);\n const selection = resolveTargetSelection(opts);\n const target = selection.target;\n const mode: \"symlink\" | \"copy\" = opts.copy ? \"copy\" : \"symlink\";\n\n mkdirSync(target, { recursive: true });\n\n const results = skills.map((skill) => installOne(skill, target, mode, opts.force ?? false));\n const installed = results.filter((r) => r.status === \"installed\");\n return {\n ok: true,\n agent: selection.agent,\n agentLabel: selection.agentLabel,\n target,\n targetSource: selection.source,\n mode,\n sourceDir: skillsDir,\n installed: installed.map((r) => r.name),\n skipped: results.filter((r) => r.status === \"skipped\"),\n results,\n detectedTargets: selection.detectedTargets,\n hint:\n installed.length > 0\n ? \"重启 agent 会话后即可被发现;试试说\\\"看看最近的通知\\\"触发 yoooclaw-notification-query\"\n : \"没有新安装的 Skill(已存在则加 --force 覆盖)\",\n };\n}\n\n/** existsSync 对断链返回 false,这里补一个 lstat 探测,避免断链残留挡住安装。 */\nfunction isSymlinkPresent(p: string): boolean {\n try {\n lstatSync(p);\n return true;\n } catch {\n return false;\n }\n}\n",
|
|
95
|
-
"/**\n * daemon service —— start / stop / restart / status / logs / run-foreground(🔵)。\n */\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync, statSync, watchFile } from \"node:fs\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { requireConfig } from \"../config/store.js\";\nimport { daemonState, isProcessAlive, readLock, removeLock } from \"../daemon/lock.js\";\nimport { DaemonClient } from \"../daemon/client.js\";\nimport { runDaemonForeground, type DaemonStartOpts } from \"../daemon/main.js\";\n\ninterface StartOpts {\n bind?: string;\n port?: string;\n detach?: boolean; // commander:--no-detach → false\n logLevel?: string;\n}\n\nfunction startOpts(opts: StartOpts): DaemonStartOpts {\n return {\n bind: opts.bind,\n port: opts.port ? Number(opts.port) : undefined,\n logLevel: opts.logLevel,\n };\n}\n\n/** 内部命令:前台运行 daemon 主循环(detach 子进程入口)。 */\nexport async function daemonRunForeground(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true }; // 实际不会到这(runDaemonForeground 不 resolve)\n}\n\nexport async function daemonStart(\n ctx: CliContext,\n _args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n requireConfig(ctx.paths);\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n { pid: state.lock?.pid },\n );\n }\n if (state.stale) removeLock(ctx.paths);\n\n // --no-detach:前台运行(systemd/launchd 包装)\n if (opts.detach === false) {\n await runDaemonForeground(ctx, startOpts(opts));\n return { ok: true };\n }\n\n // 默认:fork 子进程跑 run-foreground 并 detach\n const binEntry = process.argv[1];\n const args = [binEntry, \"daemon\", \"run-foreground\", \"--profile\", ctx.profile];\n if (opts.bind) args.push(\"--bind\", opts.bind);\n if (opts.port) args.push(\"--port\", opts.port);\n if (opts.logLevel) args.push(\"--log-level\", opts.logLevel);\n\n const child = spawn(process.execPath, args, {\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n env: process.env,\n });\n child.unref();\n\n // 轮询 lock 确认起来(最多 ~3s)\n for (let i = 0; i < 30; i += 1) {\n await sleep(100);\n const s = daemonState(ctx.paths);\n if (s.running) {\n return { ok: true, pid: s.lock?.pid, bind: s.lock?.bind, port: s.lock?.port, detached: true };\n }\n }\n throw new YoooclawError(\n \"YOOOCLAW_UNKNOWN\",\n \"daemon 启动超时(3s 内未写出 lock)\",\n { hint: \"查看 yoooclaw daemon logs 排查\" },\n );\n}\n\nexport async function daemonStop(ctx: CliContext): Promise<unknown> {\n const lock = readLock(ctx.paths);\n if (!lock || !isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n throw new YoooclawError(\"YOOOCLAW_DAEMON_NOT_RUNNING\", \"daemon 未运行\");\n }\n\n // Windows 上 Node 没有真正的 POSIX 信号:process.kill(pid, \"SIGTERM\") 等价于\n // TerminateProcess,daemon 的 shutdown() 优雅退出钩子(隧道断开、移除 lock)不会跑。\n // 因此 Windows 优先打 HTTP /daemon/stop 让 daemon 自己走优雅退出,失败再回退到硬杀。\n const graceful = process.platform === \"win32\"\n ? \"stop-endpoint\"\n : \"SIGTERM\";\n if (graceful === \"stop-endpoint\") {\n try {\n await new DaemonClient(ctx.paths).post(\"/daemon/stop\");\n } catch {\n /* daemon 可能拒绝鉴权或刚退出;继续轮询 + 回退硬杀 */\n }\n } else {\n try {\n process.kill(lock.pid, \"SIGTERM\");\n } catch {\n /* 进程可能刚退出 */\n }\n }\n\n // 等待优雅退出,最多 10s\n for (let i = 0; i < 100; i += 1) {\n await sleep(100);\n if (!isProcessAlive(lock.pid)) {\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: graceful };\n }\n }\n try {\n process.kill(lock.pid, \"SIGKILL\");\n } catch {\n /* ignore */\n }\n removeLock(ctx.paths);\n return { ok: true, stopped: lock.pid, signal: \"SIGKILL\" };\n}\n\nexport async function daemonRestart(\n ctx: CliContext,\n args: unknown[],\n opts: StartOpts,\n): Promise<unknown> {\n const lock = readLock(ctx.paths);\n const inheritedOpts: StartOpts = {\n ...opts,\n bind: opts.bind ?? lock?.bind,\n port: opts.port ?? (lock?.port ? String(lock.port) : undefined),\n logLevel: opts.logLevel ?? lock?.logLevel,\n };\n if (lock && isProcessAlive(lock.pid)) {\n await daemonStop(ctx);\n }\n return daemonStart(ctx, args, inheritedOpts);\n}\n\nexport async function daemonReload(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n return { ok: true, running: false, reloaded: false };\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.post(\"/daemon/reload\");\n return res.body;\n}\n\nexport async function daemonStatus(ctx: CliContext): Promise<unknown> {\n const state = daemonState(ctx.paths);\n if (!state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_NOT_RUNNING\",\n \"daemon 未运行\",\n { stale: state.stale, hint: \"yoooclaw daemon start\" },\n );\n }\n const client = new DaemonClient(ctx.paths);\n const res = await client.get(\"/daemon/status\");\n return res.body;\n}\n\ninterface LogsOpts {\n follow?: boolean;\n lines?: string;\n level?: string;\n}\n\nfunction tailLines(file: string, n: number): string[] {\n if (!existsSync(file)) return [];\n const content = readFileSync(file, \"utf-8\").split(\"\\n\").filter(Boolean);\n return content.slice(-n);\n}\n\nexport async function daemonLogs(\n ctx: CliContext,\n _args: unknown[],\n opts: LogsOpts,\n): Promise<unknown> {\n const n = opts.lines ? Number(opts.lines) : 100;\n const file = ctx.paths.daemonLog;\n let lines = tailLines(file, n);\n if (opts.level) {\n const want = `[${opts.level.toUpperCase()}]`;\n lines = lines.filter((l) => l.includes(want));\n }\n\n if (!opts.follow) {\n return { ok: true, file, total: lines.length, lines };\n }\n\n // --follow:先打印 tail,再持续输出新增行(raw 到 stdout,不经 --format)\n for (const l of lines) process.stdout.write(l + \"\\n\");\n let size = existsSync(file) ? statSync(file).size : 0;\n await new Promise<void>(() => {\n watchFile(file, { interval: 500 }, () => {\n if (!existsSync(file)) return;\n const cur = statSync(file).size;\n if (cur > size) {\n const chunk = readFileSync(file, \"utf-8\").slice(-(cur - size));\n size = cur;\n process.stdout.write(chunk);\n } else if (cur < size) {\n size = cur; // 轮转\n }\n });\n });\n return { ok: true };\n}\n",
|
|
96
|
-
"/**\n * daemon 主循环(前台运行体)。`daemon start` 默认 fork 一个子进程跑 `daemon run-foreground`,\n * 该命令最终调用这里的 runDaemonForeground。\n *\n * 职责:单实例锁 → 装配 StandaloneRuntime + 存储 + 通知/图片/灯效规则注册 → 起 HTTP server →\n * 起 Relay 隧道 → 写 lock → 捕获信号优雅退出。\n *\n * 关于 Relay:复用 phone-notifications 插件那套托管 Relay 服务(RelayClient + TunnelProxy,见\n * daemon/relay.ts)。daemon 用 account 级 api-key 连上 Relay,手机端经 Relay 转发进来的请求被反代到\n * 本 daemon 的 HTTP server。未设 api-key 时跳过隧道,仍可走直连 HTTP(cloudflared / tailscale serve)。\n */\nimport { watchFile, unwatchFile } from \"node:fs\";\nimport { createServer, type IncomingMessage, type ServerResponse, type Server } from \"node:http\";\nimport type { CliContext } from \"../context.js\";\nimport { loadConfig } from \"../config/store.js\";\nimport { sharedCredentialsPath } from \"../paths.js\";\nimport { resolveGatewayToken } from \"../credentials/store.js\";\nimport { resolveApiKeyEntries, type CredentialSet } from \"../credentials/store.js\";\nimport { daemonState, writeLock, removeLock } from \"./lock.js\";\nimport { DaemonLogger } from \"./logger.js\";\nimport { StandaloneRuntime } from \"./runtime.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport { ingestImage, type ImageSyncPayload } from \"../image/channel.js\";\nimport { listMonitors, createMonitor, deleteMonitor, setMonitorEnabled } from \"../monitor/store.js\";\nimport { CLI_VERSION } from \"../version.js\";\nimport {\n NotificationStorage,\n registerNotificationInterfaces,\n RecordingStorage,\n registerRecordingInterfaces,\n LightRuleRegistry,\n registerLightRulesGateway,\n RELAY_INTERNAL_HTTP_HEADER,\n runWithIngestContext,\n type IngestContext,\n type PluginConfig,\n} from \"../shared.js\";\nimport { performLightSend } from \"./light-send.js\";\nimport { RecordingEventLog } from \"./recording-events.js\";\nimport { overrideRecordingSync } from \"./recording-bridge.js\";\nimport { registerDaemonGatewayCompatMethods } from \"./gateway-compat.js\";\nimport { RELAY_INTERNAL_CLIENT_LABEL_HEADER } from \"./relay-dispatcher.js\";\nimport { TunnelSupervisor } from \"./tunnel-supervisor.js\";\n\nexport const PROTOCOL_VERSION = 1;\nexport const CAPABILITIES = [\"notifications\", \"recordings\", \"images\", \"lightrules\", \"multi-apikey\"];\n\nexport interface DaemonStartOpts {\n bind?: string;\n port?: number;\n logLevel?: string;\n}\n\ninterface DaemonState {\n startedAt: string;\n lastIngestAt: string | null;\n ingestCount: number;\n}\n\nasync function readBody(req: IncomingMessage): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(chunk as Buffer);\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nfunction sendJson(res: ServerResponse, status: number, body: unknown): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n}\n\nexport async function runDaemonForeground(\n ctx: CliContext,\n opts: DaemonStartOpts,\n): Promise<void> {\n const state = daemonState(ctx.paths);\n if (state.running) {\n throw new YoooclawError(\n \"YOOOCLAW_DAEMON_ALREADY_RUNNING\",\n `daemon 已在运行(pid ${state.lock?.pid})`,\n );\n }\n\n const config = loadConfig(ctx.paths);\n const bind = opts.bind ?? config.daemon.bind;\n // 起始端口;listen 时若被占用会自动 +1(见下方 listen 循环),port 最终为实际绑定端口。\n let port = opts.port ?? config.daemon.port;\n const logLevel = (opts.logLevel ?? config.daemon.logLevel) as never;\n const token = resolveGatewayToken(config).value;\n let credentialSet: CredentialSet = resolveApiKeyEntries();\n\n // 安全:绑公网必须有 token\n const loopback = bind === \"127.0.0.1\" || bind === \"::1\" || bind === \"localhost\";\n if (!loopback && !token) {\n throw new YoooclawError(\n \"YOOOCLAW_UNAUTHORIZED\",\n `绑定 ${bind} 需要先设置 gateway token`,\n { hint: \"运行 yoooclaw auth token-rotate 或改回 127.0.0.1\" },\n );\n }\n\n ensureDir(ctx.paths.dir);\n const logger = new DaemonLogger(ctx.paths.daemonLog, logLevel, false);\n const runtimeState: DaemonState = {\n startedAt: new Date().toISOString(),\n lastIngestAt: null,\n ingestCount: 0,\n };\n\n const pluginConfig: PluginConfig = {\n retentionDays: config.notification.retentionDays ?? undefined,\n ignoredApps: config.notification.ignoredApps,\n };\n\n const runtime = new StandaloneRuntime(logger, pluginConfig as Record<string, unknown>, ctx.paths.dir);\n\n // 通知存储\n const storage = new NotificationStorage(ctx.paths.notifications, pluginConfig, logger);\n await storage.init();\n\n // 录音存储(接收手机端 recordings.sync / POST /recordings)\n const recordingStorage = new RecordingStorage(ctx.paths.recordings, logger);\n await recordingStorage.init();\n\n // 录音状态事件流:日志 + JSONL(CLI / Agent 通过 `yc recording events` 消费)+ 反向推手机\n const recordingEventLog = new RecordingEventLog(ctx.paths.recordings);\n // pushRecordingStatus 在 relayHandle 启动后才有值;用 mutable 闭包变量延后绑定\n let pushRecordingStatus: ((event: import(\"../shared.js\").RecordingStatusEvent) => void) | undefined;\n const notifyRecordingStatus = (event: import(\"../shared.js\").RecordingStatusEvent) => {\n logger.info(\n `[recording-status] ${event.recordingId} → ${event.transfer_status}${\n event.error ? ` err=${event.error}` : \"\"\n }`,\n );\n try {\n recordingEventLog.append(event);\n } catch (err) {\n logger.warn(`[recording-status] 事件落盘失败: ${(err as Error).message}`);\n }\n // 反向推送到手机端(客户端合同:recording.status event;recordings.status RPC 是兜底)\n try {\n pushRecordingStatus?.(event);\n } catch (err) {\n logger.warn(`[recording-status] event push 失败: ${(err as Error).message}`);\n }\n };\n\n // 灯效规则注册(rules 落 <profile>/tasks/)\n const lightRuleRegistry = new LightRuleRegistry({ workspaceDir: ctx.paths.dir });\n\n const ignored = new Set(config.notification.ignoredApps ?? []);\n registerNotificationInterfaces({\n // 结构兼容 OpenClawPluginApi 的子集\n api: runtime as never,\n logger,\n getStorage: () => storage,\n filterNotifications: (items) => items.filter((n) => !ignored.has(n.app)),\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n onAfterIngest: (inserted) => {\n runtimeState.lastIngestAt = new Date().toISOString();\n runtimeState.ingestCount += inserted.length;\n },\n });\n registerRecordingInterfaces({\n api: runtime as never,\n logger,\n asrDataDir: ctx.paths.recordings,\n getRecordingStorage: () => recordingStorage,\n notifyRecordingStatus,\n registerGatewayMethod: (m, h) => runtime.registerGatewayMethod(m, h as never),\n shouldBroadcastStatusOnHttp: () => true,\n tunnelService: null,\n });\n // 覆盖 sync:注入本地 asr-config.json + account 级 ock- key fallback\n overrideRecordingSync({\n runtime,\n storage: recordingStorage,\n logger,\n fallbackApiKey: () => credentialSet.defaultEntry?.key,\n asrConfigDir: ctx.paths.recordings,\n notifyStatus: notifyRecordingStatus,\n });\n registerLightRulesGateway(runtime as never, lightRuleRegistry, logger);\n\n const server = createServer((req, res) => {\n void handleRequest(req, res).catch((err) => {\n logger.error(`请求处理异常:${(err as Error).message}`);\n if (!res.headersSent) sendJson(res, 500, { ok: false, error: { code: \"INTERNAL_ERROR\", message: (err as Error).message } });\n });\n });\n\n function headerValue(req: IncomingMessage, name: string): string | undefined {\n const value = req.headers[name.toLowerCase()];\n return Array.isArray(value) ? value[0] : value;\n }\n\n function bearerValue(req: IncomingMessage): string | undefined {\n const header = headerValue(req, \"authorization\")?.trim();\n if (!header?.toLowerCase().startsWith(\"bearer \")) return undefined;\n return header.slice(\"Bearer \".length).trim();\n }\n\n function stripBearer(value: string): string {\n return value.startsWith(\"Bearer \") ? value.slice(\"Bearer \".length) : value;\n }\n\n function labelForApiKey(apiKey: string | undefined): string | undefined {\n if (!apiKey) return undefined;\n const raw = stripBearer(apiKey);\n return credentialSet.entries.find((entry) => stripBearer(entry.key) === raw)?.label;\n }\n\n function isIngestPath(path: string): boolean {\n return path === \"/notifications\"\n || path === \"/recordings\"\n || path === \"/images\"\n || path === \"/gateway/notifications.push\"\n || path === \"/gateway/recordings.sync\"\n || path === \"/gateway/images.sync\";\n }\n\n function authContextForRequest(req: IncomingMessage, path: string): { ok: true; context: IngestContext } | { ok: false } {\n const internalRelay = headerValue(req, RELAY_INTERNAL_HTTP_HEADER) === \"1\";\n const internalLabel = headerValue(req, RELAY_INTERNAL_CLIENT_LABEL_HEADER)?.trim();\n const bearer = bearerValue(req);\n const gatewayTokenOk = token ? bearer === token : true;\n\n if (internalRelay && internalLabel && gatewayTokenOk) {\n return { ok: true, context: { clientLabel: internalLabel, authKind: \"relay-api-key\" } };\n }\n\n if (token && bearer === token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"gateway-token\" } };\n }\n\n if (isIngestPath(path)) {\n const label = labelForApiKey(bearer);\n if (label) {\n return { ok: true, context: { clientLabel: label, authKind: \"http-api-key\" } };\n }\n }\n\n if (!token) {\n return { ok: true, context: { clientLabel: \"local\", authKind: \"local\" } };\n }\n\n return { ok: false };\n }\n\n /** 汇总当前 Relay 状态(隧道未启用/未连时给出可执行提示)。 */\n function relayStatus(): {\n mode: \"relay\" | \"standalone-http\";\n connected: boolean;\n url: string;\n enabled: boolean;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n note?: string;\n } {\n if (tunnelSupervisor) {\n const s = tunnelSupervisor.defaultStatus();\n if (s) {\n return {\n mode: \"relay\",\n connected: s.connected,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.connected ? undefined : \"Relay 重连中\",\n };\n }\n return {\n mode: \"relay\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: \"Relay 已启用但当前 CredentialSet 没有可用 api-key\",\n };\n }\n return {\n mode: \"standalone-http\",\n connected: false,\n url: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: 0,\n note: config.relay.enabled\n ? \"Relay 已启用但未设置 api-key:运行 yc auth set-api-key <ock_…> 后重启 daemon;当前可走直连 HTTP(cloudflared / tailscale serve)\"\n : \"Relay 未启用,走直连 HTTP\",\n };\n }\n\n registerDaemonGatewayCompatMethods(runtime, {\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n profile: ctx.profile,\n bind,\n getPort: () => port,\n startedAt: runtimeState.startedAt,\n getLastIngestAt: () => runtimeState.lastIngestAt,\n getIngestCount: () => runtimeState.ingestCount,\n getLightRuleCount: () => lightRuleRegistry.list().length,\n getRelayStatus: relayStatus,\n });\n\n async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const url = new URL(req.url ?? \"/\", \"http://localhost\");\n const path = url.pathname;\n const method = req.method ?? \"GET\";\n\n // /health 公开(手机端协议协商)\n if (path === \"/health\" && method === \"GET\") {\n sendJson(res, 200, {\n server: \"yoooclaw\",\n version: CLI_VERSION,\n protocol: PROTOCOL_VERSION,\n capabilities: CAPABILITIES,\n });\n return;\n }\n\n const auth = authContextForRequest(req, path);\n if (!auth.ok) {\n sendJson(res, 401, { ok: false, error: { code: \"YOOOCLAW_UNAUTHORIZED\", message: \"token 不一致或缺失\" } });\n return;\n }\n const ingestContext = auth.context;\n\n // ── 控制面 ──\n if (path === \"/daemon/status\" && method === \"GET\") {\n const supervisorStatus = tunnelSupervisor?.status();\n sendJson(res, 200, {\n ok: true,\n server: \"yoooclaw\",\n version: CLI_VERSION,\n pid: process.pid,\n profile: ctx.profile,\n bind,\n port,\n startedAt: runtimeState.startedAt,\n lastIngestAt: runtimeState.lastIngestAt,\n ingestCount: runtimeState.ingestCount,\n lightRules: lightRuleRegistry.list().length,\n relay: relayStatus(),\n tunnels: supervisorStatus?.tunnels ?? [],\n credentialMode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n credentialWarnings: credentialSet.warnings,\n memoryRssBytes: process.memoryUsage().rss,\n });\n return;\n }\n if (path === \"/daemon/reload\" && method === \"POST\") {\n const result = await reloadCredentialsAndTunnels(\"manual\");\n sendJson(res, 200, { ok: true, running: true, reloaded: true, ...result });\n return;\n }\n if (path === \"/daemon/stop\" && method === \"POST\") {\n sendJson(res, 200, { ok: true, stopping: true });\n logger.info(\"收到 /daemon/stop,准备优雅退出\");\n setTimeout(() => void shutdown(\"stop-endpoint\"), 50);\n return;\n }\n if (path === \"/tunnel/status\" && method === \"GET\") {\n const s = relayStatus();\n const supervisorStatus = tunnelSupervisor?.status();\n const clientLabel = url.searchParams.get(\"client\")?.trim();\n const tunnels = clientLabel && clientLabel !== \"all\"\n ? (supervisorStatus?.tunnels ?? []).filter((tunnel) => tunnel.label === clientLabel)\n : supervisorStatus?.tunnels ?? [];\n sendJson(res, 200, {\n ok: true,\n mode: s.mode,\n credentialMode: credentialSet.mode,\n defaultLabel: supervisorStatus?.defaultLabel ?? credentialSet.defaultEntry?.label ?? null,\n connected: s.connected,\n relayUrl: config.relay.url,\n enabled: config.relay.enabled,\n reconnectAttempt: s.reconnectAttempt,\n lastDisconnectReason: s.lastDisconnectReason,\n note: s.note,\n tunnels,\n });\n return;\n }\n if (path === \"/tunnel/reconnect\" && method === \"POST\") {\n if (!tunnelSupervisor) {\n sendJson(res, 200, { ok: true, mode: relayStatus().mode, reconnected: false, note: relayStatus().note });\n return;\n }\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client\n : undefined;\n const result = await tunnelSupervisor.reconnect(clientLabel);\n if (result.missing) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${result.missing}` } });\n return;\n }\n sendJson(res, 200, { ok: true, mode: \"relay\", reconnected: true, labels: result.reconnected });\n return;\n }\n if (path === \"/tunnel/test\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const clientLabel = typeof (body as { client?: unknown }).client === \"string\"\n ? (body as { client: string }).client.trim()\n : undefined;\n const entry = clientLabel && clientLabel !== \"all\"\n ? credentialSet.entries.find((candidate) => candidate.label === clientLabel)\n : undefined;\n if (clientLabel && clientLabel !== \"all\" && !entry) {\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_TUNNEL_LABEL_NOT_FOUND\", message: `隧道不存在:${clientLabel}` } });\n return;\n }\n // 回环自检:daemon 自己 POST 一条 echo 通知到本地 /notifications\n const echo = await selfEchoCheck(`http://127.0.0.1:${port}`, {\n token: entry ? undefined : token,\n apiKey: entry?.key,\n clientLabel: entry?.label ?? \"local\",\n });\n sendJson(res, 200, { ok: echo.ok, mode: relayStatus().mode, clientLabel: entry?.label ?? \"local\", loopback: echo });\n return;\n }\n if (path === \"/light/send\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const outcome = await performLightSend(body as Parameters<typeof performLightSend>[0], {\n logger,\n registry: lightRuleRegistry,\n });\n sendJson(res, outcome.status, outcome.body);\n return;\n }\n if (path === \"/images\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n const result = runWithIngestContext(ingestContext, () =>\n ingestImage(ctx.paths, body as ImageSyncPayload, {\n maxBytes: config.image.maxBytes,\n logger,\n }));\n sendJson(res, 200, result);\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n // monitors CRUD(定义存储;本 build 不做 live cron 触发)\n if (path === \"/monitors\" && method === \"GET\") {\n sendJson(res, 200, { ok: true, monitors: listMonitors(ctx.paths) });\n return;\n }\n if (path === \"/monitors\" && method === \"POST\") {\n const body = await parseJson(req, res);\n if (body === undefined) return;\n try {\n sendJson(res, 200, { ok: true, monitor: createMonitor(ctx.paths, body as never) });\n } catch (err) {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: (err as Error).message } });\n }\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"DELETE\") {\n const name = decodeURIComponent(path.slice(\"/monitors/\".length));\n sendJson(res, 200, { ok: true, deleted: deleteMonitor(ctx.paths, name) });\n return;\n }\n if (path.startsWith(\"/monitors/\") && method === \"POST\") {\n const [, , name, action] = path.split(\"/\");\n const enabled = action === \"enable\";\n sendJson(res, 200, { ok: setMonitorEnabled(ctx.paths, decodeURIComponent(name), enabled), name, enabled });\n return;\n }\n\n // gateway 桥:POST /gateway/<method>\n if (path.startsWith(\"/gateway/\") && method === \"POST\") {\n const gwMethod = path.slice(\"/gateway/\".length);\n const body = await parseJson(req, res);\n if (body === undefined) return;\n const result = await runtime.callGateway(gwMethod, body, ingestContext);\n sendJson(res, result.ok ? 200 : 400, result);\n return;\n }\n\n // 注册的 HTTP 路由(如 POST /notifications)\n const route = runtime.httpRoutes.get(path);\n if (route) {\n await runWithIngestContext(ingestContext, () => route.handler(req, res));\n return;\n }\n\n sendJson(res, 404, { ok: false, error: { code: \"YOOOCLAW_NOT_FOUND\", message: `未知路径:${path}` } });\n }\n\n async function parseJson(req: IncomingMessage, res: ServerResponse): Promise<unknown | undefined> {\n try {\n const raw = await readBody(req);\n return raw ? JSON.parse(raw) : {};\n } catch {\n sendJson(res, 400, { ok: false, error: { code: \"INVALID_PARAMS\", message: \"请求体不是合法 JSON\" } });\n return undefined;\n }\n }\n\n let serverRef: Server | null = null;\n let tunnelSupervisor: TunnelSupervisor | null = null;\n let credentialWatchTimer: NodeJS.Timeout | null = null;\n let shuttingDown = false;\n\n async function reloadCredentialsAndTunnels(reason: string): Promise<{\n mode: CredentialSet[\"mode\"];\n defaultLabel: string | null;\n started: string[];\n stopped: string[];\n restarted: string[];\n unchanged: string[];\n warnings: string[];\n }> {\n credentialSet = resolveApiKeyEntries();\n const result = tunnelSupervisor\n ? await tunnelSupervisor.apply(credentialSet)\n : { started: [], stopped: [], restarted: [], unchanged: [] };\n logger.info(\n `CredentialSet reload(${reason}): mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"}, ` +\n `started=${result.started.join(\",\") || \"-\"} stopped=${result.stopped.join(\",\") || \"-\"} restarted=${result.restarted.join(\",\") || \"-\"}`,\n );\n return {\n mode: credentialSet.mode,\n defaultLabel: credentialSet.defaultEntry?.label ?? null,\n warnings: credentialSet.warnings,\n ...result,\n };\n }\n\n function startCredentialWatcher(): void {\n const file = sharedCredentialsPath();\n watchFile(file, { interval: 500 }, () => {\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n credentialWatchTimer = setTimeout(() => {\n void reloadCredentialsAndTunnels(\"watch\").catch((err) => {\n logger.warn(`CredentialSet watch reload failed: ${(err as Error).message}`);\n });\n }, 200);\n });\n }\n\n async function shutdown(reason: string): Promise<void> {\n if (shuttingDown) return;\n shuttingDown = true;\n logger.info(`daemon 退出(${reason})`);\n unwatchFile(sharedCredentialsPath());\n if (credentialWatchTimer) clearTimeout(credentialWatchTimer);\n try {\n await tunnelSupervisor?.stopAll(reason);\n } catch {\n /* ignore */\n }\n try {\n await storage.close();\n } catch {\n /* ignore */\n }\n try {\n await recordingStorage.close();\n } catch {\n /* ignore */\n }\n serverRef?.close();\n removeLock(ctx.paths);\n process.exit(0);\n }\n\n // listen;遇 EADDRINUSE(端口被其它进程占用)则端口 +1 重试,port 最终为实际绑定端口。\n const listenOnce = (p: number): Promise<void> =>\n new Promise<void>((resolve, reject) => {\n const onError = (err: NodeJS.ErrnoException) => {\n server.removeListener(\"listening\", onListening);\n reject(err);\n };\n const onListening = () => {\n server.removeListener(\"error\", onError);\n resolve();\n };\n server.once(\"error\", onError);\n server.once(\"listening\", onListening);\n server.listen(p, bind);\n });\n\n const startPort = port;\n for (let attempt = 0; ; attempt += 1) {\n try {\n await listenOnce(port);\n break;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"EADDRINUSE\" && attempt < 64) {\n const next = port + 1;\n logger.warn(`端口 ${port} 被占用,改试 ${next}`);\n port = next;\n continue;\n }\n throw err;\n }\n }\n if (port !== startPort) {\n logger.info(`起始端口 ${startPort} 被占用,最终绑定到 ${port}`);\n }\n serverRef = server;\n writeLock(ctx.paths, {\n pid: process.pid,\n startedAt: runtimeState.startedAt,\n bind,\n port,\n logLevel: String(logLevel),\n });\n logger.info(`yoooclaw daemon 启动:${bind}:${port}(profile=${ctx.profile}, pid=${process.pid})`);\n\n // Relay 隧道:复用插件连接逻辑,反代到本 daemon 自己的 HTTP server。\n if (config.relay.enabled) {\n tunnelSupervisor = new TunnelSupervisor({\n tunnelUrl: config.relay.url,\n runtime,\n httpBaseUrl: `http://127.0.0.1:${port}`,\n httpToken: token,\n heartbeatSec: config.relay.heartbeatSec,\n reconnectBackoffMs: config.relay.reconnectBackoffMs,\n stateDir: ctx.paths.dir,\n logger,\n });\n const result = await tunnelSupervisor.apply(credentialSet);\n pushRecordingStatus = (event) => tunnelSupervisor?.pushEvent(\"recording.status\", event);\n startCredentialWatcher();\n if (credentialSet.entries.length > 0) {\n logger.info(\n `Relay 多隧道已启动:${result.started.join(\",\") || \"-\"}(mode=${credentialSet.mode}, default=${credentialSet.defaultEntry?.label ?? \"-\"})`,\n );\n } else {\n logger.warn(\"Relay 已启用但未设置 api-key,跳过隧道连接。运行 yc auth set-api-key <ock_…> 或 yc auth add-api-key <ock_…> --label <label>\");\n }\n } else {\n logger.info(\"Relay 未启用(config.relay.enabled=false),仅走直连 HTTP\");\n }\n\n process.on(\"SIGTERM\", () => void shutdown(\"SIGTERM\"));\n process.on(\"SIGINT\", () => void shutdown(\"SIGINT\"));\n\n // 前台保持运行(http server 维持 event loop);返回的 promise 永不 resolve\n await new Promise<void>(() => {});\n}\n\nasync function selfEchoCheck(\n baseUrl: string,\n opts: { token?: string; apiKey?: string; clientLabel?: string } = {},\n): Promise<{ ok: boolean; status?: number; clientLabel?: string; error?: string }> {\n try {\n const authValue = opts.apiKey\n ? opts.apiKey.replace(/^Bearer\\s+/i, \"\")\n : opts.token;\n const res = await fetch(`${baseUrl}/notifications`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(authValue ? { Authorization: `Bearer ${authValue}` } : {}),\n },\n body: JSON.stringify({\n notifications: [\n {\n id: `echo_${opts.clientLabel ?? \"local\"}_${Date.now()}`,\n app: \"yoooclaw.selftest\",\n title: \"tunnel +test\",\n body: \"echo\",\n timestamp: new Date().toISOString(),\n },\n ],\n }),\n });\n return { ok: res.ok, status: res.status, clientLabel: opts.clientLabel };\n } catch (err) {\n return { ok: false, clientLabel: opts.clientLabel, error: (err as Error).message };\n }\n}\n",
|
|
97
|
-
"/**\n * daemon 文件 logger —— 写 `daemon.log`,按日期轮转为 `daemon.log.YYYY-MM-DD`。\n * 行格式:`<ISO本地时间> [LEVEL] message`(与 src/log/reader.ts 解析一致)。\n */\nimport { appendFileSync, existsSync, renameSync, statSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { ensureDir } from \"../fs-utils.js\";\nimport type { LogLevel } from \"../config/schema.js\";\n\nconst LEVEL_ORDER: Record<string, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n trace: 4,\n};\n\nfunction isoLocal(d: Date): string {\n const pad = (n: number, w = 2) => String(n).padStart(w, \"0\");\n const off = -d.getTimezoneOffset();\n const sign = off >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(off);\n return (\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` +\n `T${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}` +\n `${sign}${pad(Math.floor(abs / 60))}:${pad(abs % 60)}`\n );\n}\n\nfunction dateKey(d: Date): string {\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\nexport class DaemonLogger {\n private currentDay: string;\n\n constructor(\n private readonly logFile: string,\n private readonly level: LogLevel = \"info\",\n private readonly alsoStderr = false,\n ) {\n ensureDir(dirname(logFile));\n this.currentDay = dateKey(new Date());\n this.rotateIfNeeded(new Date());\n }\n\n private enabled(level: string): boolean {\n return (LEVEL_ORDER[level] ?? 2) <= (LEVEL_ORDER[this.level] ?? 2);\n }\n\n private rotateIfNeeded(now: Date): void {\n if (!existsSync(this.logFile)) return;\n let fileDay: string | undefined;\n try {\n fileDay = dateKey(statSync(this.logFile).mtime);\n } catch {\n return;\n }\n const today = dateKey(now);\n if (fileDay !== today) {\n try {\n renameSync(this.logFile, `${this.logFile}.${fileDay}`);\n } catch {\n // 轮转失败不影响写入\n }\n }\n }\n\n private write(level: string, msg: string): void {\n if (!this.enabled(level)) return;\n const now = new Date();\n if (dateKey(now) !== this.currentDay) {\n this.rotateIfNeeded(now);\n this.currentDay = dateKey(now);\n }\n const line = `${isoLocal(now)} [${level.toUpperCase()}] ${msg}\\n`;\n try {\n appendFileSync(this.logFile, line);\n } catch {\n // 忽略写文件失败\n }\n if (this.alsoStderr) process.stderr.write(line);\n }\n\n debug(msg: string): void { this.write(\"debug\", msg); }\n info(msg: string): void { this.write(\"info\", msg); }\n warn(msg: string): void { this.write(\"warn\", msg); }\n error(msg: string): void { this.write(\"error\", msg); }\n}\n",
|
|
98
|
-
"/**\n * StandaloneRuntime —— 对外暴露**结构兼容** OpenClawPluginApi 的子集,\n * 让 phone-notifications 的注册模块(registerNotificationInterfaces /\n * registerLightRulesGateway 等)**不改代码**就能在 daemon 里跑。\n *\n * 实现侧:把注册进来的 HTTP 路由与 gateway 方法收集到 Map,由 daemon HTTP server 派发。\n * 不属于 CLI 形态的能力(registerTool / registerCli / on('before_prompt_build'))做 no-op。\n */\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { runWithIngestContext, type IngestContext } from \"../shared.js\";\n\nexport type HttpAuth = \"gateway\" | \"public\" | string;\nexport interface HttpRouteSpec {\n path: string;\n auth?: HttpAuth;\n handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;\n}\n\nexport type GatewayRespond = (\n ok: boolean,\n data?: unknown,\n error?: { code: string; message: string },\n) => void;\n\nexport interface GatewayOpts {\n params?: unknown;\n respond: GatewayRespond;\n context?: {\n broadcast?: (event: string, payload: unknown) => void;\n } & IngestContext;\n client?: unknown;\n}\nexport type GatewayHandler = (opts: GatewayOpts) => void | Promise<void>;\n\nexport interface GatewayResult {\n ok: boolean;\n data?: unknown;\n error?: { code: string; message: string };\n}\n\ninterface RuntimeLogger {\n debug: (m: string) => void;\n info: (m: string) => void;\n warn: (m: string) => void;\n error: (m: string) => void;\n}\n\nexport class StandaloneRuntime {\n readonly httpRoutes = new Map<string, HttpRouteSpec>();\n readonly gatewayMethods = new Map<string, GatewayHandler>();\n readonly services: string[] = [];\n\n constructor(\n readonly logger: RuntimeLogger,\n readonly pluginConfig: Record<string, unknown>,\n private readonly stateDir: string,\n ) {}\n\n /** runtime.state.resolveStateDir —— 兼容插件读 stateDir 的用法。 */\n readonly runtime = {\n state: {\n resolveStateDir: (): string => this.stateDir,\n },\n };\n\n registerHttpRoute(spec: HttpRouteSpec): void {\n this.httpRoutes.set(spec.path, spec);\n }\n\n registerGatewayMethod(method: string, handler: GatewayHandler): void {\n this.gatewayMethods.set(method, handler);\n }\n\n // ── CLI 形态下的 no-op(PRD「兼容性 shim」)──\n registerService(name: string): void {\n this.services.push(typeof name === \"string\" ? name : \"service\");\n }\n registerCli(): void {\n /* CLI 模式不复用插件 CLI 注册 */\n }\n registerTool(): void {\n /* CLI 不开 MCP,Agent 走 Skill + 直接调命令 */\n }\n on(): void {\n /* before_prompt_build 等宿主事件在 CLI 模式不参与 */\n }\n\n /** 调用一个 gateway 方法,把 respond 收敛成 Promise<GatewayResult>。 */\n callGateway(\n method: string,\n params: unknown,\n context?: IngestContext,\n ): Promise<GatewayResult> {\n const handler = this.gatewayMethods.get(method);\n if (!handler) {\n return Promise.resolve({\n ok: false,\n error: { code: \"METHOD_NOT_FOUND\", message: `未注册的 gateway 方法:${method}` },\n });\n }\n return new Promise<GatewayResult>((resolve) => {\n let settled = false;\n const respond: GatewayRespond = (ok, data, error) => {\n if (settled) return;\n settled = true;\n resolve({ ok, data, error });\n };\n Promise.resolve(runWithIngestContext(context, () => handler({ params, respond, context }))).catch((err) => {\n if (!settled) {\n settled = true;\n resolve({\n ok: false,\n error: { code: \"INTERNAL_ERROR\", message: (err as Error).message },\n });\n }\n });\n });\n }\n}\n",
|
|
99
|
-
"/**\n * 图片下发通道 —— 与录音链路同构:先落元数据 + respond(true),再后台从 OSS 下载本体。\n *\n * 入口:daemon 的 HTTP `POST /images` 与 gateway `images.sync` 都调用 ingestImage。\n * 复刻录音的同步状态机:syncing → synced / sync_failed;imageId 幂等去重。\n */\nimport { createWriteStream, existsSync, readFileSync } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { join } from \"node:path\";\nimport { ensureDir, writeJsonFile } from \"../fs-utils.js\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { currentClientLabel } from \"../shared.js\";\nimport {\n imagesIndexPath,\n type ImageIndexEntry,\n type ImageMetadata,\n} from \"./storage.js\";\n\nexport interface ImageSyncPayload {\n imageId: string;\n image: ImageMetadata;\n}\n\ninterface ChannelLogger {\n info: (m: string) => void;\n warn: (m: string) => void;\n}\n\nfunction readAll(paths: ProfilePaths): ImageIndexEntry[] {\n const p = imagesIndexPath(paths);\n if (!existsSync(p)) return [];\n try {\n const raw = JSON.parse(readFileSync(p, \"utf-8\"));\n return Array.isArray(raw?.images) ? raw.images : [];\n } catch {\n return [];\n }\n}\n\nfunction writeAll(paths: ProfilePaths, images: ImageIndexEntry[]): void {\n ensureDir(paths.images);\n writeJsonFile(imagesIndexPath(paths), { images });\n}\n\nfunction upsert(paths: ProfilePaths, entry: ImageIndexEntry): void {\n const images = readAll(paths);\n const idx = images.findIndex((i) => i.imageId === entry.imageId);\n if (idx >= 0) images[idx] = entry;\n else images.push(entry);\n writeAll(paths, images);\n}\n\nfunction extFromMime(mime?: string): string {\n if (!mime) return \"jpg\";\n if (mime.includes(\"png\")) return \"png\";\n if (mime.includes(\"webp\")) return \"webp\";\n if (mime.includes(\"gif\")) return \"gif\";\n return \"jpg\";\n}\n\nexport interface IngestImageResult {\n ok: boolean;\n imageId: string;\n status: ImageIndexEntry[\"status\"];\n deduped?: boolean;\n}\n\n/**\n * 接收图片下发:校验必填 → 落 syncing 元数据 → 后台下载(fire-and-forget)。\n * 幂等:imageId 已存在且 oss_image_url 未变化则跳过重复下载。\n */\nexport function ingestImage(\n paths: ProfilePaths,\n payload: ImageSyncPayload,\n opts: { maxBytes: number; logger: ChannelLogger },\n): IngestImageResult {\n const { imageId, image } = payload;\n if (!imageId || !image?.oss_image_url || !image?.created_at) {\n throw new Error(\"imageId / image.oss_image_url / image.created_at 必填\");\n }\n\n const existing = readAll(paths).find((i) => i.imageId === imageId);\n if (existing && existing.metadata.oss_image_url === image.oss_image_url && existing.status === \"synced\") {\n return { ok: true, imageId, status: \"synced\", deduped: true };\n }\n\n const entry: ImageIndexEntry = {\n imageId,\n clientLabel: currentClientLabel(\"default\"),\n metadata: image,\n localFile: null,\n thumbnail: null,\n status: \"syncing\",\n lastError: null,\n syncedAt: null,\n };\n upsert(paths, entry);\n\n void downloadInBackground(paths, entry, opts).catch((err) => {\n opts.logger.warn(`image[${imageId}] 后台下载异常:${(err as Error).message}`);\n });\n\n return { ok: true, imageId, status: \"syncing\" };\n}\n\nasync function downloadInBackground(\n paths: ProfilePaths,\n entry: ImageIndexEntry,\n opts: { maxBytes: number; logger: ChannelLogger },\n): Promise<void> {\n const filesDir = join(paths.images, \"files\");\n ensureDir(filesDir);\n const relative = `files/${entry.imageId}.${extFromMime(entry.metadata.mime_type)}`;\n const dest = join(paths.images, relative);\n\n try {\n const res = await fetch(entry.metadata.oss_image_url);\n if (!res.ok || !res.body) {\n throw new Error(`OSS 返回 ${res.status}`);\n }\n const declared = Number(res.headers.get(\"content-length\") ?? \"0\");\n if (declared && declared > opts.maxBytes) {\n throw new Error(`图片超过上限 ${opts.maxBytes} 字节`);\n }\n\n let written = 0;\n const fileStream = createWriteStream(dest);\n const reader = Readable.fromWeb(res.body as never);\n for await (const chunk of reader) {\n written += (chunk as Buffer).length;\n if (written > opts.maxBytes) {\n fileStream.destroy();\n throw new Error(`图片超过上限 ${opts.maxBytes} 字节`);\n }\n fileStream.write(chunk);\n }\n await new Promise<void>((resolve, reject) => {\n fileStream.end((err?: Error | null) => (err ? reject(err) : resolve()));\n });\n\n upsert(paths, {\n ...entry,\n localFile: relative,\n status: \"synced\",\n lastError: null,\n syncedAt: new Date().toISOString(),\n });\n opts.logger.info(`image[${entry.imageId}] 下载完成 (${written} bytes)`);\n } catch (err) {\n upsert(paths, {\n ...entry,\n status: \"sync_failed\",\n lastError: (err as Error).message,\n });\n opts.logger.warn(`image[${entry.imageId}] 下载失败:${(err as Error).message}`);\n }\n}\n",
|
|
100
|
-
"/**\n * 监控任务定义存储(state/monitors.json)。\n *\n * 本 build 负责定义的 CRUD 与启用状态;cron 实时触发为后续迭代(daemon 当前只持久化定义)。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { ProfilePaths } from \"../paths.js\";\nimport { ensureDir, writeJsonFile } from \"../fs-utils.js\";\n\nexport interface MonitorTask {\n name: string;\n description: string;\n matchRules: unknown;\n schedule: string;\n enabled: boolean;\n createdAt: string;\n updatedAt: string;\n lastRunAt: string | null;\n lastResult: unknown;\n}\n\nexport interface CreateMonitorInput {\n name: string;\n description: string;\n matchRules: unknown;\n schedule: string;\n}\n\nfunction storePath(paths: ProfilePaths): string {\n return join(paths.state, \"monitors.json\");\n}\n\nexport function listMonitors(paths: ProfilePaths): MonitorTask[] {\n const p = storePath(paths);\n if (!existsSync(p)) return [];\n try {\n const raw = JSON.parse(readFileSync(p, \"utf-8\"));\n return Array.isArray(raw?.monitors) ? raw.monitors : [];\n } catch {\n return [];\n }\n}\n\nfunction save(paths: ProfilePaths, monitors: MonitorTask[]): void {\n ensureDir(paths.state);\n writeJsonFile(storePath(paths), { monitors });\n}\n\nexport function createMonitor(paths: ProfilePaths, input: CreateMonitorInput): MonitorTask {\n if (!input.name || !input.description || !input.schedule || input.matchRules === undefined) {\n throw new Error(\"name / description / matchRules / schedule 均必填\");\n }\n const monitors = listMonitors(paths);\n if (monitors.some((m) => m.name === input.name)) {\n throw new Error(`监控任务已存在:${input.name}`);\n }\n const now = new Date().toISOString();\n const task: MonitorTask = {\n name: input.name,\n description: input.description,\n matchRules: input.matchRules,\n schedule: input.schedule,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n lastRunAt: null,\n lastResult: null,\n };\n monitors.push(task);\n save(paths, monitors);\n return task;\n}\n\nexport function deleteMonitor(paths: ProfilePaths, name: string): boolean {\n const monitors = listMonitors(paths);\n const next = monitors.filter((m) => m.name !== name);\n if (next.length === monitors.length) return false;\n save(paths, next);\n return true;\n}\n\nexport function setMonitorEnabled(paths: ProfilePaths, name: string, enabled: boolean): boolean {\n const monitors = listMonitors(paths);\n const task = monitors.find((m) => m.name === name);\n if (!task) return false;\n task.enabled = enabled;\n task.updatedAt = new Date().toISOString();\n save(paths, monitors);\n return true;\n}\n\nexport function getMonitor(paths: ProfilePaths, name: string): MonitorTask | undefined {\n return listMonitors(paths).find((m) => m.name === name);\n}\n",
|
|
101
|
-
"/**\n * daemon /light/send 实际投递路径。\n *\n * 把 { segments | preset | rule } 解析成最终的 segments + repeat_times,再调\n * phone-notifications 的 sendLightEffect 走云 API(需要 LIGHT_APP_KEY /\n * LIGHT_TEMPLATE_ID 进程环境变量 + OPENCLAW_HOST_* 决定的 apiUrl)。\n *\n * 优先级:rule > preset > segments。用户显式传 --repeat / --repeat-times 时\n * 会覆盖 rule/preset 自带的 repeat_times。\n */\nimport {\n LIGHT_PRESETS_V1,\n sendLightEffect,\n validateSegments,\n normalizeRepeatTimes,\n assertAncsRepeatTimes,\n type LightSegment,\n type LightRuleRegistry,\n} from \"../shared.js\";\nimport { resolveApiKey } from \"../credentials/store.js\";\nimport type { DaemonLogger } from \"./logger.js\";\n\n/** 连通性测试用的 preset id(`+blink` shortcut 映射到这里)。 */\nexport const BLINK_PRESET_ID = \"red-strobe-3\";\n\nexport interface LightSendInput {\n segments?: unknown;\n preset?: string;\n rule?: string;\n repeat?: boolean;\n repeat_times?: number;\n}\n\nexport interface LightSendOutcome {\n ok: boolean;\n status: number;\n body: Record<string, unknown>;\n}\n\ninterface ResolvedSource {\n segments: LightSegment[];\n repeat_times: number;\n source: \"segments\" | \"preset\" | \"rule\";\n reason: string;\n title?: string;\n}\n\nexport async function performLightSend(\n input: LightSendInput,\n deps: { logger: DaemonLogger; registry: LightRuleRegistry },\n): Promise<LightSendOutcome> {\n let resolved: ResolvedSource;\n try {\n resolved = resolveSource(input, deps.registry);\n } catch (err) {\n return errorOutcome(400, \"INVALID_PARAMS\", (err as Error).message);\n }\n\n // 用户显式传 --repeat / --repeat-times 时覆盖 rule/preset 自带的值\n const overrideRepeat = input.repeat !== undefined || input.repeat_times !== undefined;\n let repeatTimes = resolved.repeat_times;\n if (overrideRepeat) {\n try {\n repeatTimes = normalizeRepeatTimes({\n repeat: input.repeat,\n repeat_times: input.repeat_times,\n });\n } catch (err) {\n return errorOutcome(400, \"VALIDATION_FAILED\", (err as Error).message);\n }\n }\n try {\n assertAncsRepeatTimes(repeatTimes);\n } catch (err) {\n return errorOutcome(400, \"VALIDATION_FAILED\", (err as Error).message);\n }\n\n const apiKey = resolveApiKey();\n if (!apiKey.value) {\n return errorOutcome(\n 401,\n \"AUTH_REQUIRED\",\n \"未配置 api-key,运行 `yoooclaw auth set-api-key <ock_…>`\",\n );\n }\n\n deps.logger.info(\n `/light/send 解析完成 source=${resolved.source} reason=${resolved.reason} ` +\n `segments=${resolved.segments.length} repeat_times=${repeatTimes}`,\n );\n\n const result = await sendLightEffect(\n apiKey.value,\n resolved.segments,\n deps.logger,\n { repeat_times: repeatTimes },\n resolved.reason,\n resolved.title,\n );\n\n if (!result.ok) {\n return errorOutcome(\n result.status ?? 502,\n \"LIGHT_SEND_FAILED\",\n result.error ?? \"灯效投递失败\",\n );\n }\n\n return {\n ok: true,\n status: 200,\n body: {\n ok: true,\n accepted: true,\n delivered: true,\n source: resolved.source,\n bizUniqueId: result.bizUniqueId,\n segments: resolved.segments,\n repeat_times: repeatTimes,\n response: result.response,\n },\n };\n}\n\nfunction resolveSource(\n input: LightSendInput,\n registry: LightRuleRegistry,\n): ResolvedSource {\n if (input.rule) {\n const meta = registry.get(input.rule);\n if (!meta) throw new Error(`规则不存在:${input.rule}`);\n return {\n segments: meta.segments,\n repeat_times: meta.repeat_times,\n source: \"rule\",\n reason: `rule:${meta.name}`,\n title: meta.title,\n };\n }\n\n if (input.preset) {\n const preset = LIGHT_PRESETS_V1.presets.find((p) => p.presetId === input.preset);\n if (!preset) {\n const available = LIGHT_PRESETS_V1.presets.map((p) => p.presetId).join(\", \");\n throw new Error(`未知 preset:${input.preset}(可用:${available})`);\n }\n return {\n segments: preset.segments,\n repeat_times: preset.repeat_times,\n source: \"preset\",\n reason: `preset:${preset.presetId}`,\n title: preset.displayName,\n };\n }\n\n if (input.segments !== undefined) {\n const validation = validateSegments(input.segments);\n if (!validation.valid) {\n throw new Error(JSON.stringify(validation.errors));\n }\n return {\n segments: validation.segments,\n repeat_times: 1,\n source: \"segments\",\n reason: \"manual\",\n };\n }\n\n throw new Error(\"需要 segments / preset / rule 之一\");\n}\n\nfunction errorOutcome(status: number, code: string, message: string): LightSendOutcome {\n return {\n ok: false,\n status,\n body: { ok: false, error: { code, message } },\n };\n}\n",
|
|
102
|
-
"/**\n * RecordingEventLog —— 录音状态事件 append-only JSONL 日志。\n *\n * 落 ~/.yoooclaw/profiles/<profile>/recordings/state/events.jsonl,每行一个 JSON:\n * { ts: ISO8601, recordingId, transfer_status, audioFile?, transcriptFile?, summary?, error? }\n *\n * 设计取舍:\n * - daemon 没有面向客户端的广播通道,handler 内部状态机变化通过 notifyStatus 回调对外暴露;\n * 把它落成 JSONL 是最简单的「可观察」方案,CLI / Agent / tail -f 都能消费。\n * - 不做轮转 / 不做大小上限:一条录音事件几条,文件很小;轮转策略等真有量再说。\n */\nimport { appendFileSync, existsSync, mkdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { RecordingStatusEvent } from \"../shared.js\";\n\nexport interface RecordingEventRecord extends RecordingStatusEvent {\n ts: string;\n}\n\nexport class RecordingEventLog {\n readonly path: string;\n\n constructor(recordingsDir: string) {\n this.path = join(recordingsDir, \"state\", \"events.jsonl\");\n mkdirSync(dirname(this.path), { recursive: true });\n }\n\n append(event: RecordingStatusEvent): void {\n const record: RecordingEventRecord = { ts: new Date().toISOString(), ...event };\n appendFileSync(this.path, JSON.stringify(record) + \"\\n\", \"utf-8\");\n }\n\n /** 读取全部事件(按追加顺序)。文件不存在返回空数组。 */\n readAll(): RecordingEventRecord[] {\n if (!existsSync(this.path)) return [];\n const raw = readFileSync(this.path, \"utf-8\");\n const out: RecordingEventRecord[] = [];\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n try {\n out.push(JSON.parse(trimmed) as RecordingEventRecord);\n } catch {\n // 忽略损坏行(理论上 append-only 不应该出现)\n }\n }\n return out;\n }\n}\n",
|
|
103
|
-
"/**\n * daemon 录音桥 —— CLI 独立形态下的 recordings.sync 实现。\n *\n * 为什么不直接用插件 registerRecordingInterfaces 里注册的 sync:\n * - 插件版 sync 要求 caller(手机端)每次把 asr 配置随 params 一起带上来;\n * - CLI 形态下 ASR 配置由 `yc recording setup-asr` 一次性写到 ~/.yoooclaw/<p>/recordings/asr-config.json,\n * 手机端不一定会带 asr —— 没带就要 fallback 读本地配置;\n * - 同时 mode=api 时若用户没填 apiKey,要回退到 account 级 ock- key(resolveApiKey)。\n *\n * 用法:daemon main.ts 先调 registerRecordingInterfaces 装上 list/status/rename/... 一类查询/管理方法,\n * 再调本模块 `overrideRecordingSync` 覆盖 sync 这一项(runtime.gatewayMethods 是 Map,后写覆盖)。\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport {\n handleRecordingSync,\n RecordingStorage,\n validateAsrConfig,\n type AsrConfig,\n type RecordingMetadata,\n type RecordingStatusEvent,\n} from \"../shared.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport type { DaemonLogger } from \"./logger.js\";\n\nexport interface RecordingSyncDeps {\n runtime: StandaloneRuntime;\n storage: RecordingStorage;\n logger: DaemonLogger;\n /** account 级 ock- key(mode=api 且未指定 apiKey 时回退) */\n fallbackApiKey?: string | (() => string | undefined);\n /** asr-config.json 所在目录(= ctx.paths.recordings) */\n asrConfigDir: string;\n /** 状态机变化时的回调(写日志 + 落 events.jsonl) */\n notifyStatus: (event: RecordingStatusEvent) => void;\n}\n\ninterface SyncParams {\n recordingId?: unknown;\n recording?: RecordingMetadata;\n asr?: AsrConfig;\n}\n\nconst ASR_CONFIG_FILE = \"asr-config.json\";\n\nfunction trimToString(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\n/** 从 asr-config.json 读 AsrConfig;不存在 / 损坏返回 undefined。 */\nexport function loadLocalAsrConfig(asrConfigDir: string): AsrConfig | undefined {\n const path = join(asrConfigDir, ASR_CONFIG_FILE);\n if (!existsSync(path)) return undefined;\n try {\n const raw = JSON.parse(readFileSync(path, \"utf-8\")) as AsrConfig;\n return raw;\n } catch {\n return undefined;\n }\n}\n\n/**\n * 合并 caller 传入的 asr 与本地 fallback:\n * - 优先用 caller 的;\n * - 没传则用本地;\n * - mode=api 且最终 apiKey 仍为空时,用 account 级 fallback。\n */\nexport function resolveAsrConfig(\n callerAsr: AsrConfig | undefined,\n localAsr: AsrConfig | undefined,\n fallbackApiKey?: string,\n): AsrConfig | undefined {\n const chosen = callerAsr ?? localAsr;\n if (!chosen) return undefined;\n if (chosen.mode !== \"api\") return chosen;\n const apiKey = chosen.api?.apiKey ?? fallbackApiKey;\n if (!apiKey) return chosen;\n return { ...chosen, api: { ...(chosen.api ?? {}), apiKey } };\n}\n\n/**\n * 进入「稳定/终态」即认为一轮 sync 流程已结束,可解除 in-flight 标记并清理 lastError 残留。\n * - synced:sync 阶段成功(如果没有 ASR 也就停在这里)\n * - transcribed:ASR 成功(终态)\n * - transcribe_failed / sync_failed:失败终态\n */\nconst TERMINAL_STATUSES = new Set<string>([\n \"synced\",\n \"transcribed\",\n \"transcribe_failed\",\n \"sync_failed\",\n]);\n/** 仅这两个算「最终成功态」—— 终态时若 lastError 还残留是无用噪音,清掉。 */\nconst TERMINAL_SUCCESS_STATUSES = new Set<string>([\"synced\", \"transcribed\"]);\n/** 单条 in-flight 的兜底超时:5 分钟内若没收到终态事件,强制释放(避免句柄泄漏)。 */\nconst INFLIGHT_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** 覆盖注册 recordings.sync gateway + POST /recordings HTTP。 */\nexport function overrideRecordingSync(deps: RecordingSyncDeps): void {\n const { runtime, storage, logger, fallbackApiKey, asrConfigDir, notifyStatus } = deps;\n const readFallbackApiKey = (): string | undefined =>\n typeof fallbackApiKey === \"function\" ? fallbackApiKey() : fallbackApiKey;\n\n /**\n * 同一 recordingId 在 sync→ASR 全流程中只允许一次 background 跑:\n * 手机端在 OSS 上传过程中常常会以秒级间隔重推同一条 sync,phone-notifications 的 handler 不去重,\n * 两条并行的 runRecordingSyncInBackground 会撞状态机(transcribing → synced 非法)。\n * daemon 层加 in-flight 标记后,第二条直接 short-circuit,仅返回当前 storage 状态。\n */\n const inFlight = new Map<string, NodeJS.Timeout>();\n\n function markInFlight(recordingId: string): void {\n clearTimeout(inFlight.get(recordingId));\n inFlight.set(\n recordingId,\n setTimeout(() => inFlight.delete(recordingId), INFLIGHT_TIMEOUT_MS),\n );\n }\n\n function releaseInFlight(recordingId: string): void {\n const t = inFlight.get(recordingId);\n if (t) {\n clearTimeout(t);\n inFlight.delete(recordingId);\n }\n }\n\n const wrappedNotifyStatus = (event: RecordingStatusEvent): void => {\n notifyStatus(event);\n if (!TERMINAL_STATUSES.has(event.transfer_status)) return;\n releaseInFlight(event.recordingId);\n // 终态成功(synced / transcribed)+ storage lastError 还在 → 清理。\n // 注意:不能用 event.error 做条件,因为 event.error 正是从 storage.lastError 拼出来的,\n // 互为因果。直接看 storage 现状即可。\n if (TERMINAL_SUCCESS_STATUSES.has(event.transfer_status)) {\n const entry = storage.findById(event.recordingId);\n if (entry?.lastError) {\n try {\n storage.setLastError(event.recordingId);\n logger.info(`[recording-sync] 终态 ${event.transfer_status} 清理 lastError 残留: ${event.recordingId}`);\n } catch (err) {\n logger.warn(`[recording-sync] 清理 lastError 失败: ${(err as Error).message}`);\n }\n }\n }\n };\n\n async function doSync(params: SyncParams): Promise<\n | { ok: true; data: Awaited<ReturnType<typeof handleRecordingSync>> }\n | { ok: false; code: string; message: string }\n > {\n const recordingId = trimToString(params.recordingId);\n if (!recordingId) {\n return { ok: false, code: \"INVALID_PARAMS\", message: \"recordingId is required\" };\n }\n const recording = params.recording;\n if (!recording || !recording.oss_audio_url || !recording.created_at) {\n return {\n ok: false,\n code: \"INVALID_PARAMS\",\n message: \"recording with oss_audio_url and created_at is required\",\n };\n }\n if (params.asr) {\n const err = validateAsrConfig(params.asr);\n if (err) return { ok: false, code: \"INVALID_PARAMS\", message: err };\n }\n\n // in-flight 去重:手机重推时直接 short-circuit,返回当前 storage 状态\n if (inFlight.has(recordingId)) {\n const entry = storage.findById(recordingId);\n logger.info(\n `[recording-sync] in-flight 跳过重复 sync: ${recordingId}(当前 ${entry?.status ?? \"unknown\"})`,\n );\n return {\n ok: true,\n data: {\n ok: true,\n recordingId,\n transfer_status: entry?.status ?? \"syncing_openclaw\",\n },\n };\n }\n\n const localAsr = loadLocalAsrConfig(asrConfigDir);\n const asr = resolveAsrConfig(params.asr, localAsr, readFallbackApiKey());\n if (asr && !params.asr) {\n logger.info(\n `[recording-sync] 使用本地 asr-config.json(mode=${asr.mode}${\n asr.mode === \"api\" && asr.api?.apiKey ? \", key=ock-***\" : \"\"\n })`,\n );\n }\n\n markInFlight(recordingId);\n const result = await handleRecordingSync(\n recordingId,\n recording,\n storage,\n asr,\n logger,\n { notifyStatus: wrappedNotifyStatus },\n );\n return { ok: true, data: result };\n }\n\n runtime.registerGatewayMethod(\"recordings.sync\", async ({ params, respond }) => {\n const outcome = await doSync((params ?? {}) as SyncParams);\n if (outcome.ok) {\n respond(outcome.data.ok, outcome.data, outcome.data.ok ? undefined : {\n code: \"SYNC_FAILED\",\n message: outcome.data.error ?? \"Unknown error\",\n });\n } else {\n respond(false, null, { code: outcome.code, message: outcome.message });\n }\n });\n\n runtime.registerHttpRoute({\n path: \"/recordings\",\n auth: \"gateway\",\n async handler(req: IncomingMessage, res: ServerResponse) {\n if (req.method !== \"POST\") {\n res.writeHead(405, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Method Not Allowed\" }));\n return;\n }\n const body = await readJsonBody(req);\n if (body === undefined) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: \"Invalid JSON\" }));\n return;\n }\n const outcome = await doSync(body as SyncParams);\n if (outcome.ok) {\n res.writeHead(outcome.data.ok ? 200 : 500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(outcome.data));\n } else {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ ok: false, error: outcome.message }));\n }\n },\n });\n\n logger.info(\"daemon 已覆盖 recordings.sync + POST /recordings(注入本地 ASR 配置)\");\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown | undefined> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(chunk as Buffer);\n const raw = Buffer.concat(chunks).toString(\"utf-8\");\n if (!raw) return {};\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n}\n",
|
|
104
|
-
"import type { StandaloneRuntime } from \"./runtime.js\";\n\nexport interface RelayStatusSnapshot {\n mode: \"relay\" | \"standalone-http\";\n connected: boolean;\n url: string;\n enabled: boolean;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n note?: string;\n}\n\nexport interface DaemonGatewayCompatOptions {\n version: string;\n protocol: number;\n capabilities: string[];\n profile: string;\n bind: string;\n getPort: () => number;\n startedAt: string;\n getLastIngestAt: () => string | null;\n getIngestCount: () => number;\n getLightRuleCount: () => number;\n getRelayStatus: () => RelayStatusSnapshot;\n}\n\nfunction gatewayMethods(runtime: StandaloneRuntime): string[] {\n return [...runtime.gatewayMethods.keys()].sort();\n}\n\nfunction buildHealthPayload(\n runtime: StandaloneRuntime,\n opts: DaemonGatewayCompatOptions,\n): Record<string, unknown> {\n const relay = opts.getRelayStatus();\n return {\n status: \"ok\",\n healthy: true,\n server: \"yoooclaw\",\n version: opts.version,\n protocol: opts.protocol,\n capabilities: opts.capabilities,\n profile: opts.profile,\n bind: opts.bind,\n port: opts.getPort(),\n startedAt: opts.startedAt,\n lastIngestAt: opts.getLastIngestAt(),\n ingestCount: opts.getIngestCount(),\n lightRules: opts.getLightRuleCount(),\n relay,\n features: {\n methods: gatewayMethods(runtime),\n capabilities: opts.capabilities,\n },\n };\n}\n\nfunction buildChannelsPayload(opts: DaemonGatewayCompatOptions): Record<string, unknown> {\n const relay = opts.getRelayStatus();\n const account = {\n id: `yoooclaw.daemon/${opts.profile}`,\n channel: \"yoooclaw.daemon\",\n accountId: opts.profile,\n label: `YoooClaw daemon (${opts.profile})`,\n enabled: true,\n running: true,\n connected: relay.connected,\n mode: relay.mode,\n url: relay.url,\n reconnectAttempt: relay.reconnectAttempt,\n lastError: relay.lastDisconnectReason ?? relay.note,\n };\n\n return {\n channelOrder: [\"yoooclaw.daemon\"],\n channelMeta: [\n {\n id: \"yoooclaw.daemon\",\n label: \"YoooClaw daemon\",\n type: \"daemon\",\n },\n ],\n channels: [\n {\n id: \"yoooclaw.daemon\",\n label: \"YoooClaw daemon\",\n enabled: true,\n running: true,\n connected: relay.connected,\n accounts: [account],\n },\n ],\n accounts: [account],\n relay,\n };\n}\n\nfunction paramsRecord(params: unknown): Record<string, unknown> {\n return params && typeof params === \"object\"\n ? (params as Record<string, unknown>)\n : {};\n}\n\nexport function registerDaemonGatewayCompatMethods(\n runtime: StandaloneRuntime,\n opts: DaemonGatewayCompatOptions,\n): void {\n runtime.registerGatewayMethod(\"health\", async ({ respond }) => {\n respond(true, buildHealthPayload(runtime, opts));\n });\n\n runtime.registerGatewayMethod(\"channels.status\", async ({ respond }) => {\n respond(true, buildChannelsPayload(opts));\n });\n\n runtime.registerGatewayMethod(\"agents.list\", async ({ respond }) => {\n respond(true, { total: 0, agents: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"sessions.list\", async ({ respond }) => {\n respond(true, { total: 0, sessions: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"chat.history\", async ({ params, respond }) => {\n const sessionKey = paramsRecord(params).sessionKey;\n respond(true, {\n sessionKey: typeof sessionKey === \"string\" ? sessionKey : undefined,\n total: 0,\n messages: [],\n });\n });\n\n runtime.registerGatewayMethod(\"usage.cost\", async ({ respond }) => {\n respond(true, {\n totalCost: 0,\n cost: 0,\n currency: \"USD\",\n items: [],\n usage: [],\n });\n });\n\n runtime.registerGatewayMethod(\"cron.list\", async ({ respond }) => {\n respond(true, { total: 0, crons: [], tasks: [], items: [] });\n });\n\n runtime.registerGatewayMethod(\"wake\", async ({ respond }) => {\n respond(true, { ok: true, woken: true });\n });\n}\n",
|
|
105
|
-
"/**\n * RelayDispatcher —— CLI daemon 模式下的 Relay 帧分发器。\n *\n * 为什么不直接复用 phone-notifications/tunnel/proxy 的 TunnelProxy:\n * TunnelProxy 把每个 `req` 帧反代到「本地 OpenClaw 桌面端 gateway WebSocket」,依赖 OpenClaw 自带的\n * `connect.challenge` / `pairing` 协议;daemon 不实现那套,反代会 401 卡死。\n *\n * 本 dispatcher 的取舍:保留与插件**对外完全一致**的 Relay 协议(RelayClient 复用,frame schema 不变),\n * 但**绕过 OpenClaw gateway WS 这一层耦合**,直接把 `req` 帧同进程交给 `runtime.callGateway` 处理。\n * 手机端 / Relay 服务端对此完全无感知。\n *\n * 当前覆盖:\n * - `type: \"req\"` → callGateway → 回 `{type:\"res\", id, ok, payload?, error?}`\n * - `type: \"request\" / ws_*` → 暂不支持,回 proxy_error 或日志 warn(手机端目前只发 req)\n *\n * `pushEvent(event, payload)` —— daemon 主动反向推事件给手机端(recording.status 等)。\n */\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport {\n RELAY_INTERNAL_HTTP_HEADER,\n mapRelayHttpPath,\n type RelayClient,\n} from \"../shared.js\";\n\nexport const RELAY_INTERNAL_CLIENT_LABEL_HEADER = \"x-yoooclaw-internal-client-label\";\n\ninterface ReqFrame {\n type: \"req\";\n id: string;\n method: string;\n params?: Record<string, unknown>;\n}\n\ninterface RequestFrame {\n type: \"request\";\n id: string;\n method: string;\n path: string;\n headers?: Record<string, string>;\n body?: string;\n}\n\ninterface AnyFrame {\n type: string;\n id?: string;\n [k: string]: unknown;\n}\n\nexport interface RelayDispatcherDeps {\n client: RelayClient;\n runtime: StandaloneRuntime;\n logger: DaemonLogger;\n /**\n * 用于把 RequestFrame(HTTP-style,如 POST /notifications)loopback 到 daemon 自己的 HTTP server。\n * 这样能直接复用现成的路由实现(包括 authorized check、JSON 解析、ingest 逻辑),\n * 不必为每条 frame 重新 mock node:http 的 IncomingMessage/ServerResponse。\n */\n httpBaseUrl: string;\n /** loopback 时带的 gateway token;未设则不加 Authorization(daemon 默认放行无 token 模式)。 */\n httpToken?: string;\n /** 当前 Relay 隧道对应的 api-key label。 */\n clientLabel: string;\n}\n\nexport class RelayDispatcher {\n constructor(private readonly deps: RelayDispatcherDeps) {}\n\n /** 挂上 RelayClient 的 inbound 回调;幂等:重复调只会重新绑定(沿用 onInbound 的覆盖语义)。 */\n start(): void {\n this.deps.client.onInbound((frame) => {\n void this.handleFrame(frame as unknown as AnyFrame);\n });\n }\n\n private async handleFrame(frame: AnyFrame): Promise<void> {\n const { logger } = this.deps;\n switch (frame.type) {\n case \"req\":\n await this.handleReq(frame as unknown as ReqFrame);\n return;\n case \"request\":\n await this.handleRequest(frame as unknown as RequestFrame);\n return;\n case \"ws_open\":\n case \"ws_data\":\n case \"ws_close\":\n logger.warn(\n `[relay-dispatcher] 暂不支持 WS 子通道帧(type=${frame.type}, id=${frame.id ?? \"?\"})`,\n );\n return;\n default:\n logger.warn(`[relay-dispatcher] 未识别帧 type=${frame.type}`);\n }\n }\n\n private async handleRequest(frame: RequestFrame): Promise<void> {\n const { client, logger, httpBaseUrl, httpToken } = this.deps;\n const { id, method, path, headers: srcHeaders, body } = frame;\n const mappedPath = mapRelayHttpPath(path);\n const url = httpBaseUrl + (mappedPath.startsWith(\"/\") ? mappedPath : \"/\" + mappedPath);\n const headers: Record<string, string> = { ...srcHeaders };\n if (httpToken && !headers[\"authorization\"] && !headers[\"Authorization\"]) {\n headers[\"authorization\"] = `Bearer ${httpToken}`;\n }\n headers[RELAY_INTERNAL_HTTP_HEADER] = \"1\";\n headers[RELAY_INTERNAL_CLIENT_LABEL_HEADER] = this.deps.clientLabel;\n\n logger.info(\n `[relay-dispatcher] request id=${id} ${method} ${path} → ${mappedPath} loopback`,\n );\n\n let status = 502;\n let resHeaders: Record<string, string> = {};\n let resBody = \"\";\n try {\n const res = await fetch(url, { method, headers, body });\n status = res.status;\n resHeaders = Object.fromEntries(res.headers.entries());\n resBody = await res.text();\n } catch (err) {\n logger.error(`[relay-dispatcher] loopback 失败 id=${id} ${method} ${path}: ${(err as Error).message}`);\n client.sendRaw(\n JSON.stringify({\n type: \"proxy_error\",\n id,\n status: 502,\n message: `daemon loopback 失败: ${(err as Error).message}`,\n }),\n );\n return;\n }\n\n client.sendRaw(\n JSON.stringify({\n type: \"proxy_response\",\n id,\n status,\n headers: resHeaders,\n body: resBody,\n }),\n );\n }\n\n private async handleReq(frame: ReqFrame): Promise<void> {\n const { client, runtime, logger } = this.deps;\n const { id, method, params } = frame;\n logger.info(`[relay-dispatcher] req id=${id} method=${method}`);\n let ok = false;\n let payload: unknown;\n let error: { code: string; message: string } | undefined;\n try {\n const result = await runtime.callGateway(method, params, {\n clientLabel: this.deps.clientLabel,\n authKind: \"relay-api-key\",\n });\n ok = result.ok;\n payload = result.data;\n error = result.error;\n } catch (err) {\n ok = false;\n error = { code: \"INTERNAL_ERROR\", message: (err as Error).message };\n logger.error(`[relay-dispatcher] callGateway 异常: ${(err as Error).message}`);\n }\n // JSON.stringify 会跳过 value 为 undefined 的键,所以无需手动剔除\n client.sendRaw(JSON.stringify({ type: \"res\", id, ok, payload, error }));\n }\n\n /** daemon → 手机端反向推 Gateway event。 */\n pushEvent(event: string, payload: unknown): void {\n this.deps.client.sendRaw(JSON.stringify({ type: \"event\", event, payload }));\n }\n}\n",
|
|
106
|
-
"/**\n * Relay 隧道接入 —— daemon 模式专用。\n *\n * 与插件的差别(也是这次解耦的核心):\n * - **复用** RelayClient:连接、心跳、重连、frame 协议跟插件完全一致 —— 这部分本来就跟 OpenClaw 无关。\n * - **不复用** TunnelProxy:那玩意把每个 req 反代到 OpenClaw 桌面端的 gateway WS(含 connect.challenge /\n * pairing),daemon 不实现 OpenClaw 那套协议,反代会 401 卡死。\n * - 改用 RelayDispatcher:拿到 req 帧后直接同进程交给 runtime.callGateway 处理,再以 res 帧回写。\n *\n * 对手机端 / Relay 服务端完全透明:协议帧(req/res schema、心跳、认证)都不变,只是 daemon 内部「frame\n * 接到后怎么处理」从「反代给 OpenClaw gateway」换成「in-process dispatch」。\n *\n * 其他保持:api-key 走 CLI 的分层解析(env/keychain/共享文件),锁/状态文件落 profile 目录。\n */\nimport { join } from \"node:path\";\nimport { RelayClient } from \"../shared.js\";\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\nimport { RelayDispatcher } from \"./relay-dispatcher.js\";\n\nconst DEFAULT_HEARTBEAT_SEC = 10;\nconst DEFAULT_RECONNECT_BACKOFF_MS = 2000;\n\nexport interface RelayTunnelOptions {\n /** api-key label,用于状态文件与日志。 */\n label: string;\n /** Relay Server WebSocket 地址(config.relay.url,默认插件生产地址)。 */\n tunnelUrl: string;\n /** account 级 api-key(CLI resolveApiKey 解析所得)。 */\n apiKey: string;\n /** daemon 的 gateway 路由表,gateway-RPC 帧(type:\"req\")in-process 派发用。 */\n runtime: StandaloneRuntime;\n /** daemon HTTP server base(http://127.0.0.1:port),HTTP-style frame(type:\"request\")loopback 用。 */\n httpBaseUrl: string;\n /** loopback 时带的 gateway token。 */\n httpToken?: string;\n heartbeatSec?: number;\n reconnectBackoffMs?: number;\n /** profile 目录,用于落隧道状态文件与设备身份。 */\n stateDir: string;\n logger: DaemonLogger;\n}\n\nexport interface RelayTunnelHandle {\n stop(reason: string): Promise<void>;\n status(): {\n connected: boolean;\n url: string;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n };\n /** 反向 push event 给手机端(取决于 Relay 服务端是否支持广播,预留接口)。 */\n pushEvent(event: string, payload: unknown): void;\n}\n\nfunction relayCredential(apiKey: string): { query: { apiKey: string } } {\n const raw = apiKey.startsWith(\"Bearer \") ? apiKey.slice(\"Bearer \".length) : apiKey;\n return { query: { apiKey: raw } };\n}\n\n/**\n * 启动 Relay 隧道。返回句柄用于查询状态 / 优雅停止 / 主动重连。\n * 非阻塞:connectWithAutoReconnect 在内部保持运行并自动重连。\n */\nexport function startRelayTunnel(opts: RelayTunnelOptions): RelayTunnelHandle {\n const { logger } = opts;\n const statusFilePath = join(opts.stateDir, \"state\", \"tunnels\", `${opts.label}.json`);\n\n let abortController = new AbortController();\n let connected = false;\n let reconnectAttempt = 0;\n let lastDisconnectReason: string | undefined;\n\n const client = new RelayClient({\n tunnelUrl: opts.tunnelUrl,\n credentialProvider: async () => relayCredential(opts.apiKey),\n heartbeatSec: opts.heartbeatSec ?? DEFAULT_HEARTBEAT_SEC,\n reconnectBackoffMs: opts.reconnectBackoffMs ?? DEFAULT_RECONNECT_BACKOFF_MS,\n statusFilePath,\n logger: {\n info: (m: string) => logger.info(`[tunnel:${opts.label}] ${m}`),\n warn: (m: string) => logger.warn(`[tunnel:${opts.label}] ${m}`),\n error: (m: string) => logger.error(`[tunnel:${opts.label}] ${m}`),\n },\n });\n\n const dispatcher = new RelayDispatcher({\n client,\n runtime: opts.runtime,\n logger,\n httpBaseUrl: opts.httpBaseUrl,\n httpToken: opts.httpToken,\n clientLabel: opts.label,\n });\n dispatcher.start();\n\n client.onConnected(() => {\n connected = true;\n lastDisconnectReason = undefined;\n });\n client.onDisconnected((reason) => {\n connected = false;\n reconnectAttempt += 1;\n lastDisconnectReason = reason;\n });\n\n const run = (): void => {\n client.connectWithAutoReconnect(abortController.signal).catch((err) => {\n logger.error(`Relay tunnel: 意外退出:${(err as Error).message}`);\n });\n };\n run();\n logger.info(`[tunnel:${opts.label}] Relay tunnel: 已启动(url=${opts.tunnelUrl} → in-process gateway dispatch)`);\n\n return {\n async stop(reason: string) {\n abortController.abort();\n await client.stop(reason);\n },\n status() {\n return {\n connected: connected || client.isConnected(),\n url: opts.tunnelUrl,\n reconnectAttempt,\n lastDisconnectReason,\n };\n },\n pushEvent(event: string, payload: unknown) {\n dispatcher.pushEvent(event, payload);\n },\n };\n}\n",
|
|
107
|
-
"import type { ApiKeyEntry, CredentialSet } from \"../credentials/store.js\";\nimport { startRelayTunnel, type RelayTunnelHandle } from \"./relay.js\";\nimport type { DaemonLogger } from \"./logger.js\";\nimport type { StandaloneRuntime } from \"./runtime.js\";\n\nexport interface TunnelSupervisorOptions {\n tunnelUrl: string;\n runtime: StandaloneRuntime;\n httpBaseUrl: string;\n httpToken?: string;\n heartbeatSec?: number;\n reconnectBackoffMs?: number;\n stateDir: string;\n logger: DaemonLogger;\n}\n\ninterface ManagedTunnel {\n entry: ApiKeyEntry;\n handle: RelayTunnelHandle;\n}\n\nexport interface TunnelApplyResult {\n started: string[];\n stopped: string[];\n restarted: string[];\n unchanged: string[];\n}\n\nexport class TunnelSupervisor {\n private readonly tunnels = new Map<string, ManagedTunnel>();\n private defaultLabel: string | null = null;\n private mode: CredentialSet[\"mode\"] = \"none\";\n\n constructor(private readonly opts: TunnelSupervisorOptions) {}\n\n async apply(set: CredentialSet): Promise<TunnelApplyResult> {\n const started: string[] = [];\n const stopped: string[] = [];\n const restarted: string[] = [];\n const unchanged: string[] = [];\n const next = new Map(set.entries.map((entry) => [entry.label, entry]));\n\n for (const [label, managed] of this.tunnels) {\n const nextEntry = next.get(label);\n if (!nextEntry) {\n await managed.handle.stop(\"removed\");\n this.tunnels.delete(label);\n stopped.push(label);\n continue;\n }\n if (nextEntry.key !== managed.entry.key) {\n await managed.handle.stop(\"key-changed\");\n this.tunnels.set(label, { entry: nextEntry, handle: this.start(nextEntry) });\n restarted.push(label);\n } else {\n managed.entry = nextEntry;\n unchanged.push(label);\n }\n }\n\n for (const entry of set.entries) {\n if (this.tunnels.has(entry.label)) continue;\n this.tunnels.set(entry.label, { entry, handle: this.start(entry) });\n started.push(entry.label);\n }\n\n this.defaultLabel = set.defaultEntry?.label ?? null;\n this.mode = set.mode;\n return { started, stopped, restarted, unchanged };\n }\n\n async stopAll(reason: string): Promise<void> {\n const handles = [...this.tunnels.values()].map((managed) => managed.handle);\n this.tunnels.clear();\n await Promise.all(handles.map((handle) => handle.stop(reason).catch(() => undefined)));\n }\n\n async reconnect(label?: string): Promise<{ reconnected: string[]; missing?: string }> {\n const labels = label ? [label] : [...this.tunnels.keys()];\n const reconnected: string[] = [];\n for (const item of labels) {\n const managed = this.tunnels.get(item);\n if (!managed) return { reconnected, missing: item };\n await managed.handle.stop(\"manual-reconnect\").catch(() => undefined);\n this.tunnels.set(item, { entry: managed.entry, handle: this.start(managed.entry) });\n reconnected.push(item);\n }\n return { reconnected };\n }\n\n pushEvent(event: string, payload: unknown): void {\n for (const managed of this.tunnels.values()) {\n managed.handle.pushEvent(event, payload);\n }\n }\n\n status(): {\n mode: CredentialSet[\"mode\"];\n defaultLabel: string | null;\n tunnels: Array<{\n label: string;\n default: boolean;\n connected: boolean;\n url: string;\n reconnectAttempt: number;\n lastDisconnectReason?: string;\n }>;\n } {\n return {\n mode: this.mode,\n defaultLabel: this.defaultLabel,\n tunnels: [...this.tunnels.values()].map((managed) => {\n const status = managed.handle.status();\n return {\n label: managed.entry.label,\n default: managed.entry.label === this.defaultLabel,\n connected: status.connected,\n url: status.url,\n reconnectAttempt: status.reconnectAttempt,\n lastDisconnectReason: status.lastDisconnectReason,\n };\n }),\n };\n }\n\n defaultStatus() {\n const status = this.status();\n return status.tunnels.find((tunnel) => tunnel.label === status.defaultLabel) ?? status.tunnels[0];\n }\n\n private start(entry: ApiKeyEntry): RelayTunnelHandle {\n return startRelayTunnel({\n label: entry.label,\n tunnelUrl: this.opts.tunnelUrl,\n apiKey: entry.key,\n runtime: this.opts.runtime,\n httpBaseUrl: this.opts.httpBaseUrl,\n httpToken: this.opts.httpToken,\n heartbeatSec: this.opts.heartbeatSec,\n reconnectBackoffMs: this.opts.reconnectBackoffMs,\n stateDir: this.opts.stateDir,\n logger: this.opts.logger,\n });\n }\n}\n",
|
|
108
108
|
"/**\n * 依赖 daemon 的 service(🟡)—— 统一经 DaemonClient 走 localhost HTTP RPC。\n * light / lightrule / tunnel / monitor / gateway / api。\n */\nimport { readFileSync } from \"node:fs\";\nimport type { CliContext } from \"../context.js\";\nimport { YoooclawError } from \"../errors.js\";\nimport { DaemonClient, assertDaemonRunning } from \"../daemon/client.js\";\nimport { confirm, readStdin } from \"../prompt.js\";\n\nfunction client(ctx: CliContext): DaemonClient {\n assertDaemonRunning(ctx.paths);\n return new DaemonClient(ctx.paths);\n}\n\nfunction parseJsonArg(raw: string | undefined, label: string): unknown {\n if (raw === undefined) return undefined;\n try {\n return JSON.parse(raw);\n } catch {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", `${label} 不是合法 JSON`);\n }\n}\n\n// ── light ──\nexport async function lightSend(\n ctx: CliContext,\n _args: unknown[],\n opts: {\n segments?: string;\n preset?: string;\n rule?: string;\n repeat?: boolean;\n repeatTimes?: string;\n },\n): Promise<unknown> {\n if (!opts.segments && !opts.preset && !opts.rule) {\n throw new YoooclawError(\n \"YOOOCLAW_INVALID_ARGUMENT\",\n \"需要 --segments / --preset / --rule 之一\",\n );\n }\n const body: Record<string, unknown> = {};\n if (opts.segments) body.segments = parseJsonArg(opts.segments, \"--segments\");\n if (opts.preset) body.preset = opts.preset;\n if (opts.rule) body.rule = opts.rule;\n if (opts.repeat) body.repeat = true;\n if (opts.repeatTimes !== undefined) body.repeat_times = Number(opts.repeatTimes);\n const res = await client(ctx).post(\"/light/send\", body);\n return res.body;\n}\n\n/** +blink shortcut:映射到 presets-v1 的 red-strobe-3,做连通性测试。 */\nexport async function lightBlink(ctx: CliContext): Promise<unknown> {\n const res = await client(ctx).post(\"/light/send\", { preset: \"red-strobe-3\" });\n return res.body;\n}\n\n// ── lightrule ──\nasync function listRules(c: DaemonClient): Promise<Array<Record<string, unknown>>> {\n const res = await c.post<{ data?: { rules?: Array<Record<string, unknown>> } }>(\"/gateway/lightrules.list\", {});\n return res.body?.data?.rules ?? [];\n}\n\nexport async function lightruleList(ctx: CliContext): Promise<unknown> {\n return { ok: true, rules: await listRules(client(ctx)) };\n}\n\nexport async function lightruleShow(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [id] = args as [string];\n const rule = (await listRules(client(ctx))).find((r) => r.id === id || r.name === id);\n if (!rule) throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `规则不存在:${id}`);\n return { ok: true, rule };\n}\n\ninterface LightRuleOpts {\n fromFile?: string;\n name?: string;\n intent?: string;\n lightAction?: string;\n matchRules?: string;\n}\n\nasync function buildRuleParams(opts: LightRuleOpts, name?: string): Promise<Record<string, unknown>> {\n if (opts.fromFile) {\n const raw = opts.fromFile === \"-\" ? await readStdin() : readFileSync(opts.fromFile, \"utf-8\");\n return JSON.parse(raw) as Record<string, unknown>;\n }\n const params: Record<string, unknown> = {};\n if (name) params.name = name;\n if (opts.name) params.name = opts.name;\n if (opts.intent) params.description = opts.intent;\n const action = parseJsonArg(opts.lightAction, \"--light-action\");\n if (action !== undefined) {\n params.segments = Array.isArray(action) ? action : (action as { segments?: unknown }).segments ?? action;\n }\n const match = parseJsonArg(opts.matchRules, \"--match-rules\");\n if (match !== undefined) params.matchRules = match;\n return params;\n}\n\nexport async function lightruleCreate(\n ctx: CliContext,\n _args: unknown[],\n opts: LightRuleOpts,\n): Promise<unknown> {\n const c = client(ctx);\n const params = await buildRuleParams(opts);\n const res = await c.post(\"/gateway/lightrules.create\", params);\n if (!res.body || (res.body as { ok?: boolean }).ok === false) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", JSON.stringify((res.body as { error?: unknown })?.error ?? res.body));\n }\n return (res.body as { data?: unknown }).data ?? res.body;\n}\n\nexport async function lightruleUpdate(\n ctx: CliContext,\n args: unknown[],\n opts: LightRuleOpts,\n): Promise<unknown> {\n const [id] = args as [string];\n const c = client(ctx);\n const params = await buildRuleParams(opts, id);\n params.name = id;\n const res = await c.post(\"/gateway/lightrules.update\", params);\n return (res.body as { data?: unknown }).data ?? res.body;\n}\n\nexport async function lightruleDelete(\n ctx: CliContext,\n args: unknown[],\n opts: { yes?: boolean },\n): Promise<unknown> {\n const [id] = args as [string];\n if (!opts.yes && !(await confirm(`确认删除规则 \\`${id}\\`?`, false))) {\n throw new YoooclawError(\"YOOOCLAW_CONFIRMATION_REQUIRED\", \"已取消\");\n }\n const res = await client(ctx).post(\"/gateway/lightrules.delete\", { name: id });\n return (res.body as { data?: unknown }).data ?? res.body;\n}\n\nexport async function lightruleEnable(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [id] = args as [string];\n const res = await client(ctx).post(\"/gateway/lightrules.update\", { name: id, enabled: true });\n return (res.body as { data?: unknown }).data ?? res.body;\n}\n\nexport async function lightruleDisable(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [id] = args as [string];\n const res = await client(ctx).post(\"/gateway/lightrules.update\", { name: id, enabled: false });\n return (res.body as { data?: unknown }).data ?? res.body;\n}\n\nasync function toggleAll(ctx: CliContext, enabled: boolean): Promise<unknown> {\n const c = client(ctx);\n const rules = await listRules(c);\n const results: Array<{ name: unknown; ok: boolean }> = [];\n for (const rule of rules) {\n const res = await c.post(\"/gateway/lightrules.update\", { name: rule.name, enabled });\n results.push({ name: rule.name, ok: (res.body as { ok?: boolean })?.ok !== false });\n }\n return { ok: true, enabled, count: results.length, results };\n}\n\nexport const lightruleOn = (ctx: CliContext): Promise<unknown> => toggleAll(ctx, true);\nexport const lightruleOff = (ctx: CliContext): Promise<unknown> => toggleAll(ctx, false);\n\n// ── tunnel ──\nexport async function tunnelStatus(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string },\n): Promise<unknown> {\n const query = opts.client ? `?client=${encodeURIComponent(opts.client)}` : \"\";\n return (await client(ctx).get(`/tunnel/status${query}`)).body;\n}\nexport async function tunnelReconnect(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string },\n): Promise<unknown> {\n return (await client(ctx).post(\"/tunnel/reconnect\", opts.client ? { client: opts.client } : undefined)).body;\n}\nexport async function tunnelTest(\n ctx: CliContext,\n _args: unknown[],\n opts: { client?: string },\n): Promise<unknown> {\n return (await client(ctx).post(\"/tunnel/test\", opts.client ? { client: opts.client } : undefined)).body;\n}\n\n// ── monitor ──\nexport async function monitorList(ctx: CliContext): Promise<unknown> {\n return (await client(ctx).get(\"/monitors\")).body;\n}\nexport async function monitorShow(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [name] = args as [string];\n const res = await client(ctx).get<{ monitors?: Array<{ name: string }> }>(\"/monitors\");\n const monitor = res.body?.monitors?.find((m) => m.name === name);\n if (!monitor) throw new YoooclawError(\"YOOOCLAW_NOT_FOUND\", `监控任务不存在:${name}`);\n return { ok: true, monitor };\n}\nexport async function monitorCreate(\n ctx: CliContext,\n args: unknown[],\n opts: { description?: string; matchRules?: string; schedule?: string },\n): Promise<unknown> {\n const [name] = args as [string];\n if (!opts.description || !opts.matchRules || !opts.schedule) {\n throw new YoooclawError(\"YOOOCLAW_INVALID_ARGUMENT\", \"--description / --match-rules / --schedule 均必填\");\n }\n const res = await client(ctx).post(\"/monitors\", {\n name,\n description: opts.description,\n matchRules: parseJsonArg(opts.matchRules, \"--match-rules\"),\n schedule: opts.schedule,\n });\n return res.body;\n}\nexport async function monitorDelete(\n ctx: CliContext,\n args: unknown[],\n opts: { yes?: boolean },\n): Promise<unknown> {\n const [name] = args as [string];\n if (!opts.yes && !(await confirm(`确认删除监控任务 \\`${name}\\`?`, false))) {\n throw new YoooclawError(\"YOOOCLAW_CONFIRMATION_REQUIRED\", \"已取消\");\n }\n return (await client(ctx).request(\"DELETE\", `/monitors/${encodeURIComponent(name)}`)).body;\n}\nexport async function monitorEnable(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [name] = args as [string];\n return (await client(ctx).post(`/monitors/${encodeURIComponent(name)}/enable`)).body;\n}\nexport async function monitorDisable(ctx: CliContext, args: unknown[]): Promise<unknown> {\n const [name] = args as [string];\n return (await client(ctx).post(`/monitors/${encodeURIComponent(name)}/disable`)).body;\n}\n\n// ── gateway test ──\nexport async function gatewayTest(\n ctx: CliContext,\n _args: unknown[],\n opts: { fromPhoneIp?: string; viaRelay?: boolean },\n): Promise<unknown> {\n const c = client(ctx);\n if (opts.viaRelay) {\n return { ok: true, viaRelay: true, result: (await c.post(\"/tunnel/test\")).body };\n }\n const probe = {\n notifications: [\n { id: `gwtest_${Date.now()}`, app: \"yoooclaw.gatewaytest\", title: \"gateway test\", body: \"probe\", timestamp: new Date().toISOString() },\n ],\n };\n const res = await c.post(\"/notifications\", probe);\n return {\n ok: res.status >= 200 && res.status < 300,\n fromPhoneIp: opts.fromPhoneIp ?? null,\n status: res.status,\n response: res.body,\n };\n}\n\n// ── raw api ──\nexport async function apiRaw(\n ctx: CliContext,\n args: unknown[],\n opts: { data?: string; header?: string[] | string },\n): Promise<unknown> {\n const [method, path] = args as [string, string];\n let data: unknown;\n if (opts.data) {\n let raw: string;\n if (opts.data === \"-\") raw = await readStdin();\n else if (opts.data.startsWith(\"@\")) raw = readFileSync(opts.data.slice(1), \"utf-8\");\n else raw = opts.data;\n try {\n data = JSON.parse(raw);\n } catch {\n data = raw;\n }\n }\n const headers: Record<string, string> = {};\n const headerList = Array.isArray(opts.header) ? opts.header : opts.header ? [opts.header] : [];\n for (const h of headerList) {\n const idx = h.indexOf(\":\");\n if (idx > 0) headers[h.slice(0, idx).trim()] = h.slice(idx + 1).trim();\n }\n const res = await client(ctx).request(method.toUpperCase(), path, data, headers);\n return { ok: res.status >= 200 && res.status < 300, status: res.status, body: res.body };\n}\n",
|
|
109
109
|
"/**\n * 命令实现注册表 —— path(`<service> <subcommand>`,去掉位置参数占位)→ handler。\n *\n * program.ts 按 path 查表;未注册的命令回落 notImplemented 占位。\n * 新增 service 实现时在此登记即可,命令树结构仍以 command-tree.ts 为准。\n */\nimport type { CommandHandler } from \"../program.js\";\nimport { configInit, configShow, configSet, configUnset } from \"./config.js\";\nimport { profileList, profileUse, profileCreate, profileDelete } from \"./profile.js\";\nimport {\n authAddApiKey,\n authListApiKeys,\n authRemoveApiKey,\n authSetApiKey,\n authSetDefaultApiKey,\n authStatus,\n authTokenRotate,\n authCheck,\n} from \"./auth.js\";\nimport {\n notificationSearch,\n notificationSummary,\n notificationStats,\n notificationStoragePath,\n notificationToday,\n notificationRecent,\n notificationUnread,\n} from \"./notification.js\";\nimport { syncScan, syncFetch, syncCommit } from \"./sync.js\";\nimport {\n recordingList,\n recordingStatus,\n recordingStoragePath,\n recordingLatest,\n recordingSetupAsr,\n recordingEvents,\n} from \"./recording.js\";\nimport {\n imageList,\n imageStatus,\n imagePath,\n imageStoragePath,\n imageLatest,\n} from \"./image.js\";\nimport { logSearch, logErrors } from \"./log.js\";\nimport { migrateFromOpenclaw } from \"./migrate.js\";\nimport { updateSelf } from \"./update.js\";\nimport { doctor } from \"./doctor.js\";\nimport { skillsList, skillsTargets, skillsInstall } from \"./skills.js\";\nimport {\n daemonStart,\n daemonStop,\n daemonRestart,\n daemonReload,\n daemonStatus,\n daemonLogs,\n daemonRunForeground,\n} from \"./daemon.js\";\nimport {\n lightSend,\n lightBlink,\n lightruleList,\n lightruleShow,\n lightruleCreate,\n lightruleUpdate,\n lightruleDelete,\n lightruleEnable,\n lightruleDisable,\n lightruleOn,\n lightruleOff,\n tunnelStatus,\n tunnelReconnect,\n tunnelTest,\n monitorList,\n monitorShow,\n monitorCreate,\n monitorDelete,\n monitorEnable,\n monitorDisable,\n gatewayTest,\n apiRaw,\n} from \"./daemon-services.js\";\n\nexport const HANDLERS: Record<string, CommandHandler> = {\n \"config init\": configInit,\n \"config show\": configShow,\n \"config set\": configSet,\n \"config unset\": configUnset,\n\n \"profile list\": profileList,\n \"profile use\": profileUse,\n \"profile create\": profileCreate,\n \"profile delete\": profileDelete,\n\n \"auth set-api-key\": authSetApiKey,\n \"auth add-api-key\": authAddApiKey,\n \"auth list-api-keys\": authListApiKeys,\n \"auth remove-api-key\": authRemoveApiKey,\n \"auth set-default-api-key\": authSetDefaultApiKey,\n \"auth status\": authStatus,\n \"auth token-rotate\": authTokenRotate,\n \"auth check\": authCheck,\n\n \"notification search\": notificationSearch,\n \"notification summary\": notificationSummary,\n \"notification stats\": notificationStats,\n \"notification storage-path\": notificationStoragePath,\n \"notification +today\": notificationToday,\n \"notification +recent\": notificationRecent,\n \"notification +unread\": notificationUnread,\n\n \"sync scan\": syncScan,\n \"sync fetch\": syncFetch,\n \"sync commit\": syncCommit,\n\n \"recording list\": recordingList,\n \"recording status\": recordingStatus,\n \"recording storage-path\": recordingStoragePath,\n \"recording setup-asr\": recordingSetupAsr,\n \"recording events\": recordingEvents,\n \"recording +latest\": recordingLatest,\n\n \"image list\": imageList,\n \"image status\": imageStatus,\n \"image path\": imagePath,\n \"image storage-path\": imageStoragePath,\n \"image +latest\": imageLatest,\n\n log: logSearch,\n \"log +errors\": logErrors,\n\n \"migrate from-openclaw\": migrateFromOpenclaw,\n \"update self\": updateSelf,\n \"skills list\": skillsList,\n \"skills targets\": skillsTargets,\n \"skills install\": skillsInstall,\n doctor,\n\n \"daemon start\": daemonStart,\n \"daemon stop\": daemonStop,\n \"daemon restart\": daemonRestart,\n \"daemon reload\": daemonReload,\n \"daemon status\": daemonStatus,\n \"daemon logs\": daemonLogs,\n \"daemon run-foreground\": daemonRunForeground,\n\n \"light send\": lightSend,\n \"light +blink\": lightBlink,\n\n \"lightrule list\": lightruleList,\n \"lightrule show\": lightruleShow,\n \"lightrule create\": lightruleCreate,\n \"lightrule update\": lightruleUpdate,\n \"lightrule delete\": lightruleDelete,\n \"lightrule enable\": lightruleEnable,\n \"lightrule disable\": lightruleDisable,\n \"lightrule +on\": lightruleOn,\n \"lightrule +off\": lightruleOff,\n\n \"tunnel status\": tunnelStatus,\n \"tunnel reconnect\": tunnelReconnect,\n \"tunnel +test\": tunnelTest,\n\n \"monitor list\": monitorList,\n \"monitor show\": monitorShow,\n \"monitor create\": monitorCreate,\n \"monitor delete\": monitorDelete,\n \"monitor enable\": monitorEnable,\n \"monitor disable\": monitorDisable,\n\n \"gateway test\": gatewayTest,\n api: apiRaw,\n};\n",
|
|
110
110
|
"/**\n * `@yoooclaw/cli` 程序化入口。\n *\n * - `run(argv)` 解析并执行命令(bin.ts 调用)。\n * - 同时再导出核心模块,供测试与未来的程序化集成使用。\n */\nimport { buildProgram } from \"./program.js\";\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n const program = buildProgram();\n await program.parseAsync(argv);\n}\n\nexport { buildProgram } from \"./program.js\";\nexport { COMMAND_TREE } from \"./command-tree.js\";\nexport { CLI_VERSION } from \"./version.js\";\nexport { ErrorCode, YoooclawError } from \"./errors.js\";\nexport {\n renderResult,\n renderError,\n resolveFormat,\n type OutputFormat,\n} from \"./output/format.js\";\nexport {\n buildContext,\n resolveActiveProfile,\n type CliContext,\n type GlobalFlags,\n} from \"./context.js\";\nexport * as paths from \"./paths.js\";\n",
|
|
111
111
|
"/**\n * yoooclaw CLI 可执行入口。\n * package.json#bin(yoooclaw / yc)指向构建产物 dist/bin.cjs。\n */\nimport { run } from \"./index.js\";\n\nvoid run(process.argv);\n"
|
|
112
112
|
],
|
|
113
|
-
"mappings": "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,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IA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",
|
|
114
|
-
"debugId": "
|
|
113
|
+
"mappings": "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,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAC7C;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IAAG;AAAA,IA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",
|
|
114
|
+
"debugId": "F8BCCCE3F5E70BE464756E2164756E21",
|
|
115
115
|
"names": []
|
|
116
116
|
}
|