theclawbay 0.3.87 → 0.4.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.
- package/README.md +3 -2
- package/dist/commands/logout.js +82 -1466
- package/dist/commands/setup.js +143 -3604
- package/dist/lib/base-command.js +7 -5
- package/dist/lib/clients/aider-cleanup.d.ts +1 -0
- package/dist/lib/clients/aider-cleanup.js +15 -0
- package/dist/lib/clients/aider.d.ts +14 -0
- package/dist/lib/clients/aider.js +57 -0
- package/dist/lib/clients/claude-cleanup.d.ts +2 -0
- package/dist/lib/clients/claude-cleanup.js +88 -0
- package/dist/lib/clients/claude.d.ts +49 -0
- package/dist/lib/clients/claude.js +400 -0
- package/dist/lib/clients/cline-cleanup.d.ts +1 -0
- package/dist/lib/clients/cline-cleanup.js +80 -0
- package/dist/lib/clients/cline.d.ts +15 -0
- package/dist/lib/clients/cline.js +73 -0
- package/dist/lib/clients/codex-cleanup.d.ts +7 -0
- package/dist/lib/clients/codex-cleanup.js +145 -0
- package/dist/lib/clients/codex.d.ts +28 -0
- package/dist/lib/clients/codex.js +176 -0
- package/dist/lib/clients/continue-cleanup.d.ts +1 -0
- package/dist/lib/clients/continue-cleanup.js +40 -0
- package/dist/lib/clients/continue.d.ts +22 -0
- package/dist/lib/clients/continue.js +81 -0
- package/dist/lib/clients/gsd-cleanup.d.ts +4 -0
- package/dist/lib/clients/gsd-cleanup.js +168 -0
- package/dist/lib/clients/gsd.d.ts +30 -0
- package/dist/lib/clients/gsd.js +136 -0
- package/dist/lib/clients/hermes-cleanup.d.ts +2 -0
- package/dist/lib/clients/hermes-cleanup.js +112 -0
- package/dist/lib/clients/hermes.d.ts +18 -0
- package/dist/lib/clients/hermes.js +145 -0
- package/dist/lib/clients/openclaw-cleanup.d.ts +1 -0
- package/dist/lib/clients/openclaw-cleanup.js +52 -0
- package/dist/lib/clients/openclaw.d.ts +34 -0
- package/dist/lib/clients/openclaw.js +100 -0
- package/dist/lib/clients/opencode-family-cleanup.d.ts +12 -0
- package/dist/lib/clients/opencode-family-cleanup.js +201 -0
- package/dist/lib/clients/opencode-family.d.ts +86 -0
- package/dist/lib/clients/opencode-family.js +427 -0
- package/dist/lib/clients/roo-cleanup.d.ts +1 -0
- package/dist/lib/clients/roo-cleanup.js +48 -0
- package/dist/lib/clients/roo.d.ts +21 -0
- package/dist/lib/clients/roo.js +91 -0
- package/dist/lib/clients/trae-cleanup.d.ts +2 -0
- package/dist/lib/clients/trae-cleanup.js +40 -0
- package/dist/lib/clients/trae.d.ts +27 -0
- package/dist/lib/clients/trae.js +118 -0
- package/dist/lib/clients/zo.d.ts +39 -0
- package/dist/lib/clients/zo.js +210 -0
- package/dist/lib/shared/backend.d.ts +31 -0
- package/dist/lib/shared/backend.js +273 -0
- package/dist/lib/shared/client-registry.d.ts +23 -0
- package/dist/lib/shared/client-registry.js +68 -0
- package/dist/lib/shared/editor-env-cleanup.d.ts +2 -0
- package/dist/lib/shared/editor-env-cleanup.js +86 -0
- package/dist/lib/shared/editor-env.d.ts +27 -0
- package/dist/lib/shared/editor-env.js +224 -0
- package/dist/lib/shared/env-persist-cleanup.d.ts +4 -0
- package/dist/lib/shared/env-persist-cleanup.js +77 -0
- package/dist/lib/shared/env-persist.d.ts +26 -0
- package/dist/lib/shared/env-persist.js +179 -0
- package/dist/lib/shared/format.d.ts +5 -0
- package/dist/lib/shared/format.js +48 -0
- package/dist/lib/shared/fsx-cleanup.d.ts +3 -0
- package/dist/lib/shared/fsx-cleanup.js +36 -0
- package/dist/lib/shared/fsx.d.ts +9 -0
- package/dist/lib/shared/fsx.js +103 -0
- package/dist/lib/shared/models.d.ts +60 -0
- package/dist/lib/shared/models.js +124 -0
- package/dist/lib/shared/platform.d.ts +16 -0
- package/dist/lib/shared/platform.js +116 -0
- package/dist/lib/shared/prompts.d.ts +29 -0
- package/dist/lib/shared/prompts.js +504 -0
- package/dist/lib/shared/providers.d.ts +3 -0
- package/dist/lib/shared/providers.js +8 -0
- package/dist/lib/shared/toml.d.ts +7 -0
- package/dist/lib/shared/toml.js +157 -0
- package/dist/lib/shared/tui.d.ts +42 -0
- package/dist/lib/shared/tui.js +173 -0
- package/dist/lib/shared/urls.d.ts +18 -0
- package/dist/lib/shared/urls.js +149 -0
- package/dist/lib/supported-models.d.ts +1 -1
- package/dist/lib/supported-models.js +1 -1
- package/package.json +1 -6
- package/theclawbay-supported-models.json +202 -5
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SUPPORTED_MODEL_IDS = void 0;
|
|
7
|
+
exports.openCodeConfigCleanupTargets = openCodeConfigCleanupTargets;
|
|
8
|
+
exports.kiloConfigCleanupTargets = kiloConfigCleanupTargets;
|
|
9
|
+
exports.isManagedOpenCodeModel = isManagedOpenCodeModel;
|
|
10
|
+
exports.isManagedOpenCodeProvider = isManagedOpenCodeProvider;
|
|
11
|
+
exports.isManagedOpenCodeAnthropicProvider = isManagedOpenCodeAnthropicProvider;
|
|
12
|
+
exports.cleanupOpenCodeFamilyConfigs = cleanupOpenCodeFamilyConfigs;
|
|
13
|
+
exports.cleanupOpenCodeConfig = cleanupOpenCodeConfig;
|
|
14
|
+
exports.cleanupKiloConfig = cleanupKiloConfig;
|
|
15
|
+
const supported_models_1 = require("../supported-models");
|
|
16
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
17
|
+
const opencode_family_1 = require("./opencode-family");
|
|
18
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
19
|
+
const fsx_1 = require("../shared/fsx");
|
|
20
|
+
const providers_1 = require("../shared/providers");
|
|
21
|
+
const urls_1 = require("../shared/urls");
|
|
22
|
+
const platform_1 = require("../shared/platform");
|
|
23
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
24
|
+
// Extracted from src/commands/logout.ts (theclawbay CLI restructure).
|
|
25
|
+
// Code motion only: bodies are verbatim from the original file.
|
|
26
|
+
exports.SUPPORTED_MODEL_IDS = new Set((0, supported_models_1.getSupportedModelIds)());
|
|
27
|
+
function openCodeConfigCleanupTargets() {
|
|
28
|
+
const home = node_os_1.default.homedir();
|
|
29
|
+
const dirs = (0, opencode_family_1.configDirCandidates)("opencode");
|
|
30
|
+
const candidates = [];
|
|
31
|
+
for (const dir of dirs) {
|
|
32
|
+
candidates.push(node_path_1.default.join(dir, "opencode.json"));
|
|
33
|
+
candidates.push(node_path_1.default.join(dir, ".opencode.json"));
|
|
34
|
+
candidates.push(node_path_1.default.join(dir, "config.json"));
|
|
35
|
+
}
|
|
36
|
+
candidates.push(node_path_1.default.join(home, ".opencode.json"));
|
|
37
|
+
return (0, fsx_1.uniqueStrings)(candidates);
|
|
38
|
+
}
|
|
39
|
+
function kiloConfigCleanupTargets() {
|
|
40
|
+
const home = node_os_1.default.homedir();
|
|
41
|
+
const dirs = (0, fsx_1.uniqueStrings)([...(0, opencode_family_1.configDirCandidates)("kilo"), node_path_1.default.join(home, ".kilo")]);
|
|
42
|
+
const candidates = [];
|
|
43
|
+
for (const dir of dirs) {
|
|
44
|
+
candidates.push(node_path_1.default.join(dir, "opencode.json"));
|
|
45
|
+
candidates.push(node_path_1.default.join(dir, "config.json"));
|
|
46
|
+
}
|
|
47
|
+
return (0, fsx_1.uniqueStrings)(candidates);
|
|
48
|
+
}
|
|
49
|
+
function isManagedOpenCodeModel(value) {
|
|
50
|
+
if (typeof value !== "string")
|
|
51
|
+
return false;
|
|
52
|
+
if (!value.startsWith(`${providers_1.OPENAI_PROVIDER_ID}/`))
|
|
53
|
+
return false;
|
|
54
|
+
return exports.SUPPORTED_MODEL_IDS.has(value.slice(`${providers_1.OPENAI_PROVIDER_ID}/`.length));
|
|
55
|
+
}
|
|
56
|
+
function isManagedOpenCodeProvider(value) {
|
|
57
|
+
const provider = (0, fsx_1.objectRecordOr)(value, {});
|
|
58
|
+
const options = (0, fsx_1.objectRecordOr)(provider.options, {});
|
|
59
|
+
return (0, urls_1.isTheClawBayOpenAiCompatibleBaseUrl)(options.baseURL);
|
|
60
|
+
}
|
|
61
|
+
function isManagedOpenCodeAnthropicProvider(value) {
|
|
62
|
+
const provider = (0, fsx_1.objectRecordOr)(value, {});
|
|
63
|
+
const options = (0, fsx_1.objectRecordOr)(provider.options, {});
|
|
64
|
+
return (0, urls_1.isTheClawBayAnthropicCompatibleBaseUrl)(options.baseURL);
|
|
65
|
+
}
|
|
66
|
+
async function cleanupOpenCodeFamilyConfigs(params) {
|
|
67
|
+
const configPaths = (0, fsx_1.uniqueStrings)(params.configPaths);
|
|
68
|
+
const fallbackConfigPath = configPaths[0] ?? node_path_1.default.join((0, platform_1.xdgConfigHomeDir)(), "opencode", "opencode.json");
|
|
69
|
+
const snapshot = await (0, opencode_family_1.readOpenCodeRestoreSnapshot)(params.restoreStatePath, fallbackConfigPath);
|
|
70
|
+
const snapshotTargets = snapshot?.targets ?? [];
|
|
71
|
+
let changed = false;
|
|
72
|
+
const restoreConfig = async (target) => {
|
|
73
|
+
if (!target.existed) {
|
|
74
|
+
changed = (await (0, fsx_1.removeFileIfExists)(target.configPath)) || changed;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const existingRaw = await (0, fsx_1.readFileIfExists)(target.configPath);
|
|
78
|
+
if (existingRaw === null || !existingRaw.trim()) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
let doc;
|
|
82
|
+
try {
|
|
83
|
+
doc = (0, fsx_1.objectRecordOr)(JSON.parse(existingRaw), {});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const providerRoot = (0, fsx_1.objectRecordOr)(doc.provider, {});
|
|
89
|
+
if (providers_1.DEFAULT_PROVIDER_ID in providerRoot) {
|
|
90
|
+
delete providerRoot[providers_1.DEFAULT_PROVIDER_ID];
|
|
91
|
+
changed = true;
|
|
92
|
+
}
|
|
93
|
+
if (Object.prototype.hasOwnProperty.call(target, "plugin")) {
|
|
94
|
+
if (target.plugin === null) {
|
|
95
|
+
if ("plugin" in doc) {
|
|
96
|
+
delete doc.plugin;
|
|
97
|
+
changed = true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
doc.plugin = target.plugin;
|
|
102
|
+
changed = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (target.openAiProvider) {
|
|
106
|
+
providerRoot[providers_1.OPENAI_PROVIDER_ID] = target.openAiProvider;
|
|
107
|
+
}
|
|
108
|
+
else if (providers_1.OPENAI_PROVIDER_ID in providerRoot) {
|
|
109
|
+
delete providerRoot[providers_1.OPENAI_PROVIDER_ID];
|
|
110
|
+
changed = true;
|
|
111
|
+
}
|
|
112
|
+
if (target.anthropicProvider) {
|
|
113
|
+
providerRoot[providers_1.ANTHROPIC_PROVIDER_ID] = target.anthropicProvider;
|
|
114
|
+
changed = true;
|
|
115
|
+
}
|
|
116
|
+
else if (providers_1.ANTHROPIC_PROVIDER_ID in providerRoot) {
|
|
117
|
+
delete providerRoot[providers_1.ANTHROPIC_PROVIDER_ID];
|
|
118
|
+
changed = true;
|
|
119
|
+
}
|
|
120
|
+
doc.provider = providerRoot;
|
|
121
|
+
if (target.model === null) {
|
|
122
|
+
if (isManagedOpenCodeModel(doc.model) || (typeof doc.model === "string" && doc.model.startsWith(`${providers_1.DEFAULT_PROVIDER_ID}/`))) {
|
|
123
|
+
delete doc.model;
|
|
124
|
+
changed = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
doc.model = target.model;
|
|
129
|
+
changed = true;
|
|
130
|
+
}
|
|
131
|
+
if (target.schema === null) {
|
|
132
|
+
if (typeof doc.$schema === "string") {
|
|
133
|
+
delete doc.$schema;
|
|
134
|
+
changed = true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
doc.$schema = target.schema;
|
|
139
|
+
changed = true;
|
|
140
|
+
}
|
|
141
|
+
await promises_1.default.writeFile(target.configPath, `${JSON.stringify(doc, null, 2)}\n`, "utf8");
|
|
142
|
+
};
|
|
143
|
+
if (snapshotTargets.length > 0) {
|
|
144
|
+
for (const target of snapshotTargets) {
|
|
145
|
+
await restoreConfig(target);
|
|
146
|
+
}
|
|
147
|
+
await (0, fsx_1.removeFileIfExists)(params.restoreStatePath);
|
|
148
|
+
return changed;
|
|
149
|
+
}
|
|
150
|
+
for (const configPath of configPaths) {
|
|
151
|
+
const existingRaw = await (0, fsx_1.readFileIfExists)(configPath);
|
|
152
|
+
if (existingRaw === null || !existingRaw.trim())
|
|
153
|
+
continue;
|
|
154
|
+
let doc;
|
|
155
|
+
try {
|
|
156
|
+
doc = (0, fsx_1.objectRecordOr)(JSON.parse(existingRaw), {});
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
let fileChanged = false;
|
|
162
|
+
const providerRoot = (0, fsx_1.objectRecordOr)(doc.provider, {});
|
|
163
|
+
if (providers_1.DEFAULT_PROVIDER_ID in providerRoot) {
|
|
164
|
+
delete providerRoot[providers_1.DEFAULT_PROVIDER_ID];
|
|
165
|
+
fileChanged = true;
|
|
166
|
+
}
|
|
167
|
+
const model = doc.model;
|
|
168
|
+
if (typeof model === "string" &&
|
|
169
|
+
(model.startsWith(`${providers_1.DEFAULT_PROVIDER_ID}/`) || isManagedOpenCodeModel(model))) {
|
|
170
|
+
delete doc.model;
|
|
171
|
+
fileChanged = true;
|
|
172
|
+
}
|
|
173
|
+
if (isManagedOpenCodeProvider(providerRoot[providers_1.OPENAI_PROVIDER_ID])) {
|
|
174
|
+
delete providerRoot[providers_1.OPENAI_PROVIDER_ID];
|
|
175
|
+
fileChanged = true;
|
|
176
|
+
}
|
|
177
|
+
if (isManagedOpenCodeAnthropicProvider(providerRoot[providers_1.ANTHROPIC_PROVIDER_ID])) {
|
|
178
|
+
delete providerRoot[providers_1.ANTHROPIC_PROVIDER_ID];
|
|
179
|
+
fileChanged = true;
|
|
180
|
+
}
|
|
181
|
+
if (!fileChanged)
|
|
182
|
+
continue;
|
|
183
|
+
changed = true;
|
|
184
|
+
doc.provider = providerRoot;
|
|
185
|
+
await promises_1.default.writeFile(configPath, `${JSON.stringify(doc, null, 2)}\n`, "utf8");
|
|
186
|
+
}
|
|
187
|
+
await (0, fsx_1.removeFileIfExists)(params.restoreStatePath);
|
|
188
|
+
return changed;
|
|
189
|
+
}
|
|
190
|
+
async function cleanupOpenCodeConfig() {
|
|
191
|
+
return cleanupOpenCodeFamilyConfigs({
|
|
192
|
+
configPaths: openCodeConfigCleanupTargets(),
|
|
193
|
+
restoreStatePath: opencode_family_1.OPENCODE_RESTORE_STATE_PATH,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
async function cleanupKiloConfig() {
|
|
197
|
+
return cleanupOpenCodeFamilyConfigs({
|
|
198
|
+
configPaths: kiloConfigCleanupTargets(),
|
|
199
|
+
restoreStatePath: opencode_family_1.KILO_RESTORE_STATE_PATH,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export declare const OPENCODE_RESTORE_STATE_PATH: string;
|
|
2
|
+
export declare const KILO_RESTORE_STATE_PATH: string;
|
|
3
|
+
export declare const OPENCODE_CONFIG_SCHEMA_URL = "https://opencode.ai/config.json";
|
|
4
|
+
export declare const KILO_CONFIG_SCHEMA_URL = "https://kilo.ai/config.json";
|
|
5
|
+
export type OpenCodeRestoreSnapshotTarget = {
|
|
6
|
+
configPath: string;
|
|
7
|
+
existed: boolean;
|
|
8
|
+
openAiProvider: Record<string, unknown> | null;
|
|
9
|
+
anthropicProvider?: Record<string, unknown> | null;
|
|
10
|
+
model: string | null;
|
|
11
|
+
schema: string | null;
|
|
12
|
+
plugin?: unknown[] | null;
|
|
13
|
+
};
|
|
14
|
+
export type OpenCodeRestoreSnapshot = {
|
|
15
|
+
version: 3;
|
|
16
|
+
targets: OpenCodeRestoreSnapshotTarget[];
|
|
17
|
+
};
|
|
18
|
+
export declare function configFileCandidatesForDir(dir: string, basenames: string[]): string[];
|
|
19
|
+
export declare function findProjectConfigFile(params: {
|
|
20
|
+
startDir: string;
|
|
21
|
+
basenames: string[];
|
|
22
|
+
}): string | null;
|
|
23
|
+
export declare function configDirCandidates(appName: string): string[];
|
|
24
|
+
export declare function kiloStorageCandidates(): string[];
|
|
25
|
+
export declare function detectOpenCodeClient(): Promise<boolean>;
|
|
26
|
+
export declare function detectKiloClient(): Promise<boolean>;
|
|
27
|
+
export declare function buildOpenCodeModelConfig(model: {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
}): Record<string, unknown>;
|
|
31
|
+
export declare function buildOpenCodeModelsObject(models: Array<{
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}>): Record<string, Record<string, unknown>>;
|
|
35
|
+
export declare function buildClaudeModelSelections(modelIds: string[]): Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}>;
|
|
39
|
+
export declare function normalizeOpenCodeRestoreSnapshot(snapshot: unknown, fallbackConfigPath: string): OpenCodeRestoreSnapshot | null;
|
|
40
|
+
export declare function readOpenCodeRestoreSnapshot(restoreStatePath: string, fallbackConfigPath: string): Promise<OpenCodeRestoreSnapshot | null>;
|
|
41
|
+
export declare function openCodeConfigFileCandidates(): string[];
|
|
42
|
+
export declare function findOpenCodeProjectConfigFile(): string | null;
|
|
43
|
+
export declare function isOpenCodeAuthPlugin(value: unknown): boolean;
|
|
44
|
+
export declare function filteredOpenCodePlugins(value: unknown): {
|
|
45
|
+
next: unknown;
|
|
46
|
+
changed: boolean;
|
|
47
|
+
};
|
|
48
|
+
export declare function kiloConfigFileCandidates(): string[];
|
|
49
|
+
export declare function resolveOpenCodeConfigTargets(): string[];
|
|
50
|
+
export declare function resolveKiloConfigTargets(): string[];
|
|
51
|
+
export declare function isManagedOpenCodeProvider(provider: Record<string, unknown>, backendUrl: string): boolean;
|
|
52
|
+
export declare function isManagedOpenCodeAnthropicProvider(provider: Record<string, unknown>, backendUrl: string): boolean;
|
|
53
|
+
export declare function isManagedOpenCodeModel(value: unknown, supportedModelIds: Set<string>): boolean;
|
|
54
|
+
export declare function writeOpenCodeFamilyConfig(params: {
|
|
55
|
+
backendUrl: string;
|
|
56
|
+
model: string;
|
|
57
|
+
models: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
}>;
|
|
61
|
+
claudeModels?: string[];
|
|
62
|
+
apiKey: string;
|
|
63
|
+
configPaths: string[];
|
|
64
|
+
restoreStatePath: string;
|
|
65
|
+
schemaUrl: string;
|
|
66
|
+
}): Promise<string[]>;
|
|
67
|
+
export declare function writeOpenCodeConfig(params: {
|
|
68
|
+
backendUrl: string;
|
|
69
|
+
model: string;
|
|
70
|
+
models: Array<{
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
}>;
|
|
74
|
+
claudeModels?: string[];
|
|
75
|
+
apiKey: string;
|
|
76
|
+
}): Promise<string[]>;
|
|
77
|
+
export declare function writeKiloConfig(params: {
|
|
78
|
+
backendUrl: string;
|
|
79
|
+
model: string;
|
|
80
|
+
models: Array<{
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
}>;
|
|
84
|
+
claudeModels?: string[];
|
|
85
|
+
apiKey: string;
|
|
86
|
+
}): Promise<string[]>;
|