lightclawbot 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +241 -1
  2. package/dist/public/data/scripts/check-update.9c4e848e.sh +138 -0
  3. package/dist/public/data/scripts/check-update.sh +138 -0
  4. package/dist/public/data/scripts/manifest.json +21 -0
  5. package/dist/public/data/scripts/preflight.7c5a27cd.sh +86 -0
  6. package/dist/public/data/scripts/preflight.sh +86 -0
  7. package/dist/public/data/scripts/upgrade.bd220b70.sh +214 -0
  8. package/dist/public/data/scripts/upgrade.sh +214 -0
  9. package/dist/src/channel.d.ts.map +1 -1
  10. package/dist/src/channel.js +34 -17
  11. package/dist/src/channel.js.map +1 -1
  12. package/dist/src/config.d.ts +34 -1
  13. package/dist/src/config.d.ts.map +1 -1
  14. package/dist/src/config.js +104 -6
  15. package/dist/src/config.js.map +1 -1
  16. package/dist/src/download-tool.d.ts.map +1 -1
  17. package/dist/src/download-tool.js +16 -16
  18. package/dist/src/download-tool.js.map +1 -1
  19. package/dist/src/file-storage.d.ts.map +1 -1
  20. package/dist/src/file-storage.js +3 -5
  21. package/dist/src/file-storage.js.map +1 -1
  22. package/dist/src/format-urls.d.ts +26 -0
  23. package/dist/src/format-urls.d.ts.map +1 -0
  24. package/dist/src/format-urls.js +53 -0
  25. package/dist/src/format-urls.js.map +1 -0
  26. package/dist/src/gateway.d.ts.map +1 -1
  27. package/dist/src/gateway.js +89 -39
  28. package/dist/src/gateway.js.map +1 -1
  29. package/dist/src/history/session-store.d.ts +4 -0
  30. package/dist/src/history/session-store.d.ts.map +1 -1
  31. package/dist/src/history/session-store.js +41 -0
  32. package/dist/src/history/session-store.js.map +1 -1
  33. package/dist/src/inbound.d.ts.map +1 -1
  34. package/dist/src/inbound.js +38 -15
  35. package/dist/src/inbound.js.map +1 -1
  36. package/dist/src/outbound.d.ts.map +1 -1
  37. package/dist/src/outbound.js +5 -3
  38. package/dist/src/outbound.js.map +1 -1
  39. package/dist/src/socket-handlers.d.ts.map +1 -1
  40. package/dist/src/socket-handlers.js +1 -0
  41. package/dist/src/socket-handlers.js.map +1 -1
  42. package/dist/src/types.d.ts +6 -1
  43. package/dist/src/types.d.ts.map +1 -1
  44. package/dist/src/upload-tool.d.ts.map +1 -1
  45. package/dist/src/upload-tool.js +14 -19
  46. package/dist/src/upload-tool.js.map +1 -1
  47. package/package.json +6 -3
  48. package/skills/lightclaw-media/SKILL.md +330 -0
