@xpert-ai/plugin-drawio 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.
Files changed (100) hide show
  1. package/.xpertai-plugin/plugin.json +118 -0
  2. package/README.md +5 -0
  3. package/assets/composerIcon.svg +6 -0
  4. package/assets/logo.svg +10 -0
  5. package/dist/docs/drawio-agent-skill.md +36 -0
  6. package/dist/index.d.ts +14 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +153 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/constants.d.ts +24 -0
  11. package/dist/lib/constants.d.ts.map +1 -0
  12. package/dist/lib/constants.js +43 -0
  13. package/dist/lib/constants.js.map +1 -0
  14. package/dist/lib/drawio-view.provider.d.ts +14 -0
  15. package/dist/lib/drawio-view.provider.d.ts.map +1 -0
  16. package/dist/lib/drawio-view.provider.js +435 -0
  17. package/dist/lib/drawio-view.provider.js.map +1 -0
  18. package/dist/lib/drawio.middleware.d.ts +10 -0
  19. package/dist/lib/drawio.middleware.d.ts.map +1 -0
  20. package/dist/lib/drawio.middleware.js +159 -0
  21. package/dist/lib/drawio.middleware.js.map +1 -0
  22. package/dist/lib/drawio.plugin.d.ts +8 -0
  23. package/dist/lib/drawio.plugin.d.ts.map +1 -0
  24. package/dist/lib/drawio.plugin.js +27 -0
  25. package/dist/lib/drawio.plugin.js.map +1 -0
  26. package/dist/lib/drawio.service.d.ts +176 -0
  27. package/dist/lib/drawio.service.d.ts.map +1 -0
  28. package/dist/lib/drawio.service.js +415 -0
  29. package/dist/lib/drawio.service.js.map +1 -0
  30. package/dist/lib/drawio.templates.d.ts +3 -0
  31. package/dist/lib/drawio.templates.d.ts.map +1 -0
  32. package/dist/lib/drawio.templates.js +78 -0
  33. package/dist/lib/drawio.templates.js.map +1 -0
  34. package/dist/lib/entities/drawio-action-log.entity.d.ts +18 -0
  35. package/dist/lib/entities/drawio-action-log.entity.d.ts.map +1 -0
  36. package/dist/lib/entities/drawio-action-log.entity.js +69 -0
  37. package/dist/lib/entities/drawio-action-log.entity.js.map +1 -0
  38. package/dist/lib/entities/drawio-drawing-version.entity.d.ts +22 -0
  39. package/dist/lib/entities/drawio-drawing-version.entity.d.ts.map +1 -0
  40. package/dist/lib/entities/drawio-drawing-version.entity.js +86 -0
  41. package/dist/lib/entities/drawio-drawing-version.entity.js.map +1 -0
  42. package/dist/lib/entities/drawio-drawing.entity.d.ts +24 -0
  43. package/dist/lib/entities/drawio-drawing.entity.d.ts.map +1 -0
  44. package/dist/lib/entities/drawio-drawing.entity.js +94 -0
  45. package/dist/lib/entities/drawio-drawing.entity.js.map +1 -0
  46. package/dist/lib/entities/index.d.ts +4 -0
  47. package/dist/lib/entities/index.d.ts.map +1 -0
  48. package/dist/lib/entities/index.js +4 -0
  49. package/dist/lib/entities/index.js.map +1 -0
  50. package/dist/lib/remote-components/drawio-workbench/app.css +0 -0
  51. package/dist/lib/remote-components/drawio-workbench/app.js +1151 -0
  52. package/dist/lib/remote-components/drawio-workbench/src/i18n.d.ts +3 -0
  53. package/dist/lib/remote-components/drawio-workbench/src/i18n.d.ts.map +1 -0
  54. package/dist/lib/remote-components/drawio-workbench/src/i18n.js +95 -0
  55. package/dist/lib/remote-components/drawio-workbench/src/i18n.js.map +1 -0
  56. package/dist/lib/remote-components/drawio-workbench/src/i18n.ts +139 -0
  57. package/dist/lib/remote-components/drawio-workbench/src/main.tsx +916 -0
  58. package/dist/lib/remote-components/drawio-workbench/src/react-dom-client-shim.d.ts +3 -0
  59. package/dist/lib/remote-components/drawio-workbench/src/react-dom-client-shim.d.ts.map +1 -0
  60. package/dist/lib/remote-components/drawio-workbench/src/react-dom-client-shim.js +4 -0
  61. package/dist/lib/remote-components/drawio-workbench/src/react-dom-client-shim.js.map +1 -0
  62. package/dist/lib/remote-components/drawio-workbench/src/react-dom-client-shim.ts +4 -0
  63. package/dist/lib/remote-components/drawio-workbench/src/react-dom-shim.d.ts +11 -0
  64. package/dist/lib/remote-components/drawio-workbench/src/react-dom-shim.d.ts.map +1 -0
  65. package/dist/lib/remote-components/drawio-workbench/src/react-dom-shim.js +11 -0
  66. package/dist/lib/remote-components/drawio-workbench/src/react-dom-shim.js.map +1 -0
  67. package/dist/lib/remote-components/drawio-workbench/src/react-dom-shim.ts +11 -0
  68. package/dist/lib/remote-components/drawio-workbench/src/react-jsx-runtime-shim.d.ts +5 -0
  69. package/dist/lib/remote-components/drawio-workbench/src/react-jsx-runtime-shim.d.ts.map +1 -0
  70. package/dist/lib/remote-components/drawio-workbench/src/react-jsx-runtime-shim.js +8 -0
  71. package/dist/lib/remote-components/drawio-workbench/src/react-jsx-runtime-shim.js.map +1 -0
  72. package/dist/lib/remote-components/drawio-workbench/src/react-jsx-runtime-shim.ts +8 -0
  73. package/dist/lib/remote-components/drawio-workbench/src/react-shim.d.ts +36 -0
  74. package/dist/lib/remote-components/drawio-workbench/src/react-shim.d.ts.map +1 -0
  75. package/dist/lib/remote-components/drawio-workbench/src/react-shim.js +36 -0
  76. package/dist/lib/remote-components/drawio-workbench/src/react-shim.js.map +1 -0
  77. package/dist/lib/remote-components/drawio-workbench/src/react-shim.ts +36 -0
  78. package/dist/lib/remote-components/drawio-workbench/src/runtime.d.ts +21 -0
  79. package/dist/lib/remote-components/drawio-workbench/src/runtime.d.ts.map +1 -0
  80. package/dist/lib/remote-components/drawio-workbench/src/runtime.js +198 -0
  81. package/dist/lib/remote-components/drawio-workbench/src/runtime.js.map +1 -0
  82. package/dist/lib/remote-components/drawio-workbench/src/runtime.ts +228 -0
  83. package/dist/lib/remote-components/drawio-workbench/src/styles.d.ts +2 -0
  84. package/dist/lib/remote-components/drawio-workbench/src/styles.d.ts.map +1 -0
  85. package/dist/lib/remote-components/drawio-workbench/src/styles.js +290 -0
  86. package/dist/lib/remote-components/drawio-workbench/src/styles.js.map +1 -0
  87. package/dist/lib/remote-components/drawio-workbench/src/styles.ts +289 -0
  88. package/dist/lib/remote-components/drawio-workbench/src/vendor.d.ts +4 -0
  89. package/dist/lib/remote-components/drawio-workbench/src/vendor.d.ts.map +1 -0
  90. package/dist/lib/remote-components/drawio-workbench/src/vendor.js +4 -0
  91. package/dist/lib/remote-components/drawio-workbench/src/vendor.js.map +1 -0
  92. package/dist/lib/remote-components/drawio-workbench/src/vendor.ts +3 -0
  93. package/dist/lib/types.d.ts +67 -0
  94. package/dist/lib/types.d.ts.map +1 -0
  95. package/dist/lib/types.js +2 -0
  96. package/dist/lib/types.js.map +1 -0
  97. package/dist/xpert-drawio-assistant.yaml +130 -0
  98. package/package.json +85 -0
  99. package/skills/index/SKILL.md +45 -0
  100. package/skills/index/agents/xpertai.yaml +6 -0
