@jingyi0605/codingns4dsh 0.2.1-beta.9 → 0.2.1-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (848) hide show
  1. package/README.en.md +8 -6
  2. package/README.md +11 -8
  3. package/assets/provider-icons/magpie.png +0 -0
  4. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
  5. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -1
  6. package/data/build/dist/bootstrap/index.d.ts +1 -1
  7. package/data/build/dist/bootstrap/index.d.ts.map +1 -1
  8. package/data/build/dist/client/account-bar.d.ts.map +1 -1
  9. package/data/build/dist/client/account-bar.js +24 -70
  10. package/data/build/dist/client/account-bar.js.map +1 -1
  11. package/data/build/dist/client/adapter-catalog-watch.d.ts +10 -2
  12. package/data/build/dist/client/adapter-catalog-watch.d.ts.map +1 -1
  13. package/data/build/dist/client/adapter-catalog-watch.js +16 -4
  14. package/data/build/dist/client/adapter-catalog-watch.js.map +1 -1
  15. package/data/build/dist/client/bundle.js +54516 -35293
  16. package/data/build/dist/client/bundle.js.map +1 -1
  17. package/data/build/dist/client/cli-management-dialog.d.ts +21 -0
  18. package/data/build/dist/client/cli-management-dialog.d.ts.map +1 -0
  19. package/data/build/dist/client/cli-management-dialog.js +215 -0
  20. package/data/build/dist/client/cli-management-dialog.js.map +1 -0
  21. package/data/build/dist/client/cli-management-terminal.d.ts +9 -0
  22. package/data/build/dist/client/cli-management-terminal.d.ts.map +1 -0
  23. package/data/build/dist/client/cli-management-terminal.js +30 -0
  24. package/data/build/dist/client/cli-management-terminal.js.map +1 -0
  25. package/data/build/dist/client/cli-settings-dialog.d.ts +9 -0
  26. package/data/build/dist/client/cli-settings-dialog.d.ts.map +1 -0
  27. package/data/build/dist/client/cli-settings-dialog.js +45 -0
  28. package/data/build/dist/client/cli-settings-dialog.js.map +1 -0
  29. package/data/build/dist/client/cli-settings-rpc.js +1 -1
  30. package/data/build/dist/client/cli-settings-rpc.js.map +1 -1
  31. package/data/build/dist/client/cli-slots.d.ts +17 -3
  32. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  33. package/data/build/dist/client/cli-slots.js +300 -41
  34. package/data/build/dist/client/cli-slots.js.map +1 -1
  35. package/data/build/dist/client/client.assistant-configuration-view.js +4 -3
  36. package/data/build/dist/client/client.assistant-configuration-view.js.map +1 -1
  37. package/data/build/dist/client/client.delegate-command.js +44 -26
  38. package/data/build/dist/client/client.delegate-command.js.map +1 -1
  39. package/data/build/dist/client/client.editor-engine.js +4 -1
  40. package/data/build/dist/client/client.editor-engine.js.map +1 -1
  41. package/data/build/dist/client/{client.model-catalog-cache.js → client.magpie-model-tag.js} +241 -12
  42. package/data/build/dist/client/client.magpie-model-tag.js.map +1 -0
  43. package/data/build/dist/client/client.moss-voice-output.js +415 -0
  44. package/data/build/dist/client/client.moss-voice-output.js.map +1 -0
  45. package/data/build/dist/client/client.native-workspace-store.js +65 -15
  46. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  47. package/data/build/dist/client/client.primitives-adapter.js +128 -0
  48. package/data/build/dist/client/client.primitives-adapter.js.map +1 -1
  49. package/data/build/dist/client/client.react-dom.js +0 -404
  50. package/data/build/dist/client/client.react-dom.js.map +1 -1
  51. package/data/build/dist/client/client.session-translation.js +121 -2
  52. package/data/build/dist/client/client.session-translation.js.map +1 -1
  53. package/data/build/dist/client/client.transport.js +738 -57
  54. package/data/build/dist/client/client.transport.js.map +1 -1
  55. package/data/build/dist/client/conversation-translation-settings.d.ts +11 -0
  56. package/data/build/dist/client/conversation-translation-settings.d.ts.map +1 -0
  57. package/data/build/dist/client/conversation-translation-settings.js +54 -0
  58. package/data/build/dist/client/conversation-translation-settings.js.map +1 -0
  59. package/data/build/dist/client/delegate-command.d.ts.map +1 -1
  60. package/data/build/dist/client/delegate-command.js +36 -7
  61. package/data/build/dist/client/delegate-command.js.map +1 -1
  62. package/data/build/dist/client/desktop-assistant.js +1202 -494
  63. package/data/build/dist/client/editor-engine.d.ts +1 -1
  64. package/data/build/dist/client/editor-engine.d.ts.map +1 -1
  65. package/data/build/dist/client/editor-engine.js +4 -1
  66. package/data/build/dist/client/editor-engine.js.map +1 -1
  67. package/data/build/dist/client/features/cli-adapters.d.ts +3 -1
  68. package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
  69. package/data/build/dist/client/features/cli-adapters.js +207 -112
  70. package/data/build/dist/client/features/cli-adapters.js.map +1 -1
  71. package/data/build/dist/client/features/file-management.d.ts.map +1 -1
  72. package/data/build/dist/client/features/file-management.js +18 -0
  73. package/data/build/dist/client/features/file-management.js.map +1 -1
  74. package/data/build/dist/client/features/index.d.ts.map +1 -1
  75. package/data/build/dist/client/features/index.js +2 -0
  76. package/data/build/dist/client/features/index.js.map +1 -1
  77. package/data/build/dist/client/features/lan-access-panel.d.ts.map +1 -1
  78. package/data/build/dist/client/features/lan-access-panel.js +1 -0
  79. package/data/build/dist/client/features/lan-access-panel.js.map +1 -1
  80. package/data/build/dist/client/features/mobile-access.d.ts.map +1 -1
  81. package/data/build/dist/client/features/mobile-access.js +7 -0
  82. package/data/build/dist/client/features/mobile-access.js.map +1 -1
  83. package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
  84. package/data/build/dist/client/features/peer-host.js +6 -0
  85. package/data/build/dist/client/features/peer-host.js.map +1 -1
  86. package/data/build/dist/client/features/quick-apps.d.ts +3 -0
  87. package/data/build/dist/client/features/quick-apps.d.ts.map +1 -0
  88. package/data/build/dist/client/features/quick-apps.js +14 -0
  89. package/data/build/dist/client/features/quick-apps.js.map +1 -0
  90. package/data/build/dist/client/features/session-translation.d.ts.map +1 -1
  91. package/data/build/dist/client/features/session-translation.js +50 -49
  92. package/data/build/dist/client/features/session-translation.js.map +1 -1
  93. package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
  94. package/data/build/dist/client/features/workspace-session-enhancement.js +6 -0
  95. package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
  96. package/data/build/dist/client/file-management-dom.d.ts +20 -1
  97. package/data/build/dist/client/file-management-dom.d.ts.map +1 -1
  98. package/data/build/dist/client/file-management-dom.js +94 -18
  99. package/data/build/dist/client/file-management-dom.js.map +1 -1
  100. package/data/build/dist/client/file-viewer-copy-path-menu.d.ts +27 -0
  101. package/data/build/dist/client/file-viewer-copy-path-menu.d.ts.map +1 -0
  102. package/data/build/dist/client/file-viewer-copy-path-menu.js +101 -0
  103. package/data/build/dist/client/file-viewer-copy-path-menu.js.map +1 -0
  104. package/data/build/dist/client/git-management-settings.d.ts +4 -0
  105. package/data/build/dist/client/git-management-settings.d.ts.map +1 -0
  106. package/data/build/dist/client/git-management-settings.js +73 -0
  107. package/data/build/dist/client/git-management-settings.js.map +1 -0
  108. package/data/build/dist/client/git-management.d.ts +2 -1
  109. package/data/build/dist/client/git-management.d.ts.map +1 -1
  110. package/data/build/dist/client/git-management.js +55 -34
  111. package/data/build/dist/client/git-management.js.map +1 -1
  112. package/data/build/dist/client/git-panel-styles.d.ts +4 -0
  113. package/data/build/dist/client/git-panel-styles.d.ts.map +1 -1
  114. package/data/build/dist/client/git-panel-styles.js +14 -0
  115. package/data/build/dist/client/git-panel-styles.js.map +1 -1
  116. package/data/build/dist/client/html-workspace-files.d.ts +4 -0
  117. package/data/build/dist/client/html-workspace-files.d.ts.map +1 -0
  118. package/data/build/dist/client/html-workspace-files.js +114 -0
  119. package/data/build/dist/client/html-workspace-files.js.map +1 -0
  120. package/data/build/dist/client/locale.d.ts.map +1 -1
  121. package/data/build/dist/client/locale.js +22 -2
  122. package/data/build/dist/client/locale.js.map +1 -1
  123. package/data/build/dist/client/locales/cliManagement.d.ts +3 -0
  124. package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -0
  125. package/data/build/dist/client/locales/cliManagement.js +155 -0
  126. package/data/build/dist/client/locales/cliManagement.js.map +1 -0
  127. package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -1
  128. package/data/build/dist/client/locales/fileWorkspace.js +8 -0
  129. package/data/build/dist/client/locales/fileWorkspace.js.map +1 -1
  130. package/data/build/dist/client/locales/git.d.ts.map +1 -1
  131. package/data/build/dist/client/locales/git.js +30 -2
  132. package/data/build/dist/client/locales/git.js.map +1 -1
  133. package/data/build/dist/client/locales/panels.d.ts.map +1 -1
  134. package/data/build/dist/client/locales/panels.js +103 -11
  135. package/data/build/dist/client/locales/panels.js.map +1 -1
  136. package/data/build/dist/client/locales/peerHost.d.ts.map +1 -1
  137. package/data/build/dist/client/locales/peerHost.js +2 -0
  138. package/data/build/dist/client/locales/peerHost.js.map +1 -1
  139. package/data/build/dist/client/locales/quickApps.d.ts +136 -0
  140. package/data/build/dist/client/locales/quickApps.d.ts.map +1 -0
  141. package/data/build/dist/client/locales/quickApps.js +162 -0
  142. package/data/build/dist/client/locales/quickApps.js.map +1 -0
  143. package/data/build/dist/client/locales/usage.d.ts.map +1 -1
  144. package/data/build/dist/client/locales/usage.js +98 -0
  145. package/data/build/dist/client/locales/usage.js.map +1 -1
  146. package/data/build/dist/client/magpie-model-tag.d.ts +8 -0
  147. package/data/build/dist/client/magpie-model-tag.d.ts.map +1 -0
  148. package/data/build/dist/client/magpie-model-tag.js +50 -0
  149. package/data/build/dist/client/magpie-model-tag.js.map +1 -0
  150. package/data/build/dist/client/mobile-team-panel-dom.d.ts +14 -0
  151. package/data/build/dist/client/mobile-team-panel-dom.d.ts.map +1 -0
  152. package/data/build/dist/client/mobile-team-panel-dom.js +164 -0
  153. package/data/build/dist/client/mobile-team-panel-dom.js.map +1 -0
  154. package/data/build/dist/client/model-catalog-cache.d.ts.map +1 -1
  155. package/data/build/dist/client/model-catalog-cache.js +66 -12
  156. package/data/build/dist/client/model-catalog-cache.js.map +1 -1
  157. package/data/build/dist/client/model-priority-pool.d.ts +23 -0
  158. package/data/build/dist/client/model-priority-pool.d.ts.map +1 -0
  159. package/data/build/dist/client/model-priority-pool.js +245 -0
  160. package/data/build/dist/client/model-priority-pool.js.map +1 -0
  161. package/data/build/dist/client/native-model-translation-menu.d.ts +13 -0
  162. package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -0
  163. package/data/build/dist/client/native-model-translation-menu.js +159 -0
  164. package/data/build/dist/client/native-model-translation-menu.js.map +1 -0
  165. package/data/build/dist/client/native-translation-default.d.ts +6 -0
  166. package/data/build/dist/client/native-translation-default.d.ts.map +1 -0
  167. package/data/build/dist/client/native-translation-default.js +30 -0
  168. package/data/build/dist/client/native-translation-default.js.map +1 -0
  169. package/data/build/dist/client/provider-icons.d.ts.map +1 -1
  170. package/data/build/dist/client/provider-icons.js +3 -1
  171. package/data/build/dist/client/provider-icons.js.map +1 -1
  172. package/data/build/dist/client/quick-apps/browser-storage.d.ts +24 -0
  173. package/data/build/dist/client/quick-apps/browser-storage.d.ts.map +1 -0
  174. package/data/build/dist/client/quick-apps/browser-storage.js +114 -0
  175. package/data/build/dist/client/quick-apps/browser-storage.js.map +1 -0
  176. package/data/build/dist/client/quick-apps/client.d.ts +31 -0
  177. package/data/build/dist/client/quick-apps/client.d.ts.map +1 -0
  178. package/data/build/dist/client/quick-apps/client.js +68 -0
  179. package/data/build/dist/client/quick-apps/client.js.map +1 -0
  180. package/data/build/dist/client/quick-apps/document.d.ts +26 -0
  181. package/data/build/dist/client/quick-apps/document.d.ts.map +1 -0
  182. package/data/build/dist/client/quick-apps/document.js +110 -0
  183. package/data/build/dist/client/quick-apps/document.js.map +1 -0
  184. package/data/build/dist/client/quick-apps/file-picker.d.ts +14 -0
  185. package/data/build/dist/client/quick-apps/file-picker.d.ts.map +1 -0
  186. package/data/build/dist/client/quick-apps/file-picker.js +51 -0
  187. package/data/build/dist/client/quick-apps/file-picker.js.map +1 -0
  188. package/data/build/dist/client/quick-apps/launcher.d.ts +7 -0
  189. package/data/build/dist/client/quick-apps/launcher.d.ts.map +1 -0
  190. package/data/build/dist/client/quick-apps/launcher.js +267 -0
  191. package/data/build/dist/client/quick-apps/launcher.js.map +1 -0
  192. package/data/build/dist/client/quick-apps/presentation.d.ts +16 -0
  193. package/data/build/dist/client/quick-apps/presentation.d.ts.map +1 -0
  194. package/data/build/dist/client/quick-apps/presentation.js +47 -0
  195. package/data/build/dist/client/quick-apps/presentation.js.map +1 -0
  196. package/data/build/dist/client/quick-apps/rail-preference.d.ts +5 -0
  197. package/data/build/dist/client/quick-apps/rail-preference.d.ts.map +1 -0
  198. package/data/build/dist/client/quick-apps/rail-preference.js +19 -0
  199. package/data/build/dist/client/quick-apps/rail-preference.js.map +1 -0
  200. package/data/build/dist/client/quick-apps/reorder-animation.d.ts +6 -0
  201. package/data/build/dist/client/quick-apps/reorder-animation.d.ts.map +1 -0
  202. package/data/build/dist/client/quick-apps/reorder-animation.js +50 -0
  203. package/data/build/dist/client/quick-apps/reorder-animation.js.map +1 -0
  204. package/data/build/dist/client/quick-apps/reorder.d.ts +26 -0
  205. package/data/build/dist/client/quick-apps/reorder.d.ts.map +1 -0
  206. package/data/build/dist/client/quick-apps/reorder.js +128 -0
  207. package/data/build/dist/client/quick-apps/reorder.js.map +1 -0
  208. package/data/build/dist/client/quick-apps/styles.d.ts +3 -0
  209. package/data/build/dist/client/quick-apps/styles.d.ts.map +1 -0
  210. package/data/build/dist/client/quick-apps/styles.js +153 -0
  211. package/data/build/dist/client/quick-apps/styles.js.map +1 -0
  212. package/data/build/dist/client/quick-apps/ui.d.ts +20 -0
  213. package/data/build/dist/client/quick-apps/ui.d.ts.map +1 -0
  214. package/data/build/dist/client/quick-apps/ui.js +21 -0
  215. package/data/build/dist/client/quick-apps/ui.js.map +1 -0
  216. package/data/build/dist/client/quick-apps/viewer.d.ts +16 -0
  217. package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -0
  218. package/data/build/dist/client/quick-apps/viewer.js +165 -0
  219. package/data/build/dist/client/quick-apps/viewer.js.map +1 -0
  220. package/data/build/dist/client/quick-apps/workspace-picker.d.ts +19 -0
  221. package/data/build/dist/client/quick-apps/workspace-picker.d.ts.map +1 -0
  222. package/data/build/dist/client/quick-apps/workspace-picker.js +30 -0
  223. package/data/build/dist/client/quick-apps/workspace-picker.js.map +1 -0
  224. package/data/build/dist/client/session-translation-chat.d.ts +68 -2
  225. package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
  226. package/data/build/dist/client/session-translation-chat.js +297 -109
  227. package/data/build/dist/client/session-translation-chat.js.map +1 -1
  228. package/data/build/dist/client/session-translation-interactions.d.ts +31 -0
  229. package/data/build/dist/client/session-translation-interactions.d.ts.map +1 -0
  230. package/data/build/dist/client/session-translation-interactions.js +158 -0
  231. package/data/build/dist/client/session-translation-interactions.js.map +1 -0
  232. package/data/build/dist/client/session-translation-pending-dom.d.ts +8 -0
  233. package/data/build/dist/client/session-translation-pending-dom.d.ts.map +1 -0
  234. package/data/build/dist/client/session-translation-pending-dom.js +58 -0
  235. package/data/build/dist/client/session-translation-pending-dom.js.map +1 -0
  236. package/data/build/dist/client/session-translation-retry.d.ts +16 -0
  237. package/data/build/dist/client/session-translation-retry.d.ts.map +1 -0
  238. package/data/build/dist/client/session-translation-retry.js +66 -0
  239. package/data/build/dist/client/session-translation-retry.js.map +1 -0
  240. package/data/build/dist/client/session-translation-rules.d.ts +13 -0
  241. package/data/build/dist/client/session-translation-rules.d.ts.map +1 -0
  242. package/data/build/dist/client/session-translation-rules.js +58 -0
  243. package/data/build/dist/client/session-translation-rules.js.map +1 -0
  244. package/data/build/dist/client/sidebar-footer-style.d.ts +13 -0
  245. package/data/build/dist/client/sidebar-footer-style.d.ts.map +1 -0
  246. package/data/build/dist/client/sidebar-footer-style.js +54 -0
  247. package/data/build/dist/client/sidebar-footer-style.js.map +1 -0
  248. package/data/build/dist/client/style.css +276 -276
  249. package/data/build/dist/client/subscription-slot.d.ts +6 -2
  250. package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
  251. package/data/build/dist/client/subscription-slot.js +373 -21
  252. package/data/build/dist/client/subscription-slot.js.map +1 -1
  253. package/data/build/dist/client/terminal/model.d.ts.map +1 -1
  254. package/data/build/dist/client/terminal/model.js +2 -1
  255. package/data/build/dist/client/terminal/model.js.map +1 -1
  256. package/data/build/dist/client/workspace-session-archive-dom.d.ts +1 -0
  257. package/data/build/dist/client/workspace-session-archive-dom.d.ts.map +1 -1
  258. package/data/build/dist/client/workspace-session-archive-dom.js +68 -8
  259. package/data/build/dist/client/workspace-session-archive-dom.js.map +1 -1
  260. package/data/build/dist/client/workspace-session-rightbar-dom.d.ts.map +1 -1
  261. package/data/build/dist/client/workspace-session-rightbar-dom.js +12 -21
  262. package/data/build/dist/client/workspace-session-rightbar-dom.js.map +1 -1
  263. package/data/build/dist/client/workspace-session-visibility-dom.d.ts +3 -0
  264. package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -1
  265. package/data/build/dist/client/workspace-session-visibility-dom.js +43 -10
  266. package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -1
  267. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.d.ts +8 -0
  268. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.d.ts.map +1 -0
  269. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.js +71 -0
  270. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.js.map +1 -0
  271. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts +4 -0
  272. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts.map +1 -0
  273. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js +8 -0
  274. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js.map +1 -0
  275. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.d.ts +30 -0
  276. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.d.ts.map +1 -0
  277. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.js +93 -0
  278. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.js.map +1 -0
  279. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.d.ts +12 -0
  280. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.d.ts.map +1 -0
  281. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.js +181 -0
  282. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.js.map +1 -0
  283. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.d.ts +19 -0
  284. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.d.ts.map +1 -0
  285. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.js +39 -0
  286. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.js.map +1 -0
  287. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.d.ts +3 -0
  288. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.d.ts.map +1 -0
  289. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.js +27 -0
  290. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.js.map +1 -0
  291. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +36 -0
  292. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
  293. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +88 -0
  294. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
  295. package/data/build/dist/dsh-capabilities/client/question-history-adapter.d.ts +20 -0
  296. package/data/build/dist/dsh-capabilities/client/question-history-adapter.d.ts.map +1 -0
  297. package/data/build/dist/dsh-capabilities/client/question-history-adapter.js +65 -0
  298. package/data/build/dist/dsh-capabilities/client/question-history-adapter.js.map +1 -0
  299. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts +18 -0
  300. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts.map +1 -0
  301. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js +11 -0
  302. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js.map +1 -0
  303. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +9 -0
  304. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -0
  305. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +75 -0
  306. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -0
  307. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts +3 -0
  308. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts.map +1 -0
  309. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js +22 -0
  310. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js.map +1 -0
  311. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.d.ts +32 -0
  312. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.d.ts.map +1 -0
  313. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.js +90 -0
  314. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.js.map +1 -0
  315. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts +52 -0
  316. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts.map +1 -0
  317. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js +109 -0
  318. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js.map +1 -0
  319. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.d.ts +10 -0
  320. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.d.ts.map +1 -0
  321. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.js +34 -0
  322. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.js.map +1 -0
  323. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.d.ts +21 -0
  324. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.d.ts.map +1 -0
  325. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.js +11 -0
  326. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.js.map +1 -0
  327. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts +11 -0
  328. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts.map +1 -0
  329. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js +97 -0
  330. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js.map +1 -0
  331. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts +36 -0
  332. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts.map +1 -0
  333. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js +164 -0
  334. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js.map +1 -0
  335. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts +44 -0
  336. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts.map +1 -0
  337. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js +240 -0
  338. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js.map +1 -0
  339. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts +37 -0
  340. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts.map +1 -0
  341. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js +35 -0
  342. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js.map +1 -0
  343. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts +13 -0
  344. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts.map +1 -0
  345. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js +30 -0
  346. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js.map +1 -0
  347. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts +21 -0
  348. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts.map +1 -0
  349. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js +132 -0
  350. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js.map +1 -0
  351. package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts +10 -0
  352. package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts.map +1 -0
  353. package/data/build/dist/dsh-capabilities/host/quick-app-transport.js +33 -0
  354. package/data/build/dist/dsh-capabilities/host/quick-app-transport.js.map +1 -0
  355. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.d.ts +17 -0
  356. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.d.ts.map +1 -0
  357. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.js +37 -0
  358. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.js.map +1 -0
  359. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts +17 -0
  360. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts.map +1 -0
  361. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js +45 -0
  362. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js.map +1 -0
  363. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts +7 -0
  364. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts.map +1 -0
  365. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js +18 -0
  366. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js.map +1 -0
  367. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.d.ts +28 -0
  368. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.d.ts.map +1 -0
  369. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.js +31 -0
  370. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.js.map +1 -0
  371. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts +13 -0
  372. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts.map +1 -0
  373. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js +24 -0
  374. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js.map +1 -0
  375. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  376. package/data/build/dist/dsh-capabilities/matrix.js +22 -5
  377. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  378. package/data/build/dist/dsh-capabilities/routes.d.ts +1 -0
  379. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  380. package/data/build/dist/dsh-capabilities/routes.js +47 -3
  381. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  382. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  383. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  384. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  385. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
  386. package/data/build/dist/host/cli-adapters/acp-cli-driver.js +6 -3
  387. package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
  388. package/data/build/dist/host/cli-adapters/antigravity-driver.js +1 -1
  389. package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -1
  390. package/data/build/dist/host/cli-adapters/attachment-utils.d.ts +4 -3
  391. package/data/build/dist/host/cli-adapters/attachment-utils.d.ts.map +1 -1
  392. package/data/build/dist/host/cli-adapters/attachment-utils.js +9 -8
  393. package/data/build/dist/host/cli-adapters/attachment-utils.js.map +1 -1
  394. package/data/build/dist/host/cli-adapters/binary-detection.d.ts.map +1 -1
  395. package/data/build/dist/host/cli-adapters/binary-detection.js +7 -3
  396. package/data/build/dist/host/cli-adapters/binary-detection.js.map +1 -1
  397. package/data/build/dist/host/cli-adapters/claude-driver.d.ts +1 -0
  398. package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
  399. package/data/build/dist/host/cli-adapters/claude-driver.js +184 -21
  400. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  401. package/data/build/dist/host/cli-adapters/codex-driver.d.ts +18 -0
  402. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  403. package/data/build/dist/host/cli-adapters/codex-driver.js +126 -21
  404. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  405. package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts +91 -0
  406. package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts.map +1 -0
  407. package/data/build/dist/host/cli-adapters/codex-performance-projection.js +8 -0
  408. package/data/build/dist/host/cli-adapters/codex-performance-projection.js.map +1 -0
  409. package/data/build/dist/host/cli-adapters/codex-performance.d.ts +16 -0
  410. package/data/build/dist/host/cli-adapters/codex-performance.d.ts.map +1 -0
  411. package/data/build/dist/host/cli-adapters/codex-performance.js +81 -0
  412. package/data/build/dist/host/cli-adapters/codex-performance.js.map +1 -0
  413. package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts +4 -1
  414. package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts.map +1 -1
  415. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js +137 -25
  416. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js.map +1 -1
  417. package/data/build/dist/host/cli-adapters/command-code-driver.js +7 -4
  418. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  419. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts +3 -1
  420. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts.map +1 -1
  421. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js +41 -4
  422. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js.map +1 -1
  423. package/data/build/dist/host/cli-adapters/driver.d.ts +2 -0
  424. package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
  425. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts +5 -1
  426. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  427. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +51 -16
  428. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  429. package/data/build/dist/host/cli-adapters/dsh-tool-history.js +3 -2
  430. package/data/build/dist/host/cli-adapters/dsh-tool-history.js.map +1 -1
  431. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.d.ts.map +1 -1
  432. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js +3 -2
  433. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js.map +1 -1
  434. package/data/build/dist/host/cli-adapters/feature.d.ts +4 -0
  435. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  436. package/data/build/dist/host/cli-adapters/feature.js +587 -101
  437. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  438. package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
  439. package/data/build/dist/host/cli-adapters/gemini-driver.js +5 -3
  440. package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
  441. package/data/build/dist/host/cli-adapters/grok-driver.d.ts +7 -0
  442. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  443. package/data/build/dist/host/cli-adapters/grok-driver.js +458 -59
  444. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  445. package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts +123 -0
  446. package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -0
  447. package/data/build/dist/host/cli-adapters/grok-performance-projection.js +48 -0
  448. package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -0
  449. package/data/build/dist/host/cli-adapters/grok-usage.d.ts +45 -0
  450. package/data/build/dist/host/cli-adapters/grok-usage.d.ts.map +1 -0
  451. package/data/build/dist/host/cli-adapters/grok-usage.js +197 -0
  452. package/data/build/dist/host/cli-adapters/grok-usage.js.map +1 -0
  453. package/data/build/dist/host/cli-adapters/kimi-driver.js +2 -2
  454. package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
  455. package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -1
  456. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +20 -3
  457. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -1
  458. package/data/build/dist/host/cli-adapters/magpie-session-routing.d.ts +9 -0
  459. package/data/build/dist/host/cli-adapters/magpie-session-routing.d.ts.map +1 -0
  460. package/data/build/dist/host/cli-adapters/magpie-session-routing.js +90 -0
  461. package/data/build/dist/host/cli-adapters/magpie-session-routing.js.map +1 -0
  462. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts +90 -0
  463. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts.map +1 -0
  464. package/data/build/dist/host/cli-adapters/magpie-usage.js +986 -0
  465. package/data/build/dist/host/cli-adapters/magpie-usage.js.map +1 -0
  466. package/data/build/dist/host/cli-adapters/management-installation.d.ts +5 -0
  467. package/data/build/dist/host/cli-adapters/management-installation.d.ts.map +1 -0
  468. package/data/build/dist/host/cli-adapters/management-installation.js +131 -0
  469. package/data/build/dist/host/cli-adapters/management-installation.js.map +1 -0
  470. package/data/build/dist/host/cli-adapters/management-methods.d.ts +37 -0
  471. package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -0
  472. package/data/build/dist/host/cli-adapters/management-methods.js +144 -0
  473. package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -0
  474. package/data/build/dist/host/cli-adapters/management-process.d.ts +7 -0
  475. package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -0
  476. package/data/build/dist/host/cli-adapters/management-process.js +62 -0
  477. package/data/build/dist/host/cli-adapters/management-process.js.map +1 -0
  478. package/data/build/dist/host/cli-adapters/management.d.ts +32 -0
  479. package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -0
  480. package/data/build/dist/host/cli-adapters/management.js +177 -0
  481. package/data/build/dist/host/cli-adapters/management.js.map +1 -0
  482. package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
  483. package/data/build/dist/host/cli-adapters/mcode-driver.js +12 -5
  484. package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
  485. package/data/build/dist/host/cli-adapters/model-catalog.d.ts +1 -0
  486. package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
  487. package/data/build/dist/host/cli-adapters/model-catalog.js +70 -7
  488. package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
  489. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts +1 -1
  490. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts.map +1 -1
  491. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js +13 -5
  492. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js.map +1 -1
  493. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts +7 -1
  494. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -1
  495. package/data/build/dist/host/cli-adapters/native-team-subagent.js +6 -3
  496. package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
  497. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +22 -0
  498. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
  499. package/data/build/dist/host/cli-adapters/opencode-driver.js +105 -17
  500. package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
  501. package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js +4 -1
  502. package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js.map +1 -1
  503. package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -1
  504. package/data/build/dist/host/cli-adapters/pi-driver.js +45 -11
  505. package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
  506. package/data/build/dist/host/cli-adapters/process-utils.d.ts +2 -0
  507. package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
  508. package/data/build/dist/host/cli-adapters/process-utils.js +16 -11
  509. package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
  510. package/data/build/dist/host/cli-adapters/registry.d.ts +7 -1
  511. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  512. package/data/build/dist/host/cli-adapters/registry.js +141 -51
  513. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  514. package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts +74 -0
  515. package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts.map +1 -0
  516. package/data/build/dist/host/cli-adapters/session-performance-projection.js +83 -0
  517. package/data/build/dist/host/cli-adapters/session-performance-projection.js.map +1 -0
  518. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
  519. package/data/build/dist/host/cli-adapters/standard-stream-driver.js +4 -0
  520. package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
  521. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +3 -1
  522. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -1
  523. package/data/build/dist/host/cli-adapters/stream-normalizer.js +2 -0
  524. package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -1
  525. package/data/build/dist/host/cli-adapters/subagent-tool-descriptions.d.ts +26 -0
  526. package/data/build/dist/host/cli-adapters/subagent-tool-descriptions.d.ts.map +1 -0
  527. package/data/build/dist/host/cli-adapters/subagent-tool-descriptions.js +30 -0
  528. package/data/build/dist/host/cli-adapters/subagent-tool-descriptions.js.map +1 -0
  529. package/data/build/dist/host/cli-adapters/subagent-tool.d.ts.map +1 -1
  530. package/data/build/dist/host/cli-adapters/subagent-tool.js +7 -6
  531. package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -1
  532. package/data/build/dist/host/cli-adapters/team-input.d.ts +17 -0
  533. package/data/build/dist/host/cli-adapters/team-input.d.ts.map +1 -0
  534. package/data/build/dist/host/cli-adapters/team-input.js +67 -0
  535. package/data/build/dist/host/cli-adapters/team-input.js.map +1 -0
  536. package/data/build/dist/host/cli-adapters/update-check.d.ts +34 -0
  537. package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -0
  538. package/data/build/dist/host/cli-adapters/update-check.js +263 -0
  539. package/data/build/dist/host/cli-adapters/update-check.js.map +1 -0
  540. package/data/build/dist/host/cli-adapters/zcode-driver.d.ts.map +1 -1
  541. package/data/build/dist/host/cli-adapters/zcode-driver.js +7 -2
  542. package/data/build/dist/host/cli-adapters/zcode-driver.js.map +1 -1
  543. package/data/build/dist/host/cli-adapters/zcode-update.d.ts +8 -0
  544. package/data/build/dist/host/cli-adapters/zcode-update.d.ts.map +1 -0
  545. package/data/build/dist/host/cli-adapters/zcode-update.js +149 -0
  546. package/data/build/dist/host/cli-adapters/zcode-update.js.map +1 -0
  547. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts +14 -0
  548. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts.map +1 -1
  549. package/data/build/dist/host/cli-bridge/bridge-holder.js +53 -6
  550. package/data/build/dist/host/cli-bridge/bridge-holder.js.map +1 -1
  551. package/data/build/dist/host/cli-bridge/bridge-server.d.ts +8 -0
  552. package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -1
  553. package/data/build/dist/host/cli-bridge/bridge-server.js +63 -6
  554. package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -1
  555. package/data/build/dist/host/cli-bridge/command-code-mod.d.ts.map +1 -1
  556. package/data/build/dist/host/cli-bridge/command-code-mod.js +128 -0
  557. package/data/build/dist/host/cli-bridge/command-code-mod.js.map +1 -1
  558. package/data/build/dist/host/cli-bridge/dispatch.js +1 -1
  559. package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -1
  560. package/data/build/dist/host/cli-bridge/fetch-dispatch.d.ts +23 -0
  561. package/data/build/dist/host/cli-bridge/fetch-dispatch.d.ts.map +1 -0
  562. package/data/build/dist/host/cli-bridge/fetch-dispatch.js +73 -0
  563. package/data/build/dist/host/cli-bridge/fetch-dispatch.js.map +1 -0
  564. package/data/build/dist/host/cli-bridge/injections.d.ts +14 -0
  565. package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
  566. package/data/build/dist/host/cli-bridge/injections.js +69 -7
  567. package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
  568. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.d.ts +1 -1
  569. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +102 -7
  570. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js.map +1 -1
  571. package/data/build/dist/host/cli-bridge/pi-extension-entry.d.ts +3 -0
  572. package/data/build/dist/host/cli-bridge/pi-extension-entry.d.ts.map +1 -0
  573. package/data/build/dist/host/cli-bridge/pi-extension-entry.js +9 -0
  574. package/data/build/dist/host/cli-bridge/pi-extension-entry.js.map +1 -0
  575. package/data/build/dist/host/cli-bridge/pi-extension.d.ts +52 -0
  576. package/data/build/dist/host/cli-bridge/pi-extension.d.ts.map +1 -0
  577. package/data/build/dist/host/cli-bridge/pi-extension.js +311 -0
  578. package/data/build/dist/host/cli-bridge/pi-extension.js.map +1 -0
  579. package/data/build/dist/host/cli-bridge/search-dispatch.d.ts +20 -0
  580. package/data/build/dist/host/cli-bridge/search-dispatch.d.ts.map +1 -0
  581. package/data/build/dist/host/cli-bridge/search-dispatch.js +61 -0
  582. package/data/build/dist/host/cli-bridge/search-dispatch.js.map +1 -0
  583. package/data/build/dist/host/cli-bridge/team-adapters.d.ts +11 -0
  584. package/data/build/dist/host/cli-bridge/team-adapters.d.ts.map +1 -0
  585. package/data/build/dist/host/cli-bridge/team-adapters.js +23 -0
  586. package/data/build/dist/host/cli-bridge/team-adapters.js.map +1 -0
  587. package/data/build/dist/host/cli-bridge/team-dispatch.d.ts +28 -0
  588. package/data/build/dist/host/cli-bridge/team-dispatch.d.ts.map +1 -0
  589. package/data/build/dist/host/cli-bridge/team-dispatch.js +208 -0
  590. package/data/build/dist/host/cli-bridge/team-dispatch.js.map +1 -0
  591. package/data/build/dist/host/cli-bridge/team-tool.d.ts +3 -0
  592. package/data/build/dist/host/cli-bridge/team-tool.d.ts.map +1 -0
  593. package/data/build/dist/host/cli-bridge/team-tool.js +18 -0
  594. package/data/build/dist/host/cli-bridge/team-tool.js.map +1 -0
  595. package/data/build/dist/host/features/file-management.d.ts.map +1 -1
  596. package/data/build/dist/host/features/file-management.js +10 -1
  597. package/data/build/dist/host/features/file-management.js.map +1 -1
  598. package/data/build/dist/host/features/git-commit-message.d.ts +5 -0
  599. package/data/build/dist/host/features/git-commit-message.d.ts.map +1 -0
  600. package/data/build/dist/host/features/git-commit-message.js +66 -0
  601. package/data/build/dist/host/features/git-commit-message.js.map +1 -0
  602. package/data/build/dist/host/features/git-management.d.ts +11 -2
  603. package/data/build/dist/host/features/git-management.d.ts.map +1 -1
  604. package/data/build/dist/host/features/git-management.js +61 -7
  605. package/data/build/dist/host/features/git-management.js.map +1 -1
  606. package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -1
  607. package/data/build/dist/host/features/global-voice-rpc.js +2 -3
  608. package/data/build/dist/host/features/global-voice-rpc.js.map +1 -1
  609. package/data/build/dist/host/features/index.d.ts.map +1 -1
  610. package/data/build/dist/host/features/index.js +2 -0
  611. package/data/build/dist/host/features/index.js.map +1 -1
  612. package/data/build/dist/host/features/interaction-translation.d.ts +10 -0
  613. package/data/build/dist/host/features/interaction-translation.d.ts.map +1 -0
  614. package/data/build/dist/host/features/interaction-translation.js +219 -0
  615. package/data/build/dist/host/features/interaction-translation.js.map +1 -0
  616. package/data/build/dist/host/features/lan-access-dsh.d.ts.map +1 -1
  617. package/data/build/dist/host/features/lan-access-dsh.js +3 -3
  618. package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
  619. package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
  620. package/data/build/dist/host/features/peer-host.js +13 -6
  621. package/data/build/dist/host/features/peer-host.js.map +1 -1
  622. package/data/build/dist/host/features/quick-apps.d.ts +4 -0
  623. package/data/build/dist/host/features/quick-apps.d.ts.map +1 -0
  624. package/data/build/dist/host/features/quick-apps.js +158 -0
  625. package/data/build/dist/host/features/quick-apps.js.map +1 -0
  626. package/data/build/dist/host/features/session-prompt-translation.d.ts +10 -0
  627. package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -0
  628. package/data/build/dist/host/features/session-prompt-translation.js +227 -0
  629. package/data/build/dist/host/features/session-prompt-translation.js.map +1 -0
  630. package/data/build/dist/host/features/session-translation-protection.d.ts +22 -0
  631. package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -0
  632. package/data/build/dist/host/features/session-translation-protection.js +204 -0
  633. package/data/build/dist/host/features/session-translation-protection.js.map +1 -0
  634. package/data/build/dist/host/features/session-translation-recovery.d.ts +21 -0
  635. package/data/build/dist/host/features/session-translation-recovery.d.ts.map +1 -0
  636. package/data/build/dist/host/features/session-translation-recovery.js +125 -0
  637. package/data/build/dist/host/features/session-translation-recovery.js.map +1 -0
  638. package/data/build/dist/host/features/session-translation-runtime.d.ts +16 -0
  639. package/data/build/dist/host/features/session-translation-runtime.d.ts.map +1 -0
  640. package/data/build/dist/host/features/session-translation-runtime.js +85 -0
  641. package/data/build/dist/host/features/session-translation-runtime.js.map +1 -0
  642. package/data/build/dist/host/features/session-translation-service.d.ts +19 -4
  643. package/data/build/dist/host/features/session-translation-service.d.ts.map +1 -1
  644. package/data/build/dist/host/features/session-translation-service.js +249 -210
  645. package/data/build/dist/host/features/session-translation-service.js.map +1 -1
  646. package/data/build/dist/host/features/session-translation.d.ts.map +1 -1
  647. package/data/build/dist/host/features/session-translation.js +6 -3
  648. package/data/build/dist/host/features/session-translation.js.map +1 -1
  649. package/data/build/dist/host/features/types.d.ts +10 -0
  650. package/data/build/dist/host/features/types.d.ts.map +1 -1
  651. package/data/build/dist/host/html-workspace-files.d.ts +3 -0
  652. package/data/build/dist/host/html-workspace-files.d.ts.map +1 -0
  653. package/data/build/dist/host/html-workspace-files.js +135 -0
  654. package/data/build/dist/host/html-workspace-files.js.map +1 -0
  655. package/data/build/dist/host/index.d.ts.map +1 -1
  656. package/data/build/dist/host/index.js +32 -39
  657. package/data/build/dist/host/index.js.map +1 -1
  658. package/data/build/dist/host/lan-access-dsh.d.ts +14 -2
  659. package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
  660. package/data/build/dist/host/lan-access-dsh.js +81 -13
  661. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  662. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts +2 -2
  663. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts.map +1 -1
  664. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js +10 -9
  665. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js.map +1 -1
  666. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts +3 -3
  667. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts.map +1 -1
  668. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js +26 -14
  669. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js.map +1 -1
  670. package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts +5 -0
  671. package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts.map +1 -0
  672. package/data/build/dist/host/modules/peer-host/quick-app-gateway.js +27 -0
  673. package/data/build/dist/host/modules/peer-host/quick-app-gateway.js.map +1 -0
  674. package/data/build/dist/host/modules/quick-apps/browse.d.ts +5 -0
  675. package/data/build/dist/host/modules/quick-apps/browse.d.ts.map +1 -0
  676. package/data/build/dist/host/modules/quick-apps/browse.js +37 -0
  677. package/data/build/dist/host/modules/quick-apps/browse.js.map +1 -0
  678. package/data/build/dist/host/modules/quick-apps/code-revision.d.ts +4 -0
  679. package/data/build/dist/host/modules/quick-apps/code-revision.d.ts.map +1 -0
  680. package/data/build/dist/host/modules/quick-apps/code-revision.js +39 -0
  681. package/data/build/dist/host/modules/quick-apps/code-revision.js.map +1 -0
  682. package/data/build/dist/host/modules/quick-apps/documents.d.ts +14 -0
  683. package/data/build/dist/host/modules/quick-apps/documents.d.ts.map +1 -0
  684. package/data/build/dist/host/modules/quick-apps/documents.js +87 -0
  685. package/data/build/dist/host/modules/quick-apps/documents.js.map +1 -0
  686. package/data/build/dist/host/modules/quick-apps/egress.d.ts +35 -0
  687. package/data/build/dist/host/modules/quick-apps/egress.d.ts.map +1 -0
  688. package/data/build/dist/host/modules/quick-apps/egress.js +244 -0
  689. package/data/build/dist/host/modules/quick-apps/egress.js.map +1 -0
  690. package/data/build/dist/host/modules/quick-apps/errors.d.ts +8 -0
  691. package/data/build/dist/host/modules/quick-apps/errors.d.ts.map +1 -0
  692. package/data/build/dist/host/modules/quick-apps/errors.js +15 -0
  693. package/data/build/dist/host/modules/quick-apps/errors.js.map +1 -0
  694. package/data/build/dist/host/modules/quick-apps/file-api.d.ts +30 -0
  695. package/data/build/dist/host/modules/quick-apps/file-api.d.ts.map +1 -0
  696. package/data/build/dist/host/modules/quick-apps/file-api.js +149 -0
  697. package/data/build/dist/host/modules/quick-apps/file-api.js.map +1 -0
  698. package/data/build/dist/host/modules/quick-apps/launches.d.ts +35 -0
  699. package/data/build/dist/host/modules/quick-apps/launches.d.ts.map +1 -0
  700. package/data/build/dist/host/modules/quick-apps/launches.js +80 -0
  701. package/data/build/dist/host/modules/quick-apps/launches.js.map +1 -0
  702. package/data/build/dist/host/modules/quick-apps/paths.d.ts +14 -0
  703. package/data/build/dist/host/modules/quick-apps/paths.d.ts.map +1 -0
  704. package/data/build/dist/host/modules/quick-apps/paths.js +72 -0
  705. package/data/build/dist/host/modules/quick-apps/paths.js.map +1 -0
  706. package/data/build/dist/host/modules/quick-apps/registry.d.ts +30 -0
  707. package/data/build/dist/host/modules/quick-apps/registry.d.ts.map +1 -0
  708. package/data/build/dist/host/modules/quick-apps/registry.js +195 -0
  709. package/data/build/dist/host/modules/quick-apps/registry.js.map +1 -0
  710. package/data/build/dist/host/modules/quick-apps/remote.d.ts +38 -0
  711. package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -0
  712. package/data/build/dist/host/modules/quick-apps/remote.js +238 -0
  713. package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -0
  714. package/data/build/dist/host/modules/quick-apps/service.d.ts +27 -0
  715. package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -0
  716. package/data/build/dist/host/modules/quick-apps/service.js +174 -0
  717. package/data/build/dist/host/modules/quick-apps/service.js.map +1 -0
  718. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +8 -0
  719. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -0
  720. package/data/build/dist/host/modules/quick-apps/static-handler.js +213 -0
  721. package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -0
  722. package/data/build/dist/host/native-session-bridge.d.ts +7 -1
  723. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  724. package/data/build/dist/host/native-session-bridge.js +10 -15
  725. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  726. package/data/build/dist/host/rpc.d.ts.map +1 -1
  727. package/data/build/dist/host/rpc.js +23 -12
  728. package/data/build/dist/host/rpc.js.map +1 -1
  729. package/data/build/dist/host/session-changes.d.ts.map +1 -1
  730. package/data/build/dist/host/session-changes.js +6 -2
  731. package/data/build/dist/host/session-changes.js.map +1 -1
  732. package/data/build/dist/host/session-migration-repair.js +48 -35
  733. package/data/build/dist/host/session-migration-repair.js.map +1 -1
  734. package/data/build/dist/host/settings.d.ts.map +1 -1
  735. package/data/build/dist/host/settings.js +31 -2
  736. package/data/build/dist/host/settings.js.map +1 -1
  737. package/data/build/dist/host/workspace-file-mutations.d.ts +2 -0
  738. package/data/build/dist/host/workspace-file-mutations.d.ts.map +1 -0
  739. package/data/build/dist/host/workspace-file-mutations.js +15 -0
  740. package/data/build/dist/host/workspace-file-mutations.js.map +1 -0
  741. package/data/build/dist/host/workspace-root.d.ts +14 -0
  742. package/data/build/dist/host/workspace-root.d.ts.map +1 -0
  743. package/data/build/dist/host/workspace-root.js +99 -0
  744. package/data/build/dist/host/workspace-root.js.map +1 -0
  745. package/data/build/dist/shared/attachment-prompts.d.ts +11 -0
  746. package/data/build/dist/shared/attachment-prompts.d.ts.map +1 -0
  747. package/data/build/dist/shared/attachment-prompts.js +17 -0
  748. package/data/build/dist/shared/attachment-prompts.js.map +1 -0
  749. package/data/build/dist/shared/cli-provider-route.d.ts +7 -0
  750. package/data/build/dist/shared/cli-provider-route.d.ts.map +1 -0
  751. package/data/build/dist/shared/cli-provider-route.js +13 -0
  752. package/data/build/dist/shared/cli-provider-route.js.map +1 -0
  753. package/data/build/dist/shared/codex-performance.d.ts +3 -0
  754. package/data/build/dist/shared/codex-performance.d.ts.map +1 -0
  755. package/data/build/dist/shared/codex-performance.js +2 -0
  756. package/data/build/dist/shared/codex-performance.js.map +1 -0
  757. package/data/build/dist/shared/contracts/agent-team.d.ts +14 -0
  758. package/data/build/dist/shared/contracts/agent-team.d.ts.map +1 -0
  759. package/data/build/dist/shared/contracts/agent-team.js +48 -0
  760. package/data/build/dist/shared/contracts/agent-team.js.map +1 -0
  761. package/data/build/dist/shared/contracts/cli-adapter.d.ts +62 -1
  762. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  763. package/data/build/dist/shared/contracts/cli-management.d.ts +29 -0
  764. package/data/build/dist/shared/contracts/cli-management.d.ts.map +1 -0
  765. package/data/build/dist/shared/contracts/cli-management.js +2 -0
  766. package/data/build/dist/shared/contracts/cli-management.js.map +1 -0
  767. package/data/build/dist/shared/contracts/config.d.ts +7 -1
  768. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  769. package/data/build/dist/shared/contracts/config.js +3 -0
  770. package/data/build/dist/shared/contracts/config.js.map +1 -1
  771. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  772. package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
  773. package/data/build/dist/shared/contracts/git.d.ts +17 -0
  774. package/data/build/dist/shared/contracts/git.d.ts.map +1 -1
  775. package/data/build/dist/shared/contracts/git.js +27 -1
  776. package/data/build/dist/shared/contracts/git.js.map +1 -1
  777. package/data/build/dist/shared/contracts/interaction-presentation.d.ts +32 -0
  778. package/data/build/dist/shared/contracts/interaction-presentation.d.ts.map +1 -0
  779. package/data/build/dist/shared/contracts/interaction-presentation.js +2 -0
  780. package/data/build/dist/shared/contracts/interaction-presentation.js.map +1 -0
  781. package/data/build/dist/shared/contracts/interaction-translation.d.ts +53 -0
  782. package/data/build/dist/shared/contracts/interaction-translation.d.ts.map +1 -0
  783. package/data/build/dist/shared/contracts/interaction-translation.js +44 -0
  784. package/data/build/dist/shared/contracts/interaction-translation.js.map +1 -0
  785. package/data/build/dist/shared/contracts/quick-apps.d.ts +70 -0
  786. package/data/build/dist/shared/contracts/quick-apps.d.ts.map +1 -0
  787. package/data/build/dist/shared/contracts/quick-apps.js +4 -0
  788. package/data/build/dist/shared/contracts/quick-apps.js.map +1 -0
  789. package/data/build/dist/shared/contracts/session-translation.d.ts +82 -9
  790. package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
  791. package/data/build/dist/shared/contracts/session-translation.js +146 -2
  792. package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
  793. package/data/build/dist/shared/contracts/subscription.d.ts +87 -0
  794. package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
  795. package/data/build/dist/shared/contracts/subscription.js.map +1 -1
  796. package/data/build/dist/shared/contracts/version.d.ts +9 -15
  797. package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
  798. package/data/build/dist/shared/contracts/version.js +8 -14
  799. package/data/build/dist/shared/contracts/version.js.map +1 -1
  800. package/data/build/dist/shared/index.d.ts +3 -2
  801. package/data/build/dist/shared/index.d.ts.map +1 -1
  802. package/data/build/dist/shared/index.js +3 -2
  803. package/data/build/dist/shared/index.js.map +1 -1
  804. package/data/build/dist/shared/peer-host-http-routes.d.ts +4 -0
  805. package/data/build/dist/shared/peer-host-http-routes.d.ts.map +1 -1
  806. package/data/build/dist/shared/peer-host-http-routes.js +4 -0
  807. package/data/build/dist/shared/peer-host-http-routes.js.map +1 -1
  808. package/data/build/dist/shared/provider-icon-resources.d.ts.map +1 -1
  809. package/data/build/dist/shared/provider-icon-resources.js +1 -0
  810. package/data/build/dist/shared/provider-icon-resources.js.map +1 -1
  811. package/data/build/dist/shared/quick-app-browser-storage.d.ts +33 -0
  812. package/data/build/dist/shared/quick-app-browser-storage.d.ts.map +1 -0
  813. package/data/build/dist/shared/quick-app-browser-storage.js +33 -0
  814. package/data/build/dist/shared/quick-app-browser-storage.js.map +1 -0
  815. package/data/build/dist/shared/quick-app-network-allow.d.ts +8 -0
  816. package/data/build/dist/shared/quick-app-network-allow.d.ts.map +1 -0
  817. package/data/build/dist/shared/quick-app-network-allow.js +192 -0
  818. package/data/build/dist/shared/quick-app-network-allow.js.map +1 -0
  819. package/data/build/dist/shared/quick-app-network-bootstrap.d.ts +9 -0
  820. package/data/build/dist/shared/quick-app-network-bootstrap.d.ts.map +1 -0
  821. package/data/build/dist/shared/quick-app-network-bootstrap.js +134 -0
  822. package/data/build/dist/shared/quick-app-network-bootstrap.js.map +1 -0
  823. package/data/build/dist/shared/quick-app-proxy-path.d.ts +6 -0
  824. package/data/build/dist/shared/quick-app-proxy-path.d.ts.map +1 -0
  825. package/data/build/dist/shared/quick-app-proxy-path.js +18 -0
  826. package/data/build/dist/shared/quick-app-proxy-path.js.map +1 -0
  827. package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts +9 -0
  828. package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts.map +1 -0
  829. package/data/build/dist/shared/quick-app-storage-bootstrap.js +189 -0
  830. package/data/build/dist/shared/quick-app-storage-bootstrap.js.map +1 -0
  831. package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts +7 -0
  832. package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts.map +1 -0
  833. package/data/build/dist/shared/quick-apps-bootstrap-locale.js +10 -0
  834. package/data/build/dist/shared/quick-apps-bootstrap-locale.js.map +1 -0
  835. package/data/build/dist/shared/request-performance.d.ts +15 -0
  836. package/data/build/dist/shared/request-performance.d.ts.map +1 -0
  837. package/data/build/dist/shared/request-performance.js +3 -0
  838. package/data/build/dist/shared/request-performance.js.map +1 -0
  839. package/data/build/dist/shared/translation-indicator.d.ts +26 -0
  840. package/data/build/dist/shared/translation-indicator.d.ts.map +1 -0
  841. package/data/build/dist/shared/translation-indicator.js +29 -0
  842. package/data/build/dist/shared/translation-indicator.js.map +1 -0
  843. package/package.json +35 -34
  844. package/profile/README.md +2 -2
  845. package/profile/package.json +3 -3
  846. package/profile/version.json +3 -3
  847. package/version.json +3 -3
  848. package/data/build/dist/client/client.model-catalog-cache.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import type { ReactElement } from 'react';
