@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
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
|
*
|
|
@@ -20,11 +20,13 @@
|
|
|
20
20
|
* stored-data attestation/migration half outstanding.
|
|
21
21
|
* Affects rows 6, 8, 9. M7 remains RESERVED.
|
|
22
22
|
*/
|
|
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';
|
|
23
25
|
// ---------------------------------------------------------------------------
|
|
24
26
|
// Method name enum
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
26
28
|
/**
|
|
27
|
-
* The exact
|
|
29
|
+
* The exact 13 production method names, in registry order.
|
|
28
30
|
* No production method exists for fixture setup/observe, grant presets,
|
|
29
31
|
* revocation, permission-matrix inspection, or replay deletion.
|
|
30
32
|
*/
|
|
@@ -41,18 +43,19 @@ export const WIRE_METHOD_NAMES = [
|
|
|
41
43
|
'host.grants.changed',
|
|
42
44
|
'host.lifecycle.ping',
|
|
43
45
|
'host.lifecycle.drain',
|
|
46
|
+
'events.publish',
|
|
44
47
|
];
|
|
45
48
|
// ---------------------------------------------------------------------------
|
|
46
49
|
// The complete registry (frozen)
|
|
47
50
|
// ---------------------------------------------------------------------------
|
|
48
51
|
/**
|
|
49
|
-
* Machine-readable registry of all
|
|
52
|
+
* Machine-readable registry of all 13 production methods.
|
|
50
53
|
*
|
|
51
54
|
* Every value traces to the #1165 frozen shape. Row metadata includes
|
|
52
55
|
* the exact matrix entry IDs that block leaf closure. Settlement key
|
|
53
56
|
* sources follow the canonical per-row specification.
|
|
54
57
|
*
|
|
55
|
-
*
|
|
58
|
+
* Rows 1–2 are ready after beta.8; row 13 is ready after beta.9.
|
|
56
59
|
*/
|
|
57
60
|
export const WIRE_METHOD_REGISTRY = {
|
|
58
61
|
'broker.hello': {
|
|
@@ -61,24 +64,23 @@ export const WIRE_METHOD_REGISTRY = {
|
|
|
61
64
|
direction: 'plugin-to-host',
|
|
62
65
|
grant: 'protocol-intrinsic',
|
|
63
66
|
isNotification: false,
|
|
64
|
-
ready:
|
|
65
|
-
leafClosure: '
|
|
66
|
-
reservedEntries: [
|
|
67
|
+
ready: true,
|
|
68
|
+
leafClosure: 'CLOSED',
|
|
69
|
+
reservedEntries: [],
|
|
67
70
|
settlementKeySource: '—',
|
|
71
|
+
...HANDSHAKE_ROW_ENCODED_BYTE_BOUNDS['broker.hello'],
|
|
68
72
|
},
|
|
69
|
-
// Row 2 own entries (H9 via W0/W1/W2/W3) are all CLOSED.
|
|
70
|
-
// RESERVED because activation cannot be advertised without a closed
|
|
71
|
-
// row-1 SessionBinding — H1/H3/H4/H5/H6 block through protocol dependency.
|
|
72
73
|
'broker.ready': {
|
|
73
74
|
rowNumber: 2,
|
|
74
75
|
method: 'broker.ready',
|
|
75
76
|
direction: 'plugin-to-host',
|
|
76
77
|
grant: 'protocol-intrinsic',
|
|
77
78
|
isNotification: false,
|
|
78
|
-
ready:
|
|
79
|
-
leafClosure: '
|
|
80
|
-
reservedEntries: [
|
|
79
|
+
ready: true,
|
|
80
|
+
leafClosure: 'CLOSED',
|
|
81
|
+
reservedEntries: [],
|
|
81
82
|
settlementKeySource: '—',
|
|
83
|
+
...HANDSHAKE_ROW_ENCODED_BYTE_BOUNDS['broker.ready'],
|
|
82
84
|
},
|
|
83
85
|
'messaging.send': {
|
|
84
86
|
rowNumber: 3,
|
|
@@ -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,8 +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');
|
|
226
|
+
/** Method names that are legal for wire advertisement in beta.9. */
|
|
227
|
+
export const READY_ROWS = WIRE_METHOD_NAMES.filter(m => WIRE_METHOD_REGISTRY[m].ready);
|
|
212
228
|
/** Total number of production methods. */
|
|
213
|
-
export const WIRE_METHOD_COUNT =
|
|
229
|
+
export const WIRE_METHOD_COUNT = 13;
|
|
214
230
|
// ---------------------------------------------------------------------------
|
|
215
231
|
// Lookup helpers
|
|
216
232
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/wire/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-row input/result shapes for the
|
|
2
|
+
* Per-row input/result shapes for the 13-row method registry.
|
|
3
3
|
* Mechanized from #1165 frozen shape.
|
|
4
4
|
*
|
|
5
|
-
* CLOSED rows (5, 7, 10, 11, 12): full executable shapes with bounds.
|
|
6
|
-
* RESERVED rows (
|
|
5
|
+
* CLOSED rows (1, 2, 5, 7, 10, 11, 12): full executable shapes with bounds.
|
|
6
|
+
* RESERVED rows (3, 4, 6, 8, 9): type stubs only — no executable
|
|
7
7
|
* contract may be exported until the row's matrix entries close.
|
|
8
8
|
*
|
|
9
9
|
* Each closed row's shape is additionalProperties: false.
|
|
10
10
|
* Bounds constants are provided for runtime validation.
|
|
11
11
|
*/
|
|
12
12
|
import type { GrantSnapshot } from './grants.js';
|
|
13
|
+
import type { BrokerReadyParams, CandidateHello, SessionBinding } from './handshake.js';
|
|
13
14
|
/**
|
|
14
15
|
* Row 5 input: subscribe to a handle for event delivery.
|
|
15
16
|
* Wire shape: `{ handle: string }` — additionalProperties: false.
|
|
@@ -150,23 +151,22 @@ export interface DrainInput {
|
|
|
150
151
|
*/
|
|
151
152
|
export type DrainResult = null;
|
|
152
153
|
/**
|
|
153
|
-
* Row 1 — broker.hello:
|
|
154
|
+
* Row 1 — broker.hello: CLOSED in beta.8.
|
|
154
155
|
*
|
|
155
156
|
* Plugin → Host handshake. CandidateHello → SessionBinding.
|
|
156
157
|
* See handshake.ts for structural types.
|
|
157
|
-
*
|
|
158
|
+
* Candidate grammar and the Host-authoritative binding are closed by beta.8.
|
|
158
159
|
*/
|
|
159
|
-
export type HelloInput =
|
|
160
|
-
export type HelloResult =
|
|
160
|
+
export type HelloInput = CandidateHello;
|
|
161
|
+
export type HelloResult = SessionBinding;
|
|
161
162
|
/**
|
|
162
|
-
* Row 2 — broker.ready:
|
|
163
|
+
* Row 2 — broker.ready: CLOSED in beta.8.
|
|
163
164
|
*
|
|
164
165
|
* Plugin → Host activation. The structural type (BrokerReadyParams)
|
|
165
|
-
*
|
|
166
|
-
* reserved until the row's matrix entries close.
|
|
166
|
+
* is the executable input shape; success is a null JSON-RPC result.
|
|
167
167
|
*/
|
|
168
|
-
export type ReadyInput =
|
|
169
|
-
export type ReadyResult =
|
|
168
|
+
export type ReadyInput = BrokerReadyParams;
|
|
169
|
+
export type ReadyResult = null;
|
|
170
170
|
/**
|
|
171
171
|
* Row 3 — messaging.send: RESERVED (M1/M2/M5/I1).
|
|
172
172
|
*
|
|
@@ -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;
|
|
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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-row input/result shapes for the
|
|
2
|
+
* Per-row input/result shapes for the 13-row method registry.
|
|
3
3
|
* Mechanized from #1165 frozen shape.
|
|
4
4
|
*
|
|
5
|
-
* CLOSED rows (5, 7, 10, 11, 12): full executable shapes with bounds.
|
|
6
|
-
* RESERVED rows (
|
|
5
|
+
* CLOSED rows (1, 2, 5, 7, 10, 11, 12): full executable shapes with bounds.
|
|
6
|
+
* RESERVED rows (3, 4, 6, 8, 9): type stubs only — no executable
|
|
7
7
|
* contract may be exported until the row's matrix entries close.
|
|
8
8
|
*
|
|
9
9
|
* Each closed row's shape is additionalProperties: false.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-shapes.js","sourceRoot":"","sources":["../../src/wire/row-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"row-shapes.js","sourceRoot":"","sources":["../../src/wire/row-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmCH,sDAAsD;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AAEtD,sDAAsD;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAY,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAa,CAAC;AAEhE,oDAAoD;AACpD,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;AAE/D,oDAAoD;AACpD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAY,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,GAAY,CAAC;AAyBxE,wDAAwD;AACxD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAU,CAAC;AAEzD,wDAAwD;AACxD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAY,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAY,CAAC;AAElE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AAE/C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAY,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAiDzD,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC;AAEhD,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAY,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAa,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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
|
+
}
|