@clowder-ai/plugin-contract 0.1.0-beta.2 → 0.1.0-beta.21

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 (183) hide show
  1. package/dist/codegen/generate-contract.d.ts +10 -0
  2. package/dist/codegen/generate-contract.d.ts.map +1 -1
  3. package/dist/codegen/generate-contract.js +201 -19
  4. package/dist/codegen/generate-contract.js.map +1 -1
  5. package/dist/conformance/fixtures.d.ts +11 -0
  6. package/dist/conformance/fixtures.d.ts.map +1 -0
  7. package/dist/conformance/fixtures.js +9 -0
  8. package/dist/conformance/fixtures.js.map +1 -0
  9. package/dist/conformance/index.d.ts +4 -0
  10. package/dist/conformance/index.d.ts.map +1 -1
  11. package/dist/conformance/index.js +3 -0
  12. package/dist/conformance/index.js.map +1 -1
  13. package/dist/conformance/messaging-behavior-fixture.d.ts +12 -0
  14. package/dist/conformance/messaging-behavior-fixture.d.ts.map +1 -0
  15. package/dist/conformance/messaging-behavior-fixture.js +30 -0
  16. package/dist/conformance/messaging-behavior-fixture.js.map +1 -0
  17. package/dist/conformance/runner.d.ts.map +1 -1
  18. package/dist/conformance/runner.js +22 -2
  19. package/dist/conformance/runner.js.map +1 -1
  20. package/dist/conformance/stdio-harness/child-process-harness.d.ts +65 -0
  21. package/dist/conformance/stdio-harness/child-process-harness.d.ts.map +1 -0
  22. package/dist/conformance/stdio-harness/child-process-harness.js +296 -0
  23. package/dist/conformance/stdio-harness/child-process-harness.js.map +1 -0
  24. package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts +26 -0
  25. package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts.map +1 -0
  26. package/dist/conformance/stdio-harness/dual-transport-oracle.js +32 -0
  27. package/dist/conformance/stdio-harness/dual-transport-oracle.js.map +1 -0
  28. package/dist/conformance/stdio-harness/harness-process-spawn.d.ts +27 -0
  29. package/dist/conformance/stdio-harness/harness-process-spawn.d.ts.map +1 -0
  30. package/dist/conformance/stdio-harness/harness-process-spawn.js +43 -0
  31. package/dist/conformance/stdio-harness/harness-process-spawn.js.map +1 -0
  32. package/dist/conformance/stdio-harness/index.d.ts +5 -0
  33. package/dist/conformance/stdio-harness/index.d.ts.map +1 -0
  34. package/dist/conformance/stdio-harness/index.js +4 -0
  35. package/dist/conformance/stdio-harness/index.js.map +1 -0
  36. package/dist/conformance/stdio-harness/ndjson-frame.d.ts +31 -0
  37. package/dist/conformance/stdio-harness/ndjson-frame.d.ts.map +1 -0
  38. package/dist/conformance/stdio-harness/ndjson-frame.js +125 -0
  39. package/dist/conformance/stdio-harness/ndjson-frame.js.map +1 -0
  40. package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts +15 -0
  41. package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts.map +1 -0
  42. package/dist/conformance/stdio-harness/node-process-tree-runtime.js +78 -0
  43. package/dist/conformance/stdio-harness/node-process-tree-runtime.js.map +1 -0
  44. package/dist/conformance/stdio-harness/process-tree-controller.d.ts +51 -0
  45. package/dist/conformance/stdio-harness/process-tree-controller.d.ts.map +1 -0
  46. package/dist/conformance/stdio-harness/process-tree-controller.js +162 -0
  47. package/dist/conformance/stdio-harness/process-tree-controller.js.map +1 -0
  48. package/dist/conformance/stdio-harness/windows-sentinel.d.ts +15 -0
  49. package/dist/conformance/stdio-harness/windows-sentinel.d.ts.map +1 -0
  50. package/dist/conformance/stdio-harness/windows-sentinel.js +160 -0
  51. package/dist/conformance/stdio-harness/windows-sentinel.js.map +1 -0
  52. package/dist/conformance/stdio-harness/wire-shape.d.ts +18 -0
  53. package/dist/conformance/stdio-harness/wire-shape.d.ts.map +1 -0
  54. package/dist/conformance/stdio-harness/wire-shape.js +2 -0
  55. package/dist/conformance/stdio-harness/wire-shape.js.map +1 -0
  56. package/dist/docx-materialization.d.ts +8 -0
  57. package/dist/docx-materialization.d.ts.map +1 -0
  58. package/dist/docx-materialization.js +19 -0
  59. package/dist/docx-materialization.js.map +1 -0
  60. package/dist/generated/contract.generated.d.ts +984 -12
  61. package/dist/generated/contract.generated.d.ts.map +1 -1
  62. package/dist/generated/contract.generated.js +9 -1
  63. package/dist/generated/contract.generated.js.map +1 -1
  64. package/dist/index.d.ts +3 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/validation/catalog.d.ts +21 -0
  69. package/dist/validation/catalog.d.ts.map +1 -0
  70. package/dist/validation/catalog.js +140 -0
  71. package/dist/validation/catalog.js.map +1 -0
  72. package/dist/validation/companion-bridge.d.ts +6 -0
  73. package/dist/validation/companion-bridge.d.ts.map +1 -0
  74. package/dist/validation/companion-bridge.js +70 -0
  75. package/dist/validation/companion-bridge.js.map +1 -0
  76. package/dist/validation/docx-materialization.d.ts +6 -0
  77. package/dist/validation/docx-materialization.d.ts.map +1 -0
  78. package/dist/validation/docx-materialization.js +36 -0
  79. package/dist/validation/docx-materialization.js.map +1 -0
  80. package/dist/validation/index.d.ts +6 -0
  81. package/dist/validation/index.d.ts.map +1 -1
  82. package/dist/validation/index.js +6 -0
  83. package/dist/validation/index.js.map +1 -1
  84. package/dist/validation/manifest.d.ts +23 -0
  85. package/dist/validation/manifest.d.ts.map +1 -0
  86. package/dist/validation/manifest.js +160 -0
  87. package/dist/validation/manifest.js.map +1 -0
  88. package/dist/validation/messaging-semantic.d.ts.map +1 -1
  89. package/dist/validation/messaging-semantic.js +49 -0
  90. package/dist/validation/messaging-semantic.js.map +1 -1
  91. package/dist/validation/messaging-wire.d.ts +38 -0
  92. package/dist/validation/messaging-wire.d.ts.map +1 -0
  93. package/dist/validation/messaging-wire.js +164 -0
  94. package/dist/validation/messaging-wire.js.map +1 -0
  95. package/dist/validation/signals.d.ts +26 -0
  96. package/dist/validation/signals.d.ts.map +1 -0
  97. package/dist/validation/signals.js +206 -0
  98. package/dist/validation/signals.js.map +1 -0
  99. package/dist/wire/constants.d.ts +36 -0
  100. package/dist/wire/constants.d.ts.map +1 -0
  101. package/dist/wire/constants.js +36 -0
  102. package/dist/wire/constants.js.map +1 -0
  103. package/dist/wire/disposition-fixtures.d.ts +118 -0
  104. package/dist/wire/disposition-fixtures.d.ts.map +1 -0
  105. package/dist/wire/disposition-fixtures.js +1881 -0
  106. package/dist/wire/disposition-fixtures.js.map +1 -0
  107. package/dist/wire/disposition.d.ts +102 -0
  108. package/dist/wire/disposition.d.ts.map +1 -0
  109. package/dist/wire/disposition.js +217 -0
  110. package/dist/wire/disposition.js.map +1 -0
  111. package/dist/wire/envelope.d.ts +253 -0
  112. package/dist/wire/envelope.d.ts.map +1 -0
  113. package/dist/wire/envelope.js +19 -0
  114. package/dist/wire/envelope.js.map +1 -0
  115. package/dist/wire/errors.d.ts +222 -0
  116. package/dist/wire/errors.d.ts.map +1 -0
  117. package/dist/wire/errors.js +153 -0
  118. package/dist/wire/errors.js.map +1 -0
  119. package/dist/wire/grants.d.ts +57 -0
  120. package/dist/wire/grants.d.ts.map +1 -0
  121. package/dist/wire/grants.js +59 -0
  122. package/dist/wire/grants.js.map +1 -0
  123. package/dist/wire/handshake-byte-bounds.d.ts +69 -0
  124. package/dist/wire/handshake-byte-bounds.d.ts.map +1 -0
  125. package/dist/wire/handshake-byte-bounds.js +173 -0
  126. package/dist/wire/handshake-byte-bounds.js.map +1 -0
  127. package/dist/wire/handshake.d.ts +146 -0
  128. package/dist/wire/handshake.d.ts.map +1 -0
  129. package/dist/wire/handshake.js +189 -0
  130. package/dist/wire/handshake.js.map +1 -0
  131. package/dist/wire/index.d.ts +37 -0
  132. package/dist/wire/index.d.ts.map +1 -0
  133. package/dist/wire/index.js +61 -0
  134. package/dist/wire/index.js.map +1 -0
  135. package/dist/wire/lifecycle-byte-bounds.d.ts +55 -0
  136. package/dist/wire/lifecycle-byte-bounds.d.ts.map +1 -0
  137. package/dist/wire/lifecycle-byte-bounds.js +209 -0
  138. package/dist/wire/lifecycle-byte-bounds.js.map +1 -0
  139. package/dist/wire/messaging-byte-bounds.d.ts +61 -0
  140. package/dist/wire/messaging-byte-bounds.d.ts.map +1 -0
  141. package/dist/wire/messaging-byte-bounds.js +459 -0
  142. package/dist/wire/messaging-byte-bounds.js.map +1 -0
  143. package/dist/wire/registry.d.ts +294 -0
  144. package/dist/wire/registry.d.ts.map +1 -0
  145. package/dist/wire/registry.js +256 -0
  146. package/dist/wire/registry.js.map +1 -0
  147. package/dist/wire/request-id.d.ts +34 -0
  148. package/dist/wire/request-id.d.ts.map +1 -0
  149. package/dist/wire/request-id.js +40 -0
  150. package/dist/wire/request-id.js.map +1 -0
  151. package/dist/wire/row-shapes.d.ts +217 -0
  152. package/dist/wire/row-shapes.d.ts.map +1 -0
  153. package/dist/wire/row-shapes.js +75 -0
  154. package/dist/wire/row-shapes.js.map +1 -0
  155. package/dist/wire/signal-byte-bounds.d.ts +97 -0
  156. package/dist/wire/signal-byte-bounds.d.ts.map +1 -0
  157. package/dist/wire/signal-byte-bounds.js +229 -0
  158. package/dist/wire/signal-byte-bounds.js.map +1 -0
  159. package/dist/wire/wire-uint53.d.ts +26 -0
  160. package/dist/wire/wire-uint53.d.ts.map +1 -0
  161. package/dist/wire/wire-uint53.js +32 -0
  162. package/dist/wire/wire-uint53.js.map +1 -0
  163. package/fixtures/behavior/messaging/adversarial-invariants.json +85 -0
  164. package/fixtures/manifest/invalid/duplicate-signal-type.json +33 -0
  165. package/fixtures/manifest/invalid/icon-package-escape.json +22 -0
  166. package/fixtures/manifest/valid/localized-product-metadata.json +27 -0
  167. package/fixtures/messaging/valid/subscription-delivery.json +1 -1
  168. package/fixtures/signals/invalid/destination-injection.json +15 -0
  169. package/fixtures/signals/invalid/dynamic-schema-url.json +10 -0
  170. package/fixtures/signals/invalid/forbidden-raw-privacy.json +10 -0
  171. package/fixtures/signals/invalid/non-utc-occurred-at.json +12 -0
  172. package/fixtures/signals/valid/feishu-meeting-artifact.json +18 -0
  173. package/fixtures/signals/valid/remote-service-declaration.json +10 -0
  174. package/package.json +19 -6
  175. package/src/schemas/behavior-fixture.schema.json +262 -2
  176. package/src/schemas/catalog.schema.json +91 -0
  177. package/src/schemas/companion-bridge.schema.json +1011 -0
  178. package/src/schemas/docx-materialization.schema.json +302 -0
  179. package/src/schemas/manifest.schema.json +490 -4
  180. package/src/schemas/messaging.schema.json +209 -32
  181. package/src/schemas/physical-limb.schema.json +319 -0
  182. package/src/schemas/plugin-metadata.schema.json +62 -0
  183. package/src/schemas/signal.schema.json +129 -0
