camelagi 0.5.39 → 0.5.45

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 (182) hide show
  1. package/README.md +159 -27
  2. package/dashboard/404.html +1 -0
  3. package/dashboard/__next.__PAGE__.txt +9 -0
  4. package/dashboard/__next._full.txt +19 -0
  5. package/dashboard/__next._head.txt +6 -0
  6. package/dashboard/__next._index.txt +5 -0
  7. package/dashboard/__next._tree.txt +3 -0
  8. package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_buildManifest.js +11 -0
  9. package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_clientMiddlewareManifest.js +1 -0
  10. package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_ssgManifest.js +1 -0
  11. package/dashboard/_next/_next/static/chunks/0.9wqq91a2h.e.js +3 -0
  12. package/dashboard/_next/_next/static/chunks/00-nlsz4ud071.js +11 -0
  13. package/dashboard/_next/_next/static/chunks/00noe7du3vxk9.js +1 -0
  14. package/dashboard/_next/_next/static/chunks/03~yq9q893hmn.js +1 -0
  15. package/dashboard/_next/_next/static/chunks/04wr2uisy8870.js +5 -0
  16. package/dashboard/_next/_next/static/chunks/05f.w0h0j~.3g.js +1 -0
  17. package/dashboard/_next/_next/static/chunks/0geaa8~wrpcj6.js +1 -0
  18. package/dashboard/_next/_next/static/chunks/0nrlwe_~wde44.js +1 -0
  19. package/dashboard/_next/_next/static/chunks/12l48lp-434~..js +31 -0
  20. package/dashboard/_next/_next/static/chunks/14qcm-bqojrb9.js +1 -0
  21. package/dashboard/_next/_next/static/chunks/15~vsexhgsteo.js +1 -0
  22. package/dashboard/_next/_next/static/chunks/turbopack-173kubfog5kol.js +1 -0
  23. package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_buildManifest.js +11 -0
  24. package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_clientMiddlewareManifest.js +1 -0
  25. package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_ssgManifest.js +1 -0
  26. package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_buildManifest.js +11 -0
  27. package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_clientMiddlewareManifest.js +1 -0
  28. package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_ssgManifest.js +1 -0
  29. package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_buildManifest.js +11 -0
  30. package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_clientMiddlewareManifest.js +1 -0
  31. package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_ssgManifest.js +1 -0
  32. package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_buildManifest.js +11 -0
  33. package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_clientMiddlewareManifest.js +1 -0
  34. package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_ssgManifest.js +1 -0
  35. package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_buildManifest.js +11 -0
  36. package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_clientMiddlewareManifest.js +1 -0
  37. package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_ssgManifest.js +1 -0
  38. package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_buildManifest.js +11 -0
  39. package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_clientMiddlewareManifest.js +1 -0
  40. package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_ssgManifest.js +1 -0
  41. package/dashboard/_next/static/chunks/0.9wqq91a2h.e.js +3 -0
  42. package/dashboard/_next/static/chunks/00-nlsz4ud071.js +11 -0
  43. package/dashboard/_next/static/chunks/00noe7du3vxk9.js +1 -0
  44. package/dashboard/_next/static/chunks/03~yq9q893hmn.js +1 -0
  45. package/dashboard/_next/static/chunks/04wr2uisy8870.js +5 -0
  46. package/dashboard/_next/static/chunks/05f.w0h0j~.3g.js +1 -0
  47. package/dashboard/_next/static/chunks/08ug0khjvhl6m.js +11 -0
  48. package/dashboard/_next/static/chunks/0d1s5w1cd08~7.js +11 -0
  49. package/dashboard/_next/static/chunks/0geaa8~wrpcj6.js +1 -0
  50. package/dashboard/_next/static/chunks/0lyajo4_yki3f.js +11 -0
  51. package/dashboard/_next/static/chunks/0nrlwe_~wde44.js +1 -0
  52. package/dashboard/_next/static/chunks/0pd15v2_1spxb.js +11 -0
  53. package/dashboard/_next/static/chunks/0vnhcfh7g1u6i.js +11 -0
  54. package/dashboard/_next/static/chunks/0ynuwcqa7w3o..css +2 -0
  55. package/dashboard/_next/static/chunks/11dfqgfbc8fk2.js +11 -0
  56. package/dashboard/_next/static/chunks/12l48lp-434~..js +31 -0
  57. package/dashboard/_next/static/chunks/14qcm-bqojrb9.js +1 -0
  58. package/dashboard/_next/static/chunks/15~vsexhgsteo.js +1 -0
  59. package/dashboard/_next/static/chunks/turbopack-173kubfog5kol.js +1 -0
  60. package/dashboard/_next/static/media/1bffadaabf893a1e-s.16ipb6fqu393i.woff2 +0 -0
  61. package/dashboard/_next/static/media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 +0 -0
  62. package/dashboard/_next/static/media/2c55a0e60120577a-s.0bjc5tiuqdqro.woff2 +0 -0
  63. package/dashboard/_next/static/media/5476f68d60460930-s.0wxq9webf.ew4.woff2 +0 -0
  64. package/dashboard/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 +0 -0
  65. package/dashboard/_next/static/media/9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2 +0 -0
  66. package/dashboard/_next/static/media/ad66f9afd8947f86-s.11u06r12fd6v_.woff2 +0 -0
  67. package/dashboard/_next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
  68. package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_buildManifest.js +11 -0
  69. package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_clientMiddlewareManifest.js +1 -0
  70. package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_ssgManifest.js +1 -0
  71. package/dashboard/_not-found/__next._full.txt +16 -0
  72. package/dashboard/_not-found/__next._head.txt +6 -0
  73. package/dashboard/_not-found/__next._index.txt +5 -0
  74. package/dashboard/_not-found/__next._not-found.__PAGE__.txt +5 -0
  75. package/dashboard/_not-found/__next._not-found.txt +5 -0
  76. package/dashboard/_not-found/__next._tree.txt +2 -0
  77. package/dashboard/_not-found.html +1 -0
  78. package/dashboard/_not-found.txt +16 -0
  79. package/dashboard/favicon.ico +0 -0
  80. package/dashboard/file.svg +1 -0
  81. package/dashboard/globe.svg +1 -0
  82. package/dashboard/index.html +1 -0
  83. package/dashboard/index.txt +19 -0
  84. package/dashboard/next.svg +1 -0
  85. package/dashboard/vercel.svg +1 -0
  86. package/dashboard/window.svg +1 -0
  87. package/dist/agent/agent-cursor.js +138 -0
  88. package/dist/agent/agent-cursor.js.map +1 -0
  89. package/dist/agent/agent-sdk.js +71 -57
  90. package/dist/agent/agent-sdk.js.map +1 -1
  91. package/dist/agent/types.js +1 -1
  92. package/dist/agent/types.js.map +1 -1
  93. package/dist/agent.js +11 -7
  94. package/dist/agent.js.map +1 -1
  95. package/dist/bootstrap.js +1 -1
  96. package/dist/bootstrap.js.map +1 -1
  97. package/dist/cli/cmd-config.js +1 -1
  98. package/dist/cli/cmd-config.js.map +1 -1
  99. package/dist/cli/cmd-dashboard.js +63 -0
  100. package/dist/cli/cmd-dashboard.js.map +1 -0
  101. package/dist/cli/cmd-pairing.js +1 -1
  102. package/dist/cli/cmd-pairing.js.map +1 -1
  103. package/dist/cli/cmd-projects.js +128 -0
  104. package/dist/cli/cmd-projects.js.map +1 -0
  105. package/dist/cli/cmd-team.js +587 -0
  106. package/dist/cli/cmd-team.js.map +1 -0
  107. package/dist/cli.js +2 -1
  108. package/dist/cli.js.map +1 -1
  109. package/dist/core/config.js +33 -48
  110. package/dist/core/config.js.map +1 -1
  111. package/dist/core/constants.js +2 -0
  112. package/dist/core/constants.js.map +1 -1
  113. package/dist/core/version.js +1 -1
  114. package/dist/extensions/bot-approval.js.map +1 -0
  115. package/dist/extensions/pairing.js.map +1 -0
  116. package/dist/extensions/team-coordinator.js +63 -0
  117. package/dist/extensions/team-coordinator.js.map +1 -0
  118. package/dist/gateway/csrf.js +1 -1
  119. package/dist/gateway/csrf.js.map +1 -1
  120. package/dist/gateway/routes.js +198 -95
  121. package/dist/gateway/routes.js.map +1 -1
  122. package/dist/gateway/ws-handler.js +200 -168
  123. package/dist/gateway/ws-handler.js.map +1 -1
  124. package/dist/gateway-entry.js +8 -2
  125. package/dist/gateway-entry.js.map +1 -1
  126. package/dist/model.js +5 -4
  127. package/dist/model.js.map +1 -1
  128. package/dist/runtime/orchestrate.js +19 -8
  129. package/dist/runtime/orchestrate.js.map +1 -1
  130. package/dist/serve.js +18 -3
  131. package/dist/serve.js.map +1 -1
  132. package/dist/session.js +14 -2
  133. package/dist/session.js.map +1 -1
  134. package/dist/setup.js +17 -2
  135. package/dist/setup.js.map +1 -1
  136. package/dist/team.js +203 -0
  137. package/dist/team.js.map +1 -0
  138. package/dist/telegram/admin-agents.js +498 -0
  139. package/dist/telegram/admin-agents.js.map +1 -0
  140. package/dist/telegram/admin-bot.js +13 -934
  141. package/dist/telegram/admin-bot.js.map +1 -1
  142. package/dist/telegram/admin-commands.js +403 -0
  143. package/dist/telegram/admin-commands.js.map +1 -0
  144. package/dist/telegram/agent-bot.js +45 -1338
  145. package/dist/telegram/agent-bot.js.map +1 -1
  146. package/dist/telegram/agent-claude-code.js +555 -0
  147. package/dist/telegram/agent-claude-code.js.map +1 -0
  148. package/dist/telegram/agent-commands.js +396 -0
  149. package/dist/telegram/agent-commands.js.map +1 -0
  150. package/dist/telegram/agent-context.js +136 -0
  151. package/dist/telegram/agent-context.js.map +1 -0
  152. package/dist/telegram/agent-messages.js +249 -0
  153. package/dist/telegram/agent-messages.js.map +1 -0
  154. package/dist/telegram/dir-browser.js +9 -0
  155. package/dist/telegram/dir-browser.js.map +1 -1
  156. package/dist/telegram/draft-stream.js +4 -2
  157. package/dist/telegram/draft-stream.js.map +1 -1
  158. package/dist/telegram/resolve.js +15 -28
  159. package/dist/telegram/resolve.js.map +1 -1
  160. package/dist/telegram/terminal.js +139 -32
  161. package/dist/telegram/terminal.js.map +1 -1
  162. package/dist/telegram/wizards.js +1 -1
  163. package/dist/telegram/wizards.js.map +1 -1
  164. package/dist/telegram.js +4 -3
  165. package/dist/telegram.js.map +1 -1
  166. package/dist/tools/admin.js +841 -0
  167. package/dist/tools/admin.js.map +1 -0
  168. package/dist/tools/team.js +182 -0
  169. package/dist/tools/team.js.map +1 -0
  170. package/dist/tui/commands.js +15 -0
  171. package/dist/tui/commands.js.map +1 -1
  172. package/dist/tui/components/welcome.js +2 -1
  173. package/dist/tui/components/welcome.js.map +1 -1
  174. package/dist/tui/tui.js +13 -1
  175. package/dist/tui/tui.js.map +1 -1
  176. package/package.json +4 -1
  177. package/dist/cli/cmd-install.js +0 -80
  178. package/dist/cli/cmd-install.js.map +0 -1
  179. package/dist/telegram/bot-approval.js.map +0 -1
  180. package/dist/telegram/pairing.js.map +0 -1
  181. /package/dist/{telegram → extensions}/bot-approval.js +0 -0
  182. /package/dist/{telegram → extensions}/pairing.js +0 -0
