@vforsh/argus-core 0.3.0 → 0.4.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 (140) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/auth/state.d.ts +13 -0
  3. package/dist/auth/state.d.ts.map +1 -1
  4. package/dist/auth/state.js +31 -0
  5. package/dist/auth/state.js.map +1 -1
  6. package/dist/errorMessage.d.ts +9 -0
  7. package/dist/errorMessage.d.ts.map +1 -0
  8. package/dist/errorMessage.js +17 -0
  9. package/dist/errorMessage.js.map +1 -0
  10. package/dist/http/fetch.d.ts +18 -0
  11. package/dist/http/fetch.d.ts.map +1 -1
  12. package/dist/http/fetch.js +24 -2
  13. package/dist/http/fetch.js.map +1 -1
  14. package/dist/http/watcher.d.ts +34 -0
  15. package/dist/http/watcher.d.ts.map +1 -0
  16. package/dist/http/watcher.js +33 -0
  17. package/dist/http/watcher.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/protocol/http/auth.d.ts +25 -21
  23. package/dist/protocol/http/auth.d.ts.map +1 -1
  24. package/dist/protocol/http/auth.js +125 -0
  25. package/dist/protocol/http/auth.js.map +1 -1
  26. package/dist/protocol/http/code.d.ts +17 -12
  27. package/dist/protocol/http/code.d.ts.map +1 -1
  28. package/dist/protocol/http/code.js +53 -1
  29. package/dist/protocol/http/code.js.map +1 -1
  30. package/dist/protocol/http/dialog.d.ts +9 -6
  31. package/dist/protocol/http/dialog.d.ts.map +1 -1
  32. package/dist/protocol/http/dialog.js +21 -1
  33. package/dist/protocol/http/dialog.js.map +1 -1
  34. package/dist/protocol/http/dom.d.ts +61 -33
  35. package/dist/protocol/http/dom.d.ts.map +1 -1
  36. package/dist/protocol/http/dom.js +252 -1
  37. package/dist/protocol/http/dom.js.map +1 -1
  38. package/dist/protocol/http/domInteraction.d.ts +9 -9
  39. package/dist/protocol/http/domInteraction.d.ts.map +1 -1
  40. package/dist/protocol/http/domInteraction.js +3 -0
  41. package/dist/protocol/http/domInteraction.js.map +1 -1
  42. package/dist/protocol/http/emulation.d.ts +14 -21
  43. package/dist/protocol/http/emulation.d.ts.map +1 -1
  44. package/dist/protocol/http/emulation.js +99 -1
  45. package/dist/protocol/http/emulation.js.map +1 -1
  46. package/dist/protocol/http/errors.d.ts +51 -4
  47. package/dist/protocol/http/errors.d.ts.map +1 -1
  48. package/dist/protocol/http/errors.js +47 -1
  49. package/dist/protocol/http/errors.js.map +1 -1
  50. package/dist/protocol/http/eval.d.ts +5 -58
  51. package/dist/protocol/http/eval.d.ts.map +1 -1
  52. package/dist/protocol/http/eval.js +24 -1
  53. package/dist/protocol/http/eval.js.map +1 -1
  54. package/dist/protocol/http/extension.d.ts +52 -36
  55. package/dist/protocol/http/extension.d.ts.map +1 -1
  56. package/dist/protocol/http/extension.js +34 -1
  57. package/dist/protocol/http/extension.js.map +1 -1
  58. package/dist/protocol/http/locate.d.ts +9 -3
  59. package/dist/protocol/http/locate.d.ts.map +1 -1
  60. package/dist/protocol/http/locate.js +28 -1
  61. package/dist/protocol/http/locate.js.map +1 -1
  62. package/dist/protocol/http/logs.d.ts +9 -12
  63. package/dist/protocol/http/logs.d.ts.map +1 -1
  64. package/dist/protocol/http/net.d.ts +19 -27
  65. package/dist/protocol/http/net.d.ts.map +1 -1
  66. package/dist/protocol/http/netMock.d.ts +17 -27
  67. package/dist/protocol/http/netMock.d.ts.map +1 -1
  68. package/dist/protocol/http/netMock.js +126 -0
  69. package/dist/protocol/http/netMock.js.map +1 -1
  70. package/dist/protocol/http/query.d.ts +97 -0
  71. package/dist/protocol/http/query.d.ts.map +1 -0
  72. package/dist/protocol/http/query.js +79 -0
  73. package/dist/protocol/http/query.js.map +1 -0
  74. package/dist/protocol/http/record.d.ts +11 -6
  75. package/dist/protocol/http/record.d.ts.map +1 -1
  76. package/dist/protocol/http/record.js +56 -0
  77. package/dist/protocol/http/record.js.map +1 -1
  78. package/dist/protocol/http/screenshot.d.ts +18 -3
  79. package/dist/protocol/http/screenshot.d.ts.map +1 -1
  80. package/dist/protocol/http/screenshot.js +45 -1
  81. package/dist/protocol/http/screenshot.js.map +1 -1
  82. package/dist/protocol/http/snapshot.d.ts +5 -3
  83. package/dist/protocol/http/snapshot.d.ts.map +1 -1
  84. package/dist/protocol/http/snapshot.js +16 -1
  85. package/dist/protocol/http/snapshot.js.map +1 -1
  86. package/dist/protocol/http/status.d.ts +17 -9
  87. package/dist/protocol/http/status.d.ts.map +1 -1
  88. package/dist/protocol/http/status.js +12 -1
  89. package/dist/protocol/http/status.js.map +1 -1
  90. package/dist/protocol/http/storage.d.ts +7 -31
  91. package/dist/protocol/http/storage.d.ts.map +1 -1
  92. package/dist/protocol/http/storage.js +31 -1
  93. package/dist/protocol/http/storage.js.map +1 -1
  94. package/dist/protocol/http/throttle.d.ts +14 -21
  95. package/dist/protocol/http/throttle.d.ts.map +1 -1
  96. package/dist/protocol/http/throttle.js +27 -1
  97. package/dist/protocol/http/throttle.js.map +1 -1
  98. package/dist/protocol/http/trace.d.ts +9 -6
  99. package/dist/protocol/http/trace.d.ts.map +1 -1
  100. package/dist/protocol/http/trace.js +29 -1
  101. package/dist/protocol/http/trace.js.map +1 -1
  102. package/dist/protocol/http/visibility.d.ts +7 -3
  103. package/dist/protocol/http/visibility.d.ts.map +1 -1
  104. package/dist/protocol/http/visibility.js +19 -1
  105. package/dist/protocol/http/visibility.js.map +1 -1
  106. package/dist/protocol/http.d.ts +18 -16
  107. package/dist/protocol/http.d.ts.map +1 -1
  108. package/dist/protocol/http.js +17 -1
  109. package/dist/protocol/http.js.map +1 -1
  110. package/dist/protocol/native-messaging.d.ts +276 -0
  111. package/dist/protocol/native-messaging.d.ts.map +1 -0
  112. package/dist/protocol/native-messaging.js +19 -0
  113. package/dist/protocol/native-messaging.js.map +1 -0
  114. package/dist/protocol/scenario.d.ts +63 -0
  115. package/dist/protocol/scenario.d.ts.map +1 -0
  116. package/dist/protocol/scenario.js +2 -0
  117. package/dist/protocol/scenario.js.map +1 -0
  118. package/dist/protocol/schemaFields.d.ts +76 -0
  119. package/dist/protocol/schemaFields.d.ts.map +1 -0
  120. package/dist/protocol/schemaFields.js +152 -0
  121. package/dist/protocol/schemaFields.js.map +1 -0
  122. package/dist/protocol/version.d.ts +14 -0
  123. package/dist/protocol/version.d.ts.map +1 -1
  124. package/dist/protocol/version.js +21 -0
  125. package/dist/protocol/version.js.map +1 -1
  126. package/dist/registry/lock.d.ts.map +1 -1
  127. package/dist/registry/lock.js +2 -3
  128. package/dist/registry/lock.js.map +1 -1
  129. package/dist/registry/registry.d.ts +14 -0
  130. package/dist/registry/registry.d.ts.map +1 -1
  131. package/dist/registry/registry.js +20 -0
  132. package/dist/registry/registry.js.map +1 -1
  133. package/dist/textPattern.d.ts.map +1 -1
  134. package/dist/textPattern.js +2 -1
  135. package/dist/textPattern.js.map +1 -1
  136. package/dist/time.d.ts +20 -0
  137. package/dist/time.d.ts.map +1 -0
  138. package/dist/time.js +39 -0
  139. package/dist/time.js.map +1 -0
  140. package/package.json +9 -7
