@clowder-ai/plugin-sdk 0.1.0-beta.8 → 0.1.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,89 @@
1
+ import { type Capability, type ConnectorContribution, type DirectToolContribution, type IdentityContribution, type LimbContribution, type McpContribution, type MessageSubscriptionContribution, type PluginManifest, type ScheduleContribution, type ServiceContribution, type SkillContribution, type StaticContribution, type UiContribution, type WebhookContribution } from '@clowder-ai/plugin-contract';
2
+ export interface FeatureBinding {
3
+ readonly pluginInstanceId: string;
4
+ readonly featureId: string;
5
+ readonly packageRevision: string;
6
+ readonly integrityEpoch: number;
7
+ readonly activationRevision: number;
8
+ readonly grantRevision: number;
9
+ readonly grantedCapabilities: readonly Capability[];
10
+ /** Opaque Host-issued authority. SDK code transports it but never interprets it. */
11
+ readonly executionLease: string;
12
+ }
13
+ export interface HostContributionReceipt {
14
+ readonly registrationId: string;
15
+ readonly registryRevision: number;
16
+ }
17
+ export interface FeatureHostAdapter {
18
+ readConfig(binding: FeatureBinding, key: string): Promise<unknown>;
19
+ readSecret(binding: FeatureBinding, key: string): Promise<string>;
20
+ readState(binding: FeatureBinding, key: string): Promise<unknown>;
21
+ writeState(binding: FeatureBinding, key: string, value: unknown): Promise<void>;
22
+ registerContribution(binding: FeatureBinding, contribution: StaticContribution): Promise<HostContributionReceipt>;
23
+ disposeContribution(binding: FeatureBinding, receipt: HostContributionReceipt): Promise<void>;
24
+ }
25
+ export declare class FeatureContextRevokedError extends Error {
26
+ constructor();
27
+ }
28
+ export declare class ContributionConflictError extends Error {
29
+ constructor(key: string);
30
+ }
31
+ export interface ContributionRegistration {
32
+ readonly key: string;
33
+ readonly receipt: HostContributionReceipt;
34
+ dispose(): Promise<void>;
35
+ }
36
+ type RegistrationInput<T extends StaticContribution> = T extends unknown ? Omit<T, 'type'> : never;
37
+ export interface ContributionRegistrar<T extends StaticContribution> {
38
+ register(input: RegistrationInput<T>): Promise<ContributionRegistration>;
39
+ }
40
+ export interface FeatureContext {
41
+ readonly featureId: string;
42
+ readonly config: {
43
+ get(key: string): Promise<unknown>;
44
+ };
45
+ readonly secrets: {
46
+ get(key: string): Promise<string>;
47
+ };
48
+ readonly state: {
49
+ get(key: string): Promise<unknown>;
50
+ set(key: string, value: unknown): Promise<void>;
51
+ };
52
+ readonly identity: ContributionRegistrar<IdentityContribution>;
53
+ readonly scheduler: ContributionRegistrar<ScheduleContribution>;
54
+ readonly tools: ContributionRegistrar<DirectToolContribution>;
55
+ readonly mcp: ContributionRegistrar<McpContribution>;
56
+ readonly skills: ContributionRegistrar<SkillContribution>;
57
+ readonly limbs: ContributionRegistrar<LimbContribution>;
58
+ readonly webhooks: ContributionRegistrar<WebhookContribution>;
59
+ readonly messaging: {
60
+ readonly subscribe: ContributionRegistrar<MessageSubscriptionContribution>['register'];
61
+ };
62
+ readonly services: ContributionRegistrar<ServiceContribution>;
63
+ readonly connectors: ContributionRegistrar<ConnectorContribution>;
64
+ readonly ui: ContributionRegistrar<UiContribution>;
65
+ }
66
+ export interface FeatureContextSession {
67
+ readonly context: FeatureContext;
68
+ revoke(): Promise<void>;
69
+ }
70
+ /**
71
+ * Creates the author-facing context around a Host-issued binding.
72
+ *
73
+ * This helper does not grant authority: every adapter operation carries the opaque lease and the Host
74
+ * remains responsible for verifying its signature, revisions, grants, integrity epoch, and liveness.
75
+ */
76
+ export declare function createFeatureContextSession(binding: FeatureBinding, adapter: FeatureHostAdapter): FeatureContextSession;
77
+ export type FeatureActivator = (context: FeatureContext) => void | Promise<void>;
78
+ export interface PluginDefinitionInput {
79
+ readonly manifest: unknown;
80
+ readonly activate?: Readonly<Record<string, FeatureActivator>>;
81
+ }
82
+ export interface DefinedPlugin {
83
+ readonly manifest: PluginManifest;
84
+ readonly activate: Readonly<Record<string, FeatureActivator>>;
85
+ }
86
+ /** Validate one manifest truth and bind only activators for declared feature IDs. */
87
+ export declare function definePlugin(input: PluginDefinitionInput): DefinedPlugin;
88
+ export {};
89
+ //# sourceMappingURL=feature-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-context.d.ts","sourceRoot":"","sources":["../src/feature-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { validateManifest, } from '@clowder-ai/plugin-contract';
2
+ export class FeatureContextRevokedError extends Error {
3
+ constructor() {
4
+ super('feature context has been revoked');
5
+ this.name = 'FeatureContextRevokedError';
6
+ }
7
+ }
8
+ export class ContributionConflictError extends Error {
9
+ constructor(key) {
10
+ super(`contribution ${key} is already registered with a different payload`);
11
+ this.name = 'ContributionConflictError';
12
+ }
13
+ }
14
+ function canonicalJson(value, ancestors = new Set()) {
15
+ if (value === null)
16
+ return 'null';
17
+ if (typeof value === 'string' || typeof value === 'boolean')
18
+ return JSON.stringify(value);
19
+ if (typeof value === 'number' && Number.isFinite(value))
20
+ return JSON.stringify(value);
21
+ if (typeof value !== 'object')
22
+ throw new TypeError('contribution payload must contain only JSON values');
23
+ if (ancestors.has(value))
24
+ throw new TypeError('contribution payload must not contain JSON cycles');
25
+ if (Object.getOwnPropertySymbols(value).length > 0) {
26
+ throw new TypeError('contribution payload must contain only JSON string keys');
27
+ }
28
+ const prototype = Object.getPrototypeOf(value);
29
+ if (Array.isArray(value) ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null) {
30
+ throw new TypeError('contribution payload must contain only plain JSON objects or arrays');
31
+ }
32
+ ancestors.add(value);
33
+ try {
34
+ if (Array.isArray(value)) {
35
+ if (Object.keys(value).some((key) => !/^(0|[1-9][0-9]*)$/.test(key) || Number(key) >= value.length)) {
36
+ throw new TypeError('contribution payload must contain only JSON array elements');
37
+ }
38
+ const elements = [];
39
+ const length = value.length;
40
+ for (let index = 0; index < length; index += 1) {
41
+ if (!Object.hasOwn(value, index))
42
+ throw new TypeError('contribution payload must not contain JSON array holes');
43
+ elements.push(canonicalJson(value[index], ancestors));
44
+ }
45
+ return `[${elements.join(',')}]`;
46
+ }
47
+ const object = value;
48
+ return `{${Object.keys(object)
49
+ .sort()
50
+ .map((key) => `${JSON.stringify(key)}:${canonicalJson(object[key], ancestors)}`)
51
+ .join(',')}}`;
52
+ }
53
+ finally {
54
+ ancestors.delete(value);
55
+ }
56
+ }
57
+ function deepFreeze(value) {
58
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
59
+ for (const nested of Object.values(value))
60
+ deepFreeze(nested);
61
+ Object.freeze(value);
62
+ }
63
+ return value;
64
+ }
65
+ /**
66
+ * Creates the author-facing context around a Host-issued binding.
67
+ *
68
+ * This helper does not grant authority: every adapter operation carries the opaque lease and the Host
69
+ * remains responsible for verifying its signature, revisions, grants, integrity epoch, and liveness.
70
+ */
71
+ export function createFeatureContextSession(binding, adapter) {
72
+ let revoked = false;
73
+ let revokePromise;
74
+ const active = new Map();
75
+ const assertActive = () => {
76
+ if (revoked)
77
+ throw new FeatureContextRevokedError();
78
+ };
79
+ const register = async (type, input) => {
80
+ assertActive();
81
+ const digest = canonicalJson({ ...input, type });
82
+ // Dispatch exactly the JSON snapshot used for identity; cloning first can
83
+ // silently erase non-JSON keys, while reading twice can invoke changing getters.
84
+ const contribution = deepFreeze(JSON.parse(digest));
85
+ const key = `${type}:${contribution.id}`;
86
+ const existing = active.get(key);
87
+ if (existing !== undefined) {
88
+ if (existing.disposePromise !== undefined) {
89
+ await existing.disposePromise.catch(() => undefined);
90
+ assertActive();
91
+ return register(type, input);
92
+ }
93
+ if (existing.digest !== digest)
94
+ throw new ContributionConflictError(key);
95
+ const registration = await existing.promise;
96
+ if (revoked) {
97
+ await registration.dispose().catch(() => undefined);
98
+ throw new FeatureContextRevokedError();
99
+ }
100
+ return registration;
101
+ }
102
+ let entry;
103
+ const promise = adapter.registerContribution(binding, contribution).then((receipt) => {
104
+ const registration = {
105
+ key,
106
+ receipt,
107
+ dispose: () => {
108
+ if (entry.disposePromise !== undefined)
109
+ return entry.disposePromise;
110
+ entry.disposePromise = adapter.disposeContribution(binding, receipt).then(() => {
111
+ if (active.get(key) === entry)
112
+ active.delete(key);
113
+ }, (error) => {
114
+ entry.disposePromise = undefined;
115
+ throw error;
116
+ });
117
+ return entry.disposePromise;
118
+ },
119
+ };
120
+ return registration;
121
+ });
122
+ entry = { digest, promise };
123
+ active.set(key, entry);
124
+ let registered = false;
125
+ try {
126
+ const registration = await promise;
127
+ registered = true;
128
+ if (revoked) {
129
+ await registration.dispose().catch(() => undefined);
130
+ throw new FeatureContextRevokedError();
131
+ }
132
+ return registration;
133
+ }
134
+ catch (error) {
135
+ if (!registered && active.get(key) === entry)
136
+ active.delete(key);
137
+ throw error;
138
+ }
139
+ };
140
+ const registrar = (type) => ({
141
+ register: (input) => register(type, input),
142
+ });
143
+ const runWhileActive = async (operation) => {
144
+ assertActive();
145
+ const result = await operation();
146
+ assertActive();
147
+ return result;
148
+ };
149
+ const readConfig = async (key) => {
150
+ return runWhileActive(() => adapter.readConfig(binding, key));
151
+ };
152
+ const readSecret = async (key) => {
153
+ return runWhileActive(() => adapter.readSecret(binding, key));
154
+ };
155
+ const readState = async (key) => {
156
+ return runWhileActive(() => adapter.readState(binding, key));
157
+ };
158
+ const writeState = async (key, value) => {
159
+ return runWhileActive(() => adapter.writeState(binding, key, value));
160
+ };
161
+ const subscriptions = registrar('message-subscription');
162
+ const context = {
163
+ featureId: binding.featureId,
164
+ config: { get: readConfig },
165
+ secrets: { get: readSecret },
166
+ state: { get: readState, set: writeState },
167
+ identity: registrar('identity'),
168
+ scheduler: registrar('schedule'),
169
+ tools: registrar('tool'),
170
+ mcp: registrar('mcp'),
171
+ skills: registrar('skill'),
172
+ limbs: registrar('limb'),
173
+ webhooks: registrar('webhook'),
174
+ messaging: { subscribe: subscriptions.register },
175
+ services: registrar('service'),
176
+ connectors: registrar('connector'),
177
+ ui: registrar('ui'),
178
+ };
179
+ return {
180
+ context,
181
+ revoke: () => {
182
+ revoked = true;
183
+ if (revokePromise !== undefined)
184
+ return revokePromise;
185
+ revokePromise = Promise.all([...active.values()].map(async (entry) => (await entry.promise).dispose())).then(() => undefined, (error) => {
186
+ revokePromise = undefined;
187
+ throw error;
188
+ });
189
+ return revokePromise;
190
+ },
191
+ };
192
+ }
193
+ /** Validate one manifest truth and bind only activators for declared feature IDs. */
194
+ export function definePlugin(input) {
195
+ const validation = validateManifest(input.manifest);
196
+ if (!validation.valid) {
197
+ throw new TypeError(`plugin manifest is invalid: ${validation.errors[0]?.message ?? 'unknown error'}`);
198
+ }
199
+ const featureIds = new Set(validation.manifest.features.map((feature) => feature.id));
200
+ const activate = input.activate === undefined ? {} : input.activate;
201
+ for (const featureId of Object.keys(activate)) {
202
+ if (!featureIds.has(featureId)) {
203
+ throw new TypeError(`activator ${featureId} is not declared by the plugin manifest`);
204
+ }
205
+ }
206
+ const manifest = deepFreeze(structuredClone(validation.manifest));
207
+ return Object.freeze({ manifest, activate: Object.freeze({ ...activate }) });
208
+ }
209
+ //# sourceMappingURL=feature-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-context.js","sourceRoot":"","sources":["../src/feature-context.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,12 +6,15 @@
6
6
  * 2. Wire dispatch classifier (wire-dispatch, S1)
