@clowder-ai/plugin-contract 0.1.0-beta.9 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codegen/generate-contract.d.ts +6 -0
- package/dist/codegen/generate-contract.d.ts.map +1 -1
- package/dist/codegen/generate-contract.js +343 -19
- package/dist/codegen/generate-contract.js.map +1 -1
- package/dist/conformance/fixtures.d.ts +3 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +2 -1
- package/dist/conformance/fixtures.js.map +1 -1
- package/dist/conformance/index.d.ts +2 -1
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +2 -1
- package/dist/conformance/index.js.map +1 -1
- package/dist/conformance/messaging-behavior-fixture.d.ts +12 -0
- package/dist/conformance/messaging-behavior-fixture.d.ts.map +1 -0
- package/dist/conformance/messaging-behavior-fixture.js +30 -0
- package/dist/conformance/messaging-behavior-fixture.js.map +1 -0
- package/dist/conformance/runner.d.ts.map +1 -1
- package/dist/conformance/runner.js +3 -1
- package/dist/conformance/runner.js.map +1 -1
- package/dist/docx-materialization.d.ts +8 -0
- package/dist/docx-materialization.d.ts.map +1 -0
- package/dist/docx-materialization.js +19 -0
- package/dist/docx-materialization.js.map +1 -0
- package/dist/generated/contract.generated.d.ts +1647 -52
- package/dist/generated/contract.generated.d.ts.map +1 -1
- package/dist/generated/contract.generated.js +72 -3
- package/dist/generated/contract.generated.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/validation/catalog.d.ts +21 -0
- package/dist/validation/catalog.d.ts.map +1 -0
- package/dist/validation/catalog.js +140 -0
- package/dist/validation/catalog.js.map +1 -0
- package/dist/validation/cloud-conversation-host.d.ts +18 -0
- package/dist/validation/cloud-conversation-host.d.ts.map +1 -0
- package/dist/validation/cloud-conversation-host.js +83 -0
- package/dist/validation/cloud-conversation-host.js.map +1 -0
- package/dist/validation/companion-bridge.d.ts +6 -0
- package/dist/validation/companion-bridge.d.ts.map +1 -0
- package/dist/validation/companion-bridge.js +198 -0
- package/dist/validation/companion-bridge.js.map +1 -0
- package/dist/validation/docx-materialization.d.ts +6 -0
- package/dist/validation/docx-materialization.d.ts.map +1 -0
- package/dist/validation/docx-materialization.js +36 -0
- package/dist/validation/docx-materialization.js.map +1 -0
- package/dist/validation/index.d.ts +9 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +9 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/manifest.d.ts.map +1 -1
- package/dist/validation/manifest.js +303 -0
- package/dist/validation/manifest.js.map +1 -1
- package/dist/validation/members.d.ts +4 -0
- package/dist/validation/members.d.ts.map +1 -0
- package/dist/validation/members.js +11 -0
- package/dist/validation/members.js.map +1 -0
- package/dist/validation/messaging-semantic.d.ts.map +1 -1
- package/dist/validation/messaging-semantic.js +98 -0
- package/dist/validation/messaging-semantic.js.map +1 -1
- package/dist/validation/messaging-wire.d.ts +42 -0
- package/dist/validation/messaging-wire.d.ts.map +1 -0
- package/dist/validation/messaging-wire.js +184 -0
- package/dist/validation/messaging-wire.js.map +1 -0
- package/dist/validation/operation-rows.d.ts +25 -0
- package/dist/validation/operation-rows.d.ts.map +1 -0
- package/dist/validation/operation-rows.js +135 -0
- package/dist/validation/operation-rows.js.map +1 -0
- package/dist/validation/signals.d.ts +1 -10
- package/dist/validation/signals.d.ts.map +1 -1
- package/dist/validation/signals.js +0 -174
- package/dist/validation/signals.js.map +1 -1
- package/dist/variant.d.ts +114 -0
- package/dist/variant.d.ts.map +1 -0
- package/dist/variant.js +305 -0
- package/dist/variant.js.map +1 -0
- package/dist/wire/constants.d.ts +2 -1
- package/dist/wire/constants.d.ts.map +1 -1
- package/dist/wire/constants.js +2 -1
- package/dist/wire/constants.js.map +1 -1
- package/dist/wire/dispatch.d.ts +49 -0
- package/dist/wire/dispatch.d.ts.map +1 -0
- package/dist/wire/dispatch.js +880 -0
- package/dist/wire/dispatch.js.map +1 -0
- package/dist/wire/disposition-fixtures.d.ts +9 -1
- package/dist/wire/disposition-fixtures.d.ts.map +1 -1
- package/dist/wire/disposition-fixtures.js +622 -95
- package/dist/wire/disposition-fixtures.js.map +1 -1
- package/dist/wire/envelope.d.ts +31 -0
- package/dist/wire/envelope.d.ts.map +1 -1
- package/dist/wire/envelope.js +48 -1
- package/dist/wire/envelope.js.map +1 -1
- package/dist/wire/errors.d.ts +31 -1
- package/dist/wire/errors.d.ts.map +1 -1
- package/dist/wire/errors.js +36 -0
- package/dist/wire/errors.js.map +1 -1
- package/dist/wire/grants.d.ts +4 -4
- package/dist/wire/grants.js +3 -3
- package/dist/wire/handshake-byte-bounds.d.ts.map +1 -1
- package/dist/wire/handshake-byte-bounds.js +5 -2
- package/dist/wire/handshake-byte-bounds.js.map +1 -1
- package/dist/wire/handshake.d.ts +6 -0
- package/dist/wire/handshake.d.ts.map +1 -1
- package/dist/wire/handshake.js +6 -3
- package/dist/wire/handshake.js.map +1 -1
- package/dist/wire/index.d.ts +13 -9
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +29 -6
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/lifecycle-byte-bounds.d.ts +40 -0
- package/dist/wire/lifecycle-byte-bounds.d.ts.map +1 -0
- package/dist/wire/lifecycle-byte-bounds.js +149 -0
- package/dist/wire/lifecycle-byte-bounds.js.map +1 -0
- package/dist/wire/messaging-byte-bounds.d.ts +62 -0
- package/dist/wire/messaging-byte-bounds.d.ts.map +1 -0
- package/dist/wire/messaging-byte-bounds.js +581 -0
- package/dist/wire/messaging-byte-bounds.js.map +1 -0
- package/dist/wire/registry.d.ts +58 -86
- package/dist/wire/registry.d.ts.map +1 -1
- package/dist/wire/registry.js +45 -88
- package/dist/wire/registry.js.map +1 -1
- package/dist/wire/row-shapes.d.ts +86 -69
- package/dist/wire/row-shapes.d.ts.map +1 -1
- package/dist/wire/row-shapes.js +30 -3
- package/dist/wire/row-shapes.js.map +1 -1
- package/fixtures/behavior/messaging/adversarial-invariants.json +92 -2
- package/fixtures/manifest/invalid/duplicate-signal-type.json +4 -2
- package/fixtures/manifest/invalid/icon-package-escape.json +22 -0
- package/fixtures/manifest/valid/localized-product-metadata.json +27 -0
- package/fixtures/messaging/valid/subscription-delivery.json +1 -1
- package/package.json +16 -3
- package/src/schemas/behavior-fixture.schema.json +903 -116
- package/src/schemas/catalog.schema.json +91 -0
- package/src/schemas/companion-bridge.schema.json +2256 -0
- package/src/schemas/docx-materialization.schema.json +302 -0
- package/src/schemas/manifest.schema.json +2273 -88
- package/src/schemas/messaging.schema.json +692 -41
- package/src/schemas/plugin-metadata.schema.json +62 -0
- package/src/schemas/signal.schema.json +68 -78
- package/dist/wire/signal-byte-bounds.d.ts +0 -97
- package/dist/wire/signal-byte-bounds.d.ts.map +0 -1
- package/dist/wire/signal-byte-bounds.js +0 -229
- package/dist/wire/signal-byte-bounds.js.map +0 -1
- package/fixtures/signals/invalid/destination-injection.json +0 -15
- package/fixtures/signals/invalid/non-utc-occurred-at.json +0 -12
- package/fixtures/signals/valid/feishu-meeting-artifact.json +0 -18
|
@@ -0,0 +1,83 @@
|
|
|
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 manifestSchema = require('@clowder-ai/plugin-contract/schemas/manifest');
|
|
6
|
+
const messagingSchema = require('@clowder-ai/plugin-contract/schemas/messaging');
|
|
7
|
+
const pluginMetadataSchema = require('@clowder-ai/plugin-contract/schemas/plugin-metadata');
|
|
8
|
+
const signalSchema = require('@clowder-ai/plugin-contract/schemas/signals');
|
|
9
|
+
const ajv = new Ajv2020({ allErrors: true, strict: false });
|
|
10
|
+
addFormats(ajv);
|
|
11
|
+
const schemaId = manifestSchema['$id'];
|
|
12
|
+
ajv.addSchema(pluginMetadataSchema, pluginMetadataSchema['$id']);
|
|
13
|
+
ajv.addSchema(signalSchema, signalSchema['$id']);
|
|
14
|
+
ajv.addSchema(messagingSchema, messagingSchema['$id']);
|
|
15
|
+
ajv.addSchema(manifestSchema, schemaId);
|
|
16
|
+
function definitionValidator(name) {
|
|
17
|
+
return ajv.compile({ $ref: `${schemaId}#/$defs/${name}` });
|
|
18
|
+
}
|
|
19
|
+
const validateAppendMessageInput = definitionValidator('CloudConversationAppendMessageInput');
|
|
20
|
+
const validateAppendMessageResult = definitionValidator('CloudConversationAppendMessageResult');
|
|
21
|
+
const validateListInput = definitionValidator('CloudConversationListInput');
|
|
22
|
+
const validateListResult = definitionValidator('CloudConversationListResult');
|
|
23
|
+
const validateAckInput = definitionValidator('CloudConversationAckInput');
|
|
24
|
+
const validateAckResult = definitionValidator('CloudConversationAckResult');
|
|
25
|
+
const validateFailureDiagnostic = definitionValidator('CloudBridgeFailureDiagnosticV1');
|
|
26
|
+
export function isCloudConversationAppendMessageInput(value) {
|
|
27
|
+
return (validateAppendMessageInput(value) &&
|
|
28
|
+
isCloudConversationTextBudget(value.text));
|
|
29
|
+
}
|
|
30
|
+
export function isCloudConversationAppendMessageResult(value) {
|
|
31
|
+
if (!validateAppendMessageResult(value))
|
|
32
|
+
return false;
|
|
33
|
+
const result = value;
|
|
34
|
+
return (result.status !== 'failed' ||
|
|
35
|
+
result.diagnostic === undefined ||
|
|
36
|
+
isCloudBridgeFailureDiagnosticV1(result.diagnostic));
|
|
37
|
+
}
|
|
38
|
+
export function isCloudConversationListInput(value) {
|
|
39
|
+
return validateListInput(value);
|
|
40
|
+
}
|
|
41
|
+
export function isCloudConversationListResult(value) {
|
|
42
|
+
return (validateListResult(value) &&
|
|
43
|
+
value.returns.every((result) => isCloudConversationTextBudget(result.content)));
|
|
44
|
+
}
|
|
45
|
+
export function isCloudConversationAckInput(value) {
|
|
46
|
+
return validateAckInput(value);
|
|
47
|
+
}
|
|
48
|
+
export function isCloudConversationAckResult(value) {
|
|
49
|
+
if (!validateAckResult(value))
|
|
50
|
+
return false;
|
|
51
|
+
const result = value;
|
|
52
|
+
return (result.status !== 'failed' ||
|
|
53
|
+
result.diagnostic === undefined ||
|
|
54
|
+
isCloudBridgeFailureDiagnosticV1(result.diagnostic));
|
|
55
|
+
}
|
|
56
|
+
export const CLOUD_CONVERSATION_MAX_TEXT_BYTES = 128 * 1024;
|
|
57
|
+
const textEncoder = new TextEncoder();
|
|
58
|
+
/**
|
|
59
|
+
* Text / content budget check that mirrors the native host protocol: the JSON
|
|
60
|
+
* schema bounds character count (maxLength 131072), while this function bounds
|
|
61
|
+
* the UTF-8 byte size (<= 128 KiB) and requires non-empty content after trim.
|
|
62
|
+
* Both the Host and the package run this check.
|
|
63
|
+
*/
|
|
64
|
+
export function isCloudConversationTextBudget(value) {
|
|
65
|
+
if (typeof value !== 'string')
|
|
66
|
+
return false;
|
|
67
|
+
if (value.trim().length === 0)
|
|
68
|
+
return false;
|
|
69
|
+
return textEncoder.encode(value).length <= CLOUD_CONVERSATION_MAX_TEXT_BYTES;
|
|
70
|
+
}
|
|
71
|
+
const MAX_DOM_CHILD_INDEX = 0xffff_ffff;
|
|
72
|
+
export function isCloudBridgeFailureDiagnosticV1(value) {
|
|
73
|
+
if (!validateFailureDiagnostic(value))
|
|
74
|
+
return false;
|
|
75
|
+
const diagnostic = value;
|
|
76
|
+
const paths = [
|
|
77
|
+
diagnostic.fingerprint.firstUnsupportedPath,
|
|
78
|
+
...diagnostic.fingerprint.nodes.map((node) => node.path),
|
|
79
|
+
];
|
|
80
|
+
return paths.every((path) => path === undefined ||
|
|
81
|
+
[...path.matchAll(/\[(\d+)\]/g)].every((match) => Number(match[1]) <= MAX_DOM_CHILD_INDEX));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=cloud-conversation-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-conversation-host.js","sourceRoot":"","sources":["../../src/validation/cloud-conversation-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CompanionCommand, CompanionEvent, CompanionReply } from '../generated/contract.generated.js';
|
|
2
|
+
/** Structural validation never substitutes for a current Host lease or a user gesture. */
|
|
3
|
+
export declare function validateCompanionCommand(value: unknown): value is CompanionCommand;
|
|
4
|
+
export declare function validateCompanionReply(value: unknown): value is CompanionReply;
|
|
5
|
+
export declare function validateCompanionEvent(value: unknown): value is CompanionEvent;
|
|
6
|
+
//# sourceMappingURL=companion-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-bridge.d.ts","sourceRoot":"","sources":["../../src/validation/companion-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAmB3G,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAOlF;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAyH9E;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAA2C"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
const schema = require('@clowder-ai/plugin-contract/schemas/companion-bridge');
|
|
4
|
+
const Ajv = require('ajv/dist/2020');
|
|
5
|
+
const formats = require('ajv-formats');
|
|
6
|
+
const ajv = new Ajv({ strict: false, allErrors: false, ownProperties: true });
|
|
7
|
+
formats(ajv);
|
|
8
|
+
ajv.addSchema(schema);
|
|
9
|
+
const command = ajv.compile({ $ref: `${schema.$id}#/$defs/CompanionCommand` });
|
|
10
|
+
const reply = ajv.compile({ $ref: `${schema.$id}#/$defs/CompanionReply` });
|
|
11
|
+
const event = ajv.compile({ $ref: `${schema.$id}#/$defs/CompanionEvent` });
|
|
12
|
+
function bounded(value) {
|
|
13
|
+
try {
|
|
14
|
+
const json = JSON.stringify(value);
|
|
15
|
+
return typeof json === 'string' && Buffer.byteLength(json) <= 1_500_000;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Structural validation never substitutes for a current Host lease or a user gesture. */
|
|
22
|
+
export function validateCompanionCommand(value) {
|
|
23
|
+
if (!bounded(value) || !command(value))
|
|
24
|
+
return false;
|
|
25
|
+
const parsed = value;
|
|
26
|
+
if (parsed.kind === 'view.layout' && parsed.call !== undefined && parsed.panel !== 'actions')
|
|
27
|
+
return false;
|
|
28
|
+
if (parsed.kind === 'text')
|
|
29
|
+
return parsed.text.trim().length > 0;
|
|
30
|
+
if (parsed.kind === 'screen.frame')
|
|
31
|
+
return /^data:image\/(jpeg|png|webp);base64,[A-Za-z0-9+/]+={0,2}$/.test(parsed.frame.image);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
export function validateCompanionReply(value) {
|
|
35
|
+
if (!bounded(value) || !reply(value))
|
|
36
|
+
return false;
|
|
37
|
+
const parsed = value;
|
|
38
|
+
if (parsed.kind === 'conversation') {
|
|
39
|
+
if ('status' in parsed) {
|
|
40
|
+
if (parsed.status === 'stale')
|
|
41
|
+
return true;
|
|
42
|
+
if (new Set(parsed.messages.map((message) => message.id)).size !== parsed.messages.length)
|
|
43
|
+
return false;
|
|
44
|
+
if (parsed.messages.reduce((total, message) => total + message.text.length, 0) > 24000)
|
|
45
|
+
return false;
|
|
46
|
+
return parsed.messages.every((message) => {
|
|
47
|
+
const identity = message.companionIdentity;
|
|
48
|
+
if (identity !== undefined && identity.partner.catId !== identity.deep.catId)
|
|
49
|
+
return false;
|
|
50
|
+
if (message.role === 'user') {
|
|
51
|
+
return message.inputMessageIds.length === 0 && message.responsePhase === null
|
|
52
|
+
&& (message.deliveryReceipt === undefined || message.deliveryReceipt.messageId === message.id);
|
|
53
|
+
}
|
|
54
|
+
return message.deliveryReceipt === undefined
|
|
55
|
+
&& (message.inputMessageIds.length === 0) === (message.responsePhase === null);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (new Set(parsed.messages.map((message) => message.id)).size !== parsed.messages.length)
|
|
59
|
+
return false;
|
|
60
|
+
return parsed.messages.every((message) => {
|
|
61
|
+
const identity = message.companionIdentity;
|
|
62
|
+
return identity === undefined || identity.partner.catId === identity.deep.catId;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (parsed.kind === 'conversation-draft') {
|
|
66
|
+
if (parsed.status !== 'available')
|
|
67
|
+
return true;
|
|
68
|
+
if (parsed.text.length > 8000 && parsed.writable)
|
|
69
|
+
return false;
|
|
70
|
+
const ids = parsed.submissions.map((submission) => submission.clientMessageId);
|
|
71
|
+
if (new Set(ids).size !== ids.length)
|
|
72
|
+
return false;
|
|
73
|
+
if (parsed.submissions.filter((submission) => submission.receipt.delivery === 'accepted').length > 1)
|
|
74
|
+
return false;
|
|
75
|
+
return parsed.submissions.every((submission) => submission.receipt.clientMessageId === submission.clientMessageId);
|
|
76
|
+
}
|
|
77
|
+
if (parsed.kind === 'transcript') {
|
|
78
|
+
if (new Set(parsed.rows.map((row) => row.messageId)).size !== parsed.rows.length)
|
|
79
|
+
return false;
|
|
80
|
+
if (parsed.rows.reduce((total, row) => total + row.text.length, 0) > 24000)
|
|
81
|
+
return false;
|
|
82
|
+
return parsed.rows.every((row) => row.source.kind === 'voice'
|
|
83
|
+
? row.source.realtimeSessionId === parsed.scope.realtimeSessionId
|
|
84
|
+
: row.source.callId === parsed.scope.callId);
|
|
85
|
+
}
|
|
86
|
+
if (parsed.kind === 'settings') {
|
|
87
|
+
if (parsed.status === 'unavailable')
|
|
88
|
+
return true;
|
|
89
|
+
if (new Set(parsed.companions.map((entry) => entry.catProfileId)).size !== parsed.companions.length)
|
|
90
|
+
return false;
|
|
91
|
+
const selected = parsed.companions.find((entry) => entry.catProfileId === parsed.values.dutyCatProfileId);
|
|
92
|
+
return (selected?.available === true) === (parsed.selectedCompanionStatus === 'available');
|
|
93
|
+
}
|
|
94
|
+
if (parsed.kind === 'settings-update') {
|
|
95
|
+
const stopsCall = parsed.field === 'dutyCatProfileId' || parsed.field === 'householdReadsAllowed';
|
|
96
|
+
if (!stopsCall && parsed.callStatus !== 'unchanged')
|
|
97
|
+
return false;
|
|
98
|
+
if (parsed.outcome === 'saved') {
|
|
99
|
+
return parsed.field === 'personaTone' ? parsed.applies === 'next_call' : parsed.applies === 'now';
|
|
100
|
+
}
|
|
101
|
+
if (parsed.outcome === 'rejected') {
|
|
102
|
+
return (parsed.callStatus === 'stop_failed') === (parsed.reason === 'call_stop_failed');
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
if (parsed.kind === 'work') {
|
|
107
|
+
const coverage = new Map(parsed.coverage.map((entry) => [entry.source, entry.status]));
|
|
108
|
+
if (coverage.size !== 3)
|
|
109
|
+
return false;
|
|
110
|
+
const statuses = [...coverage.values()];
|
|
111
|
+
const allAvailable = statuses.every((source) => source === 'available');
|
|
112
|
+
const anyAvailable = statuses.some((source) => source !== 'unavailable');
|
|
113
|
+
if (parsed.status === 'available' && !allAvailable)
|
|
114
|
+
return false;
|
|
115
|
+
if (parsed.status === 'partial' && (!anyAvailable || allAvailable))
|
|
116
|
+
return false;
|
|
117
|
+
if (parsed.status === 'unavailable' && (anyAvailable || parsed.active.length > 0 || parsed.recentDeliveries.length > 0)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
if (coverage.get('tasks') === 'unavailable' && parsed.active.length > 0)
|
|
121
|
+
return false;
|
|
122
|
+
if (coverage.get('messages') === 'unavailable' && parsed.recentDeliveries.length > 0)
|
|
123
|
+
return false;
|
|
124
|
+
if (coverage.get('artifacts') === 'unavailable'
|
|
125
|
+
&& parsed.recentDeliveries.some((entry) => entry.artifact !== null))
|
|
126
|
+
return false;
|
|
127
|
+
if (parsed.recentDeliveries.some((entry) => entry.artifact !== null
|
|
128
|
+
&& entry.artifact.version === null && entry.artifact.versionState !== 'unknown'))
|
|
129
|
+
return false;
|
|
130
|
+
const entryRefs = [...parsed.active, ...parsed.recentDeliveries].map((entry) => entry.entryRef);
|
|
131
|
+
return new Set(entryRefs).size === entryRefs.length;
|
|
132
|
+
}
|
|
133
|
+
if (parsed.kind === 'decisions') {
|
|
134
|
+
if (!('version' in parsed))
|
|
135
|
+
return true;
|
|
136
|
+
const variantRefs = parsed.items.map((item) => item.variantRef);
|
|
137
|
+
if (new Set(variantRefs).size !== variantRefs.length)
|
|
138
|
+
return false;
|
|
139
|
+
if (parsed.items.some((item) => new Set(item.navigation.targets).size !== item.navigation.targets.length)) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
if (parsed.items.length > parsed.page.limit)
|
|
143
|
+
return false;
|
|
144
|
+
if (parsed.page.hasMore && parsed.items.length !== parsed.page.limit)
|
|
145
|
+
return false;
|
|
146
|
+
const sources = Object.values(parsed.sources);
|
|
147
|
+
if (sources.some((source) => source.status !== 'available' && source.coverage !== 'unknown'))
|
|
148
|
+
return false;
|
|
149
|
+
const complete = sources.every((source) => source.status === 'available' && source.coverage === 'complete');
|
|
150
|
+
const anyAvailable = sources.some((source) => source.status === 'available');
|
|
151
|
+
if (parsed.status === 'available' && !complete)
|
|
152
|
+
return false;
|
|
153
|
+
if (parsed.status === 'partial' && (!anyAvailable || complete))
|
|
154
|
+
return false;
|
|
155
|
+
if (parsed.status === 'unavailable' && (anyAvailable || parsed.items.length > 0 || parsed.page.hasMore))
|
|
156
|
+
return false;
|
|
157
|
+
if (parsed.totalCount !== undefined) {
|
|
158
|
+
if (parsed.status !== 'available' || !complete || parsed.totalCount < parsed.items.length)
|
|
159
|
+
return false;
|
|
160
|
+
const expectedRows = Math.min(parsed.page.limit, Math.max(0, parsed.totalCount - parsed.page.offset));
|
|
161
|
+
if (parsed.items.length !== expectedRows)
|
|
162
|
+
return false;
|
|
163
|
+
const knownEnd = parsed.page.offset + parsed.items.length;
|
|
164
|
+
if (parsed.page.hasMore !== (knownEnd < parsed.totalCount))
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
if (parsed.kind !== 'state')
|
|
170
|
+
return true;
|
|
171
|
+
if (parsed.audio) {
|
|
172
|
+
if (!parsed.audio.supportedModes.includes('duplex'))
|
|
173
|
+
return false;
|
|
174
|
+
if (parsed.audio.activeMode !== null && !parsed.audio.supportedModes.includes(parsed.audio.activeMode))
|
|
175
|
+
return false;
|
|
176
|
+
if ((parsed.phase === 'talking') !== (parsed.audio.activeMode !== null))
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
const work = parsed.nativeWork;
|
|
180
|
+
if (work.scopeId === null && (work.active.length > 0 || work.recent.length > 0))
|
|
181
|
+
return false;
|
|
182
|
+
if (new Set(work.active.map((entry) => entry.taskId)).size !== work.active.length)
|
|
183
|
+
return false;
|
|
184
|
+
if (new Set(work.recent.map((event) => event.eventId)).size !== work.recent.length)
|
|
185
|
+
return false;
|
|
186
|
+
if (work.active.some((entry) => entry.expiresAt <= entry.startedAt))
|
|
187
|
+
return false;
|
|
188
|
+
return work.recent.every((event) => {
|
|
189
|
+
if (event.expiresAt <= event.occurredAt)
|
|
190
|
+
return false;
|
|
191
|
+
const handed = event.phase === 'result_handed_to_voice';
|
|
192
|
+
const result = event.kind === 'result';
|
|
193
|
+
const attributed = event.resultId !== undefined && event.nativeCarrierCatId !== undefined;
|
|
194
|
+
return handed === result && result === attributed;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
export function validateCompanionEvent(value) { return bounded(value) && event(value); }
|
|
198
|
+
//# sourceMappingURL=companion-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-bridge.js","sourceRoot":"","sources":["../../src/validation/companion-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DocxMaterializationRequest, DocxMaterializationResponse } from '../generated/contract.generated.js';
|
|
2
|
+
export { DOCX_MATERIALIZATION_MAX_BYTES, DOCX_MATERIALIZATION_MAX_WIRE_BYTES } from '../docx-materialization.js';
|
|
3
|
+
/** Validate at both Host boundaries; worker output is untrusted even for an admitted package. */
|
|
4
|
+
export declare function validateDocxMaterializationRequest(value: unknown): value is DocxMaterializationRequest;
|
|
5
|
+
export declare function validateDocxMaterializationResponse(value: unknown): value is DocxMaterializationResponse;
|
|
6
|
+
//# sourceMappingURL=docx-materialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-materialization.d.ts","sourceRoot":"","sources":["../../src/validation/docx-materialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAElH,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AA+BjH,iGAAiG;AACjG,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAEtG;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,2BAA2B,CAIxG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { DOCX_MATERIALIZATION_MAX_BYTES, DOCX_MATERIALIZATION_MAX_WIRE_BYTES } from '../docx-materialization.js';
|
|
3
|
+
export { DOCX_MATERIALIZATION_MAX_BYTES, DOCX_MATERIALIZATION_MAX_WIRE_BYTES } from '../docx-materialization.js';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const schema = require('@clowder-ai/plugin-contract/schemas/docx-materialization');
|
|
6
|
+
const Ajv2020 = require('ajv/dist/2020');
|
|
7
|
+
const addFormats = require('ajv-formats');
|
|
8
|
+
const ajv = new Ajv2020({ strict: false, allErrors: false, ownProperties: true });
|
|
9
|
+
addFormats(ajv);
|
|
10
|
+
ajv.addSchema(schema);
|
|
11
|
+
const requestValidator = ajv.compile({ $ref: `${schema.$id}#/$defs/DocxMaterializationRequest` });
|
|
12
|
+
const responseValidator = ajv.compile({ $ref: `${schema.$id}#/$defs/DocxMaterializationResponse` });
|
|
13
|
+
function boundedJson(value) {
|
|
14
|
+
try {
|
|
15
|
+
const json = JSON.stringify(value);
|
|
16
|
+
return typeof json === 'string' && Buffer.byteLength(json) <= DOCX_MATERIALIZATION_MAX_WIRE_BYTES;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function canonicalBytes(value) {
|
|
23
|
+
const bytes = Buffer.from(value, 'base64');
|
|
24
|
+
return bytes.length > 0 && bytes.length <= DOCX_MATERIALIZATION_MAX_BYTES && bytes.toString('base64') === value;
|
|
25
|
+
}
|
|
26
|
+
/** Validate at both Host boundaries; worker output is untrusted even for an admitted package. */
|
|
27
|
+
export function validateDocxMaterializationRequest(value) {
|
|
28
|
+
return boundedJson(value) && requestValidator(value) && canonicalBytes(value.bytesBase64);
|
|
29
|
+
}
|
|
30
|
+
export function validateDocxMaterializationResponse(value) {
|
|
31
|
+
if (!boundedJson(value) || !responseValidator(value))
|
|
32
|
+
return false;
|
|
33
|
+
const result = value.result;
|
|
34
|
+
return result.kind !== 'document' || canonicalBytes(result.bytesBase64);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=docx-materialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-materialization.js","sourceRoot":"","sources":["../../src/validation/docx-materialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjH,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAEjH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,0DAA0D,CAA4B,CAAC;AAM9G,MAAM,OAAO,GAA0D,OAAO,CAAC,eAAe,CAAC,CAAC;AAChG,MAAM,UAAU,GAA+B,OAAO,CAAC,aAAa,CAAC,CAAC;AACtE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,UAAU,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACtB,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,oCAAoC,EAAE,CAAC,CAAC;AAClG,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,qCAAqC,EAAE,CAAC,CAAC;AAEpG,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mCAAmC,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,8BAA8B,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;AAClH,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,kCAAkC,CAAC,KAAc;IAC/D,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAE,KAAoC,CAAC,WAAW,CAAC,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,MAAM,MAAM,GAAI,KAAqC,CAAC,MAAM,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
export { validateCompanionCommand, validateCompanionReply, validateCompanionEvent, } from './companion-bridge.js';
|
|
1
2
|
export { validateMessagingSemantics, type SemanticValidationError, type SemanticValidationResult, } from './messaging-semantic.js';
|
|
3
|
+
export { MESSAGING_ROW_METHODS, validateMessagingRowInput, validateMessagingRowResult, type MessagingRowInputByMethod, type MessagingRowMethod, type MessagingRowResultByMethod, type MessagingRowValidationError, type MessagingRowValidationResult, } from './messaging-wire.js';
|
|
2
4
|
export { validateManifest, type ManifestValidationError, type ManifestValidationResult, } from './manifest.js';
|
|
3
|
-
export {
|
|
5
|
+
export { CLOUD_CONVERSATION_MAX_TEXT_BYTES, isCloudBridgeFailureDiagnosticV1, isCloudConversationAckInput, isCloudConversationAckResult, isCloudConversationAppendMessageInput, isCloudConversationAppendMessageResult, isCloudConversationListInput, isCloudConversationListResult, isCloudConversationTextBudget, type CloudBridgeDomFingerprintV1, type CloudBridgeFailureDiagnosticV1, } from './cloud-conversation-host.js';
|
|
6
|
+
export { validateOperationRowsResult, type OperationRowsValidationError, type OperationRowsValidationResult, } from './operation-rows.js';
|
|
7
|
+
export { getCatalogPlugin, listCatalogPlugins, searchCatalogPlugins, validatePluginCatalog, type CatalogValidationError, type CatalogValidationResult, } from './catalog.js';
|
|
8
|
+
export { validateSignalDeclaration, type SignalValidationError, type SignalValidationResult, } from './signals.js';
|
|
9
|
+
export { DOCX_MATERIALIZATION_MAX_BYTES, DOCX_MATERIALIZATION_MAX_WIRE_BYTES, validateDocxMaterializationRequest, validateDocxMaterializationResponse, } from './docx-materialization.js';
|
|
10
|
+
export * from './members.js';
|
|
11
|
+
export { isPluginDeliveryInput, isPluginDeliveryReceipt } from './messaging-wire.js';
|
|
4
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,EAC5B,qCAAqC,EACrC,sCAAsC,EACtC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,GACpC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2BAA2B,EAC3B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,mCAAmC,EACnC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AAKnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/validation/index.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
export { validateCompanionCommand, validateCompanionReply, validateCompanionEvent, } from './companion-bridge.js';
|
|
1
2
|
export { validateMessagingSemantics, } from './messaging-semantic.js';
|
|
3
|
+
export { MESSAGING_ROW_METHODS, validateMessagingRowInput, validateMessagingRowResult, } from './messaging-wire.js';
|
|
2
4
|
export { validateManifest, } from './manifest.js';
|
|
3
|
-
export {
|
|
5
|
+
export { CLOUD_CONVERSATION_MAX_TEXT_BYTES, isCloudBridgeFailureDiagnosticV1, isCloudConversationAckInput, isCloudConversationAckResult, isCloudConversationAppendMessageInput, isCloudConversationAppendMessageResult, isCloudConversationListInput, isCloudConversationListResult, isCloudConversationTextBudget, } from './cloud-conversation-host.js';
|
|
6
|
+
export { validateOperationRowsResult, } from './operation-rows.js';
|
|
7
|
+
export { getCatalogPlugin, listCatalogPlugins, searchCatalogPlugins, validatePluginCatalog, } from './catalog.js';
|
|
8
|
+
export { validateSignalDeclaration, } from './signals.js';
|
|
9
|
+
export { DOCX_MATERIALIZATION_MAX_BYTES, DOCX_MATERIALIZATION_MAX_WIRE_BYTES, validateDocxMaterializationRequest, validateDocxMaterializationResponse, } from './docx-materialization.js';
|
|
10
|
+
export * from './members.js';
|
|
11
|
+
export { isPluginDeliveryInput, isPluginDeliveryReceipt } from './messaging-wire.js';
|
|
4
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,GAG3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,GAG3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAM3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,4BAA4B,EAC5B,qCAAqC,EACrC,sCAAsC,EACtC,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,GAG9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2BAA2B,GAG5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,GAG1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,mCAAmC,EACnC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AAKnC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/validation/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/validation/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAyCzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;CAC9B,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACrD,CAAC;AAuCN;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CA+jBzE"}
|