@@ -0,0 +1,206 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ const Ajv2020 = require('ajv/dist/2020');
4
+ const addFormats = require('ajv-formats');
5
+ const signalSchema = require('@clowder-ai/plugin-contract/schemas/signals');
6
+ export const SIGNAL_PAYLOAD_MAX_ENCODED_BYTES = 65_536;
7
+ const ajv = new Ajv2020({ allErrors: true, strict: false });
8
+ addFormats(ajv);
9
+ ajv.addSchema(signalSchema, signalSchema['$id']);
10
+ function validator(definition) {
11
+ const validate = ajv.getSchema(`${String(signalSchema['$id'])}#/$defs/${definition}`);
12
+ if (!validate)
13
+ throw new Error(`missing signal schema definition: ${definition}`);
14
+ return validate;
15
+ }
16
+ const validateDeclarationSchema = validator('SignalDeclaration');
17
+ const validatePublishInputSchema = validator('EventsPublishInput');
18
+ const validatePublishResultSchema = validator('EventsPublishResult');
19
+ const resolvedSchemaValidators = new WeakMap();
20
+ function errorsOf(validate) {
21
+ return (validate.errors ?? []).map((error) => ({
22
+ instancePath: error.instancePath,
23
+ schemaPath: error.schemaPath,
24
+ keyword: error.keyword,
25
+ message: error.message ?? 'signal validation failed',
26
+ }));
27
+ }
28
+ function validateWith(validate, value) {
29
+ if (!validate(value))
30
+ return { valid: false, errors: errorsOf(validate) };
31
+ return { valid: true, value: value, errors: [] };
32
+ }
33
+ function isJsonValue(value, ancestors = new Set()) {
34
+ if (value === null ||
35
+ typeof value === 'string' ||
36
+ typeof value === 'boolean') {
37
+ return true;
38
+ }
39
+ if (typeof value === 'number')
40
+ return Number.isFinite(value);
41
+ if (typeof value !== 'object')
42
+ return false;
43
+ if (ancestors.has(value))
44
+ return false;
45
+ ancestors.add(value);
46
+ const valid = Array.isArray(value)
47
+ ? value.every((item) => isJsonValue(item, ancestors))
48
+ : Object.values(value).every((item) => isJsonValue(item, ancestors));
49
+ ancestors.delete(value);
50
+ return valid;
51
+ }
52
+ export function validateSignalDeclaration(value) {
53
+ return validateWith(validateDeclarationSchema, value);
54
+ }
55
+ export function validateEventsPublishInput(value) {
56
+ const structural = validateWith(validatePublishInputSchema, value);
57
+ if (!structural.valid)
58
+ return structural;
59
+ let validJsonValue = false;
60
+ try {
61
+ validJsonValue = isJsonValue(structural.value.payload);
62
+ }
63
+ catch {
64
+ validJsonValue = false;
65
+ }
66
+ if (!validJsonValue) {
67
+ return {
68
+ valid: false,
69
+ errors: [
70
+ {
71
+ instancePath: '/payload',
72
+ schemaPath: '#/$defs/EventsPublishInput/properties/payload',
73
+ keyword: 'jsonValue',
74
+ message: 'payload must contain only finite JSON values without cycles',
75
+ },
76
+ ],
77
+ };
78
+ }
79
+ let encodedPayloadBytes;
80
+ try {
81
+ encodedPayloadBytes = Buffer.byteLength(JSON.stringify(structural.value.payload), 'utf8');
82
+ }
83
+ catch {
84
+ return {
85
+ valid: false,
86
+ errors: [
87
+ {
88
+ instancePath: '/payload',
89
+ schemaPath: '#/$defs/EventsPublishInput/properties/payload',
90
+ keyword: 'jsonValue',
91
+ message: 'payload could not be safely serialized as JSON',
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ if (encodedPayloadBytes > SIGNAL_PAYLOAD_MAX_ENCODED_BYTES) {
97
+ return {
98
+ valid: false,
99
+ errors: [
100
+ {
101
+ instancePath: '/payload',
102
+ schemaPath: '#/x-clowder-payload-max-encoded-bytes',
103
+ keyword: 'maxEncodedBytes',
104
+ message: `payload exceeds ${SIGNAL_PAYLOAD_MAX_ENCODED_BYTES} encoded bytes`,
105
+ },
106
+ ],
107
+ };
108
+ }
109
+ return structural;
110
+ }
111
+ /**
112
+ * Cross-document admission: a structurally legal publish is still forbidden
113
+ * unless its signalType appears in this plugin manifest's declared provides.
114
+ */
115
+ export function validateDeclaredEventsPublishInput(declarations, signalSchemas, value) {
116
+ const input = validateEventsPublishInput(value);
117
+ if (!input.valid)
118
+ return input;
119
+ let matchingDeclaration;
120
+ for (const candidate of declarations) {
121
+ const declaration = validateSignalDeclaration(candidate);
122
+ if (!declaration.valid) {
123
+ return {
124
+ valid: false,
125
+ errors: [
126
+ {
127
+ instancePath: '/signals/provides',
128
+ schemaPath: '#/$defs/SignalContribution/properties/provides',
129
+ keyword: 'signalDeclaration',
130
+ message: 'declared signal metadata is invalid',
131
+ },
132
+ ],
133
+ };
134
+ }
135
+ if (declaration.value.type === input.value.signalType) {
136
+ matchingDeclaration = declaration.value;
137
+ }
138
+ }
139
+ if (matchingDeclaration === undefined) {
140
+ return {
141
+ valid: false,
142
+ errors: [
143
+ {
144
+ instancePath: '/signalType',
145
+ schemaPath: '#/$defs/SignalContribution/properties/provides',
146
+ keyword: 'declaredSignalType',
147
+ message: 'signalType is not declared by the plugin manifest',
148
+ },
149
+ ],
150
+ };
151
+ }
152
+ const resolvedSchema = signalSchemas[matchingDeclaration.schemaRef];
153
+ if (typeof resolvedSchema !== 'object' ||
154
+ resolvedSchema === null ||
155
+ Array.isArray(resolvedSchema)) {
156
+ return {
157
+ valid: false,
158
+ errors: [
159
+ {
160
+ instancePath: '/signalType',
161
+ schemaPath: matchingDeclaration.schemaRef,
162
+ keyword: 'signalSchemaUnresolved',
163
+ message: 'declared signal schema is not resolved from the installed package',
164
+ },
165
+ ],
166
+ };
167
+ }
168
+ let validateResolved = resolvedSchemaValidators.get(resolvedSchema);
169
+ if (validateResolved === undefined) {
170
+ try {
171
+ const schemaAjv = new Ajv2020({ allErrors: true, strict: false });
172
+ addFormats(schemaAjv);
173
+ validateResolved = schemaAjv.compile(resolvedSchema);
174
+ resolvedSchemaValidators.set(resolvedSchema, validateResolved);
175
+ }
176
+ catch {
177
+ resolvedSchemaValidators.set(resolvedSchema, null);
178
+ validateResolved = null;
179
+ }
180
+ }
181
+ if (validateResolved === null) {
182
+ return {
183
+ valid: false,
184
+ errors: [
185
+ {
186
+ instancePath: '/signalType',
187
+ schemaPath: matchingDeclaration.schemaRef,
188
+ keyword: 'signalSchemaInvalid',
189
+ message: 'declared signal schema could not be compiled safely',
190
+ },
191
+ ],
192
+ };
193
+ }
194
+ const content = {
195
+ payload: input.value.payload,
196
+ source: input.value.source,
197
+ };
198
+ if (!validateResolved(content)) {
199
+ return { valid: false, errors: errorsOf(validateResolved) };
200
+ }
201
+ return input;
202
+ }
203
+ export function validateEventsPublishResult(value) {
204
+ return validateWith(validatePublishResultSchema, value);
205
+ }
206
+ //# sourceMappingURL=signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/validation/signals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Wire-protocol framing constants.
3
+ * Every value is mechanized verbatim from the #1165 frozen shape (rev11).
4
+ * This module defines nothing new.
5
+ */
6
+ /** Maximum raw UTF-8 bytes per frame, excluding the LF terminator. */
7
+ export declare const MAX_FRAME_BYTES: 1048576;
8
+ /** The v0 wire protocol version. */
9
+ export declare const WIRE_VERSION: "0.1.0";
10
+ /** The contract version this wire shape mechanizes. */
11
+ export declare const CONTRACT_VERSION: "0.1.0";
12
+ /** JSON-RPC version constant (exact string). */
13
+ export declare const JSONRPC_VERSION: "2.0";
14
+ /**
15
+ * Maximum payload bytes per element payload (frozen x-clowder-bounds).
16
+ * Open-membered payloads (MediaRefElementPayload, RichBlockElementPayload)
17
+ * are bounded by this ceiling alone — no structural narrowing.
18
+ */
19
+ export declare const MAX_ELEMENT_PAYLOAD_BYTES: 65536;
20
+ /**
21
+ * Maximum total payload bytes per message (frozen x-clowder-bounds).
22
+ */
23
+ export declare const MAX_TOTAL_PAYLOAD_BYTES: 262144;
24
+ /**
25
+ * Maximum elements per draft operation (frozen).
26
+ */
27
+ export declare const MAX_ELEMENTS_PER_OPERATION: 32;
28
+ /**
29
+ * Maximum elements per message envelope (frozen).
30
+ */
31
+ export declare const MAX_ELEMENTS_PER_MESSAGE: 128;
32
+ /**
33
+ * Maximum whisper targets (frozen).
34
+ */
35
+ export declare const MAX_WHISPER_TARGETS: 16;
36
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/wire/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAG,OAAkB,CAAC;AAElD,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAG,OAAgB,CAAC;AAE7C,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AAEjD,gDAAgD;AAChD,eAAO,MAAM,eAAe,EAAG,KAAc,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAG,KAAe,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAG,MAAgB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAG,EAAW,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAG,GAAY,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAG,EAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Wire-protocol framing constants.
3
+ * Every value is mechanized verbatim from the #1165 frozen shape (rev11).
4
+ * This module defines nothing new.
5
+ */
6
+ /** Maximum raw UTF-8 bytes per frame, excluding the LF terminator. */
7
+ export const MAX_FRAME_BYTES = 1_048_576;
8
+ /** The v0 wire protocol version. */
9
+ export const WIRE_VERSION = '0.1.0';
10
+ /** The contract version this wire shape mechanizes. */
11
+ export const CONTRACT_VERSION = '0.1.0';
12
+ /** JSON-RPC version constant (exact string). */
13
+ export const JSONRPC_VERSION = '2.0';
14
+ /**
15
+ * Maximum payload bytes per element payload (frozen x-clowder-bounds).
16
+ * Open-membered payloads (MediaRefElementPayload, RichBlockElementPayload)
17
+ * are bounded by this ceiling alone — no structural narrowing.
18
+ */
19
+ export const MAX_ELEMENT_PAYLOAD_BYTES = 65_536;
20
+ /**
21
+ * Maximum total payload bytes per message (frozen x-clowder-bounds).
22
+ */
23
+ export const MAX_TOTAL_PAYLOAD_BYTES = 262_144;
24
+ /**
25
+ * Maximum elements per draft operation (frozen).
26
+ */
27
+ export const MAX_ELEMENTS_PER_OPERATION = 32;
28
+ /**
29
+ * Maximum elements per message envelope (frozen).
30
+ */
31
+ export const MAX_ELEMENTS_PER_MESSAGE = 128;
32
+ /**
33
+ * Maximum whisper targets (frozen).
34
+ */
35
+ export const MAX_WHISPER_TARGETS = 16;
36
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/wire/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,SAAkB,CAAC;AAElD,oCAAoC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAgB,CAAC;AAE7C,uDAAuD;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAC;AAEjD,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAe,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAW,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAY,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAW,CAAC"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Disposition conformance fixture vectors — machine-readable test data
3
+ * for the pre-dispatch disposition table (T-A through T-M).
4
+ *
5
+ * Mechanized VERBATIM from §3.8-1 of the #1165 frozen plan (rev11,
6
+ * SHA 7e26e5af). Each vector carries:
7
+ * - A raw frame (the input to a pre-dispatch classifier)
8
+ * - Machine-readable pre-state with correlation records + cross-frame oracle
9
+ * - The expected unique T-class assignment
10
+ * - For respond classes: a type-checked closed-arm error envelope
11
+ * - For close/accept classes: null response markers
12
+ *
13
+ * These are DATA — they do not classify. A future classifier
14
+ * implementation would be tested against these vectors.
15
+ *
16
+ * Coverage per §3.8-1 (frozen enumerations, not arbitrary counts):
17
+ * - 9 response-candidate sub-cases (RESPONSE_CANDIDATE_CASES)
18
+ * "your R9 correction #5's five required cases plus four controls"
19
+ * - 7 notification-partition sub-cases (NOTIFICATION_PARTITION_CASES)
20
+ * "your correction #4's five, the idless-envelope fixture,
21
+ * and the R8 row-10 value-failure fixture"
22
+ * - All 13 T-classes have ≥1 vector
23
+ * - Pre-state mutual-exclusivity proof pairs:
24
+ * ping nonce (T-H-3 / T-L-2), row-9 deliveryId (T-H-9 / T-L-4)
25
+ *
26
+ * Response frames are DERIVED from type-checked ClosedWireErrorResponse
27
+ * objects, not hand-written strings.
28
+ *
29
+ * Partition records carry {vectorId, expectedClass} per case (FC-70-4).
30
+ * Tests verify both existence AND class correctness per key.
31
+ */
32
+ import type { DispositionClass, DispositionOutcome } from './disposition.js';
33
+ import type { CandidateHello } from './handshake.js';
34
+ import type { WireMethodName } from './registry.js';
35
+ export declare const CLOSED_ERROR_ARM_NAMES: readonly ["ParseErrorEnvelope", "InvalidRequestNullIdEnvelope", "InvalidRequestValidIdEnvelope", "MethodNotFoundEnvelope", "InvalidParamsEnvelope", "InternalErrorEnvelope", "HandshakeRejectedEnvelope", "DeliveryRejectedEnvelope", "DomainErrorEnvelope", "DeadlineExpiredEnvelope", "SnapshotUnavailableEnvelope"];
36
+ export type ClosedErrorArmName = (typeof CLOSED_ERROR_ARM_NAMES)[number];
37
+ /**
38
+ * Original request fields needed for cross-frame semantic oracle validation.
39
+ * Optional: only populated for rows that have cross-frame invariants.
40
+ */
41
+ export interface RequestSnapshot {
42
+ /** Row 11 ping: the nonce that must be echoed byte-equal in the result. */
43
+ readonly nonce?: string;
44
+ /** Row 9 deliver: the deliveryId that must match byte-equal in the ack. */
45
+ readonly deliveryId?: string;
46
+ /** Row 6 read: the validated request limit that bounds result.events. */
47
+ readonly readLimit?: number;
48
+ /** Row 8 snapshot: the validated request maxItems that bounds result.items. */
49
+ readonly snapshotMaxItems?: number;
50
+ /** Row 1 hello: the candidate claims that SessionBinding must echo byte-equal. */
51
+ readonly candidateHello?: CandidateHello;
52
+ /** Row 4 append: the input element IDs for cross-frame provenance. */
53
+ readonly appendElementIds?: readonly string[];
54
+ }
55
+ /**
56
+ * A single in-flight request record for pre-state correlation.
57
+ * The method field is a closed WireMethodName, not a bare string —
58
+ * the compiler catches typos and detects registry drift.
59
+ */
60
+ export interface InFlightRecord {
61
+ readonly id: string;
62
+ readonly method: WireMethodName;
63
+ /** Original request fields for cross-frame semantic oracle. */
64
+ readonly requestSnapshot?: RequestSnapshot;
65
+ }
66
+ /**
67
+ * Machine-readable pre-state for state-dependent classification.
68
+ * Without this, T-H vs T-L cannot be distinguished from rawFrame alone.
69
+ */
70
+ export interface FixturePreState {
71
+ readonly inFlightRequests: readonly InFlightRecord[];
72
+ }
73
+ export interface DispositionFixtureVector {
74
+ readonly id: string;
75
+ readonly rawFrame: string;
76
+ readonly rawFrameEncoding: 'utf8' | 'hex';
77
+ readonly preState: FixturePreState;
78
+ readonly expectedClass: DispositionClass;
79
+ readonly expectedOutcome: DispositionOutcome;
80
+ readonly expectedErrorArm: ClosedErrorArmName | null;
81
+ readonly expectedErrorCode: number | null;
82
+ readonly expectedResponseFrame: string | null;
83
+ /** This vector must not allocate state, enqueue work, or activate. */
84
+ readonly zeroSideEffects?: true;
85
+ readonly description: string;
86
+ }
87
+ /**
88
+ * A single named case from the frozen plan's partition enumeration.
89
+ */
90
+ export interface PartitionCase {
91
+ readonly vectorId: string;
92
+ readonly expectedClass: DispositionClass;
93
+ }
94
+ /**
95
+ * 9 response-candidate sub-cases per §3.8-1:
96
+ * "your R9 correction #5's five required cases plus four controls"
97
+ *
98
+ * A "response candidate" enters the response lane: no method + at least
99
+ * one of result/error. Controls prove the boundary: frames with method
100
+ * that exit to T-F/T-K/T-D despite carrying result/error.
101
+ */
102
+ export declare const RESPONSE_CANDIDATE_CASES: Readonly<Record<string, PartitionCase>>;
103
+ /**
104
+ * 7 notification-partition sub-cases per §3.8-1:
105
+ * "your correction #4's five, the idless-envelope fixture,
106
+ * and the R8 row-10 value-failure fixture"
107
+ */
108
+ export declare const NOTIFICATION_PARTITION_CASES: Readonly<Record<string, PartitionCase>>;
109
+ export declare const DISPOSITION_FIXTURE_VECTORS: readonly DispositionFixtureVector[];
110
+ /** Complete beta.8 handshake safety surface exported for downstream runners. */
111
+ export declare const BETA8_HANDSHAKE_VECTOR_IDS: readonly ["T-C-2", "T-M-1", "T-M-2", "T-M-3", "T-M-4", "T-M-5", "T-M-6", "T-M-7", "T-M-8", "T-G-2", "T-G-3", "T-G-4", "T-G-5", "T-G-6", "T-G-7", "T-G-8", "T-G-9", "T-G-10", "T-G-11", "T-G-12", "T-G-13", "T-G-14", "T-H-10", "T-H-11", "T-L-5", "T-L-6"];
112
+ /** Complete beta.9 C-2 publish safety surface exported for downstream runners. */
113
+ export declare const BETA9_EVENTS_PUBLISH_VECTOR_IDS: readonly ["T-M-9", "T-G-15", "T-H-12", "T-L-7"];
114
+ /** Complete beta.10 M0-B lifecycle safety surface for rows 10 through 12. */
115
+ export declare const BETA10_LIFECYCLE_VECTOR_IDS: readonly ["T-G-1", "T-J-1", "T-J-2", "T-K-1", "T-K-4", "T-K-5", "T-K-6", "T-K-7", "T-H-3", "T-L-1", "T-L-2", "T-L-3", "T-J-3", "T-K-8", "T-K-9", "T-K-10", "T-M-10", "T-G-16", "T-M-11", "T-G-17", "T-M-12", "T-G-18", "T-L-8", "T-H-13", "T-M-13", "T-G-19", "T-G-20", "T-L-9", "T-L-10"];
116
+ /** Complete beta.11 M0-C messaging safety surface for rows 3 through 9. */
117
+ export declare const BETA11_MESSAGING_VECTOR_IDS: readonly ["T-C-3", "T-H-2", "T-H-5", "T-H-9", "T-L-4", "T-M-14", "T-G-21", "T-M-15", "T-G-22", "T-M-16", "T-G-23", "T-M-17", "T-G-24", "T-M-18", "T-G-25", "T-M-19", "T-G-26", "T-M-20", "T-M-21", "T-G-27", "T-C-4", "T-C-5", "T-C-6", "T-L-11", "T-H-14", "T-L-12", "T-H-15", "T-L-13", "T-H-16", "T-L-14", "T-H-17", "T-L-15", "T-H-18", "T-L-16", "T-H-19", "T-L-17", "T-H-20", "T-H-21", "T-H-22"];
118
+ //# sourceMappingURL=disposition-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposition-fixtures.d.ts","sourceRoot":"","sources":["../../src/wire/disposition-fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ7E,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuBpD,eAAO,MAAM,sBAAsB,wTAYzB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAkNzE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,cAAc,EAAE,CAAC;CACtD;AAMD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAUD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAmB5E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAehF,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAykD1E,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,4PAO7B,CAAC;AAEX,kFAAkF;AAClF,eAAO,MAAM,+BAA+B,iDAKlC,CAAC;AAEX,6EAA6E;AAC7E,eAAO,MAAM,2BAA2B,4RA8B9B,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,yYAU9B,CAAC"}