@gate-forge/pack-playwright 0.7.1 → 0.9.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 (205) hide show
  1. package/README.md +31 -0
  2. package/dist/constants.d.ts +13 -140
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +13 -148
  5. package/dist/constants.js.map +1 -1
  6. package/dist/cypress/plugin.d.ts +53 -0
  7. package/dist/cypress/plugin.d.ts.map +1 -0
  8. package/dist/cypress/plugin.js +369 -0
  9. package/dist/cypress/plugin.js.map +1 -0
  10. package/dist/cypress/spec-scan.d.ts +39 -0
  11. package/dist/cypress/spec-scan.d.ts.map +1 -0
  12. package/dist/cypress/spec-scan.js +301 -0
  13. package/dist/cypress/spec-scan.js.map +1 -0
  14. package/dist/diagnosis.d.ts +39 -0
  15. package/dist/diagnosis.d.ts.map +1 -0
  16. package/dist/diagnosis.js +63 -0
  17. package/dist/diagnosis.js.map +1 -0
  18. package/dist/discovery/adapter-projection.d.ts +13 -0
  19. package/dist/discovery/adapter-projection.d.ts.map +1 -0
  20. package/dist/discovery/adapter-projection.js +84 -0
  21. package/dist/discovery/adapter-projection.js.map +1 -0
  22. package/dist/discovery/config-locations.d.ts +5 -0
  23. package/dist/discovery/config-locations.d.ts.map +1 -0
  24. package/dist/discovery/config-locations.js +19 -0
  25. package/dist/discovery/config-locations.js.map +1 -0
  26. package/dist/discovery/cypress-runner-adapter.d.ts +112 -0
  27. package/dist/discovery/cypress-runner-adapter.d.ts.map +1 -0
  28. package/dist/discovery/cypress-runner-adapter.js +501 -0
  29. package/dist/discovery/cypress-runner-adapter.js.map +1 -0
  30. package/dist/discovery/discover.d.ts +53 -1
  31. package/dist/discovery/discover.d.ts.map +1 -1
  32. package/dist/discovery/discover.js +290 -30
  33. package/dist/discovery/discover.js.map +1 -1
  34. package/dist/discovery/git-ignore.d.ts +13 -0
  35. package/dist/discovery/git-ignore.d.ts.map +1 -0
  36. package/dist/discovery/git-ignore.js +62 -0
  37. package/dist/discovery/git-ignore.js.map +1 -0
  38. package/dist/discovery/index.d.ts +10 -0
  39. package/dist/discovery/index.d.ts.map +1 -1
  40. package/dist/discovery/index.js +10 -0
  41. package/dist/discovery/index.js.map +1 -1
  42. package/dist/discovery/playwright-runner-adapter.d.ts +108 -0
  43. package/dist/discovery/playwright-runner-adapter.d.ts.map +1 -0
  44. package/dist/discovery/playwright-runner-adapter.js +185 -0
  45. package/dist/discovery/playwright-runner-adapter.js.map +1 -0
  46. package/dist/discovery/prepare-barrier.d.ts +522 -0
  47. package/dist/discovery/prepare-barrier.d.ts.map +1 -0
  48. package/dist/discovery/prepare-barrier.js +739 -0
  49. package/dist/discovery/prepare-barrier.js.map +1 -0
  50. package/dist/discovery/pytest-adapter.d.ts.map +1 -1
  51. package/dist/discovery/pytest-adapter.js +6 -2
  52. package/dist/discovery/pytest-adapter.js.map +1 -1
  53. package/dist/discovery/pytest-runner-adapter.d.ts +124 -0
  54. package/dist/discovery/pytest-runner-adapter.d.ts.map +1 -0
  55. package/dist/discovery/pytest-runner-adapter.js +454 -0
  56. package/dist/discovery/pytest-runner-adapter.js.map +1 -0
  57. package/dist/discovery/reconcile.d.ts +89 -11
  58. package/dist/discovery/reconcile.d.ts.map +1 -1
  59. package/dist/discovery/reconcile.js +440 -78
  60. package/dist/discovery/reconcile.js.map +1 -1
  61. package/dist/discovery/runner-env.d.ts +88 -2
  62. package/dist/discovery/runner-env.d.ts.map +1 -1
  63. package/dist/discovery/runner-env.js +142 -4
  64. package/dist/discovery/runner-env.js.map +1 -1
  65. package/dist/discovery/runner-file-scope.d.ts +114 -0
  66. package/dist/discovery/runner-file-scope.d.ts.map +1 -0
  67. package/dist/discovery/runner-file-scope.js +638 -0
  68. package/dist/discovery/runner-file-scope.js.map +1 -0
  69. package/dist/discovery/static-discovery.d.ts +49 -3
  70. package/dist/discovery/static-discovery.d.ts.map +1 -1
  71. package/dist/discovery/static-discovery.js +477 -18
  72. package/dist/discovery/static-discovery.js.map +1 -1
  73. package/dist/discovery/supervised-run.d.ts +199 -10
  74. package/dist/discovery/supervised-run.d.ts.map +1 -1
  75. package/dist/discovery/supervised-run.js +350 -39
  76. package/dist/discovery/supervised-run.js.map +1 -1
  77. package/dist/discovery/trusted-config.d.ts +180 -6
  78. package/dist/discovery/trusted-config.d.ts.map +1 -1
  79. package/dist/discovery/trusted-config.js +279 -10
  80. package/dist/discovery/trusted-config.js.map +1 -1
  81. package/dist/discovery/vitest-runner-adapter.d.ts +172 -0
  82. package/dist/discovery/vitest-runner-adapter.d.ts.map +1 -0
  83. package/dist/discovery/vitest-runner-adapter.js +607 -0
  84. package/dist/discovery/vitest-runner-adapter.js.map +1 -0
  85. package/dist/fixture/consumer-runner.d.ts +4 -0
  86. package/dist/fixture/consumer-runner.d.ts.map +1 -0
  87. package/dist/fixture/consumer-runner.js +38 -0
  88. package/dist/fixture/consumer-runner.js.map +1 -0
  89. package/dist/fixture/evidence.d.ts +27 -0
  90. package/dist/fixture/evidence.d.ts.map +1 -1
  91. package/dist/fixture/evidence.js +12 -0
  92. package/dist/fixture/evidence.js.map +1 -1
  93. package/dist/fixture/fixture.d.ts +2 -1
  94. package/dist/fixture/fixture.d.ts.map +1 -1
  95. package/dist/fixture/fixture.js +1 -17
  96. package/dist/fixture/fixture.js.map +1 -1
  97. package/dist/fixture/witness-client.d.ts +6 -174
  98. package/dist/fixture/witness-client.d.ts.map +1 -1
  99. package/dist/fixture/witness-client.js +6 -267
  100. package/dist/fixture/witness-client.js.map +1 -1
  101. package/dist/index.d.ts +9 -6
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +5 -4
  104. package/dist/index.js.map +1 -1
  105. package/dist/json.d.ts +6 -12
  106. package/dist/json.d.ts.map +1 -1
  107. package/dist/json.js +6 -17
  108. package/dist/json.js.map +1 -1
  109. package/dist/reporter/project-graph-reporter.d.ts +121 -0
  110. package/dist/reporter/project-graph-reporter.d.ts.map +1 -0
  111. package/dist/reporter/project-graph-reporter.js +132 -0
  112. package/dist/reporter/project-graph-reporter.js.map +1 -0
  113. package/dist/reporter/reporter.cjs.map +1 -1
  114. package/dist/reporter/reporter.d.ts +93 -4
  115. package/dist/reporter/reporter.d.ts.map +1 -1
  116. package/dist/reporter/reporter.js +174 -18
  117. package/dist/reporter/reporter.js.map +1 -1
  118. package/dist/runner-claims.d.ts +13 -0
  119. package/dist/runner-claims.d.ts.map +1 -0
  120. package/dist/runner-claims.js +46 -0
  121. package/dist/runner-claims.js.map +1 -0
  122. package/dist/runner-resolution.d.ts +3 -0
  123. package/dist/runner-resolution.d.ts.map +1 -0
  124. package/dist/runner-resolution.js +14 -0
  125. package/dist/runner-resolution.js.map +1 -0
  126. package/dist/supervisor/client.d.ts +23 -1
  127. package/dist/supervisor/client.d.ts.map +1 -1
  128. package/dist/supervisor/client.js +49 -0
  129. package/dist/supervisor/client.js.map +1 -1
  130. package/dist/supervisor/drain.d.ts +65 -0
  131. package/dist/supervisor/drain.d.ts.map +1 -1
  132. package/dist/supervisor/drain.js +353 -9
  133. package/dist/supervisor/drain.js.map +1 -1
  134. package/dist/supervisor/index.d.ts +7 -3
  135. package/dist/supervisor/index.d.ts.map +1 -1
  136. package/dist/supervisor/index.js +7 -3
  137. package/dist/supervisor/index.js.map +1 -1
  138. package/dist/supervisor/spool.d.ts +65 -2
  139. package/dist/supervisor/spool.d.ts.map +1 -1
  140. package/dist/supervisor/spool.js +47 -0
  141. package/dist/supervisor/spool.js.map +1 -1
  142. package/dist/surface.d.ts +6 -207
  143. package/dist/surface.d.ts.map +1 -1
  144. package/dist/surface.js +6 -264
  145. package/dist/surface.js.map +1 -1
  146. package/dist/vitest/index.d.ts +23 -0
  147. package/dist/vitest/index.d.ts.map +1 -0
  148. package/dist/vitest/index.js +356 -0
  149. package/dist/vitest/index.js.map +1 -0
  150. package/dist/vitest/reporter.d.ts +83 -0
  151. package/dist/vitest/reporter.d.ts.map +1 -0
  152. package/dist/vitest/reporter.js +211 -0
  153. package/dist/vitest/reporter.js.map +1 -0
  154. package/dist/vitest/worker-slot.d.ts +36 -0
  155. package/dist/vitest/worker-slot.d.ts.map +1 -0
  156. package/dist/vitest/worker-slot.js +51 -0
  157. package/dist/vitest/worker-slot.js.map +1 -0
  158. package/dist/witness/adapter-registry.d.ts +6 -50
  159. package/dist/witness/adapter-registry.d.ts.map +1 -1
  160. package/dist/witness/adapter-registry.js +6 -257
  161. package/dist/witness/adapter-registry.js.map +1 -1
  162. package/dist/witness/behavior-request.d.ts +6 -76
  163. package/dist/witness/behavior-request.d.ts.map +1 -1
  164. package/dist/witness/behavior-request.js +6 -273
  165. package/dist/witness/behavior-request.js.map +1 -1
  166. package/dist/witness/behavior.d.ts +6 -48
  167. package/dist/witness/behavior.d.ts.map +1 -1
  168. package/dist/witness/behavior.js +6 -114
  169. package/dist/witness/behavior.js.map +1 -1
  170. package/dist/witness/bin.d.ts +6 -17
  171. package/dist/witness/bin.d.ts.map +1 -1
  172. package/dist/witness/bin.js +6 -168
  173. package/dist/witness/bin.js.map +1 -1
  174. package/dist/witness/browser.d.ts +14 -206
  175. package/dist/witness/browser.d.ts.map +1 -1
  176. package/dist/witness/browser.js +15 -654
  177. package/dist/witness/browser.js.map +1 -1
  178. package/dist/witness/classifications.d.ts +6 -38
  179. package/dist/witness/classifications.d.ts.map +1 -1
  180. package/dist/witness/classifications.js +6 -83
  181. package/dist/witness/classifications.js.map +1 -1
  182. package/dist/witness/env-attestation.d.ts +6 -94
  183. package/dist/witness/env-attestation.d.ts.map +1 -1
  184. package/dist/witness/env-attestation.js +6 -198
  185. package/dist/witness/env-attestation.js.map +1 -1
  186. package/dist/witness/fixture-provider.d.ts +6 -82
  187. package/dist/witness/fixture-provider.d.ts.map +1 -1
  188. package/dist/witness/fixture-provider.js +6 -105
  189. package/dist/witness/fixture-provider.js.map +1 -1
  190. package/dist/witness/loopback-pins.d.ts +6 -75
  191. package/dist/witness/loopback-pins.d.ts.map +1 -1
  192. package/dist/witness/loopback-pins.js +6 -240
  193. package/dist/witness/loopback-pins.js.map +1 -1
  194. package/dist/witness/server.d.ts +8 -26
  195. package/dist/witness/server.d.ts.map +1 -1
  196. package/dist/witness/server.js +24 -3761
  197. package/dist/witness/server.js.map +1 -1
  198. package/dist/witness/types.d.ts +6 -882
  199. package/dist/witness/types.d.ts.map +1 -1
  200. package/dist/witness/types.js +9 -1
  201. package/dist/witness/types.js.map +1 -1
  202. package/examples/overlay-proof.spec.js +75 -0
  203. package/package.json +12 -3
  204. package/python/gateforge_pytest_plugin.py +462 -0
  205. package/python/__pycache__/gateforge_persistence_intents.cpython-314.pyc +0 -0
