@lemoncat7/dsh-partner 2.4.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (671) hide show
  1. package/README.md +8 -0
  2. package/docs/THIRD_PARTY_LICENSES.md +13 -0
  3. package/docs/attachment-storage.md +18 -0
  4. package/docs/director-skills.md +24 -0
  5. package/docs/long-task-continuation.md +51 -0
  6. package/docs/releases/2.5.0.md +13 -0
  7. package/docs/releases/2.6.0.md +11 -0
  8. package/docs/releases/2.7.0.md +21 -0
  9. package/lib/agent-runtime.d.ts +9 -1
  10. package/lib/agent-runtime.d.ts.map +1 -1
  11. package/lib/agent-runtime.js +117 -17
  12. package/lib/agent-runtime.js.map +1 -1
  13. package/lib/api/features/attachments-api.d.ts.map +1 -1
  14. package/lib/api/features/attachments-api.js +31 -1
  15. package/lib/api/features/attachments-api.js.map +1 -1
  16. package/lib/api.d.ts +1 -1
  17. package/lib/api.d.ts.map +1 -1
  18. package/lib/api.js +1 -1
  19. package/lib/api.js.map +1 -1
  20. package/lib/attachments/grouped-storage.d.ts +5 -0
  21. package/lib/attachments/grouped-storage.d.ts.map +1 -0
  22. package/lib/attachments/grouped-storage.js +47 -0
  23. package/lib/attachments/grouped-storage.js.map +1 -0
  24. package/lib/attachments/service.d.ts +17 -0
  25. package/lib/attachments/service.d.ts.map +1 -1
  26. package/lib/attachments/service.js +100 -8
  27. package/lib/attachments/service.js.map +1 -1
  28. package/lib/attachments/shared-storage.d.ts +7 -0
  29. package/lib/attachments/shared-storage.d.ts.map +1 -0
  30. package/lib/attachments/shared-storage.js +44 -0
  31. package/lib/attachments/shared-storage.js.map +1 -0
  32. package/lib/attachments/storage-admin.d.ts +6 -0
  33. package/lib/attachments/storage-admin.d.ts.map +1 -0
  34. package/lib/attachments/storage-admin.js +43 -0
  35. package/lib/attachments/storage-admin.js.map +1 -0
  36. package/lib/attachments/storage-types.d.ts +33 -0
  37. package/lib/attachments/storage-types.d.ts.map +1 -0
  38. package/lib/attachments/storage-types.js +2 -0
  39. package/lib/attachments/storage-types.js.map +1 -0
  40. package/lib/attachments/tool.d.ts.map +1 -1
  41. package/lib/attachments/tool.js +16 -5
  42. package/lib/attachments/tool.js.map +1 -1
  43. package/lib/channels/delivery-policy.d.ts.map +1 -1
  44. package/lib/channels/delivery-policy.js +7 -4
  45. package/lib/channels/delivery-policy.js.map +1 -1
  46. package/lib/channels/direct/message-format.js +418 -281
  47. package/lib/channels/direct/message-format.js.map +4 -4
  48. package/lib/channels/manager.d.ts +7 -3
  49. package/lib/channels/manager.d.ts.map +1 -1
  50. package/lib/channels/manager.js +73 -38
  51. package/lib/channels/manager.js.map +1 -1
  52. package/lib/channels/weixin/api.d.ts.map +1 -1
  53. package/lib/channels/weixin/api.js +7 -2
  54. package/lib/channels/weixin/api.js.map +1 -1
  55. package/lib/channels/weixin/errors.d.ts +14 -0
  56. package/lib/channels/weixin/errors.d.ts.map +1 -0
  57. package/lib/channels/weixin/errors.js +29 -0
  58. package/lib/channels/weixin/errors.js.map +1 -0
  59. package/lib/channels/weixin/poll.d.ts +14 -0
  60. package/lib/channels/weixin/poll.d.ts.map +1 -0
  61. package/lib/channels/weixin/poll.js +50 -0
  62. package/lib/channels/weixin/poll.js.map +1 -0
  63. package/lib/client-api.d.ts +1 -23
  64. package/lib/client-api.d.ts.map +1 -1
  65. package/lib/client-api.js.map +1 -1
  66. package/lib/client-controller.d.ts.map +1 -1
  67. package/lib/client-controller.js +3 -3
  68. package/lib/client-controller.js.map +1 -1
  69. package/lib/client.d.ts.map +1 -1
  70. package/lib/client.js +1078 -679
  71. package/lib/client.js.map +4 -4
  72. package/lib/collaboration/composition.d.ts.map +1 -1
  73. package/lib/collaboration/composition.js +32 -8
  74. package/lib/collaboration/composition.js.map +1 -1
  75. package/lib/collaboration/domain.d.ts +8 -0
  76. package/lib/collaboration/domain.d.ts.map +1 -1
  77. package/lib/collaboration/domain.js.map +1 -1
  78. package/lib/collaboration/service.d.ts.map +1 -1
  79. package/lib/collaboration/service.js +38 -5
  80. package/lib/collaboration/service.js.map +1 -1
  81. package/lib/concern-notification.d.ts.map +1 -1
  82. package/lib/concern-notification.js +2 -1
  83. package/lib/concern-notification.js.map +1 -1
  84. package/lib/concern-tool.js +1 -1
  85. package/lib/concern-tool.js.map +1 -1
  86. package/lib/execution/reply-progress.d.ts.map +1 -1
  87. package/lib/execution/reply-progress.js +4 -2
  88. package/lib/execution/reply-progress.js.map +1 -1
  89. package/lib/execution/service.d.ts +1 -1
  90. package/lib/execution/service.d.ts.map +1 -1
  91. package/lib/execution/service.js +4 -7
  92. package/lib/execution/service.js.map +1 -1
  93. package/lib/index.d.ts.map +1 -1
  94. package/lib/index.js +7 -1
  95. package/lib/index.js.map +1 -1
  96. package/lib/memory-reflection.js +2 -2
  97. package/lib/memory-reflection.js.map +1 -1
  98. package/lib/message-source.d.ts +25 -0
  99. package/lib/message-source.d.ts.map +1 -0
  100. package/lib/message-source.js +8 -0
  101. package/lib/message-source.js.map +1 -0
  102. package/lib/observation-loop.js +4 -4
  103. package/lib/observation-loop.js.map +1 -1
  104. package/lib/pendant/reader.js +1 -1
  105. package/lib/pendant/reader.js.map +1 -1
  106. package/lib/pendant/settings-panel.js +1 -1
  107. package/lib/pendant/settings-panel.js.map +1 -1
  108. package/lib/persona/service.js +1 -1
  109. package/lib/persona/service.js.map +1 -1
  110. package/lib/requirements/attachments.d.ts +7 -0
  111. package/lib/requirements/attachments.d.ts.map +1 -0
  112. package/lib/requirements/attachments.js +26 -0
  113. package/lib/requirements/attachments.js.map +1 -0
  114. package/lib/requirements/domain.d.ts +1 -1
  115. package/lib/requirements/domain.d.ts.map +1 -1
  116. package/lib/requirements/service.d.ts.map +1 -1
  117. package/lib/requirements/service.js +4 -1
  118. package/lib/requirements/service.js.map +1 -1
  119. package/lib/scheduler/channel-origin.d.ts +7 -0
  120. package/lib/scheduler/channel-origin.d.ts.map +1 -0
  121. package/lib/scheduler/channel-origin.js +27 -0
  122. package/lib/scheduler/channel-origin.js.map +1 -0
  123. package/lib/scheduler/continuations.d.ts +29 -0
  124. package/lib/scheduler/continuations.d.ts.map +1 -0
  125. package/lib/scheduler/continuations.js +286 -0
  126. package/lib/scheduler/continuations.js.map +1 -0
  127. package/lib/scheduler/domain.d.ts +40 -0
  128. package/lib/scheduler/domain.d.ts.map +1 -1
  129. package/lib/scheduler/final-reply.d.ts +13 -0
  130. package/lib/scheduler/final-reply.d.ts.map +1 -0
  131. package/lib/scheduler/final-reply.js +21 -0
  132. package/lib/scheduler/final-reply.js.map +1 -0
  133. package/lib/scheduler/service.d.ts +2 -0
  134. package/lib/scheduler/service.d.ts.map +1 -1
  135. package/lib/scheduler/service.js +30 -1
  136. package/lib/scheduler/service.js.map +1 -1
  137. package/lib/scheduler/wakeup-context.d.ts +7 -0
  138. package/lib/scheduler/wakeup-context.d.ts.map +1 -0
  139. package/lib/scheduler/wakeup-context.js +14 -0
  140. package/lib/scheduler/wakeup-context.js.map +1 -0
  141. package/lib/scheduler/wakeup.d.ts +11 -0
  142. package/lib/scheduler/wakeup.d.ts.map +1 -0
  143. package/lib/scheduler/wakeup.js +52 -0
  144. package/lib/scheduler/wakeup.js.map +1 -0
  145. package/lib/skills/builtin-resources.d.ts +6 -0
  146. package/lib/skills/builtin-resources.d.ts.map +1 -0
  147. package/lib/skills/builtin-resources.js +47 -0
  148. package/lib/skills/builtin-resources.js.map +1 -0
  149. package/lib/skills/builtin.d.ts +2 -5
  150. package/lib/skills/builtin.d.ts.map +1 -1
  151. package/lib/skills/builtin.js +11 -0
  152. package/lib/skills/builtin.js.map +1 -1
  153. package/lib/skills/director-builtins.d.ts +8 -0
  154. package/lib/skills/director-builtins.d.ts.map +1 -0
  155. package/lib/skills/director-builtins.js +65 -0
  156. package/lib/skills/director-builtins.js.map +1 -0
  157. package/lib/skills/drama-builtin.d.ts +3 -0
  158. package/lib/skills/drama-builtin.d.ts.map +1 -0
  159. package/lib/skills/drama-builtin.js +49 -0
  160. package/lib/skills/drama-builtin.js.map +1 -0
  161. package/lib/skills/long-task-continuation.d.ts +4 -0
  162. package/lib/skills/long-task-continuation.d.ts.map +1 -0
  163. package/lib/skills/long-task-continuation.js +43 -0
  164. package/lib/skills/long-task-continuation.js.map +1 -0
  165. package/lib/skills/service.d.ts.map +1 -1
  166. package/lib/skills/service.js +8 -3
  167. package/lib/skills/service.js.map +1 -1
  168. package/lib/skills/viora-canvas-builtin.d.ts +3 -0
  169. package/lib/skills/viora-canvas-builtin.d.ts.map +1 -0
  170. package/lib/skills/viora-canvas-builtin.js +19 -0
  171. package/lib/skills/viora-canvas-builtin.js.map +1 -0
  172. package/lib/storage/migrate-layout.d.ts.map +1 -1
  173. package/lib/storage/migrate-layout.js +13 -4
  174. package/lib/storage/migrate-layout.js.map +1 -1
  175. package/lib/store.d.ts.map +1 -1
  176. package/lib/store.js +2 -0
  177. package/lib/store.js.map +1 -1
  178. package/lib/tasks/context.js +1 -0
  179. package/lib/tasks/context.js.map +1 -1
  180. package/lib/tasks/continuation-yield.d.ts +4 -0
  181. package/lib/tasks/continuation-yield.d.ts.map +1 -0
  182. package/lib/tasks/continuation-yield.js +27 -0
  183. package/lib/tasks/continuation-yield.js.map +1 -0
  184. package/lib/tasks/continuation.d.ts +13 -0
  185. package/lib/tasks/continuation.d.ts.map +1 -0
  186. package/lib/tasks/continuation.js +106 -0
  187. package/lib/tasks/continuation.js.map +1 -0
  188. package/lib/tasks/domain.d.ts +2 -0
  189. package/lib/tasks/domain.d.ts.map +1 -1
  190. package/lib/tasks/scheduling.d.ts.map +1 -1
  191. package/lib/tasks/scheduling.js +7 -0
  192. package/lib/tasks/scheduling.js.map +1 -1
  193. package/lib/tasks/service.d.ts +2 -1
  194. package/lib/tasks/service.d.ts.map +1 -1
  195. package/lib/tasks/service.js +19 -1
  196. package/lib/tasks/service.js.map +1 -1
  197. package/lib/ui/attachment-storage.d.ts +2 -0
  198. package/lib/ui/attachment-storage.d.ts.map +1 -0
  199. package/lib/ui/attachment-storage.js +59 -0
  200. package/lib/ui/attachment-storage.js.map +1 -0
  201. package/lib/ui/capability-editor.js +1 -1
  202. package/lib/ui/capability-editor.js.map +1 -1
  203. package/lib/ui/companion-access-panel.js +1 -1
  204. package/lib/ui/companion-access-panel.js.map +1 -1
  205. package/lib/ui/companion-create.js +1 -1
  206. package/lib/ui/companion-create.js.map +1 -1
  207. package/lib/ui/companion-picker.js +1 -1
  208. package/lib/ui/companion-picker.js.map +1 -1
  209. package/lib/ui/identity-editor.js +1 -1
  210. package/lib/ui/identity-editor.js.map +1 -1
  211. package/lib/ui/mcp-capabilities.js +1 -1
  212. package/lib/ui/mcp-capabilities.js.map +1 -1
  213. package/lib/ui/mcp-panel.js +1 -1
  214. package/lib/ui/mcp-panel.js.map +1 -1
  215. package/lib/ui/memory/concern-board.js +2 -2
  216. package/lib/ui/memory/concern-board.js.map +1 -1
  217. package/lib/ui/memory/concern-deletion.d.ts +1 -1
  218. package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
  219. package/lib/ui/memory/concern-deletion.js +9 -4
  220. package/lib/ui/memory/concern-deletion.js.map +1 -1
  221. package/lib/ui/memory/concern-panel.js +1 -1
  222. package/lib/ui/memory/concern-panel.js.map +1 -1
  223. package/lib/ui/memory/memory-library.js +1 -1
  224. package/lib/ui/memory/memory-library.js.map +1 -1
  225. package/lib/ui/memory/memory-panel.js +1 -1
  226. package/lib/ui/memory/memory-panel.js.map +1 -1
  227. package/lib/ui/partner-components.js +1 -1
  228. package/lib/ui/partner-components.js.map +1 -1
  229. package/lib/ui/requirement-board.js +1 -1
  230. package/lib/ui/requirement-board.js.map +1 -1
  231. package/lib/ui/requirement-dialog.js +1 -1
  232. package/lib/ui/requirement-dialog.js.map +1 -1
  233. package/lib/ui/requirement-tasks-panel.js +1 -1
  234. package/lib/ui/requirement-tasks-panel.js.map +1 -1
  235. package/lib/ui/schedule-panel.d.ts.map +1 -1
  236. package/lib/ui/schedule-panel.js +20 -4
  237. package/lib/ui/schedule-panel.js.map +1 -1
  238. package/lib/ui/skills-panel.js +1 -1
  239. package/lib/ui/skills-panel.js.map +1 -1
  240. package/lib/ui/storage-settings.d.ts.map +1 -1
  241. package/lib/ui/storage-settings.js +2 -1
  242. package/lib/ui/storage-settings.js.map +1 -1
  243. package/lib/ui/task-board-stage.js +1 -1
  244. package/lib/ui/task-board-stage.js.map +1 -1
  245. package/lib/ui/workspace-components.js +1 -1
  246. package/lib/ui/workspace-components.js.map +1 -1
  247. package/lib/ui/workspace-navigation.d.ts +16 -16
  248. package/lib/ui/workspace-navigation.js +1 -1
  249. package/lib/ui/workspace-navigation.js.map +1 -1
  250. package/package.json +55 -41
  251. package/resources/skills/cinematic-director/manifest.json +205 -0
  252. package/resources/skills/cinematic-director/upstream/CHANGELOG.md +213 -0
  253. package/resources/skills/cinematic-director/upstream/CONTRIBUTING.md +316 -0
  254. package/resources/skills/cinematic-director/upstream/LICENSE +21 -0
  255. package/resources/skills/cinematic-director/upstream/README.md +507 -0
  256. package/resources/skills/cinematic-director/upstream/SKILL.md +420 -0
  257. package/resources/skills/cinematic-director/upstream/assets/beat-sheet-template.md +97 -0
  258. package/resources/skills/cinematic-director/upstream/assets/director-book-template.md +254 -0
  259. package/resources/skills/cinematic-director/upstream/assets/edit-timeline-template.md +147 -0
  260. package/resources/skills/cinematic-director/upstream/assets/keyframe-prompt-template.md +334 -0
  261. package/resources/skills/cinematic-director/upstream/assets/qc-checklist.md +153 -0
  262. package/resources/skills/cinematic-director/upstream/assets/shot-plan-template.md +95 -0
  263. package/resources/skills/cinematic-director/upstream/assets/sound-plan-template.md +181 -0
  264. package/resources/skills/cinematic-director/upstream/assets/video-prompt-template.md +305 -0
  265. package/resources/skills/cinematic-director/upstream/evals/run.md +69 -0
  266. package/resources/skills/cinematic-director/upstream/references/ai-video-tool-adapters.md +527 -0
  267. package/resources/skills/cinematic-director/upstream/references/blocking-and-staging.md +424 -0
  268. package/resources/skills/cinematic-director/upstream/references/cinematic-language.md +595 -0
  269. package/resources/skills/cinematic-director/upstream/references/continuity-bible.md +410 -0
  270. package/resources/skills/cinematic-director/upstream/references/director_styles/01_spielberg.md +192 -0
  271. package/resources/skills/cinematic-director/upstream/references/director_styles/02_hitchcock.md +193 -0
  272. package/resources/skills/cinematic-director/upstream/references/director_styles/03_kubrick.md +196 -0
  273. package/resources/skills/cinematic-director/upstream/references/director_styles/04_kurosawa.md +196 -0
  274. package/resources/skills/cinematic-director/upstream/references/director_styles/05_scorsese.md +195 -0
  275. package/resources/skills/cinematic-director/upstream/references/director_styles/06_fellini.md +197 -0
  276. package/resources/skills/cinematic-director/upstream/references/director_styles/07_bergman.md +197 -0
  277. package/resources/skills/cinematic-director/upstream/references/director_styles/08_tarkovsky.md +184 -0
  278. package/resources/skills/cinematic-director/upstream/references/director_styles/09_wong_kar_wai.md +189 -0
  279. package/resources/skills/cinematic-director/upstream/references/director_styles/10_nolan.md +185 -0
  280. package/resources/skills/cinematic-director/upstream/references/director_styles/11_villeneuve.md +188 -0
  281. package/resources/skills/cinematic-director/upstream/references/director_styles/12_fincher.md +185 -0
  282. package/resources/skills/cinematic-director/upstream/references/director_styles/13_refn.md +186 -0
  283. package/resources/skills/cinematic-director/upstream/references/director_styles/14_bi_gan.md +188 -0
  284. package/resources/skills/cinematic-director/upstream/references/director_styles/15_zhang_yimou.md +192 -0
  285. package/resources/skills/cinematic-director/upstream/references/director_styles/16_hou_hsiao_hsien.md +192 -0
  286. package/resources/skills/cinematic-director/upstream/references/director_styles/17_park_chan_wook.md +192 -0
  287. package/resources/skills/cinematic-director/upstream/references/director_styles/18_malick.md +191 -0
  288. package/resources/skills/cinematic-director/upstream/references/director_styles/19_michael_mann.md +192 -0
  289. package/resources/skills/cinematic-director/upstream/references/director_styles/20_coen_brothers.md +194 -0
  290. package/resources/skills/cinematic-director/upstream/references/director_styles/README.md +89 -0
  291. package/resources/skills/cinematic-director/upstream/references/director_styles/example_comparisons.md +140 -0
  292. package/resources/skills/cinematic-director/upstream/references/editing-and-assembly.md +263 -0
  293. package/resources/skills/cinematic-director/upstream/references/failure-modes.md +594 -0
  294. package/resources/skills/cinematic-director/upstream/references/genre-playbooks.md +407 -0
  295. package/resources/skills/cinematic-director/upstream/references/image-model-adapters.md +290 -0
  296. package/resources/skills/cinematic-director/upstream/references/lighting-and-color.md +349 -0
  297. package/resources/skills/cinematic-director/upstream/references/product-and-macro.md +207 -0
  298. package/resources/skills/cinematic-director/upstream/references/production-workflow.md +238 -0
  299. package/resources/skills/cinematic-director/upstream/references/prompt-lexicon.md +602 -0
  300. package/resources/skills/cinematic-director/upstream/references/sound-and-dialogue.md +364 -0
  301. package/resources/skills/director-skills/manifest.json +541 -0
  302. package/resources/skills/director-skills/upstream/CHANGELOG.md +32 -0
  303. package/resources/skills/director-skills/upstream/LICENSE +21 -0
  304. package/resources/skills/director-skills/upstream/MANIFEST.md +366 -0
  305. package/resources/skills/director-skills/upstream/README.md +251 -0
  306. package/resources/skills/director-skills/upstream/RESEARCH_PROVENANCE.md +37 -0
  307. package/resources/skills/director-skills/upstream/SKILL.md +114 -0
  308. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/SKILL.md +81 -0
  309. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/checklists/continuity_checklist.md +8 -0
  310. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/character_continuity_update.md +9 -0
  311. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/location_continuity_update.md +9 -0
  312. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/continuity_system.md +21 -0
  313. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/golden_image_workflow.md +29 -0
  314. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/identity_anchors.md +14 -0
  315. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/visual_bible_system.md +15 -0
  316. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/character_profile.md +15 -0
  317. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/continuity_checklist.md +11 -0
  318. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/costume_profile.md +12 -0
  319. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/location_profile.md +14 -0
  320. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/prop_profile.md +13 -0
  321. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/visual_style_bible.md +15 -0
  322. package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/tests/continuity_tests.md +6 -0
  323. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/SKILL.md +80 -0
  324. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/checklists/image_prompt_quality_checklist.md +10 -0
  325. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/examples/shot_list_to_image_prompts.md +4 -0
  326. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/image_prompt_components.md +22 -0
  327. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/lighting_and_photorealism.md +19 -0
  328. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/negative_prompt_patterns.md +18 -0
  329. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/prompt_anatomy.md +18 -0
  330. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/character_reference_sheet_prompt.md +5 -0
  331. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/cinematic_still_prompt.md +3 -0
  332. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/keyframe_prompt.md +6 -0
  333. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/location_reference_prompt.md +3 -0
  334. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/prop_prompt.md +3 -0
  335. package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/tests/image_prompt_completeness_tests.md +5 -0
  336. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/SKILL.md +84 -0
  337. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/checklists/video_prompt_quality_checklist.md +9 -0
  338. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/examples/image_prompt_to_video_prompt.md +3 -0
  339. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/ai_film_production_pipeline.md +21 -0
  340. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/audio_motion_timing.md +16 -0
  341. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/camera_lens_movement.md +26 -0
  342. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/negative_prompt_patterns.md +18 -0
  343. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/prompt_anatomy.md +18 -0
  344. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/video_prompt_components.md +25 -0
  345. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/image_to_video_prompt.md +5 -0
  346. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/text_to_video_prompt.md +5 -0
  347. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/video_beat_prompt.md +9 -0
  348. package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/tests/video_prompt_completeness_tests.md +5 -0
  349. package/resources/skills/director-skills/upstream/skills/model-adaptation/SKILL.md +82 -0
  350. package/resources/skills/director-skills/upstream/skills/model-adaptation/checklists/model_export_checklist.md +9 -0
  351. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/failed_model_transfer_diagnosis.md +5 -0
  352. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/image_prompt_translation.md +10 -0
  353. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/same_scene_across_models.md +9 -0
  354. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/universal_prompt_to_model_specific_exports.md +14 -0
  355. package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/video_prompt_translation.md +9 -0
  356. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/failure_modes_by_model.md +13 -0
  357. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/image_model_profiles.md +226 -0
  358. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_capability_matrix.md +24 -0
  359. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_update_protocol.md +10 -0
  360. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/parameter_compatibility.md +20 -0
  361. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/prompt_translation_rules.md +18 -0
  362. package/resources/skills/director-skills/upstream/skills/model-adaptation/references/video_model_profiles.md +251 -0
  363. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_comparison_table.md +4 -0
  364. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_specific_prompt_export.md +21 -0
  365. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/multi_model_export_package.md +18 -0
  366. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/prompt_translation_report.md +13 -0
  367. package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/universal_prompt_brief.md +25 -0
  368. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/model_routing_tests.md +8 -0
  369. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/prompt_translation_tests.md +7 -0
  370. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/research_provenance_tests.md +6 -0
  371. package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/unknown_capability_tests.md +7 -0
  372. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/SKILL.md +82 -0
  373. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/diagnostic_checklist.md +8 -0
  374. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/release_quality_checklist.md +9 -0
  375. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/failed_output_to_revised_prompt.md +10 -0
  376. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/final_prompt_package_export.md +10 -0
  377. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/failure_modes.md +13 -0
  378. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/iteration_diagnostics.md +17 -0
  379. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/revision_loops.md +17 -0
  380. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/story_voice_release_qc.md +30 -0
  381. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/failed_output_intake.md +13 -0
  382. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/final_production_package.md +11 -0
  383. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/prompt_revision_report.md +17 -0
  384. package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/tests/prompt_quality_checklist_tests.md +6 -0
  385. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/SKILL.md +81 -0
  386. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/checklists/scene_quality_checklist.md +8 -0
  387. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/examples/scene_to_screenplay_excerpt.md +18 -0
  388. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/dialogue_and_subtext.md +15 -0
  389. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/fountain_workflow.md +29 -0
  390. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/scene_construction.md +20 -0
  391. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/screenplay_format.md +18 -0
  392. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/beat_sheet.md +6 -0
  393. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/dialogue_pass.md +9 -0
  394. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/fountain_scene.md +25 -0
  395. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/screenplay_scene.md +19 -0
  396. package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/tests/screenplay_scene_tests.md +6 -0
  397. package/resources/skills/director-skills/upstream/skills/short-film-development/SKILL.md +83 -0
  398. package/resources/skills/director-skills/upstream/skills/short-film-development/checklists/concept_quality_checklist.md +8 -0
  399. package/resources/skills/director-skills/upstream/skills/short-film-development/examples/idea_to_logline.md +13 -0
  400. package/resources/skills/director-skills/upstream/skills/short-film-development/examples/logline_to_outline.md +10 -0
  401. package/resources/skills/director-skills/upstream/skills/short-film-development/references/ai_storytelling_workflow.md +46 -0
  402. package/resources/skills/director-skills/upstream/skills/short-film-development/references/continuity_handoff.md +8 -0
  403. package/resources/skills/director-skills/upstream/skills/short-film-development/references/screenplay_structure.md +19 -0
  404. package/resources/skills/director-skills/upstream/skills/short-film-development/references/story_development_workflow.md +23 -0
  405. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/beat_sheet.md +7 -0
  406. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/idea_intake.md +16 -0
  407. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/logline.md +10 -0
  408. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_film_treatment.md +23 -0
  409. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_story_plan.md +22 -0
  410. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_premise.md +19 -0
  411. package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_revision_audit.md +22 -0
  412. package/resources/skills/director-skills/upstream/skills/short-film-development/tests/output_format_tests.md +3 -0
  413. package/resources/skills/director-skills/upstream/skills/short-film-development/tests/routing_tests.md +7 -0
  414. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/SKILL.md +77 -0
  415. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/checklists/shotlist_quality_checklist.md +8 -0
  416. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/examples/screenplay_scene_to_shot_list.md +8 -0
  417. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/camera_plan.md +11 -0
  418. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/production_breakdown.md +11 -0
  419. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/shotlist_schema.md +21 -0
  420. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/asset_list.md +7 -0
  421. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/camera_plan.md +10 -0
  422. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/scene_breakdown.md +16 -0
  423. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/shot_list.md +5 -0
  424. package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/tests/screenplay_to_shotlist_tests.md +5 -0
  425. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/SKILL.md +77 -0
  426. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/checklists/style_quality_checklist.md +8 -0
  427. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/examples/genre_to_visual_direction.md +15 -0
  428. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/camera_lens_movement.md +26 -0
  429. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/cinematic_language.md +32 -0
  430. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/genre_style_tone.md +17 -0
  431. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/lighting_and_photorealism.md +19 -0
  432. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/templates/visual_style_bible.md +33 -0
  433. package/resources/skills/director-skills/upstream/skills/style-cinematography-director/tests/style_translation_tests.md +5 -0
  434. package/resources/skills/director-skills/upstream/tests/master_router_tests.md +80 -0
  435. package/resources/skills/drama-production/manifest.json +933 -0
  436. package/resources/skills/drama-production/upstream/LICENSE +21 -0
  437. package/resources/skills/drama-production/upstream/skills/short-drama/SKILL.md +153 -0
  438. package/resources/skills/drama-production/upstream/skills/short-drama/agents/openai.yaml +4 -0
  439. package/resources/skills/drama-production/upstream/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
  440. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/app.js +1263 -0
  441. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/index.html +114 -0
  442. package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/styles.css +297 -0
  443. package/resources/skills/drama-production/upstream/skills/short-drama/assets/production-observation.example.jsonl +2 -0
  444. package/resources/skills/drama-production/upstream/skills/short-drama/assets/project-template/short-drama.json +36 -0
  445. package/resources/skills/drama-production/upstream/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
  446. package/resources/skills/drama-production/upstream/skills/short-drama/references/audience-reveal.md +21 -0
  447. package/resources/skills/drama-production/upstream/skills/short-drama/references/contract-and-ownership.md +45 -0
  448. package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-documents.md +230 -0
  449. package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-workflow.md +98 -0
  450. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
  451. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
  452. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
  453. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
  454. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
  455. package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
  456. package/resources/skills/drama-production/upstream/skills/short-drama/references/knowhow-index.md +85 -0
  457. package/resources/skills/drama-production/upstream/skills/short-drama/references/look-development.md +51 -0
  458. package/resources/skills/drama-production/upstream/skills/short-drama/references/pickup-and-alternate.md +24 -0
  459. package/resources/skills/drama-production/upstream/skills/short-drama/references/production-form-profiles.md +126 -0
  460. package/resources/skills/drama-production/upstream/skills/short-drama/references/reference-roles.md +53 -0
  461. package/resources/skills/drama-production/upstream/skills/short-drama/references/runtime-preflight.md +24 -0
  462. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/creator_markdown_check.py +1413 -0
  463. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/dashboard_server.py +1798 -0
  464. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/project_tool.py +2454 -0
  465. package/resources/skills/drama-production/upstream/skills/short-drama/scripts/selftest.py +287 -0
  466. package/resources/skills/drama-production/upstream/skills/short-drama-assets/SKILL.md +76 -0
  467. package/resources/skills/drama-production/upstream/skills/short-drama-assets/agents/openai.yaml +4 -0
  468. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
  469. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
  470. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
  471. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
  472. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
  473. package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
  474. package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
  475. package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
  476. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/asset-review-checklist.md +82 -0
  477. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/character-and-look.md +190 -0
  478. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-delta.md +120 -0
  479. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-lock.md +122 -0
  480. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/identity-vs-variant.md +140 -0
  481. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/location-and-view.md +84 -0
  482. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/occurrence-extraction.md +108 -0
  483. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/prop-and-state.md +126 -0
  484. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/stage-contract.md +43 -0
  485. package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/voice-direction.md +179 -0
  486. package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/asset_check.py +267 -0
  487. package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/selftest.py +89 -0
  488. package/resources/skills/drama-production/upstream/skills/short-drama-develop/SKILL.md +157 -0
  489. package/resources/skills/drama-production/upstream/skills/short-drama-develop/agents/openai.yaml +4 -0
  490. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
  491. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/creative-brief.md +120 -0
  492. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
  493. package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/story-engine.md +181 -0
  494. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/adaptation-craft.md +219 -0
  495. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
  496. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/director-brief-craft.md +113 -0
  497. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/episode-design.md +509 -0
  498. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
  499. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
  500. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
  501. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
  502. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
  503. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
  504. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
  505. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
  506. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
  507. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
  508. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
  509. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
  510. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
  511. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards.md +92 -0
  512. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/mechanism-loop.md +282 -0
  513. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
  514. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/premise-devices.md +211 -0
  515. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
  516. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
  517. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/stage-contract.md +88 -0
  518. package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/story-craft.md +359 -0
  519. package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/episode_intake.py +699 -0
  520. package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/selftest.py +47 -0
  521. package/resources/skills/drama-production/upstream/skills/short-drama-edit/SKILL.md +146 -0
  522. package/resources/skills/drama-production/upstream/skills/short-drama-edit/agents/openai.yaml +4 -0
  523. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/README.md +60 -0
  524. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/package.json +15 -0
  525. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
  526. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
  527. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
  528. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
  529. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
  530. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
  531. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
  532. package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
  533. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/cut-craft.md +38 -0
  534. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/delivery-verify.md +29 -0
  535. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/generated-footage.md +54 -0
  536. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
  537. package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/stage-contract.md +51 -0
  538. package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
  539. package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/selftest.py +520 -0
  540. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/SKILL.md +73 -0
  541. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
  542. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
  543. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompts.md +42 -0
  544. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
  545. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-prompts.md +34 -0
  546. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
  547. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/character-and-look.md +153 -0
  548. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/common-recipe.md +241 -0
  549. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/edit-and-revision.md +110 -0
  550. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/location-plate.md +151 -0
  551. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/look-and-state-variant.md +97 -0
  552. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/lookdev-frame.md +34 -0
  553. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
  554. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/prop-plate.md +137 -0
  555. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
  556. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/stage-contract.md +32 -0
  557. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
  558. package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/selftest.py +95 -0
  559. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/SKILL.md +245 -0
  560. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
  561. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
  562. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
  563. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
  564. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
  565. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/chapter-extraction.md +144 -0
  566. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
  567. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
  568. package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
  569. package/resources/skills/drama-production/upstream/skills/short-drama-produce/SKILL.md +183 -0
  570. package/resources/skills/drama-production/upstream/skills/short-drama-produce/agents/openai.yaml +4 -0
  571. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/adapter-contract.md +219 -0
  572. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
  573. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-h3-video.md +86 -0
  574. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
  575. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  576. package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/seedance.md +64 -0
  577. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/fixture_adapter.py +77 -0
  578. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/production_tool.py +2205 -0
  579. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/provider_adapters.py +1747 -0
  580. package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/selftest.py +135 -0
  581. package/resources/skills/drama-production/upstream/skills/short-drama-review/SKILL.md +118 -0
  582. package/resources/skills/drama-production/upstream/skills/short-drama-review/agents/openai.yaml +4 -0
  583. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/finding-template.jsonl +2 -0
  584. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
  585. package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/verdict-template.json +32 -0
  586. package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
  587. package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-verdict.json +34 -0
  588. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/anti-template-repair.md +109 -0
  589. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/production-quality-gates.md +276 -0
  590. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/project-calibration.md +83 -0
  591. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/review-method.md +81 -0
  592. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-assets-prompts.md +111 -0
  593. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
  594. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-story-script.md +264 -0
  595. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-visual-motion.md +184 -0
  596. package/resources/skills/drama-production/upstream/skills/short-drama-review/references/stage-contract.md +28 -0
  597. package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/review_check.py +325 -0
  598. package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/selftest.py +87 -0
  599. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/SKILL.md +175 -0
  600. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/agents/openai.yaml +4 -0
  601. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
  602. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
  603. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-prompts.md +36 -0
  604. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
  605. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
  606. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
  607. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
  608. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/blocking-playbooks.md +216 -0
  609. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  610. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/coverage-audition.md +34 -0
  611. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/keyframe-craft.md +174 -0
  612. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  613. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/production-shot-grammar.md +279 -0
  614. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/review-and-fixtures.md +36 -0
  615. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/scene-visual-plan.md +30 -0
  616. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +155 -0
  617. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-craft.md +266 -0
  618. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-revision-identity.md +25 -0
  619. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/stage-contract.md +57 -0
  620. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/selftest.py +191 -0
  621. package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
  622. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/SKILL.md +154 -0
  623. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
  624. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
  625. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
  626. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +217 -0
  627. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
  628. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
  629. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
  630. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/video-prompts.md +67 -0
  631. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
  632. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/camera-audio-continuity.md +259 -0
  633. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/delivery-profile.md +273 -0
  634. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/generability.md +93 -0
  635. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/minimax-h3.md +253 -0
  636. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/motion-recipe.md +315 -0
  637. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/performance-action-timing.md +209 -0
  638. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/production-prompt-grammar.md +304 -0
  639. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/review-and-fixtures.md +139 -0
  640. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.0.md +50 -0
  641. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.5.md +122 -0
  642. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/stage-contract.md +60 -0
  643. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/target-model-profile.md +116 -0
  644. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
  645. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
  646. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
  647. package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
  648. package/resources/skills/drama-production/upstream/skills/short-drama-write/SKILL.md +99 -0
  649. package/resources/skills/drama-production/upstream/skills/short-drama-write/agents/openai.yaml +4 -0
  650. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/beats.jsonl +2 -0
  651. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
  652. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card.json +55 -0
  653. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/screenplay.md +36 -0
  654. package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
  655. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/dialogue-craft.md +526 -0
  656. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/production-format-dialect.md +273 -0
  657. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-handoff-capsule.md +25 -0
  658. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
  659. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/screenplay-format.md +266 -0
  660. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/script-craft.md +745 -0
  661. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/stage-contract.md +36 -0
  662. package/resources/skills/drama-production/upstream/skills/short-drama-write/references/substitutable-realization.md +107 -0
  663. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/duration_estimate.py +309 -0
  664. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
  665. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/selftest.py +229 -0
  666. package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
  667. package/resources/skills/viora-canvas-production/manifest.json +23 -0
  668. package/resources/skills/viora-canvas-production/references/canvas-contract.md +50 -0
  669. package/resources/skills/viora-canvas-production/references/creative-production.md +50 -0
  670. package/resources/skills/viora-canvas-production/references/generation-delivery.md +36 -0
  671. package/resources/skills/viora-canvas-production/references/production-ledger.md +25 -0
package/lib/client.js CHANGED
@@ -35,7 +35,7 @@ __export(client_exports, {
35
35
  inject: () => inject
36
36
  });
37
37
  module.exports = __toCommonJS(client_exports);
