@floomhq/floom 3.1.0 → 5.0.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/LICENSE +6 -0
- package/README.md +346 -168
- package/bin/floom-mcp +9 -0
- package/bin/workeros-mcp +13 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +336 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/completion.d.ts +2 -0
- package/dist/commands/completion.js +81 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/connections.d.ts +22 -0
- package/dist/commands/connections.js +158 -0
- package/dist/commands/connections.js.map +1 -0
- package/dist/commands/contexts.d.ts +34 -0
- package/dist/commands/contexts.js +247 -0
- package/dist/commands/contexts.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.js +158 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/login.d.ts +14 -0
- package/dist/commands/login.js +349 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.js +15 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/mcp.d.ts +42 -0
- package/dist/commands/mcp.js +382 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/run.d.ts +15 -0
- package/dist/commands/run.js +154 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/runs.d.ts +25 -0
- package/dist/commands/runs.js +324 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/secrets.d.ts +9 -0
- package/dist/commands/secrets.js +97 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.js +70 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/workers.d.ts +30 -0
- package/dist/commands/workers.js +773 -0
- package/dist/commands/workers.js.map +1 -0
- package/dist/commands/workspaces.d.ts +10 -0
- package/dist/commands/workspaces.js +171 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/lib/api.d.ts +38 -0
- package/dist/lib/api.js +311 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/cli-errors.d.ts +1 -0
- package/dist/lib/cli-errors.js +20 -0
- package/dist/lib/cli-errors.js.map +1 -0
- package/dist/lib/command-name.d.ts +4 -0
- package/dist/lib/command-name.js +23 -0
- package/dist/lib/command-name.js.map +1 -0
- package/dist/lib/credentials.d.ts +21 -0
- package/dist/lib/credentials.js +126 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/output.d.ts +18 -0
- package/dist/lib/output.js +44 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/prompt.d.ts +2 -0
- package/dist/lib/prompt.js +55 -0
- package/dist/lib/prompt.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +1171 -0
- package/dist/server.js.map +1 -0
- package/package.json +43 -51
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -8278
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/commands/connections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare function contextsListCommand(options: {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
}): Promise<number>;
|
|
4
|
+
export declare function contextsCreateCommand(name: string, options: {
|
|
5
|
+
writeable?: boolean;
|
|
6
|
+
sensitive?: boolean;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
}): Promise<number>;
|
|
9
|
+
export declare function contextsReadCommand(name: string, path: string, options: {
|
|
10
|
+
json?: boolean;
|
|
11
|
+
}): Promise<number>;
|
|
12
|
+
export declare function contextsWriteCommand(name: string, path: string, options: {
|
|
13
|
+
content?: string;
|
|
14
|
+
file?: string;
|
|
15
|
+
json?: boolean;
|
|
16
|
+
}): Promise<number>;
|
|
17
|
+
export declare function contextsUploadCommand(name: string, file: string, options: {
|
|
18
|
+
path?: string;
|
|
19
|
+
json?: boolean;
|
|
20
|
+
}): Promise<number>;
|
|
21
|
+
export declare function contextsDeleteCommand(name: string, options: {
|
|
22
|
+
force?: boolean;
|
|
23
|
+
json?: boolean;
|
|
24
|
+
}): Promise<number>;
|
|
25
|
+
export declare function contextsDeleteFileCommand(name: string, path: string, options: {
|
|
26
|
+
json?: boolean;
|
|
27
|
+
}): Promise<number>;
|
|
28
|
+
export declare function contextsVersionsCommand(name: string, options: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
json?: boolean;
|
|
31
|
+
}): Promise<number>;
|
|
32
|
+
export declare function contextsRollbackCommand(name: string, versionId: string, options: {
|
|
33
|
+
json?: boolean;
|
|
34
|
+
}): Promise<number>;
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { basename } from "node:path";
|
|
3
|
+
import { createAuthenticatedClient } from "../lib/api.js";
|
|
4
|
+
import { handleAuthError } from "../lib/cli-errors.js";
|
|
5
|
+
import { log, printJson, renderTable } from "../lib/output.js";
|
|
6
|
+
function encodePath(path) {
|
|
7
|
+
return path.split("/").map(encodeURIComponent).join("/");
|
|
8
|
+
}
|
|
9
|
+
function contextPath(name) {
|
|
10
|
+
return `/contexts/${encodeURIComponent(name.trim())}`;
|
|
11
|
+
}
|
|
12
|
+
function filePath(name, path) {
|
|
13
|
+
return `${contextPath(name)}/files/${encodePath(path.trim())}`;
|
|
14
|
+
}
|
|
15
|
+
function requireValue(value, label) {
|
|
16
|
+
const trimmed = value.trim();
|
|
17
|
+
if (!trimmed)
|
|
18
|
+
throw new Error(`${label} is required`);
|
|
19
|
+
return trimmed;
|
|
20
|
+
}
|
|
21
|
+
export async function contextsListCommand(options) {
|
|
22
|
+
try {
|
|
23
|
+
const { client } = await createAuthenticatedClient();
|
|
24
|
+
const contexts = (await client.requestJson("GET", "/contexts"));
|
|
25
|
+
if (options.json) {
|
|
26
|
+
printJson(contexts);
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
if (!contexts.length) {
|
|
30
|
+
log.info("No brain packs found.");
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
process.stdout.write(renderTable(contexts.map((ctx) => ({
|
|
34
|
+
Name: ctx.name,
|
|
35
|
+
Files: ctx.file_count ?? 0,
|
|
36
|
+
Writeable: ctx.writeable ? "yes" : "no",
|
|
37
|
+
Sensitive: ctx.sensitive === false ? "no" : "yes",
|
|
38
|
+
Visibility: ctx.visibility || "-",
|
|
39
|
+
Updated: ctx.updated_at || "-",
|
|
40
|
+
})), [
|
|
41
|
+
{ key: "Name", label: "Name" },
|
|
42
|
+
{ key: "Files", label: "Files" },
|
|
43
|
+
{ key: "Writeable", label: "Writeable" },
|
|
44
|
+
{ key: "Sensitive", label: "Sensitive" },
|
|
45
|
+
{ key: "Visibility", label: "Visibility" },
|
|
46
|
+
{ key: "Updated", label: "Updated" },
|
|
47
|
+
]) + "\n");
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const handled = handleAuthError(error);
|
|
52
|
+
if (handled !== null)
|
|
53
|
+
return handled;
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export async function contextsCreateCommand(name, options) {
|
|
58
|
+
try {
|
|
59
|
+
const safeName = requireValue(name, "context name");
|
|
60
|
+
const { client } = await createAuthenticatedClient();
|
|
61
|
+
const created = await client.requestJson("POST", contextPath(safeName), {
|
|
62
|
+
body: {
|
|
63
|
+
writeable: Boolean(options.writeable),
|
|
64
|
+
sensitive: options.sensitive !== false,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
if (options.json)
|
|
68
|
+
printJson(created);
|
|
69
|
+
else
|
|
70
|
+
log.ok(`Created brain pack ${safeName}.`);
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const handled = handleAuthError(error);
|
|
75
|
+
if (handled !== null)
|
|
76
|
+
return handled;
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export async function contextsReadCommand(name, path, options) {
|
|
81
|
+
try {
|
|
82
|
+
const { client } = await createAuthenticatedClient();
|
|
83
|
+
const file = (await client.requestJson("GET", filePath(requireValue(name, "context name"), requireValue(path, "file path"))));
|
|
84
|
+
if (options.json) {
|
|
85
|
+
printJson(file);
|
|
86
|
+
}
|
|
87
|
+
else if (typeof file.content === "string" && !file.is_binary) {
|
|
88
|
+
process.stdout.write(file.content);
|
|
89
|
+
if (!file.content.endsWith("\n"))
|
|
90
|
+
process.stdout.write("\n");
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
log.info(file.note || "Binary file.");
|
|
94
|
+
if (file.download_url)
|
|
95
|
+
log.kv("Download", file.download_url);
|
|
96
|
+
if (file.mime_type)
|
|
97
|
+
log.kv("Type", file.mime_type);
|
|
98
|
+
if (file.size !== undefined)
|
|
99
|
+
log.kv("Size", String(file.size));
|
|
100
|
+
}
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const handled = handleAuthError(error);
|
|
105
|
+
if (handled !== null)
|
|
106
|
+
return handled;
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export async function contextsWriteCommand(name, path, options) {
|
|
111
|
+
try {
|
|
112
|
+
const safeName = requireValue(name, "context name");
|
|
113
|
+
const safePath = requireValue(path, "file path");
|
|
114
|
+
if (options.content === undefined && !options.file) {
|
|
115
|
+
log.err("Provide --content or --file.");
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
const content = options.file
|
|
119
|
+
? await readFile(options.file, "utf8")
|
|
120
|
+
: String(options.content ?? "");
|
|
121
|
+
const { client } = await createAuthenticatedClient();
|
|
122
|
+
const written = await client.requestJson("PUT", filePath(safeName, safePath), {
|
|
123
|
+
body: { content },
|
|
124
|
+
});
|
|
125
|
+
if (options.json)
|
|
126
|
+
printJson(written);
|
|
127
|
+
else
|
|
128
|
+
log.ok(`Wrote ${safeName}/${safePath}.`);
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
const handled = handleAuthError(error);
|
|
133
|
+
if (handled !== null)
|
|
134
|
+
return handled;
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export async function contextsUploadCommand(name, file, options) {
|
|
139
|
+
try {
|
|
140
|
+
const safeName = requireValue(name, "context name");
|
|
141
|
+
const targetPath = requireValue(options.path || basename(file), "file path");
|
|
142
|
+
const { client } = await createAuthenticatedClient();
|
|
143
|
+
const parsed = await client.uploadContextFile(safeName, file, targetPath);
|
|
144
|
+
if (options.json)
|
|
145
|
+
printJson(parsed);
|
|
146
|
+
else
|
|
147
|
+
log.ok(`Uploaded ${targetPath} to ${safeName}.`);
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const handled = handleAuthError(error);
|
|
152
|
+
if (handled !== null)
|
|
153
|
+
return handled;
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export async function contextsDeleteCommand(name, options) {
|
|
158
|
+
try {
|
|
159
|
+
const safeName = requireValue(name, "context name");
|
|
160
|
+
const { client } = await createAuthenticatedClient();
|
|
161
|
+
const deleted = await client.requestJson("DELETE", contextPath(safeName), {
|
|
162
|
+
query: options.force ? { force: true } : undefined,
|
|
163
|
+
});
|
|
164
|
+
if (options.json)
|
|
165
|
+
printJson(deleted);
|
|
166
|
+
else
|
|
167
|
+
log.ok(`Deleted brain pack ${safeName}.`);
|
|
168
|
+
return 0;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
const handled = handleAuthError(error);
|
|
172
|
+
if (handled !== null)
|
|
173
|
+
return handled;
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
export async function contextsDeleteFileCommand(name, path, options) {
|
|
178
|
+
try {
|
|
179
|
+
const safeName = requireValue(name, "context name");
|
|
180
|
+
const safePath = requireValue(path, "file path");
|
|
181
|
+
const { client } = await createAuthenticatedClient();
|
|
182
|
+
const result = await client.requestJson("DELETE", filePath(safeName, safePath));
|
|
183
|
+
if (options.json)
|
|
184
|
+
printJson(result);
|
|
185
|
+
else
|
|
186
|
+
log.ok(`Deleted ${safeName}/${safePath}.`);
|
|
187
|
+
return 0;
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
const handled = handleAuthError(error);
|
|
191
|
+
if (handled !== null)
|
|
192
|
+
return handled;
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export async function contextsVersionsCommand(name, options) {
|
|
197
|
+
try {
|
|
198
|
+
const safeName = requireValue(name, "context name");
|
|
199
|
+
const { client } = await createAuthenticatedClient();
|
|
200
|
+
const versions = await client.requestJson("GET", `${contextPath(safeName)}/versions`, {
|
|
201
|
+
query: { limit: options.limit ?? 50 },
|
|
202
|
+
});
|
|
203
|
+
if (options.json) {
|
|
204
|
+
printJson(versions);
|
|
205
|
+
return 0;
|
|
206
|
+
}
|
|
207
|
+
const rows = Array.isArray(versions) ? versions.map((row) => ({
|
|
208
|
+
Sha: row?.sha || row?.version_id || "-",
|
|
209
|
+
Message: row?.message || "-",
|
|
210
|
+
Author: row?.author || row?.author_name || "-",
|
|
211
|
+
Date: row?.date || row?.created_at || "-",
|
|
212
|
+
})) : [];
|
|
213
|
+
process.stdout.write(renderTable(rows, [
|
|
214
|
+
{ key: "Sha", label: "Sha" },
|
|
215
|
+
{ key: "Message", label: "Message" },
|
|
216
|
+
{ key: "Author", label: "Author" },
|
|
217
|
+
{ key: "Date", label: "Date" },
|
|
218
|
+
]) + "\n");
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
const handled = handleAuthError(error);
|
|
223
|
+
if (handled !== null)
|
|
224
|
+
return handled;
|
|
225
|
+
throw error;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
export async function contextsRollbackCommand(name, versionId, options) {
|
|
229
|
+
try {
|
|
230
|
+
const safeName = requireValue(name, "context name");
|
|
231
|
+
const safeVersion = requireValue(versionId, "version id");
|
|
232
|
+
const { client } = await createAuthenticatedClient();
|
|
233
|
+
const result = await client.requestJson("POST", `${contextPath(safeName)}/rollback/${encodeURIComponent(safeVersion)}`);
|
|
234
|
+
if (options.json)
|
|
235
|
+
printJson(result);
|
|
236
|
+
else
|
|
237
|
+
log.ok(`Rolled back ${safeName} to ${safeVersion}.`);
|
|
238
|
+
return 0;
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
const handled = handleAuthError(error);
|
|
242
|
+
if (handled !== null)
|
|
243
|
+
return handled;
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=contexts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../src/commands/contexts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { FloomApiClient, FloomApiError } from "../lib/api.js";
|
|
4
|
+
import { getCommandName } from "../lib/command-name.js";
|
|
5
|
+
import { readCredentials } from "../lib/credentials.js";
|
|
6
|
+
import { log, printJson } from "../lib/output.js";
|
|
7
|
+
function pass(name, detail) {
|
|
8
|
+
return { name, ok: true, detail };
|
|
9
|
+
}
|
|
10
|
+
function fail(name, detail, hint) {
|
|
11
|
+
return { name, ok: false, detail, hint };
|
|
12
|
+
}
|
|
13
|
+
function warn(name, detail, hint) {
|
|
14
|
+
return { name, ok: true, detail, hint };
|
|
15
|
+
}
|
|
16
|
+
const API_DEFAULT = "https://localhost:8000";
|
|
17
|
+
async function checkApiReachable(apiBase) {
|
|
18
|
+
try {
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
21
|
+
const response = await fetch(`${apiBase}/health`, {
|
|
22
|
+
signal: controller.signal,
|
|
23
|
+
}).finally(() => clearTimeout(timeout));
|
|
24
|
+
if (response.ok) {
|
|
25
|
+
const body = await response.json().catch(() => ({}));
|
|
26
|
+
const version = typeof body.version === "string" ? body.version : "ok";
|
|
27
|
+
return pass("api_url", `${apiBase} — ${version}`);
|
|
28
|
+
}
|
|
29
|
+
return fail("api_url", `HTTP ${response.status}`, "Check API status: https://github.com/floomhq/floom/issues");
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (error.name === "AbortError") {
|
|
33
|
+
return fail("api_url", `Timeout reaching ${apiBase}`, "Check your network or API status");
|
|
34
|
+
}
|
|
35
|
+
return fail("api_url", String(error), "Check your network connection or API status");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function checkAuth(client) {
|
|
39
|
+
try {
|
|
40
|
+
await client.requestJson("GET", "/system/info");
|
|
41
|
+
return pass("auth", "Token valid");
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof FloomApiError && (error.status === 401 || error.status === 403)) {
|
|
45
|
+
return fail("auth", "Token rejected by API", `Re-run: ${getCommandName()} login`);
|
|
46
|
+
}
|
|
47
|
+
if (error instanceof FloomApiError && error.status) {
|
|
48
|
+
return fail("auth", `HTTP ${error.status}`, `Re-run: ${getCommandName()} login`);
|
|
49
|
+
}
|
|
50
|
+
return fail("auth", "Could not reach API to validate token", `Re-run: ${getCommandName()} login`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function resolveHomeDir() {
|
|
54
|
+
return process.env.HOME || process.env.USERPROFILE || "";
|
|
55
|
+
}
|
|
56
|
+
function checkMcpInstall() {
|
|
57
|
+
const home = resolveHomeDir();
|
|
58
|
+
if (!home) {
|
|
59
|
+
return fail("mcp_install", "HOME not set", "Set HOME environment variable");
|
|
60
|
+
}
|
|
61
|
+
const candidates = [
|
|
62
|
+
{ label: "Claude Code", path: join(home, ".claude", "settings.json") },
|
|
63
|
+
{ label: "Cursor", path: join(home, ".cursor", "mcp.json") },
|
|
64
|
+
{ label: "Continue", path: join(home, ".continue", ".continuerc.json") },
|
|
65
|
+
{ label: "Codex", path: join(home, ".codex", "config.json") },
|
|
66
|
+
{ label: "external audit", path: join(home, ".external-audit", "mcp.json") },
|
|
67
|
+
];
|
|
68
|
+
const found = [];
|
|
69
|
+
for (const candidate of candidates) {
|
|
70
|
+
if (!existsSync(candidate.path))
|
|
71
|
+
continue;
|
|
72
|
+
try {
|
|
73
|
+
const raw = readFileSync(candidate.path, "utf8");
|
|
74
|
+
const config = JSON.parse(raw);
|
|
75
|
+
const servers = config.mcpServers;
|
|
76
|
+
if (servers && ("floom" in servers || "workeros" in servers)) {
|
|
77
|
+
found.push(candidate.label);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Unreadable config — skip
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (found.length > 0) {
|
|
85
|
+
return pass("mcp_install", `Found in: ${found.join(", ")}`);
|
|
86
|
+
}
|
|
87
|
+
return warn("mcp_install", "Not found in any editor config", `Install: ${getCommandName()} mcp install`);
|
|
88
|
+
}
|
|
89
|
+
async function checkRecentRuns(client) {
|
|
90
|
+
try {
|
|
91
|
+
await client.requestJson("GET", "/runs", { query: { limit: 1 } });
|
|
92
|
+
return pass("recent_runs", "API + auth + DB reachable");
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error instanceof FloomApiError && (error.status === 401 || error.status === 403)) {
|
|
96
|
+
return fail("recent_runs", "Auth rejected", `Re-run: ${getCommandName()} login`);
|
|
97
|
+
}
|
|
98
|
+
if (error instanceof FloomApiError && error.status) {
|
|
99
|
+
return fail("recent_runs", `HTTP ${error.status}`, "Check API status: https://github.com/floomhq/floom/issues");
|
|
100
|
+
}
|
|
101
|
+
return fail("recent_runs", "Could not reach /runs endpoint", "Check your network connection");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function doctorCommand(options = {}) {
|
|
105
|
+
const credentials = await readCredentials();
|
|
106
|
+
const apiBase = credentials?.api_base || process.env.WORKEROS_API_BASE || API_DEFAULT;
|
|
107
|
+
const client = credentials ? new FloomApiClient(apiBase, credentials) : null;
|
|
108
|
+
const checks = [];
|
|
109
|
+
// Check 1: API reachable
|
|
110
|
+
checks.push(await checkApiReachable(apiBase));
|
|
111
|
+
// Check 2: Auth valid
|
|
112
|
+
if (!client) {
|
|
113
|
+
checks.push(fail("auth", "No credentials found", `Run: ${getCommandName()} login`));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
checks.push(await checkAuth(client));
|
|
117
|
+
}
|
|
118
|
+
// Check 3: MCP install
|
|
119
|
+
checks.push(checkMcpInstall());
|
|
120
|
+
// Check 4: Recent runs endpoint
|
|
121
|
+
if (client) {
|
|
122
|
+
checks.push(await checkRecentRuns(client));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
checks.push(fail("recent_runs", "Skipped — not authenticated", `Run: ${getCommandName()} login`));
|
|
126
|
+
}
|
|
127
|
+
if (options.json) {
|
|
128
|
+
printJson({ ok: checks.every((c) => c.ok), checks });
|
|
129
|
+
return checks.every((c) => c.ok) ? 0 : 1;
|
|
130
|
+
}
|
|
131
|
+
log.heading(`${getCommandName()} doctor`);
|
|
132
|
+
for (const check of checks) {
|
|
133
|
+
const detail = check.detail ? ` — ${check.detail}` : "";
|
|
134
|
+
if (!check.ok) {
|
|
135
|
+
log.err(`${check.name}${detail}`);
|
|
136
|
+
if (check.hint)
|
|
137
|
+
log.info(` ${check.hint}`);
|
|
138
|
+
}
|
|
139
|
+
else if (check.hint) {
|
|
140
|
+
// warn-level (ok but with hint)
|
|
141
|
+
log.warn(`${check.name}${detail}`);
|
|
142
|
+
log.info(` ${check.hint}`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
log.ok(`${check.name}${detail}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
log.blank();
|
|
149
|
+
const failed = checks.filter((c) => !c.ok).length;
|
|
150
|
+
if (failed === 0) {
|
|
151
|
+
log.ok("All checks passed.");
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
log.err(`${failed} check${failed === 1 ? "" : "s"} failed; see hints above.`);
|
|
155
|
+
}
|
|
156
|
+
return failed === 0 ? 0 : 1;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FloomApiError } from "../lib/api.js";
|
|
2
|
+
import { type StoredCredentials } from "../lib/credentials.js";
|
|
3
|
+
type WorkspaceRow = {
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function acquireLoginLock(): Promise<() => Promise<void>>;
|
|
8
|
+
export declare function cloudRateLimitRetryMs(error: FloomApiError, pollingIntervalSeconds: number): number;
|
|
9
|
+
export type LoginOptions = {
|
|
10
|
+
cloud?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function runLoginCommand(options?: LoginOptions): Promise<number>;
|
|
13
|
+
export declare function resolveInitialCloudWorkspace(credentials: StoredCredentials): Promise<WorkspaceRow | null>;
|
|
14
|
+
export {};
|