@@ -1,172 +1,10 @@
1
1
  /**
2
- * Witness process entry (`gateforge-witness`): derives configuration
3
- * from CLI flags and the environment and starts the loopback witness
4
- * service.
2
+ * Compatibility re-export: `witness/bin` now lives in the runner-neutral
3
+ * `@gate-forge/witness` package (plan 2026-09-25 phase 1).
5
4
  *
6
- * Usage (every flag has an env fallback; the flag wins when both are
7
- * given):
8
- *
9
- * gateforge-witness [--help]
10
- * [--proxy-target <url>] start the observation proxy against
11
- * this loopback base URL (ADR 0004 D7)
12
- * [--mount-path <prefix>] browser-facing mount prefix the proxy
13
- * strips before forwarding AND recording
14
- * (e.g. /api; requires --proxy-target)
15
- * [--state-dir <dir>] manifest append at shutdown
16
- * [--classifications <path>] classifications YAML input
17
- * [--adapters-dir <dir>] reviewed adapters (default .gateforge/adapters)
18
- * [--target-base-url <url>] attestation subject (GF-10, loopback)
19
- * [--target-fingerprint <m>] expected marker (GF-13)
20
- * [--adapter-base-url <url>] default adapter read base
21
- *
22
- * Env surface:
23
- * GATEFORGE_RUN_ID, GATEFORGE_RUN_TOKEN (required; CLI contract)
24
- * GATEFORGE_PROXY_TARGET, GATEFORGE_MOUNT_PATH (observation proxy)
25
- * GATEFORGE_STATE_DIR (manifest append at shutdown)
26
- * GATEFORGE_ADAPTERS_DIR (default .gateforge/adapters)
27
- * GATEFORGE_CLASSIFICATIONS (classifications YAML path)
28
- * GATEFORGE_TARGET_BASE_URL (attestation subject, GF-10)
29
- * GATEFORGE_TARGET_FINGERPRINT (expected marker, GF-13)
30
- * GATEFORGE_ADAPTER_BASE_URL (default adapter read base)
31
- * GATEFORGE_WITNESS_VERIFIER_KEY (attestation verifier key)
32
- *
33
- * SECRETS NEVER TRAVEL ON ARGV (a process's cmdline is world-readable
34
- * via /proc — the same rule `gateforge test-gates` applies): the run
35
- * id/token are env-only (set by 'gateforge test-gates'), and the
36
- * verifier key is read from GATEFORGE_WITNESS_VERIFIER_KEY only. With a
37
- * verifier key the witness serves the MAC-attested ledger surface;
38
- * without one it stays unauthenticated and downstream evaluation fails
39
- * closed.
40
- *
41
- * The wrapper prints `GATEFORGE_WITNESS_URL=<url>` once listening — and
42
- * `GATEFORGE_WITNESS_PROXY_URL=<url>` when an observation proxy is
43
- * active; the process serves until SIGTERM/SIGINT.
44
- */
45
- import { startWitness, WitnessStartupError } from './server.js';
46
- import { ENV_ADAPTER_BASE_URL, ENV_ADAPTERS_DIR, ENV_CLASSIFICATIONS, ENV_MOUNT_PATH, ENV_PROXY_TARGET, ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_TARGET_BASE_URL, ENV_TARGET_FINGERPRINT, ENV_WITNESS_VERIFIER_KEY, } from '../constants.js';
47
- /** One-line usage (the header comment above is the long form). */
48
- export const WITNESS_BIN_USAGE = 'usage: gateforge-witness [--proxy-target <url>] [--mount-path <prefix>] ' +
49
- '[--state-dir <dir>] [--classifications <path>] [--adapters-dir <dir>] ' +
50
- '[--target-base-url <url>] [--target-fingerprint <marker>] [--adapter-base-url <url>] ' +
51
- '(run id/token via GATEFORGE_RUN_ID/GATEFORGE_RUN_TOKEN; verifier key via ' +
52
- 'GATEFORGE_WITNESS_VERIFIER_KEY)';
53
- /** Flags this bin accepts (values; `--help` is handled separately). */
54
- const VALUE_FLAGS = new Set([
55
- 'proxy-target',
56
- 'mount-path',
57
- 'state-dir',
58
- 'classifications',
59
- 'adapters-dir',
60
- 'target-base-url',
61
- 'target-fingerprint',
62
- 'adapter-base-url',
63
- 'adapter-read-authorization',
64
- ]);
65
- /**
66
- * Parses the bin argv (`--flag value` and `--flag=value` shapes).
67
- * Unknown flags and missing values fail closed with the usage line —
68
- * a mis-wired harness must never silently start a half-configured
69
- * witness.
70
- *
71
- * Args:
72
- * argv: arguments after node/script.
73
- *
74
- * Returns:
75
- * WitnessBinFlags: parsed flag values.
76
- *
77
- * Throws:
78
- * WitnessStartupError: on any malformed argv.
79
- */
80
- function parseFlags(argv) {
81
- const values = new Map();
82
- for (let index = 0; index < argv.length; index += 1) {
83
- const token = argv[index] ?? '';
84
- if (!token.startsWith('--')) {
85
- throw new WitnessStartupError(`unexpected argument '${token}'\n${WITNESS_BIN_USAGE}`);
86
- }
87
- const body = token.slice(2);
88
- const eq = body.indexOf('=');
89
- const name = eq >= 0 ? body.slice(0, eq) : body;
90
- if (name.length === 0) {
91
- throw new WitnessStartupError(`invalid flag '${token}'\n${WITNESS_BIN_USAGE}`);
92
- }
93
- if (name === 'help') {
94
- continue; // handled by the caller before parsing matters
95
- }
96
- if (!VALUE_FLAGS.has(name)) {
97
- throw new WitnessStartupError(`unknown flag '--${name}'\n${WITNESS_BIN_USAGE}`);
98
- }
99
- let value = eq >= 0 ? body.slice(eq + 1) : undefined;
100
- if (value === undefined) {
101
- const next = argv[index + 1];
102
- if (next === undefined || next.startsWith('--')) {
103
- throw new WitnessStartupError(`flag '--${name}' requires a value\n${WITNESS_BIN_USAGE}`);
104
- }
105
- value = next;
106
- index += 1;
107
- }
108
- if (values.has(name)) {
109
- throw new WitnessStartupError(`flag '--${name}' may only be given once\n${WITNESS_BIN_USAGE}`);
110
- }
111
- values.set(name, value);
112
- }
113
- return { values };
114
- }
115
- /** Flag value or its env fallback (undefined when neither is set). */
116
- function flagOrEnv(flags, name, envValue) {
117
- const fromFlags = flags.values.get(name);
118
- if (fromFlags !== undefined && fromFlags !== '')
119
- return fromFlags;
120
- if (envValue !== undefined && envValue !== '')
121
- return envValue;
122
- return undefined;
123
- }
124
- /**
125
- * Reads env + argv and starts the witness.
126
- *
127
- * Args:
128
- * argv: CLI flags (see the module header; `--help` prints usage and
129
- * returns a never-started handle).
130
- * env: process environment.
131
- *
132
- * Returns:
133
- * WitnessHandle once listening (or a handle with an empty `url` for
134
- * `--help`; the wrapper skips its URL banner in that case).
135
- *
136
- * Throws:
137
- * WitnessStartupError / AttestationError / AdapterRegistryError:
138
- * fail-closed startup problems (exit 2 via the wrapper).
5
+ * The move is physical, not behavioural: this module forwards every
6
+ * export unchanged so `@gate-forge/pack-playwright`'s published import
7
+ * paths — which consumers pin — keep resolving to the same values.
139
8
  */
