@jingyi0605/codingns4dsh 0.2.0-rc.3 → 0.2.1-beta.1

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 (377) hide show
  1. package/README.en.md +6 -6
  2. package/README.md +42 -29
  3. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
  4. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -1
  5. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +2 -2
  6. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js.map +1 -1
  7. package/data/build/dist/bootstrap/index.d.ts +1 -1
  8. package/data/build/dist/bootstrap/index.d.ts.map +1 -1
  9. package/data/build/dist/client/bundle.js +3164 -181
  10. package/data/build/dist/client/bundle.js.map +1 -1
  11. package/data/build/dist/client/cli-catalog.d.ts +1 -1
  12. package/data/build/dist/client/cli-catalog.d.ts.map +1 -1
  13. package/data/build/dist/client/cli-catalog.js +3 -3
  14. package/data/build/dist/client/cli-catalog.js.map +1 -1
  15. package/data/build/dist/client/cli-slots.d.ts +4 -0
  16. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  17. package/data/build/dist/client/cli-slots.js +70 -9
  18. package/data/build/dist/client/cli-slots.js.map +1 -1
  19. package/data/build/dist/client/context-breakdown-dom.d.ts +1 -1
  20. package/data/build/dist/client/context-breakdown-dom.d.ts.map +1 -1
  21. package/data/build/dist/client/context-breakdown-dom.js +1 -1
  22. package/data/build/dist/client/context-breakdown-dom.js.map +1 -1
  23. package/data/build/dist/client/features/assistant-panel.d.ts +5 -0
  24. package/data/build/dist/client/features/assistant-panel.d.ts.map +1 -0
  25. package/data/build/dist/client/features/assistant-panel.js +127 -0
  26. package/data/build/dist/client/features/assistant-panel.js.map +1 -0
  27. package/data/build/dist/client/features/global-voice-assistant.d.ts +10 -0
  28. package/data/build/dist/client/features/global-voice-assistant.d.ts.map +1 -0
  29. package/data/build/dist/client/features/global-voice-assistant.js +330 -0
  30. package/data/build/dist/client/features/global-voice-assistant.js.map +1 -0
  31. package/data/build/dist/client/features/index.d.ts +2 -0
  32. package/data/build/dist/client/features/index.d.ts.map +1 -1
  33. package/data/build/dist/client/features/index.js +4 -0
  34. package/data/build/dist/client/features/index.js.map +1 -1
  35. package/data/build/dist/client/features/lan-access.d.ts.map +1 -1
  36. package/data/build/dist/client/features/lan-access.js +3 -1
  37. package/data/build/dist/client/features/lan-access.js.map +1 -1
  38. package/data/build/dist/client/features/types.d.ts +4 -1
  39. package/data/build/dist/client/features/types.d.ts.map +1 -1
  40. package/data/build/dist/client/features/voice-conversation-dialog.d.ts +20 -0
  41. package/data/build/dist/client/features/voice-conversation-dialog.d.ts.map +1 -0
  42. package/data/build/dist/client/features/voice-conversation-dialog.js +59 -0
  43. package/data/build/dist/client/features/voice-conversation-dialog.js.map +1 -0
  44. package/data/build/dist/client/features/voice-initialization-dialog.d.ts +10 -0
  45. package/data/build/dist/client/features/voice-initialization-dialog.d.ts.map +1 -0
  46. package/data/build/dist/client/features/voice-initialization-dialog.js +90 -0
  47. package/data/build/dist/client/features/voice-initialization-dialog.js.map +1 -0
  48. package/data/build/dist/client/features/workspace-session-enhancement-panel.d.ts.map +1 -1
  49. package/data/build/dist/client/features/workspace-session-enhancement-panel.js +57 -2
  50. package/data/build/dist/client/features/workspace-session-enhancement-panel.js.map +1 -1
  51. package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
  52. package/data/build/dist/client/features/workspace-session-enhancement.js +27 -0
  53. package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
  54. package/data/build/dist/client/global-voice-runtime-registry.d.ts +27 -0
  55. package/data/build/dist/client/global-voice-runtime-registry.d.ts.map +1 -0
  56. package/data/build/dist/client/global-voice-runtime-registry.js +12 -0
  57. package/data/build/dist/client/global-voice-runtime-registry.js.map +1 -0
  58. package/data/build/dist/client/index.d.ts +1 -1
  59. package/data/build/dist/client/index.d.ts.map +1 -1
  60. package/data/build/dist/client/locale.d.ts.map +1 -1
  61. package/data/build/dist/client/locale.js +185 -1
  62. package/data/build/dist/client/locale.js.map +1 -1
  63. package/data/build/dist/client/locales/terminalAuth.d.ts.map +1 -1
  64. package/data/build/dist/client/locales/terminalAuth.js +2 -0
  65. package/data/build/dist/client/locales/terminalAuth.js.map +1 -1
  66. package/data/build/dist/client/locales/usage.d.ts.map +1 -1
  67. package/data/build/dist/client/locales/usage.js +4 -0
  68. package/data/build/dist/client/locales/usage.js.map +1 -1
  69. package/data/build/dist/client/mobile-session-interaction.d.ts +9 -0
  70. package/data/build/dist/client/mobile-session-interaction.d.ts.map +1 -1
  71. package/data/build/dist/client/mobile-session-interaction.js +63 -0
  72. package/data/build/dist/client/mobile-session-interaction.js.map +1 -1
  73. package/data/build/dist/client/model-catalog-cache.d.ts +23 -0
  74. package/data/build/dist/client/model-catalog-cache.d.ts.map +1 -1
  75. package/data/build/dist/client/model-catalog-cache.js +81 -9
  76. package/data/build/dist/client/model-catalog-cache.js.map +1 -1
  77. package/data/build/dist/client/service-tier.d.ts +11 -0
  78. package/data/build/dist/client/service-tier.d.ts.map +1 -1
  79. package/data/build/dist/client/service-tier.js +15 -0
  80. package/data/build/dist/client/service-tier.js.map +1 -1
  81. package/data/build/dist/client/sherpa-voice-adapter.d.ts +46 -0
  82. package/data/build/dist/client/sherpa-voice-adapter.d.ts.map +1 -0
  83. package/data/build/dist/client/sherpa-voice-adapter.js +252 -0
  84. package/data/build/dist/client/sherpa-voice-adapter.js.map +1 -0
  85. package/data/build/dist/client/skill-command.d.ts +10 -0
  86. package/data/build/dist/client/skill-command.d.ts.map +1 -0
  87. package/data/build/dist/client/skill-command.js +258 -0
  88. package/data/build/dist/client/skill-command.js.map +1 -0
  89. package/data/build/dist/client/skill-reference-dom.d.ts +38 -0
  90. package/data/build/dist/client/skill-reference-dom.d.ts.map +1 -0
  91. package/data/build/dist/client/skill-reference-dom.js +187 -0
  92. package/data/build/dist/client/skill-reference-dom.js.map +1 -0
  93. package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
  94. package/data/build/dist/client/subscription-slot.js +51 -3
  95. package/data/build/dist/client/subscription-slot.js.map +1 -1
  96. package/data/build/dist/client/terminal/model.d.ts +40 -2
  97. package/data/build/dist/client/terminal/model.d.ts.map +1 -1
  98. package/data/build/dist/client/terminal/model.js +151 -24
  99. package/data/build/dist/client/terminal/model.js.map +1 -1
  100. package/data/build/dist/client/terminal/styles.d.ts +8 -0
  101. package/data/build/dist/client/terminal/styles.d.ts.map +1 -1
  102. package/data/build/dist/client/terminal/styles.js +23 -2
  103. package/data/build/dist/client/terminal/styles.js.map +1 -1
  104. package/data/build/dist/client/terminal/ui.d.ts.map +1 -1
  105. package/data/build/dist/client/terminal/ui.js +161 -26
  106. package/data/build/dist/client/terminal/ui.js.map +1 -1
  107. package/data/build/dist/client/terminal/xterm-view.d.ts.map +1 -1
  108. package/data/build/dist/client/terminal/xterm-view.js +218 -42
  109. package/data/build/dist/client/terminal/xterm-view.js.map +1 -1
  110. package/data/build/dist/client/voice-capture.d.ts +32 -0
  111. package/data/build/dist/client/voice-capture.d.ts.map +1 -0
  112. package/data/build/dist/client/voice-capture.js +158 -0
  113. package/data/build/dist/client/voice-capture.js.map +1 -0
  114. package/data/build/dist/client/voice-device-manager.d.ts +24 -0
  115. package/data/build/dist/client/voice-device-manager.d.ts.map +1 -0
  116. package/data/build/dist/client/voice-device-manager.js +197 -0
  117. package/data/build/dist/client/voice-device-manager.js.map +1 -0
  118. package/data/build/dist/client/voice-output.d.ts +14 -0
  119. package/data/build/dist/client/voice-output.d.ts.map +1 -0
  120. package/data/build/dist/client/voice-output.js +32 -0
  121. package/data/build/dist/client/voice-output.js.map +1 -0
  122. package/data/build/dist/client/voice-security.d.ts +8 -0
  123. package/data/build/dist/client/voice-security.d.ts.map +1 -0
  124. package/data/build/dist/client/voice-security.js +26 -0
  125. package/data/build/dist/client/voice-security.js.map +1 -0
  126. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +12 -1
  127. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
  128. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +32 -0
  129. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
  130. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +15 -0
  131. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
  132. package/data/build/dist/host/cli-adapters/acp-cli-driver.js +39 -9
  133. package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
  134. package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts +39 -2
  135. package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts.map +1 -1
  136. package/data/build/dist/host/cli-adapters/antigravity-driver.js +198 -10
  137. package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -1
  138. package/data/build/dist/host/cli-adapters/antigravity-subscription.d.ts +121 -0
  139. package/data/build/dist/host/cli-adapters/antigravity-subscription.d.ts.map +1 -0
  140. package/data/build/dist/host/cli-adapters/antigravity-subscription.js +504 -0
  141. package/data/build/dist/host/cli-adapters/antigravity-subscription.js.map +1 -0
  142. package/data/build/dist/host/cli-adapters/claude-driver.d.ts +21 -0
  143. package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
  144. package/data/build/dist/host/cli-adapters/claude-driver.js +173 -7
  145. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  146. package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts.map +1 -1
  147. package/data/build/dist/host/cli-adapters/codebuddy-driver.js +4 -0
  148. package/data/build/dist/host/cli-adapters/codebuddy-driver.js.map +1 -1
  149. package/data/build/dist/host/cli-adapters/codex-driver.d.ts +28 -2
  150. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  151. package/data/build/dist/host/cli-adapters/codex-driver.js +234 -5
  152. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  153. package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -1
  154. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  155. package/data/build/dist/host/cli-adapters/command-code-subscription.js +7 -4
  156. package/data/build/dist/host/cli-adapters/command-code-subscription.js.map +1 -1
  157. package/data/build/dist/host/cli-adapters/cursor-driver.d.ts +9 -0
  158. package/data/build/dist/host/cli-adapters/cursor-driver.d.ts.map +1 -1
  159. package/data/build/dist/host/cli-adapters/cursor-driver.js +72 -2
  160. package/data/build/dist/host/cli-adapters/cursor-driver.js.map +1 -1
  161. package/data/build/dist/host/cli-adapters/driver.d.ts +21 -1
  162. package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
  163. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  164. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +15 -3
  165. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  166. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  167. package/data/build/dist/host/cli-adapters/feature.js +18 -1
  168. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  169. package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
  170. package/data/build/dist/host/cli-adapters/gemini-driver.js +4 -0
  171. package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
  172. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  173. package/data/build/dist/host/cli-adapters/grok-driver.js +4 -0
  174. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  175. package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts.map +1 -1
  176. package/data/build/dist/host/cli-adapters/json-rpc-process.js.map +1 -1
  177. package/data/build/dist/host/cli-adapters/kimi-driver.d.ts.map +1 -1
  178. package/data/build/dist/host/cli-adapters/kimi-driver.js +6 -6
  179. package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
  180. package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
  181. package/data/build/dist/host/cli-adapters/mcode-driver.js +2 -0
  182. package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
  183. package/data/build/dist/host/cli-adapters/model-catalog.d.ts +49 -0
  184. package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
  185. package/data/build/dist/host/cli-adapters/model-catalog.js +126 -0
  186. package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
  187. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +11 -0
  188. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
  189. package/data/build/dist/host/cli-adapters/opencode-driver.js +92 -8
  190. package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
  191. package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -1
  192. package/data/build/dist/host/cli-adapters/pi-driver.js +4 -0
  193. package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
  194. package/data/build/dist/host/cli-adapters/process-utils.d.ts +10 -3
  195. package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
  196. package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
  197. package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +4 -1
  198. package/data/build/dist/host/cli-adapters/provider-subscription.d.ts.map +1 -1
  199. package/data/build/dist/host/cli-adapters/provider-subscription.js +8 -1
  200. package/data/build/dist/host/cli-adapters/provider-subscription.js.map +1 -1
  201. package/data/build/dist/host/cli-adapters/qoder-driver.d.ts +15 -0
  202. package/data/build/dist/host/cli-adapters/qoder-driver.d.ts.map +1 -1
  203. package/data/build/dist/host/cli-adapters/qoder-driver.js +171 -3
  204. package/data/build/dist/host/cli-adapters/qoder-driver.js.map +1 -1
  205. package/data/build/dist/host/cli-adapters/qoder-subscription.js +3 -1
  206. package/data/build/dist/host/cli-adapters/qoder-subscription.js.map +1 -1
  207. package/data/build/dist/host/cli-adapters/reasoning-content.d.ts +11 -0
  208. package/data/build/dist/host/cli-adapters/reasoning-content.d.ts.map +1 -0
  209. package/data/build/dist/host/cli-adapters/reasoning-content.js +79 -0
  210. package/data/build/dist/host/cli-adapters/reasoning-content.js.map +1 -0
  211. package/data/build/dist/host/cli-adapters/registry.d.ts +24 -1
  212. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  213. package/data/build/dist/host/cli-adapters/registry.js +109 -4
  214. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  215. package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts +3 -2
  216. package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts.map +1 -1
  217. package/data/build/dist/host/cli-adapters/rpc-driver-utils.js +8 -2
  218. package/data/build/dist/host/cli-adapters/rpc-driver-utils.js.map +1 -1
  219. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts +3 -2
  220. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
  221. package/data/build/dist/host/cli-adapters/standard-stream-driver.js +14 -2
  222. package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
  223. package/data/build/dist/host/cli-bridge/injections.d.ts +10 -1
  224. package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
  225. package/data/build/dist/host/cli-bridge/injections.js +28 -8
  226. package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
  227. package/data/build/dist/host/features/assistant-dispatch.d.ts +45 -0
  228. package/data/build/dist/host/features/assistant-dispatch.d.ts.map +1 -0
  229. package/data/build/dist/host/features/assistant-dispatch.js +49 -0
  230. package/data/build/dist/host/features/assistant-dispatch.js.map +1 -0
  231. package/data/build/dist/host/features/assistant-intent.d.ts +46 -0
  232. package/data/build/dist/host/features/assistant-intent.d.ts.map +1 -0
  233. package/data/build/dist/host/features/assistant-intent.js +149 -0
  234. package/data/build/dist/host/features/assistant-intent.js.map +1 -0
  235. package/data/build/dist/host/features/assistant-scope-settings.d.ts +25 -0
  236. package/data/build/dist/host/features/assistant-scope-settings.d.ts.map +1 -0
  237. package/data/build/dist/host/features/assistant-scope-settings.js +33 -0
  238. package/data/build/dist/host/features/assistant-scope-settings.js.map +1 -0
  239. package/data/build/dist/host/features/assistant-scope.d.ts +79 -0
  240. package/data/build/dist/host/features/assistant-scope.d.ts.map +1 -0
  241. package/data/build/dist/host/features/assistant-scope.js +107 -0
  242. package/data/build/dist/host/features/assistant-scope.js.map +1 -0
  243. package/data/build/dist/host/features/assistant-session-index.d.ts +44 -0
  244. package/data/build/dist/host/features/assistant-session-index.d.ts.map +1 -0
  245. package/data/build/dist/host/features/assistant-session-index.js +109 -0
  246. package/data/build/dist/host/features/assistant-session-index.js.map +1 -0
  247. package/data/build/dist/host/features/assistant-summary.d.ts +28 -0
  248. package/data/build/dist/host/features/assistant-summary.d.ts.map +1 -0
  249. package/data/build/dist/host/features/assistant-summary.js +166 -0
  250. package/data/build/dist/host/features/assistant-summary.js.map +1 -0
  251. package/data/build/dist/host/features/assistant-voice-stream.d.ts +10 -0
  252. package/data/build/dist/host/features/assistant-voice-stream.d.ts.map +1 -0
  253. package/data/build/dist/host/features/assistant-voice-stream.js +106 -0
  254. package/data/build/dist/host/features/assistant-voice-stream.js.map +1 -0
  255. package/data/build/dist/host/features/assistant-voice-turn.d.ts +27 -0
  256. package/data/build/dist/host/features/assistant-voice-turn.d.ts.map +1 -0
  257. package/data/build/dist/host/features/assistant-voice-turn.js +54 -0
  258. package/data/build/dist/host/features/assistant-voice-turn.js.map +1 -0
  259. package/data/build/dist/host/features/assistant-waiting-state.d.ts +14 -0
  260. package/data/build/dist/host/features/assistant-waiting-state.d.ts.map +1 -0
  261. package/data/build/dist/host/features/assistant-waiting-state.js +17 -0
  262. package/data/build/dist/host/features/assistant-waiting-state.js.map +1 -0
  263. package/data/build/dist/host/features/global-voice-coordinator.d.ts +55 -0
  264. package/data/build/dist/host/features/global-voice-coordinator.d.ts.map +1 -0
  265. package/data/build/dist/host/features/global-voice-coordinator.js +221 -0
  266. package/data/build/dist/host/features/global-voice-coordinator.js.map +1 -0
  267. package/data/build/dist/host/features/global-voice-rpc.d.ts +25 -0
  268. package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -0
  269. package/data/build/dist/host/features/global-voice-rpc.js +862 -0
  270. package/data/build/dist/host/features/global-voice-rpc.js.map +1 -0
  271. package/data/build/dist/host/features/index.d.ts +10 -0
  272. package/data/build/dist/host/features/index.d.ts.map +1 -1
  273. package/data/build/dist/host/features/index.js +10 -0
  274. package/data/build/dist/host/features/index.js.map +1 -1
  275. package/data/build/dist/host/features/peer-host.d.ts +5 -0
  276. package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
  277. package/data/build/dist/host/features/peer-host.js +232 -2
  278. package/data/build/dist/host/features/peer-host.js.map +1 -1
  279. package/data/build/dist/host/features/sherpa-voice-runtime.d.ts +42 -0
  280. package/data/build/dist/host/features/sherpa-voice-runtime.d.ts.map +1 -0
  281. package/data/build/dist/host/features/sherpa-voice-runtime.js +193 -0
  282. package/data/build/dist/host/features/sherpa-voice-runtime.js.map +1 -0
  283. package/data/build/dist/host/features/types.d.ts +26 -0
  284. package/data/build/dist/host/features/types.d.ts.map +1 -1
  285. package/data/build/dist/host/features/voice-agent-actions.d.ts +26 -0
  286. package/data/build/dist/host/features/voice-agent-actions.d.ts.map +1 -0
  287. package/data/build/dist/host/features/voice-agent-actions.js +128 -0
  288. package/data/build/dist/host/features/voice-agent-actions.js.map +1 -0
  289. package/data/build/dist/host/features/voice-agent-service.d.ts +117 -0
  290. package/data/build/dist/host/features/voice-agent-service.d.ts.map +1 -0
  291. package/data/build/dist/host/features/voice-agent-service.js +243 -0
  292. package/data/build/dist/host/features/voice-agent-service.js.map +1 -0
  293. package/data/build/dist/host/features/voice-model-setup.d.ts +20 -0
  294. package/data/build/dist/host/features/voice-model-setup.d.ts.map +1 -0
  295. package/data/build/dist/host/features/voice-model-setup.js +89 -0
  296. package/data/build/dist/host/features/voice-model-setup.js.map +1 -0
  297. package/data/build/dist/host/index.d.ts +2 -2
  298. package/data/build/dist/host/index.d.ts.map +1 -1
  299. package/data/build/dist/host/index.js +7 -1
  300. package/data/build/dist/host/index.js.map +1 -1
  301. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  302. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts.map +1 -1
  303. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js +53 -2
  304. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js.map +1 -1
  305. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js +15 -1
  306. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js.map +1 -1
  307. package/data/build/dist/host/native-session-bridge.d.ts +2 -0
  308. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  309. package/data/build/dist/host/native-session-bridge.js +1 -0
  310. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  311. package/data/build/dist/host/rpc.d.ts.map +1 -1
  312. package/data/build/dist/host/rpc.js +9 -4
  313. package/data/build/dist/host/rpc.js.map +1 -1
  314. package/data/build/dist/host/settings.d.ts.map +1 -1
  315. package/data/build/dist/host/settings.js +19 -1
  316. package/data/build/dist/host/settings.js.map +1 -1
  317. package/data/build/dist/host/terminal/backends/conpty-backend.js.map +1 -1
  318. package/data/build/dist/host/terminal/terminal-controller.d.ts.map +1 -1
  319. package/data/build/dist/host/terminal/terminal-controller.js +4 -0
  320. package/data/build/dist/host/terminal/terminal-controller.js.map +1 -1
  321. package/data/build/dist/host/terminal/terminal-service.d.ts +21 -1
  322. package/data/build/dist/host/terminal/terminal-service.d.ts.map +1 -1
  323. package/data/build/dist/host/terminal/terminal-service.js +118 -7
  324. package/data/build/dist/host/terminal/terminal-service.js.map +1 -1
  325. package/data/build/dist/index.d.ts +2 -2
  326. package/data/build/dist/index.d.ts.map +1 -1
  327. package/data/build/dist/index.js +1 -1
  328. package/data/build/dist/index.js.map +1 -1
  329. package/data/build/dist/shared/contracts/assistant.d.ts +70 -0
  330. package/data/build/dist/shared/contracts/assistant.d.ts.map +1 -0
  331. package/data/build/dist/shared/contracts/assistant.js +2 -0
  332. package/data/build/dist/shared/contracts/assistant.js.map +1 -0
  333. package/data/build/dist/shared/contracts/cli-adapter.d.ts +33 -1
  334. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  335. package/data/build/dist/shared/contracts/config.d.ts +30 -0
  336. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  337. package/data/build/dist/shared/contracts/config.js +20 -0
  338. package/data/build/dist/shared/contracts/config.js.map +1 -1
  339. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  340. package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
  341. package/data/build/dist/shared/contracts/subscription.d.ts +30 -0
  342. package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
  343. package/data/build/dist/shared/contracts/subscription.js.map +1 -1
  344. package/data/build/dist/shared/contracts/terminal.d.ts +2 -0
  345. package/data/build/dist/shared/contracts/terminal.d.ts.map +1 -1
  346. package/data/build/dist/shared/contracts/version.d.ts +12 -5
  347. package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
  348. package/data/build/dist/shared/contracts/version.js +11 -4
  349. package/data/build/dist/shared/contracts/version.js.map +1 -1
  350. package/data/build/dist/shared/contracts/voice-runtime.d.ts +90 -0
  351. package/data/build/dist/shared/contracts/voice-runtime.d.ts.map +1 -0
  352. package/data/build/dist/shared/contracts/voice-runtime.js +16 -0
  353. package/data/build/dist/shared/contracts/voice-runtime.js.map +1 -0
  354. package/data/build/dist/shared/index.d.ts +8 -2
  355. package/data/build/dist/shared/index.d.ts.map +1 -1
  356. package/data/build/dist/shared/index.js +5 -1
  357. package/data/build/dist/shared/index.js.map +1 -1
  358. package/data/build/dist/shared/voice-models.d.ts +21 -0
  359. package/data/build/dist/shared/voice-models.d.ts.map +1 -0
  360. package/data/build/dist/shared/voice-models.js +27 -0
  361. package/data/build/dist/shared/voice-models.js.map +1 -0
  362. package/data/build/dist/shared/voice-stream.d.ts +42 -0
  363. package/data/build/dist/shared/voice-stream.d.ts.map +1 -0
  364. package/data/build/dist/shared/voice-stream.js +99 -0
  365. package/data/build/dist/shared/voice-stream.js.map +1 -0
  366. package/data/build/dist/shared/voice-text.d.ts +3 -0
  367. package/data/build/dist/shared/voice-text.d.ts.map +1 -0
  368. package/data/build/dist/shared/voice-text.js +14 -0
  369. package/data/build/dist/shared/voice-text.js.map +1 -0
  370. package/data/build/dist/typert.host.d.ts.map +1 -1
  371. package/data/build/dist/typert.host.js +1 -0
  372. package/data/build/dist/typert.host.js.map +1 -1
  373. package/package.json +56 -26
  374. package/profile/README.md +8 -5
  375. package/profile/package.json +5 -3
  376. package/profile/version.json +3 -3
  377. package/version.json +3 -3
