@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,199 @@
1
+ const CHANNEL = 'xpertai.remote_component';
2
+ const VERSION = 1;
3
+ const pending = new Map();
4
+ let instanceId = null;
5
+ let requestSequence = 0;
6
+ let runtimeText = {
7
+ requestTimeout: 'Request timed out',
8
+ remoteRequestFailed: 'Remote request failed',
9
+ unknownError: 'Unknown error'
10
+ };
11
+ export function isObject(value) {
12
+ return Boolean(value && typeof value === 'object' && !Array.isArray(value));
13
+ }
14
+ export function post(type, body, transfer) {
15
+ if (!instanceId && type !== 'ready') {
16
+ return;
17
+ }
18
+ parent.postMessage(Object.assign({
19
+ channel: CHANNEL,
20
+ protocolVersion: VERSION,
21
+ instanceId,
22
+ type
23
+ }, body || {}), '*', transfer || []);
24
+ }
25
+ export function request(type, body, transfer) {
26
+ const requestId = String(++requestSequence);
27
+ return new Promise((resolve, reject) => {
28
+ pending.set(requestId, { resolve, reject });
29
+ try {
30
+ post(type, Object.assign({ requestId }, body || {}), transfer);
31
+ }
32
+ catch (error) {
33
+ pending.delete(requestId);
34
+ reject(error instanceof Error ? error : new Error(runtimeText.remoteRequestFailed));
35
+ return;
36
+ }
37
+ setTimeout(() => {
38
+ if (!pending.has(requestId)) {
39
+ return;
40
+ }
41
+ pending.delete(requestId);
42
+ reject(new Error(runtimeText.requestTimeout));
43
+ }, 30000);
44
+ });
45
+ }
46
+ export function requestData(query) {
47
+ return request('requestData', { query: query || {} });
48
+ }
49
+ export function executeAction(actionKey, targetId, input, parameters) {
50
+ return request('executeAction', {
51
+ actionKey,
52
+ targetId,
53
+ input,
54
+ parameters
55
+ });
56
+ }
57
+ export async function executeFileAction(actionKey, targetId, input, parameters, file) {
58
+ const buffer = await file.arrayBuffer();
59
+ return request('executeFileAction', {
60
+ actionKey,
61
+ targetId,
62
+ input,
63
+ parameters,
64
+ file: {
65
+ name: file.name,
66
+ type: file.type,
67
+ size: file.size,
68
+ buffer
69
+ }
70
+ }, [buffer]);
71
+ }
72
+ export function invokeClientCommand(commandKey, payload) {
73
+ return request('invokeClientCommand', {
74
+ commandKey,
75
+ payload
76
+ });
77
+ }
78
+ export function notify(level, message) {
79
+ post('notify', { level, message });
80
+ }
81
+ export function reportResize() {
82
+ const height = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, window.innerHeight || 0, 720);
83
+ post('resize', { height, viewportBound: true });
84
+ }
85
+ export function getResponsePayload(response) {
86
+ if (!response) {
87
+ return null;
88
+ }
89
+ if (!isObject(response)) {
90
+ return response;
91
+ }
92
+ if (response.payload !== undefined) {
93
+ return response.payload;
94
+ }
95
+ if (response.data !== undefined) {
96
+ return response.data;
97
+ }
98
+ if (response.result !== undefined) {
99
+ return response.result;
100
+ }
101
+ return response;
102
+ }
103
+ export function getErrorMessage(error) {
104
+ return typeof error === 'object' && error && 'message' in error && error.message ? error.message : String(error || runtimeText.unknownError);
105
+ }
106
+ export function setRuntimeText(nextText) {
107
+ runtimeText = {
108
+ ...runtimeText,
109
+ ...nextText
110
+ };
111
+ }
112
+ export function startRemoteBridge(setContext, handleHostEvent) {
113
+ let currentContext = null;
114
+ function applyRemoteTheme(theme) {
115
+ const remoteUi = window.XpertRemoteUI;
116
+ remoteUi?.applyTheme?.(theme);
117
+ }
118
+ function applyHostTheme(theme) {
119
+ applyRemoteTheme(theme);
120
+ const nextContext = {
121
+ ...(currentContext || {}),
122
+ theme
123
+ };
124
+ currentContext = nextContext;
125
+ setContext(nextContext);
126
+ setTimeout(reportResize, 0);
127
+ }
128
+ window.addEventListener('message', (event) => {
129
+ const message = event.data;
130
+ if (!isObject(message) || message.channel !== CHANNEL || message.protocolVersion !== VERSION) {
131
+ return;
132
+ }
133
+ if (message.type === 'init') {
134
+ instanceId = typeof message.instanceId === 'string' ? message.instanceId : null;
135
+ const nextContext = {
136
+ manifest: message.manifest,
137
+ payload: message.payload,
138
+ initialQuery: getInitialQuery(message.initialQuery),
139
+ locale: typeof message.locale === 'string' ? message.locale : undefined,
140
+ theme: message.theme
141
+ };
142
+ currentContext = nextContext;
143
+ applyRemoteTheme(message.theme);
144
+ setContext(nextContext);
145
+ setTimeout(reportResize, 0);
146
+ return;
147
+ }
148
+ if (message.instanceId !== instanceId) {
149
+ return;
150
+ }
151
+ if (isThemeMessage(message)) {
152
+ applyHostTheme(extractThemeFromMessage(message));
153
+ return;
154
+ }
155
+ if (message.type === 'hostEvent') {
156
+ handleHostEvent(message.event);
157
+ return;
158
+ }
159
+ if (message.requestId && pending.has(String(message.requestId))) {
160
+ const item = pending.get(String(message.requestId));
161
+ pending.delete(String(message.requestId));
162
+ if (!item) {
163
+ return;
164
+ }
165
+ if (message.type === 'error') {
166
+ item.reject(new Error(String(message.message || runtimeText.remoteRequestFailed)));
167
+ }
168
+ else {
169
+ item.resolve(message);
170
+ }
171
+ }
172
+ });
173
+ }
174
+ function isThemeMessage(message) {
175
+ return ['theme', 'themeChanged', 'theme-change', 'hostThemeChanged', 'host-theme-changed'].includes(String(message.type || ''));
176
+ }
177
+ function getInitialQuery(value) {
178
+ if (!isObject(value)) {
179
+ return {};
180
+ }
181
+ return {
182
+ ...value,
183
+ parameters: isObject(value.parameters) ? value.parameters : undefined,
184
+ selectionId: value.selectionId
185
+ };
186
+ }
187
+ function extractThemeFromMessage(message) {
188
+ if (message.theme !== undefined) {
189
+ return message.theme;
190
+ }
191
+ if (isObject(message.payload) && message.payload.theme !== undefined) {
192
+ return message.payload.theme;
193
+ }
194
+ if (isObject(message.data) && message.data.theme !== undefined) {
195
+ return message.data.theme;
196
+ }
197
+ return message.payload ?? message.data ?? null;
198
+ }
199
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { TLShape } from 'tldraw';
2
+ export declare const CANVAS_CONTEXT_COMMAND = "assistant.context.set";
3
+ type CanvasContextDocument = {
4
+ id?: string;
5
+ title?: string;
6
+ currentVersionId?: string | null;
7
+ currentVersionNumber?: number | null;
8
+ };
9
+ type CanvasContextVersion = {
10
+ id?: string;
11
+ versionNumber?: number | null;
12
+ };
13
+ export declare function createCanvasSelectionContext(input: {
14
+ document?: CanvasContextDocument | null;
15
+ version?: CanvasContextVersion | null;
16
+ selectedShapes?: TLShape[];
17
+ pageId?: string | null;
18
+ dirty?: boolean;
19
+ sceneSource?: string | null;
20
+ snapshotImagePath?: string | null;
21
+ snapshotImageUpdatedAt?: string | null;
22
+ }): {
23
+ currentCanvas: {
24
+ documentId: string;
25
+ title: string;
26
+ currentVersionId: string;
27
+ currentVersionNumber: number;
28
+ isDirty: boolean;
29
+ sceneSource: string;
30
+ snapshotImagePath: string;
31
+ snapshotImageUpdatedAt: string;
32
+ selection: {
33
+ type: string;
34
+ pageId: string;
35
+ selectedShapeIds: import("tldraw").TLShapeId[];
36
+ selectedShapeCount: number;
37
+ shapes: {
38
+ id: import("tldraw").TLShapeId;
39
+ type: "frame" | "image" | "arrow" | "text" | "bookmark" | "video" | "draw" | "embed" | "geo" | "group" | "highlight" | "line" | "note";
40
+ x: number;
41
+ y: number;
42
+ w: number;
43
+ h: number;
44
+ parentId: import("tldraw").TLParentId;
45
+ isAiImageHolder: boolean;
46
+ meta: import("tldraw").JsonObject;
47
+ }[];
48
+ capturedAt: string;
49
+ };
50
+ };
51
+ };
52
+ export type CanvasSelectionContext = ReturnType<typeof createCanvasSelectionContext>;
53
+ export declare function createCanvasSelectionSignature(context: CanvasSelectionContext): string;
54
+ export {};
55
+ //# sourceMappingURL=selection-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-context.d.ts","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/selection-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAE7D,KAAK,qBAAqB,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAOD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACvC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACrC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBA;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEpF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,sBAAsB,UAS7E"}
@@ -0,0 +1,49 @@
1
+ export const CANVAS_CONTEXT_COMMAND = 'assistant.context.set';
2
+ export function createCanvasSelectionContext(input) {
3
+ const selectedShapes = input.selectedShapes ?? [];
4
+ return {
5
+ currentCanvas: {
6
+ documentId: input.document?.id ?? '',
7
+ title: input.document?.title ?? '',
8
+ currentVersionId: input.document?.currentVersionId ?? input.version?.id ?? '',
9
+ currentVersionNumber: input.document?.currentVersionNumber ?? input.version?.versionNumber ?? null,
10
+ isDirty: Boolean(input.dirty),
11
+ sceneSource: input.sceneSource ?? 'version',
12
+ snapshotImagePath: input.snapshotImagePath ?? '',
13
+ snapshotImageUpdatedAt: input.snapshotImageUpdatedAt ?? '',
14
+ selection: {
15
+ type: 'canvas.selection.v1',
16
+ pageId: input.pageId ?? null,
17
+ selectedShapeIds: selectedShapes.map((shape) => shape.id).filter(Boolean),
18
+ selectedShapeCount: selectedShapes.length,
19
+ shapes: selectedShapes.map(compactShape),
20
+ capturedAt: new Date().toISOString()
21
+ }
22
+ }
23
+ };
24
+ }
25
+ export function createCanvasSelectionSignature(context) {
26
+ const selection = context.currentCanvas.selection;
27
+ return JSON.stringify({
28
+ documentId: context.currentCanvas.documentId ?? '',
29
+ versionId: context.currentCanvas.currentVersionId ?? '',
30
+ dirty: context.currentCanvas.isDirty ?? false,
31
+ pageId: selection.pageId ?? null,
32
+ selectedShapeIds: selection.selectedShapeIds ?? []
33
+ });
34
+ }
35
+ function compactShape(shape) {
36
+ const boundsProps = shape.props;
37
+ return {
38
+ id: shape.id,
39
+ type: shape.type,
40
+ x: shape.x,
41
+ y: shape.y,
42
+ w: boundsProps.w,
43
+ h: boundsProps.h,
44
+ parentId: shape.parentId,
45
+ isAiImageHolder: Boolean(shape.meta?.canvasAiImageHolder || shape.meta?.cowartAiImageHolder),
46
+ meta: shape.meta
47
+ };
48
+ }
49
+ //# sourceMappingURL=selection-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-context.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/selection-context.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAA;AAmB7D,MAAM,UAAU,4BAA4B,CAAC,KAS5C;IACC,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAA;IACjD,OAAO;QACL,aAAa,EAAE;YACb,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;YACpC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAClC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,gBAAgB,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE;YAC7E,oBAAoB,EAAE,KAAK,CAAC,QAAQ,EAAE,oBAAoB,IAAI,KAAK,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI;YAClG,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS;YAC3C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,EAAE;YAChD,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,IAAI,EAAE;YAC1D,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,gBAAgB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzE,kBAAkB,EAAE,cAAc,CAAC,MAAM;gBACzC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC;gBACxC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF;KACF,CAAA;AACH,CAAC;AAID,MAAM,UAAU,8BAA8B,CAAC,OAA+B;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAA;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE;QAClD,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,gBAAgB,IAAI,EAAE;QACvD,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,KAAK;QAC7C,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QAChC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,EAAE;KACnD,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAyB,CAAA;IACnD,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,CAAC,EAAE,WAAW,CAAC,CAAC;QAChB,CAAC,EAAE,WAAW,CAAC,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,IAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC;QAC5F,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function injectStyles(): void;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/styles.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,SA2U3B"}
@@ -0,0 +1,333 @@
1
+ export function injectStyles() {
2
+ if (document.getElementById('canvas-workbench-styles')) {
3
+ return;
4
+ }
5
+ const style = document.createElement('style');
6
+ style.id = 'canvas-workbench-styles';
7
+ style.textContent = `
8
+ * { box-sizing: border-box; }
9
+ html, body, #root {
10
+ width: 100%;
11
+ height: 100%;
12
+ min-height: 100%;
13
+ margin: 0;
14
+ overflow: hidden;
15
+ background: var(--xps-background);
16
+ color: var(--xps-foreground);
17
+ font-family: var(--xps-font-sans);
18
+ }
19
+ button, input, textarea { font: inherit; }
20
+ .cw-root {
21
+ --cw-rail-width: var(--xps-sidebar-rail-width, 2.75rem);
22
+ --cw-left-width: clamp(230px, 20vw, 300px);
23
+ --cw-right-width: clamp(300px, 24vw, 380px);
24
+ width: 100vw;
25
+ height: 100vh;
26
+ min-height: 640px;
27
+ display: grid;
28
+ grid-template-columns: var(--cw-left-width) minmax(0, 1fr) var(--cw-right-width);
29
+ background: var(--xps-background);
30
+ overflow: hidden;
31
+ transition: grid-template-columns 160ms ease;
32
+ }
33
+ .cw-root.left-collapsed { --cw-left-width: var(--cw-rail-width); }
34
+ .cw-root.right-collapsed { --cw-right-width: var(--cw-rail-width); }
35
+ .cw-sidebar,
36
+ .cw-inspector {
37
+ position: relative;
38
+ z-index: 110;
39
+ min-width: 0;
40
+ height: 100vh;
41
+ min-height: 640px;
42
+ }
43
+ .cw-sidebar.xps-sidebar--collapsed,
44
+ .cw-inspector.xps-sidebar--collapsed {
45
+ grid-template-rows: minmax(0, 1fr);
46
+ align-items: start;
47
+ justify-items: stretch;
48
+ }
49
+ .cw-sidebar .xps-sidebar-content,
50
+ .cw-inspector .xps-sidebar-content {
51
+ min-height: 0;
52
+ overflow: hidden;
53
+ }
54
+ .cw-inspector-content {
55
+ flex: 1 1 auto;
56
+ height: calc(100vh - 46px);
57
+ align-items: stretch;
58
+ justify-content: flex-start;
59
+ }
60
+ .cw-rail {
61
+ display: flex;
62
+ flex-direction: column;
63
+ align-items: center;
64
+ justify-content: flex-start;
65
+ gap: 6px;
66
+ min-height: 100%;
67
+ height: 100%;
68
+ padding-top: 6px;
69
+ }
70
+ .cw-workspace {
71
+ min-width: 0;
72
+ height: 100vh;
73
+ min-height: 640px;
74
+ display: grid;
75
+ grid-template-rows: auto minmax(0, 1fr);
76
+ background: var(--xps-background);
77
+ overflow: hidden;
78
+ }
79
+ .cw-toolbar {
80
+ position: relative;
81
+ z-index: 80;
82
+ min-width: 0;
83
+ min-height: 46px;
84
+ display: grid;
85
+ grid-template-columns: minmax(180px, 1fr) auto;
86
+ align-items: center;
87
+ gap: 10px;
88
+ padding: 7px 10px;
89
+ background: var(--xps-card);
90
+ border-bottom: 1px solid var(--xps-border);
91
+ overflow: hidden;
92
+ }
93
+ .cw-toolbar-title {
94
+ min-width: 0;
95
+ display: grid;
96
+ gap: 2px;
97
+ }
98
+ .cw-toolbar-actions {
99
+ min-width: 0;
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: flex-end;
103
+ gap: 6px;
104
+ overflow-x: auto;
105
+ scrollbar-width: none;
106
+ }
107
+ .cw-toolbar-actions::-webkit-scrollbar { display: none; }
108
+ .cw-title,
109
+ .xps-sidebar-title {
110
+ min-width: 0;
111
+ color: var(--xps-foreground);
112
+ font-size: 0.875rem;
113
+ font-weight: 750;
114
+ line-height: 1.2;
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
117
+ white-space: nowrap;
118
+ }
119
+ .cw-item-title {
120
+ min-width: 0;
121
+ width: 100%;
122
+ color: var(--xps-foreground);
123
+ font-size: 0.8125rem;
124
+ font-weight: 650;
125
+ line-height: 1.25;
126
+ overflow: hidden;
127
+ text-overflow: ellipsis;
128
+ white-space: nowrap;
129
+ }
130
+ .cw-item-meta {
131
+ min-width: 0;
132
+ color: var(--xps-muted-foreground);
133
+ font-size: 0.6875rem;
134
+ font-weight: 600;
135
+ line-height: 1.25;
136
+ overflow: hidden;
137
+ text-overflow: ellipsis;
138
+ white-space: nowrap;
139
+ }
140
+ .cw-sidebar-header {
141
+ min-height: 46px;
142
+ gap: 8px;
143
+ padding: 7px 8px;
144
+ }
145
+ .cw-sidebar-header .xps-sidebar-title {
146
+ flex: 1 1 auto;
147
+ }
148
+ .cw-sidebar-header .xps-button {
149
+ flex: 0 0 auto;
150
+ }
151
+ .cw-search {
152
+ padding: 8px;
153
+ border-bottom: 1px solid var(--xps-border);
154
+ }
155
+ .cw-list-scroll,
156
+ .cw-inspector-scroll {
157
+ width: 100%;
158
+ height: 100%;
159
+ min-height: 0;
160
+ }
161
+ .cw-document-list {
162
+ min-width: 0;
163
+ padding: 6px;
164
+ gap: 5px;
165
+ }
166
+ .cw-document-button.xps-button {
167
+ width: 100%;
168
+ height: auto;
169
+ min-height: 46px;
170
+ display: grid;
171
+ justify-content: stretch;
172
+ align-items: center;
173
+ gap: 3px;
174
+ padding: 7px 8px;
175
+ text-align: left;
176
+ }
177
+ .cw-canvas {
178
+ position: relative;
179
+ min-width: 0;
180
+ min-height: 0;
181
+ overflow: hidden;
182
+ background: var(--xps-muted);
183
+ }
184
+ .cw-canvas .tl-container {
185
+ --color-background: var(--xps-background);
186
+ --color-low: var(--xps-muted);
187
+ --color-muted-1: var(--xps-muted);
188
+ --color-text-1: var(--xps-foreground);
189
+ }
190
+ .cw-empty {
191
+ display: grid;
192
+ width: 100%;
193
+ height: 100%;
194
+ place-items: center;
195
+ color: var(--xps-muted-foreground);
196
+ font-size: 0.875rem;
197
+ }
198
+ .cw-presets {
199
+ min-width: 0;
200
+ display: flex;
201
+ align-items: center;
202
+ gap: 2px;
203
+ overflow-x: auto;
204
+ scrollbar-width: none;
205
+ }
206
+ .cw-presets::-webkit-scrollbar { display: none; }
207
+ .cw-button-icon,
208
+ .cw-icon {
209
+ width: 1rem;
210
+ height: 1rem;
211
+ flex: 0 0 auto;
212
+ stroke-width: 2;
213
+ }
214
+ .cw-status {
215
+ min-width: 64px;
216
+ justify-content: center;
217
+ }
218
+ .cw-separator.xps-separator--vertical {
219
+ height: 24px;
220
+ margin: 0 2px;
221
+ }
222
+ .cw-hidden-file { display: none; }
223
+ .cw-tabs {
224
+ flex: 1 1 auto;
225
+ height: 100%;
226
+ min-height: 0;
227
+ display: grid;
228
+ grid-template-rows: auto minmax(0, 1fr);
229
+ align-items: stretch;
230
+ overflow: hidden;
231
+ }
232
+ .cw-tabs-list {
233
+ margin: 8px;
234
+ width: calc(100% - 16px);
235
+ }
236
+ .cw-tab-content {
237
+ height: 100%;
238
+ min-height: 0;
239
+ display: flex;
240
+ flex-direction: column;
241
+ align-items: stretch;
242
+ justify-content: flex-start;
243
+ gap: 8px;
244
+ padding: 0 8px 8px;
245
+ margin: 0;
246
+ overflow: hidden;
247
+ }
248
+ .cw-section {
249
+ min-width: 0;
250
+ display: grid;
251
+ gap: 5px;
252
+ padding: 8px;
253
+ border: 1px solid var(--xps-border);
254
+ border-radius: calc(var(--xps-radius) - 2px);
255
+ background: var(--xps-card);
256
+ }
257
+ .cw-section-title {
258
+ color: var(--xps-muted-foreground);
259
+ font-size: 0.6875rem;
260
+ font-weight: 750;
261
+ line-height: 1.2;
262
+ }
263
+ .cw-assistant-textarea {
264
+ min-height: 96px;
265
+ resize: vertical;
266
+ }
267
+ .cw-action-row {
268
+ min-width: 0;
269
+ display: flex;
270
+ flex-wrap: wrap;
271
+ gap: 6px;
272
+ }
273
+ .cw-inspector-scroll {
274
+ flex: 1 1 auto;
275
+ align-self: stretch;
276
+ }
277
+ .cw-inspector-scroll .xps-scroll-area-viewport {
278
+ display: block;
279
+ height: 100%;
280
+ }
281
+ .cw-inspector-scroll .xps-scroll-area-viewport > div {
282
+ display: block !important;
283
+ min-height: 0 !important;
284
+ }
285
+ .cw-inspector-list {
286
+ min-height: 0;
287
+ display: flex;
288
+ flex-direction: column;
289
+ align-items: stretch;
290
+ justify-content: flex-start;
291
+ }
292
+ .cw-version,
293
+ .cw-log {
294
+ min-width: 0;
295
+ display: flex;
296
+ align-items: center;
297
+ justify-content: space-between;
298
+ gap: 8px;
299
+ padding: 8px 0;
300
+ color: var(--xps-foreground);
301
+ font-size: 0.8125rem;
302
+ border-bottom: 1px solid var(--xps-border);
303
+ }
304
+ .cw-log {
305
+ display: grid;
306
+ justify-content: stretch;
307
+ color: var(--xps-muted-foreground);
308
+ line-height: 1.35;
309
+ }
310
+ .cw-version strong,
311
+ .cw-log strong {
312
+ color: var(--xps-foreground);
313
+ font-weight: 700;
314
+ }
315
+ @media (max-width: 940px) {
316
+ .cw-root {
317
+ --cw-left-width: var(--cw-rail-width);
318
+ --cw-right-width: var(--cw-rail-width);
319
+ }
320
+ .cw-toolbar {
321
+ grid-template-columns: minmax(120px, 1fr);
322
+ }
323
+ .cw-toolbar-title {
324
+ display: none;
325
+ }
326
+ .cw-toolbar-actions {
327
+ justify-content: flex-start;
328
+ }
329
+ }
330
+ `;
331
+ document.head.appendChild(style);
332
+ }
333
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/styles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACvD,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC7C,KAAK,CAAC,EAAE,GAAG,yBAAyB,CAAA;IACpC,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmUnB,CAAA;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,14 @@
1
+ type CanvasToolEvent = {
2
+ toolName?: string;
3
+ name?: string;
4
+ payload?: {
5
+ toolName?: string;
6
+ };
7
+ data?: {
8
+ toolName?: string;
9
+ };
10
+ };
11
+ type CanvasToolEventCandidate = CanvasToolEvent | object | string | number | boolean | null | undefined;
12
+ export declare function shouldRefreshForCanvasToolEvent(event: CanvasToolEventCandidate): boolean;
13
+ export {};
14
+ //# sourceMappingURL=tool-event-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-event-refresh.d.ts","sourceRoot":"","sources":["../../../../../src/lib/remote-components/canvas-workbench/src/tool-event-refresh.ts"],"names":[],"mappings":"AASA,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAED,KAAK,wBAAwB,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvG,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,wBAAwB,WAM9E"}