38
- var import_react50 = require("react");
38
+ var import_react51 = require("react");
39
39
 
40
40
  // src/workspace-ownership.ts
41
41
  var WORKSPACE_ACTIVATE_EVENT = "@lemoncat7/dsh-plugin-ui/workspace-activate";
@@ -56,7 +56,7 @@ function observePluginWorkspace(pluginId, close) {
56
56
  // src/client.tsx
57
57
  var import_dsh_client_ui_primitives24 = require("@deepseek-ai/dsh-client-ui-primitives");
58
58
 
59
- // node_modules/qrcode.react/lib/esm/index.js
59
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/qrcode.react/lib/esm/index.js
60
60
  var import_react = __toESM(require("react"), 1);
61
61
  var __defProp2 = Object.defineProperty;
62
62
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -851,13 +851,13 @@ function excavateModules(modules, excavation) {
851
851
  });
852
852
  });
853
853
  }
854
- function getImageSettings(cells, size, margin, imageSettings) {
854
+ function getImageSettings(cells, size2, margin, imageSettings) {
855
855
  if (imageSettings == null) {
856
856
  return null;
857
857
  }
858
858
  const numCells = cells.length + margin * 2;
859
- const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);
860
- const scale = numCells / size;
859
+ const defaultSize = Math.floor(size2 * DEFAULT_IMG_SCALE);
860
+ const scale = numCells / size2;
861
861
  const w = (imageSettings.width || defaultSize) * scale;
862
862
  const h = (imageSettings.height || defaultSize) * scale;
863
863
  const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;
@@ -887,7 +887,7 @@ function useQRCode({
887
887
  includeMargin,
888
888
  marginSize,
889
889
  imageSettings,
890
- size,
890
+ size: size2,
891
891
  boostLevel
892
892
  }) {
893
893
  let qrcode = import_react.default.useMemo(() => {
@@ -911,7 +911,7 @@ function useQRCode({
911
911
  const numCells2 = cells2.length + margin2 * 2;
912
912
  const calculatedImageSettings2 = getImageSettings(
913
913
  cells2,
914
- size,
914
+ size2,
915
915
  margin2,
916
916
  imageSettings
917
917
  );
@@ -921,7 +921,7 @@ function useQRCode({
921
921
  numCells: numCells2,
922
922
  calculatedImageSettings: calculatedImageSettings2
923
923
  };
924
- }, [qrcode, size, imageSettings, includeMargin, marginSize]);
924
+ }, [qrcode, size2, imageSettings, includeMargin, marginSize]);
925
925
  return {
926
926
  qrcode,
927
927
  margin,
@@ -942,7 +942,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
942
942
  function QRCodeCanvas2(props, forwardedRef) {
943
943
  const _a = props, {
944
944
  value,
945
- size = DEFAULT_SIZE,
945
+ size: size2 = DEFAULT_SIZE,
946
946
  level = DEFAULT_LEVEL,
947
947
  bgColor = DEFAULT_BGCOLOR,
948
948
  fgColor = DEFAULT_FGCOLOR,
@@ -987,7 +987,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
987
987
  includeMargin,
988
988
  marginSize,
989
989
  imageSettings,
990
- size
990
+ size: size2
991
991
  });
992
992
  import_react.default.useEffect(() => {
993
993
  if (_canvas.current != null) {
@@ -1008,8 +1008,8 @@ var QRCodeCanvas = import_react.default.forwardRef(
1008
1008
  }
1009
1009
  }
1010
1010
  const pixelRatio = window.devicePixelRatio || 1;
1011
- canvas.height = canvas.width = size * pixelRatio;
1012
- const scale = size / numCells * pixelRatio;
1011
+ canvas.height = canvas.width = size2 * pixelRatio;
1012
+ const scale = size2 / numCells * pixelRatio;
1013
1013
  ctx.scale(scale, scale);
1014
1014
  ctx.fillStyle = bgColor;
1015
1015
  ctx.fillRect(0, 0, numCells, numCells);
@@ -1042,7 +1042,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
1042
1042
  import_react.default.useEffect(() => {
1043
1043
  setIsImageLoaded(false);
1044
1044
  }, [imgSrc]);
1045
- const canvasStyle = __spreadValues({ height: size, width: size }, style);
1045
+ const canvasStyle = __spreadValues({ height: size2, width: size2 }, style);
1046
1046
  let img = null;
1047
1047
  if (imgSrc != null) {
1048
1048
  img = /* @__PURE__ */ import_react.default.createElement(
@@ -1063,8 +1063,8 @@ var QRCodeCanvas = import_react.default.forwardRef(
1063
1063
  "canvas",
1064
1064
  __spreadValues({
1065
1065
  style: canvasStyle,
1066
- height: size,
1067
- width: size,
1066
+ height: size2,
1067
+ width: size2,
1068
1068
  ref: setCanvasRef,
1069
1069
  role: "img"
1070
1070
  }, otherProps)
@@ -1076,7 +1076,7 @@ var QRCodeSVG = import_react.default.forwardRef(
1076
1076
  function QRCodeSVG2(props, forwardedRef) {
1077
1077
  const _a = props, {
1078
1078
  value,
1079
- size = DEFAULT_SIZE,
1079
+ size: size2 = DEFAULT_SIZE,
1080
1080
  level = DEFAULT_LEVEL,
1081
1081
  bgColor = DEFAULT_BGCOLOR,
1082
1082
  fgColor = DEFAULT_FGCOLOR,
@@ -1107,7 +1107,7 @@ var QRCodeSVG = import_react.default.forwardRef(
1107
1107
  includeMargin,
1108
1108
  marginSize,
1109
1109
  imageSettings,
1110
- size
1110
+ size: size2
1111
1111
  });
1112
1112
  let cellsToDraw = cells;
1113
1113
  let image = null;
@@ -1136,8 +1136,8 @@ var QRCodeSVG = import_react.default.forwardRef(
1136
1136
  return /* @__PURE__ */ import_react.default.createElement(
1137
1137
  "svg",
1138
1138
  __spreadValues({
1139
- height: size,
1140
- width: size,
1139
+ height: size2,
1140
+ width: size2,
1141
1141
  viewBox: `0 0 ${numCells} ${numCells}`,
1142
1142
  ref: forwardedRef,
1143
1143
  role: "img"
@@ -2216,6 +2216,14 @@ body[data-ds-dark-theme] .dsh-partner-workspace {
2216
2216
  .dsh-partner-concern-resolved article { display: grid; min-height: 38px; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 7px; padding: 4px 10px; border-bottom: 1px solid color-mix(in srgb, var(--partner-border) 60%, transparent); }
2217
2217
  .dsh-partner-concern-resolved article > span { display: grid; width: 20px; height: 20px; border-radius: 7px; place-items: center; color: var(--partner-accent); background: color-mix(in srgb, var(--partner-accent) 8%, transparent); }
2218
2218
  .dsh-partner-concern-resolved article strong { overflow: hidden; font-size: var(--partner-font-caption); font-weight: 560; text-overflow: ellipsis; white-space: nowrap; }
2219
+ .dsh-partner-concern-resolved-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; min-width: 0; }
2220
+ .dsh-partner-concern-resolved-actions > button { min-height: 32px; white-space: nowrap; }
2221
+ .dsh-partner-concern-resolved-actions > button.is-danger:hover { color: var(--partner-danger); border-color: var(--partner-danger); }
2222
+ @media (max-width: 600px) {
2223
+ .dsh-partner-concern-resolved article { grid-template-columns: 22px minmax(0, 1fr); padding-block: 8px; }
2224
+ .dsh-partner-concern-resolved-actions { grid-column: 2; }
2225
+ .dsh-partner-concern-resolved-actions > button { min-height: 44px; }
2226
+ }
2219
2227
  .dsh-partner-concern-archive { min-width: 0; border-top: 1px solid var(--partner-border); }
2220
2228
  .dsh-partner-concern-archive-toggle { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; min-height: 68px; padding: 14px 16px; border: 0; border-radius: 10px; text-align: left; color: var(--partner-text-secondary); background: transparent; font: inherit; cursor: pointer; transition: background .16s ease; }
2221
2229
  .dsh-partner-concern-archive-toggle > span { display: grid; gap: 5px; min-width: 0; }
@@ -2758,10 +2766,45 @@ body[data-ds-dark-theme] .dsh-partner-workspace {
2758
2766
  .dsh-partner-record-options button small { flex-shrink: 0; color: var(--partner-text-tertiary); }
2759
2767
  .dsh-partner-record-selection, .dsh-partner-record-summary { margin: 0; padding: 8px 12px; font-size: var(--partner-font-caption); color: var(--partner-text-secondary); overflow-wrap: anywhere; }
2760
2768
  .dsh-partner-record-selection { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
2769
+ .dsh-partner-workspace .attachment-storage-block { padding: 16px; gap: 10px; }
2770
+ #partner-attachment-storage { min-width: 0; font: var(--partner-font-body)/1.5 var(--partner-font-family); }
2771
+ #partner-attachment-storage :is(form, label, p) { margin: 0; }
2772
+ #partner-attachment-storage :is(.attachment-storage-overview, form, .attachment-storage-filters, .attachment-storage-selection) { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
2773
+ #partner-attachment-storage .attachment-storage-usage { flex: 1 1 180px; display: grid; gap: 2px; font-variant-numeric: tabular-nums; }
2774
+ #partner-attachment-storage small { color: var(--partner-text-secondary); font-size: 12px; }
2775
+ #partner-attachment-storage label { display: inline-flex; align-items: center; gap: 6px; min-width: 0; font-size: 13px; color: var(--partner-text-secondary); }
2776
+ #partner-attachment-storage :is(button, select, input[type=number]) { appearance: none !important; box-sizing: border-box; width: auto; min-width: 0; max-width: 100%; min-height: 32px; height: 32px; padding: 4px 10px !important; border: 1px solid var(--partner-border) !important; border-radius: 8px !important; background: var(--partner-control) !important; color: var(--partner-text) !important; box-shadow: none !important; font: 13px/1.4 var(--partner-font-family) !important; }
2777
+ #partner-attachment-storage button { cursor: pointer; white-space: nowrap; }
2778
+ #partner-attachment-storage button:hover:not(:disabled) { background: var(--partner-card-surface) !important; }
2779
+ #partner-attachment-storage input[type=number] { width: 86px; font-variant-numeric: tabular-nums; }
2780
+ #partner-attachment-storage select { max-width: 160px; padding-right: 28px !important; text-overflow: ellipsis; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23909095' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 7px center !important; }
2781
+ #partner-attachment-storage :is(button,input,select,summary):focus-visible { outline: 2px solid var(--partner-focus-ring); outline-offset: 2px; }
2782
+ #partner-attachment-storage :disabled { opacity: .5; cursor: not-allowed; }
2783
+ #attachment-storage-manager { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--partner-border); display: grid; gap: 10px; }
2784
+ #partner-attachment-storage .attachment-storage-list { max-height: 360px; overflow-y: auto; scrollbar-width: thin; }
2785
+ #partner-attachment-storage .attachment-storage-row { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--partner-border); }
2786
+ #partner-attachment-storage .attachment-storage-row > span { flex: 1; min-width: 0; }
2787
+ #partner-attachment-storage .attachment-storage-row strong { display: block; color: var(--partner-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2788
+ #partner-attachment-storage .attachment-storage-row small { display: block; overflow-wrap: anywhere; }
2789
+ #partner-attachment-storage input[type=checkbox] { flex: 0 0 16px; width: 16px; height: 16px; margin: 0; accent-color: var(--partner-accent-strong); }
2790
+ #partner-attachment-storage .attachment-storage-help { font-size: 12px; color: var(--partner-text-secondary); }
2791
+ #partner-attachment-storage .attachment-storage-help summary { cursor: pointer; padding: 4px 0; }
2792
+ #partner-attachment-storage .attachment-storage-help p { margin: 6px 0; }
2793
+ #partner-attachment-storage code { display: block; overflow-wrap: anywhere; font-size: 12px; }
2794
+ #partner-attachment-storage > :is([role=alert],[role=status]) { margin-top: 8px; font-size: 13px; }
2795
+ @media (pointer: coarse) {
2796
+ #partner-attachment-storage :is(button,select,input[type=number]) { min-height: 40px; height: 40px; }
2797
+ #partner-attachment-storage .attachment-storage-row { min-height: 44px; }
2798
+ }
2799
+ @media (max-width: 540px) {
2800
+ #partner-attachment-storage .attachment-storage-usage { flex-basis: 100%; }
2801
+ #partner-attachment-storage :is(select,input[type=number]) { font-size: 16px !important; }
2802
+ #partner-attachment-storage select { max-width: 145px; }
2803
+ }
2761
2804
  `;
2762
2805
 
2763
2806
  // src/ui/workspace-ui.css
2764
- var workspace_ui_default = '.dsh-partner-feature-hero-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }\n.dsh-partner-feature-page { gap: 20px; }\n.dsh-partner-feature-hero { min-height: 92px; padding-bottom: 18px; }\n.dsh-partner-feature-hero p { max-width: 62ch; text-wrap: pretty; }\n.dsh-partner-feature-block { gap: 16px; padding: 20px; border-radius: 18px; box-shadow: inset 0 1px 0 var(--partner-card-highlight), 0 5px 16px color-mix(in srgb, var(--partner-text) 4%, transparent); }\n.dsh-partner-feature-block > header { min-height: 40px; }\n.dsh-partner-feature-block > header strong { font-size: var(--partner-font-label); letter-spacing: -.01em; }\n.dsh-partner-feature-block > header small { margin-top: 1px; }\n\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) :where(input, textarea, select) { outline: 0; }\n.dsh-partner-workspace select:not([multiple]) {\n appearance: none;\n padding-right: 32px;\n border-color: var(--partner-border);\n border-radius: 9px;\n color: var(--partner-text);\n background-color: var(--partner-control);\n background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);\n background-position: calc(100% - 15px) calc(50% - 1px), calc(100% - 11px) calc(50% - 1px);\n background-repeat: no-repeat;\n background-size: 4px 4px, 4px 4px;\n box-shadow: inset 0 1px 0 color-mix(in srgb, var(--partner-card-highlight) 54%, transparent), inset 0 -1px 0 var(--partner-glass-rim-shadow);\n font-family: var(--partner-font-family);\n font-size: var(--partner-font-body);\n font-weight: 520;\n cursor: pointer;\n transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;\n}\n.dsh-partner-workspace select:not([multiple]):hover:not(:disabled) { border-color: color-mix(in srgb, var(--partner-text) 24%, var(--partner-border)); background-color: var(--partner-hover); }\n.dsh-partner-workspace select:not([multiple]):focus-visible { border-color: var(--partner-focus-ring); background-color: var(--partner-raised); box-shadow: 0 0 0 3px color-mix(in srgb, var(--partner-focus-ring) 16%, transparent), inset 0 1px 0 color-mix(in srgb, var(--partner-card-highlight) 66%, transparent); }\n.dsh-partner-workspace select:not([multiple]):disabled { cursor: not-allowed; }\n.dsh-partner-workspace select option { color: var(--partner-text); background: var(--partner-solid-control); font: inherit; }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer { align-items: center; margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--partner-separator); }\n.dsh-partner-form-footer-spacer { flex: 1; }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer .is-primary { color: var(--partner-on-accent); border-color: var(--partner-accent-strong); background: var(--partner-accent-strong); }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer .is-primary:hover { color: var(--partner-on-accent); border-color: var(--partner-accent-strong); background: color-mix(in srgb, var(--partner-accent-strong) 88%, #000); }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > .dsh-partner-workspace-notice { grid-column: 1 / -1; margin: 0; }\n.dsh-partner-feature-page button:disabled { cursor: not-allowed; opacity: .48; }\n.dsh-partner-identity-danger > div { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }\n.dsh-partner-identity-danger[data-confirming="true"] { margin-inline: -12px; padding: 16px 12px 0; border-top-color: color-mix(in srgb, var(--partner-danger) 30%, var(--partner-border)); background: color-mix(in srgb, var(--partner-danger) 4%, transparent); }\n.dsh-partner-identity-danger button.is-secondary { border-color: var(--partner-border); color: var(--partner-text-secondary); background: var(--partner-control); }\n.dsh-partner-identity-danger button.is-danger { color: var(--partner-on-accent); border-color: var(--partner-danger); background: var(--partner-danger); }\n.dsh-partner-profile-entries article > header button.is-danger { color: var(--partner-danger); background: color-mix(in srgb, var(--partner-danger) 8%, transparent); }\n\n.dsh-partner-skill-installed > article,\n.dsh-partner-market-grid > article,\n.dsh-partner-schedule-list > article { transition: border-color 150ms ease, background-color 150ms ease, transform 180ms var(--partner-ease-out); }\n.dsh-partner-skill-installed > article:hover,\n.dsh-partner-schedule-list > article:hover { border-color: color-mix(in srgb, var(--partner-text) 20%, var(--partner-border)); background: color-mix(in srgb, var(--partner-hover) 60%, var(--partner-raised)); transform: translate3d(0, -1px, 0); }\n.dsh-partner-schedule-meta { display: flex !important; align-items: center; flex-wrap: wrap; gap: 5px 10px !important; margin-top: 2px; }\n.dsh-partner-schedule-meta > em { position: relative; color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-style: normal; font-variant-numeric: tabular-nums; }\n.dsh-partner-schedule-meta > em + em::before { position: absolute; top: 50%; left: -6px; width: 2px; height: 2px; border-radius: 50%; background: var(--partner-text-tertiary); content: ""; }\n.dsh-partner-run-list > article { border-radius: 9px; transition: background-color 140ms ease; }\n.dsh-partner-run-list > article:hover { background: var(--partner-hover); }\n.dsh-partner-board > section { border-radius: 16px; box-shadow: none; }\n.dsh-partner-board .dsh-partner-task-card { box-shadow: none; }\n\n@media (hover: hover) {\n .dsh-partner-skill-installed .is-icon,\n .dsh-partner-schedule-list .is-icon { opacity: .34; transition: opacity 140ms ease, color 140ms ease, background-color 140ms ease; }\n .dsh-partner-skill-installed > article:hover .is-icon,\n .dsh-partner-schedule-list > article:hover .is-icon,\n .dsh-partner-skill-installed .is-icon:focus-visible,\n .dsh-partner-schedule-list .is-icon:focus-visible { opacity: 1; }\n}\n\n.dsh-partner-workspace-dialog-layer { position: fixed; z-index: 12; inset: 0; box-sizing: border-box; width: 100%; height: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; overflow: hidden; color: var(--partner-text); align-items: center; justify-content: center; padding: clamp(16px, 3vw, 32px); background: var(--partner-dialog-veil); }\n.dsh-partner-workspace-dialog-layer[open] { display: flex; }\n.dsh-partner-workspace-dialog-layer::backdrop { background: transparent; }\n.dsh-partner-workspace-dialog { position: relative; inset: auto; display: grid; grid-template-rows: auto minmax(0, 1fr); width: min(560px, 100%); max-width: none; height: auto; max-height: min(680px, 100%); margin: 0; padding: 0; overflow: hidden; border: 1px solid color-mix(in srgb, var(--partner-text) 18%, var(--partner-border)); border-radius: 16px; color: var(--partner-text); background: var(--partner-solid-panel); box-shadow: 0 22px 58px color-mix(in srgb, #000 18%, transparent), 0 4px 14px color-mix(in srgb, #000 8%, transparent), inset 0 1px 0 var(--partner-card-highlight); animation: dsh-partner-dialog-enter 200ms var(--partner-ease-out) both; }\n.dsh-partner-workspace-dialog.is-wide { width: min(680px, 100%); max-height: min(720px, 100%); }\n.dsh-partner-workspace-dialog > header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 20px; padding: 22px 22px 18px; border-bottom: 1px solid var(--partner-separator); background: var(--partner-solid-raised); }\n.dsh-partner-workspace-dialog > header > span { display: grid; gap: 5px; min-width: 0; }\n.dsh-partner-workspace-dialog > header small { color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-weight: 680; letter-spacing: .09em; }\n.dsh-partner-workspace-dialog > header strong { font-size: var(--partner-font-title); line-height: 1.25; font-weight: 660; letter-spacing: -.025em; text-wrap: balance; }\n.dsh-partner-workspace-dialog > header p { max-width: 58ch; margin: 0; color: var(--partner-text-secondary); font-size: var(--partner-font-body); line-height: 1.55; text-wrap: pretty; }\n.dsh-partner-workspace-dialog > header button { display: grid; place-items: center; width: 32px; min-height: 32px; padding: 0; border: 1px solid transparent; border-radius: 9px; color: var(--partner-text-tertiary); background: transparent; box-shadow: none; cursor: pointer; transition: color 140ms ease, border-color 140ms ease, background-color 140ms ease, transform 140ms var(--partner-ease-out); }\n.dsh-partner-workspace-dialog > header button:hover { border-color: var(--partner-border); color: var(--partner-text); background: var(--partner-hover); }\n.dsh-partner-workspace-dialog > header button:active { transform: scale(.94); }\n.dsh-partner-workspace-dialog-body { min-width: 0; min-height: 0; overflow: auto; padding: 20px 22px 24px; overscroll-behavior: contain; scrollbar-gutter: stable; }\n.dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }\n.dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-task-detail) > footer:last-child { position: sticky; z-index: 2; bottom: -24px; margin: 4px -22px -24px; padding: 14px 22px; border-top: 1px solid var(--partner-separator); background: var(--partner-solid-raised); box-shadow: 0 -10px 24px color-mix(in srgb, #000 5%, transparent); }\n\n.dsh-partner-workspace-notice { display: grid; grid-template-columns: 7px minmax(0, 1fr); align-items: start; gap: 10px; margin: 0 0 14px; padding: 11px 13px; border: 1px solid var(--partner-border); border-radius: 10px; color: var(--partner-text-secondary); background: var(--partner-control); font-size: var(--partner-font-body); line-height: 1.5; }\n.dsh-partner-workspace-notice > i { width: 7px; height: 7px; margin-top: .42em; border-radius: 50%; background: var(--partner-text-tertiary); }\n.dsh-partner-workspace-notice.is-error { border-color: color-mix(in srgb, var(--partner-danger) 30%, var(--partner-border)); color: var(--partner-danger); }\n.dsh-partner-workspace-notice.is-error > i { background: var(--partner-danger); }\n.dsh-partner-workspace-notice.is-warning > i { background: var(--partner-warning); }\n.dsh-partner-workspace-notice.is-success > i { background: var(--partner-success); }\n\n.dsh-partner-collection-empty { display: grid; justify-items: center; padding: 38px 24px 42px; color: var(--partner-text-secondary); text-align: center; }\n.dsh-partner-collection-empty > span { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 12px; border: 1px solid var(--partner-border); border-radius: 13px; color: var(--partner-text-tertiary); background: var(--partner-control); }\n.dsh-partner-collection-empty > strong { color: var(--partner-text); font-size: var(--partner-font-label); font-weight: 620; }\n.dsh-partner-collection-empty > p { max-width: 46ch; margin: 6px 0 14px; color: var(--partner-text-tertiary); font-size: var(--partner-font-body); line-height: 1.55; text-wrap: pretty; }\n.dsh-partner-collection-empty > button { margin-top: 14px; }\n\n.dsh-partner-collection-skeleton { display: grid; gap: 8px; padding: 6px 0; }\n.dsh-partner-collection-skeleton > i { display: block; height: 68px; overflow: hidden; border: 1px solid var(--partner-border); border-radius: 12px; background: linear-gradient(100deg, var(--partner-control) 20%, var(--partner-hover) 38%, var(--partner-control) 56%); background-size: 220% 100%; animation: dsh-partner-skeleton 1.4s ease-in-out infinite; }\n\n.dsh-partner-count-label { display: inline-flex; align-items: baseline; gap: 5px; color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-variant-numeric: tabular-nums; }\n.dsh-partner-count-label > b { color: var(--partner-text); font-size: var(--partner-font-label); font-weight: 650; }\n\n@keyframes dsh-partner-dialog-enter { from { opacity: 0; transform: translate3d(0, 10px, 0) scale(.985); } to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } }\n@keyframes dsh-partner-skeleton { 0% { background-position: 120% 0; } 100% { background-position: -120% 0; } }\n\n@media (max-width: 760px) {\n .dsh-partner-workspace-dialog-layer { align-items: stretch; padding: 0; }\n .dsh-partner-workspace-dialog, .dsh-partner-workspace-dialog.is-wide { width: 100%; height: 100%; max-height: none; border-width: 0; border-radius: 0; }\n .dsh-partner-workspace-dialog > header { padding: 18px 18px 15px; }\n .dsh-partner-workspace-dialog-body { padding: 18px 18px 26px; }\n .dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-task-detail) > footer:last-child { bottom: -26px; margin: 4px -18px -26px; padding: 13px 18px max(13px, env(safe-area-inset-bottom)); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-partner-workspace-dialog, .dsh-partner-collection-skeleton > i { animation: none; }\n}\n.dsh-partner-feature-form > .dsh-partner-form-help { color: var(--partner-text-secondary); background: transparent; padding: 0; overflow-wrap: anywhere; line-height: 1.6; }\n';
2807
+ var workspace_ui_default = '.dsh-partner-feature-hero-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }\n.dsh-partner-feature-page { gap: 20px; }\n.dsh-partner-feature-hero { min-height: 92px; padding-bottom: 18px; }\n.dsh-partner-feature-hero p { max-width: 62ch; text-wrap: pretty; }\n.dsh-partner-feature-block { gap: 16px; padding: 20px; border-radius: 18px; box-shadow: inset 0 1px 0 var(--partner-card-highlight), 0 5px 16px color-mix(in srgb, var(--partner-text) 4%, transparent); }\n.dsh-partner-feature-block > header { min-height: 40px; }\n.dsh-partner-feature-block > header strong { font-size: var(--partner-font-label); letter-spacing: -.01em; }\n.dsh-partner-feature-block > header small { margin-top: 1px; }\n\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) :where(input, textarea, select) { outline: 0; }\n.dsh-partner-workspace select:not([multiple]) {\n appearance: none;\n padding-right: 32px;\n border-color: var(--partner-border);\n border-radius: 9px;\n color: var(--partner-text);\n background-color: var(--partner-control);\n background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);\n background-position: calc(100% - 15px) calc(50% - 1px), calc(100% - 11px) calc(50% - 1px);\n background-repeat: no-repeat;\n background-size: 4px 4px, 4px 4px;\n box-shadow: inset 0 1px 0 color-mix(in srgb, var(--partner-card-highlight) 54%, transparent), inset 0 -1px 0 var(--partner-glass-rim-shadow);\n font-family: var(--partner-font-family);\n font-size: var(--partner-font-body);\n font-weight: 520;\n cursor: pointer;\n transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;\n}\n.dsh-partner-workspace select:not([multiple]):hover:not(:disabled) { border-color: color-mix(in srgb, var(--partner-text) 24%, var(--partner-border)); background-color: var(--partner-hover); }\n.dsh-partner-workspace select:not([multiple]):focus-visible { border-color: var(--partner-focus-ring); background-color: var(--partner-raised); box-shadow: 0 0 0 3px color-mix(in srgb, var(--partner-focus-ring) 16%, transparent), inset 0 1px 0 color-mix(in srgb, var(--partner-card-highlight) 66%, transparent); }\n.dsh-partner-workspace select:not([multiple]):disabled { cursor: not-allowed; }\n.dsh-partner-workspace select option { color: var(--partner-text); background: var(--partner-solid-control); font: inherit; }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer { align-items: center; margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--partner-separator); }\n.dsh-partner-form-footer-spacer { flex: 1; }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer .is-primary { color: var(--partner-on-accent); border-color: var(--partner-accent-strong); background: var(--partner-accent-strong); }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > footer .is-primary:hover { color: var(--partner-on-accent); border-color: var(--partner-accent-strong); background: color-mix(in srgb, var(--partner-accent-strong) 88%, #000); }\n:is(.dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) > .dsh-partner-workspace-notice { grid-column: 1 / -1; margin: 0; }\n.dsh-partner-feature-page button:disabled { cursor: not-allowed; opacity: .48; }\n.dsh-partner-identity-danger > div { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }\n.dsh-partner-identity-danger[data-confirming="true"] { margin-inline: -12px; padding: 16px 12px 0; border-top-color: color-mix(in srgb, var(--partner-danger) 30%, var(--partner-border)); background: color-mix(in srgb, var(--partner-danger) 4%, transparent); }\n.dsh-partner-identity-danger button.is-secondary { border-color: var(--partner-border); color: var(--partner-text-secondary); background: var(--partner-control); }\n.dsh-partner-identity-danger button.is-danger { color: var(--partner-on-accent); border-color: var(--partner-danger); background: var(--partner-danger); }\n.dsh-partner-profile-entries article > header button.is-danger { color: var(--partner-danger); background: color-mix(in srgb, var(--partner-danger) 8%, transparent); }\n\n.dsh-partner-skill-installed > article,\n.dsh-partner-market-grid > article,\n.dsh-partner-schedule-list > article { transition: border-color 150ms ease, background-color 150ms ease, transform 180ms var(--partner-ease-out); }\n.dsh-partner-skill-installed > article:hover,\n.dsh-partner-schedule-list > article:hover { border-color: color-mix(in srgb, var(--partner-text) 20%, var(--partner-border)); background: color-mix(in srgb, var(--partner-hover) 60%, var(--partner-raised)); transform: translate3d(0, -1px, 0); }\n.dsh-partner-schedule-meta { display: flex !important; align-items: center; flex-wrap: wrap; gap: 5px 10px !important; margin-top: 2px; }\n.dsh-partner-schedule-list details { min-width: 0; max-width: 100%; }\n.dsh-partner-schedule-list details p,\n.dsh-partner-schedule-list details summary,\n.dsh-partner-schedule-list strong { white-space: normal; overflow-wrap: anywhere; }\n.dsh-partner-schedule-list details p { overflow: visible; text-overflow: clip; }\n.dsh-partner-schedule-list details summary { cursor: pointer; }\n.dsh-partner-schedule-meta > em { position: relative; color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-style: normal; font-variant-numeric: tabular-nums; }\n.dsh-partner-schedule-meta > em + em::before { position: absolute; top: 50%; left: -6px; width: 2px; height: 2px; border-radius: 50%; background: var(--partner-text-tertiary); content: ""; }\n.dsh-partner-run-list > article { border-radius: 9px; transition: background-color 140ms ease; }\n.dsh-partner-run-list > article:hover { background: var(--partner-hover); }\n.dsh-partner-board > section { border-radius: 16px; box-shadow: none; }\n.dsh-partner-board .dsh-partner-task-card { box-shadow: none; }\n\n@media (hover: hover) {\n .dsh-partner-skill-installed .is-icon,\n .dsh-partner-schedule-list .is-icon { opacity: .34; transition: opacity 140ms ease, color 140ms ease, background-color 140ms ease; }\n .dsh-partner-skill-installed > article:hover .is-icon,\n .dsh-partner-schedule-list > article:hover .is-icon,\n .dsh-partner-skill-installed .is-icon:focus-visible,\n .dsh-partner-schedule-list .is-icon:focus-visible { opacity: 1; }\n}\n\n.dsh-partner-workspace-dialog-layer { position: fixed; z-index: 12; inset: 0; box-sizing: border-box; width: 100%; height: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; overflow: hidden; color: var(--partner-text); align-items: center; justify-content: center; padding: clamp(16px, 3vw, 32px); background: var(--partner-dialog-veil); }\n.dsh-partner-workspace-dialog-layer[open] { display: flex; }\n.dsh-partner-workspace-dialog-layer::backdrop { background: transparent; }\n.dsh-partner-workspace-dialog { position: relative; inset: auto; display: grid; grid-template-rows: auto minmax(0, 1fr); width: min(560px, 100%); max-width: none; height: auto; max-height: min(680px, 100%); margin: 0; padding: 0; overflow: hidden; border: 1px solid color-mix(in srgb, var(--partner-text) 18%, var(--partner-border)); border-radius: 16px; color: var(--partner-text); background: var(--partner-solid-panel); box-shadow: 0 22px 58px color-mix(in srgb, #000 18%, transparent), 0 4px 14px color-mix(in srgb, #000 8%, transparent), inset 0 1px 0 var(--partner-card-highlight); animation: dsh-partner-dialog-enter 200ms var(--partner-ease-out) both; }\n.dsh-partner-workspace-dialog.is-wide { width: min(680px, 100%); max-height: min(720px, 100%); }\n.dsh-partner-workspace-dialog > header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 20px; padding: 22px 22px 18px; border-bottom: 1px solid var(--partner-separator); background: var(--partner-solid-raised); }\n.dsh-partner-workspace-dialog > header > span { display: grid; gap: 5px; min-width: 0; }\n.dsh-partner-workspace-dialog > header small { color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-weight: 680; letter-spacing: .09em; }\n.dsh-partner-workspace-dialog > header strong { font-size: var(--partner-font-title); line-height: 1.25; font-weight: 660; letter-spacing: -.025em; text-wrap: balance; }\n.dsh-partner-workspace-dialog > header p { max-width: 58ch; margin: 0; color: var(--partner-text-secondary); font-size: var(--partner-font-body); line-height: 1.55; text-wrap: pretty; }\n.dsh-partner-workspace-dialog > header button { display: grid; place-items: center; width: 32px; min-height: 32px; padding: 0; border: 1px solid transparent; border-radius: 9px; color: var(--partner-text-tertiary); background: transparent; box-shadow: none; cursor: pointer; transition: color 140ms ease, border-color 140ms ease, background-color 140ms ease, transform 140ms var(--partner-ease-out); }\n.dsh-partner-workspace-dialog > header button:hover { border-color: var(--partner-border); color: var(--partner-text); background: var(--partner-hover); }\n.dsh-partner-workspace-dialog > header button:active { transform: scale(.94); }\n.dsh-partner-workspace-dialog-body { min-width: 0; min-height: 0; overflow: auto; padding: 20px 22px 24px; overscroll-behavior: contain; scrollbar-gutter: stable; }\n.dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-feature-form, .dsh-partner-task-form, .dsh-partner-schedule-form) { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }\n.dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-task-detail) > footer:last-child { position: sticky; z-index: 2; bottom: -24px; margin: 4px -22px -24px; padding: 14px 22px; border-top: 1px solid var(--partner-separator); background: var(--partner-solid-raised); box-shadow: 0 -10px 24px color-mix(in srgb, #000 5%, transparent); }\n\n.dsh-partner-workspace-notice { display: grid; grid-template-columns: 7px minmax(0, 1fr); align-items: start; gap: 10px; margin: 0 0 14px; padding: 11px 13px; border: 1px solid var(--partner-border); border-radius: 10px; color: var(--partner-text-secondary); background: var(--partner-control); font-size: var(--partner-font-body); line-height: 1.5; }\n.dsh-partner-workspace-notice > i { width: 7px; height: 7px; margin-top: .42em; border-radius: 50%; background: var(--partner-text-tertiary); }\n.dsh-partner-workspace-notice.is-error { border-color: color-mix(in srgb, var(--partner-danger) 30%, var(--partner-border)); color: var(--partner-danger); }\n.dsh-partner-workspace-notice.is-error > i { background: var(--partner-danger); }\n.dsh-partner-workspace-notice.is-warning > i { background: var(--partner-warning); }\n.dsh-partner-workspace-notice.is-success > i { background: var(--partner-success); }\n\n.dsh-partner-collection-empty { display: grid; justify-items: center; padding: 38px 24px 42px; color: var(--partner-text-secondary); text-align: center; }\n.dsh-partner-collection-empty > span { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 12px; border: 1px solid var(--partner-border); border-radius: 13px; color: var(--partner-text-tertiary); background: var(--partner-control); }\n.dsh-partner-collection-empty > strong { color: var(--partner-text); font-size: var(--partner-font-label); font-weight: 620; }\n.dsh-partner-collection-empty > p { max-width: 46ch; margin: 6px 0 14px; color: var(--partner-text-tertiary); font-size: var(--partner-font-body); line-height: 1.55; text-wrap: pretty; }\n.dsh-partner-collection-empty > button { margin-top: 14px; }\n\n.dsh-partner-collection-skeleton { display: grid; gap: 8px; padding: 6px 0; }\n.dsh-partner-collection-skeleton > i { display: block; height: 68px; overflow: hidden; border: 1px solid var(--partner-border); border-radius: 12px; background: linear-gradient(100deg, var(--partner-control) 20%, var(--partner-hover) 38%, var(--partner-control) 56%); background-size: 220% 100%; animation: dsh-partner-skeleton 1.4s ease-in-out infinite; }\n\n.dsh-partner-count-label { display: inline-flex; align-items: baseline; gap: 5px; color: var(--partner-text-tertiary); font-size: var(--partner-font-caption); font-variant-numeric: tabular-nums; }\n.dsh-partner-count-label > b { color: var(--partner-text); font-size: var(--partner-font-label); font-weight: 650; }\n\n@keyframes dsh-partner-dialog-enter { from { opacity: 0; transform: translate3d(0, 10px, 0) scale(.985); } to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } }\n@keyframes dsh-partner-skeleton { 0% { background-position: 120% 0; } 100% { background-position: -120% 0; } }\n\n@media (max-width: 760px) {\n .dsh-partner-workspace-dialog-layer { align-items: stretch; padding: 0; }\n .dsh-partner-workspace-dialog, .dsh-partner-workspace-dialog.is-wide { width: 100%; height: 100%; max-height: none; border-width: 0; border-radius: 0; }\n .dsh-partner-workspace-dialog > header { padding: 18px 18px 15px; }\n .dsh-partner-workspace-dialog-body { padding: 18px 18px 26px; }\n .dsh-partner-workspace-dialog-body > :is(form, .dsh-partner-task-detail) > footer:last-child { bottom: -26px; margin: 4px -18px -26px; padding: 13px 18px max(13px, env(safe-area-inset-bottom)); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dsh-partner-workspace-dialog, .dsh-partner-collection-skeleton > i { animation: none; }\n}\n.dsh-partner-feature-form > .dsh-partner-form-help { color: var(--partner-text-secondary); background: transparent; padding: 0; overflow-wrap: anywhere; line-height: 1.6; }\n';
2765
2808
 
2766
2809
  // src/ui/requirement-board.css
2767
2810
  var requirement_board_default = ".dsh-partner-requirement-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 18px; }\n.dsh-partner-requirement-toolbar .dsh-partner-board-statuses { margin: 0; flex: 1; }\n.dsh-partner-requirement-toolbar .dsh-partner-board-search { flex: 0 1 300px; }\n.dsh-partner-requirement-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 12px; }\n.dsh-partner-requirement-card { min-width: 0; border: 1px solid var(--partner-border); border-radius: 16px; overflow: hidden; background: var(--partner-raised); }\n.dsh-partner-feature-page .dsh-partner-requirement-open { display: flex; flex-direction: column; align-items: stretch; gap: 12px; width: 100%; min-height: 186px; padding: 18px; border: 0; border-radius: 0; background: transparent; color: var(--partner-text); text-align: left; box-shadow: none; }\n.dsh-partner-requirement-open:hover, .dsh-partner-requirement-open:focus-visible { background: var(--partner-hover); }\n.dsh-partner-requirement-open > strong { font-size: var(--partner-font-label); line-height: 1.5; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow-wrap: anywhere; }\n.dsh-partner-requirement-open > p { margin: 0; min-height: 3em; font-size: var(--partner-font-body); color: var(--partner-text-secondary); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }\n.dsh-partner-requirement-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: var(--partner-font-caption); color: var(--partner-text-secondary); }\n.dsh-partner-requirement-meta > span { border-radius: 6px; padding: 3px 7px; background: var(--partner-control); color: var(--partner-text); }\n.dsh-partner-requirement-meta small { font: inherit; overflow-wrap: anywhere; }\n.dsh-partner-requirement-progress { height: 4px; width: 100%; border-radius: 4px; background: var(--partner-border); overflow: hidden; margin-top: auto; }\n.dsh-partner-requirement-progress > i { display: block; height: 100%; border-radius: inherit; background: var(--partner-text-secondary); }\n.dsh-partner-requirement-card > footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 18px; border-top: 1px solid var(--partner-separator); }\n.dsh-partner-requirement-card > footer > small { color: var(--partner-text-secondary); font-size: var(--partner-font-caption); }\n.dsh-partner-requirement-card > footer > button { border: 0; background: transparent; box-shadow: none; }\n.dsh-partner-requirement-legacy { width: 100%; display: flex; gap: 12px; margin-top: 20px; padding: 14px !important; text-align: left; }\n.dsh-partner-requirement-legacy > span { flex: 1; color: var(--partner-text-secondary); }\n.dsh-partner-requirement-breadcrumb { display: flex; align-items: center; gap: 8px; min-width: 0; margin-bottom: 12px; font-size: var(--partner-font-body); }\n.dsh-partner-requirement-breadcrumb > span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }\n.dsh-partner-requirement-breadcrumb > button, .dsh-partner-requirement-breadcrumb > svg { flex-shrink: 0; }\n.dsh-partner-requirement-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding-block: 12px; border-block: 1px solid var(--partner-separator); }\n.dsh-partner-requirement-facts > span { display: grid; gap: 6px; color: var(--partner-text-secondary); font-size: var(--partner-font-caption); }\n.dsh-partner-requirement-facts b { color: var(--partner-text); font-weight: 550; overflow-wrap: anywhere; }\n.dsh-partner-requirement-disclosure { border-top: 1px solid var(--partner-separator); padding-top: 8px; }\n.dsh-partner-requirement-disclosure > summary { display: flex; align-items: center; gap: 8px; min-height: 40px; cursor: pointer; color: var(--partner-text-secondary); font-size: var(--partner-font-body); list-style: none; }\n.dsh-partner-requirement-disclosure > summary::-webkit-details-marker { display: none; }\n.dsh-partner-requirement-disclosure > summary::before { content: ''; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); }\n.dsh-partner-requirement-disclosure[open] > summary::before { transform: rotate(45deg); }\n.dsh-partner-requirement-disclosure > p { color: var(--partner-text-secondary); font-size: var(--partner-font-body); line-height: 1.6; }\n.dsh-partner-requirement-disclosure > label { display: grid; gap: 8px; margin-bottom: 12px; }\n.dsh-partner-requirement-actions { display: flex; flex-wrap: wrap; gap: 8px; }\n.dsh-partner-requirement-owner { display: grid; gap: 8px; font-size: var(--partner-font-body); }\n.dsh-partner-requirement-detail :is(textarea, select) { box-sizing: border-box; width: 100%; min-height: 40px; padding: 8px 10px; border: 1px solid var(--partner-border); border-radius: 9px; background: var(--partner-control); color: var(--partner-text); font: var(--partner-font-body)/1.5 var(--partner-font-family); }\n.dsh-partner-requirement-detail textarea { resize: vertical; }\n.dsh-partner-feature-page.is-board :is(button, summary, textarea):focus-visible { outline: 2px solid var(--partner-focus-ring); outline-offset: 2px; }\n.dsh-partner-feature-page.is-board button:not(:disabled):active { transform: none; }\n.dsh-partner-requirement-detail button.is-primary { background: var(--partner-accent-strong); color: var(--partner-on-accent); border-color: var(--partner-accent-strong); }\n.dsh-partner-requirement-detail button.is-danger { color: var(--partner-danger); }\n.dsh-partner-feature-page.is-board > .dsh-partner-feature-page.is-board { padding: 0; }\n.dsh-partner-requirement-detail > footer { display: flex; justify-content: flex-end; gap: 8px; }\n.dsh-partner-requirement-detail .dsh-partner-task-result { overflow-wrap: anywhere; }\n@media (max-width: 760px) {\n .dsh-partner-requirement-toolbar { align-items: stretch; }\n .dsh-partner-requirement-toolbar .dsh-partner-board-statuses { display: flex; }\n .dsh-partner-requirement-toolbar .dsh-partner-board-search { flex-basis: 100%; }\n .dsh-partner-requirement-facts { grid-template-columns: 1fr 1fr; }\n .dsh-partner-requirement-legacy { flex-wrap: wrap; }\n .dsh-partner-requirement-legacy > span { flex-basis: 100%; }\n .dsh-partner-requirement-detail button, .dsh-partner-requirement-card button, .dsh-partner-requirement-disclosure summary { min-height: 44px; }\n}\n";
@@ -3287,7 +3330,7 @@ function WorkspaceDialog({ eyebrow = "CREATE & CONFIGURE", title, detail, close,
3287
3330
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { id: titleId, children: title }),
3288
3331
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { id: detailId, children: detail })
3289
3332
  ] }),
3290
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", onClick: close, "aria-label": "\u5173\u95ED", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconCloseOutline16, { size: 16 }) })
3333
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", onClick: close, "aria-label": "\u5173\u95ED", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconCloseOutlineRegular, { size: 16 }) })
3291
3334
  ] }),
3292
3335
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dsh-partner-workspace-dialog-body", children })
3293
3336
  ] }) });
@@ -3300,7 +3343,7 @@ function WorkspaceNotice({ children, kind = "error" }) {
3300
3343
  }
3301
3344
  function CollectionEmpty({ title, detail, action }) {
3302
3345
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsh-partner-collection-empty", children: [
3303
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconAgentPresetOutline16, { size: 18 }) }),
3346
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconAgentPresetOutlineRegular, { size: 18 }) }),
3304
3347
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: title }),
3305
3348
  detail && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: detail }),
3306
3349
  action
@@ -3360,7 +3403,7 @@ function SectionHeading({ eyebrow, title, detail }) {
3360
3403
  }
3361
3404
  function ContentState({ title, detail, action, compact = false }) {
3362
3405
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: `dsh-partner-state${compact ? " is-compact" : ""}`, children: [
3363
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.IconAgentPresetOutline16, { size: 20 }),
3406
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.IconAgentPresetOutlineRegular, { size: 20 }),
3364
3407
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("strong", { children: title }),
3365
3408
  detail && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: detail }),
3366
3409
  action
@@ -4006,11 +4049,11 @@ function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, chan
4006
4049
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "dsh-partner-memory-library-v2", children: [
4007
4050
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("nav", { className: "dsh-partner-memory-nav", "aria-label": "\u8BB0\u5FC6\u5185\u5BB9", children: [
4008
4051
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", "aria-pressed": mode === "memory" || mode === "scenes", onClick: () => selectMode("memory"), children: [
4009
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutline16, { size: 16 }),
4052
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutlineRegular, { size: 16 }),
4010
4053
  "\u8BB0\u5FC6"
4011
4054
  ] }),
4012
4055
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", "aria-pressed": mode === "reflection" || mode === "history", onClick: () => selectMode("reflection"), children: [
4013
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconBrowseOutline16, { size: 16 }),
4056
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconBrowseOutlineRegular, { size: 16 }),
4014
4057
  "\u56DE\u987E"
4015
4058
  ] }),
4016
4059
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("details", { className: "dsh-partner-memory-more", ref: more, onKeyDown: (event) => {
@@ -4026,16 +4069,16 @@ function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, chan
4026
4069
  ] }),
4027
4070
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
4028
4071
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("scenes"), children: [
4029
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutline16, { size: 16 }),
4072
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutlineRegular, { size: 16 }),
4030
4073
  "\u573A\u666F\u6458\u8981"
4031
4074
  ] }),
4032
4075
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("experiences"), children: [
4033
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconListPenOutline16, { size: 16 }),
4076
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconListPenOutlineRegular, { size: 16 }),
4034
4077
  "\u7ECF\u9A8C\u5BA1\u6838 ",
4035
4078
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("small", { children: layers?.experiences.filter((item) => item.status === "draft").length ?? 0 })
4036
4079
  ] }),
4037
4080
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("graph"), children: [
4038
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconLinkOutline16, { size: 16 }),
4081
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconLinkOutlineRegular, { size: 16 }),
4039
4082
  "\u5173\u7CFB\u56FE\u8C31"
4040
4083
  ] })
4041
4084
  ] })
@@ -4346,7 +4389,7 @@ function MemoryPanel({ companion, snapshot, openSession, startSession, renewSess
4346
4389
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "dsh-partner-memory-badge", children: companion.automation.memory.enabled ? "\u5B66\u4E60\u5DF2\u5F00\u542F" : "\u5B66\u4E60\u5DF2\u6682\u505C" }),
4347
4390
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("button", { type: "button", "aria-label": "\u5237\u65B0\u8BB0\u5FC6", disabled: collection.loading || layers.loading, onClick: () => {
4348
4391
  void reload();
4349
- }, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_dsh_client_ui_primitives4.IconRefreshOutline16, { size: 16 }) })
4392
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_dsh_client_ui_primitives4.IconRefreshOutlineRegular, { size: 16 }) })
4350
4393
  ] }),
4351
4394
  (error || collection.error || layers.error) && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WorkspaceNotice, { children: error || collection.error || layers.error }),
4352
4395
  notice && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WorkspaceNotice, { kind: "success", children: notice }),
@@ -4479,18 +4522,20 @@ function ArchivedConcerns({ companionId, onChanged }) {
4479
4522
  const contentId = (0, import_react13.useId)();
4480
4523
  const [open, setOpen] = (0, import_react13.useState)(false);
4481
4524
  const [offset, setOffset] = (0, import_react13.useState)(0);
4482
- const resource = useMemoryResource(open ? `/companions/${encodeURIComponent(companionId)}/concerns/archived?offset=${offset}` : void 0);
4525
+ const resource = useMemoryResource(`/companions/${encodeURIComponent(companionId)}/concerns/archived?offset=${offset}`, 15e3);
4483
4526
  const refresh = async () => {
4484
- await resource.reload();
4527
+ if (offset > 0 && resource.data?.items.length === 1) setOffset(offset - 50);
4528
+ else await resource.reload();
4485
4529
  await onChanged();
4486
4530
  };
4531
+ if (!resource.error && (!resource.data || offset === 0 && resource.data.items.length === 0)) return null;
4487
4532
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("section", { className: "dsh-partner-concern-archive", children: [
4488
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { type: "button", className: "dsh-partner-concern-archive-toggle", "aria-label": "\u5DF2\u5F52\u6863\u5173\u6CE8 \xB7 \u67E5\u770B\u4E0E\u6E05\u7406", "aria-expanded": open, "aria-controls": open ? contentId : void 0, onClick: () => setOpen(!open), children: [
4533
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { type: "button", className: "dsh-partner-concern-archive-toggle", "aria-label": "\u5DF2\u505C\u6B62\u5173\u6CE8 \xB7 \u67E5\u770B\u4E0E\u6E05\u7406", "aria-expanded": open, "aria-controls": open ? contentId : void 0, onClick: () => setOpen(!open), children: [
4489
4534
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
4490
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: "\u5DF2\u5F52\u6863\u5173\u6CE8" }),
4491
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("small", { children: "\u5DF2\u505C\u6B62\u5173\u6CE8\uFF0C\u53EF\u6309\u9700\u6E05\u7406" })
4535
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: "\u5DF2\u505C\u6B62\u5173\u6CE8" }),
4536
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("small", { children: "\u4E0D\u518D\u5173\u6CE8\u6216\u957F\u671F\u672A\u6D3B\u8DC3\u800C\u81EA\u52A8\u505C\u6B62\u7684\u8BB0\u5F55\uFF0C\u53EF\u6309\u9700\u6E05\u7406" })
4492
4537
  ] }),
4493
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutline14, { size: 16 })
4538
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutlineRegular, { size: 16 })
4494
4539
  ] }),
4495
4540
  open && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { id: contentId, className: "dsh-partner-concern-archive-content", children: [
4496
4541
  resource.error && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(WorkspaceNotice, { children: [
@@ -4500,11 +4545,11 @@ function ArchivedConcerns({ companionId, onChanged }) {
4500
4545
  }, children: "\u91CD\u8BD5" })
4501
4546
  ] }),
4502
4547
  !resource.data ? !resource.error && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u2026" }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
4503
- resource.data.items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: "\u6B64\u9875\u6CA1\u6709\u5DF2\u5F52\u6863\u5173\u6CE8\u3002" }),
4548
+ resource.data.items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: "\u6B64\u9875\u6CA1\u6709\u5DF2\u505C\u6B62\u5173\u6CE8\u3002" }),
4504
4549
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "dsh-partner-concern-archive-list", children: resource.data.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("article", { className: "dsh-partner-concern-archive-row", children: [
4505
4550
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("details", { className: "dsh-partner-concern-archive-details", children: [
4506
4551
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("summary", { children: [
4507
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutline14, { size: 14 }),
4552
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutlineRegular, { size: 14 }),
4508
4553
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: item.subject })
4509
4554
  ] }),
4510
4555
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dl", { children: [
@@ -4519,7 +4564,7 @@ function ArchivedConcerns({ companionId, onChanged }) {
4519
4564
  ] }),
4520
4565
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "dsh-partner-concern-archive-action", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ConcernDeleteButton, { companionId, item, onDeleted: refresh }) })
4521
4566
  ] }, item.id)) }),
4522
- (offset > 0 || resource.data.hasMore) && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("nav", { className: "dsh-partner-concern-archive-pages", "aria-label": "\u5F52\u6863\u5173\u6CE8\u5206\u9875", children: [
4567
+ (offset > 0 || resource.data.hasMore) && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("nav", { className: "dsh-partner-concern-archive-pages", "aria-label": "\u5DF2\u505C\u6B62\u5173\u6CE8\u5206\u9875", children: [
4523
4568
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
4524
4569
  "\u7B2C ",
4525
4570
  Math.floor(offset / 50) + 1,
@@ -4757,7 +4802,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
4757
4802
  setEditing(void 0);
4758
4803
  setComposing((current2) => !current2);
4759
4804
  }, children: [
4760
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconPlusOutline16, { size: 14 }),
4805
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconPlusOutlineRegular, { size: 14 }),
4761
4806
  "\u4EA4\u4EE3\u4E00\u4EF6\u4E8B"
4762
4807
  ] })
4763
4808
  ] }),
@@ -4821,7 +4866,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
4821
4866
  onMouseEnter: () => setActiveSource(index2),
4822
4867
  onClick: () => chooseSource(source),
4823
4868
  children: [
4824
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: source.kind === "file" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconDataOutline16, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconLinkOutline16, { size: 15 }) }),
4869
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: source.kind === "file" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconDataOutlineRegular, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconLinkOutlineRegular, { size: 15 }) }),
4825
4870
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: source.label }),
4826
4871
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("small", { children: source.detail })
4827
4872
  ]
@@ -4869,7 +4914,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
4869
4914
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("small", { children: "\u4E0B\u6B21\u7559\u610F" }),
4870
4915
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: futureTime(item.nextCheckAt) })
4871
4916
  ] }),
4872
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconChevronDownOutline14, { size: 14 })
4917
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconChevronDownOutlineRegular, { size: 14 })
4873
4918
  ] }),
4874
4919
  expanded && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "dsh-partner-concern-detail", children: [
4875
4920
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: item.reason }),
@@ -4920,10 +4965,12 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
4920
4965
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("b", { children: resolved.length })
4921
4966
  ] }),
4922
4967
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: resolved.slice(0, 30).map((item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("article", { children: [
4923
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconCheckOutline14, { size: 13 }) }),
4924
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: item.subject }),
4925
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { type: "button", disabled: busy, onClick: () => onAct(item, "watch"), children: "\u91CD\u65B0\u7559\u610F" }),
4926
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ConcernDeleteButton, { companionId, item, disabled: busy, onDeleted: onEdited })
4968
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconCheckOutlineRegular, { size: 13 }) }),
4969
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { title: item.subject, children: item.subject }),
4970
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "dsh-partner-concern-resolved-actions", role: "group", "aria-label": `${item.subject} \u7684\u64CD\u4F5C`, children: [
4971
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { type: "button", disabled: busy, onClick: () => onAct(item, "watch"), children: "\u91CD\u65B0\u7559\u610F" }),
4972
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ConcernDeleteButton, { companionId, item, disabled: busy, onDeleted: onEdited })
4973
+ ] })
4927
4974
  ] }, item.id)) })
4928
4975
  ] }),
4929
4976
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ArchivedConcerns, { companionId, onChanged: onEdited })
@@ -5059,7 +5106,7 @@ function ConcernPanel({ companion, snapshot, onChanged }) {
5059
5106
  ] }),
5060
5107
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { type: "button", disabled: resource.loading, "aria-label": "\u5237\u65B0\u5173\u6CE8", onClick: () => {
5061
5108
  void resource.reload();
5062
- }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_dsh_client_ui_primitives7.IconRefreshOutline16, { size: 16 }) })
5109
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_dsh_client_ui_primitives7.IconRefreshOutlineRegular, { size: 16 }) })
5063
5110
  ] }),
5064
5111
  (error || resource.error || heartbeat?.lastError) && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(WorkspaceNotice, { children: error || resource.error || heartbeat?.lastError }),
5065
5112
  notice && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(WorkspaceNotice, { kind: "success", children: notice }),
@@ -5373,7 +5420,7 @@ function PendantSettingsPanel() {
5373
5420
  };
5374
5421
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-feature-page dsh-partner-pendant-settings", children: [
5375
5422
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(WorkspaceHero, { eyebrow: "PERSONAL TOUCH", title: "\u5361\u7247\u8BBE\u7F6E", detail: "\u8BA9\u6302\u9970\u6709\u81EA\u5DF1\u7684\u6837\u5B50\u3002\u5916\u89C2\u4EC5\u4FDD\u5B58\u5728\u5F53\u524D\u6D4F\u89C8\u5668\uFF0C\u4E0D\u5F71\u54CD\u4F19\u4F34\u6267\u884C\u548C\u6E20\u9053\u901A\u77E5\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: !dirty || processing, onClick: save, children: [
5376
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutline14, { size: 15 }),
5423
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 15 }),
5377
5424
  "\u4FDD\u5B58\u8BBE\u7F6E"
5378
5425
  ] }) }),
5379
5426
  error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(WorkspaceNotice, { children: error }),
@@ -5410,13 +5457,13 @@ function PendantSettingsPanel() {
5410
5457
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StrapPreview, { material: item.id, color: previewColor, swatch: true }),
5411
5458
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("strong", { children: item.name }),
5412
5459
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("small", { children: item.detail }),
5413
- draft.material === item.id && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutline14, { size: 14 })
5460
+ draft.material === item.id && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 14 })
5414
5461
  ] }, item.id)) }),
5415
5462
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-color-row", children: [
5416
5463
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: "\u7EF3\u5B50\u989C\u8272" }),
5417
5464
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "dsh-partner-pendant-swatches", role: "group", "aria-label": "\u9884\u8BBE\u7EF3\u5B50\u989C\u8272", children: COLORS.map((color2) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", "aria-label": `\u7EF3\u5B50\u989C\u8272 ${color2}`, "aria-pressed": draft.color.toLowerCase() === color2, onClick: () => update({ color: color2 }), children: [
5418
5465
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("i", { style: { backgroundColor: color2 } }),
5419
- draft.color.toLowerCase() === color2 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutline14, { size: 12 })
5466
+ draft.color.toLowerCase() === color2 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 12 })
5420
5467
  ] }, color2)) }),
5421
5468
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("label", { className: "dsh-partner-pendant-hex", children: [
5422
5469
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "dsh-partner-pendant-sr", children: "\u81EA\u5B9A\u4E49\u7EF3\u5B50\u989C\u8272" }),
@@ -5429,7 +5476,7 @@ function PendantSettingsPanel() {
5429
5476
  } }),
5430
5477
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-image-actions", children: [
5431
5478
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: processing, onClick: () => strapFile.current?.click(), children: [
5432
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutline16, { size: 15 }),
5479
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutlineRegular, { size: 15 }),
5433
5480
  draft.strapImage ? "\u66F4\u6362\u7EF3\u5B50\u7EB9\u7406" : "\u81EA\u5B9A\u4E49\u7EF3\u5B50\u7EB9\u7406"
5434
5481
  ] }),
5435
5482
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("button", { type: "button", disabled: processing || !draft.strapImage, onClick: () => update({ strapImage: "" }), children: "\u79FB\u9664\u7EB9\u7406" })
@@ -5442,11 +5489,11 @@ function PendantSettingsPanel() {
5442
5489
  } }),
5443
5490
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-image-actions", children: [
5444
5491
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: processing, onClick: () => file.current?.click(), children: [
5445
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutline16, { size: 15 }),
5492
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutlineRegular, { size: 15 }),
5446
5493
  processing ? "\u6B63\u5728\u5904\u7406\u2026" : draft.image ? "\u66F4\u6362\u56FE\u7247" : "\u9009\u62E9\u56FE\u7247"
5447
5494
  ] }),
5448
5495
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: !draft.image || processing, onClick: () => update({ image: "" }), children: [
5449
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconRefreshOutline16, { size: 15 }),
5496
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconRefreshOutlineRegular, { size: 15 }),
5450
5497
  "\u6062\u590D\u9ED8\u8BA4\u56FE\u6848"
5451
5498
  ] })
5452
5499
  ] }),
@@ -5481,7 +5528,7 @@ function PendantSettingsPanel() {
5481
5528
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-preview-stage", children: [
5482
5529
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StrapPreview, { material: draft.material, color: previewColor, image: draft.strapImage, length: draft.strapLength }),
5483
5530
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "dsh-partner-pendant-preview-card", children: draft.image ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: draft.image, style: { objectFit: draft.imageFit }, alt: "\u81EA\u5B9A\u4E49\u5361\u7247\u6B63\u9762\u9884\u89C8" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { children: [
5484
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconAgentPresetOutline16, { size: 38 }),
5531
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconAgentPresetOutlineRegular, { size: 38 }),
5485
5532
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("strong", { children: "WITH YOU" }),
5486
5533
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("small", { children: "\u9ED8\u8BA4\u4F19\u4F34\u56FE\u6848" })
5487
5534
  ] }) })
@@ -5728,7 +5775,7 @@ var import_dsh_client_ui_primitives9 = require("@deepseek-ai/dsh-client-ui-primi
5728
5775
  // src/pendant/markdown.tsx
5729
5776
  var import_react23 = __toESM(require("react"), 1);
5730
5777
 
5731
- // node_modules/mdast-util-to-string/lib/index.js
5778
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-to-string/lib/index.js
5732
5779
  var emptyOptions = {};
5733
5780
  function toString(value, options) {
5734
5781
  const settings = options || emptyOptions;
@@ -5765,7 +5812,7 @@ function node(value) {
5765
5812
  return Boolean(value && typeof value === "object");
5766
5813
  }
5767
5814
 
5768
- // node_modules/decode-named-character-reference/index.dom.js
5815
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/decode-named-character-reference/index.dom.js
5769
5816
  var element = document.createElement("i");
5770
5817
  function decodeNamedCharacterReference(value) {
5771
5818
  const characterReference2 = "&" + value + ";";
@@ -5777,7 +5824,7 @@ function decodeNamedCharacterReference(value) {
5777
5824
  return character === characterReference2 ? false : character;
5778
5825
  }
5779
5826
 
5780
- // node_modules/micromark-util-chunked/index.js
5827
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-chunked/index.js
5781
5828
  function splice(list2, start, remove, items) {
5782
5829
  const end = list2.length;
5783
5830
  let chunkStart = 0;
@@ -5811,7 +5858,7 @@ function push(list2, items) {
5811
5858
  return items;
5812
5859
  }
5813
5860
 
5814
- // node_modules/micromark-util-combine-extensions/index.js
5861
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-combine-extensions/index.js
5815
5862
  var hasOwnProperty = {}.hasOwnProperty;
5816
5863
  function combineExtensions(extensions) {
5817
5864
  const all2 = {};
@@ -5851,7 +5898,7 @@ function constructs(existing, list2) {
5851
5898
  splice(existing, 0, 0, before);
5852
5899
  }
5853
5900
 
5854
- // node_modules/micromark-util-decode-numeric-character-reference/index.js
5901
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-decode-numeric-character-reference/index.js
5855
5902
  function decodeNumericCharacterReference(value, base) {
5856
5903
  const code2 = Number.parseInt(value, base);
5857
5904
  if (
@@ -5869,12 +5916,12 @@ function decodeNumericCharacterReference(value, base) {
5869
5916
  return String.fromCodePoint(code2);
5870
5917
  }
5871
5918
 
5872
- // node_modules/micromark-util-normalize-identifier/index.js
5919
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-normalize-identifier/index.js
5873
5920
  function normalizeIdentifier(value) {
5874
5921
  return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
5875
5922
  }
5876
5923
 
5877
- // node_modules/micromark-util-character/index.js
5924
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-character/index.js
5878
5925
  var asciiAlpha = regexCheck(/[A-Za-z]/);
5879
5926
  var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/);
5880
5927
  var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/);
@@ -5906,10 +5953,10 @@ function regexCheck(regex) {
5906
5953
  }
5907
5954
  }
5908
5955
 
5909
- // node_modules/micromark-factory-space/index.js
5956
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-factory-space/index.js
5910
5957
  function factorySpace(effects, ok3, type, max) {
5911
- const limit = max ? max - 1 : Number.POSITIVE_INFINITY;
5912
- let size = 0;
5958
+ const limit = max ? max - 1 : Infinity;
5959
+ let size2 = 0;
5913
5960
  return start;
5914
5961
  function start(code2) {
5915
5962
  if (markdownSpace(code2)) {
@@ -5919,7 +5966,7 @@ function factorySpace(effects, ok3, type, max) {
5919
5966
  return ok3(code2);
5920
5967
  }
5921
5968
  function prefix(code2) {
5922
- if (markdownSpace(code2) && size++ < limit) {
5969
+ if (markdownSpace(code2) && size2++ < limit) {
5923
5970
  effects.consume(code2);
5924
5971
  return prefix;
5925
5972
  }
@@ -5927,8 +5974,31 @@ function factorySpace(effects, ok3, type, max) {
5927
5974
  return ok3(code2);
5928
5975
  }
5929
5976
  }
5977
+ function factorySpaceMinMax(effects, ok3, nok, type, min, max) {
5978
+ let size2 = 0;
5979
+ return start;
5980
+ function start(code2) {
5981
+ if (max > 0 && markdownSpace(code2)) {
5982
+ effects.enter(type);
5983
+ return prefix(code2);
5984
+ }
5985
+ return after(code2);
5986
+ }
5987
+ function prefix(code2) {
5988
+ if (markdownSpace(code2) && size2 < max) {
5989
+ effects.consume(code2);
5990
+ size2++;
5991
+ return prefix;
5992
+ }
5993
+ effects.exit(type);
5994
+ return after(code2);
5995
+ }
5996
+ function after(code2) {
5997
+ return size2 >= min ? ok3(code2) : nok(code2);
5998
+ }
5999
+ }
5930
6000
 
5931
- // node_modules/micromark/lib/initialize/content.js
6001
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/initialize/content.js
5932
6002
  var content = {
5933
6003
  tokenize: initializeContent
5934
6004
  };
@@ -5978,7 +6048,105 @@ function initializeContent(effects) {
5978
6048
  }
5979
6049
  }
5980
6050
 
5981
- // node_modules/micromark/lib/initialize/document.js
6051
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-edit-map/index.js
6052
+ var EditMap = class {
6053
+ /**
6054
+ * Create a new edit map.
6055
+ *
6056
+ * @returns
6057
+ * New instance.
6058
+ */
6059
+ constructor() {
6060
+ this.index = /* @__PURE__ */ new Map();
6061
+ this.map = [];
6062
+ }
6063
+ /**
6064
+ * Create an edit: a remove and/or add at a certain place.
6065
+ *
6066
+ * @param {number} index
6067
+ * Index at which to apply the edit.
6068
+ * @param {number} remove
6069
+ * Count of items to remove at the index.
6070
+ * @param {Array<Event>} add
6071
+ * Items to add at the index.
6072
+ * @returns {undefined}
6073
+ * Nothing.
6074
+ */
6075
+ add(index2, remove, add) {
6076
+ addImplementation(this, index2, remove, add, false);
6077
+ }
6078
+ /**
6079
+ * Create an edit: but insert `add` before existing additions, instead of
6080
+ * after them.
6081
+ *
6082
+ * @param {number} index
6083
+ * Index at which to apply the edit.
6084
+ * @param {number} remove
6085
+ * Count of items to remove at the index.
6086
+ * @param {Array<Event>} add
6087
+ * Items to add at the index.
6088
+ * @returns {undefined}
6089
+ * Nothing.
6090
+ */
6091
+ addBefore(index2, remove, add) {
6092
+ addImplementation(this, index2, remove, add, true);
6093
+ }
6094
+ /**
6095
+ * Done, change the events.
6096
+ *
6097
+ * @param {Array<Event>} events
6098
+ * List of events to apply the edits to.
6099
+ * @returns {undefined}
6100
+ * Nothing.
6101
+ */
6102
+ consume(events) {
6103
+ this.map.sort(function(a, b) {
6104
+ return a[0] - b[0];
6105
+ });
6106
+ if (this.map.length === 0) {
6107
+ return;
6108
+ }
6109
+ let index2 = this.map.length;
6110
+ const vecs = [];
6111
+ while (index2 > 0) {
6112
+ index2 -= 1;
6113
+ vecs.push(events.slice(this.map[index2][0] + this.map[index2][1]), this.map[index2][2]);
6114
+ events.length = this.map[index2][0];
6115
+ }
6116
+ vecs.push(events.slice());
6117
+ events.length = 0;
6118
+ let slice = vecs.pop();
6119
+ while (slice) {
6120
+ for (const element2 of slice) {
6121
+ events.push(element2);
6122
+ }
6123
+ slice = vecs.pop();
6124
+ }
6125
+ this.map.length = 0;
6126
+ this.index.clear();
6127
+ }
6128
+ };
6129
+ function addImplementation(editMap, at, remove, add, before) {
6130
+ if (remove === 0 && add.length === 0) {
6131
+ return;
6132
+ }
6133
+ const existing = editMap.index.get(at);
6134
+ if (existing) {
6135
+ existing[1] += remove;
6136
+ if (before) {
6137
+ add.push(...existing[2]);
6138
+ existing[2] = add;
6139
+ } else {
6140
+ existing[2].push(...add);
6141
+ }
6142
+ return;
6143
+ }
6144
+ const change = [at, remove, add];
6145
+ editMap.map.push(change);
6146
+ editMap.index.set(at, change);
6147
+ }
6148
+
6149
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/initialize/document.js
5982
6150
  var document2 = {
5983
6151
  tokenize: initializeDocument
5984
6152
  };
@@ -6025,8 +6193,10 @@ function initializeDocument(effects) {
6025
6193
  };
6026
6194
  index2++;
6027
6195
  }
6028
- splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
6029
- self.events.length = index2;
6196
+ const editMap = new EditMap();
6197
+ editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
6198
+ editMap.add(indexBeforeExits, index2 - indexBeforeExits, []);
6199
+ editMap.consume(self.events);
6030
6200
  return checkNewContainers(code2);
6031
6201
  }
6032
6202
  return start(code2);
@@ -6045,7 +6215,9 @@ function initializeDocument(effects) {
6045
6215
  return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code2);
6046
6216
  }
6047
6217
  function thereIsANewContainer(code2) {
6048
- if (childFlow) closeFlow();
6218
+ if (childFlow) {
6219
+ closeFlow();
6220
+ }
6049
6221
  exitContainers(continued);
6050
6222
  return documentContinued(code2);
6051
6223
  }
@@ -6065,7 +6237,9 @@ function initializeDocument(effects) {
6065
6237
  }
6066
6238
  function flowStart(code2) {
6067
6239
  if (code2 === null) {
6068
- if (childFlow) closeFlow();
6240
+ if (childFlow) {
6241
+ closeFlow();
6242
+ }
6069
6243
  exitContainers(0);
6070
6244
  effects.consume(code2);
6071
6245
  return;
@@ -6097,9 +6271,13 @@ function initializeDocument(effects) {
6097
6271
  }
6098
6272
  function writeToChild(token, endOfFile) {
6099
6273
  const stream = self.sliceStream(token);
6100
- if (endOfFile) stream.push(null);
6274
+ if (endOfFile) {
6275
+ stream.push(null);
6276
+ }
6101
6277
  token.previous = childToken;
6102
- if (childToken) childToken.next = token;
6278
+ if (childToken) {
6279
+ childToken.next = token;
6280
+ }
6103
6281
  childToken = token;
6104
6282
  childFlow.defineSkip(token.start);
6105
6283
  childFlow.write(stream);
@@ -6136,18 +6314,20 @@ function initializeDocument(effects) {
6136
6314
  };
6137
6315
  index2++;
6138
6316
  }
6139
- splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
6140
- self.events.length = index2;
6317
+ const editMap = new EditMap();
6318
+ editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
6319
+ editMap.add(indexBeforeExits, index2 - indexBeforeExits, []);
6320
+ editMap.consume(self.events);
6141
6321
  }
6142
6322
  }
6143
- function exitContainers(size) {
6323
+ function exitContainers(size2) {
6144
6324
  let index2 = stack.length;
6145
- while (index2-- > size) {
6325
+ while (index2-- > size2) {
6146
6326
  const entry = stack[index2];
6147
6327
  self.containerState = entry[1];
6148
6328
  entry[0].exit.call(self, effects);
6149
6329
  }
6150
- stack.length = size;
6330
+ stack.length = size2;
6151
6331
  }
6152
6332
  function closeFlow() {
6153
6333
  childFlow.write([null]);
@@ -6160,7 +6340,7 @@ function tokenizeContainer(effects, ok3, nok) {
6160
6340
  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok3, nok), "linePrefix", this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4);
6161
6341
  }
6162
6342
 
6163
- // node_modules/micromark-util-classify-character/index.js
6343
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-classify-character/index.js
6164
6344
  function classifyCharacter(code2) {
6165
6345
  if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {
6166
6346
  return 1;
@@ -6170,7 +6350,7 @@ function classifyCharacter(code2) {
6170
6350
  }
6171
6351
  }
6172
6352
 
6173
- // node_modules/micromark-util-resolve-all/index.js
6353
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-resolve-all/index.js
6174
6354
  function resolveAll(constructs2, events, context) {
6175
6355
  const called = [];
6176
6356
  let index2 = -1;
@@ -6184,7 +6364,7 @@ function resolveAll(constructs2, events, context) {
6184
6364
  return events;
6185
6365
  }
6186
6366
 
6187
- // node_modules/micromark-core-commonmark/lib/attention.js
6367
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/attention.js
6188
6368
  var attention = {
6189
6369
  name: "attention",
6190
6370
  resolveAll: resolveAllAttention,
@@ -6192,24 +6372,17 @@ var attention = {
6192
6372
  };
6193
6373
  function resolveAllAttention(events, context) {
6194
6374
  let index2 = -1;
6195
- let open;
6196
- let group;
6197
- let text4;
6198
- let openingSequence;
6199
- let closingSequence;
6200
- let use;
6201
6375
  let nextEvents;
6202
- let offset;
6203
6376
  while (++index2 < events.length) {
6204
6377
  if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) {
6205
- open = index2;
6378
+ let open = index2;
6206
6379
  while (open--) {
6207
6380
  if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && // If the markers are the same:
6208
6381
  context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) {
6209
6382
  if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) {
6210
6383
  continue;
6211
6384
  }
6212
- use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
6385
+ const use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
6213
6386
  const start = {
6214
6387
  ...events[open][1].end
6215
6388
  };
@@ -6218,21 +6391,21 @@ function resolveAllAttention(events, context) {
6218
6391
  };
6219
6392
  movePoint(start, -use);
6220
6393
  movePoint(end, use);
6221
- openingSequence = {
6394
+ const openingSequence = {
6222
6395
  type: use > 1 ? "strongSequence" : "emphasisSequence",
6223
6396
  start,
6224
6397
  end: {
6225
6398
  ...events[open][1].end
6226
6399
  }
6227
6400
  };
6228
- closingSequence = {
6401
+ const closingSequence = {
6229
6402
  type: use > 1 ? "strongSequence" : "emphasisSequence",
6230
6403
  start: {
6231
6404
  ...events[index2][1].start
6232
6405
  },
6233
6406
  end
6234
6407
  };
6235
- text4 = {
6408
+ const text4 = {
6236
6409
  type: use > 1 ? "strongText" : "emphasisText",
6237
6410
  start: {
6238
6411
  ...events[open][1].end
@@ -6241,7 +6414,7 @@ function resolveAllAttention(events, context) {
6241
6414
  ...events[index2][1].start
6242
6415
  }
6243
6416
  };
6244
- group = {
6417
+ const group = {
6245
6418
  type: use > 1 ? "strong" : "emphasis",
6246
6419
  start: {
6247
6420
  ...openingSequence.start
@@ -6263,11 +6436,10 @@ function resolveAllAttention(events, context) {
6263
6436
  nextEvents = push(nextEvents, [["enter", group, context], ["enter", openingSequence, context], ["exit", openingSequence, context], ["enter", text4, context]]);
6264
6437
  nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index2), context));
6265
6438
  nextEvents = push(nextEvents, [["exit", text4, context], ["enter", closingSequence, context], ["exit", closingSequence, context], ["exit", group, context]]);
6439
+ let offset = 0;
6266
6440
  if (events[index2][1].end.offset - events[index2][1].start.offset) {
6267
6441
  offset = 2;
6268
6442
  nextEvents = push(nextEvents, [["enter", events[index2][1], context], ["exit", events[index2][1], context]]);
6269
- } else {
6270
- offset = 0;
6271
6443
  }
6272
6444
  splice(events, open - 1, index2 - open + 3, nextEvents);
6273
6445
  index2 = open + nextEvents.length - offset - 2;
@@ -6302,8 +6474,8 @@ function tokenizeAttention(effects, ok3) {
6302
6474
  }
6303
6475
  const token = effects.exit("attentionSequence");
6304
6476
  const after = classifyCharacter(code2);
6305
- const open = !after || after === 2 && before || attentionMarkers2.includes(code2);
6306
- const close = !before || before === 2 && after || attentionMarkers2.includes(previous3);
6477
+ const open = !after || after === 2 && before || attentionMarkers2.includes(code2) && code2 !== 42 && code2 !== 95;
6478
+ const close = !before || before === 2 && after || attentionMarkers2.includes(previous3) && previous3 !== 42 && previous3 !== 95;
6307
6479
  token._open = Boolean(marker === 42 ? open : open && (before || !close));
6308
6480
  token._close = Boolean(marker === 42 ? close : close && (after || !open));
6309
6481
  return ok3(code2);
@@ -6315,13 +6487,13 @@ function movePoint(point4, offset) {
6315
6487
  point4._bufferIndex += offset;
6316
6488
  }
6317
6489
 
6318
- // node_modules/micromark-core-commonmark/lib/autolink.js
6490
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/autolink.js
6319
6491
  var autolink = {
6320
6492
  name: "autolink",
6321
6493
  tokenize: tokenizeAutolink
6322
6494
  };
6323
6495
  function tokenizeAutolink(effects, ok3, nok) {
6324
- let size = 0;
6496
+ let size2 = 0;
6325
6497
  return start;
6326
6498
  function start(code2) {
6327
6499
  effects.enter("autolink");
@@ -6343,7 +6515,7 @@ function tokenizeAutolink(effects, ok3, nok) {
6343
6515
  }
6344
6516
  function schemeOrEmailAtext(code2) {
6345
6517
  if (code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) {
6346
- size = 1;
6518
+ size2 = 1;
6347
6519
  return schemeInsideOrEmailAtext(code2);
6348
6520
  }
6349
6521
  return emailAtext(code2);
@@ -6351,14 +6523,14 @@ function tokenizeAutolink(effects, ok3, nok) {
6351
6523
  function schemeInsideOrEmailAtext(code2) {
6352
6524
  if (code2 === 58) {
6353
6525
  effects.consume(code2);
6354
- size = 0;
6526
+ size2 = 0;
6355
6527
  return urlInside;
6356
6528
  }
6357
- if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size++ < 32) {
6529
+ if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size2++ < 32) {
6358
6530
  effects.consume(code2);
6359
6531
  return schemeInsideOrEmailAtext;
6360
6532
  }
6361
- size = 0;
6533
+ size2 = 0;
6362
6534
  return emailAtext(code2);
6363
6535
  }
6364
6536
  function urlInside(code2) {
@@ -6393,7 +6565,7 @@ function tokenizeAutolink(effects, ok3, nok) {
6393
6565
  function emailLabel(code2) {
6394
6566
  if (code2 === 46) {
6395
6567
  effects.consume(code2);
6396
- size = 0;
6568
+ size2 = 0;
6397
6569
  return emailAtSignOrDot;
6398
6570
  }
6399
6571
  if (code2 === 62) {
@@ -6407,7 +6579,7 @@ function tokenizeAutolink(effects, ok3, nok) {
6407
6579
  return emailValue(code2);
6408
6580
  }
6409
6581
  function emailValue(code2) {
6410
- if ((code2 === 45 || asciiAlphanumeric(code2)) && size++ < 63) {
6582
+ if ((code2 === 45 || asciiAlphanumeric(code2)) && size2++ < 63) {
6411
6583
  const next = code2 === 45 ? emailValue : emailLabel;
6412
6584
  effects.consume(code2);
6413
6585
  return next;
@@ -6416,7 +6588,7 @@ function tokenizeAutolink(effects, ok3, nok) {
6416
6588
  }
6417
6589
  }
6418
6590
 
6419
- // node_modules/micromark-core-commonmark/lib/blank-line.js
6591
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/blank-line.js
6420
6592
  var blankLine = {
6421
6593
  partial: true,
6422
6594
  tokenize: tokenizeBlankLine
@@ -6431,7 +6603,7 @@ function tokenizeBlankLine(effects, ok3, nok) {
6431
6603
  }
6432
6604
  }
6433
6605
 
6434
- // node_modules/micromark-core-commonmark/lib/block-quote.js
6606
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/block-quote.js
6435
6607
  var blockQuote = {
6436
6608
  continuation: {
6437
6609
  tokenize: tokenizeBlockQuoteContinuation
@@ -6489,7 +6661,7 @@ function exit(effects) {
6489
6661
  effects.exit("blockQuote");
6490
6662
  }
6491
6663
 
6492
- // node_modules/micromark-core-commonmark/lib/character-escape.js
6664
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/character-escape.js
6493
6665
  var characterEscape = {
6494
6666
  name: "characterEscape",
6495
6667
  tokenize: tokenizeCharacterEscape
@@ -6515,14 +6687,14 @@ function tokenizeCharacterEscape(effects, ok3, nok) {
6515
6687
  }
6516
6688
  }
6517
6689
 
6518
- // node_modules/micromark-core-commonmark/lib/character-reference.js
6690
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/character-reference.js
6519
6691
  var characterReference = {
6520
6692
  name: "characterReference",
6521
6693
  tokenize: tokenizeCharacterReference
6522
6694
  };
6523
6695
  function tokenizeCharacterReference(effects, ok3, nok) {
6524
6696
  const self = this;
6525
- let size = 0;
6697
+ let size2 = 0;
6526
6698
  let max;
6527
6699
  let test;
6528
6700
  return start;
@@ -6561,7 +6733,7 @@ function tokenizeCharacterReference(effects, ok3, nok) {
6561
6733
  return value(code2);
6562
6734
  }
6563
6735
  function value(code2) {
6564
- if (code2 === 59 && size) {
6736
+ if (code2 === 59 && size2) {
6565
6737
  const token = effects.exit("characterReferenceValue");
6566
6738
  if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {
6567
6739
  return nok(code2);
@@ -6572,7 +6744,7 @@ function tokenizeCharacterReference(effects, ok3, nok) {
6572
6744
  effects.exit("characterReference");
6573
6745
  return ok3;
6574
6746
  }
6575
- if (test(code2) && size++ < max) {
6747
+ if (test(code2) && size2++ < max) {
6576
6748
  effects.consume(code2);
6577
6749
  return value;
6578
6750
  }
@@ -6580,11 +6752,29 @@ function tokenizeCharacterReference(effects, ok3, nok) {
6580
6752
  }
6581
6753
  }
6582
6754
 
6583
- // node_modules/micromark-core-commonmark/lib/code-fenced.js
6755
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js
6584
6756
  var nonLazyContinuation = {
6585
6757
  partial: true,
6586
6758
  tokenize: tokenizeNonLazyContinuation
6587
6759
  };
6760
+ function tokenizeNonLazyContinuation(effects, ok3, nok) {
6761
+ const self = this;
6762
+ return start;
6763
+ function start(code2) {
6764
+ if (code2 === null) {
6765
+ return nok(code2);
6766
+ }
6767
+ effects.enter("lineEnding");
6768
+ effects.consume(code2);
6769
+ effects.exit("lineEnding");
6770
+ return after;
6771
+ }
6772
+ function after(code2) {
6773
+ return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
6774
+ }
6775
+ }
6776
+
6777
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/code-fenced.js
6588
6778
  var codeFenced = {
6589
6779
  concrete: true,
6590
6780
  name: "codeFenced",
@@ -6706,7 +6896,7 @@ function tokenizeCodeFenced(effects, ok3, nok) {
6706
6896
  return ok3(code2);
6707
6897
  }
6708
6898
  function tokenizeCloseStart(effects2, ok4, nok2) {
6709
- let size = 0;
6899
+ let size2 = 0;
6710
6900
  return startBefore;
6711
6901
  function startBefore(code2) {
6712
6902
  effects2.enter("lineEnding");
@@ -6727,11 +6917,11 @@ function tokenizeCodeFenced(effects, ok3, nok) {
6727
6917
  }
6728
6918
  function sequenceClose(code2) {
6729
6919
  if (code2 === marker) {
6730
- size++;
6920
+ size2++;
6731
6921
  effects2.consume(code2);
6732
6922
  return sequenceClose;
6733
6923
  }
6734
- if (size >= sizeOpen) {
6924
+ if (size2 >= sizeOpen) {
6735
6925
  effects2.exit("codeFencedFenceSequence");
6736
6926
  return markdownSpace(code2) ? factorySpace(effects2, sequenceCloseAfter, "whitespace")(code2) : sequenceCloseAfter(code2);
6737
6927
  }
@@ -6746,24 +6936,8 @@ function tokenizeCodeFenced(effects, ok3, nok) {
6746
6936
  }
6747
6937
  }
6748
6938
  }
6749
- function tokenizeNonLazyContinuation(effects, ok3, nok) {
6750
- const self = this;
6751
- return start;
6752
- function start(code2) {
6753
- if (code2 === null) {
6754
- return nok(code2);
6755
- }
6756
- effects.enter("lineEnding");
6757
- effects.consume(code2);
6758
- effects.exit("lineEnding");
6759
- return lineStart;
6760
- }
6761
- function lineStart(code2) {
6762
- return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
6763
- }
6764
- }
6765
6939
 
6766
- // node_modules/micromark-core-commonmark/lib/code-indented.js
6940
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/code-indented.js
6767
6941
  var codeIndented = {
6768
6942
  name: "codeIndented",
6769
6943
  tokenize: tokenizeCodeIndented
@@ -6773,15 +6947,10 @@ var furtherStart = {
6773
6947
  tokenize: tokenizeFurtherStart
6774
6948
  };
6775
6949
  function tokenizeCodeIndented(effects, ok3, nok) {
6776
- const self = this;
6777
6950
  return start;
6778
6951
  function start(code2) {
6779
6952
  effects.enter("codeIndented");
6780
- return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code2);
6781
- }
6782
- function afterPrefix(code2) {
6783
- const tail = self.events[self.events.length - 1];
6784
- return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code2) : nok(code2);
6953
+ return factorySpaceMinMax(effects, atBreak, nok, "linePrefix", 4, 4)(code2);
6785
6954
  }
6786
6955
  function atBreak(code2) {
6787
6956
  if (code2 === null) {
@@ -6819,15 +6988,14 @@ function tokenizeFurtherStart(effects, ok3, nok) {
6819
6988
  effects.exit("lineEnding");
6820
6989
  return furtherStart2;
6821
6990
  }
6822
- return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code2);
6991
+ return factorySpaceMinMax(effects, ok3, onNotEnoughPrefix, "linePrefix", 4, 4)(code2);
6823
6992
  }
6824
- function afterPrefix(code2) {
6825
- const tail = self.events[self.events.length - 1];
6826
- return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok3(code2) : markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);
6993
+ function onNotEnoughPrefix(code2) {
6994
+ return markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);
6827
6995
  }
6828
6996
  }
6829
6997
 
6830
- // node_modules/micromark-core-commonmark/lib/code-text.js
6998
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/code-text.js
6831
6999
  var codeText = {
6832
7000
  name: "codeText",
6833
7001
  previous,
@@ -6877,7 +7045,7 @@ function previous(code2) {
6877
7045
  function tokenizeCodeText(effects, ok3, nok) {
6878
7046
  const self = this;
6879
7047
  let sizeOpen = 0;
6880
- let size;
7048
+ let size2;
6881
7049
  let token;
6882
7050
  return start;
6883
7051
  function start(code2) {
@@ -6906,7 +7074,7 @@ function tokenizeCodeText(effects, ok3, nok) {
6906
7074
  }
6907
7075
  if (code2 === 96) {
6908
7076
  token = effects.enter("codeTextSequence");
6909
- size = 0;
7077
+ size2 = 0;
6910
7078
  return sequenceClose(code2);
6911
7079
  }
6912
7080
  if (markdownLineEnding(code2)) {
@@ -6929,10 +7097,10 @@ function tokenizeCodeText(effects, ok3, nok) {
6929
7097
  function sequenceClose(code2) {
6930
7098
  if (code2 === 96) {
6931
7099
  effects.consume(code2);
6932
- size++;
7100
+ size2++;
6933
7101
  return sequenceClose;
6934
7102
  }
6935
- if (size === sizeOpen) {
7103
+ if (size2 === sizeOpen) {
6936
7104
  effects.exit("codeTextSequence");
6937
7105
  effects.exit("codeText");
6938
7106
  return ok3(code2);
@@ -6942,7 +7110,7 @@ function tokenizeCodeText(effects, ok3, nok) {
6942
7110
  }
6943
7111
  }
6944
7112
 
6945
- // node_modules/micromark-util-subtokenize/lib/splice-buffer.js
7113
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-subtokenize/lib/splice-buffer.js
6946
7114
  var SpliceBuffer = class {
6947
7115
  /**
6948
7116
  * @param {ReadonlyArray<T> | null | undefined} [initial]
@@ -7135,7 +7303,7 @@ function chunkedPush(list2, right) {
7135
7303
  }
7136
7304
  }
7137
7305
 
7138
- // node_modules/micromark-util-subtokenize/index.js
7306
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-subtokenize/index.js
7139
7307
  function subtokenize(eventsArray) {
7140
7308
  const jumps = {};
7141
7309
  let index2 = -1;
@@ -7288,7 +7456,7 @@ function subcontent(events, eventIndex) {
7288
7456
  return gaps;
7289
7457
  }
7290
7458
 
7291
- // node_modules/micromark-core-commonmark/lib/content.js
7459
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/content.js
7292
7460
  var content2 = {
7293
7461
  resolve: resolveContent,
7294
7462
  tokenize: tokenizeContent
@@ -7359,7 +7527,7 @@ function tokenizeContinuation(effects, ok3, nok) {
7359
7527
  }
7360
7528
  }
7361
7529
 
7362
- // node_modules/micromark-factory-destination/index.js
7530
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-factory-destination/index.js
7363
7531
  function factoryDestination(effects, ok3, nok, type, literalType, literalMarkerType, rawType, stringType, max) {
7364
7532
  const limit = max || Number.POSITIVE_INFINITY;
7365
7533
  let balance = 0;
@@ -7451,10 +7619,10 @@ function factoryDestination(effects, ok3, nok, type, literalType, literalMarkerT
7451
7619
  }
7452
7620
  }
7453
7621
 
7454
- // node_modules/micromark-factory-label/index.js
7622
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-factory-label/index.js
7455
7623
  function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
7456
7624
  const self = this;
7457
- let size = 0;
7625
+ let size2 = 0;
7458
7626
  let seen;
7459
7627
  return start;
7460
7628
  function start(code2) {
@@ -7466,12 +7634,12 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
7466
7634
  return atBreak;
7467
7635
  }
7468
7636
  function atBreak(code2) {
7469
- if (size > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || // To do: remove in the future once we’ve switched from
7637
+ if (size2 > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || // To do: remove in the future once we’ve switched from
7470
7638
  // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,
7471
7639
  // which doesn’t need this.
7472
7640
  // Hidden footnotes hook.
7473
7641
  /* c8 ignore next 3 */
7474
- code2 === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs) {
7642
+ code2 === 94 && !size2 && "_hiddenFootnoteSupport" in self.parser.constructs) {
7475
7643
  return nok(code2);
7476
7644
  }
7477
7645
  if (code2 === 93) {
@@ -7494,7 +7662,7 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
7494
7662
  return labelInside(code2);
7495
7663
  }
7496
7664
  function labelInside(code2) {
7497
- if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size++ > 999) {
7665
+ if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size2++ > 999) {
7498
7666
  effects.exit("chunkString");
7499
7667
  return atBreak(code2);
7500
7668
  }
@@ -7505,14 +7673,14 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
7505
7673
  function labelEscape(code2) {
7506
7674
  if (code2 === 91 || code2 === 92 || code2 === 93) {
7507
7675
  effects.consume(code2);
7508
- size++;
7676
+ size2++;
7509
7677
  return labelInside;
7510
7678
  }
7511
7679
  return labelInside(code2);
7512
7680
  }
7513
7681
  }
7514
7682
 
7515
- // node_modules/micromark-factory-title/index.js
7683
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-factory-title/index.js
7516
7684
  function factoryTitle(effects, ok3, nok, type, markerType, stringType) {
7517
7685
  let marker;
7518
7686
  return start;
@@ -7574,7 +7742,7 @@ function factoryTitle(effects, ok3, nok, type, markerType, stringType) {
7574
7742
  }
7575
7743
  }
7576
7744
 
7577
- // node_modules/micromark-factory-whitespace/index.js
7745
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-factory-whitespace/index.js
7578
7746
  function factoryWhitespace(effects, ok3) {
7579
7747
  let seen;
7580
7748
  return start;
@@ -7593,7 +7761,7 @@ function factoryWhitespace(effects, ok3) {
7593
7761
  }
7594
7762
  }
7595
7763
 
7596
- // node_modules/micromark-core-commonmark/lib/definition.js
7764
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/definition.js
7597
7765
  var definition = {
7598
7766
  name: "definition",
7599
7767
  tokenize: tokenizeDefinition
@@ -7679,7 +7847,7 @@ function tokenizeTitleBefore(effects, ok3, nok) {
7679
7847
  }
7680
7848
  }
7681
7849
 
7682
- // node_modules/micromark-core-commonmark/lib/hard-break-escape.js
7850
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/hard-break-escape.js
7683
7851
  var hardBreakEscape = {
7684
7852
  name: "hardBreakEscape",
7685
7853
  tokenize: tokenizeHardBreakEscape
@@ -7700,7 +7868,7 @@ function tokenizeHardBreakEscape(effects, ok3, nok) {
7700
7868
  }
7701
7869
  }
7702
7870
 
7703
- // node_modules/micromark-core-commonmark/lib/heading-atx.js
7871
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/heading-atx.js
7704
7872
  var headingAtx = {
7705
7873
  name: "headingAtx",
7706
7874
  resolve: resolveHeadingAtx,
@@ -7709,8 +7877,6 @@ var headingAtx = {
7709
7877
  function resolveHeadingAtx(events, context) {
7710
7878
  let contentEnd = events.length - 2;
7711
7879
  let contentStart = 3;
7712
- let content3;
7713
- let text4;
7714
7880
  if (events[contentStart][1].type === "whitespace") {
7715
7881
  contentStart += 2;
7716
7882
  }
@@ -7721,12 +7887,12 @@ function resolveHeadingAtx(events, context) {
7721
7887
  contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;
7722
7888
  }
7723
7889
  if (contentEnd > contentStart) {
7724
- content3 = {
7890
+ const content3 = {
7725
7891
  type: "atxHeadingText",
7726
7892
  start: events[contentStart][1].start,
7727
7893
  end: events[contentEnd][1].end
7728
7894
  };
7729
- text4 = {
7895
+ const text4 = {
7730
7896
  type: "chunkText",
7731
7897
  start: events[contentStart][1].start,
7732
7898
  end: events[contentEnd][1].end,
@@ -7737,7 +7903,7 @@ function resolveHeadingAtx(events, context) {
7737
7903
  return events;
7738
7904
  }
7739
7905
  function tokenizeHeadingAtx(effects, ok3, nok) {
7740
- let size = 0;
7906
+ let size2 = 0;
7741
7907
  return start;
7742
7908
  function start(code2) {
7743
7909
  effects.enter("atxHeading");
@@ -7748,7 +7914,7 @@ function tokenizeHeadingAtx(effects, ok3, nok) {
7748
7914
  return sequenceOpen(code2);
7749
7915
  }
7750
7916
  function sequenceOpen(code2) {
7751
- if (code2 === 35 && size++ < 6) {
7917
+ if (code2 === 35 && size2++ < 6) {
7752
7918
  effects.consume(code2);
7753
7919
  return sequenceOpen;
7754
7920
  }
@@ -7791,7 +7957,7 @@ function tokenizeHeadingAtx(effects, ok3, nok) {
7791
7957
  }
7792
7958
  }
7793
7959
 
7794
- // node_modules/micromark-util-html-tag-name/index.js
7960
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-html-tag-name/index.js
7795
7961
  var htmlBlockNames = [
7796
7962
  "address",
7797
7963
  "article",
@@ -7858,7 +8024,7 @@ var htmlBlockNames = [
7858
8024
  ];
7859
8025
  var htmlRawNames = ["pre", "script", "style", "textarea"];
7860
8026
 
7861
- // node_modules/micromark-core-commonmark/lib/html-flow.js
8027
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/html-flow.js
7862
8028
  var htmlFlow = {
7863
8029
  concrete: true,
7864
8030
  name: "htmlFlow",
@@ -7869,10 +8035,6 @@ var blankLineBefore = {
7869
8035
  partial: true,
7870
8036
  tokenize: tokenizeBlankLineBefore
7871
8037
  };
7872
- var nonLazyContinuationStart = {
7873
- partial: true,
7874
- tokenize: tokenizeNonLazyContinuationStart
7875
- };
7876
8038
  function resolveToHtmlFlow(events) {
7877
8039
  let index2 = events.length;
7878
8040
  while (index2--) {
@@ -8134,7 +8296,7 @@ function tokenizeHtmlFlow(effects, ok3, nok) {
8134
8296
  return continuation;
8135
8297
  }
8136
8298
  function continuationStart(code2) {
8137
- return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code2);
8299
+ return effects.check(nonLazyContinuation, continuationStartNonLazy, continuationAfter)(code2);
8138
8300
  }
8139
8301
  function continuationStartNonLazy(code2) {
8140
8302
  effects.enter("lineEnding");
@@ -8211,22 +8373,6 @@ function tokenizeHtmlFlow(effects, ok3, nok) {
8211
8373
  return ok3(code2);
8212
8374
  }
8213
8375
  }
8214
- function tokenizeNonLazyContinuationStart(effects, ok3, nok) {
8215
- const self = this;
8216
- return start;
8217
- function start(code2) {
8218
- if (markdownLineEnding(code2)) {
8219
- effects.enter("lineEnding");
8220
- effects.consume(code2);
8221
- effects.exit("lineEnding");
8222
- return after;
8223
- }
8224
- return nok(code2);
8225
- }
8226
- function after(code2) {
8227
- return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
8228
- }
8229
- }
8230
8376
  function tokenizeBlankLineBefore(effects, ok3, nok) {
8231
8377
  return start;
8232
8378
  function start(code2) {
@@ -8237,7 +8383,7 @@ function tokenizeBlankLineBefore(effects, ok3, nok) {
8237
8383
  }
8238
8384
  }
8239
8385
 
8240
- // node_modules/micromark-core-commonmark/lib/html-text.js
8386
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/html-text.js
8241
8387
  var htmlText = {
8242
8388
  name: "htmlText",
8243
8389
  tokenize: tokenizeHtmlText
@@ -8543,7 +8689,7 @@ function tokenizeHtmlText(effects, ok3, nok) {
8543
8689
  }
8544
8690
  }
8545
8691
 
8546
- // node_modules/micromark-core-commonmark/lib/label-end.js
8692
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/label-end.js
8547
8693
  var labelEnd = {
8548
8694
  name: "labelEnd",
8549
8695
  resolveAll: resolveAllLabelEnd,
@@ -8579,12 +8725,11 @@ function resolveAllLabelEnd(events) {
8579
8725
  function resolveToLabelEnd(events, context) {
8580
8726
  let index2 = events.length;
8581
8727
  let offset = 0;
8582
- let token;
8583
8728
  let open;
8584
8729
  let close;
8585
8730
  let media;
8586
8731
  while (index2--) {
8587
- token = events[index2][1];
8732
+ const token = events[index2][1];
8588
8733
  if (open) {
8589
8734
  if (token.type === "link" || token.type === "labelLink" && token._inactive) {
8590
8735
  break;
@@ -8643,14 +8788,14 @@ function resolveToLabelEnd(events, context) {
8643
8788
  }
8644
8789
  function tokenizeLabelEnd(effects, ok3, nok) {
8645
8790
  const self = this;
8646
- let index2 = self.events.length;
8791
+ const labelStarts = self._labelStarts;
8647
8792
  let labelStart;
8648
8793
  let defined;
8649
- while (index2--) {
8650
- if ((self.events[index2][1].type === "labelImage" || self.events[index2][1].type === "labelLink") && !self.events[index2][1]._balanced) {
8651
- labelStart = self.events[index2][1];
8652
- break;
8794
+ if (labelStarts) {
8795
+ while (labelStarts.length > 0 && labelStarts[labelStarts.length - 1]._balanced) {
8796
+ labelStarts.pop();
8653
8797
  }
8798
+ labelStart = labelStarts[labelStarts.length - 1];
8654
8799
  }
8655
8800
  return start;
8656
8801
  function start(code2) {
@@ -8684,6 +8829,7 @@ function tokenizeLabelEnd(effects, ok3, nok) {
8684
8829
  return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code2);
8685
8830
  }
8686
8831
  function labelEndOk(code2) {
8832
+ labelStarts.pop();
8687
8833
  return ok3(code2);
8688
8834
  }
8689
8835
  function labelEndNok(code2) {
@@ -8769,7 +8915,7 @@ function tokenizeReferenceCollapsed(effects, ok3, nok) {
8769
8915
  }
8770
8916
  }
8771
8917
 
8772
- // node_modules/micromark-core-commonmark/lib/label-start-image.js
8918
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/label-start-image.js
8773
8919
  var labelStartImage = {
8774
8920
  name: "labelStartImage",
8775
8921
  resolveAll: labelEnd.resolveAll,
@@ -8777,6 +8923,7 @@ var labelStartImage = {
8777
8923
  };
8778
8924
  function tokenizeLabelStartImage(effects, ok3, nok) {
8779
8925
  const self = this;
8926
+ let labelImage;
8780
8927
  return start;
8781
8928
  function start(code2) {
8782
8929
  effects.enter("labelImage");
@@ -8790,17 +8937,22 @@ function tokenizeLabelStartImage(effects, ok3, nok) {
8790
8937
  effects.enter("labelMarker");
8791
8938
  effects.consume(code2);
8792
8939
  effects.exit("labelMarker");
8793
- effects.exit("labelImage");
8940
+ labelImage = effects.exit("labelImage");
8794
8941
  return after;
8795
8942
  }
8796
8943
  return nok(code2);
8797
8944
  }
8798
8945
  function after(code2) {
8799
- return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok3(code2);
8946
+ if (code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) {
8947
+ return nok(code2);
8948
+ }
8949
+ self._labelStarts = self._labelStarts || [];
8950
+ self._labelStarts.push(labelImage);
8951
+ return ok3(code2);
8800
8952
  }
8801
8953
  }
8802
8954
 
8803
- // node_modules/micromark-core-commonmark/lib/label-start-link.js
8955
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/label-start-link.js
8804
8956
  var labelStartLink = {
8805
8957
  name: "labelStartLink",
8806
8958
  resolveAll: labelEnd.resolveAll,
@@ -8808,21 +8960,27 @@ var labelStartLink = {
8808
8960
  };
8809
8961
  function tokenizeLabelStartLink(effects, ok3, nok) {
8810
8962
  const self = this;
8963
+ let labelLink;
8811
8964
  return start;
8812
8965
  function start(code2) {
8813
8966
  effects.enter("labelLink");
8814
8967
  effects.enter("labelMarker");
8815
8968
  effects.consume(code2);
8816
8969
  effects.exit("labelMarker");
8817
- effects.exit("labelLink");
8970
+ labelLink = effects.exit("labelLink");
8818
8971
  return after;
8819
8972
  }
8820
8973
  function after(code2) {
8821
- return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok3(code2);
8974
+ if (code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) {
8975
+ return nok(code2);
8976
+ }
8977
+ self._labelStarts = self._labelStarts || [];
8978
+ self._labelStarts.push(labelLink);
8979
+ return ok3(code2);
8822
8980
  }
8823
8981
  }
8824
8982
 
8825
- // node_modules/micromark-core-commonmark/lib/line-ending.js
8983
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/line-ending.js
8826
8984
  var lineEnding = {
8827
8985
  name: "lineEnding",
8828
8986
  tokenize: tokenizeLineEnding
@@ -8837,13 +8995,13 @@ function tokenizeLineEnding(effects, ok3) {
8837
8995
  }
8838
8996
  }
8839
8997
 
8840
- // node_modules/micromark-core-commonmark/lib/thematic-break.js
8998
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/thematic-break.js
8841
8999
  var thematicBreak = {
8842
9000
  name: "thematicBreak",
8843
9001
  tokenize: tokenizeThematicBreak
8844
9002
  };
8845
9003
  function tokenizeThematicBreak(effects, ok3, nok) {
8846
- let size = 0;
9004
+ let size2 = 0;
8847
9005
  let marker;
8848
9006
  return start;
8849
9007
  function start(code2) {
@@ -8859,7 +9017,7 @@ function tokenizeThematicBreak(effects, ok3, nok) {
8859
9017
  effects.enter("thematicBreakSequence");
8860
9018
  return sequence(code2);
8861
9019
  }
8862
- if (size >= 3 && (code2 === null || markdownLineEnding(code2))) {
9020
+ if (size2 >= 3 && (code2 === null || markdownLineEnding(code2))) {
8863
9021
  effects.exit("thematicBreak");
8864
9022
  return ok3(code2);
8865
9023
  }
@@ -8868,7 +9026,7 @@ function tokenizeThematicBreak(effects, ok3, nok) {
8868
9026
  function sequence(code2) {
8869
9027
  if (code2 === marker) {
8870
9028
  effects.consume(code2);
8871
- size++;
9029
+ size2++;
8872
9030
  return sequence;
8873
9031
  }
8874
9032
  effects.exit("thematicBreakSequence");
@@ -8876,7 +9034,7 @@ function tokenizeThematicBreak(effects, ok3, nok) {
8876
9034
  }
8877
9035
  }
8878
9036
 
8879
- // node_modules/micromark-core-commonmark/lib/list.js
9037
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/list.js
8880
9038
  var list = {
8881
9039
  continuation: {
8882
9040
  tokenize: tokenizeListContinuation
@@ -8897,7 +9055,7 @@ function tokenizeListStart(effects, ok3, nok) {
8897
9055
  const self = this;
8898
9056
  const tail = self.events[self.events.length - 1];
8899
9057
  let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0;
8900
- let size = 0;
9058
+ let size2 = 0;
8901
9059
  return start;
8902
9060
  function start(code2) {
8903
9061
  const kind = self.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? "listUnordered" : "listOrdered");
@@ -8921,11 +9079,11 @@ function tokenizeListStart(effects, ok3, nok) {
8921
9079
  return nok(code2);
8922
9080
  }
8923
9081
  function inside(code2) {
8924
- if (asciiDigit(code2) && ++size < 10) {
9082
+ if (asciiDigit(code2) && ++size2 < 10) {
8925
9083
  effects.consume(code2);
8926
9084
  return inside;
8927
9085
  }
8928
- if ((!self.interrupt || size < 2) && (self.containerState.marker ? code2 === self.containerState.marker : code2 === 41 || code2 === 46)) {
9086
+ if ((!self.interrupt || size2 < 2) && (self.containerState.marker ? code2 === self.containerState.marker : code2 === 41 || code2 === 46)) {
8929
9087
  effects.exit("listItemValue");
8930
9088
  return atMarker(code2);
8931
9089
  }
@@ -9006,13 +9164,14 @@ function tokenizeListItemPrefixWhitespace(effects, ok3, nok) {
9006
9164
  }
9007
9165
  }
9008
9166
 
9009
- // node_modules/micromark-core-commonmark/lib/setext-underline.js
9167
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-core-commonmark/lib/setext-underline.js
9010
9168
  var setextUnderline = {
9011
9169
  name: "setextUnderline",
9012
9170
  resolveTo: resolveToSetextUnderline,
9013
9171
  tokenize: tokenizeSetextUnderline
9014
9172
  };
9015
9173
  function resolveToSetextUnderline(events, context) {
9174
+ const editMap = new EditMap();
9016
9175
  let index2 = events.length;
9017
9176
  let content3;
9018
9177
  let text4;
@@ -9028,7 +9187,7 @@ function resolveToSetextUnderline(events, context) {
9028
9187
  }
9029
9188
  } else {
9030
9189
  if (events[index2][1].type === "content") {
9031
- events.splice(index2, 1);
9190
+ editMap.add(index2, 1, []);
9032
9191
  }
9033
9192
  if (!definition2 && events[index2][1].type === "definition") {
9034
9193
  definition2 = index2;
@@ -9046,15 +9205,16 @@ function resolveToSetextUnderline(events, context) {
9046
9205
  };
9047
9206
  events[text4][1].type = "setextHeadingText";
9048
9207
  if (definition2) {
9049
- events.splice(text4, 0, ["enter", heading, context]);
9050
- events.splice(definition2 + 1, 0, ["exit", events[content3][1], context]);
9208
+ editMap.add(text4, 0, [["enter", heading, context]]);
9209
+ editMap.add(definition2 + 1, 0, [["exit", events[content3][1], context]]);
9051
9210
  events[content3][1].end = {
9052
9211
  ...events[definition2][1].end
9053
9212
  };
9054
9213
  } else {
9055
9214
  events[content3][1] = heading;
9056
9215
  }
9057
- events.push(["exit", heading, context]);
9216
+ editMap.add(events.length, 0, [["exit", heading, context]]);
9217
+ editMap.consume(events);
9058
9218
  return events;
9059
9219
  }
9060
9220
  function tokenizeSetextUnderline(effects, ok3, nok) {
@@ -9098,7 +9258,7 @@ function tokenizeSetextUnderline(effects, ok3, nok) {
9098
9258
  }
9099
9259
  }
9100
9260
 
9101
- // node_modules/micromark/lib/initialize/flow.js
9261
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/initialize/flow.js
9102
9262
  var flow = {
9103
9263
  tokenize: initializeFlow
9104
9264
  };
@@ -9136,7 +9296,7 @@ function initializeFlow(effects) {
9136
9296
  }
9137
9297
  }
9138
9298
 
9139
- // node_modules/micromark/lib/initialize/text.js
9299
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/initialize/text.js
9140
9300
  var resolver = {
9141
9301
  resolveAll: createResolver()
9142
9302
  };
@@ -9214,6 +9374,7 @@ function createResolver(extraResolver) {
9214
9374
  }
9215
9375
  }
9216
9376
  function resolveAllLineSuffixes(events, context) {
9377
+ const editMap = new EditMap();
9217
9378
  let eventIndex = 0;
9218
9379
  while (++eventIndex <= events.length) {
9219
9380
  if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") {
@@ -9221,21 +9382,23 @@ function resolveAllLineSuffixes(events, context) {
9221
9382
  const chunks = context.sliceStream(data);
9222
9383
  let index2 = chunks.length;
9223
9384
  let bufferIndex = -1;
9224
- let size = 0;
9385
+ let size2 = 0;
9225
9386
  let tabs;
9226
9387
  while (index2--) {
9227
9388
  const chunk = chunks[index2];
9228
9389
  if (typeof chunk === "string") {
9229
9390
  bufferIndex = chunk.length;
9230
9391
  while (chunk.charCodeAt(bufferIndex - 1) === 32) {
9231
- size++;
9392
+ size2++;
9232
9393
  bufferIndex--;
9233
9394
  }
9234
- if (bufferIndex) break;
9395
+ if (bufferIndex) {
9396
+ break;
9397
+ }
9235
9398
  bufferIndex = -1;
9236
9399
  } else if (chunk === -2) {
9237
9400
  tabs = true;
9238
- size++;
9401
+ size2++;
9239
9402
  } else if (chunk === -1) {
9240
9403
  } else {
9241
9404
  index2++;
@@ -9243,17 +9406,17 @@ function resolveAllLineSuffixes(events, context) {
9243
9406
  }
9244
9407
  }
9245
9408
  if (context._contentTypeTextTrailing && eventIndex === events.length) {
9246
- size = 0;
9409
+ size2 = 0;
9247
9410
  }
9248
- if (size) {
9411
+ if (size2) {
9249
9412
  const token = {
9250
- type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing",
9413
+ type: eventIndex === events.length || tabs || size2 < 2 ? "lineSuffix" : "hardBreakTrailing",
9251
9414
  start: {
9252
9415
  _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex,
9253
9416
  _index: data.start._index + index2,
9254
9417
  line: data.end.line,
9255
- column: data.end.column - size,
9256
- offset: data.end.offset - size
9418
+ column: data.end.column - size2,
9419
+ offset: data.end.offset - size2
9257
9420
  },
9258
9421
  end: {
9259
9422
  ...data.end
@@ -9265,17 +9428,17 @@ function resolveAllLineSuffixes(events, context) {
9265
9428
  if (data.start.offset === data.end.offset) {
9266
9429
  Object.assign(data, token);
9267
9430
  } else {
9268
- events.splice(eventIndex, 0, ["enter", token, context], ["exit", token, context]);
9269
- eventIndex += 2;
9431
+ editMap.add(eventIndex, 0, [["enter", token, context], ["exit", token, context]]);
9270
9432
  }
9271
9433
  }
9272
9434
  eventIndex++;
9273
9435
  }
9274
9436
  }
9437
+ editMap.consume(events);
9275
9438
  return events;
9276
9439
  }
9277
9440
 
9278
- // node_modules/micromark/lib/constructs.js
9441
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/constructs.js
9279
9442
  var constructs_exports = {};
9280
9443
  __export(constructs_exports, {
9281
9444
  attentionMarkers: () => attentionMarkers,
@@ -9350,7 +9513,7 @@ var disable = {
9350
9513
  null: []
9351
9514
  };
9352
9515
 
9353
- // node_modules/micromark/lib/create-tokenizer.js
9516
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/create-tokenizer.js
9354
9517
  function createTokenizer(parser, initialize, from) {
9355
9518
  let point4 = {
9356
9519
  _bufferIndex: -1,
@@ -9429,11 +9592,10 @@ function createTokenizer(parser, initialize, from) {
9429
9592
  accountForPotentialSkip();
9430
9593
  }
9431
9594
  function main() {
9432
- let chunkIndex;
9433
9595
  while (point4._index < chunks.length) {
9434
9596
  const chunk = chunks[point4._index];
9435
9597
  if (typeof chunk === "string") {
9436
- chunkIndex = point4._index;
9598
+ const chunkIndex = point4._index;
9437
9599
  if (point4._bufferIndex < 0) {
9438
9600
  point4._bufferIndex = 0;
9439
9601
  }
@@ -9641,30 +9803,34 @@ function serializeChunks(chunks, expandTabs) {
9641
9803
  let value;
9642
9804
  if (typeof chunk === "string") {
9643
9805
  value = chunk;
9644
- } else switch (chunk) {
9645
- case -5: {
9646
- value = "\r";
9647
- break;
9648
- }
9649
- case -4: {
9650
- value = "\n";
9651
- break;
9652
- }
9653
- case -3: {
9654
- value = "\r\n";
9655
- break;
9656
- }
9657
- case -2: {
9658
- value = expandTabs ? " " : " ";
9659
- break;
9660
- }
9661
- case -1: {
9662
- if (!expandTabs && atTab) continue;
9663
- value = " ";
9664
- break;
9665
- }
9666
- default: {
9667
- value = String.fromCharCode(chunk);
9806
+ } else {
9807
+ switch (chunk) {
9808
+ case -5: {
9809
+ value = "\r";
9810
+ break;
9811
+ }
9812
+ case -4: {
9813
+ value = "\n";
9814
+ break;
9815
+ }
9816
+ case -3: {
9817
+ value = "\r\n";
9818
+ break;
9819
+ }
9820
+ case -2: {
9821
+ value = expandTabs ? " " : " ";
9822
+ break;
9823
+ }
9824
+ case -1: {
9825
+ if (!expandTabs && atTab) {
9826
+ continue;
9827
+ }
9828
+ value = " ";
9829
+ break;
9830
+ }
9831
+ default: {
9832
+ value = String.fromCharCode(chunk);
9833
+ }
9668
9834
  }
9669
9835
  }
9670
9836
  atTab = chunk === -2;
@@ -9673,7 +9839,7 @@ function serializeChunks(chunks, expandTabs) {
9673
9839
  return result.join("");
9674
9840
  }
9675
9841
 
9676
- // node_modules/micromark/lib/parse.js
9842
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/parse.js
9677
9843
  function parse(options) {
9678
9844
  const settings = options || {};
9679
9845
  const constructs2 = (
@@ -9699,14 +9865,14 @@ function parse(options) {
9699
9865
  }
9700
9866
  }
9701
9867
 
9702
- // node_modules/micromark/lib/postprocess.js
9868
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/postprocess.js
9703
9869
  function postprocess(events) {
9704
9870
  while (!subtokenize(events)) {
9705
9871
  }
9706
9872
  return events;
9707
9873
  }
9708
9874
 
9709
- // node_modules/micromark/lib/preprocess.js
9875
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark/lib/preprocess.js
9710
9876
  var search = /[\0\t\n\r]/g;
9711
9877
  function preprocess() {
9712
9878
  let column = 1;
@@ -9715,14 +9881,9 @@ function preprocess() {
9715
9881
  let atCarriageReturn;
9716
9882
  return preprocessor;
9717
9883
  function preprocessor(value, encoding, end) {
9718
- const chunks = [];
9719
- let match;
9720
- let next;
9721
- let startPosition;
9722
- let endPosition;
9723
- let code2;
9724
9884
  value = buffer + (typeof value === "string" ? value.toString() : new TextDecoder(encoding || void 0).decode(value));
9725
- startPosition = 0;
9885
+ const chunks = [];
9886
+ let startPosition = 0;
9726
9887
  buffer = "";
9727
9888
  if (start) {
9728
9889
  if (value.charCodeAt(0) === 65279) {
@@ -9732,9 +9893,9 @@ function preprocess() {
9732
9893
  }
9733
9894
  while (startPosition < value.length) {
9734
9895
  search.lastIndex = startPosition;
9735
- match = search.exec(value);
9736
- endPosition = match && match.index !== void 0 ? match.index : value.length;
9737
- code2 = value.charCodeAt(endPosition);
9896
+ const match = search.exec(value);
9897
+ const endPosition = match && match.index !== void 0 ? match.index : value.length;
9898
+ const code2 = value.charCodeAt(endPosition);
9738
9899
  if (!match) {
9739
9900
  buffer = value.slice(startPosition);
9740
9901
  break;
@@ -9758,9 +9919,11 @@ function preprocess() {
9758
9919
  break;
9759
9920
  }
9760
9921
  case 9: {
9761
- next = Math.ceil(column / 4) * 4;
9922
+ const next = Math.ceil(column / 4) * 4;
9762
9923
  chunks.push(-2);
9763
- while (column++ < next) chunks.push(-1);
9924
+ while (column++ < next) {
9925
+ chunks.push(-1);
9926
+ }
9764
9927
  break;
9765
9928
  }
9766
9929
  case 10: {
@@ -9777,15 +9940,19 @@ function preprocess() {
9777
9940
  startPosition = endPosition + 1;
9778
9941
  }
9779
9942
  if (end) {
9780
- if (atCarriageReturn) chunks.push(-5);
9781
- if (buffer) chunks.push(buffer);
9943
+ if (atCarriageReturn) {
9944
+ chunks.push(-5);
9945
+ }
9946
+ if (buffer) {
9947
+ chunks.push(buffer);
9948
+ }
9782
9949
  chunks.push(null);
9783
9950
  }
9784
9951
  return chunks;
9785
9952
  }
9786
9953
  }
9787
9954
 
9788
- // node_modules/micromark-util-decode-string/index.js
9955
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-util-decode-string/index.js
9789
9956
  var characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
9790
9957
  function decodeString(value) {
9791
9958
  return value.replace(characterEscapeOrReference, decode);
@@ -9803,7 +9970,7 @@ function decode($0, $1, $2) {
9803
9970
  return decodeNamedCharacterReference($2) || $0;
9804
9971
  }
9805
9972
 
9806
- // node_modules/unist-util-stringify-position/lib/index.js
9973
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/unist-util-stringify-position/lib/index.js
9807
9974
  function stringifyPosition(value) {
9808
9975
  if (!value || typeof value !== "object") {
9809
9976
  return "";
@@ -9829,7 +9996,7 @@ function index(value) {
9829
9996
  return value && typeof value === "number" ? value : 1;
9830
9997
  }
9831
9998
 
9832
- // node_modules/mdast-util-from-markdown/lib/index.js
9999
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-from-markdown/lib/index.js
9833
10000
  var own = {}.hasOwnProperty;
9834
10001
  function fromMarkdown(value, encoding, options) {
9835
10002
  if (encoding && typeof encoding === "object") {
@@ -10538,7 +10705,7 @@ function defaultOnError(left, right) {
10538
10705
  }
10539
10706
  }
10540
10707
 
10541
- // node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
10708
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
10542
10709
  var wwwPrefix = {
10543
10710
  tokenize: tokenizeWwwPrefix,
10544
10711
  partial: true
@@ -10712,15 +10879,15 @@ function tokenizeProtocolAutolink(effects, ok3, nok) {
10712
10879
  }
10713
10880
  }
10714
10881
  function tokenizeWwwPrefix(effects, ok3, nok) {
10715
- let size = 0;
10882
+ let size2 = 0;
10716
10883
  return wwwPrefixInside;
10717
10884
  function wwwPrefixInside(code2) {
10718
- if ((code2 === 87 || code2 === 119) && size < 3) {
10719
- size++;
10885
+ if ((code2 === 87 || code2 === 119) && size2 < 3) {
10886
+ size2++;
10720
10887
  effects.consume(code2);
10721
10888
  return wwwPrefixInside;
10722
10889
  }
10723
- if (code2 === 46 && size === 3) {
10890
+ if (code2 === 46 && size2 === 3) {
10724
10891
  effects.consume(code2);
10725
10892
  return wwwPrefixAfter;
10726
10893
  }
@@ -10880,7 +11047,7 @@ function previousUnbalanced(events) {
10880
11047
  return result;
10881
11048
  }
10882
11049
 
10883
- // node_modules/micromark-extension-gfm-footnote/lib/syntax.js
11050
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-footnote/lib/syntax.js
10884
11051
  var indent = {
10885
11052
  tokenize: tokenizeIndent2,
10886
11053
  partial: true
@@ -11006,7 +11173,7 @@ function resolveToPotentialGfmFootnoteCall(events, context) {
11006
11173
  function tokenizeGfmFootnoteCall(effects, ok3, nok) {
11007
11174
  const self = this;
11008
11175
  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);
11009
- let size = 0;
11176
+ let size2 = 0;
11010
11177
  let data;
11011
11178
  return start;
11012
11179
  function start(code2) {
@@ -11028,7 +11195,7 @@ function tokenizeGfmFootnoteCall(effects, ok3, nok) {
11028
11195
  function callData(code2) {
11029
11196
  if (
11030
11197
  // Too long.
11031
- size > 999 || // Closing brace with nothing.
11198
+ size2 > 999 || // Closing brace with nothing.
11032
11199
  code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.
11033
11200
  // `\n` and `[` not being supported makes sense.
11034
11201
  code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)
@@ -11050,14 +11217,14 @@ function tokenizeGfmFootnoteCall(effects, ok3, nok) {
11050
11217
  if (!markdownLineEndingOrSpace(code2)) {
11051
11218
  data = true;
11052
11219
  }
11053
- size++;
11220
+ size2++;
11054
11221
  effects.consume(code2);
11055
11222
  return code2 === 92 ? callEscape : callData;
11056
11223
  }
11057
11224
  function callEscape(code2) {
11058
11225
  if (code2 === 91 || code2 === 92 || code2 === 93) {
11059
11226
  effects.consume(code2);
11060
- size++;
11227
+ size2++;
11061
11228
  return callData;
11062
11229
  }
11063
11230
  return callData(code2);
@@ -11067,7 +11234,7 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
11067
11234
  const self = this;
11068
11235
  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);
11069
11236
  let identifier;
11070
- let size = 0;
11237
+ let size2 = 0;
11071
11238
  let data;
11072
11239
  return start;
11073
11240
  function start(code2) {
@@ -11092,7 +11259,7 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
11092
11259
  function labelInside(code2) {
11093
11260
  if (
11094
11261
  // Too long.
11095
- size > 999 || // Closing brace with nothing.
11262
+ size2 > 999 || // Closing brace with nothing.
11096
11263
  code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.
11097
11264
  // `\n` and `[` not being supported makes sense.
11098
11265
  code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)
@@ -11112,14 +11279,14 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
11112
11279
  if (!markdownLineEndingOrSpace(code2)) {
11113
11280
  data = true;
11114
11281
  }
11115
- size++;
11282
+ size2++;
11116
11283
  effects.consume(code2);
11117
11284
  return code2 === 92 ? labelEscape : labelInside;
11118
11285
  }
11119
11286
  function labelEscape(code2) {
11120
11287
  if (code2 === 91 || code2 === 92 || code2 === 93) {
11121
11288
  effects.consume(code2);
11122
- size++;
11289
+ size2++;
11123
11290
  return labelInside;
11124
11291
  }
11125
11292
  return labelInside(code2);
@@ -11155,7 +11322,7 @@ function tokenizeIndent2(effects, ok3, nok) {
11155
11322
  }
11156
11323
  }
11157
11324
 
11158
- // node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
11325
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
11159
11326
  function gfmStrikethrough(options) {
11160
11327
  const options_ = options || {};
11161
11328
  let single = options_.singleTilde;
@@ -11222,7 +11389,7 @@ function gfmStrikethrough(options) {
11222
11389
  function tokenizeStrikethrough(effects, ok3, nok) {
11223
11390
  const previous3 = this.previous;
11224
11391
  const events = this.events;
11225
- let size = 0;
11392
+ let size2 = 0;
11226
11393
  return start;
11227
11394
  function start(code2) {
11228
11395
  if (previous3 === 126 && events[events.length - 1][1].type !== "characterEscape") {
@@ -11234,12 +11401,12 @@ function gfmStrikethrough(options) {
11234
11401
  function more(code2) {
11235
11402
  const before = classifyCharacter(previous3);
11236
11403
  if (code2 === 126) {
11237
- if (size > 1) return nok(code2);
11404
+ if (size2 > 1) return nok(code2);
11238
11405
  effects.consume(code2);
11239
- size++;
11406
+ size2++;
11240
11407
  return more;
11241
11408
  }
11242
- if (size < 2 && !single) return nok(code2);
11409
+ if (size2 < 2 && !single) return nok(code2);
11243
11410
  const token = effects.exit("strikethroughSequenceTemporary");
11244
11411
  const after = classifyCharacter(code2);
11245
11412
  token._open = !after || after === 2 && Boolean(before);
@@ -11249,24 +11416,29 @@ function gfmStrikethrough(options) {
11249
11416
  }
11250
11417
  }
11251
11418
 
11252
- // node_modules/micromark-extension-gfm-table/lib/edit-map.js
11253
- var EditMap = class {
11419
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-table/lib/edit-map.js
11420
+ var EditMap2 = class {
11254
11421
  /**
11255
11422
  * Create a new edit map.
11256
11423
  */
11257
11424
  constructor() {
11258
11425
  this.map = [];
11426
+ this.index = /* @__PURE__ */ new Map();
11259
11427
  }
11260
11428
  /**
11261
11429
  * Create an edit: a remove and/or add at a certain place.
11262
11430
  *
11263
11431
  * @param {number} index
11432
+ * Index at which to apply the edit.
11264
11433
  * @param {number} remove
11434
+ * Count of items to remove at the index.
11265
11435
  * @param {Array<Event>} add
11436
+ * Items to add at the index.
11266
11437
  * @returns {undefined}
11438
+ * Nothing.
11267
11439
  */
11268
11440
  add(index2, remove, add) {
11269
- addImplementation(this, index2, remove, add);
11441
+ addImplementation2(this, index2, remove, add);
11270
11442
  }
11271
11443
  // To do: add this when moving to `micromark`.
11272
11444
  // /**
@@ -11284,7 +11456,9 @@ var EditMap = class {
11284
11456
  * Done, change the events.
11285
11457
  *
11286
11458
  * @param {Array<Event>} events
11459
+ * List of events to apply the edits to.
11287
11460
  * @returns {undefined}
11461
+ * Nothing.
11288
11462
  */
11289
11463
  consume(events) {
11290
11464
  this.map.sort(function(a, b) {
@@ -11310,25 +11484,25 @@ var EditMap = class {
11310
11484
  slice = vecs.pop();
11311
11485
  }
11312
11486
  this.map.length = 0;
11487
+ this.index.clear();
11313
11488
  }
11314
11489
  };
11315
- function addImplementation(editMap, at, remove, add) {
11316
- let index2 = 0;
11490
+ function addImplementation2(editMap, at, remove, add) {
11317
11491
  if (remove === 0 && add.length === 0) {
11318
11492
  return;
11319
11493
  }
11320
- while (index2 < editMap.map.length) {
11321
- if (editMap.map[index2][0] === at) {
11322
- editMap.map[index2][1] += remove;
11323
- editMap.map[index2][2].push(...add);
11324
- return;
11325
- }
11326
- index2 += 1;
11494
+ const existing = editMap.index.get(at);
11495
+ if (existing) {
11496
+ existing[1] += remove;
11497
+ existing[2].push(...add);
11498
+ return;
11327
11499
  }
11328
- editMap.map.push([at, remove, add]);
11500
+ const change = [at, remove, add];
11501
+ editMap.map.push(change);
11502
+ editMap.index.set(at, change);
11329
11503
  }
11330
11504
 
11331
- // node_modules/micromark-extension-gfm-table/lib/infer.js
11505
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-table/lib/infer.js
11332
11506
  function gfmTableAlign(events, index2) {
11333
11507
  let inDelimiterRow = false;
11334
11508
  const align = [];
@@ -11355,7 +11529,7 @@ function gfmTableAlign(events, index2) {
11355
11529
  return align;
11356
11530
  }
11357
11531
 
11358
- // node_modules/micromark-extension-gfm-table/lib/syntax.js
11532
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-table/lib/syntax.js
11359
11533
  function gfmTable() {
11360
11534
  return {
11361
11535
  flow: {
@@ -11369,17 +11543,22 @@ function gfmTable() {
11369
11543
  }
11370
11544
  function tokenizeTable(effects, ok3, nok) {
11371
11545
  const self = this;
11372
- let size = 0;
11546
+ let size2 = 0;
11373
11547
  let sizeB = 0;
11374
11548
  let seen;
11375
11549
  return start;
11376
11550
  function start(code2) {
11377
11551
  let index2 = self.events.length - 1;
11378
11552
  while (index2 > -1) {
11379
- const type = self.events[index2][1].type;
11553
+ const {
11554
+ type
11555
+ } = self.events[index2][1];
11380
11556
  if (type === "lineEnding" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`
11381
- type === "linePrefix") index2--;
11382
- else break;
11557
+ type === "linePrefix") {
11558
+ index2--;
11559
+ } else {
11560
+ break;
11561
+ }
11383
11562
  }
11384
11563
  const tail = index2 > -1 ? self.events[index2][1].type : null;
11385
11564
  const next = tail === "tableHead" || tail === "tableRow" ? bodyRowStart : headRowBefore;
@@ -11423,7 +11602,7 @@ function tokenizeTable(effects, ok3, nok) {
11423
11602
  sizeB += 1;
11424
11603
  if (seen) {
11425
11604
  seen = false;
11426
- size += 1;
11605
+ size2 += 1;
11427
11606
  }
11428
11607
  if (code2 === 124) {
11429
11608
  effects.enter("tableCellDivider");
@@ -11533,7 +11712,7 @@ function tokenizeTable(effects, ok3, nok) {
11533
11712
  return headDelimiterBefore(code2);
11534
11713
  }
11535
11714
  if (code2 === null || markdownLineEnding(code2)) {
11536
- if (!seen || size !== sizeB) {
11715
+ if (!seen || size2 !== sizeB) {
11537
11716
  return headDelimiterNok(code2);
11538
11717
  }
11539
11718
  effects.exit("tableDelimiterRow");
@@ -11593,7 +11772,7 @@ function resolveTable(events, context) {
11593
11772
  let currentTable;
11594
11773
  let currentBody;
11595
11774
  let currentCell;
11596
- const map = new EditMap();
11775
+ const map = new EditMap2();
11597
11776
  while (++index2 < events.length) {
11598
11777
  const event = events[index2];
11599
11778
  const token = event[1];
@@ -11741,7 +11920,7 @@ function getPoint(events, index2) {
11741
11920
  return event[1][side];
11742
11921
  }
11743
11922
 
11744
- // node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
11923
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
11745
11924
  var tasklistCheck = {
11746
11925
  name: "tasklistCheck",
11747
11926
  tokenize: tokenizeTasklistCheck
@@ -11815,7 +11994,7 @@ function spaceThenNonSpace(effects, ok3, nok) {
11815
11994
  }
11816
11995
  }
11817
11996
 
11818
- // node_modules/micromark-extension-gfm/index.js
11997
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/micromark-extension-gfm/index.js
11819
11998
  function gfm(options) {
11820
11999
  return combineExtensions([
11821
12000
  gfmAutolinkLiteral(),
@@ -11826,7 +12005,7 @@ function gfm(options) {
11826
12005
  ]);
11827
12006
  }
11828
12007
 
11829
- // node_modules/ccount/index.js
12008
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/ccount/index.js
11830
12009
  function ccount(value, character) {
11831
12010
  const source = String(value);
11832
12011
  if (typeof character !== "string") {
@@ -11841,11 +12020,11 @@ function ccount(value, character) {
11841
12020
  return count;
11842
12021
  }
11843
12022
 
11844
- // node_modules/devlop/lib/default.js
12023
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/devlop/lib/default.js
11845
12024
  function ok() {
11846
12025
  }
11847
12026
 
11848
- // node_modules/escape-string-regexp/index.js
12027
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/escape-string-regexp/index.js
11849
12028
  function escapeStringRegexp(string3) {
11850
12029
  if (typeof string3 !== "string") {
11851
12030
  throw new TypeError("Expected a string");
@@ -11853,7 +12032,7 @@ function escapeStringRegexp(string3) {
11853
12032
  return string3.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
11854
12033
  }
11855
12034
 
11856
- // node_modules/unist-util-is/lib/index.js
12035
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/unist-util-is/lib/index.js
11857
12036
  var convert = (
11858
12037
  // Note: overloads in JSDoc can’t yet use different `@template`s.
11859
12038
  /**
@@ -11952,12 +12131,12 @@ function looksLikeANode(value) {
11952
12131
  return value !== null && typeof value === "object" && "type" in value;
11953
12132
  }
11954
12133
 
11955
- // node_modules/unist-util-visit-parents/lib/color.js
12134
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/unist-util-visit-parents/lib/color.js
11956
12135
  function color(d) {
11957
12136
  return d;
11958
12137
  }
11959
12138
 
11960
- // node_modules/unist-util-visit-parents/lib/index.js
12139
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/unist-util-visit-parents/lib/index.js
11961
12140
  var empty = [];
11962
12141
  var CONTINUE = true;
11963
12142
  var EXIT = false;
@@ -12034,7 +12213,7 @@ function toResult(value) {
12034
12213
  return value === null || value === void 0 ? empty : [value];
12035
12214
  }
12036
12215
 
12037
- // node_modules/mdast-util-find-and-replace/lib/index.js
12216
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-find-and-replace/lib/index.js
12038
12217
  function findAndReplace(tree, list2, options) {
12039
12218
  const settings = options || {};
12040
12219
  const ignored = convert(settings.ignore || []);
@@ -12139,7 +12318,7 @@ function toFunction(replace2) {
12139
12318
  };
12140
12319
  }
12141
12320
 
12142
- // node_modules/mdast-util-gfm-autolink-literal/lib/index.js
12321
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
12143
12322
  function gfmAutolinkLiteralFromMarkdown() {
12144
12323
  return {
12145
12324
  transforms: [transformGfmAutolinkLiterals],
@@ -12260,7 +12439,7 @@ function previous2(match, email) {
12260
12439
  (!email || code2 !== 47);
12261
12440
  }
12262
12441
 
12263
- // node_modules/mdast-util-gfm-footnote/lib/index.js
12442
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm-footnote/lib/index.js
12264
12443
  footnoteReference.peek = footnoteReferencePeek;
12265
12444
  function enterFootnoteCallString() {
12266
12445
  this.buffer();
@@ -12334,7 +12513,8 @@ function gfmFootnoteFromMarkdown() {
12334
12513
  };
12335
12514
  }
12336
12515
 
12337
- // node_modules/mdast-util-gfm-strikethrough/lib/index.js
12516
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm-strikethrough/lib/index.js
12517
+ handleDelete.attention = attentionDelete;
12338
12518
  handleDelete.peek = peekDelete;
12339
12519
  function gfmStrikethroughFromMarkdown() {
12340
12520
  return {
@@ -12344,29 +12524,33 @@ function gfmStrikethroughFromMarkdown() {
12344
12524
  };
12345
12525
  }
12346
12526
  function enterStrikethrough(token) {
12347
- this.enter({ type: "delete", children: [] }, token);
12527
+ this.enter({ type: "delete", children: [], position: void 0 }, token);
12348
12528
  }
12349
12529
  function exitStrikethrough(token) {
12350
12530
  this.exit(token);
12351
12531
  }
12352
12532
  function handleDelete(node2, _, state, info) {
12353
12533
  const tracker = state.createTracker(info);
12534
+ const sequence = state.stack.includes("strikethrough") ? "~" : "~~";
12354
12535
  const exit3 = state.enter("strikethrough");
12355
- let value = tracker.move("~~");
12536
+ let value = tracker.move(sequence);
12356
12537
  value += state.containerPhrasing(node2, {
12357
12538
  ...tracker.current(),
12358
12539
  before: value,
12359
12540
  after: "~"
12360
12541
  });
12361
- value += tracker.move("~~");
12542
+ value += tracker.move(sequence);
12362
12543
  exit3();
12363
12544
  return value;
12364
12545
  }
12546
+ function attentionDelete() {
12547
+ return { construct: "strikethrough", markers: ["~"], sizes: [2, 1] };
12548
+ }
12365
12549
  function peekDelete() {
12366
12550
  return "~";
12367
12551
  }
12368
12552
 
12369
- // node_modules/mdast-util-gfm-table/lib/index.js
12553
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm-table/lib/index.js
12370
12554
  function gfmTableFromMarkdown() {
12371
12555
  return {
12372
12556
  enter: {
@@ -12426,7 +12610,7 @@ function replace($0, $1) {
12426
12610
  return $1 === "|" ? $1 : $0;
12427
12611
  }
12428
12612
 
12429
- // node_modules/mdast-util-gfm-task-list-item/lib/index.js
12613
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm-task-list-item/lib/index.js
12430
12614
  function gfmTaskListItemFromMarkdown() {
12431
12615
  return {
12432
12616
  exit: {
@@ -12473,7 +12657,7 @@ function exitParagraphWithTaskListItem(token) {
12473
12657
  this.exit(token);
12474
12658
  }
12475
12659
 
12476
- // node_modules/mdast-util-gfm/lib/index.js
12660
+ // ../../../home/moye/Online Document/dsh-plugins/dsh-partner/node_modules/mdast-util-gfm/lib/index.js
12477
12661
  function gfmFromMarkdown() {
12478
12662
  return [
12479
12663
  gfmAutolinkLiteralFromMarkdown(),
@@ -12616,14 +12800,14 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
12616
12800
  }, [onClose, anchor]);
12617
12801
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("section", { ref: panel, id: "dsh-partner-pendant-inbox", className: "dsh-partner-pendant-inbox", "aria-label": "\u4F19\u4F34\u6D88\u606F", tabIndex: -1, style: placement, children: [
12618
12802
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("header", { children: [
12619
- detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u8FD4\u56DE\u6D88\u606F\u5217\u8868", onClick: () => onSelect(), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconChevronDownOutline14, { size: 16, className: "dsh-partner-pendant-back" }) }),
12620
- !detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconNewChatOutline16, { size: 18 }) }),
12803
+ detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u8FD4\u56DE\u6D88\u606F\u5217\u8868", onClick: () => onSelect(), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconChevronDownOutlineRegular, { size: 16, className: "dsh-partner-pendant-back" }) }),
12804
+ !detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconNewChatOutlineRegular, { size: 18 }) }),
12621
12805
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "dsh-partner-pendant-reader-heading", children: [
12622
12806
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("strong", { children: detail ? detail.companionName : "\u4F19\u4F34\u6D88\u606F" }),
12623
12807
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("small", { children: detail ? detail.kind === "system" ? "\u63D2\u4EF6\u7CFB\u7EDF\u901A\u77E5" : "\u6765\u81EA\u4F19\u4F34\u7684\u6D88\u606F" : "\u56DE\u590D\u4E0E\u4EFB\u52A1\u52A8\u6001" })
12624
12808
  ] }),
12625
12809
  !!inbox.unread && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-count", "aria-label": `${inbox.unread} \u6761\u672A\u8BFB`, children: inbox.unread }),
12626
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u5173\u95ED\u4F19\u4F34\u6D88\u606F", onClick: (event) => onClose(event.detail === 0), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCloseOutline16, { size: 16 }) })
12810
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u5173\u95ED\u4F19\u4F34\u6D88\u606F", onClick: (event) => onClose(event.detail === 0), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCloseOutlineRegular, { size: 16 }) })
12627
12811
  ] }),
12628
12812
  error && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { role: "alert", className: "dsh-partner-pendant-error", children: error }),
12629
12813
  detail ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
@@ -12641,7 +12825,7 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
12641
12825
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: inbox.items.length })
12642
12826
  ] }),
12643
12827
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("button", { type: "button", className: "dsh-partner-pendant-source", onClick: () => onVisit(detail), children: [
12644
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconLinkOutline16, { size: 15 }),
12828
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconLinkOutlineRegular, { size: 15 }),
12645
12829
  detail.kind === "system" ? "\u524D\u5F80\u5347\u7EA7\u8FC1\u79FB" : detail.kind === "task" ? "\u67E5\u770B\u4EFB\u52A1" : detail.kind === "schedule" ? "\u67E5\u770B\u5B9A\u65F6\u4EFB\u52A1" : "\u8FDB\u5165\u4F1A\u8BDD"
12646
12830
  ] })
12647
12831
  ] })
@@ -12664,7 +12848,7 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
12664
12848
  " \u6761"
12665
12849
  ] }),
12666
12850
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("button", { type: "button", disabled: !inbox.unread, onClick: onReadAll, children: [
12667
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCheckOutline14, { size: 14 }),
12851
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCheckOutlineRegular, { size: 14 }),
12668
12852
  "\u5168\u90E8\u5DF2\u8BFB"
12669
12853
  ] })
12670
12854
  ] })
@@ -12861,7 +13045,7 @@ function CompanionPicker({ companions, selectedId, onChange }) {
12861
13045
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("strong", { children: current2?.name ?? "\u8FD8\u6CA1\u6709\u4F19\u4F34" }),
12862
13046
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("small", { children: current2?.role || "\u9009\u62E9\u4F19\u4F34" })
12863
13047
  ] }),
12864
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconChevronDownOutline14, { size: 14 }) })
13048
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconChevronDownOutlineRegular, { size: 14 }) })
12865
13049
  ] }),
12866
13050
  open && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref: list2, id: listId, role: "listbox", "aria-label": "\u9009\u62E9\u4F19\u4F34", className: "dsh-partner-companion-options", onKeyDown: navigate, children: companions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("button", { type: "button", role: "option", "aria-selected": item.id === current2?.id, tabIndex: item.id === current2?.id ? 0 : -1, onClick: () => {
12867
13051
  dismiss();
@@ -12872,7 +13056,7 @@ function CompanionPicker({ companions, selectedId, onChange }) {
12872
13056
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("strong", { children: item.name }),
12873
13057
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("small", { children: item.role })
12874
13058
  ] }),
12875
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-check", "aria-hidden": "true", children: item.id === current2?.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconCheckOutline14, { size: 14 }) })
13059
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-check", "aria-hidden": "true", children: item.id === current2?.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconCheckOutlineRegular, { size: 14 }) })
12876
13060
  ] }, item.id)) })
12877
13061
  ] });
12878
13062
  }
@@ -13288,7 +13472,7 @@ function SkillsPanel() {
13288
13472
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceHero, { eyebrow: "Capability catalog", title: "Skill \u5E02\u573A", detail: "\u96C6\u4E2D\u5B89\u88C5\u548C\u7EF4\u62A4\u5DE5\u4F5C\u80FD\u529B\uFF1B\u5B89\u88C5\u540E\uFF0C\u518D\u4E3A\u9700\u8981\u5B83\u7684\u4F19\u4F34\u5355\u72EC\u542F\u7528\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", disabled: loading, onClick: () => {
13289
13473
  void load2(true);
13290
13474
  }, children: [
13291
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconRefreshOutline16, { size: 15 }),
13475
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconRefreshOutlineRegular, { size: 15 }),
13292
13476
  loading ? "\u540C\u6B65\u4E2D\u2026" : "\u5237\u65B0\u5E02\u573A"
13293
13477
  ] }) }),
13294
13478
  error && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceNotice, { children: error }),
@@ -13302,15 +13486,15 @@ function SkillsPanel() {
13302
13486
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceBlock, { title: "\u5DF2\u5B89\u88C5", detail: `${catalog.installed.length} \u4E2A\u53EF\u4F9B\u4F19\u4F34\u4F7F\u7528`, actions: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
13303
13487
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", onClick: () => setImportingSkill(true), children: "\u5BFC\u5165 Skill" }),
13304
13488
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setCreatingSkill(true), children: [
13305
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutline16, { size: 14 }),
13489
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
13306
13490
  "\u65B0\u5EFA Skill"
13307
13491
  ] })
13308
13492
  ] }), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CollectionSkeleton, { rows: 2 }) : catalog.installed.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5B89\u88C5 Skill", detail: "\u53EF\u4EE5\u521B\u5EFA\u81EA\u5DF1\u7684 Skill\uFF0C\u6216\u4ECE\u4E0B\u65B9\u5E02\u573A\u9009\u62E9\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setCreatingSkill(true), children: [
13309
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutline16, { size: 14 }),
13493
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
13310
13494
  "\u65B0\u5EFA\u7B2C\u4E00\u4E2A Skill"
13311
13495
  ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
13312
13496
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "dsh-partner-skill-installed is-market", children: visibleInstalled.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("article", { children: [
13313
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutline16, { size: 16 }) }),
13497
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 16 }) }),
13314
13498
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { children: [
13315
13499
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("strong", { children: skill.displayName }),
13316
13500
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { children: skill.description }),
@@ -13324,7 +13508,7 @@ function SkillsPanel() {
13324
13508
  ] }),
13325
13509
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "is-icon", disabled: busy === skill.id, "aria-label": `\u5378\u8F7D ${skill.displayName}`, onClick: () => {
13326
13510
  void uninstall(skill.id);
13327
- }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconTrashOutline16, { size: 15 }) }),
13511
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconTrashOutlineRegular, { size: 15 }) }),
13328
13512
  actionError?.kind === "uninstall" && actionError.id === skill.id && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("p", { className: "dsh-partner-skill-action-error", role: "alert", children: [
13329
13513
  "\u5378\u8F7D\u5931\u8D25\uFF1A",
13330
13514
  actionError.message
@@ -13338,7 +13522,7 @@ function SkillsPanel() {
13338
13522
  network.proxyUrl ? " \xB7 \u5DF2\u542F\u7528" : ""
13339
13523
  ] }),
13340
13524
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setAddingSource(true), children: [
13341
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutline16, { size: 14 }),
13525
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
13342
13526
  "\u81EA\u5B9A\u4E49\u6E90"
13343
13527
  ] })
13344
13528
  ] }), children: [
@@ -13370,7 +13554,7 @@ function SkillsPanel() {
13370
13554
  entry.version
13371
13555
  ] }),
13372
13556
  current2 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", disabled: true, children: [
13373
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutline16, { size: 14 }),
13557
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 14 }),
13374
13558
  "\u5DF2\u5B89\u88C5"
13375
13559
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", disabled: busy === entry.id, "aria-describedby": errorId, onClick: () => {
13376
13560
  void install(entry);
@@ -13441,7 +13625,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
13441
13625
  " \u4E2A\u542F\u7528"
13442
13626
  ] }),
13443
13627
  catalog.installed.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", "aria-expanded": selecting, onClick: () => setSelecting((value) => !value), children: [
13444
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutline16, { size: 14 }),
13628
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
13445
13629
  "\u6DFB\u52A0 Skill"
13446
13630
  ] })
13447
13631
  ] })
@@ -13469,7 +13653,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
13469
13653
  ] }),
13470
13654
  catalog.installed.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "dsh-partner-feature-empty", children: "\u5C1A\u672A\u5B89\u88C5 Skill\uFF0C\u8BF7\u5148\u4ECE\u5DE6\u4FA7\u7684 Skill \u5E02\u573A\u5B89\u88C5\u3002" }) : enabledSkills.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "dsh-partner-feature-empty", children: "\u5F53\u524D\u4F19\u4F34\u8FD8\u6CA1\u6709\u542F\u7528 Skill\u3002\u70B9\u51FB\u201C\u6DFB\u52A0 Skill\u201D\u9009\u62E9\u9700\u8981\u7684\u80FD\u529B\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
13471
13655
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "dsh-partner-skill-installed is-binding", children: visibleEnabledSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("article", { children: [
13472
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutline16, { size: 16 }) }),
13656
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 16 }) }),
13473
13657
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { children: [
13474
13658
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("strong", { children: skill.displayName }),
13475
13659
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { children: skill.description }),
@@ -13486,7 +13670,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
13486
13670
  }
13487
13671
  function SkillSearch({ value, change, count, label, placeholder, loading = false, autoFocus = false, compact = false }) {
13488
13672
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: `dsh-partner-skill-search${compact ? " is-compact" : ""}`, role: "search", "aria-label": label, children: [
13489
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconSearchOutline16, { size: 16 }) }),
13673
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconSearchOutlineRegular, { size: 16 }) }),
13490
13674
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
13491
13675
  "input",
13492
13676
  {
@@ -13504,7 +13688,7 @@ function SkillSearch({ value, change, count, label, placeholder, loading = false
13504
13688
  }
13505
13689
  }
13506
13690
  ),
13507
- value && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "dsh-partner-skill-search-clear", "aria-label": "\u6E05\u7A7A\u641C\u7D22", title: "\u6E05\u7A7A\u641C\u7D22", onClick: () => change(""), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCloseOutline16, { size: 14 }) }),
13691
+ value && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "dsh-partner-skill-search-clear", "aria-label": "\u6E05\u7A7A\u641C\u7D22", title: "\u6E05\u7A7A\u641C\u7D22", onClick: () => change(""), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCloseOutlineRegular, { size: 14 }) }),
13508
13692
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-count", "aria-live": "polite", children: loading ? "\u540C\u6B65\u4E2D" : `${count} \u9879` })
13509
13693
  ] });
13510
13694
  }
@@ -13573,7 +13757,7 @@ function NewSkillForm({ existingIds, close, changed: changed2 }) {
13573
13757
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("footer", { children: [
13574
13758
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
13575
13759
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
13576
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutline16, { size: 14 }),
13760
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
13577
13761
  busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA Skill"
13578
13762
  ] })
13579
13763
  ] })
@@ -13852,7 +14036,7 @@ function McpPanel() {
13852
14036
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(WorkspaceHero, { eyebrow: "Capability catalog", title: "MCP \u670D\u52A1", detail: "\u96C6\u4E2D\u7BA1\u7406\u5916\u90E8\u5DE5\u5177\uFF0C\u518D\u5728\u4F19\u4F34\u80FD\u529B\u4E2D\u5355\u72EC\u6388\u6743\u3002\u914D\u7F6E\u4E0E\u5DE5\u5177\u76EE\u5F55\u7684\u66F4\u65B0\u5728\u4E0B\u4E00\u8F6E\u5BF9\u8BDD\u751F\u6548\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("button", { type: "button", disabled: loading || !!busy, onClick: () => {
13853
14037
  void load2();
13854
14038
  }, children: [
13855
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconRefreshOutline16, { size: 15 }),
14039
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconRefreshOutlineRegular, { size: 15 }),
13856
14040
  "\u5237\u65B0\u5217\u8868"
13857
14041
  ] }) }),
13858
14042
  error && !deleting && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(WorkspaceNotice, { children: error }),
@@ -13860,7 +14044,7 @@ function McpPanel() {
13860
14044
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(WorkspaceBlock, { title: "\u5DF2\u914D\u7F6E\u670D\u52A1", detail: `${catalog.servers.length} \u4E2A\u670D\u52A1 \xB7 \u5B89\u88C5\u4E0D\u7B49\u4E8E\u6388\u6743`, actions: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
13861
14045
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("button", { type: "button", onClick: () => setEditor("import"), children: "\u5BFC\u5165 JSON" }),
13862
14046
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("button", { type: "button", onClick: () => setEditor("new"), children: [
13863
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconPlusOutline16, { size: 14 }),
14047
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconPlusOutlineRegular, { size: 14 }),
13864
14048
  "\u65B0\u589E MCP"
13865
14049
  ] })
13866
14050
  ] }), children: [
@@ -14122,7 +14306,7 @@ function RequirementDetail({ item, tasks, directory, changed: changed2, close })
14122
14306
  " \u4E2A\u4EFB\u52A1"
14123
14307
  ] })
14124
14308
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("button", { type: "button", className: "is-danger", onClick: () => setConfirming(true), children: [
14125
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_dsh_client_ui_primitives13.IconTrashOutline16, { size: 14 }),
14309
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_dsh_client_ui_primitives13.IconTrashOutlineRegular, { size: 14 }),
14126
14310
  "\u5220\u9664\u9700\u6C42"
14127
14311
  ] })
14128
14312
  ] }),
@@ -14151,7 +14335,7 @@ function TaskBoardStage({ id, label, tasks, focused, filtered, renderTask }) {
14151
14335
  const expanded = !collapsed;
14152
14336
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("section", { "data-status": id, "data-empty": tasks.length === 0, "aria-labelledby": titleId, children: [
14153
14337
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("header", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("button", { type: "button", className: "dsh-partner-board-stage-toggle", "aria-expanded": expanded, "aria-controls": listId, onClick: () => setCollapsed((value) => !value), children: [
14154
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_dsh_client_ui_primitives14.IconChevronRightOutline14, { size: 14 }),
14338
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_dsh_client_ui_primitives14.IconChevronRightOutlineRegular, { size: 14 }),
14155
14339
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("strong", { id: titleId, children: label }),
14156
14340
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("b", { children: tasks.length })
14157
14341
  ] }) }),
@@ -14400,7 +14584,7 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
14400
14584
  !detailOnly && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
14401
14585
  back && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("nav", { className: "dsh-partner-requirement-breadcrumb", children: [
14402
14586
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: back, children: "\u9700\u6C42\u770B\u677F" }),
14403
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutline14, { size: 14 }),
14587
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutlineRegular, { size: 14 }),
14404
14588
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: requirement?.title ?? "\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1" })
14405
14589
  ] }),
14406
14590
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(WorkspaceHero, { eyebrow: requirement ? requirementStatus(requirement) : "\u65E7\u4EFB\u52A1", title: requirement?.title ?? "\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1", detail: requirement?.description || "\u4EFB\u52A1\u6309\u9636\u6BB5\u5C55\u793A\uFF0C\u70B9\u51FB\u67E5\u770B\u4EA4\u4ED8\u3001\u4F9D\u8D56\u548C\u6267\u884C\u72B6\u6001\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
@@ -14410,7 +14594,7 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
14410
14594
  ] }),
14411
14595
  requirement && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setRequirementDetail(true), children: "\u9700\u6C42\u8BE6\u60C5" }),
14412
14596
  requirement?.status === "planning" && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { type: "button", onClick: () => setCreating(true), children: [
14413
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutline16, { size: 15 }),
14597
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutlineRegular, { size: 15 }),
14414
14598
  "\u65B0\u4EFB\u52A1"
14415
14599
  ] })
14416
14600
  ] }) })
@@ -14455,9 +14639,9 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
14455
14639
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "dsh-partner-board-tools", children: [
14456
14640
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("label", { className: "dsh-partner-board-search", children: [
14457
14641
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }),
14458
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconSearchOutline16, { size: 16 }) }),
14642
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconSearchOutlineRegular, { size: 16 }) }),
14459
14643
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("input", { value: query, onChange: (event) => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }),
14460
- query && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setQuery(""), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCloseOutline16, { size: 14 }) })
14644
+ query && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setQuery(""), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCloseOutlineRegular, { size: 14 }) })
14461
14645
  ] }),
14462
14646
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("label", { className: "dsh-partner-board-assignee", children: [
14463
14647
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }),
@@ -14553,7 +14737,7 @@ function TaskCard({ task, tasksById, directoryById, dependentCount, execution, o
14553
14737
  ] })
14554
14738
  ] })
14555
14739
  ] }),
14556
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutline14, { size: 14 })
14740
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutlineRegular, { size: 14 })
14557
14741
  ] }) });
14558
14742
  }
14559
14743
  function TaskDetail({ task, tasks, activities, directory, execution, busy, update, delegate, review, accept, reject, remove }) {
@@ -14634,7 +14818,7 @@ function TaskDetail({ task, tasks, activities, directory, execution, busy, updat
14634
14818
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("small", { children: blockers.length ? `${blockers.length} \u9879\u672A\u5B8C\u6210\uFF0C\u5F53\u524D\u4EFB\u52A1\u4E0D\u80FD\u542F\u52A8` : dependencies.length ? "\u5DF2\u5168\u90E8\u5B8C\u6210\uFF0C\u53EF\u4EE5\u542F\u52A8" : "\u6CA1\u6709\u524D\u7F6E\u4F9D\u8D56" })
14635
14819
  ] }),
14636
14820
  dependencies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { children: dependencies.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { "data-done": item.status === "done", children: [
14637
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("i", { children: item.status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCheckOutline16, { size: 12 }) : "" }),
14821
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("i", { children: item.status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCheckOutlineRegular, { size: 12 }) : "" }),
14638
14822
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("b", { children: item.title }),
14639
14823
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy || ["doing", "review", "done"].includes(task.status), "aria-label": `\u79FB\u9664\u524D\u7F6E\u4EFB\u52A1 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter((id) => id !== item.id) }), children: "\u79FB\u9664" })
14640
14824
  ] }, item.id)) }),
@@ -14704,7 +14888,7 @@ function TaskDetail({ task, tasks, activities, directory, execution, busy, updat
14704
14888
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }),
14705
14889
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-primary", disabled: busy || Boolean(task.acceptanceCriteria?.length && (checks.length !== task.acceptanceCriteria.length || checks.some((c) => c.verdict !== "passed" || !c.evidence?.trim()))), onClick: () => accept(checks), children: "\u9A8C\u6536\u901A\u8FC7" })
14706
14890
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? "\u53EF\u63D0\u524D\u6392\u961F\uFF0C\u4F9D\u8D56\u901A\u8FC7\u9A8C\u6536\u540E\u81EA\u52A8\u6267\u884C" : !task.assigneeCompanionId ? "\u8BF7\u5148\u9009\u62E9\u8D1F\u8D23\u4EBA" : void 0, onClick: delegate, children: busy ? "\u6267\u884C\u4E2D\u2026" : execution?.status === "queued" ? "\u5DF2\u63D0\u4EA4\uFF0C\u7B49\u5F85\u6267\u884C" : task.status === "doing" ? "\u6B63\u5728\u6267\u884C" : task.status === "done" ? "\u5DF2\u7ECF\u5B8C\u6210" : `\u4EA4\u7ED9 @${assignee?.name ?? "\u4F19\u4F34"}` }),
14707
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-icon", "aria-label": `\u5220\u9664 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconTrashOutline16, { size: 14 }) })
14891
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-icon", "aria-label": `\u5220\u9664 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconTrashOutlineRegular, { size: 14 }) })
14708
14892
  ] })
14709
14893
  ] })
14710
14894
  ] });
@@ -14817,7 +15001,7 @@ function TaskForm({ requirementId, companions, tasks, close, changed: changed2 }
14817
15001
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("footer", { children: [
14818
15002
  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
14819
15003
  /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
14820
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutline16, { size: 14 }),
15004
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutlineRegular, { size: 14 }),
14821
15005
  busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA\u4EFB\u52A1"
14822
15006
  ] })
14823
15007
  ] })
@@ -14902,7 +15086,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
14902
15086
  } }, selected);
14903
15087
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "dsh-partner-feature-page is-board", children: [
14904
15088
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(WorkspaceHero, { eyebrow: "Shared workspace", title: "\u9700\u6C42\u770B\u677F", detail: "\u6309\u9700\u6C42\u7EC4\u7EC7\u5DE5\u4F5C\uFF0C\u5B50\u4EFB\u52A1\u72EC\u7ACB\u63A8\u8FDB\uFF0C\u6574\u4F53\u5B8C\u6210\u540E\u7EDF\u4E00\u6C47\u603B\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("button", { type: "button", onClick: () => setCreating(true), children: [
14905
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconPlusOutline16, { size: 15 }),
15089
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconPlusOutlineRegular, { size: 15 }),
14906
15090
  "\u65B0\u9700\u6C42"
14907
15091
  ] }) }),
14908
15092
  error && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(WorkspaceNotice, { children: [
@@ -14921,7 +15105,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
14921
15105
  ] }, String(value))) }),
14922
15106
  /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("label", { className: "dsh-partner-board-search", children: [
14923
15107
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "sr-only", children: "\u641C\u7D22\u9700\u6C42" }),
14924
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconSearchOutline16, { size: 16 }) }),
15108
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconSearchOutlineRegular, { size: 16 }) }),
14925
15109
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("input", { placeholder: "\u641C\u7D22\u9700\u6C42\u6216\u8D1F\u8D23\u4EBA", value: query, onChange: (event) => {
14926
15110
  setQuery(event.target.value);
14927
15111
  setLimit(24);
@@ -14950,7 +15134,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
14950
15134
  " \u5DF2\u9A8C\u6536",
14951
15135
  blocked ? ` \xB7 ${blocked} \u53D7\u963B` : ""
14952
15136
  ] }),
14953
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutline14, { size: 14 })
15137
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutlineRegular, { size: 14 })
14954
15138
  ] })
14955
15139
  ] }),
14956
15140
  /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("footer", { children: [
@@ -14975,7 +15159,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
14975
15159
  "\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1 ",
14976
15160
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("b", { children: groups.get("legacy").length }),
14977
15161
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: "\u4FDD\u7559\u539F\u8BB0\u5F55\uFF0C\u4E0D\u81EA\u52A8\u5408\u5E76" }),
14978
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutline14, { size: 14 })
15162
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutlineRegular, { size: 14 })
14979
15163
  ] })
14980
15164
  ] }),
14981
15165
  creating && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(WorkspaceDialog, { title: "\u65B0\u5EFA\u9700\u6C42", detail: "\u4E00\u4E2A\u9700\u6C42\u5BF9\u5E94\u4E00\u4EFD\u6700\u7EC8\u4EA4\u4ED8\uFF0C\u7531\u8D1F\u8D23\u4EBA\u7EDF\u4E00\u6536\u5C3E\u3002", close: () => setCreating(false), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RequirementForm, { directory, close: () => setCreating(false), created: async (item) => {
@@ -14999,6 +15183,7 @@ function SchedulePanel({ companions }) {
14999
15183
  const [busy, setBusy] = (0, import_react38.useState)();
15000
15184
  const [loading, setLoading] = (0, import_react38.useState)(true);
15001
15185
  const [error, setError] = (0, import_react38.useState)();
15186
+ const eligible = companions.filter((c) => c.capabilities.includes("schedules"));
15002
15187
  const load2 = (0, import_react38.useCallback)(async () => {
15003
15188
  try {
15004
15189
  const value = await api("/schedules");
@@ -15012,7 +15197,18 @@ function SchedulePanel({ companions }) {
15012
15197
  }
15013
15198
  }, []);
15014
15199
  (0, import_react38.useEffect)(() => {
15015
- void load2();
15200
+ let stopped = false, timer2;
15201
+ const refresh = async () => {
15202
+ if (document.visibilityState !== "hidden") await load2();
15203
+ if (!stopped) timer2 = setTimeout(() => {
15204
+ void refresh();
15205
+ }, 5e3);
15206
+ };
15207
+ void refresh();
15208
+ return () => {
15209
+ stopped = true;
15210
+ clearTimeout(timer2);
15211
+ };
15016
15212
  }, [load2]);
15017
15213
  const update = async (entry, value) => {
15018
15214
  setBusy(entry.id);
@@ -15048,53 +15244,86 @@ function SchedulePanel({ companions }) {
15048
15244
  }
15049
15245
  };
15050
15246
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "dsh-partner-feature-page", children: [
15051
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceHero, { eyebrow: "Ephemeral automation", title: "\u4F19\u4F34\u5B9A\u65F6\u4EFB\u52A1", detail: "\u7531\u6307\u5B9A\u4F19\u4F34\u5728\u9694\u79BB\u4E34\u65F6\u4F1A\u8BDD\u4E2D\u6267\u884C\uFF1B\u9ED8\u8BA4\u5B8C\u6210\u5373\u9500\u6BC1\uFF0C\u907F\u514D\u957F\u671F\u4F1A\u8BDD\u88AB\u540E\u53F0\u4EFB\u52A1\u6C61\u67D3\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
15247
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceHero, { eyebrow: "Scheduled automation", title: "\u4F19\u4F34\u5B9A\u65F6\u4EFB\u52A1", detail: "\u9700\u5F00\u542F\u4F19\u4F34\u7684\u5B9A\u65F6\u4EFB\u52A1\u80FD\u529B\u3002\u5468\u671F\u5DE5\u4F5C\u5728\u4E34\u65F6\u4F1A\u8BDD\u6267\u884C\uFF1B\u957F\u4EFB\u52A1\u4E00\u6B21\u6027\u5524\u9192\uFF0C\u56DE\u5230\u539F\u4F1A\u8BDD\u68C0\u67E5\u5E76\u7EED\u63A5\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
15052
15248
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: loading, onClick: () => {
15053
15249
  void load2();
15054
15250
  }, children: [
15055
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconRefreshOutline16, { size: 15 }),
15251
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconRefreshOutlineRegular, { size: 15 }),
15056
15252
  "\u5237\u65B0"
15057
15253
  ] }),
15058
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: companions.length === 0, onClick: () => setCreating(true), children: [
15059
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutline16, { size: 15 }),
15254
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: eligible.length === 0, onClick: () => setCreating(true), children: [
15255
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 15 }),
15060
15256
  "\u65B0\u8BA1\u5212"
15061
15257
  ] })
15062
15258
  ] }) }),
15259
+ eligible.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceNotice, { children: "\u8BF7\u5148\u5728\u4F19\u4F34\u80FD\u529B\u4E2D\u52FE\u9009\u201C\u5B9A\u65F6\u4EFB\u52A1\u201D\u3002\u5173\u95ED\u80FD\u529B\u540E\uFF0C\u5DF2\u6709\u8BA1\u5212\u4E0D\u4F1A\u7EE7\u7EED\u6267\u884C\u3002" }),
15063
15260
  error && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceNotice, { children: error }),
15064
- creating && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B9A\u65F6\u4EFB\u52A1", detail: "\u9009\u62E9\u6267\u884C\u4F19\u4F34\u3001\u8FD0\u884C\u9891\u7387\u548C\u4F1A\u8BDD\u4FDD\u7559\u7B56\u7565\u3002\u8BA1\u5212\u521B\u5EFA\u540E\u53EF\u4EE5\u968F\u65F6\u505C\u7528\u6216\u7ACB\u5373\u6267\u884C\u3002", close: () => setCreating(false), width: "wide", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ScheduleForm, { companions, close: () => setCreating(false), changed: load2 }) }),
15065
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceBlock, { title: "\u6267\u884C\u8BA1\u5212", detail: `${schedules.filter((item) => item.enabled).length} \u4E2A\u542F\u7528`, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionSkeleton, { rows: 3 }) : schedules.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5B9A\u65F6\u4EFB\u52A1", detail: "\u521B\u5EFA\u8BA1\u5212\u540E\uFF0C\u4F19\u4F34\u4F1A\u6309\u8BBE\u5B9A\u5728\u72EC\u7ACB\u4F1A\u8BDD\u4E2D\u6267\u884C\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: companions.length === 0, onClick: () => setCreating(true), children: [
15066
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutline16, { size: 14 }),
15261
+ creating && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B9A\u65F6\u4EFB\u52A1", detail: "\u9009\u62E9\u6267\u884C\u4F19\u4F34\u3001\u8FD0\u884C\u9891\u7387\u548C\u4F1A\u8BDD\u4FDD\u7559\u7B56\u7565\u3002\u957F\u4EFB\u52A1\u7EED\u63A5\u7531\u4F19\u4F34\u901A\u8FC7\u5DE5\u5177\u9884\u7EA6\uFF0C\u65E0\u9700\u5728\u8FD9\u91CC\u624B\u52A8\u521B\u5EFA\u3002", close: () => setCreating(false), width: "wide", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ScheduleForm, { companions: eligible, close: () => setCreating(false), changed: load2 }) }),
15262
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceBlock, { title: "\u6267\u884C\u8BA1\u5212", detail: `${schedules.filter((item) => item.enabled && eligible.some((c) => c.id === item.companionId)).length} \u4E2A\u542F\u7528`, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionSkeleton, { rows: 3 }) : schedules.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5B9A\u65F6\u4EFB\u52A1", detail: "\u5468\u671F\u8BA1\u5212\u548C\u957F\u4EFB\u52A1\u7EED\u63A5\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: eligible.length === 0, onClick: () => setCreating(true), children: [
15263
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 14 }),
15067
15264
  "\u521B\u5EFA\u7B2C\u4E00\u4E2A\u8BA1\u5212"
15068
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dsh-partner-schedule-list", children: schedules.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("article", { children: [
15069
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { children: [
15070
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("strong", { children: entry.title }),
15071
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: entry.prompt }),
15072
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "dsh-partner-schedule-meta", children: [
15073
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("em", { children: [
15074
- "@",
15075
- companionName(companions, entry.companionId)
15076
- ] }),
15077
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("em", { children: scheduleLabel(entry) }),
15078
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("em", { children: [
15079
- "\u4E0B\u6B21 ",
15080
- new Date(entry.nextRunAt).toLocaleString()
15265
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dsh-partner-schedule-list", children: schedules.map((entry) => {
15266
+ const wake = entry.continuation, allowed = eligible.some((c) => c.id === entry.companionId);
15267
+ const terminal = wake && ["completed", "blocked", "cancelled"].includes(wake.state);
15268
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("article", { children: [
15269
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { children: [
15270
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("strong", { children: entry.title }),
15271
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { children: entry.prompt }),
15272
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "dsh-partner-schedule-meta", children: [
15273
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("em", { children: [
15274
+ "@",
15275
+ companionName(companions, entry.companionId)
15276
+ ] }),
15277
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("em", { children: scheduleLabel(entry) }),
15278
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("em", { children: !allowed ? "\u80FD\u529B\u5DF2\u5173\u95ED" : terminal ? continuationState(wake.state) : !entry.enabled ? "\u5DF2\u6682\u505C" : wake?.state === "running" ? continuationState(wake.state) : `\u4E0B\u6B21 ${new Date(entry.nextRunAt).toLocaleString()}` }),
15279
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("em", { children: wake ? `\u5524\u9192 ${wake.attempts}/${wake.maxAttempts} \xB7 \u5DF2\u6838\u67E5 ${wake.checks ?? 0} \u6B21` : entry.destroySessionAfterRun ? "\u6267\u884C\u540E\u9500\u6BC1" : "\u4FDD\u7559\u4F1A\u8BDD" })
15081
15280
  ] }),
15082
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("em", { children: entry.destroySessionAfterRun ? "\u6267\u884C\u540E\u9500\u6BC1" : "\u4FDD\u7559\u4F1A\u8BDD" })
15083
- ] })
15084
- ] }),
15085
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", className: "dsh-partner-feature-switch", "data-on": entry.enabled, "aria-pressed": entry.enabled, disabled: busy === entry.id, onClick: () => {
15086
- void update(entry, { enabled: !entry.enabled });
15087
- }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("i", {}) }),
15088
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: busy === entry.id, onClick: () => {
15089
- void run(entry);
15090
- }, children: [
15091
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlayOutline16, { size: 14 }),
15092
- busy === entry.id ? "\u6267\u884C\u4E2D\u2026" : "\u7ACB\u5373\u6267\u884C"
15093
- ] }),
15094
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", className: "is-icon", disabled: busy === entry.id, onClick: () => {
15095
- void remove(entry);
15096
- }, "aria-label": `\u5220\u9664 ${entry.title}`, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconTrashOutline16, { size: 14 }) })
15097
- ] }, entry.id)) }) }),
15281
+ wake && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("details", { children: [
15282
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("summary", { children: [
15283
+ "\u7EED\u63A5\u8BE6\u60C5 \xB7 ",
15284
+ continuationState(wake.state)
15285
+ ] }),
15286
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15287
+ "\u5916\u90E8\u4EFB\u52A1\uFF1A",
15288
+ wake.externalTaskId
15289
+ ] }),
15290
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15291
+ "\u622A\u6B62\uFF1A",
15292
+ new Date(wake.deadlineAt).toLocaleString()
15293
+ ] }),
15294
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15295
+ "\u5B8C\u6210\u6761\u4EF6\uFF1A",
15296
+ wake.completion ?? wake.check
15297
+ ] }),
15298
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15299
+ "\u5355\u6B21\u68C0\u67E5\u9650\u65F6\uFF1A",
15300
+ entry.timeoutMinutes,
15301
+ " \u5206\u949F"
15302
+ ] }),
15303
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15304
+ "\u5173\u95ED\u9884\u7EA6\u540E\uFF1A",
15305
+ wake.nextStep
15306
+ ] }),
15307
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { children: [
15308
+ "\u6700\u8FD1\u7ED3\u679C\uFF1A",
15309
+ wake.summary || "\u5C1A\u672A\u68C0\u67E5"
15310
+ ] })
15311
+ ] })
15312
+ ] }),
15313
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", className: "dsh-partner-feature-switch", "data-on": entry.enabled && allowed, "aria-label": `${entry.enabled ? "\u6682\u505C" : "\u542F\u7528"} ${entry.title}`, "aria-pressed": entry.enabled && allowed, disabled: busy === entry.id || !allowed || !!terminal, onClick: () => {
15314
+ void update(entry, { enabled: !entry.enabled });
15315
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("i", {}) }),
15316
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: busy === entry.id || !allowed || !!terminal || !!wake && (!entry.enabled || wake.state === "running"), onClick: () => {
15317
+ void run(entry);
15318
+ }, children: [
15319
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlayOutlineRegular, { size: 14 }),
15320
+ busy === entry.id ? "\u5DF2\u63D0\u4EA4\u2026" : wake ? "\u7ACB\u5373\u68C0\u67E5" : "\u7ACB\u5373\u6267\u884C"
15321
+ ] }),
15322
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", className: "is-icon", disabled: busy === entry.id, onClick: () => {
15323
+ void remove(entry);
15324
+ }, "aria-label": `\u5220\u9664 ${entry.title}`, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconTrashOutlineRegular, { size: 14 }) })
15325
+ ] }, entry.id);
15326
+ }) }) }),
15098
15327
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(WorkspaceBlock, { title: "\u6700\u8FD1\u8FD0\u884C", detail: "\u4FDD\u7559\u6700\u8FD1\u7684\u72B6\u6001\u4E0E\u7ED3\u679C\u6458\u8981", children: [
15099
15328
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dsh-partner-run-list", children: runs.map((run2) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("article", { "data-status": run2.status, children: [
15100
15329
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("i", {}),
@@ -15201,14 +15430,17 @@ function ScheduleForm({ companions, close, changed: changed2 }) {
15201
15430
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("footer", { children: [
15202
15431
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
15203
15432
  /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
15204
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutline16, { size: 14 }),
15433
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 14 }),
15205
15434
  busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA\u8BA1\u5212"
15206
15435
  ] })
15207
15436
  ] })
15208
15437
  ] });
15209
15438
  }
15210
15439
  function scheduleLabel(entry) {
15211
- return entry.schedule.kind === "interval" ? `\u6BCF ${entry.schedule.minutes} \u5206\u949F` : `\u6BCF\u5929 ${String(entry.schedule.hour).padStart(2, "0")}:${String(entry.schedule.minute).padStart(2, "0")}`;
15440
+ return entry.schedule.kind === "once" ? "\u957F\u4EFB\u52A1\u7EED\u63A5 \xB7 \u4E00\u6B21\u6027" : entry.schedule.kind === "interval" ? `\u6BCF ${entry.schedule.minutes} \u5206\u949F` : `\u6BCF\u5929 ${String(entry.schedule.hour).padStart(2, "0")}:${String(entry.schedule.minute).padStart(2, "0")}`;
15441
+ }
15442
+ function continuationState(state) {
15443
+ return { waiting: "\u7B49\u5F85\u68C0\u67E5", running: "\u5DF2\u5524\u9192 \xB7 \u7B49\u5F85\u68C0\u67E5\u7ED3\u679C", completed: "\u5DF2\u5B8C\u6210", blocked: "\u9700\u8981\u5904\u7406", cancelled: "\u5DF2\u53D6\u6D88" }[state];
15212
15444
  }
15213
15445
  function companionName(companions, id) {
15214
15446
  return companions.find((item) => item.id === id)?.name ?? "\u5DF2\u5220\u9664\u4F19\u4F34";
@@ -15310,7 +15542,7 @@ function CompanionMcpSettings({ companionId, embedded = false, onBusyChange }) {
15310
15542
  setSelecting(true);
15311
15543
  void load2();
15312
15544
  }, children: [
15313
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_dsh_client_ui_primitives18.IconPlusOutline16, { size: 14 }),
15545
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_dsh_client_ui_primitives18.IconPlusOutlineRegular, { size: 14 }),
15314
15546
  "\u9009\u62E9 MCP"
15315
15547
  ] }), children: [
15316
15548
  !selecting && feedback,
@@ -15400,7 +15632,7 @@ function CompanionAccessPanel({ companionId, onBusyChange }) {
15400
15632
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { children: companion.description || "\u672A\u586B\u5199\u4F19\u4F34\u8BF4\u660E" }),
15401
15633
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: [...abilities, ...companion.enabledSkills.map((skill) => skill.name)].map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("em", { children: item }, item)) })
15402
15634
  ] }),
15403
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dsh-partner-access-check", "aria-hidden": "true", children: selected && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_dsh_client_ui_primitives19.IconCheckOutline16, { size: 15 }) })
15635
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dsh-partner-access-check", "aria-hidden": "true", children: selected && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_dsh_client_ui_primitives19.IconCheckOutlineRegular, { size: 15 }) })
15404
15636
  ] }, companion.id);
15405
15637
  }) }),
15406
15638
  error && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(WorkspaceNotice, { children: error })
@@ -15605,7 +15837,7 @@ function CapabilityEditor({ companion, presets, onChanged }) {
15605
15837
  group.choices.map((choice) => {
15606
15838
  const active2 = form.capabilities.includes(choice.id);
15607
15839
  const control = /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("button", { type: "button", disabled: saving, className: active2 ? "is-active" : "", "aria-pressed": active2, onClick: () => toggle(choice.id), children: [
15608
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: active2 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dsh_client_ui_primitives20.IconCheckOutline14, { size: 14 }) }),
15840
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: active2 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dsh_client_ui_primitives20.IconCheckOutlineRegular, { size: 14 }) }),
15609
15841
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("strong", { children: choice.title }),
15610
15842
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("small", { children: choice.detail })
15611
15843
  ] });
@@ -15710,7 +15942,7 @@ function IdentityEditorForm({ companion, count, onChanged, onRemoved }) {
15710
15942
  error && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "dsh-partner-inline-error", role: "alert", children: error }),
15711
15943
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "dsh-partner-form-actions", children: [
15712
15944
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { role: "status", children: saved && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
15713
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconCheckOutline14, { size: 14 }),
15945
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconCheckOutlineRegular, { size: 14 }),
15714
15946
  "\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u4E00\u8F6E\u5C06\u4F7F\u7528\u65B0\u8EAB\u4EFD"
15715
15947
  ] }) }),
15716
15948
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("button", { disabled: busy, children: operation === "save" ? "\u6B63\u5728\u4FDD\u5B58\u2026" : "\u4FDD\u5B58\u8EAB\u4EFD" })
@@ -15724,7 +15956,7 @@ function IdentityEditorForm({ companion, count, onChanged, onRemoved }) {
15724
15956
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { children: [
15725
15957
  confirming && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("button", { type: "button", disabled: busy, className: "is-secondary", onClick: () => setConfirmationId(void 0), children: "\u53D6\u6D88" }),
15726
15958
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("button", { type: "button", className: confirming ? "is-danger" : "", disabled: busy || count <= 1, onClick: () => confirming ? void remove() : setConfirmationId(companion.id), children: [
15727
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconTrashOutline16, { size: 16 }),
15959
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconTrashOutlineRegular, { size: 16 }),
15728
15960
  operation === "remove" ? "\u6B63\u5728\u5220\u9664\u2026" : removed ? "\u5DF2\u5220\u9664" : confirming ? "\u786E\u8BA4\u5220\u9664" : "\u5220\u9664"
15729
15961
  ] })
15730
15962
  ] })
@@ -16262,7 +16494,7 @@ function CompanionCreateDialog({ close, create }) {
16262
16494
  /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("footer", { children: [
16263
16495
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
16264
16496
  /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
16265
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_dsh_client_ui_primitives22.IconPlusOutline16, { size: 14 }),
16497
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_dsh_client_ui_primitives22.IconPlusOutlineRegular, { size: 14 }),
16266
16498
  busy ? "\u6B63\u5728\u521B\u5EFA\u2026" : "\u521B\u5EFA\u4F19\u4F34"
16267
16499
  ] })
16268
16500
  ] })
@@ -16343,19 +16575,19 @@ function createPartnerController(ctx, pluginId, render) {
16343
16575
  if (prepared.sessionId !== sessionId) throw new Error("\u4F19\u4F34\u4F1A\u8BDD\u6807\u8BC6\u4E0D\u4E00\u81F4");
16344
16576
  await waitForClientSession(ctx, sessionId);
16345
16577
  controller.close();
16346
- sessions(ctx).open(sessionId);
16578
+ ctx.uiWorkspace.openSession(sessionId);
16347
16579
  },
16348
16580
  async startSession(companionId) {
16349
16581
  const created = await api(`/companions/${encodeURIComponent(companionId)}/session`, { method: "POST" });
16350
16582
  await waitForClientSession(ctx, created.sessionId);
16351
16583
  controller.close();
16352
- sessions(ctx).open(created.sessionId);
16584
+ ctx.uiWorkspace.openSession(created.sessionId);
16353
16585
  },
16354
16586
  async renewSession(routeId) {
16355
16587
  const renewed = await api(`/sessions/${encodeURIComponent(routeId)}/renew`, { method: "POST" });
16356
16588
  await waitForClientSession(ctx, renewed.sessionId);
16357
16589
  controller.close();
16358
- sessions(ctx).open(renewed.sessionId);
16590
+ ctx.uiWorkspace.openSession(renewed.sessionId);
16359
16591
  },
16360
16592
  subscribe(listener) {
16361
16593
  listeners3.add(listener);
@@ -16391,7 +16623,7 @@ function sessions(ctx) {
16391
16623
  var import_dsh_client_ui_primitives23 = require("@deepseek-ai/dsh-client-ui-primitives");
16392
16624
 
16393
16625
  // src/ui/storage-settings.tsx
16394
- var import_react49 = require("react");
16626
+ var import_react50 = require("react");
16395
16627
 
16396
16628
  // src/ui/storage-recovery.ts
16397
16629
  var StorageStatusError = class extends Error {
@@ -16438,17 +16670,183 @@ async function waitForStorage(signal, onWait, options = {}) {
16438
16670
  throw Error("\u670D\u52A1\u5C1A\u672A\u6062\u590D\uFF0C\u5DF2\u505C\u6B62\u81EA\u52A8\u68C0\u67E5\u3002\u8BF7\u7A0D\u540E\u70B9\u51FB\u300C\u91CD\u65B0\u8FDE\u63A5\u300D\uFF1B\u4E0D\u8981\u91CD\u590D\u63D0\u4EA4\u8FC1\u79FB\u3002");
16439
16671
  }
16440
16672
 
16441
- // src/ui/storage-settings.tsx
16673
+ // src/ui/attachment-storage.tsx
16674
+ var import_react49 = require("react");
16442
16675
  var import_jsx_runtime44 = require("react/jsx-runtime");
16676
+ var size = (bytes) => `${(bytes / 1048576).toFixed(2)} MiB`;
16677
+ function AttachmentStoragePanel() {
16678
+ const [view, setView] = (0, import_react49.useState)(), [limit, setLimit] = (0, import_react49.useState)("512");
16679
+ const [owner, setOwner] = (0, import_react49.useState)(""), [days, setDays] = (0, import_react49.useState)("0"), [offset, setOffset] = (0, import_react49.useState)(0);
16680
+ const [selected, setSelected] = (0, import_react49.useState)([]), [busy, setBusy] = (0, import_react49.useState)(false), [confirm, setConfirm] = (0, import_react49.useState)(false);
16681
+ const [error, setError] = (0, import_react49.useState)(""), [notice, setNotice] = (0, import_react49.useState)(""), [revision, setRevision] = (0, import_react49.useState)(0);
16682
+ const [expanded, setExpanded] = (0, import_react49.useState)(false);
16683
+ (0, import_react49.useEffect)(() => {
16684
+ const controller = new AbortController();
16685
+ setBusy(true);
16686
+ setSelected([]);
16687
+ setError("");
16688
+ api(`/attachments/storage?${new URLSearchParams({ owner, days, offset: String(offset) })}`, { signal: controller.signal }).then((data) => {
16689
+ setView(data);
16690
+ setLimit(String(data.limitMiB));
16691
+ }).catch((e) => {
16692
+ if (!controller.signal.aborted) setError(errorMessage(e));
16693
+ }).finally(() => {
16694
+ if (!controller.signal.aborted) setBusy(false);
16695
+ });
16696
+ return () => controller.abort();
16697
+ }, [owner, days, offset, revision]);
16698
+ const save = async () => {
16699
+ setBusy(true);
16700
+ setError("");
16701
+ setNotice("");
16702
+ try {
16703
+ await api("/attachments/storage", { method: "PUT", body: JSON.stringify({ limitMiB: Number(limit) }) });
16704
+ setNotice("\u989D\u5EA6\u5DF2\u4FDD\u5B58\uFF0C\u7ACB\u5373\u751F\u6548\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002");
16705
+ setRevision((v) => v + 1);
16706
+ } catch (e) {
16707
+ setError(errorMessage(e));
16708
+ } finally {
16709
+ setBusy(false);
16710
+ }
16711
+ };
16712
+ const clean = async () => {
16713
+ setBusy(true);
16714
+ setError("");
16715
+ setNotice("");
16716
+ try {
16717
+ const result = await api("/attachments/cleanup", { method: "POST", body: JSON.stringify({ ids: selected, confirm: true }) });
16718
+ setConfirm(false);
16719
+ setNotice(`\u5DF2\u6E05\u7406 ${result.removed} \u4E2A\u526F\u672C\uFF0C\u91CA\u653E ${size(result.freedBytes)}\uFF1B\u8DF3\u8FC7 ${result.skipped} \u4E2A\uFF0C\u5931\u8D25 ${result.failed} \u4E2A\u3002`);
16720
+ setRevision((v) => v + 1);
16721
+ } catch (e) {
16722
+ setError(errorMessage(e));
16723
+ } finally {
16724
+ setBusy(false);
16725
+ }
16726
+ };
16727
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(WorkspaceBlock, { title: "\u9644\u4EF6\u5B58\u50A8", className: "attachment-storage-block", children: [
16728
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { id: "partner-attachment-storage", className: "dsh-partner-attachment-storage", "aria-busy": busy, children: [
16729
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-overview", children: [
16730
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-usage", children: [
16731
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", { children: view ? `${size(view.usedBytes)} / ${view.limitMiB} MiB` : "\u6B63\u5728\u8BFB\u53D6\u2026" }),
16732
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("small", { children: view ? `${view.count} \u4E2A\u526F\u672C \xB7 \u5168\u90E8\u4F19\u4F34\u5171\u4EAB` : "\u6B63\u5728\u7EDF\u8BA1\u9644\u4EF6\u5360\u7528" })
16733
+ ] }),
16734
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("form", { onSubmit: (e) => {
16735
+ e.preventDefault();
16736
+ void save();
16737
+ }, children: [
16738
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
16739
+ "\u989D\u5EA6",
16740
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("input", { "aria-label": "\u603B\u989D\u5EA6\uFF08MiB\uFF09", type: "number", min: "64", max: "1048576", step: "1", required: true, value: limit, disabled: busy, onChange: (e) => setLimit(e.target.value) }),
16741
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "MiB" })
16742
+ ] }),
16743
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { "aria-label": "\u4FDD\u5B58\u989D\u5EA6", disabled: busy || !view || Number(limit) === view.limitMiB, children: "\u4FDD\u5B58" })
16744
+ ] }),
16745
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", "aria-expanded": expanded, "aria-controls": "attachment-storage-manager", onClick: () => setExpanded((v) => !v), children: expanded ? "\u6536\u8D77\u660E\u7EC6" : "\u7BA1\u7406\u526F\u672C" })
16746
+ ] }),
16747
+ expanded && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { id: "attachment-storage-manager", children: [
16748
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-filters", children: [
16749
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
16750
+ "\u4F19\u4F34",
16751
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("select", { value: owner, disabled: busy, onChange: (e) => {
16752
+ setOwner(e.target.value);
16753
+ setOffset(0);
16754
+ }, children: [
16755
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "", children: "\u5168\u90E8\u4F19\u4F34" }),
16756
+ view?.owners.map((o) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: o.id, children: o.name }, o.id))
16757
+ ] })
16758
+ ] }),
16759
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
16760
+ "\u521B\u5EFA\u65F6\u95F4",
16761
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("select", { value: days, disabled: busy, onChange: (e) => {
16762
+ setDays(e.target.value);
16763
+ setOffset(0);
16764
+ }, children: [
16765
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "0", children: "\u5168\u90E8\u65F6\u95F4" }),
16766
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "7", children: "7 \u5929\u4EE5\u524D" }),
16767
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "30", children: "30 \u5929\u4EE5\u524D" }),
16768
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "90", children: "90 \u5929\u4EE5\u524D" })
16769
+ ] })
16770
+ ] }),
16771
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy, onClick: () => setRevision((v) => v + 1), children: "\u5237\u65B0" })
16772
+ ] }),
16773
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-selection", children: [
16774
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || !view?.items.some((i) => !i.protectedReason), onClick: () => setSelected(selected.length ? [] : view.items.filter((i) => !i.protectedReason).map((i) => i.id)), children: selected.length ? "\u53D6\u6D88\u9009\u62E9" : "\u9009\u62E9\u672C\u9875" }),
16775
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("small", { children: [
16776
+ "\u53EF\u6E05\u7406 ",
16777
+ size(view?.eligibleBytes ?? 0),
16778
+ " \xB7 \u4F7F\u7528\u4E2D\u7684\u526F\u672C\u53D7\u4FDD\u62A4"
16779
+ ] })
16780
+ ] }),
16781
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "attachment-storage-list", children: view?.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { className: "attachment-storage-row", children: [
16782
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("input", { type: "checkbox", disabled: busy || !!item.protectedReason, checked: selected.includes(item.id), onChange: (e) => setSelected((ids) => e.target.checked ? [...ids, item.id] : ids.filter((id) => id !== item.id)) }),
16783
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { children: [
16784
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", { title: item.name, children: item.name }),
16785
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("small", { children: [
16786
+ item.companionName,
16787
+ " \xB7 ",
16788
+ size(item.size),
16789
+ " \xB7 ",
16790
+ item.createdAt ? new Date(item.createdAt).toLocaleString() : "\u65F6\u95F4\u672A\u77E5",
16791
+ " \xB7 ",
16792
+ item.protectedReason ?? (item.channel === "sent" ? "\u5DF2\u53D1\u9001" : "\u4F1A\u8BDD\u526F\u672C")
16793
+ ] })
16794
+ ] })
16795
+ ] }, item.id)) }),
16796
+ view && !view.items.length && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u526F\u672C\u3002" }),
16797
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-filters", children: [
16798
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || offset === 0, onClick: () => setOffset(Math.max(0, offset - 30)), children: "\u4E0A\u4E00\u9875" }),
16799
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { children: [
16800
+ "\u7B2C ",
16801
+ Math.floor(offset / 30) + 1,
16802
+ " \u9875 \xB7 \u5171 ",
16803
+ view?.filteredCount ?? 0,
16804
+ " \u9879"
16805
+ ] }),
16806
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || !view || offset + 30 >= view.filteredCount, onClick: () => setOffset(offset + 30), children: "\u4E0B\u4E00\u9875" }),
16807
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("button", { disabled: busy || !selected.length, onClick: () => setConfirm(true), children: [
16808
+ "\u6E05\u7406\u6240\u9009\uFF08",
16809
+ selected.length,
16810
+ "\uFF09"
16811
+ ] })
16812
+ ] }),
16813
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("details", { className: "attachment-storage-help", children: [
16814
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("summary", { children: "\u5B58\u50A8\u4E0E\u6E05\u7406\u8BF4\u660E" }),
16815
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u526F\u672C\u7EDF\u4E00\u5B58\u653E\uFF0C\u539F\u6587\u4EF6\u4E0D\u53D7\u5F71\u54CD\u3002\u4E0D\u4F1A\u81EA\u52A8\u6E05\u7406\uFF1B\u964D\u4F4E\u989D\u5EA6\u4E0D\u5220\u9664\u65E7\u526F\u672C\uFF0C\u8D85\u989D\u65F6\u505C\u6B62\u65B0\u589E\u3002\u5355\u6587\u4EF6\u4E0A\u9650 64 MiB\u3002" }),
16816
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u53D1\u9001\u4E2D\u3001\u5931\u8D25\u5F85\u91CD\u8BD5\u3001\u6700\u8FD1 5 \u5206\u949F\u521B\u5EFA\u53CA\u672A\u5B8C\u6210\u4EFB\u52A1/\u9700\u6C42\u5F15\u7528\u7684\u526F\u672C\u4E0D\u80FD\u6E05\u7406\u3002\u6E05\u7406\u540E\u5BF9\u5E94\u5386\u53F2\u4E0B\u8F7D\u94FE\u63A5\u5931\u6548\u3002" }),
16817
+ [...new Set(view?.owners.map((o) => o.directory) ?? [])].map((directory) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("code", { children: directory }, directory))
16818
+ ] })
16819
+ ] }),
16820
+ error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "alert", children: error }),
16821
+ notice && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "status", children: notice })
16822
+ ] }),
16823
+ confirm && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(WorkspaceDialog, { eyebrow: "\u9644\u4EF6\u7BA1\u7406", title: "\u6E05\u7406\u4EA4\u4ED8\u526F\u672C", detail: `\u5DF2\u9009\u62E9 ${selected.length} \u4E2A\u526F\u672C\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002`, close: () => {
16824
+ if (!busy) setConfirm(false);
16825
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("form", { className: "dsh-partner-feature-form", onSubmit: (event) => {
16826
+ event.preventDefault();
16827
+ if (!busy) void clean();
16828
+ }, children: [
16829
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", children: "\u53EA\u5220\u9664\u4EA4\u4ED8\u526F\u672C\uFF0C\u539F\u59CB\u6587\u4EF6\u4FDD\u6301\u4E0D\u53D8\u3002\u5386\u53F2\u4F1A\u8BDD\u548C\u770B\u677F\u4E2D\u7684\u5BF9\u5E94\u9644\u4EF6\u4E0B\u8F7D\u94FE\u63A5\u5C06\u5931\u6548\u3002\u6267\u884C\u65F6\u4F1A\u518D\u6B21\u68C0\u67E5\u4FDD\u62A4\u72B6\u6001\u3002" }),
16830
+ error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", role: "alert", children: error }),
16831
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("footer", { children: [
16832
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(false), children: "\u53D6\u6D88" }),
16833
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "submit", className: "is-primary", disabled: busy, children: busy ? "\u6E05\u7406\u4E2D\u2026" : "\u786E\u8BA4\u6E05\u7406" })
16834
+ ] })
16835
+ ] }) })
16836
+ ] });
16837
+ }
16838
+
16839
+ // src/ui/storage-settings.tsx
16840
+ var import_jsx_runtime45 = require("react/jsx-runtime");
16443
16841
  function GeneralSettingsPanel() {
16444
- const [version, setVersion] = (0, import_react49.useState)();
16445
- const [inspection, setInspection] = (0, import_react49.useState)();
16446
- const [busy, setBusy] = (0, import_react49.useState)(false), [confirm, setConfirm] = (0, import_react49.useState)(false);
16447
- const [error, setError] = (0, import_react49.useState)(""), [notice, setNotice] = (0, import_react49.useState)("");
16448
- const request = (0, import_react49.useRef)();
16449
- const mounted = (0, import_react49.useRef)(true);
16450
- const [reconnect, setReconnect] = (0, import_react49.useState)(false);
16451
- const [cleanupPending, setCleanupPending] = (0, import_react49.useState)(0);
16842
+ const [version, setVersion] = (0, import_react50.useState)();
16843
+ const [inspection, setInspection] = (0, import_react50.useState)();
16844
+ const [busy, setBusy] = (0, import_react50.useState)(false), [confirm, setConfirm] = (0, import_react50.useState)(false);
16845
+ const [error, setError] = (0, import_react50.useState)(""), [notice, setNotice] = (0, import_react50.useState)("");
16846
+ const request = (0, import_react50.useRef)();
16847
+ const mounted = (0, import_react50.useRef)(true);
16848
+ const [reconnect, setReconnect] = (0, import_react50.useState)(false);
16849
+ const [cleanupPending, setCleanupPending] = (0, import_react50.useState)(0);
16452
16850
  const cleanup = version === 1 && cleanupPending > 0;
16453
16851
  const recover = async (expected = pendingStorageRecovery()) => {
16454
16852
  request.current?.abort();
@@ -16479,7 +16877,7 @@ function GeneralSettingsPanel() {
16479
16877
  if (!controller.signal.aborted) setBusy(false);
16480
16878
  }
16481
16879
  };
16482
- (0, import_react49.useEffect)(() => {
16880
+ (0, import_react50.useEffect)(() => {
16483
16881
  mounted.current = true;
16484
16882
  void recover();
16485
16883
  return () => {
@@ -16516,16 +16914,17 @@ function GeneralSettingsPanel() {
16516
16914
  }
16517
16915
  if (mounted.current) await recover(expected);
16518
16916
  };
16519
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("section", { className: "dsh-partner-general-settings", "aria-busy": busy, children: [
16520
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("h2", { children: "\u57FA\u672C\u8BBE\u7F6E" }),
16521
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(WorkspaceBlock, { title: "\u5347\u7EA7\u8FC1\u79FB", detail: "\u624B\u52A8\u6574\u7406\u516C\u5171\u6570\u636E\u548C\u6BCF\u4F4D\u4F19\u4F34\u7684\u79C1\u6709\u76EE\u5F55\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u6267\u884C\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => void inspect(), children: busy ? "\u5904\u7406\u4E2D\u2026" : "\u68C0\u67E5\u8FC1\u79FB" }), children: [
16522
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("p", { children: [
16917
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("section", { className: "dsh-partner-general-settings", "aria-busy": busy, children: [
16918
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h2", { children: "\u57FA\u672C\u8BBE\u7F6E" }),
16919
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(AttachmentStoragePanel, {}),
16920
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(WorkspaceBlock, { title: "\u5347\u7EA7\u8FC1\u79FB", detail: "\u624B\u52A8\u6574\u7406\u516C\u5171\u6570\u636E\u548C\u6BCF\u4F4D\u4F19\u4F34\u7684\u79C1\u6709\u76EE\u5F55\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u6267\u884C\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => void inspect(), children: busy ? "\u5904\u7406\u4E2D\u2026" : "\u68C0\u67E5\u8FC1\u79FB" }), children: [
16921
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("p", { children: [
16523
16922
  "\u6570\u636E\u5B58\u50A8\u7248\u672C\uFF1A",
16524
16923
  version === void 0 ? "\u6B63\u5728\u8BFB\u53D6\u2026" : `v${version}${version === 0 ? " \xB7 \u5F85\u8FC1\u79FB" : " \xB7 \u5DF2\u5347\u7EA7"}`
16525
16924
  ] }),
16526
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u5347\u7EA7\u524D\u8BF7\u7ED3\u675F\u4F19\u4F34\u4F1A\u8BDD\u548C\u540E\u53F0\u6267\u884C\u3002\u5B8C\u6574\u5907\u4EFD\u5E76\u6821\u9A8C\u540E\u624D\u6E05\u7406\u5DF2\u8FC1\u79FB\u7684\u65E7\u8DEF\u5F84\uFF0C\u4E0D\u4FEE\u6539\u7528\u6237\u5DE5\u4F5C\u6587\u6863\uFF1B\u670D\u52A1\u91CD\u8F7D\u540E\u81EA\u52A8\u91CD\u65B0\u8FDE\u63A5\u3002" }),
16527
- inspection && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
16528
- inspection.steps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("p", { children: [
16925
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: "\u5347\u7EA7\u524D\u8BF7\u7ED3\u675F\u4F19\u4F34\u4F1A\u8BDD\u548C\u540E\u53F0\u6267\u884C\u3002\u5B8C\u6574\u5907\u4EFD\u5E76\u6821\u9A8C\u540E\u624D\u6E05\u7406\u5DF2\u8FC1\u79FB\u7684\u65E7\u8DEF\u5F84\uFF0C\u4E0D\u4FEE\u6539\u7528\u6237\u5DE5\u4F5C\u6587\u6863\uFF1B\u670D\u52A1\u91CD\u8F7D\u540E\u81EA\u52A8\u91CD\u65B0\u8FDE\u63A5\u3002" }),
16926
+ inspection && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
16927
+ inspection.steps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("p", { children: [
16529
16928
  "v",
16530
16929
  step.from,
16531
16930
  " \u2192 v",
@@ -16533,79 +16932,79 @@ function GeneralSettingsPanel() {
16533
16932
  " \xB7 ",
16534
16933
  step.title
16535
16934
  ] }, step.id)),
16536
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("details", { children: [
16537
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("summary", { children: "\u67E5\u770B\u76EE\u5F55\u4E0E\u68C0\u67E5\u8BE6\u60C5" }),
16538
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "dsh-partner-migration-paths", children: inspection.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { children: [
16539
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", { children: item.label }),
16540
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("code", { children: item.source }),
16541
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "\u8FC1\u79FB\u81F3" }),
16542
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("code", { children: item.target }),
16543
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("small", { children: item.exists ? `${item.files} \u4E2A\u6587\u4EF6 \xB7 ${(item.bytes / 1024 / 1024).toFixed(2)} MB` : "\u5F53\u524D\u65E0\u6587\u4EF6" })
16935
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("details", { children: [
16936
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("summary", { children: "\u67E5\u770B\u76EE\u5F55\u4E0E\u68C0\u67E5\u8BE6\u60C5" }),
16937
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "dsh-partner-migration-paths", children: inspection.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { children: [
16938
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("strong", { children: item.label }),
16939
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("code", { children: item.source }),
16940
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { children: "\u8FC1\u79FB\u81F3" }),
16941
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("code", { children: item.target }),
16942
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("small", { children: item.exists ? `${item.files} \u4E2A\u6587\u4EF6 \xB7 ${(item.bytes / 1024 / 1024).toFixed(2)} MB` : "\u5F53\u524D\u65E0\u6587\u4EF6" })
16544
16943
  ] }, i)) }),
16545
- inspection.notices.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: text4 }, i))
16944
+ inspection.notices.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: text4 }, i))
16546
16945
  ] }),
16547
- !!inspection.blockers.length && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { role: "alert", children: [
16548
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u4EE5\u4E0B\u95EE\u9898\u9700\u8981\u5148\u5904\u7406\uFF1A" }),
16549
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("ul", { children: inspection.blockers.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("li", { children: text4 }, i)) })
16946
+ !!inspection.blockers.length && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { role: "alert", children: [
16947
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: "\u4EE5\u4E0B\u95EE\u9898\u9700\u8981\u5148\u5904\u7406\uFF1A" }),
16948
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("ul", { children: inspection.blockers.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("li", { children: text4 }, i)) })
16550
16949
  ] }),
16551
- inspection.migrationAvailable && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", className: "is-primary", disabled: busy, onClick: () => setConfirm(true), children: "\u5347\u7EA7\u8FC1\u79FB" })
16950
+ inspection.migrationAvailable && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", className: "is-primary", disabled: busy, onClick: () => setConfirm(true), children: "\u5347\u7EA7\u8FC1\u79FB" })
16552
16951
  ] }),
16553
- error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "alert", children: error }),
16554
- notice && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "status", children: notice }),
16555
- reconnect && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => void recover(), children: "\u91CD\u65B0\u8FDE\u63A5" }),
16556
- cleanup && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(true), children: "\u91CD\u8BD5\u6E05\u7406\u65E7\u8DEF\u5F84" })
16952
+ error && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { role: "alert", children: error }),
16953
+ notice && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { role: "status", children: notice }),
16954
+ reconnect && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => void recover(), children: "\u91CD\u65B0\u8FDE\u63A5" }),
16955
+ cleanup && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(true), children: "\u91CD\u8BD5\u6E05\u7406\u65E7\u8DEF\u5F84" })
16557
16956
  ] }),
16558
- confirm && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(WorkspaceDialog, { title: cleanup ? "\u786E\u8BA4\u6E05\u7406\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u5347\u7EA7\u8FC1\u79FB", detail: cleanup ? "\u91CD\u65B0\u6838\u5BF9\u5B8C\u6574\u5907\u4EFD\uFF0C\u53EA\u6E05\u7406\u672A\u53D8\u5316\u7684\u65E7\u6587\u4EF6\uFF0C\u4E0D\u91CD\u65B0\u8FC1\u79FB\u6D3B\u52A8\u6570\u636E\u3002" : "\u516C\u5171\u6570\u636E\u4E0E\u6240\u6709\u4F19\u4F34\u79C1\u6709\u6570\u636E\u5C06\u4E00\u8D77\u8FC1\u79FB\uFF0C\u5168\u90E8\u6821\u9A8C\u540E\u624D\u5207\u6362\u76EE\u5F55\u7248\u672C\u3002", close: () => {
16957
+ confirm && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(WorkspaceDialog, { title: cleanup ? "\u786E\u8BA4\u6E05\u7406\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u5347\u7EA7\u8FC1\u79FB", detail: cleanup ? "\u91CD\u65B0\u6838\u5BF9\u5B8C\u6574\u5907\u4EFD\uFF0C\u53EA\u6E05\u7406\u672A\u53D8\u5316\u7684\u65E7\u6587\u4EF6\uFF0C\u4E0D\u91CD\u65B0\u8FC1\u79FB\u6D3B\u52A8\u6570\u636E\u3002" : "\u516C\u5171\u6570\u636E\u4E0E\u6240\u6709\u4F19\u4F34\u79C1\u6709\u6570\u636E\u5C06\u4E00\u8D77\u8FC1\u79FB\uFF0C\u5168\u90E8\u6821\u9A8C\u540E\u624D\u5207\u6362\u76EE\u5F55\u7248\u672C\u3002", close: () => {
16559
16958
  if (!busy) setConfirm(false);
16560
- }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("form", { className: "dsh-partner-feature-form", onSubmit: (event) => {
16959
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("form", { className: "dsh-partner-feature-form", onSubmit: (event) => {
16561
16960
  event.preventDefault();
16562
16961
  void migrate();
16563
16962
  }, children: [
16564
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", children: "\u5148\u5B8C\u6574\u5907\u4EFD\uFF0C\u7248\u672C\u63D0\u4EA4\u540E\u6E05\u7406\u5DF2\u6838\u9A8C\u7684\u65E7\u8DEF\u5F84\uFF1B\u5386\u53F2\u8BB0\u5FC6\u5907\u4EFD\u4F1A\u539F\u6837\u5F52\u6863\u3002\u5907\u4EFD\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\u3002\u8FC1\u79FB\u671F\u95F4\u8BF7\u52FF\u7F16\u8F91\u6587\u4EF6\u3001\u4FEE\u6539\u63D2\u4EF6\u914D\u7F6E\u6216\u542F\u52A8\u5176\u4ED6\u5B9E\u4F8B\u3002" }),
16565
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", children: "\u8D26\u53F7\u51ED\u636E\u548C\u5BBF\u4E3B\u4F1A\u8BDD\u4E0D\u642C\u52A8\u3002\u5347\u7EA7\u540E\u4E0D\u8981\u76F4\u63A5\u5B89\u88C5\u4E0D\u652F\u6301\u65B0\u7248\u5B58\u50A8\u7684\u65E7\u63D2\u4EF6\u3002" }),
16566
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("footer", { children: [
16567
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(false), children: "\u53D6\u6D88" }),
16568
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "submit", className: "is-primary", disabled: busy, children: busy ? "\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u52FF\u5173\u95ED\u2026" : cleanup ? "\u786E\u8BA4\u6E05\u7406\u5DF2\u5907\u4EFD\u7684\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u8FC1\u79FB\u76EE\u5F55\u548C\u6570\u636E" })
16963
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "is-wide", children: "\u5148\u5B8C\u6574\u5907\u4EFD\uFF0C\u7248\u672C\u63D0\u4EA4\u540E\u6E05\u7406\u5DF2\u6838\u9A8C\u7684\u65E7\u8DEF\u5F84\uFF1B\u5386\u53F2\u8BB0\u5FC6\u5907\u4EFD\u4F1A\u539F\u6837\u5F52\u6863\u3002\u5907\u4EFD\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\u3002\u8FC1\u79FB\u671F\u95F4\u8BF7\u52FF\u7F16\u8F91\u6587\u4EF6\u3001\u4FEE\u6539\u63D2\u4EF6\u914D\u7F6E\u6216\u542F\u52A8\u5176\u4ED6\u5B9E\u4F8B\u3002" }),
16964
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "is-wide", children: "\u8D26\u53F7\u51ED\u636E\u548C\u5BBF\u4E3B\u4F1A\u8BDD\u4E0D\u642C\u52A8\u3002\u5347\u7EA7\u540E\u4E0D\u8981\u76F4\u63A5\u5B89\u88C5\u4E0D\u652F\u6301\u65B0\u7248\u5B58\u50A8\u7684\u65E7\u63D2\u4EF6\u3002" }),
16965
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("footer", { children: [
16966
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(false), children: "\u53D6\u6D88" }),
16967
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "submit", className: "is-primary", disabled: busy, children: busy ? "\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u52FF\u5173\u95ED\u2026" : cleanup ? "\u786E\u8BA4\u6E05\u7406\u5DF2\u5907\u4EFD\u7684\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u8FC1\u79FB\u76EE\u5F55\u548C\u6570\u636E" })
16569
16968
  ] })
16570
16969
  ] }) })
16571
16970
  ] });
16572
16971
  }
16573
16972
 
16574
16973
  // src/ui/workspace-navigation.tsx
16575
- var import_jsx_runtime45 = require("react/jsx-runtime");
16974
+ var import_jsx_runtime46 = require("react/jsx-runtime");
16576
16975
  var workspaceGroups = [
16577
- { id: "features", label: "\u529F\u80FD", detail: "\u80FD\u529B\u3001\u534F\u4F5C\u4E0E\u8BA1\u5212", icon: import_dsh_client_ui_primitives23.IconBrowseOutline16, pages: [
16578
- { id: "skills", label: "Skill \u5E02\u573A", icon: import_dsh_client_ui_primitives23.IconBrowseOutline16 },
16579
- { id: "mcp", label: "MCP \u670D\u52A1", icon: import_dsh_client_ui_primitives23.IconBrowseOutline16 },
16580
- { id: "board", label: "\u4EFB\u52A1\u770B\u677F", icon: import_dsh_client_ui_primitives23.IconListPenOutline16 },
16581
- { id: "schedules", label: "\u5B9A\u65F6\u4EFB\u52A1", icon: import_dsh_client_ui_primitives23.IconPlayOutline16 }
16976
+ { id: "features", label: "\u529F\u80FD", detail: "\u80FD\u529B\u3001\u534F\u4F5C\u4E0E\u8BA1\u5212", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular, pages: [
16977
+ { id: "skills", label: "Skill \u5E02\u573A", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular },
16978
+ { id: "mcp", label: "MCP \u670D\u52A1", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular },
16979
+ { id: "board", label: "\u4EFB\u52A1\u770B\u677F", icon: import_dsh_client_ui_primitives23.IconListPenOutlineRegular },
16980
+ { id: "schedules", label: "\u5B9A\u65F6\u4EFB\u52A1", icon: import_dsh_client_ui_primitives23.IconPlayOutlineRegular }
16582
16981
  ] },
16583
- { id: "settings", label: "\u8BBE\u7F6E", detail: "\u57FA\u672C\u8BBE\u7F6E\u4E0E\u5361\u7247\u5916\u89C2", icon: import_dsh_client_ui_primitives23.IconEditOutline16, pages: [
16584
- { id: "general", label: "\u57FA\u672C\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutline16 },
16585
- { id: "pendant", label: "\u5361\u7247\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutline16 }
16982
+ { id: "settings", label: "\u8BBE\u7F6E", detail: "\u57FA\u672C\u8BBE\u7F6E\u4E0E\u5361\u7247\u5916\u89C2", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular, pages: [
16983
+ { id: "general", label: "\u57FA\u672C\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular },
16984
+ { id: "pendant", label: "\u5361\u7247\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular }
16586
16985
  ] }
16587
16986
  ];
16588
16987
  var workspaceGroup = (page) => workspaceGroups.find((group) => group.pages.some((item) => item.id === page));
16589
16988
  function WorkspaceGroupLinks({ view, open, compact = false }) {
16590
16989
  const active2 = workspaceGroup(view);
16591
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: workspaceGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("button", { type: "button", className: active2?.id === group.id ? "is-active" : "", "aria-current": active2?.id === group.id ? "page" : void 0, onClick: () => {
16990
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_jsx_runtime46.Fragment, { children: workspaceGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", className: active2?.id === group.id ? "is-active" : "", "aria-current": active2?.id === group.id ? "page" : void 0, onClick: () => {
16592
16991
  if (active2?.id !== group.id) open(group.pages[0].id);
16593
16992
  }, children: [
16594
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(group.icon, { size: 16 }) }),
16595
- compact ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { children: group.label }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
16596
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("strong", { children: group.label }),
16597
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("small", { children: group.detail })
16993
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(group.icon, { size: 16 }) }),
16994
+ compact ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: group.label }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
16995
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: group.label }),
16996
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: group.detail })
16598
16997
  ] })
16599
16998
  ] }, group.id)) });
16600
16999
  }
16601
17000
  function WorkspaceGroupTabs({ view, open }) {
16602
17001
  const group = workspaceGroup(view);
16603
17002
  if (!group) return null;
16604
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("nav", { className: "dsh-partner-tabs dsh-partner-group-tabs", "aria-label": `${group.label}\u6807\u7B7E\u9875`, children: group.pages.map((page) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TabButton, { active: view === page.id, onClick: () => open(page.id), icon: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(page.icon, { size: 16 }), children: page.label }, page.id)) });
17003
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("nav", { className: "dsh-partner-tabs dsh-partner-group-tabs", "aria-label": `${group.label}\u6807\u7B7E\u9875`, children: group.pages.map((page) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === page.id, onClick: () => open(page.id), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(page.icon, { size: 16 }), children: page.label }, page.id)) });
16605
17004
  }
16606
17005
 
16607
17006
  // src/client.tsx
16608
- var import_jsx_runtime46 = require("react/jsx-runtime");
17007
+ var import_jsx_runtime47 = require("react/jsx-runtime");
16609
17008
  var PLUGIN_ID = "@lemoncat7/dsh-partner";
16610
17009
  var STYLE_ID = `${PLUGIN_ID}/client`;
16611
17010
  var cssText = `${client_default}
@@ -16620,29 +17019,29 @@ ${identity_editor_default}
16620
17019
  ${form_surface_default}
16621
17020
  ${mcp_default}`;
16622
17021
  var WORKSPACE_PAGES = /* @__PURE__ */ new Set(["skills", "mcp", "board", "schedules", "pendant", "general"]);
16623
- var inject = ["slots", "layout", "sessions"];
17022
+ var inject = ["slots", "layout", "sessions", "uiWorkspace"];
16624
17023
  function apply(ctx) {
16625
17024
  ctx.effect(installStyles, "dsh-partner: styles");
16626
- const controller = createPartnerController(ctx, PLUGIN_ID, (props, current2) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(PartnerWorkspace, { ...props, controller: current2 }));
17025
+ const controller = createPartnerController(ctx, PLUGIN_ID, (props, current2) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerWorkspace, { ...props, controller: current2 }));
16627
17026
  if (pendingStorageRecovery() !== void 0) controller.open(void 0, { page: "general" });
16628
- ctx.slots.inject("shell.overlay", () => ctx.slots.register({ name: "shell.overlay", id: "partner-pendant", order: 30 }, () => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(PartnerPendant, { controller })));
17027
+ ctx.slots.inject("shell.overlay", () => ctx.slots.register({ name: "shell.overlay", id: "partner-pendant", order: 30 }, () => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerPendant, { controller })));
16629
17028
  ctx.effect(() => observePluginWorkspace(PLUGIN_ID, controller.close), "dsh-partner: exclusive workspace");
16630
17029
  ctx.effect(() => () => controller.close(), "dsh-partner: workspace lifecycle");
16631
17030
  ctx.slots.inject("sidebar.footer.action", () => ctx.slots.register({
16632
17031
  name: "sidebar.footer.action",
16633
17032
  id: "partner",
16634
17033
  order: -120
16635
- }, (props) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(PartnerSidebar, { ...props, controller, collapse: () => ctx.layout.toggleSidebar() })));
17034
+ }, (props) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerSidebar, { ...props, controller, collapse: () => ctx.layout.toggleSidebar() })));
16636
17035
  }
16637
17036
  function PartnerSidebar(props) {
16638
- const ref = (0, import_react50.useRef)(null);
17037
+ const ref = (0, import_react51.useRef)(null);
16639
17038
  useWorkspaceTopAnchor(ref);
16640
- const [open, setOpen] = (0, import_react50.useState)(true);
16641
- const [snapshot, setSnapshot] = (0, import_react50.useState)();
17039
+ const [open, setOpen] = (0, import_react51.useState)(true);
17040
+ const [snapshot, setSnapshot] = (0, import_react51.useState)();
16642
17041
  useChannelStatus(setSnapshot);
16643
- const [, update] = (0, import_react50.useState)(0);
16644
- (0, import_react50.useEffect)(() => props.controller.subscribe(() => update((value) => value + 1)), [props.controller]);
16645
- (0, import_react50.useEffect)(() => {
17042
+ const [, update] = (0, import_react51.useState)(0);
17043
+ (0, import_react51.useEffect)(() => props.controller.subscribe(() => update((value) => value + 1)), [props.controller]);
17044
+ (0, import_react51.useEffect)(() => {
16646
17045
  void loadPartner().then(setSnapshot).catch(() => {
16647
17046
  });
16648
17047
  }, [props.controller.isOpen()]);
@@ -16650,35 +17049,35 @@ function PartnerSidebar(props) {
16650
17049
  props.controller.open(id);
16651
17050
  if (props.wide && window.matchMedia("(max-width: 820px)").matches) props.collapse();
16652
17051
  };
16653
- if (!props.wide) return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("section", { ref, className: "dsh-partner-sidebar is-rail", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", className: `dsh-partner-rail${props.controller.isOpen() ? " is-active" : ""}`, title: "\u4F19\u4F34", onClick: () => props.controller.toggle(), children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 18 }) }) });
16654
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { ref, className: "dsh-partner-sidebar", children: [
16655
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-sidebar-heading", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", className: "dsh-partner-sidebar-title", "aria-expanded": open, onClick: () => setOpen((value) => !value), children: [
16656
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { "data-open": open, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconChevronDownOutline14, { size: 14 }) }),
17052
+ if (!props.wide) return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("section", { ref, className: "dsh-partner-sidebar is-rail", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: `dsh-partner-rail${props.controller.isOpen() ? " is-active" : ""}`, title: "\u4F19\u4F34", onClick: () => props.controller.toggle(), children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 18 }) }) });
17053
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { ref, className: "dsh-partner-sidebar", children: [
17054
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-sidebar-heading", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", className: "dsh-partner-sidebar-title", "aria-expanded": open, onClick: () => setOpen((value) => !value), children: [
17055
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { "data-open": open, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconChevronDownOutlineRegular, { size: 14 }) }),
16657
17056
  "\u4F19\u4F34"
16658
17057
  ] }) }),
16659
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: `dsh-partner-sidebar-list${open ? " is-open" : ""}`, "aria-hidden": !open, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-sidebar-list-inner", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", tabIndex: open ? 0 : -1, className: `dsh-partner-sidebar-row${props.controller.isOpen() ? " is-active" : ""}`, onClick: () => launch(), children: [
16660
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "dsh-partner-sidebar-symbol", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 16 }) }),
16661
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16662
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: "\u4F19\u4F34\u9762\u677F" }),
16663
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: snapshot ? `${snapshot.companions.length} \u4F4D\u4F19\u4F34 \xB7 ${snapshot.channels.filter((item) => item.runtimeStatus === "running").length} \u4E2A\u6E20\u9053\u5728\u7EBF` : "\u8EAB\u4EFD\u3001\u80FD\u529B\u4E0E\u6E20\u9053" })
17058
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: `dsh-partner-sidebar-list${open ? " is-open" : ""}`, "aria-hidden": !open, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-sidebar-list-inner", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", tabIndex: open ? 0 : -1, className: `dsh-partner-sidebar-row${props.controller.isOpen() ? " is-active" : ""}`, onClick: () => launch(), children: [
17059
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-sidebar-symbol", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }) }),
17060
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17061
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34\u9762\u677F" }),
17062
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: snapshot ? `${snapshot.companions.length} \u4F4D\u4F19\u4F34 \xB7 ${snapshot.channels.filter((item) => item.runtimeStatus === "running").length} \u4E2A\u6E20\u9053\u5728\u7EBF` : "\u8EAB\u4EFD\u3001\u80FD\u529B\u4E0E\u6E20\u9053" })
16664
17063
  ] }),
16665
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("i", { className: snapshot?.channels.some((item) => item.runtimeStatus === "running") ? "is-online" : "" })
17064
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", { className: snapshot?.channels.some((item) => item.runtimeStatus === "running") ? "is-online" : "" })
16666
17065
  ] }) }) })
16667
17066
  ] });