@@ -8,7 +8,7 @@
8
8
  * ```json
9
9
  "channels": {
10
10
  "lightclawbot": {
11
- "apiKey": "test-key-123",
11
+ "apiKeys": ["key-1", "key-2"],
12
12
  "enabled": true
13
13
  }
14
14
  }
@@ -36,6 +36,39 @@ export declare const SOCKET_RECONNECTION_ATTEMPTS: number;
36
36
  export declare const X_PRODUCT = "channel";
37
37
  /** 构建通用认证 headers */
38
38
  export declare function buildAuthHeaders(apiKey: string): Record<string, string>;
39
+ /** WS 多 key 认证 headers(authorizations 为 JSON 数组字符串,不带 Bearer) */
40
+ export declare function buildMultiAuthHeaders(apiKeys: string[]): Record<string, string | string[]>;
41
+ /** 设置 apiKeyMap(gateway 启动时调用) */
42
+ export declare function setApiKeyMap(map: Map<string, string>, defaultApiKey: string): void;
43
+ /** 记录 sessionKey → apiKey 映射(inbound 处理消息时调用) */
44
+ export declare function setSessionApiKey(sessionKey: string, apiKey: string): void;
45
+ /**
46
+ * 统一的 apiKey 解析入口。
47
+ *
48
+ * 优先级:
49
+ * 1. sessionKey → 直查 sessionKeyToApiKey 映射
50
+ * 2. senderId (uin) → 直查 globalApiKeyMap
51
+ * 3. sessionKey 中解析 uin → 再查 globalApiKeyMap(兜底)
52
+ * 4. globalDefaultApiKey
53
+ *
54
+ * 全链路统一使用此函数获取 apiKey,避免 inbound / tool 各自维护不同的获取逻辑。
55
+ */
56
+ export declare function resolveEffectiveApiKey(params: {
57
+ sessionKey?: string;
58
+ senderId?: string;
59
+ }): string;
60
+ /**
61
+ * 从 sessionKey 中提取 uin(peer ID)。
62
+ *
63
+ * 框架生成的 sessionKey 格式取决于 dmScope 配置:
64
+ * - per-channel-peer: "agent:<agentId>:<channel>:direct:<peerId>"
65
+ * - per-account-channel-peer: "agent:<agentId>:<channel>:<accountId>:direct:<peerId>"
66
+ * - per-peer: "agent:<agentId>:direct:<peerId>"
67
+ * - main (默认): "agent:<agentId>:main" ← 不含 peerId
68
+ *
69
+ * 也兼容旧格式 "lightclawbot:dm:<peerId>"。
70
+ */
71
+ export declare function extractUinFromSessionKey(sessionKey: string): string | undefined;
39
72
  /** 获取当前用户信息(用于提取 botId) */
40
73
  export declare const API_PATH_USER_CURRENT = "/user/current";
41
74
  /** COS 文件上传接口 */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAU5C,aAAa;AACb,eAAO,MAAM,MAAM,mCAAmC,CAAC;AAEvD,qBAAqB;AACrB,eAAO,MAAM,MAAM,yCAAoB,CAAC;AACxC,oBAAoB;AACpB,eAAO,MAAM,YAAY,2CAAsB,CAAC;AAChD,eAAe;AACf,eAAO,MAAM,YAAY,2CAAsB,CAAC;AAMhD,qBAAqB;AACrB,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAE1C,qBAAqB;AACrB,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AACnD,eAAO,MAAM,4BAA4B,QAAW,CAAC;AAMrD,wCAAwC;AACxC,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,qBAAqB;AACrB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKvE;AAMD,2BAA2B;AAC3B,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,iBAAiB;AACjB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AACxD,iBAAiB;AACjB,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAM7D,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAM3D,oBAAoB;AACpB,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,mBAAmB;AACnB,eAAO,MAAM,cAAc,SAAU,CAAC;AACtC,sBAAsB;AACtB,eAAO,MAAM,eAAe,QAAmB,CAAC;AAMhD,eAAe;AACf,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,aAAa;AACb,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,iBAAiB;AACjB,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAMvC,mBAAmB;AACnB,eAAO,MAAM,SAAS,QAAiB,CAAC;AACxC,kBAAkB;AAClB,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,yBAAyB;AACzB,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,kBAAkB;AAClB,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAM9C,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,QAAc,CAAC;AACrD,yBAAyB;AACzB,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,iBAAiB;AACjB,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAe;AACf,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAOrC,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAkB5D;AAED,aAAa;AACb,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,wBAAwB,CAmC1B;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE7D;AAED,yBAAyB;AACzB,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACvC,cAAc,CAgBhB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * ```json
9
9
  "channels": {
10
10
  "lightclawbot": {
11
- "apiKey": "test-key-123",
11
+ "apiKeys": ["key-1", "key-2"],
12
12
  "enabled": true
13
13
  }
14
14
  }
@@ -51,6 +51,96 @@ export function buildAuthHeaders(apiKey) {
51
51
  "x-product": X_PRODUCT,
52
52
  };
53
53
  }
