@orbit-work/ui 0.1.1 → 0.1.2

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 (794) hide show
  1. package/README.md +59 -57
  2. package/dist/about-window.cjs +271 -1
  3. package/dist/about-window.cjs.map +1 -0
  4. package/dist/about-window.d.cts +20 -2
  5. package/dist/about-window.d.ts +20 -2
  6. package/dist/about-window.js +271 -1
  7. package/dist/about-window.js.map +1 -0
  8. package/dist/appearance-D7uh_ZTy.d.cts +192 -0
  9. package/dist/appearance-D7uh_ZTy.d.ts +192 -0
  10. package/dist/appearance.cjs +39 -1
  11. package/dist/appearance.cjs.map +1 -0
  12. package/dist/appearance.d.cts +1 -1
  13. package/dist/appearance.d.ts +1 -1
  14. package/dist/appearance.js +39 -1
  15. package/dist/appearance.js.map +1 -0
  16. package/dist/browser-annotation-popup.cjs +9 -1
  17. package/dist/browser-annotation-popup.cjs.map +1 -0
  18. package/dist/browser-annotation-popup.d.cts +6 -6
  19. package/dist/browser-annotation-popup.d.ts +6 -6
  20. package/dist/browser-annotation-popup.js +9 -1
  21. package/dist/browser-annotation-popup.js.map +1 -0
  22. package/dist/chunk-66VEV7G2.js +111 -0
  23. package/dist/chunk-66VEV7G2.js.map +1 -0
  24. package/dist/chunk-KRP43SUA.cjs +1130 -0
  25. package/dist/chunk-KRP43SUA.cjs.map +1 -0
  26. package/dist/chunk-QS55W5Q5.cjs +111 -0
  27. package/dist/chunk-QS55W5Q5.cjs.map +1 -0
  28. package/dist/chunk-S3R5QFO4.js +1130 -0
  29. package/dist/chunk-S3R5QFO4.js.map +1 -0
  30. package/dist/chunk-UT5LC6MR.js +38 -0
  31. package/dist/chunk-UT5LC6MR.js.map +1 -0
  32. package/dist/chunk-ZZTEY4YX.cjs +38 -0
  33. package/dist/chunk-ZZTEY4YX.cjs.map +1 -0
  34. package/dist/core.css +7886 -0
  35. package/dist/file-tree.css +85 -0
  36. package/dist/index-nLo7jMlP.d.cts +166 -0
  37. package/dist/index-nLo7jMlP.d.ts +166 -0
  38. package/dist/index.cjs +39161 -26
  39. package/dist/index.cjs.map +1 -0
  40. package/dist/index.d.cts +3785 -3031
  41. package/dist/index.d.ts +3785 -3031
  42. package/dist/index.js +39161 -26
  43. package/dist/index.js.map +1 -0
  44. package/dist/locale.cjs +15 -0
  45. package/dist/locale.cjs.map +1 -0
  46. package/dist/locale.d.cts +28 -0
  47. package/dist/locale.d.ts +28 -0
  48. package/dist/locale.js +15 -0
  49. package/dist/locale.js.map +1 -0
  50. package/dist/office.css +1146 -0
  51. package/dist/slot-core.cjs +200 -0
  52. package/dist/slot-core.cjs.map +1 -0
  53. package/dist/slot-core.d.cts +146 -0
  54. package/dist/slot-core.d.ts +146 -0
  55. package/dist/slot-core.js +200 -0
  56. package/dist/slot-core.js.map +1 -0
  57. package/dist/slot-react.cjs +153 -0
  58. package/dist/slot-react.cjs.map +1 -0
  59. package/dist/slot-react.d.cts +36 -0
  60. package/dist/slot-react.d.ts +36 -0
  61. package/dist/slot-react.js +153 -0
  62. package/dist/slot-react.js.map +1 -0
  63. package/dist/tailwind.css +137 -0
  64. package/dist/workbench.css +9014 -0
  65. package/package.json +112 -47
  66. package/dist/appearance-D5uQ53j3.d.cts +0 -210
  67. package/dist/appearance-D5uQ53j3.d.ts +0 -210
  68. package/dist/chunk-3KT7IU4X.js +0 -13
  69. package/dist/chunk-5VLBKOG7.cjs +0 -194
  70. package/dist/chunk-7YJY64LZ.js +0 -82
  71. package/dist/chunk-EF2BSN3K.cjs +0 -13
  72. package/dist/chunk-GMMYDILD.cjs +0 -82
  73. package/dist/chunk-VG7FQQ7K.js +0 -194
  74. package/dist/fonts/JetBrainsMono-Medium.ttf +0 -0
  75. package/dist/fonts/JetBrainsMono-Regular.ttf +0 -0
  76. package/dist/fonts/SpaceGrotesk-700-latin-ext.woff2 +0 -0
  77. package/dist/fonts/SpaceGrotesk-700-latin.woff2 +0 -0
  78. package/dist/index.css +0 -1
  79. package/dist/orbitwork.css +0 -22145
  80. package/src/components/Layout/AppLayout/AppLayout.stories.tsx +0 -246
  81. package/src/components/Layout/AppLayout/AppLayoutSource.test.mjs +0 -37
  82. package/src/components/Layout/AppLayout/index.tsx +0 -122
  83. package/src/components/Layout/Sidebar/index.tsx +0 -13
  84. package/src/components/Layout/SidebarShell/SidebarShell.stories.tsx +0 -676
  85. package/src/components/Layout/SidebarShell/SidebarShellSource.test.mjs +0 -161
  86. package/src/components/Layout/SidebarShell/index.tsx +0 -326
  87. package/src/components/Layout/index.ts +0 -10
  88. package/src/components/composite/ActionBar/ActionBar.stories.tsx +0 -26
  89. package/src/components/composite/ActionBar/index.tsx +0 -31
  90. package/src/components/composite/ActionStatus/ActionStatus.stories.tsx +0 -60
  91. package/src/components/composite/ActionStatus/index.tsx +0 -21
  92. package/src/components/composite/AskQuestionCardView/AskQuestionCardView.stories.tsx +0 -175
  93. package/src/components/composite/AskQuestionCardView/AskQuestionCardViewSource.test.mjs +0 -92
  94. package/src/components/composite/AskQuestionCardView/index.tsx +0 -119
  95. package/src/components/composite/AssistantChannelCard/AssistantChannelCard.stories.tsx +0 -265
  96. package/src/components/composite/AssistantChannelCard/AssistantChannelCardSource.test.mjs +0 -45
  97. package/src/components/composite/AssistantChannelCard/index.tsx +0 -102
  98. package/src/components/composite/AssistantToggleRow/AssistantToggleRow.stories.tsx +0 -197
  99. package/src/components/composite/AssistantToggleRow/index.tsx +0 -35
  100. package/src/components/composite/AttachmentCard/AttachmentCard.stories.tsx +0 -125
  101. package/src/components/composite/AttachmentCard/index.tsx +0 -80
  102. package/src/components/composite/BackButton/BackButton.stories.tsx +0 -93
  103. package/src/components/composite/BackButton/BackButtonSource.test.mjs +0 -29
  104. package/src/components/composite/BackButton/index.tsx +0 -48
  105. package/src/components/composite/Banner/Banner.stories.tsx +0 -180
  106. package/src/components/composite/Banner/BannerSource.test.mjs +0 -67
  107. package/src/components/composite/Banner/index.tsx +0 -125
  108. package/src/components/composite/BeaconIcons/BeaconIcons.stories.tsx +0 -153
  109. package/src/components/composite/BeaconIcons/index.tsx +0 -265
  110. package/src/components/composite/BeaconSpinner/BeaconSpinner.stories.tsx +0 -144
  111. package/src/components/composite/BeaconSpinner/index.tsx +0 -185
  112. package/src/components/composite/CatalogStates/CatalogEmptyState.stories.tsx +0 -108
  113. package/src/components/composite/CatalogStates/CatalogStates.stories.tsx +0 -53
  114. package/src/components/composite/CatalogStates/CatalogStatesSource.test.mjs +0 -149
  115. package/src/components/composite/CatalogStates/index.tsx +0 -113
  116. package/src/components/composite/Charts/Charts.stories.tsx +0 -174
  117. package/src/components/composite/Charts/ChartsSource.test.mjs +0 -111
  118. package/src/components/composite/Charts/index.tsx +0 -385
  119. package/src/components/composite/CodeBlock/CodeBlock.stories.tsx +0 -308
  120. package/src/components/composite/CodeBlock/CodeFaceSource.test.mjs +0 -89
  121. package/src/components/composite/CodeBlock/index.tsx +0 -300
  122. package/src/components/composite/CodeDiff/CodeDiff.stories.tsx +0 -169
  123. package/src/components/composite/CodeDiff/index.tsx +0 -373
  124. package/src/components/composite/CodePreview/CodePreview.stories.tsx +0 -127
  125. package/src/components/composite/CodePreview/CodePreviewSource.test.mjs +0 -43
  126. package/src/components/composite/CodePreview/index.tsx +0 -98
  127. package/src/components/composite/CommandPalette/CommandPalette.stories.tsx +0 -89
  128. package/src/components/composite/CommandPalette/CommandPaletteSource.test.mjs +0 -61
  129. package/src/components/composite/CommandPalette/index.tsx +0 -310
  130. package/src/components/composite/ContentRecommendation/ContentRecommendation.stories.tsx +0 -300
  131. package/src/components/composite/ContentRecommendation/ContentRecommendationSource.test.mjs +0 -48
  132. package/src/components/composite/ContentRecommendation/index.tsx +0 -116
  133. package/src/components/composite/ContextChip/ContextChip.stories.tsx +0 -123
  134. package/src/components/composite/ContextChip/ContextChipSource.test.mjs +0 -24
  135. package/src/components/composite/ContextChip/index.tsx +0 -25
  136. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorSizeSource.test.mjs +0 -15
  137. package/src/components/composite/ContextUsageIndicatorView/ContextUsageIndicatorView.stories.tsx +0 -110
  138. package/src/components/composite/ContextUsageIndicatorView/ContextUsageLoadingSource.test.mjs +0 -23
  139. package/src/components/composite/ContextUsageIndicatorView/index.tsx +0 -139
  140. package/src/components/composite/Controls/Controls.stories.tsx +0 -227
  141. package/src/components/composite/Controls/index.tsx +0 -15
  142. package/src/components/composite/CreateProjectDialog/CreateProjectDialog.stories.tsx +0 -56
  143. package/src/components/composite/CreateProjectDialog/index.tsx +0 -70
  144. package/src/components/composite/DataManagementSectionView/DataManagementSectionView.stories.tsx +0 -123
  145. package/src/components/composite/DataManagementSectionView/DataManagementSectionViewSource.test.mjs +0 -45
  146. package/src/components/composite/DataManagementSectionView/index.tsx +0 -110
  147. package/src/components/composite/DataTable/DataTable.stories.tsx +0 -159
  148. package/src/components/composite/DataTable/DataTableSource.test.mjs +0 -96
  149. package/src/components/composite/DataTable/index.tsx +0 -373
  150. package/src/components/composite/DetailChrome/DetailChrome.stories.tsx +0 -61
  151. package/src/components/composite/DetailChrome/DetailChromeSource.test.mjs +0 -31
  152. package/src/components/composite/DetailChrome/index.tsx +0 -94
  153. package/src/components/composite/DetailPanel/DetailPanel.stories.tsx +0 -185
  154. package/src/components/composite/DetailPanel/DetailPanelSource.test.mjs +0 -49
  155. package/src/components/composite/DetailPanel/index.tsx +0 -120
  156. package/src/components/composite/DetailScaffold/DetailScaffold.stories.tsx +0 -203
  157. package/src/components/composite/DetailScaffold/DetailScaffoldSource.test.mjs +0 -38
  158. package/src/components/composite/DetailScaffold/index.tsx +0 -114
  159. package/src/components/composite/Dialog/Dialog.stories.tsx +0 -343
  160. package/src/components/composite/Dialog/DialogSource.test.mjs +0 -130
  161. package/src/components/composite/Dialog/index.tsx +0 -333
  162. package/src/components/composite/DropZone/DropZone.stories.tsx +0 -105
  163. package/src/components/composite/DropZone/DropZoneSource.test.mjs +0 -68
  164. package/src/components/composite/DropZone/index.tsx +0 -196
  165. package/src/components/composite/FSelect/FSelect.stories.tsx +0 -64
  166. package/src/components/composite/FSelect/index.tsx +0 -29
  167. package/src/components/composite/FeedbackContextMenuView/FeedbackContextMenuView.stories.tsx +0 -106
  168. package/src/components/composite/FeedbackContextMenuView/index.tsx +0 -51
  169. package/src/components/composite/FeedbackDialogView/FeedbackDialogView.stories.tsx +0 -291
  170. package/src/components/composite/FeedbackDialogView/index.tsx +0 -95
  171. package/src/components/composite/FileReferenceCard/FileReferenceCard.stories.tsx +0 -364
  172. package/src/components/composite/FileReferenceCard/FileReferenceCardSource.test.mjs +0 -48
  173. package/src/components/composite/FileReferenceCard/index.tsx +0 -122
  174. package/src/components/composite/FilterBar/FilterBar.stories.tsx +0 -167
  175. package/src/components/composite/FilterBar/FilterBarSource.test.mjs +0 -75
  176. package/src/components/composite/FilterBar/index.tsx +0 -206
  177. package/src/components/composite/FormField/FormField.stories.tsx +0 -158
  178. package/src/components/composite/FormField/FormFieldSource.test.mjs +0 -56
  179. package/src/components/composite/FormField/index.tsx +0 -219
  180. package/src/components/composite/HomeBackdrop/HomeBackdrop.stories.tsx +0 -54
  181. package/src/components/composite/HomeBackdrop/HomeBackdropSource.test.mjs +0 -50
  182. package/src/components/composite/HomeBackdrop/index.tsx +0 -53
  183. package/src/components/composite/Icons/Icons.stories.tsx +0 -153
  184. package/src/components/composite/Icons/IconsSource.test.mjs +0 -23
  185. package/src/components/composite/Icons/index.tsx +0 -1361
  186. package/src/components/composite/ImageCard/ImageCard.stories.tsx +0 -54
  187. package/src/components/composite/ImageCard/index.tsx +0 -33
  188. package/src/components/composite/ImagePreview/ImagePreview.stories.tsx +0 -172
  189. package/src/components/composite/ImagePreview/ImagePreviewSource.test.mjs +0 -95
  190. package/src/components/composite/ImagePreview/index.tsx +0 -339
  191. package/src/components/composite/ListRow/ListRow.stories.tsx +0 -257
  192. package/src/components/composite/ListRow/ListRowSource.test.mjs +0 -101
  193. package/src/components/composite/ListRow/index.tsx +0 -309
  194. package/src/components/composite/Markdown/Markdown.stories.tsx +0 -192
  195. package/src/components/composite/Markdown/MarkdownSource.test.mjs +0 -126
  196. package/src/components/composite/Markdown/MarkdownStyleSource.test.mjs +0 -152
  197. package/src/components/composite/Markdown/index.tsx +0 -702
  198. package/src/components/composite/MarkdownPreview/MarkdownPreview.stories.tsx +0 -174
  199. package/src/components/composite/MarkdownPreview/MarkdownPreviewTabsSource.test.mjs +0 -31
  200. package/src/components/composite/MarkdownPreview/MarkdownRenderedStyleSource.test.mjs +0 -84
  201. package/src/components/composite/MarkdownPreview/index.tsx +0 -140
  202. package/src/components/composite/MarkdownPreviewModalView/MarkdownPreviewModalView.stories.tsx +0 -104
  203. package/src/components/composite/MarkdownPreviewModalView/index.tsx +0 -85
  204. package/src/components/composite/MessageFeedbackDialog/MessageFeedbackDialog.stories.tsx +0 -66
  205. package/src/components/composite/MessageFeedbackDialog/index.tsx +0 -115
  206. package/src/components/composite/ModelCatalogErrorState/ModelCatalogErrorState.stories.tsx +0 -101
  207. package/src/components/composite/ModelCatalogErrorState/ModelCatalogRetrySource.test.mjs +0 -86
  208. package/src/components/composite/ModelCatalogErrorState/index.tsx +0 -59
  209. package/src/components/composite/ModelModalityFlow/ModelModalityFlow.stories.tsx +0 -224
  210. package/src/components/composite/ModelModalityFlow/ModelModalityFlowSource.test.mjs +0 -56
  211. package/src/components/composite/ModelModalityFlow/index.tsx +0 -113
  212. package/src/components/composite/ModelPickerList/ModelPickerList.stories.tsx +0 -313
  213. package/src/components/composite/ModelPickerList/index.tsx +0 -142
  214. package/src/components/composite/ModelSelect/ModelSelect.stories.tsx +0 -90
  215. package/src/components/composite/ModelSelect/index.tsx +0 -148
  216. package/src/components/composite/ModelsSettingsSectionView/ModelsSettingsSectionView.stories.tsx +0 -170
  217. package/src/components/composite/ModelsSettingsSectionView/index.tsx +0 -139
  218. package/src/components/composite/NativeControls/NativeControls.stories.tsx +0 -386
  219. package/src/components/composite/NativeControls/NativeControlsStyleSource.test.mjs +0 -63
  220. package/src/components/composite/NativeControls/index.tsx +0 -97
  221. package/src/components/composite/NavMenu/NavMenu.stories.tsx +0 -383
  222. package/src/components/composite/NavMenu/NavMenuSource.test.mjs +0 -56
  223. package/src/components/composite/NavMenu/index.tsx +0 -142
  224. package/src/components/composite/NoPlanPanelView/NoPlanPanelView.stories.tsx +0 -344
  225. package/src/components/composite/NoPlanPanelView/NoPlanPanelViewSource.test.mjs +0 -34
  226. package/src/components/composite/NoPlanPanelView/index.tsx +0 -97
  227. package/src/components/composite/OpenWithButton/OpenWithButton.stories.tsx +0 -78
  228. package/src/components/composite/OpenWithButton/index.tsx +0 -46
  229. package/src/components/composite/OrbitworkLogo/OrbitworkLogo.stories.tsx +0 -192
  230. package/src/components/composite/OrbitworkLogo/index.tsx +0 -207
  231. package/src/components/composite/OrbitworkModal/OrbitworkModal.stories.tsx +0 -58
  232. package/src/components/composite/OrbitworkModal/index.tsx +0 -31
  233. package/src/components/composite/PageHead/PageHead.stories.tsx +0 -235
  234. package/src/components/composite/PageHead/PageHeadSource.test.mjs +0 -76
  235. package/src/components/composite/PageHead/index.tsx +0 -128
  236. package/src/components/composite/PlanFeatureIcon/PlanFeatureIcon.stories.tsx +0 -205
  237. package/src/components/composite/PlanFeatureIcon/PlanFeatureIconSource.test.mjs +0 -38
  238. package/src/components/composite/PlanFeatureIcon/index.tsx +0 -48
  239. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionView.stories.tsx +0 -231
  240. package/src/components/composite/PlanSettingsSectionView/PlanSettingsSectionViewSource.test.mjs +0 -85
  241. package/src/components/composite/PlanSettingsSectionView/index.tsx +0 -264
  242. package/src/components/composite/Popover/Popover.stories.tsx +0 -175
  243. package/src/components/composite/Popover/PopoverSource.test.mjs +0 -59
  244. package/src/components/composite/Popover/index.tsx +0 -176
  245. package/src/components/composite/PptxRenderer/ElementDispatcher/index.tsx +0 -70
  246. package/src/components/composite/PptxRenderer/PptxChromeStyleSource.test.mjs +0 -36
  247. package/src/components/composite/PptxRenderer/PptxRenderer.stories.tsx +0 -128
  248. package/src/components/composite/PptxRenderer/PptxSlide/index.tsx +0 -48
  249. package/src/components/composite/PptxRenderer/constants.ts +0 -2
  250. package/src/components/composite/PptxRenderer/elements/AudioElement/index.tsx +0 -48
  251. package/src/components/composite/PptxRenderer/elements/ChartElement/index.tsx +0 -172
  252. package/src/components/composite/PptxRenderer/elements/DiagramElement/index.tsx +0 -46
  253. package/src/components/composite/PptxRenderer/elements/GroupElement/index.tsx +0 -28
  254. package/src/components/composite/PptxRenderer/elements/ImageElement/index.tsx +0 -61
  255. package/src/components/composite/PptxRenderer/elements/MathElement/index.tsx +0 -57
  256. package/src/components/composite/PptxRenderer/elements/ShapeElement/index.tsx +0 -327
  257. package/src/components/composite/PptxRenderer/elements/TableElement/index.tsx +0 -90
  258. package/src/components/composite/PptxRenderer/elements/TextElement/index.tsx +0 -57
  259. package/src/components/composite/PptxRenderer/elements/VideoElement/index.tsx +0 -43
  260. package/src/components/composite/PptxRenderer/index.ts +0 -24
  261. package/src/components/composite/PptxRenderer/types.ts +0 -326
  262. package/src/components/composite/PptxRenderer/utils.ts +0 -129
  263. package/src/components/composite/ProjectSelect/ProjectSelect.stories.tsx +0 -112
  264. package/src/components/composite/ProjectSelect/ProjectSelectSource.test.mjs +0 -34
  265. package/src/components/composite/ProjectSelect/index.tsx +0 -155
  266. package/src/components/composite/RadioCard/RadioCard.stories.tsx +0 -130
  267. package/src/components/composite/RadioCard/RadioCardSource.test.mjs +0 -42
  268. package/src/components/composite/RadioCard/index.tsx +0 -171
  269. package/src/components/composite/RowOverflowMenu/RowOverflowMenu.stories.tsx +0 -113
  270. package/src/components/composite/RowOverflowMenu/RowOverflowMenuSource.test.mjs +0 -59
  271. package/src/components/composite/RowOverflowMenu/index.tsx +0 -101
  272. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPrompt.stories.tsx +0 -159
  273. package/src/components/composite/SandboxPermissionPrompt/SandboxPermissionPromptSource.test.mjs +0 -71
  274. package/src/components/composite/SandboxPermissionPrompt/index.tsx +0 -157
  275. package/src/components/composite/SearchInput/SearchInput.stories.tsx +0 -127
  276. package/src/components/composite/SearchInput/index.tsx +0 -91
  277. package/src/components/composite/SearchResult/SearchResult.stories.tsx +0 -305
  278. package/src/components/composite/SearchResult/SearchResultSource.test.mjs +0 -45
  279. package/src/components/composite/SearchResult/index.tsx +0 -148
  280. package/src/components/composite/Section/Section.stories.tsx +0 -148
  281. package/src/components/composite/Section/SectionSource.test.mjs +0 -59
  282. package/src/components/composite/Section/index.tsx +0 -105
  283. package/src/components/composite/SelectionBulkBar/SelectionBulkBar.stories.tsx +0 -111
  284. package/src/components/composite/SelectionBulkBar/SelectionBulkBarSource.test.mjs +0 -44
  285. package/src/components/composite/SelectionBulkBar/index.tsx +0 -99
  286. package/src/components/composite/ShareStrip/ShareStrip.stories.tsx +0 -123
  287. package/src/components/composite/ShareStrip/index.tsx +0 -83
  288. package/src/components/composite/ShortcutSheet/ShortcutSheet.stories.tsx +0 -90
  289. package/src/components/composite/ShortcutSheet/ShortcutSheetSource.test.mjs +0 -49
  290. package/src/components/composite/ShortcutSheet/index.tsx +0 -163
  291. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardView.stories.tsx +0 -328
  292. package/src/components/composite/SitesArtifactCardView/SitesArtifactCardViewSource.test.mjs +0 -45
  293. package/src/components/composite/SitesArtifactCardView/index.tsx +0 -100
  294. package/src/components/composite/Skeleton/Skeleton.stories.tsx +0 -188
  295. package/src/components/composite/Skeleton/SkeletonSource.test.mjs +0 -25
  296. package/src/components/composite/Skeleton/index.tsx +0 -152
  297. package/src/components/composite/Splash/Splash.stories.tsx +0 -150
  298. package/src/components/composite/Splash/index.tsx +0 -229
  299. package/src/components/composite/StatusTag/StatusTag.stories.tsx +0 -66
  300. package/src/components/composite/StatusTag/StatusTagSource.test.mjs +0 -64
  301. package/src/components/composite/StatusTag/index.tsx +0 -78
  302. package/src/components/composite/StepList/StepList.stories.tsx +0 -352
  303. package/src/components/composite/StepList/index.tsx +0 -23
  304. package/src/components/composite/Tag/Tag.stories.tsx +0 -279
  305. package/src/components/composite/Tag/TagSource.test.mjs +0 -67
  306. package/src/components/composite/Tag/index.tsx +0 -229
  307. package/src/components/composite/TimePicker/TimePicker.stories.tsx +0 -91
  308. package/src/components/composite/TimePicker/TimePickerSource.test.mjs +0 -98
  309. package/src/components/composite/TimePicker/index.tsx +0 -208
  310. package/src/components/composite/TitleBar/TitleBar.stories.tsx +0 -329
  311. package/src/components/composite/TitleBar/TitleBarSource.test.mjs +0 -140
  312. package/src/components/composite/TitleBar/index.tsx +0 -350
  313. package/src/components/composite/Toast/Toast.stories.tsx +0 -304
  314. package/src/components/composite/Toast/ToastSource.test.mjs +0 -63
  315. package/src/components/composite/Toast/index.tsx +0 -135
  316. package/src/components/composite/Tooltip/Tooltip.stories.tsx +0 -304
  317. package/src/components/composite/Tooltip/TooltipSource.test.mjs +0 -34
  318. package/src/components/composite/Tooltip/index.tsx +0 -204
  319. package/src/components/composite/TranscriptDividers/TranscriptDividers.stories.tsx +0 -160
  320. package/src/components/composite/TranscriptDividers/TranscriptDividersSource.test.mjs +0 -90
  321. package/src/components/composite/TranscriptDividers/index.tsx +0 -352
  322. package/src/components/composite/WCardShell/WCardShell.stories.tsx +0 -228
  323. package/src/components/composite/WCardShell/index.tsx +0 -101
  324. package/src/components/composite/index.ts +0 -81
  325. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarView.stories.tsx +0 -128
  326. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/ArtifactPreviewSidebarViewSource.test.mjs +0 -69
  327. package/src/components/domain/artifacts/ArtifactPreviewSidebarView/index.tsx +0 -212
  328. package/src/components/domain/artifacts/index.ts +0 -1
  329. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupView.stories.tsx +0 -211
  330. package/src/components/domain/browser/BrowserAnnotationPopupView/BrowserAnnotationPopupViewSource.test.mjs +0 -82
  331. package/src/components/domain/browser/BrowserAnnotationPopupView/index.tsx +0 -235
  332. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarView.stories.tsx +0 -260
  333. package/src/components/domain/browser/BrowserDeviceToolbarView/BrowserDeviceToolbarViewSource.test.mjs +0 -12
  334. package/src/components/domain/browser/BrowserDeviceToolbarView/index.tsx +0 -154
  335. package/src/components/domain/browser/BrowserFindBarView/BrowserFindBarView.stories.tsx +0 -52
  336. package/src/components/domain/browser/BrowserFindBarView/index.tsx +0 -111
  337. package/src/components/domain/browser/BrowserImportDialogView/BrowserImportDialogView.stories.tsx +0 -89
  338. package/src/components/domain/browser/BrowserImportDialogView/index.tsx +0 -155
  339. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorView.stories.tsx +0 -197
  340. package/src/components/domain/browser/BrowserLoadErrorView/BrowserLoadErrorViewSource.test.mjs +0 -29
  341. package/src/components/domain/browser/BrowserLoadErrorView/index.tsx +0 -45
  342. package/src/components/domain/browser/BrowserMoreMenuView/BrowserMoreMenuView.stories.tsx +0 -66
  343. package/src/components/domain/browser/BrowserMoreMenuView/index.tsx +0 -268
  344. package/src/components/domain/browser/BrowserNavBarView/BrowserNavBarView.stories.tsx +0 -149
  345. package/src/components/domain/browser/BrowserNavBarView/index.tsx +0 -156
  346. package/src/components/domain/browser/BrowserTabBarView/index.tsx +0 -18
  347. package/src/components/domain/browser/SubAgentPane/SubAgentPane.stories.tsx +0 -96
  348. package/src/components/domain/browser/SubAgentPane/SubAgentPaneSource.test.mjs +0 -48
  349. package/src/components/domain/browser/SubAgentPane/index.tsx +0 -121
  350. package/src/components/domain/browser/TerminalPane/TerminalPane.stories.tsx +0 -95
  351. package/src/components/domain/browser/TerminalPane/TerminalPaneSource.test.mjs +0 -52
  352. package/src/components/domain/browser/TerminalPane/index.tsx +0 -75
  353. package/src/components/domain/browser/WebPreview/WebPreview.stories.tsx +0 -71
  354. package/src/components/domain/browser/WebPreview/index.tsx +0 -141
  355. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsole.stories.tsx +0 -61
  356. package/src/components/domain/browser/WebPreviewConsole/WebPreviewConsoleSource.test.mjs +0 -66
  357. package/src/components/domain/browser/WebPreviewConsole/index.tsx +0 -239
  358. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialog.stories.tsx +0 -288
  359. package/src/components/domain/browser/WebPreviewDialog/WebPreviewDialogSource.test.mjs +0 -62
  360. package/src/components/domain/browser/WebPreviewDialog/index.tsx +0 -82
  361. package/src/components/domain/browser/WebPreviewNav/WebPreviewNav.stories.tsx +0 -462
  362. package/src/components/domain/browser/WebPreviewNav/WebPreviewNavSource.test.mjs +0 -353
  363. package/src/components/domain/browser/WebPreviewNav/index.tsx +0 -351
  364. package/src/components/domain/browser/WebPreviewShell/WebPreviewShell.stories.tsx +0 -226
  365. package/src/components/domain/browser/WebPreviewShell/WebPreviewShellSource.test.mjs +0 -172
  366. package/src/components/domain/browser/WebPreviewShell/index.tsx +0 -324
  367. package/src/components/domain/browser/index.ts +0 -45
  368. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegment.stories.tsx +0 -107
  369. package/src/components/domain/chat/AgentLoopSegment/AgentLoopSegmentSource.test.mjs +0 -45
  370. package/src/components/domain/chat/AgentLoopSegment/index.tsx +0 -29
  371. package/src/components/domain/chat/AgentTurn/AgentTurn.stories.tsx +0 -162
  372. package/src/components/domain/chat/AgentTurn/AgentTurnSource.test.mjs +0 -98
  373. package/src/components/domain/chat/AgentTurn/beaconContext.ts +0 -37
  374. package/src/components/domain/chat/AgentTurn/index.tsx +0 -226
  375. package/src/components/domain/chat/ArtifactCard/ArtifactCard.stories.tsx +0 -127
  376. package/src/components/domain/chat/ArtifactCard/index.tsx +0 -249
  377. package/src/components/domain/chat/Attachment/Attachment.stories.tsx +0 -235
  378. package/src/components/domain/chat/Attachment/AttachmentSource.test.mjs +0 -160
  379. package/src/components/domain/chat/Attachment/index.tsx +0 -857
  380. package/src/components/domain/chat/AuthorizationCard/AuthorizationCard.stories.tsx +0 -53
  381. package/src/components/domain/chat/AuthorizationCard/AuthorizationCardSource.test.mjs +0 -80
  382. package/src/components/domain/chat/AuthorizationCard/index.tsx +0 -89
  383. package/src/components/domain/chat/ChatBubble/ChatBubble.stories.tsx +0 -32
  384. package/src/components/domain/chat/ChatBubble/index.tsx +0 -24
  385. package/src/components/domain/chat/ChatMessage/ChatMessage.stories.tsx +0 -31
  386. package/src/components/domain/chat/ChatMessage/index.tsx +0 -23
  387. package/src/components/domain/chat/ChatR2ReviewSource.test.mjs +0 -98
  388. package/src/components/domain/chat/ChatThinking/ChatThinking.stories.tsx +0 -125
  389. package/src/components/domain/chat/ChatThinking/index.tsx +0 -55
  390. package/src/components/domain/chat/Chatbot/Chatbot.stories.tsx +0 -49
  391. package/src/components/domain/chat/Chatbot/index.tsx +0 -37
  392. package/src/components/domain/chat/Composer/Composer.stories.tsx +0 -227
  393. package/src/components/domain/chat/Composer/ComposerSource.test.mjs +0 -175
  394. package/src/components/domain/chat/Composer/index.tsx +0 -450
  395. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.stories.tsx +0 -203
  396. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrum.tsx +0 -110
  397. package/src/components/domain/chat/Composer/parts/ComposerAudioSpectrumSource.test.mjs +0 -54
  398. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.stories.tsx +0 -155
  399. package/src/components/domain/chat/Composer/parts/ComposerAuthorization.tsx +0 -108
  400. package/src/components/domain/chat/Composer/parts/ComposerMentions.stories.tsx +0 -76
  401. package/src/components/domain/chat/Composer/parts/ComposerMentions.tsx +0 -83
  402. package/src/components/domain/chat/Composer/parts/ComposerMentionsSource.test.mjs +0 -85
  403. package/src/components/domain/chat/Composer/parts/ComposerMenu.stories.tsx +0 -266
  404. package/src/components/domain/chat/Composer/parts/ComposerMenu.tsx +0 -232
  405. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.stories.tsx +0 -166
  406. package/src/components/domain/chat/Composer/parts/ComposerMenuPopover.tsx +0 -87
  407. package/src/components/domain/chat/Composer/parts/ComposerMenuPopoverSource.test.mjs +0 -56
  408. package/src/components/domain/chat/Composer/parts/ComposerPopover.stories.tsx +0 -257
  409. package/src/components/domain/chat/Composer/parts/ComposerPopover.tsx +0 -221
  410. package/src/components/domain/chat/Composer/parts/ComposerPopoverSource.test.mjs +0 -71
  411. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.stories.tsx +0 -260
  412. package/src/components/domain/chat/Composer/parts/ComposerProjectPicker.tsx +0 -246
  413. package/src/components/domain/chat/Composer/parts/ComposerProjectPickerSource.test.mjs +0 -46
  414. package/src/components/domain/chat/Composer/parts/ComposerQueue.stories.tsx +0 -275
  415. package/src/components/domain/chat/Composer/parts/ComposerQueue.tsx +0 -155
  416. package/src/components/domain/chat/Composer/parts/ComposerQueueSource.test.mjs +0 -95
  417. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.stories.tsx +0 -77
  418. package/src/components/domain/chat/Composer/parts/ComposerVoiceInput.tsx +0 -70
  419. package/src/components/domain/chat/Composer/parts/mountChip.ts +0 -21
  420. package/src/components/domain/chat/ContextUsage/ContextUsage.stories.tsx +0 -62
  421. package/src/components/domain/chat/ContextUsage/index.tsx +0 -69
  422. package/src/components/domain/chat/ExecutionSummary/ExecutionSummary.stories.tsx +0 -238
  423. package/src/components/domain/chat/ExecutionSummary/ExecutionSummarySource.test.mjs +0 -210
  424. package/src/components/domain/chat/ExecutionSummary/index.tsx +0 -487
  425. package/src/components/domain/chat/Message/Message.stories.tsx +0 -264
  426. package/src/components/domain/chat/Message/index.tsx +0 -44
  427. package/src/components/domain/chat/MessageActions/MessageActions.stories.tsx +0 -132
  428. package/src/components/domain/chat/MessageActions/MessageActionsSource.test.mjs +0 -79
  429. package/src/components/domain/chat/MessageActions/index.tsx +0 -186
  430. package/src/components/domain/chat/PlanCard/PlanCard.stories.tsx +0 -87
  431. package/src/components/domain/chat/PlanCard/index.tsx +0 -170
  432. package/src/components/domain/chat/RichContent/RichContent.stories.tsx +0 -102
  433. package/src/components/domain/chat/RichContent/RichContentSource.test.mjs +0 -82
  434. package/src/components/domain/chat/RichContent/index.tsx +0 -465
  435. package/src/components/domain/chat/SubAgentThread/SubAgentThread.stories.tsx +0 -119
  436. package/src/components/domain/chat/SubAgentThread/index.tsx +0 -104
  437. package/src/components/domain/chat/Thinking/Thinking.stories.tsx +0 -196
  438. package/src/components/domain/chat/Thinking/ThinkingInlineSource.test.mjs +0 -154
  439. package/src/components/domain/chat/Thinking/index.tsx +0 -237
  440. package/src/components/domain/chat/ToolCallRow/ToolCallRow.stories.tsx +0 -105
  441. package/src/components/domain/chat/ToolCallRow/ToolCallRowSource.test.mjs +0 -83
  442. package/src/components/domain/chat/ToolCallRow/index.tsx +0 -113
  443. package/src/components/domain/chat/Transcript/Transcript.stories.tsx +0 -296
  444. package/src/components/domain/chat/Transcript/TranscriptSource.test.mjs +0 -189
  445. package/src/components/domain/chat/Transcript/index.tsx +0 -187
  446. package/src/components/domain/chat/TranscriptSpine/TranscriptSpine.stories.tsx +0 -124
  447. package/src/components/domain/chat/TranscriptSpine/index.tsx +0 -245
  448. package/src/components/domain/chat/UserTurn/UserTurn.stories.tsx +0 -176
  449. package/src/components/domain/chat/UserTurn/UserTurnSource.test.mjs +0 -150
  450. package/src/components/domain/chat/UserTurn/index.tsx +0 -194
  451. package/src/components/domain/chat/index.ts +0 -22
  452. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuView.stories.tsx +0 -116
  453. package/src/components/domain/desktop/DesktopAccountMenuView/DesktopAccountMenuViewSource.test.mjs +0 -80
  454. package/src/components/domain/desktop/DesktopAccountMenuView/index.tsx +0 -355
  455. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettings.stories.tsx +0 -96
  456. package/src/components/domain/desktop/DesktopAppearanceSettings/DesktopAppearanceSettingsSource.test.mjs +0 -89
  457. package/src/components/domain/desktop/DesktopAppearanceSettings/index.tsx +0 -155
  458. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigView.stories.tsx +0 -275
  459. package/src/components/domain/desktop/DesktopAssistantConfigView/DesktopAssistantConfigViewSource.test.mjs +0 -37
  460. package/src/components/domain/desktop/DesktopAssistantConfigView/index.tsx +0 -221
  461. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogView.stories.tsx +0 -537
  462. package/src/components/domain/desktop/DesktopCatalogView/DesktopCatalogViewSource.test.mjs +0 -339
  463. package/src/components/domain/desktop/DesktopCatalogView/index.tsx +0 -1074
  464. package/src/components/domain/desktop/DesktopChatBranchDivider/DesktopChatBranchDivider.stories.tsx +0 -58
  465. package/src/components/domain/desktop/DesktopChatBranchDivider/index.tsx +0 -33
  466. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateView.stories.tsx +0 -75
  467. package/src/components/domain/desktop/DesktopChatEmptyStateView/DesktopChatEmptyStateViewSource.test.mjs +0 -54
  468. package/src/components/domain/desktop/DesktopChatEmptyStateView/index.tsx +0 -64
  469. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderView.stories.tsx +0 -83
  470. package/src/components/domain/desktop/DesktopChatHeaderView/DesktopChatHeaderViewSource.test.mjs +0 -126
  471. package/src/components/domain/desktop/DesktopChatHeaderView/index.tsx +0 -169
  472. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageView.stories.tsx +0 -170
  473. package/src/components/domain/desktop/DesktopChatMessageView/DesktopChatMessageViewSource.test.mjs +0 -47
  474. package/src/components/domain/desktop/DesktopChatMessageView/index.tsx +0 -213
  475. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnView.stories.tsx +0 -498
  476. package/src/components/domain/desktop/DesktopChatTurnView/DesktopChatTurnViewSource.test.mjs +0 -187
  477. package/src/components/domain/desktop/DesktopChatTurnView/index.tsx +0 -490
  478. package/src/components/domain/desktop/DesktopComposer/DesktopComposer.stories.tsx +0 -195
  479. package/src/components/domain/desktop/DesktopComposer/DesktopComposerModelPickerSource.test.mjs +0 -132
  480. package/src/components/domain/desktop/DesktopComposer/DesktopComposerMountChipSource.test.mjs +0 -43
  481. package/src/components/domain/desktop/DesktopComposer/DesktopComposerResponsiveSource.test.mjs +0 -44
  482. package/src/components/domain/desktop/DesktopComposer/DesktopMcpFormThemeSource.test.mjs +0 -30
  483. package/src/components/domain/desktop/DesktopComposer/index.tsx +0 -206
  484. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailView.stories.tsx +0 -72
  485. package/src/components/domain/desktop/DesktopConnectorDetailView/DesktopConnectorDetailViewSource.test.mjs +0 -81
  486. package/src/components/domain/desktop/DesktopConnectorDetailView/index.tsx +0 -301
  487. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeView.stories.tsx +0 -103
  488. package/src/components/domain/desktop/DesktopHomeView/DesktopHomeViewSource.test.mjs +0 -51
  489. package/src/components/domain/desktop/DesktopHomeView/index.tsx +0 -122
  490. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/DesktopLibraryAuthorizationDialog.stories.tsx +0 -55
  491. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -156
  492. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -42
  493. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -35
  494. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  495. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  496. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -149
  497. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -418
  498. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  499. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  500. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  501. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  502. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  503. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  504. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  505. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  506. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  507. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  508. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  509. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  510. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  511. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  512. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  513. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  514. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  515. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  516. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  517. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  518. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  519. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  520. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  521. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  522. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  523. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  524. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -386
  525. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1075
  526. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  527. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  528. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  529. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  530. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  531. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  532. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  533. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  534. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  535. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  536. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  537. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  538. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  539. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  540. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  541. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  542. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  543. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  544. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  545. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  546. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  547. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  548. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  549. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  550. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  551. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  552. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  553. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  554. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  555. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  556. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  557. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  558. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  559. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  560. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  561. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  562. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  563. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  564. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  565. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  566. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  567. package/src/components/domain/desktop/index.ts +0 -64
  568. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  569. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  570. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  571. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  572. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  573. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  574. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  575. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  576. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  577. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  578. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  579. package/src/components/domain/files/FileTree/index.tsx +0 -106
  580. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  581. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  582. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  583. package/src/components/domain/files/index.ts +0 -5
  584. package/src/components/domain/index.ts +0 -8
  585. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  586. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  587. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  588. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  589. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  590. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  591. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  592. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  593. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  594. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  595. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  596. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  597. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  598. package/src/components/domain/office/index.ts +0 -5
  599. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  600. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  601. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  602. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  603. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  604. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  605. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  606. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  607. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  608. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  609. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  610. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  611. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  612. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  613. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  614. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  615. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  616. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  617. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  618. package/src/components/domain/skills/index.ts +0 -7
  619. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  620. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  621. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  622. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  623. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  624. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  625. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  626. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  627. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  628. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  629. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  630. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  631. package/src/components/domain/tasks/index.ts +0 -4
  632. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  633. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  634. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  635. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  636. package/src/components/index.ts +0 -11
  637. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  638. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  639. package/src/components/primitives/Avatar/index.tsx +0 -180
  640. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  641. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  642. package/src/components/primitives/BackTop/index.tsx +0 -93
  643. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  644. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  645. package/src/components/primitives/Badge/index.tsx +0 -65
  646. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  647. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  648. package/src/components/primitives/Button/index.tsx +0 -216
  649. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  650. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  651. package/src/components/primitives/Card/index.tsx +0 -137
  652. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  653. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  654. package/src/components/primitives/Checkbox/index.tsx +0 -87
  655. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  656. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  657. package/src/components/primitives/Chip/index.tsx +0 -252
  658. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  659. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  660. package/src/components/primitives/Divider/index.tsx +0 -65
  661. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  662. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  663. package/src/components/primitives/Dropdown/index.tsx +0 -29
  664. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  665. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  666. package/src/components/primitives/EmptyState/index.tsx +0 -185
  667. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  668. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  669. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  670. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  671. package/src/components/primitives/Field/index.tsx +0 -297
  672. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  673. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  674. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  675. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  676. package/src/components/primitives/Input/index.tsx +0 -12
  677. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  678. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  679. package/src/components/primitives/Keycap/index.tsx +0 -67
  680. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  681. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  682. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  683. package/src/components/primitives/Menu/index.tsx +0 -922
  684. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  685. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  686. package/src/components/primitives/Pagination/index.tsx +0 -85
  687. package/src/components/primitives/Pagination/pagination.ts +0 -25
  688. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  689. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  690. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  691. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  692. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  693. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  694. package/src/components/primitives/Radio/index.tsx +0 -161
  695. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  696. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  697. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  698. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  699. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  700. package/src/components/primitives/Select/index.tsx +0 -364
  701. package/src/components/primitives/Spinner/index.tsx +0 -58
  702. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  703. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  704. package/src/components/primitives/Switch/index.tsx +0 -84
  705. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  706. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  707. package/src/components/primitives/Tabs/index.tsx +0 -183
  708. package/src/components/primitives/index.ts +0 -24
  709. package/src/examples/ResourceManagementExample.tsx +0 -119
  710. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  711. package/src/hooks/index.ts +0 -7
  712. package/src/hooks/useClickOutside.ts +0 -20
  713. package/src/hooks/useDragReorder.ts +0 -29
  714. package/src/hooks/useImeAwareEnter.ts +0 -59
  715. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  716. package/src/hooks/useKeyboard.ts +0 -16
  717. package/src/hooks/usePopover.ts +0 -67
  718. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  719. package/src/hooks/useSidebarResize.ts +0 -107
  720. package/src/hooks/useTenantTheme.ts +0 -53
  721. package/src/hooks/useUnifiedTheme.ts +0 -85
  722. package/src/index.ts +0 -6
  723. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  724. package/src/lib/about-window.test.mjs +0 -46
  725. package/src/lib/about-window.ts +0 -218
  726. package/src/lib/appearance.test.mjs +0 -283
  727. package/src/lib/appearance.ts +0 -46
  728. package/src/lib/browser-annotation-popup.ts +0 -151
  729. package/src/lib/focusTrap.ts +0 -51
  730. package/src/lib/index.ts +0 -5
  731. package/src/lib/shortcut.test.mjs +0 -100
  732. package/src/lib/shortcut.ts +0 -97
  733. package/src/lib/twMergeOw.ts +0 -18
  734. package/src/lib/utils.ts +0 -6
  735. package/src/screens/Browser.stories.tsx +0 -353
  736. package/src/screens/Chat.stories.tsx +0 -808
  737. package/src/screens/Home.stories.tsx +0 -253
  738. package/src/screens/Login.stories.tsx +0 -134
  739. package/src/screens/McpManager.stories.tsx +0 -159
  740. package/src/screens/Onboarding.stories.tsx +0 -155
  741. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  742. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  743. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  744. package/src/screens/SettingsMemory.stories.tsx +0 -128
  745. package/src/screens/SettingsModels.stories.tsx +0 -228
  746. package/src/screens/SettingsSections.stories.tsx +0 -164
  747. package/src/screens/Share.stories.tsx +0 -202
  748. package/src/screens/SharePage.stories.tsx +0 -29
  749. package/src/screens/Sites.stories.tsx +0 -183
  750. package/src/screens/Skills.stories.tsx +0 -83
  751. package/src/screens/Workspace.stories.tsx +0 -191
  752. package/src/screens/_home.tsx +0 -46
  753. package/src/screens/_screen.tsx +0 -355
  754. package/src/screens/_settingsNav.ts +0 -27
  755. package/src/screens/_skillsCatalog.tsx +0 -372
  756. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  757. package/src/theme/__tests__/skins.test.mjs +0 -84
  758. package/src/theme/core/semanticAdapter.ts +0 -116
  759. package/src/theme/core/skin.ts +0 -605
  760. package/src/theme/core/skinScoped.ts +0 -289
  761. package/src/theme/core/tenantTheme.test.mjs +0 -127
  762. package/src/theme/core/tenantTheme.ts +0 -124
  763. package/src/theme/core/types.ts +0 -60
  764. package/src/theme/core/unifiedTheme.ts +0 -157
  765. package/src/theme/index.ts +0 -33
  766. package/src/theme/providers/BrandingProvider.tsx +0 -57
  767. package/src/theme/providers/ThemeProvider.tsx +0 -221
  768. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  769. package/src/theme/skins/index.ts +0 -107
  770. package/src/theme/utils/cssSafety.ts +0 -92
  771. package/src/theme/utils/skinManager.ts +0 -159
  772. package/src/theme/utils/themeApplier.ts +0 -75
  773. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  774. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  775. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  776. package/src/tokens/base.ts +0 -199
  777. package/src/tokens/dark.ts +0 -288
  778. package/src/tokens/index.ts +0 -4
  779. package/src/tokens/light.ts +0 -320
  780. package/src/tokens/tailwind.ts +0 -216
  781. package/src/types/desktop-pet.ts +0 -100
  782. package/src/types/file-browser.ts +0 -51
  783. package/src/types/file-tree.ts +0 -34
  784. package/src/types/index.ts +0 -3
  785. package/src/types/xspreadsheet.d.ts +0 -4
  786. package/src/utils/cn.ts +0 -6
  787. package/src/utils/glyphColor.ts +0 -32
  788. package/src/utils/index.ts +0 -4
  789. package/src/utils/localPathInline.test.mjs +0 -45
  790. package/src/utils/localPathInline.ts +0 -49
  791. package/src/utils/markdownFileRefs.test.mjs +0 -88
  792. package/src/utils/markdownFileRefs.ts +0 -140
  793. package/src/utils/office-excel.ts +0 -452
  794. package/src/utils/shiki.ts +0 -156
