@clowder-ai/plugin-contract 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/codegen/generate-contract.d.ts +24 -0
  2. package/dist/codegen/generate-contract.d.ts.map +1 -0
  3. package/dist/codegen/generate-contract.js +328 -0
  4. package/dist/codegen/generate-contract.js.map +1 -0
  5. package/dist/conformance/index.d.ts +13 -0
  6. package/dist/conformance/index.d.ts.map +1 -0
  7. package/dist/conformance/index.js +13 -0
  8. package/dist/conformance/index.js.map +1 -0
  9. package/dist/conformance/runner.d.ts +18 -0
  10. package/dist/conformance/runner.d.ts.map +1 -0
  11. package/dist/conformance/runner.js +252 -0
  12. package/dist/conformance/runner.js.map +1 -0
  13. package/dist/generated/contract.generated.d.ts +282 -0
  14. package/dist/generated/contract.generated.d.ts.map +1 -0
  15. package/dist/generated/contract.generated.js +37 -0
  16. package/dist/generated/contract.generated.js.map +1 -0
  17. package/dist/index.d.ts +35 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +36 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/types/capability.d.ts +4 -0
  22. package/dist/types/capability.d.ts.map +1 -0
  23. package/dist/types/capability.js +11 -0
  24. package/dist/types/capability.js.map +1 -0
  25. package/dist/types/data-class.d.ts +3 -0
  26. package/dist/types/data-class.d.ts.map +1 -0
  27. package/dist/types/data-class.js +12 -0
  28. package/dist/types/data-class.js.map +1 -0
  29. package/dist/types/index.d.ts +5 -0
  30. package/dist/types/index.d.ts.map +1 -0
  31. package/dist/types/index.js +5 -0
  32. package/dist/types/index.js.map +1 -0
  33. package/dist/validation/index.d.ts +2 -0
  34. package/dist/validation/index.d.ts.map +1 -0
  35. package/dist/validation/index.js +2 -0
  36. package/dist/validation/index.js.map +1 -0
  37. package/dist/validation/messaging-semantic.d.ts +10 -0
  38. package/dist/validation/messaging-semantic.d.ts.map +1 -0
  39. package/dist/validation/messaging-semantic.js +99 -0
  40. package/dist/validation/messaging-semantic.js.map +1 -0
  41. package/fixtures/behavior/messaging/adversarial-invariants.json +475 -0
  42. package/fixtures/manifest/invalid/.gitkeep +0 -0
  43. package/fixtures/manifest/invalid/contract-version-leading-zero-prerelease.json +17 -0
  44. package/fixtures/manifest/invalid/contract-version-range.json +17 -0
  45. package/fixtures/manifest/invalid/ipc-empty-entrypoint.json +18 -0
  46. package/fixtures/manifest/invalid/plugin-version-leading-zero-prerelease.json +17 -0
  47. package/fixtures/manifest/invalid/plugin-version-not-semver.json +17 -0
  48. package/fixtures/manifest/invalid/semver-empty-build-metadata.json +17 -0
  49. package/fixtures/manifest/invalid/stdio-missing-entrypoint.json +17 -0
  50. package/fixtures/manifest/invalid/unknown-capability.json +19 -0
  51. package/fixtures/manifest/invalid/user-authored-lifecycle.json +24 -0
  52. package/fixtures/manifest/valid/.gitkeep +0 -0
  53. package/fixtures/manifest/valid/minimal-builtin.json +17 -0
  54. package/fixtures/manifest/valid/protocol-intrinsic-lifecycle.json +18 -0
  55. package/fixtures/manifest/valid/semver-build-metadata.json +17 -0
  56. package/fixtures/manifest/valid/stdio-entrypoint.json +18 -0
  57. package/fixtures/messaging/invalid/.gitkeep +0 -0
  58. package/fixtures/messaging/invalid/non-rfc3339-occurred-at.json +34 -0
  59. package/fixtures/messaging/invalid/non-utc-occurred-at.json +34 -0
  60. package/fixtures/messaging/invalid/raw-message-id-append.json +16 -0
  61. package/fixtures/messaging/invalid/raw-thread-id.json +28 -0
  62. package/fixtures/messaging/invalid/stale-read-with-ack-token.json +8 -0
  63. package/fixtures/messaging/invalid/system-draft-audience.json +31 -0
  64. package/fixtures/messaging/invalid/text-payload-missing-text.json +10 -0
  65. package/fixtures/messaging/invalid/untyped-root-document.json +3 -0
  66. package/fixtures/messaging/valid/.gitkeep +0 -0
  67. package/fixtures/messaging/valid/append-elements-with-handle.json +21 -0
  68. package/fixtures/messaging/valid/message-draft.json +28 -0
  69. package/fixtures/messaging/valid/root-message-draft.json +25 -0
  70. package/fixtures/messaging/valid/subscription-delivery.json +45 -0
  71. package/package.json +59 -0
  72. package/src/schemas/behavior-fixture.schema.json +370 -0
  73. package/src/schemas/manifest.schema.json +186 -0
  74. package/src/schemas/messaging.schema.json +473 -0
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Conformance runner skeleton.
3
+ *
4
+ * Validates fixture files against contract JSON Schemas. This is the
5
+ * mechanical verification that fixtures (maintained by sol) conform to
6
+ * the schema shapes (maintained by opus).
7
+ *
8
+ * Usage:
9
+ * pnpm --filter @clowder-ai/plugin-contract conformance
10
+ *
11
+ * Exit codes:
12
+ * 0 = all fixtures valid (or no fixtures yet)
13
+ * 1 = validation errors found
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import { readdir, readFile } from 'node:fs/promises';
18
+ import { createRequire } from 'node:module';
19
+ import { join, relative } from 'node:path';
20
+ import { fileURLToPath } from 'node:url';
21
+ import { validateMessagingSemantics } from '../validation/messaging-semantic.js';
22
+ // Ajv is CJS — use createRequire for clean interop with ESM + verbatimModuleSyntax
23
+ // Use ajv/dist/2020 for JSON Schema 2020-12 ($defs, etc.)
24
+ const require = createRequire(import.meta.url);
25
+ const Ajv = require('ajv/dist/2020');
26
+ const addFormats = require('ajv-formats');
27
+ const __dirname = fileURLToPath(new URL('.', import.meta.url));
28
+ const PKG_ROOT = join(__dirname, '..', '..');
29
+ // ---------------------------------------------------------------------------
30
+ // Schema loading
31
+ // ---------------------------------------------------------------------------
32
+ async function loadSchema(schemaPath) {
33
+ const raw = await readFile(schemaPath, 'utf-8');
34
+ return JSON.parse(raw);
35
+ }
36
+ async function discoverFixtures(fixturesDir) {
37
+ const fixtures = [];
38
+ const domains = ['manifest', 'messaging'];
39
+ for (const domain of domains) {
40
+ for (const validity of ['valid', 'invalid']) {
41
+ const dir = join(fixturesDir, domain, validity);
42
+ let entries;
43
+ try {
44
+ entries = await readdir(dir);
45
+ }
46
+ catch {
47
+ // Directory may not exist yet — sol adds fixtures incrementally
48
+ continue;
49
+ }
50
+ for (const entry of entries) {
51
+ if (!entry.endsWith('.json'))
52
+ continue;
53
+ fixtures.push({
54
+ path: join(dir, entry),
55
+ relativePath: relative(fixturesDir, join(dir, entry)),
56
+ domain,
57
+ validity,
58
+ });
59
+ }
60
+ }
61
+ }
62
+ return fixtures;
63
+ }
64
+ function getDefaultSchemaId(domain) {
65
+ const ids = {
66
+ manifest: 'https://clowder-ai.dev/schemas/manifest/v0.1',
67
+ messaging: 'https://clowder-ai.dev/schemas/messaging/v0.1',
68
+ };
69
+ return ids[domain] ?? '';
70
+ }
71
+ async function validateFixture(ajv, fixture, schemas) {
72
+ const schema = schemas.get(fixture.domain);
73
+ if (!schema) {
74
+ return {
75
+ fixture,
76
+ passed: false,
77
+ errors: [`No schema found for domain: ${fixture.domain}`],
78
+ };
79
+ }
80
+ const raw = await readFile(fixture.path, 'utf-8');
81
+ let data;
82
+ try {
83
+ data = JSON.parse(raw);
84
+ }
85
+ catch (e) {
86
+ return {
87
+ fixture,
88
+ passed: false,
89
+ errors: [`Invalid JSON: ${e instanceof Error ? e.message : String(e)}`],
90
+ };
91
+ }
92
+ // Fixture files may specify which $def they target via a _meta field
93
+ const meta = data?.['_meta'];
94
+ const schemaId = getDefaultSchemaId(fixture.domain);
95
+ const ref = meta?.schemaRef
96
+ ? `${schemaId}#/$defs/${meta.schemaRef}`
97
+ : schemaId;
98
+ // Strip _meta before validation (it's runner metadata, not contract data)
99
+ if (meta) {
100
+ delete data['_meta'];
101
+ }
102
+ const validate = ajv.getSchema(ref);
103
+ if (!validate) {
104
+ return {
105
+ fixture,
106
+ passed: false,
107
+ errors: [`Schema ref not found: ${ref}`],
108
+ };
109
+ }
110
+ const isSchemaValid = validate(data);
111
+ const semanticResult = fixture.domain === 'messaging' && isSchemaValid
112
+ ? validateMessagingSemantics(meta?.schemaRef ?? 'root', data)
113
+ : { valid: true, errors: [] };
114
+ const isValid = isSchemaValid && semanticResult.valid;
115
+ if (fixture.validity === 'valid') {
116
+ // Valid fixtures MUST pass structural and semantic validation.
117
+ return {
118
+ fixture,
119
+ passed: isValid,
120
+ errors: isValid
121
+ ? undefined
122
+ : [
123
+ ...(validate.errors?.map((e) => `${e.instancePath}: ${e.message}`) ?? []),
124
+ ...semanticResult.errors.map((e) => `${e.path}: ${e.message}`),
125
+ ],
126
+ };
127
+ }
128
+ else {
129
+ // Invalid fixtures may fail either structural or semantic validation.
130
+ return {
131
+ fixture,
132
+ passed: isValid === false,
133
+ errors: isValid
134
+ ? ['Expected validation to FAIL for invalid fixture, but it passed']
135
+ : undefined,
136
+ };
137
+ }
138
+ }
139
+ // ---------------------------------------------------------------------------
140
+ // Main
141
+ // ---------------------------------------------------------------------------
142
+ async function main() {
143
+ const fixturesDir = join(PKG_ROOT, 'fixtures');
144
+ const schemasDir = join(PKG_ROOT, 'src', 'schemas');
145
+ console.log('🔍 Conformance runner — @clowder-ai/plugin-contract');
146
+ console.log(` Fixtures: ${fixturesDir}`);
147
+ console.log(` Schemas: ${schemasDir}`);
148
+ console.log();
149
+ // Load schemas
150
+ const schemas = new Map();
151
+ const manifestSchema = await loadSchema(join(schemasDir, 'manifest.schema.json'));
152
+ const messagingSchema = await loadSchema(join(schemasDir, 'messaging.schema.json'));
153
+ const behaviorSchema = await loadSchema(join(schemasDir, 'behavior-fixture.schema.json'));
154
+ schemas.set('manifest', manifestSchema);
155
+ schemas.set('messaging', messagingSchema);
156
+ // Set up Ajv with format validation (date-time, uri, email, etc.)
157
+ const ajv = new Ajv({ allErrors: true, strict: false });
158
+ addFormats(ajv);
159
+ ajv.addSchema(manifestSchema, manifestSchema['$id']);
160
+ ajv.addSchema(messagingSchema, messagingSchema['$id']);
161
+ ajv.addSchema(behaviorSchema, behaviorSchema['$id']);
162
+ // Discover and validate fixtures
163
+ const fixtures = await discoverFixtures(fixturesDir);
164
+ if (fixtures.length === 0) {
165
+ console.log('📭 No fixtures found — runner OK (empty run).');
166
+ console.log(' Fixtures will be added by sol per the three-tier fixture plan.');
167
+ process.exit(0);
168
+ }
169
+ const results = [];
170
+ for (const fixture of fixtures) {
171
+ results.push(await validateFixture(ajv, fixture, schemas));
172
+ }
173
+ // Report schema fixtures
174
+ let schemaFailures = 0;
175
+ for (const result of results) {
176
+ const icon = result.passed ? '✅' : '❌';
177
+ const expect = result.fixture.validity === 'valid' ? 'should pass' : 'should fail';
178
+ console.log(`${icon} ${result.fixture.relativePath} (${expect})`);
179
+ if (result.errors) {
180
+ for (const err of result.errors) {
181
+ console.log(` → ${err}`);
182
+ }
183
+ schemaFailures++;
184
+ }
185
+ }
186
+ // Validate and report behavioral fixtures before deferring their execution.
187
+ const behaviorDir = join(fixturesDir, 'behavior');
188
+ let behaviorCount = 0;
189
+ let behaviorFileCount = 0;
190
+ let behaviorFailures = 0;
191
+ const validateBehavior = ajv.getSchema(behaviorSchema['$id']);
192
+ if (!validateBehavior) {
193
+ throw new Error('Behavior fixture schema was not registered');
194
+ }
195
+ try {
196
+ const behaviorDomains = await readdir(behaviorDir);
197
+ for (const domain of behaviorDomains) {
198
+ const domainDir = join(behaviorDir, domain);
199
+ let entries;
200
+ try {
201
+ entries = await readdir(domainDir);
202
+ }
203
+ catch {
204
+ continue;
205
+ }
206
+ for (const entry of entries) {
207
+ if (!entry.endsWith('.json'))
208
+ continue;
209
+ const path = join(domainDir, entry);
210
+ const fixturePath = relative(fixturesDir, path);
211
+ let data;
212
+ try {
213
+ data = JSON.parse(await readFile(path, 'utf-8'));
214
+ }
215
+ catch (error) {
216
+ console.log(`❌ ${fixturePath} (invalid JSON)`);
217
+ console.log(` → ${error instanceof Error ? error.message : String(error)}`);
218
+ behaviorFailures++;
219
+ continue;
220
+ }
221
+ if (!validateBehavior(data)) {
222
+ console.log(`❌ ${fixturePath} (malformed behavior fixture)`);
223
+ for (const error of validateBehavior.errors ?? []) {
224
+ console.log(` → ${error.instancePath}: ${error.message}`);
225
+ }
226
+ behaviorFailures++;
227
+ continue;
228
+ }
229
+ const caseCount = data.cases.length;
230
+ behaviorCount += caseCount;
231
+ behaviorFileCount++;
232
+ console.log(`✅ ${fixturePath} (${caseCount} validated cases, executor: ${data._meta.executor}; execution skipped — requires P-2)`);
233
+ }
234
+ }
235
+ }
236
+ catch {
237
+ // No behavior directory yet — that's fine
238
+ }
239
+ console.log();
240
+ console.log(`Results: ${results.length - schemaFailures}/${results.length} contract fixtures passed`);
241
+ if (behaviorCount > 0) {
242
+ console.log(`⏭️ ${behaviorCount} validated behavioral cases across ${behaviorFileCount} file(s); loopback execution requires P-2`);
243
+ }
244
+ if (schemaFailures + behaviorFailures > 0) {
245
+ process.exit(1);
246
+ }
247
+ }
248
+ main().catch((err) => {
249
+ console.error('Conformance runner crashed:', err);
250
+ process.exit(1);
251
+ });
252
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/conformance/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Generated from manifest.schema.json and messaging.schema.json.
3
+ * Do not edit by hand. Run `pnpm generate` after changing a schema.
4
+ */
5
+ export type SemVer = string;
6
+ export type DataClass = 'cache' | 'ephemeral' | 'user-authored' | 'derived-user-visible' | 'relationship' | 'interaction-history';
7
+ export type DataStrategy = 'lifecycle' | 'retained' | 'ask-on-uninstall';
8
+ export type Capability = 'plugin.config.read' | 'plugin.state.get' | 'plugin.state.set' | 'messaging.send' | 'schedule.register' | 'events.publish' | 'messaging.appendElements' | 'onMessage' | 'message.event.subscribe' | 'secret.read' | 'thread.listMetadata' | 'thread.readContent' | 'memory.query' | 'memory.append' | 'memory.retrieve' | 'windows.create' | 'whisper.extend';
9
+ export type DataDeclaration = {
10
+ readonly name: string;
11
+ readonly dataClass: 'cache';
12
+ readonly strategy: 'lifecycle' | 'retained' | 'ask-on-uninstall';
13
+ readonly schemaVersion?: string;
14
+ } | {
15
+ readonly name: string;
16
+ readonly dataClass: 'ephemeral';
17
+ readonly strategy: 'lifecycle' | 'retained' | 'ask-on-uninstall';
18
+ readonly schemaVersion?: string;
19
+ } | {
20
+ readonly name: string;
21
+ readonly dataClass: 'user-authored';
22
+ readonly strategy: 'retained' | 'ask-on-uninstall';
23
+ readonly schemaVersion?: string;
24
+ } | {
25
+ readonly name: string;
26
+ readonly dataClass: 'derived-user-visible';
27
+ readonly strategy: 'retained' | 'ask-on-uninstall';
28
+ readonly schemaVersion?: string;
29
+ } | {
30
+ readonly name: string;
31
+ readonly dataClass: 'relationship';
32
+ readonly strategy: 'retained' | 'ask-on-uninstall';
33
+ readonly schemaVersion?: string;
34
+ } | {
35
+ readonly name: string;
36
+ readonly dataClass: 'interaction-history';
37
+ readonly strategy: 'retained' | 'ask-on-uninstall';
38
+ readonly schemaVersion?: string;
39
+ };
40
+ export type ResourceReference = {
41
+ readonly type: string;
42
+ readonly id: string;
43
+ };
44
+ export type PluginFeature = {
45
+ readonly id: string;
46
+ readonly name: string;
47
+ readonly resources: readonly ResourceReference[];
48
+ readonly capabilities: readonly Capability[];
49
+ };
50
+ export type RuntimeTransport = 'stdio' | 'ipc' | 'builtin';
51
+ export type ExternalRuntimeTransport = 'stdio' | 'ipc';
52
+ export type ExternalRuntimeDeclaration = {
53
+ readonly transport: ExternalRuntimeTransport;
54
+ readonly entrypoint: string;
55
+ };
56
+ export type BuiltinRuntimeDeclaration = {
57
+ readonly transport: 'builtin';
58
+ readonly entrypoint?: string;
59
+ };
60
+ export type RuntimeDeclaration = ExternalRuntimeDeclaration | BuiltinRuntimeDeclaration;
61
+ export type PluginManifest = {
62
+ readonly pluginId: string;
63
+ readonly version: SemVer;
64
+ readonly contractVersion: SemVer;
65
+ readonly name: string;
66
+ readonly description?: string;
67
+ readonly features: readonly PluginFeature[];
68
+ readonly data?: readonly DataDeclaration[];
69
+ readonly runtime: RuntimeDeclaration;
70
+ };
71
+ export type ActorKind = 'user' | 'cat' | 'plugin' | 'device' | 'system';
72
+ export type ActorRef = {
73
+ readonly kind: ActorKind;
74
+ readonly id: string;
75
+ };
76
+ export type EpistemicStatus = 'observation' | 'user_intent' | 'inference';
77
+ export type ExternalSourceAddress = {
78
+ readonly connectorId: string;
79
+ readonly chatId: string;
80
+ readonly messageId?: string;
81
+ };
82
+ export type IngressSourceAddress = ExternalSourceAddress;
83
+ export type PluginOrigin = {
84
+ readonly kind: 'plugin';
85
+ readonly instanceId: string;
86
+ };
87
+ export type ExternalOrigin = {
88
+ readonly kind: 'external';
89
+ readonly connectorId: string;
90
+ readonly sourceAddress?: ExternalSourceAddress;
91
+ };
92
+ export type HostOrigin = {
93
+ readonly kind: 'host';
94
+ };
95
+ export type ProvenanceOrigin = PluginOrigin | ExternalOrigin | HostOrigin;
96
+ export type DraftOrigin = PluginOrigin | ExternalOrigin;
97
+ export type MessageProvenance = {
98
+ readonly origin: ProvenanceOrigin;
99
+ readonly epistemicStatus: EpistemicStatus;
100
+ };
101
+ export type DraftProvenance = {
102
+ readonly origin?: DraftOrigin;
103
+ readonly epistemicStatus: EpistemicStatus;
104
+ };
105
+ export type ElementKind = 'text' | 'media_ref' | 'rich_block';
106
+ export type TextElementPayload = {
107
+ readonly text: string;
108
+ };
109
+ export type MediaRefElementPayload = Readonly<Record<string, unknown>>;
110
+ export type RichBlockElementPayload = Readonly<Record<string, unknown>>;
111
+ export type TextMessageElement = {
112
+ readonly elementId: string;
113
+ readonly kind: 'text';
114
+ readonly payload: TextElementPayload;
115
+ readonly derivedFromElementId?: string;
116
+ readonly epistemicStatus?: EpistemicStatus;
117
+ };
118
+ export type MediaRefMessageElement = {
119
+ readonly elementId: string;
120
+ readonly kind: 'media_ref';
121
+ readonly payload: MediaRefElementPayload;
122
+ readonly derivedFromElementId?: string;
123
+ readonly epistemicStatus?: EpistemicStatus;
124
+ };
125
+ export type RichBlockMessageElement = {
126
+ readonly elementId: string;
127
+ readonly kind: 'rich_block';
128
+ readonly payload: RichBlockElementPayload;
129
+ readonly derivedFromElementId?: string;
130
+ readonly epistemicStatus?: EpistemicStatus;
131
+ };
132
+ export type MessageElement = TextMessageElement | MediaRefMessageElement | RichBlockMessageElement;
133
+ export type MessagePayload = {
134
+ readonly provenance: MessageProvenance;
135
+ readonly elements: readonly MessageElement[];
136
+ readonly correlationId?: string;
137
+ readonly causationId?: string;
138
+ };
139
+ export type DraftPayload = {
140
+ readonly provenance: DraftProvenance;
141
+ readonly elements: readonly MessageElement[];
142
+ readonly correlationId?: string;
143
+ readonly causationId?: string;
144
+ };
145
+ export type ThreadHandleAddress = {
146
+ readonly kind: 'thread_handle';
147
+ readonly handle: string;
148
+ };
149
+ export type ConnectorBindingAddress = {
150
+ readonly kind: 'connector_binding';
151
+ readonly handle: string;
152
+ };
153
+ export type MessageAddress = ThreadHandleAddress | ConnectorBindingAddress;
154
+ export type PublicAudience = {
155
+ readonly kind: 'public';
156
+ };
157
+ export type WhisperAudience = {
158
+ readonly kind: 'whisper';
159
+ readonly targets: readonly string[];
160
+ };
161
+ export type SystemAudience = {
162
+ readonly kind: 'system';
163
+ };
164
+ export type DraftAudience = PublicAudience | WhisperAudience;
165
+ export type CanonicalAudience = PublicAudience | WhisperAudience | SystemAudience;
166
+ export type MessageDraft = {
167
+ readonly address: MessageAddress;
168
+ readonly draftAudience?: DraftAudience;
169
+ readonly idempotencyKey: string;
170
+ readonly sourceEventId?: string;
171
+ readonly replyTo?: string;
172
+ readonly payload: DraftPayload;
173
+ };
174
+ export type MessageEnvelope = {
175
+ readonly messageId: string;
176
+ readonly revision: number;
177
+ readonly threadId: string;
178
+ readonly replyTo?: string;
179
+ readonly actor: ActorRef;
180
+ readonly audience: CanonicalAudience;
181
+ readonly occurredAt: string;
182
+ readonly payload: MessagePayload;
183
+ };
184
+ export type MessagePublishEvent = {
185
+ readonly eventId: string;
186
+ readonly sequence: number;
187
+ readonly type: 'message.publish';
188
+ readonly envelope: MessageEnvelope;
189
+ };
190
+ export type MessageElementsAppendEvent = {
191
+ readonly eventId: string;
192
+ readonly sequence: number;
193
+ readonly type: 'message.elements.append';
194
+ readonly messageId: string;
195
+ readonly threadId: string;
196
+ readonly operationId: string;
197
+ readonly baseRevision?: number;
198
+ readonly revision: number;
199
+ readonly elements: readonly MessageElement[];
200
+ };
201
+ export type MessageOutputEvent = MessagePublishEvent | MessageElementsAppendEvent;
202
+ export type SendReceipt = {
203
+ readonly messageId: string;
204
+ readonly threadId: string;
205
+ readonly revision: number;
206
+ readonly publishSequence?: number;
207
+ };
208
+ export type AppendReceipt = {
209
+ readonly messageId: string;
210
+ readonly revision: number;
211
+ readonly appendSequence?: number;
212
+ readonly appliedElementIds: readonly string[];
213
+ };
214
+ export type MessagingErrorCode = 'VALIDATION' | 'PERMISSION' | 'NOT_FOUND' | 'CONFLICT' | 'RETRYABLE_INFLIGHT' | 'STALE_CURSOR';
215
+ export type MessageHandle = {
216
+ readonly kind: 'message';
217
+ readonly token: string;
218
+ };
219
+ export type AppendElementsRequest = {
220
+ readonly handle: MessageHandle;
221
+ readonly operationId: string;
222
+ readonly baseRevision?: number;
223
+ readonly elements: readonly MessageElement[];
224
+ };
225
+ export type SubscriptionCursor = string;
226
+ export type SubscriptionNormalResponse = {
227
+ readonly events: readonly MessageOutputEvent[];
228
+ readonly ackToken: SubscriptionCursor;
229
+ readonly stale: false;
230
+ };
231
+ export type SubscriptionEmptyResponse = {
232
+ readonly events: readonly MessageOutputEvent[];
233
+ readonly ackToken: null;
234
+ readonly stale: false;
235
+ };
236
+ export type SubscriptionStaleResponse = {
237
+ readonly events: readonly MessageOutputEvent[];
238
+ readonly ackToken: null;
239
+ readonly stale: true;
240
+ };
241
+ export type SubscriptionReadResponse = SubscriptionNormalResponse | SubscriptionEmptyResponse | SubscriptionStaleResponse;
242
+ export type SnapshotResponse = {
243
+ readonly envelopes: readonly MessageEnvelope[];
244
+ readonly resumeSequence: number;
245
+ };
246
+ export declare const L0_CAPABILITIES: readonly ["plugin.config.read", "plugin.state.get", "plugin.state.set"];
247
+ export type L0Capability = (typeof L0_CAPABILITIES)[number];
248
+ export declare const L1_CAPABILITIES: readonly ["messaging.send", "schedule.register", "events.publish", "messaging.appendElements"];
249
+ export type L1Capability = (typeof L1_CAPABILITIES)[number];
250
+ export declare const L2_CAPABILITIES: readonly ["onMessage", "message.event.subscribe", "secret.read", "thread.listMetadata", "thread.readContent", "memory.query", "memory.append", "memory.retrieve", "windows.create", "whisper.extend"];
251
+ export type L2Capability = (typeof L2_CAPABILITIES)[number];
252
+ export declare const CAPABILITY_TABLE: {
253
+ readonly L0: readonly ["plugin.config.read", "plugin.state.get", "plugin.state.set"];
254
+ readonly L1: readonly ["messaging.send", "schedule.register", "events.publish", "messaging.appendElements"];
255
+ readonly L2: readonly ["onMessage", "message.event.subscribe", "secret.read", "thread.listMetadata", "thread.readContent", "memory.query", "memory.append", "memory.retrieve", "windows.create", "whisper.extend"];
256
+ };
257
+ export type AuthorizationLayer = keyof typeof CAPABILITY_TABLE;
258
+ export declare const DATA_CLASS_ALLOWED_STRATEGIES: {
259
+ readonly cache: readonly ["lifecycle", "retained", "ask-on-uninstall"];
260
+ readonly ephemeral: readonly ["lifecycle", "retained", "ask-on-uninstall"];
261
+ readonly 'user-authored': readonly ["retained", "ask-on-uninstall"];
262
+ readonly 'derived-user-visible': readonly ["retained", "ask-on-uninstall"];
263
+ readonly relationship: readonly ["retained", "ask-on-uninstall"];
264
+ readonly 'interaction-history': readonly ["retained", "ask-on-uninstall"];
265
+ };
266
+ export declare const MESSAGING_BOUNDS: {
267
+ readonly maxElementsPerOperation: 32;
268
+ readonly maxElementPayloadBytes: 65536;
269
+ readonly maxTotalPayloadBytes: 262144;
270
+ readonly maxWhisperTargets: 16;
271
+ readonly maxIdempotencyKeyLength: 200;
272
+ readonly maxElementIdLength: 128;
273
+ readonly maxElementsPerMessage: 128;
274
+ readonly maxAppendOpsPerMessage: 64;
275
+ };
276
+ /**
277
+ * @signed(G-0 2026-07-15)
278
+ * Host control plane/UI obligation: expose effective retention to users.
279
+ * This does not add a plugin handshake field or query API.
280
+ */
281
+ export declare const MESSAGING_REPLAY_WINDOW_DEFAULT: "P7D";
282
+ //# sourceMappingURL=contract.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.generated.d.ts","sourceRoot":"","sources":["../../src/generated/contract.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Generated from manifest.schema.json and messaging.schema.json.
3
+ * Do not edit by hand. Run `pnpm generate` after changing a schema.
4
+ */
5
+ export const L0_CAPABILITIES = ['plugin.config.read', 'plugin.state.get', 'plugin.state.set'];
6
+ export const L1_CAPABILITIES = ['messaging.send', 'schedule.register', 'events.publish', 'messaging.appendElements'];
7
+ export const L2_CAPABILITIES = ['onMessage', 'message.event.subscribe', 'secret.read', 'thread.listMetadata', 'thread.readContent', 'memory.query', 'memory.append', 'memory.retrieve', 'windows.create', 'whisper.extend'];
8
+ export const CAPABILITY_TABLE = {
9
+ L0: L0_CAPABILITIES,
10
+ L1: L1_CAPABILITIES,
11
+ L2: L2_CAPABILITIES,
12
+ };
13
+ export const DATA_CLASS_ALLOWED_STRATEGIES = {
14
+ 'cache': ['lifecycle', 'retained', 'ask-on-uninstall'],
15
+ 'ephemeral': ['lifecycle', 'retained', 'ask-on-uninstall'],
16
+ 'user-authored': ['retained', 'ask-on-uninstall'],
17
+ 'derived-user-visible': ['retained', 'ask-on-uninstall'],
18
+ 'relationship': ['retained', 'ask-on-uninstall'],
19
+ 'interaction-history': ['retained', 'ask-on-uninstall'],
20
+ };
21
+ export const MESSAGING_BOUNDS = {
22
+ maxElementsPerOperation: 32,
23
+ maxElementPayloadBytes: 65536,
24
+ maxTotalPayloadBytes: 262144,
25
+ maxWhisperTargets: 16,
26
+ maxIdempotencyKeyLength: 200,
27
+ maxElementIdLength: 128,
28
+ maxElementsPerMessage: 128,
29
+ maxAppendOpsPerMessage: 64,
30
+ };
31
+ /**
32
+ * @signed(G-0 2026-07-15)
33
+ * Host control plane/UI obligation: expose effective retention to users.
34
+ * This does not add a plugin handshake field or query API.
35
+ */
36
+ export const MESSAGING_REPLAY_WINDOW_DEFAULT = 'P7D';
37
+ //# sourceMappingURL=contract.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.generated.js","sourceRoot":"","sources":["../../src/generated/contract.generated.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsPH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,CAAU,CAAC;AAEvG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,0BAA0B,CAAU,CAAC;AAE9H,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,CAAU,CAAC;AAErO,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,eAAe;CACX,CAAC;AAGX,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC;IACtD,WAAW,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC;IAC1D,eAAe,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACjD,sBAAsB,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxD,cAAc,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAChD,qBAAqB,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;CACgB,CAAC;AAE1E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,KAAK;IAC7B,oBAAoB,EAAE,MAAM;IAC5B,iBAAiB,EAAE,EAAE;IACrB,uBAAuB,EAAE,GAAG;IAC5B,kBAAkB,EAAE,GAAG;IACvB,qBAAqB,EAAE,GAAG;IAC1B,sBAAsB,EAAE,EAAE;CAClB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAc,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @clowder-ai/plugin-contract
3
+ *
4
+ * The single machine-readable truth source for the Clowder AI plugin
5
+ * ecosystem (P15). Schema, types, capability table, and conformance
6
+ * utilities all ship from this package — the host (clowder-ai) and
7
+ * plugin SDK both consume it; neither redefines structures.
8
+ *
9
+ * ## Version strategy (pre-1.0)
10
+ *
11
+ * - `0.x.0-candidate.N`: work-in-progress, NOT published to registry,
12
+ * no implementation may consume.
13
+ * - `0.x.0`: published after dual-sign merge (CODEOWNERS) + CI publish.
14
+ * Registry must show exact version + digest before any gate proceeds.
15
+ * - Breaking changes are expected before 1.0 (P3).
16
+ * - v1.0.0 = public compatibility commitment; breaking window closes.
17
+ *
18
+ * ## Domains (v0.1 candidate)
19
+ *
20
+ * - **messaging**: MessagePayload, MessageDraft, MessageEnvelope,
21
+ * MessageOutputEvent, AppendElementsRequest, SendReceipt
22
+ * - **manifest**: PluginManifest, PluginFeature, DataDeclaration,
23
+ * RuntimeDeclaration (v0.1 scope — signals/tasks/windows deferred)
24
+ * - **capability**: L0/L1/L2 capability table (`@signed(G-0 2026-07-15)`)
25
+ * - **data-class**: DataClass × DataStrategy validation
26
+ * - **generated projection**: all public structural types and contract tables
27
+ * are deterministically generated from the JSON Schemas
28
+ * - **validation**: shared semantic checks for constraints JSON Schema cannot
29
+ * express, including UTF-8 payload byte budgets
30
+ *
31
+ * @packageDocumentation
32
+ */
33
+ export * from './types/index.js';
34
+ export * from './validation/index.js';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}