@vforsh/argus-client 0.2.0 → 0.3.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 (48) hide show
  1. package/README.md +65 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/client/context.d.ts +31 -0
  4. package/dist/client/context.d.ts.map +1 -0
  5. package/dist/client/context.js +20 -0
  6. package/dist/client/context.js.map +1 -0
  7. package/dist/client/createArgusClient.d.ts +12 -2
  8. package/dist/client/createArgusClient.d.ts.map +1 -1
  9. package/dist/client/createArgusClient.js +26 -165
  10. package/dist/client/createArgusClient.js.map +1 -1
  11. package/dist/client/methods/capture.d.ts +12 -0
  12. package/dist/client/methods/capture.d.ts.map +1 -0
  13. package/dist/client/methods/capture.js +89 -0
  14. package/dist/client/methods/capture.js.map +1 -0
  15. package/dist/client/methods/evalMethods.d.ts +9 -0
  16. package/dist/client/methods/evalMethods.d.ts.map +1 -0
  17. package/dist/client/methods/evalMethods.js +127 -0
  18. package/dist/client/methods/evalMethods.js.map +1 -0
  19. package/dist/client/methods/inspect.d.ts +19 -0
  20. package/dist/client/methods/inspect.d.ts.map +1 -0
  21. package/dist/client/methods/inspect.js +110 -0
  22. package/dist/client/methods/inspect.js.map +1 -0
  23. package/dist/client/methods/page.d.ts +9 -0
  24. package/dist/client/methods/page.d.ts.map +1 -0
  25. package/dist/client/methods/page.js +38 -0
  26. package/dist/client/methods/page.js.map +1 -0
  27. package/dist/client/watcherHandle.d.ts +9 -0
  28. package/dist/client/watcherHandle.d.ts.map +1 -0
  29. package/dist/client/watcherHandle.js +29 -0
  30. package/dist/client/watcherHandle.js.map +1 -0
  31. package/dist/client/watcherRequest.d.ts.map +1 -1
  32. package/dist/client/watcherRequest.js +7 -0
  33. package/dist/client/watcherRequest.js.map +1 -1
  34. package/dist/eval/ArgusEvalError.d.ts +30 -0
  35. package/dist/eval/ArgusEvalError.d.ts.map +1 -0
  36. package/dist/eval/ArgusEvalError.js +37 -0
  37. package/dist/eval/ArgusEvalError.js.map +1 -0
  38. package/dist/eval/pollEval.d.ts +81 -0
  39. package/dist/eval/pollEval.d.ts.map +1 -0
  40. package/dist/eval/pollEval.js +65 -0
  41. package/dist/eval/pollEval.js.map +1 -0
  42. package/dist/index.d.ts +4 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/types.d.ts +217 -2
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +2 -2
@@ -1,172 +1,33 @@
1
- import { DEFAULT_TTL_MS } from '@vforsh/argus-core';
2
- import { previewLogEvent } from '../logs/previewLogEvent.js';
3
- import { readAndPruneRegistry } from '../registry/readAndPruneRegistry.js';
4
- import { buildLogsParams, buildNetParams } from './queryParams.js';
5
- import { requestWatcher } from './watcherRequest.js';
1
+ import { createClientContext } from './context.js';
2
+ import { createCaptureMethods } from './methods/capture.js';
3
+ import { createEvalMethods } from './methods/evalMethods.js';
4
+ import { createInspectMethods } from './methods/inspect.js';
5
+ import { createPageMethods } from './methods/page.js';
6
+ import { createWatcherClient } from './watcherHandle.js';
6
7
  /**
7
- * Create an Argus client for list/logs queries.
8
+ * Create an Argus client for driving a watcher over its HTTP API.
9
+ *
8
10
  * Throws on invalid input, missing watcher, or unreachable watcher.
9
- * Note: list/logs prune stale registry entries and remove unreachable watchers.
11
+ * Note: registry-backed calls prune stale entries and remove unreachable watchers.
12
+ *
13
+ * @example
14
+ * const client = createArgusClient()
15
+ * const ready = await client.evalUntil('playground', 'window.app?.ready')
16
+ *
17
+ * @example Watcher-bound handle
18
+ * const page = createArgusClient().watcher('playground')
19
+ * await page.reload({ ignoreCache: true })
20
+ * const count = await page.evalValue<number>('document.querySelectorAll("li").length')
10
21
  */
