@xpert-ai/plugin-canvas 0.1.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/.xpertai-plugin/plugin.json +121 -0
- package/README.md +14 -0
- package/assets/composerIcon.svg +8 -0
- package/assets/logo.svg +47 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/canvas-agent-response.d.ts +40 -0
- package/dist/lib/canvas-agent-response.d.ts.map +1 -0
- package/dist/lib/canvas-agent-response.js +54 -0
- package/dist/lib/canvas-agent-response.js.map +1 -0
- package/dist/lib/canvas-snapshot.validation.d.ts +52 -0
- package/dist/lib/canvas-snapshot.validation.d.ts.map +1 -0
- package/dist/lib/canvas-snapshot.validation.js +223 -0
- package/dist/lib/canvas-snapshot.validation.js.map +1 -0
- package/dist/lib/canvas-view.provider.d.ts +14 -0
- package/dist/lib/canvas-view.provider.d.ts.map +1 -0
- package/dist/lib/canvas-view.provider.js +529 -0
- package/dist/lib/canvas-view.provider.js.map +1 -0
- package/dist/lib/canvas.middleware.d.ts +10 -0
- package/dist/lib/canvas.middleware.d.ts.map +1 -0
- package/dist/lib/canvas.middleware.js +277 -0
- package/dist/lib/canvas.middleware.js.map +1 -0
- package/dist/lib/canvas.plugin.d.ts +8 -0
- package/dist/lib/canvas.plugin.d.ts.map +1 -0
- package/dist/lib/canvas.plugin.js +27 -0
- package/dist/lib/canvas.plugin.js.map +1 -0
- package/dist/lib/canvas.service.d.ts +1514 -0
- package/dist/lib/canvas.service.d.ts.map +1 -0
- package/dist/lib/canvas.service.js +1290 -0
- package/dist/lib/canvas.service.js.map +1 -0
- package/dist/lib/canvas.templates.d.ts +3 -0
- package/dist/lib/canvas.templates.d.ts.map +1 -0
- package/dist/lib/canvas.templates.js +79 -0
- package/dist/lib/canvas.templates.js.map +1 -0
- package/dist/lib/constants.d.ts +26 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +44 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/entities/canvas-action-log.entity.d.ts +18 -0
- package/dist/lib/entities/canvas-action-log.entity.d.ts.map +1 -0
- package/dist/lib/entities/canvas-action-log.entity.js +69 -0
- package/dist/lib/entities/canvas-action-log.entity.js.map +1 -0
- package/dist/lib/entities/canvas-document-version.entity.d.ts +27 -0
- package/dist/lib/entities/canvas-document-version.entity.d.ts.map +1 -0
- package/dist/lib/entities/canvas-document-version.entity.js +106 -0
- package/dist/lib/entities/canvas-document-version.entity.js.map +1 -0
- package/dist/lib/entities/canvas-document.entity.d.ts +36 -0
- package/dist/lib/entities/canvas-document.entity.d.ts.map +1 -0
- package/dist/lib/entities/canvas-document.entity.js +142 -0
- package/dist/lib/entities/canvas-document.entity.js.map +1 -0
- package/dist/lib/entities/index.d.ts +4 -0
- package/dist/lib/entities/index.d.ts.map +1 -0
- package/dist/lib/entities/index.js +4 -0
- package/dist/lib/entities/index.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/app.css +1 -0
- package/dist/lib/remote-components/canvas-workbench/app.js +1707 -0
- package/dist/lib/remote-components/canvas-workbench/src/autosave.d.ts +39 -0
- package/dist/lib/remote-components/canvas-workbench/src/autosave.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/autosave.js +155 -0
- package/dist/lib/remote-components/canvas-workbench/src/autosave.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/i18n.d.ts +3 -0
- package/dist/lib/remote-components/canvas-workbench/src/i18n.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/i18n.js +79 -0
- package/dist/lib/remote-components/canvas-workbench/src/i18n.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.d.ts +4 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.js +7 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.d.ts +14 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.js +14 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.d.ts +7 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.js +26 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-shim.d.ts +47 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-shim.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-shim.js +39 -0
- package/dist/lib/remote-components/canvas-workbench/src/react-shim.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/runtime.d.ts +45 -0
- package/dist/lib/remote-components/canvas-workbench/src/runtime.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/runtime.js +199 -0
- package/dist/lib/remote-components/canvas-workbench/src/runtime.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/selection-context.d.ts +55 -0
- package/dist/lib/remote-components/canvas-workbench/src/selection-context.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/selection-context.js +49 -0
- package/dist/lib/remote-components/canvas-workbench/src/selection-context.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/styles.d.ts +2 -0
- package/dist/lib/remote-components/canvas-workbench/src/styles.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/styles.js +333 -0
- package/dist/lib/remote-components/canvas-workbench/src/styles.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.d.ts +14 -0
- package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.js +19 -0
- package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.js.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/vendor.d.ts +9 -0
- package/dist/lib/remote-components/canvas-workbench/src/vendor.d.ts.map +1 -0
- package/dist/lib/remote-components/canvas-workbench/src/vendor.js +7 -0
- package/dist/lib/remote-components/canvas-workbench/src/vendor.js.map +1 -0
- package/dist/lib/types.d.ts +180 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/xpert-canvas-assistant.yaml +168 -0
- package/package.json +91 -0
- package/skills/canvas-agent-skill/SKILL.md +144 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xpert-ai/plugin-canvas",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Canvas app plugin for agent-managed tldraw infinite canvases, image holders, annotation workflows, reviewable versions, and an editable workbench.",
|
|
5
|
+
"author": "XpertAI",
|
|
6
|
+
"homepage": "https://github.com/xpert-ai/xpert-plugins/tree/main/xpertai/apps/canvas",
|
|
7
|
+
"repository": "https://github.com/xpert-ai/xpert-plugins/tree/main/xpertai/apps/canvas",
|
|
8
|
+
"license": "AGPL-3.0",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"canvas",
|
|
11
|
+
"tldraw",
|
|
12
|
+
"whiteboard",
|
|
13
|
+
"image-generation",
|
|
14
|
+
"annotation",
|
|
15
|
+
"agent-canvas",
|
|
16
|
+
"workbench"
|
|
17
|
+
],
|
|
18
|
+
"skills": "./skills/",
|
|
19
|
+
"interface": {
|
|
20
|
+
"displayName": "Canvas",
|
|
21
|
+
"shortDescription": "Agent-managed tldraw canvases",
|
|
22
|
+
"longDescription": "Create, update, version, review, annotate, insert images, import, and export Agent-managed tldraw infinite canvases. The plugin includes an installable Xpert skill, Assistant template, middleware tools, and a Canvas Workbench for human review.",
|
|
23
|
+
"developerName": "XpertAI",
|
|
24
|
+
"category": "Productivity",
|
|
25
|
+
"capabilities": [
|
|
26
|
+
"Interactive",
|
|
27
|
+
"Read",
|
|
28
|
+
"Write"
|
|
29
|
+
],
|
|
30
|
+
"websiteURL": "https://xpertai.cn",
|
|
31
|
+
"privacyPolicyURL": "https://xpertai.cn",
|
|
32
|
+
"termsOfServiceURL": "https://xpertai.cn",
|
|
33
|
+
"defaultPrompt": [
|
|
34
|
+
"Open a new visual canvas for planning this project.",
|
|
35
|
+
"Create AI image slots on a canvas for these product concepts.",
|
|
36
|
+
"Insert this generated image into the selected Canvas image holder."
|
|
37
|
+
],
|
|
38
|
+
"composerIcon": "./assets/composerIcon.svg",
|
|
39
|
+
"logo": "./assets/logo.svg",
|
|
40
|
+
"brandColor": "#0F766E",
|
|
41
|
+
"screenshots": []
|
|
42
|
+
},
|
|
43
|
+
"policy": {
|
|
44
|
+
"installation": "AVAILABLE",
|
|
45
|
+
"authentication": "ON_FIRST_USE",
|
|
46
|
+
"pluginSharing": true
|
|
47
|
+
},
|
|
48
|
+
"source": {
|
|
49
|
+
"source": "local",
|
|
50
|
+
"path": ".",
|
|
51
|
+
"url": "https://github.com/xpert-ai/xpert-plugins",
|
|
52
|
+
"sparsePath": "xpertai/apps/canvas"
|
|
53
|
+
},
|
|
54
|
+
"assets": {
|
|
55
|
+
"composerIcon": "./assets/composerIcon.svg",
|
|
56
|
+
"logo": "./assets/logo.svg",
|
|
57
|
+
"screenshots": []
|
|
58
|
+
},
|
|
59
|
+
"targetApps": [
|
|
60
|
+
"data-xpert",
|
|
61
|
+
"xpert"
|
|
62
|
+
],
|
|
63
|
+
"targetAppMeta": {
|
|
64
|
+
"xpert": {
|
|
65
|
+
"types": [
|
|
66
|
+
"assistant-template",
|
|
67
|
+
"skill",
|
|
68
|
+
"app",
|
|
69
|
+
"xpertai-bundle"
|
|
70
|
+
],
|
|
71
|
+
"capabilities": [
|
|
72
|
+
"canvas",
|
|
73
|
+
"canvas-workbench",
|
|
74
|
+
"agent-canvas",
|
|
75
|
+
"canvas-assistant-template"
|
|
76
|
+
],
|
|
77
|
+
"marketplace": {
|
|
78
|
+
"contents": [
|
|
79
|
+
{
|
|
80
|
+
"type": "skill",
|
|
81
|
+
"name": "canvas-agent-skill",
|
|
82
|
+
"displayName": "Canvas Agent Skill",
|
|
83
|
+
"description": "Skill for using Canvas middleware tools, Workbench selection context, tldraw snapshot inspection, record patching, image insertion, versioning, and recovery.",
|
|
84
|
+
"tags": [
|
|
85
|
+
"skill",
|
|
86
|
+
"canvas",
|
|
87
|
+
"tldraw",
|
|
88
|
+
"agent-canvas",
|
|
89
|
+
"middleware-tools"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "assistant-template",
|
|
94
|
+
"name": "canvas-assistant",
|
|
95
|
+
"displayName": "Canvas Assistant",
|
|
96
|
+
"description": "Assistant template for Canvas visual workflows."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"type": "app",
|
|
100
|
+
"name": "canvas",
|
|
101
|
+
"displayName": "Canvas",
|
|
102
|
+
"description": "Workbench and Agent middleware tools for tldraw canvases."
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"data-xpert": {
|
|
108
|
+
"types": [
|
|
109
|
+
"workbench-view",
|
|
110
|
+
"assistant-tool",
|
|
111
|
+
"business-app"
|
|
112
|
+
],
|
|
113
|
+
"capabilities": [
|
|
114
|
+
"canvas",
|
|
115
|
+
"canvas-workbench",
|
|
116
|
+
"agent-canvas",
|
|
117
|
+
"canvas-assistant-template"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Canvas Plugin
|
|
2
|
+
|
|
3
|
+
Agentic Canvas plugin for Xpert and data-xpert. It provides Agent middleware tools, a tldraw-powered Canvas Workbench, Assistant templates, and an installable Xpert skill for creating, versioning, reviewing, annotating, and inserting images on infinite canvases.
|
|
4
|
+
|
|
5
|
+
The Workbench autosaves the current tldraw working copy and writes a viewport snapshot image to the Xpert workspace at `files/canvas/documents/{documentId}/snapshots/current.png`. Explicit versions keep their own image file under `files/canvas/documents/{documentId}/snapshots/versions/`. Canvas Assistant templates include `@xpert-ai/plugin-view-image` so Agents can call `view_image` against the latest snapshot path before reasoning about visual layout or annotations.
|
|
6
|
+
|
|
7
|
+
Installable skills live under `skills/` and are advertised through `.xpertai-plugin/plugin.json`.
|
|
8
|
+
|
|
9
|
+
## Verify
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm test
|
|
13
|
+
pnpm build
|
|
14
|
+
```
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" fill="none">
|
|
2
|
+
<rect width="64" height="64" rx="16" fill="#F8FAFC"/>
|
|
3
|
+
<rect x="14" y="14" width="36" height="36" rx="7" fill="#FFFFFF" stroke="#0F766E" stroke-width="4"/>
|
|
4
|
+
<path d="M22 25H35" stroke="#0F172A" stroke-width="4" stroke-linecap="round"/>
|
|
5
|
+
<path d="M22 33H30" stroke="#64748B" stroke-width="3" stroke-linecap="round"/>
|
|
6
|
+
<path d="M22 43C30 35 39 34 48 40" stroke="#0F766E" stroke-width="4" stroke-linecap="round"/>
|
|
7
|
+
<path d="M39 22L47 30L39 38" stroke="#2563EB" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
8
|
+
</svg>
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill:#4F5D73;}
|
|
7
|
+
.st1{opacity:0.2;}
|
|
8
|
+
.st2{fill:#231F20;}
|
|
9
|
+
.st3{fill:#F5CF87;stroke:#E0995E;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
|
10
|
+
.st4{fill:none;stroke:#E0995E;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
|
11
|
+
.st5{opacity:0.2;fill:#231F20;}
|
|
12
|
+
.st6{fill:#FFFFFF;}
|
|
13
|
+
.st7{fill:none;stroke:#F5CF87;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
|
14
|
+
.st8{fill:none;stroke:#C75C5C;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
|
|
15
|
+
</style>
|
|
16
|
+
<circle class="st0" cx="32" cy="32" r="32"/>
|
|
17
|
+
<g class="st1">
|
|
18
|
+
<line class="st2" x1="28" y1="14" x2="19" y2="54"/>
|
|
19
|
+
<path class="st2" d="M19,55.5c-0.1,0-0.2,0-0.3,0c-0.8-0.2-1.3-1-1.1-1.8l9-40c0.2-0.8,1-1.3,1.8-1.1c0.8,0.2,1.3,1,1.1,1.8l-9,40
|
|
20
|
+
C20.3,55,19.7,55.5,19,55.5z"/>
|
|
21
|
+
</g>
|
|
22
|
+
<g class="st1">
|
|
23
|
+
<line class="st2" x1="37" y1="14" x2="45" y2="54"/>
|
|
24
|
+
<path class="st2" d="M45,55.5c-0.7,0-1.3-0.5-1.5-1.2l-8-40c-0.2-0.8,0.4-1.6,1.2-1.8c0.8-0.2,1.6,0.4,1.8,1.2l8,40
|
|
25
|
+
c0.2,0.8-0.4,1.6-1.2,1.8C45.2,55.5,45.1,55.5,45,55.5z"/>
|
|
26
|
+
</g>
|
|
27
|
+
<g class="st1">
|
|
28
|
+
<path class="st2" d="M32,55.5c-0.8,0-1.5-0.7-1.5-1.5V37.4c0-0.8,0.7-1.5,1.5-1.5c0.8,0,1.5,0.7,1.5,1.5V54
|
|
29
|
+
C33.5,54.8,32.8,55.5,32,55.5z"/>
|
|
30
|
+
</g>
|
|
31
|
+
<line class="st3" x1="28" y1="12" x2="19" y2="52"/>
|
|
32
|
+
<line class="st3" x1="37" y1="12" x2="45" y2="52"/>
|
|
33
|
+
<line class="st4" x1="32" y1="35.4" x2="32" y2="52"/>
|
|
34
|
+
<path class="st5" d="M49,40.2c0,1-1,1.8-2.1,1.8H17.1C16,42,15,41.2,15,40.2V21.8c0-1,1-1.8,2.1-1.8h29.8c1.2,0,2.1,0.8,2.1,1.8
|
|
35
|
+
V40.2z"/>
|
|
36
|
+
<path class="st6" d="M49,38.2c0,1-1,1.8-2.1,1.8H17.1C16,40,15,39.2,15,38.2V19.8c0-1,1-1.8,2.1-1.8h29.8c1.2,0,2.1,0.8,2.1,1.8
|
|
37
|
+
V38.2z"/>
|
|
38
|
+
<g class="st1">
|
|
39
|
+
<path class="st2" d="M41,21.5H23c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5h18c0.8,0,1.5,0.7,1.5,1.5S41.8,21.5,41,21.5z"/>
|
|
40
|
+
</g>
|
|
41
|
+
<g class="st1">
|
|
42
|
+
<path class="st2" d="M41,43.5H23c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5h18c0.8,0,1.5,0.7,1.5,1.5S41.8,43.5,41,43.5z"/>
|
|
43
|
+
</g>
|
|
44
|
+
<line class="st7" x1="23" y1="18.5" x2="41" y2="18.5"/>
|
|
45
|
+
<line class="st7" x1="23" y1="40.5" x2="41" y2="40.5"/>
|
|
46
|
+
<path class="st8" d="M19.5,36c0,0,11-18,11-10s0,10,2,8s7-8,12-9"/>
|
|
47
|
+
</svg>
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { XpertPlugin } from '@xpert-ai/plugin-sdk';
|
|
3
|
+
declare const ConfigSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
4
|
+
declare const plugin: XpertPlugin<z.infer<typeof ConfigSchema>>;
|
|
5
|
+
export default plugin;
|
|
6
|
+
export * from './lib/constants.js';
|
|
7
|
+
export * from './lib/types.js';
|
|
8
|
+
export * from './lib/entities/index.js';
|
|
9
|
+
export * from './lib/canvas.plugin.js';
|
|
10
|
+
export * from './lib/canvas.service.js';
|
|
11
|
+
export * from './lib/canvas.middleware.js';
|
|
12
|
+
export * from './lib/canvas-view.provider.js';
|
|
13
|
+
export * from './lib/canvas.templates.js';
|
|
14
|
+
export * from './lib/canvas-snapshot.validation.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAuBvD,QAAA,MAAM,YAAY,gDAAe,CAAA;AAEjC,QAAA,MAAM,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CA4HrD,CAAA;AAED,eAAe,MAAM,CAAA;AACrB,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { CANVAS_AGENT_CAPABILITY, CANVAS_FEATURE, CANVAS_ICON, CANVAS_MIDDLEWARE_NAME, CANVAS_PROVIDER_KEY, CANVAS_TEMPLATE_CAPABILITY, CANVAS_TEMPLATE_PROVIDER_KEY, CANVAS_WORKBENCH_CAPABILITY, CANVAS_WORKBENCH_VIEW_KEY } from './lib/constants.js';
|
|
6
|
+
import { CanvasPlugin } from './lib/canvas.plugin.js';
|
|
7
|
+
import { canvasTemplates } from './lib/canvas.templates.js';
|
|
8
|
+
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const packageJson = JSON.parse(readFileSync(join(moduleDir, '../package.json'), 'utf8'));
|
|
10
|
+
const ConfigSchema = z.object({});
|
|
11
|
+
const plugin = {
|
|
12
|
+
meta: {
|
|
13
|
+
name: packageJson.name,
|
|
14
|
+
version: packageJson.version,
|
|
15
|
+
level: 'system',
|
|
16
|
+
targetApps: ['data-xpert', 'xpert'],
|
|
17
|
+
targetAppMeta: {
|
|
18
|
+
'data-xpert': {
|
|
19
|
+
types: ['workbench-view', 'assistant-tool', 'business-app'],
|
|
20
|
+
capabilities: [CANVAS_FEATURE, CANVAS_WORKBENCH_CAPABILITY, CANVAS_AGENT_CAPABILITY, CANVAS_TEMPLATE_CAPABILITY],
|
|
21
|
+
marketplace: {
|
|
22
|
+
contents: [
|
|
23
|
+
{
|
|
24
|
+
type: 'app',
|
|
25
|
+
name: 'canvas',
|
|
26
|
+
displayName: 'Canvas',
|
|
27
|
+
description: 'Create, annotate, insert images, review, import, export, and version Agent-managed tldraw canvases.',
|
|
28
|
+
icon: {
|
|
29
|
+
type: 'svg',
|
|
30
|
+
value: CANVAS_ICON,
|
|
31
|
+
color: '#0f766e'
|
|
32
|
+
},
|
|
33
|
+
operations: [
|
|
34
|
+
{
|
|
35
|
+
name: 'create-canvas-documents',
|
|
36
|
+
displayName: 'Create Canvas documents',
|
|
37
|
+
description: 'Create reviewable infinite canvases and visual planning boards.',
|
|
38
|
+
access: 'write'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'save-canvas-versions',
|
|
42
|
+
displayName: 'Save Canvas versions',
|
|
43
|
+
description: 'Persist tldraw snapshots, record patches, image insertions, and Workbench edits.',
|
|
44
|
+
access: 'write'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'review-canvas-workbench',
|
|
48
|
+
displayName: 'Review Canvas Workbench',
|
|
49
|
+
description: 'Open the Canvas Workbench to inspect, annotate, import, export, and manually edit canvases.',
|
|
50
|
+
access: 'read'
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'view',
|
|
56
|
+
name: CANVAS_WORKBENCH_VIEW_KEY,
|
|
57
|
+
displayName: 'Canvas Workbench',
|
|
58
|
+
description: 'Workbench view for tldraw canvas editing, AI image holders, annotations, versions, and logs.'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'tool',
|
|
62
|
+
name: CANVAS_MIDDLEWARE_NAME,
|
|
63
|
+
displayName: 'Canvas Agent Tools',
|
|
64
|
+
description: 'Assistant middleware tools for creating canvases, saving snapshots, patching records, inserting images, searching documents, and reporting failures.'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'assistant-template',
|
|
68
|
+
name: 'canvas-assistant',
|
|
69
|
+
displayName: 'Canvas Assistant Template',
|
|
70
|
+
description: 'Prebuilt assistant template for Agent-managed canvas creation, image holder, and annotation workflows.'
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
runtime: {
|
|
75
|
+
middlewareProviders: [CANVAS_MIDDLEWARE_NAME],
|
|
76
|
+
viewProviders: [CANVAS_PROVIDER_KEY],
|
|
77
|
+
templateProviders: [CANVAS_TEMPLATE_PROVIDER_KEY]
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
xpert: {
|
|
81
|
+
types: ['assistant-template', 'skill', 'app', 'xpertai-bundle'],
|
|
82
|
+
capabilities: [CANVAS_FEATURE, CANVAS_WORKBENCH_CAPABILITY, CANVAS_AGENT_CAPABILITY, CANVAS_TEMPLATE_CAPABILITY],
|
|
83
|
+
marketplace: {
|
|
84
|
+
contents: [
|
|
85
|
+
{
|
|
86
|
+
type: 'skill',
|
|
87
|
+
name: 'canvas-agent-skill',
|
|
88
|
+
displayName: 'Canvas Agent Skill',
|
|
89
|
+
description: 'Skill for using Canvas middleware tools, Workbench selection context, tldraw snapshot inspection, record patching, image insertion, versioning, and recovery.',
|
|
90
|
+
tags: ['skill', 'canvas', 'tldraw', 'agent-canvas', 'middleware-tools']
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'assistant-template',
|
|
94
|
+
name: 'canvas-assistant',
|
|
95
|
+
displayName: 'Canvas Assistant',
|
|
96
|
+
description: 'Assistant template for Canvas visual workflows.'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'app',
|
|
100
|
+
name: 'canvas',
|
|
101
|
+
displayName: 'Canvas',
|
|
102
|
+
description: 'Workbench and Agent middleware tools for tldraw canvases.'
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
category: 'middleware',
|
|
109
|
+
icon: {
|
|
110
|
+
type: 'svg',
|
|
111
|
+
value: CANVAS_ICON,
|
|
112
|
+
color: '#0f766e'
|
|
113
|
+
},
|
|
114
|
+
displayName: 'Canvas',
|
|
115
|
+
description: 'Agentic Canvas plugin for tldraw whiteboards, AI image holders, annotation workflows, versioning, and review.',
|
|
116
|
+
keywords: ['canvas', 'tldraw', 'whiteboard', 'image-generation', 'annotation', 'middleware', 'view-extension', 'assistant-template'],
|
|
117
|
+
author: 'XpertAI Team'
|
|
118
|
+
},
|
|
119
|
+
config: {
|
|
120
|
+
schema: ConfigSchema
|
|
121
|
+
},
|
|
122
|
+
templates: canvasTemplates,
|
|
123
|
+
register(ctx) {
|
|
124
|
+
ctx.logger.log('register canvas plugin');
|
|
125
|
+
return { module: CanvasPlugin, global: true };
|
|
126
|
+
},
|
|
127
|
+
async onStart(ctx) {
|
|
128
|
+
ctx.logger.log('canvas plugin started');
|
|
129
|
+
},
|
|
130
|
+
async onStop(ctx) {
|
|
131
|
+
ctx.logger.log('canvas plugin stopped');
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
export default plugin;
|
|
135
|
+
export * from './lib/constants.js';
|
|
136
|
+
export * from './lib/types.js';
|
|
137
|
+
export * from './lib/entities/index.js';
|
|
138
|
+
export * from './lib/canvas.plugin.js';
|
|
139
|
+
export * from './lib/canvas.service.js';
|
|
140
|
+
export * from './lib/canvas.middleware.js';
|
|
141
|
+
export * from './lib/canvas-view.provider.js';
|
|
142
|
+
export * from './lib/canvas.templates.js';
|
|
143
|
+
export * from './lib/canvas-snapshot.validation.js';
|
|
144
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CanvasJsonValue } from './types.js';
|
|
2
|
+
type AgentToolResultValue = CanvasJsonValue | object | null | undefined;
|
|
3
|
+
type AgentResultValue = AgentToolResultValue | Date | AgentResultValue[];
|
|
4
|
+
export declare function stringifyAgentToolResult(value: AgentToolResultValue): string;
|
|
5
|
+
export declare function summarizeDocumentMutationResult(result: object, message: string): {
|
|
6
|
+
success: boolean;
|
|
7
|
+
message: string;
|
|
8
|
+
documentId: AgentResultValue;
|
|
9
|
+
title: AgentResultValue;
|
|
10
|
+
status: AgentResultValue;
|
|
11
|
+
currentVersionId: AgentResultValue;
|
|
12
|
+
currentVersionNumber: AgentResultValue;
|
|
13
|
+
sceneSource: AgentResultValue;
|
|
14
|
+
snapshotImagePath: AgentResultValue;
|
|
15
|
+
snapshotImageUpdatedAt: AgentResultValue;
|
|
16
|
+
snapshotSummary: AgentResultValue;
|
|
17
|
+
next: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function summarizeSearchResult(result: object): {
|
|
20
|
+
items: {
|
|
21
|
+
id: AgentResultValue;
|
|
22
|
+
title: AgentResultValue;
|
|
23
|
+
kind: AgentResultValue;
|
|
24
|
+
status: AgentResultValue;
|
|
25
|
+
currentVersionId: AgentResultValue;
|
|
26
|
+
currentVersionNumber: AgentResultValue;
|
|
27
|
+
snapshotImagePath: AgentResultValue;
|
|
28
|
+
updatedAt: AgentResultValue;
|
|
29
|
+
}[];
|
|
30
|
+
total: number;
|
|
31
|
+
page: number;
|
|
32
|
+
pageSize: number;
|
|
33
|
+
search: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function summarizeFailureResult(result: object): {
|
|
36
|
+
success: boolean;
|
|
37
|
+
message: string;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=canvas-agent-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-agent-response.d.ts","sourceRoot":"","sources":["../../src/lib/canvas-agent-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,KAAK,oBAAoB,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AACvE,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,IAAI,GAAG,gBAAgB,EAAE,CAAA;AAKxE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,UAEnE;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;EAmB9E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;EAmBnD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;EAMpD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export function stringifyAgentToolResult(value) {
|
|
2
|
+
return JSON.stringify(value, null, 2);
|
|
3
|
+
}
|
|
4
|
+
export function summarizeDocumentMutationResult(result, message) {
|
|
5
|
+
const resultObject = asObject(result) ?? {};
|
|
6
|
+
const resultDocument = asObject(resultObject.document) ?? {};
|
|
7
|
+
const document = asObject(resultDocument.item) ?? (Object.keys(resultDocument).length ? resultDocument : null) ?? asObject(resultObject.item);
|
|
8
|
+
const version = asObject(resultObject.version) || asObject(resultDocument.currentVersion);
|
|
9
|
+
return {
|
|
10
|
+
success: typeof resultObject.success === 'boolean' ? resultObject.success : true,
|
|
11
|
+
message: typeof resultObject.message === 'string' ? resultObject.message : message,
|
|
12
|
+
documentId: document?.id,
|
|
13
|
+
title: document?.title,
|
|
14
|
+
status: document?.status,
|
|
15
|
+
currentVersionId: document?.currentVersionId ?? version?.id,
|
|
16
|
+
currentVersionNumber: document?.currentVersionNumber ?? version?.versionNumber,
|
|
17
|
+
sceneSource: resultDocument.sceneSource,
|
|
18
|
+
snapshotImagePath: resultDocument.snapshotImagePath ?? document?.snapshotImagePath ?? version?.snapshotImagePath,
|
|
19
|
+
snapshotImageUpdatedAt: resultDocument.snapshotImageUpdatedAt,
|
|
20
|
+
snapshotSummary: resultDocument.snapshotSummary ?? version?.snapshotSummary,
|
|
21
|
+
next: 'Open the Canvas Workbench to review, edit, annotate, or export the canvas.'
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function summarizeSearchResult(result) {
|
|
25
|
+
const resultObject = asObject(result) ?? {};
|
|
26
|
+
const items = Array.isArray(resultObject.items) ? resultObject.items.map(asObject).filter((item) => Boolean(item)) : [];
|
|
27
|
+
return {
|
|
28
|
+
items: items.map((item) => ({
|
|
29
|
+
id: item.id,
|
|
30
|
+
title: item.title,
|
|
31
|
+
kind: item.kind,
|
|
32
|
+
status: item.status,
|
|
33
|
+
currentVersionId: item.currentVersionId,
|
|
34
|
+
currentVersionNumber: item.currentVersionNumber,
|
|
35
|
+
snapshotImagePath: item.snapshotImagePath,
|
|
36
|
+
updatedAt: item.updatedAt
|
|
37
|
+
})),
|
|
38
|
+
total: typeof resultObject.total === 'number' ? resultObject.total : 0,
|
|
39
|
+
page: typeof resultObject.page === 'number' ? resultObject.page : 1,
|
|
40
|
+
pageSize: typeof resultObject.pageSize === 'number' ? resultObject.pageSize : 20,
|
|
41
|
+
search: typeof resultObject.search === 'string' ? resultObject.search : ''
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function summarizeFailureResult(result) {
|
|
45
|
+
const resultObject = asObject(result) ?? {};
|
|
46
|
+
return {
|
|
47
|
+
success: Boolean(resultObject.success),
|
|
48
|
+
message: typeof resultObject.message === 'string' ? resultObject.message : 'Canvas failure was recorded.'
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function asObject(value) {
|
|
52
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=canvas-agent-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-agent-response.js","sourceRoot":"","sources":["../../src/lib/canvas-agent-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { CanvasJsonObject, CanvasJsonValue, CanvasSnapshotData } from './types.js';
|
|
2
|
+
export declare class CanvasSnapshotValidationError extends Error {
|
|
3
|
+
readonly issues: CanvasSnapshotIssue[];
|
|
4
|
+
constructor(issues: CanvasSnapshotIssue[]);
|
|
5
|
+
}
|
|
6
|
+
export interface CanvasSnapshotIssue {
|
|
7
|
+
id: string;
|
|
8
|
+
typeName: string;
|
|
9
|
+
type: string | null;
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export type NormalizedCanvasSnapshot = CanvasSnapshotData;
|
|
13
|
+
type CanvasSnapshotCandidate = CanvasJsonValue | object | null | undefined;
|
|
14
|
+
export declare function isCanvasSnapshot(value: CanvasSnapshotCandidate): value is CanvasSnapshotData;
|
|
15
|
+
export declare function createEmptyCanvasSnapshot(): NormalizedCanvasSnapshot;
|
|
16
|
+
export declare function normalizeCanvasSnapshot(snapshot: CanvasSnapshotCandidate): NormalizedCanvasSnapshot;
|
|
17
|
+
export declare function sanitizeCanvasSnapshot(snapshot: CanvasSnapshotCandidate): {
|
|
18
|
+
snapshot: NormalizedCanvasSnapshot | null;
|
|
19
|
+
skippedRecords: CanvasSnapshotIssue[];
|
|
20
|
+
};
|
|
21
|
+
export declare function summarizeSnapshot(snapshot: CanvasSnapshotCandidate): {
|
|
22
|
+
recordCount: number;
|
|
23
|
+
pageCount: number;
|
|
24
|
+
shapeCount: number;
|
|
25
|
+
assetCount: number;
|
|
26
|
+
};
|
|
27
|
+
export declare function compactSnapshotForAgent(snapshot: CanvasSnapshotCandidate): {
|
|
28
|
+
pages: {
|
|
29
|
+
id: string;
|
|
30
|
+
name: CanvasJsonValue;
|
|
31
|
+
index: string;
|
|
32
|
+
}[];
|
|
33
|
+
shapes: {
|
|
34
|
+
id: string;
|
|
35
|
+
typeName: string;
|
|
36
|
+
type: string;
|
|
37
|
+
parentId: string;
|
|
38
|
+
index: string;
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
rotation: number;
|
|
42
|
+
meta: CanvasJsonObject;
|
|
43
|
+
props: CanvasJsonObject;
|
|
44
|
+
}[];
|
|
45
|
+
recordCount: number;
|
|
46
|
+
pageCount: number;
|
|
47
|
+
shapeCount: number;
|
|
48
|
+
assetCount: number;
|
|
49
|
+
};
|
|
50
|
+
export declare function compactRecordForAgent(record: CanvasSnapshotCandidate): string | number | boolean | object;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=canvas-snapshot.validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-snapshot.validation.d.ts","sourceRoot":"","sources":["../../src/lib/canvas-snapshot.validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAgB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErG,qBAAa,6BAA8B,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE;gBAA7B,MAAM,EAAE,mBAAmB,EAAE;CAInD;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AAEzD,KAAK,uBAAuB,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAS1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,GAAG,KAAK,IAAI,kBAAkB,CAE5F;AAED,wBAAgB,yBAAyB,IAAI,wBAAwB,CAOpE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,wBAAwB,CAMnG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,uBAAuB,GAAG;IAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAsD9J;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,uBAAuB;;;;;EAgBlE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;;EAexE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,uBAAuB,sCAsBpE"}
|