clawconnect-agent 0.1.0

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 (103) hide show
  1. package/.env.example +41 -0
  2. package/README.md +259 -0
  3. package/README.zh-CN.md +329 -0
  4. package/dist/commands/backup-manager.d.ts +21 -0
  5. package/dist/commands/backup-manager.js +346 -0
  6. package/dist/commands/backup-manager.js.map +1 -0
  7. package/dist/commands/install.d.ts +6 -0
  8. package/dist/commands/install.js +107 -0
  9. package/dist/commands/install.js.map +1 -0
  10. package/dist/commands/local-handlers.d.ts +2 -0
  11. package/dist/commands/local-handlers.js +375 -0
  12. package/dist/commands/local-handlers.js.map +1 -0
  13. package/dist/commands/local-runtime.d.ts +36 -0
  14. package/dist/commands/local-runtime.js +445 -0
  15. package/dist/commands/local-runtime.js.map +1 -0
  16. package/dist/commands/pair.d.ts +7 -0
  17. package/dist/commands/pair.js +100 -0
  18. package/dist/commands/pair.js.map +1 -0
  19. package/dist/commands/provider-config.d.ts +35 -0
  20. package/dist/commands/provider-config.js +291 -0
  21. package/dist/commands/provider-config.js.map +1 -0
  22. package/dist/commands/provider-handlers.d.ts +2 -0
  23. package/dist/commands/provider-handlers.js +216 -0
  24. package/dist/commands/provider-handlers.js.map +1 -0
  25. package/dist/commands/provider-registry.d.ts +19 -0
  26. package/dist/commands/provider-registry.js +120 -0
  27. package/dist/commands/provider-registry.js.map +1 -0
  28. package/dist/commands/run.d.ts +1 -0
  29. package/dist/commands/run.js +35 -0
  30. package/dist/commands/run.js.map +1 -0
  31. package/dist/commands/send-file-utils.d.ts +6 -0
  32. package/dist/commands/send-file-utils.js +94 -0
  33. package/dist/commands/send-file-utils.js.map +1 -0
  34. package/dist/commands/send-file.d.ts +41 -0
  35. package/dist/commands/send-file.js +492 -0
  36. package/dist/commands/send-file.js.map +1 -0
  37. package/dist/commands/set-token.d.ts +1 -0
  38. package/dist/commands/set-token.js +43 -0
  39. package/dist/commands/set-token.js.map +1 -0
  40. package/dist/commands/status.d.ts +1 -0
  41. package/dist/commands/status.js +135 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/voice-reply.d.ts +39 -0
  44. package/dist/commands/voice-reply.js +329 -0
  45. package/dist/commands/voice-reply.js.map +1 -0
  46. package/dist/config/config.d.ts +32 -0
  47. package/dist/config/config.js +103 -0
  48. package/dist/config/config.js.map +1 -0
  49. package/dist/config/env.d.ts +16 -0
  50. package/dist/config/env.js +138 -0
  51. package/dist/config/env.js.map +1 -0
  52. package/dist/i18n/index.d.ts +1 -0
  53. package/dist/i18n/index.js +147 -0
  54. package/dist/i18n/index.js.map +1 -0
  55. package/dist/index.d.ts +2 -0
  56. package/dist/index.js +117 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/platform/service-manager-common.d.ts +26 -0
  59. package/dist/platform/service-manager-common.js +51 -0
  60. package/dist/platform/service-manager-common.js.map +1 -0
  61. package/dist/platform/service-manager-linux.d.ts +6 -0
  62. package/dist/platform/service-manager-linux.js +229 -0
  63. package/dist/platform/service-manager-linux.js.map +1 -0
  64. package/dist/platform/service-manager.d.ts +16 -0
  65. package/dist/platform/service-manager.js +165 -0
  66. package/dist/platform/service-manager.js.map +1 -0
  67. package/dist/relay/attachment-staging.d.ts +12 -0
  68. package/dist/relay/attachment-staging.js +116 -0
  69. package/dist/relay/attachment-staging.js.map +1 -0
  70. package/dist/relay/chat-history.d.ts +29 -0
  71. package/dist/relay/chat-history.js +69 -0
  72. package/dist/relay/chat-history.js.map +1 -0
  73. package/dist/relay/chat-payload.d.ts +6 -0
  74. package/dist/relay/chat-payload.js +170 -0
  75. package/dist/relay/chat-payload.js.map +1 -0
  76. package/dist/relay/chat-send-attachments.d.ts +4 -0
  77. package/dist/relay/chat-send-attachments.js +47 -0
  78. package/dist/relay/chat-send-attachments.js.map +1 -0
  79. package/dist/relay/gateway-client.d.ts +41 -0
  80. package/dist/relay/gateway-client.js +288 -0
  81. package/dist/relay/gateway-client.js.map +1 -0
  82. package/dist/relay/office-payload.d.ts +19 -0
  83. package/dist/relay/office-payload.js +205 -0
  84. package/dist/relay/office-payload.js.map +1 -0
  85. package/dist/relay/reconnect.d.ts +14 -0
  86. package/dist/relay/reconnect.js +27 -0
  87. package/dist/relay/reconnect.js.map +1 -0
  88. package/dist/relay/relay-manager.d.ts +36 -0
  89. package/dist/relay/relay-manager.js +619 -0
  90. package/dist/relay/relay-manager.js.map +1 -0
  91. package/dist/relay/session-context.d.ts +19 -0
  92. package/dist/relay/session-context.js +323 -0
  93. package/dist/relay/session-context.js.map +1 -0
  94. package/dist/relay/slash-command-catalog.d.ts +8 -0
  95. package/dist/relay/slash-command-catalog.generated.d.ts +226 -0
  96. package/dist/relay/slash-command-catalog.generated.js +275 -0
  97. package/dist/relay/slash-command-catalog.generated.js.map +1 -0
  98. package/dist/relay/slash-command-catalog.js +3 -0
  99. package/dist/relay/slash-command-catalog.js.map +1 -0
  100. package/dist/relay/voice-reply-preference.d.ts +25 -0
  101. package/dist/relay/voice-reply-preference.js +103 -0
  102. package/dist/relay/voice-reply-preference.js.map +1 -0
  103. package/package.json +50 -0