140
- export async function main(argv, env) {
141
- if (argv.includes('--help') || argv.includes('-h')) {
142
- process.stdout.write(`${WITNESS_BIN_USAGE}\n`);
143
- return Object.freeze({ url: '', proxyUrl: null, stop: async () => { } });
144
- }
145
- const flags = parseFlags(argv);
146
- const runId = env[ENV_RUN_ID];
147
- const token = env[ENV_RUN_TOKEN];
148
- if (runId === undefined || runId === '') {
149
- throw new WitnessStartupError(`${ENV_RUN_ID} is required (set by 'gateforge test-gates')`);
150
- }
151
- if (token === undefined || token === '') {
152
- throw new WitnessStartupError(`${ENV_RUN_TOKEN} is required (set by 'gateforge test-gates')`);
153
- }
154
- // Environment-only, deliberately absent from argv (world-readable
155
- // /proc cmdline): the suite must never see the verifier key either way.
156
- const verifierKey = env[ENV_WITNESS_VERIFIER_KEY] ?? null;
157
- return startWitness({
158
- runId,
159
- token,
160
- proxyTarget: flagOrEnv(flags, 'proxy-target', env[ENV_PROXY_TARGET]),
161
- mountPath: flagOrEnv(flags, 'mount-path', env[ENV_MOUNT_PATH]),
162
- stateDir: flagOrEnv(flags, 'state-dir', env[ENV_STATE_DIR]),
163
- classificationsPath: flagOrEnv(flags, 'classifications', env[ENV_CLASSIFICATIONS]),
164
- adaptersDir: flagOrEnv(flags, 'adapters-dir', env[ENV_ADAPTERS_DIR] ?? '.gateforge/adapters'),
165
- targetBaseUrl: flagOrEnv(flags, 'target-base-url', env[ENV_TARGET_BASE_URL]),
166
- targetFingerprint: flagOrEnv(flags, 'target-fingerprint', env[ENV_TARGET_FINGERPRINT]),
167
- adapterBaseUrl: flagOrEnv(flags, 'adapter-base-url', env[ENV_ADAPTER_BASE_URL]),
168
- adapterReadAuthorization: flagOrEnv(flags, 'adapter-read-authorization', env['GATEFORGE_ADAPTER_READ_AUTHORIZATION']) ?? null,
169
- verifierKey,
170
- });
171
- }
9
+ export * from '@gate-forge/witness/witness/bin';
172
10
  //# sourceMappingURL=bin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/witness/bin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAC5B,0EAA0E;IAC1E,wEAAwE;IACxE,uFAAuF;IACvF,2EAA2E;IAC3E,iCAAiC,CAAC;AAEpC,uEAAuE;AACvE,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC;IAC/C,cAAc;IACd,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,4BAA4B;CAC7B,CAAC,CAAC;AAMH;;;;;;;;;;;;;;GAcG;AACH,SAAS,UAAU,CAAC,IAAuB;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,KAAK,MAAM,iBAAiB,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,KAAK,MAAM,iBAAiB,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,SAAS,CAAC,+CAA+C;QAC3D,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,IAAI,MAAM,iBAAiB,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,KAAK,GAAuB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,mBAAmB,CAAC,WAAW,IAAI,uBAAuB,iBAAiB,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,mBAAmB,CAAC,WAAW,IAAI,6BAA6B,iBAAiB,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,sEAAsE;AACtE,SAAS,SAAS,CAChB,KAAsB,EACtB,IAAY,EACZ,QAA4B;IAE5B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,IAAuB,EACvB,GAAsB;IAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iBAAiB,IAAI,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAmB,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,mBAAmB,CAAC,GAAG,UAAU,8CAA8C,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,mBAAmB,CAAC,GAAG,aAAa,8CAA8C,CAAC,CAAC;IAChG,CAAC;IACD,kEAAkE;IAClE,wEAAwE;IACxE,MAAM,WAAW,GAAG,GAAG,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC;IAE1D,OAAO,YAAY,CAAC;QAClB,KAAK;QACL,KAAK;QACL,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9D,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3D,mBAAmB,EAAE,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAClF,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,qBAAqB,CAAC;QAC7F,aAAa,EAAE,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC5E,iBAAiB,EAAE,SAAS,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtF,cAAc,EAAE,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC/E,wBAAwB,EACtB,SAAS,CAAC,KAAK,EAAE,4BAA4B,EAAE,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,IAAI;QACrG,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/witness/bin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,iCAAiC,CAAC"}
