@drawcall/design 0.9.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/dist/browser.d.ts +4 -4
- package/dist/browser.js +3 -3
- package/dist/command/comment.d.ts +2 -0
- package/dist/command/comment.js +142 -0
- package/dist/command/context.d.ts +378 -1
- package/dist/command/filesystem.js +2 -8
- package/dist/command/frame.js +18 -4
- package/dist/command/input.d.ts +1 -0
- package/dist/command/input.js +9 -0
- package/dist/command.js +2 -0
- package/dist/mcp/comment.d.ts +3 -0
- package/dist/mcp/comment.js +90 -0
- package/dist/mcp/frame.js +1 -1
- package/dist/mcp/register.js +2 -0
- package/dist/mcp/schema.d.ts +1 -0
- package/dist/mcp/schema.js +14 -1
- package/dist/project-state.d.ts +46 -1
- package/dist/project-state.js +8 -1
- package/dist/protocol.d.ts +176 -3
- package/dist/protocol.js +161 -3
- package/dist/skill.generated.d.ts +2 -2
- package/dist/skill.generated.js +2 -2
- package/dist/v1/capabilities.d.ts +2 -2
- package/dist/v1/capabilities.js +7 -0
- package/dist/v1/contract.d.ts +378 -1
- package/dist/v1/contract.js +42 -1
- package/dist/v1/schemas.d.ts +201 -2
- package/dist/v1/schemas.js +106 -1
- package/package.json +1 -1
- package/skills/drawcall-design/SKILL.md +70 -7
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { commentBodySchema, createCommentSchema, designIdSchema, } from "../v1/schemas.js";
|
|
2
|
+
import { result } from "./result.js";
|
|
3
|
+
import { projectInput } from "./schema.js";
|
|
4
|
+
const commentInput = projectInput.extend({ comment: designIdSchema });
|
|
5
|
+
export function registerCommentTools(server, client) {
|
|
6
|
+
server.registerTool("list_design_comments", {
|
|
7
|
+
title: "List Design comments",
|
|
8
|
+
description: "List project comments and replies. Optionally limit the result to one frame.",
|
|
9
|
+
inputSchema: projectInput.extend({ frame: designIdSchema.optional() }),
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
destructiveHint: false,
|
|
13
|
+
openWorldHint: false,
|
|
14
|
+
idempotentHint: true,
|
|
15
|
+
},
|
|
16
|
+
}, async ({ project, frame }) => result({
|
|
17
|
+
comments: await client.comment.list({
|
|
18
|
+
project,
|
|
19
|
+
...(frame ? { frame } : {}),
|
|
20
|
+
}),
|
|
21
|
+
}));
|
|
22
|
+
server.registerTool("get_design_comment", {
|
|
23
|
+
title: "Get Design comment",
|
|
24
|
+
description: "Get one comment with all of its replies.",
|
|
25
|
+
inputSchema: commentInput,
|
|
26
|
+
annotations: {
|
|
27
|
+
readOnlyHint: true,
|
|
28
|
+
destructiveHint: false,
|
|
29
|
+
openWorldHint: false,
|
|
30
|
+
idempotentHint: true,
|
|
31
|
+
},
|
|
32
|
+
}, async ({ project, comment }) => result({ comment: await client.comment.get({ project, comment }) }));
|
|
33
|
+
server.registerTool("create_design_comment", {
|
|
34
|
+
title: "Create Design comment",
|
|
35
|
+
description: "Create a frame-level comment or a positioned annotation. A position requires expectedContentRevision from the current target frame; omit the position when its coordinates are not authoritative.",
|
|
36
|
+
inputSchema: createCommentSchema,
|
|
37
|
+
annotations: {
|
|
38
|
+
readOnlyHint: false,
|
|
39
|
+
destructiveHint: false,
|
|
40
|
+
openWorldHint: false,
|
|
41
|
+
idempotentHint: false,
|
|
42
|
+
},
|
|
43
|
+
}, async (input) => result({ comment: await client.comment.create(input) }));
|
|
44
|
+
server.registerTool("reply_to_design_comment", {
|
|
45
|
+
title: "Reply to Design comment",
|
|
46
|
+
description: "Add a reply to an unresolved comment.",
|
|
47
|
+
inputSchema: commentInput.extend({ body: commentBodySchema }),
|
|
48
|
+
annotations: {
|
|
49
|
+
readOnlyHint: false,
|
|
50
|
+
destructiveHint: false,
|
|
51
|
+
openWorldHint: false,
|
|
52
|
+
idempotentHint: false,
|
|
53
|
+
},
|
|
54
|
+
}, async ({ project, comment, body }) => result({
|
|
55
|
+
comment: await client.comment.reply({ project, comment, body }),
|
|
56
|
+
}));
|
|
57
|
+
registerResolutionTool(server, client, true);
|
|
58
|
+
registerResolutionTool(server, client, false);
|
|
59
|
+
server.registerTool("delete_design_comment", {
|
|
60
|
+
title: "Delete Design comment",
|
|
61
|
+
description: "Permanently delete a comment thread or one reply. Deleting a thread also deletes its replies.",
|
|
62
|
+
inputSchema: commentInput,
|
|
63
|
+
annotations: {
|
|
64
|
+
readOnlyHint: false,
|
|
65
|
+
destructiveHint: true,
|
|
66
|
+
openWorldHint: false,
|
|
67
|
+
idempotentHint: false,
|
|
68
|
+
},
|
|
69
|
+
}, async ({ project, comment }) => result(await client.comment.delete({ project, comment })));
|
|
70
|
+
}
|
|
71
|
+
function registerResolutionTool(server, client, resolved) {
|
|
72
|
+
const action = resolved ? "resolve" : "reopen";
|
|
73
|
+
server.registerTool(`${action}_design_comment`, {
|
|
74
|
+
title: `${resolved ? "Resolve" : "Reopen"} Design comment`,
|
|
75
|
+
description: `${resolved ? "Resolve" : "Reopen"} a comment thread.`,
|
|
76
|
+
inputSchema: commentInput,
|
|
77
|
+
annotations: {
|
|
78
|
+
readOnlyHint: false,
|
|
79
|
+
destructiveHint: false,
|
|
80
|
+
openWorldHint: false,
|
|
81
|
+
idempotentHint: true,
|
|
82
|
+
},
|
|
83
|
+
}, async ({ project, comment }) => result({
|
|
84
|
+
comment: await client.comment.setResolved({
|
|
85
|
+
project,
|
|
86
|
+
comment,
|
|
87
|
+
resolved,
|
|
88
|
+
}),
|
|
89
|
+
}));
|
|
90
|
+
}
|
package/dist/mcp/frame.js
CHANGED
|
@@ -15,7 +15,7 @@ export function registerFrameTools(server, client, fetcher) {
|
|
|
15
15
|
}, async ({ project }) => result({ frames: await client.frame.list({ project }) }));
|
|
16
16
|
server.registerTool("create_design_frame", {
|
|
17
17
|
title: "Create Design frame",
|
|
18
|
-
description: "Create a frame in a Drawcall Design project. Use type=glts for reusable 3D objects and scenes, then write
|
|
18
|
+
description: "Create a frame in a Drawcall Design project. Use type=glts for reusable 3D objects and scenes, then write .glts source with write_design_file. Use type=markdown for a document, then write /<frame-id>/index.md. Use type=image only for an existing public image URL and type=market only for an exact public Market asset.",
|
|
19
19
|
inputSchema: createFrameSchema,
|
|
20
20
|
annotations: {
|
|
21
21
|
readOnlyHint: false,
|
package/dist/mcp/register.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { registerFileTools } from "./file.js";
|
|
2
|
+
import { registerCommentTools } from "./comment.js";
|
|
2
3
|
import { registerFrameTools } from "./frame.js";
|
|
3
4
|
import { registerProjectTools } from "./project.js";
|
|
4
5
|
import { registerSkillTool } from "./skill.js";
|
|
@@ -6,5 +7,6 @@ export function registerDesignTools(server, client, options = {}) {
|
|
|
6
7
|
registerSkillTool(server);
|
|
7
8
|
registerProjectTools(server, client);
|
|
8
9
|
registerFrameTools(server, client, options.fetch ?? globalThis.fetch);
|
|
10
|
+
registerCommentTools(server, client);
|
|
9
11
|
registerFileTools(server, client);
|
|
10
12
|
}
|
package/dist/mcp/schema.d.ts
CHANGED
package/dist/mcp/schema.js
CHANGED
|
@@ -12,7 +12,7 @@ export const createFrameSchema = z
|
|
|
12
12
|
.object({
|
|
13
13
|
project: projectIdSchema,
|
|
14
14
|
name: frameNameSchema,
|
|
15
|
-
type: z.enum(["glts", "image", "market"]),
|
|
15
|
+
type: z.enum(["glts", "image", "markdown", "market"]),
|
|
16
16
|
width: sizeSchema.optional(),
|
|
17
17
|
height: sizeSchema.optional(),
|
|
18
18
|
image: imageUrlSchema.optional(),
|
|
@@ -42,6 +42,7 @@ export const createFrameSchema = z
|
|
|
42
42
|
};
|
|
43
43
|
switch (input.type) {
|
|
44
44
|
case "glts":
|
|
45
|
+
case "markdown":
|
|
45
46
|
require("width");
|
|
46
47
|
require("height");
|
|
47
48
|
reject("image");
|
|
@@ -82,6 +83,18 @@ export function frameCreationInput(input) {
|
|
|
82
83
|
height: input.height,
|
|
83
84
|
...position,
|
|
84
85
|
};
|
|
86
|
+
case "markdown":
|
|
87
|
+
if (input.width === undefined || input.height === undefined) {
|
|
88
|
+
throw new Error("Validated Markdown frame input is missing dimensions");
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
project: input.project,
|
|
92
|
+
name: input.name,
|
|
93
|
+
type: input.type,
|
|
94
|
+
width: input.width,
|
|
95
|
+
height: input.height,
|
|
96
|
+
...position,
|
|
97
|
+
};
|
|
85
98
|
case "image":
|
|
86
99
|
if (input.image === undefined) {
|
|
87
100
|
throw new Error("Validated image frame input is missing an image");
|
package/dist/project-state.d.ts
CHANGED
|
@@ -32,6 +32,20 @@ export declare const projectGltsFrameRecordSchema: z.ZodObject<{
|
|
|
32
32
|
}, z.core.$strict>;
|
|
33
33
|
}, z.core.$strict>>;
|
|
34
34
|
}, z.core.$strict>;
|
|
35
|
+
export declare const projectMarkdownFrameRecordSchema: z.ZodObject<{
|
|
36
|
+
x: z.ZodNumber;
|
|
37
|
+
y: z.ZodNumber;
|
|
38
|
+
width: z.ZodNumber;
|
|
39
|
+
height: z.ZodNumber;
|
|
40
|
+
id: z.ZodString;
|
|
41
|
+
projectId: z.ZodString;
|
|
42
|
+
name: z.ZodString;
|
|
43
|
+
viewUrl: z.ZodString;
|
|
44
|
+
contentRevision: z.ZodNumber;
|
|
45
|
+
createdAt: z.ZodString;
|
|
46
|
+
updatedAt: z.ZodString;
|
|
47
|
+
type: z.ZodLiteral<"markdown">;
|
|
48
|
+
}, z.core.$strict>;
|
|
35
49
|
export declare const projectImageFrameRecordSchema: z.ZodObject<{
|
|
36
50
|
x: z.ZodNumber;
|
|
37
51
|
y: z.ZodNumber;
|
|
@@ -132,6 +146,19 @@ export declare const projectFrameRecordSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
132
146
|
w: z.ZodNumber;
|
|
133
147
|
}, z.core.$strict>;
|
|
134
148
|
}, z.core.$strict>>;
|
|
149
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
150
|
+
x: z.ZodNumber;
|
|
151
|
+
y: z.ZodNumber;
|
|
152
|
+
width: z.ZodNumber;
|
|
153
|
+
height: z.ZodNumber;
|
|
154
|
+
id: z.ZodString;
|
|
155
|
+
projectId: z.ZodString;
|
|
156
|
+
name: z.ZodString;
|
|
157
|
+
viewUrl: z.ZodString;
|
|
158
|
+
contentRevision: z.ZodNumber;
|
|
159
|
+
createdAt: z.ZodString;
|
|
160
|
+
updatedAt: z.ZodString;
|
|
161
|
+
type: z.ZodLiteral<"markdown">;
|
|
135
162
|
}, z.core.$strict>, z.ZodObject<{
|
|
136
163
|
x: z.ZodNumber;
|
|
137
164
|
y: z.ZodNumber;
|
|
@@ -201,7 +228,7 @@ export declare const projectFrameRecordSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
201
228
|
}, z.core.$strict>;
|
|
202
229
|
}, z.core.$strict>], "type">;
|
|
203
230
|
export declare const projectStateSchema: z.ZodObject<{
|
|
204
|
-
schemaVersion: z.ZodLiteral<
|
|
231
|
+
schemaVersion: z.ZodLiteral<2>;
|
|
205
232
|
projectId: z.ZodString;
|
|
206
233
|
revision: z.ZodNumber;
|
|
207
234
|
frames: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -230,6 +257,19 @@ export declare const projectStateSchema: z.ZodObject<{
|
|
|
230
257
|
w: z.ZodNumber;
|
|
231
258
|
}, z.core.$strict>;
|
|
232
259
|
}, z.core.$strict>>;
|
|
260
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
261
|
+
x: z.ZodNumber;
|
|
262
|
+
y: z.ZodNumber;
|
|
263
|
+
width: z.ZodNumber;
|
|
264
|
+
height: z.ZodNumber;
|
|
265
|
+
id: z.ZodString;
|
|
266
|
+
projectId: z.ZodString;
|
|
267
|
+
name: z.ZodString;
|
|
268
|
+
viewUrl: z.ZodString;
|
|
269
|
+
contentRevision: z.ZodNumber;
|
|
270
|
+
createdAt: z.ZodString;
|
|
271
|
+
updatedAt: z.ZodString;
|
|
272
|
+
type: z.ZodLiteral<"markdown">;
|
|
233
273
|
}, z.core.$strict>, z.ZodObject<{
|
|
234
274
|
x: z.ZodNumber;
|
|
235
275
|
y: z.ZodNumber;
|
|
@@ -322,10 +362,15 @@ export declare const projectPresenceServerMessageSchema: z.ZodObject<{
|
|
|
322
362
|
}, z.core.$strict>>;
|
|
323
363
|
}, z.core.$strict>>;
|
|
324
364
|
}, z.core.$strict>;
|
|
365
|
+
export declare const projectCommentsChangedServerMessageSchema: z.ZodObject<{
|
|
366
|
+
type: z.ZodLiteral<"comments:changed">;
|
|
367
|
+
}, z.core.$strict>;
|
|
325
368
|
export type ProjectPresenceClientMessage = z.infer<typeof projectPresenceClientMessageSchema>;
|
|
326
369
|
export type ProjectPresenceServerMessage = z.infer<typeof projectPresenceServerMessageSchema>;
|
|
370
|
+
export type ProjectCommentsChangedServerMessage = z.infer<typeof projectCommentsChangedServerMessageSchema>;
|
|
327
371
|
export type ProjectFrameLayout = z.infer<typeof projectFrameLayoutSchema>;
|
|
328
372
|
export type ProjectGltsFrameRecord = z.infer<typeof projectGltsFrameRecordSchema>;
|
|
373
|
+
export type ProjectMarkdownFrameRecord = z.infer<typeof projectMarkdownFrameRecordSchema>;
|
|
329
374
|
export type ProjectImageFrameRecord = z.infer<typeof projectImageFrameRecordSchema>;
|
|
330
375
|
export type ProjectMarketFile = z.infer<typeof projectMarketFileSchema>;
|
|
331
376
|
export type ProjectMarketFrameRecord = z.infer<typeof projectMarketFrameRecordSchema>;
|
package/dist/project-state.js
CHANGED
|
@@ -36,6 +36,9 @@ export const projectGltsFrameRecordSchema = projectFrameRecordBaseSchema
|
|
|
36
36
|
camera: cameraPoseSchema.optional(),
|
|
37
37
|
})
|
|
38
38
|
.strict();
|
|
39
|
+
export const projectMarkdownFrameRecordSchema = projectFrameRecordBaseSchema
|
|
40
|
+
.extend({ type: z.literal("markdown") })
|
|
41
|
+
.strict();
|
|
39
42
|
export const projectImageFrameRecordSchema = projectFrameRecordBaseSchema
|
|
40
43
|
.extend({
|
|
41
44
|
type: z.literal("image"),
|
|
@@ -70,12 +73,13 @@ export const projectMarketFrameRecordSchema = projectFrameRecordBaseSchema
|
|
|
70
73
|
.strict();
|
|
71
74
|
export const projectFrameRecordSchema = z.discriminatedUnion("type", [
|
|
72
75
|
projectGltsFrameRecordSchema,
|
|
76
|
+
projectMarkdownFrameRecordSchema,
|
|
73
77
|
projectImageFrameRecordSchema,
|
|
74
78
|
projectMarketFrameRecordSchema,
|
|
75
79
|
]);
|
|
76
80
|
export const projectStateSchema = z
|
|
77
81
|
.object({
|
|
78
|
-
schemaVersion: z.literal(
|
|
82
|
+
schemaVersion: z.literal(2),
|
|
79
83
|
projectId: designIdSchema,
|
|
80
84
|
revision: z.number().int().nonnegative(),
|
|
81
85
|
frames: z.array(projectFrameRecordSchema),
|
|
@@ -110,3 +114,6 @@ export const projectPresenceServerMessageSchema = z
|
|
|
110
114
|
collaborators: z.array(projectCollaboratorSchema),
|
|
111
115
|
})
|
|
112
116
|
.strict();
|
|
117
|
+
export const projectCommentsChangedServerMessageSchema = z
|
|
118
|
+
.object({ type: z.literal("comments:changed") })
|
|
119
|
+
.strict();
|
package/dist/protocol.d.ts
CHANGED
|
@@ -3,11 +3,58 @@ export declare const inspectionMessageTypes: {
|
|
|
3
3
|
readonly applied: "drawcall:inspection:applied";
|
|
4
4
|
readonly exit: "drawcall:inspection:exit";
|
|
5
5
|
readonly failed: "drawcall:inspection:failed";
|
|
6
|
-
readonly focus: "drawcall:inspection:focus";
|
|
7
6
|
readonly loading: "drawcall:inspection:loading";
|
|
8
7
|
readonly ready: "drawcall:inspection:ready";
|
|
9
8
|
readonly set: "drawcall:inspection:set";
|
|
10
9
|
};
|
|
10
|
+
export declare const previewMessageTypes: {
|
|
11
|
+
readonly configure: "drawcall:preview:configure";
|
|
12
|
+
readonly failed: "drawcall:preview:failed";
|
|
13
|
+
readonly fatal: "drawcall:preview:fatal";
|
|
14
|
+
readonly load: "drawcall:preview:load";
|
|
15
|
+
readonly loaded: "drawcall:preview:loaded";
|
|
16
|
+
readonly ready: "drawcall:preview:ready";
|
|
17
|
+
};
|
|
18
|
+
export declare const previewPixelRatioMax = 4;
|
|
19
|
+
export declare const previewLoadCommandSchema: z.ZodObject<{
|
|
20
|
+
type: z.ZodLiteral<"drawcall:preview:load">;
|
|
21
|
+
requestId: z.ZodString;
|
|
22
|
+
frameId: z.ZodString;
|
|
23
|
+
camera: z.ZodNullable<z.ZodObject<{
|
|
24
|
+
position: z.ZodObject<{
|
|
25
|
+
x: z.ZodNumber;
|
|
26
|
+
y: z.ZodNumber;
|
|
27
|
+
z: z.ZodNumber;
|
|
28
|
+
}, z.core.$strict>;
|
|
29
|
+
quaternion: z.ZodObject<{
|
|
30
|
+
x: z.ZodNumber;
|
|
31
|
+
y: z.ZodNumber;
|
|
32
|
+
z: z.ZodNumber;
|
|
33
|
+
w: z.ZodNumber;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
}, z.core.$strict>>;
|
|
36
|
+
pixelRatio: z.ZodNumber;
|
|
37
|
+
}, z.core.$strict>;
|
|
38
|
+
export declare const previewConfigureCommandSchema: z.ZodObject<{
|
|
39
|
+
type: z.ZodLiteral<"drawcall:preview:configure">;
|
|
40
|
+
pixelRatio: z.ZodNumber;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
export declare const previewLoadResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
43
|
+
requestId: z.ZodString;
|
|
44
|
+
frameId: z.ZodString;
|
|
45
|
+
type: z.ZodLiteral<"drawcall:preview:loaded">;
|
|
46
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
47
|
+
requestId: z.ZodString;
|
|
48
|
+
frameId: z.ZodString;
|
|
49
|
+
type: z.ZodLiteral<"drawcall:preview:failed">;
|
|
50
|
+
error: z.ZodString;
|
|
51
|
+
}, z.core.$strict>], "type">;
|
|
52
|
+
export declare const previewSessionEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
53
|
+
type: z.ZodLiteral<"drawcall:preview:ready">;
|
|
54
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
55
|
+
type: z.ZodLiteral<"drawcall:preview:fatal">;
|
|
56
|
+
error: z.ZodString;
|
|
57
|
+
}, z.core.$strict>], "type">;
|
|
11
58
|
export declare const immersiveMessageTypes: {
|
|
12
59
|
readonly enter: "drawcall:immersive:enter";
|
|
13
60
|
readonly error: "drawcall:immersive:error";
|
|
@@ -122,6 +169,116 @@ export declare const cameraMessageTypes: {
|
|
|
122
169
|
readonly set: "drawcall:camera:set";
|
|
123
170
|
readonly unavailable: "drawcall:camera:unavailable";
|
|
124
171
|
};
|
|
172
|
+
export declare const commentRuntimeMessageTypes: {
|
|
173
|
+
readonly action: "drawcall:comment:action";
|
|
174
|
+
readonly actionResult: "drawcall:comment:action-result";
|
|
175
|
+
readonly missed: "drawcall:comment:missed";
|
|
176
|
+
readonly pick: "drawcall:comment:pick";
|
|
177
|
+
readonly picked: "drawcall:comment:picked";
|
|
178
|
+
readonly selected: "drawcall:comment:selected";
|
|
179
|
+
readonly set: "drawcall:comments:set";
|
|
180
|
+
};
|
|
181
|
+
export declare const commentPickCommandSchema: z.ZodObject<{
|
|
182
|
+
type: z.ZodLiteral<"drawcall:comment:pick">;
|
|
183
|
+
requestId: z.ZodString;
|
|
184
|
+
x: z.ZodNumber;
|
|
185
|
+
y: z.ZodNumber;
|
|
186
|
+
}, z.core.$strict>;
|
|
187
|
+
export declare const commentPickResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
188
|
+
type: z.ZodLiteral<"drawcall:comment:picked">;
|
|
189
|
+
requestId: z.ZodString;
|
|
190
|
+
position: z.ZodObject<{
|
|
191
|
+
x: z.ZodNumber;
|
|
192
|
+
y: z.ZodNumber;
|
|
193
|
+
z: z.ZodNumber;
|
|
194
|
+
}, z.core.$strict>;
|
|
195
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
196
|
+
type: z.ZodLiteral<"drawcall:comment:missed">;
|
|
197
|
+
requestId: z.ZodString;
|
|
198
|
+
}, z.core.$strict>], "type">;
|
|
199
|
+
export declare const commentStateCommandSchema: z.ZodObject<{
|
|
200
|
+
type: z.ZodLiteral<"drawcall:comments:set">;
|
|
201
|
+
activeComment: z.ZodNullable<z.ZodString>;
|
|
202
|
+
focusRequest: z.ZodNullable<z.ZodNumber>;
|
|
203
|
+
comments: z.ZodArray<z.ZodObject<{
|
|
204
|
+
id: z.ZodString;
|
|
205
|
+
projectId: z.ZodString;
|
|
206
|
+
frameId: z.ZodString;
|
|
207
|
+
body: z.ZodString;
|
|
208
|
+
author: z.ZodObject<{
|
|
209
|
+
id: z.ZodString;
|
|
210
|
+
name: z.ZodString;
|
|
211
|
+
image: z.ZodNullable<z.ZodString>;
|
|
212
|
+
}, z.core.$strict>;
|
|
213
|
+
replies: z.ZodArray<z.ZodObject<{
|
|
214
|
+
id: z.ZodString;
|
|
215
|
+
commentId: z.ZodString;
|
|
216
|
+
body: z.ZodString;
|
|
217
|
+
author: z.ZodObject<{
|
|
218
|
+
id: z.ZodString;
|
|
219
|
+
name: z.ZodString;
|
|
220
|
+
image: z.ZodNullable<z.ZodString>;
|
|
221
|
+
}, z.core.$strict>;
|
|
222
|
+
createdAt: z.ZodString;
|
|
223
|
+
updatedAt: z.ZodString;
|
|
224
|
+
}, z.core.$strict>>;
|
|
225
|
+
resolution: z.ZodOptional<z.ZodObject<{
|
|
226
|
+
resolvedAt: z.ZodString;
|
|
227
|
+
resolvedBy: z.ZodObject<{
|
|
228
|
+
id: z.ZodString;
|
|
229
|
+
name: z.ZodString;
|
|
230
|
+
image: z.ZodNullable<z.ZodString>;
|
|
231
|
+
}, z.core.$strict>;
|
|
232
|
+
}, z.core.$strict>>;
|
|
233
|
+
createdAt: z.ZodString;
|
|
234
|
+
updatedAt: z.ZodString;
|
|
235
|
+
position: z.ZodObject<{
|
|
236
|
+
kind: z.ZodLiteral<"3d">;
|
|
237
|
+
x: z.ZodNumber;
|
|
238
|
+
y: z.ZodNumber;
|
|
239
|
+
z: z.ZodNumber;
|
|
240
|
+
frameContentRevision: z.ZodNumber;
|
|
241
|
+
}, z.core.$strict>;
|
|
242
|
+
}, z.core.$strict>>;
|
|
243
|
+
frameContentRevision: z.ZodNumber;
|
|
244
|
+
user: z.ZodObject<{
|
|
245
|
+
id: z.ZodString;
|
|
246
|
+
name: z.ZodString;
|
|
247
|
+
image: z.ZodNullable<z.ZodString>;
|
|
248
|
+
}, z.core.$strict>;
|
|
249
|
+
}, z.core.$strict>;
|
|
250
|
+
export declare const commentActionMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
251
|
+
type: z.ZodLiteral<"drawcall:comment:action">;
|
|
252
|
+
requestId: z.ZodString;
|
|
253
|
+
action: z.ZodLiteral<"reply">;
|
|
254
|
+
comment: z.ZodString;
|
|
255
|
+
body: z.ZodString;
|
|
256
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
257
|
+
type: z.ZodLiteral<"drawcall:comment:action">;
|
|
258
|
+
requestId: z.ZodString;
|
|
259
|
+
action: z.ZodLiteral<"resolve">;
|
|
260
|
+
comment: z.ZodString;
|
|
261
|
+
resolved: z.ZodBoolean;
|
|
262
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
263
|
+
type: z.ZodLiteral<"drawcall:comment:action">;
|
|
264
|
+
requestId: z.ZodString;
|
|
265
|
+
action: z.ZodLiteral<"delete">;
|
|
266
|
+
target: z.ZodString;
|
|
267
|
+
}, z.core.$strict>], "action">;
|
|
268
|
+
export declare const commentActionResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
269
|
+
type: z.ZodLiteral<"drawcall:comment:action-result">;
|
|
270
|
+
requestId: z.ZodString;
|
|
271
|
+
ok: z.ZodLiteral<true>;
|
|
272
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
273
|
+
type: z.ZodLiteral<"drawcall:comment:action-result">;
|
|
274
|
+
requestId: z.ZodString;
|
|
275
|
+
ok: z.ZodLiteral<false>;
|
|
276
|
+
error: z.ZodString;
|
|
277
|
+
}, z.core.$strict>], "ok">;
|
|
278
|
+
export declare const commentSelectionMessageSchema: z.ZodObject<{
|
|
279
|
+
type: z.ZodLiteral<"drawcall:comment:selected">;
|
|
280
|
+
comment: z.ZodNullable<z.ZodString>;
|
|
281
|
+
}, z.core.$strict>;
|
|
125
282
|
export declare const sourceFileMessageTypes: {
|
|
126
283
|
readonly changed: "drawcall:source-files:changed";
|
|
127
284
|
readonly reloadResult: "drawcall:source-file:reload-result";
|
|
@@ -230,6 +387,12 @@ export declare const posterRenderResultSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
230
387
|
type: z.ZodLiteral<"drawcall:poster:failed">;
|
|
231
388
|
error: z.ZodString;
|
|
232
389
|
}, z.core.$strict>], "type">;
|
|
390
|
+
export declare const frameRenderResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
391
|
+
status: z.ZodLiteral<"rendered">;
|
|
392
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
393
|
+
status: z.ZodLiteral<"failed">;
|
|
394
|
+
error: z.ZodString;
|
|
395
|
+
}, z.core.$strict>], "status">;
|
|
233
396
|
export declare const inspectionCommandSchema: z.ZodObject<{
|
|
234
397
|
type: z.ZodLiteral<"drawcall:inspection:set">;
|
|
235
398
|
requestId: z.ZodString;
|
|
@@ -247,18 +410,25 @@ export declare const inspectionFrameMessageSchema: z.ZodDiscriminatedUnion<[z.Zo
|
|
|
247
410
|
enabled: z.ZodBoolean;
|
|
248
411
|
}, z.core.$strict>, z.ZodObject<{
|
|
249
412
|
type: z.ZodLiteral<"drawcall:inspection:exit">;
|
|
250
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
251
|
-
type: z.ZodLiteral<"drawcall:inspection:focus">;
|
|
252
413
|
}, z.core.$strict>], "type">;
|
|
253
414
|
export type InspectionCommand = z.infer<typeof inspectionCommandSchema>;
|
|
415
|
+
export type PreviewLoadCommand = z.infer<typeof previewLoadCommandSchema>;
|
|
416
|
+
export type PreviewLoadResult = z.infer<typeof previewLoadResultSchema>;
|
|
254
417
|
export type PosterRenderCommand = z.infer<typeof posterRenderCommandSchema>;
|
|
255
418
|
export type PosterRenderResult = z.infer<typeof posterRenderResultSchema>;
|
|
419
|
+
export type FrameRenderResult = z.infer<typeof frameRenderResultSchema>;
|
|
256
420
|
export type ImmersiveMode = z.infer<typeof immersiveModeSchema>;
|
|
257
421
|
export type ImmersiveCommand = z.infer<typeof immersiveCommandSchema>;
|
|
258
422
|
export type ImmersiveFrameMessage = z.infer<typeof immersiveFrameMessageSchema>;
|
|
259
423
|
export type CameraCaptureCommand = z.infer<typeof cameraCaptureCommandSchema>;
|
|
260
424
|
export type CameraSetCommand = z.infer<typeof cameraSetCommandSchema>;
|
|
261
425
|
export type CameraCaptureResult = z.infer<typeof cameraCaptureResultSchema>;
|
|
426
|
+
export type CommentPickCommand = z.infer<typeof commentPickCommandSchema>;
|
|
427
|
+
export type CommentPickResult = z.infer<typeof commentPickResultSchema>;
|
|
428
|
+
export type CommentStateCommand = z.infer<typeof commentStateCommandSchema>;
|
|
429
|
+
export type CommentActionMessage = z.infer<typeof commentActionMessageSchema>;
|
|
430
|
+
export type CommentActionResult = z.infer<typeof commentActionResultSchema>;
|
|
431
|
+
export type CommentSelectionMessage = z.infer<typeof commentSelectionMessageSchema>;
|
|
262
432
|
export type SourceFileChange = z.infer<typeof sourceFileChangeSchema>;
|
|
263
433
|
export type SourceFilesChangedMessage = z.infer<typeof sourceFilesChangedMessageSchema>;
|
|
264
434
|
export type SourceFileReloadResult = z.infer<typeof sourceFileReloadResultSchema>;
|
|
@@ -279,4 +449,7 @@ export type GltsExportFrameMessage = z.infer<typeof gltsExportFrameMessageSchema
|
|
|
279
449
|
/** The per-project page that renders frame posters; never a frame ID path. */
|
|
280
450
|
export declare const posterPagePath = "/poster/";
|
|
281
451
|
export declare function posterPageUrl(frameViewUrl: string): string;
|
|
452
|
+
/** The per-project page that hosts the reusable live GLTS preview. */
|
|
453
|
+
export declare const previewPagePath = "/preview/";
|
|
454
|
+
export declare function previewPageUrl(frameViewUrl: string): string;
|
|
282
455
|
export declare function projectSyncUrl(baseUrl: string, project: string): string;
|