@@ -0,0 +1,291 @@
1
+ import { readFile, writeFile, mkdir, readdir } from "fs/promises";
2
+ import { join } from "path";
3
+ import { homedir } from "os";
4
+ import { PROVIDER_REGISTRY } from "./provider-registry.js";
5
+ const OPENCLAW_DIR = join(homedir(), ".openclaw");
6
+ const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
7
+ const AGENTS_DIR = join(OPENCLAW_DIR, "agents");
8
+ // ---------------------------------------------------------------------------
9
+ // Internal helpers
10
+ // ---------------------------------------------------------------------------
11
+ function maskKey(key) {
12
+ if (key.length <= 8)
13
+ return key.slice(0, 2) + "***" + key.slice(-2);
14
+ return key.slice(0, 4) + "***" + key.slice(-4);
15
+ }
16
+ async function resolveAgentId() {
17
+ try {
18
+ const entries = await readdir(AGENTS_DIR, { withFileTypes: true });
19
+ const dirs = entries.filter(e => e.isDirectory()).map(e => e.name);
20
+ if (dirs.length > 0)
21
+ return dirs[0];
22
+ }
23
+ catch {
24
+ // agents dir missing or unreadable
25
+ }
26
+ return "main";
27
+ }
28
+ async function readJson(filePath) {
29
+ try {
30
+ const raw = await readFile(filePath, "utf-8");
31
+ return JSON.parse(raw);
32
+ }
33
+ catch {
34
+ return {};
35
+ }
36
+ }
37
+ async function writeJson(filePath, data) {
38
+ await writeFile(filePath, JSON.stringify(data, null, 2), "utf-8");
39
+ }
40
+ function getNestedObj(root, keys) {
41
+ let cur = root;
42
+ for (const key of keys) {
43
+ if (cur[key] == null || typeof cur[key] !== "object" || Array.isArray(cur[key])) {
44
+ cur[key] = {};
45
+ }
46
+ cur = cur[key];
47
+ }
48
+ return cur;
49
+ }
50
+ function authProfilesPath(agentId) {
51
+ return join(AGENTS_DIR, agentId, "agent", "auth-profiles.json");
52
+ }
53
+ /** Extract the first model ID from a provider's models array in openclaw.json */
54
+ function extractModelId(providerRaw) {
55
+ const models = providerRaw["models"];
56
+ if (Array.isArray(models) && models.length > 0) {
57
+ const first = models[0];
58
+ return typeof first["id"] === "string" ? first["id"] : null;
59
+ }
60
+ return null;
61
+ }
62
+ /** Infer provider type from its id in models.providers */
63
+ function inferType(id) {
64
+ // custom providers have ids like "custom-<uuid>"
65
+ if (id.startsWith("custom-"))
66
+ return "custom";
67
+ return id;
68
+ }
69
+ function readStringArray(value) {
70
+ if (!Array.isArray(value))
71
+ return [];
72
+ return value.filter((item) => typeof item === "string" && item.length > 0);
73
+ }
74
+ function modelContextWindow(modelRaw) {
75
+ const candidates = ["contextWindow", "context_window", "contextLength", "context_length", "maxInputTokens"];
76
+ for (const key of candidates) {
77
+ const value = modelRaw[key];
78
+ if (typeof value === "string" && value.trim().length > 0)
79
+ return value.trim();
80
+ if (typeof value === "number" && Number.isFinite(value))
81
+ return String(value);
82
+ }
83
+ return "--";
84
+ }
85
+ // ---------------------------------------------------------------------------
86
+ // Public API
87
+ // ---------------------------------------------------------------------------
88
+ export async function listProviderEntries() {
89
+ const config = await readJson(OPENCLAW_CONFIG);
90
+ const agentId = await resolveAgentId();
91
+ const authProfiles = await readJson(authProfilesPath(agentId));
92
+ const profiles = authProfiles["profiles"] ?? {};
93
+ // Determine current default
94
+ const agents = config["agents"] ?? {};
95
+ const defaults = agents["defaults"] ?? {};
96
+ const model = defaults["model"] ?? {};
97
+ const primaryModel = typeof model["primary"] === "string" ? model["primary"] : "";
98
+ const entries = [];
99
+ // --- Providers from models.providers (non-builtIn) ---
100
+ const models = config["models"] ?? {};
101
+ const providers = models["providers"] ?? {};
102
+ for (const [id, providerRaw] of Object.entries(providers)) {
103
+ const p = providerRaw ?? {};
104
+ const type = inferType(id);
105
+ const info = PROVIDER_REGISTRY[type];
106
+ const baseUrl = typeof p["baseUrl"] === "string" ? p["baseUrl"] : "";
107
+ const modelId = extractModelId(p);
108
+ // auth-profiles key is "${id}:default"
109
+ const profileKey = `${id}:default`;
110
+ const profileRaw = profiles[profileKey];
111
+ const profile = profileRaw != null && typeof profileRaw === "object" && !Array.isArray(profileRaw)
112
+ ? profileRaw
113
+ : null;
114
+ const apiKey = profile != null && typeof profile["key"] === "string" ? profile["key"] : null;
115
+ const hasKey = apiKey != null && apiKey.length > 0;
116
+ const keyMasked = hasKey ? maskKey(apiKey) : null;
117
+ const isDefault = primaryModel === id || primaryModel.startsWith(`${id}/`);
118
+ entries.push({
119
+ id,
120
+ type,
121
+ name: info?.displayName ?? type,
122
+ baseUrl,
123
+ modelId,
124
+ keyMasked,
125
+ hasKey,
126
+ isDefault,
127
+ });
128
+ }
129
+ // --- Built-in providers (anthropic, google) — detected via auth-profiles ---
130
+ for (const [type, info] of Object.entries(PROVIDER_REGISTRY)) {
131
+ if (!info.builtIn)
132
+ continue;
133
+ const profileKey = `${type}:default`;
134
+ const profileRaw = profiles[profileKey];
135
+ if (profileRaw == null)
136
+ continue; // not configured
137
+ const profile = typeof profileRaw === "object" && !Array.isArray(profileRaw)
138
+ ? profileRaw
139
+ : null;
140
+ const apiKey = profile != null && typeof profile["key"] === "string" ? profile["key"] : null;
141
+ const hasKey = apiKey != null && apiKey.length > 0;
142
+ const keyMasked = hasKey ? maskKey(apiKey) : null;
143
+ const isDefault = primaryModel === type || primaryModel.startsWith(`${type}/`);
144
+ entries.push({
145
+ id: type,
146
+ type,
147
+ name: info.displayName,
148
+ baseUrl: info.defaultBaseUrl,
149
+ modelId: info.defaultModelId ?? null,
150
+ keyMasked,
151
+ hasKey,
152
+ isDefault,
153
+ });
154
+ }
155
+ return entries;
156
+ }
157
+ export async function listConfiguredModels() {
158
+ const config = await readJson(OPENCLAW_CONFIG);
159
+ const agents = config["agents"] ?? {};
160
+ const defaults = agents["defaults"] ?? {};
161
+ const modelDefaults = defaults["model"] ?? {};
162
+ const primaryModel = typeof modelDefaults["primary"] === "string" ? modelDefaults["primary"] : "";
163
+ const entries = [];
164
+ const seen = new Set();
165
+ const models = config["models"] ?? {};
166
+ const providers = models["providers"] ?? {};
167
+ const modelAliases = defaults["models"] ?? {};
168
+ for (const [fullKey, aliasRaw] of Object.entries(modelAliases)) {
169
+ const slashIndex = fullKey.indexOf("/");
170
+ if (slashIndex <= 0 || slashIndex >= fullKey.length - 1)
171
+ continue;
172
+ const providerId = fullKey.slice(0, slashIndex);
173
+ const modelId = fullKey.slice(slashIndex + 1);
174
+ const aliasObj = aliasRaw != null && typeof aliasRaw === "object" && !Array.isArray(aliasRaw)
175
+ ? aliasRaw
176
+ : {};
177
+ const alias = typeof aliasObj["alias"] === "string" && aliasObj["alias"].trim().length > 0
178
+ ? aliasObj["alias"].trim()
179
+ : modelId;
180
+ if (seen.has(fullKey))
181
+ continue;
182
+ seen.add(fullKey);
183
+ const providerConfig = providers[providerId] ?? {};
184
+ const configuredModels = Array.isArray(providerConfig["models"]) ? providerConfig["models"] : [];
185
+ const modelRecord = configuredModels.find((entry) => {
186
+ if (!entry || typeof entry !== "object" || Array.isArray(entry))
187
+ return false;
188
+ const record = entry;
189
+ return record["id"] === modelId;
190
+ });
191
+ const info = PROVIDER_REGISTRY[inferType(providerId)];
192
+ entries.push({
193
+ providerId,
194
+ provider: info?.displayName ?? providerId,
195
+ modelId,
196
+ alias,
197
+ name: alias,
198
+ contextWindow: modelRecord ? modelContextWindow(modelRecord) : "--",
199
+ tags: modelRecord ? [modelId, ...readStringArray(modelRecord["tags"])] : [modelId],
200
+ isSelected: false,
201
+ isDefault: fullKey === primaryModel,
202
+ });
203
+ }
204
+ return entries;
205
+ }
206
+ export async function addProvider(params) {
207
+ const { id, type, apiKey, baseUrl, api, apiKeyEnvName, modelId } = params;
208
+ const info = PROVIDER_REGISTRY[type];
209
+ // --- Update openclaw.json (skip for builtIn providers) ---
210
+ if (!info?.builtIn) {
211
+ const config = await readJson(OPENCLAW_CONFIG);
212
+ const models = getNestedObj(config, ["models"]);
213
+ const providers = getNestedObj(models, ["providers"]);
214
+ // "apiKey" is the env var name reference (not the actual key value)
215
+ const providerEntry = { type, baseUrl, api, apiKey: apiKeyEnvName };
216
+ if (modelId !== undefined && modelId.length > 0) {
217
+ providerEntry["models"] = [{ id: modelId, name: modelId }];
218
+ }
219
+ providers[id] = providerEntry;
220
+ await writeJson(OPENCLAW_CONFIG, config);
221
+ }
222
+ // --- Update auth-profiles.json (only if apiKey provided) ---
223
+ if (apiKey != null && apiKey.length > 0) {
224
+ const agentId = await resolveAgentId();
225
+ const profilesPath = authProfilesPath(agentId);
226
+ const profilesDir = join(AGENTS_DIR, agentId, "agent");
227
+ await mkdir(profilesDir, { recursive: true });
228
+ const authProfiles = await readJson(profilesPath);
229
+ const profiles = getNestedObj(authProfiles, ["profiles"]);
230
+ // Profile key is "${id}:default" — for builtIn, id === type
231
+ const profileKey = `${id}:default`;
232
+ profiles[profileKey] = { type: "api_key", provider: type, key: apiKey };
233
+ await writeJson(profilesPath, authProfiles);
234
+ }
235
+ }
236
+ export async function deleteProvider(id) {
237
+ const type = inferType(id);
238
+ const info = PROVIDER_REGISTRY[type];
239
+ // --- Update openclaw.json (skip for builtIn) ---
240
+ if (!info?.builtIn) {
241
+ const config = await readJson(OPENCLAW_CONFIG);
242
+ const models = getNestedObj(config, ["models"]);
243
+ const providers = getNestedObj(models, ["providers"]);
244
+ delete providers[id];
245
+ await writeJson(OPENCLAW_CONFIG, config);
246
+ }
247
+ // --- Update auth-profiles.json ---
248
+ const agentId = await resolveAgentId();
249
+ const profilesPath = authProfilesPath(agentId);
250
+ const authProfiles = await readJson(profilesPath);
251
+ const profiles = getNestedObj(authProfiles, ["profiles"]);
252
+ const profileKey = `${id}:default`;
253
+ if (profileKey in profiles) {
254
+ delete profiles[profileKey];
255
+ await writeJson(profilesPath, authProfiles);
256
+ }
257
+ }
258
+ export async function setDefaultProvider(id) {
259
+ const type = inferType(id);
260
+ const info = PROVIDER_REGISTRY[type];
261
+ // Determine the model ID for this provider
262
+ let modelId = null;
263
+ if (info?.builtIn) {
264
+ // Built-in providers: use registry default, no models.providers entry
265
+ modelId = info.defaultModelId ?? null;
266
+ }
267
+ else {
268
+ // Read from models.providers entry
269
+ const config = await readJson(OPENCLAW_CONFIG);
270
+ const models = config["models"] ?? {};
271
+ const providers = models["providers"] ?? {};
272
+ const providerRaw = providers[id] ?? {};
273
+ modelId = extractModelId(providerRaw) ?? info?.defaultModelId ?? null;
274
+ }
275
+ const primary = modelId ? `${id}/${modelId}` : id;
276
+ const config = await readJson(OPENCLAW_CONFIG);
277
+ const agents = getNestedObj(config, ["agents"]);
278
+ const defaults = getNestedObj(agents, ["defaults"]);
279
+ const model = getNestedObj(defaults, ["model"]);
280
+ model["primary"] = primary;
281
+ await writeJson(OPENCLAW_CONFIG, config);
282
+ }
283
+ export async function setDefaultModel(providerId, modelId) {
284
+ const config = await readJson(OPENCLAW_CONFIG);
285
+ const agents = getNestedObj(config, ["agents"]);
286
+ const defaults = getNestedObj(agents, ["defaults"]);
287
+ const model = getNestedObj(defaults, ["model"]);
288
+ model["primary"] = `${providerId}/${modelId}`;
289
+ await writeJson(OPENCLAW_CONFIG, config);
290
+ }
291
+ //# sourceMappingURL=provider-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../src/commands/provider-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { LocalResult } from "./local-runtime.js";
2
+ export declare function handleProviderCommand(method: string, params: unknown): Promise<LocalResult> | null;
@@ -0,0 +1,216 @@
1
+ import { randomUUID } from "crypto";
2
+ import { requestGatewayRestart } from "./local-runtime.js";
3
+ import { PROVIDER_REGISTRY } from "./provider-registry.js";
4
+ import { listProviderEntries, listConfiguredModels, addProvider, deleteProvider, setDefaultProvider, setDefaultModel, } from "./provider-config.js";
5
+ async function restartGateway() {
6
+ const restart = await requestGatewayRestart("provider");
7
+ if (!restart.ok) {
8
+ console.warn("[provider] gateway restart request failed:", restart.error);
9
+ }
10
+ }
11
+ // ---------------------------------------------------------------------------
12
+ // HTTP key validation
13
+ // ---------------------------------------------------------------------------
14
+ async function validateApiKey(type, apiKey, baseUrl) {
15
+ const info = PROVIDER_REGISTRY[type];
16
+ if (!info)
17
+ return { ok: false, error: `Unknown provider type: ${type}` };
18
+ if (!info.requiresApiKey || !apiKey)
19
+ return { ok: true };
20
+ return new Promise((resolve) => {
21
+ try {
22
+ const url = new URL(info.validationPath, baseUrl);
23
+ if (info.validationAuth === "google-query-param") {
24
+ url.searchParams.set("key", apiKey);
25
+ }
26
+ const headers = {};
27
+ if (info.validationAuth === "bearer") {
28
+ headers["Authorization"] = `Bearer ${apiKey}`;
29
+ }
30
+ else if (info.validationAuth === "x-api-key") {
31
+ headers["x-api-key"] = apiKey;
32
+ headers["anthropic-version"] = "2023-06-01";
33
+ }
34
+ // Use http or https based on protocol
35
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
36
+ const mod = url.protocol === "https:" ? require("https") : require("http");
37
+ const req = mod.get({
38
+ hostname: url.hostname,
39
+ port: url.port || undefined,
40
+ path: url.pathname + url.search,
41
+ headers,
42
+ }, (res) => {
43
+ res.resume(); // drain body
44
+ const status = res.statusCode ?? 0;
45
+ if (status >= 200 && status < 300) {
46
+ resolve({ ok: true });
47
+ }
48
+ else if (status === 401 || status === 403) {
49
+ resolve({ ok: false, error: "API Key 无效" });
50
+ }
51
+ else {
52
+ resolve({ ok: false, error: `验证失败 (HTTP ${status})` });
53
+ }
54
+ });
55
+ req.setTimeout(10_000, () => {
56
+ req.destroy();
57
+ resolve({ ok: false, error: "验证超时" });
58
+ });
59
+ req.on("error", (e) => resolve({ ok: false, error: e.message }));
60
+ }
61
+ catch (e) {
62
+ resolve({ ok: false, error: String(e) });
63
+ }
64
+ });
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Command handlers
68
+ // ---------------------------------------------------------------------------
69
+ async function cmdList() {
70
+ try {
71
+ const providers = await listProviderEntries();
72
+ return { ok: true, payload: { providers } };
73
+ }
74
+ catch (err) {
75
+ return { ok: false, error: String(err) };
76
+ }
77
+ }
78
+ async function cmdValidateKey(params) {
79
+ try {
80
+ const type = params.type;
81
+ const apiKey = params.apiKey;
82
+ const baseUrl = params.baseUrl ?? PROVIDER_REGISTRY[type]?.defaultBaseUrl ?? "";
83
+ const result = await validateApiKey(type, apiKey, baseUrl);
84
+ if (result.ok)
85
+ return { ok: true };
86
+ return { ok: false, error: result.error ?? "验证失败" };
87
+ }
88
+ catch (err) {
89
+ return { ok: false, error: String(err) };
90
+ }
91
+ }
92
+ async function cmdAdd(params) {
93
+ try {
94
+ const type = params.type;
95
+ const apiKey = params.apiKey ?? null;
96
+ const info = PROVIDER_REGISTRY[type];
97
+ if (!info)
98
+ return { ok: false, error: `Unknown provider type: ${type}` };
99
+ const baseUrl = params.baseUrl || info.defaultBaseUrl;
100
+ const modelId = params.modelId ?? info.defaultModelId;
101
+ // Validate key before writing config
102
+ if (info.requiresApiKey && apiKey) {
103
+ const v = await validateApiKey(type, apiKey, baseUrl);
104
+ if (!v.ok)
105
+ return { ok: false, error: v.error ?? "API Key 无效" };
106
+ }
107
+ // custom providers get a UUID suffix; id and apiKeyEnvName share the same UUID so they're traceable
108
+ const uuid = info.allowMultiple ? randomUUID() : null;
109
+ const id = uuid ? `custom-${uuid}` : type;
110
+ const apiKeyEnvName = uuid
111
+ ? `CUSTOM_${uuid.replace(/-/g, "_").toUpperCase()}_API_KEY`
112
+ : info.apiKeyEnvName;
113
+ await addProvider({ id, type, apiKey, baseUrl, api: info.api, apiKeyEnvName, modelId });
114
+ restartGateway();
115
+ return { ok: true, payload: { id } };
116
+ }
117
+ catch (err) {
118
+ return { ok: false, error: String(err) };
119
+ }
120
+ }
121
+ async function cmdDelete(params) {
122
+ try {
123
+ const id = params.id;
124
+ if (!id)
125
+ return { ok: false, error: "id required" };
126
+ await deleteProvider(id);
127
+ restartGateway();
128
+ return { ok: true };
129
+ }
130
+ catch (err) {
131
+ return { ok: false, error: String(err) };
132
+ }
133
+ }
134
+ async function cmdSetDefault(params) {
135
+ try {
136
+ const id = params.id;
137
+ if (!id)
138
+ return { ok: false, error: "id required" };
139
+ await setDefaultProvider(id);
140
+ restartGateway();
141
+ return { ok: true };
142
+ }
143
+ catch (err) {
144
+ return { ok: false, error: String(err) };
145
+ }
146
+ }
147
+ async function cmdListModels() {
148
+ try {
149
+ const items = await listConfiguredModels();
150
+ return { ok: true, payload: { items } };
151
+ }
152
+ catch (err) {
153
+ return { ok: false, error: String(err) };
154
+ }
155
+ }
156
+ async function cmdSelectModel(_params) {
157
+ return { ok: false, error: "Use chat.send with /model <alias> for session model switching" };
158
+ }
159
+ async function cmdSetDefaultModel(params) {
160
+ try {
161
+ const providerId = typeof params.providerId === "string" ? params.providerId.trim() : "";
162
+ const modelId = typeof params.modelId === "string" ? params.modelId.trim() : "";
163
+ const modelAlias = typeof params.modelAlias === "string" ? params.modelAlias.trim() : "";
164
+ if (!providerId || !modelId) {
165
+ return { ok: false, error: "providerId and modelId are required" };
166
+ }
167
+ await setDefaultModel(providerId, modelId);
168
+ restartGateway();
169
+ return { ok: true, payload: { providerId, modelId, modelAlias, defaultModel: `${providerId}/${modelId}` } };
170
+ }
171
+ catch (err) {
172
+ return { ok: false, error: String(err) };
173
+ }
174
+ }
175
+ // ---------------------------------------------------------------------------
176
+ // Main dispatch
177
+ // ---------------------------------------------------------------------------
178
+ export function handleProviderCommand(method, params) {
179
+ if (!method.startsWith("clawpilot.provider.")
180
+ && !method.startsWith("pocketclaw.provider.")
181
+ && !method.startsWith("clawconnect.provider.")
182
+ && !method.startsWith("clawpilot.model.")
183
+ && !method.startsWith("pocketclaw.model.")
184
+ && !method.startsWith("clawconnect.model."))
185
+ return null;
186
+ const p = (params ?? {});
187
+ switch (method) {
188
+ case "clawconnect.provider.list":
189
+ case "pocketclaw.provider.list":
190
+ case "clawpilot.provider.list": return cmdList();
191
+ case "clawconnect.provider.validateKey":
192
+ case "pocketclaw.provider.validateKey":
193
+ case "clawpilot.provider.validateKey": return cmdValidateKey(p);
194
+ case "clawconnect.provider.add":
195
+ case "pocketclaw.provider.add":
196
+ case "clawpilot.provider.add": return cmdAdd(p);
197
+ case "clawconnect.provider.delete":
198
+ case "pocketclaw.provider.delete":
199
+ case "clawpilot.provider.delete": return cmdDelete(p);
200
+ case "clawconnect.provider.setDefault":
201
+ case "pocketclaw.provider.setDefault":
202
+ case "clawpilot.provider.setDefault": return cmdSetDefault(p);
203
+ case "clawconnect.model.list":
204
+ case "pocketclaw.model.list":
205
+ case "clawpilot.model.list": return cmdListModels();
206
+ case "clawconnect.model.select":
207
+ case "pocketclaw.model.select":
208
+ case "clawpilot.model.select": return cmdSelectModel(p);
209
+ case "clawconnect.model.setDefault":
210
+ case "pocketclaw.model.setDefault":
211
+ case "clawpilot.model.setDefault": return cmdSetDefaultModel(p);
212
+ default:
213
+ return Promise.resolve({ ok: false, error: `Unknown provider command: ${method}` });
214
+ }
215
+ }
216
+ //# sourceMappingURL=provider-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-handlers.js","sourceRoot":"","sources":["../../src/commands/provider-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface ProviderTypeInfo {
2
+ displayName: string;
3
+ defaultBaseUrl: string;
4
+ api: "anthropic-messages" | "openai-completions" | "openai-responses";
5
+ apiKeyEnvName: string;
6
+ validationPath: string;
7
+ validationAuth: "bearer" | "x-api-key" | "google-query-param" | "none";
8
+ requiresApiKey: boolean;
9
+ allowMultiple: boolean;
10
+ showBaseUrl: boolean;
11
+ showModelId: boolean;
12
+ defaultModelId?: string;
13
+ /**
14
+ * Built-in OpenClaw providers (anthropic, google) — do NOT write a
15
+ * models.providers entry; only write to auth-profiles.json.
16
+ */
17
+ builtIn?: boolean;
18
+ }
19
+ export declare const PROVIDER_REGISTRY: Record<string, ProviderTypeInfo>;