@vforsh/argus-watcher 0.1.15 → 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.
Files changed (44) hide show
  1. package/README.md +11 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/buffer/LogBuffer.d.ts +30 -1
  4. package/dist/buffer/LogBuffer.d.ts.map +1 -1
  5. package/dist/buffer/LogBuffer.js +135 -2
  6. package/dist/buffer/LogBuffer.js.map +1 -1
  7. package/dist/cdp/eval.d.ts +3 -0
  8. package/dist/cdp/eval.d.ts.map +1 -1
  9. package/dist/cdp/eval.js +14 -1
  10. package/dist/cdp/eval.js.map +1 -1
  11. package/dist/cdp/scenarioBridge.d.ts +16 -0
  12. package/dist/cdp/scenarioBridge.d.ts.map +1 -0
  13. package/dist/cdp/scenarioBridge.js +291 -0
  14. package/dist/cdp/scenarioBridge.js.map +1 -0
  15. package/dist/events.d.ts +4 -1
  16. package/dist/events.d.ts.map +1 -1
  17. package/dist/http/routes/getLogCursor.d.ts +2 -0
  18. package/dist/http/routes/getLogCursor.d.ts.map +1 -0
  19. package/dist/http/routes/getLogCursor.js +7 -0
  20. package/dist/http/routes/getLogCursor.js.map +1 -0
  21. package/dist/http/routes/getLogEpoch.d.ts +2 -0
  22. package/dist/http/routes/getLogEpoch.d.ts.map +1 -0
  23. package/dist/http/routes/getLogEpoch.js +7 -0
  24. package/dist/http/routes/getLogEpoch.js.map +1 -0
  25. package/dist/http/routes/getLogs.d.ts.map +1 -1
  26. package/dist/http/routes/getLogs.js +26 -5
  27. package/dist/http/routes/getLogs.js.map +1 -1
  28. package/dist/http/routes/getTail.d.ts.map +1 -1
  29. package/dist/http/routes/getTail.js +26 -5
  30. package/dist/http/routes/getTail.js.map +1 -1
  31. package/dist/http/routes/index.d.ts.map +1 -1
  32. package/dist/http/routes/index.js +4 -0
  33. package/dist/http/routes/index.js.map +1 -1
  34. package/dist/http/routes/logEpochQuery.d.ts +20 -0
  35. package/dist/http/routes/logEpochQuery.d.ts.map +1 -0
  36. package/dist/http/routes/logEpochQuery.js +57 -0
  37. package/dist/http/routes/logEpochQuery.js.map +1 -0
  38. package/dist/http/routes/postEval.d.ts.map +1 -1
  39. package/dist/http/routes/postEval.js +5 -0
  40. package/dist/http/routes/postEval.js.map +1 -1
  41. package/dist/http/server.d.ts +2 -1
  42. package/dist/http/server.d.ts.map +1 -1
  43. package/dist/http/server.js.map +1 -1
  44. package/package.json +2 -2
