@clowder-ai/plugin-contract 0.1.0-beta.7 → 0.1.0-beta.9
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/dist/codegen/generate-contract.d.ts +1 -0
- package/dist/codegen/generate-contract.d.ts.map +1 -1
- package/dist/codegen/generate-contract.js +8 -1
- package/dist/codegen/generate-contract.js.map +1 -1
- package/dist/conformance/fixtures.d.ts +9 -0
- package/dist/conformance/fixtures.d.ts.map +1 -0
- package/dist/conformance/fixtures.js +8 -0
- package/dist/conformance/fixtures.js.map +1 -0
- package/dist/conformance/index.d.ts +2 -0
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +1 -0
- package/dist/conformance/index.js.map +1 -1
- package/dist/conformance/runner.d.ts.map +1 -1
- package/dist/conformance/runner.js +20 -2
- package/dist/conformance/runner.js.map +1 -1
- package/dist/conformance/stdio-harness/wire-shape.d.ts +1 -1
- package/dist/generated/contract.generated.d.ts +38 -1
- package/dist/generated/contract.generated.d.ts.map +1 -1
- package/dist/generated/contract.generated.js +1 -1
- package/dist/generated/contract.generated.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/manifest.d.ts.map +1 -1
- package/dist/validation/manifest.js +21 -1
- package/dist/validation/manifest.js.map +1 -1
- package/dist/validation/signals.d.ts +26 -0
- package/dist/validation/signals.d.ts.map +1 -0
- package/dist/validation/signals.js +206 -0
- package/dist/validation/signals.js.map +1 -0
- package/dist/wire/disposition-fixtures.d.ts +11 -2
- package/dist/wire/disposition-fixtures.d.ts.map +1 -1
- package/dist/wire/disposition-fixtures.js +510 -4
- package/dist/wire/disposition-fixtures.js.map +1 -1
- package/dist/wire/disposition.d.ts +10 -8
- package/dist/wire/disposition.d.ts.map +1 -1
- package/dist/wire/disposition.js +20 -8
- package/dist/wire/disposition.js.map +1 -1
- package/dist/wire/handshake-byte-bounds.d.ts +69 -0
- package/dist/wire/handshake-byte-bounds.d.ts.map +1 -0
- package/dist/wire/handshake-byte-bounds.js +173 -0
- package/dist/wire/handshake-byte-bounds.js.map +1 -0
- package/dist/wire/handshake.d.ts +53 -7
- package/dist/wire/handshake.d.ts.map +1 -1
- package/dist/wire/handshake.js +129 -10
- package/dist/wire/handshake.js.map +1 -1
- package/dist/wire/index.d.ts +11 -4
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +9 -3
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/registry.d.ts +190 -12
- package/dist/wire/registry.d.ts.map +1 -1
- package/dist/wire/registry.js +31 -15
- package/dist/wire/registry.js.map +1 -1
- package/dist/wire/row-shapes.d.ts +12 -12
- package/dist/wire/row-shapes.d.ts.map +1 -1
- package/dist/wire/row-shapes.js +3 -3
- package/dist/wire/row-shapes.js.map +1 -1
- package/dist/wire/signal-byte-bounds.d.ts +97 -0
- package/dist/wire/signal-byte-bounds.d.ts.map +1 -0
- package/dist/wire/signal-byte-bounds.js +229 -0
- package/dist/wire/signal-byte-bounds.js.map +1 -0
- package/fixtures/manifest/invalid/duplicate-signal-type.json +33 -0
- package/fixtures/signals/invalid/destination-injection.json +15 -0
- package/fixtures/signals/invalid/dynamic-schema-url.json +10 -0
- package/fixtures/signals/invalid/forbidden-raw-privacy.json +10 -0
- package/fixtures/signals/invalid/non-utc-occurred-at.json +12 -0
- package/fixtures/signals/valid/feishu-meeting-artifact.json +18 -0
- package/fixtures/signals/valid/remote-service-declaration.json +10 -0
- package/package.json +2 -1
- package/src/schemas/manifest.schema.json +5 -2
- package/src/schemas/signal.schema.json +129 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pre-dispatch disposition table -- T-A through T-
|
|
3
|
-
*
|
|
2
|
+
* Pre-dispatch disposition table -- T-A through T-M.
|
|
3
|
+
* T-A through T-L are mechanized from #1165 R35/R39/R44; beta.8 adds T-M
|
|
4
|
+
* because a ready request row now has a legal input shape.
|
|
4
5
|
*
|
|
5
6
|
* Every raw-frame/profile/request rejection class has exactly one
|
|
6
7
|
* deterministic transport disposition. The table is frozen: adding
|
|
@@ -14,17 +15,17 @@
|
|
|
14
15
|
* Derived subsets (exported):
|
|
15
16
|
* - CLOSE_CLASSES: close with no response (T-A, T-C, T-E, T-H, T-I, T-K).
|
|
16
17
|
* - RESPOND_CLASSES: respond with an error (T-B, T-D, T-F, T-G).
|
|
17
|
-
* - ACCEPT_CLASSES: accept and process (T-J, T-L).
|
|
18
|
+
* - ACCEPT_CLASSES: accept and process (T-J, T-L, T-M).
|
|
18
19
|
*
|
|
19
20
|
* These subsets are used in byte-proof exclusion: close/accept classes
|
|
20
21
|
* are excluded from error byte proofs because they never emit an error
|
|
21
22
|
* response onto the wire.
|
|
22
23
|
*/
|
|
23
24
|
/**
|
|
24
|
-
* The
|
|
25
|
-
*
|
|
25
|
+
* The 13 pre-dispatch disposition classes, T-A through T-M.
|
|
26
|
+
* Adding a class requires a reviewed contract revision.
|
|
26
27
|
*/
|
|
27
|
-
export declare const DISPOSITION_CLASSES: readonly ["T-A", "T-B", "T-C", "T-D", "T-E", "T-F", "T-G", "T-H", "T-I", "T-J", "T-K", "T-L"];
|
|
28
|
+
export declare const DISPOSITION_CLASSES: readonly ["T-A", "T-B", "T-C", "T-D", "T-E", "T-F", "T-G", "T-H", "T-I", "T-J", "T-K", "T-L", "T-M"];
|
|
28
29
|
/** Union of all disposition class identifiers. */
|
|
29
30
|
export type DispositionClass = (typeof DISPOSITION_CLASSES)[number];
|
|
30
31
|
/**
|
|
@@ -37,7 +38,7 @@ export type DispositionOutcome = 'close' | 'respond' | 'accept';
|
|
|
37
38
|
/**
|
|
38
39
|
* A single row of the disposition table.
|
|
39
40
|
*
|
|
40
|
-
* @property class - The disposition class identifier (T-A .. T-
|
|
41
|
+
* @property class - The disposition class identifier (T-A .. T-M).
|
|
41
42
|
* @property outcome - Transport outcome: close, respond, or accept.
|
|
42
43
|
* @property emitsResponse - Whether an error response is written to the wire.
|
|
43
44
|
* @property dispatches - Whether the frame reaches the dispatch layer.
|
|
@@ -61,7 +62,7 @@ export interface DispositionEntry {
|
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* The complete pre-dispatch disposition table.
|
|
64
|
-
*
|
|
65
|
+
* T-A through T-L are frozen #1165 rows; T-M is beta.8's ready-row closure.
|
|
65
66
|
*
|
|
66
67
|
* | # | Rejection class | Disposition |
|
|
67
68
|
* |-----|--------------------------------------------------------|-----------------------------------|
|
|
@@ -77,6 +78,7 @@ export interface DispositionEntry {
|
|
|
77
78
|
* | T-J | legal Notification (row 10) | accept, dispatch, no response |
|
|
78
79
|
* | T-K | valid Notification, v0 violation | close, no response, zero dispatch |
|
|
79
80
|
* | T-L | valid correlated response | accept, settle, no response |
|
|
81
|
+
* | T-M | legal Request on a ready row | accept, dispatch, no response |
|
|
80
82
|
*/
|
|
81
83
|
export declare const DISPOSITION_TABLE: Record<DispositionClass, DispositionEntry>;
|
|
82
84
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposition.d.ts","sourceRoot":"","sources":["../../src/wire/disposition.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"disposition.d.ts","sourceRoot":"","sources":["../../src/wire/disposition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,sGAGtB,CAAC;AAEX,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMpE;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAMhE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAmI/D,CAAC;AAMX;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,gBAAgB,EAE3C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,gBAAgB,EAE7C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,gBAAgB,EAE5C,CAAC"}
|
package/dist/wire/disposition.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pre-dispatch disposition table -- T-A through T-
|
|
3
|
-
*
|
|
2
|
+
* Pre-dispatch disposition table -- T-A through T-M.
|
|
3
|
+
* T-A through T-L are mechanized from #1165 R35/R39/R44; beta.8 adds T-M
|
|
4
|
+
* because a ready request row now has a legal input shape.
|
|
4
5
|
*
|
|
5
6
|
* Every raw-frame/profile/request rejection class has exactly one
|
|
6
7
|
* deterministic transport disposition. The table is frozen: adding
|
|
@@ -14,7 +15,7 @@
|
|
|
14
15
|
* Derived subsets (exported):
|
|
15
16
|
* - CLOSE_CLASSES: close with no response (T-A, T-C, T-E, T-H, T-I, T-K).
|
|
16
17
|
* - RESPOND_CLASSES: respond with an error (T-B, T-D, T-F, T-G).
|
|
17
|
-
* - ACCEPT_CLASSES: accept and process (T-J, T-L).
|
|
18
|
+
* - ACCEPT_CLASSES: accept and process (T-J, T-L, T-M).
|
|
18
19
|
*
|
|
19
20
|
* These subsets are used in byte-proof exclusion: close/accept classes
|
|
20
21
|
* are excluded from error byte proofs because they never emit an error
|
|
@@ -24,19 +25,19 @@
|
|
|
24
25
|
// Disposition class enum
|
|
25
26
|
// ---------------------------------------------------------------------------
|
|
26
27
|
/**
|
|
27
|
-
* The
|
|
28
|
-
*
|
|
28
|
+
* The 13 pre-dispatch disposition classes, T-A through T-M.
|
|
29
|
+
* Adding a class requires a reviewed contract revision.
|
|
29
30
|
*/
|
|
30
31
|
export const DISPOSITION_CLASSES = [
|
|
31
32
|
'T-A', 'T-B', 'T-C', 'T-D', 'T-E', 'T-F',
|
|
32
|
-
'T-G', 'T-H', 'T-I', 'T-J', 'T-K', 'T-L',
|
|
33
|
+
'T-G', 'T-H', 'T-I', 'T-J', 'T-K', 'T-L', 'T-M',
|
|
33
34
|
];
|
|
34
35
|
// ---------------------------------------------------------------------------
|
|
35
36
|
// The frozen table (R35/R39/R44)
|
|
36
37
|
// ---------------------------------------------------------------------------
|
|
37
38
|
/**
|
|
38
39
|
* The complete pre-dispatch disposition table.
|
|
39
|
-
*
|
|
40
|
+
* T-A through T-L are frozen #1165 rows; T-M is beta.8's ready-row closure.
|
|
40
41
|
*
|
|
41
42
|
* | # | Rejection class | Disposition |
|
|
42
43
|
* |-----|--------------------------------------------------------|-----------------------------------|
|
|
@@ -52,6 +53,7 @@ export const DISPOSITION_CLASSES = [
|
|
|
52
53
|
* | T-J | legal Notification (row 10) | accept, dispatch, no response |
|
|
53
54
|
* | T-K | valid Notification, v0 violation | close, no response, zero dispatch |
|
|
54
55
|
* | T-L | valid correlated response | accept, settle, no response |
|
|
56
|
+
* | T-M | legal Request on a ready row | accept, dispatch, no response |
|
|
55
57
|
*/
|
|
56
58
|
export const DISPOSITION_TABLE = {
|
|
57
59
|
'T-A': {
|
|
@@ -174,6 +176,16 @@ export const DISPOSITION_TABLE = {
|
|
|
174
176
|
predicate: 'valid correlated response matching an in-flight request',
|
|
175
177
|
canonicalExample: '{"jsonrpc":"2.0","id":"req-1","result":{"nonce":"x"}}',
|
|
176
178
|
},
|
|
179
|
+
'T-M': {
|
|
180
|
+
class: 'T-M',
|
|
181
|
+
outcome: 'accept',
|
|
182
|
+
emitsResponse: false,
|
|
183
|
+
dispatches: true,
|
|
184
|
+
description: 'legal Request on a ready row',
|
|
185
|
+
errorCodes: [],
|
|
186
|
+
predicate: 'profile-valid Request with a closed valid input for a registry row marked ready=true',
|
|
187
|
+
canonicalExample: '{"jsonrpc":"2.0","id":"hello-1","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{"pluginId":"example.loopback","packageDigest":"sha512-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==","contractVersion":"0.1.0-beta.8","wireVersion":"0.1.0"}}}',
|
|
188
|
+
},
|
|
177
189
|
};
|
|
178
190
|
// ---------------------------------------------------------------------------
|
|
179
191
|
// Derived subsets for byte-proof exclusion
|
|
@@ -200,6 +212,6 @@ export const RESPOND_CLASSES = [
|
|
|
200
212
|
* Mechanized from #1165 R35.
|
|
201
213
|
*/
|
|
202
214
|
export const ACCEPT_CLASSES = [
|
|
203
|
-
'T-J', 'T-L',
|
|
215
|
+
'T-J', 'T-L', 'T-M',
|
|
204
216
|
];
|
|
205
217
|
//# sourceMappingURL=disposition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposition.js","sourceRoot":"","sources":["../../src/wire/disposition.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"disposition.js","sourceRoot":"","sources":["../../src/wire/disposition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived compact-JSON byte bounds for the beta.8 handshake rows.
|
|
3
|
+
*
|
|
4
|
+
* This production module owns only the published summary metadata. The
|
|
5
|
+
* generic byte-proof kernel remains test-only; keeping it out of the packed
|
|
6
|
+
* artifact prevents consumers from accidentally treating a proof generator
|
|
7
|
+
* as a runtime protocol dependency. The test-only templates independently
|
|
8
|
+
* recompute these values from the same closed grammar.
|
|
9
|
+
*/
|
|
10
|
+
/** Encoding families used for raw UTF-8 boundary evidence. */
|
|
11
|
+
export declare const HANDSHAKE_BYTE_PROOF_ENCODING_FAMILIES: readonly ["ascii", "multibyte", "escaping"];
|
|
12
|
+
export type HandshakeByteProofEncodingFamily = (typeof HANDSHAKE_BYTE_PROOF_ENCODING_FAMILIES)[number];
|
|
13
|
+
/** One rejected N+1 candidate measured alongside a maximum frame. */
|
|
14
|
+
export interface HandshakeNPlusOneByteProof {
|
|
15
|
+
readonly leaf: string;
|
|
16
|
+
readonly encodedBytes: number;
|
|
17
|
+
readonly fitsFrame: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Raw UTF-8 measurement for one encoding family. */
|
|
20
|
+
export interface HandshakeEncodedByteProofCase {
|
|
21
|
+
readonly family: HandshakeByteProofEncodingFamily;
|
|
22
|
+
readonly encodedBytes: number;
|
|
23
|
+
readonly fitsFrame: boolean;
|
|
24
|
+
readonly nPlusOne: readonly HandshakeNPlusOneByteProof[];
|
|
25
|
+
}
|
|
26
|
+
/** Published max plus the raw-family proof cases from which it is derived. */
|
|
27
|
+
export interface HandshakeEncodedByteProof {
|
|
28
|
+
readonly maxEncodedBytes: number;
|
|
29
|
+
readonly cases: readonly HandshakeEncodedByteProofCase[];
|
|
30
|
+
}
|
|
31
|
+
/** Per-row frame maxima consumed by the public method registry. */
|
|
32
|
+
export interface HandshakeRowEncodedByteBounds {
|
|
33
|
+
readonly maxEncodedRequestBytes: number;
|
|
34
|
+
readonly maxEncodedResultBytes: number;
|
|
35
|
+
readonly maxEncodedErrorBytes: number;
|
|
36
|
+
}
|
|
37
|
+
/** Raw proof of the largest legal broker.hello request. */
|
|
38
|
+
export declare const BROKER_HELLO_REQUEST_BYTE_PROOF: HandshakeEncodedByteProof;
|
|
39
|
+
/** Raw proof of the largest legal broker.hello success result. */
|
|
40
|
+
export declare const BROKER_HELLO_RESULT_BYTE_PROOF: HandshakeEncodedByteProof;
|
|
41
|
+
/** Raw proof of the largest legal broker.ready request. */
|
|
42
|
+
export declare const BROKER_READY_REQUEST_BYTE_PROOF: HandshakeEncodedByteProof;
|
|
43
|
+
/** Raw proof of the largest handshake rejection envelope. */
|
|
44
|
+
export declare const HANDSHAKE_REJECTED_ERROR_BYTE_PROOF: HandshakeEncodedByteProof;
|
|
45
|
+
/** broker.ready succeeds with the exact JSON-RPC result `null`. */
|
|
46
|
+
export declare const BROKER_READY_MAX_ENCODED_RESULT_BYTES: number;
|
|
47
|
+
export declare const BROKER_HELLO_MAX_ENCODED_REQUEST_BYTES: number;
|
|
48
|
+
export declare const BROKER_HELLO_MAX_ENCODED_RESULT_BYTES: number;
|
|
49
|
+
export declare const BROKER_HELLO_MAX_ENCODED_ERROR_BYTES: number;
|
|
50
|
+
export declare const BROKER_READY_MAX_ENCODED_REQUEST_BYTES: number;
|
|
51
|
+
export declare const BROKER_READY_MAX_ENCODED_ERROR_BYTES: number;
|
|
52
|
+
/**
|
|
53
|
+
* The exact per-row summary consumed by the registry. No byte value is
|
|
54
|
+
* hand-entered in the registry; all maxima are derived above from the closed
|
|
55
|
+
* grammar and raw UTF-8 serialization.
|
|
56
|
+
*/
|
|
57
|
+
export declare const HANDSHAKE_ROW_ENCODED_BYTE_BOUNDS: {
|
|
58
|
+
readonly 'broker.hello': {
|
|
59
|
+
readonly maxEncodedRequestBytes: number;
|
|
60
|
+
readonly maxEncodedResultBytes: number;
|
|
61
|
+
readonly maxEncodedErrorBytes: number;
|
|
62
|
+
};
|
|
63
|
+
readonly 'broker.ready': {
|
|
64
|
+
readonly maxEncodedRequestBytes: number;
|
|
65
|
+
readonly maxEncodedResultBytes: number;
|
|
66
|
+
readonly maxEncodedErrorBytes: number;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=handshake-byte-bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handshake-byte-bounds.d.ts","sourceRoot":"","sources":["../../src/wire/handshake-byte-bounds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,8DAA8D;AAC9D,eAAO,MAAM,sCAAsC,6CAIzC,CAAC;AAEX,MAAM,MAAM,gCAAgC,GAC1C,CAAC,OAAO,sCAAsC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,qEAAqE;AACrE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,qDAAqD;AACrD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC1D;AAED,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC1D;AAED,mEAAmE;AACnE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AA6KD,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B,2BAG3C,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,8BAA8B,2BAG1C,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B,2BAG3C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,mCAAmC,2BAG/C,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,qCAAqC,QAGjD,CAAC;AAEF,eAAO,MAAM,sCAAsC,QACF,CAAC;AAClD,eAAO,MAAM,qCAAqC,QACF,CAAC;AACjD,eAAO,MAAM,oCAAoC,QACI,CAAC;AACtD,eAAO,MAAM,sCAAsC,QACF,CAAC;AAClD,eAAO,MAAM,oCAAoC,QACI,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAW6C,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived compact-JSON byte bounds for the beta.8 handshake rows.
|
|
3
|
+
*
|
|
4
|
+
* This production module owns only the published summary metadata. The
|
|
5
|
+
* generic byte-proof kernel remains test-only; keeping it out of the packed
|
|
6
|
+
* artifact prevents consumers from accidentally treating a proof generator
|
|
7
|
+
* as a runtime protocol dependency. The test-only templates independently
|
|
8
|
+
* recompute these values from the same closed grammar.
|
|
9
|
+
*/
|
|
10
|
+
import { MAX_FRAME_BYTES } from './constants.js';
|
|
11
|
+
import { HANDSHAKE_REJECTED_CODE, HANDSHAKE_REJECTED_MESSAGE, HANDSHAKE_REJECT_REASONS, } from './errors.js';
|
|
12
|
+
import { BINDING_NONCE_MAX_LENGTH, HANDSHAKE_VERSION_MAX_LENGTH, HOST_IDENTIFIER_MAX_LENGTH, PACKAGE_DIGEST_LENGTH, PLUGIN_ID_MAX_LENGTH, } from './handshake.js';
|
|
13
|
+
import { VALID_CAPABILITIES } from './grants.js';
|
|
14
|
+
import { REQUEST_ID_MAX_LENGTH } from './request-id.js';
|
|
15
|
+
import { WIRE_UINT53_MAX } from './wire-uint53.js';
|
|
16
|
+
/** Encoding families used for raw UTF-8 boundary evidence. */
|
|
17
|
+
export const HANDSHAKE_BYTE_PROOF_ENCODING_FAMILIES = [
|
|
18
|
+
'ascii',
|
|
19
|
+
'multibyte',
|
|
20
|
+
'escaping',
|
|
21
|
+
];
|
|
22
|
+
const FAMILY_CODE_POINT = {
|
|
23
|
+
ascii: 'a',
|
|
24
|
+
multibyte: '😀',
|
|
25
|
+
escaping: '\u0000',
|
|
26
|
+
};
|
|
27
|
+
const MAX_REQUEST_ID = 'a'.repeat(REQUEST_ID_MAX_LENGTH);
|
|
28
|
+
const MAX_PACKAGE_DIGEST = `sha512-${'A'.repeat(PACKAGE_DIGEST_LENGTH - 9)}==`;
|
|
29
|
+
const MAX_EFFECTIVE_GRANTS = [...VALID_CAPABILITIES];
|
|
30
|
+
const MAX_HANDSHAKE_REJECT_REASON = HANDSHAKE_REJECT_REASONS.reduce((longest, value) => (value.length > longest.length ? value : longest));
|
|
31
|
+
function valueFor(family, leaf, nPlusOneLeaf) {
|
|
32
|
+
const codePoint = leaf.asciiOnly ? FAMILY_CODE_POINT.ascii : FAMILY_CODE_POINT[family];
|
|
33
|
+
return codePoint.repeat(leaf.maxCodePoints + Number(leaf.id === nPlusOneLeaf));
|
|
34
|
+
}
|
|
35
|
+
function semverFor(nPlusOneLeaf, leaf) {
|
|
36
|
+
return `0.0.0-${'a'.repeat(HANDSHAKE_VERSION_MAX_LENGTH - 6 + Number(nPlusOneLeaf === leaf))}`;
|
|
37
|
+
}
|
|
38
|
+
function measureProof(leaves, frameFor) {
|
|
39
|
+
const cases = HANDSHAKE_BYTE_PROOF_ENCODING_FAMILIES.map((family) => {
|
|
40
|
+
const encodedBytes = Buffer.byteLength(JSON.stringify(frameFor(family)), 'utf8');
|
|
41
|
+
return {
|
|
42
|
+
family,
|
|
43
|
+
encodedBytes,
|
|
44
|
+
fitsFrame: encodedBytes <= MAX_FRAME_BYTES,
|
|
45
|
+
nPlusOne: leaves.map((leaf) => {
|
|
46
|
+
const nPlusOneBytes = Buffer.byteLength(JSON.stringify(frameFor(family, leaf.id)), 'utf8');
|
|
47
|
+
return {
|
|
48
|
+
leaf: leaf.id,
|
|
49
|
+
encodedBytes: nPlusOneBytes,
|
|
50
|
+
fitsFrame: nPlusOneBytes <= MAX_FRAME_BYTES,
|
|
51
|
+
};
|
|
52
|
+
}),
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
maxEncodedBytes: Math.max(...cases.map(({ encodedBytes }) => encodedBytes)),
|
|
57
|
+
cases,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const HELLO_REQUEST_LEAVES = [
|
|
61
|
+
{ id: 'requestId', maxCodePoints: REQUEST_ID_MAX_LENGTH, asciiOnly: true },
|
|
62
|
+
{ id: 'pluginId', maxCodePoints: PLUGIN_ID_MAX_LENGTH },
|
|
63
|
+
{ id: 'contractVersion', maxCodePoints: HANDSHAKE_VERSION_MAX_LENGTH, asciiOnly: true },
|
|
64
|
+
{ id: 'wireVersion', maxCodePoints: HANDSHAKE_VERSION_MAX_LENGTH, asciiOnly: true },
|
|
65
|
+
];
|
|
66
|
+
const HELLO_RESULT_LEAVES = [
|
|
67
|
+
{ id: 'requestId', maxCodePoints: REQUEST_ID_MAX_LENGTH, asciiOnly: true },
|
|
68
|
+
{ id: 'pluginId', maxCodePoints: PLUGIN_ID_MAX_LENGTH },
|
|
69
|
+
{ id: 'contractVersion', maxCodePoints: HANDSHAKE_VERSION_MAX_LENGTH, asciiOnly: true },
|
|
70
|
+
{ id: 'wireVersion', maxCodePoints: HANDSHAKE_VERSION_MAX_LENGTH, asciiOnly: true },
|
|
71
|
+
{ id: 'pluginInstanceId', maxCodePoints: HOST_IDENTIFIER_MAX_LENGTH },
|
|
72
|
+
{ id: 'brokerSessionId', maxCodePoints: HOST_IDENTIFIER_MAX_LENGTH },
|
|
73
|
+
{ id: 'bindingNonce', maxCodePoints: BINDING_NONCE_MAX_LENGTH },
|
|
74
|
+
];
|
|
75
|
+
const READY_REQUEST_LEAVES = [
|
|
76
|
+
{ id: 'requestId', maxCodePoints: REQUEST_ID_MAX_LENGTH, asciiOnly: true },
|
|
77
|
+
{ id: 'bindingNonce', maxCodePoints: BINDING_NONCE_MAX_LENGTH },
|
|
78
|
+
];
|
|
79
|
+
const HANDSHAKE_ERROR_LEAVES = [
|
|
80
|
+
{ id: 'requestId', maxCodePoints: REQUEST_ID_MAX_LENGTH, asciiOnly: true },
|
|
81
|
+
];
|
|
82
|
+
function helloRequestFrame(family, nPlusOneLeaf) {
|
|
83
|
+
const leaf = (entry) => valueFor(family, entry, nPlusOneLeaf);
|
|
84
|
+
return {
|
|
85
|
+
jsonrpc: '2.0',
|
|
86
|
+
id: leaf(HELLO_REQUEST_LEAVES[0]),
|
|
87
|
+
method: 'broker.hello',
|
|
88
|
+
params: {
|
|
89
|
+
meta: { deadlineUnixMs: WIRE_UINT53_MAX },
|
|
90
|
+
input: {
|
|
91
|
+
pluginId: leaf(HELLO_REQUEST_LEAVES[1]),
|
|
92
|
+
packageDigest: MAX_PACKAGE_DIGEST,
|
|
93
|
+
contractVersion: semverFor(nPlusOneLeaf, 'contractVersion'),
|
|
94
|
+
wireVersion: semverFor(nPlusOneLeaf, 'wireVersion'),
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function helloResultFrame(family, nPlusOneLeaf) {
|
|
100
|
+
const leaf = (entry) => valueFor(family, entry, nPlusOneLeaf);
|
|
101
|
+
return {
|
|
102
|
+
jsonrpc: '2.0',
|
|
103
|
+
id: leaf(HELLO_RESULT_LEAVES[0]),
|
|
104
|
+
result: {
|
|
105
|
+
pluginId: leaf(HELLO_RESULT_LEAVES[1]),
|
|
106
|
+
packageDigest: MAX_PACKAGE_DIGEST,
|
|
107
|
+
contractVersion: semverFor(nPlusOneLeaf, 'contractVersion'),
|
|
108
|
+
wireVersion: semverFor(nPlusOneLeaf, 'wireVersion'),
|
|
109
|
+
pluginInstanceId: leaf(HELLO_RESULT_LEAVES[4]),
|
|
110
|
+
brokerSessionId: leaf(HELLO_RESULT_LEAVES[5]),
|
|
111
|
+
grantRevision: WIRE_UINT53_MAX,
|
|
112
|
+
effectiveGrants: MAX_EFFECTIVE_GRANTS,
|
|
113
|
+
bindingNonce: leaf(HELLO_RESULT_LEAVES[6]),
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function readyRequestFrame(family, nPlusOneLeaf) {
|
|
118
|
+
const leaf = (entry) => valueFor(family, entry, nPlusOneLeaf);
|
|
119
|
+
return {
|
|
120
|
+
jsonrpc: '2.0',
|
|
121
|
+
id: leaf(READY_REQUEST_LEAVES[0]),
|
|
122
|
+
method: 'broker.ready',
|
|
123
|
+
params: {
|
|
124
|
+
meta: { deadlineUnixMs: WIRE_UINT53_MAX },
|
|
125
|
+
input: { bindingNonce: leaf(READY_REQUEST_LEAVES[1]) },
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function handshakeRejectedFrame(family, nPlusOneLeaf) {
|
|
130
|
+
const requestId = valueFor(family, HANDSHAKE_ERROR_LEAVES[0], nPlusOneLeaf);
|
|
131
|
+
return {
|
|
132
|
+
jsonrpc: '2.0',
|
|
133
|
+
id: requestId,
|
|
134
|
+
error: {
|
|
135
|
+
code: HANDSHAKE_REJECTED_CODE,
|
|
136
|
+
message: HANDSHAKE_REJECTED_MESSAGE,
|
|
137
|
+
data: { reason: MAX_HANDSHAKE_REJECT_REASON },
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/** Raw proof of the largest legal broker.hello request. */
|
|
142
|
+
export const BROKER_HELLO_REQUEST_BYTE_PROOF = measureProof(HELLO_REQUEST_LEAVES, helloRequestFrame);
|
|
143
|
+
/** Raw proof of the largest legal broker.hello success result. */
|
|
144
|
+
export const BROKER_HELLO_RESULT_BYTE_PROOF = measureProof(HELLO_RESULT_LEAVES, helloResultFrame);
|
|
145
|
+
/** Raw proof of the largest legal broker.ready request. */
|
|
146
|
+
export const BROKER_READY_REQUEST_BYTE_PROOF = measureProof(READY_REQUEST_LEAVES, readyRequestFrame);
|
|
147
|
+
/** Raw proof of the largest handshake rejection envelope. */
|
|
148
|
+
export const HANDSHAKE_REJECTED_ERROR_BYTE_PROOF = measureProof(HANDSHAKE_ERROR_LEAVES, handshakeRejectedFrame);
|
|
149
|
+
/** broker.ready succeeds with the exact JSON-RPC result `null`. */
|
|
150
|
+
export const BROKER_READY_MAX_ENCODED_RESULT_BYTES = Buffer.byteLength(JSON.stringify({ jsonrpc: '2.0', id: MAX_REQUEST_ID, result: null }), 'utf8');
|
|
151
|
+
export const BROKER_HELLO_MAX_ENCODED_REQUEST_BYTES = BROKER_HELLO_REQUEST_BYTE_PROOF.maxEncodedBytes;
|
|
152
|
+
export const BROKER_HELLO_MAX_ENCODED_RESULT_BYTES = BROKER_HELLO_RESULT_BYTE_PROOF.maxEncodedBytes;
|
|
153
|
+
export const BROKER_HELLO_MAX_ENCODED_ERROR_BYTES = HANDSHAKE_REJECTED_ERROR_BYTE_PROOF.maxEncodedBytes;
|
|
154
|
+
export const BROKER_READY_MAX_ENCODED_REQUEST_BYTES = BROKER_READY_REQUEST_BYTE_PROOF.maxEncodedBytes;
|
|
155
|
+
export const BROKER_READY_MAX_ENCODED_ERROR_BYTES = HANDSHAKE_REJECTED_ERROR_BYTE_PROOF.maxEncodedBytes;
|
|
156
|
+
/**
|
|
157
|
+
* The exact per-row summary consumed by the registry. No byte value is
|
|
158
|
+
* hand-entered in the registry; all maxima are derived above from the closed
|
|
159
|
+
* grammar and raw UTF-8 serialization.
|
|
160
|
+
*/
|
|
161
|
+
export const HANDSHAKE_ROW_ENCODED_BYTE_BOUNDS = {
|
|
162
|
+
'broker.hello': {
|
|
163
|
+
maxEncodedRequestBytes: BROKER_HELLO_MAX_ENCODED_REQUEST_BYTES,
|
|
164
|
+
maxEncodedResultBytes: BROKER_HELLO_MAX_ENCODED_RESULT_BYTES,
|
|
165
|
+
maxEncodedErrorBytes: BROKER_HELLO_MAX_ENCODED_ERROR_BYTES,
|
|
166
|
+
},
|
|
167
|
+
'broker.ready': {
|
|
168
|
+
maxEncodedRequestBytes: BROKER_READY_MAX_ENCODED_REQUEST_BYTES,
|
|
169
|
+
maxEncodedResultBytes: BROKER_READY_MAX_ENCODED_RESULT_BYTES,
|
|
170
|
+
maxEncodedErrorBytes: BROKER_READY_MAX_ENCODED_ERROR_BYTES,
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
//# sourceMappingURL=handshake-byte-bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handshake-byte-bounds.js","sourceRoot":"","sources":["../../src/wire/handshake-byte-bounds.ts"],"names":[],"mappings":"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"}
|
package/dist/wire/handshake.d.ts
CHANGED
|
@@ -23,6 +23,24 @@ export declare const PACKAGE_DIGEST_PATTERN: RegExp;
|
|
|
23
23
|
* 95 chars (all ASCII) + 2 surrounding quotes = 97 bytes.
|
|
24
24
|
*/
|
|
25
25
|
export declare const PACKAGE_DIGEST_ENCODED_BYTES: 97;
|
|
26
|
+
/** H1 wire pluginId minimum length in Unicode code points. */
|
|
27
|
+
export declare const PLUGIN_ID_MIN_LENGTH: 1;
|
|
28
|
+
/** H1 wire pluginId maximum length in Unicode code points. */
|
|
29
|
+
export declare const PLUGIN_ID_MAX_LENGTH: 256;
|
|
30
|
+
/** Worst compact-JSON encoded bytes for H1 pluginId. */
|
|
31
|
+
export declare const PLUGIN_ID_MAX_ENCODED_BYTES: 1538;
|
|
32
|
+
/** Shared H3/H4 SemVer maximum length (the grammar is ASCII-only). */
|
|
33
|
+
export declare const HANDSHAKE_VERSION_MAX_LENGTH: 256;
|
|
34
|
+
/** Worst compact-JSON encoded bytes for H3/H4 version strings. */
|
|
35
|
+
export declare const HANDSHAKE_VERSION_MAX_ENCODED_BYTES: 258;
|
|
36
|
+
/** Exact SemVer 2.0.0 grammar copied from manifest.schema.json $defs.SemVer. */
|
|
37
|
+
export declare const HANDSHAKE_SEMVER_PATTERN: RegExp;
|
|
38
|
+
/** H5/H6 opaque Host-minted identifier minimum length in code points. */
|
|
39
|
+
export declare const HOST_IDENTIFIER_MIN_LENGTH: 1;
|
|
40
|
+
/** H5/H6 opaque Host-minted identifier maximum length in code points. */
|
|
41
|
+
export declare const HOST_IDENTIFIER_MAX_LENGTH: 512;
|
|
42
|
+
/** Worst compact-JSON encoded bytes for either opaque Host identifier. */
|
|
43
|
+
export declare const HOST_IDENTIFIER_MAX_ENCODED_BYTES: 3074;
|
|
26
44
|
/** Minimum code-point length for bindingNonce. */
|
|
27
45
|
export declare const BINDING_NONCE_MIN_LENGTH: 1;
|
|
28
46
|
/** Maximum code-point length for bindingNonce. */
|
|
@@ -40,13 +58,13 @@ export declare const BINDING_NONCE_MAX_ENCODED_BYTES: 3074;
|
|
|
40
58
|
* Additional identity/instance/grant/session fields are REJECTED.
|
|
41
59
|
*/
|
|
42
60
|
export interface CandidateHello {
|
|
43
|
-
/**
|
|
61
|
+
/** CLOSED (H1) — manifest pluginId, 1..256 Unicode code points. */
|
|
44
62
|
readonly pluginId: string;
|
|
45
63
|
/** CLOSED (H2) — exactly 95 chars, sha512 SRI digest. */
|
|
46
64
|
readonly packageDigest: string;
|
|
47
|
-
/**
|
|
65
|
+
/** CLOSED (H3) — SemVer contract version, at most 256 ASCII characters. */
|
|
48
66
|
readonly contractVersion: string;
|
|
49
|
-
/**
|
|
67
|
+
/** CLOSED (H4) — SemVer wire protocol version, at most 256 ASCII characters. */
|
|
50
68
|
readonly wireVersion: string;
|
|
51
69
|
}
|
|
52
70
|
/**
|
|
@@ -63,9 +81,9 @@ export interface SessionBinding {
|
|
|
63
81
|
readonly contractVersion: string;
|
|
64
82
|
/** Echoed from CandidateHello. */
|
|
65
83
|
readonly wireVersion: string;
|
|
66
|
-
/**
|
|
84
|
+
/** CLOSED (H5) — Host-minted instance id, 1..512 Unicode code points. */
|
|
67
85
|
readonly pluginInstanceId: string;
|
|
68
|
-
/**
|
|
86
|
+
/** CLOSED (H6) — Host-minted session id, 1..512 Unicode code points. */
|
|
69
87
|
readonly brokerSessionId: string;
|
|
70
88
|
/** CLOSED (H7) — WireUInt53(0, 9_007_199_254_740_991), monotonically increasing. */
|
|
71
89
|
readonly grantRevision: number;
|
|
@@ -88,7 +106,17 @@ export interface BrokerReadyParams {
|
|
|
88
106
|
* Validate a string as a conformant sha512 SRI package digest.
|
|
89
107
|
* Checks exact length (95) and pattern match.
|
|
90
108
|
*/
|
|
91
|
-
export declare function validatePackageDigest(value:
|
|
109
|
+
export declare function validatePackageDigest(value: unknown): value is string;
|
|
110
|
+
/** Validate H1's bounded wire representation without narrowing manifest syntax. */
|
|
111
|
+
export declare function validatePluginId(value: unknown): value is string;
|
|
112
|
+
/** Validate H3 contractVersion. Ranges and non-SemVer values are rejected. */
|
|
113
|
+
export declare function validateContractVersion(value: unknown): value is string;
|
|
114
|
+
/** Validate H4 wireVersion. Compatibility negotiation is Host policy, not syntax. */
|
|
115
|
+
export declare function validateWireVersion(value: unknown): value is string;
|
|
116
|
+
/** Validate H5 pluginInstanceId as an opaque Host-minted bounded value. */
|
|
117
|
+
export declare function validatePluginInstanceId(value: unknown): value is string;
|
|
118
|
+
/** Validate H6 brokerSessionId as an opaque Host-minted bounded value. */
|
|
119
|
+
export declare function validateBrokerSessionId(value: unknown): value is string;
|
|
92
120
|
/**
|
|
93
121
|
* Validate a string as a conformant binding nonce.
|
|
94
122
|
* Checks code-point count is within [1, 512].
|
|
@@ -96,5 +124,23 @@ export declare function validatePackageDigest(value: string): boolean;
|
|
|
96
124
|
* Note: uses spread to count code points (not .length, which counts
|
|
97
125
|
* UTF-16 code units and misreports surrogate pairs).
|
|
98
126
|
*/
|
|
99
|
-
export declare function validateBindingNonce(value:
|
|
127
|
+
export declare function validateBindingNonce(value: unknown): value is string;
|
|
128
|
+
/**
|
|
129
|
+
* Detect caller-supplied fields that belong exclusively to the Host's
|
|
130
|
+
* SessionBinding authority. These are a closed handshake rejection rather
|
|
131
|
+
* than an ordinary grammar error.
|
|
132
|
+
*/
|
|
133
|
+
export declare function hasHandshakeAuthorityInjection(value: unknown): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Validate the closed plugin-to-Host CandidateHello object. It deliberately
|
|
136
|
+
* validates only grammar: the Host decides whether the candidate is allowed.
|
|
137
|
+
*/
|
|
138
|
+
export declare function validateCandidateHello(value: unknown): value is CandidateHello;
|
|
139
|
+
/**
|
|
140
|
+
* Validate the closed Host-to-plugin SessionBinding object. Candidate echo
|
|
141
|
+
* equality and nonce-use state are peer protocol checks, not schema grammar.
|
|
142
|
+
*/
|
|
143
|
+
export declare function validateSessionBinding(value: unknown): value is SessionBinding;
|
|
144
|
+
/** Validate the closed activation-only broker.ready input object. */
|
|
145
|
+
export declare function validateBrokerReadyParams(value: unknown): value is BrokerReadyParams;
|
|
100
146
|
//# sourceMappingURL=handshake.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/wire/handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/wire/handshake.ts"],"names":[],"mappings":"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"}
|