@@ -0,0 +1,121 @@
1
+ import { spawn, spawnSync } from 'node:child_process';
2
+ import type { CliSubscriptionQuotaWindowKind, CliSubscriptionUsage } from '../../shared/contracts/subscription.js';
3
+ type FetchLike = typeof fetch;
4
+ type SpawnLike = typeof spawn;
5
+ type SpawnSyncLike = typeof spawnSync;
6
+ export interface AntigravitySubscriptionReadOptions {
7
+ /** 当前会话选中的模型;用于在 Gemini 与 Claude/GPT 两个配额组之间选择主窗口。 */
8
+ readonly modelId?: string | undefined;
9
+ }
10
+ export interface AntigravitySubscriptionOptions {
11
+ readonly homeDirectory?: string;
12
+ readonly fetch?: FetchLike;
13
+ readonly timeoutMs?: number;
14
+ readonly readFile?: (path: string) => string;
15
+ readonly now?: () => number;
16
+ readonly platform?: string;
17
+ readonly spawn?: SpawnLike;
18
+ readonly spawnSync?: SpawnSyncLike;
19
+ /** 覆盖 `agy` 路径探测,测试可注入。 */
20
+ readonly resolveCommand?: () => string | null;
21
+ /** 读取器自身可用的模型解析;默认读 AGY 设置文件,测试可注入。 */
22
+ readonly resolveModelId?: (modelId: string | undefined) => string | null;
23
+ }
24
+ /** API 与 `agy --print /usage` 归一化后的配额窗口。 */
25
+ interface AntigravityQuotaWindowDraft {
26
+ readonly kind: CliSubscriptionQuotaWindowKind;
27
+ readonly label: string;
28
+ readonly remainingFraction: number;
29
+ readonly resetsAt: number | null;
30
+ }
31
+ interface AntigravityQuotaGroupDraft {
32
+ readonly displayName: string;
33
+ readonly windows: readonly AntigravityQuotaWindowDraft[];
34
+ }
35
+ /**
36
+ * Antigravity 官方用量读取器。
37
+ *
38
+ * 两条只读来源,互为兜底:
39
+ *
40
+ * 1. `v1internal:retrieveUserQuotaSummary`(首选):按配额组返回 5 小时与周两个窗口,
41
+ * 带精确的 `remainingFraction`;`loadCodeAssist` 顺带给出套餐档位,账号名从
42
+ * CLI 保存的 `id_token`(JWT)读取。凭据来自系统钥匙串或旧版凭据文件,只读、不出 Host。
43
+ * 2. `agy --print /usage`(兜底):CLI 自己的内置命令,输出制表符分隔的
44
+ * “分组 / 窗口 / 百分比 / 重置时间”,不依赖本插件能读到凭据。
45
+ *
46
+ * 两组额度互相独立:Gemini 一组、Claude 与 GPT-OSS 一组,每组各有 5 小时与周窗口。
47
+ * 任一来源失败时安静降级,不占用底部栏空间。
48
+ */
49
+ export declare class AntigravitySubscriptionService {
50
+ private readonly homeDirectory;
51
+ private readonly request;
52
+ private readonly timeoutMs;
53
+ private readonly readFile;
54
+ private readonly now;
55
+ private readonly platform;
56
+ private readonly runSpawn;
57
+ private readonly runSpawnSync;
58
+ private readonly resolveCommand;
59
+ private readonly resolveModelId;
60
+ private cachedCommand;
61
+ constructor(options?: AntigravitySubscriptionOptions);
62
+ read(options?: AntigravitySubscriptionReadOptions): Promise<CliSubscriptionUsage | null>;
63
+ /** 运行 CLI 内置的 `/usage`,它的输出就是 TUI 里那份分组额度。 */
64
+ private readQuotaFromCli;
65
+ private resolveAgyCommand;
66
+ private runUsageCommand;
67
+ private buildUsage;
68
+ /** `provider-default` 时按 AGY 自己选中的模型判断配额组。 */
69
+ private effectiveModelId;
70
+ /**
71
+ * 读取 CLI 的 OAuth 凭据。
72
+ *
73
+ * `agy` 1.2.17 起写系统钥匙串(值前缀 `go-keyring-base64:`),旧版本写
74
+ * `~/.gemini/antigravity-cli/antigravity-oauth-token`。两者结构一致,都带
75
+ * `token.access_token` 与 `id_token`。
76
+ */
77
+ private readCredentials;
78
+ private readCredentialFile;
79
+ private readKeychainCredentials;
80
+ private call;
81
+ }
82
+ /** 解开 go-keyring 的 base64 包装;普通 JSON 原样返回。 */
83
+ export declare function decodeKeyringSecret(raw: string): unknown;
84
+ /**
85
+ * 解析 `agy --print /usage` 的输出。
86
+ *
87
+ * 实测格式(制表符分隔,一行一个窗口):
88
+ * ```
89
+ * Gemini Models Weekly Limit Remaining 99% 2026-10-07T05:47:33Z
90
+ * Gemini Models Five Hour Limit Remaining 98% 2026-10-05T19:09:53Z
91
+ * Claude and GPT models Weekly Limit Remaining 96% 2026-10-12T14:56:40Z
92
+ * Claude and GPT models Five Hour Limit Remaining 92% 2026-10-05T19:56:40Z
93
+ * ```
94
+ */
95
+ export declare function parseAntigravityUsageOutput(output: string): readonly AntigravityQuotaGroupDraft[];
96
+ /** 从 `retrieveUserQuotaSummary` 的响应里提取配额组。 */
97
+ export declare function readAntigravityQuotaGroups(value: unknown): readonly AntigravityQuotaGroupDraft[];
98
+ /**
99
+ * 按会话模型选择配额组。
100
+ *
101
+ * Antigravity 把 Gemini 与 Claude/GPT 分成两组独立额度,上游分组名分别是
102
+ * “Gemini Models” 与 “Claude and GPT models”。模型未知时退回第一组
103
+ * (AGY 默认 Agent 模型是 Gemini)。
104
+ */
105
+ export declare function selectAntigravityQuotaGroup(groups: readonly AntigravityQuotaGroupDraft[], modelId: string | null): AntigravityQuotaGroupDraft | null;
106
+ export declare function antigravityQuotaGroupPrefix(modelId: string | null): string;
107
+ /** 套餐档位优先用稳定的 tier id(`free-tier` → “Free Tier”),避免与 Provider 名重复。 */
108
+ export declare function readAntigravityPlanType(value: unknown): string | null;
109
+ /**
110
+ * 账号实际持有的付费档位。
111
+ *
112
+ * `loadCodeAssist` 会同时返回生效档位 `currentTier` 与权益档位 `paidTier`:本机实测
113
+ * 账号持有 Google AI Pro(`g1-pro-tier`)时 `currentTier` 仍是 `free-tier`,即订阅
114
+ * 权益没有映射到 Antigravity 的 Agent 额度上。两个档位都要展示,否则界面会把
115
+ * “生效档位”说成“账号没有订阅”。
116
+ */
117
+ export declare function readAntigravityPaidPlanType(value: unknown): string | null;
118
+ /** 账号名从 CLI 自己保存的 id_token(JWT)负载里读取,不发额外请求。 */
119
+ export declare function readAccountName(idToken: string | null): string | null;
120
+ export {};
121
+ //# sourceMappingURL=antigravity-subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-subscription.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/antigravity-subscription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,504 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { spawn, spawnSync } from 'node:child_process';
5
+ import { commandEnvironment, resolveCommandPath } from './process-utils.js';
6
+ /** Antigravity(agy)CLI 使用的 Cloud Code 后端;与 CLI 自己的请求地址一致。 */
7
+ const ANTIGRAVITY_API_BASE = 'https://daily-cloudcode-pa.googleapis.com';
8
+ /**
9
+ * `fetchAvailableModels`、`retrieveUserQuotaSummary` 会按 User-Agent 做产品校验:
10
+ * 本机实测缺失或非 Antigravity 的 UA 一律返回 403 PERMISSION_DENIED,带产品名的 UA
11
+ * (含版本号与否)返回 200。这里沿用 CLI 自己的产品标识,而不是 Node 默认 UA。
12
+ */
13
+ const ANTIGRAVITY_USER_AGENT = 'antigravity-cli';
14
+ /** 上游 `bucket.window` 取值到公共窗口类型的映射。 */
15
+ const WINDOW_KIND_BY_API_NAME = {
16
+ '5h': 'five-hour',
17
+ '5hr': 'five-hour',
18
+ 'five-hour': 'five-hour',
19
+ weekly: 'weekly',
20
+ monthly: 'monthly',
21
+ };
22
+ const FIVE_HOUR_WINDOW = '5h';
23
+ const WEEKLY_WINDOW = 'weekly';
24
+ /**
25
+ * `agy` 1.2.17 起把 OAuth 凭据写进系统钥匙串(go-keyring),旧的
26
+ * `antigravity-oauth-token` 文件会消失;这里仍保留文件候选以兼容旧版本。
27
+ */
28
+ const ANTIGRAVITY_KEYCHAIN_SERVICE = 'gemini';
29
+ const ANTIGRAVITY_KEYCHAIN_ACCOUNT = 'antigravity';
30
+ const KEYRING_BASE64_PREFIX = 'go-keyring-base64:';
31
+ const CREDENTIAL_FILE_NAMES = ['antigravity-oauth-token', 'auth.json', 'credentials.json', 'oauth_token.json'];
32
+ const ANTIGRAVITY_USAGE_COMMAND_TIMEOUT_MS = 20_000;
33
+ /**
34
+ * Antigravity 官方用量读取器。
35
+ *
36
+ * 两条只读来源,互为兜底:
37
+ *
38
+ * 1. `v1internal:retrieveUserQuotaSummary`(首选):按配额组返回 5 小时与周两个窗口,
39
+ * 带精确的 `remainingFraction`;`loadCodeAssist` 顺带给出套餐档位,账号名从
40
+ * CLI 保存的 `id_token`(JWT)读取。凭据来自系统钥匙串或旧版凭据文件,只读、不出 Host。
41
+ * 2. `agy --print /usage`(兜底):CLI 自己的内置命令,输出制表符分隔的
42
+ * “分组 / 窗口 / 百分比 / 重置时间”,不依赖本插件能读到凭据。
43
+ *
44
+ * 两组额度互相独立:Gemini 一组、Claude 与 GPT-OSS 一组,每组各有 5 小时与周窗口。
45
+ * 任一来源失败时安静降级,不占用底部栏空间。
46
+ */
47
+ export class AntigravitySubscriptionService {
48
+ homeDirectory;
49
+ request;
50
+ timeoutMs;
51
+ readFile;
52
+ now;
53
+ platform;
54
+ runSpawn;
55
+ runSpawnSync;
56
+ resolveCommand;
57
+ resolveModelId;
58
+ cachedCommand = undefined;
59
+ constructor(options = {}) {
60
+ this.homeDirectory = options.homeDirectory ?? homedir();
61
+ this.request = options.fetch ?? fetch;
62
+ this.timeoutMs = options.timeoutMs ?? 8_000;
63
+ this.readFile = options.readFile ?? ((path) => readFileSync(path, 'utf8'));
64
+ this.now = options.now ?? (() => Date.now());
65
+ this.platform = options.platform ?? process.platform;
66
+ this.runSpawn = options.spawn ?? spawn;
67
+ this.runSpawnSync = options.spawnSync ?? spawnSync;
68
+ this.resolveCommand = options.resolveCommand;
69
+ this.resolveModelId = options.resolveModelId;
70
+ }
71
+ async read(options = {}) {
72
+ const credentials = this.readCredentials();
73
+ if (credentials !== null) {
74
+ const [tier, summary] = await Promise.all([
75
+ this.call('loadCodeAssist', credentials.accessToken),
76
+ this.call('retrieveUserQuotaSummary', credentials.accessToken),
77
+ ]);
78
+ const groups = readAntigravityQuotaGroups(summary);
79
+ if (groups.length > 0) {
80
+ return this.buildUsage(groups, tier, credentials.accountName, options.modelId);
81
+ }
82
+ }
83
+ // 凭据不可用(钥匙串未授权、旧文件被清理、未登录)时改问 CLI 自己。
84
+ const groups = await this.readQuotaFromCli();
85
+ if (groups === null || groups.length === 0)
86
+ return null;
87
+ return this.buildUsage(groups, null, null, options.modelId);
88
+ }
89
+ /** 运行 CLI 内置的 `/usage`,它的输出就是 TUI 里那份分组额度。 */
90
+ async readQuotaFromCli() {
91
+ const command = this.resolveAgyCommand();
92
+ if (command === null)
93
+ return null;
94
+ const stdout = await this.runUsageCommand(command);
95
+ if (stdout === null)
96
+ return null;
97
+ const groups = parseAntigravityUsageOutput(stdout);
98
+ return groups.length === 0 ? null : groups;
99
+ }
100
+ resolveAgyCommand() {
101
+ if (this.cachedCommand !== undefined)
102
+ return this.cachedCommand;
103
+ if (this.resolveCommand !== undefined) {
104
+ this.cachedCommand = this.resolveCommand();
105
+ return this.cachedCommand;
106
+ }
107
+ for (const candidate of ['agy']) {
108
+ const resolved = resolveCommandPath(candidate, this.runSpawnSync);
109
+ if (resolved !== null) {
110
+ this.cachedCommand = resolved;
111
+ return resolved;
112
+ }
113
+ }
114
+ this.cachedCommand = null;
115
+ return null;
116
+ }
117
+ async runUsageCommand(command) {
118
+ return await new Promise((resolve) => {
119
+ let child;
120
+ try {
121
+ child = this.runSpawn(command, ['--print', '/usage'], {
122
+ env: commandEnvironment(command),
123
+ windowsHide: true,
124
+ shell: this.platform === 'win32',
125
+ stdio: ['ignore', 'pipe', 'pipe'],
126
+ });
127
+ }
128
+ catch {
129
+ resolve(null);
130
+ return;
131
+ }
132
+ let stdout = '';
133
+ let settled = false;
134
+ const finish = (value) => {
135
+ if (settled)
136
+ return;
137
+ settled = true;
138
+ clearTimeout(timer);
139
+ try {
140
+ child.kill();
141
+ }
142
+ catch { /* 进程可能已退出 */ }
143
+ resolve(value);
144
+ };
145
+ const timer = setTimeout(() => finish(null), ANTIGRAVITY_USAGE_COMMAND_TIMEOUT_MS);
146
+ child.stdout?.setEncoding('utf8');
147
+ child.stdout?.on('data', (chunk) => { stdout += chunk; });
148
+ child.stderr?.setEncoding('utf8');
149
+ child.stderr?.on('data', () => { });
150
+ child.once('error', () => finish(null));
151
+ child.once('close', () => finish(stdout));
152
+ });
153
+ }
154
+ buildUsage(drafts, tier, accountName, modelId) {
155
+ const groups = toContractGroups(drafts);
156
+ if (groups.length === 0)
157
+ return null;
158
+ const selected = selectAntigravityQuotaGroupIn(groups, this.effectiveModelId(modelId)) ?? groups[0];
159
+ const primary = findGroupWindow(selected, 'five-hour');
160
+ const secondary = findGroupWindow(selected, 'weekly');
161
+ if (primary === null && secondary === null)
162
+ return null;
163
+ const rateLimited = groups.some((group) => group.windows.some((entry) => entry.window.remainingPercent <= 0));
164
+ const paidPlanType = readAntigravityPaidPlanType(tier);
165
+ return {
166
+ authenticated: true,
167
+ planType: readAntigravityPlanType(tier),
168
+ ...(paidPlanType === null ? {} : { paidPlanType }),
169
+ primary,
170
+ secondary,
171
+ monthly: null,
172
+ groups,
173
+ rateLimitReachedType: rateLimited ? 'quota' : null,
174
+ resetCredits: null,
175
+ capturedAt: new Date(this.now()).toISOString(),
176
+ ...(accountName === null ? {} : { accountName }),
177
+ provider: {
178
+ id: 'antigravity',
179
+ displayName: 'Antigravity',
180
+ baseUrl: ANTIGRAVITY_API_BASE,
181
+ capability: 'subscription-window',
182
+ logoUrl: 'https://cdn.simpleicons.org/google',
183
+ },
184
+ };
185
+ }
186
+ /** `provider-default` 时按 AGY 自己选中的模型判断配额组。 */
187
+ effectiveModelId(modelId) {
188
+ const explicit = modelId?.trim();
189
+ if (explicit !== undefined && explicit !== '' && explicit !== 'provider-default')
190
+ return explicit.toLowerCase();
191
+ return this.resolveModelId?.(modelId) ?? null;
192
+ }
193
+ /**
194
+ * 读取 CLI 的 OAuth 凭据。
195
+ *
196
+ * `agy` 1.2.17 起写系统钥匙串(值前缀 `go-keyring-base64:`),旧版本写
197
+ * `~/.gemini/antigravity-cli/antigravity-oauth-token`。两者结构一致,都带
198
+ * `token.access_token` 与 `id_token`。
199
+ */
200
+ readCredentials() {
201
+ const keychain = this.readKeychainCredentials();
202
+ if (keychain !== null)
203
+ return keychain;
204
+ for (const name of CREDENTIAL_FILE_NAMES) {
205
+ const parsed = this.readCredentialFile(join(this.homeDirectory, '.gemini', 'antigravity-cli', name));
206
+ if (parsed !== null)
207
+ return parsed;
208
+ }
209
+ return null;
210
+ }
211
+ readCredentialFile(path) {
212
+ let raw;
213
+ try {
214
+ raw = this.readFile(path);
215
+ }
216
+ catch {
217
+ return null;
218
+ }
219
+ let parsed;
220
+ try {
221
+ parsed = JSON.parse(raw);
222
+ }
223
+ catch {
224
+ return null;
225
+ }
226
+ return toCredentials(parsed, this.now());
227
+ }
228
+ readKeychainCredentials() {
229
+ if (this.platform !== 'darwin')
230
+ return null;
231
+ try {
232
+ // 钥匙串读取是本地毫秒级操作;未授权或条目不存在时直接放弃,改走 CLI 兜底。
233
+ const result = this.runSpawnSync('security', [
234
+ 'find-generic-password',
235
+ '-s', ANTIGRAVITY_KEYCHAIN_SERVICE,
236
+ '-a', ANTIGRAVITY_KEYCHAIN_ACCOUNT,
237
+ '-w',
238
+ ], { encoding: 'utf8', timeout: 3_000, windowsHide: true });
239
+ if (result.status !== 0 || typeof result.stdout !== 'string')
240
+ return null;
241
+ return toCredentials(decodeKeyringSecret(result.stdout.trim()), this.now());
242
+ }
243
+ catch {
244
+ return null;
245
+ }
246
+ }
247
+ async call(method, token) {
248
+ const controller = new AbortController();
249
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
250
+ try {
251
+ const response = await this.request(`${ANTIGRAVITY_API_BASE}/v1internal:${method}`, {
252
+ method: 'POST',
253
+ headers: {
254
+ Authorization: `Bearer ${token}`,
255
+ 'Content-Type': 'application/json',
256
+ 'User-Agent': ANTIGRAVITY_USER_AGENT,
257
+ },
258
+ body: '{}',
259
+ signal: controller.signal,
260
+ });
261
+ if (!response.ok)
262
+ return null;
263
+ return await response.json();
264
+ }
265
+ catch {
266
+ // 未登录、令牌过期或网络不可用时安静降级,订阅栏不占用底部空间。
267
+ return null;
268
+ }
269
+ finally {
270
+ clearTimeout(timer);
271
+ }
272
+ }
273
+ }
274
+ function toCredentials(value, now) {
275
+ const root = recordValue(value);
276
+ const token = recordValue(root?.token);
277
+ const accessToken = textValue(token?.access_token);
278
+ if (accessToken === null)
279
+ return null;
280
+ const expiry = textValue(token?.expiry);
281
+ if (expiry !== null) {
282
+ const expiresAt = Date.parse(expiry);
283
+ // 过期令牌不做刷新(刷新需要 OAuth 客户端),交给 CLI 下次运行处理。
284
+ if (Number.isFinite(expiresAt) && expiresAt <= now)
285
+ return null;
286
+ }
287
+ return { accessToken, accountName: readAccountName(textValue(root?.id_token)) };
288
+ }
289
+ /** 解开 go-keyring 的 base64 包装;普通 JSON 原样返回。 */
290
+ export function decodeKeyringSecret(raw) {
291
+ const trimmed = raw.trim();
292
+ if (!trimmed.startsWith(KEYRING_BASE64_PREFIX)) {
293
+ try {
294
+ return JSON.parse(trimmed);
295
+ }
296
+ catch {
297
+ return null;
298
+ }
299
+ }
300
+ try {
301
+ return JSON.parse(Buffer.from(trimmed.slice(KEYRING_BASE64_PREFIX.length), 'base64').toString('utf8'));
302
+ }
303
+ catch {
304
+ return null;
305
+ }
306
+ }
307
+ /**
308
+ * 解析 `agy --print /usage` 的输出。
309
+ *
310
+ * 实测格式(制表符分隔,一行一个窗口):
311
+ * ```
312
+ * Gemini Models Weekly Limit Remaining 99% 2026-10-07T05:47:33Z
313
+ * Gemini Models Five Hour Limit Remaining 98% 2026-10-05T19:09:53Z
314
+ * Claude and GPT models Weekly Limit Remaining 96% 2026-10-12T14:56:40Z
315
+ * Claude and GPT models Five Hour Limit Remaining 92% 2026-10-05T19:56:40Z
316
+ * ```
317
+ */
318
+ export function parseAntigravityUsageOutput(output) {
319
+ const groups = new Map();
320
+ for (const line of output.split(/\r?\n/u)) {
321
+ const match = line.match(/^([^\t]+)\t([^\t]+)\t(\d{1,3})%\t(\S+)\s*$/u);
322
+ if (match === null)
323
+ continue;
324
+ const groupName = match[1].trim();
325
+ const label = match[2].trim();
326
+ const percent = Number(match[3]);
327
+ if (groupName === '' || label === '' || !Number.isFinite(percent))
328
+ continue;
329
+ const windows = groups.get(groupName) ?? [];
330
+ windows.push({
331
+ kind: windowKindFromLabel(label),
332
+ label,
333
+ remainingFraction: Math.max(0, Math.min(1, percent / 100)),
334
+ resetsAt: timestampSeconds(match[4]),
335
+ });
336
+ groups.set(groupName, windows);
337
+ }
338
+ return [...groups.entries()].map(([displayName, windows]) => ({ displayName, windows }));
339
+ }
340
+ /** 从 `retrieveUserQuotaSummary` 的响应里提取配额组。 */
341
+ export function readAntigravityQuotaGroups(value) {
342
+ const groups = recordValue(value)?.groups;
343
+ if (!Array.isArray(groups))
344
+ return [];
345
+ const parsed = [];
346
+ for (const entry of groups) {
347
+ const record = recordValue(entry);
348
+ if (record === null)
349
+ continue;
350
+ const windows = [];
351
+ for (const rawBucket of Array.isArray(record.buckets) ? record.buckets : []) {
352
+ const bucket = recordValue(rawBucket);
353
+ if (bucket === null)
354
+ continue;
355
+ const window = textValue(bucket.window);
356
+ const remaining = numberValue(bucket.remainingFraction);
357
+ if (window === null || remaining === null)
358
+ continue;
359
+ windows.push({
360
+ kind: WINDOW_KIND_BY_API_NAME[window.toLowerCase()] ?? 'other',
361
+ label: textValue(bucket.displayName) ?? window,
362
+ remainingFraction: clampFraction(remaining),
363
+ resetsAt: timestampSeconds(bucket.resetTime),
364
+ });
365
+ }
366
+ if (windows.length === 0)
367
+ continue;
368
+ parsed.push({ displayName: textValue(record.displayName) ?? '', windows });
369
+ }
370
+ return parsed;
371
+ }
372
+ /**
373
+ * 按会话模型选择配额组。
374
+ *
375
+ * Antigravity 把 Gemini 与 Claude/GPT 分成两组独立额度,上游分组名分别是
376
+ * “Gemini Models” 与 “Claude and GPT models”。模型未知时退回第一组
377
+ * (AGY 默认 Agent 模型是 Gemini)。
378
+ */
379
+ export function selectAntigravityQuotaGroup(groups, modelId) {
380
+ const thirdParty = antigravityQuotaGroupPrefix(modelId) === '3p-';
381
+ const matched = groups.find((group) => isThirdPartyGroupName(group.displayName) === thirdParty);
382
+ return matched ?? groups[0] ?? null;
383
+ }
384
+ function selectAntigravityQuotaGroupIn(groups, modelId) {
385
+ const thirdParty = antigravityQuotaGroupPrefix(modelId) === '3p-';
386
+ const matched = groups.find((group) => group.id === (thirdParty ? 'third-party' : 'gemini'))
387
+ ?? groups.find((group) => isThirdPartyGroupName(group.displayName) === thirdParty);
388
+ return matched ?? groups[0] ?? null;
389
+ }
390
+ export function antigravityQuotaGroupPrefix(modelId) {
391
+ return modelId !== null && /^(?:claude|gpt-oss)/u.test(modelId.trim().toLowerCase()) ? '3p-' : 'gemini-';
392
+ }
393
+ function toContractGroups(drafts) {
394
+ return drafts.map((draft) => ({
395
+ id: quotaGroupId(draft.displayName),
396
+ displayName: draft.displayName,
397
+ windows: draft.windows.map((window) => ({
398
+ kind: window.kind,
399
+ label: window.label,
400
+ window: toWindow(window.remainingFraction, window.resetsAt),
401
+ })),
402
+ }));
403
+ }
404
+ /** 分组 id 供客户端本地化;未知分组回退到上游展示名。 */
405
+ function quotaGroupId(displayName) {
406
+ if (isThirdPartyGroupName(displayName))
407
+ return 'third-party';
408
+ const normalized = displayName.trim().toLowerCase();
409
+ if (normalized.includes('gemini'))
410
+ return 'gemini';
411
+ return normalized.replace(/[^a-z0-9]+/gu, '-').replace(/^-+|-+$/gu, '') || 'other';
412
+ }
413
+ function isThirdPartyGroupName(displayName) {
414
+ const normalized = displayName.trim().toLowerCase();
415
+ return normalized.includes('claude') || normalized.includes('gpt');
416
+ }
417
+ function findGroupWindow(group, kind) {
418
+ return group.windows.find((entry) => entry.kind === kind)?.window ?? null;
419
+ }
420
+ function windowKindFromLabel(label) {
421
+ const normalized = label.trim().toLowerCase();
422
+ if (normalized.includes('five hour') || normalized.includes('5 hour') || normalized.includes('5h'))
423
+ return 'five-hour';
424
+ if (normalized.includes('week'))
425
+ return 'weekly';
426
+ if (normalized.includes('month'))
427
+ return 'monthly';
428
+ return 'other';
429
+ }
430
+ function toWindow(remainingFraction, resetsAt) {
431
+ const remainingPercent = clampPercent(remainingFraction * 100);
432
+ return {
433
+ usedPercent: clampPercent((1 - remainingFraction) * 100),
434
+ remainingPercent,
435
+ // 窗口文案由客户端按 kind 给出,不按分钟数推导标签。
436
+ windowDurationMins: null,
437
+ resetsAt,
438
+ };
439
+ }
440
+ /** 套餐档位优先用稳定的 tier id(`free-tier` → “Free Tier”),避免与 Provider 名重复。 */
441
+ export function readAntigravityPlanType(value) {
442
+ const tier = recordValue(recordValue(value)?.currentTier);
443
+ if (tier === null)
444
+ return null;
445
+ return textValue(tier.id) ?? textValue(tier.name);
446
+ }
447
+ /**
448
+ * 账号实际持有的付费档位。
449
+ *
450
+ * `loadCodeAssist` 会同时返回生效档位 `currentTier` 与权益档位 `paidTier`:本机实测
451
+ * 账号持有 Google AI Pro(`g1-pro-tier`)时 `currentTier` 仍是 `free-tier`,即订阅
452
+ * 权益没有映射到 Antigravity 的 Agent 额度上。两个档位都要展示,否则界面会把
453
+ * “生效档位”说成“账号没有订阅”。
454
+ */
455
+ export function readAntigravityPaidPlanType(value) {
456
+ const tier = recordValue(recordValue(value)?.paidTier);
457
+ if (tier === null)
458
+ return null;
459
+ return textValue(tier.name) ?? textValue(tier.id);
460
+ }
461
+ /** 账号名从 CLI 自己保存的 id_token(JWT)负载里读取,不发额外请求。 */
462
+ export function readAccountName(idToken) {
463
+ if (idToken === null)
464
+ return null;
465
+ const segment = idToken.split('.')[1];
466
+ if (segment === undefined || segment === '')
467
+ return null;
468
+ try {
469
+ const payload = Buffer.from(segment.replace(/-/gu, '+').replace(/_/gu, '/'), 'base64').toString('utf8');
470
+ const claims = recordValue(JSON.parse(payload));
471
+ return textValue(claims?.email) ?? textValue(claims?.name);
472
+ }
473
+ catch {
474
+ return null;
475
+ }
476
+ }
477
+ function recordValue(value) {
478
+ return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : null;
479
+ }
480
+ function textValue(value) {
481
+ return typeof value === 'string' && value.trim() !== '' ? value.trim() : null;
482
+ }
483
+ function numberValue(value) {
484
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
485
+ }
486
+ /** 上游时间统一使用 Unix 秒;字符串走 RFC3339,数字按毫秒/秒自动判定。 */
487
+ function timestampSeconds(value) {
488
+ const text = textValue(value);
489
+ if (text !== null) {
490
+ const parsed = Date.parse(text);
491
+ return Number.isFinite(parsed) ? Math.round(parsed / 1000) : null;
492
+ }
493
+ const numeric = numberValue(value);
494
+ if (numeric === null)
495
+ return null;
496
+ return Math.round(numeric > 10_000_000_000 ? numeric / 1000 : numeric);
497
+ }
498
+ function clampFraction(value) {
499
+ return Math.max(0, Math.min(1, value));
500
+ }
501
+ function clampPercent(value) {
502
+ return Math.max(0, Math.min(100, Number(value.toFixed(4))));
503
+ }
504
+ //# sourceMappingURL=antigravity-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-subscription.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/antigravity-subscription.ts"],"names":[],"mappings":"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"}