54
+ /** WS 多 key 认证 headers(authorizations 为 JSON 数组字符串,不带 Bearer) */
55
+ export function buildMultiAuthHeaders(apiKeys) {
56
+ return {
57
+ authorizations: apiKeys.map(key => `Bearer ${key}`),
58
+ "x-product": X_PRODUCT,
59
+ };
60
+ }
61
+ // ============================================================
62
+ // 全局 uin → apiKey 映射管理
63
+ // ============================================================
64
+ /** 全局 uin→apiKey 映射(gateway 启动时构建,工具执行时读取) */
65
+ let globalApiKeyMap = new Map();
66
+ let globalDefaultApiKey = "";
67
+ /** sessionKey → apiKey 直接映射(inbound 处理时写入,tool 执行时读取) */
68
+ const sessionKeyToApiKey = new Map();
69
+ /** 设置 apiKeyMap(gateway 启动时调用) */
70
+ export function setApiKeyMap(map, defaultApiKey) {
71
+ globalApiKeyMap = map;
72
+ globalDefaultApiKey = defaultApiKey;
73
+ }
74
+ /** 记录 sessionKey → apiKey 映射(inbound 处理消息时调用) */
75
+ export function setSessionApiKey(sessionKey, apiKey) {
76
+ sessionKeyToApiKey.set(sessionKey.toLowerCase(), apiKey);
77
+ }
78
+ /**
79
+ * 统一的 apiKey 解析入口。
80
+ *
81
+ * 优先级:
82
+ * 1. sessionKey → 直查 sessionKeyToApiKey 映射
83
+ * 2. senderId (uin) → 直查 globalApiKeyMap
84
+ * 3. sessionKey 中解析 uin → 再查 globalApiKeyMap(兜底)
85
+ * 4. globalDefaultApiKey
86
+ *
87
+ * 全链路统一使用此函数获取 apiKey,避免 inbound / tool 各自维护不同的获取逻辑。
88
+ */
89
+ export function resolveEffectiveApiKey(params) {
90
+ // 1. 通过 sessionKey 直接查映射(tool 执行时的主要路径)
91
+ if (params.sessionKey) {
92
+ const apiKey = sessionKeyToApiKey.get(params.sessionKey.toLowerCase());
93
+ if (apiKey)
94
+ return apiKey;
95
+ }
96
+ // 2. 通过 senderId (uin) 查映射(inbound 处理时的主要路径)
97
+ if (params.senderId) {
98
+ const apiKey = globalApiKeyMap.get(params.senderId);
99
+ if (apiKey)
100
+ return apiKey;
101
+ }
102
+ // 3. 从 sessionKey 中解析 uin,再查 globalApiKeyMap(兜底)
103
+ if (params.sessionKey) {
104
+ const uin = extractUinFromSessionKey(params.sessionKey);
105
+ if (uin) {
106
+ const apiKey = globalApiKeyMap.get(uin);
107
+ if (apiKey)
108
+ return apiKey;
109
+ }
110
+ }
111
+ // 4. 默认 apiKey
112
+ return globalDefaultApiKey;
113
+ }
114
+ /**
115
+ * 从 sessionKey 中提取 uin(peer ID)。
116
+ *
117
+ * 框架生成的 sessionKey 格式取决于 dmScope 配置:
118
+ * - per-channel-peer: "agent:<agentId>:<channel>:direct:<peerId>"
119
+ * - per-account-channel-peer: "agent:<agentId>:<channel>:<accountId>:direct:<peerId>"
120
+ * - per-peer: "agent:<agentId>:direct:<peerId>"
121
+ * - main (默认): "agent:<agentId>:main" ← 不含 peerId
122
+ *
123
+ * 也兼容旧格式 "lightclawbot:dm:<peerId>"。
124
+ */
125
+ export function extractUinFromSessionKey(sessionKey) {
126
+ if (!sessionKey)
127
+ return undefined;
128
+ const lower = sessionKey.toLowerCase();
129
+ // 新格式:查找 ":direct:<peerId>" 片段
130
+ const directIdx = lower.indexOf(":direct:");
131
+ if (directIdx >= 0) {
132
+ const afterDirect = sessionKey.slice(directIdx + ":direct:".length);
133
+ // peerId 可能后面还跟着 ":thread:xxx" 等后缀,取第一段
134
+ const peerId = afterDirect.split(":")[0];
135
+ return peerId || undefined;
136
+ }
137
+ // 旧格式兼容:lightclawbot:dm:<peerId>
138
+ const legacyPrefix = `${CHANNEL_KEY}:dm:`;
139
+ if (lower.startsWith(legacyPrefix.toLowerCase())) {
140
+ return sessionKey.slice(legacyPrefix.length) || undefined;
141
+ }
142
+ return undefined;
143
+ }
54
144
  // ============================================================
55
145
  // API 路径配置
56
146
  // ============================================================