11
22
  export const createArgusClient = (options = {}) => {
12
- const registryPath = options.registryPath;
13
- const ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
14
- const listTimeoutMs = options.timeoutMs ?? 2_000;
15
- const logsTimeoutMs = options.timeoutMs ?? 5_000;
16
- return {
17
- list: async (listOptions = {}) => {
18
- const registry = await readAndPruneRegistry({ registryPath, ttlMs });
19
- const byCwd = normalizeByCwd(listOptions.byCwd);
20
- const watchers = byCwd ? filterByCwd(registry, byCwd) : Object.values(registry.watchers);
21
- if (watchers.length === 0) {
22
- return [];
23
- }
24
- const results = [];
25
- for (const watcher of watchers) {
26
- try {
27
- const { data: status } = await requestWatcher({ registryPath, ttlMs }, watcher.id, {
28
- path: '/status',
29
- timeoutMs: listTimeoutMs,
30
- });
31
- results.push({ watcher, reachable: true, status });
32
- }
33
- catch (error) {
34
- results.push({ watcher, reachable: false, error: formatError(error) });
35
- }
36
- }
37
- return results;
38
- },
39
- logs: async (watcherId, logsOptions = {}) => {
40
- const params = buildLogsParams(logsOptions);
41
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
42
- path: '/logs',
43
- query: params,
44
- timeoutMs: logsTimeoutMs,
45
- });
46
- const mode = logsOptions.mode ?? 'preview';
47
- const events = mode === 'full' ? response.events : response.events.map((event) => previewLogEvent(event));
48
- return {
49
- events,
50
- nextCursor: response.nextCursor,
51
- };
52
- },
53
- logCursor: async (watcherId) => {
54
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
55
- path: '/logs/cursor',
56
- timeoutMs: logsTimeoutMs,
57
- });
58
- return { cursor: response.cursor };
59
- },
60
- beginLogEpoch: async (watcherId) => {
61
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
62
- path: '/logs/epoch',
63
- timeoutMs: logsTimeoutMs,
64
- });
65
- return { epoch: response.epoch };
66
- },
67
- net: async (watcherId, netOptions = {}) => {
68
- const params = buildNetParams(netOptions);
69
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
70
- path: '/net',
71
- query: params,
72
- timeoutMs: logsTimeoutMs,
73
- });
74
- return {
75
- requests: response.requests,
76
- nextAfter: response.nextAfter,
77
- };
78
- },
79
- netRequest: async (watcherId, request) => {
80
- const params = new URLSearchParams();
81
- if (typeof request === 'number') {
82
- if (!Number.isFinite(request) || request < 1) {
83
- throw new Error(`Invalid request value: ${request}`);
84
- }
85
- params.set('id', String(request));
86
- }
87
- else {
88
- const normalized = request.trim();
89
- if (!normalized) {
90
- throw new Error('request is required');
91
- }
92
- params.set(/^\d+$/.test(normalized) ? 'id' : 'requestId', normalized);
93
- }
94
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
95
- path: '/net/request',
96
- query: params,
97
- timeoutMs: logsTimeoutMs,
98
- });
99
- return response.request;
100
- },
101
- eval: async (watcherId, evalOptions) => {
102
- if (!evalOptions || !evalOptions.expression || evalOptions.expression.trim() === '') {
103
- throw new Error('expression is required');
104
- }
105
- const timeoutMs = evalOptions.timeoutMs ?? logsTimeoutMs;
106
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
107
- path: '/eval',
108
- timeoutMs,
109
- method: 'POST',
110
- body: evalOptions,
111
- });
112
- return {
113
- result: response.result,
114
- type: response.type,
115
- exception: response.exception,
116
- };
117
- },
118
- traceStart: async (watcherId, traceOptions = {}) => {
119
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
120
- path: '/trace/start',
121
- timeoutMs: 10_000,
122
- method: 'POST',
123
- body: traceOptions,
124
- });
125
- return { traceId: response.traceId, sessionName: response.sessionName, outFile: response.outFile };
126
- },
127
- traceStop: async (watcherId, traceOptions = {}) => {
128
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
129
- path: '/trace/stop',
130
- timeoutMs: 20_000,
131
- method: 'POST',
132
- body: traceOptions,
133
- });
134
- return {
135
- sessionName: response.sessionName,
136
- outFile: response.outFile,
137
- eventCount: response.eventCount,
138
- durationMs: response.durationMs,
139
- };
140
- },
141
- screenshot: async (watcherId, screenshotOptions = {}) => {
142
- const { data: response } = await requestWatcher({ registryPath, ttlMs }, watcherId, {
143
- path: '/screenshot',
144
- timeoutMs: logsTimeoutMs,
145
- method: 'POST',
146
- body: screenshotOptions,
147
- });
148
- return { outFile: response.outFile, clipped: response.clipped };
149
- },
23
+ const ctx = createClientContext(options);
24
+ const client = {
25
+ ...createInspectMethods(ctx),
26
+ ...createEvalMethods(ctx),
27
+ ...createPageMethods(ctx),
28
+ ...createCaptureMethods(ctx),
29
+ watcher: (watcherId) => createWatcherClient(client, watcherId),
150
30
  };
