@matthias-hausberger/beige 0.0.1

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 (194) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +183 -0
  3. package/dist/channels/registry.d.ts +14 -0
  4. package/dist/channels/registry.d.ts.map +1 -0
  5. package/dist/channels/registry.js +14 -0
  6. package/dist/channels/registry.js.map +1 -0
  7. package/dist/channels/telegram.d.ts +92 -0
  8. package/dist/channels/telegram.d.ts.map +1 -0
  9. package/dist/channels/telegram.js +469 -0
  10. package/dist/channels/telegram.js.map +1 -0
  11. package/dist/channels/tui.d.ts +8 -0
  12. package/dist/channels/tui.d.ts.map +1 -0
  13. package/dist/channels/tui.js +574 -0
  14. package/dist/channels/tui.js.map +1 -0
  15. package/dist/cli.d.ts +23 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +571 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config/loader.d.ts +6 -0
  20. package/dist/config/loader.d.ts.map +1 -0
  21. package/dist/config/loader.js +103 -0
  22. package/dist/config/loader.js.map +1 -0
  23. package/dist/config/loader.spec.d.ts +2 -0
  24. package/dist/config/loader.spec.d.ts.map +1 -0
  25. package/dist/config/loader.spec.js +195 -0
  26. package/dist/config/loader.spec.js.map +1 -0
  27. package/dist/config/schema.d.ts +107 -0
  28. package/dist/config/schema.d.ts.map +1 -0
  29. package/dist/config/schema.js +42 -0
  30. package/dist/config/schema.js.map +1 -0
  31. package/dist/config/schema.spec.d.ts +2 -0
  32. package/dist/config/schema.spec.d.ts.map +1 -0
  33. package/dist/config/schema.spec.js +180 -0
  34. package/dist/config/schema.spec.js.map +1 -0
  35. package/dist/gateway/agent-manager.d.ts +138 -0
  36. package/dist/gateway/agent-manager.d.ts.map +1 -0
  37. package/dist/gateway/agent-manager.js +532 -0
  38. package/dist/gateway/agent-manager.js.map +1 -0
  39. package/dist/gateway/api.d.ts +43 -0
  40. package/dist/gateway/api.d.ts.map +1 -0
  41. package/dist/gateway/api.js +256 -0
  42. package/dist/gateway/api.js.map +1 -0
  43. package/dist/gateway/api.spec.d.ts +2 -0
  44. package/dist/gateway/api.spec.d.ts.map +1 -0
  45. package/dist/gateway/api.spec.js +256 -0
  46. package/dist/gateway/api.spec.js.map +1 -0
  47. package/dist/gateway/audit.d.ts +38 -0
  48. package/dist/gateway/audit.d.ts.map +1 -0
  49. package/dist/gateway/audit.js +82 -0
  50. package/dist/gateway/audit.js.map +1 -0
  51. package/dist/gateway/audit.spec.d.ts +2 -0
  52. package/dist/gateway/audit.spec.d.ts.map +1 -0
  53. package/dist/gateway/audit.spec.js +212 -0
  54. package/dist/gateway/audit.spec.js.map +1 -0
  55. package/dist/gateway/gateway.d.ts +27 -0
  56. package/dist/gateway/gateway.d.ts.map +1 -0
  57. package/dist/gateway/gateway.js +158 -0
  58. package/dist/gateway/gateway.js.map +1 -0
  59. package/dist/gateway/policy.d.ts +27 -0
  60. package/dist/gateway/policy.d.ts.map +1 -0
  61. package/dist/gateway/policy.js +40 -0
  62. package/dist/gateway/policy.js.map +1 -0
  63. package/dist/gateway/policy.spec.d.ts +2 -0
  64. package/dist/gateway/policy.spec.d.ts.map +1 -0
  65. package/dist/gateway/policy.spec.js +121 -0
  66. package/dist/gateway/policy.spec.js.map +1 -0
  67. package/dist/gateway/provider-health.d.ts +83 -0
  68. package/dist/gateway/provider-health.d.ts.map +1 -0
  69. package/dist/gateway/provider-health.js +219 -0
  70. package/dist/gateway/provider-health.js.map +1 -0
  71. package/dist/gateway/provider-health.spec.d.ts +2 -0
  72. package/dist/gateway/provider-health.spec.d.ts.map +1 -0
  73. package/dist/gateway/provider-health.spec.js +278 -0
  74. package/dist/gateway/provider-health.spec.js.map +1 -0
  75. package/dist/gateway/session-settings.d.ts +62 -0
  76. package/dist/gateway/session-settings.d.ts.map +1 -0
  77. package/dist/gateway/session-settings.js +91 -0
  78. package/dist/gateway/session-settings.js.map +1 -0
  79. package/dist/gateway/session-settings.spec.d.ts +2 -0
  80. package/dist/gateway/session-settings.spec.d.ts.map +1 -0
  81. package/dist/gateway/session-settings.spec.js +141 -0
  82. package/dist/gateway/session-settings.spec.js.map +1 -0
  83. package/dist/gateway/sessions.d.ts +68 -0
  84. package/dist/gateway/sessions.d.ts.map +1 -0
  85. package/dist/gateway/sessions.js +177 -0
  86. package/dist/gateway/sessions.js.map +1 -0
  87. package/dist/gateway/sessions.spec.d.ts +2 -0
  88. package/dist/gateway/sessions.spec.d.ts.map +1 -0
  89. package/dist/gateway/sessions.spec.js +190 -0
  90. package/dist/gateway/sessions.spec.js.map +1 -0
  91. package/dist/index.d.ts +11 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +10 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/install.d.ts +39 -0
  96. package/dist/install.d.ts.map +1 -0
  97. package/dist/install.js +144 -0
  98. package/dist/install.js.map +1 -0
  99. package/dist/sandbox/manager.d.ts +63 -0
  100. package/dist/sandbox/manager.d.ts.map +1 -0
  101. package/dist/sandbox/manager.js +294 -0
  102. package/dist/sandbox/manager.js.map +1 -0
  103. package/dist/skills/index.d.ts +2 -0
  104. package/dist/skills/index.d.ts.map +1 -0
  105. package/dist/skills/index.js +2 -0
  106. package/dist/skills/index.js.map +1 -0
  107. package/dist/skills/registry.d.ts +11 -0
  108. package/dist/skills/registry.d.ts.map +1 -0
  109. package/dist/skills/registry.js +86 -0
  110. package/dist/skills/registry.js.map +1 -0
  111. package/dist/skills/registry.spec.d.ts +2 -0
  112. package/dist/skills/registry.spec.d.ts.map +1 -0
  113. package/dist/skills/registry.spec.js +220 -0
  114. package/dist/skills/registry.spec.js.map +1 -0
  115. package/dist/socket/protocol.d.ts +21 -0
  116. package/dist/socket/protocol.d.ts.map +1 -0
  117. package/dist/socket/protocol.js +7 -0
  118. package/dist/socket/protocol.js.map +1 -0
  119. package/dist/socket/protocol.spec.d.ts +2 -0
  120. package/dist/socket/protocol.spec.d.ts.map +1 -0
  121. package/dist/socket/protocol.spec.js +135 -0
  122. package/dist/socket/protocol.spec.js.map +1 -0
  123. package/dist/socket/server.d.ts +21 -0
  124. package/dist/socket/server.d.ts.map +1 -0
  125. package/dist/socket/server.js +133 -0
  126. package/dist/socket/server.js.map +1 -0
  127. package/dist/socket/server.spec.d.ts +2 -0
  128. package/dist/socket/server.spec.d.ts.map +1 -0
  129. package/dist/socket/server.spec.js +333 -0
  130. package/dist/socket/server.spec.js.map +1 -0
  131. package/dist/test/fixtures.d.ts +47 -0
  132. package/dist/test/fixtures.d.ts.map +1 -0
  133. package/dist/test/fixtures.js +144 -0
  134. package/dist/test/fixtures.js.map +1 -0
  135. package/dist/toolkit/index.d.ts +4 -0
  136. package/dist/toolkit/index.d.ts.map +1 -0
  137. package/dist/toolkit/index.js +4 -0
  138. package/dist/toolkit/index.js.map +1 -0
  139. package/dist/toolkit/installer.d.ts +26 -0
  140. package/dist/toolkit/installer.d.ts.map +1 -0
  141. package/dist/toolkit/installer.js +247 -0
  142. package/dist/toolkit/installer.js.map +1 -0
  143. package/dist/toolkit/registry.d.ts +19 -0
  144. package/dist/toolkit/registry.d.ts.map +1 -0
  145. package/dist/toolkit/registry.js +119 -0
  146. package/dist/toolkit/registry.js.map +1 -0
  147. package/dist/toolkit/registry.spec.d.ts +2 -0
  148. package/dist/toolkit/registry.spec.d.ts.map +1 -0
  149. package/dist/toolkit/registry.spec.js +194 -0
  150. package/dist/toolkit/registry.spec.js.map +1 -0
  151. package/dist/toolkit/schema.d.ts +61 -0
  152. package/dist/toolkit/schema.d.ts.map +1 -0
  153. package/dist/toolkit/schema.js +116 -0
  154. package/dist/toolkit/schema.js.map +1 -0
  155. package/dist/toolkit/schema.spec.d.ts +2 -0
  156. package/dist/toolkit/schema.spec.d.ts.map +1 -0
  157. package/dist/toolkit/schema.spec.js +202 -0
  158. package/dist/toolkit/schema.spec.js.map +1 -0
  159. package/dist/tools/core.d.ts +10 -0
  160. package/dist/tools/core.d.ts.map +1 -0
  161. package/dist/tools/core.js +246 -0
  162. package/dist/tools/core.js.map +1 -0
  163. package/dist/tools/core.spec.d.ts +2 -0
  164. package/dist/tools/core.spec.d.ts.map +1 -0
  165. package/dist/tools/core.spec.js +315 -0
  166. package/dist/tools/core.spec.js.map +1 -0
  167. package/dist/tools/registry.d.ts +15 -0
  168. package/dist/tools/registry.d.ts.map +1 -0
  169. package/dist/tools/registry.js +62 -0
  170. package/dist/tools/registry.js.map +1 -0
  171. package/dist/tools/registry.spec.d.ts +2 -0
  172. package/dist/tools/registry.spec.d.ts.map +1 -0
  173. package/dist/tools/registry.spec.js +228 -0
  174. package/dist/tools/registry.spec.js.map +1 -0
  175. package/dist/tools/runner.d.ts +25 -0
  176. package/dist/tools/runner.d.ts.map +1 -0
  177. package/dist/tools/runner.js +35 -0
  178. package/dist/tools/runner.js.map +1 -0
  179. package/dist/tools/runner.spec.d.ts +2 -0
  180. package/dist/tools/runner.spec.d.ts.map +1 -0
  181. package/dist/tools/runner.spec.js +129 -0
  182. package/dist/tools/runner.spec.js.map +1 -0
  183. package/dist/types/session.d.ts +8 -0
  184. package/dist/types/session.d.ts.map +1 -0
  185. package/dist/types/session.js +23 -0
  186. package/dist/types/session.js.map +1 -0
  187. package/package.json +76 -0
  188. package/tools/README.md +1 -0
  189. package/tools/kv/README.md +150 -0
  190. package/tools/kv/index.ts +149 -0
  191. package/tools/kv/tool.json +23 -0
  192. package/tools/message/README.md +53 -0
  193. package/tools/message/index.ts +183 -0
  194. package/tools/message/tool.json +11 -0