7
7
  *
8
8
  * The beta.8 handshake, beta.9 events.publish, beta.10 lifecycle, and beta.11
9
- * messaging rows are executable. The dispatch classifier gates every method
10
- * before standalone callbacks or Host-bound transport behavior can run.
9
+ * messaging rows are executable. beta.9 adds the Train B author facade around
10
+ * Host-issued feature bindings without widening the frozen M0 wire registry.
11
+ * The dispatch classifier gates every method before standalone callbacks or
12
+ * Host-bound transport behavior can run.
11
13
  */
12
14
  export { NdjsonFrameError, StdioRuntimeFatalError, createStdioChannel, startStdioRuntime, type StdioChannel, type StdioChannelOptions, type JsonObject, type StdioFrame, type StdioFrameErrorCode, type StdioFrameHandler, type StdioRuntimeFatalReason, type StdioRuntimeFatalErrorOptions, type StdioRuntimeOptions, } from './stdio-runtime.js';
13
15
  export { loadStandaloneManifest, ManifestStartupError, startStandaloneHost, type StandaloneHost, type StandaloneHostOptions, type StandaloneMessageDisposition, type StandaloneMessageHandler, } from './standalone-host.js';
14
16
  export { acceptSessionBinding, beginLocalHandshake, prepareActivation, type ActivatedHandshakeState, type ActivationHandshakeIntent, type BindingHandshakeIntent, type BoundHandshakeState, type CandidateHandshakeIntent, type CandidateHandshakeState, type HandshakePhase, type HandshakeValidationLevels, type LocalHandshakeIntent, type LocalHandshakeState, type LocalHandshakeTransition, type RejectedHandshakeState, } from './handshake-client.js';