151
- };
152
- const normalizeByCwd = (value) => {
153
- if (value == null) {
154
- return undefined;
155
- }
156
- const trimmed = value.trim();
157
- if (!trimmed) {
158
- return undefined;
159
- }
160
- return trimmed;
161
- };
162
- const filterByCwd = (registry, byCwd) => Object.values(registry.watchers).filter((watcher) => watcher.cwd && watcher.cwd.includes(byCwd));
163
- const formatError = (error) => {
164
- if (!error) {
165
- return 'unknown error';
166
- }
167
- if (error instanceof Error) {
168
- return error.message;
169
- }
170
- return String(error);
31
+ return client;
171
32
  };
172
33
  //# sourceMappingURL=createArgusClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createArgusClient.js","sourceRoot":"","sources":["../../src/client/createArgusClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createArgusClient.js","sourceRoot":"","sources":["../../src/client/createArgusClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAA8B,EAAE,EAAe,EAAE;IAClF,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,MAAM,MAAM,GAAgB;QAC3B,GAAG,oBAAoB,CAAC,GAAG,CAAC;QAC5B,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,iBAAiB,CAAC,GAAG,CAAC;QACzB,GAAG,oBAAoB,CAAC,GAAG,CAAC;QAC5B,OAAO,EAAE,CAAC,SAAiB,EAAiB,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC;KACrF,CAAA;IAED,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { RecordCaptureOptions, RecordOptions, RecordStartResult, RecordStopOptions, RecordStopResult, ScreenshotOptions, ScreenshotResult, TraceStartOptions, TraceStartResult, TraceStopOptions, TraceStopResult } from '../../types.js';