@@ -0,0 +1,291 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { LOG_LEVELS } from '@vforsh/argus-core';
3
+ const SCENARIO_ACTION_TIMEOUT_MS = 30_000;
4
+ const DEFAULT_LOG_LIMIT = 500;
5
+ const MAX_LOG_LIMIT = 5_000;
6
+ /** Install a nonce-scoped page-to-watcher bridge and wrap a bundled scenario expression with its context. */
7
+ export const installScenarioBridge = async (session, expression, args, services, timeoutMs) => {
8
+ const token = randomUUID();
9
+ const suffix = token.replaceAll('-', '');
10
+ const bindingName = `__argusScenarioSend_${suffix}`;
11
+ const responseName = `__argusScenarioReceive_${suffix}`;
12
+ const off = session.onEvent('Runtime.bindingCalled', (rawEvent, meta) => {
13
+ const { name, payload, executionContextId } = rawEvent;
14
+ if (name !== bindingName || typeof payload !== 'string' || typeof executionContextId !== 'number' || !Number.isInteger(executionContextId)) {
15
+ return;
16
+ }
17
+ const request = parseBridgeRequest(payload, token);
18
+ if (!request) {
19
+ return;
20
+ }
21
+ void respondToBridgeRequest(session, responseName, request, services, executionContextId, meta, timeoutMs);
22
+ });
23
+ try {
24
+ await session.sendAndWait('Runtime.addBinding', { name: bindingName }, { timeoutMs });
25
+ }
26
+ catch (error) {
27
+ off();
28
+ throw error;
29
+ }
30
+ let disposed = false;
31
+ return {
32
+ expression: buildScenarioExpression(expression, { bindingName, responseName, token, args: args ?? {} }),
33
+ dispose: async () => {
34
+ if (disposed)
35
+ return;
36
+ disposed = true;
37
+ off();
38
+ try {
39
+ await session.sendAndWait('Runtime.removeBinding', { name: bindingName }, { timeoutMs });
40
+ }
41
+ catch {
42
+ // Target detach/navigation already removes the binding.
43
+ }
44
+ },
45
+ };
46
+ };
47
+ const parseBridgeRequest = (payload, token) => {
48
+ try {
49
+ const parsed = JSON.parse(payload);
50
+ if (typeof parsed !== 'object' || parsed == null || Array.isArray(parsed)) {
51
+ return null;
52
+ }
53
+ const { token: requestToken, id, action, payload: requestPayload } = parsed;
54
+ if (requestToken !== token || typeof id !== 'number' || !Number.isInteger(id) || id < 1 || typeof action !== 'string') {
55
+ return null;
56
+ }
57
+ return { token: requestToken, id, action, payload: requestPayload };
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ };
63
+ const respondToBridgeRequest = async (session, responseName, request, services, executionContextId, meta, timeoutMs) => {
64
+ let response;
65
+ try {
66
+ response = { id: request.id, ok: true, result: await handleBridgeRequest(request, services) };
67
+ }
68
+ catch (error) {
69
+ response = { id: request.id, ok: false, error: formatError(error) };
70
+ }
71
+ try {
72
+ await sendBridgeResponse(session, responseName, response, executionContextId, meta, timeoutMs);
73
+ }
74
+ catch {
75
+ // The eval may have navigated or finished while an action was completing.
76
+ }
77
+ };
78
+ const handleBridgeRequest = async (request, services) => {
79
+ switch (request.action) {
80
+ case 'screenshot': {
81
+ const options = parseScreenshotOptions(request.payload);
82
+ return services.screenshotter.capture(options);
83
+ }
84
+ case 'checkpoint': {
85
+ const payload = requireRecord(request.payload, 'checkpoint payload');
86
+ const name = parseCheckpointName(payload.name);
87
+ const options = parseScreenshotOptions(payload.options);
88
+ const fileName = name.endsWith('.png') ? name : `${name}.png`;
89
+ return services.screenshotter.capture({ ...options, outFile: `scenarios/checkpoints/${fileName}` });
90
+ }
91
+ case 'logs.cursor':
92
+ return { cursor: services.buffer.getCursor() };
93
+ case 'logs.read':
94
+ return readScenarioLogs(services.buffer, request.payload);
95
+ default:
96
+ throw new Error(`Unsupported scenario action: ${request.action}`);
97
+ }
98
+ };
99
+ const parseScreenshotOptions = (value) => {
100
+ if (value == null)
101
+ return {};
102
+ const record = requireRecord(value, 'screenshot options');
103
+ const selector = record.selector;
104
+ const clip = record.clip;
105
+ if (selector != null && (typeof selector !== 'string' || !selector.trim())) {
106
+ throw new Error('selector must be a non-empty string');
107
+ }
108
+ if (selector != null && clip != null) {
109
+ throw new Error('selector and clip are mutually exclusive');
110
+ }
111
+ return {
112
+ selector: typeof selector === 'string' ? selector : undefined,
113
+ clip: clip == null ? undefined : parseClip(clip),
114
+ };
115
+ };
116
+ const parseClip = (value) => {
117
+ const clip = requireRecord(value, 'clip');
118
+ const { x, y, width, height } = clip;
119
+ if (!isFiniteNumber(x) || !isFiniteNumber(y) || !isFiniteNumber(width) || !isFiniteNumber(height)) {
120
+ throw new Error('clip.x, clip.y, clip.width, and clip.height must be finite numbers');
121
+ }
122
+ if (width <= 0 || height <= 0) {
123
+ throw new Error('clip.width and clip.height must be greater than 0');
124
+ }
125
+ return { x, y, width, height };
126
+ };
127
+ const isFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value);
128
+ const parseCheckpointName = (value) => {
129
+ if (typeof value !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(value)) {
130
+ throw new Error('checkpoint name must be 1-100 characters using letters, numbers, dot, underscore, or dash');
131
+ }
132
+ return value;
133
+ };
134
+ const readScenarioLogs = (buffer, value) => {
135
+ const payload = requireRecord(value, 'logs.read payload');
136
+ const cursor = payload.cursor;
137
+ if (typeof cursor !== 'string' || !cursor.trim()) {
138
+ throw new Error('log cursor must be a non-empty opaque cursor');
139
+ }
140
+ const { filters, limit } = parseLogOptions(payload.options);
141
+ return buffer.listAfterEpoch(cursor, filters, limit);
142
+ };
143
+ const parseLogOptions = (value) => {
144
+ if (value == null)
145
+ return { filters: {}, limit: DEFAULT_LOG_LIMIT };
146
+ const options = requireRecord(value, 'log options');
147
+ const levels = parseLogLevels(options.levels);
148
+ const matchCase = parseLogMatchCase(options.matchCase);
149
+ const match = compileLogMatch(options.match, matchCase);
150
+ const source = parseLogSource(options.source);
151
+ const limit = parseLogLimit(options.limit);
152
+ return {
153
+ filters: { levels, match, source },
154
+ limit,
155
+ };
156
+ };
157
+ const parseLogLevels = (value) => {
158
+ if (value == null)
159
+ return undefined;
160
+ if (Array.isArray(value) && value.every(isLogLevel))
161
+ return value;
162
+ throw new Error(`levels must contain only: ${LOG_LEVELS.join(', ')}`);
163
+ };
164
+ const isLogLevel = (value) => typeof value === 'string' && LOG_LEVELS.includes(value);
165
+ const parseLogMatchCase = (value) => {
166
+ if (value == null || value === 'sensitive')
167
+ return 'sensitive';
168
+ if (value === 'insensitive')
169
+ return value;
170
+ throw new Error('matchCase must be sensitive or insensitive');
171
+ };
172
+ const compileLogMatch = (value, matchCase) => {
173
+ if (value == null)
174
+ return undefined;
175
+ const patterns = Array.isArray(value) ? value : [value];
176
+ if (patterns.length === 0)
177
+ return undefined;
178
+ if (!patterns.every(isNonEmptyString)) {
179
+ throw new Error('match must be a non-empty string or array of non-empty strings');
180
+ }
181
+ try {
182
+ return patterns.map((pattern) => new RegExp(pattern, matchCase === 'insensitive' ? 'i' : undefined));
183
+ }
184
+ catch (error) {
185
+ throw new Error(`invalid log match expression: ${formatError(error)}`);
186
+ }
187
+ };
188
+ const isNonEmptyString = (value) => typeof value === 'string' && value.length > 0;
189
+ const parseLogSource = (value) => {
190
+ if (value == null)
191
+ return undefined;
192
+ if (typeof value === 'string' && value.trim())
193
+ return value;
194
+ throw new Error('source must be a non-empty string');
195
+ };
196
+ const parseLogLimit = (value) => {
197
+ const limit = value ?? DEFAULT_LOG_LIMIT;
198
+ if (typeof limit === 'number' && Number.isInteger(limit) && limit >= 1 && limit <= MAX_LOG_LIMIT)
199
+ return limit;
200
+ throw new Error(`limit must be an integer from 1 to ${MAX_LOG_LIMIT}`);
201
+ };
202
+ const requireRecord = (value, label) => {
203
+ if (typeof value !== 'object' || value == null || Array.isArray(value)) {
204
+ throw new Error(`${label} must be an object`);
205
+ }
206
+ return value;
207
+ };
208
+ const sendBridgeResponse = async (session, responseName, response, executionContextId, meta, timeoutMs) => {
209
+ await session.sendAndWait('Runtime.evaluate', {
210
+ expression: `globalThis[${JSON.stringify(responseName)}]?.(${JSON.stringify(response)})`,
211
+ contextId: executionContextId,
212
+ returnByValue: true,
213
+ silent: true,
214
+ }, { timeoutMs, sessionId: meta.sessionId ?? undefined });
215
+ };
216
+ const buildScenarioExpression = (expression, options) => `(async () => {
217
+ const __argusBridge = (() => {
218
+ const send = globalThis[${JSON.stringify(options.bindingName)}];
219
+ if (typeof send !== 'function') throw new Error('Argus scenario bridge is unavailable');
220
+ const pending = new Map();
221
+ let nextId = 1;
222
+ const receiveName = ${JSON.stringify(options.responseName)};
223
+ Object.defineProperty(globalThis, receiveName, {
224
+ configurable: true,
225
+ value: (message) => {
226
+ const entry = pending.get(message?.id);
227
+ if (!entry) return;
228
+ pending.delete(message.id);
229
+ clearTimeout(entry.timeout);
230
+ if (message.ok) entry.resolve(message.result);
231
+ else entry.reject(new Error(message.error));
232
+ },
233
+ });
234
+ const request = (action, payload) => new Promise((resolve, reject) => {
235
+ const id = nextId++;
236
+ const timeout = setTimeout(() => {
237
+ pending.delete(id);
238
+ reject(new Error('Argus scenario action timed out after ${SCENARIO_ACTION_TIMEOUT_MS}ms: ' + action));
239
+ }, ${SCENARIO_ACTION_TIMEOUT_MS});
240
+ pending.set(id, { resolve, reject, timeout });
241
+ try {
242
+ send(JSON.stringify({ token: ${JSON.stringify(options.token)}, id, action, payload }));
243
+ } catch (error) {
244
+ clearTimeout(timeout);
245
+ pending.delete(id);
246
+ reject(error);
247
+ }
248
+ });
249
+ const logs = Object.freeze({
250
+ cursor: async () => (await request('logs.cursor')).cursor,
251
+ read: (cursor, logOptions) => request('logs.read', { cursor, options: logOptions }),
252
+ session: async () => {
253
+ let cursor = (await request('logs.cursor')).cursor;
254
+ return Object.freeze({
255
+ get cursor() { return cursor; },
256
+ async read(logOptions) {
257
+ const result = await request('logs.read', { cursor, options: logOptions });
258
+ cursor = result.nextCursor;
259
+ return result;
260
+ },
261
+ });
262
+ },
263
+ });
264
+ const context = Object.freeze({
265
+ args: Object.freeze(${JSON.stringify(options.args)}),
266
+ screenshot: (screenshotOptions) => request('screenshot', screenshotOptions),
267
+ checkpoint: (name, screenshotOptions) => request('checkpoint', { name, options: screenshotOptions }),
268
+ logs,
269
+ });
270
+ return {
271
+ context,
272
+ dispose() {
273
+ delete globalThis[receiveName];
274
+ for (const entry of pending.values()) {
275
+ clearTimeout(entry.timeout);
276
+ entry.reject(new Error('Argus scenario finished before the action completed'));
277
+ }
278
+ pending.clear();
279
+ },
280
+ };
281
+ })();
282
+ const __argusScenarioContext = __argusBridge.context;
283
+ try {
284
+ return await (${expression}
285
+ );
286
+ } finally {
287
+ __argusBridge.dispose();
288
+ }
289
+ })()`;
290
+ const formatError = (error) => (error instanceof Error ? error.message : String(error));
291
+ //# sourceMappingURL=scenarioBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarioBridge.js","sourceRoot":"","sources":["../../src/cdp/scenarioBridge.ts"],"names":[],"mappings":"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"}
package/dist/events.d.ts CHANGED
@@ -41,7 +41,10 @@ export type CdpDetachedEvent = {
41
41
  * Query parameters for log/tail requests.
42
42
  */
43
43
  export type LogRequestQuery = {
44
- after?: number;
44
+ /** Opaque cursor returned by `/logs/cursor` or `/logs/epoch`. */
45
+ after?: string;
46
+ /** Alias for `after` with explicit baseline semantics. */
47
+ sinceEpoch?: string;
45
48
  limit?: number;
46
49
  levels?: LogLevel[];
47
50
  match?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
2
+ //# sourceMappingURL=getLogCursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLogCursor.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getLogCursor.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAIhB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'GET',
4
+ path: '/logs/cursor',
5
+ handle: ({ ctx }) => ({ ok: true, cursor: ctx.buffer.getCursor() }),
6
+ });
7
+ //# sourceMappingURL=getLogCursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLogCursor.js","sourceRoot":"","sources":["../../../src/http/routes/getLogCursor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAA+B;IAClE,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;CACnE,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
2
+ //# sourceMappingURL=getLogEpoch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLogEpoch.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getLogEpoch.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAIhB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'GET',
4
+ path: '/logs/epoch',
5
+ handle: ({ ctx }) => ({ ok: true, epoch: ctx.buffer.beginLogEpoch() }),
6
+ });
7
+ //# sourceMappingURL=getLogEpoch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLogEpoch.js","sourceRoot":"","sources":["../../../src/http/routes/getLogEpoch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAA8B;IACjE,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;CACtE,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLogs.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getLogs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,KAAK,mDA+BhB,CAAA"}
1
+ {"version":3,"file":"getLogs.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getLogs.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,mDAiDhB,CAAA"}
@@ -1,11 +1,16 @@
1
+ import { LogEpochError } from '../../buffer/LogBuffer.js';
1
2
  import { defineJsonRoute } from './defineRoute.js';
