camelagi 0.5.16 → 0.5.19
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/README.md +9 -20
- package/dist/cli/cmd-agents.js +197 -12
- package/dist/cli/cmd-agents.js.map +1 -1
- package/dist/cli/cmd-connect.js +89 -0
- package/dist/cli/cmd-connect.js.map +1 -0
- package/dist/cli/cmd-reset.js +1 -1
- package/dist/cli/cmd-reset.js.map +1 -1
- package/dist/cli/cmd-serve.js +20 -4
- package/dist/cli/cmd-serve.js.map +1 -1
- package/dist/cli/cmd-uninstall.js +3 -3
- package/dist/cli/cmd-uninstall.js.map +1 -1
- package/dist/cli/cmd-update.js +14 -5
- package/dist/cli/cmd-update.js.map +1 -1
- package/dist/cli.js +61 -28
- package/dist/cli.js.map +1 -1
- package/dist/core/config.js +8 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/update-check.js +4 -5
- package/dist/core/update-check.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/doctor.js +2 -2
- package/dist/doctor.js.map +1 -1
- package/dist/extensions/cron.js +6 -2
- package/dist/extensions/cron.js.map +1 -1
- package/dist/extensions/heartbeat.js +74 -0
- package/dist/extensions/heartbeat.js.map +1 -0
- package/dist/gateway/csrf.js +10 -1
- package/dist/gateway/csrf.js.map +1 -1
- package/dist/gateway/routes.js +7 -1
- package/dist/gateway/routes.js.map +1 -1
- package/dist/gateway/state.js.map +1 -1
- package/dist/gateway-entry.js +1 -1
- package/dist/infra/tailscale.js +174 -0
- package/dist/infra/tailscale.js.map +1 -0
- package/dist/runtime/orchestrate.js +5 -1
- package/dist/runtime/orchestrate.js.map +1 -1
- package/dist/serve.js +49 -1
- package/dist/serve.js.map +1 -1
- package/dist/system-prompt.js +25 -21
- package/dist/system-prompt.js.map +1 -1
- package/dist/telegram/wizards.js +20 -19
- package/dist/telegram/wizards.js.map +1 -1
- package/dist/workspace.js +142 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -42,26 +42,25 @@ Powered by <a href="https://platform.claude.com/docs/en/agent-sdk/overview">Clau
|
|
|
42
42
|
- [Configuration](#configuration)
|
|
43
43
|
- [Architecture](#architecture)
|
|
44
44
|
- [Documentation](#documentation)
|
|
45
|
-
- [Roadmap](#roadmap)
|
|
46
45
|
- [License](#license)
|
|
47
46
|
|
|
48
47
|
<br>
|
|
49
48
|
|
|
50
49
|
## Quick Start
|
|
51
50
|
|
|
52
|
-
**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
> **Requirements:** Node.js 23+
|
|
52
|
+
|
|
53
|
+
| Install | Setup & Run | Update |
|
|
54
|
+
|:--------|:------------|:-------|
|
|
55
|
+
| `npm i -g camelagi` | `camel setup` | `camel update` |
|
|
56
56
|
|
|
57
|
-
**Setup & Run**
|
|
58
57
|
```bash
|
|
59
|
-
camel
|
|
60
|
-
camel serve
|
|
61
|
-
camel chat
|
|
58
|
+
camel setup # First-time setup: API key, Telegram bot, provider
|
|
59
|
+
camel serve # Start the gateway server
|
|
60
|
+
camel chat # Terminal UI
|
|
62
61
|
```
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
After setup, use `/newagent` in Telegram to create your first AI agent.
|
|
65
64
|
|
|
66
65
|
<br>
|
|
67
66
|
|
|
@@ -346,16 +345,6 @@ Feature docs cover: [agent system](featuresDocs/agent-system.md), [memory](featu
|
|
|
346
345
|
|
|
347
346
|
<br>
|
|
348
347
|
|
|
349
|
-
## Roadmap
|
|
350
|
-
|
|
351
|
-
| | Feature | Description |
|
|
352
|
-
|---|---|---|
|
|
353
|
-
| 📡 | **More Channels** | WhatsApp, Slack — connect your AI agents to every platform your team already uses |
|
|
354
|
-
| 🧩 | **ClawHub Skills** | Browse and install community skills from [clawhub.io](https://clawhub.io) — one command to add new capabilities |
|
|
355
|
-
| 🏢 | **Business Ready** | Deploy for your business — finance, operations, customer support. AI agents that understand your workflows |
|
|
356
|
-
|
|
357
|
-
<br>
|
|
358
|
-
|
|
359
348
|
## License
|
|
360
349
|
|
|
361
350
|
MIT
|
package/dist/cli/cmd-agents.js
CHANGED
|
@@ -3,13 +3,13 @@ import { loadConfig, saveConfig, ensureDirs } from "../core/config.js";
|
|
|
3
3
|
import { hasFlag } from "./parse.js";
|
|
4
4
|
register({
|
|
5
5
|
name: "agents",
|
|
6
|
-
description: "
|
|
6
|
+
description: "Manage agents interactively",
|
|
7
7
|
usage: `Usage: camelagi agents [subcommand]
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Manage configured agents. Run without arguments for interactive mode.
|
|
10
10
|
|
|
11
11
|
Subcommands:
|
|
12
|
-
(none)
|
|
12
|
+
(none) Interactive agent manager (default)
|
|
13
13
|
rm <id> Remove an agent (prompts for confirmation)
|
|
14
14
|
|
|
15
15
|
Options:
|
|
@@ -17,12 +17,12 @@ Options:
|
|
|
17
17
|
|
|
18
18
|
Examples:
|
|
19
19
|
camelagi agents
|
|
20
|
-
camelagi agents rm mybot
|
|
21
|
-
camelagi agents rm mybot --yes`,
|
|
20
|
+
camelagi agents rm mybot`,
|
|
22
21
|
run: async (args) => {
|
|
23
22
|
const p = await import("@clack/prompts");
|
|
24
23
|
ensureDirs();
|
|
25
24
|
const config = loadConfig();
|
|
25
|
+
// Subcommand: rm
|
|
26
26
|
if (args[0] === "rm" && args[1]) {
|
|
27
27
|
const agents = { ...(config.agents ?? {}) };
|
|
28
28
|
if (!agents[args[1]]) {
|
|
@@ -45,18 +45,203 @@ Examples:
|
|
|
45
45
|
p.log.error(`Unknown subcommand: ${args[0]}. Use: camelagi agents [rm <id>]`);
|
|
46
46
|
process.exit(1);
|
|
47
47
|
}
|
|
48
|
+
// Interactive mode
|
|
48
49
|
const agentEntries = Object.entries(config.agents ?? {});
|
|
49
50
|
if (agentEntries.length === 0) {
|
|
50
|
-
p.log.info("No agents configured.
|
|
51
|
+
p.log.info("No agents configured.");
|
|
52
|
+
const add = await p.confirm({ message: "Create a new agent?" });
|
|
53
|
+
if (p.isCancel(add) || !add)
|
|
54
|
+
return;
|
|
55
|
+
await createAgent(p, config);
|
|
56
|
+
return;
|
|
51
57
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
58
|
+
const options = [
|
|
59
|
+
...agentEntries.map(([id, a]) => {
|
|
60
|
+
const tags = [];
|
|
61
|
+
if (a.admin)
|
|
62
|
+
tags.push("admin");
|
|
55
63
|
if (a.telegram?.botToken)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
tags.push("telegram");
|
|
65
|
+
if (a.discord?.botToken)
|
|
66
|
+
tags.push("discord");
|
|
67
|
+
const model = a.model ?? config.model;
|
|
68
|
+
const hint = [model, ...tags].join(", ");
|
|
69
|
+
return { value: id, label: `${a.name}`, hint };
|
|
70
|
+
}),
|
|
71
|
+
{ value: "__new__", label: "Create new agent", hint: "" },
|
|
72
|
+
];
|
|
73
|
+
const selected = await p.select({
|
|
74
|
+
message: "Select an agent",
|
|
75
|
+
options,
|
|
76
|
+
});
|
|
77
|
+
if (p.isCancel(selected))
|
|
78
|
+
return;
|
|
79
|
+
if (selected === "__new__") {
|
|
80
|
+
await createAgent(p, config);
|
|
81
|
+
return;
|
|
59
82
|
}
|
|
83
|
+
await configureAgent(p, config, selected);
|
|
60
84
|
},
|
|
61
85
|
});
|
|
86
|
+
async function configureAgent(p, config, agentId) {
|
|
87
|
+
const agent = config.agents[agentId];
|
|
88
|
+
if (!agent)
|
|
89
|
+
return;
|
|
90
|
+
const action = await p.select({
|
|
91
|
+
message: `${agent.name} (${agentId})`,
|
|
92
|
+
options: [
|
|
93
|
+
{ value: "model", label: "Model", hint: agent.model ?? config.model },
|
|
94
|
+
{ value: "name", label: "Name", hint: agent.name },
|
|
95
|
+
{ value: "thinking", label: "Thinking", hint: String(agent.thinking ?? config.thinking) },
|
|
96
|
+
{ value: "effort", label: "Effort", hint: String(agent.effort ?? config.effort) },
|
|
97
|
+
{ value: "telegram", label: "Telegram", hint: agent.telegram?.botToken ? "configured" : "not set" },
|
|
98
|
+
{ value: "remove", label: "Remove agent", hint: "" },
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
if (p.isCancel(action))
|
|
102
|
+
return;
|
|
103
|
+
const agents = { ...config.agents };
|
|
104
|
+
switch (action) {
|
|
105
|
+
case "model": {
|
|
106
|
+
const model = await p.text({ message: "Model:", initialValue: agent.model ?? config.model });
|
|
107
|
+
if (p.isCancel(model))
|
|
108
|
+
return;
|
|
109
|
+
agents[agentId] = { ...agent, model: model };
|
|
110
|
+
saveConfig({ agents });
|
|
111
|
+
p.log.success(`Model set to: ${model}`);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case "name": {
|
|
115
|
+
const name = await p.text({ message: "Name:", initialValue: agent.name });
|
|
116
|
+
if (p.isCancel(name))
|
|
117
|
+
return;
|
|
118
|
+
agents[agentId] = { ...agent, name: name };
|
|
119
|
+
saveConfig({ agents });
|
|
120
|
+
p.log.success(`Name set to: ${name}`);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case "thinking": {
|
|
124
|
+
const thinking = await p.select({
|
|
125
|
+
message: "Thinking level:",
|
|
126
|
+
options: [
|
|
127
|
+
{ value: "off", label: "Off" },
|
|
128
|
+
{ value: "low", label: "Low" },
|
|
129
|
+
{ value: "medium", label: "Medium" },
|
|
130
|
+
{ value: "high", label: "High" },
|
|
131
|
+
],
|
|
132
|
+
});
|
|
133
|
+
if (p.isCancel(thinking))
|
|
134
|
+
return;
|
|
135
|
+
agents[agentId] = { ...agent, thinking: thinking };
|
|
136
|
+
saveConfig({ agents });
|
|
137
|
+
p.log.success(`Thinking set to: ${thinking}`);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case "effort": {
|
|
141
|
+
const effort = await p.select({
|
|
142
|
+
message: "Effort level:",
|
|
143
|
+
options: [
|
|
144
|
+
{ value: "low", label: "Low" },
|
|
145
|
+
{ value: "medium", label: "Medium" },
|
|
146
|
+
{ value: "high", label: "High" },
|
|
147
|
+
{ value: "max", label: "Max" },
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
if (p.isCancel(effort))
|
|
151
|
+
return;
|
|
152
|
+
agents[agentId] = { ...agent, effort: effort };
|
|
153
|
+
saveConfig({ agents });
|
|
154
|
+
p.log.success(`Effort set to: ${effort}`);
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case "telegram": {
|
|
158
|
+
const token = await p.text({
|
|
159
|
+
message: "Telegram bot token (from @BotFather):",
|
|
160
|
+
initialValue: agent.telegram?.botToken ?? "",
|
|
161
|
+
});
|
|
162
|
+
if (p.isCancel(token))
|
|
163
|
+
return;
|
|
164
|
+
if (!token) {
|
|
165
|
+
const { telegram: _, ...rest } = agent;
|
|
166
|
+
agents[agentId] = rest;
|
|
167
|
+
saveConfig({ agents });
|
|
168
|
+
p.log.success("Telegram removed");
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
// Verify the token
|
|
172
|
+
const sv = p.spinner();
|
|
173
|
+
sv.start("Verifying token...");
|
|
174
|
+
try {
|
|
175
|
+
const res = await fetch(`https://api.telegram.org/bot${token}/getMe`, { signal: AbortSignal.timeout(10000) });
|
|
176
|
+
const data = await res.json();
|
|
177
|
+
if (!data.ok) {
|
|
178
|
+
sv.stop("Invalid token");
|
|
179
|
+
p.log.error("Token rejected by Telegram. Check it in @BotFather.");
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const botName = data.result?.username ?? data.result?.first_name ?? "bot";
|
|
183
|
+
sv.stop(`Verified: @${botName}`);
|
|
184
|
+
agents[agentId] = {
|
|
185
|
+
...agent,
|
|
186
|
+
telegram: {
|
|
187
|
+
botToken: token,
|
|
188
|
+
allowedUsers: agent.telegram?.allowedUsers ?? [],
|
|
189
|
+
briefMode: agent.telegram?.briefMode ?? true,
|
|
190
|
+
groups: agent.telegram?.groups ?? { mentionOnly: true },
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
saveConfig({ agents });
|
|
194
|
+
p.log.success(`Telegram configured (@${botName})`);
|
|
195
|
+
p.log.info("Restart the server to activate: camel serve");
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
sv.stop("Failed");
|
|
199
|
+
p.log.error(`Could not verify token: ${err instanceof Error ? err.message : err}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case "remove": {
|
|
205
|
+
const ok = await p.confirm({ message: `Remove "${agent.name}"?` });
|
|
206
|
+
if (p.isCancel(ok) || !ok)
|
|
207
|
+
return;
|
|
208
|
+
delete agents[agentId];
|
|
209
|
+
saveConfig({ agents });
|
|
210
|
+
p.log.success(`Removed: ${agentId}`);
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async function createAgent(p, config) {
|
|
216
|
+
const name = await p.text({ message: "Agent name:" });
|
|
217
|
+
if (p.isCancel(name) || !name)
|
|
218
|
+
return;
|
|
219
|
+
const id = name.toLowerCase().replace(/[^a-z0-9]+/g, "");
|
|
220
|
+
if (config.agents[id]) {
|
|
221
|
+
p.log.error(`Agent "${id}" already exists.`);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
const model = await p.text({ message: "Model:", initialValue: config.model });
|
|
225
|
+
if (p.isCancel(model))
|
|
226
|
+
return;
|
|
227
|
+
const wantTelegram = await p.confirm({ message: "Add Telegram bot?" });
|
|
228
|
+
let telegramConfig;
|
|
229
|
+
if (!p.isCancel(wantTelegram) && wantTelegram) {
|
|
230
|
+
const token = await p.text({ message: "Bot token (from @BotFather):" });
|
|
231
|
+
if (p.isCancel(token) || !token)
|
|
232
|
+
return;
|
|
233
|
+
telegramConfig = { botToken: token, allowedUsers: [], briefMode: true, groups: { mentionOnly: true } };
|
|
234
|
+
}
|
|
235
|
+
const { seedAgentWorkspace } = await import("../workspace.js");
|
|
236
|
+
seedAgentWorkspace(id, name);
|
|
237
|
+
const agents = { ...config.agents };
|
|
238
|
+
agents[id] = {
|
|
239
|
+
name: name,
|
|
240
|
+
...(model !== config.model ? { model: model } : {}),
|
|
241
|
+
...(telegramConfig ? { telegram: telegramConfig } : {}),
|
|
242
|
+
};
|
|
243
|
+
saveConfig({ agents });
|
|
244
|
+
p.log.success(`Created agent: ${name} (${id})`);
|
|
245
|
+
p.log.info("Restart the server to activate.");
|
|
246
|
+
}
|
|
62
247
|
//# sourceMappingURL=cmd-agents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-agents.js","sourceRoot":"","sources":["../../src/cli/cmd-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"cmd-agents.js","sourceRoot":"","sources":["../../src/cli/cmd-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// camel connect — connect TUI to a remote CamelAGI gateway
|
|
2
|
+
import { register } from "./registry.js";
|
|
3
|
+
import { getFlag } from "./parse.js";
|
|
4
|
+
register({
|
|
5
|
+
name: "connect",
|
|
6
|
+
description: "Connect to a remote gateway",
|
|
7
|
+
usage: `Usage: camelagi connect <url> [options]
|
|
8
|
+
|
|
9
|
+
Connect the TUI to a remote CamelAGI gateway.
|
|
10
|
+
|
|
11
|
+
Arguments:
|
|
12
|
+
<url> Gateway URL (e.g. ws://192.168.1.10:18305, wss://my-mac.ts.net)
|
|
13
|
+
|
|
14
|
+
Options:
|
|
15
|
+
--token <token> Auth token (or set CAMELAGI_TOKEN env var)
|
|
16
|
+
--session <id> Resume a specific session
|
|
17
|
+
|
|
18
|
+
Remote access options:
|
|
19
|
+
1. Tailscale Serve — private tailnet HTTPS (recommended)
|
|
20
|
+
camelagi connect wss://my-mac.tailnet.ts.net
|
|
21
|
+
|
|
22
|
+
2. Direct with token — LAN only
|
|
23
|
+
camelagi connect ws://192.168.1.10:18305 --token <token>
|
|
24
|
+
|
|
25
|
+
3. SSH tunnel — forward port, then connect as localhost
|
|
26
|
+
ssh -N -L 18305:127.0.0.1:18305 user@server
|
|
27
|
+
camelagi chat
|
|
28
|
+
|
|
29
|
+
Examples:
|
|
30
|
+
camelagi connect ws://192.168.1.10:18305 --token my-secret
|
|
31
|
+
camelagi connect wss://my-mac.tailnet.ts.net
|
|
32
|
+
camelagi connect 192.168.1.10:18305 --token my-secret`,
|
|
33
|
+
run: async (args) => {
|
|
34
|
+
const rawUrl = args.find((a) => !a.startsWith("--"));
|
|
35
|
+
if (!rawUrl) {
|
|
36
|
+
console.error("Error: URL is required.\n");
|
|
37
|
+
console.error("Usage: camelagi connect <url> [--token <token>] [--session <id>]");
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Normalize URL to ws:// or wss://
|
|
41
|
+
let wsUrl;
|
|
42
|
+
if (rawUrl.startsWith("ws://") || rawUrl.startsWith("wss://")) {
|
|
43
|
+
wsUrl = rawUrl;
|
|
44
|
+
}
|
|
45
|
+
else if (rawUrl.startsWith("http://")) {
|
|
46
|
+
wsUrl = rawUrl.replace("http://", "ws://");
|
|
47
|
+
}
|
|
48
|
+
else if (rawUrl.startsWith("https://")) {
|
|
49
|
+
wsUrl = rawUrl.replace("https://", "wss://");
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
wsUrl = `ws://${rawUrl}`;
|
|
53
|
+
}
|
|
54
|
+
const token = getFlag(args, "--token") ?? process.env.CAMELAGI_TOKEN;
|
|
55
|
+
const sessionId = getFlag(args, "--session");
|
|
56
|
+
// Build HTTP URL for health check
|
|
57
|
+
const httpUrl = wsUrl
|
|
58
|
+
.replace(/^ws:\/\//, "http://")
|
|
59
|
+
.replace(/^wss:\/\//, "https://");
|
|
60
|
+
// Health check — verify gateway is reachable
|
|
61
|
+
try {
|
|
62
|
+
const headers = {};
|
|
63
|
+
if (token)
|
|
64
|
+
headers["Authorization"] = `Bearer ${token}`;
|
|
65
|
+
const res = await fetch(`${httpUrl}/health`, {
|
|
66
|
+
headers,
|
|
67
|
+
signal: AbortSignal.timeout(5000),
|
|
68
|
+
});
|
|
69
|
+
if (!res.ok) {
|
|
70
|
+
console.error(`Error: Gateway returned ${res.status}. Check URL and token.`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
console.log(` Connected to ${httpUrl}`);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error(`Error: Cannot reach gateway at ${httpUrl}/health`);
|
|
77
|
+
console.error(` ${err instanceof Error ? err.message : String(err)}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// Append token as query param (gateway supports ?token=xxx for WebSocket auth)
|
|
81
|
+
if (token) {
|
|
82
|
+
const sep = wsUrl.includes("?") ? "&" : "?";
|
|
83
|
+
wsUrl = `${wsUrl}${sep}token=${encodeURIComponent(token)}`;
|
|
84
|
+
}
|
|
85
|
+
const { runTui } = await import("../tui/tui.js");
|
|
86
|
+
await runTui({ session: sessionId, wsUrl });
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=cmd-connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-connect.js","sourceRoot":"","sources":["../../src/cli/cmd-connect.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/cmd-reset.js
CHANGED
|
@@ -31,7 +31,7 @@ Examples:
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
fs.rmSync(configDir, { recursive: true, force: true });
|
|
34
|
-
p.log.success("~/.camelagi deleted. Run \x1b[
|
|
34
|
+
p.log.success("~/.camelagi deleted. Run \x1b[36mcamel setup\x1b[0m to start fresh.");
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
//# sourceMappingURL=cmd-reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-reset.js","sourceRoot":"","sources":["../../src/cli/cmd-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,QAAQ,CAAC;IACP,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,KAAK,EAAE;;;;;;;;;2BASkB;IACzB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cmd-reset.js","sourceRoot":"","sources":["../../src/cli/cmd-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,QAAQ,CAAC;IACP,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,KAAK,EAAE;;;;;;;;;2BASkB;IACzB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAC;IACvF,CAAC;CACF,CAAC,CAAC"}
|
package/dist/cli/cmd-serve.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { register } from "./registry.js";
|
|
2
|
-
import { getFlagInt } from "./parse.js";
|
|
2
|
+
import { getFlag, getFlagInt } from "./parse.js";
|
|
3
3
|
register({
|
|
4
4
|
name: "serve",
|
|
5
5
|
description: "Start gateway server",
|
|
@@ -8,12 +8,27 @@ register({
|
|
|
8
8
|
Start the gateway server (Express + WebSocket).
|
|
9
9
|
|
|
10
10
|
Options:
|
|
11
|
-
--port <number>
|
|
11
|
+
--port <number> Port to listen on (1-65535, default: from config)
|
|
12
|
+
--host <address> Host to bind to (default: from config, typically 127.0.0.1)
|
|
13
|
+
Use 0.0.0.0 for remote access
|
|
14
|
+
--generate-token Generate a random auth token, save to config, and exit
|
|
12
15
|
|
|
13
16
|
Examples:
|
|
14
17
|
camelagi serve
|
|
15
|
-
camelagi serve --port 3000
|
|
18
|
+
camelagi serve --port 3000 --host 0.0.0.0
|
|
19
|
+
camelagi serve --generate-token`,
|
|
16
20
|
run: async (args) => {
|
|
21
|
+
// --generate-token: create and save a random token, then exit
|
|
22
|
+
if (args.includes("--generate-token")) {
|
|
23
|
+
const { randomBytes } = await import("node:crypto");
|
|
24
|
+
const { saveConfig } = await import("../core/config.js");
|
|
25
|
+
const token = randomBytes(32).toString("hex");
|
|
26
|
+
saveConfig({ serve: { token } });
|
|
27
|
+
console.log(`\n Token generated and saved to config:\n`);
|
|
28
|
+
console.log(` \x1b[36m${token}\x1b[0m\n`);
|
|
29
|
+
console.log(` Set this on your client: CAMELAGI_TOKEN=${token}\n`);
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
17
32
|
let port;
|
|
18
33
|
try {
|
|
19
34
|
port = getFlagInt(args, "--port", 1, 65535);
|
|
@@ -22,8 +37,9 @@ Examples:
|
|
|
22
37
|
console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
23
38
|
process.exit(1);
|
|
24
39
|
}
|
|
40
|
+
const host = getFlag(args, "--host");
|
|
25
41
|
const { startServer } = await import("../serve.js");
|
|
26
|
-
await startServer({ port, cron: true, boot: true });
|
|
42
|
+
await startServer({ port, host, cron: true, boot: true });
|
|
27
43
|
// startServer keeps the process alive
|
|
28
44
|
},
|
|
29
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-serve.js","sourceRoot":"","sources":["../../src/cli/cmd-serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd-serve.js","sourceRoot":"","sources":["../../src/cli/cmd-serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEjD,QAAQ,CAAC;IACP,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE;;;;;;;;;;;;;kCAayB;IAChC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,8DAA8D;QAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACpD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9C,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,sCAAsC;IACxC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -66,11 +66,11 @@ Examples:
|
|
|
66
66
|
// Unlink global CLI
|
|
67
67
|
if (!keepCli) {
|
|
68
68
|
try {
|
|
69
|
-
execSync("npm
|
|
70
|
-
p.log.success("Global CLI
|
|
69
|
+
execSync("npm uninstall -g camelagi 2>/dev/null", { stdio: "ignore" });
|
|
70
|
+
p.log.success("Global CLI removed");
|
|
71
71
|
}
|
|
72
72
|
catch {
|
|
73
|
-
p.log.warn("Could not
|
|
73
|
+
p.log.warn("Could not remove global CLI \u2014 run: npm uninstall -g camelagi");
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
p.outro("CamelAGI removed. Thanks for trying it out!");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-uninstall.js","sourceRoot":"","sources":["../../src/cli/cmd-uninstall.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cmd-uninstall.js","sourceRoot":"","sources":["../../src/cli/cmd-uninstall.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/cmd-update.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
// CLI command: camel update — update via npm
|
|
2
2
|
import { register } from "./registry.js";
|
|
3
3
|
import { VERSION } from "../core/version.js";
|
|
4
|
-
import {
|
|
4
|
+
import { exec } from "node:child_process";
|
|
5
|
+
function run(cmd) {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
exec(cmd, { encoding: "utf-8" }, (err, stdout) => {
|
|
8
|
+
if (err)
|
|
9
|
+
reject(err);
|
|
10
|
+
else
|
|
11
|
+
resolve(stdout.trim());
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
5
15
|
register({
|
|
6
16
|
name: "update",
|
|
7
17
|
description: "Update CamelAGI to the latest version",
|
|
@@ -11,10 +21,9 @@ register({
|
|
|
11
21
|
p.log.info(`Current version: ${VERSION}`);
|
|
12
22
|
const s = p.spinner();
|
|
13
23
|
s.start("Checking for updates...");
|
|
14
|
-
// Check latest version on npm
|
|
15
24
|
let latest;
|
|
16
25
|
try {
|
|
17
|
-
latest =
|
|
26
|
+
latest = await run("npm view camelagi version");
|
|
18
27
|
}
|
|
19
28
|
catch (err) {
|
|
20
29
|
s.stop("Failed");
|
|
@@ -31,8 +40,8 @@ register({
|
|
|
31
40
|
const s2 = p.spinner();
|
|
32
41
|
s2.start(`Installing v${latest}...`);
|
|
33
42
|
try {
|
|
34
|
-
|
|
35
|
-
s2.stop(
|
|
43
|
+
await run("npm i -g camelagi@latest");
|
|
44
|
+
s2.stop(`Installed v${latest}`);
|
|
36
45
|
}
|
|
37
46
|
catch (err) {
|
|
38
47
|
s2.stop("Install failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-update.js","sourceRoot":"","sources":["../../src/cli/cmd-update.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cmd-update.js","sourceRoot":"","sources":["../../src/cli/cmd-update.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAChB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC;IACP,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,uCAAuC;IACpD,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEzC,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC1C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAE1C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEnC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO;QACT,CAAC;QAED,CAAC,CAAC,IAAI,CAAC,0BAA0B,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC;QAExD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACvB,EAAE,CAAC,KAAK,CAAC,eAAe,MAAM,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACtC,EAAE,CAAC,IAAI,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAChE,CAAC;CACF,CAAC,CAAC"}
|