@xpert-ai/plugin-excalidraw 0.1.0 → 0.1.1

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 (42) hide show
  1. package/dist/lib/remote-components/excalidraw-workbench/app.js +592 -632
  2. package/package.json +4 -4
  3. package/dist/index.js +0 -153
  4. package/dist/index.js.map +0 -1
  5. package/dist/lib/constants.js +0 -42
  6. package/dist/lib/constants.js.map +0 -1
  7. package/dist/lib/entities/excalidraw-action-log.entity.js +0 -69
  8. package/dist/lib/entities/excalidraw-action-log.entity.js.map +0 -1
  9. package/dist/lib/entities/excalidraw-drawing-version.entity.js +0 -82
  10. package/dist/lib/entities/excalidraw-drawing-version.entity.js.map +0 -1
  11. package/dist/lib/entities/excalidraw-drawing.entity.js +0 -94
  12. package/dist/lib/entities/excalidraw-drawing.entity.js.map +0 -1
  13. package/dist/lib/entities/index.js +0 -4
  14. package/dist/lib/entities/index.js.map +0 -1
  15. package/dist/lib/excalidraw-view.provider.js +0 -423
  16. package/dist/lib/excalidraw-view.provider.js.map +0 -1
  17. package/dist/lib/excalidraw.middleware.js +0 -173
  18. package/dist/lib/excalidraw.middleware.js.map +0 -1
  19. package/dist/lib/excalidraw.plugin.js +0 -27
  20. package/dist/lib/excalidraw.plugin.js.map +0 -1
  21. package/dist/lib/excalidraw.service.js +0 -441
  22. package/dist/lib/excalidraw.service.js.map +0 -1
  23. package/dist/lib/excalidraw.templates.js +0 -78
  24. package/dist/lib/excalidraw.templates.js.map +0 -1
  25. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js +0 -103
  26. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js.map +0 -1
  27. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js +0 -4
  28. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js.map +0 -1
  29. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js +0 -11
  30. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js.map +0 -1
  31. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js +0 -8
  32. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js.map +0 -1
  33. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js +0 -36
  34. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js.map +0 -1
  35. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js +0 -198
  36. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js.map +0 -1
  37. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js +0 -324
  38. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js.map +0 -1
  39. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js +0 -4
  40. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js.map +0 -1
  41. package/dist/lib/types.js +0 -2
  42. package/dist/lib/types.js.map +0 -1