15
17
  export { classifyFrame, type DispatchResult, type InFlightEntry, type RequestSnapshot, } from './wire-dispatch.js';
16
18
  export { EventsPublishError, createEventsPublisher, type EventsPublishErrorCode, type EventsPublishHostTransport, type StdioSessionLiveness, type EventsPublisherOptions, type EventsPublisher, } from './events-publisher.js';
19
+ export { ContributionConflictError, FeatureContextRevokedError, createFeatureContextSession, definePlugin, type ContributionRegistration, type ContributionRegistrar, type DefinedPlugin, type FeatureActivator, type FeatureBinding, type FeatureContext, type FeatureContextSession, type FeatureHostAdapter, type HostContributionReceipt, type PluginDefinitionInput, } from './feature-context.js';
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -6,12 +6,15 @@
6
6
  * 2. Wire dispatch classifier (wire-dispatch, S1)
7
7
  *
8
8
  * The beta.8 handshake, beta.9 events.publish, beta.10 lifecycle, and beta.11
9
- * messaging rows are executable. The dispatch classifier gates every method
10
- * before standalone callbacks or Host-bound transport behavior can run.
9
+ * messaging rows are executable. beta.9 adds the Train B author facade around
10
+ * Host-issued feature bindings without widening the frozen M0 wire registry.
11
+ * The dispatch classifier gates every method before standalone callbacks or
12
+ * Host-bound transport behavior can run.
11
13
  */
