@codespar/types 0.10.1 → 0.10.5

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.
@@ -1,3 +1,30 @@
1
+ /** One leg of the session contract suite. */
2
+ export type ContractLeg = "execute" | "send" | "sendStream" | "connections" | "close";
3
+ /** Options for {@link runContractSuite}. */
4
+ export interface ContractSuiteOptions {
5
+ /**
6
+ * Server ids to post when opening the session. Defaults to `[]`, matching a
7
+ * consumer that brings no servers and relies on whatever the backend
8
+ * provisions by default.
9
+ */
10
+ servers?: string[];
11
+ /**
12
+ * Which legs to register. Defaults to all five legs in declaration order.
13
+ * Pass a subset to run only those legs (e.g. a consumer whose backend does
14
+ * not implement streaming can omit `"sendStream"`).
15
+ */
16
+ legs?: ContractLeg[];
17
+ }
18
+ /**
19
+ * Resolve which legs to run from the options. Returns all five legs (in
20
+ * declaration order) when `legs` is unset, otherwise the provided subset.
21
+ */
22
+ export declare function selectLegs(opts?: ContractSuiteOptions): ContractLeg[];
23
+ /** Build the session-create request body, defaulting `servers` to `[]`. */
24
+ export declare function buildSessionCreateBody(opts?: ContractSuiteOptions): {
25
+ servers: string[];
26
+ user_id: string;
27
+ };
1
28
  export declare class InvalidBaseUrlError extends Error {
2
29
  constructor(url: string);
3
30
  }
