@action-llama/action-llama 0.24.3 → 0.26.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.
Files changed (58) hide show
  1. package/dist/agents/container-entry.d.ts.map +1 -1
  2. package/dist/agents/container-entry.js +5 -1
  3. package/dist/agents/container-entry.js.map +1 -1
  4. package/dist/agents/session-loop.d.ts +1 -0
  5. package/dist/agents/session-loop.d.ts.map +1 -1
  6. package/dist/agents/session-loop.js +7 -1
  7. package/dist/agents/session-loop.js.map +1 -1
  8. package/dist/build-info.json +1 -1
  9. package/dist/cli/commands/logs.d.ts +0 -1
  10. package/dist/cli/commands/logs.d.ts.map +1 -1
  11. package/dist/cli/commands/logs.js +51 -12
  12. package/dist/cli/commands/logs.js.map +1 -1
  13. package/dist/cli/commands/run-agent.d.ts.map +1 -1
  14. package/dist/cli/commands/run-agent.js +4 -0
  15. package/dist/cli/commands/run-agent.js.map +1 -1
  16. package/dist/cli/main.js +1 -2
  17. package/dist/cli/main.js.map +1 -1
  18. package/dist/control/index.d.ts +1 -0
  19. package/dist/control/index.d.ts.map +1 -1
  20. package/dist/control/index.js +1 -0
  21. package/dist/control/index.js.map +1 -1
  22. package/dist/control/routes/dashboard-api.js +1 -1
  23. package/dist/control/routes/dashboard-api.js.map +1 -1
  24. package/dist/control/routes/log-helpers.d.ts +53 -0
  25. package/dist/control/routes/log-helpers.d.ts.map +1 -0
  26. package/dist/control/routes/log-helpers.js +243 -0
  27. package/dist/control/routes/log-helpers.js.map +1 -0
  28. package/dist/control/routes/log-summary.d.ts +5 -0
  29. package/dist/control/routes/log-summary.d.ts.map +1 -0
  30. package/dist/control/routes/log-summary.js +131 -0
  31. package/dist/control/routes/log-summary.js.map +1 -0
  32. package/dist/control/routes/logs.d.ts.map +1 -1
  33. package/dist/control/routes/logs.js +34 -265
  34. package/dist/control/routes/logs.js.map +1 -1
  35. package/dist/control/routes/stats.d.ts.map +1 -1
  36. package/dist/control/routes/stats.js +156 -114
  37. package/dist/control/routes/stats.js.map +1 -1
  38. package/dist/db/schema.d.ts.map +1 -1
  39. package/dist/db/schema.js +1 -0
  40. package/dist/db/schema.js.map +1 -1
  41. package/dist/docker/host-user-runtime.d.ts.map +1 -1
  42. package/dist/docker/host-user-runtime.js +3 -0
  43. package/dist/docker/host-user-runtime.js.map +1 -1
  44. package/dist/frontend/assets/index-D4A0OA-O.js +13 -0
  45. package/dist/frontend/assets/index-DxRXtsfX.css +2 -0
  46. package/dist/frontend/index.html +2 -2
  47. package/dist/gateway/routes/dashboard.d.ts.map +1 -1
  48. package/dist/gateway/routes/dashboard.js +2 -0
  49. package/dist/gateway/routes/dashboard.js.map +1 -1
  50. package/dist/stats/store.d.ts +31 -0
  51. package/dist/stats/store.d.ts.map +1 -1
  52. package/dist/stats/store.js +122 -0
  53. package/dist/stats/store.js.map +1 -1
  54. package/drizzle/0002_add_result_index.sql +1 -0
  55. package/drizzle/meta/_journal.json +7 -0
  56. package/package.json +3 -2
  57. package/dist/frontend/assets/index-BRid3eDe.js +0 -13
  58. package/dist/frontend/assets/index-NmgeBYN4.css +0 -2