16668
17067
  }
16669
17068
  function PartnerWorkspace({ controller }) {
16670
- const [snapshot, setSnapshot] = (0, import_react50.useState)();
17069
+ const [snapshot, setSnapshot] = (0, import_react51.useState)();
16671
17070
  useChannelStatus(setSnapshot);
16672
- const [selectedId, setSelectedId] = (0, import_react50.useState)(controller.selected());
16673
- const [view, setView] = (0, import_react50.useState)(controller.destination()?.page ?? "home");
16674
- const [requestedDestination, setRequestedDestination] = (0, import_react50.useState)(controller.destination());
16675
- const [error, setError] = (0, import_react50.useState)();
16676
- const [loading, setLoading] = (0, import_react50.useState)(true);
16677
- const [creatingCompanion, setCreatingCompanion] = (0, import_react50.useState)(false);
16678
- const [notice, setNotice] = (0, import_react50.useState)();
16679
- const selectionRef = (0, import_react50.useRef)({ selectedId, companions: snapshot?.companions });
17071
+ const [selectedId, setSelectedId] = (0, import_react51.useState)(controller.selected());
17072
+ const [view, setView] = (0, import_react51.useState)(controller.destination()?.page ?? "home");
17073
+ const [requestedDestination, setRequestedDestination] = (0, import_react51.useState)(controller.destination());
17074
+ const [error, setError] = (0, import_react51.useState)();
17075
+ const [loading, setLoading] = (0, import_react51.useState)(true);
17076
+ const [creatingCompanion, setCreatingCompanion] = (0, import_react51.useState)(false);
17077
+ const [notice, setNotice] = (0, import_react51.useState)();
17078
+ const selectionRef = (0, import_react51.useRef)({ selectedId, companions: snapshot?.companions });
16680
17079
  selectionRef.current = { selectedId, companions: snapshot?.companions };
16681
- const refresh = (0, import_react50.useCallback)(async (throwOnError = false) => {
17080
+ const refresh = (0, import_react51.useCallback)(async (throwOnError = false) => {
16682
17081
  try {
16683
17082
  const next = await loadPartner();
16684
17083
  setSnapshot(next);
@@ -16691,10 +17090,10 @@ function PartnerWorkspace({ controller }) {
16691
17090
  setLoading(false);
16692
17091
  }
16693
17092
  }, []);
16694
- (0, import_react50.useEffect)(() => {
17093
+ (0, import_react51.useEffect)(() => {
16695
17094
  void refresh();
16696
17095
  }, [refresh]);
16697
- (0, import_react50.useEffect)(() => controller.subscribe(() => {
17096
+ (0, import_react51.useEffect)(() => controller.subscribe(() => {
16698
17097
  const next = controller.selected();
16699
17098
  if (next) setSelectedId(next);
16700
17099
  const destination = controller.destination();
@@ -16763,18 +17162,18 @@ function PartnerWorkspace({ controller }) {
16763
17162
  setSelectedId(id);
16764
17163
  setView("home");
16765
17164
  };
16766
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("main", { className: "dsh-partner-workspace", children: [
16767
- creatingCompanion && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CompanionCreateDialog, { close: () => setCreatingCompanion(false), create }),
16768
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { className: "dsh-partner-topbar", children: [
16769
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-topbar-brand", children: [
16770
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", "data-xiaohei-workspace-close": true, onClick: controller.close, "aria-label": "\u8FD4\u56DE\u4F1A\u8BDD", title: "\u8FD4\u56DE\u4F1A\u8BDD", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconChevronLeftOutline14, { size: 15 }) }),
16771
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 18 }),
16772
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16773
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: "\u4F19\u4F34" }),
16774
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u957F\u671F\u8EAB\u4EFD\u4E0E\u6D88\u606F\u6E20\u9053" })
17165
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("main", { className: "dsh-partner-workspace", children: [
17166
+ creatingCompanion && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompanionCreateDialog, { close: () => setCreatingCompanion(false), create }),
17167
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { className: "dsh-partner-topbar", children: [
17168
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-topbar-brand", children: [
17169
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", "data-xiaohei-workspace-close": true, onClick: controller.close, "aria-label": "\u8FD4\u56DE\u4F1A\u8BDD", title: "\u8FD4\u56DE\u4F1A\u8BDD", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconChevronLeftOutlineRegular, { size: 15 }) }),
17170
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 18 }),
17171
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17172
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34" }),
17173
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u957F\u671F\u8EAB\u4EFD\u4E0E\u6D88\u606F\u6E20\u9053" })
16775
17174
  ] })
16776
17175
  ] }),
16777
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
17176
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
16778
17177
  MobileWorkspaceControls,
16779
17178
  {
16780
17179
  companions: snapshot?.companions ?? [],
@@ -16786,87 +17185,87 @@ function PartnerWorkspace({ controller }) {
16786
17185
  }
16787
17186
  )
16788
17187
  ] }),
16789
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-grid", children: [
16790
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("aside", { className: "dsh-partner-roster", children: [
16791
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-roster-title", children: [
16792
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16793
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "COMPANIONS" }),
16794
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: "\u4F19\u4F34\u540D\u518C" })
17188
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-grid", children: [
17189
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("aside", { className: "dsh-partner-roster", children: [
17190
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-roster-title", children: [
17191
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17192
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "COMPANIONS" }),
17193
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34\u540D\u518C" })
16795
17194
  ] }),
16796
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", onClick: () => setCreatingCompanion(true), "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconPlusOutline16, { size: 16 }) })
17195
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => setCreatingCompanion(true), "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconPlusOutlineRegular, { size: 16 }) })
16797
17196
  ] }),
