@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.
Files changed (109) hide show
  1. package/.xpertai-plugin/plugin.json +121 -0
  2. package/README.md +14 -0
  3. package/assets/composerIcon.svg +8 -0
  4. package/assets/logo.svg +47 -0
  5. package/dist/index.d.ts +15 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +144 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/canvas-agent-response.d.ts +40 -0
  10. package/dist/lib/canvas-agent-response.d.ts.map +1 -0
  11. package/dist/lib/canvas-agent-response.js +54 -0
  12. package/dist/lib/canvas-agent-response.js.map +1 -0
  13. package/dist/lib/canvas-snapshot.validation.d.ts +52 -0
  14. package/dist/lib/canvas-snapshot.validation.d.ts.map +1 -0
  15. package/dist/lib/canvas-snapshot.validation.js +223 -0
  16. package/dist/lib/canvas-snapshot.validation.js.map +1 -0
  17. package/dist/lib/canvas-view.provider.d.ts +14 -0
  18. package/dist/lib/canvas-view.provider.d.ts.map +1 -0
  19. package/dist/lib/canvas-view.provider.js +529 -0
  20. package/dist/lib/canvas-view.provider.js.map +1 -0
  21. package/dist/lib/canvas.middleware.d.ts +10 -0
  22. package/dist/lib/canvas.middleware.d.ts.map +1 -0
  23. package/dist/lib/canvas.middleware.js +277 -0
  24. package/dist/lib/canvas.middleware.js.map +1 -0
  25. package/dist/lib/canvas.plugin.d.ts +8 -0
  26. package/dist/lib/canvas.plugin.d.ts.map +1 -0
  27. package/dist/lib/canvas.plugin.js +27 -0
  28. package/dist/lib/canvas.plugin.js.map +1 -0
  29. package/dist/lib/canvas.service.d.ts +1514 -0
  30. package/dist/lib/canvas.service.d.ts.map +1 -0
  31. package/dist/lib/canvas.service.js +1290 -0
  32. package/dist/lib/canvas.service.js.map +1 -0
  33. package/dist/lib/canvas.templates.d.ts +3 -0
  34. package/dist/lib/canvas.templates.d.ts.map +1 -0
  35. package/dist/lib/canvas.templates.js +79 -0
  36. package/dist/lib/canvas.templates.js.map +1 -0
  37. package/dist/lib/constants.d.ts +26 -0
  38. package/dist/lib/constants.d.ts.map +1 -0
  39. package/dist/lib/constants.js +44 -0
  40. package/dist/lib/constants.js.map +1 -0
  41. package/dist/lib/entities/canvas-action-log.entity.d.ts +18 -0
  42. package/dist/lib/entities/canvas-action-log.entity.d.ts.map +1 -0
  43. package/dist/lib/entities/canvas-action-log.entity.js +69 -0
  44. package/dist/lib/entities/canvas-action-log.entity.js.map +1 -0
  45. package/dist/lib/entities/canvas-document-version.entity.d.ts +27 -0
  46. package/dist/lib/entities/canvas-document-version.entity.d.ts.map +1 -0
  47. package/dist/lib/entities/canvas-document-version.entity.js +106 -0
  48. package/dist/lib/entities/canvas-document-version.entity.js.map +1 -0
  49. package/dist/lib/entities/canvas-document.entity.d.ts +36 -0
  50. package/dist/lib/entities/canvas-document.entity.d.ts.map +1 -0
  51. package/dist/lib/entities/canvas-document.entity.js +142 -0
  52. package/dist/lib/entities/canvas-document.entity.js.map +1 -0
  53. package/dist/lib/entities/index.d.ts +4 -0
  54. package/dist/lib/entities/index.d.ts.map +1 -0
  55. package/dist/lib/entities/index.js +4 -0
  56. package/dist/lib/entities/index.js.map +1 -0
  57. package/dist/lib/remote-components/canvas-workbench/app.css +1 -0
  58. package/dist/lib/remote-components/canvas-workbench/app.js +1707 -0
  59. package/dist/lib/remote-components/canvas-workbench/src/autosave.d.ts +39 -0
  60. package/dist/lib/remote-components/canvas-workbench/src/autosave.d.ts.map +1 -0
  61. package/dist/lib/remote-components/canvas-workbench/src/autosave.js +155 -0
  62. package/dist/lib/remote-components/canvas-workbench/src/autosave.js.map +1 -0
  63. package/dist/lib/remote-components/canvas-workbench/src/i18n.d.ts +3 -0
  64. package/dist/lib/remote-components/canvas-workbench/src/i18n.d.ts.map +1 -0
  65. package/dist/lib/remote-components/canvas-workbench/src/i18n.js +79 -0
  66. package/dist/lib/remote-components/canvas-workbench/src/i18n.js.map +1 -0
  67. package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.d.ts +4 -0
  68. package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.d.ts.map +1 -0
  69. package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.js +7 -0
  70. package/dist/lib/remote-components/canvas-workbench/src/react-dom-client-shim.js.map +1 -0
  71. package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.d.ts +14 -0
  72. package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.d.ts.map +1 -0
  73. package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.js +14 -0
  74. package/dist/lib/remote-components/canvas-workbench/src/react-dom-shim.js.map +1 -0
  75. package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.d.ts +7 -0
  76. package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.d.ts.map +1 -0
  77. package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.js +26 -0
  78. package/dist/lib/remote-components/canvas-workbench/src/react-jsx-runtime-shim.js.map +1 -0
  79. package/dist/lib/remote-components/canvas-workbench/src/react-shim.d.ts +47 -0
  80. package/dist/lib/remote-components/canvas-workbench/src/react-shim.d.ts.map +1 -0
  81. package/dist/lib/remote-components/canvas-workbench/src/react-shim.js +39 -0
  82. package/dist/lib/remote-components/canvas-workbench/src/react-shim.js.map +1 -0
  83. package/dist/lib/remote-components/canvas-workbench/src/runtime.d.ts +45 -0
  84. package/dist/lib/remote-components/canvas-workbench/src/runtime.d.ts.map +1 -0
  85. package/dist/lib/remote-components/canvas-workbench/src/runtime.js +199 -0
  86. package/dist/lib/remote-components/canvas-workbench/src/runtime.js.map +1 -0
  87. package/dist/lib/remote-components/canvas-workbench/src/selection-context.d.ts +55 -0
  88. package/dist/lib/remote-components/canvas-workbench/src/selection-context.d.ts.map +1 -0
  89. package/dist/lib/remote-components/canvas-workbench/src/selection-context.js +49 -0
  90. package/dist/lib/remote-components/canvas-workbench/src/selection-context.js.map +1 -0
  91. package/dist/lib/remote-components/canvas-workbench/src/styles.d.ts +2 -0
  92. package/dist/lib/remote-components/canvas-workbench/src/styles.d.ts.map +1 -0
  93. package/dist/lib/remote-components/canvas-workbench/src/styles.js +333 -0
  94. package/dist/lib/remote-components/canvas-workbench/src/styles.js.map +1 -0
  95. package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.d.ts +14 -0
  96. package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.d.ts.map +1 -0
  97. package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.js +19 -0
  98. package/dist/lib/remote-components/canvas-workbench/src/tool-event-refresh.js.map +1 -0
  99. package/dist/lib/remote-components/canvas-workbench/src/vendor.d.ts +9 -0
  100. package/dist/lib/remote-components/canvas-workbench/src/vendor.d.ts.map +1 -0
  101. package/dist/lib/remote-components/canvas-workbench/src/vendor.js +7 -0
  102. package/dist/lib/remote-components/canvas-workbench/src/vendor.js.map +1 -0
  103. package/dist/lib/types.d.ts +180 -0
  104. package/dist/lib/types.d.ts.map +1 -0
  105. package/dist/lib/types.js +2 -0
  106. package/dist/lib/types.js.map +1 -0
  107. package/dist/xpert-canvas-assistant.yaml +168 -0
  108. package/package.json +91 -0
  109. package/skills/canvas-agent-skill/SKILL.md +144 -0