@@ -0,0 +1,289 @@
1
+ export function injectStyles() {
2
+ if (document.getElementById('drawio-workbench-styles')) {
3
+ return
4
+ }
5
+ const style = document.createElement('style')
6
+ style.id = 'drawio-workbench-styles'
7
+ style.textContent = `
8
+ html, body, #root {
9
+ width: 100%;
10
+ height: 100%;
11
+ min-height: 100%;
12
+ margin: 0;
13
+ overflow: hidden;
14
+ background: var(--xps-background);
15
+ color: var(--xps-foreground);
16
+ font-family: var(--xps-font-sans);
17
+ }
18
+ * { box-sizing: border-box; }
19
+ button, input, textarea { font: inherit; }
20
+ .dw-shell {
21
+ --dw-rail-width: var(--xps-sidebar-rail-width, 44px);
22
+ --dw-panel-header-height: 2.5rem;
23
+ --dw-left-width: minmax(var(--dw-rail-width), clamp(240px, 20vw, 300px));
24
+ --dw-right-width: var(--dw-rail-width);
25
+ --dw-right-panel-width: min(340px, calc(100vw - var(--dw-rail-width) - 96px));
26
+ width: 100%;
27
+ height: 100vh;
28
+ min-height: 720px;
29
+ display: grid;
30
+ grid-template-columns: var(--dw-left-width) minmax(0, 1fr) var(--dw-right-width);
31
+ background: var(--xps-background);
32
+ overflow: hidden;
33
+ }
34
+ .dw-shell.left-collapsed { --dw-left-width: var(--dw-rail-width); }
35
+ .dw-shell.right-collapsed { --dw-right-width: var(--dw-rail-width); }
36
+ .dw-sidebar, .dw-inspector {
37
+ min-width: 0;
38
+ height: 100vh;
39
+ min-height: 720px;
40
+ }
41
+ .dw-inspector.xps-sidebar {
42
+ position: relative;
43
+ z-index: 30;
44
+ overflow: visible;
45
+ }
46
+ .dw-inspector[aria-expanded="true"] > .xps-sidebar-header,
47
+ .dw-inspector[aria-expanded="true"] > .xps-sidebar-content {
48
+ position: absolute;
49
+ right: 0;
50
+ width: var(--dw-right-panel-width);
51
+ max-width: calc(100vw - 16px);
52
+ z-index: 31;
53
+ background: var(--xps-card);
54
+ border-left: 1px solid var(--xps-border);
55
+ border-right: 1px solid var(--xps-border);
56
+ box-shadow: -12px 0 28px color-mix(in srgb, var(--xps-foreground) 14%, transparent);
57
+ }
58
+ .dw-inspector[aria-expanded="true"] > .xps-sidebar-header {
59
+ top: 0;
60
+ min-height: var(--dw-panel-header-height);
61
+ border-bottom: 1px solid var(--xps-border);
62
+ }
63
+ .dw-inspector[aria-expanded="true"] > .xps-sidebar-content {
64
+ top: var(--dw-panel-header-height);
65
+ bottom: 0;
66
+ min-height: 0;
67
+ overflow: hidden;
68
+ }
69
+ .dw-sidebar-title-truncate {
70
+ flex: 1 1 auto;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
74
+ }
75
+ .dw-sidebar-trigger-right { margin-left: auto; }
76
+ .dw-inspector-actions {
77
+ min-width: 0;
78
+ flex: 0 0 auto;
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 6px;
82
+ }
83
+ .dw-inspector-actions .xps-button,
84
+ .dw-inspector-actions .xps-badge {
85
+ flex: 0 0 auto;
86
+ white-space: nowrap;
87
+ }
88
+ .dw-sidebar-controls {
89
+ padding: 8px;
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: 8px;
93
+ border-bottom: 1px solid var(--xps-border);
94
+ }
95
+ .dw-main {
96
+ min-width: 0;
97
+ height: 100vh;
98
+ min-height: 720px;
99
+ display: grid;
100
+ grid-template-rows: auto minmax(0, 1fr);
101
+ background: var(--xps-background);
102
+ }
103
+ .dw-toolbar {
104
+ display: grid;
105
+ grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
106
+ align-items: center;
107
+ gap: 8px 10px;
108
+ min-height: 48px;
109
+ padding: 8px 12px;
110
+ background: var(--xps-card);
111
+ border-bottom: 1px solid var(--xps-border);
112
+ min-width: 0;
113
+ overflow: visible;
114
+ }
115
+ .dw-toolbar-title { min-width: 0; }
116
+ .dw-toolbar-actions {
117
+ min-width: 0;
118
+ display: flex;
119
+ flex-wrap: wrap;
120
+ align-items: center;
121
+ gap: 8px;
122
+ }
123
+ .dw-toolbar-actions .xps-button,
124
+ .dw-toolbar-actions .xps-badge { flex: 0 0 auto; }
125
+ .dw-title-input { width: 100%; }
126
+ .dw-button-icon {
127
+ width: 1rem;
128
+ height: 1rem;
129
+ flex: 0 0 auto;
130
+ stroke-width: 2;
131
+ }
132
+ .dw-editor {
133
+ min-height: 0;
134
+ height: 100%;
135
+ background: var(--xps-background);
136
+ position: relative;
137
+ overflow: hidden;
138
+ }
139
+ .dw-editor iframe {
140
+ width: 100%;
141
+ height: 100%;
142
+ border: 0;
143
+ display: block;
144
+ background: #fff;
145
+ }
146
+ .dw-editor-placeholder {
147
+ position: absolute;
148
+ inset: 0;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ color: var(--xps-muted-foreground);
153
+ pointer-events: none;
154
+ background: color-mix(in srgb, var(--xps-background) 88%, transparent);
155
+ }
156
+ .dw-list {
157
+ flex: 1 1 auto;
158
+ min-height: 0;
159
+ padding: 6px;
160
+ }
161
+ .dw-item-title {
162
+ display: block;
163
+ width: 100%;
164
+ color: var(--xps-foreground);
165
+ font-weight: 650;
166
+ overflow: hidden;
167
+ text-overflow: ellipsis;
168
+ white-space: nowrap;
169
+ }
170
+ .dw-item-meta, .dw-muted {
171
+ color: var(--xps-muted-foreground);
172
+ font-size: 12px;
173
+ min-width: 0;
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
177
+ }
178
+ .dw-status {
179
+ margin-left: auto;
180
+ flex: 0 0 auto;
181
+ }
182
+ .dw-inspector-scroll {
183
+ min-height: 0;
184
+ height: 100%;
185
+ flex: 1 1 auto;
186
+ }
187
+ .dw-inspector-stack {
188
+ padding: 10px 12px 10px 10px;
189
+ display: flex;
190
+ flex-direction: column;
191
+ gap: 10px;
192
+ min-width: 0;
193
+ max-width: 100%;
194
+ }
195
+ .dw-section {
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: 8px;
199
+ min-width: 0;
200
+ max-width: 100%;
201
+ }
202
+ .dw-section-title {
203
+ font-size: 13px;
204
+ font-weight: 700;
205
+ color: var(--xps-foreground);
206
+ }
207
+ .dw-inline-actions {
208
+ display: flex;
209
+ flex-wrap: wrap;
210
+ gap: 8px;
211
+ }
212
+ .dw-version {
213
+ border: 1px solid var(--xps-border);
214
+ border-radius: var(--xps-radius);
215
+ background: color-mix(in srgb, var(--xps-card) 94%, var(--xps-muted) 6%);
216
+ padding: 8px;
217
+ display: grid;
218
+ grid-template-columns: minmax(0, 1fr) var(--xps-control-height);
219
+ align-items: center;
220
+ gap: 8px;
221
+ width: 100%;
222
+ min-width: 0;
223
+ overflow: hidden;
224
+ }
225
+ .dw-version > div {
226
+ min-width: 0;
227
+ overflow: hidden;
228
+ }
229
+ .dw-version > div > div {
230
+ min-width: 0;
231
+ overflow: hidden;
232
+ text-overflow: ellipsis;
233
+ white-space: nowrap;
234
+ }
235
+ .dw-version-action.xps-button {
236
+ width: var(--xps-control-height);
237
+ height: var(--xps-control-height);
238
+ padding: 0;
239
+ justify-self: end;
240
+ }
241
+ .dw-inspector .xps-input,
242
+ .dw-inspector .xps-textarea,
243
+ .dw-inspector .xps-scroll-area,
244
+ .dw-inspector .xps-scroll-area-viewport {
245
+ min-width: 0;
246
+ max-width: 100%;
247
+ }
248
+ .dw-inspector .xps-textarea {
249
+ overflow-x: hidden;
250
+ overflow-wrap: anywhere;
251
+ word-break: break-word;
252
+ }
253
+ .dw-inspector .dw-muted {
254
+ overflow: visible;
255
+ text-overflow: clip;
256
+ white-space: normal;
257
+ overflow-wrap: anywhere;
258
+ }
259
+ .dw-empty {
260
+ height: 100%;
261
+ display: flex;
262
+ align-items: center;
263
+ justify-content: center;
264
+ color: var(--xps-muted-foreground);
265
+ }
266
+ .dw-hidden-file { display: none; }
267
+ @media (max-width: 1040px) {
268
+ .dw-shell,
269
+ .dw-shell.left-collapsed,
270
+ .dw-shell.right-collapsed {
271
+ --dw-left-width: var(--dw-rail-width);
272
+ --dw-right-width: var(--dw-rail-width);
273
+ --dw-right-panel-width: min(320px, calc(100vw - var(--dw-rail-width) - 32px));
274
+ grid-template-columns: var(--dw-left-width) minmax(0, 1fr) var(--dw-right-width);
275
+ }
276
+ .dw-sidebar .xps-sidebar-content,
277
+ .dw-inspector-scroll { display: none; }
278
+ .dw-inspector[aria-expanded="true"] .dw-inspector-scroll { display: block; }
279
+ .xps-sidebar-rail { display: flex; }
280
+ }
281
+ @media (max-width: 920px) {
282
+ .dw-toolbar {
283
+ grid-template-columns: minmax(0, 1fr);
284
+ }
285
+ .dw-status { margin-left: 0; }
286
+ }
287
+ `
288
+ document.head.appendChild(style)
289
+ }
@@ -0,0 +1,4 @@
1
+ export declare const React: any;
2
+ export declare const ReactDOM: any;
3
+ export declare const h: any;
4
+ //# sourceMappingURL=vendor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../../../../src/lib/remote-components/drawio-workbench/src/vendor.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,KAAwB,CAAA;AAC1C,eAAO,MAAM,QAAQ,KAA2B,CAAA;AAChD,eAAO,MAAM,CAAC,KAAsB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export const React = window.React;
2
+ export const ReactDOM = window.ReactDOM;
3
+ export const h = React.createElement;
4
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/drawio-workbench/src/vendor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK,CAAA;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAA;AAChD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export const React = (window as any).React
2
+ export const ReactDOM = (window as any).ReactDOM
3
+ export const h = React.createElement
@@ -0,0 +1,67 @@
1
+ export type DrawioDrawingStatus = 'draft' | 'reviewed' | 'archived';
2
+ export type DrawioDrawingKind = 'diagram' | 'flowchart' | 'architecture' | 'network' | 'wireframe' | 'sequence' | 'other';
3
+ export type DrawioVersionSource = 'agent_xml' | 'agent_patch' | 'agent_mermaid' | 'workbench' | 'workbench_mermaid' | 'import' | 'restore';
4
+ export type DrawioActorType = 'agent' | 'user' | 'system';
5
+ export type DrawioActionType = 'drawing_created' | 'version_saved' | 'scene_patched' | 'mermaid_draft_saved' | 'status_updated' | 'version_restored' | 'drawing_archived' | 'failure_reported';
6
+ export interface DrawioScope {
7
+ tenantId: string;
8
+ organizationId?: string | null;
9
+ workspaceId?: string | null;
10
+ projectId?: string | null;
11
+ userId?: string | null;
12
+ assistantId?: string | null;
13
+ conversationId?: string | null;
14
+ }
15
+ export interface DrawioSceneInput {
16
+ xml?: string | null;
17
+ mermaidSource?: string | null;
18
+ previewSvg?: string | null;
19
+ previewPng?: string | null;
20
+ descriptor?: Record<string, unknown> | null;
21
+ }
22
+ export interface CreateDrawioDrawingInput extends DrawioSceneInput {
23
+ title: string;
24
+ description?: string;
25
+ kind?: DrawioDrawingKind;
26
+ tags?: string[];
27
+ source?: string;
28
+ changeSummary?: string;
29
+ }
30
+ export interface SaveDrawioSceneVersionInput extends DrawioSceneInput {
31
+ drawingId: string;
32
+ sourceType?: DrawioVersionSource;
33
+ changeSummary?: string;
34
+ }
35
+ export interface PatchDrawioSceneInput extends DrawioSceneInput {
36
+ drawingId: string;
37
+ changeSummary?: string;
38
+ }
39
+ export interface SaveDrawioMermaidDraftInput {
40
+ drawingId?: string;
41
+ title?: string;
42
+ description?: string;
43
+ kind?: DrawioDrawingKind;
44
+ mermaidSource: string;
45
+ changeSummary?: string;
46
+ }
47
+ export interface SearchDrawioDrawingsInput {
48
+ status?: DrawioDrawingStatus;
49
+ kind?: DrawioDrawingKind;
50
+ search?: string;
51
+ page?: number;
52
+ pageSize?: number;
53
+ }
54
+ export interface UpdateDrawioDrawingStatusInput {
55
+ drawingId: string;
56
+ status: DrawioDrawingStatus;
57
+ reason?: string;
58
+ }
59
+ export interface ReportDrawioFailureInput {
60
+ drawingId?: string;
61
+ versionId?: string;
62
+ operation: string;
63
+ errorMessage: string;
64
+ recoverable?: boolean;
65
+ evidence?: unknown;
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,130 @@
1
+ team:
2
+ name: drawio-assistant
3
+ type: agent
4
+ title: draw.io 绘图助手
5
+ description: 面向流程图、架构图、线框图和自由白板的 Agentic Drawing 助手
6
+ avatar:
7
+ emoji:
8
+ id: art
9
+ background: rgb(219, 234, 254)
10
+ options:
11
+ templateKey: drawio-assistant
12
+ dataXpert:
13
+ managedBy: data-xpert
14
+ templateKey: drawio-assistant
15
+ assistantKind: business-assistant
16
+ businessDomain: drawio
17
+ requiredPlugin: '@xpert-ai/plugin-drawio'
18
+ requiredPlugins:
19
+ - '@xpert-ai/plugin-drawio'
20
+ requiredCapabilities:
21
+ - drawio
22
+ - drawio-workbench
23
+ - drawio-agent-drawing
24
+ agentConfig:
25
+ stateVariables:
26
+ - name: currentDrawingId
27
+ type: string
28
+ default: ""
29
+ description: Current draw.io diagram id selected in the workbench
30
+ operation: null
31
+ - name: currentVersionId
32
+ type: string
33
+ default: ""
34
+ description: Current draw.io version id selected in the workbench
35
+ operation: null
36
+ recursionLimit: 10000
37
+ features:
38
+ sandbox:
39
+ enabled: true
40
+ provider: docker-sandbox
41
+ version: "1"
42
+ agent:
43
+ key: Agent_Drawio
44
+ copilotModel:
45
+ referencedId: null
46
+ modelType: llm
47
+ model: qwen3.6-plus
48
+ options:
49
+ context_size: 1000000
50
+ temperature: 0.2
51
+ maxRetries: 6
52
+ max_tokens: 8192
53
+ top_p: 0.95
54
+ knowledgebases: []
55
+ toolsets: []
56
+ tags: []
57
+ nodes:
58
+ - type: agent
59
+ key: Agent_Drawio
60
+ position:
61
+ x: 860
62
+ y: 20
63
+ entity:
64
+ key: Agent_Drawio
65
+ name: drawio-assistant
66
+ title: draw.io 绘图助手
67
+ description: 面向流程图、架构图、线框图和自由白板的 Agentic Drawing 助手
68
+ avatar:
69
+ emoji:
70
+ id: art
71
+ background: rgb(219, 234, 254)
72
+ prompt: >
73
+ You are draw.io Drawing Assistant, a data-xpert business assistant for
74
+ creating and managing reviewable draw.io / diagrams.net diagrams.
75
+
76
+ Use draw.io middleware tools as the system of record. Do not claim that a
77
+ diagram was saved unless a tool call succeeded. Keep every diagram reviewable,
78
+ editable, and versioned.
79
+
80
+ Drawing workflow:
81
+ 1. Clarify the drawing goal, audience, key nodes, relationships, and any visual
82
+ constraints when the request is ambiguous.
83
+ 2. Prefer Mermaid for flowcharts, architecture flows, state flows, and simple
84
+ dependency diagrams. Save Mermaid with drawio_save_mermaid_draft so the
85
+ workbench can load it into the embedded draw.io editor for user review.
86
+ 3. Use direct diagrams.net/draw.io XML when the user needs precise layout,
87
+ annotations, freeform whiteboarding, wireframes, or a targeted edit.
88
+ 4. When updating an existing diagram, call drawio_get_diagram first, preserve
89
+ existing user edits, then call drawio_patch_scene for small changes or
90
+ drawio_save_scene_version for a full replacement.
91
+ 5. Use clear titles, short change summaries, and tags when useful.
92
+ 6. If source material cannot be converted or the request conflicts with the
93
+ current drawing, call drawio_report_failure and explain the smallest
94
+ useful next step.
95
+
96
+ Mermaid rules:
97
+ - Flowcharts, architecture flows, state flows, and simple sequences are good
98
+ Mermaid candidates for draw.io import.
99
+ - For Mermaid diagram types that diagrams.net may import as an image or with
100
+ limited structure, warn the user that manual editing may be limited after conversion.
101
+ - Keep Mermaid source concise, syntactically valid, and readable.
102
+
103
+ draw.io XML rules:
104
+ - Prefer an <mxfile> wrapper with at least one <diagram> page.
105
+ - Preserve existing XML unless the user asks for a full replacement.
106
+ - Use simple mxCell shapes, text labels, arrows, and grouping by visual proximity.
107
+ - Report uncertainty in the response instead of inventing missing domain facts.
108
+
109
+ Prefer concise Chinese responses for end users unless they ask otherwise.
110
+ collaboratorNames: []
111
+ toolsetIds: []
112
+ knowledgebaseIds: []
113
+ hash: drawio-agent-v1
114
+ - type: workflow
115
+ key: Middleware_Drawio
116
+ position:
117
+ x: 1160
118
+ y: 332
119
+ entity:
120
+ type: middleware
121
+ key: Middleware_Drawio
122
+ title: draw.io Agent Tools
123
+ provider: DrawioMiddleware
124
+ required: true
125
+ hash: drawio-middleware-v1
126
+ connections:
127
+ - type: workflow
128
+ key: Agent_Drawio/Middleware_Drawio
129
+ from: Agent_Drawio
130
+ to: Middleware_Drawio
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@xpert-ai/plugin-drawio",
3
+ "version": "0.1.0",
4
+ "description": "draw.io/diagrams.net app plugin for agent-created diagrams, reviewable XML versions, Mermaid drafts, and an embedded editor workbench.",
5
+ "author": {
6
+ "name": "XpertAI",
7
+ "url": "https://xpertai.cn"
8
+ },
9
+ "license": "AGPL-3.0",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/xpert-ai/xpert-plugins.git",
13
+ "directory": "xpertai/apps/drawio"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/xpert-ai/xpert-plugins/issues"
17
+ },
18
+ "type": "module",
19
+ "main": "./dist/index.js",
20
+ "module": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ "./package.json": "./package.json",
24
+ ".": {
25
+ "@xpert-plugins-starter/source": "./src/index.ts",
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js",
28
+ "default": "./dist/index.js"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist",
33
+ ".xpertai-plugin",
34
+ "assets",
35
+ "skills",
36
+ "README.md",
37
+ "!**/*.tsbuildinfo"
38
+ ],
39
+ "xpert": {
40
+ "plugin": {
41
+ "level": "system"
42
+ }
43
+ },
44
+ "dependencies": {
45
+ "tslib": "^2.3.0",
46
+ "@xpert-ai/plugin-shadcn-ui": "0.1.0"
47
+ },
48
+ "peerDependencies": {
49
+ "@langchain/core": ">=0.3.0",
50
+ "@nestjs/common": "^11.1.6",
51
+ "@nestjs/core": "^11.1.6",
52
+ "@nestjs/typeorm": "^11.0.0",
53
+ "@xpert-ai/contracts": "^3.10.1",
54
+ "@xpert-ai/plugin-sdk": "^3.10.1",
55
+ "react": ">=18",
56
+ "react-dom": ">=18",
57
+ "typeorm": "^0.3.24",
58
+ "zod": "3.25.67"
59
+ },
60
+ "devDependencies": {
61
+ "@langchain/core": "0.3.72",
62
+ "@nestjs/common": "^11.1.6",
63
+ "@nestjs/core": "^11.1.6",
64
+ "@nestjs/typeorm": "^11.0.0",
65
+ "@types/node": "^20.19.9",
66
+ "@xpert-ai/contracts": "3.10.1",
67
+ "@xpert-ai/plugin-sdk": "^3.10.1",
68
+ "esbuild": "^0.27.0",
69
+ "react": "^18.3.1",
70
+ "react-dom": "^18.3.1",
71
+ "reflect-metadata": "^0.2.2",
72
+ "typeorm": "^0.3.24",
73
+ "typescript": "^5.9.2",
74
+ "zod": "3.25.67"
75
+ },
76
+ "publishConfig": {
77
+ "access": "public"
78
+ },
79
+ "scripts": {
80
+ "build": "node scripts/build-remote-components.mjs && tsc -p tsconfig.lib.json && node scripts/copy-assets.mjs",
81
+ "lint": "echo \"(todo) add lint\"",
82
+ "test": "tsc -p tsconfig.spec.json --noEmit && node scripts/build-remote-components.mjs --check",
83
+ "typecheck": "tsc -p tsconfig.spec.json --noEmit && node scripts/build-remote-components.mjs --check"
84
+ }
85
+ }
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: index
3
+ description: "Use when an Agent needs to create, update, review, or manage draw.io / diagrams.net diagrams through the Xpert draw.io plugin, including Mermaid drafts, XML scenes, embedded editor review, versioning, import/export, and failure reporting."
4
+ ---
5
+
6
+ # draw.io Agent Drawing
7
+
8
+ Use this skill when a user asks to create, edit, review, convert, import, export, or manage a draw.io / diagrams.net diagram in Xpert.
9
+
10
+ ## Plugin Purpose
11
+
12
+ The draw.io plugin gives an Agent a structured diagram loop:
13
+
14
+ - Save reviewable draw.io diagram records.
15
+ - Store diagrams.net XML, Mermaid drafts, previews, and metadata as versions.
16
+ - Load Mermaid drafts into the embedded diagrams.net editor.
17
+ - Let the user manually edit, save, restore, approve, archive, import, or export diagrams in the draw.io Workbench.
18
+
19
+ ## Workflow
20
+
21
+ 1. Identify the diagram type, audience, key nodes, relationships, and any layout constraints.
22
+ 2. Prefer Mermaid for flowcharts, architecture flows, state flows, and sequence-style drafts when diagrams.net can import the structure.
23
+ 3. Use diagrams.net XML when the user needs precise layout, custom shapes, annotations, wireframes, network diagrams, or a targeted edit.
24
+ 4. Before updating an existing diagram, call `drawio_get_diagram` and preserve user-edited XML unless a full replacement is requested.
25
+ 5. Save every meaningful Agent or Workbench change as a new version with a clear `changeSummary`.
26
+ 6. If XML generation or conversion is unsafe, call `drawio_report_failure` and explain the recoverable path.
27
+
28
+ ## Tool Selection
29
+
30
+ - `drawio_create_diagram`: create a managed draw.io diagram, optionally with initial XML or Mermaid.
31
+ - `drawio_save_scene_version`: save complete diagrams.net XML as a new version.
32
+ - `drawio_patch_scene`: save a targeted replacement of XML, Mermaid source, descriptor, or preview fields.
33
+ - `drawio_save_mermaid_draft`: save Mermaid source for Workbench import into diagrams.net.
34
+ - `drawio_search_diagrams`: find existing diagrams.
35
+ - `drawio_get_diagram`: read current XML, Mermaid, versions, and logs before edits.
36
+ - `drawio_update_diagram_status`: mark draft, reviewed, or archived after user confirmation.
37
+ - `drawio_report_failure`: record generation, import, conversion, or export failures.
38
+
39
+ ## Workbench Contract
40
+
41
+ The embedded draw.io editor is the source for manual edits. Mermaid drafts are not final diagrams until they are loaded, reviewed, and saved from the Workbench as XML versions.
42
+
43
+ ## Response Style
44
+
45
+ Keep responses concise. Tell the user which route was used, which version was saved, and what can be reviewed or edited next.
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "draw.io Agent Drawing"
3
+ short_description: "Create, update, version, and review draw.io diagrams with Mermaid and diagrams.net XML paths."
4
+ default_prompt: "Create an editable architecture diagram in draw.io"
5
+ policy:
6
+ allow_implicit_invocation: true