@rethinkingstudio/clawpilot 1.1.16-internal.0 → 1.1.16-internal.1
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/commands/upload.d.ts +4 -0
- package/dist/commands/upload.js +87 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/generated/build-config.d.ts +1 -1
- package/dist/generated/build-config.js +1 -1
- package/dist/generated/build-config.js.map +1 -1
- package/dist/i18n/index.js +12 -0
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/upload.ts +105 -0
- package/src/i18n/index.ts +14 -0
- package/src/index.ts +14 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { readFile, stat } from "fs/promises";
|
|
2
|
+
import { basename, extname, resolve } from "path";
|
|
3
|
+
import { readConfig } from "../config/config.js";
|
|
4
|
+
import { t } from "../i18n/index.js";
|
|
5
|
+
import { uploadMedia } from "../media/oss-uploader.js";
|
|
6
|
+
function mimeTypeFromPath(path) {
|
|
7
|
+
switch (extname(path).toLowerCase()) {
|
|
8
|
+
case ".jpg":
|
|
9
|
+
case ".jpeg":
|
|
10
|
+
return "image/jpeg";
|
|
11
|
+
case ".png":
|
|
12
|
+
return "image/png";
|
|
13
|
+
case ".gif":
|
|
14
|
+
return "image/gif";
|
|
15
|
+
case ".webp":
|
|
16
|
+
return "image/webp";
|
|
17
|
+
case ".mp4":
|
|
18
|
+
return "video/mp4";
|
|
19
|
+
case ".mov":
|
|
20
|
+
return "video/quicktime";
|
|
21
|
+
case ".pdf":
|
|
22
|
+
return "application/pdf";
|
|
23
|
+
case ".txt":
|
|
24
|
+
return "text/plain";
|
|
25
|
+
case ".md":
|
|
26
|
+
return "text/markdown";
|
|
27
|
+
case ".json":
|
|
28
|
+
return "application/json";
|
|
29
|
+
default:
|
|
30
|
+
return "application/octet-stream";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function fetchSts(relayServerUrl, gatewayId, relaySecret, mimeType) {
|
|
34
|
+
const res = await fetch(`${relayServerUrl.replace(/\/$/, "")}/api/media/sts`, {
|
|
35
|
+
method: "POST",
|
|
36
|
+
headers: { "Content-Type": "application/json" },
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
gatewayId,
|
|
39
|
+
relaySecret,
|
|
40
|
+
count: 1,
|
|
41
|
+
mimeTypes: [mimeType],
|
|
42
|
+
durationSeconds: mimeType.startsWith("video/") ? 1800 : 600,
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
45
|
+
if (!res.ok) {
|
|
46
|
+
const text = await res.text().catch(() => "");
|
|
47
|
+
throw new Error(`STS fetch failed: ${res.status} ${text}`);
|
|
48
|
+
}
|
|
49
|
+
return res.json();
|
|
50
|
+
}
|
|
51
|
+
export async function uploadCommand(filePath, options = {}) {
|
|
52
|
+
if (!filePath.trim()) {
|
|
53
|
+
throw new Error(t("upload.pathRequired"));
|
|
54
|
+
}
|
|
55
|
+
const config = readConfig();
|
|
56
|
+
const absolutePath = resolve(filePath);
|
|
57
|
+
const fileStat = await stat(absolutePath).catch(() => null);
|
|
58
|
+
if (!fileStat) {
|
|
59
|
+
throw new Error(t("upload.fileMissing", absolutePath));
|
|
60
|
+
}
|
|
61
|
+
if (!fileStat.isFile()) {
|
|
62
|
+
throw new Error(t("upload.notAFile", absolutePath));
|
|
63
|
+
}
|
|
64
|
+
const mimeType = mimeTypeFromPath(absolutePath);
|
|
65
|
+
if (!options.json) {
|
|
66
|
+
console.log(t("upload.starting", basename(absolutePath), mimeType));
|
|
67
|
+
}
|
|
68
|
+
const [data, sts] = await Promise.all([
|
|
69
|
+
readFile(absolutePath),
|
|
70
|
+
fetchSts(config.relayServerUrl, config.gatewayId, config.relaySecret, mimeType),
|
|
71
|
+
]);
|
|
72
|
+
const result = await uploadMedia(sts, data, mimeType);
|
|
73
|
+
if (options.json) {
|
|
74
|
+
console.log(JSON.stringify({
|
|
75
|
+
path: absolutePath,
|
|
76
|
+
fileName: basename(absolutePath),
|
|
77
|
+
mimeType,
|
|
78
|
+
url: result.url,
|
|
79
|
+
thumbnailUrl: result.thumbnailUrl ?? null,
|
|
80
|
+
size: result.size,
|
|
81
|
+
}));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
console.log(t("upload.completed", result.url));
|
|
85
|
+
console.log(result.url);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const DEFAULT_RELAY_SERVER = "https://clawpilot
|
|
1
|
+
export declare const DEFAULT_RELAY_SERVER = "https://clawpilot.codeaddict.cn";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const DEFAULT_RELAY_SERVER = "https://clawpilot
|
|
1
|
+
export const DEFAULT_RELAY_SERVER = "https://clawpilot.codeaddict.cn";
|
|
2
2
|
//# sourceMappingURL=build-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../src/generated/build-config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../src/generated/build-config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,iCAAiC,CAAC"}
|
package/dist/i18n/index.js
CHANGED
|
@@ -64,6 +64,12 @@ const en = {
|
|
|
64
64
|
"setToken.saved": "\nToken saved to ~/.clawai/config.json.",
|
|
65
65
|
"setToken.cleared": "\nToken cleared from ~/.clawai/config.json.",
|
|
66
66
|
"setToken.restart": "Run 'clawpilot restart' to apply the change.\n",
|
|
67
|
+
// upload
|
|
68
|
+
"upload.pathRequired": "Please provide a file path.",
|
|
69
|
+
"upload.fileMissing": (path) => `File not found: ${path}`,
|
|
70
|
+
"upload.notAFile": (path) => `Path is not a file: ${path}`,
|
|
71
|
+
"upload.starting": (name, mimeType) => `Uploading ${name} (${mimeType})…`,
|
|
72
|
+
"upload.completed": (url) => `Upload complete: ${url}`,
|
|
67
73
|
};
|
|
68
74
|
const zh = {
|
|
69
75
|
// pair
|
|
@@ -131,6 +137,12 @@ const zh = {
|
|
|
131
137
|
"setToken.saved": "\nToken 已保存到 ~/.clawai/config.json。",
|
|
132
138
|
"setToken.cleared": "\nToken 已从 ~/.clawai/config.json 清除。",
|
|
133
139
|
"setToken.restart": "请运行 'clawpilot restart' 使修改生效。\n",
|
|
140
|
+
// upload
|
|
141
|
+
"upload.pathRequired": "请提供文件路径。",
|
|
142
|
+
"upload.fileMissing": (path) => `文件不存在:${path}`,
|
|
143
|
+
"upload.notAFile": (path) => `路径不是文件:${path}`,
|
|
144
|
+
"upload.starting": (name, mimeType) => `正在上传 ${name} (${mimeType})…`,
|
|
145
|
+
"upload.completed": (url) => `上传完成:${url}`,
|
|
134
146
|
};
|
|
135
147
|
function detectLocale() {
|
|
136
148
|
const lang = process.env.LANG ?? process.env.LC_ALL ?? process.env.LANGUAGE ?? "";
|
package/dist/i18n/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { runCommand } from "./commands/run.js";
|
|
|
6
6
|
import { installCommand, uninstallCommand, stopCommand, restartCommand, resetCommand } from "./commands/install.js";
|
|
7
7
|
import { statusCommand } from "./commands/status.js";
|
|
8
8
|
import { setTokenCommand } from "./commands/set-token.js";
|
|
9
|
+
import { uploadCommand } from "./commands/upload.js";
|
|
9
10
|
import { DEFAULT_RELAY_SERVER } from "./generated/build-config.js";
|
|
10
11
|
const require = createRequire(import.meta.url);
|
|
11
12
|
const { version } = require("../package.json");
|
|
@@ -83,6 +84,19 @@ program
|
|
|
83
84
|
process.exit(1);
|
|
84
85
|
}
|
|
85
86
|
});
|
|
87
|
+
program
|
|
88
|
+
.command("upload <file>")
|
|
89
|
+
.description("Upload a local file to OSS and print the public URL")
|
|
90
|
+
.option("--json", "Print machine-readable JSON output", false)
|
|
91
|
+
.action(async (file, opts) => {
|
|
92
|
+
try {
|
|
93
|
+
await uploadCommand(file, { json: opts.json });
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
console.error("Error:", err instanceof Error ? err.message : err);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
86
100
|
program
|
|
87
101
|
.command("reset")
|
|
88
102
|
.description("Clear saved config and stop service — use when switching servers or on auth errors")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oFAAoF,CAAC;KACjG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,aAAa,EAAE,oDAAoD,EAAE,KAAK,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,IAA0D,EAAE,EAAE;IAC3E,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,yEAAyE,CAAC;KACtF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,MAAM,CAAC,GAAG,EAAE;IACX,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACX,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oFAAoF,CAAC;KACjG,MAAM,CAAC,GAAG,EAAE;IACX,YAAY,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { readFile, stat } from "fs/promises";
|
|
2
|
+
import { basename, extname, resolve } from "path";
|
|
3
|
+
import { readConfig } from "../config/config.js";
|
|
4
|
+
import { t } from "../i18n/index.js";
|
|
5
|
+
import { uploadMedia, type StsCredentials } from "../media/oss-uploader.js";
|
|
6
|
+
|
|
7
|
+
export interface UploadCommandOptions {
|
|
8
|
+
json?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function mimeTypeFromPath(path: string): string {
|
|
12
|
+
switch (extname(path).toLowerCase()) {
|
|
13
|
+
case ".jpg":
|
|
14
|
+
case ".jpeg":
|
|
15
|
+
return "image/jpeg";
|
|
16
|
+
case ".png":
|
|
17
|
+
return "image/png";
|
|
18
|
+
case ".gif":
|
|
19
|
+
return "image/gif";
|
|
20
|
+
case ".webp":
|
|
21
|
+
return "image/webp";
|
|
22
|
+
case ".mp4":
|
|
23
|
+
return "video/mp4";
|
|
24
|
+
case ".mov":
|
|
25
|
+
return "video/quicktime";
|
|
26
|
+
case ".pdf":
|
|
27
|
+
return "application/pdf";
|
|
28
|
+
case ".txt":
|
|
29
|
+
return "text/plain";
|
|
30
|
+
case ".md":
|
|
31
|
+
return "text/markdown";
|
|
32
|
+
case ".json":
|
|
33
|
+
return "application/json";
|
|
34
|
+
default:
|
|
35
|
+
return "application/octet-stream";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function fetchSts(
|
|
40
|
+
relayServerUrl: string,
|
|
41
|
+
gatewayId: string,
|
|
42
|
+
relaySecret: string,
|
|
43
|
+
mimeType: string
|
|
44
|
+
): Promise<StsCredentials> {
|
|
45
|
+
const res = await fetch(`${relayServerUrl.replace(/\/$/, "")}/api/media/sts`, {
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers: { "Content-Type": "application/json" },
|
|
48
|
+
body: JSON.stringify({
|
|
49
|
+
gatewayId,
|
|
50
|
+
relaySecret,
|
|
51
|
+
count: 1,
|
|
52
|
+
mimeTypes: [mimeType],
|
|
53
|
+
durationSeconds: mimeType.startsWith("video/") ? 1800 : 600,
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (!res.ok) {
|
|
58
|
+
const text = await res.text().catch(() => "");
|
|
59
|
+
throw new Error(`STS fetch failed: ${res.status} ${text}`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return res.json() as Promise<StsCredentials>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export async function uploadCommand(filePath: string, options: UploadCommandOptions = {}): Promise<void> {
|
|
66
|
+
if (!filePath.trim()) {
|
|
67
|
+
throw new Error(t("upload.pathRequired"));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const config = readConfig();
|
|
71
|
+
const absolutePath = resolve(filePath);
|
|
72
|
+
const fileStat = await stat(absolutePath).catch(() => null);
|
|
73
|
+
if (!fileStat) {
|
|
74
|
+
throw new Error(t("upload.fileMissing", absolutePath));
|
|
75
|
+
}
|
|
76
|
+
if (!fileStat.isFile()) {
|
|
77
|
+
throw new Error(t("upload.notAFile", absolutePath));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const mimeType = mimeTypeFromPath(absolutePath);
|
|
81
|
+
if (!options.json) {
|
|
82
|
+
console.log(t("upload.starting", basename(absolutePath), mimeType));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const [data, sts] = await Promise.all([
|
|
86
|
+
readFile(absolutePath),
|
|
87
|
+
fetchSts(config.relayServerUrl, config.gatewayId, config.relaySecret, mimeType),
|
|
88
|
+
]);
|
|
89
|
+
|
|
90
|
+
const result = await uploadMedia(sts, data, mimeType);
|
|
91
|
+
if (options.json) {
|
|
92
|
+
console.log(JSON.stringify({
|
|
93
|
+
path: absolutePath,
|
|
94
|
+
fileName: basename(absolutePath),
|
|
95
|
+
mimeType,
|
|
96
|
+
url: result.url,
|
|
97
|
+
thumbnailUrl: result.thumbnailUrl ?? null,
|
|
98
|
+
size: result.size,
|
|
99
|
+
}));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(t("upload.completed", result.url));
|
|
104
|
+
console.log(result.url);
|
|
105
|
+
}
|
package/src/i18n/index.ts
CHANGED
|
@@ -72,6 +72,13 @@ const en: Record<string, MsgValue> = {
|
|
|
72
72
|
"setToken.saved": "\nToken saved to ~/.clawai/config.json.",
|
|
73
73
|
"setToken.cleared": "\nToken cleared from ~/.clawai/config.json.",
|
|
74
74
|
"setToken.restart": "Run 'clawpilot restart' to apply the change.\n",
|
|
75
|
+
|
|
76
|
+
// upload
|
|
77
|
+
"upload.pathRequired": "Please provide a file path.",
|
|
78
|
+
"upload.fileMissing": (path) => `File not found: ${path}`,
|
|
79
|
+
"upload.notAFile": (path) => `Path is not a file: ${path}`,
|
|
80
|
+
"upload.starting": (name, mimeType) => `Uploading ${name} (${mimeType})…`,
|
|
81
|
+
"upload.completed": (url) => `Upload complete: ${url}`,
|
|
75
82
|
};
|
|
76
83
|
|
|
77
84
|
const zh: Record<string, MsgValue> = {
|
|
@@ -144,6 +151,13 @@ const zh: Record<string, MsgValue> = {
|
|
|
144
151
|
"setToken.saved": "\nToken 已保存到 ~/.clawai/config.json。",
|
|
145
152
|
"setToken.cleared": "\nToken 已从 ~/.clawai/config.json 清除。",
|
|
146
153
|
"setToken.restart": "请运行 'clawpilot restart' 使修改生效。\n",
|
|
154
|
+
|
|
155
|
+
// upload
|
|
156
|
+
"upload.pathRequired": "请提供文件路径。",
|
|
157
|
+
"upload.fileMissing": (path) => `文件不存在:${path}`,
|
|
158
|
+
"upload.notAFile": (path) => `路径不是文件:${path}`,
|
|
159
|
+
"upload.starting": (name, mimeType) => `正在上传 ${name} (${mimeType})…`,
|
|
160
|
+
"upload.completed": (url) => `上传完成:${url}`,
|
|
147
161
|
};
|
|
148
162
|
|
|
149
163
|
function detectLocale(): Locale {
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { runCommand } from "./commands/run.js";
|
|
|
6
6
|
import { installCommand, uninstallCommand, stopCommand, restartCommand, resetCommand } from "./commands/install.js";
|
|
7
7
|
import { statusCommand } from "./commands/status.js";
|
|
8
8
|
import { setTokenCommand } from "./commands/set-token.js";
|
|
9
|
+
import { uploadCommand } from "./commands/upload.js";
|
|
9
10
|
import { DEFAULT_RELAY_SERVER } from "./generated/build-config.js";
|
|
10
11
|
|
|
11
12
|
const require = createRequire(import.meta.url);
|
|
@@ -92,6 +93,19 @@ program
|
|
|
92
93
|
}
|
|
93
94
|
});
|
|
94
95
|
|
|
96
|
+
program
|
|
97
|
+
.command("upload <file>")
|
|
98
|
+
.description("Upload a local file to OSS and print the public URL")
|
|
99
|
+
.option("--json", "Print machine-readable JSON output", false)
|
|
100
|
+
.action(async (file: string, opts: { json?: boolean }) => {
|
|
101
|
+
try {
|
|
102
|
+
await uploadCommand(file, { json: opts.json });
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error("Error:", err instanceof Error ? err.message : err);
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
95
109
|
program
|
|
96
110
|
.command("reset")
|
|
97
111
|
.description("Clear saved config and stop service — use when switching servers or on auth errors")
|