@xpert-ai/plugin-excalidraw 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 +5 -0
  4. package/assets/logo.svg +8 -0
  5. package/dist/docs/excalidraw-agent-skill.md +32 -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 +42 -0
  13. package/dist/lib/constants.js.map +1 -0
  14. package/dist/lib/entities/excalidraw-action-log.entity.d.ts +18 -0
  15. package/dist/lib/entities/excalidraw-action-log.entity.d.ts.map +1 -0
  16. package/dist/lib/entities/excalidraw-action-log.entity.js +69 -0
  17. package/dist/lib/entities/excalidraw-action-log.entity.js.map +1 -0
  18. package/dist/lib/entities/excalidraw-drawing-version.entity.d.ts +21 -0
  19. package/dist/lib/entities/excalidraw-drawing-version.entity.d.ts.map +1 -0
  20. package/dist/lib/entities/excalidraw-drawing-version.entity.js +82 -0
  21. package/dist/lib/entities/excalidraw-drawing-version.entity.js.map +1 -0
  22. package/dist/lib/entities/excalidraw-drawing.entity.d.ts +24 -0
  23. package/dist/lib/entities/excalidraw-drawing.entity.d.ts.map +1 -0
  24. package/dist/lib/entities/excalidraw-drawing.entity.js +94 -0
  25. package/dist/lib/entities/excalidraw-drawing.entity.js.map +1 -0
  26. package/dist/lib/entities/index.d.ts +4 -0
  27. package/dist/lib/entities/index.d.ts.map +1 -0
  28. package/dist/lib/entities/index.js +4 -0
  29. package/dist/lib/entities/index.js.map +1 -0
  30. package/dist/lib/excalidraw-view.provider.d.ts +14 -0
  31. package/dist/lib/excalidraw-view.provider.d.ts.map +1 -0
  32. package/dist/lib/excalidraw-view.provider.js +423 -0
  33. package/dist/lib/excalidraw-view.provider.js.map +1 -0
  34. package/dist/lib/excalidraw.middleware.d.ts +10 -0
  35. package/dist/lib/excalidraw.middleware.d.ts.map +1 -0
  36. package/dist/lib/excalidraw.middleware.js +173 -0
  37. package/dist/lib/excalidraw.middleware.js.map +1 -0
  38. package/dist/lib/excalidraw.plugin.d.ts +8 -0
  39. package/dist/lib/excalidraw.plugin.d.ts.map +1 -0
  40. package/dist/lib/excalidraw.plugin.js +27 -0
  41. package/dist/lib/excalidraw.plugin.js.map +1 -0
  42. package/dist/lib/excalidraw.service.d.ts +169 -0
  43. package/dist/lib/excalidraw.service.d.ts.map +1 -0
  44. package/dist/lib/excalidraw.service.js +441 -0
  45. package/dist/lib/excalidraw.service.js.map +1 -0
  46. package/dist/lib/excalidraw.templates.d.ts +3 -0
  47. package/dist/lib/excalidraw.templates.d.ts.map +1 -0
  48. package/dist/lib/excalidraw.templates.js +78 -0
  49. package/dist/lib/excalidraw.templates.js.map +1 -0
  50. package/dist/lib/remote-components/excalidraw-workbench/app.css +1 -0
  51. package/dist/lib/remote-components/excalidraw-workbench/app.js +5105 -0
  52. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.d.ts +3 -0
  53. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.d.ts.map +1 -0
  54. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js +103 -0
  55. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js.map +1 -0
  56. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.ts +151 -0
  57. package/dist/lib/remote-components/excalidraw-workbench/src/main.tsx +1411 -0
  58. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.d.ts +3 -0
  59. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.d.ts.map +1 -0
  60. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js +4 -0
  61. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js.map +1 -0
  62. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.ts +4 -0
  63. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.d.ts +11 -0
  64. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.d.ts.map +1 -0
  65. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js +11 -0
  66. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js.map +1 -0
  67. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.ts +11 -0
  68. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.d.ts +5 -0
  69. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.d.ts.map +1 -0
  70. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js +8 -0
  71. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js.map +1 -0
  72. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.ts +8 -0
  73. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.d.ts +36 -0
  74. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.d.ts.map +1 -0
  75. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js +36 -0
  76. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js.map +1 -0
  77. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.ts +36 -0
  78. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.d.ts +21 -0
  79. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.d.ts.map +1 -0
  80. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js +198 -0
  81. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js.map +1 -0
  82. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.ts +228 -0
  83. package/dist/lib/remote-components/excalidraw-workbench/src/styles.d.ts +2 -0
  84. package/dist/lib/remote-components/excalidraw-workbench/src/styles.d.ts.map +1 -0
  85. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js +324 -0
  86. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js.map +1 -0
  87. package/dist/lib/remote-components/excalidraw-workbench/src/styles.ts +323 -0
  88. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.d.ts +4 -0
  89. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.d.ts.map +1 -0
  90. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js +4 -0
  91. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js.map +1 -0
  92. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.ts +3 -0
  93. package/dist/lib/types.d.ts +74 -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-excalidraw-assistant.yaml +129 -0
  98. package/package.json +87 -0
  99. package/skills/index/SKILL.md +46 -0
  100. package/skills/index/agents/xpertai.yaml +6 -0