package/dist/cli.js ADDED
@@ -0,0 +1,571 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Beige CLI
4
+ *
5
+ * Usage:
6
+ * beige Show help
7
+ * beige gateway start Start the gateway as a background daemon
8
+ * beige gateway start --foreground Start the gateway in the foreground (for debugging)
9
+ * beige gateway stop Stop the running gateway daemon
10
+ * beige gateway restart Gracefully restart the gateway (drain, reload config, recreate sandboxes)
11
+ * beige gateway status Show whether the gateway daemon is running
12
+ * beige gateway logs Show gateway logs
13
+ * beige gateway logs -f Follow gateway logs (tail -f)
14
+ * beige tui [agent] Connect to a running gateway via TUI
15
+ * beige install <source> Install a toolkit (npm, github, local, url)
16
+ * beige toolkit <command> Manage toolkits
17
+ * beige --config <path> Use a specific config file
18
+ *
19
+ * Shell 1: beige ← starts gateway daemon
20
+ * Shell 2: beige tui testo ← interactive TUI, proxies tools to gateway
21
+ */
22
+ import { resolve } from "path";
23
+ import { homedir } from "os";
24
+ import { mkdirSync, writeFileSync, readFileSync, existsSync, openSync, } from "fs";
25
+ import { spawn } from "child_process";
26
+ import { watch } from "fs";
27
+ import { isSourceInstall, runSetup } from "./install.js";
28
+ import { installToolkit, removeToolkit, listInstalledToolkits, getInstalledToolkit, sourceToString, } from "./toolkit/index.js";
29
+ // ── Paths ────────────────────────────────────────────────────────────
30
+ const BEIGE_DIR = resolve(homedir(), ".beige");
31
+ const PID_FILE = resolve(BEIGE_DIR, "gateway.pid");
32
+ const LOG_FILE = resolve(BEIGE_DIR, "logs", "gateway.log");
33
+ // ── Helpers ──────────────────────────────────────────────────────────
34
+ function ensureDirs() {
35
+ mkdirSync(resolve(BEIGE_DIR, "logs"), { recursive: true });
36
+ }
37
+ /** Read the stored PID, or null if the file doesn't exist. */
38
+ function readPid() {
39
+ if (!existsSync(PID_FILE))
40
+ return null;
41
+ const raw = readFileSync(PID_FILE, "utf-8").trim();
42
+ const pid = parseInt(raw, 10);
43
+ return isNaN(pid) ? null : pid;
44
+ }
45
+ /** Return true if a process with the given PID is currently running. */
46
+ function isRunning(pid) {
47
+ try {
48
+ process.kill(pid, 0);
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ // ── Commands ─────────────────────────────────────────────────────────
56
+ async function cmdSetup(force) {
57
+ if (!force && isSourceInstall()) {
58
+ console.log("[BEIGE] Detected source install (git checkout). Skipping automatic setup.\n" +
59
+ " Run 'beige setup --force' to set up ~/.beige anyway.");
60
+ return;
61
+ }
62
+ console.log("[BEIGE] Running setup…");
63
+ const result = await runSetup({ force: true });
64
+ if (result.created.length > 0) {
65
+ console.log("\n[BEIGE] Created:");
66
+ for (const p of result.created)
67
+ console.log(` + ${p}`);
68
+ }
69
+ if (result.skipped.length > 0) {
70
+ console.log("\n[BEIGE] Already exists (skipped):");
71
+ for (const p of result.skipped)
72
+ console.log(` ~ ${p}`);
73
+ }
74
+ if (result.created.length === 0 && result.skipped.length === 0) {
75
+ console.log("[BEIGE] Nothing to do.");
76
+ }
77
+ console.log("\n[BEIGE] Setup complete.");
78
+ }
79
+ /**
80
+ * Auto-setup for npm-global installs: if no config exists yet and we are not
81
+ * running from source, silently initialise ~/.beige on the first invocation.
82
+ */
83
+ async function maybeAutoSetup() {
84
+ if (isSourceInstall())
85
+ return;
86
+ const configPath = resolve(homedir(), ".beige", "config.json5");
87
+ if (existsSync(configPath))
88
+ return;
89
+ console.log("[BEIGE] First run — setting up ~/.beige…");
90
+ const result = await runSetup({ force: false });
91
+ if (result.created.length > 0) {
92
+ console.log("[BEIGE] Created:");
93
+ for (const p of result.created)
94
+ console.log(` + ${p}`);
95
+ console.log();
96
+ }
97
+ }
98
+ async function cmdGatewayStart(configPath, foreground) {
99
+ if (!foreground) {
100
+ // Check whether a daemon is already running
101
+ const existingPid = readPid();
102
+ if (existingPid !== null && isRunning(existingPid)) {
103
+ console.log(`[BEIGE] Gateway is already running (PID ${existingPid})`);
104
+ process.exit(0);
105
+ }
106
+ ensureDirs();
107
+ // Open log file for append (create if absent)
108
+ const logFd = openSync(LOG_FILE, "a");
109
+ // Re-invoke this same entry point in foreground mode.
110
+ // argv[0] is always `node` regardless of whether tsx is used as a loader,
111
+ // so we detect TypeScript source by the .ts extension on argv[1] and
112
+ // inject `--import tsx/esm` so the child can resolve TS imports.
113
+ const isTs = process.argv[1].endsWith(".ts");
114
+ const spawnArgs = isTs
115
+ ? ["--import", "tsx/esm", process.argv[1], "gateway", "start", "--foreground", "--config", configPath]
116
+ : [process.argv[1], "gateway", "start", "--foreground", "--config", configPath];
117
+ const child = spawn(process.execPath, spawnArgs, {
118
+ detached: true,
119
+ stdio: ["ignore", logFd, logFd],
120
+ env: { ...process.env },
121
+ });
122
+ child.unref();
123
+ writeFileSync(PID_FILE, String(child.pid), "utf-8");
124
+ console.log(`[BEIGE] Gateway daemon started (PID ${child.pid})`);
125
+ console.log(`[BEIGE] Logs: ${LOG_FILE}`);
126
+ console.log(`[BEIGE] Run 'beige gateway logs -f' to follow`);
127
+ process.exit(0);
128
+ }
129
+ // ── Foreground path (used directly or spawned by the daemon launcher) ──
130
+ const { loadConfig } = await import("./config/loader.js");
131
+ console.log(`[BEIGE] Loading config from: ${resolve(configPath)}`);
132
+ const config = loadConfig(configPath);
133
+ const { Gateway } = await import("./gateway/gateway.js");
134
+ const gateway = new Gateway(config, configPath);
135
+ const shutdown = async () => {
136
+ console.log("\n[BEIGE] Shutting down...");
137
+ await gateway.stop();
138
+ process.exit(0);
139
+ };
140
+ process.on("SIGINT", shutdown);
141
+ process.on("SIGTERM", shutdown);
142
+ // SIGHUP → graceful in-place restart (reload config, recreate sandboxes)
143
+ process.on("SIGHUP", () => {
144
+ console.log("[BEIGE] Received SIGHUP — restarting gateway...");
145
+ gateway.restart().catch((err) => {
146
+ console.error("[BEIGE] Restart failed:", err);
147
+ });
148
+ });
149
+ try {
150
+ await gateway.start();
151
+ }
152
+ catch (err) {
153
+ console.error("[BEIGE] Failed to start gateway:", err);
154
+ process.exit(1);
155
+ }
156
+ }
157
+ function cmdGatewayStop() {
158
+ const pid = readPid();
159
+ if (pid === null) {
160
+ console.log("[BEIGE] No PID file found — gateway may not be running");
161
+ process.exit(0);
162
+ }
163
+ if (!isRunning(pid)) {
164
+ console.log(`[BEIGE] Gateway (PID ${pid}) is not running`);
165
+ process.exit(0);
166
+ }
167
+ try {
168
+ process.kill(pid, "SIGTERM");
169
+ console.log(`[BEIGE] Sent SIGTERM to gateway (PID ${pid})`);
170
+ }
171
+ catch (err) {
172
+ console.error(`[BEIGE] Failed to stop gateway (PID ${pid}):`, err);
173
+ process.exit(1);
174
+ }
175
+ }
176
+ function cmdGatewayRestart() {
177
+ const pid = readPid();
178
+ if (pid === null) {
179
+ console.log("[BEIGE] No PID file found — gateway is not running");
180
+ console.log("[BEIGE] Run 'beige gateway start' to start it");
181
+ process.exit(1);
182
+ }
183
+ if (!isRunning(pid)) {
184
+ console.log(`[BEIGE] Gateway (PID ${pid}) is not running`);
185
+ console.log("[BEIGE] Run 'beige gateway start' to start it");
186
+ process.exit(1);
187
+ }
188
+ try {
189
+ process.kill(pid, "SIGHUP");
190
+ console.log(`[BEIGE] Sent SIGHUP to gateway (PID ${pid}) — graceful restart initiated`);
191
+ console.log(`[BEIGE] Follow progress with: beige gateway logs -f`);
192
+ }
193
+ catch (err) {
194
+ console.error(`[BEIGE] Failed to signal gateway (PID ${pid}):`, err);
195
+ process.exit(1);
196
+ }
197
+ }
198
+ function cmdGatewayStatus() {
199
+ const pid = readPid();
200
+ if (pid === null || !isRunning(pid)) {
201
+ console.log("[BEIGE] Gateway: stopped");
202
+ }
203
+ else {
204
+ console.log(`[BEIGE] Gateway: running (PID ${pid})`);
205
+ console.log(`[BEIGE] Logs: ${LOG_FILE}`);
206
+ }
207
+ }
208
+ function cmdGatewayLogs(follow) {
209
+ if (!existsSync(LOG_FILE)) {
210
+ console.log(`[BEIGE] Log file not found: ${LOG_FILE}`);
211
+ process.exit(1);
212
+ }
213
+ if (!follow) {
214
+ // Dump the whole file and exit
215
+ const content = readFileSync(LOG_FILE, "utf-8");
216
+ process.stdout.write(content);
217
+ return;
218
+ }
219
+ // Follow mode: stream existing content then watch for new bytes
220
+ let position = 0;
221
+ function flush() {
222
+ try {
223
+ const buf = readFileSync(LOG_FILE);
224
+ if (buf.length > position) {
225
+ process.stdout.write(buf.subarray(position));
226
+ position = buf.length;
227
+ }
228
+ }
229
+ catch {
230
+ // file temporarily unavailable — ignore
231
+ }
232
+ }
233
+ // Output everything already in the file
234
+ flush();
235
+ // Watch for writes and flush incrementally
236
+ watch(LOG_FILE, () => flush());
237
+ // Keep the process alive
238
+ process.on("SIGINT", () => process.exit(0));
239
+ process.on("SIGTERM", () => process.exit(0));
240
+ }
241
+ // ── Parse args ───────────────────────────────────────────────────────
242
+ const defaultConfigPath = resolve(homedir(), ".beige", "config.json5");
243
+ let configPath = defaultConfigPath;
244
+ let gatewayUrl;
245
+ function printHelp() {
246
+ console.log(`
247
+ Beige — Secure sandboxed agent system
248
+
249
+ Usage:
250
+ beige setup First-time setup (copies tools, writes default config)
251
+ beige gateway <command> Manage the gateway daemon
252
+ beige tui [agent] Connect TUI to running gateway
253
+ beige install <source> Install a toolkit (npm, github, local, url)
254
+ beige toolkit <command> Manage toolkits
255
+
256
+ Options:
257
+ -c, --config <path> Config file (default: ~/.beige/config.json5)
258
+ -g, --gateway <url> Gateway URL for TUI (default: http://127.0.0.1:7433)
259
+ -h, --help Show this help
260
+
261
+ Run 'beige gateway' for gateway-specific commands.
262
+ Run 'beige toolkit' for toolkit-specific commands.
263
+ `);
264
+ }
265
+ function printToolkitHelp() {
266
+ console.log(`
267
+ Beige — Toolkit commands
268
+
269
+ Usage:
270
+ beige install <source> Install a toolkit
271
+ beige toolkit list List installed toolkits
272
+ beige toolkit show <name> Show toolkit details
273
+ beige toolkit remove <name> Remove a toolkit
274
+ beige toolkit update Update all installed toolkits
275
+
276
+ Install sources:
277
+ npm:@scope/toolkit-name NPM package
278
+ github:owner/repo GitHub repository
279
+ github:owner/repo#tag GitHub repository with tag/branch
280
+ ./path/to/toolkit Local directory
281
+ https://.../toolkit.tar.gz URL to tarball
282
+
283
+ Options:
284
+ --force, -f Force install even with conflicts
285
+ -h, --help Show this help
286
+ `);
287
+ }
288
+ function printGatewayHelp() {
289
+ console.log(`
290
+ Beige — Gateway commands
291
+
292
+ Usage:
293
+ beige gateway start Start the gateway daemon
294
+ beige gateway start --foreground Start the gateway in the foreground
295
+ beige gateway stop Stop the gateway daemon
296
+ beige gateway restart Gracefully restart the gateway (drain, reload config, recreate sandboxes)
297
+ beige gateway status Show gateway daemon status
298
+ beige gateway logs Show gateway logs
299
+ beige gateway logs -f Follow gateway logs
300
+
301
+ Options:
302
+ -c, --config <path> Config file (default: ~/.beige/config.json5)
303
+ -h, --help Show this help
304
+ `);
305
+ }
306
+ function parseArgs() {
307
+ const args = process.argv.slice(2);
308
+ // Pull out global flags first
309
+ for (let i = 0; i < args.length; i++) {
310
+ if (args[i] === "--config" || args[i] === "-c") {
311
+ configPath = args[i + 1];
312
+ args.splice(i, 2);
313
+ i--;
314
+ }
315
+ else if (args[i] === "--gateway" || args[i] === "-g") {
316
+ gatewayUrl = args[i + 1];
317
+ args.splice(i, 2);
318
+ i--;
319
+ }
320
+ else if (args[i] === "--help" || args[i] === "-h") {
321
+ printHelp();
322
+ process.exit(0);
323
+ }
324
+ }
325
+ // No subcommand → show help
326
+ if (args.length === 0) {
327
+ printHelp();
328
+ process.exit(0);
329
+ }
330
+ const [cmd, sub, ...rest] = args;
331
+ if (cmd === "gateway") {
332
+ if (!sub || sub === "--help" || sub === "-h") {
333
+ printGatewayHelp();
334
+ process.exit(0);
335
+ }
336
+ if (sub === "start") {
337
+ const foreground = rest.includes("--foreground") || rest.includes("-F");
338
+ return { kind: "gateway-start", foreground };
339
+ }
340
+ if (sub === "stop")
341
+ return { kind: "gateway-stop" };
342
+ if (sub === "restart")
343
+ return { kind: "gateway-restart" };
344
+ if (sub === "status")
345
+ return { kind: "gateway-status" };
346
+ if (sub === "logs") {
347
+ const follow = rest.includes("-f") || rest.includes("--follow");
348
+ return { kind: "gateway-logs", follow };
349
+ }
350
+ console.error(`[BEIGE] Unknown gateway subcommand: ${sub}`);
351
+ printGatewayHelp();
352
+ process.exit(1);
353
+ }
354
+ if (cmd === "tui") {
355
+ return { kind: "tui", agentName: sub };
356
+ }
357
+ if (cmd === "setup") {
358
+ const force = args.includes("--force") || args.includes("-f");
359
+ return { kind: "setup", force };
360
+ }
361
+ if (cmd === "install") {
362
+ if (!sub || sub === "--help" || sub === "-h") {
363
+ printToolkitHelp();
364
+ process.exit(sub === "--help" || sub === "-h" ? 0 : 1);
365
+ }
366
+ const force = rest.includes("--force") || rest.includes("-f");
367
+ return { kind: "install", source: sub, force };
368
+ }
369
+ if (cmd === "toolkit") {
370
+ if (!sub || sub === "--help" || sub === "-h") {
371
+ printToolkitHelp();
372
+ process.exit(0);
373
+ }
374
+ if (sub === "list") {
375
+ return { kind: "toolkit-list" };
376
+ }
377
+ if (sub === "show") {
378
+ const name = rest[0];
379
+ if (!name) {
380
+ console.error("[BEIGE] Missing toolkit name. Usage: beige toolkit show <name>");
381
+ process.exit(1);
382
+ }
383
+ return { kind: "toolkit-show", name };
384
+ }
385
+ if (sub === "remove") {
386
+ const name = rest[0];
387
+ if (!name) {
388
+ console.error("[BEIGE] Missing toolkit name. Usage: beige toolkit remove <name>");
389
+ process.exit(1);
390
+ }
391
+ return { kind: "toolkit-remove", name };
392
+ }
393
+ if (sub === "update") {
394
+ return { kind: "toolkit-update" };
395
+ }
396
+ console.error(`[BEIGE] Unknown toolkit subcommand: ${sub}`);
397
+ printToolkitHelp();
398
+ process.exit(1);
399
+ }
400
+ console.error(`[BEIGE] Unknown command: ${cmd}`);
401
+ printHelp();
402
+ process.exit(1);
403
+ }
404
+ const mode = parseArgs();
405
+ // ── Auto-setup on first npm-global run ────────────────────────────────
406
+ // Skipped for `beige setup` itself (it handles output its own way) and for
407
+ // source installs. For every other command, silently bootstrap ~/.beige if
408
+ // no config exists yet.
409
+ if (mode.kind !== "setup") {
410
+ await maybeAutoSetup();
411
+ }
412
+ // ── Dispatch ─────────────────────────────────────────────────────────
413
+ if (mode.kind === "setup") {
414
+ await cmdSetup(mode.force);
415
+ }
416
+ else if (mode.kind === "gateway-start") {
417
+ await cmdGatewayStart(configPath, mode.foreground);
418
+ }
419
+ else if (mode.kind === "gateway-stop") {
420
+ cmdGatewayStop();
421
+ }
422
+ else if (mode.kind === "gateway-restart") {
423
+ cmdGatewayRestart();
424
+ }
425
+ else if (mode.kind === "gateway-status") {
426
+ cmdGatewayStatus();
427
+ }
428
+ else if (mode.kind === "gateway-logs") {
429
+ cmdGatewayLogs(mode.follow);
430
+ }
431
+ else if (mode.kind === "tui") {
432
+ // ── Mode: TUI ─────────────────────────────────────────────────────
433
+ const { loadConfig } = await import("./config/loader.js");
434
+ console.log(`[BEIGE] Loading config from: ${resolve(configPath)}`);
435
+ const config = loadConfig(configPath);
436
+ const agentNames = Object.keys(config.agents);
437
+ if (agentNames.length === 0) {
438
+ console.error("[BEIGE] No agents defined in config");
439
+ process.exit(1);
440
+ }
441
+ let agentName = mode.agentName;
442
+ if (!agentName) {
443
+ agentName = agentNames[0];
444
+ if (agentNames.length > 1) {
445
+ console.log(`[BEIGE] No agent specified, using '${agentName}'. Available: ${agentNames.join(", ")}`);
446
+ }
447
+ }
448
+ if (!config.agents[agentName]) {
449
+ console.error(`[BEIGE] Unknown agent '${agentName}'. Available: ${agentNames.join(", ")}`);
450
+ process.exit(1);
451
+ }
452
+ const url = gatewayUrl ??
453
+ `http://${config.gateway?.host ?? "127.0.0.1"}:${config.gateway?.port ?? 7433}`;
454
+ const { launchTUI } = await import("./channels/tui.js");
455
+ try {
456
+ await launchTUI({ config, agentName, gatewayUrl: url });
457
+ }
458
+ catch (err) {
459
+ console.error("[BEIGE] TUI error:", err);
460
+ process.exit(1);
461
+ }
462
+ }
463
+ else if (mode.kind === "install") {
464
+ await cmdInstall(mode.source, mode.force);
465
+ }
466
+ else if (mode.kind === "toolkit-list") {
467
+ cmdToolkitList();
468
+ }
469
+ else if (mode.kind === "toolkit-show") {
470
+ cmdToolkitShow(mode.name);
471
+ }
472
+ else if (mode.kind === "toolkit-remove") {
473
+ cmdToolkitRemove(mode.name);
474
+ }
475
+ else if (mode.kind === "toolkit-update") {
476
+ await cmdToolkitUpdate();
477
+ }
478
+ async function cmdInstall(source, force) {
479
+ console.log(`[BEIGE] Installing toolkit from: ${source}`);
480
+ const result = await installToolkit(source, { force });
481
+ if (!result.success) {
482
+ if (result.conflicts && result.conflicts.length > 0) {
483
+ console.error("[BEIGE] Tool name conflicts detected:");
484
+ for (const conflict of result.conflicts) {
485
+ console.error(` - ${conflict}`);
486
+ }
487
+ console.error("\n[BEIGE] Use --force to override.");
488
+ }
489
+ else {
490
+ console.error(`[BEIGE] Failed to install toolkit: ${result.error}`);
491
+ }
492
+ process.exit(1);
493
+ }
494
+ if (result.toolkit) {
495
+ const action = result.updated ? "Updated" : "Installed";
496
+ console.log(`[BEIGE] ${action} toolkit: ${result.toolkit.manifest.name} v${result.toolkit.manifest.version}`);
497
+ console.log(`[BEIGE] Tools available:`);
498
+ for (const tool of result.toolkit.tools) {
499
+ console.log(` - ${tool.name}: ${tool.manifest.description}`);
500
+ }
501
+ console.log(`\n[BEIGE] Add tools to your agent's config to enable them.`);
502
+ }
503
+ }
504
+ function cmdToolkitList() {
505
+ const toolkits = listInstalledToolkits();
506
+ if (toolkits.length === 0) {
507
+ console.log("[BEIGE] No toolkits installed.");
508
+ console.log("\n[BEIGE] Install a toolkit with: beige install <source>");
509
+ return;
510
+ }
511
+ console.log("[BEIGE] Installed toolkits:\n");
512
+ for (const toolkit of toolkits) {
513
+ const source = sourceToString(toolkit.source);
514
+ console.log(` ${toolkit.name} v${toolkit.version}`);
515
+ console.log(` Source: ${source}`);
516
+ console.log(` Tools: ${toolkit.tools.join(", ")}`);
517
+ console.log(` Installed: ${new Date(toolkit.installedAt).toLocaleDateString()}`);
518
+ console.log();
519
+ }
520
+ }
521
+ function cmdToolkitShow(name) {
522
+ const toolkit = getInstalledToolkit(name);
523
+ if (!toolkit) {
524
+ console.error(`[BEIGE] Toolkit '${name}' not found.`);
525
+ console.error("[BEIGE] Run 'beige toolkit list' to see installed toolkits.");
526
+ process.exit(1);
527
+ }
528
+ const source = sourceToString(toolkit.source);
529
+ console.log(`Toolkit: ${toolkit.name}`);
530
+ console.log(`Version: ${toolkit.version}`);
531
+ console.log(`Source: ${source}`);
532
+ console.log(`Path: ${toolkit.path}`);
533
+ console.log(`Installed: ${new Date(toolkit.installedAt).toLocaleString()}`);
534
+ console.log(`\nTools:`);
535
+ for (const toolName of toolkit.tools) {
536
+ console.log(` - ${toolName}`);
537
+ }
538
+ }
539
+ function cmdToolkitRemove(name) {
540
+ const result = removeToolkit(name);
541
+ if (!result.success) {
542
+ console.error(`[BEIGE] ${result.error}`);
543
+ process.exit(1);
544
+ }
545
+ console.log(`[BEIGE] Removed toolkit: ${name}`);
546
+ }
547
+ async function cmdToolkitUpdate() {
548
+ const toolkits = listInstalledToolkits();
549
+ if (toolkits.length === 0) {
550
+ console.log("[BEIGE] No toolkits installed.");
551
+ return;
552
+ }
553
+ console.log(`[BEIGE] Updating ${toolkits.length} toolkit(s)...\n`);
554
+ let updated = 0;
555
+ let failed = 0;
556
+ for (const toolkit of toolkits) {
557
+ const source = sourceToString(toolkit.source);
558
+ console.log(`[BEIGE] Updating ${toolkit.name} from ${source}...`);
559
+ const result = await installToolkit(source, { force: true });
560
+ if (result.success) {
561
+ console.log(`[BEIGE] Updated to v${result.toolkit?.manifest.version}`);
562
+ updated++;
563
+ }
564
+ else {
565
+ console.error(`[BEIGE] Failed: ${result.error}`);
566
+ failed++;
567
+ }
568
+ }
569
+ console.log(`\n[BEIGE] Update complete: ${updated} updated, ${failed} failed.`);
570
+ }
571
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type BeigeConfig } from "./schema.js";
2
+ /**
3
+ * Load and validate a beige config file (JSON5 format).
4
+ */
5
+ export declare function loadConfig(configPath: string): BeigeConfig;
6
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAqD,MAAM,aAAa,CAAC;AAuGlG;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAc1D"}