sleev 0.0.13 → 0.0.15
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 +9 -8
- package/bin/sleev.js +84 -0
- package/package.json +37 -55
- package/postinstall.mjs +66 -0
- package/dist/auth/browser.d.ts +0 -12
- package/dist/auth/browser.js +0 -89
- package/dist/auth/browser.js.map +0 -1
- package/dist/auth/firebase-tokens.d.ts +0 -39
- package/dist/auth/firebase-tokens.js +0 -173
- package/dist/auth/firebase-tokens.js.map +0 -1
- package/dist/auth/firebase.d.ts +0 -17
- package/dist/auth/firebase.js +0 -55
- package/dist/auth/firebase.js.map +0 -1
- package/dist/auth/login.d.ts +0 -22
- package/dist/auth/login.js +0 -58
- package/dist/auth/login.js.map +0 -1
- package/dist/auth/loopback.d.ts +0 -19
- package/dist/auth/loopback.js +0 -204
- package/dist/auth/loopback.js.map +0 -1
- package/dist/auth/schema.d.ts +0 -26
- package/dist/auth/schema.js +0 -88
- package/dist/auth/schema.js.map +0 -1
- package/dist/auth/token.d.ts +0 -19
- package/dist/auth/token.js +0 -53
- package/dist/auth/token.js.map +0 -1
- package/dist/auth/verify.d.ts +0 -6
- package/dist/auth/verify.js +0 -22
- package/dist/auth/verify.js.map +0 -1
- package/dist/cli.d.ts +0 -8
- package/dist/cli.js +0 -255
- package/dist/cli.js.map +0 -1
- package/dist/config/paths.d.ts +0 -12
- package/dist/config/paths.js +0 -34
- package/dist/config/paths.js.map +0 -1
- package/dist/config/store.d.ts +0 -63
- package/dist/config/store.js +0 -270
- package/dist/config/store.js.map +0 -1
- package/dist/control/local-installations.d.ts +0 -13
- package/dist/control/local-installations.js +0 -37
- package/dist/control/local-installations.js.map +0 -1
- package/dist/daemon/config.d.ts +0 -10
- package/dist/daemon/config.js +0 -52
- package/dist/daemon/config.js.map +0 -1
- package/dist/daemon/controller.d.ts +0 -29
- package/dist/daemon/controller.js +0 -34
- package/dist/daemon/controller.js.map +0 -1
- package/dist/daemon/health.d.ts +0 -8
- package/dist/daemon/health.js +0 -47
- package/dist/daemon/health.js.map +0 -1
- package/dist/daemon/start.d.ts +0 -5
- package/dist/daemon/start.js +0 -24
- package/dist/daemon/start.js.map +0 -1
- package/dist/daemon/systemd.d.ts +0 -35
- package/dist/daemon/systemd.js +0 -181
- package/dist/daemon/systemd.js.map +0 -1
- package/dist/gateway/acquire.d.ts +0 -14
- package/dist/gateway/acquire.js +0 -112
- package/dist/gateway/acquire.js.map +0 -1
- package/dist/gateway/manifest.d.ts +0 -26
- package/dist/gateway/manifest.js +0 -98
- package/dist/gateway/manifest.js.map +0 -1
- package/dist/gateway/platform.d.ts +0 -5
- package/dist/gateway/platform.js +0 -27
- package/dist/gateway/platform.js.map +0 -1
- package/dist/harness/claude.d.ts +0 -8
- package/dist/harness/claude.js +0 -151
- package/dist/harness/claude.js.map +0 -1
- package/dist/harness/codex.d.ts +0 -10
- package/dist/harness/codex.js +0 -213
- package/dist/harness/codex.js.map +0 -1
- package/dist/harness/index.d.ts +0 -13
- package/dist/harness/index.js +0 -63
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/opencode-config.d.ts +0 -8
- package/dist/harness/opencode-config.js +0 -301
- package/dist/harness/opencode-config.js.map +0 -1
- package/dist/harness/opencode.d.ts +0 -14
- package/dist/harness/opencode.js +0 -50
- package/dist/harness/opencode.js.map +0 -1
- package/dist/harness/providers.d.ts +0 -8
- package/dist/harness/providers.js +0 -30
- package/dist/harness/providers.js.map +0 -1
- package/dist/harness/types.d.ts +0 -14
- package/dist/harness/types.js +0 -2
- package/dist/harness/types.js.map +0 -1
- package/dist/product.d.ts +0 -12
- package/dist/product.js +0 -70
- package/dist/product.js.map +0 -1
- package/dist/tui/clipboard.d.ts +0 -1
- package/dist/tui/clipboard.js +0 -48
- package/dist/tui/clipboard.js.map +0 -1
- package/dist/tui/openTuiApp.d.ts +0 -1
- package/dist/tui/openTuiApp.js +0 -1436
- package/dist/tui/openTuiApp.js.map +0 -1
- package/dist/tui/pages/flow-screen.d.ts +0 -50
- package/dist/tui/pages/flow-screen.js +0 -435
- package/dist/tui/pages/flow-screen.js.map +0 -1
- package/dist/tui/pages/footer.d.ts +0 -7
- package/dist/tui/pages/footer.js +0 -14
- package/dist/tui/pages/footer.js.map +0 -1
- package/dist/tui/pages/home-screen.d.ts +0 -19
- package/dist/tui/pages/home-screen.js +0 -89
- package/dist/tui/pages/home-screen.js.map +0 -1
- package/dist/tui/pages/index.d.ts +0 -17
- package/dist/tui/pages/index.js +0 -11
- package/dist/tui/pages/index.js.map +0 -1
- package/dist/tui/pages/local-setup-screen.d.ts +0 -23
- package/dist/tui/pages/local-setup-screen.js +0 -134
- package/dist/tui/pages/local-setup-screen.js.map +0 -1
- package/dist/tui/pages/location-card.d.ts +0 -19
- package/dist/tui/pages/location-card.js +0 -116
- package/dist/tui/pages/location-card.js.map +0 -1
- package/dist/tui/pages/menu-screen.d.ts +0 -24
- package/dist/tui/pages/menu-screen.js +0 -117
- package/dist/tui/pages/menu-screen.js.map +0 -1
- package/dist/tui/pages/session-grid.d.ts +0 -23
- package/dist/tui/pages/session-grid.js +0 -552
- package/dist/tui/pages/session-grid.js.map +0 -1
- package/dist/tui/pages/setup-screen.d.ts +0 -15
- package/dist/tui/pages/setup-screen.js +0 -80
- package/dist/tui/pages/setup-screen.js.map +0 -1
- package/dist/tui/pages/terminal-log.d.ts +0 -14
- package/dist/tui/pages/terminal-log.js +0 -104
- package/dist/tui/pages/terminal-log.js.map +0 -1
- package/dist/tui/pages/welcome-screen.d.ts +0 -16
- package/dist/tui/pages/welcome-screen.js +0 -80
- package/dist/tui/pages/welcome-screen.js.map +0 -1
- package/dist/tui/saved-tokens.d.ts +0 -10
- package/dist/tui/saved-tokens.js +0 -104
- package/dist/tui/saved-tokens.js.map +0 -1
- package/dist/tui/theme.d.ts +0 -25
- package/dist/tui/theme.js +0 -27
- package/dist/tui/theme.js.map +0 -1
package/dist/cli.js
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { readConfig, setGatewayConfig, signInConfig, signOutConfig, writeConfig, } from "./config/store.js";
|
|
3
|
-
import { acquireGateway } from "./gateway/acquire.js";
|
|
4
|
-
import { gatewayUpdates } from "./product.js";
|
|
5
|
-
import { resolveSleevedPaths } from "./config/paths.js";
|
|
6
|
-
import { createController } from "./daemon/controller.js";
|
|
7
|
-
import { clearGatewayConfig } from "./daemon/config.js";
|
|
8
|
-
import { runTui } from "./tui/openTuiApp.js";
|
|
9
|
-
import { firebaseLogin } from "./auth/firebase.js";
|
|
10
|
-
import { clearStoredFirebaseAuth, saveFirebaseLogin, } from "./auth/firebase-tokens.js";
|
|
11
|
-
import { verifyFirebaseAuth } from "./auth/verify.js";
|
|
12
|
-
import { unpatchHarnesses } from "./harness/index.js";
|
|
13
|
-
export async function runCli(argv) {
|
|
14
|
-
const [command, subcommand] = argv;
|
|
15
|
-
if (command === undefined || command === "tui") {
|
|
16
|
-
await runTui();
|
|
17
|
-
return { exitCode: 0 };
|
|
18
|
-
}
|
|
19
|
-
if (command === "paths") {
|
|
20
|
-
const paths = resolveSleevedPaths();
|
|
21
|
-
return {
|
|
22
|
-
exitCode: 0,
|
|
23
|
-
output: JSON.stringify(paths, null, 2),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (command === "status") {
|
|
27
|
-
const config = await readConfig();
|
|
28
|
-
let daemon;
|
|
29
|
-
try {
|
|
30
|
-
daemon = await (await createController(config)).status();
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
daemon = {
|
|
34
|
-
error: error instanceof Error
|
|
35
|
-
? error.message
|
|
36
|
-
: "Daemon status unavailable.",
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
exitCode: 0,
|
|
41
|
-
output: JSON.stringify({ config, daemon }, null, 2),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
if (command === "init") {
|
|
45
|
-
const config = await readConfig();
|
|
46
|
-
await writeConfig(config);
|
|
47
|
-
return {
|
|
48
|
-
exitCode: 0,
|
|
49
|
-
output: "Initialized sleeved config.",
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (command === "auth" && subcommand === "login") {
|
|
53
|
-
const config = await readConfig();
|
|
54
|
-
const result = await firebaseLogin({});
|
|
55
|
-
await saveFirebaseLogin(result);
|
|
56
|
-
await writeConfig(signInConfig(config, {
|
|
57
|
-
label: result.label,
|
|
58
|
-
accountId: result.accountId,
|
|
59
|
-
email: result.email,
|
|
60
|
-
createdAt: new Date().toISOString(),
|
|
61
|
-
}));
|
|
62
|
-
return {
|
|
63
|
-
exitCode: 0,
|
|
64
|
-
output: `Signed in${result.email ? ` as ${result.email}` : ""}.`,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (command === "auth" && subcommand === "logout") {
|
|
68
|
-
const config = await readConfig();
|
|
69
|
-
const cleanup = await unpatchHarnesses();
|
|
70
|
-
try {
|
|
71
|
-
const controller = await createController(config);
|
|
72
|
-
await controller.teardown();
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// Best-effort: never block sign-out on daemon teardown.
|
|
76
|
-
}
|
|
77
|
-
await clearStoredFirebaseAuth();
|
|
78
|
-
await clearGatewayConfig();
|
|
79
|
-
await writeConfig(signOutConfig(config));
|
|
80
|
-
return {
|
|
81
|
-
exitCode: 0,
|
|
82
|
-
output: cleanup.failures[0]
|
|
83
|
-
? `Signed out. Some harness config cleanup failed: ${cleanup.failures.join("; ")}`
|
|
84
|
-
: "Signed out.",
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
if (command === "auth" && subcommand === "verify") {
|
|
88
|
-
try {
|
|
89
|
-
const me = await verifyFirebaseAuth();
|
|
90
|
-
return {
|
|
91
|
-
exitCode: 0,
|
|
92
|
-
output: `Firebase auth OK${me.email ? ` (${me.email})` : ""}.`,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
return {
|
|
97
|
-
exitCode: 1,
|
|
98
|
-
error: error instanceof Error
|
|
99
|
-
? error.message
|
|
100
|
-
: "Firebase auth verification failed.",
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (command === "auth" &&
|
|
105
|
-
(subcommand === "status" || subcommand === undefined)) {
|
|
106
|
-
const config = await readConfig();
|
|
107
|
-
return {
|
|
108
|
-
exitCode: 0,
|
|
109
|
-
output: JSON.stringify({
|
|
110
|
-
signedIn: config.auth.signedIn,
|
|
111
|
-
email: config.auth.email,
|
|
112
|
-
accountId: config.auth.accountId,
|
|
113
|
-
createdAt: config.auth.createdAt,
|
|
114
|
-
}, null, 2),
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
if (command === "gateway" &&
|
|
118
|
-
(subcommand === "install" || subcommand === "update")) {
|
|
119
|
-
const config = await readConfig();
|
|
120
|
-
try {
|
|
121
|
-
const { channel } = gatewayUpdates();
|
|
122
|
-
const installed = await acquireGateway({
|
|
123
|
-
currentVersion: config.gateway?.version ?? null,
|
|
124
|
-
});
|
|
125
|
-
await writeConfig(setGatewayConfig(config, {
|
|
126
|
-
binPath: installed.binPath,
|
|
127
|
-
version: installed.version,
|
|
128
|
-
channel,
|
|
129
|
-
}));
|
|
130
|
-
return {
|
|
131
|
-
exitCode: 0,
|
|
132
|
-
output: `Gateway ${installed.version} ready at ${installed.binPath}.`,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
return {
|
|
137
|
-
exitCode: 1,
|
|
138
|
-
error: error instanceof Error
|
|
139
|
-
? error.message
|
|
140
|
-
: "Failed to install the gateway binary.",
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
if (command === "daemon" && subcommand === "status") {
|
|
145
|
-
try {
|
|
146
|
-
const controller = await createController(await readConfig());
|
|
147
|
-
return {
|
|
148
|
-
exitCode: 0,
|
|
149
|
-
output: JSON.stringify(await controller.status(), null, 2),
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
return {
|
|
154
|
-
exitCode: 1,
|
|
155
|
-
error: error instanceof Error
|
|
156
|
-
? error.message
|
|
157
|
-
: "Daemon status unavailable.",
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (command === "daemon" &&
|
|
162
|
-
(subcommand === "start" || subcommand === "restart")) {
|
|
163
|
-
let config = await readConfig();
|
|
164
|
-
try {
|
|
165
|
-
// Auto-acquire the binary on first start unless a dev override
|
|
166
|
-
// (SLEEVE_GATEWAY_BIN) is set or it's already installed.
|
|
167
|
-
if (!config.gateway && !process.env.SLEEVE_GATEWAY_BIN?.trim()) {
|
|
168
|
-
const { channel } = gatewayUpdates();
|
|
169
|
-
const installed = await acquireGateway({
|
|
170
|
-
currentVersion: null,
|
|
171
|
-
});
|
|
172
|
-
config = setGatewayConfig(config, {
|
|
173
|
-
binPath: installed.binPath,
|
|
174
|
-
version: installed.version,
|
|
175
|
-
channel,
|
|
176
|
-
});
|
|
177
|
-
await writeConfig(config);
|
|
178
|
-
}
|
|
179
|
-
const controller = await createController(config);
|
|
180
|
-
const status = subcommand === "restart"
|
|
181
|
-
? await controller.restart()
|
|
182
|
-
: await controller.start();
|
|
183
|
-
return {
|
|
184
|
-
exitCode: 0,
|
|
185
|
-
output: `Gateway daemon ${subcommand}ed via ${status.backend}: ${status.address} (healthy=${status.healthy}, configured=${status.configured ?? "n/a"}).`,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
return {
|
|
190
|
-
exitCode: 1,
|
|
191
|
-
error: error instanceof Error
|
|
192
|
-
? error.message
|
|
193
|
-
: `Failed to ${subcommand} the gateway daemon.`,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
if (command === "daemon" && subcommand === "stop") {
|
|
198
|
-
try {
|
|
199
|
-
const controller = await createController(await readConfig());
|
|
200
|
-
const status = await controller.stop();
|
|
201
|
-
return {
|
|
202
|
-
exitCode: 0,
|
|
203
|
-
output: status.running
|
|
204
|
-
? `Gateway daemon still ${status.detail ?? "running"}.`
|
|
205
|
-
: `Gateway daemon stopped (${status.backend}).`,
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
catch (error) {
|
|
209
|
-
return {
|
|
210
|
-
exitCode: 1,
|
|
211
|
-
error: error instanceof Error
|
|
212
|
-
? error.message
|
|
213
|
-
: "Failed to stop the gateway daemon.",
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (command === "setup") {
|
|
218
|
-
return {
|
|
219
|
-
exitCode: 2,
|
|
220
|
-
error: "Harness setup is not implemented yet.",
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
return {
|
|
224
|
-
exitCode: 2,
|
|
225
|
-
error: [
|
|
226
|
-
"Usage:",
|
|
227
|
-
" sleeved",
|
|
228
|
-
" sleeved tui",
|
|
229
|
-
" sleeved init",
|
|
230
|
-
" sleeved paths",
|
|
231
|
-
" sleeved status",
|
|
232
|
-
" sleeved auth login",
|
|
233
|
-
" sleeved auth status",
|
|
234
|
-
" sleeved auth logout",
|
|
235
|
-
" sleeved gateway install",
|
|
236
|
-
" sleeved daemon status",
|
|
237
|
-
" sleeved daemon start",
|
|
238
|
-
" sleeved daemon restart",
|
|
239
|
-
" sleeved daemon stop",
|
|
240
|
-
" sleeved setup <harness>",
|
|
241
|
-
].join("\n"),
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
const isEntrypoint = process.argv[1] === new URL(import.meta.url).pathname;
|
|
245
|
-
if (isEntrypoint) {
|
|
246
|
-
const result = await runCli(process.argv.slice(2));
|
|
247
|
-
if (result.output) {
|
|
248
|
-
console.log(result.output);
|
|
249
|
-
}
|
|
250
|
-
if (result.error) {
|
|
251
|
-
console.error(result.error);
|
|
252
|
-
}
|
|
253
|
-
process.exitCode = result.exitCode;
|
|
254
|
-
}
|
|
255
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type SleevedPaths = {
|
|
2
|
-
configDir: string;
|
|
3
|
-
dataDir: string;
|
|
4
|
-
stateDir: string;
|
|
5
|
-
configFile: string;
|
|
6
|
-
firebaseCredentialsFile: string;
|
|
7
|
-
gatewayConfigFile: string;
|
|
8
|
-
databaseFile: string;
|
|
9
|
-
logDir: string;
|
|
10
|
-
pidFile: string;
|
|
11
|
-
};
|
|
12
|
-
export declare function resolveSleevedPaths(env?: NodeJS.ProcessEnv): SleevedPaths;
|
package/dist/config/paths.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import os from "node:os";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
const APP_NAME = "sleev";
|
|
4
|
-
export function resolveSleevedPaths(env = process.env) {
|
|
5
|
-
const home = os.homedir();
|
|
6
|
-
const platform = os.platform();
|
|
7
|
-
const configBase = env.XDG_CONFIG_HOME ??
|
|
8
|
-
(platform === "win32"
|
|
9
|
-
? (env.APPDATA ?? path.join(home, "AppData", "Roaming"))
|
|
10
|
-
: path.join(home, ".config"));
|
|
11
|
-
const dataBase = env.XDG_DATA_HOME ??
|
|
12
|
-
(platform === "win32"
|
|
13
|
-
? (env.LOCALAPPDATA ?? path.join(home, "AppData", "Local"))
|
|
14
|
-
: path.join(home, ".local", "share"));
|
|
15
|
-
const stateBase = env.XDG_STATE_HOME ??
|
|
16
|
-
(platform === "win32"
|
|
17
|
-
? (env.LOCALAPPDATA ?? path.join(home, "AppData", "Local"))
|
|
18
|
-
: path.join(home, ".local", "state"));
|
|
19
|
-
const configDir = path.join(configBase, APP_NAME);
|
|
20
|
-
const dataDir = path.join(dataBase, APP_NAME);
|
|
21
|
-
const stateDir = path.join(stateBase, APP_NAME);
|
|
22
|
-
return {
|
|
23
|
-
configDir,
|
|
24
|
-
dataDir,
|
|
25
|
-
stateDir,
|
|
26
|
-
configFile: path.join(configDir, "config.json"),
|
|
27
|
-
firebaseCredentialsFile: path.join(configDir, "firebase.json"),
|
|
28
|
-
gatewayConfigFile: path.join(configDir, "gateway.json"),
|
|
29
|
-
databaseFile: path.join(dataDir, "sleeve.sqlite"),
|
|
30
|
-
logDir: path.join(stateDir, "logs"),
|
|
31
|
-
pidFile: path.join(stateDir, "sleeved.pid"),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=paths.js.map
|
package/dist/config/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,MAAM,UAAU,mBAAmB,CAC/B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,MAAM,UAAU,GACZ,GAAG,CAAC,eAAe;QACnB,CAAC,QAAQ,KAAK,OAAO;YACjB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtC,MAAM,QAAQ,GACV,GAAG,CAAC,aAAa;QACjB,CAAC,QAAQ,KAAK,OAAO;YACjB,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,MAAM,SAAS,GACX,GAAG,CAAC,cAAc;QAClB,CAAC,QAAQ,KAAK,OAAO;YACjB,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhD,OAAO;QACH,SAAS;QACT,OAAO;QACP,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC/C,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QAC9D,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;QACvD,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QACjD,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QACnC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC9C,CAAC;AACN,CAAC"}
|
package/dist/config/store.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export type HarnessSlug = "claude-code" | "codex" | "opencode" | "gemini";
|
|
2
|
-
export type ServiceLocation = "local" | "cloud";
|
|
3
|
-
export type SleevedConfig = {
|
|
4
|
-
version: 1;
|
|
5
|
-
proxy: {
|
|
6
|
-
host: string;
|
|
7
|
-
port: number;
|
|
8
|
-
};
|
|
9
|
-
auth: {
|
|
10
|
-
signedIn: boolean;
|
|
11
|
-
label?: string | null;
|
|
12
|
-
accountId?: string | null;
|
|
13
|
-
email?: string | null;
|
|
14
|
-
createdAt?: string;
|
|
15
|
-
};
|
|
16
|
-
location: {
|
|
17
|
-
mode: ServiceLocation | null;
|
|
18
|
-
};
|
|
19
|
-
localInstallation: LocalInstallation | null;
|
|
20
|
-
gateway: GatewayInstall | null;
|
|
21
|
-
tokens: {
|
|
22
|
-
defaultId: string | null;
|
|
23
|
-
items: SleevedToken[];
|
|
24
|
-
};
|
|
25
|
-
harnesses: Partial<Record<HarnessSlug, {
|
|
26
|
-
configured: boolean;
|
|
27
|
-
}>>;
|
|
28
|
-
};
|
|
29
|
-
export type LocalInstallation = {
|
|
30
|
-
installationId: string;
|
|
31
|
-
credential: string;
|
|
32
|
-
controlUrl: string;
|
|
33
|
-
};
|
|
34
|
-
export type GatewayInstall = {
|
|
35
|
-
binPath: string;
|
|
36
|
-
version: string;
|
|
37
|
-
channel: string;
|
|
38
|
-
};
|
|
39
|
-
export type SleevedToken = {
|
|
40
|
-
id: string;
|
|
41
|
-
token: string;
|
|
42
|
-
label: string | null;
|
|
43
|
-
proxyUrl: string;
|
|
44
|
-
createdAt: string;
|
|
45
|
-
};
|
|
46
|
-
type AuthSession = {
|
|
47
|
-
label: string | null;
|
|
48
|
-
accountId: string;
|
|
49
|
-
email: string | null;
|
|
50
|
-
createdAt: string;
|
|
51
|
-
};
|
|
52
|
-
export declare function defaultConfig(): SleevedConfig;
|
|
53
|
-
export declare function signInConfig(config: SleevedConfig, session: AuthSession): SleevedConfig;
|
|
54
|
-
export declare function signOutConfig(config: SleevedConfig): SleevedConfig;
|
|
55
|
-
export declare function setLocalInstallationConfig(config: SleevedConfig, localInstallation: LocalInstallation | null): SleevedConfig;
|
|
56
|
-
export declare function setGatewayConfig(config: SleevedConfig, gateway: GatewayInstall | null): SleevedConfig;
|
|
57
|
-
export declare function setLocationConfig(config: SleevedConfig, mode: ServiceLocation): SleevedConfig;
|
|
58
|
-
export declare function setHarnessesConfig(config: SleevedConfig, slugs: readonly HarnessSlug[]): SleevedConfig;
|
|
59
|
-
export declare function addTokenConfig(config: SleevedConfig, token: SleevedToken): SleevedConfig;
|
|
60
|
-
export declare function setDefaultTokenConfig(config: SleevedConfig, id: string): SleevedConfig;
|
|
61
|
-
export declare function readConfig(): Promise<SleevedConfig>;
|
|
62
|
-
export declare function writeConfig(config: SleevedConfig): Promise<void>;
|
|
63
|
-
export {};
|
package/dist/config/store.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
// Owns persisted sleeved config shape, normalization, and state transitions.
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { resolveSleevedPaths } from "./paths.js";
|
|
5
|
-
export function defaultConfig() {
|
|
6
|
-
return {
|
|
7
|
-
version: 1,
|
|
8
|
-
proxy: {
|
|
9
|
-
host: "127.0.0.1",
|
|
10
|
-
port: 17321,
|
|
11
|
-
},
|
|
12
|
-
auth: {
|
|
13
|
-
signedIn: false,
|
|
14
|
-
},
|
|
15
|
-
location: {
|
|
16
|
-
mode: null,
|
|
17
|
-
},
|
|
18
|
-
localInstallation: null,
|
|
19
|
-
gateway: null,
|
|
20
|
-
tokens: {
|
|
21
|
-
defaultId: null,
|
|
22
|
-
items: [],
|
|
23
|
-
},
|
|
24
|
-
harnesses: {},
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
export function signInConfig(config, session) {
|
|
28
|
-
return {
|
|
29
|
-
...config,
|
|
30
|
-
auth: {
|
|
31
|
-
signedIn: true,
|
|
32
|
-
label: session.label,
|
|
33
|
-
accountId: session.accountId,
|
|
34
|
-
email: session.email,
|
|
35
|
-
createdAt: session.createdAt,
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export function signOutConfig(config) {
|
|
40
|
-
return {
|
|
41
|
-
...config,
|
|
42
|
-
auth: {
|
|
43
|
-
signedIn: false,
|
|
44
|
-
},
|
|
45
|
-
localInstallation: null,
|
|
46
|
-
tokens: {
|
|
47
|
-
defaultId: null,
|
|
48
|
-
items: [],
|
|
49
|
-
},
|
|
50
|
-
harnesses: {},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
export function setLocalInstallationConfig(config, localInstallation) {
|
|
54
|
-
return {
|
|
55
|
-
...config,
|
|
56
|
-
localInstallation,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
export function setGatewayConfig(config, gateway) {
|
|
60
|
-
return {
|
|
61
|
-
...config,
|
|
62
|
-
gateway,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
export function setLocationConfig(config, mode) {
|
|
66
|
-
return {
|
|
67
|
-
...config,
|
|
68
|
-
location: {
|
|
69
|
-
mode,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export function setHarnessesConfig(config, slugs) {
|
|
74
|
-
return {
|
|
75
|
-
...config,
|
|
76
|
-
harnesses: {
|
|
77
|
-
...config.harnesses,
|
|
78
|
-
...Object.fromEntries(slugs.map((slug) => [slug, { configured: true }])),
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
export function addTokenConfig(config, token) {
|
|
83
|
-
const items = [
|
|
84
|
-
token,
|
|
85
|
-
...config.tokens.items.filter((item) => item.id !== token.id),
|
|
86
|
-
];
|
|
87
|
-
return {
|
|
88
|
-
...config,
|
|
89
|
-
tokens: {
|
|
90
|
-
defaultId: token.id,
|
|
91
|
-
items,
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
export function setDefaultTokenConfig(config, id) {
|
|
96
|
-
const defaultId = config.tokens.items.some((item) => item.id === id)
|
|
97
|
-
? id
|
|
98
|
-
: config.tokens.defaultId;
|
|
99
|
-
return {
|
|
100
|
-
...config,
|
|
101
|
-
tokens: {
|
|
102
|
-
...config.tokens,
|
|
103
|
-
defaultId,
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
export async function readConfig() {
|
|
108
|
-
const paths = resolveSleevedPaths();
|
|
109
|
-
try {
|
|
110
|
-
const raw = await fs.readFile(paths.configFile, "utf8");
|
|
111
|
-
return normalizeConfig(JSON.parse(raw));
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
if (isNotFoundError(error)) {
|
|
115
|
-
return defaultConfig();
|
|
116
|
-
}
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
export async function writeConfig(config) {
|
|
121
|
-
const paths = resolveSleevedPaths();
|
|
122
|
-
await fs.mkdir(path.dirname(paths.configFile), { recursive: true });
|
|
123
|
-
await fs.writeFile(paths.configFile, `${JSON.stringify(config, null, 2)}\n`, {
|
|
124
|
-
mode: 0o600,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
function normalizeConfig(value) {
|
|
128
|
-
if (!isRecord(value)) {
|
|
129
|
-
return defaultConfig();
|
|
130
|
-
}
|
|
131
|
-
const defaults = defaultConfig();
|
|
132
|
-
const proxy = isRecord(value.proxy) ? value.proxy : {};
|
|
133
|
-
const auth = isRecord(value.auth) ? value.auth : {};
|
|
134
|
-
const location = isRecord(value.location) ? value.location : {};
|
|
135
|
-
const tokens = isRecord(value.tokens) ? value.tokens : {};
|
|
136
|
-
const harnesses = isRecord(value.harnesses) ? value.harnesses : {};
|
|
137
|
-
const accountId = nonEmptyString(auth.accountId);
|
|
138
|
-
const signedIn = auth.signedIn === true && typeof accountId === "string";
|
|
139
|
-
return {
|
|
140
|
-
version: 1,
|
|
141
|
-
proxy: {
|
|
142
|
-
host: typeof proxy.host === "string"
|
|
143
|
-
? proxy.host
|
|
144
|
-
: defaults.proxy.host,
|
|
145
|
-
port: typeof proxy.port === "number"
|
|
146
|
-
? proxy.port
|
|
147
|
-
: defaults.proxy.port,
|
|
148
|
-
},
|
|
149
|
-
auth: {
|
|
150
|
-
signedIn,
|
|
151
|
-
label: nullableString(auth.label),
|
|
152
|
-
accountId,
|
|
153
|
-
email: nullableString(auth.email),
|
|
154
|
-
createdAt: typeof auth.createdAt === "string" ? auth.createdAt : undefined,
|
|
155
|
-
},
|
|
156
|
-
location: {
|
|
157
|
-
mode: locationMode(location.mode),
|
|
158
|
-
},
|
|
159
|
-
localInstallation: normalizeLocalInstallation(value.localInstallation),
|
|
160
|
-
gateway: normalizeGatewayInstall(value.gateway),
|
|
161
|
-
tokens: normalizeTokens(tokens),
|
|
162
|
-
harnesses: normalizeHarnesses(harnesses),
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function locationMode(value) {
|
|
166
|
-
if (value === "local" || value === "cloud")
|
|
167
|
-
return value;
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
function normalizeGatewayInstall(value) {
|
|
171
|
-
if (!isRecord(value))
|
|
172
|
-
return null;
|
|
173
|
-
const binPath = nonEmptyString(value.binPath);
|
|
174
|
-
const version = nonEmptyString(value.version);
|
|
175
|
-
const channel = nonEmptyString(value.channel);
|
|
176
|
-
if (!binPath || !version || !channel)
|
|
177
|
-
return null;
|
|
178
|
-
return { binPath, version, channel };
|
|
179
|
-
}
|
|
180
|
-
function normalizeLocalInstallation(value) {
|
|
181
|
-
if (!isRecord(value))
|
|
182
|
-
return null;
|
|
183
|
-
const installationId = nonEmptyString(value.installationId);
|
|
184
|
-
const credential = nonEmptyString(value.credential);
|
|
185
|
-
const controlUrl = nonEmptyString(value.controlUrl);
|
|
186
|
-
if (!installationId || !credential || !controlUrl)
|
|
187
|
-
return null;
|
|
188
|
-
if (!credential.startsWith("slv_inst_") || !validUrl(controlUrl)) {
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
return { installationId, credential, controlUrl };
|
|
192
|
-
}
|
|
193
|
-
function normalizeTokens(value) {
|
|
194
|
-
const items = Array.isArray(value.items)
|
|
195
|
-
? value.items.flatMap(tokenRecord)
|
|
196
|
-
: [];
|
|
197
|
-
const rawDefaultId = typeof value.defaultId === "string" ? value.defaultId : null;
|
|
198
|
-
const defaultId = items.some((item) => item.id === rawDefaultId)
|
|
199
|
-
? rawDefaultId
|
|
200
|
-
: (items[0]?.id ?? null);
|
|
201
|
-
return { defaultId, items };
|
|
202
|
-
}
|
|
203
|
-
function tokenRecord(value) {
|
|
204
|
-
if (!isRecord(value))
|
|
205
|
-
return [];
|
|
206
|
-
const id = nonEmptyString(value.id);
|
|
207
|
-
const token = nonEmptyString(value.token);
|
|
208
|
-
const proxyUrl = nonEmptyString(value.proxyUrl);
|
|
209
|
-
const createdAt = nonEmptyString(value.createdAt);
|
|
210
|
-
if (!id || !token || !token.startsWith("slv_live_"))
|
|
211
|
-
return [];
|
|
212
|
-
if (!proxyUrl || !validUrl(proxyUrl))
|
|
213
|
-
return [];
|
|
214
|
-
if (!createdAt || Number.isNaN(Date.parse(createdAt)))
|
|
215
|
-
return [];
|
|
216
|
-
return [
|
|
217
|
-
{
|
|
218
|
-
id,
|
|
219
|
-
token,
|
|
220
|
-
label: nullableString(value.label) ?? null,
|
|
221
|
-
proxyUrl,
|
|
222
|
-
createdAt,
|
|
223
|
-
},
|
|
224
|
-
];
|
|
225
|
-
}
|
|
226
|
-
function normalizeHarnesses(value) {
|
|
227
|
-
const result = {};
|
|
228
|
-
for (const slug of [
|
|
229
|
-
"claude-code",
|
|
230
|
-
"codex",
|
|
231
|
-
"opencode",
|
|
232
|
-
"gemini",
|
|
233
|
-
]) {
|
|
234
|
-
const entry = value[slug];
|
|
235
|
-
if (isRecord(entry) && typeof entry.configured === "boolean") {
|
|
236
|
-
result[slug] = { configured: entry.configured };
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return result;
|
|
240
|
-
}
|
|
241
|
-
function isRecord(value) {
|
|
242
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
243
|
-
}
|
|
244
|
-
function nullableString(value) {
|
|
245
|
-
if (typeof value === "undefined")
|
|
246
|
-
return undefined;
|
|
247
|
-
if (value === null || typeof value === "string")
|
|
248
|
-
return value;
|
|
249
|
-
return undefined;
|
|
250
|
-
}
|
|
251
|
-
function nonEmptyString(value) {
|
|
252
|
-
if (typeof value !== "string")
|
|
253
|
-
return undefined;
|
|
254
|
-
return value ? value : undefined;
|
|
255
|
-
}
|
|
256
|
-
function validUrl(raw) {
|
|
257
|
-
try {
|
|
258
|
-
const url = new URL(raw);
|
|
259
|
-
return url.protocol === "https:" || url.protocol === "http:";
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
return false;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
function isNotFoundError(error) {
|
|
266
|
-
return (error instanceof Error &&
|
|
267
|
-
"code" in error &&
|
|
268
|
-
error.code === "ENOENT");
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=store.js.map
|
package/dist/config/store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"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"}
|