@@ -0,0 +1,3 @@
1
+ export type TranslationKey = 'newDrawing' | 'save' | 'saveChanges' | 'saveNoChanges' | 'import' | 'exportJson' | 'exportPng' | 'exportSvg' | 'askAssistant' | 'search' | 'allStatuses' | 'draft' | 'reviewed' | 'archived' | 'versions' | 'restore' | 'archive' | 'markReviewed' | 'backToDraft' | 'mermaid' | 'convert' | 'saveConverted' | 'title' | 'description' | 'drawingRequest' | 'changeSummary' | 'operationCompleted' | 'operationFailed' | 'requestTimeout' | 'remoteRequestFailed' | 'unknownError' | 'noDrawing' | 'dirty' | 'saved' | 'mermaidNotice' | 'untitled' | 'drawingCreated' | 'convertFailed' | 'agentDrawingUpdated' | 'mermaidAutoPreviewed' | 'drawings' | 'inspector' | 'collapseDrawings' | 'expandDrawings' | 'collapseInspector' | 'expandInspector';
2
+ export declare function createTranslator(locale?: unknown): (key: TranslationKey) => string;
3
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/lib/remote-components/excalidraw-workbench/src/i18n.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,MAAM,GACN,aAAa,GACb,eAAe,GACf,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,WAAW,GACX,cAAc,GACd,QAAQ,GACR,aAAa,GACb,OAAO,GACP,UAAU,GACV,UAAU,GACV,UAAU,GACV,SAAS,GACT,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,GACT,SAAS,GACT,eAAe,GACf,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GACrB,cAAc,GACd,WAAW,GACX,OAAO,GACP,OAAO,GACP,eAAe,GACf,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,UAAU,GACV,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,CAAA;AAqGrB,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,IAEvC,KAAK,cAAc,YAC5B"}
@@ -0,0 +1,103 @@
1
+ const translations = {
2
+ zh_Hans: {
3
+ newDrawing: '新建',
4
+ save: '保存',
5
+ saveChanges: '保存当前改动',
6
+ saveNoChanges: '没有改动,无需保存',
7
+ import: '导入',
8
+ exportJson: 'JSON',
9
+ exportPng: 'PNG',
10
+ exportSvg: 'SVG',
11
+ askAssistant: '发送',
12
+ search: '搜索图形',
13
+ allStatuses: '全部状态',
14
+ draft: '草稿',
15
+ reviewed: '已审核',
16
+ archived: '已归档',
17
+ versions: '版本',
18
+ restore: '恢复',
19
+ archive: '归档',
20
+ markReviewed: '标记已审核',
21
+ backToDraft: '退回草稿',
22
+ mermaid: 'Mermaid',
23
+ convert: '转换',
24
+ saveConverted: '保存转换',
25
+ title: '标题',
26
+ description: '描述',
27
+ drawingRequest: '绘图需求',
28
+ changeSummary: '变更摘要',
29
+ operationCompleted: '操作已完成',
30
+ operationFailed: '操作失败',
31
+ requestTimeout: '请求超时',
32
+ remoteRequestFailed: '远程请求失败',
33
+ unknownError: '未知错误',
34
+ noDrawing: '请选择或新建图形',
35
+ dirty: '未保存',
36
+ saved: '已保存',
37
+ mermaidNotice: 'Flowchart 可结构化转换,其他 Mermaid 类型可能以图片进入画布。',
38
+ untitled: '未命名图形',
39
+ drawingCreated: '图形已创建',
40
+ convertFailed: 'Mermaid 转换失败',
41
+ agentDrawingUpdated: 'Agent 绘图结果已刷新',
42
+ mermaidAutoPreviewed: 'Mermaid 草稿已自动转换为预览,确认后请保存转换',
43
+ drawings: '图形',
44
+ inspector: '详情',
45
+ collapseDrawings: '收起图形侧栏',
46
+ expandDrawings: '展开图形侧栏',
47
+ collapseInspector: '收起详情侧栏',
48
+ expandInspector: '展开详情侧栏'
49
+ },
50
+ en_US: {
51
+ newDrawing: 'New',
52
+ save: 'Save',
53
+ saveChanges: 'Save current changes',
54
+ saveNoChanges: 'No changes to save',
55
+ import: 'Import',
56
+ exportJson: 'JSON',
57
+ exportPng: 'PNG',
58
+ exportSvg: 'SVG',
59
+ askAssistant: 'Send',
60
+ search: 'Search drawings',
61
+ allStatuses: 'All statuses',
62
+ draft: 'Draft',
63
+ reviewed: 'Reviewed',
64
+ archived: 'Archived',
65
+ versions: 'Versions',
66
+ restore: 'Restore',
67
+ archive: 'Archive',
68
+ markReviewed: 'Mark reviewed',
69
+ backToDraft: 'Back to draft',
70
+ mermaid: 'Mermaid',
71
+ convert: 'Convert',
72
+ saveConverted: 'Save converted',
73
+ title: 'Title',
74
+ description: 'Description',
75
+ drawingRequest: 'Drawing request',
76
+ changeSummary: 'Change summary',
77
+ operationCompleted: 'Operation completed',
78
+ operationFailed: 'Operation failed',
79
+ requestTimeout: 'Request timed out',
80
+ remoteRequestFailed: 'Remote request failed',
81
+ unknownError: 'Unknown error',
82
+ noDrawing: 'Select or create a drawing',
83
+ dirty: 'Unsaved',
84
+ saved: 'Saved',
85
+ mermaidNotice: 'Flowcharts convert to editable elements best; other Mermaid types may enter as images.',
86
+ untitled: 'Untitled drawing',
87
+ drawingCreated: 'Drawing created',
88
+ convertFailed: 'Mermaid conversion failed',
89
+ agentDrawingUpdated: 'Agent drawing result refreshed',
90
+ mermaidAutoPreviewed: 'Mermaid draft auto-converted for preview. Save the conversion after review.',
91
+ drawings: 'Drawings',
92
+ inspector: 'Inspector',
93
+ collapseDrawings: 'Collapse drawings sidebar',
94
+ expandDrawings: 'Expand drawings sidebar',
95
+ collapseInspector: 'Collapse inspector',
96
+ expandInspector: 'Expand inspector'
97
+ }
98
+ };
99
+ export function createTranslator(locale) {
100
+ const dictionary = String(locale || '').toLowerCase().startsWith('en') ? translations.en_US : translations.zh_Hans;
101
+ return (key) => dictionary[key] || translations.en_US[key] || key;
102
+ }
103
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/excalidraw-workbench/src/i18n.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ export type TranslationKey =
2
+ | 'newDrawing'
3
+ | 'save'
4
+ | 'saveChanges'
5
+ | 'saveNoChanges'
6
+ | 'import'
7
+ | 'exportJson'
8
+ | 'exportPng'
9
+ | 'exportSvg'
10
+ | 'askAssistant'
11
+ | 'search'
12
+ | 'allStatuses'
13
+ | 'draft'
14
+ | 'reviewed'
15
+ | 'archived'
16
+ | 'versions'
17
+ | 'restore'
18
+ | 'archive'
19
+ | 'markReviewed'
20
+ | 'backToDraft'
21
+ | 'mermaid'
22
+ | 'convert'
23
+ | 'saveConverted'
24
+ | 'title'
25
+ | 'description'
26
+ | 'drawingRequest'
27
+ | 'changeSummary'
28
+ | 'operationCompleted'
29
+ | 'operationFailed'
30
+ | 'requestTimeout'
31
+ | 'remoteRequestFailed'
32
+ | 'unknownError'
33
+ | 'noDrawing'
34
+ | 'dirty'
35
+ | 'saved'
36
+ | 'mermaidNotice'
37
+ | 'untitled'
38
+ | 'drawingCreated'
39
+ | 'convertFailed'
40
+ | 'agentDrawingUpdated'
41
+ | 'mermaidAutoPreviewed'
42
+ | 'drawings'
43
+ | 'inspector'
44
+ | 'collapseDrawings'
45
+ | 'expandDrawings'
46
+ | 'collapseInspector'
47
+ | 'expandInspector'
48
+
49
+ const translations: Record<string, Record<TranslationKey, string>> = {
50
+ zh_Hans: {
51
+ newDrawing: '新建',
52
+ save: '保存',
53
+ saveChanges: '保存当前改动',
54
+ saveNoChanges: '没有改动,无需保存',
55
+ import: '导入',
56
+ exportJson: 'JSON',
57
+ exportPng: 'PNG',
58
+ exportSvg: 'SVG',
59
+ askAssistant: '发送',
60
+ search: '搜索图形',
61
+ allStatuses: '全部状态',
62
+ draft: '草稿',
63
+ reviewed: '已审核',
64
+ archived: '已归档',
65
+ versions: '版本',
66
+ restore: '恢复',
67
+ archive: '归档',
68
+ markReviewed: '标记已审核',
69
+ backToDraft: '退回草稿',
70
+ mermaid: 'Mermaid',
71
+ convert: '转换',
72
+ saveConverted: '保存转换',
73
+ title: '标题',
74
+ description: '描述',
75
+ drawingRequest: '绘图需求',
76
+ changeSummary: '变更摘要',
77
+ operationCompleted: '操作已完成',
78
+ operationFailed: '操作失败',
79
+ requestTimeout: '请求超时',
80
+ remoteRequestFailed: '远程请求失败',
81
+ unknownError: '未知错误',
82
+ noDrawing: '请选择或新建图形',
83
+ dirty: '未保存',
84
+ saved: '已保存',
85
+ mermaidNotice: 'Flowchart 可结构化转换,其他 Mermaid 类型可能以图片进入画布。',
86
+ untitled: '未命名图形',
87
+ drawingCreated: '图形已创建',
88
+ convertFailed: 'Mermaid 转换失败',
89
+ agentDrawingUpdated: 'Agent 绘图结果已刷新',
90
+ mermaidAutoPreviewed: 'Mermaid 草稿已自动转换为预览,确认后请保存转换',
91
+ drawings: '图形',
92
+ inspector: '详情',
93
+ collapseDrawings: '收起图形侧栏',
94
+ expandDrawings: '展开图形侧栏',
95
+ collapseInspector: '收起详情侧栏',
96
+ expandInspector: '展开详情侧栏'
97
+ },
98
+ en_US: {
99
+ newDrawing: 'New',
100
+ save: 'Save',
101
+ saveChanges: 'Save current changes',
102
+ saveNoChanges: 'No changes to save',
103
+ import: 'Import',
104
+ exportJson: 'JSON',
105
+ exportPng: 'PNG',
106
+ exportSvg: 'SVG',
107
+ askAssistant: 'Send',
108
+ search: 'Search drawings',
109
+ allStatuses: 'All statuses',
110
+ draft: 'Draft',
111
+ reviewed: 'Reviewed',
112
+ archived: 'Archived',
113
+ versions: 'Versions',
114
+ restore: 'Restore',
115
+ archive: 'Archive',
116
+ markReviewed: 'Mark reviewed',
117
+ backToDraft: 'Back to draft',
118
+ mermaid: 'Mermaid',
119
+ convert: 'Convert',
120
+ saveConverted: 'Save converted',
121
+ title: 'Title',
122
+ description: 'Description',
123
+ drawingRequest: 'Drawing request',
124
+ changeSummary: 'Change summary',
125
+ operationCompleted: 'Operation completed',
126
+ operationFailed: 'Operation failed',
127
+ requestTimeout: 'Request timed out',
128
+ remoteRequestFailed: 'Remote request failed',
129
+ unknownError: 'Unknown error',
130
+ noDrawing: 'Select or create a drawing',
131
+ dirty: 'Unsaved',
132
+ saved: 'Saved',
133
+ mermaidNotice: 'Flowcharts convert to editable elements best; other Mermaid types may enter as images.',
134
+ untitled: 'Untitled drawing',
135
+ drawingCreated: 'Drawing created',
136
+ convertFailed: 'Mermaid conversion failed',
137
+ agentDrawingUpdated: 'Agent drawing result refreshed',
138
+ mermaidAutoPreviewed: 'Mermaid draft auto-converted for preview. Save the conversion after review.',
139
+ drawings: 'Drawings',
140
+ inspector: 'Inspector',
141
+ collapseDrawings: 'Collapse drawings sidebar',
142
+ expandDrawings: 'Expand drawings sidebar',
143
+ collapseInspector: 'Collapse inspector',
144
+ expandInspector: 'Expand inspector'
145
+ }
146
+ }
147
+
148
+ export function createTranslator(locale?: unknown) {
149
+ const dictionary = String(locale || '').toLowerCase().startsWith('en') ? translations.en_US : translations.zh_Hans
150
+ return (key: TranslationKey) => dictionary[key] || translations.en_US[key] || key
151
+ }