@@ -1,2 +1,28 @@
1
- export {};
1
+ import { defineProtocolSchema, invalidProtocolPayload, validProtocolPayload } from '../schema.js';
2
+ import { optionalEnum, optionalNumber, readFields, requireObject } from '../schemaFields.js';
3
+ /** Actions accepted by POST /throttle. */
4
+ export const THROTTLE_ACTIONS = ['set', 'clear'];
5
+ /** Schema for POST /throttle request payloads. */
6
+ export const throttleRequestSchema = defineProtocolSchema((value) => {
7
+ const invalid = requireObject(value);
8
+ if (invalid)
9
+ return invalid;
10
+ const fields = readFields(value, {
11
+ action: (source, key) => optionalEnum(source, key, THROTTLE_ACTIONS),
12
+ rate: (source, key) => optionalNumber(source, key, { min: 1 }),
13
+ });
14
+ if (!fields.ok)
15
+ return fields;
16
+ const { action, rate } = fields.value;
17
+ if (action == null) {
18
+ return invalidProtocolPayload(`action must be one of: ${THROTTLE_ACTIONS.join(', ')}`);
19
+ }
20
+ if (action === 'clear') {
21
+ return validProtocolPayload({ action });
22
+ }
23
+ if (rate == null) {
24
+ return invalidProtocolPayload('rate must be a finite number >= 1');
25
+ }
26
+ return validProtocolPayload({ action, rate });
27
+ });
2
28
  //# sourceMappingURL=throttle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/protocol/http/throttle.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/protocol/http/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAsC5F,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAA;AAEzD,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAkB,CAAC,KAAK,EAAE,EAAE;IACpF,MAAM,OAAO,GAAG,aAAa,CAAkB,KAAK,CAAC,CAAA;IACrD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAgC,EAAE;QAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,gBAAgB,CAAC;QACpE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAErC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,sBAAsB,CAAC,0BAA0B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,sBAAsB,CAAC,mCAAmC,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { Ok } from './errors.js';
