@neta-art/cohub 3.0.0 → 3.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.
Files changed (96) hide show
  1. package/README.md +33 -2
  2. package/dist/{board.d.ts → board/animation.d.ts} +4 -2
  3. package/dist/{chunks/board.js → board/animation.js} +5 -44
  4. package/dist/board/codec.d.ts +25 -0
  5. package/dist/board/codec.js +252 -0
  6. package/dist/board/core/bindings.d.ts +45 -0
  7. package/dist/board/core/bindings.js +162 -0
  8. package/dist/board/core/draw-geometry.d.ts +31 -0
  9. package/dist/board/core/draw-geometry.js +183 -0
  10. package/dist/board/core/export-assets.d.ts +14 -0
  11. package/dist/board/core/export-assets.js +22 -0
  12. package/dist/board/core/export-plan.d.ts +84 -0
  13. package/dist/board/core/export-plan.js +128 -0
  14. package/dist/board/core/file-preview.d.ts +176 -0
  15. package/dist/board/core/file-preview.js +271 -0
  16. package/dist/board/core/palette.d.ts +42 -0
  17. package/dist/board/core/palette.js +138 -0
  18. package/dist/board/core/shape-definition.d.ts +35 -0
  19. package/dist/board/core/shape-definition.js +64 -0
  20. package/dist/board/core/shape-types.d.ts +144 -0
  21. package/dist/board/core/shape-types.js +27 -0
  22. package/dist/board/core/text-metrics.d.ts +18 -0
  23. package/dist/board/core/text-metrics.js +43 -0
  24. package/dist/board/export/index.d.ts +56 -0
  25. package/dist/board/export/index.js +86 -0
  26. package/dist/board/export/scene.d.ts +35 -0
  27. package/dist/board/export/scene.js +69 -0
  28. package/dist/board/geometry.d.ts +131 -0
  29. package/dist/board/geometry.js +468 -0
  30. package/dist/board/headless/index.d.ts +69 -0
  31. package/dist/board/headless/index.js +150 -0
  32. package/dist/board/image-key.d.ts +19 -0
  33. package/dist/board/image-key.js +34 -0
  34. package/dist/board/index.d.ts +16 -0
  35. package/dist/board/index.js +16 -0
  36. package/dist/board/render/index.d.ts +6 -0
  37. package/dist/board/render/index.js +6 -0
  38. package/dist/board/render/palette.d.ts +5 -0
  39. package/dist/board/render/palette.js +30 -0
  40. package/dist/board/render/renderers/arrow-card-renderer.d.ts +5 -0
  41. package/dist/board/render/renderers/arrow-card-renderer.js +157 -0
  42. package/dist/board/render/renderers/base-card-renderer.d.ts +46 -0
  43. package/dist/board/render/renderers/base-card-renderer.js +153 -0
  44. package/dist/board/render/renderers/board-renderer-registry.d.ts +85 -0
  45. package/dist/board/render/renderers/board-renderer-registry.js +43 -0
  46. package/dist/board/render/renderers/draw-card-renderer.d.ts +5 -0
  47. package/dist/board/render/renderers/draw-card-renderer.js +82 -0
  48. package/dist/board/render/renderers/far-plate.d.ts +39 -0
  49. package/dist/board/render/renderers/far-plate.js +92 -0
  50. package/dist/board/render/renderers/file-card-renderer.d.ts +33 -0
  51. package/dist/board/render/renderers/file-card-renderer.js +371 -0
  52. package/dist/board/render/renderers/frame-card-renderer.d.ts +5 -0
  53. package/dist/board/render/renderers/frame-card-renderer.js +99 -0
  54. package/dist/board/render/renderers/geo-card-renderer.d.ts +5 -0
  55. package/dist/board/render/renderers/geo-card-renderer.js +128 -0
  56. package/dist/board/render/renderers/image-card-renderer.d.ts +8 -0
  57. package/dist/board/render/renderers/image-card-renderer.js +138 -0
  58. package/dist/board/render/renderers/note-card-renderer.d.ts +5 -0
  59. package/dist/board/render/renderers/note-card-renderer.js +112 -0
  60. package/dist/board/render/renderers/text-card-renderer.d.ts +7 -0
  61. package/dist/board/render/renderers/text-card-renderer.js +94 -0
  62. package/dist/board/render/renderers/unknown-card-renderer.d.ts +5 -0
  63. package/dist/board/render/renderers/unknown-card-renderer.js +102 -0
  64. package/dist/board/render/renderers/video-card-renderer.d.ts +7 -0
  65. package/dist/board/render/renderers/video-card-renderer.js +146 -0
  66. package/dist/board/render/text-measurement.d.ts +30 -0
  67. package/dist/board/render/text-measurement.js +57 -0
  68. package/dist/board/render/text-resolution.d.ts +16 -0
  69. package/dist/board/render/text-resolution.js +43 -0
  70. package/dist/board/render/themes/board-theme-registry.d.ts +20 -0
  71. package/dist/board/render/themes/board-theme-registry.js +13 -0
  72. package/dist/board/render/themes/clean-theme.d.ts +5 -0
  73. package/dist/board/render/themes/clean-theme.js +102 -0
  74. package/dist/chunks/http.d.ts +10 -40
  75. package/dist/chunks/http.js +26 -4
  76. package/dist/chunks/transport.js +4 -2
  77. package/dist/chunks/websocket.d.ts +832 -21
  78. package/dist/chunks/websocket.js +19 -2
  79. package/dist/http.d.ts +2 -3
  80. package/dist/index.d.ts +100 -5
  81. package/dist/index.js +391 -1
  82. package/dist/protocol/dist/board-constants.d.ts +23 -0
  83. package/dist/protocol/dist/board-constants.js +60 -0
  84. package/dist/protocol/dist/board-document.d.ts +1124 -0
  85. package/dist/protocol/dist/board-document.js +331 -0
  86. package/dist/protocol/dist/board.d.ts +186 -0
  87. package/dist/protocol/dist/board.js +207 -0
  88. package/dist/protocol/dist/index.d.ts +5 -0
  89. package/dist/protocol/dist/index.js +5 -0
  90. package/dist/protocol/dist/provenance.js +12 -0
  91. package/dist/protocol/dist/realtime/board-awareness.d.ts +1 -0
  92. package/dist/protocol/dist/realtime/board-awareness.js +117 -0
  93. package/dist/protocol/dist/realtime/types.d.ts +2 -0
  94. package/package.json +39 -4
  95. package/dist/board.js +0 -2
  96. package/dist/chunks/board.d.ts +0 -2589