@@ -11,10 +11,21 @@ import { errorMessage } from "../core/errors.js";
11
11
  import { submitDecision } from "../extensions/approvals.js";
12
12
  import fs from "node:fs";
13
13
  import path from "node:path";
14
- import { listPendingRequests, approveRequest, denyRequest } from "../telegram/pairing.js";
15
- import { listPendingBotApprovals, approveBotApproval, denyBotApproval } from "../telegram/bot-approval.js";
14
+ import os from "node:os";
15
+ import { listPendingRequests, approveRequest, denyRequest } from "../extensions/pairing.js";
16
+ import { listPendingBotApprovals, approveBotApproval, denyBotApproval } from "../extensions/bot-approval.js";
16
17
  import { notifyUserApproved, notifyUserOfDenial } from "../telegram/pairing-notify.js";
17
18
  import { checkAuth, logMessage } from "./state.js";
19
+ /** Express middleware that rejects unauthenticated requests with 401 */
20
+ function requireAuth(state) {
21
+ return (req, res, next) => {
22
+ if (!checkAuth(state, req.headers.authorization)) {
23
+ res.status(401).json({ error: "Unauthorized" });
24
+ return;
25
+ }
26
+ next();
27
+ };
28
+ }
18
29
  export function registerRoutes(app, state) {
19
30
  app.get("/health", (req, res) => {
20
31
  // When token is configured but request is unauthenticated, return minimal response
@@ -32,12 +43,9 @@ export function registerRoutes(app, state) {
32
43
  tailscaleUrl: state.tailscaleUrl ?? null,
33
44
  });
34
45
  });
