@floomhq/floom 3.0.4 → 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.
Files changed (72) hide show
  1. package/LICENSE +6 -0
  2. package/README.md +346 -168
  3. package/bin/floom-mcp +9 -0
  4. package/bin/workeros-mcp +13 -0
  5. package/dist/cli.d.ts +6 -0
  6. package/dist/cli.js +336 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/completion.d.ts +2 -0
  9. package/dist/commands/completion.js +81 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/connections.d.ts +22 -0
  12. package/dist/commands/connections.js +158 -0
  13. package/dist/commands/connections.js.map +1 -0
  14. package/dist/commands/contexts.d.ts +34 -0
  15. package/dist/commands/contexts.js +247 -0
  16. package/dist/commands/contexts.js.map +1 -0
  17. package/dist/commands/doctor.d.ts +3 -0
  18. package/dist/commands/doctor.js +158 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/login.d.ts +14 -0
  21. package/dist/commands/login.js +349 -0
  22. package/dist/commands/login.js.map +1 -0
  23. package/dist/commands/logout.d.ts +1 -0
  24. package/dist/commands/logout.js +15 -0
  25. package/dist/commands/logout.js.map +1 -0
  26. package/dist/commands/mcp.d.ts +42 -0
  27. package/dist/commands/mcp.js +382 -0
  28. package/dist/commands/mcp.js.map +1 -0
  29. package/dist/commands/run.d.ts +15 -0
  30. package/dist/commands/run.js +154 -0
  31. package/dist/commands/run.js.map +1 -0
  32. package/dist/commands/runs.d.ts +25 -0
  33. package/dist/commands/runs.js +324 -0
  34. package/dist/commands/runs.js.map +1 -0
  35. package/dist/commands/secrets.d.ts +9 -0
  36. package/dist/commands/secrets.js +97 -0
  37. package/dist/commands/secrets.js.map +1 -0
  38. package/dist/commands/whoami.d.ts +3 -0
  39. package/dist/commands/whoami.js +70 -0
  40. package/dist/commands/whoami.js.map +1 -0
  41. package/dist/commands/workers.d.ts +30 -0
  42. package/dist/commands/workers.js +773 -0
  43. package/dist/commands/workers.js.map +1 -0
  44. package/dist/commands/workspaces.d.ts +10 -0
  45. package/dist/commands/workspaces.js +171 -0
  46. package/dist/commands/workspaces.js.map +1 -0
  47. package/dist/lib/api.d.ts +38 -0
  48. package/dist/lib/api.js +311 -0
  49. package/dist/lib/api.js.map +1 -0
  50. package/dist/lib/cli-errors.d.ts +1 -0
  51. package/dist/lib/cli-errors.js +20 -0
  52. package/dist/lib/cli-errors.js.map +1 -0
  53. package/dist/lib/command-name.d.ts +4 -0
  54. package/dist/lib/command-name.js +23 -0
  55. package/dist/lib/command-name.js.map +1 -0
  56. package/dist/lib/credentials.d.ts +21 -0
  57. package/dist/lib/credentials.js +126 -0
  58. package/dist/lib/credentials.js.map +1 -0
  59. package/dist/lib/output.d.ts +18 -0
  60. package/dist/lib/output.js +44 -0
  61. package/dist/lib/output.js.map +1 -0
  62. package/dist/lib/prompt.d.ts +2 -0
  63. package/dist/lib/prompt.js +55 -0
  64. package/dist/lib/prompt.js.map +1 -0
  65. package/dist/server.d.ts +5 -0
  66. package/dist/server.js +1171 -0
  67. package/dist/server.js.map +1 -0
  68. package/package.json +43 -51
  69. package/dist/index.d.ts +0 -1
  70. package/dist/index.js +0 -8276
  71. package/dist/version.d.ts +0 -1
  72. 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,3 @@
1
+ export declare function doctorCommand(options?: {
2
+ json?: boolean;
3
+ }): Promise<number>;
@@ -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 {};