1
2
  /** Request payload for POST /trace/start. */
2
3
  export type TraceStartRequest = {
3
4
  outFile?: string;
@@ -5,23 +6,25 @@ export type TraceStartRequest = {
5
6
  options?: string;
6
7
  };
7
8
  /** Response payload for POST /trace/start. */
8
- export type TraceStartResponse = {
9
- ok: true;
9
+ export type TraceStartResponse = Ok<{
10
10
  traceId: string;
11
11
  sessionName: string;
12
12
  outFile: string;
13
- };
13
+ }>;
14
14
  /** Request payload for POST /trace/stop. */
15
15
  export type TraceStopRequest = {
16
16
  traceId?: string;
17
17
  outFile?: string;
18
18
  };
19
19
  /** Response payload for POST /trace/stop. */
20
- export type TraceStopResponse = {
21
- ok: true;
20
+ export type TraceStopResponse = Ok<{
22
21
  sessionName: string;
23
22
  outFile: string;
24
23
  eventCount: number;
25
24
  durationMs: number;
26
- };
25
+ }>;
26
+ /** Schema for POST /trace/start request payloads. */
27
+ export declare const traceStartRequestSchema: import("../schema.js").ProtocolSchema<TraceStartRequest>;
28
+ /** Schema for POST /trace/stop request payloads. */
29
+ export declare const traceStopRequestSchema: import("../schema.js").ProtocolSchema<TraceStopRequest>;
27
30
  //# sourceMappingURL=trace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/trace.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAChC,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AAED,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,IAAI,CAAA;IACR,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA"}
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/trace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAErC,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG,EAAE,CAAC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEF,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAC,CAAA;AAEF,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,0DAYlC,CAAA;AAEF,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,yDAWjC,CAAA"}
@@ -1,2 +1,30 @@
1
- export {};
1
+ import { defineProtocolSchema, validProtocolPayload } from '../schema.js';
2
+ import { compact, optionalNonEmptyString, optionalString, readFields, requireObject } from '../schemaFields.js';
3
+ /** Schema for POST /trace/start request payloads. */
4
+ export const traceStartRequestSchema = defineProtocolSchema((value) => {
5
+ const invalid = requireObject(value);
6
+ if (invalid)
7
+ return invalid;
8
+ const fields = readFields(value, {
9
+ outFile: optionalString,
10
+ categories: optionalString,
11
+ options: optionalString,
12
+ });
13
+ if (!fields.ok)
14
+ return fields;
15
+ return validProtocolPayload(compact(fields.value));
16
+ });
17
+ /** Schema for POST /trace/stop request payloads. */
18
+ export const traceStopRequestSchema = defineProtocolSchema((value) => {
19
+ const invalid = requireObject(value);
20
+ if (invalid)
21
+ return invalid;
22
+ const fields = readFields(value, {
23
+ traceId: optionalNonEmptyString,
24
+ outFile: optionalString,
25
+ });
26
+ if (!fields.ok)
27
+ return fields;
28
+ return validProtocolPayload(compact(fields.value));
29
+ });
2
30
  //# sourceMappingURL=trace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/protocol/http/trace.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/protocol/http/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AA+B/G,qDAAqD;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAoB,CAAC,KAAK,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,aAAa,CAAoB,KAAK,CAAC,CAAA;IACvD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAgC,EAAE;QAC3D,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,cAAc;QAC1B,OAAO,EAAE,cAAc;KACvB,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAA;IAE7B,OAAO,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAmB,CAAC,KAAK,EAAE,EAAE;IACtF,MAAM,OAAO,GAAG,aAAa,CAAmB,KAAK,CAAC,CAAA;IACtD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAgC,EAAE;QAC3D,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,cAAc;KACvB,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAA;IAE7B,OAAO,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { Ok } from './errors.js';
1
2
  /**
2
3
  * Visibility lock controls whether the attached page should behave as if
3
4
  * visible/focused even when the Chrome window is backgrounded or covered.
@@ -20,11 +21,14 @@ export type VisibilityRequest = {
20
21
  * it is remembered by the watcher and re-applied on the next attach when
21
22
  * `attached` is `false`.
22
23
  */
23
- export type VisibilityResponse = {
24
- ok: true;
24
+ export type VisibilityResponse = Ok<{
25
25
  /** Whether the watcher was attached to a CDP target at response time. */
26
26
  attached: boolean;
27
27
  /** Current desired visibility lock. */
28
28
  state: VisibilityLock;
29
- };
29
+ }>;
30
+ /** Actions accepted by POST /visibility. */
31
+ export declare const VISIBILITY_ACTIONS: readonly ["show", "hide"];
32
+ /** Schema for POST /visibility request payloads. */
33
+ export declare const visibilityRequestSchema: import("../schema.js").ProtocolSchema<VisibilityRequest>;
30
34
  //# sourceMappingURL=visibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/visibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAA;AAEhD,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,qEAAqE;IACrE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,EAAE,EAAE,IAAI,CAAA;IACR,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,KAAK,EAAE,cAAc,CAAA;CACrB,CAAA"}
1
+ {"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/visibility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAA;AAEhD,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,qEAAqE;IACrE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,EAAE,CAAC;IACnC,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,KAAK,EAAE,cAAc,CAAA;CACrB,CAAC,CAAA;AAEF,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,2BAA4B,CAAA;AAE3D,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,0DAclC,CAAA"}
@@ -1,2 +1,20 @@
1
- export {};
1
+ import { defineProtocolSchema, invalidProtocolPayload, validProtocolPayload } from '../schema.js';
2
+ import { optionalEnum, readFields, requireObject } from '../schemaFields.js';
3
+ /** Actions accepted by POST /visibility. */
4
+ export const VISIBILITY_ACTIONS = ['show', 'hide'];
5
+ /** Schema for POST /visibility request payloads. */
6
+ export const visibilityRequestSchema = defineProtocolSchema((value) => {
7
+ const invalid = requireObject(value);
8
+ if (invalid)
9
+ return invalid;
10
+ const fields = readFields(value, {
11
+ action: (source, key) => optionalEnum(source, key, VISIBILITY_ACTIONS),
12
+ });
13
+ if (!fields.ok)
14
+ return fields;
15
+ if (fields.value.action == null) {
16
+ return invalidProtocolPayload('Visibility action must be "show" or "hide"');
17
+ }
18
+ return validProtocolPayload({ action: fields.value.action });
19
+ });
2
20
  //# sourceMappingURL=visibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visibility.js","sourceRoot":"","sources":["../../../src/protocol/http/visibility.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"visibility.js","sourceRoot":"","sources":["../../../src/protocol/http/visibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAkC5E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAA;AAE3D,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAoB,CAAC,KAAK,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,aAAa,CAAoB,KAAK,CAAC,CAAA;IACvD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAgC,EAAE;QAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,kBAAkB,CAAC;KACtE,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAA;IAE7B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QACjC,OAAO,sBAAsB,CAAC,4CAA4C,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA"}
@@ -1,24 +1,26 @@
1
1
  export * from './schema.js';
2
- export type * from './http/status.js';
2
+ export * from './schemaFields.js';
3
+ export * from './http/status.js';
3
4
  export type * from './http/logs.js';
4
5
  export type * from './http/net.js';
5
6
  export * from './http/netMock.js';
6
- export type * from './http/eval.js';
7
- export type * from './http/trace.js';
7
+ export * from './http/eval.js';
8
+ export * from './http/trace.js';
8
9
  export * from './http/record.js';
9
- export type * from './http/screenshot.js';
10
- export type * from './http/snapshot.js';
11
- export type * from './http/locate.js';
12
- export type * from './http/code.js';
10
+ export * from './http/screenshot.js';
11
+ export * from './http/snapshot.js';
12
+ export * from './http/locate.js';
13
+ export * from './http/code.js';
13
14
  export * from './http/dom.js';
14
15
  export * from './http/domInteraction.js';
15
- export type * from './http/storage.js';
16
- export type * from './http/auth.js';
17
- export { AUTH_STATE_METADATA_SCHEMA_VERSION } from './http/auth.js';
18
- export type * from './http/emulation.js';
19
- export type * from './http/throttle.js';
20
- export type * from './http/dialog.js';
21
- export type * from './http/visibility.js';
22
- export type * from './http/extension.js';
23
- export type * from './http/errors.js';
16
+ export * from './http/storage.js';
17
+ export * from './http/auth.js';
18
+ export * from './http/emulation.js';
19
+ export * from './http/throttle.js';
20
+ export * from './http/dialog.js';
21
+ export * from './http/visibility.js';
22
+ export * from './http/extension.js';
23
+ export * from './http/errors.js';
24
+ export * from './http/query.js';
25
+ export type * from './scenario.js';
24
26
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/protocol/http.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,eAAe,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,iBAAiB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,gBAAgB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,gBAAgB,CAAA;AACnC,OAAO,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAA;AACnE,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,kBAAkB,CAAA"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/protocol/http.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,eAAe,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,eAAe,CAAA"}
@@ -1,8 +1,24 @@
1
1
  // Barrel re-exports — keeps existing import paths working.