16798
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-roster-list", children: snapshot?.companions.map((companion) => {
17197
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-roster-list", children: snapshot?.companions.map((companion) => {
16799
17198
  const channel = snapshot.channels.find((item) => item.companionId === companion.id);
16800
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", className: !workspacePage && selectedId === companion.id ? "is-active" : "", onClick: () => openCompanion(companion.id), children: [
16801
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Avatar, { name: companion.name }),
16802
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16803
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: companion.name }),
16804
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: companion.role })
17199
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", className: !workspacePage && selectedId === companion.id ? "is-active" : "", onClick: () => openCompanion(companion.id), children: [
17200
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: companion.name }),
17201
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17202
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.name }),
17203
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: companion.role })
16805
17204
  ] }),
16806
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("i", { className: channel?.runtimeStatus === "running" ? "is-online" : "", title: channel ? channel.runtimeStatus : "\u672A\u8FDE\u63A5\u6E20\u9053" })
17205
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", { className: channel?.runtimeStatus === "running" ? "is-online" : "", title: channel ? channel.runtimeStatus : "\u672A\u8FDE\u63A5\u6E20\u9053" })
16807
17206
  ] }, companion.id);
16808
17207
  }) }),
16809
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("nav", { className: "dsh-partner-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WorkspaceGroupLinks, { view, open: setView }) }),
16810
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-roster-note", children: [
16811
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconLinkOutline16, { size: 16 }),
16812
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16813
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: "\u8EAB\u4EFD\u4E0E\u6E20\u9053\u5206\u79BB" }),
16814
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u6E20\u9053\u53EA\u8D1F\u8D23\u6536\u53D1\uFF0C\u6743\u9650\u4ECD\u7531 DSH \u5DE5\u5177\u51B3\u5B9A\u3002" })
17208
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("nav", { className: "dsh-partner-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupLinks, { view, open: setView }) }),
17209
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-roster-note", children: [
17210
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconLinkOutlineRegular, { size: 16 }),
17211
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17212
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u8EAB\u4EFD\u4E0E\u6E20\u9053\u5206\u79BB" }),
17213
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u6E20\u9053\u53EA\u8D1F\u8D23\u6536\u53D1\uFF0C\u6743\u9650\u4ECD\u7531 DSH \u5DE5\u5177\u51B3\u5B9A\u3002" })
16815
17214
  ] })