@@ -1,256 +1,50 @@
1
- import { promises as fs } from "fs";
2
- import { resolve } from "path";
3
- import { readdirSync } from "fs";
4
- const SAFE_AGENT_NAME = /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/;
5
- const MAX_LINES = 2000;
6
- const DEFAULT_LINES = 200;
7
- // ── Cursor helpers ────────────────────────────────────────────────────────────
8
- function encodeCursor(date, offsets) {
9
- return Buffer.from(`${date}:${offsets.join(",")}`).toString("base64url");
10
- }
11
- function decodeCursor(cursor) {
12
- try {
13
- const decoded = Buffer.from(cursor, "base64url").toString("utf-8");
14
- const [date, offsetStr] = decoded.split(":");
15
- if (!date || !offsetStr)
16
- return null;
17
- const offsets = offsetStr.split(",").map(Number);
18
- if (offsets.some(isNaN))
19
- return null;
20
- return { date, offsets };
21
- }
22
- catch {
23
- return null;
24
- }
25
- }
26
- // ── File discovery ────────────────────────────────────────────────────────────
27
- function logsDir(projectPath) {
28
- return resolve(projectPath, ".al", "logs");
29
- }
30
- function findLogFiles(projectPath, prefix) {
31
- const dir = logsDir(projectPath);
32
- try {
33
- return readdirSync(dir)
34
- .filter((f) => f.startsWith(`${prefix}-`) && f.endsWith(".log"))
35
- .sort()
36
- .map((f) => resolve(dir, f));
37
- }
38
- catch {
39
- return [];
40
- }
41
- }
42
- function findLatestLogFile(projectPath, prefix) {
43
- const files = findLogFiles(projectPath, prefix);
44
- return files.length > 0 ? files[files.length - 1] : null;
45
- }
46
- function dateFromLogFile(filePath) {
47
- const match = filePath.match(/(\d{4}-\d{2}-\d{2})\.log$/);
48
- return match ? match[1] : null;
49
- }
50
- // ── File reading ──────────────────────────────────────────────────────────────
51
- function parseLine(line) {
52
- if (!line.trim())
53
- return null;
54
- try {
55
- const obj = JSON.parse(line);
56
- // Container format normalization
57
- if (obj._log && typeof obj.level === "string") {
58
- const levelMap = { trace: 10, debug: 20, info: 30, warn: 40, error: 50 };
59
- const { _log, level: levelStr, ts, ...rest } = obj;
60
- return { ...rest, level: levelMap[levelStr] ?? 30, time: ts ?? Date.now() };
61
- }
62
- return obj;
63
- }
64
- catch {
65
- return null;
66
- }
67
- }
68
- /** Read entries forward from a byte offset. Returns entries and new byte offset. */
69
- async function readEntriesForward(filePath, byteOffset, limit, afterTime, beforeTime, instanceFilter, grep) {
70
- try {
71
- const stat = await fs.stat(filePath);
72
- if (byteOffset >= stat.size)
73
- return { entries: [], newOffset: byteOffset };
74
- const fd = await fs.open(filePath, "r");
1
+ import { SAFE_AGENT_NAME, findLogFiles, dateFromLogFile, readLastEntriesMultiFile, readEntriesForwardMultiFile, encodeCursor, decodeCursor, parseQueryParams, } from "./log-helpers.js";
2
+ async function handleLogRequest(projectPath, prefix, query, instanceFilter) {
3
+ const { lines, cursor, after, before, grep, minLevel } = parseQueryParams(query);
4
+ let grepRe;
5
+ if (grep) {
75
6
  try {
76
- const buf = Buffer.alloc(stat.size - byteOffset);
77
- await fd.read(buf, 0, buf.length, byteOffset);
78
- const text = buf.toString("utf-8");
79
- const lines = text.split("\n");
80
- const entries = [];
81
- for (const line of lines) {
82
- if (entries.length >= limit)
83
- break;
84
- const entry = parseLine(line);
85
- if (!entry)
86
- continue;
87
- if (afterTime && entry.time <= afterTime)
88
- continue;
89
- if (beforeTime && entry.time >= beforeTime)
90
- continue;
91
- if (instanceFilter && entry.instance !== instanceFilter)
92
- continue;
93
- if (grep && !grep.test(JSON.stringify(entry)))
94
- continue;
95
- entries.push(entry);
96
- }
97
- return { entries, newOffset: stat.size };
7
+ grepRe = new RegExp(grep);
98
8
  }
99
- finally {
100
- await fd.close();
9
+ catch {
10
+ return { status: 400, body: { error: "Invalid grep pattern" } };
101
11
  }
102
12
  }
103
- catch {
104
- return { entries: [], newOffset: byteOffset };
13
+ const filterLevel = (entries) => minLevel > 0 ? entries.filter((e) => e.level >= minLevel) : entries;
14
+ if (cursor) {
15
+ const parsed = decodeCursor(cursor);
16
+ if (!parsed)
17
+ return { status: 400, body: { error: "Invalid cursor" } };
18
+ const files = findLogFiles(projectPath, prefix);
19
+ if (files.length === 0)
20
+ return { status: 200, body: { entries: [], cursor: null, hasMore: false } };
21
+ const { entries, newDate, newOffset } = await readEntriesForwardMultiFile(projectPath, prefix, parsed.date, parsed.offsets[0] || 0, lines, after, before, instanceFilter, grepRe);
22
+ const filtered = filterLevel(entries);
23
+ const newCursor = encodeCursor(newDate, [newOffset]);
24
+ return { status: 200, body: { entries: filtered, cursor: newCursor, hasMore: entries.length >= lines } };
105
25
  }
106
- }
107
- /** Read the last N entries from a file using reverse reading. */
108
- async function readLastEntries(filePath, limit, afterTime, beforeTime, instanceFilter, grep) {
109
- try {
110
- const stat = await fs.stat(filePath);
111
- if (stat.size === 0)
112
- return { entries: [], byteOffset: 0 };
113
- const fd = await fs.open(filePath, "r");
114
- const entries = [];
115
- let position = stat.size;
116
- const chunkSize = 8192;
117
- const buffer = Buffer.alloc(chunkSize);
118
- let remainder = "";
119
- // We need more raw lines than limit because of filtering
120
- const rawLimit = limit * 3;
121
- let rawCount = 0;
122
- try {
123
- while (rawCount < rawLimit && position > 0) {
124
- const toRead = Math.min(chunkSize, position);
125
- position -= toRead;
126
- const { buffer: readBuf } = await fd.read(buffer, 0, toRead, position);
127
- const chunk = readBuf.toString("utf-8", 0, toRead);
128
- const text = chunk + remainder;
129
- const parts = text.split("\n");
130
- remainder = parts[0];
131
- for (let i = parts.length - 1; i >= 1; i--) {
132
- const line = parts[i];
133
- if (!line.trim())
134
- continue;
135
- rawCount++;
136
- const entry = parseLine(line);
137
- if (!entry)
138
- continue;
139
- if (afterTime && entry.time <= afterTime)
140
- continue;
141
- if (beforeTime && entry.time >= beforeTime)
142
- continue;
143
- if (instanceFilter && entry.instance !== instanceFilter)
144
- continue;
145
- if (grep && !grep.test(JSON.stringify(entry)))
146
- continue;
147
- entries.unshift(entry);
148
- if (entries.length > limit)
149
- entries.shift();
150
- }
151
- }
152
- if (position === 0 && remainder.trim()) {
153
- const entry = parseLine(remainder);
154
- if (entry) {
155
- const inRange = (!afterTime || entry.time > afterTime) && (!beforeTime || entry.time < beforeTime)
156
- && (!instanceFilter || entry.instance === instanceFilter)
157
- && (!grep || grep.test(JSON.stringify(entry)));
158
- if (inRange) {
159
- entries.unshift(entry);
160
- if (entries.length > limit)
161
- entries.shift();
162
- }
163
- }
164
- }
165
- }
166
- finally {
167
- await fd.close();
168
- }
169
- return { entries: entries.slice(-limit), byteOffset: stat.size };
170
- }
171
- catch {
172
- return { entries: [], byteOffset: 0 };
173
- }
174
- }
175
- // ── Route handlers ────────────────────────────────────────────────────────────
176
- function parseQueryParams(query) {
177
- let lines = parseInt(query.lines || "", 10);
178
- if (isNaN(lines) || lines < 1)
179
- lines = DEFAULT_LINES;
180
- if (lines > MAX_LINES)
181
- lines = MAX_LINES;
182
- const cursor = query.cursor || undefined;
183
- const after = query.after ? parseInt(query.after, 10) : undefined;
184
- const before = query.before ? parseInt(query.before, 10) : undefined;
185
- const grep = query.grep || undefined;
186
- return { lines, cursor, after: isNaN(after) ? undefined : after, before: isNaN(before) ? undefined : before, grep };
26
+ const files = findLogFiles(projectPath, prefix);
27
+ if (files.length === 0)
28
+ return { status: 200, body: { entries: [], cursor: null, hasMore: false } };
29
+ const { entries, latestFile, byteOffset } = await readLastEntriesMultiFile(files, lines, after, before, instanceFilter, grepRe);
30
+ const filtered = filterLevel(entries);
31
+ const date = latestFile ? dateFromLogFile(latestFile) || "" : "";
32
+ const resCursor = encodeCursor(date, [byteOffset]);
33
+ return { status: 200, body: { entries: filtered, cursor: resCursor, hasMore: false } };
187
34
  }
188
35
  export function registerLogRoutes(app, projectPath) {
189
36
  // ── Scheduler logs ────────────────────────────────────────────────────────
190
37
  app.get("/api/logs/scheduler", async (c) => {
191
- const { lines, cursor, after, before, grep } = parseQueryParams(c.req.query());
192
- let grepRe;
193
- if (grep) {
194
- try {
195
- grepRe = new RegExp(grep);
196
- }
197
- catch {
198
- return c.json({ error: "Invalid grep pattern" }, 400);
199
- }
200
- }
201
- if (cursor) {
202
- const parsed = decodeCursor(cursor);
203
- if (!parsed)
204
- return c.json({ error: "Invalid cursor" }, 400);
205
- const file = findLatestLogFile(projectPath, "scheduler");
206
- if (!file)
207
- return c.json({ entries: [], cursor: null, hasMore: false });
208
- const currentDate = dateFromLogFile(file);
209
- // If date rolled over, read from start of new file
210
- const offset = currentDate !== parsed.date ? 0 : parsed.offsets[0] || 0;
211
- const { entries, newOffset } = await readEntriesForward(file, offset, lines, after, before, undefined, grepRe);
212
- const newCursor = encodeCursor(currentDate || parsed.date, [newOffset]);
213
- return c.json({ entries, cursor: newCursor, hasMore: entries.length >= lines });
214
- }
215
- const file = findLatestLogFile(projectPath, "scheduler");
216
- if (!file)
217
- return c.json({ entries: [], cursor: null, hasMore: false });
218
- const { entries, byteOffset } = await readLastEntries(file, lines, after, before, undefined, grepRe);
219
- const date = dateFromLogFile(file) || "";
220
- const resCursor = encodeCursor(date, [byteOffset]);
221
- return c.json({ entries, cursor: resCursor, hasMore: false });
38
+ const { status, body } = await handleLogRequest(projectPath, "scheduler", c.req.query());
39
+ return c.json(body, status);
222
40
  });
223
41
  // ── Agent logs (all instances in one file) ─────────────────────────────
224
42
  app.get("/api/logs/agents/:name", async (c) => {
225
43
  const name = c.req.param("name");
226
44
  if (!SAFE_AGENT_NAME.test(name))
227
45
  return c.json({ error: "Invalid agent name" }, 400);
228
- const { lines, cursor, after, before, grep } = parseQueryParams(c.req.query());
229
- let grepRe;
230
- if (grep) {
231
- try {
232
- grepRe = new RegExp(grep);
233
- }
234
- catch {
235
- return c.json({ error: "Invalid grep pattern" }, 400);
236
- }
237
- }
238
- const file = findLatestLogFile(projectPath, name);
239
- if (!file)
240
- return c.json({ entries: [], cursor: null, hasMore: false });
241
- if (cursor) {
242
- const parsed = decodeCursor(cursor);
243
- if (!parsed)
244
- return c.json({ error: "Invalid cursor" }, 400);
245
- const currentDate = dateFromLogFile(file);
246
- const offset = currentDate !== parsed.date ? 0 : parsed.offsets[0] || 0;
247
- const { entries, newOffset } = await readEntriesForward(file, offset, lines, after, before, undefined, grepRe);
248
- const newCursor = encodeCursor(currentDate || parsed.date, [newOffset]);
249
- return c.json({ entries, cursor: newCursor, hasMore: entries.length >= lines });
250
- }
251
- const { entries, byteOffset } = await readLastEntries(file, lines, after, before, undefined, grepRe);
252
- const date = dateFromLogFile(file) || "";
253
- return c.json({ entries, cursor: encodeCursor(date, [byteOffset]), hasMore: false });
46
+ const { status, body } = await handleLogRequest(projectPath, name, c.req.query());
47
+ return c.json(body, status);
254
48
  });
255
49
  // ── Specific instance logs (filter by instance field) ─────────────────
256
50
  app.get("/api/logs/agents/:name/:instanceId", async (c) => {
@@ -260,33 +54,8 @@ export function registerLogRoutes(app, projectPath) {
260
54
  return c.json({ error: "Invalid agent name" }, 400);
261
55
  if (!SAFE_AGENT_NAME.test(instanceId))
262
56
  return c.json({ error: "Invalid instance ID" }, 400);
263
- const { lines, cursor, after, before, grep } = parseQueryParams(c.req.query());
264
- let grepRe;
265
- if (grep) {
266
- try {
267
- grepRe = new RegExp(grep);
268
- }
269
- catch {
270
- return c.json({ error: "Invalid grep pattern" }, 400);
271
- }
272
- }
273
- const instanceFilter = instanceId;
274
- const file = findLatestLogFile(projectPath, name);
275
- if (!file)
276
- return c.json({ entries: [], cursor: null, hasMore: false });
277
- if (cursor) {
278
- const parsed = decodeCursor(cursor);
279
- if (!parsed)
280
- return c.json({ error: "Invalid cursor" }, 400);
281
- const currentDate = dateFromLogFile(file);
282
- const offset = currentDate !== parsed.date ? 0 : parsed.offsets[0] || 0;
283
- const { entries, newOffset } = await readEntriesForward(file, offset, lines, after, before, instanceFilter, grepRe);
284
- const newCursor = encodeCursor(currentDate || parsed.date, [newOffset]);
285
- return c.json({ entries, cursor: newCursor, hasMore: entries.length >= lines });
286
- }
287
- const { entries, byteOffset } = await readLastEntries(file, lines, after, before, instanceFilter, grepRe);
288
- const date = dateFromLogFile(file) || "";
289
- return c.json({ entries, cursor: encodeCursor(date, [byteOffset]), hasMore: false });
57
+ const { status, body } = await handleLogRequest(projectPath, name, c.req.query(), instanceId);
58
+ return c.json(body, status);
290
59
  });
291
60
  }
292
61
  //# sourceMappingURL=logs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/control/routes/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/control/routes/logs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,UAAU,EAAE,IAAI,CAAA;SAAE,EAAE,CAAC;KACnE,CAAC;CACH;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EACT,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,gBAAgB,GAC7B,IAAI,CAuSN"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/control/routes/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,UAAU,EAAE,IAAI,CAAA;SAAE,EAAE,CAAC;KACnE,CAAC;CACH;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EACT,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,gBAAgB,GAC7B,IAAI,CA6VN"}