2
2
  import type { SlotRegistry } from '@deepseek-ai/dsh-client-ui-renderer/client';
3
- import type { CliSubscriptionUsage, ProviderBalanceUsage } from '../shared/contracts/subscription.js';
3
+ import type { CliSubscriptionSnapshot, ProviderBalanceUsage } from '../shared/contracts/subscription.js';
4
4
  import type { CodingNsRpcClient } from './features/types.js';
5
5
  import { type CodingNsLocale, type CodingNsTranslator } from './locale.js';
6
6
  import type { SessionSnapshot } from './cli-slots.js';
@@ -24,11 +24,15 @@ interface SubscriptionSlotProps {
24
24
  * 避免每次进入会话或切回同一 Agent 都请求上游;null 结果不缓存,便于刚登录后立刻重试。
25
25
  */
26
26
  type UsageCache = Map<string, {
27
- readonly usage: CliSubscriptionUsage;
27
+ readonly usage: CliSubscriptionSnapshot;
28
28
  readonly capturedAt: number;
29
29
  }>;
30
30
  /** 重置影响同一账号的所有模型额度,不能只删除不含模型的旧缓存键。 */
31
31
  export declare function invalidateSubscriptionUsageCache(cache: Pick<UsageCache, 'keys' | 'delete'>, adapterId: string, providerId: string | null): void;
32
+ export declare function calculateMagpiePopoverPlacement(rootLeft: number, viewportWidth: number, sidebarLeft: number | null): {
33
+ readonly left: number;
34
+ readonly width: number;
35
+ };
32
36
  /** 在 DSH 原生步骤统计左侧显示当前 Agent 的订阅余量。 */
33
37
  export declare function registerSubscriptionSlot(slots: SlotRegistry, rpc: CodingNsRpcClient, getRefreshIntervalMins?: () => number, locale?: CodingNsLocale): () => void;
34
38
  declare function CommandCodeSubscriptionSlot(props: SubscriptionSlotProps): ReactElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-slot.d.ts","sourceRoot":"","sources":["../../../../src/client/subscription-slot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAG9E,OAAO,KAAK,EAA6G,oBAAoB,EAAwC,oBAAoB,EAAsD,MAAM,qCAAqC,CAAA;AAE1S,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAoD,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAM5H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,oBAAoB;QAC5B,SAAS,EAAE,MAAM,CAAA;KAClB;CACF;AAED,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,KAAK,QAAQ,CAAA;AAE7F,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;IACrC,oCAAoC;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CACjC;AAeD;;;GAGG;AACH,KAAK,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AASpG,sCAAsC;AACtC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG/I;AA0BD,sCAAsC;AACtC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CAehK;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA6PtF;AAkVD,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CA+CvN;AA8XD,OAAO,EAAE,2BAA2B,EAAE,CAAA;AACtC,eAAO,MAAM,mCAAmC,iCAA2B,CAAA"}
1
+ {"version":3,"file":"subscription-slot.d.ts","sourceRoot":"","sources":["../../../../src/client/subscription-slot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAG9E,OAAO,KAAK,EAA6G,uBAAuB,EAAgG,oBAAoB,EAAsD,MAAM,qCAAqC,CAAA;AAErW,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAoD,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAM5H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,oBAAoB;QAC5B,SAAS,EAAE,MAAM,CAAA;KAClB;CACF;AAED,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,KAAK,QAAQ,CAAA;AAE7F,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;IACrC,oCAAoC;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CACjC;AAeD;;;GAGG;AACH,KAAK,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AASvG,sCAAsC;AACtC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG/I;AAkBD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMtK;AAYD,sCAAsC;AACtC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CAehK;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAoXtF;AAimBD,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CA+CvN;AAicD,OAAO,EAAE,2BAA2B,EAAE,CAAA;AACtC,eAAO,MAAM,mCAAmC,iCAA2B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { startSerialPolling } from './serial-polling.js';
2
- import { createElement, useEffect, useRef, useState } from 'react';
2
+ import { createElement, useEffect, useLayoutEffect, useRef, useState } from 'react';
3
3
  import { isSubscriptionUsageFresh } from '../shared/contracts/subscription.js';
4
4
  import { DEFAULT_SUBSCRIPTION_USAGE_SETTINGS } from '../shared/contracts/config.js';
5
5
  import { callCliRpc } from './cli-catalog.js';
@@ -48,6 +48,7 @@ function loadUsage(rpc, key, payload) {
48
48
  if (existing !== undefined)
49
49
  return existing;
50
50
  const request = callCliRpc(rpc, 'subscription', payload, AbortSignal.timeout(30_000))
51
+ .then(normalizeSubscriptionSnapshot)
51
52
  .finally(() => { if (loads.get(key) === request)
52
53
  loads.delete(key); });
53
54
  loads.set(key, request);
@@ -55,6 +56,14 @@ function loadUsage(rpc, key, payload) {
55
56
  }
56
57
  /** 图标重置按钮的悬停/按下/聚焦/禁用只能由注入样式表表达,内联样式无法命中伪类。 */
57
58
  const RESET_BUTTON_CSS = '.codingns4dsh-subscription-reset{display:inline-flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;padding:0;border:1px solid var(--dsw-alias-border-l2,#d9d9d9);border-radius:50%;background:transparent;color:var(--dsw-alias-label-secondary,GrayText);cursor:pointer;transition:background .15s ease,color .15s ease}.codingns4dsh-subscription-reset:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,rgba(127,127,127,.08));color:var(--dsw-alias-label-primary,CanvasText)}.codingns4dsh-subscription-reset:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active,rgba(127,127,127,.14))}.codingns4dsh-subscription-reset:focus-visible{outline:none;box-shadow:0 0 0 var(--dsw-focus-ring-width,2px) var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary,#1677ff))}.codingns4dsh-subscription-reset:disabled{opacity:.4;cursor:not-allowed}@media (prefers-reduced-motion: reduce){.codingns4dsh-subscription-reset{transition:none}}';
59
+ const MAGPIE_ROUTE_CSS = '@keyframes codingns4dsh-magpie-route-pulse{0%{transform:translateY(-120%);opacity:0}20%{opacity:1}80%{opacity:1}100%{transform:translateY(320%);opacity:0}}@keyframes codingns4dsh-magpie-route-breathe{0%,100%{box-shadow:0 0 0 0 rgba(22,119,255,0)}50%{box-shadow:0 0 0 4px rgba(22,119,255,.16)}}@keyframes codingns4dsh-magpie-route-step{from{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.codingns4dsh-magpie-route-pulse{animation:codingns4dsh-magpie-route-pulse 1.8s ease-in-out infinite}.codingns4dsh-magpie-route-node-active{animation:codingns4dsh-magpie-route-breathe 2s ease-in-out infinite}.codingns4dsh-magpie-route-step{animation:codingns4dsh-magpie-route-step .38s cubic-bezier(.2,.75,.25,1) both;transition:background .16s ease}.codingns4dsh-magpie-route-step:hover{background:var(--dsw-alias-interactive-bg-hover,rgba(127,127,127,.07))}.codingns4dsh-magpie-route-step:hover .codingns4dsh-magpie-route-node{box-shadow:0 0 0 1px var(--dsw-alias-state-business-primary,#1677ff),0 0 0 4px rgba(22,119,255,.1)}.codingns4dsh-magpie-route-node{transition:box-shadow .16s ease}.codingns4dsh-magpie-tab:focus-visible{outline:none;box-shadow:0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary,#1677ff)) inset}@media (prefers-reduced-motion:reduce){.codingns4dsh-magpie-route-pulse,.codingns4dsh-magpie-route-node-active,.codingns4dsh-magpie-route-step,.codingns4dsh-magpie-route-node{animation:none;transition:none}}';
60
+ export function calculateMagpiePopoverPlacement(rootLeft, viewportWidth, sidebarLeft) {
61
+ const margin = 12;
62
+ const boundary = Math.min(viewportWidth - margin, sidebarLeft === null ? viewportWidth - margin : sidebarLeft - margin);
63
+ const width = Math.max(0, Math.min(400, boundary - margin));
64
+ const left = Math.max(margin, Math.min(rootLeft, boundary - width));
65
+ return { left: left - rootLeft, width };
66
+ }
58
67
  /** 移动端订阅入口只保留图标,完整数据仍可在点击后的弹层中查看。 */
59
68
  function installSubscriptionStyles() {
60
69
  if (typeof document === 'undefined' || document.querySelector(`style[data-plugin-css="${SUBSCRIPTION_STYLE_ID}"]`) !== null)
@@ -62,7 +71,7 @@ function installSubscriptionStyles() {
62
71
  const style = document.createElement('style');
63
72
  style.dataset.plugin = 'codingns4dsh';
64
73
  style.dataset.pluginCss = SUBSCRIPTION_STYLE_ID;
65
- style.textContent = '@media (max-width: 768px){.codingns4dsh-subscription-trigger{gap:0!important;padding-left:4px!important;padding-right:4px!important}.codingns4dsh-subscription-label,.codingns4dsh-subscription-value{display:none!important}.codingns4dsh-subscription-popover{position:fixed!important;left:12px!important;right:12px!important;bottom:48px!important;width:auto!important;min-width:0!important;max-width:none!important;max-height:calc(100vh - 72px)!important;overflow:auto!important}}' + RESET_BUTTON_CSS;
74
+ style.textContent = '@media (max-width: 768px){.codingns4dsh-subscription-trigger{gap:0!important;padding-left:4px!important;padding-right:4px!important}.codingns4dsh-subscription-label,.codingns4dsh-subscription-value{display:none!important}.codingns4dsh-subscription-popover{position:fixed!important;left:12px!important;right:12px!important;bottom:48px!important;width:auto!important;min-width:0!important;max-width:none!important;max-height:calc(100vh - 72px)!important;overflow:auto!important}}' + RESET_BUTTON_CSS + MAGPIE_ROUTE_CSS;
66
75
  document.head.appendChild(style);
67
76
  }
68
77
  /** 在 DSH 原生步骤统计左侧显示当前 Agent 的订阅余量。 */
@@ -85,31 +94,85 @@ export function registerSubscriptionSlot(slots, rpc, getRefreshIntervalMins, loc
85
94
  function CommandCodeSubscriptionSlot(props) {
86
95
  const t = useCodingNsTranslator(props.locale ?? FALLBACK_LOCALE);
87
96
  const subscriptionUsageCache = usageCache(props.rpc);
88
- const [usage, setUsage] = useState(null);
97
+ const [snapshot, setSnapshot] = useState(null);
89
98
  const [adapterId, setAdapterId] = useState(null);
90
99
  const [providerId, setProviderId] = useState(null);
91
100
  const [eligible, setEligible] = useState(false);
92
101
  const [open, setOpen] = useState(false);
93
102
  const [loading, setLoading] = useState(false);
103
+ const [magpieTab, setMagpieTab] = useState('usage');
104
+ const [magpiePlacement, setMagpiePlacement] = useState({ left: 0, width: 400 });
94
105
  const [clock, setClock] = useState(() => Date.now());
95
106
  const rootRef = useRef(null);
107
+ const magpiePopoverRef = useRef(null);
96
108
  const resetDialogRef = useRef(null);
97
109
  // 重置成功后的刷新不能重跑加载 effect,否则 usage 会被清空导致底部入口闪断。
98
110
  const refreshRef = useRef(null);
111
+ const routeRefreshControllerRef = useRef(null);
99
112
  const [resetOpen, setResetOpen] = useState(false);
100
113
  const [resetPending, setResetPending] = useState(false);
101
114
  const [resetResult, setResetResult] = useState(null);
102
115
  const [resetError, setResetError] = useState(null);
103
- const modelSelectionRevision = props.useSession?.((value) => JSON.stringify(value.modelSelection));
116
+ // Agent-native session bindings are written by Host during a turn. Refresh
117
+ // at turn state changes so a snapshot loaded before the binding is not kept.
118
+ const modelSelectionRevision = props.useSession?.((value) => JSON.stringify([value.modelSelection, value.running]));
104
119
  // Agent、模型或 Provider 切换可能只改变 Host 侧会话配置,DSH 会话快照不一定会更新;
105
120
  // 订阅适配器缓存的通知才能真正触发重新查询,否则底部会一直显示旧上游的数据。
106
121
  const [adapterRevision, bumpAdapterRevision] = useState(0);
122
+ const openRef = useRef(open);
123
+ openRef.current = open;
124
+ const snapshotRef = useRef(snapshot);
125
+ snapshotRef.current = snapshot;
126
+ const hasMagpieSnapshot = snapshot?.magpie != null;
107
127
  useEffect(() => subscribeSessionAdapters(() => { bumpAdapterRevision((value) => value + 1); }), []);
128
+ useLayoutEffect(() => {
129
+ if (!open || !hasMagpieSnapshot || typeof document === 'undefined' || typeof window === 'undefined')
130
+ return;
131
+ const root = rootRef.current;
132
+ const popover = magpiePopoverRef.current;
133
+ if (root === null || popover === null)
134
+ return;
135
+ const getOpenSidebar = () => [...document.querySelectorAll('[data-sidebar-right-session][data-sidebar-right-open]')]
136
+ .find((element) => element.closest('[hidden]') === null && element.getBoundingClientRect().width > 0);
137
+ let observedSidebar;
138
+ let resizeObserver;
139
+ const updatePlacement = () => {
140
+ const sidebar = getOpenSidebar();
141
+ if (sidebar !== observedSidebar) {
142
+ if (observedSidebar !== undefined)
143
+ resizeObserver?.unobserve(observedSidebar);
144
+ observedSidebar = sidebar;
145
+ if (observedSidebar !== undefined)
146
+ resizeObserver?.observe(observedSidebar);
147
+ }
148
+ if (window.innerWidth <= 768) {
149
+ setMagpiePlacement((current) => current.left === 0 && current.width === 400 ? current : { left: 0, width: 400 });
150
+ return;
151
+ }
152
+ const sidebarLeft = sidebar?.getBoundingClientRect().left ?? null;
153
+ const next = calculateMagpiePopoverPlacement(root.getBoundingClientRect().left, window.innerWidth, sidebarLeft);
154
+ setMagpiePlacement((current) => current.left === next.left && current.width === next.width ? current : next);
155
+ };
156
+ resizeObserver = typeof globalThis.ResizeObserver === 'function' ? new globalThis.ResizeObserver(updatePlacement) : undefined;
157
+ resizeObserver?.observe(root);
158
+ resizeObserver?.observe(popover);
159
+ updatePlacement();
160
+ const mutationObserver = typeof globalThis.MutationObserver === 'function' ? new globalThis.MutationObserver(updatePlacement) : undefined;
161
+ mutationObserver?.observe(document.documentElement, { attributes: true, attributeFilter: ['data-sidebar-right-open', 'hidden'], childList: true, subtree: true });
162
+ window.addEventListener('resize', updatePlacement);
163
+ document.addEventListener('scroll', updatePlacement, true);
164
+ return () => {
165
+ resizeObserver?.disconnect();
166
+ mutationObserver?.disconnect();
167
+ window.removeEventListener('resize', updatePlacement);
168
+ document.removeEventListener('scroll', updatePlacement, true);
169
+ };
170
+ }, [open, hasMagpieSnapshot]);
108
171
  useEffect(() => {
109
172
  const sessionId = props.sessionId?.trim();
110
173
  if (!sessionId) {
111
174
  setEligible(false);
112
- setUsage(null);
175
+ setSnapshot(null);
113
176
  setAdapterId(null);
114
177
  setProviderId(null);
115
178
  setOpen(false);
@@ -117,11 +180,12 @@ function CommandCodeSubscriptionSlot(props) {
117
180
  setResetPending(false);
118
181
  setResetResult(null);
119
182
  setResetError(null);
183
+ setMagpieTab('usage');
120
184
  return;
121
185
  }
122
186
  let active = true;
123
187
  setEligible(false);
124
- setUsage(null);
188
+ setSnapshot(null);
125
189
  setAdapterId(null);
126
190
  setProviderId(null);
127
191
  setOpen(false);
@@ -129,7 +193,9 @@ function CommandCodeSubscriptionSlot(props) {
129
193
  setResetPending(false);
130
194
  setResetResult(null);
131
195
  setResetError(null);
132
- const refresh = async () => {
196
+ setMagpieTab('usage');
197
+ const refresh = async (signal) => {
198
+ let routeSignal;
133
199
  setLoading(true);
134
200
  try {
135
201
  // 订阅入口必须读取当前会话的真实 Provider;模型选择器切换后不能复用
@@ -139,12 +205,14 @@ function CommandCodeSubscriptionSlot(props) {
139
205
  if (!active || !isSubscriptionAdapter(adapterId)) {
140
206
  if (active) {
141
207
  setEligible(false);
142
- setUsage(null);
208
+ setSnapshot(null);
143
209
  setAdapterId(null);
144
210
  setProviderId(null);
145
211
  }
146
212
  return;
147
213
  }
214
+ if (signal.aborted)
215
+ return false;
148
216
  if (active) {
149
217
  setEligible(true);
150
218
  setAdapterId(adapterId);
@@ -154,31 +222,42 @@ function CommandCodeSubscriptionSlot(props) {
154
222
  // 模型也是读取键的一部分:Antigravity 的 Gemini 与 Claude/GPT 是两个独立配额组。
155
223
  // 会话 ID 同时承担 PeerHost 的路由身份;缓存也必须按会话隔离,
156
224
  // 否则本机与远端使用相同 Agent/Provider/模型时会互相复用上游结果。
157
- const cacheKey = `${adapterId}|${selection.providerId ?? ''}|${selection.modelId ?? ''}|${sessionId}`;
225
+ const cacheKey = JSON.stringify([adapterId, selection.providerId ?? '', selection.modelId ?? '', sessionId, selection.providerSessionId ?? '']);
226
+ const magpieSnapshot = snapshotRef.current?.magpie;
227
+ const includeRoute = magpieSnapshot !== null && magpieSnapshot !== undefined
228
+ && (openRef.current || shouldResolveMagpieQuota(magpieSnapshot));
158
229
  const cached = subscriptionUsageCache.get(cacheKey);
159
230
  // New-API 的余额和 Token 日志可能随 Key/钱包状态快速变化,且旧结果
160
231
  // 容易把历史日志投影到当前站点;每次刷新都重新读取,Sub2API 仍复用原缓存。
161
- const canReuseCachedUsage = cached !== undefined && cached.usage.provider?.capability !== 'new-api';
162
- if (canReuseCachedUsage && isSubscriptionUsageFresh(cached.capturedAt, Date.now(), intervalMins)) {
232
+ const canReuseCachedUsage = cached !== undefined && cached.usage.providerUsage?.provider?.capability !== 'new-api';
233
+ if (!includeRoute && canReuseCachedUsage && isSubscriptionUsageFresh(cached.capturedAt, Date.now(), intervalMins)) {
163
234
  if (active)
164
- setUsage(cached.usage);
235
+ setSnapshot(cached.usage);
165
236
  return;
166
237
  }
167
- const next = await loadUsage(props.rpc, cacheKey, {
238
+ const payload = {
168
239
  sessionId,
169
240
  adapterId,
170
241
  ...(selection.providerId ? { providerId: selection.providerId } : {}),
171
242
  ...(selection.modelId ? { modelId: selection.modelId } : {}),
172
- });
243
+ ...(includeRoute ? { includeRoute: true } : {}),
244
+ };
245
+ routeSignal = includeRoute ? routeRefreshControllerRef.current?.signal : undefined;
246
+ const requestSignal = routeSignal === undefined ? signal : AbortSignal.any([signal, routeSignal]);
247
+ const next = includeRoute
248
+ ? normalizeSubscriptionSnapshot(await callCliRpc(props.rpc, 'subscription', payload, requestSignal))
249
+ : await loadUsage(props.rpc, cacheKey, payload);
173
250
  if (next !== null)
174
251
  subscriptionUsageCache.set(cacheKey, { usage: next, capturedAt: Date.now() });
175
252
  if (active)
176
- setUsage(next);
253
+ setSnapshot(next);
177
254
  }
178
255
  catch {
256
+ if (signal.aborted || routeSignal?.aborted === true)
257
+ return false;
179
258
  if (active) {
180
259
  setEligible(false);
181
- setUsage(null);
260
+ setSnapshot(null);
182
261
  }
183
262
  return false;
184
263
  }
@@ -192,16 +271,38 @@ function CommandCodeSubscriptionSlot(props) {
192
271
  refreshRef.current = poll.refresh;
193
272
  return () => {
194
273
  active = false;
274
+ routeRefreshControllerRef.current?.abort();
275
+ routeRefreshControllerRef.current = null;
195
276
  refreshRef.current = null;
196
277
  poll.dispose();
197
278
  };
198
279
  }, [props.rpc, props.sessionId, props.getRefreshIntervalMins, modelSelectionRevision, adapterRevision]);
280
+ // Route history is also required to resolve quotas for automatic models.
281
+ // The serial poller owns timing; this controller bounds the extra read to
282
+ // the panel lifetime or the period while the quota's upstream is unknown.
283
+ const magpieQuotaNeedsResolution = shouldResolveMagpieQuota(snapshot?.magpie);
284
+ const shouldLoadMagpieRoute = open || magpieQuotaNeedsResolution;
199
285
  useEffect(() => {
200
- if (!eligible || usage === null)
286
+ if (!shouldLoadMagpieRoute || !hasMagpieSnapshot) {
287
+ routeRefreshControllerRef.current?.abort();
288
+ routeRefreshControllerRef.current = null;
289
+ return;
290
+ }
291
+ const controller = new AbortController();
292
+ routeRefreshControllerRef.current = controller;
293
+ void refreshRef.current?.({ afterPending: true });
294
+ return () => {
295
+ controller.abort();
296
+ if (routeRefreshControllerRef.current === controller)
297
+ routeRefreshControllerRef.current = null;
298
+ };
299
+ }, [shouldLoadMagpieRoute, hasMagpieSnapshot]);
300
+ useEffect(() => {
301
+ if (!eligible || snapshot === null)
201
302
  return;
202
303
  const timer = globalThis.setInterval(() => setClock(Date.now()), 60_000);
203
304
  return () => globalThis.clearInterval(timer);
204
- }, [eligible, usage]);
305
+ }, [eligible, snapshot]);
205
306
  const closeResetDialog = () => {
206
307
  if (resetPending)
207
308
  return;
@@ -236,8 +337,32 @@ function CommandCodeSubscriptionSlot(props) {
236
337
  };
237
338
  useDismissOnOutsidePointer(rootRef, open, () => setOpen(false));
238
339
  useDismissOnOutsidePointer(resetDialogRef, resetOpen && !resetPending, closeResetDialog);
340
+ if (!eligible || snapshot === null)
341
+ return null;
342
+ if (snapshot.magpie !== null) {
343
+ const magpie = snapshot.magpie;
344
+ const magpieRemaining = resolveMagpieQuotaRemaining(magpie);
345
+ const label = t('usage.magpieUsageLabel');
346
+ return createElement('div', { ref: rootRef, style: subscriptionRootStyle }, createElement('button', {
347
+ type: 'button',
348
+ className: 'codingns4dsh-subscription-trigger',
349
+ onClick: () => setOpen((value) => !value),
350
+ 'aria-label': label,
351
+ 'aria-expanded': open,
352
+ style: subscriptionTriggerStyle,
353
+ }, createElement('span', { style: magpieTriggerIconStyle, 'aria-hidden': true }, createElement('img', {
354
+ src: providerIconUrl('magpie') ?? '/api/codingns/provider-icons/magpie.png',
355
+ alt: '',
356
+ width: 20,
357
+ height: 20,
358
+ style: magpieTriggerImageStyle,
359
+ })), magpieRemaining === null
360
+ ? createElement('span', { className: 'codingns4dsh-subscription-label', style: subscriptionLabelStyle }, t('usage.magpieShortLabel'))
361
+ : createRemainingRing(magpieRemaining)), open && createElement(MagpieUsagePopover, { usage: magpie, t, tab: magpieTab, onTabChange: setMagpieTab, placement: magpiePlacement, popoverRef: magpiePopoverRef }));
362
+ }
363
+ const usage = snapshot.providerUsage;
239
364
  // 未拿到真实订阅数据时不占用底部栏空间;加载状态不能伪装成订阅存在。
240
- if (!eligible || usage === null || (usage.sub2api === undefined && usage.deepseek === undefined && usage.providerBalance === undefined && resolveDisplayWindow(usage) === null))
365
+ if (usage === null || (usage.sub2api === undefined && usage.deepseek === undefined && usage.providerBalance === undefined && resolveDisplayWindow(usage) === null))
241
366
  return null;
242
367
  const sub2api = usage.sub2api;
243
368
  const deepseek = usage.deepseek;
@@ -314,6 +439,164 @@ function CommandCodeSubscriptionSlot(props) {
314
439
  dialogRef: resetDialogRef,
315
440
  }));
316
441
  }
442
+ function MagpieUsagePopover({ usage, t, tab = 'usage', onTabChange = () => { }, placement = { left: 0, width: 400 }, popoverRef }) {
443
+ const aggregateRows = usage.aggregate === null ? [] : [
444
+ [t('usage.magpieRequests'), formatMagpieNumber(usage.aggregate.calls)],
445
+ [t('usage.magpieErrors'), formatMagpieNumber(usage.aggregate.errors)],
446
+ [t('usage.magpieInputTokens'), formatMagpieTokenCount(usage.aggregate.inputTokens)],
447
+ [t('usage.magpieOutputTokens'), formatMagpieTokenCount(usage.aggregate.outputTokens)],
448
+ [t('usage.magpieCacheReadTokens'), formatMagpieTokenCount(usage.aggregate.cacheReadTokens)],
449
+ [t('usage.magpieCacheWriteTokens'), formatMagpieTokenCount(usage.aggregate.cacheWriteTokens)],
450
+ [t('usage.magpieTotalTokens'), formatMagpieTokenCount(sumKnownCounts(usage.aggregate.inputTokens, usage.aggregate.outputTokens))],
451
+ [t('usage.magpieCacheHitRate'), formatMagpieCacheHitRate(usage.aggregate.inputTokens, usage.aggregate.cacheReadTokens)],
452
+ [t('usage.magpieCost'), formatMagpieCost(usage.aggregate.costUsd)],
453
+ ];
454
+ const sessionRows = usage.session === null ? [] : [
455
+ [t('usage.magpieRequests'), formatMagpieNumber(usage.session.calls)],
456
+ [t('usage.magpieErrors'), formatMagpieNumber(usage.session.errors)],
457
+ [t('usage.magpieInputTokens'), formatMagpieTokenCount(usage.session.inputTokens)],
458
+ [t('usage.magpieOutputTokens'), formatMagpieTokenCount(usage.session.outputTokens)],
459
+ [t('usage.magpieCacheReadTokens'), formatMagpieTokenCount(usage.session.cacheReadTokens)],
460
+ [t('usage.magpieCacheWriteTokens'), formatMagpieTokenCount(usage.session.cacheWriteTokens)],
461
+ [t('usage.magpieTotalTokens'), formatMagpieTokenCount(sumKnownCounts(usage.session.inputTokens, usage.session.outputTokens))],
462
+ [t('usage.magpieCacheHitRate'), formatMagpieCacheHitRate(usage.session.inputTokens, usage.session.cacheReadTokens)],
463
+ [t('usage.magpieCost'), formatMagpieCost(usage.session.costUsd)],
464
+ ];
465
+ const quotas = usage.quotas ?? [];
466
+ const tabs = [
467
+ { id: 'usage', label: t('usage.magpieTabUsage') },
468
+ { id: 'route', label: t('usage.magpieTabRoute') },
469
+ ];
470
+ return createElement('div', {
471
+ ref: popoverRef,
472
+ className: 'codingns4dsh-subscription-popover',
473
+ role: 'dialog',
474
+ 'aria-label': t('usage.magpieUsageLabel'),
475
+ style: { ...magpiePopoverStyle, left: placement.left, width: placement.width, maxWidth: placement.width },
476
+ }, createElement('div', { style: magpiePopoverHeadingStyle }, createElement('div', { style: magpiePopoverHeadingTextStyle }, createElement('strong', undefined, t('usage.magpieTitle'))), createElement('span', { style: magpieHeaderMetaStyle }, createElement('span', { style: magpieHeaderMutedStyle }, t('usage.magpieUpdated', { time: formatMagpieTimestamp(usage.capturedAt) })))), createElement('div', { role: 'tablist', 'aria-label': t('usage.magpieUsageLabel'), style: magpieTabsStyle }, ...tabs.map((entry) => createElement('button', {
477
+ key: entry.id,
478
+ type: 'button',
479
+ role: 'tab',
480
+ id: `codingns4dsh-magpie-tab-${entry.id}`,
481
+ 'aria-selected': tab === entry.id,
482
+ 'aria-controls': `codingns4dsh-magpie-panel-${entry.id}`,
483
+ className: 'codingns4dsh-magpie-tab',
484
+ onClick: () => onTabChange(entry.id),
485
+ style: { ...magpieTabStyle, ...(tab === entry.id ? magpieTabActiveStyle : {}) },
486
+ }, entry.label))), createElement('div', {
487
+ role: 'tabpanel',
488
+ id: `codingns4dsh-magpie-panel-${tab}`,
489
+ 'aria-labelledby': `codingns4dsh-magpie-tab-${tab}`,
490
+ style: magpieTabPanelStyle,
491
+ }, tab === 'usage' ? MagpieUsagePanel({ usage, aggregateRows, sessionRows, t })
492
+ : MagpieRoutePanel({ usage, quotas, t })));
493
+ }
494
+ function MagpieUsagePanel({ usage, aggregateRows, sessionRows, t }) {
495
+ return createElement('div', undefined, createElement('section', { style: magpieUsageSectionStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieAggregateTitle')), usage.usageStatus === 'available'
496
+ ? createMagpieRows(aggregateRows)
497
+ : createElement('div', { style: magpieMutedTextStyle }, t('usage.magpieUsageUnavailable'))), createElement('section', { style: magpieUsageSectionStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieSessionTitle')), usage.sessionId !== null && createElement('div', { style: magpieSessionIdentityStyle }, createElement('span', undefined, t('usage.magpieAgent', { agent: usage.agent })), createElement('code', { style: magpieSessionIdStyle }, usage.sessionId)), usage.session === null
498
+ ? createElement('div', { style: magpieMutedTextStyle }, usage.sessionId === null ? t('usage.magpieSessionIdUnavailable') : t('usage.magpieSessionNoUsage'))
499
+ : createMagpieRows(sessionRows)));
500
+ }
501
+ function magpieQuotaUnavailableMessage(usage, quotas, t) {
502
+ return usage.quotaStatus === 'unavailable'
503
+ ? t('usage.magpieQuotaUnavailable')
504
+ : usage.quotaStatus === 'provider-unavailable'
505
+ ? t('usage.magpieQuotaProviderUnavailable')
506
+ : quotas.length === 0 ? t('usage.magpieQuotaNoData') : null;
507
+ }
508
+ function createMagpieProviderBadges(usage, style) {
509
+ const providers = usage.upstreamProviders ?? (usage.upstreamProvider === null ? [] : [usage.upstreamProvider]);
510
+ if (providers.length === 0)
511
+ return null;
512
+ return createElement('span', { style }, ...providers.map((provider) => createElement('span', { key: provider, style: magpieProviderBadgeStyle }, provider)));
513
+ }
514
+ function createMagpieQuotaCard(quota, t, index) {
515
+ return createElement('div', { key: `${quota.provider}-${quota.user ?? 'account'}-${index}`, style: magpieQuotaCardStyle }, createElement('div', { style: magpieQuotaCardHeadingStyle }, createElement('span', { style: magpieQuotaNameStyle }, quota.alias ?? quota.name), createElement('span', { style: magpieQuotaHeadingMetaStyle }, quota.plan ?? quota.provider)), (quota.user !== null || quota.balance !== null) && createElement('div', { style: magpieQuotaIdentityStyle }, quota.user !== null && createElement('span', { title: quota.user }, t('usage.magpieQuotaAccount', { account: quota.user })), quota.balance !== null && createElement('span', undefined, t('usage.magpieQuotaBalance', { balance: quota.balance }))), quota.windows.length === 0
516
+ ? createElement('div', { style: magpieQuotaMetaStyle }, t('usage.magpieQuotaNoWindows'))
517
+ : quota.windows.map((window, windowIndex) => {
518
+ const remaining = window.remainingPercent;
519
+ const amount = window.display ?? (window.amount !== null && window.limit !== null ? `${window.amount} / ${window.limit}${window.unit === null ? '' : ` ${window.unit}`}` : null);
520
+ return createElement('div', { key: `${window.name}-${windowIndex}`, style: magpieQuotaWindowStyle }, createElement('div', { style: windowHeadingStyle }, createElement('span', undefined, window.name), remaining === null ? amount : createElement('strong', undefined, `${formatPercent(remaining)}%`)), remaining !== null && createElement('div', { role: 'progressbar', 'aria-label': t('usage.magpieQuotaRemaining', { name: window.name, percent: formatPercent(remaining) }), 'aria-valuemin': 0, 'aria-valuemax': 100, 'aria-valuenow': remaining, style: barStyle }, createElement('span', { style: { ...barFillStyle, width: `${remaining}%` } })), (amount !== null || window.resetsAt !== null) && createElement('div', { style: magpieQuotaFooterStyle }, amount !== null && createElement('span', undefined, amount), window.resetsAt !== null && createElement('span', undefined, t('usage.magpieQuotaResets', { time: formatMagpieTimestamp(window.resetsAt) }))));
521
+ }));
522
+ }
523
+ function MagpieRoutePanel({ usage, quotas, t }) {
524
+ const route = usage.route;
525
+ const quotaMessage = magpieQuotaUnavailableMessage(usage, quotas, t);
526
+ const routeStatus = usage.routeStatus === 'no-route'
527
+ ? t('usage.magpieRouteNoRequests')
528
+ : usage.routeStatus === 'session-unavailable'
529
+ ? t('usage.magpieSessionIdUnavailable')
530
+ : t('usage.magpieRouteUnavailable');
531
+ const routeStages = route === null ? [] : [
532
+ [t('usage.magpieAskedModel'), route.asked],
533
+ [t('usage.magpieRoutedModel'), route.model],
534
+ [t('usage.magpieServedModel'), route.served],
535
+ ].filter((stage, index, all) => stage[1] !== null && all.findIndex((item) => item[1] === stage[1]) === index);
536
+ const active = route?.done === false;
537
+ const routeRows = route === null ? [] : [
538
+ [t('usage.magpieRouteGroup'), route.group],
539
+ [t('usage.magpieRouteRule'), route.rule],
540
+ [t('usage.magpieRouteAccount'), route.providerAccount ?? null],
541
+ [t('usage.magpieEffort'), route.effort],
542
+ [t('usage.magpieRequestStatus'), route.status === null ? null : `${route.done === true ? t('usage.magpieRouteDone') : route.done === false ? t('usage.magpieRouteRunning') : ''}${route.status}`],
543
+ ];
544
+ return createElement('div', undefined, createElement('section', { style: magpieSectionStyle }, createElement('div', { style: magpieQuotaHeadingStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieQuotaTitle')), createMagpieProviderBadges(usage, magpieProviderBadgesStyle)), quotaMessage !== null
545
+ ? createElement('div', { style: magpieEmptyStateStyle }, quotaMessage)
546
+ : quotas.map((quota, index) => createMagpieQuotaCard(quota, t, index))), createElement('section', { style: magpieSectionStyle }, createElement('div', { style: magpieRouteHeadingStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieRouteTitle')), route !== null && createElement('span', { className: active ? 'codingns4dsh-magpie-route-node-active' : undefined, style: magpieRouteStatusStyle }, createElement('span', { style: magpieRouteStatusDotStyle }), createElement('strong', undefined, route.done === true ? t('usage.magpieRouteComplete') : route.done === false ? t('usage.magpieRouteRunning').replace(/\s*·\s*$/u, '') : route.status ?? '--'))), route === null
547
+ ? createElement('div', { style: magpieEmptyStateStyle }, routeStatus)
548
+ : createElement('div', { style: magpieRouteHeroStyle }, createElement('div', { style: magpieRouteTrackStyle, 'aria-label': t('usage.magpieRouteFlowTitle'), role: 'list' }, ...routeStages.map(([label, model], index) => createElement('div', {
549
+ key: `step-${index}`,
550
+ className: 'codingns4dsh-magpie-route-step',
551
+ role: 'listitem',
552
+ style: { ...magpieRouteTrackItemStyle, animationDelay: `${index * 90}ms` },
553
+ }, createElement('div', { style: magpieRouteMarkerColumnStyle, 'aria-hidden': true }, createElement('div', { className: 'codingns4dsh-magpie-route-node', style: magpieRouteNodeStyle }, createElement('span', { style: magpieRouteNodeDotStyle })), index < routeStages.length - 1 && createElement('div', { style: magpieRouteConnectorStyle }, active && createElement('span', { className: 'codingns4dsh-magpie-route-pulse', style: magpieRoutePulseStyle }))), createElement('div', { style: magpieRouteStageCopyStyle }, createElement('span', { style: magpieRouteStageLabelStyle }, label), createElement('strong', { style: magpieRouteStageValueStyle, title: model }, model))))), routeRows.length > 0 && createElement('div', { style: magpieRouteMetaStyle }, ...routeRows.filter((row) => row[1] !== null).map(([label, value]) => createElement('div', { key: label, style: magpieRouteMetaItemStyle }, createElement('span', { style: magpieRouteMetaLabelStyle }, label), createElement('strong', { style: magpieRouteMetaValueStyle, title: value }, value)))), route.tries.length > 0 && createElement('div', { style: magpieAttemptsStyle }, ...route.tries.map((attempt, index) => createElement('div', { key: `${attempt.model ?? 'model'}-${index}`, style: magpieAttemptRowStyle }, createElement('span', { style: magpieAttemptModelStyle }, attempt.model ?? t('usage.magpieUnknownModel')), attempt.failed && createElement('span', { style: magpieFailedStyle }, t('usage.magpieFallback'))))))));
554
+ }
555
+ function createMagpieRows(rows) {
556
+ if (rows.length === 0)
557
+ return createElement('div', { style: magpieMutedTextStyle }, '--');
558
+ return createElement('div', { style: magpieStatsGridStyle }, ...rows.map(([label, value]) => createElement('div', { key: label, style: magpieStatStyle }, createElement('span', { style: magpieStatLabelStyle }, label), createElement('strong', { style: magpieRowValueStyle }, value ?? '--'))));
559
+ }
560
+ function formatMagpieNumber(value) {
561
+ return value === null ? null : formatInteger(value);
562
+ }
563
+ function formatMagpieTokenCount(value) {
564
+ return value === null ? null : formatCompactTokenCount(value);
565
+ }
566
+ function formatMagpieCost(value) {
567
+ return value === null ? null : `$${value.toFixed(value >= 0.01 ? 2 : 4)}`;
568
+ }
569
+ function formatMagpieCacheHitRate(inputTokens, cacheReadTokens) {
570
+ if (inputTokens === null || cacheReadTokens === null)
571
+ return null;
572
+ const totalPromptTokens = inputTokens + cacheReadTokens;
573
+ return totalPromptTokens <= 0 ? null : formatSub2ApiPercent(cacheReadTokens / totalPromptTokens * 100);
574
+ }
575
+ function sumKnownCounts(left, right) {
576
+ if (left === null && right === null)
577
+ return null;
578
+ return (left ?? 0) + (right ?? 0);
579
+ }
580
+ function formatMagpieTimestamp(value) {
581
+ const timestamp = Date.parse(value);
582
+ return Number.isFinite(timestamp) ? new Intl.DateTimeFormat(undefined, { hour: '2-digit', minute: '2-digit' }).format(timestamp) : value;
583
+ }
584
+ function normalizeSubscriptionSnapshot(value) {
585
+ if (value === null || value === undefined)
586
+ return null;
587
+ if (!isRecord(value))
588
+ return null;
589
+ if ('providerUsage' in value || 'magpie' in value) {
590
+ const providerUsage = isRecord(value.providerUsage) ? value.providerUsage : null;
591
+ const magpie = isRecord(value.magpie) ? value.magpie : null;
592
+ return { providerUsage, magpie };
593
+ }
594
+ // Compatibility with Hosts that returned the provider usage directly.
595
+ return { providerUsage: value, magpie: null };
596
+ }
597
+ function isRecord(value) {
598
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
599
+ }
317
600
  function SubscriptionPopover({ usage, providerName, t, nowMs, reset }) {
318
601
  if (usage.sub2api !== undefined)
319
602
  return createElement(Sub2ApiPopover, { usage: usage.sub2api, providerName, t });
@@ -671,12 +954,26 @@ function createModelRow(model, unit) {
671
954
  function resolveDisplayWindow(usage) {
672
955
  return usage.primary ?? usage.secondary ?? usage.monthly;
673
956
  }
957
+ function shouldResolveMagpieQuota(usage) {
958
+ return usage?.quotaStatus === 'provider-unavailable' && usage.sessionId !== null && usage.session !== null;
959
+ }
960
+ function resolveMagpieQuotaRemaining(usage) {
961
+ if (usage.quotaStatus !== 'available')
962
+ return null;
963
+ for (const quota of usage.quotas) {
964
+ for (const window of quota.windows) {
965
+ if (window.remainingPercent !== null)
966
+ return window.remainingPercent;
967
+ }
968
+ }
969
+ return null;
970
+ }
674
971
  function selectDeepseekBalance(usage) {
675
972
  return usage.balances.find((balance) => balance.currency.toUpperCase() === 'USD') ?? usage.balances[0] ?? null;
676
973
  }
677
974
  /** 已具备用量读取契约的适配器才挂载底部订阅入口。 */
678
975
  function isSubscriptionAdapter(adapterId) {
679
- return adapterId === 'antigravity' || adapterId === 'command-code' || adapterId === 'codex' || adapterId === 'claude-code' || adapterId === 'codebuddy' || adapterId === 'codebuddy-cn' || adapterId === 'dsh' || adapterId === 'grok' || adapterId === 'kimi' || adapterId === 'opencode' || adapterId === 'qoder' || adapterId === 'qoder-cn' || adapterId === 'workbuddy' || adapterId === 'zcode';
976
+ return adapterId === 'antigravity' || adapterId === 'command-code' || adapterId === 'codex' || adapterId === 'claude-code' || adapterId === 'codebuddy' || adapterId === 'codebuddy-cn' || adapterId === 'dsh' || adapterId === 'grok' || adapterId === 'kimi' || adapterId === 'opencode' || adapterId === 'pi' || adapterId === 'qoder' || adapterId === 'qoder-cn' || adapterId === 'workbuddy' || adapterId === 'zcode';
680
977
  }
681
978
  function isRemoteWebContext() {
682
979
  return globalThis.__CODINGNS4DSH_REMOTE_WEB_CONTEXT__ === true;
@@ -806,6 +1103,60 @@ function formatCreditBalance(value) {
806
1103
  const subscriptionRootStyle = { position: 'relative', minWidth: 0, display: 'inline-flex', alignItems: 'center' };
807
1104
  const subscriptionTriggerStyle = { display: 'inline-flex', alignItems: 'center', gap: 6, height: 28, border: 0, borderRadius: 14, padding: '0 8px 0 4px', color: dshThemeColor.labelSecondary, background: 'transparent', cursor: 'pointer', fontSize: uiFontSize(13), lineHeight: '20px' };
808
1105
  const subscriptionLabelStyle = { whiteSpace: 'nowrap' };
1106
+ const magpieTriggerIconStyle = { display: 'inline-flex', width: 20, height: 20, alignItems: 'center', justifyContent: 'center', overflow: 'hidden', borderRadius: 6, background: dshThemeColor.surfaceSubtle };
1107
+ const magpieTriggerImageStyle = { display: 'block', width: '100%', height: '100%', objectFit: 'cover' };
1108
+ const magpieMutedTextStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(12), lineHeight: '17px', overflowWrap: 'anywhere' };
1109
+ const magpieHeaderMutedStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(12), lineHeight: '17px', overflowWrap: 'anywhere' };
1110
+ const magpieHeaderMetaStyle = { display: 'grid', justifyItems: 'end', gap: 3, minWidth: 0, textAlign: 'right' };
1111
+ const magpiePopoverHeadingStyle = { display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 22, paddingBottom: 12, borderBottom: `1px solid ${dshThemeColor.border}`, fontSize: uiFontSize(15) };
1112
+ const magpiePopoverHeadingTextStyle = { display: 'grid', gap: 3, minWidth: 0 };
1113
+ const magpieSectionTitleStyle = { fontSize: uiFontSize(13), color: dshThemeColor.labelSecondary };
1114
+ const magpieTabsStyle = { display: 'grid', gridTemplateColumns: 'repeat(2, minmax(0, 1fr))', gap: 4, marginTop: 8, padding: 3, borderRadius: 9, background: dshThemeColor.surfaceSubtle };
1115
+ const magpieTabStyle = { minWidth: 0, padding: '6px 8px', border: 0, borderRadius: 8, background: 'transparent', color: dshThemeColor.labelTertiary, cursor: 'pointer', fontSize: uiFontSize(12), lineHeight: '16px', whiteSpace: 'nowrap' };
1116
+ const magpieTabActiveStyle = { background: dshThemeColor.menuBackground, color: dshThemeColor.labelPrimary, boxShadow: `0 1px 3px ${dshThemeColor.border}` };
1117
+ const magpieTabPanelStyle = { minHeight: 0 };
1118
+ const magpieSectionStyle = { display: 'grid', gap: 8, paddingTop: 11, marginTop: 10, borderTop: `1px solid ${dshThemeColor.border}` };
1119
+ const magpieUsageSectionStyle = { display: 'grid', gap: 5, paddingTop: 8, marginTop: 7, borderTop: `1px solid ${dshThemeColor.border}` };
1120
+ const magpieStatsGridStyle = { display: 'grid', gridTemplateColumns: 'repeat(3, minmax(0, 1fr))', gap: 6, paddingTop: 0 };
1121
+ const magpieStatStyle = { display: 'grid', alignContent: 'space-between', gap: 1, minWidth: 0, minHeight: 40, boxSizing: 'border-box', padding: '5px 7px', borderRadius: 8, background: dshThemeColor.surfaceSubtle };
1122
+ const magpieStatLabelStyle = { minWidth: 0, color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '13px', overflowWrap: 'anywhere' };
1123
+ const magpieRowValueStyle = { color: dshThemeColor.labelPrimary, fontSize: uiFontSize(14), fontWeight: 650, lineHeight: '18px', textAlign: 'right', overflowWrap: 'anywhere' };
1124
+ const magpieSessionIdentityStyle = { display: 'flex', flexWrap: 'wrap', alignItems: 'baseline', gap: '2px 10px', minWidth: 0, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(12), lineHeight: '16px' };
1125
+ const magpieSessionIdStyle = { flex: '1 1 120px', minWidth: 0, color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '14px', whiteSpace: 'normal', overflowWrap: 'anywhere' };
1126
+ const magpieAttemptsStyle = { display: 'grid', gap: 5, paddingTop: 6 };
1127
+ const magpieAttemptRowStyle = { display: 'flex', justifyContent: 'space-between', gap: 14, fontSize: uiFontSize(12) };
1128
+ const magpieAttemptModelStyle = { color: dshThemeColor.labelSecondary, overflowWrap: 'anywhere' };
1129
+ const magpieFailedStyle = { flex: 'none', color: dshThemeColor.error, fontSize: uiFontSize(11) };
1130
+ const magpieQuotaHeadingStyle = { display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 10 };
1131
+ const magpieProviderBadgesStyle = { display: 'flex', justifyContent: 'flex-end', flexWrap: 'wrap', gap: 5, minWidth: 0 };
1132
+ const magpieProviderBadgeStyle = { flex: 'none', maxWidth: 220, overflow: 'hidden', padding: '4px 8px', borderRadius: 999, background: dshThemeColor.surfaceSubtle, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(11), textOverflow: 'ellipsis', whiteSpace: 'nowrap' };
1133
+ const magpieEmptyStateStyle = { display: 'grid', placeItems: 'center', minHeight: 36, padding: '8px 10px', color: dshThemeColor.labelTertiary, fontSize: uiFontSize(12), lineHeight: '17px', textAlign: 'center' };
1134
+ const magpieQuotaCardStyle = { display: 'grid', gap: 5, marginTop: 7, padding: '9px 10px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 9, background: dshThemeColor.surfaceSubtle };
1135
+ const magpieQuotaCardHeadingStyle = { display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', gap: 10 };
1136
+ const magpieQuotaNameStyle = { minWidth: 0, overflow: 'hidden', color: dshThemeColor.labelPrimary, fontSize: uiFontSize(13), fontWeight: 650, textOverflow: 'ellipsis', whiteSpace: 'nowrap' };
1137
+ const magpieQuotaHeadingMetaStyle = { flex: 'none', maxWidth: 160, overflow: 'hidden', color: dshThemeColor.labelTertiary, fontSize: uiFontSize(11), textOverflow: 'ellipsis', whiteSpace: 'nowrap' };
1138
+ const magpieQuotaIdentityStyle = { display: 'flex', flexWrap: 'wrap', gap: '3px 12px', color: dshThemeColor.labelTertiary, fontSize: uiFontSize(11), lineHeight: '15px', overflowWrap: 'anywhere' };
1139
+ const magpieQuotaMetaStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(11), lineHeight: '15px', overflowWrap: 'anywhere' };
1140
+ const magpieQuotaWindowStyle = { display: 'grid', gap: 4, paddingTop: 3 };
1141
+ const magpieQuotaFooterStyle = { display: 'flex', justifyContent: 'space-between', flexWrap: 'wrap', gap: '3px 10px', color: dshThemeColor.labelTertiary, fontSize: uiFontSize(11), lineHeight: '15px' };
1142
+ const magpieRouteHeadingStyle = { display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 10 };
1143
+ const magpieRouteHeroStyle = { display: 'grid', gap: 11, padding: '12px 13px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 12, background: `linear-gradient(145deg, ${dshThemeColor.surfaceSubtle}, transparent)` };
1144
+ const magpieRouteStatusStyle = { display: 'inline-flex', alignItems: 'center', gap: 6, width: 'fit-content', padding: '3px 8px', borderRadius: 999, background: dshThemeColor.surfaceSubtle, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(11), whiteSpace: 'nowrap' };
1145
+ const magpieRouteStatusDotStyle = { width: 8, height: 8, borderRadius: '50%', background: dshThemeColor.accent };
1146
+ const magpieRouteTrackStyle = { display: 'grid', gap: 0, minWidth: 0, padding: '3px 0' };
1147
+ const magpieRouteTrackItemStyle = { display: 'grid', gridTemplateColumns: '18px minmax(0, 1fr)', alignItems: 'start', gap: 12, minWidth: 0, padding: '5px 8px', margin: '0 -8px', borderRadius: 8 };
1148
+ const magpieRouteMarkerColumnStyle = { display: 'flex', flexDirection: 'column', alignItems: 'center', minHeight: 18 };
1149
+ const magpieRouteNodeStyle = { display: 'grid', flex: '0 0 18px', placeItems: 'center', width: 18, height: 18, borderRadius: '50%', background: dshThemeColor.menuBackground, boxShadow: `0 0 0 1px ${dshThemeColor.border}` };
1150
+ const magpieRouteNodeDotStyle = { width: 7, height: 7, borderRadius: '50%', background: dshThemeColor.accent };
1151
+ const magpieRouteStageCopyStyle = { display: 'grid', gap: 3, minWidth: 0, padding: '2px 0 3px' };
1152
+ const magpieRouteStageLabelStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '13px', letterSpacing: '.025em' };
1153
+ const magpieRouteStageValueStyle = { color: dshThemeColor.labelPrimary, fontSize: uiFontSize(12), fontWeight: 620, lineHeight: '16px', overflowWrap: 'anywhere' };
1154
+ const magpieRouteConnectorStyle = { width: 2, height: 28, marginTop: 4, overflow: 'hidden', borderRadius: 2, background: `linear-gradient(180deg, ${dshThemeColor.accent}, ${dshThemeColor.border})` };
1155
+ const magpieRoutePulseStyle = { display: 'block', width: '100%', height: 9, borderRadius: 2, background: dshThemeColor.accent, boxShadow: `0 0 6px ${dshThemeColor.accent}` };
1156
+ const magpieRouteMetaStyle = { display: 'grid', gridTemplateColumns: 'repeat(2, minmax(0, 1fr))', gap: 6 };
1157
+ const magpieRouteMetaItemStyle = { display: 'grid', alignContent: 'start', gap: 3, minWidth: 0, padding: '6px 8px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 8, background: dshThemeColor.menuBackground };
1158
+ const magpieRouteMetaLabelStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '13px' };
1159
+ const magpieRouteMetaValueStyle = { color: dshThemeColor.labelSecondary, fontSize: uiFontSize(11), fontWeight: 550, lineHeight: '15px', overflowWrap: 'anywhere' };
809
1160
  const sub2apiIdentityStyle = { display: 'inline-flex', alignItems: 'center', gap: 5, whiteSpace: 'nowrap', fontVariantNumeric: 'tabular-nums' };
810
1161
  const sub2apiLogoStyle = { display: 'block', borderRadius: 4, objectFit: 'contain' };
811
1162
  const deepseekBalanceIdentityStyle = { display: 'inline-flex', alignItems: 'center', gap: 5, whiteSpace: 'nowrap', fontVariantNumeric: 'tabular-nums' };
@@ -846,7 +1197,8 @@ const barStyle = { height: 7, overflow: 'hidden', borderRadius: 4, background: d
846
1197
  const barFillStyle = { display: 'block', height: '100%', borderRadius: 4, background: dshThemeColor.accent, transition: 'width .2s ease' };
847
1198
  const resetStyle = { color: dshThemeColor.labelTertiary, fontSize: uiFontSize(12) };
848
1199
  const quotaGroupTitleStyle = { paddingTop: 12, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(12), fontWeight: 600, letterSpacing: '.02em' };
849
- const subscriptionPopoverStyle = { ...dshPopupSurfaceStyle, position: 'absolute', zIndex: 1200, bottom: 'calc(100% + 8px)', left: 0, width: 'max-content', minWidth: 280, maxWidth: 'min(400px, calc(100vw - 24px))', boxSizing: 'border-box', padding: 14, borderRadius: 12 };
1200
+ const subscriptionPopoverStyle = { ...dshPopupSurfaceStyle, position: 'absolute', zIndex: 1200, bottom: 'calc(100% + 8px)', left: 0, width: 'max-content', minWidth: 280, maxWidth: 'min(400px, calc(100vw - 24px))', maxHeight: 'min(70vh, 560px)', overflowY: 'auto', boxSizing: 'border-box', padding: 14, borderRadius: 12 };
1201
+ const magpiePopoverStyle = { ...subscriptionPopoverStyle, width: 400, minWidth: 0, maxWidth: 'min(400px, calc(100vw - 24px))', maxHeight: 'min(78vh, 640px)', padding: 12, borderRadius: 14 };
850
1202
  const resetCreditsSectionStyle = { display: 'grid', gap: 6, marginTop: 10, padding: '10px 12px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 10, background: dshThemeColor.surfaceSubtle };
851
1203
  const resetCreditsRowStyle = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(13) };
852
1204
  const resetCreditsValueGroupStyle = { display: 'inline-flex', alignItems: 'center', gap: 8 };