16816
17215
  ] })
16817
17216
  ] }),
16818
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { className: `dsh-partner-stage${workspacePage ? " is-workspace-page" : ""}`, children: [
16819
- loading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContentState, { title: "\u6B63\u5728\u8BFB\u53D6\u4F19\u4F34\u2026" }) : workspacePage ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
16820
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-group-heading", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("h1", { children: workspaceGroup(view)?.label }) }),
16821
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WorkspaceGroupTabs, { view, open: setView }),
16822
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-stage-scroll is-workspace-page", children: [
16823
- view === "skills" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(SkillsPanel, {}),
16824
- view === "mcp" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(McpPanel, {}),
16825
- view === "board" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(RequirementBoard, { initialTaskId: requestedDestination?.taskId, openRequest: requestedDestination }),
16826
- view === "schedules" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(SchedulePanel, { companions: snapshot?.companions ?? [] }),
16827
- view === "pendant" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(PendantSettingsPanel, {}),
16828
- view === "general" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(GeneralSettingsPanel, {})
17217
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: `dsh-partner-stage${workspacePage ? " is-workspace-page" : ""}`, children: [
17218
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u6B63\u5728\u8BFB\u53D6\u4F19\u4F34\u2026" }) : workspacePage ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
17219
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-group-heading", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h1", { children: workspaceGroup(view)?.label }) }),
17220
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupTabs, { view, open: setView }),
17221
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-stage-scroll is-workspace-page", children: [
17222
+ view === "skills" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SkillsPanel, {}),
17223
+ view === "mcp" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(McpPanel, {}),
17224
+ view === "board" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(RequirementBoard, { initialTaskId: requestedDestination?.taskId, openRequest: requestedDestination }),
17225
+ view === "schedules" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SchedulePanel, { companions: snapshot?.companions ?? [] }),
17226
+ view === "pendant" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PendantSettingsPanel, {}),
17227
+ view === "general" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(GeneralSettingsPanel, {})
16829
17228
  ] })
