@orbit-work/ui 0.1.2-preview.0 → 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 (795) 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 +3769 -3032
  41. package/dist/index.d.ts +3769 -3032
  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 -22209
  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 -1367
  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 -167
  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/DesktopLibraryAuthorizationDialogSource.test.mjs +0 -22
  492. package/src/components/domain/desktop/DesktopLibraryAuthorizationDialog/index.tsx +0 -171
  493. package/src/components/domain/desktop/DesktopLibraryPageView/DesktopLibraryPageView.stories.tsx +0 -49
  494. package/src/components/domain/desktop/DesktopLibraryPageView/index.tsx +0 -49
  495. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.css +0 -75
  496. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginView.stories.tsx +0 -230
  497. package/src/components/domain/desktop/DesktopLoginView/DesktopLoginViewSource.test.mjs +0 -156
  498. package/src/components/domain/desktop/DesktopLoginView/index.tsx +0 -432
  499. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourView.stories.tsx +0 -103
  500. package/src/components/domain/desktop/DesktopOnboardingTourView/DesktopOnboardingTourViewSource.test.mjs +0 -57
  501. package/src/components/domain/desktop/DesktopOnboardingTourView/index.tsx +0 -189
  502. package/src/components/domain/desktop/DesktopPet/DesktopPet.fixture.ts +0 -243
  503. package/src/components/domain/desktop/DesktopPet/DesktopPet.stories.tsx +0 -337
  504. package/src/components/domain/desktop/DesktopPet/DesktopPetSource.test.mjs +0 -191
  505. package/src/components/domain/desktop/DesktopPet/index.tsx +0 -591
  506. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettings.stories.tsx +0 -159
  507. package/src/components/domain/desktop/DesktopPetSettings/DesktopPetSettingsSource.test.mjs +0 -76
  508. package/src/components/domain/desktop/DesktopPetSettings/index.tsx +0 -140
  509. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusView.stories.tsx +0 -166
  510. package/src/components/domain/desktop/DesktopRunStatusView/DesktopRunStatusViewSource.test.mjs +0 -51
  511. package/src/components/domain/desktop/DesktopRunStatusView/index.tsx +0 -34
  512. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCard.stories.tsx +0 -122
  513. package/src/components/domain/desktop/DesktopSelectionCard/DesktopSelectionCardSource.test.mjs +0 -42
  514. package/src/components/domain/desktop/DesktopSelectionCard/index.tsx +0 -75
  515. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySection.stories.tsx +0 -225
  516. package/src/components/domain/desktop/DesktopSettingsMemorySection/DesktopSettingsMemorySectionSource.test.mjs +0 -105
  517. package/src/components/domain/desktop/DesktopSettingsMemorySection/index.tsx +0 -340
  518. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsView.stories.tsx +0 -177
  519. package/src/components/domain/desktop/DesktopSettingsView/DesktopSettingsViewSource.test.mjs +0 -195
  520. package/src/components/domain/desktop/DesktopSettingsView/index.tsx +0 -176
  521. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarView.stories.tsx +0 -77
  522. package/src/components/domain/desktop/DesktopShareSelectionBarView/DesktopShareSelectionBarViewSource.test.mjs +0 -76
  523. package/src/components/domain/desktop/DesktopShareSelectionBarView/index.tsx +0 -55
  524. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarView.stories.tsx +0 -454
  525. package/src/components/domain/desktop/DesktopSidebarView/DesktopSidebarViewSource.test.mjs +0 -388
  526. package/src/components/domain/desktop/DesktopSidebarView/index.tsx +0 -1111
  527. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesView.stories.tsx +0 -369
  528. package/src/components/domain/desktop/DesktopSiteReleasesView/DesktopSiteReleasesViewSource.test.mjs +0 -123
  529. package/src/components/domain/desktop/DesktopSiteReleasesView/index.tsx +0 -392
  530. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListView.stories.tsx +0 -244
  531. package/src/components/domain/desktop/DesktopSitesListView/DesktopSitesListViewSource.test.mjs +0 -198
  532. package/src/components/domain/desktop/DesktopSitesListView/index.tsx +0 -417
  533. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageView.stories.tsx +0 -230
  534. package/src/components/domain/desktop/DesktopSkillsPageView/DesktopSkillsPageViewSource.test.mjs +0 -149
  535. package/src/components/domain/desktop/DesktopSkillsPageView/index.tsx +0 -235
  536. package/src/components/domain/desktop/DesktopTaskDetailView/index.tsx +0 -111
  537. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallListViewSource.test.mjs +0 -302
  538. package/src/components/domain/desktop/DesktopToolCallView/DesktopToolCallView.stories.tsx +0 -409
  539. package/src/components/domain/desktop/DesktopToolCallView/index.tsx +0 -388
  540. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShell.stories.tsx +0 -418
  541. package/src/components/domain/desktop/DesktopWorkbenchShell/DesktopWorkbenchShellSource.test.mjs +0 -151
  542. package/src/components/domain/desktop/DesktopWorkbenchShell/index.tsx +0 -167
  543. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageView.stories.tsx +0 -135
  544. package/src/components/domain/desktop/DesktopWorkspacePageView/DesktopWorkspacePageViewSource.test.mjs +0 -57
  545. package/src/components/domain/desktop/DesktopWorkspacePageView/index.tsx +0 -114
  546. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceView.stories.tsx +0 -227
  547. package/src/components/domain/desktop/DesktopWorkspaceView/DesktopWorkspaceViewSource.test.mjs +0 -175
  548. package/src/components/domain/desktop/DesktopWorkspaceView/index.tsx +0 -580
  549. package/src/components/domain/desktop/ResourceManagement/ResourceManagement.stories.tsx +0 -19
  550. package/src/components/domain/desktop/ResourceManagement/ResourceManagementSource.test.mjs +0 -54
  551. package/src/components/domain/desktop/ResourceManagement/SharesList.tsx +0 -323
  552. package/src/components/domain/desktop/ResourceManagement/SnapshotViews.tsx +0 -92
  553. package/src/components/domain/desktop/ResourceManagement/SnapshotViewsSource.test.mjs +0 -15
  554. package/src/components/domain/desktop/ResourceManagement/index.tsx +0 -246
  555. package/src/components/domain/desktop/ShareSettingsDialogView/index.tsx +0 -234
  556. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmpty.stories.tsx +0 -100
  557. package/src/components/domain/desktop/SidePanelEmpty/SidePanelEmptySource.test.mjs +0 -67
  558. package/src/components/domain/desktop/SidePanelEmpty/index.tsx +0 -113
  559. package/src/components/domain/desktop/StarterCapsules/StarterCapsules.stories.tsx +0 -65
  560. package/src/components/domain/desktop/StarterCapsules/StarterCapsulesSource.test.mjs +0 -43
  561. package/src/components/domain/desktop/StarterCapsules/index.tsx +0 -90
  562. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanel.stories.tsx +0 -59
  563. package/src/components/domain/desktop/WorkbenchSidePanel/WorkbenchSidePanelSource.test.mjs +0 -51
  564. package/src/components/domain/desktop/WorkbenchSidePanel/index.tsx +0 -74
  565. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirm.stories.tsx +0 -79
  566. package/src/components/domain/desktop/WorkspaceMigrateConfirm/WorkspaceMigrateConfirmSource.test.mjs +0 -34
  567. package/src/components/domain/desktop/WorkspaceMigrateConfirm/index.tsx +0 -92
  568. package/src/components/domain/desktop/index.ts +0 -64
  569. package/src/components/domain/files/FileBrowser/FileBrowser.stories.tsx +0 -397
  570. package/src/components/domain/files/FileBrowser/FileBrowserSource.test.mjs +0 -75
  571. package/src/components/domain/files/FileBrowser/index.tsx +0 -221
  572. package/src/components/domain/files/FileIcon/FileIcon.stories.tsx +0 -207
  573. package/src/components/domain/files/FileIcon/FileIconSource.test.mjs +0 -39
  574. package/src/components/domain/files/FileIcon/index.tsx +0 -133
  575. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentView.stories.tsx +0 -242
  576. package/src/components/domain/files/FilePreviewContentView/FilePreviewContentViewSource.test.mjs +0 -44
  577. package/src/components/domain/files/FilePreviewContentView/index.tsx +0 -125
  578. package/src/components/domain/files/FileTree/FileTree.stories.tsx +0 -204
  579. package/src/components/domain/files/FileTree/FileTreeSource.test.mjs +0 -18
  580. package/src/components/domain/files/FileTree/index.tsx +0 -106
  581. package/src/components/domain/files/PreviewDialog/PreviewDialog.stories.tsx +0 -178
  582. package/src/components/domain/files/PreviewDialog/PreviewDialogSource.test.mjs +0 -92
  583. package/src/components/domain/files/PreviewDialog/index.tsx +0 -294
  584. package/src/components/domain/files/index.ts +0 -5
  585. package/src/components/domain/index.ts +0 -8
  586. package/src/components/domain/office/CsvPreview/CsvPreview.stories.tsx +0 -264
  587. package/src/components/domain/office/CsvPreview/CsvPreviewSource.test.mjs +0 -77
  588. package/src/components/domain/office/CsvPreview/index.tsx +0 -224
  589. package/src/components/domain/office/OfficePreview/OfficePreview.stories.tsx +0 -265
  590. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.stories.tsx +0 -71
  591. package/src/components/domain/office/OfficePreview/OfficePreviewDialog.tsx +0 -43
  592. package/src/components/domain/office/OfficePreview/OfficePreviewSource.test.mjs +0 -126
  593. package/src/components/domain/office/OfficePreview/index.tsx +0 -782
  594. package/src/components/domain/office/PdfPreview/PdfPreview.stories.tsx +0 -280
  595. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.stories.tsx +0 -61
  596. package/src/components/domain/office/PdfPreview/PdfPreviewDialog.tsx +0 -61
  597. package/src/components/domain/office/PdfPreview/PdfPreviewSource.test.mjs +0 -70
  598. package/src/components/domain/office/PdfPreview/index.tsx +0 -217
  599. package/src/components/domain/office/index.ts +0 -5
  600. package/src/components/domain/skills/McpServerListView/McpServerListView.stories.tsx +0 -510
  601. package/src/components/domain/skills/McpServerListView/McpServerListViewSource.test.mjs +0 -101
  602. package/src/components/domain/skills/McpServerListView/index.tsx +0 -250
  603. package/src/components/domain/skills/SkillAvatarView/SkillAvatarView.stories.tsx +0 -121
  604. package/src/components/domain/skills/SkillAvatarView/SkillAvatarViewSource.test.mjs +0 -67
  605. package/src/components/domain/skills/SkillAvatarView/index.tsx +0 -112
  606. package/src/components/domain/skills/SkillCardView/SkillCardView.stories.tsx +0 -374
  607. package/src/components/domain/skills/SkillCardView/SkillCardViewSource.test.mjs +0 -35
  608. package/src/components/domain/skills/SkillCardView/index.tsx +0 -88
  609. package/src/components/domain/skills/SkillDetailPanelView/SkillDetailPanelView.stories.tsx +0 -113
  610. package/src/components/domain/skills/SkillDetailPanelView/index.tsx +0 -115
  611. package/src/components/domain/skills/SkillDetailView/SkillDetailView.stories.tsx +0 -274
  612. package/src/components/domain/skills/SkillDetailView/index.tsx +0 -121
  613. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogView.stories.tsx +0 -128
  614. package/src/components/domain/skills/SkillImportDialogView/SkillImportDialogViewSource.test.mjs +0 -11
  615. package/src/components/domain/skills/SkillImportDialogView/index.tsx +0 -147
  616. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalView.stories.tsx +0 -160
  617. package/src/components/domain/skills/ToolDetailModalView/ToolDetailModalViewSource.test.mjs +0 -99
  618. package/src/components/domain/skills/ToolDetailModalView/index.tsx +0 -160
  619. package/src/components/domain/skills/index.ts +0 -7
  620. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardView.stories.tsx +0 -120
  621. package/src/components/domain/tasks/ScheduledTaskCardView/ScheduledTaskCardViewSource.test.mjs +0 -40
  622. package/src/components/domain/tasks/ScheduledTaskCardView/index.tsx +0 -135
  623. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialog.stories.tsx +0 -56
  624. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/ScheduledTaskDeleteDialogSource.test.mjs +0 -35
  625. package/src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx +0 -73
  626. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailView.stories.tsx +0 -121
  627. package/src/components/domain/tasks/ScheduledTaskDetailView/ScheduledTaskDetailViewSource.test.mjs +0 -115
  628. package/src/components/domain/tasks/ScheduledTaskDetailView/index.tsx +0 -223
  629. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceView.stories.tsx +0 -526
  630. package/src/components/domain/tasks/ScheduledTasksSpaceView/ScheduledTasksSpaceViewSource.test.mjs +0 -85
  631. package/src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx +0 -118
  632. package/src/components/domain/tasks/index.ts +0 -4
  633. package/src/components/domain/theme/SkinManager.stories.tsx +0 -43
  634. package/src/components/domain/theme/SkinManagerUI.tsx +0 -382
  635. package/src/components/domain/theme/ThemeDemo.stories.tsx +0 -12
  636. package/src/components/domain/theme/ThemeDemo.tsx +0 -224
  637. package/src/components/index.ts +0 -11
  638. package/src/components/primitives/Avatar/Avatar.stories.tsx +0 -170
  639. package/src/components/primitives/Avatar/AvatarSource.test.mjs +0 -37
  640. package/src/components/primitives/Avatar/index.tsx +0 -180
  641. package/src/components/primitives/BackTop/BackTop.stories.tsx +0 -122
  642. package/src/components/primitives/BackTop/BackTopSource.test.mjs +0 -61
  643. package/src/components/primitives/BackTop/index.tsx +0 -93
  644. package/src/components/primitives/Badge/Badge.stories.tsx +0 -376
  645. package/src/components/primitives/Badge/BadgeSource.test.mjs +0 -27
  646. package/src/components/primitives/Badge/index.tsx +0 -65
  647. package/src/components/primitives/Button/Button.stories.tsx +0 -287
  648. package/src/components/primitives/Button/ButtonSource.test.mjs +0 -84
  649. package/src/components/primitives/Button/index.tsx +0 -219
  650. package/src/components/primitives/Card/Card.stories.tsx +0 -186
  651. package/src/components/primitives/Card/CardSource.test.mjs +0 -73
  652. package/src/components/primitives/Card/index.tsx +0 -137
  653. package/src/components/primitives/Checkbox/Checkbox.stories.tsx +0 -79
  654. package/src/components/primitives/Checkbox/CheckboxSource.test.mjs +0 -43
  655. package/src/components/primitives/Checkbox/index.tsx +0 -87
  656. package/src/components/primitives/Chip/Chip.stories.tsx +0 -149
  657. package/src/components/primitives/Chip/ChipSource.test.mjs +0 -73
  658. package/src/components/primitives/Chip/index.tsx +0 -252
  659. package/src/components/primitives/Divider/Divider.stories.tsx +0 -68
  660. package/src/components/primitives/Divider/DividerSource.test.mjs +0 -26
  661. package/src/components/primitives/Divider/index.tsx +0 -65
  662. package/src/components/primitives/Dropdown/Dropdown.stories.tsx +0 -38
  663. package/src/components/primitives/Dropdown/DropdownSource.test.mjs +0 -23
  664. package/src/components/primitives/Dropdown/index.tsx +0 -29
  665. package/src/components/primitives/EmptyState/EmptyState.stories.tsx +0 -159
  666. package/src/components/primitives/EmptyState/EmptyStateSource.test.mjs +0 -169
  667. package/src/components/primitives/EmptyState/index.tsx +0 -185
  668. package/src/components/primitives/ErrorCard/ErrorCard.stories.tsx +0 -50
  669. package/src/components/primitives/ErrorCard/index.tsx +0 -78
  670. package/src/components/primitives/Field/Field.stories.tsx +0 -208
  671. package/src/components/primitives/Field/FieldSource.test.mjs +0 -70
  672. package/src/components/primitives/Field/index.tsx +0 -297
  673. package/src/components/primitives/InlineMessage/InlineMessage.stories.tsx +0 -137
  674. package/src/components/primitives/InlineMessage/InlineMessageSource.test.mjs +0 -50
  675. package/src/components/primitives/InlineMessage/index.tsx +0 -141
  676. package/src/components/primitives/Input/Input.stories.tsx +0 -30
  677. package/src/components/primitives/Input/index.tsx +0 -12
  678. package/src/components/primitives/Keycap/Keycap.stories.tsx +0 -93
  679. package/src/components/primitives/Keycap/KeycapSource.test.mjs +0 -30
  680. package/src/components/primitives/Keycap/index.tsx +0 -67
  681. package/src/components/primitives/Menu/Menu.stories.tsx +0 -416
  682. package/src/components/primitives/Menu/MenuEmptySource.test.mjs +0 -23
  683. package/src/components/primitives/Menu/MenuSource.test.mjs +0 -207
  684. package/src/components/primitives/Menu/index.tsx +0 -923
  685. package/src/components/primitives/Pagination/Pagination.stories.tsx +0 -77
  686. package/src/components/primitives/Pagination/PaginationSource.test.mjs +0 -24
  687. package/src/components/primitives/Pagination/index.tsx +0 -85
  688. package/src/components/primitives/Pagination/pagination.ts +0 -25
  689. package/src/components/primitives/Pagination/paginationModel.test.mjs +0 -18
  690. package/src/components/primitives/ProgressBar/ProgressBar.stories.tsx +0 -103
  691. package/src/components/primitives/ProgressBar/ProgressBarSource.test.mjs +0 -44
  692. package/src/components/primitives/ProgressBar/index.tsx +0 -68
  693. package/src/components/primitives/Radio/Radio.stories.tsx +0 -84
  694. package/src/components/primitives/Radio/RadioSource.test.mjs +0 -38
  695. package/src/components/primitives/Radio/index.tsx +0 -161
  696. package/src/components/primitives/SegmentedControl/SegmentedControl.stories.tsx +0 -110
  697. package/src/components/primitives/SegmentedControl/SegmentedControlSource.test.mjs +0 -75
  698. package/src/components/primitives/SegmentedControl/index.tsx +0 -188
  699. package/src/components/primitives/Select/Select.stories.tsx +0 -158
  700. package/src/components/primitives/Select/SelectSource.test.mjs +0 -94
  701. package/src/components/primitives/Select/index.tsx +0 -406
  702. package/src/components/primitives/Spinner/index.tsx +0 -58
  703. package/src/components/primitives/Switch/Switch.stories.tsx +0 -64
  704. package/src/components/primitives/Switch/SwitchSource.test.mjs +0 -38
  705. package/src/components/primitives/Switch/index.tsx +0 -84
  706. package/src/components/primitives/Tabs/Tabs.stories.tsx +0 -230
  707. package/src/components/primitives/Tabs/TabsSource.test.mjs +0 -91
  708. package/src/components/primitives/Tabs/index.tsx +0 -183
  709. package/src/components/primitives/index.ts +0 -24
  710. package/src/examples/ResourceManagementExample.tsx +0 -119
  711. package/src/examples/SiteWorkbenchExample.tsx +0 -96
  712. package/src/hooks/index.ts +0 -7
  713. package/src/hooks/useClickOutside.ts +0 -20
  714. package/src/hooks/useDragReorder.ts +0 -29
  715. package/src/hooks/useImeAwareEnter.ts +0 -59
  716. package/src/hooks/useImeAwareEnterSource.test.mjs +0 -65
  717. package/src/hooks/useKeyboard.ts +0 -16
  718. package/src/hooks/usePopover.ts +0 -67
  719. package/src/hooks/useSelectedOptionLocator.ts +0 -33
  720. package/src/hooks/useSidebarResize.ts +0 -107
  721. package/src/hooks/useTenantTheme.ts +0 -53
  722. package/src/hooks/useUnifiedTheme.ts +0 -85
  723. package/src/index.ts +0 -6
  724. package/src/lib/InjectedStyleTokenMirrorSource.test.mjs +0 -67
  725. package/src/lib/about-window.test.mjs +0 -46
  726. package/src/lib/about-window.ts +0 -218
  727. package/src/lib/appearance.test.mjs +0 -283
  728. package/src/lib/appearance.ts +0 -46
  729. package/src/lib/browser-annotation-popup.ts +0 -151
  730. package/src/lib/focusTrap.ts +0 -51
  731. package/src/lib/index.ts +0 -5
  732. package/src/lib/shortcut.test.mjs +0 -100
  733. package/src/lib/shortcut.ts +0 -97
  734. package/src/lib/twMergeOw.ts +0 -18
  735. package/src/lib/utils.ts +0 -6
  736. package/src/screens/Browser.stories.tsx +0 -353
  737. package/src/screens/Chat.stories.tsx +0 -808
  738. package/src/screens/Home.stories.tsx +0 -253
  739. package/src/screens/Login.stories.tsx +0 -134
  740. package/src/screens/McpManager.stories.tsx +0 -159
  741. package/src/screens/Onboarding.stories.tsx +0 -155
  742. package/src/screens/ScheduledTasks.stories.tsx +0 -134
  743. package/src/screens/ScreenFrameSource.test.mjs +0 -77
  744. package/src/screens/SettingsAppearance.stories.tsx +0 -117
  745. package/src/screens/SettingsMemory.stories.tsx +0 -128
  746. package/src/screens/SettingsModels.stories.tsx +0 -228
  747. package/src/screens/SettingsSections.stories.tsx +0 -164
  748. package/src/screens/Share.stories.tsx +0 -202
  749. package/src/screens/SharePage.stories.tsx +0 -29
  750. package/src/screens/Sites.stories.tsx +0 -183
  751. package/src/screens/Skills.stories.tsx +0 -83
  752. package/src/screens/Workspace.stories.tsx +0 -191
  753. package/src/screens/_home.tsx +0 -46
  754. package/src/screens/_screen.tsx +0 -355
  755. package/src/screens/_settingsNav.ts +0 -27
  756. package/src/screens/_skillsCatalog.tsx +0 -372
  757. package/src/theme/SkinDenylistSyncSource.test.mjs +0 -124
  758. package/src/theme/__tests__/skins.test.mjs +0 -84
  759. package/src/theme/core/semanticAdapter.ts +0 -116
  760. package/src/theme/core/skin.ts +0 -605
  761. package/src/theme/core/skinScoped.ts +0 -289
  762. package/src/theme/core/tenantTheme.test.mjs +0 -127
  763. package/src/theme/core/tenantTheme.ts +0 -124
  764. package/src/theme/core/types.ts +0 -60
  765. package/src/theme/core/unifiedTheme.ts +0 -157
  766. package/src/theme/index.ts +0 -33
  767. package/src/theme/providers/BrandingProvider.tsx +0 -57
  768. package/src/theme/providers/ThemeProvider.tsx +0 -221
  769. package/src/theme/skinDs2PropertyGate.test.mjs +0 -109
  770. package/src/theme/skins/index.ts +0 -107
  771. package/src/theme/utils/cssSafety.ts +0 -92
  772. package/src/theme/utils/skinManager.ts +0 -159
  773. package/src/theme/utils/themeApplier.ts +0 -75
  774. package/src/tokens/DesktopSurfacesSweep15Source.test.mjs +0 -77
  775. package/src/tokens/SharedStyleSheetsSource.test.mjs +0 -90
  776. package/src/tokens/TailwindThemeSupplySource.test.mjs +0 -129
  777. package/src/tokens/base.ts +0 -199
  778. package/src/tokens/dark.ts +0 -288
  779. package/src/tokens/index.ts +0 -4
  780. package/src/tokens/light.ts +0 -320
  781. package/src/tokens/tailwind.ts +0 -216
  782. package/src/types/desktop-pet.ts +0 -100
  783. package/src/types/file-browser.ts +0 -51
  784. package/src/types/file-tree.ts +0 -34
  785. package/src/types/index.ts +0 -3
  786. package/src/types/xspreadsheet.d.ts +0 -4
  787. package/src/utils/cn.ts +0 -6
  788. package/src/utils/glyphColor.ts +0 -32
  789. package/src/utils/index.ts +0 -4
  790. package/src/utils/localPathInline.test.mjs +0 -45
  791. package/src/utils/localPathInline.ts +0 -49
  792. package/src/utils/markdownFileRefs.test.mjs +0 -88
  793. package/src/utils/markdownFileRefs.ts +0 -140
  794. package/src/utils/office-excel.ts +0 -452
  795. 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
- }