0xkobold 0.0.6 → 0.2.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/HEARTBEAT.md +66 -32
- package/README.md +220 -1
- package/dist/package.json +3 -2
- package/dist/src/agent/bootstrap-loader.js +138 -0
- package/dist/src/agent/bootstrap-loader.js.map +1 -0
- package/dist/src/agent/context-pruning.js +279 -0
- package/dist/src/agent/context-pruning.js.map +1 -0
- package/dist/src/agent/dynamic-personality.js +211 -0
- package/dist/src/agent/dynamic-personality.js.map +1 -0
- package/dist/src/agent/embedded-runner.js +79 -0
- package/dist/src/agent/embedded-runner.js.map +1 -0
- package/dist/src/agent/index.js +16 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/system-prompt.js +84 -0
- package/dist/src/agent/system-prompt.js.map +1 -0
- package/dist/src/agent/task-router.js +194 -0
- package/dist/src/agent/task-router.js.map +1 -0
- package/dist/src/agent/tools/index.js +2 -0
- package/dist/src/agent/tools/index.js.map +1 -0
- package/dist/src/agent/tools/spawn-agent.js +200 -0
- package/dist/src/agent/tools/spawn-agent.js.map +1 -0
- package/dist/src/agent/types/definitions.js +317 -0
- package/dist/src/agent/types/definitions.js.map +1 -0
- package/dist/src/agent/types/index.js +2 -0
- package/dist/src/agent/types/index.js.map +1 -0
- package/dist/src/agent/user-profile.js +300 -0
- package/dist/src/agent/user-profile.js.map +1 -0
- package/dist/src/agents/task-router.js +194 -0
- package/dist/src/agents/task-router.js.map +1 -0
- package/dist/src/agents/tools/index.js +2 -0
- package/dist/src/agents/tools/index.js.map +1 -0
- package/dist/src/agents/tools/spawn-agent.js +200 -0
- package/dist/src/agents/tools/spawn-agent.js.map +1 -0
- package/dist/src/agents/types/definitions.js +317 -0
- package/dist/src/agents/types/definitions.js.map +1 -0
- package/dist/src/agents/types/index.js +2 -0
- package/dist/src/agents/types/index.js.map +1 -0
- package/dist/src/cli/commands/embedded.js +36 -0
- package/dist/src/cli/commands/embedded.js.map +1 -0
- package/dist/src/cli/commands/gateway.js +127 -166
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cli/program-fixed.js +1 -0
- package/dist/src/cli/program-fixed.js.map +1 -0
- package/dist/src/cli/program.js +10 -29
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/extensions/core/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js +642 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-workspace-extension.js +174 -0
- package/dist/src/extensions/core/agent-workspace-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js +145 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js +647 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/mode-manager-extension.js +11 -0
- package/dist/src/extensions/core/mode-manager-extension.js.map +1 -1
- package/dist/src/extensions/core/perennial-memory-extension.js +10 -2
- package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
- package/dist/src/extensions/core/persona-loader-extension.js +61 -129
- package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
- package/dist/src/extensions/core/websearch-enhanced-extension.js +705 -0
- package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -0
- package/dist/src/extensions/core/websearch-v2-extension.js +303 -0
- package/dist/src/extensions/core/websearch-v2-extension.js.map +1 -0
- package/dist/src/gateway/discord-bot.js +185 -0
- package/dist/src/gateway/discord-bot.js.map +1 -0
- package/dist/src/gateway/index.js +10 -350
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/server.js +325 -0
- package/dist/src/gateway/server.js.map +1 -0
- package/dist/src/gateway/websocket-server.js +142 -0
- package/dist/src/gateway/websocket-server.js.map +1 -0
- package/dist/src/heartbeat/checkin.js +185 -0
- package/dist/src/heartbeat/checkin.js.map +1 -0
- package/dist/src/heartbeat/index.js +5 -0
- package/dist/src/heartbeat/index.js.map +1 -0
- package/dist/src/heartbeat/notifications.js +216 -0
- package/dist/src/heartbeat/notifications.js.map +1 -0
- package/dist/src/heartbeat/scheduler.js +284 -0
- package/dist/src/heartbeat/scheduler.js.map +1 -0
- package/dist/src/index.js +21 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/mode/auto-detector.js +211 -0
- package/dist/src/mode/auto-detector.js.map +1 -0
- package/dist/src/mode/index.js +3 -0
- package/dist/src/mode/index.js.map +1 -0
- package/dist/src/mode/natural-switcher.js +123 -0
- package/dist/src/mode/natural-switcher.js.map +1 -0
- package/dist/src/skills/builtin/api-worker.js +88 -0
- package/dist/src/skills/builtin/api-worker.js.map +1 -0
- package/dist/src/skills/builtin/nextjs-worker.js +55 -0
- package/dist/src/skills/builtin/nextjs-worker.js.map +1 -0
- package/dist/src/skills/builtin/real-workers.js +166 -0
- package/dist/src/skills/builtin/real-workers.js.map +1 -0
- package/dist/src/skills/builtin/sql-worker.js +61 -0
- package/dist/src/skills/builtin/sql-worker.js.map +1 -0
- package/dist/src/skills/builtin/test-worker.js +79 -0
- package/dist/src/skills/builtin/test-worker.js.map +1 -0
- package/dist/src/skills/builtin/web-research.js +77 -0
- package/dist/src/skills/builtin/web-research.js.map +1 -0
- package/dist/src/skills/framework.js +250 -0
- package/dist/src/skills/framework.js.map +1 -0
- package/dist/src/skills/index.js +10 -10
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/streaming/block-streamer.js +172 -0
- package/dist/src/streaming/block-streamer.js.map +1 -0
- package/dist/src/streaming/index.js +2 -0
- package/dist/src/streaming/index.js.map +1 -0
- package/dist/src/workspace/index.js +2 -0
- package/dist/src/workspace/index.js.map +1 -0
- package/dist/src/workspace/manager.js +181 -0
- package/dist/src/workspace/manager.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,184 +1,145 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Gateway CLI Command - v0.2.0
|
|
3
|
+
*
|
|
4
|
+
* Start/stop/manage the WebSocket gateway server.
|
|
5
|
+
*/
|
|
2
6
|
import { Command } from "commander";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
7
|
+
import { getRealGateway, resetRealGateway } from "../../gateway/index.js";
|
|
8
|
+
import { getDiscordBot, resetDiscordBot } from "../../gateway/discord-bot.js";
|
|
9
|
+
export function createGatewayCommand() {
|
|
10
|
+
const cmd = new Command("gateway")
|
|
11
|
+
.description("Manage the WebSocket gateway server");
|
|
12
|
+
// Start gateway
|
|
13
|
+
cmd
|
|
14
|
+
.command("start")
|
|
15
|
+
.description("Start the WebSocket gateway server")
|
|
16
|
+
.option("-p, --port <port>", "Port to run on", "7777")
|
|
17
|
+
.option("-h, --host <host>", "Host to bind to", "localhost")
|
|
18
|
+
.option("--discord", "Enable Discord bot integration")
|
|
19
|
+
.option("--discord-token <token>", "Discord bot token")
|
|
20
|
+
.action(async (options) => {
|
|
21
|
+
const port = parseInt(options.port);
|
|
22
|
+
const host = options.host;
|
|
23
|
+
console.log("🌐 Starting 0xKobold Gateway Server...\n");
|
|
24
|
+
try {
|
|
25
|
+
// Start main gateway
|
|
26
|
+
const gateway = getRealGateway();
|
|
27
|
+
gateway.config = {
|
|
28
|
+
port,
|
|
29
|
+
host,
|
|
30
|
+
cors: true,
|
|
31
|
+
heartbeatInterval: 30000
|
|
32
|
+
};
|
|
33
|
+
await gateway.start();
|
|
34
|
+
const address = `http://${host}:${port}`;
|
|
35
|
+
console.log(`✅ Gateway server running at: ${address}`);
|
|
36
|
+
console.log(` WebSocket endpoint: ws://${host}:${port}/ws`);
|
|
37
|
+
console.log(` Health check: ${address}/health`);
|
|
38
|
+
console.log(` Status: ${address}/status\n`);
|
|
39
|
+
// Start Discord bot if enabled
|
|
40
|
+
if (options.discord || process.env.DISCORD_TOKEN) {
|
|
41
|
+
const token = options.discordToken || process.env.DISCORD_TOKEN;
|
|
42
|
+
if (token) {
|
|
43
|
+
const bot = getDiscordBot({ token });
|
|
44
|
+
await bot.start();
|
|
45
|
+
console.log("🤖 Discord bot integration enabled\n");
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
console.warn("⚠️ Discord bot integration requested but no token provided");
|
|
49
|
+
console.log(" Set DISCORD_TOKEN env var or use --discord-token\n");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
console.log("Press Ctrl+C to stop\n");
|
|
53
|
+
// Keep running
|
|
54
|
+
process.on("SIGINT", async () => {
|
|
55
|
+
console.log("\n🛑 Shutting down...");
|
|
56
|
+
resetDiscordBot();
|
|
57
|
+
resetRealGateway();
|
|
58
|
+
console.log("✅ Gateway stopped");
|
|
59
|
+
process.exit(0);
|
|
60
|
+
});
|
|
45
61
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const mainScript = join(process.cwd(), "src/index.ts");
|
|
49
|
-
if (!existsSync(mainScript)) {
|
|
50
|
-
console.error("❌ Main script not found: src/index.ts");
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error("❌ Failed to start gateway:", error);
|
|
51
64
|
process.exit(1);
|
|
52
65
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
});
|
|
67
|
+
// Stop gateway
|
|
68
|
+
cmd
|
|
69
|
+
.command("stop")
|
|
70
|
+
.description("Stop the WebSocket gateway server")
|
|
71
|
+
.action(async () => {
|
|
72
|
+
console.log("🛑 Stopping gateway server...");
|
|
73
|
+
resetDiscordBot();
|
|
74
|
+
resetRealGateway();
|
|
75
|
+
console.log("✅ Gateway server stopped");
|
|
76
|
+
});
|
|
77
|
+
// Status
|
|
78
|
+
cmd
|
|
79
|
+
.command("status")
|
|
80
|
+
.description("Check gateway server status")
|
|
81
|
+
.action(() => {
|
|
82
|
+
const gateway = getRealGateway();
|
|
83
|
+
if (gateway.isRunning()) {
|
|
84
|
+
console.log("🟢 Gateway Status: Running");
|
|
85
|
+
console.log(` Connections: ${gateway.getConnectionCount()}`);
|
|
86
|
+
const discordBot = getDiscordBot();
|
|
87
|
+
const discordStatus = discordBot?.getStatus();
|
|
88
|
+
if (discordStatus?.connected) {
|
|
89
|
+
console.log(` Discord Bot: Connected (${discordStatus.user})`);
|
|
71
90
|
}
|
|
72
91
|
else {
|
|
73
|
-
console.
|
|
74
|
-
process.exit(1);
|
|
92
|
+
console.log(" Discord Bot: Not running");
|
|
75
93
|
}
|
|
76
94
|
}
|
|
77
95
|
else {
|
|
78
|
-
|
|
79
|
-
stdio: "inherit",
|
|
80
|
-
env,
|
|
81
|
-
});
|
|
82
|
-
if (child.pid) {
|
|
83
|
-
await writeFile(GATEWAY_PID_FILE, child.pid.toString());
|
|
84
|
-
}
|
|
85
|
-
child.on("exit", async (code) => {
|
|
86
|
-
if (existsSync(GATEWAY_PID_FILE)) {
|
|
87
|
-
await unlink(GATEWAY_PID_FILE);
|
|
88
|
-
}
|
|
89
|
-
process.exit(code || 0);
|
|
90
|
-
});
|
|
96
|
+
console.log("🔴 Gateway Status: Stopped");
|
|
91
97
|
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!pid) {
|
|
104
|
-
console.log("⚠️ Gateway is not running");
|
|
98
|
+
});
|
|
99
|
+
// List connections
|
|
100
|
+
cmd
|
|
101
|
+
.command("connections")
|
|
102
|
+
.alias("ls")
|
|
103
|
+
.description("List active connections")
|
|
104
|
+
.action(() => {
|
|
105
|
+
const gateway = getRealGateway();
|
|
106
|
+
const connections = gateway.getConnections();
|
|
107
|
+
if (connections.length === 0) {
|
|
108
|
+
console.log("No active connections");
|
|
105
109
|
return;
|
|
106
110
|
}
|
|
107
|
-
console.log(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (await isGatewayRunning()) {
|
|
116
|
-
process.kill(pid, "SIGKILL");
|
|
117
|
-
console.log("✓ Gateway force stopped");
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
console.log("✓ Gateway stopped gracefully");
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
console.log("⚠️ Gateway process not found, cleaning up...");
|
|
111
|
+
console.log(`\nActive connections (${connections.length}):\n`);
|
|
112
|
+
for (const conn of connections) {
|
|
113
|
+
const age = Math.round((Date.now() - conn.connectedAt.getTime()) / 1000);
|
|
114
|
+
console.log(` ${conn.type.toUpperCase()} | ${conn.id.slice(0, 20)}... | ${age}s ago`);
|
|
115
|
+
if (conn.channel)
|
|
116
|
+
console.log(` Channel: ${conn.channel}`);
|
|
117
|
+
if (conn.user)
|
|
118
|
+
console.log(` User: ${conn.user}`);
|
|
125
119
|
}
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
console.log();
|
|
121
|
+
});
|
|
122
|
+
// Send test message
|
|
123
|
+
cmd
|
|
124
|
+
.command("send")
|
|
125
|
+
.description("Send a test message via gateway")
|
|
126
|
+
.option("-c, --channel <channel>", "Channel to send to")
|
|
127
|
+
.option("-m, --message <message>", "Message content", "Hello from 0xKobold!")
|
|
128
|
+
.action(async (options) => {
|
|
129
|
+
const gateway = getRealGateway();
|
|
130
|
+
if (!gateway.isRunning()) {
|
|
131
|
+
console.error("❌ Gateway is not running. Start it with '0xkobold gateway start'");
|
|
132
|
+
return;
|
|
128
133
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
const statusCommand = new Command("status")
|
|
136
|
-
.description("Check gateway status")
|
|
137
|
-
.action(async () => {
|
|
138
|
-
try {
|
|
139
|
-
const running = await isGatewayRunning();
|
|
140
|
-
const pid = await getGatewayPid();
|
|
141
|
-
if (running && pid) {
|
|
142
|
-
console.log(`✓ Gateway is running (PID: ${pid})`);
|
|
143
|
-
// Also check HTTP endpoint
|
|
144
|
-
try {
|
|
145
|
-
const response = await fetch("http://127.0.0.1:18789/health");
|
|
146
|
-
if (response.ok) {
|
|
147
|
-
const data = await response.json();
|
|
148
|
-
console.log(` WebSocket: ws://127.0.0.1:18789`);
|
|
149
|
-
console.log(` Agents: ${data.agents || 0}`);
|
|
150
|
-
console.log(` Clients: ${data.clients || 0}`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
catch {
|
|
154
|
-
console.log(" (HTTP health check failed)");
|
|
155
|
-
}
|
|
134
|
+
if (options.channel) {
|
|
135
|
+
const sent = gateway.broadcastToChannel(options.channel, options.message);
|
|
136
|
+
console.log(`✅ Sent to ${sent} connections in channel '${options.channel}'`);
|
|
156
137
|
}
|
|
157
138
|
else {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
console.log(" (stale PID file detected, cleaning up...)");
|
|
161
|
-
await unlink(GATEWAY_PID_FILE);
|
|
162
|
-
}
|
|
139
|
+
gateway.broadcast(options.message);
|
|
140
|
+
console.log(`✅ Broadcast to ${gateway.getConnectionCount()} connections`);
|
|
163
141
|
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
process.exit(1);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
const restartCommand = new Command("restart")
|
|
171
|
-
.description("Restart the gateway")
|
|
172
|
-
.action(async () => {
|
|
173
|
-
console.log("🔄 Restarting gateway...");
|
|
174
|
-
await stopCommand.parseAsync([]);
|
|
175
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
176
|
-
await startCommand.parseAsync([]);
|
|
177
|
-
});
|
|
178
|
-
export const gatewayCommand = new Command("gateway")
|
|
179
|
-
.description("Manage the 0xKobold WebSocket gateway")
|
|
180
|
-
.addCommand(startCommand)
|
|
181
|
-
.addCommand(stopCommand)
|
|
182
|
-
.addCommand(statusCommand)
|
|
183
|
-
.addCommand(restartCommand);
|
|
142
|
+
});
|
|
143
|
+
return cmd;
|
|
144
|
+
}
|
|
184
145
|
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../../src/cli/commands/gateway.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=program-fixed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-fixed.js","sourceRoot":"","sources":["../../../src/cli/program-fixed.ts"],"names":[],"mappings":""}
|
package/dist/src/cli/program.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* 0xKobold CLI Program
|
|
3
3
|
*
|
|
4
4
|
* Main CLI program using Commander.js
|
|
5
|
-
* Based on OpenClaw CLI patterns
|
|
6
5
|
*/
|
|
7
6
|
import { Command } from "commander";
|
|
8
7
|
import { version } from "../../package.json" assert { type: "json" };
|
|
@@ -18,25 +17,26 @@ import { setupCommand } from "./commands/setup.js";
|
|
|
18
17
|
import { registerDiscordCli } from "./extensions/discord.js";
|
|
19
18
|
import { registerHeartbeatCli } from "./extensions/heartbeat.js";
|
|
20
19
|
import { registerEnvCli } from "./extensions/env.js";
|
|
20
|
+
// v0.2.0: Gateway command
|
|
21
|
+
import { createGatewayCommand } from "./commands/gateway.js";
|
|
22
|
+
// v0.2.0: Embedded mode
|
|
23
|
+
import { createEmbeddedCommand } from "./commands/embedded.js";
|
|
21
24
|
export function createCli() {
|
|
22
25
|
const program = new Command("0xkobold")
|
|
23
26
|
.version(version || "1.0.0")
|
|
24
27
|
.description("0xKobold - Multi-Agent Automation Platform")
|
|
25
|
-
.configureOutput({
|
|
26
|
-
writeOut: (str) => process.stdout.write(str),
|
|
27
|
-
writeErr: (str) => process.stderr.write(str),
|
|
28
|
-
})
|
|
29
28
|
.showHelpAfterError("\nUse --help for more information.");
|
|
30
29
|
// Core service commands
|
|
31
30
|
program.addCommand(createStartCommand());
|
|
32
31
|
program.addCommand(createStopCommand());
|
|
33
32
|
program.addCommand(createStatusCommand());
|
|
34
33
|
program.addCommand(createLogsCommand());
|
|
35
|
-
// System management
|
|
36
|
-
|
|
37
|
-
program.addCommand(systemCmd);
|
|
38
|
-
// Setup wizard
|
|
34
|
+
// System management
|
|
35
|
+
program.addCommand(createSystemCommand());
|
|
39
36
|
program.addCommand(setupCommand);
|
|
37
|
+
// v0.2.0: Gateway server
|
|
38
|
+
program.addCommand(createGatewayCommand());
|
|
39
|
+
program.addCommand(createEmbeddedCommand());
|
|
40
40
|
// Extension CLIs
|
|
41
41
|
registerDiscordCli(program);
|
|
42
42
|
registerHeartbeatCli(program);
|
|
@@ -45,26 +45,7 @@ export function createCli() {
|
|
|
45
45
|
program
|
|
46
46
|
.command("tui", { isDefault: true })
|
|
47
47
|
.description("Start interactive TUI (default)")
|
|
48
|
-
.
|
|
49
|
-
.option("--local", "Run in local project mode (uses CWD settings)")
|
|
50
|
-
.action(async (opts) => {
|
|
51
|
-
// Set local mode if flag is present
|
|
52
|
-
if (opts.local) {
|
|
53
|
-
process.env.KOBOLD_LOCAL_MODE = 'true';
|
|
54
|
-
process.argv.push('--local');
|
|
55
|
-
}
|
|
56
|
-
// Launch TUI
|
|
57
|
-
const { main } = await import("../index.js");
|
|
58
|
-
await main();
|
|
59
|
-
});
|
|
60
|
-
// Local mode command (explicit)
|
|
61
|
-
program
|
|
62
|
-
.command("local")
|
|
63
|
-
.description("Start TUI in local project mode (uses CWD for settings)")
|
|
64
|
-
.option("--mode <mode>", "Start in specific mode (plan|build)")
|
|
65
|
-
.action(async (opts) => {
|
|
66
|
-
process.env.KOBOLD_LOCAL_MODE = 'true';
|
|
67
|
-
process.argv.push('--local');
|
|
48
|
+
.action(async () => {
|
|
68
49
|
const { main } = await import("../index.js");
|
|
69
50
|
await main();
|
|
70
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;AAErE,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,0BAA0B;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAwB;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SACpC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;SAC3B,WAAW,CAAC,4CAA4C,CAAC;SACzD,kBAAkB,CAAC,oCAAoC,CAAC,CAAC;IAE5D,wBAAwB;IACxB,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEjC,yBAAyB;IACzB,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE5C,iBAAiB;IACjB,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,oBAAoB;IACpB,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnC,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|