@vforsh/argus-core 0.2.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 +34 -0
  11. package/dist/http/fetch.d.ts.map +1 -1
  12. package/dist/http/fetch.js +46 -4
  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 +22 -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,32 @@
1
- export {};
1
+ import { defineProtocolSchema, invalidProtocolPayload, validProtocolPayload } from '../schema.js';
2
+ import { compact, optionalEnum, optionalString, readFields, requireObject } from '../schemaFields.js';
3
+ /** Operations accepted by POST /storage/<area>. */
4
+ export const STORAGE_ACTIONS = ['get', 'set', 'remove', 'list', 'clear'];
5
+ /** Operations that address a single key. */
6
+ const KEYED_STORAGE_ACTIONS = new Set(['get', 'set', 'remove']);
7
+ /** Schema for POST /storage/<area> request payloads. */
8
+ export const storageRequestSchema = defineProtocolSchema((value) => {
9
+ const invalid = requireObject(value);
10
+ if (invalid)
11
+ return invalid;
12
+ const fields = readFields(value, {
13
+ action: (source, key) => optionalEnum(source, key, STORAGE_ACTIONS),
14
+ key: optionalString,
15
+ value: optionalString,
16
+ origin: optionalString,
17
+ });
18
+ if (!fields.ok)
19
+ return fields;
20
+ const { action, key, value: entryValue, origin } = fields.value;
21
+ if (action == null) {
22
+ return invalidProtocolPayload(`action must be one of: ${STORAGE_ACTIONS.join(', ')}`);
23
+ }
24
+ if (KEYED_STORAGE_ACTIONS.has(action) && !key) {
25
+ return invalidProtocolPayload(`key is required for the ${action} action`);
26
+ }
27
+ if (action === 'set' && typeof entryValue !== 'string') {
28
+ return invalidProtocolPayload('value is required for the set action');
29
+ }
30
+ return validProtocolPayload(compact({ action, key, value: entryValue, origin }));
31
+ });
2
32
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/protocol/http/storage.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/protocol/http/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAkDrG,mDAAmD;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAU,CAAA;AAEjF,4CAA4C;AAC5C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AAE9E,wDAAwD;AACxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAiB,CAAC,KAAK,EAAE,EAAE;IAClF,MAAM,OAAO,GAAG,aAAa,CAAiB,KAAK,CAAC,CAAA;IACpD,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,eAAe,CAAC;QACnE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,cAAc;KACtB,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAE/D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,sBAAsB,CAAC,0BAA0B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO,sBAAsB,CAAC,2BAA2B,MAAM,SAAS,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,sBAAsB,CAAC,sCAAsC,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AACjF,CAAC,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { ErrorDetail, Ok } from './errors.js';
1
2
  /**
2
3
  * CPU throttle state.
3
4
  * Rate 1 = no throttle, 4 = 4x slowdown. Must be >= 1.
@@ -13,36 +14,28 @@ export type ThrottleRequest = {
13
14
  action: 'clear';
14
15
  };
15
16
  /** POST /throttle response for the `set` action. */
16
- export type ThrottleSetResponse = {
17
- ok: true;
17
+ export type ThrottleSetResponse = Ok<{
18
18
  attached: boolean;
19
19
  applied: boolean;
20
20
  state: ThrottleState | null;
21
- error?: {
22
- message: string;
23
- code?: string;
24
- } | null;
25
- };
21
+ error?: ErrorDetail | null;
22
+ }>;
26
23
  /** POST /throttle response for the `clear` action. */
27
- export type ThrottleClearResponse = {
28
- ok: true;
24
+ export type ThrottleClearResponse = Ok<{
29
25
  attached: boolean;
30
26
  applied: boolean;
31
27
  state: null;
32
- error?: {
33
- message: string;
34
- code?: string;
35
- } | null;
36
- };
28
+ error?: ErrorDetail | null;
29
+ }>;
37
30
  /** GET /throttle response. */
38
- export type ThrottleStatusResponse = {
39
- ok: true;
31
+ export type ThrottleStatusResponse = Ok<{
40
32
  attached: boolean;
41
33
  applied: boolean;
42
34
  state: ThrottleState | null;
43
- lastError?: {
44
- message: string;
45
- code?: string;
46
- } | null;
47
- };
35
+ lastError?: ErrorDetail | null;
36
+ }>;
37
+ /** Actions accepted by POST /throttle. */
38
+ export declare const THROTTLE_ACTIONS: readonly ["set", "clear"];
39
+ /** Schema for POST /throttle request payloads. */
40
+ export declare const throttleRequestSchema: import("../schema.js").ProtocolSchema<ThrottleRequest>;
48
41
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/throttle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,sCAAsC;AACtC,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAA;AAEnF,oDAAoD;AACpD,MAAM,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,IAAI,CAAA;IACR,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACjD,CAAA;AAED,sDAAsD;AACtD,MAAM,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAA;IACR,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACjD,CAAA;AAED,8BAA8B;AAC9B,MAAM,MAAM,sBAAsB,GAAG;IACpC,EAAE,EAAE,IAAI,CAAA;IACR,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACrD,CAAA"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/protocol/http/throttle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,sCAAsC;AACtC,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAA;AAEnF,oDAAoD;AACpD,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;IACpC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAC1B,CAAC,CAAA;AAEF,sDAAsD;AACtD,MAAM,MAAM,qBAAqB,GAAG,EAAE,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAC1B,CAAC,CAAA;AAEF,8BAA8B;AAC9B,MAAM,MAAM,sBAAsB,GAAG,EAAE,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAC9B,CAAC,CAAA;AAEF,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,2BAA4B,CAAA;AAEzD,kDAAkD;AAClD,eAAO,MAAM,qBAAqB,wDAsBhC,CAAA"}
@@ -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