16830
- ] }) : selected === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContentState, { title: "\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4F19\u4F34", detail: "\u4F19\u4F34\u4F1A\u4FDD\u5B58\u72EC\u7ACB\u8EAB\u4EFD\u3001\u80FD\u529B\u548C\u5FAE\u4FE1\u4F1A\u8BDD\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { onClick: () => setCreatingCompanion(true), children: "\u65B0\u5EFA\u4F19\u4F34" }) }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
16831
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-identity", children: [
16832
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Avatar, { name: selected.name }),
16833
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16834
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "ACTIVE COMPANION" }),
16835
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("h1", { children: selected.name }),
16836
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: selected.description || selected.role })
17229
+ ] }) : selected === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4F19\u4F34", detail: "\u4F19\u4F34\u4F1A\u4FDD\u5B58\u72EC\u7ACB\u8EAB\u4EFD\u3001\u80FD\u529B\u548C\u5FAE\u4FE1\u4F1A\u8BDD\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => setCreatingCompanion(true), children: "\u65B0\u5EFA\u4F19\u4F34" }) }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
17230
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-identity", children: [
17231
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: selected.name }),
17232
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17233
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "ACTIVE COMPANION" }),
17234
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h1", { children: selected.name }),
17235
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: selected.description || selected.role })
16837
17236
  ] }),