@@ -118,8 +208,9 @@ export function listAccountIds(cfg) {
118
208
  if (!section)
119
209
  return [];
120
210
  const ids = [];
121
- // 默认账户:顶层有 apiKey 即视为存在
122
- if (section.apiKey) {
211
+ // 默认账户:顶层有 apiKeys 即视为存在
212
+ const keys = section.apiKeys;
213
+ if (Array.isArray(keys) && keys.length > 0) {
123
214
  ids.push(DEFAULT_ACCOUNT_ID);
124
215
  }
125
216
  // 命名账户
@@ -142,11 +233,17 @@ export function resolveAccount(cfg, accountId) {
142
233
  const accounts = section.accounts;
143
234
  raw = accounts?.[id] ?? {};
144
235
  }
145
- // 解析凭证来源
146
- const apiKey = raw.apiKey || process.env[ENV_API_KEY] || "";
236
+ // 解析 apiKeys(配置中只有 apiKeys,不会有 apiKey)
237
+ const allApiKeys = Array.isArray(raw.apiKeys) ? raw.apiKeys.filter(Boolean) : [];
238
+ // 主 key = apiKeys[0],环境变量作为兜底
239
+ const apiKey = allApiKeys[0] || process.env[ENV_API_KEY] || "";
147
240
  const apiBaseUrl = raw.apiBaseUrl || process.env[ENV_API_BASE_URL] || "";
241
+ // 如果环境变量提供了 key 且 allApiKeys 为空,补入
242
+ if (!allApiKeys.length && apiKey) {
243
+ allApiKeys.push(apiKey);
244
+ }
148
245
  let secretSource = "none";
149
- if (raw.apiKey) {
246
+ if (allApiKeys.length > 0) {
150
247
  secretSource = "config";
151
248
  }
152
249
  else if (process.env[ENV_API_KEY]) {
@@ -155,6 +252,7 @@ export function resolveAccount(cfg, accountId) {
155
252
  return {
156
253
  accountId: id,
157
254
  apiKey,
255
+ allApiKeys,
158
256
  apiBaseUrl,
159
257
  enabled: raw.enabled ?? true,
160
258
  name: raw.name,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"download-tool.d.ts","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAc3E,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CA0B9B,CAAC;AAmBF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA2GjE"}
1
+ {"version":3,"file":"download-tool.d.ts","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAa3E,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CA0B9B,CAAC;AAMF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAuHjE"}
@@ -11,7 +11,7 @@ import * as fs from "node:fs";
11
11
  import * as path from "node:path";
12
12
  import { getFileDownloadUrl, downloadFileFromCos, uploadFileToCos, } from "./file-storage.js";
13
13
  import { formatFileSize } from "./media.js";
14
- import { resolveAccount } from "./config.js";
14
+ import { resolveEffectiveApiKey } from "./config.js";
15
15
  // ============================================================
16
16
  // 工具参数 schema
17
17
  // ============================================================
@@ -41,20 +41,14 @@ export const downloadToolSchema = {
41
41
  required: ["action", "filePath"],
42
42
  };
43
43
  // ============================================================
44
- // 辅助:从 api.config 动态解析出 FileStorageConfig
45
- // ============================================================
46
- function resolveStorageConfig(api, defaultAccountId) {
47
- if (!api.config)
48
- return {};
49
- const account = resolveAccount(api.config, defaultAccountId);
50
- return { apiKey: account.apiKey };
51
- }
52
- // ============================================================
53
44
  // 工具注册(飞书工厂函数模式)
54
45
  // ============================================================
55
46
  export function registerDownloadTool(api) {
47
+ // 通过闭包捕获 api.logger,tool ctx 中没有 log
48
+ const log = api.logger;
56
49
  api.registerTool((ctx) => {
57
50
  const defaultAccountId = ctx.agentAccountId;
51
+ const sessionKey = ctx.sessionKey;
58
52
  return {
59
53
  name: DOWNLOAD_TOOL_NAME,
60
54
  description: "Manage files on Tencent COS cloud storage. " +
@@ -65,8 +59,12 @@ export function registerDownloadTool(api) {
65
59
  "Note: For batch uploading files to share with users, prefer lightclaw_upload_file instead.",
66
60
  parameters: downloadToolSchema,
67
61
  async execute(_toolCallId, params) {
68
- // 每次 execute 时动态解析 apiKey
69
- const storageConfig = resolveStorageConfig(api, defaultAccountId);
62
+ // 调试日志:打印原始 sessionKey,帮助排查多 key 模式下的 apiKey 选取
63
+ // 使用 warn 级别输出,确保终端可见
64
+ log.warn(`[lightclaw_get_file_url] sessionKey="${sessionKey}", accountId="${defaultAccountId}"`);
65
+ // 每次 execute 时动态解析 apiKey(多 key 模式下通过 sessionKey 直接获取)
66
+ const apiKey = resolveEffectiveApiKey({ sessionKey });
67
+ log.warn(`[lightclaw_get_file_url] resolved apiKey="${apiKey?.slice(0, 8)}..."`);
70
68
  const { action, filePath, localDir } = params;
71
69
  if (!filePath || typeof filePath !== "string") {
72
70
  return {
@@ -77,13 +75,14 @@ export function registerDownloadTool(api) {
77
75
  switch (action) {
78
76
  case "get_url": {
79
77
  const url = getFileDownloadUrl(filePath);
78
+ const fileName = filePath.split("/").pop() || filePath;
80
79
  return {
81
- content: [{ type: "text", text: `Download URL: ${url}` }],
80
+ content: [{ type: "text", text: `[${fileName}](${url})` }],
82
81
  details: { action, filePath, url },
83
82
  };
84
83
  }
85
84
  case "download_to_local": {
86
- const result = await downloadFileFromCos(filePath, storageConfig);
85
+ const result = await downloadFileFromCos(filePath, { apiKey });
87
86
  const targetDir = localDir || process.cwd();
88
87
  // 确保目录存在
89
88
  if (!fs.existsSync(targetDir)) {
@@ -111,11 +110,12 @@ export function registerDownloadTool(api) {
111
110
  content: [{ type: "text", text: `Error: local file not found: ${filePath}` }],
112
111
  };
113
112
  }
114
- const uploadResult = await uploadFileToCos(filePath, storageConfig);
113
+ const uploadResult = await uploadFileToCos(filePath, { apiKey });
114
+ const fileName = path.basename(filePath);
115
115
  return {
116
116
  content: [{
117
117
  type: "text",
118
- text: `File uploaded. Download URL: ${uploadResult.url}`,
118
+ text: `File uploaded.\n\n[${fileName}](${uploadResult.url})`,
119
119
  }],
120
120
  details: {
121
121
  action,
@@ -1 +1 @@
1
- {"version":3,"file":"download-tool.js","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,QAAiB;IACvB,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAiB;YACvB,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;YAC5D,WAAW,EACT,qBAAqB;gBACrB,4FAA4F;gBAC5F,qEAAqE;gBACrE,gFAAgF;SACnF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAiB;YACvB,WAAW,EACT,2FAA2F;gBAC3F,0DAA0D;SAC7D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAiB;YACvB,WAAW,EACT,iFAAiF;gBACjF,6DAA6D;SAChE;KACF;IACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAU;CAC1C,CAAC;AAEF,+DAA+D;AAC/D,0CAA0C;AAC1C,+DAA+D;AAE/D,SAAS,oBAAoB,CAC3B,GAAsC,EACtC,gBAAyB;IAEzB,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,GAAG,CAAC,YAAY,CACd,CAAC,GAAG,EAAE,EAAE;QACN,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,6CAA6C;gBAC7C,WAAW;gBACX,sGAAsG;gBACtG,qGAAqG;gBACrG,mGAAmG;gBACnG,4FAA4F;YAC9F,UAAU,EAAE,kBAAkB;YAE9B,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,MAA+D;gBAE/D,0BAA0B;gBAC1B,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBAClE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;gBAE9C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC9C,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;qBAClE,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,QAAQ,MAAM,EAAE,CAAC;wBACf,KAAK,SAAS,CAAC,CAAC,CAAC;4BACf,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;4BACzC,OAAO;gCACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,EAAE,EAAE,CAAC;gCACzD,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;6BACnC,CAAC;wBACJ,CAAC;wBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;4BACzB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;4BAClE,MAAM,SAAS,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;4BAE5C,SAAS;4BACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC/C,CAAC;4BAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;4BACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;4BAE5C,OAAO;gCACL,OAAO,EAAE,CAAC;wCACR,IAAI,EAAE,MAAM;wCACZ,IAAI,EAAE,uBAAuB,UAAU,KAAK,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,WAAW,GAAG;qCAC3G,CAAC;gCACF,OAAO,EAAE;oCACP,MAAM;oCACN,QAAQ;oCACR,SAAS,EAAE,UAAU;oCACrB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;oCAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;iCAChC;6BACF,CAAC;wBACJ,CAAC;wBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;4BAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC7B,OAAO;oCACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,QAAQ,EAAE,EAAE,CAAC;iCAC9E,CAAC;4BACJ,CAAC;4BAED,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;4BACpE,OAAO;gCACL,OAAO,EAAE,CAAC;wCACR,IAAI,EAAE,MAAM;wCACZ,IAAI,EAAE,gCAAgC,YAAY,CAAC,GAAG,EAAE;qCACzD,CAAC;gCACF,OAAO,EAAE;oCACP,MAAM;oCACN,SAAS,EAAE,QAAQ;oCACnB,WAAW,EAAE,YAAY,CAAC,QAAQ;oCAClC,GAAG,EAAE,YAAY,CAAC,GAAG;iCACtB;6BACF,CAAC;wBACJ,CAAC;wBAED;4BACE,OAAO;gCACL,OAAO,EAAE,CAAC;wCACR,IAAI,EAAE,MAAM;wCACZ,IAAI,EAAE,0BAA0B,MAAM,iEAAiE;qCACxG,CAAC;6BACH,CAAC;oBACN,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;qBACtD,CAAC;gBACJ,CAAC;YACH,CAAC;SACyB,CAAC;IAC/B,CAAC,EACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"download-tool.js","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../../src/file-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,iBAAsB,EAC9B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAGjB"}
1
+ {"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../../src/file-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,iBAAsB,EAC9B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,YAAY,CAAC,CAuDvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAsCvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,iBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -35,9 +35,8 @@ export async function uploadFileToCos(localPath, config = {}, customFileName) {
35
35
  const fileBuffer = fs.readFileSync(localPath);
36
36
  const ext = path.extname(fileName).toLowerCase();
37
37
  const mimeType = guessMimeByExt(ext);
38
- // 构建日期目录路径
39
- const datePart = new Date().toISOString().split("T")[0];
40
- const filePath = `${datePart}/${fileName}`;
38
+ // 时间戳目录 + 原始文件名,天然唯一且简洁
39
+ const filePath = `${Date.now()}/${fileName}`;
41
40
  // 使用 fetch + FormData 上传
42
41
  const { Blob: NodeBlob } = await import("node:buffer");
43
42
  const blob = new NodeBlob([fileBuffer], { type: mimeType });
@@ -78,8 +77,7 @@ export async function uploadFileToCos(localPath, config = {}, customFileName) {
78
77
  * @returns 上传结果,包含公网 URL
79
78
  */
80
79
  export async function uploadBufferToCos(buffer, fileName, mimeType, config = {}) {
81
- const datePart = new Date().toISOString().split("T")[0];
82
- const filePath = `${datePart}/${fileName}`;
80
+ const filePath = `${Date.now()}/${fileName}`;
83
81
  const { Blob: NodeBlob } = await import("node:buffer");
84
82
  const blob = new NodeBlob([new Uint8Array(buffer)], { type: mimeType });
85
83
  const formData = new FormData();
@@ -1 +1 @@
1
- {"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../../src/file-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../../src/file-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AA6BrB,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,SAA4B,EAAE,EAC9B,cAAuB;IAEvB,SAAS;IACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,wBAAwB;IACxB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;IAE7C,yBAAyB;IACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAuB,EAAE,QAAQ,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEtC,MAAM,OAAO,GAA2B,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,GAAG,eAAe,EAAE,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiE,CAAC;QAEvG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,sCAAsC,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;QAC7G,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,SAA4B,EAAE;IAE9B,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;IAE7C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAuB,EAAE,QAAQ,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEtC,MAAM,OAAO,GAA2B,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,GAAG,eAAe,EAAE,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiE,CAAC;QAEvG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,sCAAsC,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;QAC7G,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB;IAEhB,OAAO,GAAG,YAAY,GAAG,iBAAiB,aAAa,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,SAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,iBAAiB,aAAa,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEpI,MAAM,OAAO,GAA2B,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC;QACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;QAErD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,SAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * LightClaw — COS URL 格式化
3
+ *
4
+ * 将消息文本中的裸 COS 下载链接自动转换为 Markdown 链接格式:
5
+ * 裸链接: https://lightai.intl.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
6
+ * Markdown: [report.pdf](https://lightai.intl.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
7
+ *
8
+ * 使用场景:
9
+ * 1. gateway.ts sendReply / sendFiles — 兜底确保最终发出去的消息格式正确
10
+ * 2. outbound.ts sendViaSocket — 出站消息同理
11
+ *
12
+ * 设计要点:
13
+ * - 负向后瞻 (?<!\]\() 避免对已有 Markdown 链接二次包装
14
+ * - 负向后瞻 (?<!\() 避免对 (URL) 形式的括号内链接重复处理
15
+ * - 从 filePath 参数提取文件名作为链接文本
16
+ */
17
+ /**
18
+ * 将文本中的裸 COS 下载链接转换为 Markdown 链接。
19
+ *
20
+ * 已是 `[xxx](url)` 格式的不会被重复处理。
21
+ *
22
+ * @param text - 原始消息文本
23
+ * @returns 转换后的文本
24
+ */
25
+ export declare function formatCosUrls(text: string): string;
26
+ //# sourceMappingURL=format-urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-urls.d.ts","sourceRoot":"","sources":["../../src/format-urls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA6BH;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * LightClaw — COS URL 格式化
3
+ *
4
+ * 将消息文本中的裸 COS 下载链接自动转换为 Markdown 链接格式:
5
+ * 裸链接: https://lightai.intl.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
6
+ * Markdown: [report.pdf](https://lightai.intl.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
7
+ *
8
+ * 使用场景:
9
+ * 1. gateway.ts sendReply / sendFiles — 兜底确保最终发出去的消息格式正确
10
+ * 2. outbound.ts sendViaSocket — 出站消息同理
11
+ *
12
+ * 设计要点:
13
+ * - 负向后瞻 (?<!\]\() 避免对已有 Markdown 链接二次包装
14
+ * - 负向后瞻 (?<!\() 避免对 (URL) 形式的括号内链接重复处理
15
+ * - 从 filePath 参数提取文件名作为链接文本
16
+ */
17
+ import { DOMAIN, API_PATH_DOWNLOAD } from "./config.js";
18
+ // ============================================================
19
+ // 核心正则 — 匹配裸 COS 下载链接
20
+ // ============================================================
21
+ // 转义域名中的点号用于正则
22
+ const ESCAPED_DOMAIN = DOMAIN.replace(/\./g, "\\.");
23
+ const ESCAPED_PATH = API_PATH_DOWNLOAD.replace(/\//g, "\\/");
24
+ /**
25
+ * 匹配 COS 下载链接,但排除已在 Markdown 链接 `](url)` 中的情况。
26
+ *
27
+ * 结构:
28
+ * (?<!\]\()(?<!\() — 前面不是 "](" 也不是 "("
29
+ * https://DOMAIN/cosmanager/getFileStream\?filePath=
30
+ * ([^\s)\]]+) — 捕获组:filePath 值(遇到空白/)/] 停止)
31
+ */
32
+ const COS_URL_RE = new RegExp(`(?<!\\]\\()(?<!\\()https://${ESCAPED_DOMAIN}${ESCAPED_PATH}\\?filePath=([^\\s)\\]]+)`, "g");
33
+ // ============================================================
34
+ // 公开 API
35
+ // ============================================================
36
+ /**
37
+ * 将文本中的裸 COS 下载链接转换为 Markdown 链接。
38
+ *
39
+ * 已是 `[xxx](url)` 格式的不会被重复处理。
40
+ *
41
+ * @param text - 原始消息文本
42
+ * @returns 转换后的文本
43
+ */
44
+ export function formatCosUrls(text) {
45
+ if (!text)
46
+ return text;
47
+ return text.replace(COS_URL_RE, (fullUrl, filePath) => {
48
+ const decoded = decodeURIComponent(filePath);
49
+ const fileName = decoded.split("/").pop() || decoded;
50
+ return `[${fileName}](${fullUrl})`;
51
+ });
52
+ }
53
+ //# sourceMappingURL=format-urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-urls.js","sourceRoot":"","sources":["../../src/format-urls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExD,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D,eAAe;AACf,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,8BAA8B,cAAc,GAAG,YAAY,2BAA2B,EACtF,GAAG,CACJ,CAAC;AAEF,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAgB,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC;QACrD,OAAO,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,YAAY,CAAC;AAuFpB,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4NrE"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,YAAY,CAAC;AA6IpB,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiOrE"}