@@ -1,215 +1,23 @@
1
1
  /**
2
- * The engine-owned browser (plan Phase 1 item 4): Chromium contexts the
3
- * WITNESS process creates and drives itself — one isolated context per
4
- * supervisor-opened test session, closed when the session seals.
2
+ * Compatibility re-export: `witness/browser` now lives in the runner-neutral
3
+ * `@gate-forge/witness` package (plan 2026-09-25 phase 1).
5
4
  *
6
- * Test code NEVER touches these pages: the worker holds no handle, no
7
- * URL, and no capability over them. The engine executes the constrained
8
- * surface operations (create/read/update/archive) with the
9
- * consumer-declared locators, and observes each step itself:
10
- * - the rendered control it clicked and the values it typed;
11
- * - the actual application request the action caused (captured from the
12
- * engine page's own network, app-origin only);
13
- * - the resulting navigation and the rendered row/form it read back.
14
- *
15
- * Forgery resistance (why this channel is proof):
16
- * - fabricated DOM (`page.evaluate` in the worker page) is irrelevant:
17
- * the engine reads its OWN page;
18
- * - mocked responses (`page.route` in the worker) are irrelevant: the
19
- * worker cannot route the engine's traffic;
20
- * - direct API/Node mutations bypass the engine page entirely: no
21
- * engine action runs, so no engine-observed action/visible records
22
- * exist for them — invented suite-submitted records never satisfy;
23
- * - HTTP-200-while-error: the engine asserts the rendered status
24
- * itself (created/archived values) AND captures the app response
25
- * status — a displayed error fails the action fail-closed.
26
- *
27
- * Surface selectors are LOCATORS, never proof: a lying descriptor only
28
- * makes the engine fail to find elements (fail closed).
29
- */
30
- import { type Browser, type Page } from 'playwright';
31
- import { type SurfaceDescriptor, type SurfaceStep } from '../surface.js';
32
- /** The UI operations the engine can perform (constrained subset). */
33
- export type EngineOperation = 'create' | 'read' | 'update' | 'delete';
34
- /** One app-origin exchange the engine captured during an action. */
35
- export interface EngineCapturedExchange {
36
- /** Uppercase method (GET, POST, ...). */
37
- method: string;
38
- /** Canonical observed path (query/fragment stripped). */
39
- path: string;
40
- /** Response status the app answered. */
41
- status: number;
42
- /** Response body bytes (bounded snapshot for hashing). */
43
- body: Buffer;
44
- }
45
- /** What the engine observed performing one action. */
46
- export interface EngineActionObservation {
47
- /** Entity id OBSERVED from the rendered list (never declared). */
48
- entityId: string;
49
- /** The exact input values the engine typed (exact-value echo source). */
50
- enteredFields: Record<string, string>;
51
- /** The rendered fields the engine read back after the action. */
52
- renderedFields: Record<string, string>;
53
- /** App-origin exchanges captured inside the action window. */
54
- exchanges: EngineCapturedExchange[];
55
- /** Engine-side pre-observation marker (filled by the witness layer). */
56
- preObservationId?: string;
57
- }
58
- /** Fail-closed engine browser error (surfaced as 409/503 downstream). */
59
- export declare class EngineBrowserError extends Error {
60
- constructor(message: string);
61
- }
62
- /** The browser launcher the engine drives (default: pinned Chromium). */
63
- export interface EngineBrowserLauncher {
64
- launch(options?: Record<string, unknown>): Promise<Browser>;
65
- }
66
- /**
67
- * The minimal page surface the wizard step driver needs. A real
68
- * Playwright Page satisfies it structurally, and stub pages in tests
69
- * implement exactly this — no browser required to prove the walk.
70
- */
71
- export interface StepPage {
72
- goto(url: string, options?: {
73
- timeout?: number;
74
- }): Promise<unknown>;
75
- waitForSelector(selector: string, options?: {
76
- timeout?: number;
77
- }): Promise<unknown>;
78
- locator(selector: string): {
79
- click(options?: {
80
- timeout?: number;
81
- }): Promise<void>;
82
- fill(value: string, options?: {
83
- timeout?: number;
84
- }): Promise<void>;
85
- check(options?: {
86
- timeout?: number;
87
- }): Promise<void>;
88
- };
89
- keyboard: {
90
- press(key: string): Promise<void>;
91
- };
92
- }
93
- /**
94
- * Walks one validated wizard step list on the engine-owned page
95
- * (surface v2 create). Every interaction runs here, engine-side: the
96
- * test supplies intent (field values) only. A step referencing an
97
- * input field the journey did not provide fails closed — the engine
98
- * never invents values. Unknown shapes are unreachable post-
99
- * validation, but still refused defensively (never silently skipped).
100
- *
101
- * Args:
102
- * page: the engine-owned page (real or structural stub).
103
- * appBase: the trusted attested subject origin (never suite input).
104
- * steps: the validated wizard walk, in order.
105
- * fields: the journey's declared input values, keyed by field name.
5
+ * The move is physical, not behavioural: this module forwards every
6
+ * export unchanged so `@gate-forge/pack-playwright`'s published import
7
+ * paths — which consumers pin — keep resolving to the same values.
106
8
  */