@@ -0,0 +1,207 @@
1
+ import "./board-constants.js";
2
+ import { z } from "zod";
3
+ //#region ../protocol/dist/board.js
4
+ const BOARD_EXTENSION = ".board";
5
+ const BOARD_DOCUMENT_KIND = "cohub.board";
6
+ const BOARD_MANIFEST_KIND = "cohub.board.manifest";
7
+ const idSchema = z.string().min(1).max(160);
8
+ const extensionIdSchema = z.string().regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$/).max(160);
9
+ const jsonObjectSchema = z.record(z.string(), z.unknown());
10
+ const finiteSchema = z.number().finite();
11
+ const BoardManifestSchema = z.object({
12
+ kind: z.literal(BOARD_MANIFEST_KIND),
13
+ version: z.literal(1),
14
+ boardId: z.string().uuid(),
15
+ title: z.string().min(1).max(255)
16
+ });
17
+ var InvalidBoardFileError = class extends Error {
18
+ code = "INVALID_BOARD_FILE";
19
+ constructor(message = "Board file is invalid") {
20
+ super(message);
21
+ this.name = "InvalidBoardFileError";
22
+ }
23
+ };
24
+ function parseBoardManifest(input) {
25
+ let value = input;
26
+ if (typeof input === "string") try {
27
+ value = JSON.parse(input);
28
+ } catch {
29
+ throw new InvalidBoardFileError("Board file must contain valid JSON");
30
+ }
31
+ const parsed = BoardManifestSchema.safeParse(value);
32
+ if (!parsed.success) throw new InvalidBoardFileError("Board file must contain a valid boardId");
33
+ return parsed.data;
34
+ }
35
+ function serializeBoardManifest(manifest) {
36
+ return `${JSON.stringify(BoardManifestSchema.parse(manifest), null, 2)}\n`;
37
+ }
38
+ const BoardTargetSchema = z.discriminatedUnion("type", [
39
+ z.object({
40
+ type: z.literal("node"),
41
+ nodeId: idSchema
42
+ }),
43
+ z.object({
44
+ type: z.literal("effect"),
45
+ effectId: idSchema
46
+ }),
47
+ z.object({ type: z.literal("board") }),
48
+ z.object({ type: z.literal("camera") })
49
+ ]);
50
+ const BoardAssetRefSchema = z.object({
51
+ type: z.enum(["space-file", "extension"]),
52
+ ref: z.string().min(1).max(4096),
53
+ digest: z.string().min(16).max(160).optional()
54
+ });
55
+ const BoardKeyframeSchema = z.object({
56
+ at: finiteSchema.nonnegative(),
57
+ value: z.unknown(),
58
+ easing: z.string().min(1).max(80).optional()
59
+ });
60
+ const BoardClipSchema = z.object({
61
+ id: idSchema,
62
+ sequenceId: idSchema,
63
+ kind: extensionIdSchema,
64
+ kindVersion: z.number().int().positive(),
65
+ target: BoardTargetSchema,
66
+ start: finiteSchema.nonnegative(),
67
+ duration: finiteSchema.positive(),
68
+ layer: z.enum([
69
+ "behind",
70
+ "content",
71
+ "front",
72
+ "screen"
73
+ ]).default("content"),
74
+ fill: z.enum([
75
+ "none",
76
+ "backwards",
77
+ "forwards",
78
+ "both"
79
+ ]).default("none"),
80
+ easing: z.string().min(1).max(80).default("linear"),
81
+ params: jsonObjectSchema.default({}),
82
+ keyframes: z.array(BoardKeyframeSchema).default([]),
83
+ assetRefs: z.array(BoardAssetRefSchema).default([]),
84
+ seed: z.string().min(1).max(160),
85
+ metadata: jsonObjectSchema.default({})
86
+ });
87
+ const BoardEffectSchema = z.object({
88
+ id: idSchema,
89
+ boardId: z.string().uuid(),
90
+ target: z.discriminatedUnion("type", [z.object({
91
+ type: z.literal("node"),
92
+ nodeId: idSchema
93
+ }), z.object({ type: z.literal("board") })]),
94
+ kind: extensionIdSchema,
95
+ kindVersion: z.number().int().positive(),
96
+ enabled: z.boolean().default(true),
97
+ lifecycle: z.enum([
98
+ "persistent",
99
+ "when-visible",
100
+ "manual"
101
+ ]),
102
+ timeOrigin: z.enum([
103
+ "board",
104
+ "visible",
105
+ "activation"
106
+ ]),
107
+ layer: z.enum([
108
+ "behind",
109
+ "front",
110
+ "screen"
111
+ ]).default("front"),
112
+ seed: z.string().min(1).max(160),
113
+ params: jsonObjectSchema.default({}),
114
+ assetRefs: z.array(BoardAssetRefSchema).default([]),
115
+ metadata: jsonObjectSchema.default({}),
116
+ revision: z.number().int().nonnegative()
117
+ });
118
+ const BoardSequenceSchema = z.object({
119
+ id: idSchema,
120
+ boardId: z.string().uuid(),
121
+ name: z.string().min(1).max(255),
122
+ duration: finiteSchema.nonnegative(),
123
+ seed: z.string().min(1).max(160),
124
+ restPose: jsonObjectSchema.default({}),
125
+ metadata: jsonObjectSchema.default({}),
126
+ revision: z.number().int().nonnegative()
127
+ });
128
+ const BoardNodeInputSchema = z.object({
129
+ nodeId: idSchema,
130
+ type: z.string().min(1).max(40),
131
+ parentId: idSchema.nullable(),
132
+ orderKey: z.string().max(4096).nullable(),
133
+ x: finiteSchema,
134
+ y: finiteSchema,
135
+ width: finiteSchema.positive(),
136
+ height: finiteSchema.positive(),
137
+ rotation: finiteSchema,
138
+ refKind: z.string().max(40).nullable(),
139
+ refPath: z.string().max(4096).nullable(),
140
+ refUrl: z.string().max(4096).nullable(),
141
+ view: jsonObjectSchema,
142
+ style: jsonObjectSchema,
143
+ data: jsonObjectSchema
144
+ });
145
+ z.object({
146
+ path: z.string().min(1),
147
+ title: z.string().min(1).max(255).optional(),
148
+ nodes: z.array(BoardNodeInputSchema).max(5e4).optional(),
149
+ effects: z.array(BoardEffectSchema.omit({
150
+ boardId: true,
151
+ revision: true
152
+ })).optional(),
153
+ sequences: z.array(z.object({
154
+ sequence: BoardSequenceSchema.omit({
155
+ boardId: true,
156
+ revision: true
157
+ }),
158
+ clips: z.array(BoardClipSchema.omit({ sequenceId: true }))
159
+ })).optional()
160
+ });
161
+ z.object({
162
+ include: z.array(z.enum([
163
+ "nodes",
164
+ "effects",
165
+ "sequences",
166
+ "clips",
167
+ "playback"
168
+ ])).optional(),
169
+ viewport: z.object({
170
+ x: finiteSchema,
171
+ y: finiteSchema,
172
+ width: finiteSchema.positive(),
173
+ height: finiteSchema.positive()
174
+ }).optional()
175
+ });
176
+ z.discriminatedUnion("type", [
177
+ z.object({
178
+ commandId: idSchema,
179
+ type: z.literal("play"),
180
+ sequenceId: idSchema,
181
+ position: finiteSchema.nonnegative().optional(),
182
+ timeScale: finiteSchema.positive().max(4).optional(),
183
+ shared: z.boolean().optional(),
184
+ seed: idSchema.optional()
185
+ }),
186
+ z.object({
187
+ commandId: idSchema,
188
+ type: z.literal("pause"),
189
+ playbackId: z.string().uuid()
190
+ }),
191
+ z.object({
192
+ commandId: idSchema,
193
+ type: z.literal("seek"),
194
+ playbackId: z.string().uuid(),
195
+ position: finiteSchema.nonnegative()
196
+ }),
197
+ z.object({
198
+ commandId: idSchema,
199
+ type: z.literal("stop"),
200
+ playbackId: z.string().uuid()
201
+ })
202
+ ]);
203
+ function isBoardPath(path) {
204
+ return path.toLowerCase().endsWith(BOARD_EXTENSION);
205
+ }
206
+ //#endregion
207
+ export { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BOARD_MANIFEST_KIND, BoardAssetRefSchema, BoardClipSchema, BoardEffectSchema, BoardKeyframeSchema, BoardManifestSchema, BoardNodeInputSchema, BoardSequenceSchema, BoardTargetSchema, InvalidBoardFileError, isBoardPath, parseBoardManifest, serializeBoardManifest };
@@ -0,0 +1,5 @@
1
+ import { BoardCapability, BoardRenderCost } from "./board-constants.js";
2
+ import { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BoardAssetRef, BoardAssetRefSchema, BoardClip, BoardClipSchema, BoardDiagnostic, BoardEffect, BoardEffectSchema, BoardManifest, BoardManifestSchema, BoardNodeInput, BoardNodeRecord, BoardRecord, BoardSequence, BoardSequenceSchema, BoardTarget, BoardTargetSchema, BoardValidationResult, InvalidBoardFileError, isBoardPath, parseBoardManifest, serializeBoardManifest } from "./board.js";
3
+ import "./realtime/board-awareness.js";
4
+ import "./realtime/types.js";
5
+ export { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BoardAssetRef, BoardAssetRefSchema, BoardClip, BoardClipSchema, BoardDiagnostic, BoardEffect, BoardEffectSchema, BoardManifest, BoardManifestSchema, BoardNodeInput, BoardNodeRecord, BoardRecord, BoardSequence, BoardSequenceSchema, BoardTarget, BoardTargetSchema, BoardValidationResult, InvalidBoardFileError, isBoardPath, parseBoardManifest, serializeBoardManifest };
@@ -0,0 +1,5 @@
1
+ import "./board-constants.js";
2
+ import { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BOARD_MANIFEST_KIND, BoardAssetRefSchema, BoardClipSchema, BoardEffectSchema, BoardKeyframeSchema, BoardManifestSchema, BoardNodeInputSchema, BoardSequenceSchema, BoardTargetSchema, InvalidBoardFileError, isBoardPath, parseBoardManifest, serializeBoardManifest } from "./board.js";
3
+ import { BoardAwarenessDrawPointSchema, BoardAwarenessFrameSchema, BoardAwarenessGestureSchema, BoardAwarenessNodePreviewSchema, BoardAwarenessPointSchema, BoardAwarenessStateUpdateSchema, BoardAwarenessUpdateSchema } from "./realtime/board-awareness.js";
4
+ import { COHUB_SOURCE_HEADER } from "./provenance.js";
5
+ export { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BOARD_MANIFEST_KIND, BoardAssetRefSchema, BoardAwarenessDrawPointSchema, BoardAwarenessFrameSchema, BoardAwarenessGestureSchema, BoardAwarenessNodePreviewSchema, BoardAwarenessPointSchema, BoardAwarenessStateUpdateSchema, BoardAwarenessUpdateSchema, BoardClipSchema, BoardEffectSchema, BoardKeyframeSchema, BoardManifestSchema, BoardNodeInputSchema, BoardSequenceSchema, BoardTargetSchema, COHUB_SOURCE_HEADER, InvalidBoardFileError, isBoardPath, parseBoardManifest, serializeBoardManifest };
@@ -0,0 +1,12 @@
1
+ //#region ../protocol/dist/provenance.js
2
+ /** Request provenance via X-Cohub-Source-* headers. Never used for authorization. */
3
+ const COHUB_SOURCE_HEADER = {
4
+ space: "X-Cohub-Source-Space",
5
+ session: "X-Cohub-Source-Session",
6
+ turn: "X-Cohub-Source-Turn",
7
+ toolCall: "X-Cohub-Source-Tool-Call",
8
+ via: "X-Cohub-Source-Via"
9
+ };
10
+ Object.values(COHUB_SOURCE_HEADER);
11
+ //#endregion
12
+ export { COHUB_SOURCE_HEADER };
@@ -0,0 +1 @@
1
+ import { z } from "zod";
@@ -0,0 +1,117 @@
1
+ import { z } from "zod";
2
+ //#region ../protocol/dist/realtime/board-awareness.js
3
+ const idSchema = z.string().min(1).max(160);
4
+ const finiteSchema = z.number().finite();
5
+ const BoardAwarenessPointSchema = z.object({
6
+ x: finiteSchema,
7
+ y: finiteSchema
8
+ });
9
+ const BoardAwarenessDrawPointSchema = BoardAwarenessPointSchema.extend({ p: finiteSchema.min(0).max(1) });
10
+ const BoardAwarenessFrameSchema = z.object({
11
+ x: finiteSchema,
12
+ y: finiteSchema,
13
+ width: finiteSchema.positive(),
14
+ height: finiteSchema.positive(),
15
+ rotation: finiteSchema
16
+ });
17
+ const arrowEndpointSchema = z.union([z.object({
18
+ kind: z.literal("point"),
19
+ x: finiteSchema,
20
+ y: finiteSchema
21
+ }), z.object({
22
+ kind: z.literal("binding"),
23
+ target: idSchema,
24
+ nx: finiteSchema,
25
+ ny: finiteSchema,
26
+ precise: z.boolean()
27
+ })]);
28
+ const BoardAwarenessNodePreviewSchema = z.object({
29
+ nodeId: idSchema,
30
+ frame: BoardAwarenessFrameSchema,
31
+ arrow: z.object({
32
+ start: arrowEndpointSchema,
33
+ end: arrowEndpointSchema,
34
+ bend: finiteSchema
35
+ }).optional()
36
+ });
37
+ const BoardAwarenessStateUpdateSchema = z.object({
38
+ type: z.literal("state"),
39
+ client: z.object({ formFactor: z.enum(["desktop", "mobile"]) }).optional(),
40
+ cursor: BoardAwarenessPointSchema.extend({ pointerType: z.enum([
41
+ "mouse",
42
+ "pen",
43
+ "touch"
44
+ ]) }).nullable(),
45
+ tool: z.string().min(1).max(40),
46
+ selection: z.object({
47
+ ids: z.array(idSchema).max(64),
48
+ count: z.number().int().nonnegative().max(5e4),
49
+ bounds: BoardAwarenessFrameSchema.nullable()
50
+ }),
51
+ editingId: idSchema.nullable()
52
+ });
53
+ const BoardAwarenessGestureSchema = z.discriminatedUnion("kind", [
54
+ z.object({
55
+ kind: z.literal("draw"),
56
+ id: idSchema,
57
+ nodeId: idSchema,
58
+ color: z.string().min(1).max(64),
59
+ size: finiteSchema.positive().max(256),
60
+ from: z.number().int().nonnegative().max(1e5),
61
+ points: z.array(BoardAwarenessDrawPointSchema).min(1).max(64)
62
+ }),
63
+ z.object({
64
+ kind: z.literal("arrow"),
65
+ id: idSchema,
66
+ nodeId: idSchema,
67
+ start: BoardAwarenessPointSchema,
68
+ current: BoardAwarenessPointSchema,
69
+ color: z.string().min(1).max(64)
70
+ }),
71
+ z.object({
72
+ kind: z.literal("box"),
73
+ id: idSchema,
74
+ nodeId: idSchema,
75
+ shape: z.enum(["geo", "frame"]),
76
+ start: BoardAwarenessPointSchema,
77
+ current: BoardAwarenessPointSchema,
78
+ color: z.string().min(1).max(64),
79
+ geo: z.string().min(1).max(40)
80
+ }),
81
+ z.object({
82
+ kind: z.literal("transform"),
83
+ id: idSchema,
84
+ mode: z.enum([
85
+ "translate",
86
+ "resize",
87
+ "rotate",
88
+ "arrow"
89
+ ]),
90
+ nodes: z.array(BoardAwarenessNodePreviewSchema).max(64),
91
+ bounds: BoardAwarenessFrameSchema.nullable()
92
+ })
93
+ ]);
94
+ const BoardAwarenessUpdateSchema = z.discriminatedUnion("type", [
95
+ BoardAwarenessStateUpdateSchema,
96
+ z.object({
97
+ type: z.literal("gesture"),
98
+ gesture: BoardAwarenessGestureSchema
99
+ }),
100
+ z.object({
101
+ type: z.literal("gesture.end"),
102
+ gestureId: idSchema,
103
+ resultingNodeIds: z.array(idSchema).max(64)
104
+ }),
105
+ z.object({
106
+ type: z.literal("gesture.cancel"),
107
+ gestureId: idSchema
108
+ })
109
+ ]);
110
+ z.object({
111
+ spaceId: z.string().uuid(),
112
+ boardId: z.string().uuid(),
113
+ seq: z.number().int().nonnegative(),
114
+ update: BoardAwarenessUpdateSchema
115
+ });
116
+ //#endregion
117
+ export { BoardAwarenessDrawPointSchema, BoardAwarenessFrameSchema, BoardAwarenessGestureSchema, BoardAwarenessNodePreviewSchema, BoardAwarenessPointSchema, BoardAwarenessStateUpdateSchema, BoardAwarenessUpdateSchema };
@@ -0,0 +1,2 @@
1
+ import "../board.js";
2
+ import "./board-awareness.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@neta-art/cohub",
3
- "version": "3.0.0",
4
- "description": "Cohub SDK for spaces, sessions, checkpoints, and realtime agent collaboration.",
3
+ "version": "3.2.0",
4
+ "description": "Cohub SDK for spaces, sessions, boards, and realtime agent collaboration.",
5
5
  "license": "Apache-2.0",