2
3
  import { emitRequest } from './types.js';
3
4
  import { respondInvalidMatch, respondInvalidMatchCase, clampNumber, parseLevels, resolveMatchCase, normalizeMatchPatterns, compileMatchPatterns, normalizeQueryValue, } from '../httpUtils.js';
5
+ import { listLogsFromPosition, parseLogPosition, respondLogEpochError } from './logEpochQuery.js';
4
6
  export const route = defineJsonRoute({
5
7
  method: 'GET',
6
8
  path: '/logs',
7
9
  handle: ({ res, url, ctx }) => {
8
- const after = clampNumber(url.searchParams.get('after'), 0);
10
+ const position = parseLogPosition(url);
11
+ if ('error' in position) {
12
+ return respondLogEpochError(res, new LogEpochError('invalid', position.error));
13
+ }
9
14
  const limit = clampNumber(url.searchParams.get('limit'), 500, 1, 5000);
10
15
  const levels = parseLevels(url.searchParams.get('levels'));
11
16
  const match = url.searchParams.getAll('match');
@@ -24,10 +29,26 @@ export const route = defineJsonRoute({
24
29
  return respondInvalidMatch(res, compiledMatch.error);
25
30
  }
26
31
  // Emitted manually to include query metadata in the request event.
27
- emitRequest(ctx, res, 'logs', { after, limit, levels, match: matchPatterns.patterns, matchCase, source, sinceTs });
28
- const events = ctx.buffer.listAfter(after, { levels, match: compiledMatch.match, source, sinceTs }, limit);
29
- const nextAfter = events.length > 0 ? (events[events.length - 1]?.id ?? after) : after;
30
- return { ok: true, events, nextAfter };
32
+ emitRequest(ctx, res, 'logs', {
33
+ after: position.kind === 'epoch' && url.searchParams.has('after') ? position.epoch : undefined,
34
+ sinceEpoch: position.kind === 'epoch' ? position.epoch : undefined,
35
+ limit,
36
+ levels,
37
+ match: matchPatterns.patterns,
38
+ matchCase,
39
+ source,
40
+ sinceTs,
41
+ });
42
+ try {
43
+ const result = listLogsFromPosition(ctx.buffer, position, { levels, match: compiledMatch.match, source, sinceTs }, limit);
44
+ return { ok: true, ...result };
45
+ }
46
+ catch (error) {
47
+ if (error instanceof LogEpochError) {
48
+ return respondLogEpochError(res, error);
49
+ }
50
+ throw error;
51
+ }
31
52
  },
32
53
  });
33
54
  //# sourceMappingURL=getLogs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getLogs.js","sourceRoot":"","sources":["../../../src/http/routes/getLogs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,iBAAiB,CAAA;AAExB,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAA0B;IAC7D,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACtE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAClE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;QAEvE,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACnD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC7E,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,mEAAmE;QACnE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAElH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;QAC1G,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACtF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IACvC,CAAC;CACD,CAAC,CAAA"}
1
+ {"version":3,"file":"getLogs.js","sourceRoot":"","sources":["../../../src/http/routes/getLogs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTail.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getTail.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,KAAK,mDA+BhB,CAAA"}
1
+ {"version":3,"file":"getTail.d.ts","sourceRoot":"","sources":["../../../src/http/routes/getTail.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,mDAiDhB,CAAA"}
@@ -1,11 +1,16 @@
1
+ import { LogEpochError } from '../../buffer/LogBuffer.js';
1
2
  import { defineJsonRoute } from './defineRoute.js';
2
3
  import { emitRequest } from './types.js';
3
4
  import { respondInvalidMatch, respondInvalidMatchCase, clampNumber, parseLevels, resolveMatchCase, normalizeMatchPatterns, compileMatchPatterns, normalizeQueryValue, } from '../httpUtils.js';
5
+ import { parseLogPosition, respondLogEpochError, waitForLogsFromPosition } from './logEpochQuery.js';
4
6
  export const route = defineJsonRoute({
5
7
  method: 'GET',
6
8
  path: '/tail',
7
9
  handle: async ({ res, url, ctx }) => {
8
- const after = clampNumber(url.searchParams.get('after'), 0);
10
+ const position = parseLogPosition(url);
11
+ if ('error' in position) {
12
+ return respondLogEpochError(res, new LogEpochError('invalid', position.error));
13
+ }
9
14
  const limit = clampNumber(url.searchParams.get('limit'), 500, 1, 5000);
10
15
  const timeoutMs = clampNumber(url.searchParams.get('timeoutMs'), 25_000, 1000, 120_000);
11
16
  const levels = parseLevels(url.searchParams.get('levels'));
@@ -24,10 +29,26 @@ export const route = defineJsonRoute({
24
29
  return respondInvalidMatch(res, compiledMatch.error);
25
30
  }
26
31
  // Emitted manually to include query metadata in the request event.
27
- emitRequest(ctx, res, 'tail', { after, limit, levels, match: matchPatterns.patterns, matchCase, source, timeoutMs });
28
- const events = await ctx.buffer.waitForAfter(after, { levels, match: compiledMatch.match, source }, limit, timeoutMs);
29
- const nextAfter = events.length > 0 ? (events[events.length - 1]?.id ?? after) : after;
30
- return { ok: true, events, nextAfter, timedOut: events.length === 0 };
32
+ emitRequest(ctx, res, 'tail', {
33
+ after: position.kind === 'epoch' ? position.epoch : undefined,
34
+ sinceEpoch: position.kind === 'epoch' ? position.epoch : undefined,
35
+ limit,
36
+ levels,
37
+ match: matchPatterns.patterns,
38
+ matchCase,
39
+ source,
40
+ timeoutMs,
41
+ });
42
+ try {
43
+ const result = await waitForLogsFromPosition(ctx.buffer, position, { levels, match: compiledMatch.match, source }, limit, timeoutMs);
44
+ return { ok: true, ...result, timedOut: result.events.length === 0 };
45
+ }
46
+ catch (error) {
47
+ if (error instanceof LogEpochError) {
48
+ return respondLogEpochError(res, error);
49
+ }
50
+ throw error;
51
+ }
31
52
  },
32
53
  });
33
54
  //# sourceMappingURL=getTail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTail.js","sourceRoot":"","sources":["../../../src/http/routes/getTail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,iBAAiB,CAAA;AAExB,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAA0B;IAC7D,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACvF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAElE,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACnD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC7E,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,mEAAmE;QACnE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAEpH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACrH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACtF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAA;IACtE,CAAC;CACD,CAAC,CAAA"}
1
+ {"version":3,"file":"getTail.js","sourceRoot":"","sources":["../../../src/http/routes/getTail.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AA4D9D;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,sBAAsB,EA6D1D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AA8D9D;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,sBAAsB,EA+D1D,CAAA"}
@@ -1,5 +1,7 @@
1
1
  import { route as getStatus } from './getStatus.js';
2
2
  import { route as getLogs } from './getLogs.js';
3
+ import { route as getLogCursor } from './getLogCursor.js';
4
+ import { route as getLogEpoch } from './getLogEpoch.js';
3
5
  import { route as getTail } from './getTail.js';
4
6
  import { route as getNet } from './getNet.js';
5
7
  import { route as getNetRequests } from './getNetRequests.js';
@@ -61,6 +63,8 @@ import { route as postDetach } from './postDetach.js';
61
63
  */
62
64
  export const watcherRoutes = [
63
65
  getStatus,
66
+ getLogCursor,
67
+ getLogEpoch,
64
68
  getLogs,
65
69
  getTail,
66
70
  getNet,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type http from 'node:http';
2
+ import type { LogEpoch } from '@vforsh/argus-core';
3
+ import { LogEpochError, type LogBuffer, type LogEpochQueryResult, type LogFilters } from '../../buffer/LogBuffer.js';
4
+ export type LogPositionQuery = {
5
+ kind: 'all';
6
+ } | {
7
+ kind: 'epoch';
8
+ epoch: LogEpoch;
9
+ };
10
+ /** Parse the opaque epoch form, or the unbounded query with no marker. */
11
+ export declare const parseLogPosition: (url: URL) => LogPositionQuery | {
12
+ error: string;
13
+ };
14
+ /** Respond with a stable status/code when an epoch cannot produce a complete delta. */
15
+ export declare const respondLogEpochError: (res: http.ServerResponse, error: LogEpochError) => void;
16
+ /** Read a bounded log page from either the full retained buffer or an opaque cursor. */
17
+ export declare const listLogsFromPosition: (buffer: LogBuffer, position: LogPositionQuery, filters: LogFilters, limit: number) => LogEpochQueryResult;
18
+ /** Long-poll from either the full retained buffer or an opaque cursor. */
19
+ export declare const waitForLogsFromPosition: (buffer: LogBuffer, position: LogPositionQuery, filters: LogFilters, limit: number, timeoutMs: number) => Promise<LogEpochQueryResult>;
20
+ //# sourceMappingURL=logEpochQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logEpochQuery.d.ts","sourceRoot":"","sources":["../../../src/http/routes/logEpochQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAGpH,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEnF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,GAAI,KAAK,GAAG,KAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAe7E,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,GAAI,KAAK,IAAI,CAAC,cAAc,EAAE,OAAO,aAAa,KAAG,IAarF,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS,EAAE,UAAU,gBAAgB,EAAE,SAAS,UAAU,EAAE,OAAO,MAAM,KAAG,mBAMxH,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,GACnC,QAAQ,SAAS,EACjB,UAAU,gBAAgB,EAC1B,SAAS,UAAU,EACnB,OAAO,MAAM,EACb,WAAW,MAAM,KACf,OAAO,CAAC,mBAAmB,CAO7B,CAAA"}