107
- export declare function driveCreateSteps(page: StepPage, appBase: string, steps: readonly SurfaceStep[], fields: Record<string, string>): Promise<void>;
9
+ export * from '@gate-forge/witness/witness/browser';
10
+ import { EngineBrowserManager as RunnerNeutralBrowserManager, type EngineBrowserLauncher } from '@gate-forge/witness/witness/browser';
108
11
  /**
109
- * Owns the engine Chromium instance and its per-session contexts.
12
+ * The Playwright-defaulting engine browser manager.
110
13
  *
111
- * Args:
112
- * launcher: browser launcher (default: the pinned Chromium). Tests
113
- * inject a failing launcher to prove the fail-closed path; the
114
- * driving and observation below stay engine code regardless of
115
- * which executable launches.
14
+ * The runner-neutral `EngineBrowserManager` REQUIRES a launcher: this
15
+ * package is the one that knows about Playwright, so the default lives
16
+ * here. Every construction site already passed a launcher explicitly,
17
+ * so nothing changes — but a consumer that relied on the default keeps
18
+ * getting Chromium from this path.
116
19
  */
117
- export declare class EngineBrowserManager {
118
- private readonly launcher;
119
- private browser;
120
- private launching;
121
- private readonly sessions;
122
- /**
123
- * Pinned `--host-resolver-rules` value binding every attested hostname
124
- * to its startup-approved loopback IPs. Set once at witness startup
125
- * (before any launch); the browser is then incapable of resolving
126
- * those names anywhere but loopback, regardless of later DNS changes.
127
- */
128
- private dnsPinRules;
20
+ export declare class EngineBrowserManager extends RunnerNeutralBrowserManager {
129
21
  constructor(launcher?: EngineBrowserLauncher);
130
- /**
131
- * Installs the DNS pin rules for the next (first) launch.
132
- *
133
- * Args:
134
- * rules: the `--host-resolver-rules` value, or null when nothing is
135
- * pinned (plain launch, previous behavior).
136
- *
137
- * Throws:
138
- * EngineBrowserError: when the browser already launched — pins must
139
- * precede every navigation (fail closed, never silently unbound).
140
- */
141
- setDnsPinRules(rules: string | null): void;
142
- /**
143
- * Returns the engine page for one session, creating the isolated
144
- * context on first use.
145
- *
146
- * Args:
147
- * sessionId: the supervisor-opened session the context belongs to.
148
- *
149
- * Returns:
150
- * Promise<Page>: the session's engine-owned page.
151
- *
152
- * Throws:
153
- * EngineBrowserError: when Chromium cannot launch (fail closed —
154
- * the capability is honestly unavailable at runtime).
155
- */
156
- pageFor(sessionId: string): Promise<Page>;
157
- /**
158
- * Closes and forgets one session's engine context (session seal).
159
- * Late engine calls for the session then recreate nothing — callers
160
- * must refuse sealed sessions before driving (they do: every browser
161
- * endpoint requires an OPEN session first).
162
- *
163
- * Args:
164
- * sessionId: the sealed session.
165
- */
166
- closeSession(sessionId: string): Promise<void>;
167
- /** Closes every engine context and the browser (witness stop). */
168
- closeAll(): Promise<void>;
169
- /** Lazy Chromium launch (single flight; fail closed with the cause). */
170
- private ensureBrowser;
171
22
  }
172
- /**
173
- * Drives one constrained surface operation on the engine page and
174
- * observes every step itself.
175
- *
176
- * Args:
177
- * page: the session's engine-owned page.
178
- * appBase: loopback app base the engine navigates (validated upstream).
179
- * surface: the validated consumer descriptor (locators only).
180
- * operation: the constrained operation to perform.
181
- * input: entered fields (create/update) and/or the target entity id.
182
- *
183
- * Returns:
184
- * Promise<EngineActionObservation>: the engine's own observation —
185
- * observed entity id, entered + rendered fields, captured exchanges.
186
- *
187
- * Throws:
188
- * EngineBrowserError: fail-closed on every untrusted outcome —
189
- * missing rows, ambiguous creation, wrong rendered status, no
190
- * application request, or an application error status.
191
- */
192
- export declare function driveEngineAction(page: Page, appBase: string, surface: SurfaceDescriptor, operation: EngineOperation, input: {
193
- fields?: Record<string, string>;
194
- entityId?: string;
195
- }): Promise<EngineActionObservation>;
196
- /**
197
- * Re-reads the rendered result for one entity on the engine page
198
- * (the `visible.confirm` counterpart): row read for mutations, form
199
- * read for reads.
200
- *
201
- * Args:
202
- * page: the session's engine-owned page.
203
- * appBase: loopback app base.
204
- * surface: the validated consumer descriptor.
205
- * operation: the original action (decides row vs form readback).
206
- * entityId: the engine-observed entity id.
207
- *
208
- * Returns:
209
- * Promise<Record<string, string>>: the rendered fields.
210
- *
211
- * Throws:
212
- * EngineBrowserError: when the UI no longer exposes the entity.
213
- */
214
- export declare function readEngineVisible(page: Page, appBase: string, surface: SurfaceDescriptor, operation: EngineOperation, entityId: string): Promise<Record<string, string>>;
215
23
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,qCAAqC,CAAC;AAGpD,OAAO,EACL,oBAAoB,IAAI,2BAA2B,EACnD,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,2BAA2B;gBACvD,QAAQ,GAAE,qBAAgC;CAGvD"}