6
6
  "private": false,
7
7
  "type": "module",
@@ -46,8 +46,20 @@
46
46
  "import": "./dist/debugger.js"
47
47
  },
48
48
  "./board": {
49
- "types": "./dist/board.d.ts",
50
- "import": "./dist/board.js"
49
+ "types": "./dist/board/index.d.ts",
50
+ "import": "./dist/board/index.js"
51
+ },
52
+ "./board/render": {
53
+ "types": "./dist/board/render/index.d.ts",
54
+ "import": "./dist/board/render/index.js"
55
+ },
56
+ "./board/export": {
57
+ "types": "./dist/board/export/index.d.ts",
58
+ "import": "./dist/board/export/index.js"
59
+ },
60
+ "./board/headless": {
61
+ "types": "./dist/board/headless/index.d.ts",
62
+ "import": "./dist/board/headless/index.js"
51
63
  }
52
64
  },
53
65
  "types": "./dist/index.d.ts",
@@ -58,13 +70,36 @@
58
70
  "LICENSE",
59
71
  "NOTICE"
60
72
  ],
73
+ "dependencies": {
74
+ "zod": "^4.4.3"
75
+ },
61
76
  "devDependencies": {
77
+ "@biomejs/biome": "2.5.3",
78
+ "@napi-rs/canvas": "^1.0.2",
79
+ "@types/node": "26.1.1",
80
+ "pixi.js": "^8.19.0",
62
81
  "tsdown": "^0.22.7",
82
+ "tsx": "4.23.1",
63
83
  "typescript": "^7.0.2",
64
84
  "@cohub/protocol": "2.0.0"
65
85
  },
86
+ "peerDependencies": {
87
+ "@napi-rs/canvas": "^1.0.2",
88
+ "pixi.js": "^8.19.0"
89
+ },
90
+ "peerDependenciesMeta": {
91
+ "@napi-rs/canvas": {
92
+ "optional": true
93
+ },
94
+ "pixi.js": {
95
+ "optional": true
96
+ }
97
+ },
66
98
  "scripts": {
67
99
  "build": "tsdown",
100
+ "lint": "biome lint .",
101
+ "lint:fix": "biome lint --write .",
102
+ "test": "tsx --test 'src/**/*.test.ts' 'tests/**/*.test.ts'",
68
103
  "typecheck": "tsc -p tsconfig.json --noEmit"
69
104
  }
70
105
  }
package/dist/board.js DELETED
@@ -1,2 +0,0 @@
1
- import { a as createBoardExtensionRegistry, i as compileSequence, n as DEFAULT_BOARD_LIMITS, o as timeline, r as clip, t as BoardExtensionRegistry } from "./chunks/board.js";
2
- export { BoardExtensionRegistry, DEFAULT_BOARD_LIMITS, clip, compileSequence, createBoardExtensionRegistry, timeline };