@clowder-ai/plugin-contract 0.1.0-beta.8 → 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 +1 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +1 -1
- package/dist/conformance/fixtures.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 +2 -0
- package/dist/wire/disposition-fixtures.d.ts.map +1 -1
- package/dist/wire/disposition-fixtures.js +60 -1
- package/dist/wire/disposition-fixtures.js.map +1 -1
- package/dist/wire/index.d.ts +4 -1
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +4 -2
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/registry.d.ts +26 -12
- package/dist/wire/registry.d.ts.map +1 -1
- package/dist/wire/registry.js +21 -7
- package/dist/wire/registry.js.map +1 -1
- package/dist/wire/row-shapes.d.ts +1 -1
- package/dist/wire/row-shapes.d.ts.map +1 -1
- package/dist/wire/row-shapes.js +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/wire/registry.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 13-row production method registry: the frozen original 12 plus C-2 row 13.
|
|
3
3
|
* Mechanized verbatim from the #1165 frozen shape (rev11).
|
|
4
4
|
*
|
|
5
5
|
* Every row carries machine-readable metadata:
|
|
6
6
|
* - method name, direction, grant requirement
|
|
7
7
|
* - notification flag (only row 10)
|
|
8
|
-
* - ready status (
|
|
8
|
+
* - ready status (rows 1–2 in beta.8 and row 13 in beta.9)
|
|
9
9
|
* - leaf closure status and which matrix entries cause reservation
|
|
10
10
|
* - settlement key source
|
|
11
11
|
*
|
|
@@ -21,11 +21,12 @@
|
|
|
21
21
|
* Affects rows 6, 8, 9. M7 remains RESERVED.
|
|
22
22
|
*/
|
|
23
23
|
import { HANDSHAKE_ROW_ENCODED_BYTE_BOUNDS } from './handshake-byte-bounds.js';
|
|
24
|
+
import { EVENTS_PUBLISH_ROW_ENCODED_BYTE_BOUNDS } from './signal-byte-bounds.js';
|
|
24
25
|
// ---------------------------------------------------------------------------
|
|
25
26
|
// Method name enum
|
|
26
27
|
// ---------------------------------------------------------------------------
|
|
27
28
|
/**
|
|
28
|
-
* The exact
|
|
29
|
+
* The exact 13 production method names, in registry order.
|
|
29
30
|
* No production method exists for fixture setup/observe, grant presets,
|
|
30
31
|
* revocation, permission-matrix inspection, or replay deletion.
|
|
31
32
|
*/
|
|
@@ -42,18 +43,19 @@ export const WIRE_METHOD_NAMES = [
|
|
|
42
43
|
'host.grants.changed',
|
|
43
44
|
'host.lifecycle.ping',
|
|
44
45
|
'host.lifecycle.drain',
|
|
46
|
+
'events.publish',
|
|
45
47
|
];
|
|
46
48
|
// ---------------------------------------------------------------------------
|
|
47
49
|
// The complete registry (frozen)
|
|
48
50
|
// ---------------------------------------------------------------------------
|
|
49
51
|
/**
|
|
50
|
-
* Machine-readable registry of all
|
|
52
|
+
* Machine-readable registry of all 13 production methods.
|
|
51
53
|
*
|
|
52
54
|
* Every value traces to the #1165 frozen shape. Row metadata includes
|
|
53
55
|
* the exact matrix entry IDs that block leaf closure. Settlement key
|
|
54
56
|
* sources follow the canonical per-row specification.
|
|
55
57
|
*
|
|
56
|
-
* Rows 1–2 are ready after beta.8
|
|
58
|
+
* Rows 1–2 are ready after beta.8; row 13 is ready after beta.9.
|
|
57
59
|
*/
|
|
58
60
|
export const WIRE_METHOD_REGISTRY = {
|
|
59
61
|
'broker.hello': {
|
|
@@ -195,6 +197,18 @@ export const WIRE_METHOD_REGISTRY = {
|
|
|
195
197
|
reservedEntries: [],
|
|
196
198
|
settlementKeySource: '—',
|
|
197
199
|
},
|
|
200
|
+
'events.publish': {
|
|
201
|
+
rowNumber: 13,
|
|
202
|
+
method: 'events.publish',
|
|
203
|
+
direction: 'plugin-to-host',
|
|
204
|
+
grant: 'events.publish',
|
|
205
|
+
isNotification: false,
|
|
206
|
+
ready: true,
|
|
207
|
+
leafClosure: 'CLOSED',
|
|
208
|
+
reservedEntries: [],
|
|
209
|
+
settlementKeySource: '(Host-bound producer instance, input.signalType, input.idempotencyKey)',
|
|
210
|
+
...EVENTS_PUBLISH_ROW_ENCODED_BYTE_BOUNDS,
|
|
211
|
+
},
|
|
198
212
|
};
|
|
199
213
|
// ---------------------------------------------------------------------------
|
|
200
214
|
// Derived helpers
|
|
@@ -209,10 +223,10 @@ export const NOTIFICATION_METHODS = WIRE_METHOD_NAMES.filter(m => WIRE_METHOD_RE
|
|
|
209
223
|
export const CLOSED_LEAF_ROWS = WIRE_METHOD_NAMES.filter(m => WIRE_METHOD_REGISTRY[m].leafClosure === 'CLOSED');
|
|
210
224
|
/** Method names with RESERVED leaf shapes (may change). */
|
|
211
225
|
export const RESERVED_LEAF_ROWS = WIRE_METHOD_NAMES.filter(m => WIRE_METHOD_REGISTRY[m].leafClosure === 'RESERVED');
|
|
212
|
-
/** Method names that are legal for wire advertisement in beta.
|
|
226
|
+
/** Method names that are legal for wire advertisement in beta.9. */
|
|
213
227
|
export const READY_ROWS = WIRE_METHOD_NAMES.filter(m => WIRE_METHOD_REGISTRY[m].ready);
|
|
214
228
|
/** Total number of production methods. */
|
|
215
|
-
export const WIRE_METHOD_COUNT =
|
|
229
|
+
export const WIRE_METHOD_COUNT = 13;
|
|
216
230
|
// ---------------------------------------------------------------------------
|
|
217
231
|
// Lookup helpers
|
|
218
232
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-shapes.d.ts","sourceRoot":"","sources":["../../src/wire/row-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAC;AAMxB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,EAAG,CAAU,CAAC;AAEtD,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,EAAG,GAAY,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAG,IAAa,CAAC;AAEhE,oDAAoD;AACpD,eAAO,MAAM,oCAAoC,EAAG,CAAU,CAAC;AAE/D,oDAAoD;AACpD,eAAO,MAAM,oCAAoC,EAAG,GAAY,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,2CAA2C,EAAG,GAAY,CAAC;AAMxE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEtC,wDAAwD;AACxD,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAC;AAEzD,wDAAwD;AACxD,eAAO,MAAM,8BAA8B,EAAG,GAAY,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qCAAqC,EAAG,GAAY,CAAC;AAElE,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,EAAG,GAAY,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAG,IAAa,CAAC;AAMzD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAI/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAEhD,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,EAAG,GAAY,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAG,IAAa,CAAC;AAM1D;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC;AAY/B;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AACxC,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"row-shapes.d.ts","sourceRoot":"","sources":["../../src/wire/row-shapes.ts"],"names":[],"mappings":"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"}
|
package/dist/wire/row-shapes.js
CHANGED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived compact-JSON byte bounds for the beta.9 C-2 events.publish row.
|
|
3
|
+
*
|
|
4
|
+
* Signal payloads are bounded by their compact encoded byte length, not by a
|
|
5
|
+
* string code-point count. That makes the generic leaf proof insufficient for
|
|
6
|
+
* row 13: this module constructs an exactly 64 KiB JSON object independently
|
|
7
|
+
* for ASCII, multibyte, and escaped-string families, then measures the entire
|
|
8
|
+
* request envelope and one rejected N+1 witness for every bounded leaf.
|
|
9
|
+
*/
|
|
10
|
+
import type { EventsPublishInput, EventsPublishResult } from '../generated/contract.generated.js';
|
|
11
|
+
export declare const EVENTS_PUBLISH_BYTE_PROOF_ENCODING_FAMILIES: readonly ["ascii", "multibyte", "escaping"];
|
|
12
|
+
export type EventsPublishByteProofEncodingFamily = (typeof EVENTS_PUBLISH_BYTE_PROOF_ENCODING_FAMILIES)[number];
|
|
13
|
+
export declare const SIGNAL_TYPE_MAX_LENGTH: 128;
|
|
14
|
+
export declare const SIGNAL_EVENT_ID_MAX_LENGTH: 128;
|
|
15
|
+
export declare const SIGNAL_IDEMPOTENCY_KEY_MAX_LENGTH: 256;
|
|
16
|
+
export declare const SIGNAL_OCCURRED_AT_MAX_LENGTH: 30;
|
|
17
|
+
export declare const SIGNAL_SOURCE_HANDLE_MAX_LENGTH: 512;
|
|
18
|
+
interface EventsPublishProofInput {
|
|
19
|
+
readonly requestId: string;
|
|
20
|
+
readonly input: EventsPublishInput;
|
|
21
|
+
readonly payloadEncodedBytes: number;
|
|
22
|
+
}
|
|
23
|
+
export interface EventsPublishNPlusOneWitness extends EventsPublishProofInput {
|
|
24
|
+
readonly leaf: 'requestId' | 'signalType' | 'eventId' | 'idempotencyKey' | 'occurredAt' | 'payloadBytes' | 'sourceHandle';
|
|
25
|
+
readonly encodedBytes: number;
|
|
26
|
+
readonly fitsFrame: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface EventsPublishEncodedByteProofCase {
|
|
29
|
+
readonly family: EventsPublishByteProofEncodingFamily;
|
|
30
|
+
readonly encodedBytes: number;
|
|
31
|
+
readonly fitsFrame: boolean;
|
|
32
|
+
readonly nPlusOne: readonly {
|
|
33
|
+
readonly leaf: string;
|
|
34
|
+
readonly encodedBytes: number;
|
|
35
|
+
readonly fitsFrame: boolean;
|
|
36
|
+
}[];
|
|
37
|
+
}
|
|
38
|
+
export interface EventsPublishEncodedByteProof {
|
|
39
|
+
readonly maxEncodedBytes: number;
|
|
40
|
+
readonly cases: readonly EventsPublishEncodedByteProofCase[];
|
|
41
|
+
}
|
|
42
|
+
export interface EventsPublishRowEncodedByteBounds {
|
|
43
|
+
readonly maxEncodedRequestBytes: number;
|
|
44
|
+
readonly maxEncodedResultBytes: number;
|
|
45
|
+
readonly maxEncodedErrorBytes: number;
|
|
46
|
+
}
|
|
47
|
+
export declare function eventsPublishMaximumInput(family: EventsPublishByteProofEncodingFamily): EventsPublishProofInput;
|
|
48
|
+
export declare function eventsPublishNPlusOneInputs(family: EventsPublishByteProofEncodingFamily): readonly EventsPublishNPlusOneWitness[];
|
|
49
|
+
export declare function eventsPublishMaximumResult(): {
|
|
50
|
+
readonly requestId: string;
|
|
51
|
+
readonly result: EventsPublishResult;
|
|
52
|
+
};
|
|
53
|
+
export declare function eventsPublishResultNPlusOneWitnesses(): readonly [{
|
|
54
|
+
readonly leaf: "requestId";
|
|
55
|
+
readonly requestId: string;
|
|
56
|
+
readonly result: EventsPublishResult;
|
|
57
|
+
}, {
|
|
58
|
+
readonly leaf: "publicationId";
|
|
59
|
+
readonly result: {
|
|
60
|
+
readonly publicationId: string;
|
|
61
|
+
readonly disposition: import("../generated/contract.generated.js").EventsPublishDisposition;
|
|
62
|
+
};
|
|
63
|
+
readonly requestId: string;
|
|
64
|
+
}];
|
|
65
|
+
export declare function eventsPublishStandardErrorEnvelopes(): ({
|
|
66
|
+
arm: string;
|
|
67
|
+
id: null;
|
|
68
|
+
error: {
|
|
69
|
+
code: -32700 | -32600 | -32601 | -32602 | -32603;
|
|
70
|
+
message: "Parse error" | "Invalid Request" | "Method not found" | "Invalid params" | "Internal error";
|
|
71
|
+
};
|
|
72
|
+
} | {
|
|
73
|
+
arm: string;
|
|
74
|
+
id: string;
|
|
75
|
+
error: {
|
|
76
|
+
code: -32700 | -32600 | -32601 | -32602 | -32603;
|
|
77
|
+
message: "Parse error" | "Invalid Request" | "Method not found" | "Invalid params" | "Internal error";
|
|
78
|
+
};
|
|
79
|
+
})[];
|
|
80
|
+
export declare function eventsPublishStandardErrorNPlusOneWitnesses(): {
|
|
81
|
+
id: string;
|
|
82
|
+
arm: string;
|
|
83
|
+
error: {
|
|
84
|
+
code: -32700 | -32600 | -32601 | -32602 | -32603;
|
|
85
|
+
message: "Parse error" | "Invalid Request" | "Method not found" | "Invalid params" | "Internal error";
|
|
86
|
+
};
|
|
87
|
+
}[];
|
|
88
|
+
export declare const EVENTS_PUBLISH_REQUEST_BYTE_PROOF: EventsPublishEncodedByteProof;
|
|
89
|
+
export declare const EVENTS_PUBLISH_RESULT_BYTE_PROOF: EventsPublishEncodedByteProof;
|
|
90
|
+
export declare const EVENTS_PUBLISH_ERROR_BYTE_PROOF: EventsPublishEncodedByteProof;
|
|
91
|
+
export declare const EVENTS_PUBLISH_ROW_ENCODED_BYTE_BOUNDS: {
|
|
92
|
+
readonly maxEncodedRequestBytes: number;
|
|
93
|
+
readonly maxEncodedResultBytes: number;
|
|
94
|
+
readonly maxEncodedErrorBytes: number;
|
|
95
|
+
};
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=signal-byte-bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-byte-bounds.d.ts","sourceRoot":"","sources":["../../src/wire/signal-byte-bounds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAY5C,eAAO,MAAM,2CAA2C,6CAI9C,CAAC;AAEX,MAAM,MAAM,oCAAoC,GAC9C,CAAC,OAAO,2CAA2C,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,sBAAsB,EAAG,GAAY,CAAC;AACnD,eAAO,MAAM,0BAA0B,EAAG,GAAY,CAAC;AACvD,eAAO,MAAM,iCAAiC,EAAG,GAAY,CAAC;AAC9D,eAAO,MAAM,6BAA6B,EAAG,EAAW,CAAC;AACzD,eAAO,MAAM,+BAA+B,EAAG,GAAY,CAAC;AAI5D,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,QAAQ,CAAC,IAAI,EACT,WAAW,GACX,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,cAAc,CAAC;IACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;KAC7B,EAAE,CAAC;CACL;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,iCAAiC,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAwED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oCAAoC,GAC3C,uBAAuB,CAOzB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,oCAAoC,GAC3C,SAAS,4BAA4B,EAAE,CAuDzC;AA6BD,wBAAgB,0BAA0B,IAAI;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC,CAKA;AAED,wBAAgB,oCAAoC;;;qBARjC,mBAAmB;;;;;;;wBADhB,MAAM;GAmB3B;AAED,wBAAgB,mCAAmC;;;;;;;;;;;;;;KAWlD;AAED,wBAAgB,2CAA2C;;;;;;;IAI1D;AAoBD,eAAO,MAAM,iCAAiC,+BAAiB,CAAC;AAGhE,eAAO,MAAM,gCAAgC,+BAM5C,CAAC;AAEF,eAAO,MAAM,+BAA+B,+BAO3C,CAAC;AAEF,eAAO,MAAM,sCAAsC;;;;CAIG,CAAC"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived compact-JSON byte bounds for the beta.9 C-2 events.publish row.
|
|
3
|
+
*
|
|
4
|
+
* Signal payloads are bounded by their compact encoded byte length, not by a
|
|
5
|
+
* string code-point count. That makes the generic leaf proof insufficient for
|
|
6
|
+
* row 13: this module constructs an exactly 64 KiB JSON object independently
|
|
7
|
+
* for ASCII, multibyte, and escaped-string families, then measures the entire
|
|
8
|
+
* request envelope and one rejected N+1 witness for every bounded leaf.
|
|
9
|
+
*/
|
|
10
|
+
import { SIGNAL_PAYLOAD_MAX_ENCODED_BYTES } from '../validation/signals.js';
|
|
11
|
+
import { MAX_FRAME_BYTES } from './constants.js';
|
|
12
|
+
import { ERROR_CODE_TO_MESSAGE, INVALID_REQUEST_CODE, PARSE_ERROR_CODE, STANDARD_ERROR_CODES, } from './errors.js';
|
|
13
|
+
import { REQUEST_ID_MAX_LENGTH } from './request-id.js';
|
|
14
|
+
import { WIRE_UINT53_MAX } from './wire-uint53.js';
|
|
15
|
+
export const EVENTS_PUBLISH_BYTE_PROOF_ENCODING_FAMILIES = [
|
|
16
|
+
'ascii',
|
|
17
|
+
'multibyte',
|
|
18
|
+
'escaping',
|
|
19
|
+
];
|
|
20
|
+
export const SIGNAL_TYPE_MAX_LENGTH = 128;
|
|
21
|
+
export const SIGNAL_EVENT_ID_MAX_LENGTH = 128;
|
|
22
|
+
export const SIGNAL_IDEMPOTENCY_KEY_MAX_LENGTH = 256;
|
|
23
|
+
export const SIGNAL_OCCURRED_AT_MAX_LENGTH = 30;
|
|
24
|
+
export const SIGNAL_SOURCE_HANDLE_MAX_LENGTH = 512;
|
|
25
|
+
const MAX_OCCURRED_AT = '2026-08-09T04:12:31.123456789Z';
|
|
26
|
+
function byteLength(value) {
|
|
27
|
+
return Buffer.byteLength(JSON.stringify(value), 'utf8');
|
|
28
|
+
}
|
|
29
|
+
function familyCharacter(family) {
|
|
30
|
+
switch (family) {
|
|
31
|
+
case 'ascii':
|
|
32
|
+
return 'a';
|
|
33
|
+
case 'multibyte':
|
|
34
|
+
return '😀';
|
|
35
|
+
case 'escaping':
|
|
36
|
+
// Quote is admissible in idempotency/source handles and requires JSON
|
|
37
|
+
// escaping. Control characters would be a larger escape but are forbidden
|
|
38
|
+
// by those leaf grammars, so using them would not prove a legal maximum.
|
|
39
|
+
return '"';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function exactPayload(family, extraBytes = 0) {
|
|
43
|
+
const targetBytes = SIGNAL_PAYLOAD_MAX_ENCODED_BYTES + extraBytes;
|
|
44
|
+
const dataCharacter = family === 'escaping' ? '\u0000' : familyCharacter(family);
|
|
45
|
+
const empty = { data: '', pad: '' };
|
|
46
|
+
const staticBytes = byteLength(empty);
|
|
47
|
+
const unitBytes = byteLength({ data: dataCharacter, pad: '' }) - staticBytes;
|
|
48
|
+
const repetitions = Math.floor((targetBytes - staticBytes) / unitBytes);
|
|
49
|
+
const data = dataCharacter.repeat(repetitions);
|
|
50
|
+
const usedBytes = byteLength({ data, pad: '' });
|
|
51
|
+
const payload = { data, pad: 'a'.repeat(targetBytes - usedBytes) };
|
|
52
|
+
if (byteLength(payload) !== targetBytes) {
|
|
53
|
+
throw new Error(`failed to construct exact ${targetBytes}-byte signal payload`);
|
|
54
|
+
}
|
|
55
|
+
return payload;
|
|
56
|
+
}
|
|
57
|
+
function signalType(length = SIGNAL_TYPE_MAX_LENGTH) {
|
|
58
|
+
return `a.${'a'.repeat(length - 2)}`;
|
|
59
|
+
}
|
|
60
|
+
function inputFor(family, overrides = {}, payloadExtraBytes = 0) {
|
|
61
|
+
const character = familyCharacter(family);
|
|
62
|
+
return {
|
|
63
|
+
signalType: signalType(),
|
|
64
|
+
eventId: 'a'.repeat(SIGNAL_EVENT_ID_MAX_LENGTH),
|
|
65
|
+
idempotencyKey: character.repeat(SIGNAL_IDEMPOTENCY_KEY_MAX_LENGTH),
|
|
66
|
+
occurredAt: MAX_OCCURRED_AT,
|
|
67
|
+
payload: exactPayload(family, payloadExtraBytes),
|
|
68
|
+
source: { handle: character.repeat(SIGNAL_SOURCE_HANDLE_MAX_LENGTH) },
|
|
69
|
+
...overrides,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function requestFrame(requestId, input) {
|
|
73
|
+
return {
|
|
74
|
+
jsonrpc: '2.0',
|
|
75
|
+
id: requestId,
|
|
76
|
+
method: 'events.publish',
|
|
77
|
+
params: {
|
|
78
|
+
meta: { deadlineUnixMs: WIRE_UINT53_MAX },
|
|
79
|
+
input,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function eventsPublishMaximumInput(family) {
|
|
84
|
+
const input = inputFor(family);
|
|
85
|
+
return {
|
|
86
|
+
requestId: 'a'.repeat(REQUEST_ID_MAX_LENGTH),
|
|
87
|
+
input,
|
|
88
|
+
payloadEncodedBytes: byteLength(input.payload),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function eventsPublishNPlusOneInputs(family) {
|
|
92
|
+
const maximum = eventsPublishMaximumInput(family);
|
|
93
|
+
const character = familyCharacter(family);
|
|
94
|
+
const occurredAtNPlusOne = `${MAX_OCCURRED_AT.slice(0, -1)}0Z`;
|
|
95
|
+
const candidates = [
|
|
96
|
+
{
|
|
97
|
+
leaf: 'requestId',
|
|
98
|
+
requestId: 'a'.repeat(REQUEST_ID_MAX_LENGTH + 1),
|
|
99
|
+
input: maximum.input,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
leaf: 'signalType',
|
|
103
|
+
input: inputFor(family, { signalType: signalType(SIGNAL_TYPE_MAX_LENGTH + 1) }),
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
leaf: 'eventId',
|
|
107
|
+
input: inputFor(family, { eventId: 'a'.repeat(SIGNAL_EVENT_ID_MAX_LENGTH + 1) }),
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
leaf: 'idempotencyKey',
|
|
111
|
+
input: inputFor(family, {
|
|
112
|
+
idempotencyKey: character.repeat(SIGNAL_IDEMPOTENCY_KEY_MAX_LENGTH + 1),
|
|
113
|
+
}),
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
leaf: 'occurredAt',
|
|
117
|
+
input: inputFor(family, { occurredAt: occurredAtNPlusOne }),
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
leaf: 'payloadBytes',
|
|
121
|
+
input: inputFor(family, {}, 1),
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
leaf: 'sourceHandle',
|
|
125
|
+
input: inputFor(family, {
|
|
126
|
+
source: { handle: character.repeat(SIGNAL_SOURCE_HANDLE_MAX_LENGTH + 1) },
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
return candidates.map(({ leaf, requestId = maximum.requestId, input }) => {
|
|
131
|
+
const encodedBytes = byteLength(requestFrame(requestId, input));
|
|
132
|
+
return {
|
|
133
|
+
leaf,
|
|
134
|
+
requestId,
|
|
135
|
+
input,
|
|
136
|
+
payloadEncodedBytes: byteLength(input.payload),
|
|
137
|
+
encodedBytes,
|
|
138
|
+
fitsFrame: encodedBytes <= MAX_FRAME_BYTES,
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function requestProof() {
|
|
143
|
+
const cases = EVENTS_PUBLISH_BYTE_PROOF_ENCODING_FAMILIES.map((family) => {
|
|
144
|
+
const maximum = eventsPublishMaximumInput(family);
|
|
145
|
+
const encodedBytes = byteLength(requestFrame(maximum.requestId, maximum.input));
|
|
146
|
+
return {
|
|
147
|
+
family,
|
|
148
|
+
encodedBytes,
|
|
149
|
+
fitsFrame: encodedBytes <= MAX_FRAME_BYTES,
|
|
150
|
+
nPlusOne: eventsPublishNPlusOneInputs(family).map(({ leaf, encodedBytes: witnessBytes, fitsFrame }) => ({
|
|
151
|
+
leaf,
|
|
152
|
+
encodedBytes: witnessBytes,
|
|
153
|
+
fitsFrame,
|
|
154
|
+
})),
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
return {
|
|
158
|
+
maxEncodedBytes: Math.max(...cases.map(({ encodedBytes }) => encodedBytes)),
|
|
159
|
+
cases,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function responseFrame(requestId, result) {
|
|
163
|
+
return { jsonrpc: '2.0', id: requestId, result };
|
|
164
|
+
}
|
|
165
|
+
export function eventsPublishMaximumResult() {
|
|
166
|
+
return {
|
|
167
|
+
requestId: 'a'.repeat(REQUEST_ID_MAX_LENGTH),
|
|
168
|
+
result: { publicationId: 'a'.repeat(SIGNAL_EVENT_ID_MAX_LENGTH), disposition: 'duplicate' },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function eventsPublishResultNPlusOneWitnesses() {
|
|
172
|
+
const maximum = eventsPublishMaximumResult();
|
|
173
|
+
return [
|
|
174
|
+
{ ...maximum, leaf: 'requestId', requestId: 'a'.repeat(REQUEST_ID_MAX_LENGTH + 1) },
|
|
175
|
+
{
|
|
176
|
+
...maximum,
|
|
177
|
+
leaf: 'publicationId',
|
|
178
|
+
result: { ...maximum.result, publicationId: 'a'.repeat(SIGNAL_EVENT_ID_MAX_LENGTH + 1) },
|
|
179
|
+
},
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
export function eventsPublishStandardErrorEnvelopes() {
|
|
183
|
+
const requestId = 'a'.repeat(REQUEST_ID_MAX_LENGTH);
|
|
184
|
+
return STANDARD_ERROR_CODES.flatMap((code) => {
|
|
185
|
+
const error = { code, message: ERROR_CODE_TO_MESSAGE[code] };
|
|
186
|
+
const arm = `standard:${code}`;
|
|
187
|
+
if (code === PARSE_ERROR_CODE)
|
|
188
|
+
return [{ arm, id: null, error }];
|
|
189
|
+
if (code === INVALID_REQUEST_CODE) {
|
|
190
|
+
return [{ arm: `${arm}:null`, id: null, error }, { arm, id: requestId, error }];
|
|
191
|
+
}
|
|
192
|
+
return [{ arm, id: requestId, error }];
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
export function eventsPublishStandardErrorNPlusOneWitnesses() {
|
|
196
|
+
return eventsPublishStandardErrorEnvelopes()
|
|
197
|
+
.filter((envelope) => envelope.id !== null)
|
|
198
|
+
.map((envelope) => ({ ...envelope, id: 'a'.repeat(REQUEST_ID_MAX_LENGTH + 1) }));
|
|
199
|
+
}
|
|
200
|
+
function repeatedProof(encodedBytes, nPlusOne) {
|
|
201
|
+
return {
|
|
202
|
+
maxEncodedBytes: encodedBytes,
|
|
203
|
+
cases: EVENTS_PUBLISH_BYTE_PROOF_ENCODING_FAMILIES.map((family) => ({
|
|
204
|
+
family,
|
|
205
|
+
encodedBytes,
|
|
206
|
+
fitsFrame: encodedBytes <= MAX_FRAME_BYTES,
|
|
207
|
+
nPlusOne: nPlusOne.map((witness) => ({
|
|
208
|
+
...witness,
|
|
209
|
+
fitsFrame: witness.encodedBytes <= MAX_FRAME_BYTES,
|
|
210
|
+
})),
|
|
211
|
+
})),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
export const EVENTS_PUBLISH_REQUEST_BYTE_PROOF = requestProof();
|
|
215
|
+
const maximumResult = eventsPublishMaximumResult();
|
|
216
|
+
export const EVENTS_PUBLISH_RESULT_BYTE_PROOF = repeatedProof(byteLength(responseFrame(maximumResult.requestId, maximumResult.result)), eventsPublishResultNPlusOneWitnesses().map(({ leaf, requestId, result }) => ({
|
|
217
|
+
leaf,
|
|
218
|
+
encodedBytes: byteLength(responseFrame(requestId, result)),
|
|
219
|
+
})));
|
|
220
|
+
export const EVENTS_PUBLISH_ERROR_BYTE_PROOF = repeatedProof(Math.max(...eventsPublishStandardErrorEnvelopes().map(({ id, error }) => byteLength({ jsonrpc: '2.0', id, error }))), eventsPublishStandardErrorNPlusOneWitnesses().map(({ arm, id, error }) => ({
|
|
221
|
+
leaf: `${arm}.requestId`,
|
|
222
|
+
encodedBytes: byteLength({ jsonrpc: '2.0', id, error }),
|
|
223
|
+
})));
|
|
224
|
+
export const EVENTS_PUBLISH_ROW_ENCODED_BYTE_BOUNDS = {
|
|
225
|
+
maxEncodedRequestBytes: EVENTS_PUBLISH_REQUEST_BYTE_PROOF.maxEncodedBytes,
|
|
226
|
+
maxEncodedResultBytes: EVENTS_PUBLISH_RESULT_BYTE_PROOF.maxEncodedBytes,
|
|
227
|
+
maxEncodedErrorBytes: EVENTS_PUBLISH_ERROR_BYTE_PROOF.maxEncodedBytes,
|
|
228
|
+
};
|
|
229
|
+
//# sourceMappingURL=signal-byte-bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-byte-bounds.js","sourceRoot":"","sources":["../../src/wire/signal-byte-bounds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,MAAM,2CAA2C,GAAG;IACzD,OAAO;IACP,WAAW;IACX,UAAU;CACF,CAAC;AAKX,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAY,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAY,CAAC;AACvD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAY,CAAC;AAC9D,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAW,CAAC;AACzD,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAY,CAAC;AAE5D,MAAM,eAAe,GAAG,gCAAgC,CAAC;AA2CzD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,MAA4C;IACnE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,WAAW;YACd,OAAO,IAAI,CAAC;QACd,KAAK,UAAU;YACb,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,MAA4C,EAC5C,UAAU,GAAG,CAAC;IAEd,MAAM,WAAW,GAAG,gCAAgC,GAAG,UAAU,CAAC;IAClE,MAAM,aAAa,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACnE,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,sBAAsB,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB,sBAAsB;IACzD,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,QAAQ,CACf,MAA4C,EAC5C,YAAyC,EAAE,EAC3C,iBAAiB,GAAG,CAAC;IAErB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO;QACL,UAAU,EAAE,UAAU,EAAE;QACxB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC;QAC/C,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,iCAAiC,CAAC;QACnE,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAChD,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC,EAAE;QACrE,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,KAAyB;IAChE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YACzC,KAAK;SACN;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA4C;IAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC5C,KAAK;QACL,mBAAmB,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAA4C;IAE5C,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,kBAAkB,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,UAAU,GAIX;QACH;YACE,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAChD,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE,CAAC;SAChF;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,0BAA0B,GAAG,CAAC,CAAC,EAAE,CAAC;SACjF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACtB,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,iCAAiC,GAAG,CAAC,CAAC;aACxE,CAAC;SACH;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;SAC5D;QACD;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;SAC/B;QACD;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACtB,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,+BAA+B,GAAG,CAAC,CAAC,EAAE;aAC1E,CAAC;SACH;KACF,CAAC;IAEF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QACvE,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO;YACL,IAAI;YACJ,SAAS;YACT,KAAK;YACL,mBAAmB,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9C,YAAY;YACZ,SAAS,EAAE,YAAY,IAAI,eAAe;SAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,2CAA2C,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO;YACL,MAAM;YACN,YAAY;YACZ,SAAS,EAAE,YAAY,IAAI,eAAe;YAC1C,QAAQ,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,GAAG,CAC/C,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI;gBACJ,YAAY,EAAE,YAAY;gBAC1B,SAAS;aACV,CAAC,CACH;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;QACL,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3E,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,MAA2B;IACnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,0BAA0B;IAIxC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC5C,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE;KAC5F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,OAAO;QACL,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE;QACnF;YACE,GAAG,OAAO;YACV,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,0BAA0B,GAAG,CAAC,CAAC,EAAE;SACzF;KACO,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,YAAY,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,gBAAgB;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2CAA2C;IACzD,OAAO,mCAAmC,EAAE;SACzC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;SAC1C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,aAAa,CACpB,YAAoB,EACpB,QAA6E;IAE7E,OAAO;QACL,eAAe,EAAE,YAAY;QAC7B,KAAK,EAAE,2CAA2C,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM;YACN,YAAY;YACZ,SAAS,EAAE,YAAY,IAAI,eAAe;YAC1C,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACnC,GAAG,OAAO;gBACV,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,eAAe;aACnD,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAY,EAAE,CAAC;AAEhE,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAC3D,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,EACxE,oCAAoC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI;IACJ,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CAC3D,CAAC,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,aAAa,CAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,mCAAmC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACtE,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAC7C,2CAA2C,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,EAAE,GAAG,GAAG,YAAY;IACxB,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;CACxD,CAAC,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG;IACpD,sBAAsB,EAAE,iCAAiC,CAAC,eAAe;IACzE,qBAAqB,EAAE,gCAAgC,CAAC,eAAe;IACvE,oBAAoB,EAAE,+BAA+B,CAAC,eAAe;CACjB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pluginId": "example.duplicate-signal",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"contractVersion": "0.1.0",
|
|
5
|
+
"name": "Duplicate Signal Type",
|
|
6
|
+
"features": [
|
|
7
|
+
{
|
|
8
|
+
"id": "meeting-intake",
|
|
9
|
+
"name": "Meeting intake",
|
|
10
|
+
"resources": [],
|
|
11
|
+
"capabilities": ["events.publish"]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"signals": {
|
|
15
|
+
"provides": [
|
|
16
|
+
{
|
|
17
|
+
"type": "feishu.meeting_artifact.generated.v1",
|
|
18
|
+
"schemaRef": "schemas/meeting-a.schema.json",
|
|
19
|
+
"epistemicStatus": "observation",
|
|
20
|
+
"privacyClass": "content-adjacent",
|
|
21
|
+
"sourceClass": "remote-service"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "feishu.meeting_artifact.generated.v1",
|
|
25
|
+
"schemaRef": "schemas/meeting-b.schema.json",
|
|
26
|
+
"epistemicStatus": "inference",
|
|
27
|
+
"privacyClass": "content",
|
|
28
|
+
"sourceClass": "remote-service"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"runtime": { "transport": "builtin" }
|
|
33
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schemaRef": "EventsPublishInput"
|
|
4
|
+
},
|
|
5
|
+
"signalType": "feishu.meeting_artifact.generated.v1",
|
|
6
|
+
"eventId": "feishu-minute-om_abc123-v7",
|
|
7
|
+
"idempotencyKey": "feishu:minute:om_abc123:7",
|
|
8
|
+
"occurredAt": "2026-08-09T04:12:31Z",
|
|
9
|
+
"payload": {
|
|
10
|
+
"artifactId": "om_abc123"
|
|
11
|
+
},
|
|
12
|
+
"destination": {
|
|
13
|
+
"threadId": "thread_user_selected"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schemaRef": "SignalDeclaration"
|
|
4
|
+
},
|
|
5
|
+
"type": "feishu.meeting_artifact.generated.v1",
|
|
6
|
+
"schemaRef": "https://attacker.example/schemas/meeting.json",
|
|
7
|
+
"epistemicStatus": "observation",
|
|
8
|
+
"privacyClass": "content-adjacent",
|
|
9
|
+
"sourceClass": "remote-service"
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schemaRef": "EventsPublishInput"
|
|
4
|
+
},
|
|
5
|
+
"signalType": "feishu.meeting_artifact.generated.v1",
|
|
6
|
+
"eventId": "feishu-minute-om_abc123-v7",
|
|
7
|
+
"idempotencyKey": "feishu:minute:om_abc123:7",
|
|
8
|
+
"occurredAt": "2026-08-09T12:12:31+08:00",
|
|
9
|
+
"payload": {
|
|
10
|
+
"artifactId": "om_abc123"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schemaRef": "EventsPublishInput"
|
|
4
|
+
},
|
|
5
|
+
"signalType": "feishu.meeting_artifact.generated.v1",
|
|
6
|
+
"eventId": "feishu-minute-om_abc123-v7",
|
|
7
|
+
"idempotencyKey": "feishu:minute:om_abc123:7",
|
|
8
|
+
"occurredAt": "2026-08-09T04:12:31Z",
|
|
9
|
+
"payload": {
|
|
10
|
+
"artifactId": "om_abc123",
|
|
11
|
+
"artifactKind": "minute",
|
|
12
|
+
"revision": "7",
|
|
13
|
+
"title": "F292 design review"
|
|
14
|
+
},
|
|
15
|
+
"source": {
|
|
16
|
+
"handle": "feishu://meeting-artifacts/minute/om_abc123?revision=7"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schemaRef": "SignalDeclaration"
|
|
4
|
+
},
|
|
5
|
+
"type": "feishu.meeting_artifact.generated.v1",
|
|
6
|
+
"schemaRef": "schemas/feishu-meeting-artifact.schema.json",
|
|
7
|
+
"epistemicStatus": "observation",
|
|
8
|
+
"privacyClass": "content-adjacent",
|
|
9
|
+
"sourceClass": "remote-service"
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clowder-ai/plugin-contract",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Clowder AI plugin contract — the single machine-readable truth source for plugin schema, types, capability table, and conformance fixtures (P15)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
},
|
|
17
17
|
"./schemas/messaging": "./src/schemas/messaging.schema.json",
|
|
18
18
|
"./schemas/manifest": "./src/schemas/manifest.schema.json",
|
|
19
|
+
"./schemas/signals": "./src/schemas/signal.schema.json",
|
|
19
20
|
"./schemas/physical-limb": "./src/schemas/physical-limb.schema.json",
|
|
20
21
|
"./schemas/behavior-fixture": "./src/schemas/behavior-fixture.schema.json"
|
|
21
22
|
},
|