2
+ import type { ClientContext } from '../context.js';
3
+ /** Capture methods: screenshots, video recording, Chrome traces. All write to disk on the watcher host. */
4
+ export declare const createCaptureMethods: (ctx: ClientContext) => {
5
+ screenshot: (watcherId: string, options?: ScreenshotOptions) => Promise<ScreenshotResult>;
6
+ record: (watcherId: string, options: RecordCaptureOptions) => Promise<RecordStopResult>;
7
+ recordStart: (watcherId: string, options?: RecordOptions) => Promise<RecordStartResult>;
8
+ recordStop: (watcherId: string, options?: RecordStopOptions) => Promise<RecordStopResult>;
9
+ traceStart: (watcherId: string, options?: TraceStartOptions) => Promise<TraceStartResult>;
10
+ traceStop: (watcherId: string, options?: TraceStopOptions) => Promise<TraceStopResult>;
11
+ };
12
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/client/methods/capture.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACX,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAIlD,2GAA2G;AAC3G,eAAO,MAAM,oBAAoB,GAAI,KAAK,aAAa;4BACxB,MAAM,YAAW,iBAAiB,KAAQ,OAAO,CAAC,gBAAgB,CAAC;wBAWvE,MAAM,WAAW,oBAAoB,KAAG,OAAO,CAAC,gBAAgB,CAAC;6BAiB5D,MAAM,YAAW,aAAa,KAAQ,OAAO,CAAC,iBAAiB,CAAC;4BAoBjE,MAAM,YAAW,iBAAiB,KAAQ,OAAO,CAAC,gBAAgB,CAAC;4BAWnE,MAAM,YAAW,iBAAiB,KAAQ,OAAO,CAAC,gBAAgB,CAAC;2BAWpE,MAAM,YAAW,gBAAgB,KAAQ,OAAO,CAAC,eAAe,CAAC;CAU7F,CAAA"}
@@ -0,0 +1,89 @@
1
+ import { RECORD_TIMEOUT_MS, SCREENSHOT_TIMEOUT_MS, TRACE_START_TIMEOUT_MS, TRACE_STOP_TIMEOUT_MS } from '../context.js';
2
+ import { requestWatcher } from '../watcherRequest.js';
3
+ /** Capture methods: screenshots, video recording, Chrome traces. All write to disk on the watcher host. */
4
+ export const createCaptureMethods = (ctx) => ({
5
+ screenshot: async (watcherId, options = {}) => {
6
+ const { data } = await requestWatcher(ctx, watcherId, {
7
+ path: '/screenshot',
8
+ timeoutMs: SCREENSHOT_TIMEOUT_MS,
9
+ method: 'POST',
10
+ body: options,
11
+ });
12
+ return { outFile: data.outFile, clipped: data.clipped };
13
+ },
14
+ record: async (watcherId, options) => {
15
+ if (!Number.isFinite(options?.durationMs) || options.durationMs <= 0) {
16
+ throw new Error('durationMs must be greater than 0');
17
+ }
18
+ assertSingleRecordTarget(options);
19
+ // The watcher holds the request open for the whole capture, then encodes.
20
+ const { data } = await requestWatcher(ctx, watcherId, {
21
+ path: '/record',
22
+ timeoutMs: options.durationMs + RECORD_TIMEOUT_MS,
23
+ method: 'POST',
24
+ body: options,
25
+ });
26
+ return toRecordStopResult(data);
27
+ },
28
+ recordStart: async (watcherId, options = {}) => {
29
+ assertSingleRecordTarget(options);
30
+ const { data } = await requestWatcher(ctx, watcherId, {
31
+ path: '/record/start',
32
+ timeoutMs: RECORD_TIMEOUT_MS,
33
+ method: 'POST',
34
+ body: options,
35
+ });
36
+ return {
37
+ recordId: data.recordId,
38
+ sessionName: data.sessionName,
39
+ outFile: data.outFile,
40
+ format: data.format,
41
+ fps: data.fps,
42
+ clipped: data.clipped,
43
+ };
44
+ },
45
+ recordStop: async (watcherId, options = {}) => {
46
+ const { data } = await requestWatcher(ctx, watcherId, {
47
+ path: '/record/stop',
48
+ timeoutMs: RECORD_TIMEOUT_MS,
49
+ method: 'POST',
50
+ body: options,
51
+ });
52
+ return toRecordStopResult(data);
53
+ },
54
+ traceStart: async (watcherId, options = {}) => {
55
+ const { data } = await requestWatcher(ctx, watcherId, {
56
+ path: '/trace/start',
57
+ timeoutMs: TRACE_START_TIMEOUT_MS,
58
+ method: 'POST',
59
+ body: options,
60
+ });
61
+ return { traceId: data.traceId, sessionName: data.sessionName, outFile: data.outFile };
62
+ },
63
+ traceStop: async (watcherId, options = {}) => {
64
+ const { data } = await requestWatcher(ctx, watcherId, {
65
+ path: '/trace/stop',
66
+ timeoutMs: TRACE_STOP_TIMEOUT_MS,
67
+ method: 'POST',
68
+ body: options,
69
+ });
70
+ return { sessionName: data.sessionName, outFile: data.outFile, eventCount: data.eventCount, durationMs: data.durationMs };
71
+ },
72
+ });
73
+ /** The watcher rejects both crop modes at once; fail client-side so the message is immediate. */
74
+ const assertSingleRecordTarget = (options) => {
75
+ if (options.selector && options.clip) {
76
+ throw new Error('selector and clip are mutually exclusive');
77
+ }
78
+ };
79
+ const toRecordStopResult = (data) => ({
80
+ recordId: data.recordId,
81
+ sessionName: data.sessionName,
82
+ outFile: data.outFile,
83
+ format: data.format,
84
+ fps: data.fps,
85
+ clipped: data.clipped,
86
+ frameCount: data.frameCount,
87
+ durationMs: data.durationMs,
88
+ });
89
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/client/methods/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { EvalOptions, EvalResult, EvalUntilOptions, EvalUntilResult, EvalValueOptions } from '../../types.js';
2
+ import type { ClientContext } from '../context.js';
3
+ /** Page evaluation methods: raw envelope, unwrapped value, and polling. */
4
+ export declare const createEvalMethods: (ctx: ClientContext) => {
5
+ eval: (watcherId: string, options: EvalOptions) => Promise<EvalResult>;
6
+ evalValue: <T = unknown>(watcherId: string, expression: string, options?: EvalValueOptions) => Promise<T>;
7
+ evalUntil: (watcherId: string, expression: string, options?: EvalUntilOptions) => Promise<EvalUntilResult>;
8
+ };
9
+ //# sourceMappingURL=evalMethods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evalMethods.d.ts","sourceRoot":"","sources":["../../../src/client/methods/evalMethods.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGlH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AASlD,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,GAAI,KAAK,aAAa;sBACjB,MAAM,WAAW,WAAW,KAAG,OAAO,CAAC,UAAU,CAAC;gBAe3D,CAAC,uBAAuB,MAAM,cAAc,MAAM,YAAW,gBAAgB,KAAQ,OAAO,CAAC,CAAC,CAAC;2BAwB1F,MAAM,cAAc,MAAM,YAAW,gBAAgB,KAAQ,OAAO,CAAC,eAAe,CAAC;CAiCnH,CAAA"}
@@ -0,0 +1,127 @@
1
+ import { ArgusEvalError } from '../../eval/ArgusEvalError.js';
2
+ import { pollEval } from '../../eval/pollEval.js';
3
+ import { requestWatcher } from '../watcherRequest.js';
4
+ /** Default poll spacing for `evalUntil`, matching the CLI's `--interval` default. */
5
+ const DEFAULT_POLL_INTERVAL_MS = 250;
6
+ /** Default `evalUntil` budget. Callers polling for slow boot flows should raise this. */
7
+ const DEFAULT_POLL_TIMEOUT_MS = 30_000;
8
+ /** Page evaluation methods: raw envelope, unwrapped value, and polling. */
9
+ export const createEvalMethods = (ctx) => {
10
+ const runEval = async (watcherId, options) => {
11
+ if (!options?.expression || options.expression.trim() === '') {
12
+ throw new Error('expression is required');
13
+ }
14
+ const { data: response } = await requestWatcher(ctx, watcherId, {
15
+ path: '/eval',
16
+ timeoutMs: options.timeoutMs ?? ctx.requestTimeoutMs,
17
+ method: 'POST',
18
+ body: options,
19
+ });
20
+ return { result: response.result, type: response.type, exception: response.exception };
21
+ };
22
+ const evalValue = async (watcherId, expression, options = {}) => {
23
+ if (!expression || expression.trim() === '') {
24
+ throw new Error('expression is required');
25
+ }
26
+ const useJsonValue = options.jsonValue ?? true;
27
+ const result = await runEval(watcherId, {
28
+ ...options,
29
+ expression,
30
+ returnByValue: true,
31
+ jsonValue: useJsonValue,
32
+ });
33
+ if (result.exception) {
34
+ throw ArgusEvalError.fromException(result.exception);
35
+ }
36
+ return useJsonValue ? unwrapJsonValue(result.result) : result.result;
37
+ };
38
+ return {
39
+ eval: runEval,
40
+ evalValue,
41
+ evalUntil: async (watcherId, expression, options = {}) => {
42
+ const predicate = options.predicate ?? ((value) => Boolean(value));
43
+ const totalTimeoutMs = options.totalTimeoutMs ?? DEFAULT_POLL_TIMEOUT_MS;
44
+ const startTime = Date.now();
45
+ const outcome = await pollEval({
46
+ intervalMs: options.intervalMs ?? DEFAULT_POLL_INTERVAL_MS,
47
+ count: options.count,
48
+ totalTimeoutMs,
49
+ signal: options.signal,
50
+ runEval: async () => {
51
+ try {
52
+ return { ok: true, response: await evalValue(watcherId, expression, options), attempt: 1 };
53
+ }
54
+ catch (error) {
55
+ return { ok: false, failure: error, attempt: 1 };
56
+ }
57
+ },
58
+ shouldStop: ({ response, iteration }) => {
59
+ try {
60
+ return { ok: true, matched: predicate(response, iteration) };
61
+ }
62
+ catch (error) {
63
+ return { ok: false, error: `predicate threw: ${formatError(error)}` };
64
+ }
65
+ },
66
+ });
67
+ if (outcome.kind === 'matched') {
68
+ return { value: outcome.response, iteration: outcome.iteration, elapsedMs: Date.now() - startTime };
69
+ }
70
+ throw toEvalUntilError(outcome, expression, totalTimeoutMs);
71
+ },
72
+ };
73
+ };
74
+ /**
75
+ * A watcher predating the `jsonValue` flag ignores it and returns the raw value, which
76
+ * would otherwise surface as a confusing JSON parse failure. Degrading silently is not an
77
+ * option: the caller would lose the cross-transport key-order guarantee without knowing.
78
+ */
79
+ const STALE_WATCHER_HINT = 'Watcher did not honor `jsonValue`, so it is likely running a build that predates the flag. Restart the watcher to pick up the current build, or pass { jsonValue: false }.';
80
+ /** `JSON.stringify({ v: undefined })` — the envelope the watcher sends for a genuine `undefined`. */
81
+ const UNDEFINED_ENVELOPE = '{}';
82
+ /** Parse the `{ v }` envelope produced by the watcher's `jsonValue` mode. */
83
+ const unwrapJsonValue = (raw) => {
84
+ if (typeof raw !== 'string') {
85
+ throw new Error(STALE_WATCHER_HINT);
86
+ }
87
+ if (raw === UNDEFINED_ENVELOPE) {
88
+ return undefined;
89
+ }
90
+ let parsed;
91
+ try {
92
+ parsed = JSON.parse(raw);
93
+ }
94
+ catch {
95
+ throw new Error(STALE_WATCHER_HINT);
96
+ }
97
+ if (parsed == null || typeof parsed !== 'object' || !('v' in parsed)) {
98
+ throw new Error(STALE_WATCHER_HINT);
99
+ }
100
+ return parsed.v;
101
+ };
102
+ /** Translate a non-matching poll outcome into the error `evalUntil` rejects with. */
103
+ const toEvalUntilError = (outcome, expression, totalTimeoutMs) => {
104
+ if (outcome.kind === 'eval-error') {
105
+ return outcome.failure instanceof Error ? outcome.failure : new Error(formatError(outcome.failure));
106
+ }
107
+ if (outcome.kind === 'timeout') {
108
+ return new Error(`evalUntil timed out after ${totalTimeoutMs}ms waiting for: ${expression}`);
109
+ }
110
+ if (outcome.kind === 'exhausted') {
111
+ return new Error(`evalUntil exhausted ${String(outcome.iterations)} polls without a match for: ${expression}`);
112
+ }
113
+ if (outcome.kind === 'condition-error') {
114
+ return new Error(String(outcome.error));
115
+ }
116
+ return new Error(`evalUntil aborted while waiting for: ${expression}`);
117
+ };
118
+ const formatError = (error) => {
119
+ if (!error) {
120
+ return 'unknown error';
121
+ }
122
+ if (error instanceof Error) {
123
+ return error.message;
124
+ }
125
+ return String(error);
126
+ };
127
+ //# sourceMappingURL=evalMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evalMethods.js","sourceRoot":"","sources":["../../../src/client/methods/evalMethods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ListOptions, ListResult, LogsOptions, LogsResult, NetOptions, NetResult } from '../../types.js';
2
+ import type { ClientContext } from '../context.js';
3
+ /** Registry, log, and network read methods. */
4
+ export declare const createInspectMethods: (ctx: ClientContext) => {
5
+ list: (options?: ListOptions) => Promise<ListResult[]>;
6
+ logs: (watcherId: string, options?: LogsOptions) => Promise<LogsResult>;
7
+ logCursor: (watcherId: string) => Promise<{
8
+ cursor: string;
9
+ }>;
10
+ beginLogEpoch: (watcherId: string) => Promise<{
11
+ epoch: string;
12
+ }>;
13
+ net: (watcherId: string, options?: NetOptions) => Promise<NetResult>;
14
+ netRequest: (watcherId: string, request: number | string) => Promise<import("@vforsh/argus-core").NetworkRequestDetail>;
15
+ netClear: (watcherId: string) => Promise<{
16
+ cleared: number;
17
+ }>;
18
+ };
19
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/client/methods/inspect.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAIlD,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,GAAI,KAAK,aAAa;qBAChC,WAAW,KAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;sBAqBtC,MAAM,YAAW,WAAW,KAAQ,OAAO,CAAC,UAAU,CAAC;2BAalD,MAAM;;;+BAQF,MAAM;;;qBAQhB,MAAM,YAAW,UAAU,KAAQ,OAAO,CAAC,SAAS,CAAC;4BAU9C,MAAM,WAAW,MAAM,GAAG,MAAM;0BAUlC,MAAM;;;CASjC,CAAA"}
@@ -0,0 +1,110 @@
1
+ import { previewLogEvent } from '../../logs/previewLogEvent.js';
2
+ import { readAndPruneRegistry } from '../../registry/readAndPruneRegistry.js';
3
+ import { buildLogsParams, buildNetParams } from '../queryParams.js';
4
+ import { requestWatcher } from '../watcherRequest.js';
5
+ /** Registry, log, and network read methods. */
6
+ export const createInspectMethods = (ctx) => ({
7
+ list: async (options = {}) => {
8
+ const registry = await readAndPruneRegistry({ registryPath: ctx.registryPath, ttlMs: ctx.ttlMs });
9
+ const byCwd = normalizeByCwd(options.byCwd);
10
+ const watchers = byCwd ? filterByCwd(registry, byCwd) : Object.values(registry.watchers);
11
+ const results = [];
12
+ for (const watcher of watchers) {
13
+ try {
14
+ const { data: status } = await requestWatcher(ctx, watcher.id, {
15
+ path: '/status',
16
+ timeoutMs: ctx.listTimeoutMs,
17
+ });
18
+ results.push({ watcher, reachable: true, status });
19
+ }
20
+ catch (error) {
21
+ results.push({ watcher, reachable: false, error: formatError(error) });
22
+ }
23
+ }
24
+ return results;
25
+ },
26
+ logs: async (watcherId, options = {}) => {
27
+ const { data: response } = await requestWatcher(ctx, watcherId, {
28
+ path: '/logs',
29
+ query: buildLogsParams(options),
30
+ timeoutMs: ctx.requestTimeoutMs,
31
+ });
32
+ const mode = options.mode ?? 'preview';
33
+ const events = mode === 'full' ? response.events : response.events.map((event) => previewLogEvent(event));
34
+ return { events, nextCursor: response.nextCursor };
35
+ },
36
+ logCursor: async (watcherId) => {
37
+ const { data } = await requestWatcher(ctx, watcherId, {
38
+ path: '/logs/cursor',
39
+ timeoutMs: ctx.requestTimeoutMs,
40
+ });
41
+ return { cursor: data.cursor };
42
+ },
43
+ beginLogEpoch: async (watcherId) => {
44
+ const { data } = await requestWatcher(ctx, watcherId, {
45
+ path: '/logs/epoch',
46
+ timeoutMs: ctx.requestTimeoutMs,
47
+ });
48
+ return { epoch: data.epoch };
49
+ },
50
+ net: async (watcherId, options = {}) => {
51
+ const { data: response } = await requestWatcher(ctx, watcherId, {
52
+ path: '/net',
53
+ query: buildNetParams(options),
54
+ timeoutMs: ctx.requestTimeoutMs,
55
+ });
56
+ return { requests: response.requests, nextAfter: response.nextAfter };
57
+ },
58
+ netRequest: async (watcherId, request) => {
59
+ const { data: response } = await requestWatcher(ctx, watcherId, {
60
+ path: '/net/request',
61
+ query: buildNetRequestParams(request),
62
+ timeoutMs: ctx.requestTimeoutMs,
63
+ });
64
+ return response.request;
65
+ },
66
+ netClear: async (watcherId) => {
67
+ const { data } = await requestWatcher(ctx, watcherId, {
68
+ path: '/net/clear',
69
+ timeoutMs: ctx.requestTimeoutMs,
70
+ method: 'POST',
71
+ body: {},
72
+ });
73
+ return { cleared: data.cleared };
74
+ },
75
+ });
76
+ /** Build the lookup query for one buffered request, accepting a sequence number or a request id. */
77
+ const buildNetRequestParams = (request) => {
78
+ const params = new URLSearchParams();
79
+ if (typeof request === 'number') {
80
+ if (!Number.isFinite(request) || request < 1) {
81
+ throw new Error(`Invalid request value: ${request}`);
82
+ }
83
+ params.set('id', String(request));
84
+ return params;
85
+ }
86
+ const normalized = request.trim();
87
+ if (!normalized) {
88
+ throw new Error('request is required');
89
+ }
90
+ params.set(/^\d+$/.test(normalized) ? 'id' : 'requestId', normalized);
91
+ return params;
92
+ };
93
+ const normalizeByCwd = (value) => {
94
+ if (value == null) {
95
+ return undefined;
96
+ }
97
+ const trimmed = value.trim();
98
+ return trimmed ? trimmed : undefined;
99
+ };
100
+ const filterByCwd = (registry, byCwd) => Object.values(registry.watchers).filter((watcher) => watcher.cwd && watcher.cwd.includes(byCwd));
101
+ const formatError = (error) => {
102
+ if (!error) {
103
+ return 'unknown error';
104
+ }
105
+ if (error instanceof Error) {
106
+ return error.message;
107
+ }
108
+ return String(error);
109
+ };
110
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/client/methods/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DomClickOptions, DomClickResult, ReloadOptions, VisibilityOptions, VisibilityResult } from '../../types.js';
2
+ import type { ClientContext } from '../context.js';
3
+ /** Page interaction methods: click, visibility lock, reload. */
4
+ export declare const createPageMethods: (ctx: ClientContext) => {
5
+ domClick: (watcherId: string, options: DomClickOptions) => Promise<DomClickResult>;
6
+ visibility: (watcherId: string, options: VisibilityOptions) => Promise<VisibilityResult>;
7
+ reload: (watcherId: string, options?: ReloadOptions) => Promise<void>;
8
+ };
9
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/client/methods/page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACzH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGlD,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,GAAI,KAAK,aAAa;0BACvB,MAAM,WAAW,eAAe,KAAG,OAAO,CAAC,cAAc,CAAC;4BAgBxD,MAAM,WAAW,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,CAAC;wBAelE,MAAM,YAAW,aAAa,KAAQ,OAAO,CAAC,IAAI,CAAC;CAQ5E,CAAA"}