@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.
- package/LICENSE.md +8 -0
- package/README.md +183 -0
- package/dist/channels/registry.d.ts +14 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +14 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/telegram.d.ts +92 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +469 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/tui.d.ts +8 -0
- package/dist/channels/tui.d.ts.map +1 -0
- package/dist/channels/tui.js +574 -0
- package/dist/channels/tui.js.map +1 -0
- package/dist/cli.d.ts +23 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +571 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/loader.d.ts +6 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +103 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.spec.d.ts +2 -0
- package/dist/config/loader.spec.d.ts.map +1 -0
- package/dist/config/loader.spec.js +195 -0
- package/dist/config/loader.spec.js.map +1 -0
- package/dist/config/schema.d.ts +107 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +42 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/schema.spec.d.ts +2 -0
- package/dist/config/schema.spec.d.ts.map +1 -0
- package/dist/config/schema.spec.js +180 -0
- package/dist/config/schema.spec.js.map +1 -0
- package/dist/gateway/agent-manager.d.ts +138 -0
- package/dist/gateway/agent-manager.d.ts.map +1 -0
- package/dist/gateway/agent-manager.js +532 -0
- package/dist/gateway/agent-manager.js.map +1 -0
- package/dist/gateway/api.d.ts +43 -0
- package/dist/gateway/api.d.ts.map +1 -0
- package/dist/gateway/api.js +256 -0
- package/dist/gateway/api.js.map +1 -0
- package/dist/gateway/api.spec.d.ts +2 -0
- package/dist/gateway/api.spec.d.ts.map +1 -0
- package/dist/gateway/api.spec.js +256 -0
- package/dist/gateway/api.spec.js.map +1 -0
- package/dist/gateway/audit.d.ts +38 -0
- package/dist/gateway/audit.d.ts.map +1 -0
- package/dist/gateway/audit.js +82 -0
- package/dist/gateway/audit.js.map +1 -0
- package/dist/gateway/audit.spec.d.ts +2 -0
- package/dist/gateway/audit.spec.d.ts.map +1 -0
- package/dist/gateway/audit.spec.js +212 -0
- package/dist/gateway/audit.spec.js.map +1 -0
- package/dist/gateway/gateway.d.ts +27 -0
- package/dist/gateway/gateway.d.ts.map +1 -0
- package/dist/gateway/gateway.js +158 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/policy.d.ts +27 -0
- package/dist/gateway/policy.d.ts.map +1 -0
- package/dist/gateway/policy.js +40 -0
- package/dist/gateway/policy.js.map +1 -0
- package/dist/gateway/policy.spec.d.ts +2 -0
- package/dist/gateway/policy.spec.d.ts.map +1 -0
- package/dist/gateway/policy.spec.js +121 -0
- package/dist/gateway/policy.spec.js.map +1 -0
- package/dist/gateway/provider-health.d.ts +83 -0
- package/dist/gateway/provider-health.d.ts.map +1 -0
- package/dist/gateway/provider-health.js +219 -0
- package/dist/gateway/provider-health.js.map +1 -0
- package/dist/gateway/provider-health.spec.d.ts +2 -0
- package/dist/gateway/provider-health.spec.d.ts.map +1 -0
- package/dist/gateway/provider-health.spec.js +278 -0
- package/dist/gateway/provider-health.spec.js.map +1 -0
- package/dist/gateway/session-settings.d.ts +62 -0
- package/dist/gateway/session-settings.d.ts.map +1 -0
- package/dist/gateway/session-settings.js +91 -0
- package/dist/gateway/session-settings.js.map +1 -0
- package/dist/gateway/session-settings.spec.d.ts +2 -0
- package/dist/gateway/session-settings.spec.d.ts.map +1 -0
- package/dist/gateway/session-settings.spec.js +141 -0
- package/dist/gateway/session-settings.spec.js.map +1 -0
- package/dist/gateway/sessions.d.ts +68 -0
- package/dist/gateway/sessions.d.ts.map +1 -0
- package/dist/gateway/sessions.js +177 -0
- package/dist/gateway/sessions.js.map +1 -0
- package/dist/gateway/sessions.spec.d.ts +2 -0
- package/dist/gateway/sessions.spec.d.ts.map +1 -0
- package/dist/gateway/sessions.spec.js +190 -0
- package/dist/gateway/sessions.spec.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +39 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +144 -0
- package/dist/install.js.map +1 -0
- package/dist/sandbox/manager.d.ts +63 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +294 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/skills/index.d.ts +2 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +2 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/registry.d.ts +11 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +86 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/registry.spec.d.ts +2 -0
- package/dist/skills/registry.spec.d.ts.map +1 -0
- package/dist/skills/registry.spec.js +220 -0
- package/dist/skills/registry.spec.js.map +1 -0
- package/dist/socket/protocol.d.ts +21 -0
- package/dist/socket/protocol.d.ts.map +1 -0
- package/dist/socket/protocol.js +7 -0
- package/dist/socket/protocol.js.map +1 -0
- package/dist/socket/protocol.spec.d.ts +2 -0
- package/dist/socket/protocol.spec.d.ts.map +1 -0
- package/dist/socket/protocol.spec.js +135 -0
- package/dist/socket/protocol.spec.js.map +1 -0
- package/dist/socket/server.d.ts +21 -0
- package/dist/socket/server.d.ts.map +1 -0
- package/dist/socket/server.js +133 -0
- package/dist/socket/server.js.map +1 -0
- package/dist/socket/server.spec.d.ts +2 -0
- package/dist/socket/server.spec.d.ts.map +1 -0
- package/dist/socket/server.spec.js +333 -0
- package/dist/socket/server.spec.js.map +1 -0
- package/dist/test/fixtures.d.ts +47 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +144 -0
- package/dist/test/fixtures.js.map +1 -0
- package/dist/toolkit/index.d.ts +4 -0
- package/dist/toolkit/index.d.ts.map +1 -0
- package/dist/toolkit/index.js +4 -0
- package/dist/toolkit/index.js.map +1 -0
- package/dist/toolkit/installer.d.ts +26 -0
- package/dist/toolkit/installer.d.ts.map +1 -0
- package/dist/toolkit/installer.js +247 -0
- package/dist/toolkit/installer.js.map +1 -0
- package/dist/toolkit/registry.d.ts +19 -0
- package/dist/toolkit/registry.d.ts.map +1 -0
- package/dist/toolkit/registry.js +119 -0
- package/dist/toolkit/registry.js.map +1 -0
- package/dist/toolkit/registry.spec.d.ts +2 -0
- package/dist/toolkit/registry.spec.d.ts.map +1 -0
- package/dist/toolkit/registry.spec.js +194 -0
- package/dist/toolkit/registry.spec.js.map +1 -0
- package/dist/toolkit/schema.d.ts +61 -0
- package/dist/toolkit/schema.d.ts.map +1 -0
- package/dist/toolkit/schema.js +116 -0
- package/dist/toolkit/schema.js.map +1 -0
- package/dist/toolkit/schema.spec.d.ts +2 -0
- package/dist/toolkit/schema.spec.d.ts.map +1 -0
- package/dist/toolkit/schema.spec.js +202 -0
- package/dist/toolkit/schema.spec.js.map +1 -0
- package/dist/tools/core.d.ts +10 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +246 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/core.spec.d.ts +2 -0
- package/dist/tools/core.spec.d.ts.map +1 -0
- package/dist/tools/core.spec.js +315 -0
- package/dist/tools/core.spec.js.map +1 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +62 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/registry.spec.d.ts +2 -0
- package/dist/tools/registry.spec.d.ts.map +1 -0
- package/dist/tools/registry.spec.js +228 -0
- package/dist/tools/registry.spec.js.map +1 -0
- package/dist/tools/runner.d.ts +25 -0
- package/dist/tools/runner.d.ts.map +1 -0
- package/dist/tools/runner.js +35 -0
- package/dist/tools/runner.js.map +1 -0
- package/dist/tools/runner.spec.d.ts +2 -0
- package/dist/tools/runner.spec.d.ts.map +1 -0
- package/dist/tools/runner.spec.js +129 -0
- package/dist/tools/runner.spec.js.map +1 -0
- package/dist/types/session.d.ts +8 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +23 -0
- package/dist/types/session.js.map +1 -0
- package/package.json +76 -0
- package/tools/README.md +1 -0
- package/tools/kv/README.md +150 -0
- package/tools/kv/index.ts +149 -0
- package/tools/kv/tool.json +23 -0
- package/tools/message/README.md +53 -0
- package/tools/message/index.ts +183 -0
- 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
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|