35
- app.post("/chat", async (req, res) => {
36
- if (!checkAuth(state, req.headers.authorization)) {
37
- res.status(401).json({ error: "Unauthorized" });
38
- return;
39
- }
40
- const { message, session } = req.body;
46
+ const auth = requireAuth(state);
47
+ app.post("/chat", auth, async (req, res) => {
48
+ const { message, session, sdk } = req.body;
41
49
  if (!message || typeof message !== "string") {
42
50
  res.status(400).json({ error: "message is required" });
43
51
  return;
@@ -51,11 +59,12 @@ export function registerRoutes(app, state) {
51
59
  config: state.config,
52
60
  systemPrompt: state.systemPrompt,
53
61
  client: state.client,
62
+ sdk: sdk,
54
63
  });
55
64
  if (result.response) {
56
65
  logMessage(state, "http", "out", sid, result.response);
57
66
  }
58
- res.json({ response: result.response, session: sid });
67
+ res.json({ response: result.response, session: sid, sdk: result.sdk });
59
68
  }
60
69
  catch (err) {
61
70
  logMessage(state, "http", "out", sid, `ERROR: ${errorMessage(err)}`);
@@ -63,35 +72,19 @@ export function registerRoutes(app, state) {
63
72
  }
64
73
  });
65
74
  // Sessions
66
- app.get("/sessions", (req, res) => {
67
- if (!checkAuth(state, req.headers.authorization)) {
68
- res.status(401).json({ error: "Unauthorized" });
69
- return;
70
- }
75
+ app.get("/sessions", auth, (_req, res) => {
71
76
  res.json(listSessions());
72
77
  });
73
- app.get("/sessions/:id/messages", (req, res) => {
74
- if (!checkAuth(state, req.headers.authorization)) {
75
- res.status(401).json({ error: "Unauthorized" });
76
- return;
77
- }
78
+ app.get("/sessions/:id/messages", auth, (req, res) => {
78
79
  const messages = loadMessages(req.params.id);
79
80
  res.json(messages.map((m) => ({ role: m.role, content: m.content })));
80
81
  });
81
- app.delete("/sessions/:id", (req, res) => {
82
- if (!checkAuth(state, req.headers.authorization)) {
83
- res.status(401).json({ error: "Unauthorized" });
84
- return;
85
- }
82
+ app.delete("/sessions/:id", auth, (req, res) => {
86
83
  deleteSession(req.params.id);
87
84
  res.json({ ok: true });
88
85
  });
89
86
  // Agents
90
- app.get("/agents", async (req, res) => {
91
- if (!checkAuth(state, req.headers.authorization)) {
92
- res.status(401).json({ error: "Unauthorized" });
93
- return;
94
- }
87
+ app.get("/agents", auth, async (_req, res) => {
95
88
  let runningIds = [];
96
89
  try {
97
90
  const { getAllChannels } = await import("../channels/registry.js");
@@ -109,11 +102,7 @@ export function registerRoutes(app, state) {
109
102
  }));
110
103
  res.json(agents);
111
104
  });
112
- app.post("/agents", (req, res) => {
113
- if (!checkAuth(state, req.headers.authorization)) {
114
- res.status(401).json({ error: "Unauthorized" });
115
- return;
116
- }
105
+ app.post("/agents", auth, (req, res) => {
117
106
  const { id, name, model, description, telegramToken, allowedUsers } = req.body;
118
107
  if (!id || !name) {
119
108
  res.status(400).json({ error: "id and name are required" });
@@ -135,11 +124,7 @@ export function registerRoutes(app, state) {
135
124
  state.config = loadConfig();
136
125
  res.status(201).json({ id, name, dir: agentMemoryDir(id) });
137
126
  });
138
- app.delete("/agents/:id", (req, res) => {
139
- if (!checkAuth(state, req.headers.authorization)) {
140
- res.status(401).json({ error: "Unauthorized" });
141
- return;
142
- }
127
+ app.delete("/agents/:id", auth, (req, res) => {
143
128
  const { id } = req.params;
144
129
  if (!state.config.agents[id]) {
145
130
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -152,11 +137,7 @@ export function registerRoutes(app, state) {
152
137
  res.json({ ok: true });
153
138
  });
154
139
  // SOUL.md
155
- app.get("/agents/:id/soul", (req, res) => {
156
- if (!checkAuth(state, req.headers.authorization)) {
157
- res.status(401).json({ error: "Unauthorized" });
158
- return;
159
- }
140
+ app.get("/agents/:id/soul", auth, (req, res) => {
160
141
  const { id } = req.params;
161
142
  if (!state.config.agents[id]) {
162
143
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -169,11 +150,7 @@ export function registerRoutes(app, state) {
169
150
  }
170
151
  res.json({ content: fs.readFileSync(soulPath, "utf-8") });
171
152
  });
172
- app.put("/agents/:id/soul", (req, res) => {
173
- if (!checkAuth(state, req.headers.authorization)) {
174
- res.status(401).json({ error: "Unauthorized" });
175
- return;
176
- }
153
+ app.put("/agents/:id/soul", auth, (req, res) => {
177
154
  const { id } = req.params;
178
155
  if (!state.config.agents[id]) {
179
156
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -190,25 +167,22 @@ export function registerRoutes(app, state) {
190
167
  res.json({ ok: true });
191
168
  });
192
169
  // Config
193
- app.get("/config", (req, res) => {
194
- if (!checkAuth(state, req.headers.authorization)) {
195
- res.status(401).json({ error: "Unauthorized" });
196
- return;
197
- }
198
- const safe = { ...state.config, apiKey: state.config.apiKey ? `***${state.config.apiKey.slice(-4)}` : undefined };
170
+ app.get("/config", auth, (_req, res) => {
171
+ const safe = {
172
+ ...state.config,
173
+ apiKey: state.config.apiKey ? `***${state.config.apiKey.slice(-4)}` : undefined,
174
+ cursorApiKey: state.config.cursorApiKey ? `***${state.config.cursorApiKey.slice(-4)}` : undefined,
175
+ };
199
176
  res.json(safe);
200
177
  });
201
- app.patch("/config", (req, res) => {
202
- if (!checkAuth(state, req.headers.authorization)) {
203
- res.status(401).json({ error: "Unauthorized" });
204
- return;
205
- }
178
+ app.patch("/config", auth, (req, res) => {
206
179
  const updates = req.body;
207
180
  if (!updates || typeof updates !== "object") {
208
181
  res.status(400).json({ error: "JSON body required" });
209
182
  return;
210
183
  }
211
184
  delete updates.apiKey;
185
+ delete updates.cursorApiKey;
212
186
  delete updates.serve;
213
187
  saveConfig(updates);
214
188
  state.config = loadConfig();
@@ -217,18 +191,10 @@ export function registerRoutes(app, state) {
217
191
  res.json({ ok: true });
218
192
  });
219
193
  // Pairing
220
- app.get("/pairing", (req, res) => {
221
- if (!checkAuth(state, req.headers.authorization)) {
222
- res.status(401).json({ error: "Unauthorized" });
223
- return;
224
- }
194
+ app.get("/pairing", auth, (_req, res) => {
225
195
  res.json(listPendingRequests());
226
196
  });
227
- app.post("/pairing/:code/approve", async (req, res) => {
228
- if (!checkAuth(state, req.headers.authorization)) {
229
- res.status(401).json({ error: "Unauthorized" });
230
- return;
231
- }
197
+ app.post("/pairing/:code/approve", auth, async (req, res) => {
232
198
  const request = approveRequest(req.params.code);
233
199
  if (request) {
234
200
  res.json({ ok: true, userId: request.userId, agentId: request.agentId });
@@ -243,11 +209,7 @@ export function registerRoutes(app, state) {
243
209
  res.status(404).json({ error: "Request not found or expired" });
244
210
  }
245
211
  });
246
- app.post("/pairing/:code/deny", async (req, res) => {
247
- if (!checkAuth(state, req.headers.authorization)) {
248
- res.status(401).json({ error: "Unauthorized" });
249
- return;
250
- }
212
+ app.post("/pairing/:code/deny", auth, async (req, res) => {
251
213
  const request = denyRequest(req.params.code);
252
214
  if (request) {
253
215
  res.json({ ok: true });
@@ -263,18 +225,10 @@ export function registerRoutes(app, state) {
263
225
  }
264
226
  });
265
227
  // Bot approvals
266
- app.get("/bot-approvals", (req, res) => {
267
- if (!checkAuth(state, req.headers.authorization)) {
268
- res.status(401).json({ error: "Unauthorized" });
269
- return;
270
- }
228
+ app.get("/bot-approvals", auth, (_req, res) => {
271
229
  res.json(listPendingBotApprovals());
272
230
  });
273
- app.post("/bot-approvals/:agentId/approve", async (req, res) => {
274
- if (!checkAuth(state, req.headers.authorization)) {
275
- res.status(401).json({ error: "Unauthorized" });
276
- return;
277
- }
231
+ app.post("/bot-approvals/:agentId/approve", auth, async (req, res) => {
278
232
  const approval = approveBotApproval(req.params.agentId);
279
233
  if (!approval) {
280
234
  res.status(404).json({ error: "Approval not found" });
@@ -289,11 +243,7 @@ export function registerRoutes(app, state) {
289
243
  res.status(500).json({ error: errorMessage(err) });
290
244
  }
291
245
  });
292
- app.post("/bot-approvals/:agentId/deny", (req, res) => {
293
- if (!checkAuth(state, req.headers.authorization)) {
294
- res.status(401).json({ error: "Unauthorized" });
295
- return;
296
- }
246
+ app.post("/bot-approvals/:agentId/deny", auth, (req, res) => {
297
247
  const approval = denyBotApproval(req.params.agentId);
298
248
  if (approval) {
299
249
  res.json({ ok: true });
@@ -303,11 +253,7 @@ export function registerRoutes(app, state) {
303
253
  }
304
254
  });
305
255
  // Approvals
306
- app.post("/approvals/:id/decide", (req, res) => {
307
- if (!checkAuth(state, req.headers.authorization)) {
308
- res.status(401).json({ error: "Unauthorized" });
309
- return;
310
- }
256
+ app.post("/approvals/:id/decide", auth, (req, res) => {
311
257
  const { id } = req.params;
312
258
  const { decision } = req.body;
313
259
  if (!decision) {
@@ -317,5 +263,162 @@ export function registerRoutes(app, state) {
317
263
  const resolved = submitDecision(id, decision);
318
264
  res.json({ ok: resolved });
319
265
  });
266
+ // ─── Agent workspace files ──────────────────────────────────────
267
+ app.get("/agents/:id/workspace/:file", auth, (req, res) => {
268
+ const { id, file } = req.params;
269
+ const allowed = ["SOUL.md", "TOOLS.md", "MEMORY.md", "HEARTBEAT.md"];
270
+ if (!allowed.includes(file))
271
+ return res.status(400).json({ error: "Invalid file" });
272
+ const filePath = path.join(agentMemoryDir(id), file);
273
+ const content = fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf-8") : "";
274
+ res.json({ content });
275
+ });
276
+ app.put("/agents/:id/workspace/:file", auth, (req, res) => {
277
+ const { id, file } = req.params;
278
+ const allowed = ["SOUL.md", "TOOLS.md", "MEMORY.md", "HEARTBEAT.md"];
279
+ if (!allowed.includes(file))
280
+ return res.status(400).json({ error: "Invalid file" });
281
+ const { content } = req.body;
282
+ if (typeof content !== "string")
283
+ return res.status(400).json({ error: "content required" });
284
+ const filePath = path.join(agentMemoryDir(id), file);
285
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
286
+ fs.writeFileSync(filePath, content);
287
+ res.json({ ok: true });
288
+ });
289
+ // Agent memory notes list
290
+ app.get("/agents/:id/memory", auth, (req, res) => {
291
+ const memDir = path.join(agentMemoryDir(req.params.id), "memory");
292
+ if (!fs.existsSync(memDir))
293
+ return res.json([]);
294
+ const files = fs.readdirSync(memDir).filter(f => f.endsWith(".md")).sort().reverse();
295
+ const notes = files.map(f => ({
296
+ name: f,
297
+ content: fs.readFileSync(path.join(memDir, f), "utf-8"),
298
+ size: fs.statSync(path.join(memDir, f)).size,
299
+ }));
300
+ res.json(notes);
301
+ });
302
+ // ─── Cron jobs ──────────────────────────────────────────────────
303
+ app.get("/cron", auth, async (_req, res) => {
304
+ const { getAllJobStatuses } = await import("../extensions/cron.js");
305
+ res.json(getAllJobStatuses());
306
+ });
307
+ // ─── Usage ──────────────────────────────────────────────────────
308
+ app.get("/usage/:sessionId", auth, async (req, res) => {
309
+ const { getSessionUsage } = await import("../usage.js");
310
+ const usage = getSessionUsage(req.params.sessionId);
311
+ res.json(usage);
312
+ });
313
+ // ─── Skills ─────────────────────────────────────────────────────
314
+ app.get("/skills", auth, async (_req, res) => {
315
+ const { listSkillNames } = await import("../extensions/skills.js");
316
+ const skills = listSkillNames();
317
+ res.json(skills);
318
+ });
319
+ // ─── Export ─────────────────────────────────────────────────────
320
+ app.get("/sessions/:id/export", auth, (req, res) => {
321
+ const messages = loadMessages(req.params.id);
322
+ const lines = messages.map(m => {
323
+ const prefix = m.role === "user" ? "**You:**" : m.role === "assistant" ? "**Assistant:**" : `**${m.role}:**`;
324
+ return `${prefix}\n\n${m.content}\n\n---\n`;
325
+ });
326
+ const md = `# Session: ${req.params.id}\n\n${lines.join("\n")}`;
327
+ res.setHeader("Content-Type", "text/markdown");
328
+ res.setHeader("Content-Disposition", `attachment; filename="${req.params.id}.md"`);
329
+ res.send(md);
330
+ });
331
+ // ─── MCP servers ────────────────────────────────────────────────
332
+ app.get("/mcp", auth, (_req, res) => {
333
+ const config = state.config;
334
+ const global = config.mcp?.servers ?? {};
335
+ const perAgent = {};
336
+ for (const [id, agent] of Object.entries(config.agents)) {
337
+ if (agent.mcp?.servers && Object.keys(agent.mcp.servers).length > 0) {
338
+ perAgent[id] = agent.mcp.servers;
339
+ }
340
+ }
341
+ res.json({ global, perAgent });
342
+ });
343
+ // ─── Clone agent ────────────────────────────────────────────────
344
+ app.post("/agents/:id/clone", auth, async (req, res) => {
345
+ const sourceId = req.params.id;
346
+ const { newId, newName } = req.body;
347
+ if (!newId || !newName)
348
+ return res.status(400).json({ error: "newId and newName required" });
349
+ const config = state.config;
350
+ const source = config.agents[sourceId];
351
+ if (!source)
352
+ return res.status(404).json({ error: "Source agent not found" });
353
+ if (config.agents[newId])
354
+ return res.status(409).json({ error: "Agent ID already exists" });
355
+ // Clone config (without telegram token)
356
+ const cloned = { ...source, name: newName };
357
+ delete cloned.telegram;
358
+ delete cloned.admin;
359
+ const agents = { ...config.agents, [newId]: cloned };
360
+ const { saveConfig: save } = await import("../core/config.js");
361
+ save({ agents });
362
+ // Clone workspace files
363
+ seedAgentWorkspace(newId, newName);
364
+ const sourceDir = agentMemoryDir(sourceId);
365
+ const destDir = agentMemoryDir(newId);
366
+ for (const file of ["SOUL.md", "TOOLS.md", "MEMORY.md", "HEARTBEAT.md"]) {
367
+ const src = path.join(sourceDir, file);
368
+ if (fs.existsSync(src)) {
369
+ fs.copyFileSync(src, path.join(destDir, file));
370
+ }
371
+ }
372
+ res.status(201).json({ id: newId, name: newName });
373
+ });
374
+ // ─── Channel status ─────────────────────────────────────────────
375
+ app.get("/channels", auth, (_req, res) => {
376
+ const config = state.config;
377
+ const channels = [];
378
+ for (const [id, agent] of Object.entries(config.agents)) {
379
+ if (agent.telegram?.botToken) {
380
+ channels.push({ id, name: agent.name, type: "telegram", running: true });
381
+ }
382
+ if (agent.discord?.botToken) {
383
+ channels.push({ id, name: agent.name, type: "discord", running: true });
384
+ }
385
+ }
386
+ res.json(channels);
387
+ });
388
+ // ─── Logs ───────────────────────────────────────────────────────
389
+ app.get("/logs", auth, (req, res) => {
390
+ const logDir = path.join(os.homedir(), ".camelagi", "logs");
391
+ const logFile = path.join(logDir, "requests.log");
392
+ if (!fs.existsSync(logFile))
393
+ return res.json([]);
394
+ const content = fs.readFileSync(logFile, "utf-8");
395
+ const lines = content.trim().split("\n").filter(Boolean).slice(-100);
396
+ res.json(lines);
397
+ });
398
+ // ─── Models ─────────────────────────────────────────────────────
399
+ app.get("/models", auth, async (_req, res) => {
400
+ const { resolvePreset, fetchOpenRouterModels } = await import("../core/models.js");
401
+ const preset = resolvePreset(state.config.provider, state.config.baseUrl);
402
+ let models = [...preset.models];
403
+ if (state.config.baseUrl?.includes("openrouter") && state.config.apiKey) {
404
+ const live = await fetchOpenRouterModels(state.config.apiKey);
405
+ if (live.length > 0) {
406
+ const presetSet = new Set(preset.models);
407
+ const rest = live.map(m => m.id).filter(id => !presetSet.has(id));
408
+ models = [...preset.models, ...rest];
409
+ }
410
+ }
411
+ res.json(models);
412
+ });
413
+ // ─── Pending approvals list ─────────────────────────────────────
414
+ app.get("/approvals/pending", auth, async (_req, res) => {
415
+ try {
416
+ const { pendingCount } = await import("../extensions/approvals.js");
417
+ res.json({ count: pendingCount() });
418
+ }
419
+ catch {
420
+ res.json({ count: 0 });
421
+ }
422
+ });
320
423
  }
321
424
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/gateway/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/gateway/routes.ts"],"names":[],"mappings":"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"}