@@ -1,605 +0,0 @@
1
- /**
2
- * Orbitwork skin protocol — aligned with Design project architecture.
3
- * A skin is a validated JSON document that overrides --ow-* CSS variables
4
- * at runtime. This module is framework-agnostic.
5
- */
6
-
7
- export type Theme = "light" | "dark" | "system"
8
- export type ResolvedTheme = "light" | "dark"
9
-
10
- /**
11
- * DS2 皮肤白名单(COMPONENT-RULES §15 · 2026-08-31 裁决):
12
- * - 可覆盖:中性表面/边框/文字梯度、chat/composer/sidebar 背景类、
13
- * btn-primary 族(唯一开放的租户品牌色位)。
14
- * - 已移除(禁覆盖):primary 族(--ow-primary 暗档=荧黄行动极)、link、
15
- * switchActive(--ow-control-on 无彩选中)、功能色四族、cardRadius/buttonRadius
16
- * (圆角是品牌定稿)。
17
- */
18
- export type OrbitworkSkinTokens = {
19
- backgroundPrimary?: string
20
- backgroundSecondary?: string
21
- backgroundTertiary?: string
22
- backgroundPanel?: string
23
- foregroundPrimary?: string
24
- foregroundSecondary?: string
25
- foregroundMuted?: string
26
- foregroundHint?: string
27
- borderSubtle?: string
28
- borderDefault?: string
29
- borderStrong?: string
30
- buttonPrimaryBackground?: string
31
- buttonPrimaryForeground?: string
32
- chatBackground?: string
33
- chatBackgroundImage?: string
34
- chatBackgroundOverlay?: string
35
- chatBackgroundMaskColor?: string
36
- chatBackgroundPosition?:
37
- | "center"
38
- | "top"
39
- | "bottom"
40
- | "left"
41
- | "right"
42
- | "top left"
43
- | "top right"
44
- | "bottom left"
45
- | "bottom right"
46
- chatBackgroundSize?: "cover" | "contain" | "auto"
47
- userBubbleBackground?: string
48
- userBubbleForeground?: string
49
- userBubbleBorder?: string
50
- composerBackground?: string
51
- composerBorder?: string
52
- sidebarBackground?: string
53
- sidebarSelectedBackground?: string
54
- }
55
-
56
- /** L2/L3 逃生通道登记项:每条高级样式须登记目标与用途(§15,长期目标清零)。 */
57
- export type OrbitworkSkinRegistryEntry = {
58
- target: string
59
- reason: string
60
- }
61
-
62
- export type OrbitworkSkin = {
63
- version: 1
64
- id: string
65
- name: string
66
- description?: string
67
- /**
68
- * @deprecated DS2 §15:圆角是品牌定稿,皮肤不再开放 cardRadius/buttonRadius。
69
- * 字段仅为旧代码类型兼容保留(空对象),解析路径一律拒绝 common。
70
- */
71
- common?: Record<string, never>
72
- modes: {
73
- light?: OrbitworkSkinTokens
74
- dark?: OrbitworkSkinTokens
75
- }
76
- contributes?: {
77
- /** L2: 语义选择器样式(精准定制组件部件) */
78
- semanticStyles?: string
79
- /** L3: 自由补丁(高级用户,需谨慎使用) */
80
- patches?: string
81
- /** L2/L3 登记表:存在 semanticStyles/patches 时必须逐条登记(validate-skin 强制) */
82
- registry?: OrbitworkSkinRegistryEntry[]
83
- }
84
- }
85
-
86
- export type SkinValidationResult = { ok: true; skin: OrbitworkSkin } | { ok: false; error: string }
87
-
88
- const COLOR_KEYS = [
89
- "backgroundPrimary",
90
- "backgroundSecondary",
91
- "backgroundTertiary",
92
- "backgroundPanel",
93
- "foregroundPrimary",
94
- "foregroundSecondary",
95
- "foregroundMuted",
96
- "foregroundHint",
97
- "borderSubtle",
98
- "borderDefault",
99
- "borderStrong",
100
- "buttonPrimaryBackground",
101
- "buttonPrimaryForeground",
102
- "chatBackground",
103
- "chatBackgroundOverlay",
104
- "userBubbleBackground",
105
- "userBubbleForeground",
106
- "userBubbleBorder",
107
- "composerBackground",
108
- "composerBorder",
109
- "sidebarBackground",
110
- "sidebarSelectedBackground",
111
- ] as const
112
- const IMAGE_KEYS = ["chatBackgroundImage"] as const
113
- const MASK_COLOR_KEYS = ["chatBackgroundMaskColor"] as const
114
- const POSITION_KEYS = ["chatBackgroundPosition"] as const
115
- const SIZE_KEYS = ["chatBackgroundSize"] as const
116
- const TOKEN_KEYS = [...COLOR_KEYS, ...MASK_COLOR_KEYS, ...IMAGE_KEYS, ...POSITION_KEYS, ...SIZE_KEYS] as const
117
- const ROOT_KEYS = new Set(["version", "id", "name", "description", "modes", "contributes"])
118
- const MODE_KEYS = new Set(["light", "dark"])
119
- const TOKEN_KEY_SET = new Set<string>(TOKEN_KEYS)
120
- const CONTRIBUTES_KEYS = new Set(["semanticStyles", "patches", "registry"])
121
- const REGISTRY_ENTRY_KEYS = new Set(["target", "reason"])
122
- export const HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i
123
- const MASK_HEX_COLOR = /^#[0-9a-f]{6}(?:[0-9a-f]{2})?$/i
124
- const DATA_IMAGE = /^data:image\/(png|jpeg|webp);base64,([A-Za-z0-9+/]+={0,2})$/
125
- const BACKGROUND_POSITIONS = new Set([
126
- "center",
127
- "top",
128
- "bottom",
129
- "left",
130
- "right",
131
- "top left",
132
- "top right",
133
- "bottom left",
134
- "bottom right",
135
- ])
136
- const BACKGROUND_SIZES = new Set(["cover", "contain", "auto"])
137
- export const MAX_ORBITWORK_SKIN_IMAGE_BYTES = 5 * 1024 * 1024
138
- const INLINE_SKIN_IMAGE_MAX_BYTES = 128 * 1024
139
- const CHAT_BACKGROUND_MASK_DERIVED_PROPERTIES = [
140
- "--ow-chat-bg-mask-start-opacity",
141
- "--ow-chat-bg-mask-end-opacity",
142
- ] as const
143
-
144
- export type OrbitworkSkinChatBackgroundMask = {
145
- color: string
146
- strength: number
147
- startOpacity: number
148
- endOpacity: number
149
- }
150
-
151
- /** Six-digit colors retain the original 80% → 50% mask; explicit alpha controls final strength. */
152
- export function resolveOrbitworkSkinChatBackgroundMask(value: string): OrbitworkSkinChatBackgroundMask {
153
- const normalized = MASK_HEX_COLOR.test(value) ? value.toLowerCase() : "#000000"
154
- const strength = normalized.length === 9 ? Math.round((Number.parseInt(normalized.slice(7), 16) / 255) * 100) : 80
155
- const startOpacity = strength
156
- const endOpacity = strength <= 80 ? strength * 0.625 : 50 + (strength - 80) * 2.5
157
- return { color: normalized.slice(0, 7), strength, startOpacity, endOpacity }
158
- }
159
-
160
- export function orbitworkSkinChatBackgroundMaskColor(color: string, strength: number): string {
161
- const normalizedColor = /^#[0-9a-f]{6}$/i.test(color) ? color.toLowerCase() : "#000000"
162
- const alpha = Math.round((Math.min(100, Math.max(0, strength)) / 100) * 255)
163
- return `${normalizedColor}${alpha.toString(16).padStart(2, "0")}`
164
- }
165
-
166
- export const ORBITWORK_SKIN_CSS_VARIABLES: Readonly<Record<keyof OrbitworkSkinTokens, string>> = {
167
- backgroundPrimary: "--ow-bg",
168
- backgroundSecondary: "--ow-surface",
169
- backgroundTertiary: "--ow-surface-2",
170
- backgroundPanel: "--ow-bg",
171
- foregroundPrimary: "--ow-text",
172
- foregroundSecondary: "--ow-text-2",
173
- foregroundMuted: "--ow-text-3",
174
- // 2.0 文字梯度只有三档,hint 与 muted 同落 text-3
175
- foregroundHint: "--ow-text-3",
176
- borderSubtle: "--ow-border",
177
- // 2.0 边框只有两档,subtle 与 default 同落 border
178
- borderDefault: "--ow-border",
179
- borderStrong: "--ow-border-strong",
180
- buttonPrimaryBackground: "--ow-btn-primary-bg",
181
- buttonPrimaryForeground: "--ow-btn-primary-fg",
182
- chatBackground: "--ow-chat-bg",
183
- chatBackgroundImage: "--ow-chat-bg-image",
184
- chatBackgroundOverlay: "--ow-chat-bg-overlay",
185
- chatBackgroundMaskColor: "--ow-chat-bg-mask-color",
186
- chatBackgroundPosition: "--ow-chat-bg-position",
187
- chatBackgroundSize: "--ow-chat-bg-size",
188
- // 三件用户气泡钩子由 domain/chat/UserTurn 消费;未覆盖时兜底 DS2 井色配方
189
- // (bg=--ow-bubble-user / fg=--ow-text / border=--ow-border),不再兜底透明。
190
- userBubbleBackground: "--ow-chat-user-bubble-bg",
191
- userBubbleForeground: "--ow-chat-user-bubble-fg",
192
- userBubbleBorder: "--ow-chat-user-bubble-border",
193
- composerBackground: "--ow-composer-bg",
194
- composerBorder: "--ow-composer-border",
195
- sidebarBackground: "--ow-sidebar-bg",
196
- sidebarSelectedBackground: "--ow-sidebar-selected-bg",
197
- }
198
-
199
- /**
200
- * DS2 皮肤禁覆盖清单(COMPONENT-RULES §15 · 2026-08-31 裁决)。
201
- * 条目以 `*` 结尾表示前缀匹配;其余为精确名(含其 `-` 后缀派生,如
202
- * `--ow-control-on` 同时覆盖 `--ow-control-on-glyph`)。
203
- *
204
- * ⚠️ 同步义务:.claude/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 持有
205
- * 本清单的副本,两处必须同步修改。
206
- */
207
- export const DS2_SKIN_DENYLIST = [
208
- // 三极 token
209
- "--ow-beacon",
210
- "--ow-beacon-idle",
211
- "--ow-accent-dot",
212
- "--ow-data-today",
213
- // 行动极族(租户品牌色只经 btn-primary 族开放,--ow-primary 落点不可写)
214
- "--ow-primary*",
215
- // 无彩选中原则
216
- "--ow-control-on",
217
- // focus-ring
218
- "--ow-focus-ring",
219
- // 功能色四族全档
220
- "--ow-info*",
221
- "--ow-success*",
222
- "--ow-warning*",
223
- "--ow-error*",
224
- // 功能色别名:--ow-mention-bg/-text 直挂 --ow-info-tint/-on-tint,
225
- // 不封别名等于给 L2/L3 皮肤留了一道绕开功能色禁覆盖的后门。
226
- "--ow-mention*",
227
- // 恒定域
228
- "--ow-paper",
229
- "--ow-stage-*",
230
- "--ow-term-*",
231
- "--ow-ansi-*",
232
- // 圆角(形状表是品牌定稿)
233
- "--ow-radius-*",
234
- ] as const
235
-
236
- /**
237
- * DS2 皮肤禁覆盖 **CSS 属性** 清单(COMPONENT-RULES §5/§7/§9 · W5 终扫补闸)。
238
- *
239
- * 背景:`DS2_SKIN_DENYLIST` 是 token 名维度的闸,只认 `--ow-*`。L2/L3 的
240
- * semanticStyles / patches 里裸写的 `box-shadow: 0 0 20px …`、`border-radius: 18px`、
241
- * `transform: translateY(-2px)`、`animation: neon-pulse 2s infinite` 完全绕开它——
242
- * 而这四类恰恰是 2.0 明令收口的三层:贴地零影(§5)、形状表定稿(§7)、
243
- * 唯一动效语汇=信标(§9)。故对属性维度另立一闸:命中即整块剥除。
244
- *
245
- * 条目为属性名前缀(连字符边界):`border-radius` 同时覆盖
246
- * `border-top-left-radius` 等长写;`transition` 覆盖 `transition-property` 等。
247
- *
248
- * ⚠️ 同步义务:.claude/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 持有本清单副本。
249
- */
250
- export const DS2_SKIN_DENIED_PROPERTIES = [
251
- "border-radius",
252
- "border-top-left-radius",
253
- "border-top-right-radius",
254
- "border-bottom-left-radius",
255
- "border-bottom-right-radius",
256
- "box-shadow",
257
- "transform",
258
- "animation",
259
- "transition",
260
- "backdrop-filter",
261
- "-webkit-backdrop-filter",
262
- ] as const
263
-
264
- /**
265
- * 判断某个 CSS 属性名是否命中属性维度禁覆盖清单。
266
- * 只按连字符边界做前缀匹配,避免 `animation` 误伤自定义属性 `--animation-x`
267
- * (自定义属性由 token 维度那一闸单独管)。
268
- */
269
- export function isDs2SkinDeniedProperty(propertyName: string): boolean {
270
- const name = propertyName.trim().toLowerCase()
271
- if (name.startsWith("--")) return false
272
- return DS2_SKIN_DENIED_PROPERTIES.some((entry) => name === entry || name.startsWith(`${entry}-`))
273
- }
274
-
275
- /**
276
- * 在一段 CSS 文本里找出第一处命中属性维度禁覆盖清单的声明。
277
- * 只在「声明位置」匹配(块首/`;`/`{` 之后的标识符 + `:`),选择器与值里的同名词不算。
278
- */
279
- export function findDs2DeniedCssProperty(css: string): string | null {
280
- const declaration = /(?:^|[{;])\s*(-{0,2}[a-z][a-z0-9-]*)\s*:/gi
281
- let match: RegExpExecArray | null = declaration.exec(css)
282
- while (match) {
283
- const property = match[1] ?? ""
284
- if (isDs2SkinDeniedProperty(property)) return property.toLowerCase()
285
- match = declaration.exec(css)
286
- }
287
- return null
288
- }
289
-
290
- /**
291
- * 值维度禁覆盖(DS2 判据 7「品牌外渐变一律清除」)。
292
- *
293
- * ⚠️ 同步义务:与 .claude|.agents/skills/ui-theme-skin/scripts/check-skin-ds2.mjs 的
294
- * DENIED_VALUE_PATTERNS 为同一清单的副本(见 SkinDenylistSyncSource.test.mjs)。
295
- *
296
- * 为什么不是往 DS2_SKIN_DENIED_PROPERTIES 里加 `background`:皮肤本来就该能改底色,
297
- * 按属性名封会把整类合法覆盖一起封掉。要拦的是**值的形态**——任何 *-gradient()。
298
- * R2 之前这一层完全没有:glass.ts 的 `body { background: linear-gradient(135deg,
299
- * rgba(59,130,246,.1), rgba(139,92,246,.1)) }`(V1 蓝紫)是整份皮肤里唯二穿过闸口的
300
- * 块之一;cyberpunk.ts 的 `userBubbleBackground: "linear-gradient(135deg,#E91E63,#9C27B0)"`
301
- * 更是走 mode token 直接落到用户气泡上——两条路都得拦。
302
- */
303
- export const DS2_SKIN_DENIED_VALUE_PATTERNS = ["-gradient("] as const
304
-
305
- /** 判断某个 CSS 值是否命中值维度禁覆盖(渐变)。 */
306
- export function isDs2SkinDeniedValue(value: string): boolean {
307
- const v = value.toLowerCase()
308
- return DS2_SKIN_DENIED_VALUE_PATTERNS.some((entry) => v.includes(entry))
309
- }
310
-
311
- /**
312
- * 在一段 CSS 文本里找出第一处命中值维度禁覆盖的声明值。
313
- * 只看声明的**值**侧,选择器与注释里的同名词不算(调用方已剥注释)。
314
- */
315
- export function findDs2DeniedCssValue(css: string): string | null {
316
- const declaration = /(?:^|[{;])\s*-{0,2}[a-z][a-z0-9-]*\s*:([^;{}]*)/gi
317
- let match: RegExpExecArray | null = declaration.exec(css)
318
- while (match) {
319
- const value = match[1] ?? ""
320
- if (isDs2SkinDeniedValue(value)) {
321
- const hit = /[a-z-]*-gradient\(/i.exec(value)
322
- return hit ? hit[0].slice(0, -1) : "gradient"
323
- }
324
- match = declaration.exec(css)
325
- }
326
- return null
327
- }
328
-
329
- /** 锁定件 data-slot 选择器初始清单:L2/L3 内容命中即剥除(字符串匹配)。 */
330
- export const DS2_LOCKED_SLOT_SELECTORS = ["beacon-spinner", "orbitwork-mark", "orbitwork-lockup"] as const
331
-
332
- /** 判断某个 CSS 自定义属性名是否命中 DS2 禁覆盖清单。 */
333
- export function isDs2SkinDeniedToken(tokenName: string): boolean {
334
- const name = tokenName.trim()
335
- return DS2_SKIN_DENYLIST.some((entry) =>
336
- entry.endsWith("*") ? name.startsWith(entry.slice(0, -1)) : name === entry || name.startsWith(`${entry}-`),
337
- )
338
- }
339
-
340
- /** WCAG 2.x 相对亮度 → 对比度实算(输入为 3/4/6/8 位 hex;alpha 忽略,按不透明计算)。 */
341
- export function ds2ContrastRatio(hexA: string, hexB: string): number {
342
- const la = relativeLuminance(hexA)
343
- const lb = relativeLuminance(hexB)
344
- const lighter = Math.max(la, lb)
345
- const darker = Math.min(la, lb)
346
- return (lighter + 0.05) / (darker + 0.05)
347
- }
348
-
349
- function relativeLuminance(hex: string): number {
350
- const [r, g, b] = hexToRgb(hex)
351
- const toLinear = (channel: number) => {
352
- const c = channel / 255
353
- return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4
354
- }
355
- return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b)
356
- }
357
-
358
- function hexToRgb(hex: string): [number, number, number] {
359
- let value = hex.replace(/^#/, "")
360
- if (value.length === 3 || value.length === 4) {
361
- value = value
362
- .slice(0, 3)
363
- .split("")
364
- .map((c) => c + c)
365
- .join("")
366
- }
367
- return [
368
- Number.parseInt(value.slice(0, 2), 16),
369
- Number.parseInt(value.slice(2, 4), 16),
370
- Number.parseInt(value.slice(4, 6), 16),
371
- ]
372
- }
373
-
374
- /** 中性梯度整组闸:命中任一触发键即要求整组提交并过对比度实算。 */
375
- const NEUTRAL_TRIGGER_KEYS = [
376
- "backgroundPrimary",
377
- "backgroundSecondary",
378
- "backgroundTertiary",
379
- "backgroundPanel",
380
- "foregroundPrimary",
381
- "foregroundSecondary",
382
- "foregroundMuted",
383
- "foregroundHint",
384
- ] as const
385
- const NEUTRAL_REQUIRED_KEYS = [
386
- "backgroundPrimary",
387
- "backgroundSecondary",
388
- "backgroundTertiary",
389
- "foregroundPrimary",
390
- "foregroundSecondary",
391
- ] as const
392
- const NEUTRAL_CONTRAST_PAIRS: ReadonlyArray<readonly [keyof OrbitworkSkinTokens, keyof OrbitworkSkinTokens]> = [
393
- ["foregroundPrimary", "backgroundPrimary"],
394
- ["foregroundPrimary", "backgroundSecondary"],
395
- ["foregroundPrimary", "backgroundTertiary"],
396
- ["foregroundSecondary", "backgroundPrimary"],
397
- ["foregroundSecondary", "backgroundSecondary"],
398
- ]
399
- const MIN_NEUTRAL_CONTRAST = 4.5
400
-
401
- /** 闸 (a):覆盖项落点命中禁覆盖清单即拒绝(白名单收敛后属兜底防线)。 */
402
- function assertTokensNotDenied(tokens: OrbitworkSkinTokens, path: string): void {
403
- for (const [key, value] of Object.entries(tokens)) {
404
- const cssVar = ORBITWORK_SKIN_CSS_VARIABLES[key as keyof OrbitworkSkinTokens]
405
- if (cssVar && isDs2SkinDeniedToken(cssVar)) {
406
- throw new Error(`${path}.${key} 的落点 ${cssVar} 命中 DS2 禁覆盖清单,拒绝该皮肤`)
407
- }
408
- // 值维度:token 值本身是渐变时,属性闸与 token 闸都拦不住(落点名合法、属性名合法),
409
- // 直接落到气泡/侧栏底上——判据 7「品牌外渐变一律清除」在这里收口。
410
- // chatBackgroundImage 例外:它本来就是一张图/图案的落点,由 orbitwork-skin-image 单独校验。
411
- if (key !== "chatBackgroundImage" && typeof value === "string" && isDs2SkinDeniedValue(value)) {
412
- throw new Error(`${path}.${key} 的值是渐变(${value}),DS2 判据 7 品牌外渐变一律清除,拒绝该皮肤`)
413
- }
414
- }
415
- }
416
-
417
- /** 闸 (b):中性梯度整组提交 + WCAG 对比度实算(text-on-bg / text-on-surface ≥ 4.5:1)。 */
418
- function assertNeutralGroupContrast(tokens: OrbitworkSkinTokens, path: string): void {
419
- const touched = NEUTRAL_TRIGGER_KEYS.some((key) => tokens[key] !== undefined)
420
- if (!touched) return
421
- const missing = NEUTRAL_REQUIRED_KEYS.filter((key) => tokens[key] === undefined)
422
- if (missing.length > 0) {
423
- throw new Error(`${path} 中性梯度须整组提交(text 系与 bg/surface 系同批),缺少:${missing.join("、")}`)
424
- }
425
- for (const [textKey, bgKey] of NEUTRAL_CONTRAST_PAIRS) {
426
- const text = tokens[textKey]
427
- const bg = tokens[bgKey]
428
- if (!text || !bg) continue
429
- const ratio = ds2ContrastRatio(text, bg)
430
- if (ratio < MIN_NEUTRAL_CONTRAST) {
431
- throw new Error(
432
- `${path} 对比度不达标:${textKey}(${text}) 在 ${bgKey}(${bg}) 上为 ${ratio.toFixed(2)}:1,要求 ≥ ${MIN_NEUTRAL_CONTRAST}:1`,
433
- )
434
- }
435
- }
436
- }
437
-
438
- export function hasOrbitworkSkinChatBackground(skin: OrbitworkSkin | null | undefined, mode: ResolvedTheme): boolean {
439
- return Boolean(skin?.modes?.[mode]?.chatBackgroundImage)
440
- }
441
-
442
- export function parseOrbitworkSkin(input: unknown): SkinValidationResult {
443
- try {
444
- if (!isRecord(input)) throw new Error("主题必须是 JSON 对象")
445
- if ("common" in input)
446
- throw new Error("common(cardRadius/buttonRadius)已随 DS2 皮肤边界取消:圆角是品牌定稿,不开放自由值")
447
- assertKnownKeys(input, ROOT_KEYS, "主题")
448
- if (input.version !== 1) throw new Error("仅支持 version: 1")
449
- if (typeof input.id !== "string" || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(input.id) || input.id.length > 64)
450
- throw new Error("id 必须是最多 64 字符的小写短横线标识")
451
- if (typeof input.name !== "string" || !input.name.trim() || input.name.length > 48)
452
- throw new Error("name 必须是 1–48 个字符")
453
- if (input.description !== undefined && (typeof input.description !== "string" || input.description.length > 160))
454
- throw new Error("description 最多 160 个字符")
455
- if (!isRecord(input.modes)) throw new Error("modes 必须是对象")
456
- assertKnownKeys(input.modes, MODE_KEYS, "modes")
457
- const light =
458
- input.modes.light === undefined ? undefined : parseTokens(input.modes.light, TOKEN_KEY_SET, "modes.light")
459
- const dark = input.modes.dark === undefined ? undefined : parseTokens(input.modes.dark, TOKEN_KEY_SET, "modes.dark")
460
- if (!light && !dark) throw new Error("modes 至少需要 light 或 dark")
461
-
462
- // DS2 两道闸:禁覆盖清单拦截 + 中性梯度整组对比度实算
463
- if (light) {
464
- assertTokensNotDenied(light, "modes.light")
465
- assertNeutralGroupContrast(light, "modes.light")
466
- }
467
- if (dark) {
468
- assertTokensNotDenied(dark, "modes.dark")
469
- assertNeutralGroupContrast(dark, "modes.dark")
470
- }
471
-
472
- // Parse contributes (L2/L3)
473
- let contributes: OrbitworkSkin["contributes"] | undefined
474
- if (input.contributes !== undefined) {
475
- if (!isRecord(input.contributes)) throw new Error("contributes 必须是对象")
476
- assertKnownKeys(input.contributes, CONTRIBUTES_KEYS, "contributes")
477
- const semanticStyles = input.contributes.semanticStyles
478
- const patches = input.contributes.patches
479
- if (semanticStyles !== undefined && typeof semanticStyles !== "string")
480
- throw new Error("contributes.semanticStyles 必须是字符串")
481
- if (patches !== undefined && typeof patches !== "string") throw new Error("contributes.patches 必须是字符串")
482
- const registry = parseRegistry(input.contributes.registry)
483
- if (semanticStyles || patches || registry) {
484
- contributes = {
485
- ...(semanticStyles ? { semanticStyles } : {}),
486
- ...(patches ? { patches } : {}),
487
- ...(registry ? { registry } : {}),
488
- }
489
- }
490
- }
491
-
492
- return {
493
- ok: true,
494
- skin: {
495
- version: 1,
496
- id: input.id,
497
- name: input.name.trim(),
498
- ...(input.description ? { description: input.description.trim() } : {}),
499
- modes: { ...(light ? { light } : {}), ...(dark ? { dark } : {}) },
500
- ...(contributes ? { contributes } : {}),
501
- },
502
- }
503
- } catch (error) {
504
- return { ok: false, error: error instanceof Error ? error.message : "主题格式无效" }
505
- }
506
- }
507
-
508
- function parseTokens(input: unknown, allowed: Set<string>, path: string): OrbitworkSkinTokens {
509
- if (!isRecord(input)) throw new Error(`${path} 必须是对象`)
510
- assertKnownKeys(input, allowed, path)
511
- const result: OrbitworkSkinTokens = {}
512
- for (const [key, value] of Object.entries(input)) {
513
- if (typeof value !== "string") throw new Error(`${path}.${key} 必须是字符串`)
514
- if (COLOR_KEYS.includes(key as (typeof COLOR_KEYS)[number])) {
515
- if (!HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是十六进制颜色`)
516
- ;(result as Record<string, string>)[key] = value.toLowerCase()
517
- } else if (MASK_COLOR_KEYS.includes(key as (typeof MASK_COLOR_KEYS)[number])) {
518
- if (!MASK_HEX_COLOR.test(value)) throw new Error(`${path}.${key} 必须是六位或八位十六进制颜色`)
519
- ;(result as Record<string, string>)[key] = value.toLowerCase()
520
- } else if (IMAGE_KEYS.includes(key as (typeof IMAGE_KEYS)[number])) {
521
- assertSafeDataImage(value, `${path}.${key}`)
522
- ;(result as Record<string, string>)[key] = value
523
- } else if (POSITION_KEYS.includes(key as (typeof POSITION_KEYS)[number])) {
524
- const normalized = value.toLowerCase()
525
- if (!BACKGROUND_POSITIONS.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景位置`)
526
- ;(result as Record<string, string>)[key] = normalized
527
- } else if (SIZE_KEYS.includes(key as (typeof SIZE_KEYS)[number])) {
528
- const normalized = value.toLowerCase()
529
- if (!BACKGROUND_SIZES.has(normalized)) throw new Error(`${path}.${key} 不是支持的背景尺寸`)
530
- ;(result as Record<string, string>)[key] = normalized
531
- } else {
532
- throw new Error(`${path} 包含不支持的字段:${key}`)
533
- }
534
- }
535
- return result
536
- }
537
-
538
- function parseRegistry(input: unknown): OrbitworkSkinRegistryEntry[] | undefined {
539
- if (input === undefined) return undefined
540
- if (!Array.isArray(input)) throw new Error("contributes.registry 必须是数组")
541
- if (input.length === 0) return undefined
542
- return input.map((entry, index) => {
543
- if (!isRecord(entry)) throw new Error(`contributes.registry[${index}] 必须是 { target, reason } 对象`)
544
- assertKnownKeys(entry, REGISTRY_ENTRY_KEYS, `contributes.registry[${index}]`)
545
- const { target, reason } = entry
546
- if (typeof target !== "string" || !target.trim() || target.length > 200)
547
- throw new Error(`contributes.registry[${index}].target 必须是 1–200 字符的字符串`)
548
- if (typeof reason !== "string" || !reason.trim() || reason.length > 200)
549
- throw new Error(`contributes.registry[${index}].reason 必须是 1–200 字符的字符串`)
550
- return { target: target.trim(), reason: reason.trim() }
551
- })
552
- }
553
-
554
- function assertSafeDataImage(value: string, path: string): void {
555
- const match = DATA_IMAGE.exec(value)
556
- if (!match) throw new Error(`${path} 必须是 PNG、JPEG 或 WebP 的 base64 data URL`)
557
- const format = match[1]
558
- const payload = match[2]
559
- if (!format || !payload) throw new Error(`${path} 包含无效的图片数据`)
560
- if (payload.length % 4 !== 0) throw new Error(`${path} 包含无效的 base64 数据`)
561
- const padding = payload.endsWith("==") ? 2 : payload.endsWith("=") ? 1 : 0
562
- const decodedBytes = (payload.length / 4) * 3 - padding
563
- if (decodedBytes > MAX_ORBITWORK_SKIN_IMAGE_BYTES) throw new Error(`${path} 解码后不能超过 5 MiB`)
564
- let bytes: number[]
565
- try {
566
- const decoded = globalThis.atob(payload)
567
- bytes = Array.from(decoded.slice(0, 12), (char) => char.charCodeAt(0))
568
- } catch {
569
- throw new Error(`${path} 包含无效的 base64 数据`)
570
- }
571
- const validMagic =
572
- format === "png"
573
- ? [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every((byte, index) => bytes[index] === byte)
574
- : format === "jpeg"
575
- ? bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff
576
- : bytes[0] === 0x52 &&
577
- bytes[1] === 0x49 &&
578
- bytes[2] === 0x46 &&
579
- bytes[3] === 0x46 &&
580
- bytes[8] === 0x57 &&
581
- bytes[9] === 0x45 &&
582
- bytes[10] === 0x42 &&
583
- bytes[11] === 0x50
584
- if (!validMagic) throw new Error(`${path} 的内容与图片格式不匹配`)
585
- }
586
-
587
- /** Convert a validated embedded image into a CSS value without accepting arbitrary CSS or URLs. */
588
- export function orbitworkSkinImageCssValue(value: string | undefined): string | undefined {
589
- if (!value) return undefined
590
- try {
591
- assertSafeDataImage(value, "chatBackgroundImage")
592
- return `url("${value}")`
593
- } catch {
594
- return undefined
595
- }
596
- }
597
-
598
- export function assertKnownKeys(value: Record<string, unknown>, allowed: Set<string>, path: string) {
599
- const unknown = Object.keys(value).find((key) => !allowed.has(key))
600
- if (unknown) throw new Error(`${path} 包含不支持的字段:${unknown}`)
601
- }
602
-
603
- export function isRecord(value: unknown): value is Record<string, unknown> {
604
- return value !== null && typeof value === "object" && !Array.isArray(value)
605
- }