@@ -0,0 +1,277 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@nestjs/common';
3
+ import { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';
4
+ import { tool } from '@langchain/core/tools';
5
+ import { ChatMessageEventTypeEnum } from '@xpert-ai/contracts';
6
+ import { AgentMiddlewareStrategy, RequestContext } from '@xpert-ai/plugin-sdk';
7
+ import { z } from 'zod/v3';
8
+ import { CANVAS_AGENT_CAPABILITY, CANVAS_CREATE_DOCUMENT_TOOL_NAME, CANVAS_FEATURE, CANVAS_GET_DOCUMENT_TOOL_NAME, CANVAS_GET_RECORD_TOOL_NAME, CANVAS_ICON, CANVAS_INSERT_IMAGE_TOOL_NAME, CANVAS_MIDDLEWARE_NAME, CANVAS_PATCH_RECORDS_TOOL_NAME, CANVAS_REPORT_FAILURE_TOOL_NAME, CANVAS_SAVE_SNAPSHOT_TOOL_NAME, CANVAS_SEARCH_DOCUMENTS_TOOL_NAME, CANVAS_UPDATE_DOCUMENT_STATUS_TOOL_NAME, CANVAS_WORKBENCH_CAPABILITY } from './constants.js';
9
+ import { stringifyAgentToolResult, summarizeDocumentMutationResult, summarizeFailureResult, summarizeSearchResult } from './canvas-agent-response.js';
10
+ import { CanvasService } from './canvas.service.js';
11
+ const documentKindSchema = z.enum(['canvas', 'whiteboard', 'moodboard', 'wireframe', 'annotation', 'image-board', 'other']);
12
+ const documentStatusSchema = z.enum(['draft', 'reviewed', 'archived']);
13
+ const versionSourceSchema = z.enum(['agent_snapshot', 'agent_patch', 'agent_image', 'workbench', 'import', 'restore']);
14
+ const jsonValueSchema = z.lazy(() => z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(jsonValueSchema), z.record(jsonValueSchema)]));
15
+ const recordSchema = z.record(jsonValueSchema);
16
+ const canvasRecordSchema = z.object({ id: z.string().min(1) }).catchall(jsonValueSchema);
17
+ const snapshotSchema = z.object({
18
+ schema: jsonValueSchema.describe('tldraw store schema from editor.store.getStoreSnapshot().schema.'),
19
+ store: z.record(canvasRecordSchema).describe('tldraw records keyed by record id.')
20
+ });
21
+ const snapshotImageSchema = z.object({
22
+ dataUrl: z.string().optional().describe('PNG/JPEG/WebP image data URL for the rendered Canvas viewport.'),
23
+ base64: z.string().optional().describe('Raw PNG/JPEG/WebP base64 when dataUrl is omitted.'),
24
+ mimeType: z.enum(['image/png', 'image/jpeg', 'image/webp']).optional(),
25
+ fileName: z.string().optional(),
26
+ width: z.number().int().positive().optional(),
27
+ height: z.number().int().positive().optional(),
28
+ pageId: z.string().optional(),
29
+ camera: jsonValueSchema.optional(),
30
+ capturedAt: z.string().optional()
31
+ });
32
+ const createDocumentSchema = z.object({
33
+ title: z.string().min(1).describe('Human-readable canvas title.'),
34
+ description: z.string().optional(),
35
+ kind: documentKindSchema.optional(),
36
+ tags: z.array(z.string()).optional(),
37
+ source: z.string().optional().describe('Short source label, such as user_request, imported_file, or agent_plan.'),
38
+ snapshot: snapshotSchema.optional().describe('Optional complete tldraw snapshot for the initial version. Usually omit, then save in stages.'),
39
+ viewState: recordSchema.optional(),
40
+ selectionSummary: recordSchema.optional(),
41
+ snapshotImage: snapshotImageSchema.optional().describe('Optional rendered viewport image. Workbench normally supplies this; Agents may omit it.'),
42
+ changeSummary: z.string().optional()
43
+ });
44
+ const saveSnapshotSchema = z.object({
45
+ documentId: z.string().min(1).describe('Existing Canvas document id.'),
46
+ snapshot: snapshotSchema.describe('Complete tldraw snapshot from the Canvas Workbench or generated by the Agent.'),
47
+ viewState: recordSchema.optional(),
48
+ selectionSummary: recordSchema.optional(),
49
+ snapshotImage: snapshotImageSchema.optional().describe('Optional rendered viewport image. When supplied, the backend stores a version snapshot image file.'),
50
+ sourceType: versionSourceSchema.optional(),
51
+ changeSummary: z.string().optional()
52
+ });
53
+ const patchRecordsSchema = z.object({
54
+ documentId: z.string().min(1),
55
+ putRecords: z.array(recordSchema).optional().describe('Full tldraw records to insert or replace, each with an id.'),
56
+ removeRecordIds: z.array(z.string()).optional().describe('Existing tldraw record ids to remove.'),
57
+ viewStatePatch: recordSchema.optional().describe('Shallow view state patch.'),
58
+ selectionSummary: recordSchema.optional().describe('Optional new selection summary for Workbench context.'),
59
+ changeSummary: z.string().optional()
60
+ });
61
+ const insertImageSchema = z.object({
62
+ documentId: z.string().optional().describe('Existing Canvas document id. Omit to create a new image-board canvas.'),
63
+ title: z.string().optional().describe('Required only when documentId is omitted and a better title is available.'),
64
+ description: z.string().optional(),
65
+ kind: documentKindSchema.optional(),
66
+ dataUrl: z.string().optional().describe('Image data URL. Preferred for small generated images.'),
67
+ base64: z.string().optional().describe('Raw image base64 when dataUrl is omitted.'),
68
+ mimeType: z.string().optional().describe('Image MIME type used with base64. Defaults to image/png.'),
69
+ fileName: z.string().optional(),
70
+ width: z.number().int().positive().optional().describe('Natural bitmap width. Detected for PNG/JPEG/WebP when omitted.'),
71
+ height: z.number().int().positive().optional().describe('Natural bitmap height. Detected for PNG/JPEG/WebP when omitted.'),
72
+ displayWidth: z.number().int().positive().optional(),
73
+ displayHeight: z.number().int().positive().optional(),
74
+ pageId: z.string().optional(),
75
+ anchorShapeId: z.string().optional().describe('Existing shape id to place beside, or a frame AI image holder to fill.'),
76
+ placement: z.enum(['right', 'left', 'below', 'center']).optional(),
77
+ margin: z.number().min(0).optional(),
78
+ matchAnchor: z.boolean().optional().describe('Use the anchor display size when possible. Defaults to true.'),
79
+ altText: z.string().optional(),
80
+ shapeMeta: recordSchema.optional(),
81
+ assetMeta: recordSchema.optional(),
82
+ changeSummary: z.string().optional()
83
+ });
84
+ const searchDocumentsSchema = z.object({
85
+ status: documentStatusSchema.optional(),
86
+ kind: documentKindSchema.optional(),
87
+ search: z.string().optional(),
88
+ page: z.number().int().min(1).optional(),
89
+ pageSize: z.number().int().min(1).max(100).optional()
90
+ });
91
+ const getDocumentSchema = z.object({
92
+ documentId: z.string().min(1),
93
+ versionId: z.string().optional(),
94
+ versionNumber: z.number().int().min(1).optional(),
95
+ includeSnapshot: z.boolean().optional().describe('Set true only when full tldraw snapshot JSON is required.'),
96
+ versionLimit: z.number().int().min(1).max(100).optional(),
97
+ includeLogs: z.boolean().optional(),
98
+ logLimit: z.number().int().min(1).max(50).optional()
99
+ });
100
+ const getRecordSchema = z.object({
101
+ documentId: z.string().min(1),
102
+ recordId: z.string().min(1),
103
+ versionId: z.string().optional(),
104
+ versionNumber: z.number().int().min(1).optional()
105
+ });
106
+ const updateDocumentStatusSchema = z.object({
107
+ documentId: z.string().min(1),
108
+ status: documentStatusSchema,
109
+ reason: z.string().optional()
110
+ });
111
+ const reportFailureSchema = z.object({
112
+ documentId: z.string().optional(),
113
+ versionId: z.string().optional(),
114
+ operation: z.string().min(1),
115
+ errorMessage: z.string().min(1),
116
+ recoverable: z.boolean().optional(),
117
+ evidence: jsonValueSchema.optional()
118
+ });
119
+ const CHANGE_SUMMARY_EVENT_TOOL_NAMES = new Set([
120
+ CANVAS_CREATE_DOCUMENT_TOOL_NAME,
121
+ CANVAS_SAVE_SNAPSHOT_TOOL_NAME,
122
+ CANVAS_PATCH_RECORDS_TOOL_NAME,
123
+ CANVAS_INSERT_IMAGE_TOOL_NAME
124
+ ]);
125
+ let CanvasMiddleware = class CanvasMiddleware {
126
+ constructor(service) {
127
+ this.service = service;
128
+ this.meta = {
129
+ name: CANVAS_MIDDLEWARE_NAME,
130
+ label: {
131
+ en_US: 'Canvas',
132
+ zh_Hans: 'Canvas 画布'
133
+ },
134
+ description: {
135
+ en_US: 'Create, update, version, search, annotate, and recover tldraw canvases from an Agent.',
136
+ zh_Hans: '让 Agent 创建、更新、版本化、检索、标注和恢复 tldraw 画布。'
137
+ },
138
+ icon: {
139
+ type: 'svg',
140
+ value: CANVAS_ICON,
141
+ color: '#0f766e'
142
+ },
143
+ features: [CANVAS_FEATURE, CANVAS_AGENT_CAPABILITY, CANVAS_WORKBENCH_CAPABILITY],
144
+ configSchema: {
145
+ type: 'object',
146
+ properties: {},
147
+ required: []
148
+ }
149
+ };
150
+ }
151
+ createMiddleware(_options, context) {
152
+ const scope = scopeFromContext(context);
153
+ return {
154
+ name: CANVAS_MIDDLEWARE_NAME,
155
+ tools: [
156
+ tool(async (input) => stringifyAgentToolResult(summarizeDocumentMutationResult(await this.service.createDocument(scope, input), 'Canvas document was created.')), {
157
+ name: CANVAS_CREATE_DOCUMENT_TOOL_NAME,
158
+ description: 'Create a reviewable Canvas document record. Usually call this before saving snapshot records or inserting generated images. The Workbench will show the new canvas for human review.',
159
+ schema: createDocumentSchema
160
+ }),
161
+ tool(async (input) => stringifyAgentToolResult(summarizeDocumentMutationResult(await this.service.saveSnapshot(scope, input), 'Canvas snapshot was saved.')), {
162
+ name: CANVAS_SAVE_SNAPSHOT_TOOL_NAME,
163
+ description: 'Save a complete tldraw snapshot as a new Canvas version. Use this for intentional full-canvas creation, import, or replacement; use canvas_patch_records for small edits.',
164
+ schema: saveSnapshotSchema
165
+ }),
166
+ tool(async (input) => stringifyAgentToolResult(summarizeDocumentMutationResult(await this.service.patchRecords(scope, input), 'Canvas records were patched.')), {
167
+ name: CANVAS_PATCH_RECORDS_TOOL_NAME,
168
+ description: 'Patch the current Canvas snapshot by inserting/replacing full tldraw records and/or removing record ids. Call canvas_get_document or canvas_get_record first when changing an existing user-edited canvas.',
169
+ schema: patchRecordsSchema
170
+ }),
171
+ tool(async (input) => stringifyAgentToolResult(summarizeDocumentMutationResult(await this.service.insertImage(scope, input), 'Image was inserted into the canvas.')), {
172
+ name: CANVAS_INSERT_IMAGE_TOOL_NAME,
173
+ description: 'Insert a generated bitmap into a Canvas document. Pass dataUrl or base64. If anchorShapeId is an AI image holder frame, the image is placed inside it; otherwise it is placed beside the anchor or in a clear page area.',
174
+ schema: insertImageSchema
175
+ }),
176
+ tool(async (input) => stringifyAgentToolResult(summarizeSearchResult(await this.service.searchDocuments(scope, input))), {
177
+ name: CANVAS_SEARCH_DOCUMENTS_TOOL_NAME,
178
+ description: 'Search existing Canvas documents by status, kind, keyword, and pagination. Returns document metadata only.',
179
+ schema: searchDocumentsSchema
180
+ }),
181
+ tool(async (input) => stringifyAgentToolResult(await this.service.getDocument(scope, input)), {
182
+ name: CANVAS_GET_DOCUMENT_TOOL_NAME,
183
+ description: 'Get Canvas metadata, working-copy scene by default, current version metadata, optional logs, and optional full tldraw snapshot. Leave includeSnapshot false unless exact record JSON is needed. If snapshotImagePath is present, call view_image with that path before visual analysis.',
184
+ schema: getDocumentSchema
185
+ }),
186
+ tool(async (input) => stringifyAgentToolResult(await this.service.getRecordForAgent(scope, input)), {
187
+ name: CANVAS_GET_RECORD_TOOL_NAME,
188
+ description: 'Fetch one exact tldraw record from the Canvas working copy by default, or from a requested versionId/versionNumber. Use this before targeted edits to selected shapes, assets, bindings, pages, or image holders.',
189
+ schema: getRecordSchema
190
+ }),
191
+ tool(async (input) => stringifyAgentToolResult(summarizeDocumentMutationResult(await this.service.updateDocumentStatus(scope, input), 'Canvas status was updated.')), {
192
+ name: CANVAS_UPDATE_DOCUMENT_STATUS_TOOL_NAME,
193
+ description: 'Update a Canvas document status to draft, reviewed, or archived after user confirmation.',
194
+ schema: updateDocumentStatusSchema
195
+ }),
196
+ tool(async (input) => stringifyAgentToolResult(summarizeFailureResult(await this.service.reportFailure(scope, input))), {
197
+ name: CANVAS_REPORT_FAILURE_TOOL_NAME,
198
+ description: 'Record a failed Canvas generation, snapshot validation, image insertion, import, or patch attempt with recoverability and evidence.',
199
+ schema: reportFailureSchema
200
+ })
201
+ ],
202
+ wrapToolCall: async (request, handler) => {
203
+ const changeSummary = readChangeSummaryMessage(request.toolCall.args);
204
+ if (!changeSummary || !CHANGE_SUMMARY_EVENT_TOOL_NAMES.has(request.toolCall.name)) {
205
+ return handler(request);
206
+ }
207
+ await dispatchCanvasToolMessageEvent(request, changeSummary);
208
+ return handler(request);
209
+ }
210
+ };
211
+ }
212
+ };
213
+ CanvasMiddleware = __decorate([
214
+ Injectable(),
215
+ AgentMiddlewareStrategy(CANVAS_MIDDLEWARE_NAME),
216
+ __metadata("design:paramtypes", [CanvasService])
217
+ ], CanvasMiddleware);
218
+ export { CanvasMiddleware };
219
+ function scopeFromContext(context) {
220
+ return {
221
+ tenantId: context.tenantId,
222
+ organizationId: context.organizationId === undefined ? RequestContext.getOrganizationId() : context.organizationId,
223
+ workspaceId: context.workspaceId ?? null,
224
+ projectId: context.projectId ?? null,
225
+ userId: context.userId,
226
+ conversationId: context.conversationId ?? null,
227
+ assistantId: context.xpertId ?? null
228
+ };
229
+ }
230
+ function readChangeSummaryMessage(args) {
231
+ if (!isPlainObject(args)) {
232
+ return undefined;
233
+ }
234
+ const value = args.changeSummary;
235
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
236
+ }
237
+ async function dispatchCanvasToolMessageEvent(request, message) {
238
+ const toolCall = request.toolCall;
239
+ const id = getToolCallDisplayId(toolCall);
240
+ try {
241
+ await dispatchCustomEvent(ChatMessageEventTypeEnum.ON_TOOL_MESSAGE, {
242
+ id,
243
+ tool_call_id: toolCall.id,
244
+ message
245
+ });
246
+ }
247
+ catch (error) {
248
+ console.warn('[CanvasMiddleware] dispatch tool message failed:', getErrorMessage(error instanceof Error ? error : String(error)));
249
+ }
250
+ }
251
+ function getToolCallDisplayId(toolCall) {
252
+ if (typeof toolCall.id === 'string' && toolCall.id.trim()) {
253
+ return toolCall.id.trim();
254
+ }
255
+ return `${toolCall.name}:${stringifyValue(toolCall.args)}`;
256
+ }
257
+ function stringifyValue(value) {
258
+ if (typeof value === 'string') {
259
+ return value;
260
+ }
261
+ if (value == null) {
262
+ return '';
263
+ }
264
+ try {
265
+ return JSON.stringify(value);
266
+ }
267
+ catch {
268
+ return String(value);
269
+ }
270
+ }
271
+ function getErrorMessage(error) {
272
+ return error instanceof Error ? error.message : stringifyValue(error) || 'Unknown error';
273
+ }
274
+ function isPlainObject(value) {
275
+ return Boolean(value && typeof value === 'object' && !Array.isArray(value));
276
+ }
277
+ //# sourceMappingURL=canvas.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.middleware.js","sourceRoot":"","sources":["../../src/lib/canvas.middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { IOnPluginBootstrap, IOnPluginDestroy } from '@xpert-ai/plugin-sdk';
2
+ import { CanvasActionLog, CanvasDocument, CanvasDocumentVersion } from './entities/index.js';
3
+ export declare const CANVAS_ENTITIES: (typeof CanvasDocument | typeof CanvasDocumentVersion | typeof CanvasActionLog)[];
4
+ export declare class CanvasPlugin implements IOnPluginBootstrap, IOnPluginDestroy {
5
+ onPluginBootstrap(): void | Promise<void>;
6
+ onPluginDestroy(): void | Promise<void>;
7
+ }
8
+ //# sourceMappingURL=canvas.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.plugin.d.ts","sourceRoot":"","sources":["../../src/lib/canvas.plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEhF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAK5F,eAAO,MAAM,eAAe,mFAA2D,CAAA;AAEvF,qBAMa,YAAa,YAAW,kBAAkB,EAAE,gBAAgB;IACvE,iBAAiB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,eAAe,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -0,0 +1,27 @@
1
+ var CanvasPlugin_1;
2
+ import { __decorate } from "tslib";
3
+ import { TypeOrmModule } from '@nestjs/typeorm';
4
+ import { XpertServerPlugin } from '@xpert-ai/plugin-sdk';
5
+ import { CanvasActionLog, CanvasDocument, CanvasDocumentVersion } from './entities/index.js';
6
+ import { CanvasMiddleware } from './canvas.middleware.js';
7
+ import { CanvasService } from './canvas.service.js';
8
+ import { CanvasViewProvider } from './canvas-view.provider.js';
9
+ export const CANVAS_ENTITIES = [CanvasDocument, CanvasDocumentVersion, CanvasActionLog];
10
+ let CanvasPlugin = CanvasPlugin_1 = class CanvasPlugin {
11
+ onPluginBootstrap() {
12
+ console.log(`${CanvasPlugin_1.name} is being bootstrapped...`);
13
+ }
14
+ onPluginDestroy() {
15
+ console.log(`${CanvasPlugin_1.name} is being destroyed...`);
16
+ }
17
+ };
18
+ CanvasPlugin = CanvasPlugin_1 = __decorate([
19
+ XpertServerPlugin({
20
+ imports: [TypeOrmModule.forFeature(CANVAS_ENTITIES)],
21
+ entities: CANVAS_ENTITIES,
22
+ providers: [CanvasService, CanvasMiddleware, CanvasViewProvider],
23
+ exports: [CanvasService]
24
+ })
25
+ ], CanvasPlugin);
26
+ export { CanvasPlugin };
27
+ //# sourceMappingURL=canvas.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.plugin.js","sourceRoot":"","sources":["../../src/lib/canvas.plugin.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAA;AAQhF,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,iBAAiB;QACf,OAAO,CAAC,GAAG,CAAC,GAAG,cAAY,CAAC,IAAI,2BAA2B,CAAC,CAAA;IAC9D,CAAC;IAED,eAAe;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,cAAY,CAAC,IAAI,wBAAwB,CAAC,CAAA;IAC3D,CAAC;CACF,CAAA;AARY,YAAY;IANxB,iBAAiB,CAAC;QACjB,OAAO,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACpD,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;QAChE,OAAO,EAAE,CAAC,aAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAQxB"}