12
14
  export { NdjsonFrameError, StdioRuntimeFatalError, createStdioChannel, startStdioRuntime, } from './stdio-runtime.js';
13
15
  export { loadStandaloneManifest, ManifestStartupError, startStandaloneHost, } from './standalone-host.js';
14
16
  export { acceptSessionBinding, beginLocalHandshake, prepareActivation, } from './handshake-client.js';
15
17
  export { classifyFrame, } from './wire-dispatch.js';
16
18
  export { EventsPublishError, createEventsPublisher, } from './events-publisher.js';
19
+ export { ContributionConflictError, FeatureContextRevokedError, createFeatureContextSession, definePlugin, } from './feature-context.js';
17
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAUlB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAalB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,GAId,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAMtB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAUlB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAalB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,GAId,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAMtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,GAWb,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clowder-ai/plugin-sdk",
3
- "version": "0.1.0-beta.8",
3
+ "version": "0.1.0-beta.9",
4
4
  "description": "Schema-neutral standalone runtime primitives for Clowder AI plugins",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -21,13 +21,13 @@
21
21
  "scripts": {
22
22
  "build": "pnpm clean && tsc -p tsconfig.build.json",
23
23
  "typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.test.json",
24
- "test": "pnpm --filter @clowder-ai/plugin-contract build && pnpm build && node --import tsx --test src/stdio-runtime.test.ts src/wire-dispatch.test.ts src/contract-mirror.test.ts src/standalone-host.test.ts src/handshake-client.test.ts src/events-publisher.test.ts",
24
+ "test": "pnpm --filter @clowder-ai/plugin-contract build && pnpm build && node --import tsx --test src/stdio-runtime.test.ts src/wire-dispatch.test.ts src/contract-mirror.test.ts src/standalone-host.test.ts src/handshake-client.test.ts src/events-publisher.test.ts src/feature-context.test.ts",
25
25
  "lint": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.test.json",
26
26
  "prepack": "pnpm build",
27
27
  "clean": "rm -rf dist"
28
28
  },
29
29
  "dependencies": {
30
- "@clowder-ai/plugin-contract": "0.1.0-beta.12"
30
+ "@clowder-ai/plugin-contract": "0.1.0-beta.13"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^20.17.0",