@@ -9,8 +36,14 @@ export declare class InvalidBaseUrlError extends Error {
9
36
  * invalid URLs so misconfigured CI environments fail early rather than
10
37
  * leaking the apiKey to an arbitrary host.
11
38
  *
39
+ * The optional `opts` argument lets a consumer choose which servers to post on
40
+ * session open and which subset of legs to run. With no `opts` (or with neither
41
+ * field set) the suite behaves exactly as before: it posts `servers: []` and
42
+ * registers all five legs in declaration order.
43
+ *
12
44
  * @param baseUrl - API base URL (e.g. "https://your-runtime.example" or "http://localhost:3000")
13
45
  * @param apiKey - Bearer token for session creation
46
+ * @param opts - Optional servers list and leg selection (see {@link ContractSuiteOptions})
14
47
  */
15
- export declare function runContractSuite(baseUrl: string, apiKey: string): void;
48
+ export declare function runContractSuite(baseUrl: string, apiKey: string, opts?: ContractSuiteOptions): void;
16
49
  //# sourceMappingURL=contract-suite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-suite.d.ts","sourceRoot":"","sources":["../../src/testing/contract-suite.ts"],"names":[],"mappings":"AAGA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,GAAG,EAAE,MAAM;CAMxB;AAmKD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA8EtE"}
1
+ {"version":3,"file":"contract-suite.d.ts","sourceRoot":"","sources":["../../src/testing/contract-suite.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;AAEtF,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;CACtB;AAWD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,WAAW,EAAE,CAErE;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAEA;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,GAAG,EAAE,MAAM;CAMxB;AAuKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,oBAAoB,GAC1B,IAAI,CA0FN"}
@@ -1,4 +1,23 @@
1
1
  import { describe, it, expect, afterEach } from "vitest";
2
+ /** Every leg, in the order they are registered for a default run. */
3
+ const ALL_LEGS = [
4
+ "execute",
5
+ "send",
6
+ "sendStream",
7
+ "connections",
8
+ "close",
9
+ ];
10
+ /**
11
+ * Resolve which legs to run from the options. Returns all five legs (in
12
+ * declaration order) when `legs` is unset, otherwise the provided subset.
13
+ */
14
+ export function selectLegs(opts) {
15
+ return opts?.legs ? [...opts.legs] : [...ALL_LEGS];
16
+ }
17
+ /** Build the session-create request body, defaulting `servers` to `[]`. */
18
+ export function buildSessionCreateBody(opts) {
19
+ return { servers: opts?.servers ?? [], user_id: "contract-suite" };
20
+ }
2
21
  export class InvalidBaseUrlError extends Error {
3
22
  constructor(url) {
4
23
  super(`Invalid base URL "${url}" — must use https:// protocol unless the host is localhost`);
@@ -86,7 +105,7 @@ async function* parseSse(body) {
86
105
  }
87
106
  // Builds a minimal SessionBase from raw fetch calls so the contract suite
88
107
  // can run against any backend that implements the codespar session API.
89
- async function openSession(baseUrl, apiKey) {
108
+ async function openSession(baseUrl, apiKey, opts) {
90
109
  const headers = {
91
110
  "Content-Type": "application/json",
92
111
  Authorization: `Bearer ${apiKey}`,
@@ -94,7 +113,7 @@ async function openSession(baseUrl, apiKey) {
94
113
  const res = await fetch(`${baseUrl}/v1/sessions`, {
95
114
  method: "POST",
96
115
  headers,
97
- body: JSON.stringify({ servers: [], user_id: "contract-suite" }),
116
+ body: JSON.stringify(buildSessionCreateBody(opts)),
98
117
  });
99
118
  if (!res.ok) {
100
119
  const text = await res.text();
@@ -176,11 +195,18 @@ async function openSession(baseUrl, apiKey) {
176
195
  * invalid URLs so misconfigured CI environments fail early rather than
177
196
  * leaking the apiKey to an arbitrary host.
178
197
  *
198
+ * The optional `opts` argument lets a consumer choose which servers to post on
199
+ * session open and which subset of legs to run. With no `opts` (or with neither
200
+ * field set) the suite behaves exactly as before: it posts `servers: []` and
201
+ * registers all five legs in declaration order.
202
+ *
179
203
  * @param baseUrl - API base URL (e.g. "https://your-runtime.example" or "http://localhost:3000")
180
204
  * @param apiKey - Bearer token for session creation
205
+ * @param opts - Optional servers list and leg selection (see {@link ContractSuiteOptions})
181
206
  */
182
- export function runContractSuite(baseUrl, apiKey) {
207
+ export function runContractSuite(baseUrl, apiKey, opts) {
183
208
  validateBaseUrl(baseUrl);
209
+ const legs = new Set(selectLegs(opts));
184
210
  describe("session contract suite", () => {
185
211
  let session = null;
186
212
  afterEach(async () => {
@@ -192,66 +218,76 @@ export function runContractSuite(baseUrl, apiKey) {
192
218
  session = null;
193
219
  }
194
220
  });
195
- it("execute() calls a registered tool and returns a ToolResult", async () => {
196
- session = await openSession(baseUrl, apiKey);
197
- const result = await session.execute("codespar_list_tools", {});
198
- expect(result).toMatchObject({
199
- success: expect.any(Boolean),
200
- data: expect.anything(),
201
- error: expect.anything(),
202
- duration: expect.any(Number),
203
- server: expect.any(String),
204
- tool: expect.any(String),
221
+ if (legs.has("execute")) {
222
+ it("execute() calls a registered tool and returns a ToolResult", async () => {
223
+ session = await openSession(baseUrl, apiKey, opts);
224
+ const result = await session.execute("codespar_list_tools", {});
225
+ expect(result).toMatchObject({
226
+ success: expect.any(Boolean),
227
+ data: expect.anything(),
228
+ error: expect.anything(),
229
+ duration: expect.any(Number),
230
+ server: expect.any(String),
231
+ tool: expect.any(String),
232
+ });
205
233
  });
206
- });
207
- it("send() returns a SendResult with a message field", async () => {
208
- session = await openSession(baseUrl, apiKey);
209
- const result = await session.send("hello");
210
- expect(result).toMatchObject({
211
- message: expect.any(String),
212
- tool_calls: expect.any(Array),
213
- iterations: expect.any(Number),
234
+ }
235
+ if (legs.has("send")) {
236
+ it("send() returns a SendResult with a message field", async () => {
237
+ session = await openSession(baseUrl, apiKey, opts);
238
+ const result = await session.send("hello");
239
+ expect(result).toMatchObject({
240
+ message: expect.any(String),
241
+ tool_calls: expect.any(Array),
242
+ iterations: expect.any(Number),
243
+ });
214
244
  });
215
- });
216
- it("sendStream() yields well-typed StreamEvents including done", async () => {
217
- session = await openSession(baseUrl, apiKey);
218
- const events = [];
219
- for await (const ev of session.sendStream("hello")) {
220
- events.push(ev);
221
- if (ev.type === "done" || ev.type === "error")
222
- break;
223
- }
224
- expect(events.length).toBeGreaterThan(0);
225
- const types = new Set(events.map((e) => e.type));
226
- // Every event type must be one of the six discriminated variants.
227
- const valid = new Set([
228
- "user_message",
229
- "assistant_text",
230
- "tool_use",
231
- "tool_result",
232
- "done",
233
- "error",
234
- ]);
235
- for (const t of types) {
236
- expect(valid.has(t)).toBe(true);
237
- }
238
- });
239
- it("connections() returns entries with id and connected fields", async () => {
240
- session = await openSession(baseUrl, apiKey);
241
- const conns = await session.connections();
242
- expect(Array.isArray(conns)).toBe(true);
243
- for (const c of conns) {
244
- expect(typeof c.id).toBe("string");
245
- expect(typeof c.connected).toBe("boolean");
246
- }
247
- });
248
- it("close() transitions session.status to closed", async () => {
249
- session = await openSession(baseUrl, apiKey);
250
- expect(session.status).toBe("active");
251
- await session.close();
252
- expect(session.status).toBe("closed");
253
- session = null; // afterEach guard already closed
254
- });
245
+ }
246
+ if (legs.has("sendStream")) {
247
+ it("sendStream() yields well-typed StreamEvents including done", async () => {
248
+ session = await openSession(baseUrl, apiKey, opts);
249
+ const events = [];
250
+ for await (const ev of session.sendStream("hello")) {
251
+ events.push(ev);
252
+ if (ev.type === "done" || ev.type === "error")
253
+ break;
254
+ }
255
+ expect(events.length).toBeGreaterThan(0);
256
+ const types = new Set(events.map((e) => e.type));
257
+ // Every event type must be one of the six discriminated variants.
258
+ const valid = new Set([
259
+ "user_message",
260
+ "assistant_text",
261
+ "tool_use",
262
+ "tool_result",
263
+ "done",
264
+ "error",
265
+ ]);
266
+ for (const t of types) {
267
+ expect(valid.has(t)).toBe(true);
268
+ }
269
+ });
270
+ }
271
+ if (legs.has("connections")) {
272
+ it("connections() returns entries with id and connected fields", async () => {
273
+ session = await openSession(baseUrl, apiKey, opts);
274
+ const conns = await session.connections();
275
+ expect(Array.isArray(conns)).toBe(true);
276
+ for (const c of conns) {
277
+ expect(typeof c.id).toBe("string");
278
+ expect(typeof c.connected).toBe("boolean");
279
+ }
280
+ });
281
+ }
282
+ if (legs.has("close")) {
283
+ it("close() transitions session.status to closed", async () => {
284
+ session = await openSession(baseUrl, apiKey, opts);
285
+ expect(session.status).toBe("active");
286
+ await session.close();
287
+ expect(session.status).toBe("closed");
288
+ session = null; // afterEach guard — already closed
289
+ });
290
+ }
255
291
  });
256
292
  }
257
293
  //# sourceMappingURL=contract-suite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-suite.js","sourceRoot":"","sources":["../../src/testing/contract-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract-suite.js","sourceRoot":"","sources":["../../src/testing/contract-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Unit tests for the option-handling surface of the session contract suite.
3
+ *
4
+ * `runContractSuite` registers Vitest cases against a live backend, so it
5
+ * cannot be exercised directly here without a running server. Instead we test
6
+ * the pure helpers that carry all of the option logic — `selectLegs` (leg
7
+ * selection) and `buildSessionCreateBody` (servers passthrough) — plus assert
8
+ * that `runContractSuite` registers only the selected legs by intercepting the
9
+ * `it` registrations through a mocked `vitest` module.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=contract-suite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-suite.test.d.ts","sourceRoot":"","sources":["../../src/testing/contract-suite.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Unit tests for the option-handling surface of the session contract suite.
3
+ *
4
+ * `runContractSuite` registers Vitest cases against a live backend, so it
5
+ * cannot be exercised directly here without a running server. Instead we test
6
+ * the pure helpers that carry all of the option logic — `selectLegs` (leg
7
+ * selection) and `buildSessionCreateBody` (servers passthrough) — plus assert
8
+ * that `runContractSuite` registers only the selected legs by intercepting the
9
+ * `it` registrations through a mocked `vitest` module.
10
+ */
11
+ import { describe, it, expect, vi } from "vitest";
12
+ import { selectLegs, buildSessionCreateBody, } from "./contract-suite.js";
13
+ describe("selectLegs", () => {
14
+ const ALL = ["execute", "send", "sendStream", "connections", "close"];
15
+ it("returns all five legs in declaration order when no opts given", () => {
16
+ expect(selectLegs()).toEqual(ALL);
17
+ expect(selectLegs({})).toEqual(ALL);
18
+ expect(selectLegs({ servers: ["a"] })).toEqual(ALL);
19
+ });
20
+ it("returns exactly the provided subset", () => {
21
+ expect(selectLegs({ legs: ["execute", "connections", "close"] })).toEqual([
22
+ "execute",
23
+ "connections",
24
+ "close",
25
+ ]);
26
+ });
27
+ it("returns a fresh array (does not alias the caller's legs)", () => {
28
+ const input = ["send"];
29
+ const out = selectLegs({ legs: input });
30
+ expect(out).toEqual(["send"]);
31
+ expect(out).not.toBe(input);
32
+ });
33
+ });
34
+ describe("buildSessionCreateBody", () => {
35
+ it("defaults servers to [] when no opts given", () => {
36
+ expect(buildSessionCreateBody()).toEqual({ servers: [], user_id: "contract-suite" });
37
+ expect(buildSessionCreateBody({})).toEqual({ servers: [], user_id: "contract-suite" });
38
+ });
39
+ it("passes the provided servers list through unchanged", () => {
40
+ expect(buildSessionCreateBody({ servers: ["codespar_shop", "pix"] })).toEqual({
41
+ servers: ["codespar_shop", "pix"],
42
+ user_id: "contract-suite",
43
+ });
44
+ });
45
+ it("leg selection does not affect the posted servers", () => {
46
+ expect(buildSessionCreateBody({ servers: ["only"], legs: ["execute"] })).toEqual({ servers: ["only"], user_id: "contract-suite" });
47
+ });
48
+ });
49
+ /**
50
+ * Leg-gating end-to-end: import the suite against a mocked `vitest` so that
51
+ * `describe`/`it`/`afterEach` are inert spies. Registering the suite then
52
+ * records which leg names were passed to `it`, which is what a real Vitest
53
+ * run would schedule. This proves the default registers all five and a
54
+ * subset registers only those, without booting a backend.
55
+ */
56
+ describe("runContractSuite leg registration", () => {
57
+ async function registeredLegNames(opts) {
58
+ vi.resetModules();
59
+ const names = [];
60
+ vi.doMock("vitest", () => ({
61
+ describe: (_name, fn) => fn(),
62
+ it: (name) => {
63
+ names.push(name);
64
+ },
65
+ afterEach: () => { },
66
+ expect: () => ({}),
67
+ }));
68
+ const mod = await import("./contract-suite.js");
69
+ mod.runContractSuite("https://runtime.example", "csk_test", opts);
70
+ vi.doUnmock("vitest");
71
+ return names;
72
+ }
73
+ it("registers all five legs by default", async () => {
74
+ const names = await registeredLegNames();
75
+ expect(names).toHaveLength(5);
76
+ expect(names.some((n) => n.startsWith("execute()"))).toBe(true);
77
+ expect(names.some((n) => n.startsWith("send()"))).toBe(true);
78
+ expect(names.some((n) => n.startsWith("sendStream()"))).toBe(true);
79
+ expect(names.some((n) => n.startsWith("connections()"))).toBe(true);
80
+ expect(names.some((n) => n.startsWith("close()"))).toBe(true);
81
+ });
82
+ it("registers only the selected legs and skips the rest", async () => {
83
+ const names = await registeredLegNames({ legs: ["execute", "connections", "close"] });
84
+ expect(names).toHaveLength(3);
85
+ expect(names.some((n) => n.startsWith("execute()"))).toBe(true);
86
+ expect(names.some((n) => n.startsWith("connections()"))).toBe(true);
87
+ expect(names.some((n) => n.startsWith("close()"))).toBe(true);
88
+ expect(names.some((n) => n.startsWith("send()"))).toBe(false);
89
+ expect(names.some((n) => n.startsWith("sendStream()"))).toBe(false);
90
+ });
91
+ });
92
+ //# sourceMappingURL=contract-suite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-suite.test.js","sourceRoot":"","sources":["../../src/testing/contract-suite.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EACL,UAAU,EACV,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,GAAG,GAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAErF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACxE,SAAS;YACT,aAAa;YACb,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAkB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,OAAO,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC;YACjC,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACJ,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CACjE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,KAAK,UAAU,kBAAkB,CAC/B,IAEI;QAEJ,EAAE,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACzB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAc,EAAE,EAAE,CAAC,EAAE,EAAE;YACjD,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE;gBACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,GAAG,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codespar/types",
3
- "version": "0.10.1",
3
+ "version": "0.10.5",
4
4
  "description": "Shared session interface contract for codespar runtimes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",