@gate-forge/pack-playwright 0.7.1 → 0.8.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.
- package/README.md +31 -0
- package/dist/constants.d.ts +13 -140
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +13 -148
- package/dist/constants.js.map +1 -1
- package/dist/cypress/plugin.d.ts +53 -0
- package/dist/cypress/plugin.d.ts.map +1 -0
- package/dist/cypress/plugin.js +369 -0
- package/dist/cypress/plugin.js.map +1 -0
- package/dist/cypress/spec-scan.d.ts +39 -0
- package/dist/cypress/spec-scan.d.ts.map +1 -0
- package/dist/cypress/spec-scan.js +301 -0
- package/dist/cypress/spec-scan.js.map +1 -0
- package/dist/diagnosis.d.ts +39 -0
- package/dist/diagnosis.d.ts.map +1 -0
- package/dist/diagnosis.js +63 -0
- package/dist/diagnosis.js.map +1 -0
- package/dist/discovery/adapter-projection.d.ts +13 -0
- package/dist/discovery/adapter-projection.d.ts.map +1 -0
- package/dist/discovery/adapter-projection.js +84 -0
- package/dist/discovery/adapter-projection.js.map +1 -0
- package/dist/discovery/config-locations.d.ts +5 -0
- package/dist/discovery/config-locations.d.ts.map +1 -0
- package/dist/discovery/config-locations.js +19 -0
- package/dist/discovery/config-locations.js.map +1 -0
- package/dist/discovery/cypress-runner-adapter.d.ts +112 -0
- package/dist/discovery/cypress-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/cypress-runner-adapter.js +501 -0
- package/dist/discovery/cypress-runner-adapter.js.map +1 -0
- package/dist/discovery/discover.d.ts +53 -1
- package/dist/discovery/discover.d.ts.map +1 -1
- package/dist/discovery/discover.js +100 -3
- package/dist/discovery/discover.js.map +1 -1
- package/dist/discovery/git-ignore.d.ts +13 -0
- package/dist/discovery/git-ignore.d.ts.map +1 -0
- package/dist/discovery/git-ignore.js +62 -0
- package/dist/discovery/git-ignore.js.map +1 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +9 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/playwright-runner-adapter.d.ts +108 -0
- package/dist/discovery/playwright-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/playwright-runner-adapter.js +185 -0
- package/dist/discovery/playwright-runner-adapter.js.map +1 -0
- package/dist/discovery/prepare-barrier.d.ts +522 -0
- package/dist/discovery/prepare-barrier.d.ts.map +1 -0
- package/dist/discovery/prepare-barrier.js +739 -0
- package/dist/discovery/prepare-barrier.js.map +1 -0
- package/dist/discovery/pytest-adapter.d.ts.map +1 -1
- package/dist/discovery/pytest-adapter.js +6 -2
- package/dist/discovery/pytest-adapter.js.map +1 -1
- package/dist/discovery/pytest-runner-adapter.d.ts +124 -0
- package/dist/discovery/pytest-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/pytest-runner-adapter.js +454 -0
- package/dist/discovery/pytest-runner-adapter.js.map +1 -0
- package/dist/discovery/reconcile.d.ts +80 -11
- package/dist/discovery/reconcile.d.ts.map +1 -1
- package/dist/discovery/reconcile.js +395 -78
- package/dist/discovery/reconcile.js.map +1 -1
- package/dist/discovery/runner-env.d.ts +88 -2
- package/dist/discovery/runner-env.d.ts.map +1 -1
- package/dist/discovery/runner-env.js +142 -4
- package/dist/discovery/runner-env.js.map +1 -1
- package/dist/discovery/static-discovery.d.ts +38 -3
- package/dist/discovery/static-discovery.d.ts.map +1 -1
- package/dist/discovery/static-discovery.js +454 -15
- package/dist/discovery/static-discovery.js.map +1 -1
- package/dist/discovery/supervised-run.d.ts +199 -10
- package/dist/discovery/supervised-run.d.ts.map +1 -1
- package/dist/discovery/supervised-run.js +350 -39
- package/dist/discovery/supervised-run.js.map +1 -1
- package/dist/discovery/trusted-config.d.ts +180 -6
- package/dist/discovery/trusted-config.d.ts.map +1 -1
- package/dist/discovery/trusted-config.js +279 -10
- package/dist/discovery/trusted-config.js.map +1 -1
- package/dist/discovery/vitest-runner-adapter.d.ts +172 -0
- package/dist/discovery/vitest-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/vitest-runner-adapter.js +607 -0
- package/dist/discovery/vitest-runner-adapter.js.map +1 -0
- package/dist/fixture/consumer-runner.d.ts +4 -0
- package/dist/fixture/consumer-runner.d.ts.map +1 -0
- package/dist/fixture/consumer-runner.js +38 -0
- package/dist/fixture/consumer-runner.js.map +1 -0
- package/dist/fixture/evidence.d.ts +27 -0
- package/dist/fixture/evidence.d.ts.map +1 -1
- package/dist/fixture/evidence.js +12 -0
- package/dist/fixture/evidence.js.map +1 -1
- package/dist/fixture/fixture.d.ts +2 -1
- package/dist/fixture/fixture.d.ts.map +1 -1
- package/dist/fixture/fixture.js +1 -17
- package/dist/fixture/fixture.js.map +1 -1
- package/dist/fixture/witness-client.d.ts +6 -174
- package/dist/fixture/witness-client.d.ts.map +1 -1
- package/dist/fixture/witness-client.js +6 -267
- package/dist/fixture/witness-client.js.map +1 -1
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +6 -12
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +6 -17
- package/dist/json.js.map +1 -1
- package/dist/reporter/project-graph-reporter.d.ts +92 -0
- package/dist/reporter/project-graph-reporter.d.ts.map +1 -0
- package/dist/reporter/project-graph-reporter.js +92 -0
- package/dist/reporter/project-graph-reporter.js.map +1 -0
- package/dist/reporter/reporter.cjs.map +1 -1
- package/dist/reporter/reporter.d.ts +93 -4
- package/dist/reporter/reporter.d.ts.map +1 -1
- package/dist/reporter/reporter.js +174 -18
- package/dist/reporter/reporter.js.map +1 -1
- package/dist/runner-claims.d.ts +13 -0
- package/dist/runner-claims.d.ts.map +1 -0
- package/dist/runner-claims.js +46 -0
- package/dist/runner-claims.js.map +1 -0
- package/dist/runner-resolution.d.ts +3 -0
- package/dist/runner-resolution.d.ts.map +1 -0
- package/dist/runner-resolution.js +14 -0
- package/dist/runner-resolution.js.map +1 -0
- package/dist/supervisor/client.d.ts +23 -1
- package/dist/supervisor/client.d.ts.map +1 -1
- package/dist/supervisor/client.js +49 -0
- package/dist/supervisor/client.js.map +1 -1
- package/dist/supervisor/drain.d.ts +65 -0
- package/dist/supervisor/drain.d.ts.map +1 -1
- package/dist/supervisor/drain.js +353 -9
- package/dist/supervisor/drain.js.map +1 -1
- package/dist/supervisor/index.d.ts +7 -3
- package/dist/supervisor/index.d.ts.map +1 -1
- package/dist/supervisor/index.js +7 -3
- package/dist/supervisor/index.js.map +1 -1
- package/dist/supervisor/spool.d.ts +65 -2
- package/dist/supervisor/spool.d.ts.map +1 -1
- package/dist/supervisor/spool.js +47 -0
- package/dist/supervisor/spool.js.map +1 -1
- package/dist/surface.d.ts +6 -207
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +6 -264
- package/dist/surface.js.map +1 -1
- package/dist/vitest/index.d.ts +23 -0
- package/dist/vitest/index.d.ts.map +1 -0
- package/dist/vitest/index.js +356 -0
- package/dist/vitest/index.js.map +1 -0
- package/dist/vitest/reporter.d.ts +83 -0
- package/dist/vitest/reporter.d.ts.map +1 -0
- package/dist/vitest/reporter.js +211 -0
- package/dist/vitest/reporter.js.map +1 -0
- package/dist/vitest/worker-slot.d.ts +36 -0
- package/dist/vitest/worker-slot.d.ts.map +1 -0
- package/dist/vitest/worker-slot.js +51 -0
- package/dist/vitest/worker-slot.js.map +1 -0
- package/dist/witness/adapter-registry.d.ts +6 -50
- package/dist/witness/adapter-registry.d.ts.map +1 -1
- package/dist/witness/adapter-registry.js +6 -257
- package/dist/witness/adapter-registry.js.map +1 -1
- package/dist/witness/behavior-request.d.ts +6 -76
- package/dist/witness/behavior-request.d.ts.map +1 -1
- package/dist/witness/behavior-request.js +6 -273
- package/dist/witness/behavior-request.js.map +1 -1
- package/dist/witness/behavior.d.ts +6 -48
- package/dist/witness/behavior.d.ts.map +1 -1
- package/dist/witness/behavior.js +6 -114
- package/dist/witness/behavior.js.map +1 -1
- package/dist/witness/bin.d.ts +6 -17
- package/dist/witness/bin.d.ts.map +1 -1
- package/dist/witness/bin.js +6 -168
- package/dist/witness/bin.js.map +1 -1
- package/dist/witness/browser.d.ts +14 -206
- package/dist/witness/browser.d.ts.map +1 -1
- package/dist/witness/browser.js +15 -654
- package/dist/witness/browser.js.map +1 -1
- package/dist/witness/classifications.d.ts +6 -38
- package/dist/witness/classifications.d.ts.map +1 -1
- package/dist/witness/classifications.js +6 -83
- package/dist/witness/classifications.js.map +1 -1
- package/dist/witness/env-attestation.d.ts +6 -94
- package/dist/witness/env-attestation.d.ts.map +1 -1
- package/dist/witness/env-attestation.js +6 -198
- package/dist/witness/env-attestation.js.map +1 -1
- package/dist/witness/fixture-provider.d.ts +6 -82
- package/dist/witness/fixture-provider.d.ts.map +1 -1
- package/dist/witness/fixture-provider.js +6 -105
- package/dist/witness/fixture-provider.js.map +1 -1
- package/dist/witness/loopback-pins.d.ts +6 -75
- package/dist/witness/loopback-pins.d.ts.map +1 -1
- package/dist/witness/loopback-pins.js +6 -240
- package/dist/witness/loopback-pins.js.map +1 -1
- package/dist/witness/server.d.ts +8 -26
- package/dist/witness/server.d.ts.map +1 -1
- package/dist/witness/server.js +24 -3761
- package/dist/witness/server.js.map +1 -1
- package/dist/witness/types.d.ts +6 -882
- package/dist/witness/types.d.ts.map +1 -1
- package/dist/witness/types.js +9 -1
- package/dist/witness/types.js.map +1 -1
- package/examples/overlay-proof.spec.js +75 -0
- package/package.json +8 -2
- package/python/__pycache__/gateforge_persistence_intents.cpython-312.pyc +0 -0
- package/python/__pycache__/gateforge_persistence_intents.cpython-314.pyc +0 -0
- package/python/gateforge_pytest_plugin.py +462 -0
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Which runner lifecycle transition the event represents.
|
|
3
|
+
*
|
|
4
|
+
* `freezeRelease` is NOT a lifecycle: it is the trusted CLI's own marker,
|
|
5
|
+
* written to the SAME file the runner writes its lifecycle events to, so
|
|
6
|
+
* both share one ordering. That ordering is the ORDINARY
|
|
7
|
+
* append semantics of the local filesystem under cooperative writers — it
|
|
8
|
+
* is not an OS-enforced append-only log and not a physical immutability
|
|
9
|
+
* claim: a same-UID overwrite, or a restore of an earlier file state,
|
|
10
|
+
* stays outside this boundary exactly like every other local control file
|
|
11
|
+
* here. What the marker buys is narrower and real: a body `testBegin` the
|
|
12
|
+
* suite appended BEFORE the accepted release is still visible as such to
|
|
13
|
+
* the final audit, however late the drain gets round to processing it.
|
|
14
|
+
*/
|
|
15
|
+
export type SpoolEventKind = 'testBegin' | 'testEnd' | 'freezeRelease';
|
|
3
16
|
/** One runner lifecycle event (spool line). */
|
|
4
17
|
export interface SpoolEvent {
|
|
5
18
|
/** The transition: a test started or ended. */
|
|
@@ -20,6 +33,34 @@ export interface SpoolEvent {
|
|
|
20
33
|
attempt?: number;
|
|
21
34
|
/** The mapped/annotated obligation claims declared for this test. */
|
|
22
35
|
claims?: string[];
|
|
36
|
+
/**
|
|
37
|
+
* testEnd only, failures only: the runner's own first error message.
|
|
38
|
+
* Additive diagnosis for the CI progress stream and the
|
|
39
|
+
* Gateforge-owned failures artifact — the trusted side screens it
|
|
40
|
+
* against the credential shapes before it is ever printed or written,
|
|
41
|
+
* and a WORKER-side end (the outcome-less release) never carries one.
|
|
42
|
+
*/
|
|
43
|
+
errorMessage?: string;
|
|
44
|
+
/**
|
|
45
|
+
* testEnd only, failures only: short `file:line` stack frames (at
|
|
46
|
+
* most five, deduplicated by the writer). Never a path outside the
|
|
47
|
+
* tested tree and never a frame's source text.
|
|
48
|
+
*/
|
|
49
|
+
stackFrames?: string[];
|
|
50
|
+
/**
|
|
51
|
+
* `freezeRelease` only: the prepared candidate tree the trusted CLI
|
|
52
|
+
* froze and released. Carried inside the marker's own line, so the
|
|
53
|
+
* ordering guard and the final integrity check read one fact from one
|
|
54
|
+
* append-only file.
|
|
55
|
+
*/
|
|
56
|
+
preparedTreeId?: string;
|
|
57
|
+
/**
|
|
58
|
+
* `freezeRelease` only: sha256 of the controller spec bytes the CLI
|
|
59
|
+
* pinned before the run. The final integrity check compares it with
|
|
60
|
+
* the spec still on disk, so a replaced control file fails the run
|
|
61
|
+
* instead of quietly steering the bodies.
|
|
62
|
+
*/
|
|
63
|
+
specDigest?: string;
|
|
23
64
|
}
|
|
24
65
|
/**
|
|
25
66
|
* Resolves the spool events file for one run.
|
|
@@ -46,6 +87,28 @@ export declare function spoolPathFor(stateDir: string, runId: string): string;
|
|
|
46
87
|
* event: the lifecycle event to append.
|
|
47
88
|
*/
|
|
48
89
|
export declare function appendSpoolEvent(spoolFile: string, event: SpoolEvent): void;
|
|
90
|
+
/**
|
|
91
|
+
* Appends the trusted CLI's ACCEPTED preparation-freeze marker to the run's
|
|
92
|
+
* spool and returns the exact line it wrote.
|
|
93
|
+
*
|
|
94
|
+
* The marker shares the runner's append-only file on purpose: file order
|
|
95
|
+
* is append order, so a body project's `testBegin` that is physically in
|
|
96
|
+
* the file BEFORE this marker was appended before the freeze existed — no
|
|
97
|
+
* matter when the drain gets round to processing it. The returned line is
|
|
98
|
+
* the only marker the drain accepts, so a line forged by the suite (which
|
|
99
|
+
* can write this file) can never stand in for the real one.
|
|
100
|
+
*
|
|
101
|
+
* @param spoolFile: absolute spool events file (see {@link spoolPathFor}).
|
|
102
|
+
* @param marker: the controller project, the prepared tree and the pinned spec digest.
|
|
103
|
+
*
|
|
104
|
+
* @returns
|
|
105
|
+
* string: the canonical marker line, without its terminating newline.
|
|
106
|
+
*/
|
|
107
|
+
export declare function appendFreezeReleaseEvent(spoolFile: string, marker: {
|
|
108
|
+
project: string;
|
|
109
|
+
preparedTreeId: string;
|
|
110
|
+
specDigest: string;
|
|
111
|
+
}): string;
|
|
49
112
|
/**
|
|
50
113
|
* Reads every COMPLETE spool line past the given byte offset (CLI-side
|
|
51
114
|
* drain). A trailing fragment without its terminating newline is left
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spool.d.ts","sourceRoot":"","sources":["../../src/supervisor/spool.ts"],"names":[],"mappings":"AAqBA
|
|
1
|
+
{"version":3,"file":"spool.d.ts","sourceRoot":"","sources":["../../src/supervisor/spool.ts"],"names":[],"mappings":"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"}
|
package/dist/supervisor/spool.js
CHANGED
|
@@ -61,6 +61,15 @@ export function appendSpoolEvent(spoolFile, event) {
|
|
|
61
61
|
// the trace grades not-passed.
|
|
62
62
|
...(typeof event.outcome === 'string' ? { outcome: event.outcome } : {}),
|
|
63
63
|
attempt: Number.isInteger(event.attempt) && event.attempt >= 1 ? event.attempt : 1,
|
|
64
|
+
// Additive diagnosis (failures only): the trusted side
|
|
65
|
+
// screens the message against the credential shapes before
|
|
66
|
+
// it is printed or written anywhere.
|
|
67
|
+
...(typeof event.errorMessage === 'string' && event.errorMessage.length > 0
|
|
68
|
+
? { errorMessage: event.errorMessage }
|
|
69
|
+
: {}),
|
|
70
|
+
...(Array.isArray(event.stackFrames) && event.stackFrames.length > 0
|
|
71
|
+
? { stackFrames: event.stackFrames.slice(0, 5).map((frame) => String(frame)) }
|
|
72
|
+
: {}),
|
|
64
73
|
}
|
|
65
74
|
: {}),
|
|
66
75
|
...(Array.isArray(event.claims) && event.claims.length > 0
|
|
@@ -81,6 +90,44 @@ export function appendSpoolEvent(spoolFile, event) {
|
|
|
81
90
|
console.warn(`[gateforge] cannot append to the lifecycle spool: ${error.message}`);
|
|
82
91
|
}
|
|
83
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Appends the trusted CLI's ACCEPTED preparation-freeze marker to the run's
|
|
95
|
+
* spool and returns the exact line it wrote.
|
|
96
|
+
*
|
|
97
|
+
* The marker shares the runner's append-only file on purpose: file order
|
|
98
|
+
* is append order, so a body project's `testBegin` that is physically in
|
|
99
|
+
* the file BEFORE this marker was appended before the freeze existed — no
|
|
100
|
+
* matter when the drain gets round to processing it. The returned line is
|
|
101
|
+
* the only marker the drain accepts, so a line forged by the suite (which
|
|
102
|
+
* can write this file) can never stand in for the real one.
|
|
103
|
+
*
|
|
104
|
+
* @param spoolFile: absolute spool events file (see {@link spoolPathFor}).
|
|
105
|
+
* @param marker: the controller project, the prepared tree and the pinned spec digest.
|
|
106
|
+
*
|
|
107
|
+
* @returns
|
|
108
|
+
* string: the canonical marker line, without its terminating newline.
|
|
109
|
+
*/
|
|
110
|
+
export function appendFreezeReleaseEvent(spoolFile, marker) {
|
|
111
|
+
const line = canonicalOf({
|
|
112
|
+
kind: 'freezeRelease',
|
|
113
|
+
testId: marker.project,
|
|
114
|
+
workerIndex: 0,
|
|
115
|
+
file: null,
|
|
116
|
+
titlePath: [],
|
|
117
|
+
project: marker.project,
|
|
118
|
+
preparedTreeId: marker.preparedTreeId,
|
|
119
|
+
specDigest: marker.specDigest,
|
|
120
|
+
});
|
|
121
|
+
mkdirSync(join(spoolFile, '..'), { recursive: true });
|
|
122
|
+
const fd = openSync(spoolFile, 'a');
|
|
123
|
+
try {
|
|
124
|
+
writeSync(fd, `${line}\n`, undefined, 'utf8');
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
closeSync(fd);
|
|
128
|
+
}
|
|
129
|
+
return line;
|
|
130
|
+
}
|
|
84
131
|
/**
|
|
85
132
|
* Reads every COMPLETE spool line past the given byte offset (CLI-side
|
|
86
133
|
* drain). A trailing fragment without its terminating newline is left
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/supervisor/spool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"spool.js","sourceRoot":"","sources":["../../src/supervisor/spool.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.d.ts
CHANGED
|
@@ -1,211 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* observed and driven (list page, rows and field cells, form templates,
|
|
5
|
-
* archive control, status values). The pack ships selectors for NO
|
|
6
|
-
* application; the consumer declares its own.
|
|
2
|
+
* Compatibility re-export: `surface` now lives in the runner-neutral
|
|
3
|
+
* `@gate-forge/witness` package (plan 2026-09-25 phase 1).
|
|
7
4
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* visible outcome, and persistence itself — a lying descriptor fails
|
|
12
|
-
* closed (elements never match) instead of manufacturing proof.
|
|
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.
|
|
13
8
|
*/
|
|
14
|
-
|
|
15
|
-
* The current surface-descriptor version. Version 3 adds constrained
|
|
16
|
-
* locator-based list fields; earlier cell-index descriptors stay valid.
|
|
17
|
-
*/
|
|
18
|
-
export declare const SURFACE_DESCRIPTOR_VERSION = 3;
|
|
19
|
-
/** Legacy surface-descriptor version (single-form create only). */
|
|
20
|
-
export declare const SURFACE_DESCRIPTOR_VERSION_1 = 1;
|
|
21
|
-
/** Surface-descriptor version with optional wizard create steps. */
|
|
22
|
-
export declare const SURFACE_DESCRIPTOR_VERSION_2 = 2;
|
|
23
|
-
/** Shared list-page and row selectors. */
|
|
24
|
-
interface SurfaceListBase {
|
|
25
|
-
/** List page path relative to the app base (e.g. `/`). */
|
|
26
|
-
path: string;
|
|
27
|
-
/** Selector proving the list page rendered (e.g. the page heading). */
|
|
28
|
-
readySelector: string;
|
|
29
|
-
/** Selector matching one entity row inside the list. */
|
|
30
|
-
rowSelector: string;
|
|
31
|
-
}
|
|
32
|
-
/** How v1/v2 list rows expose ids and fields in table cells. */
|
|
33
|
-
export interface SurfaceListCells extends SurfaceListBase {
|
|
34
|
-
/** Index of the row cell carrying the entity id (0-based). */
|
|
35
|
-
idCellIndex: number;
|
|
36
|
-
/** Field name → 0-based row-cell index, for reading rendered fields. */
|
|
37
|
-
fieldCellIndexes: Record<string, number>;
|
|
38
|
-
idLocator?: never;
|
|
39
|
-
fieldLocators?: never;
|
|
40
|
-
}
|
|
41
|
-
/** How a v3 list row exposes ids and fields through relative locators. */
|
|
42
|
-
export interface SurfaceListLocators extends SurfaceListBase {
|
|
43
|
-
/** Locator evaluated inside one matched row to read its entity id. */
|
|
44
|
-
idLocator: string;
|
|
45
|
-
/** Field name → locator evaluated inside the matched row. */
|
|
46
|
-
fieldLocators: Record<string, string>;
|
|
47
|
-
idCellIndex?: never;
|
|
48
|
-
fieldCellIndexes?: never;
|
|
49
|
-
}
|
|
50
|
-
/** List shape selected by the surface descriptor version. */
|
|
51
|
-
export type SurfaceList = SurfaceListCells | SurfaceListLocators;
|
|
52
|
-
/** How the CREATE form is driven (legacy single form, v1 + v2). */
|
|
53
|
-
export interface SurfaceCreate {
|
|
54
|
-
/** Create-form page path relative to the app base. */
|
|
55
|
-
formPath: string;
|
|
56
|
-
/** Selector proving the create form rendered. */
|
|
57
|
-
formReadySelector: string;
|
|
58
|
-
/** Field name → input selector on the create form. */
|
|
59
|
-
fields: Record<string, string>;
|
|
60
|
-
/** Submit control selector on the create form. */
|
|
61
|
-
submitSelector: string;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* One engine-driven wizard step (surface v2, Phase 3): the closed
|
|
65
|
-
* operation set the engine can perform while walking a multi-screen
|
|
66
|
-
* create flow (draft orb → type picker → radios → searchable lists →
|
|
67
|
-
* submit). Steps are LOCATORS plus field references — never proof: a
|
|
68
|
-
* lying step fails closed (elements never match) exactly like a lying
|
|
69
|
-
* legacy selector. Custom searchable dropdowns, drag-and-drop, file
|
|
70
|
-
* pickers, and hover menus are NOT expressible — those flows stay on
|
|
71
|
-
* the Observe channel (documented limitation, never silently widened).
|
|
72
|
-
*/
|
|
73
|
-
export type SurfaceStep =
|
|
74
|
-
/** Navigate to an app-relative path. */
|
|
75
|
-
{
|
|
76
|
-
goto: string;
|
|
77
|
-
}
|
|
78
|
-
/** Click a selector. */
|
|
79
|
-
| {
|
|
80
|
-
click: string;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Fill an input: `field` references a test-input field name (the
|
|
84
|
-
* engine types the journey's value for it); `value` is a literal the
|
|
85
|
-
* map declares. Exactly one of the two.
|
|
86
|
-
*/
|
|
87
|
-
| {
|
|
88
|
-
fill: {
|
|
89
|
-
selector: string;
|
|
90
|
-
field?: string;
|
|
91
|
-
value?: string;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/** Check a radio/checkbox. */
|
|
95
|
-
| {
|
|
96
|
-
check: string;
|
|
97
|
-
}
|
|
98
|
-
/** Press a dismiss/confirm key (dialogs that close on Escape/Enter). */
|
|
99
|
-
| {
|
|
100
|
-
press: 'Escape' | 'Enter';
|
|
101
|
-
}
|
|
102
|
-
/** Wait for a selector (async panels, search results). */
|
|
103
|
-
| {
|
|
104
|
-
waitFor: string;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* Wizard-driven CREATE (surface v2): `steps` replace the legacy
|
|
108
|
-
* single-form trio (`formPath`/`formReadySelector`/`submitSelector`
|
|
109
|
-
* must be ABSENT — a mixed descriptor is refused fail-closed, never
|
|
110
|
-
* driven half-legacy). `fields` stays REQUIRED: it declares the input
|
|
111
|
-
* vocabulary the test provides and the echo grades.
|
|
112
|
-
*/
|
|
113
|
-
export interface SurfaceCreateSteps {
|
|
114
|
-
/** Declared input vocabulary (echo source; selectors live in steps). */
|
|
115
|
-
fields: Record<string, string>;
|
|
116
|
-
/** The wizard walk, in order. Non-empty. */
|
|
117
|
-
steps: SurfaceStep[];
|
|
118
|
-
}
|
|
119
|
-
/** How CREATE is driven: one legacy form (v1 + v2) or a wizard walk (v2 only). */
|
|
120
|
-
export type SurfaceCreateFlow = SurfaceCreate | SurfaceCreateSteps;
|
|
121
|
-
/**
|
|
122
|
-
* How the EDIT form is reached and driven. `{id}` templates are
|
|
123
|
-
* substituted with the entity id; the edit link is located INSIDE the
|
|
124
|
-
* entity's row.
|
|
125
|
-
*/
|
|
126
|
-
export interface SurfaceEdit {
|
|
127
|
-
/** Row-scoped selector of the control navigating to the edit form. */
|
|
128
|
-
linkSelector: string;
|
|
129
|
-
/** `{id}`-templated selector proving the edit form rendered. */
|
|
130
|
-
formReadySelectorTemplate: string;
|
|
131
|
-
/** Field name → input selector on the edit form. */
|
|
132
|
-
fields: Record<string, string>;
|
|
133
|
-
/** `{id}`-templated page-scoped selector of the edit SAVE control. */
|
|
134
|
-
saveSelectorTemplate: string;
|
|
135
|
-
}
|
|
136
|
-
/** How the archive/delete control is located (row-scoped, `{id}`-templated). */
|
|
137
|
-
export interface SurfaceArchive {
|
|
138
|
-
/** `{id}`-templated row-scoped selector of the archive/delete control. */
|
|
139
|
-
controlSelectorTemplate: string;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Rendered-status observations the primitives assert after create and
|
|
143
|
-
* archive (fail-closed visible postconditions).
|
|
144
|
-
*/
|
|
145
|
-
export interface SurfaceStatus {
|
|
146
|
-
/** Field name the status renders under (must be a row field). */
|
|
147
|
-
field: string;
|
|
148
|
-
/** Expected rendered value right after a create (e.g. `'active'`). */
|
|
149
|
-
createdValue?: string;
|
|
150
|
-
/** Expected rendered value after archive (e.g. `'archived'`). */
|
|
151
|
-
archivedValue?: string;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* The declarative, consumer-owned description of the application
|
|
155
|
-
* surface the evidence primitives observe (plan Phase 1 item 7): the
|
|
156
|
-
* pack ships selectors for NO application — the consumer declares its
|
|
157
|
-
* own. Selector/path strings containing `{id}` are substituted with the
|
|
158
|
-
* entity id before use.
|
|
159
|
-
*/
|
|
160
|
-
export interface SurfaceDescriptor {
|
|
161
|
-
/** Version 3 adds relative list locators; cell indexes remain compatible. */
|
|
162
|
-
schemaVersion: number;
|
|
163
|
-
list: SurfaceList;
|
|
164
|
-
create: SurfaceCreateFlow;
|
|
165
|
-
edit: SurfaceEdit;
|
|
166
|
-
archive: SurfaceArchive;
|
|
167
|
-
status: SurfaceStatus;
|
|
168
|
-
/**
|
|
169
|
-
* Where the browser lands after a successful mutation (the rendered
|
|
170
|
-
* result page); `path` is the expected `location.pathname`.
|
|
171
|
-
*/
|
|
172
|
-
afterAction: {
|
|
173
|
-
path: string;
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* Fields recorded on a delete/archive `ui.action` record (the
|
|
177
|
-
* owner-declared archived state the journey drove, e.g.
|
|
178
|
-
* `{status: 'archived'}`).
|
|
179
|
-
*/
|
|
180
|
-
deleteFields: Record<string, string>;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Substitutes `{id}` in a consumer-declared selector/path template with
|
|
184
|
-
* the entity id. Fail closed on ids that could break selector context
|
|
185
|
-
* (quotes/control characters) — a malformed id must error here, not
|
|
186
|
-
* silently match a different element.
|
|
187
|
-
*/
|
|
188
|
-
export declare function renderSurfaceTemplate(template: string, entityId: string): string;
|
|
189
|
-
/**
|
|
190
|
-
* Structural validation of the consumer-declared surface descriptor
|
|
191
|
-
* (fail closed with the EXACT missing piece — a misdeclared surface must
|
|
192
|
-
* never surface later as a confusing selector timeout).
|
|
193
|
-
*
|
|
194
|
-
* Args:
|
|
195
|
-
* surface: the candidate descriptor.
|
|
196
|
-
*
|
|
197
|
-
* Returns:
|
|
198
|
-
* SurfaceDescriptor: the same descriptor, validated.
|
|
199
|
-
*
|
|
200
|
-
* Throws:
|
|
201
|
-
* Error: naming the first structural problem found.
|
|
202
|
-
*/
|
|
203
|
-
export declare function validateSurface(surface: SurfaceDescriptor): SurfaceDescriptor;
|
|
204
|
-
/**
|
|
205
|
-
* Fills descriptor input fields exactly: every declared key must be a
|
|
206
|
-
* selector-known field with a string value (fail closed — the engine
|
|
207
|
-
* never invents form fields the consumer did not declare).
|
|
208
|
-
*/
|
|
209
|
-
export declare function declaredSurfaceFields(where: string, input: Record<string, string>, known: Record<string, string>): Record<string, string>;
|
|
210
|
-
export {};
|
|
9
|
+
export * from '@gate-forge/witness/surface';
|
|
211
10
|
//# sourceMappingURL=surface.d.ts.map
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,6BAA6B,CAAC"}
|