2
2
  export * from './schema.js';
3
+ export * from './schemaFields.js';
4
+ export * from './http/status.js';
3
5
  export * from './http/netMock.js';
6
+ export * from './http/eval.js';
7
+ export * from './http/trace.js';
4
8
  export * from './http/record.js';
9
+ export * from './http/screenshot.js';
10
+ export * from './http/snapshot.js';
11
+ export * from './http/locate.js';
12
+ export * from './http/code.js';
5
13
  export * from './http/dom.js';
6
14
  export * from './http/domInteraction.js';
7
- export { AUTH_STATE_METADATA_SCHEMA_VERSION } from './http/auth.js';
15
+ export * from './http/storage.js';
16
+ export * from './http/auth.js';
17
+ export * from './http/emulation.js';
18
+ export * from './http/throttle.js';
19
+ export * from './http/dialog.js';
20
+ export * from './http/visibility.js';
21
+ export * from './http/extension.js';
22
+ export * from './http/errors.js';
23
+ export * from './http/query.js';
8
24
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/protocol/http.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,aAAa,CAAA;AAI3B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,kBAAkB,CAAA;AAKhC,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AAGxC,OAAO,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/protocol/http.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Native Messaging wire protocol shared by the Chrome extension and argus-watcher.
3
+ *
4
+ * This module is the single definition of the extension <-> watcher contract. The two
5
+ * peers ship as independently versioned npm packages, so a field added on one side and
6
+ * forgotten on the other would compile cleanly and only fail at runtime in a user's
7
+ * Chrome — importing both ends from here makes that a compile error instead.
8
+ *
9
+ * The extension bundles this with esbuild: keep it types plus erasable constants only,
10
+ * so the extension's no-runtime-dependencies property survives.
11
+ */
12
+ /**
13
+ * Version of the native-messaging wire contract.
14
+ *
15
+ * Bump on any breaking change to the message shapes below. Peers exchange it in the
16
+ * `host_info` handshake and refuse to proceed on a mismatch.
17
+ */
18
+ export declare const NATIVE_MESSAGING_PROTOCOL_VERSION: 2;
19
+ /** Type-level alias for the current native-messaging protocol version. */
20
+ export type NativeMessagingProtocolVersion = typeof NATIVE_MESSAGING_PROTOCOL_VERSION;
21
+ export type TabAttachedMessage = {
22
+ type: 'tab_attached';
23
+ tabId: number;
24
+ url: string;
25
+ title: string;
26
+ faviconUrl?: string;
27
+ topFrameId?: string | null;
28
+ frames?: FrameSnapshot[];
29
+ };
30
+ export type TabDetachedMessage = {
31
+ type: 'tab_detached';
32
+ tabId: number;
33
+ reason: string;
34
+ };
35
+ export type CdpEventMessage = {
36
+ type: 'cdp_event';
37
+ tabId: number;
38
+ method: string;
39
+ params: unknown;
40
+ sessionId?: string;
41
+ };
42
+ /** Why the extension published a frame snapshot; informational (diagnostics/logs only). */
43
+ export type FrameSnapshotReason = 'navigation_resync' | 'child_attached' | 'child_detached' | 'requested';
44
+ /**
45
+ * Authoritative frame table for one attached tab, pushed by the extension whenever its
46
+ * table changes and returned in response to {@link FrameSnapshotRequestMessage}.
47
+ *
48
+ * `frames` is always the FULL table for the tab (never a delta) so applying a snapshot is
49
+ * idempotent: the watcher replaces its copy wholesale instead of replaying synthetic
50
+ * `Page.frameNavigated`/`Page.frameDetached` events. Real CDP events still flow as
51
+ * `cdp_event` and remain the immediate-reaction channel; snapshots are the reconciliation.
52
+ */
53
+ export type FrameSnapshotMessage = {
54
+ type: 'frame_snapshot';
55
+ tabId: number;
56
+ topFrameId: string | null;
57
+ frames: FrameSnapshot[];
58
+ reason: FrameSnapshotReason;
59
+ /** Present when this snapshot answers a `frame_snapshot_request`; absent on pushes. */
60
+ requestId?: number;
61
+ };
62
+ /**
63
+ * Host -> extension pull for the current frame table (bootstrap and target recovery).
64
+ * With `refresh: true` the extension re-reads `Page.getFrameTree` for the root and every
65
+ * child session before answering, so the reply reflects Chrome, not just cached state.
66
+ */
67
+ export type FrameSnapshotRequestMessage = {
68
+ type: 'frame_snapshot_request';
69
+ requestId: number;
70
+ tabId: number;
71
+ refresh?: boolean;
72
+ };
73
+ export type CdpResponseMessage = {
74
+ type: 'cdp_response';
75
+ requestId: number;
76
+ result?: unknown;
77
+ error?: {
78
+ code?: number;
79
+ message: string;
80
+ };
81
+ };
82
+ export type CookieQueryResponseMessage = {
83
+ type: 'cookie_query_response';
84
+ requestId: number;
85
+ cookies?: NativeCookie[];
86
+ error?: {
87
+ message: string;
88
+ };
89
+ };
90
+ export type ListTabsResponseMessage = {
91
+ type: 'list_tabs_response';
92
+ requestId: number;
93
+ tabs: TabInfo[];
94
+ };
95
+ export type TabActionResponseMessage = {
96
+ type: 'tab_action_response';
97
+ requestId: number;
98
+ ok: boolean;
99
+ tab?: TabInfo;
100
+ watcherId?: string;
101
+ error?: {
102
+ message: string;
103
+ };
104
+ };
105
+ /**
106
+ * Outcome of a control-host tab action, as both peers model it in memory.
107
+ *
108
+ * This is the discriminated form of {@link TabActionResponseMessage}, whose `ok`/`tab`/
109
+ * `error` fields are independently optional on the wire. Producers build this and
110
+ * serialize it; consumers reconstruct it on receipt.
111
+ */
112
+ export type TabActionResult = {
113
+ ok: true;
114
+ tab: TabInfo;
115
+ watcherId?: string;
116
+ } | {
117
+ ok: false;
118
+ error: string;
119
+ };
120
+ export type ControlStatusResponseMessage = {
121
+ type: 'control_status_response';
122
+ requestId: number;
123
+ diagnostics: ControlDiagnostics;
124
+ };
125
+ export type TargetSelectedMessage = {
126
+ type: 'target_selected';
127
+ tabId: number;
128
+ frameId?: string | null;
129
+ };
130
+ export type HostInfoMessage = {
131
+ type: 'host_info';
132
+ watcherId: string;
133
+ watcherHost: string;
134
+ watcherPort: number;
135
+ pid: number;
136
+ /**
137
+ * Native-messaging protocol version the host was built against.
138
+ *
139
+ * Absent when an older watcher predates the handshake — treat that as an
140
+ * unknown, incompatible version rather than as a match.
141
+ */
142
+ protocolVersion?: NativeMessagingProtocolVersion;
143
+ };
144
+ export type HostReadyMessage = {
145
+ type: 'host_ready';
146
+ };
147
+ export type TargetInfoMessage = {
148
+ type: 'target_info';
149
+ targetId: string;
150
+ title: string | null;
151
+ url: string | null;
152
+ attachedAt: number;
153
+ targetReady?: boolean | null;
154
+ };
155
+ export type InitTabWatcherMessage = {
156
+ type: 'init_tab_watcher';
157
+ watcherId?: string;
158
+ };
159
+ export type TabInfo = {
160
+ tabId: number;
161
+ url: string;
162
+ title: string;
163
+ faviconUrl?: string;
164
+ attached: boolean;
165
+ watcherId?: string;
166
+ };
167
+ /** Runtime state of the extension-level control bridge. */
168
+ export type ExtensionControlBridgeStatus = {
169
+ connected: boolean;
170
+ watcherId: string | null;
171
+ watcherHost: string | null;
172
+ watcherPort: number | null;
173
+ pid: number | null;
174
+ lastMessageAt: number | null;
175
+ };
176
+ /** Runtime state for one tab-scoped extension watcher bridge. */
177
+ export type ExtensionTabBridgeStatus = {
178
+ tabId: number;
179
+ connected: boolean;
180
+ watcherId: string | null;
181
+ watcherHost: string | null;
182
+ watcherPort: number | null;
183
+ pid: number | null;
184
+ targetId: string | null;
185
+ targetTitle: string | null;
186
+ targetUrl: string | null;
187
+ targetReady: boolean | null;
188
+ lastMessageAt: number | null;
189
+ };
190
+ /** Recent extension-side event surfaced for diagnostics. */
191
+ export type ExtensionRecentEvent = {
192
+ ts: number;
193
+ level: 'info' | 'error';
194
+ source: 'popup' | 'bridge' | 'debugger';
195
+ message: string;
196
+ };
197
+ /**
198
+ * Diagnostics snapshot the extension reports over the control bridge.
199
+ *
200
+ * `GET /extension/diagnostics` reshapes this into {@link ExtensionDiagnosticsResponse};
201
+ * both use the same member types so a diagnostics change lands in one place.
202
+ */
203
+ export type ControlDiagnostics = {
204
+ extensionId: string | null;
205
+ extensionVersion: string | null;
206
+ control: ExtensionControlBridgeStatus;
207
+ tabWatchers: ExtensionTabBridgeStatus[];
208
+ recentEvents: ExtensionRecentEvent[];
209
+ };
210
+ export type FrameSnapshot = {
211
+ frameId: string;
212
+ parentFrameId: string | null;
213
+ url: string;
214
+ title: string | null;
215
+ sessionId: string | null;
216
+ };
217
+ export type NativeCookie = {
218
+ name: string;
219
+ value: string;
220
+ domain: string;
221
+ path: string;
222
+ secure: boolean;
223
+ httpOnly: boolean;
224
+ session: boolean;
225
+ expires: number | null;
226
+ sameSite: string | null;
227
+ };
228
+ export type ExtensionToHost = TabAttachedMessage | TabDetachedMessage | CdpEventMessage | CdpResponseMessage | CookieQueryResponseMessage | TargetSelectedMessage | FrameSnapshotMessage;
229
+ export type ExtensionToControlHost = ListTabsResponseMessage | TabActionResponseMessage | ControlStatusResponseMessage;
230
+ export type ExtensionToTabHost = ExtensionToHost | InitTabWatcherMessage;
231
+ export type AttachTabWatcherMessage = {
232
+ type: 'attach_tab_watcher';
233
+ requestId: number;
234
+ tabId: number;
235
+ watcherId?: string;
236
+ };
237
+ export type DetachTabWatcherMessage = {
238
+ type: 'detach_tab_watcher';
239
+ requestId: number;
240
+ tabId: number;
241
+ };
242
+ export type DetachTabMessage = {
243
+ type: 'detach_tab';
244
+ tabId: number;
245
+ };
246
+ export type CdpCommandMessage = {
247
+ type: 'cdp_command';
248
+ requestId: number;
249
+ tabId: number;
250
+ method: string;
251
+ params?: Record<string, unknown>;
252
+ sessionId?: string;
253
+ };
254
+ export type ListTabsMessage = {
255
+ type: 'list_tabs';
256
+ requestId: number;
257
+ filter?: {
258
+ url?: string;
259
+ title?: string;
260
+ };
261
+ };
262
+ export type ControlStatusMessage = {
263
+ type: 'control_status';
264
+ requestId: number;
265
+ };
266
+ export type CookieQueryMessage = {
267
+ type: 'cookie_query';
268
+ requestId: number;
269
+ tabId: number;
270
+ domain?: string;
271
+ url?: string;
272
+ };
273
+ export type HostToExtension = DetachTabMessage | CdpCommandMessage | CookieQueryMessage | FrameSnapshotRequestMessage | HostInfoMessage | HostReadyMessage | TargetInfoMessage;
274
+ export type ControlHostToExtension = AttachTabWatcherMessage | DetachTabWatcherMessage | ListTabsMessage | ControlStatusMessage | HostInfoMessage | HostReadyMessage;
275
+ export type TabHostToExtension = HostToExtension;
276
+ //# sourceMappingURL=native-messaging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-messaging.d.ts","sourceRoot":"","sources":["../../src/protocol/native-messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Native Messaging wire protocol shared by the Chrome extension and argus-watcher.
3
+ *
4
+ * This module is the single definition of the extension <-> watcher contract. The two
5
+ * peers ship as independently versioned npm packages, so a field added on one side and
6
+ * forgotten on the other would compile cleanly and only fail at runtime in a user's
7
+ * Chrome — importing both ends from here makes that a compile error instead.
8
+ *
9
+ * The extension bundles this with esbuild: keep it types plus erasable constants only,
10
+ * so the extension's no-runtime-dependencies property survives.
11
+ */
12
+ /**
13
+ * Version of the native-messaging wire contract.
14
+ *
15
+ * Bump on any breaking change to the message shapes below. Peers exchange it in the
16
+ * `host_info` handshake and refuse to proceed on a mismatch.
17
+ */
18
+ export const NATIVE_MESSAGING_PROTOCOL_VERSION = 2;
19
+ //# sourceMappingURL=native-messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-messaging.js","sourceRoot":"","sources":["../../src/protocol/native-messaging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAU,CAAA"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Host-bridge types for bundled eval scenarios.
3
+ *
4
+ * These describe the in-page capability object handed to a scenario's `export default`,
5
+ * not an HTTP payload — the members are functions returning promises and are never
6
+ * serialized over the wire. They live outside `protocol/http/` for exactly that reason.
7
+ */
8
+ import type { LogEpoch, LogEvent, LogLevel } from './logs.js';
9
+ import type { ScreenshotClipRegion, ScreenshotResponse } from './http/screenshot.js';
10
+ /** Page-side screenshot options accepted by scenario artifact helpers. */
11
+ export type ArgusScenarioScreenshotOptions = {
12
+ /** Crop to the first matching element. */
13
+ selector?: string;
14
+ /** Crop to a viewport-relative rectangle. Mutually exclusive with `selector`. */
15
+ clip?: ScreenshotClipRegion;
16
+ };
17
+ /** Filters for reading watcher logs from a scenario cursor. */
18
+ export type ArgusScenarioLogOptions = {
19
+ /** Only include these severity levels. */
20
+ levels?: LogLevel[];
21
+ /** Match event text against any supplied regular expression. */
22
+ match?: string | string[];
23
+ /** Regex case handling. Defaults to case-sensitive. */
24
+ matchCase?: 'sensitive' | 'insensitive';
25
+ /** Case-insensitive substring filter over the event source. */
26
+ source?: string;
27
+ /** Maximum number of matching events. Defaults to 500; maximum 5000. */
28
+ limit?: number;
29
+ };
30
+ /** Result of reading scenario logs after a cursor. */
31
+ export type ArgusScenarioLogsResult = {
32
+ events: LogEvent[];
33
+ /** Cursor to use for the next read. */
34
+ nextCursor: LogEpoch;
35
+ };
36
+ /** Stateful log window created at a scenario-defined baseline. */
37
+ export type ArgusScenarioLogSession = {
38
+ /** Current session cursor. It advances after each successful read. */
39
+ readonly cursor: LogEpoch;
40
+ /** Read matching logs since the session cursor and advance it. */
41
+ read: (options?: ArgusScenarioLogOptions) => Promise<ArgusScenarioLogsResult>;
42
+ };
43
+ /** Log cursor helpers available to bundled scenario entrypoints. */
44
+ export type ArgusScenarioLogs = {
45
+ /** Return the watcher's current log cursor without downloading events. */
46
+ cursor: () => Promise<LogEpoch>;
47
+ /** Read matching logs produced strictly after `cursor`. */
48
+ read: (cursor: LogEpoch, options?: ArgusScenarioLogOptions) => Promise<ArgusScenarioLogsResult>;
49
+ /** Capture the current cursor and return a stateful log window. */
50
+ session: () => Promise<ArgusScenarioLogSession>;
51
+ };
52
+ /** Host capabilities passed to `export default` in a bundled eval file. */
53
+ export type ArgusScenarioContext = {
54
+ /** Frozen string arguments supplied by `--arg` / `--args`. */
55
+ readonly args: Readonly<Record<string, string>>;
56
+ /** Capture a screenshot using a watcher-generated safe artifact path. */
57
+ screenshot: (options?: ArgusScenarioScreenshotOptions) => Promise<ScreenshotResponse>;
58
+ /** Capture or replace `checkpoints/<name>.png` under the watcher artifact directory. */
59
+ checkpoint: (name: string, options?: ArgusScenarioScreenshotOptions) => Promise<ScreenshotResponse>;
60
+ /** Cursor and session helpers for logs produced during the scenario. */
61
+ readonly logs: ArgusScenarioLogs;
62
+ };
63
+ //# sourceMappingURL=scenario.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../src/protocol/scenario.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEpF,0EAA0E;AAC1E,MAAM,MAAM,8BAA8B,GAAG;IAC5C,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,oBAAoB,CAAA;CAC3B,CAAA;AAED,+DAA+D;AAC/D,MAAM,MAAM,uBAAuB,GAAG;IACrC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,WAAW,GAAG,aAAa,CAAA;IACvC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,sDAAsD;AACtD,MAAM,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,uCAAuC;IACvC,UAAU,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG;IACrC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,kEAAkE;IAClE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAC7E,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG;IAC/B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/B,2DAA2D;IAC3D,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC/F,mEAAmE;IACnE,OAAO,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAC/C,CAAA;AAED,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,yEAAyE;IACzE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,8BAA8B,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrF,wFAAwF;IACxF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,8BAA8B,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACnG,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAChC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scenario.js.map