16838
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ChannelStatus, { channel: snapshot?.channels.find((item) => item.companionId === selected.id) })
17237
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelStatus, { channel: snapshot?.channels.find((item) => item.companionId === selected.id) })
16839
17238
  ] }),
16840
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("nav", { className: "dsh-partner-tabs", "aria-label": "\u4F19\u4F34\u914D\u7F6E", children: [
16841
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "home", onClick: () => setView("home"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 16 }), children: "\u603B\u89C8" }),
16842
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "identity", onClick: () => setView("identity"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconEditOutline16, { size: 16 }), children: "\u8EAB\u4EFD" }),
16843
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "capabilities", onClick: () => setView("capabilities"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 16 }), children: "\u80FD\u529B" }),
16844
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "weixin", onClick: () => setView("weixin"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconLinkOutline16, { size: 16 }), children: "\u6E20\u9053" }),
16845
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "memory", onClick: () => setView("memory"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconDataOutline16, { size: 16 }), children: "\u8BB0\u5FC6" }),
16846
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === "concerns", onClick: () => setView("concerns"), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconBrowseOutline16, { size: 16 }), children: "\u6301\u7EED\u5173\u6CE8" })
17239
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("nav", { className: "dsh-partner-tabs", "aria-label": "\u4F19\u4F34\u914D\u7F6E", children: [
17240
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "home", onClick: () => setView("home"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }), children: "\u603B\u89C8" }),
17241
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "identity", onClick: () => setView("identity"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconEditOutlineRegular, { size: 16 }), children: "\u8EAB\u4EFD" }),
17242
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "capabilities", onClick: () => setView("capabilities"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }), children: "\u80FD\u529B" }),
17243
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "weixin", onClick: () => setView("weixin"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconLinkOutlineRegular, { size: 16 }), children: "\u6E20\u9053" }),
17244
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "memory", onClick: () => setView("memory"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconDataOutlineRegular, { size: 16 }), children: "\u8BB0\u5FC6" }),
17245
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "concerns", onClick: () => setView("concerns"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconBrowseOutlineRegular, { size: 16 }), children: "\u6301\u7EED\u5173\u6CE8" })
16847
17246
  ] }),