@@ -1,423 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@nestjs/common';
3
- import { existsSync } from 'node:fs';
4
- import { readFile } from 'node:fs/promises';
5
- import { createRequire } from 'node:module';
6
- import { dirname, join } from 'node:path';
7
- import { fileURLToPath } from 'node:url';
8
- import { renderRemoteReactIframeHtml, ViewExtensionProvider } from '@xpert-ai/plugin-sdk';
9
- import { AGENT_WORKBENCH_FIXED_SLOT, AGENT_WORKBENCH_MAIN_SLOT, ASSISTANT_CHAT_SEND_MESSAGE_COMMAND, EXCALIDRAW_FEATURE, EXCALIDRAW_ICON, EXCALIDRAW_MIDDLEWARE_TOOL_NAMES, EXCALIDRAW_PLUGIN_NAME, EXCALIDRAW_PROVIDER_KEY, EXCALIDRAW_REMOTE_ENTRY_KEY, EXCALIDRAW_WORKBENCH_VIEW_KEY } from './constants.js';
10
- import { ExcalidrawService } from './excalidraw.service.js';
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = dirname(__filename);
13
- const requireFromHere = createRequire(__filename);
14
- const text = (en_US, zh_Hans) => ({ en_US, zh_Hans });
15
- let ExcalidrawViewProvider = class ExcalidrawViewProvider {
16
- constructor(service) {
17
- this.service = service;
18
- }
19
- supports(context) {
20
- return context.hostType === 'agent';
21
- }
22
- getViewManifests(context, slot) {
23
- if (context.hostType !== 'agent' || (slot !== AGENT_WORKBENCH_MAIN_SLOT && slot !== AGENT_WORKBENCH_FIXED_SLOT)) {
24
- return [];
25
- }
26
- const fixed = slot === AGENT_WORKBENCH_FIXED_SLOT;
27
- return [
28
- {
29
- key: EXCALIDRAW_WORKBENCH_VIEW_KEY,
30
- title: text('Excalidraw Workbench', 'Excalidraw 绘图工作台'),
31
- description: text('Create, review, edit, version, import, export, and convert Agent-generated diagrams.', '创建、审核、编辑、版本化、导入导出并转换 Agent 生成的图形。'),
32
- icon: {
33
- type: 'svg',
34
- value: EXCALIDRAW_ICON,
35
- color: '#2563eb',
36
- alt: 'Excalidraw'
37
- },
38
- hostType: 'agent',
39
- slot,
40
- order: 40,
41
- refreshable: true,
42
- activation: {
43
- requiredFeatures: [EXCALIDRAW_FEATURE]
44
- },
45
- ...(fixed
46
- ? {
47
- workbench: {
48
- fixed: true,
49
- menu: {
50
- enabled: true,
51
- label: text('Excalidraw', 'Excalidraw 绘图'),
52
- order: 40,
53
- icon: {
54
- type: 'svg',
55
- value: EXCALIDRAW_ICON,
56
- alt: 'Excalidraw'
57
- }
58
- }
59
- }
60
- }
61
- : {}),
62
- source: {
63
- provider: EXCALIDRAW_PROVIDER_KEY,
64
- plugin: EXCALIDRAW_PLUGIN_NAME
65
- },
66
- view: {
67
- type: 'remote_component',
68
- runtime: 'react',
69
- protocolVersion: 1,
70
- component: {
71
- isolation: 'iframe',
72
- entry: EXCALIDRAW_REMOTE_ENTRY_KEY
73
- },
74
- dataSource: {
75
- mode: 'platform'
76
- }
77
- },
78
- dataSource: {
79
- mode: 'platform',
80
- querySchema: {
81
- supportsPagination: true,
82
- supportsSearch: true,
83
- supportsParameters: true,
84
- defaultPageSize: 20
85
- },
86
- cache: {
87
- enabled: false
88
- }
89
- },
90
- hostEvents: {
91
- subscriptions: [
92
- {
93
- key: 'excalidraw-tool-completed',
94
- event: 'assistant.tool.completed',
95
- filter: {
96
- sources: ['chatkit'],
97
- toolNames: [...EXCALIDRAW_MIDDLEWARE_TOOL_NAMES]
98
- },
99
- action: {
100
- type: 'forward',
101
- debounceMs: 1000
102
- }
103
- }
104
- ]
105
- },
106
- clientCommands: [
107
- {
108
- key: ASSISTANT_CHAT_SEND_MESSAGE_COMMAND,
109
- label: text('Send to Assistant Chat', '发送到 Assistant 对话')
110
- }
111
- ],
112
- actions: [
113
- { key: 'refresh', label: text('Refresh', '刷新'), icon: 'ri-refresh-line', placement: 'toolbar', actionType: 'refresh' },
114
- { key: 'create_drawing', label: text('New Drawing', '新建图形'), icon: 'ri-add-line', placement: 'toolbar', actionType: 'invoke' },
115
- { key: 'save_scene_version', label: text('Save Version', '保存版本'), icon: 'ri-save-line', placement: 'toolbar', actionType: 'invoke' },
116
- { key: 'restore_version', label: text('Restore Version', '恢复版本'), icon: 'ri-history-line', actionType: 'invoke' },
117
- { key: 'mark_reviewed', label: text('Mark Reviewed', '标记已审核'), icon: 'ri-check-line', actionType: 'invoke' },
118
- { key: 'mark_draft', label: text('Move Back to Draft', '退回草稿'), icon: 'ri-edit-line', actionType: 'invoke' },
119
- { key: 'archive_drawing', label: text('Archive Drawing', '归档图形'), icon: 'ri-archive-line', actionType: 'invoke' },
120
- {
121
- key: 'import_scene_file',
122
- label: text('Import Excalidraw File', '导入 Excalidraw 文件'),
123
- icon: 'ri-upload-cloud-line',
124
- placement: 'toolbar',
125
- actionType: 'invoke',
126
- transport: 'file'
127
- },
128
- {
129
- key: 'save_converted_mermaid_scene',
130
- label: text('Save Converted Mermaid Scene', '保存 Mermaid 转换结果'),
131
- icon: 'ri-git-branch-line',
132
- actionType: 'invoke'
133
- },
134
- {
135
- key: 'prepare_agent_draw_message',
136
- label: text('Ask Assistant to Draw', '让 Assistant 绘图'),
137
- icon: 'ri-send-plane-line',
138
- placement: 'toolbar',
139
- actionType: 'invoke'
140
- }
141
- ]
142
- }
143
- ];
144
- }
145
- async getRemoteComponentEntry(_context, viewKey, component) {
146
- if (viewKey !== EXCALIDRAW_WORKBENCH_VIEW_KEY || component.entry !== EXCALIDRAW_REMOTE_ENTRY_KEY) {
147
- return {
148
- html: '<!doctype html><html><body>Unsupported Excalidraw component.</body></html>',
149
- contentType: 'text/html; charset=utf-8'
150
- };
151
- }
152
- const componentDir = join(__dirname, 'remote-components', EXCALIDRAW_REMOTE_ENTRY_KEY);
153
- const appScript = await readFile(join(componentDir, 'app.js'), 'utf8');
154
- const appCssPath = join(componentDir, 'app.css');
155
- const appCss = existsSync(appCssPath) ? await readFile(appCssPath, 'utf8') : '';
156
- const react = await readPackageFile('react', 'umd/react.production.min.js');
157
- const reactDom = await readPackageFile('react-dom', 'umd/react-dom.production.min.js');
158
- return {
159
- html: renderRemoteReactIframeHtml({
160
- title: 'Excalidraw Workbench',
161
- lang: 'zh-Hans',
162
- reactUmd: react,
163
- reactDomUmd: reactDom,
164
- appScript,
165
- appCss
166
- }),
167
- contentType: 'text/html; charset=utf-8'
168
- };
169
- }
170
- async getViewData(context, viewKey, query) {
171
- if (viewKey !== EXCALIDRAW_WORKBENCH_VIEW_KEY) {
172
- return {};
173
- }
174
- return this.service.getWorkbenchData(scopeFromContext(context), {
175
- drawingId: getStringParameter(query.parameters, 'drawingId') ?? query.selectionId,
176
- status: getStringParameter(query.parameters, 'status'),
177
- kind: getStringParameter(query.parameters, 'kind'),
178
- search: query.search,
179
- page: query.page,
180
- pageSize: query.pageSize
181
- });
182
- }
183
- async executeViewAction(context, viewKey, actionKey, request) {
184
- if (viewKey !== EXCALIDRAW_WORKBENCH_VIEW_KEY) {
185
- return failure('Unsupported view', '不支持的视图');
186
- }
187
- try {
188
- const scope = scopeFromContext(context);
189
- if (actionKey === 'refresh') {
190
- return success('Excalidraw view refreshed', 'Excalidraw 视图已刷新');
191
- }
192
- if (actionKey === 'create_drawing') {
193
- const result = await this.service.createDrawing(scope, {
194
- title: requireStringInput(request.input, 'title', 'Drawing title is required.'),
195
- description: getStringInput(request.input, 'description'),
196
- kind: getStringInput(request.input, 'kind'),
197
- tags: getStringArrayInput(request.input, 'tags'),
198
- source: 'workbench'
199
- });
200
- return {
201
- ...success('Drawing created', '图形已创建'),
202
- data: result
203
- };
204
- }
205
- if (actionKey === 'save_scene_version' || actionKey === 'save_converted_mermaid_scene') {
206
- const drawingId = requireDrawingId(request);
207
- const result = await this.service.saveSceneVersion(scope, {
208
- drawingId,
209
- elements: getArrayInput(request.input, 'elements'),
210
- appState: getRecordInput(request.input, 'appState'),
211
- files: getRecordInput(request.input, 'files'),
212
- mermaidSource: getStringInput(request.input, 'mermaidSource'),
213
- sourceType: actionKey === 'save_converted_mermaid_scene' ? 'workbench_mermaid' : 'workbench',
214
- changeSummary: getStringInput(request.input, 'changeSummary')
215
- });
216
- return {
217
- ...success('Drawing version saved', '图形版本已保存'),
218
- data: result
219
- };
220
- }
221
- if (actionKey === 'restore_version') {
222
- const result = await this.service.restoreVersion(scope, requireDrawingId(request), requireStringInput(request.input, 'versionId', 'Version id is required.'), getStringInput(request.input, 'changeSummary'));
223
- return {
224
- ...success('Drawing version restored', '图形版本已恢复'),
225
- data: result
226
- };
227
- }
228
- if (actionKey === 'archive_drawing') {
229
- const result = await this.service.updateDrawingStatus(scope, {
230
- drawingId: requireDrawingId(request),
231
- status: 'archived',
232
- reason: getStringInput(request.input, 'reason')
233
- });
234
- return {
235
- ...success('Drawing archived', '图形已归档'),
236
- data: result
237
- };
238
- }
239
- if (actionKey === 'mark_reviewed' || actionKey === 'mark_draft') {
240
- const status = actionKey === 'mark_reviewed' ? 'reviewed' : 'draft';
241
- const result = await this.service.updateDrawingStatus(scope, {
242
- drawingId: requireDrawingId(request),
243
- status,
244
- reason: getStringInput(request.input, 'reason')
245
- });
246
- return {
247
- ...success(status === 'reviewed' ? 'Drawing marked as reviewed' : 'Drawing moved back to draft', status === 'reviewed' ? '图形已标记为已审核' : '图形已退回草稿'),
248
- data: result
249
- };
250
- }
251
- if (actionKey === 'prepare_agent_draw_message') {
252
- const prompt = requireStringInput(request.input, 'prompt', 'Drawing request is required.');
253
- return {
254
- ...success('Assistant draw request prepared', 'Assistant 绘图请求已准备'),
255
- data: {
256
- commandKey: ASSISTANT_CHAT_SEND_MESSAGE_COMMAND,
257
- payload: {
258
- text: buildAgentDrawPrompt(prompt, getStringInput(request.input, 'drawingId'))
259
- }
260
- },
261
- refresh: false
262
- };
263
- }
264
- return failure('Unsupported action', '不支持的操作');
265
- }
266
- catch (error) {
267
- const message = getActionErrorMessage(error, 'Excalidraw action failed');
268
- return {
269
- success: false,
270
- message: text(message, message)
271
- };
272
- }
273
- }
274
- async executeViewFileAction(context, viewKey, actionKey, request, file) {
275
- if (viewKey !== EXCALIDRAW_WORKBENCH_VIEW_KEY) {
276
- return failure('Unsupported view', '不支持的视图');
277
- }
278
- if (actionKey !== 'import_scene_file') {
279
- return failure('Unsupported file action', '不支持的文件操作');
280
- }
281
- try {
282
- const scene = parseExcalidrawJsonFile(file);
283
- const drawingId = getStringInput(request.input, 'drawingId') ?? getStringParameter(request.parameters, 'drawingId');
284
- const scope = scopeFromContext(context);
285
- const result = drawingId
286
- ? await this.service.saveSceneVersion(scope, {
287
- drawingId,
288
- elements: scene.elements,
289
- appState: scene.appState,
290
- files: scene.files,
291
- sourceType: 'import',
292
- changeSummary: `Imported ${file.originalname ?? 'Excalidraw file'}`
293
- })
294
- : await this.service.createDrawing(scope, {
295
- title: getStringInput(request.input, 'title') ?? removeExcalidrawExtension(file.originalname) ?? 'Imported Excalidraw Drawing',
296
- description: getStringInput(request.input, 'description'),
297
- kind: 'diagram',
298
- source: 'import',
299
- elements: scene.elements,
300
- appState: scene.appState,
301
- files: scene.files,
302
- changeSummary: `Imported ${file.originalname ?? 'Excalidraw file'}`
303
- });
304
- return {
305
- ...success('Excalidraw file imported', 'Excalidraw 文件已导入'),
306
- data: result
307
- };
308
- }
309
- catch (error) {
310
- const message = getActionErrorMessage(error, 'Failed to import Excalidraw file');
311
- return {
312
- success: false,
313
- message: text(message, message)
314
- };
315
- }
316
- }
317
- };
318
- ExcalidrawViewProvider = __decorate([
319
- Injectable(),
320
- ViewExtensionProvider(EXCALIDRAW_PROVIDER_KEY),
321
- __metadata("design:paramtypes", [ExcalidrawService])
322
- ], ExcalidrawViewProvider);
323
- export { ExcalidrawViewProvider };
324
- async function readPackageFile(packageName, relativePath) {
325
- const packageRoot = dirname(requireFromHere.resolve(`${packageName}/package.json`));
326
- return readFile(join(packageRoot, relativePath), 'utf8');
327
- }
328
- function scopeFromContext(context) {
329
- return {
330
- tenantId: context.tenantId,
331
- organizationId: context.organizationId ?? null,
332
- workspaceId: context.workspaceId ?? null,
333
- projectId: null,
334
- userId: context.userId,
335
- assistantId: context.hostType === 'agent' ? context.hostId : null
336
- };
337
- }
338
- function success(en_US, zh_Hans) {
339
- return {
340
- success: true,
341
- message: text(en_US, zh_Hans),
342
- refresh: true
343
- };
344
- }
345
- function failure(en_US, zh_Hans) {
346
- return {
347
- success: false,
348
- message: text(en_US, zh_Hans)
349
- };
350
- }
351
- function requireDrawingId(request) {
352
- return (getStringInput(request.input, 'drawingId') ??
353
- getStringParameter(request.parameters, 'drawingId') ??
354
- requireString(request.targetId, 'Drawing id is required.'));
355
- }
356
- function requireStringInput(input, key, message) {
357
- return requireString(getStringInput(input, key), message);
358
- }
359
- function requireString(value, message) {
360
- const normalized = value?.trim();
361
- if (!normalized) {
362
- throw new Error(message);
363
- }
364
- return normalized;
365
- }
366
- function getStringInput(input, key) {
367
- const value = input?.[key];
368
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
369
- }
370
- function getStringArrayInput(input, key) {
371
- const value = input?.[key];
372
- if (!Array.isArray(value)) {
373
- return undefined;
374
- }
375
- return value.filter((item) => typeof item === 'string' && item.trim().length > 0).map((item) => item.trim());
376
- }
377
- function getArrayInput(input, key) {
378
- const value = input?.[key];
379
- return Array.isArray(value) ? value : [];
380
- }
381
- function getRecordInput(input, key) {
382
- const value = input?.[key];
383
- return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
384
- }
385
- function getStringParameter(parameters, key) {
386
- const value = parameters?.[key];
387
- if (typeof value === 'string' && value.trim()) {
388
- return value.trim();
389
- }
390
- return undefined;
391
- }
392
- function getActionErrorMessage(error, fallback) {
393
- return error instanceof Error && error.message ? error.message : fallback;
394
- }
395
- function parseExcalidrawJsonFile(file) {
396
- const raw = file.buffer.toString('utf8');
397
- const parsed = JSON.parse(raw);
398
- const elements = Array.isArray(parsed.elements) ? parsed.elements : [];
399
- const appState = parsed.appState && typeof parsed.appState === 'object' && !Array.isArray(parsed.appState) ? parsed.appState : {};
400
- const files = parsed.files && typeof parsed.files === 'object' && !Array.isArray(parsed.files) ? parsed.files : {};
401
- return {
402
- elements,
403
- appState: appState,
404
- files: files
405
- };
406
- }
407
- function removeExcalidrawExtension(name) {
408
- const normalized = name?.trim();
409
- if (!normalized) {
410
- return undefined;
411
- }
412
- return normalized.replace(/\.excalidraw(?:\.json)?$/i, '').replace(/\.json$/i, '') || normalized;
413
- }
414
- function buildAgentDrawPrompt(prompt, drawingId) {
415
- const context = drawingId ? `请更新当前 Excalidraw 图形 drawingId=${drawingId}。` : '请创建一张新的 Excalidraw 图形。';
416
- return `${context}
417
-
418
- 用户绘图需求:
419
- ${prompt}
420
-
421
- 请优先判断是否适合 Mermaid 草稿;流程图、架构流、状态流可调用 excalidraw_save_mermaid_draft。需要精确布局或自由图形时,生成 Excalidraw elements 并调用 excalidraw_create_drawing、excalidraw_save_scene_version 或 excalidraw_patch_scene。更新已有图形前先调用 excalidraw_get_drawing。`;
422
- }
423
- //# sourceMappingURL=excalidraw-view.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"excalidraw-view.provider.js","sourceRoot":"","sources":["../../src/lib/excalidraw-view.provider.ts"],"names":[],"mappings":"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"}
@@ -1,173 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@nestjs/common';
3
- import { tool } from '@langchain/core/tools';
4
- import { AgentMiddlewareStrategy, RequestContext } from '@xpert-ai/plugin-sdk';
5
- import { z } from 'zod/v3';
6
- import { EXCALIDRAW_CREATE_DRAWING_TOOL_NAME, EXCALIDRAW_FEATURE, EXCALIDRAW_GET_DRAWING_TOOL_NAME, EXCALIDRAW_ICON, EXCALIDRAW_MIDDLEWARE_NAME, EXCALIDRAW_PATCH_SCENE_TOOL_NAME, EXCALIDRAW_REPORT_FAILURE_TOOL_NAME, EXCALIDRAW_SAVE_MERMAID_DRAFT_TOOL_NAME, EXCALIDRAW_SAVE_SCENE_VERSION_TOOL_NAME, EXCALIDRAW_SEARCH_DRAWINGS_TOOL_NAME, EXCALIDRAW_UPDATE_DRAWING_STATUS_TOOL_NAME } from './constants.js';
7
- import { ExcalidrawService } from './excalidraw.service.js';
8
- const drawingKindSchema = z.enum(['diagram', 'whiteboard', 'flowchart', 'architecture', 'wireframe', 'other']);
9
- const drawingStatusSchema = z.enum(['draft', 'reviewed', 'archived']);
10
- const versionSourceSchema = z.enum([
11
- 'agent_json',
12
- 'agent_patch',
13
- 'agent_mermaid',
14
- 'workbench',
15
- 'workbench_mermaid',
16
- 'import',
17
- 'restore'
18
- ]);
19
- const recordSchema = z.record(z.unknown());
20
- const elementUpdateSchema = z.object({ id: z.string().min(1) }).catchall(z.unknown());
21
- const sceneSchema = z.object({
22
- elements: z.array(z.unknown()).optional().describe('Excalidraw element array. Prefer valid Excalidraw element JSON.'),
23
- appState: recordSchema.optional().describe('Excalidraw appState JSON. Keep only serializable values.'),
24
- files: recordSchema.optional().describe('Excalidraw binary files map, when available.'),
25
- mermaidSource: z.string().optional().describe('Original Mermaid source when this scene came from Mermaid.')
26
- });
27
- const createDrawingSchema = sceneSchema.extend({
28
- title: z.string().min(1).describe('Human-readable drawing title.'),
29
- description: z.string().optional(),
30
- kind: drawingKindSchema.optional(),
31
- tags: z.array(z.string()).optional(),
32
- source: z.string().optional().describe('Short source label, such as user_request, agent_plan, or imported_file.'),
33
- changeSummary: z.string().optional().describe('Short summary for the initial version.')
34
- });
35
- const saveSceneVersionSchema = sceneSchema.extend({
36
- drawingId: z.string().min(1).describe('Existing Excalidraw drawing id.'),
37
- sourceType: versionSourceSchema.optional().describe('Where this version came from. Agent-created JSON should use agent_json.'),
38
- changeSummary: z.string().optional()
39
- });
40
- const patchSceneSchema = z.object({
41
- drawingId: z.string().min(1),
42
- addElements: z.array(z.unknown()).optional().describe('Elements to append to the current scene.'),
43
- updateElements: z.array(elementUpdateSchema).optional().describe('Shallow element updates keyed by id.'),
44
- deleteElementIds: z.array(z.string()).optional().describe('Element ids to remove from the current scene.'),
45
- appStatePatch: recordSchema.optional().describe('Shallow appState patch.'),
46
- files: recordSchema.optional().describe('Replacement files map. Omit to keep current files.'),
47
- mermaidSource: z.string().optional().describe('Replacement Mermaid source. Omit to keep current source.'),
48
- changeSummary: z.string().optional()
49
- });
50
- const saveMermaidDraftSchema = z.object({
51
- drawingId: z.string().optional().describe('Existing drawing id. Omit to create a new drawing for this Mermaid draft.'),
52
- title: z.string().optional().describe('Required when drawingId is omitted; otherwise used only as context.'),
53
- description: z.string().optional(),
54
- kind: drawingKindSchema.optional(),
55
- mermaidSource: z.string().min(1).describe('Mermaid diagram source. Flowcharts convert to editable Excalidraw elements best.'),
56
- changeSummary: z.string().optional()
57
- });
58
- const searchDrawingsSchema = z.object({
59
- status: drawingStatusSchema.optional(),
60
- kind: drawingKindSchema.optional(),
61
- search: z.string().optional(),
62
- page: z.number().int().min(1).optional(),
63
- pageSize: z.number().int().min(1).max(100).optional()
64
- });
65
- const getDrawingSchema = z.object({
66
- drawingId: z.string().min(1)
67
- });
68
- const updateDrawingStatusSchema = z.object({
69
- drawingId: z.string().min(1),
70
- status: drawingStatusSchema,
71
- reason: z.string().optional()
72
- });
73
- const reportFailureSchema = z.object({
74
- drawingId: z.string().optional(),
75
- versionId: z.string().optional(),
76
- operation: z.string().min(1),
77
- errorMessage: z.string().min(1),
78
- recoverable: z.boolean().optional(),
79
- evidence: z.unknown().optional()
80
- });
81
- let ExcalidrawMiddleware = class ExcalidrawMiddleware {
82
- constructor(service) {
83
- this.service = service;
84
- this.meta = {
85
- name: EXCALIDRAW_MIDDLEWARE_NAME,
86
- label: {
87
- en_US: 'Excalidraw',
88
- zh_Hans: 'Excalidraw 绘图'
89
- },
90
- description: {
91
- en_US: 'Create, update, version, search, and recover Excalidraw diagrams from an Agent.',
92
- zh_Hans: '让 Agent 创建、更新、版本化、检索和恢复 Excalidraw 图形。'
93
- },
94
- icon: {
95
- type: 'svg',
96
- value: EXCALIDRAW_ICON,
97
- color: '#2563eb'
98
- },
99
- features: [EXCALIDRAW_FEATURE],
100
- configSchema: {
101
- type: 'object',
102
- properties: {},
103
- required: []
104
- }
105
- };
106
- }
107
- createMiddleware(_options, context) {
108
- const scope = scopeFromContext(context);
109
- return {
110
- name: EXCALIDRAW_MIDDLEWARE_NAME,
111
- tools: [
112
- tool(async (input) => JSON.stringify(await this.service.createDrawing(scope, input), null, 2), {
113
- name: EXCALIDRAW_CREATE_DRAWING_TOOL_NAME,
114
- description: 'Create a reviewable Excalidraw drawing. Include initial elements/appState/files when you can produce valid Excalidraw JSON; otherwise create the drawing first and then save a Mermaid draft.',
115
- schema: createDrawingSchema
116
- }),
117
- tool(async (input) => JSON.stringify(await this.service.saveSceneVersion(scope, input), null, 2), {
118
- name: EXCALIDRAW_SAVE_SCENE_VERSION_TOOL_NAME,
119
- description: 'Save a complete Excalidraw scene as a new version for an existing drawing. Call excalidraw_get_drawing first when updating an existing user-edited drawing.',
120
- schema: saveSceneVersionSchema
121
- }),
122
- tool(async (input) => JSON.stringify(await this.service.patchScene(scope, input), null, 2), {
123
- name: EXCALIDRAW_PATCH_SCENE_TOOL_NAME,
124
- description: 'Apply add/update/delete element changes to the current drawing version and save the result as a new version. Prefer this for small targeted edits.',
125
- schema: patchSceneSchema
126
- }),
127
- tool(async (input) => JSON.stringify(await this.service.saveMermaidDraft(scope, input), null, 2), {
128
- name: EXCALIDRAW_SAVE_MERMAID_DRAFT_TOOL_NAME,
129
- description: 'Save Mermaid source for conversion in the Excalidraw workbench. Use this for flowcharts, architecture flows, state diagrams, and sequence-style drafts before manual review.',
130
- schema: saveMermaidDraftSchema
131
- }),
132
- tool(async (input) => JSON.stringify(await this.service.searchDrawings(scope, input), null, 2), {
133
- name: EXCALIDRAW_SEARCH_DRAWINGS_TOOL_NAME,
134
- description: 'Search existing Excalidraw drawings by status, kind, keyword, and pagination.',
135
- schema: searchDrawingsSchema
136
- }),
137
- tool(async (input) => JSON.stringify(await this.service.getDrawing(scope, input.drawingId), null, 2), {
138
- name: EXCALIDRAW_GET_DRAWING_TOOL_NAME,
139
- description: 'Get a drawing with current version, version history, Mermaid source, and recent action logs before making updates.',
140
- schema: getDrawingSchema
141
- }),
142
- tool(async (input) => JSON.stringify(await this.service.updateDrawingStatus(scope, input), null, 2), {
143
- name: EXCALIDRAW_UPDATE_DRAWING_STATUS_TOOL_NAME,
144
- description: 'Update a drawing status to draft, reviewed, or archived after user confirmation or workflow completion.',
145
- schema: updateDrawingStatusSchema
146
- }),
147
- tool(async (input) => JSON.stringify(await this.service.reportFailure(scope, input), null, 2), {
148
- name: EXCALIDRAW_REPORT_FAILURE_TOOL_NAME,
149
- description: 'Record a failed drawing or conversion attempt with recoverability and evidence. Use this instead of silently dropping bad source material.',
150
- schema: reportFailureSchema
151
- })
152
- ]
153
- };
154
- }
155
- };
156
- ExcalidrawMiddleware = __decorate([
157
- Injectable(),
158
- AgentMiddlewareStrategy(EXCALIDRAW_MIDDLEWARE_NAME),
159
- __metadata("design:paramtypes", [ExcalidrawService])
160
- ], ExcalidrawMiddleware);
161
- export { ExcalidrawMiddleware };
162
- function scopeFromContext(context) {
163
- return {
164
- tenantId: context.tenantId,
165
- organizationId: context.organizationId === undefined ? RequestContext.getOrganizationId() : context.organizationId,
166
- workspaceId: context.workspaceId ?? null,
167
- projectId: context.projectId ?? null,
168
- userId: context.userId,
169
- conversationId: context.conversationId ?? null,
170
- assistantId: context.xpertId ?? null
171
- };
172
- }
173
- //# sourceMappingURL=excalidraw.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"excalidraw.middleware.js","sourceRoot":"","sources":["../../src/lib/excalidraw.middleware.ts"],"names":[],"mappings":"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"}