16848
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-stage-scroll", children: [
16849
- notice && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: "dsh-partner-inline-notice", role: "status", children: notice }),
16850
- view === "home" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(HomePanel, { companion: selected, snapshot, navigate: setView, openSession, startSession, renewSession }),
16851
- view === "identity" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(IdentityEditor, { companion: selected, count: snapshot?.companions.length ?? 1, onChanged: () => refresh(true), onRemoved: companionRemoved }),
16852
- view === "capabilities" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CapabilityEditor, { companion: selected, presets: snapshot?.presets ?? [], onChanged: () => refresh(true) }, selected.id),
16853
- view === "weixin" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ChannelsPanel, { companion: selected, snapshot, onChanged: refresh, weixin: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WeixinPanel, { companion: selected, snapshot, onChanged: refresh }) }, selected.id),
16854
- view === "memory" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(MemoryPanel, { companion: selected, snapshot, openSession, startSession, renewSession, onChanged: refresh }, selected.id),
16855
- view === "concerns" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ConcernPanel, { companion: selected, snapshot, onChanged: refresh }, selected.id)
17247
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-stage-scroll", children: [
17248
+ notice && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-notice", role: "status", children: notice }),
17249
+ view === "home" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(HomePanel, { companion: selected, snapshot, navigate: setView, openSession, startSession, renewSession }),
17250
+ view === "identity" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(IdentityEditor, { companion: selected, count: snapshot?.companions.length ?? 1, onChanged: () => refresh(true), onRemoved: companionRemoved }),
17251
+ view === "capabilities" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CapabilityEditor, { companion: selected, presets: snapshot?.presets ?? [], onChanged: () => refresh(true) }, selected.id),
17252
+ view === "weixin" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelsPanel, { companion: selected, snapshot, onChanged: refresh, weixin: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinPanel, { companion: selected, snapshot, onChanged: refresh }) }, selected.id),
17253
+ view === "memory" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MemoryPanel, { companion: selected, snapshot, openSession, startSession, renewSession, onChanged: refresh }, selected.id),
17254
+ view === "concerns" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ConcernPanel, { companion: selected, snapshot, onChanged: refresh }, selected.id)
16856
17255
  ] })
16857
17256
  ] }),
16858
- error && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: "dsh-partner-error", role: "alert", children: error })
17257
+ error && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-error", role: "alert", children: error })
16859
17258
  ] })
16860
17259
  ] })
16861
17260
  ] });
16862
17261
  }
16863
17262
  function MobileWorkspaceControls({ companions, selectedId, view, openCompanion, openPage, createCompanion }) {
16864
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-mobile-controls", children: [
16865
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-mobile-companion-row", children: [
16866
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CompanionPicker, { companions, selectedId, onChange: openCompanion }),
16867
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", className: "dsh-partner-mobile-create", onClick: createCompanion, "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconPlusOutline16, { size: 17 }) })
17263
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-mobile-controls", children: [
17264
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-mobile-companion-row", children: [
17265
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompanionPicker, { companions, selectedId, onChange: openCompanion }),
17266
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "dsh-partner-mobile-create", onClick: createCompanion, "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconPlusOutlineRegular, { size: 17 }) })
16868
17267
  ] }),
16869
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("nav", { className: "dsh-partner-mobile-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A\u5FEB\u6377\u5165\u53E3", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WorkspaceGroupLinks, { view, open: openPage, compact: true }) })
17268
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("nav", { className: "dsh-partner-mobile-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A\u5FEB\u6377\u5165\u53E3", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupLinks, { view, open: openPage, compact: true }) })
16870
17269
  ] });
16871
17270
  }
16872
17271
  function HomePanel({ companion, snapshot, navigate, openSession, startSession, renewSession }) {
@@ -16877,77 +17276,77 @@ function HomePanel({ companion, snapshot, navigate, openSession, startSession, r
16877
17276
  const approved = channel ? snapshot.pairings.filter((item) => item.channelId === channel.id && item.status === "approved").length : 0;
16878
17277
  const capabilities = companion.capabilities.map((item) => CAPABILITY_LABELS[item]);
16879
17278
  const online = channel?.runtimeStatus === "running";
16880
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-home", children: [
16881
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { className: "dsh-partner-home-heading", children: [
16882
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
16883
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u5DE5\u4F5C\u53F0" }),
16884
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("h2", { children: online ? `${companion.name} \u6B63\u5728\u6E20\u9053\u5F85\u547D` : `${companion.name} \u5DF2\u51C6\u5907\u5C31\u7EEA` })
17279
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home", children: [
17280
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { className: "dsh-partner-home-heading", children: [
17281
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17282
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u5DE5\u4F5C\u53F0" }),
17283
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h2", { children: online ? `${companion.name} \u6B63\u5728\u6E20\u9053\u5F85\u547D` : `${companion.name} \u5DF2\u51C6\u5907\u5C31\u7EEA` })
16885
17284
  ] }),
16886
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: online ? "\u6D88\u606F\u3001\u6388\u6743\u4E0E\u4E0A\u4E0B\u6587\u8FB9\u754C\u90FD\u5728\u8FD9\u91CC\u6C47\u603B\u3002" : "\u4F19\u4F34\u8EAB\u4EFD\u3001\u4F1A\u8BDD\u4E0E\u80FD\u529B\u5DF2\u7ECF\u51C6\u5907\u5B8C\u6210\u3002" })
17285
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: online ? "\u6D88\u606F\u3001\u6388\u6743\u4E0E\u4E0A\u4E0B\u6587\u8FB9\u754C\u90FD\u5728\u8FD9\u91CC\u6C47\u603B\u3002" : "\u4F19\u4F34\u8EAB\u4EFD\u3001\u4F1A\u8BDD\u4E0E\u80FD\u529B\u5DF2\u7ECF\u51C6\u5907\u5B8C\u6210\u3002" })
16887
17286
  ] }),
16888
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { className: `dsh-partner-home-channel${online ? " is-online" : ""}`, children: [
16889
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-home-route", "aria-hidden": "true", children: [
16890
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Avatar, { name: companion.name }),
16891
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "dsh-partner-route-line", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("i", {}) }),
16892
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "dsh-partner-route-weixin", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WeixinGlyph, { large: true }) })
17287
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: `dsh-partner-home-channel${online ? " is-online" : ""}`, children: [
17288
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-route", "aria-hidden": "true", children: [
17289
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: companion.name }),
17290
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-route-line", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}) }),
17291
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-route-weixin", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) })
16893
17292
  ] }),
16894
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-home-channel-copy", children: [
16895
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { className: "dsh-partner-home-kicker", children: [
16896
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("i", {}),
17293
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-channel-copy", children: [
17294
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: "dsh-partner-home-kicker", children: [
17295
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}),
16897
17296
  "\u6D88\u606F\u6E20\u9053 \xB7 ",
16898
17297
  channel?.platform === "matrix" ? "Matrix" : channel?.platform === "mattermost" ? "Mattermost" : "\u5FAE\u4FE1"
16899
17298
  ] }),
16900
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("h3", { children: !channel ? "\u7B49\u5F85\u626B\u7801\u8FDE\u63A5" : online ? "\u8FDE\u63A5\u6B63\u5E38\uFF0C\u6B63\u5728\u63A5\u6536\u6D88\u606F" : channel.runtimeStatus === "error" ? "\u6E20\u9053\u8FDE\u63A5\u9700\u8981\u5904\u7406" : "\u6E20\u9053\u5F53\u524D\u5DF2\u505C\u7528" }),
16901
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1\u3001Matrix \u6216 Mattermost\uFF0C\u8054\u7CFB\u4EBA\u9996\u6B21\u53D1\u6D88\u606F\u9700\u6279\u51C6\u3002" : online ? "\u672C\u5730\u4E0E\u6240\u6709\u5DF2\u6388\u6743\u6E20\u9053\u5171\u7528\u4F19\u4F34\u4E3B\u5BF9\u8BDD\uFF0C\u56DE\u590D\u8FD4\u56DE\u6D88\u606F\u6765\u6E90\u3002" : channel.lastError || "\u6E20\u9053\u914D\u7F6E\u4ECD\u7136\u4FDD\u7559\uFF0C\u53EF\u4EE5\u968F\u65F6\u91CD\u65B0\u542F\u7528\u3002" }),
16902
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-home-channel-actions", children: [
16903
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", className: "is-primary", onClick: () => navigate("weixin"), children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1" : pending > 0 ? `\u5904\u7406 ${pending} \u4E2A\u8BF7\u6C42` : "\u7BA1\u7406\u6E20\u9053" }),
16904
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: !channel ? "\u9009\u62E9\u6E20\u9053\u5E76\u8FDE\u63A5\u8D26\u53F7" : `${approved} \u4F4D\u8054\u7CFB\u4EBA \xB7 \u5171\u7528\u4E3B\u5BF9\u8BDD` })
17299
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h3", { children: !channel ? "\u7B49\u5F85\u626B\u7801\u8FDE\u63A5" : online ? "\u8FDE\u63A5\u6B63\u5E38\uFF0C\u6B63\u5728\u63A5\u6536\u6D88\u606F" : channel.runtimeStatus === "error" ? "\u6E20\u9053\u8FDE\u63A5\u9700\u8981\u5904\u7406" : "\u6E20\u9053\u5F53\u524D\u5DF2\u505C\u7528" }),
17300
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1\u3001Matrix \u6216 Mattermost\uFF0C\u8054\u7CFB\u4EBA\u9996\u6B21\u53D1\u6D88\u606F\u9700\u6279\u51C6\u3002" : online ? "\u672C\u5730\u4E0E\u6240\u6709\u5DF2\u6388\u6743\u6E20\u9053\u5171\u7528\u4F19\u4F34\u4E3B\u5BF9\u8BDD\uFF0C\u56DE\u590D\u8FD4\u56DE\u6D88\u606F\u6765\u6E90\u3002" : channel.lastError || "\u6E20\u9053\u914D\u7F6E\u4ECD\u7136\u4FDD\u7559\uFF0C\u53EF\u4EE5\u968F\u65F6\u91CD\u65B0\u542F\u7528\u3002" }),
17301
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-channel-actions", children: [
17302
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "is-primary", onClick: () => navigate("weixin"), children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1" : pending > 0 ? `\u5904\u7406 ${pending} \u4E2A\u8BF7\u6C42` : "\u7BA1\u7406\u6E20\u9053" }),
17303
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: !channel ? "\u9009\u62E9\u6E20\u9053\u5E76\u8FDE\u63A5\u8D26\u53F7" : `${approved} \u4F4D\u8054\u7CFB\u4EBA \xB7 \u5171\u7528\u4E3B\u5BF9\u8BDD` })
16905
17304
  ] })
16906
17305
  ] })
16907
17306
  ] }),
16908
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-home-details", children: [
16909
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { className: "dsh-partner-home-profile", children: [
16910
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { children: [
16911
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconUserOutline16, { size: 16 }) }),
16912
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { children: [
16913
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u4F19\u4F34\u5E95\u7A3F" }),
16914
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: companion.role })
17307
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-details", children: [
17308
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-profile", children: [
17309
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
17310
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconUserOutlineRegular, { size: 16 }) }),
17311
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
17312
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u4F19\u4F34\u5E95\u7A3F" }),
17313
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.role })
16915
17314
  ] }),
16916
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", onClick: () => navigate("identity"), children: "\u7F16\u8F91" })
17315
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => navigate("identity"), children: "\u7F16\u8F91" })
16917
17316
  ] }),
16918
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("blockquote", { children: companion.instructions || companion.description || "\u5C1A\u672A\u8BBE\u7F6E\u957F\u671F\u884C\u4E3A\u51C6\u5219\u3002" })
17317
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("blockquote", { children: companion.instructions || companion.description || "\u5C1A\u672A\u8BBE\u7F6E\u957F\u671F\u884C\u4E3A\u51C6\u5219\u3002" })
16919
17318
  ] }),
16920
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { className: "dsh-partner-home-runtime", children: [
16921
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { children: [
16922
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutline16, { size: 16 }) }),
16923
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { children: [
16924
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u8FD0\u884C\u80FD\u529B" }),
16925
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: companion.presetId || "DSH \u9ED8\u8BA4 Preset" })
17319
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-runtime", children: [
17320
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
17321
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }) }),
17322
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
17323
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u8FD0\u884C\u80FD\u529B" }),
17324
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.presetId || "DSH \u9ED8\u8BA4 Preset" })
16926
17325
  ] }),
16927
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", onClick: () => navigate("capabilities"), children: "\u8C03\u6574" })
17326
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => navigate("capabilities"), children: "\u8C03\u6574" })
16928
17327
  ] }),
16929
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-home-capability-list", children: capabilities.length ? capabilities.map((item) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("em", { children: item }, item)) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u5C1A\u672A\u58F0\u660E\u80FD\u529B\u8303\u56F4" }) })
17328
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-home-capability-list", children: capabilities.length ? capabilities.map((item) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("em", { children: item }, item)) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u5C1A\u672A\u58F0\u660E\u80FD\u529B\u8303\u56F4" }) })
16930
17329
  ] }),
16931
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { className: "dsh-partner-home-continuity", children: [
16932
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { children: [
16933
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconDataOutline16, { size: 16 }) }),
16934
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { children: [
16935
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "\u4F19\u4F34\u5BF9\u8BDD" }),
16936
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: localSession?.archived ? "\u4F1A\u8BDD\u5DF2\u5F52\u6863" : "\u4F19\u4F34\u4F1A\u8BDD\u5DF2\u5EFA\u7ACB" })
17330
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-continuity", children: [
17331
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
17332
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconDataOutlineRegular, { size: 16 }) }),
17333
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
17334
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u4F19\u4F34\u5BF9\u8BDD" }),
17335
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: localSession?.archived ? "\u4F1A\u8BDD\u5DF2\u5F52\u6863" : "\u4F19\u4F34\u4F1A\u8BDD\u5DF2\u5EFA\u7ACB" })
16937
17336
  ] }),
16938
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", onClick: () => localSession === void 0 ? void startSession(companion.id) : localSession.archived ? void renewSession(localSession.id) : void openSession(localSession.id, localSession.sessionId), children: localSession === void 0 ? "\u5F00\u59CB\u5BF9\u8BDD" : localSession.archived ? "\u5F00\u59CB\u65B0\u4F1A\u8BDD" : "\u6253\u5F00\u4F1A\u8BDD" })
17337
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => localSession === void 0 ? void startSession(companion.id) : localSession.archived ? void renewSession(localSession.id) : void openSession(localSession.id, localSession.sessionId), children: localSession === void 0 ? "\u5F00\u59CB\u5BF9\u8BDD" : localSession.archived ? "\u5F00\u59CB\u65B0\u4F1A\u8BDD" : "\u6253\u5F00\u4F1A\u8BDD" })
16939
17338
  ] }),
16940
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: localSession ? `\u6700\u8FD1\u6D3B\u52A8\u4E8E ${relativeTime(localSession.lastMessageAt)}\uFF1B\u672C\u5730\u4E0E\u6E20\u9053\u5728\u8FD9\u91CC\u63A5\u7740\u804A\u3002` : "\u4F19\u4F34\u4F1A\u8BDD\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u7A0D\u540E\u5373\u53EF\u6253\u5F00\u3002" })
17339
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: localSession ? `\u6700\u8FD1\u6D3B\u52A8\u4E8E ${relativeTime(localSession.lastMessageAt)}\uFF1B\u672C\u5730\u4E0E\u6E20\u9053\u5728\u8FD9\u91CC\u63A5\u7740\u804A\u3002` : "\u4F19\u4F34\u4F1A\u8BDD\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u7A0D\u540E\u5373\u53EF\u6253\u5F00\u3002" })
16941
17340
  ] })
16942
17341
  ] })
16943
17342
  ] });
16944
17343
  }
16945
17344
  function WeixinPanel({ companion, snapshot, onChanged }) {
16946
17345
  const channel = snapshot.channels.find((item) => item.companionId === companion.id && (!item.platform || item.platform === "weixin"));
16947
- const [login, setLogin] = (0, import_react50.useState)();
16948
- const [busy, setBusy] = (0, import_react50.useState)(false);
16949
- const [error, setError] = (0, import_react50.useState)();
16950
- (0, import_react50.useEffect)(() => {
17346
+ const [login, setLogin] = (0, import_react51.useState)();
17347
+ const [busy, setBusy] = (0, import_react51.useState)(false);
17348
+ const [error, setError] = (0, import_react51.useState)();
17349
+ (0, import_react51.useEffect)(() => {
16951
17350
  if (!login || login.phase === "confirmed" || login.phase === "expired" || login.phase === "error") return;
16952
17351
  const timer2 = window.setInterval(() => {
16953
17352
  void api(`/weixin/login/${login.id}`).then(async (result) => {
@@ -16993,93 +17392,93 @@ function WeixinPanel({ companion, snapshot, onChanged }) {
16993
17392
  setError(errorMessage(reason));
16994
17393
  }
16995
17394
  };
16996
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-form is-channel", children: [
16997
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(SectionHeading, { eyebrow: "PRIMARY CHANNEL", title: "\u5FAE\u4FE1\u6E20\u9053", detail: "\u4F7F\u7528\u5FAE\u4FE1 iLink Bot \u626B\u7801\u63A5\u5165\u3002\u6BCF\u4E2A\u673A\u5668\u4EBA\u53EA\u7ED1\u5B9A\u4E00\u4E2A\u4F19\u4F34\uFF0C\u6BCF\u4F4D\u8054\u7CFB\u4EBA\u4FDD\u6301\u72EC\u7ACB DSH \u4F1A\u8BDD\u3002" }),
16998
- !channel && !login && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-weixin-connect", borderRadius: 15, distortionScale: -10, saturation: 1.06, children: [
16999
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WeixinGlyph, { large: true }) }),
17000
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
17001
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("strong", { children: [
17395
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-form is-channel", children: [
17396
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SectionHeading, { eyebrow: "PRIMARY CHANNEL", title: "\u5FAE\u4FE1\u6E20\u9053", detail: "\u4F7F\u7528\u5FAE\u4FE1 iLink Bot \u626B\u7801\u63A5\u5165\u3002\u6BCF\u4E2A\u673A\u5668\u4EBA\u53EA\u7ED1\u5B9A\u4E00\u4E2A\u4F19\u4F34\uFF0C\u6BCF\u4F4D\u8054\u7CFB\u4EBA\u4FDD\u6301\u72EC\u7ACB DSH \u4F1A\u8BDD\u3002" }),
17397
+ !channel && !login && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-weixin-connect", borderRadius: 15, distortionScale: -10, saturation: 1.06, children: [
17398
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) }),
17399
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17400
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("strong", { children: [
17002
17401
  "\u628A ",
17003
17402
  companion.name,
17004
17403
  " \u5E26\u5230\u5FAE\u4FE1"
17005
17404
  ] }),
17006
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: "\u626B\u7801\u540E\uFF0C\u673A\u5668\u4EBA\u51ED\u636E\u76F4\u63A5\u4FDD\u5B58\u8FDB DSH \u51ED\u636E\u5E93\uFF0C\u4E0D\u4F1A\u663E\u793A\u5728\u6D4F\u89C8\u5668\u6216\u666E\u901A\u914D\u7F6E\u6587\u4EF6\u4E2D\u3002" }),
17007
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("ul", { children: [
17008
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("li", { children: "\u79C1\u804A\u9996\u6B21\u8054\u7CFB\u5FC5\u987B\u5BA1\u6279" }),
17009
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("li", { children: "\u8054\u7CFB\u4EBA\u4E4B\u95F4\u4E0A\u4E0B\u6587\u5B8C\u5168\u9694\u79BB" }),
17010
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("li", { children: "\u5DE5\u5177\u6743\u9650\u4E0D\u4F1A\u56E0\u5FAE\u4FE1\u8EAB\u4EFD\u81EA\u52A8\u6269\u5927" })
17405
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: "\u626B\u7801\u540E\uFF0C\u673A\u5668\u4EBA\u51ED\u636E\u76F4\u63A5\u4FDD\u5B58\u8FDB DSH \u51ED\u636E\u5E93\uFF0C\u4E0D\u4F1A\u663E\u793A\u5728\u6D4F\u89C8\u5668\u6216\u666E\u901A\u914D\u7F6E\u6587\u4EF6\u4E2D\u3002" }),
17406
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("ul", { children: [
17407
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u79C1\u804A\u9996\u6B21\u8054\u7CFB\u5FC5\u987B\u5BA1\u6279" }),
17408
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u8054\u7CFB\u4EBA\u4E4B\u95F4\u4E0A\u4E0B\u6587\u5B8C\u5168\u9694\u79BB" }),
17409
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u5DE5\u5177\u6743\u9650\u4E0D\u4F1A\u56E0\u5FAE\u4FE1\u8EAB\u4EFD\u81EA\u52A8\u6269\u5927" })
17011
17410
  ] })
17012
17411
  ] }),
17013
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", disabled: busy, onClick: () => {
17412
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", disabled: busy, onClick: () => {
17014
17413
  void begin();
17015
17414
  }, children: busy ? "\u6B63\u5728\u7533\u8BF7\u4E8C\u7EF4\u7801\u2026" : "\u626B\u7801\u8FDE\u63A5\u5FAE\u4FE1" })
17016
17415
  ] }),
17017
- login && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-qr", borderRadius: 16, distortionScale: -10, saturation: 1.06, children: [
17018
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-qr-code", children: login.qrContent && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(QRCodeSVG, { value: login.qrContent, size: 176, level: "M" }) }),
17019
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
17020
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "WECHAT ILINK BOT" }),
17021
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: login.phase === "scanned" ? "\u5DF2\u626B\u7801\uFF0C\u8BF7\u5728\u5FAE\u4FE1\u786E\u8BA4" : login.phase === "expired" ? "\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F" : login.phase === "error" ? "\u8FDE\u63A5\u5931\u8D25" : "\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801" }),
17022
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: login.error || (login.phase === "scanned" ? "\u786E\u8BA4\u540E\u4F1A\u81EA\u52A8\u542F\u52A8\u6E20\u9053\uFF0C\u4E0D\u9700\u8981\u590D\u5236 Token\u3002" : "\u4E8C\u7EF4\u7801\u7EA6 5 \u5206\u949F\u6709\u6548\u3002\u6B64\u9875\u9762\u53EF\u4EE5\u5B89\u5168\u5730\u4FDD\u6301\u6253\u5F00\u3002") }),
17023
- (login.phase === "expired" || login.phase === "error") && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", onClick: () => {
17416
+ login && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-qr", borderRadius: 16, distortionScale: -10, saturation: 1.06, children: [
17417
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-qr-code", children: login.qrContent && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(QRCodeSVG, { value: login.qrContent, size: 176, level: "M" }) }),
17418
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17419
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "WECHAT ILINK BOT" }),
17420
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: login.phase === "scanned" ? "\u5DF2\u626B\u7801\uFF0C\u8BF7\u5728\u5FAE\u4FE1\u786E\u8BA4" : login.phase === "expired" ? "\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F" : login.phase === "error" ? "\u8FDE\u63A5\u5931\u8D25" : "\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801" }),
17421
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: login.error || (login.phase === "scanned" ? "\u786E\u8BA4\u540E\u4F1A\u81EA\u52A8\u542F\u52A8\u6E20\u9053\uFF0C\u4E0D\u9700\u8981\u590D\u5236 Token\u3002" : "\u4E8C\u7EF4\u7801\u7EA6 5 \u5206\u949F\u6709\u6548\u3002\u6B64\u9875\u9762\u53EF\u4EE5\u5B89\u5168\u5730\u4FDD\u6301\u6253\u5F00\u3002") }),
17422
+ (login.phase === "expired" || login.phase === "error") && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", onClick: () => {
17024
17423
  setLogin(void 0);
17025
17424
  void begin();
17026
17425
  }, children: [
17027
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconRefreshOutline16, { size: 16 }),
17426
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconRefreshOutlineRegular, { size: 16 }),
17028
17427
  "\u91CD\u65B0\u751F\u6210"
17029
17428
  ] })
17030
17429
  ] })
17031
17430
  ] }),
17032
- channel && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
17033
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-channel-card", borderRadius: 14, distortionScale: -10, saturation: 1.06, children: [
17034
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WeixinGlyph, { large: true }) }),
17035
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
17036
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "WECHAT CHANNEL" }),
17037
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: channel.name }),
17038
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { children: channel.accountId })
17431
+ channel && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
17432
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-channel-card", borderRadius: 14, distortionScale: -10, saturation: 1.06, children: [
17433
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) }),
17434
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17435
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "WECHAT CHANNEL" }),
17436
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: channel.name }),
17437
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: channel.accountId })
17039
17438
  ] }),
17040
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ChannelStatus, { channel }),
17041
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { type: "button", className: "dsh-partner-switch", "data-on": channel.enabled, disabled: busy, "aria-label": channel.enabled ? "\u505C\u7528\u5FAE\u4FE1\u6E20\u9053" : "\u542F\u7528\u5FAE\u4FE1\u6E20\u9053", onClick: () => {
17439
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelStatus, { channel }),
17440
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "dsh-partner-switch", "data-on": channel.enabled, disabled: busy, "aria-label": channel.enabled ? "\u505C\u7528\u5FAE\u4FE1\u6E20\u9053" : "\u542F\u7528\u5FAE\u4FE1\u6E20\u9053", onClick: () => {
17042
17441
  void toggle();
17043
- }, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("i", {}) })
17442
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}) })
17044
17443
  ] }),
17045
- channel.lastError && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: "dsh-partner-inline-error", children: channel.lastError }),
17046
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "dsh-partner-pairing-heading", children: [
17047
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { children: [
17048
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: "ACCESS" }),
17049
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: "\u79C1\u804A\u914D\u5BF9" })
17444
+ channel.lastError && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-error", children: channel.lastError }),
17445
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-pairing-heading", children: [
17446
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
17447
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "ACCESS" }),
17448
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u79C1\u804A\u914D\u5BF9" })
17050
17449
  ] }),
17051
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("em", { children: [
17450
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("em", { children: [
17052
17451
  pairings.filter((item) => item.status === "pending").length,
17053
17452
  " \u4E2A\u5F85\u5904\u7406"
17054
17453
  ] })
17055
17454
  ] }),
17056
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "dsh-partner-pairings", children: pairings.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContentState, { title: "\u8FD8\u6CA1\u6709\u8054\u7CFB\u4EBA", detail: "\u6709\u4EBA\u9996\u6B21\u5411\u673A\u5668\u4EBA\u53D1\u6D88\u606F\u540E\uFF0C\u914D\u5BF9\u8BF7\u6C42\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002", compact: true }) : pairings.map((pairing) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("article", { children: [
17057
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: `is-${pairing.status}`, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_dsh_client_ui_primitives24.IconUserOutline16, { size: 16 }) }),
17058
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { children: [
17059
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: pairing.displayName }),
17060
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("small", { children: [
17455
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-pairings", children: pairings.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u8FD8\u6CA1\u6709\u8054\u7CFB\u4EBA", detail: "\u6709\u4EBA\u9996\u6B21\u5411\u673A\u5668\u4EBA\u53D1\u6D88\u606F\u540E\uFF0C\u914D\u5BF9\u8BF7\u6C42\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002", compact: true }) : pairings.map((pairing) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("article", { children: [
17456
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: `is-${pairing.status}`, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconUserOutlineRegular, { size: 16 }) }),
17457
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
17458
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: pairing.displayName }),
17459
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("small", { children: [
17061
17460
  pairing.status === "pending" ? "\u7B49\u5F85\u5BA1\u6279" : pairing.status === "approved" ? "\u5DF2\u6388\u6743\u72EC\u7ACB\u4F1A\u8BDD" : "\u5DF2\u963B\u6B62",
17062
17461
  " \xB7 ",
17063
17462
  new Date(pairing.updatedAt).toLocaleString()
17064
17463
  ] })
17065
17464
  ] }),
17066
- pairing.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
17067
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { onClick: () => {
17465
+ pairing.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
17466
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
17068
17467
  void actPairing(pairing.id, "blocked");
17069
17468
  }, children: "\u62D2\u7EDD" }),
17070
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { className: "is-primary", onClick: () => {
17469
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { className: "is-primary", onClick: () => {
17071
17470
  void actPairing(pairing.id, "approved");
17072
17471
  }, children: "\u6279\u51C6" })
17073
17472
  ] }),
17074
- pairing.status === "approved" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { onClick: () => {
17473
+ pairing.status === "approved" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
17075
17474
  void actPairing(pairing.id, "blocked");
17076
17475
  }, children: "\u64A4\u9500" }),
17077
- pairing.status === "blocked" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("button", { onClick: () => {
17476
+ pairing.status === "blocked" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
17078
17477
  void actPairing(pairing.id, "approved");
17079
17478
  }, children: "\u91CD\u65B0\u6279\u51C6" })
17080
17479
  ] }, pairing.id)) })
17081
17480
  ] }),
17082
- error && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("p", { className: "dsh-partner-inline-error", children: error })
17481
+ error && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-error", children: error })
17083
17482
  ] });
17084
17483
  }
17085
17484
  function installStyles() {