dsh-cliworker-now 0.0.0-stage → 0.7.7

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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +364 -0
  3. package/README.md +368 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/account-models.mjs +262 -0
  6. package/lib/client.js +22139 -0
  7. package/lib/client.js.map +1 -0
  8. package/lib/grok-catalog.mjs +145 -0
  9. package/lib/hermes-native-entry.py +96 -0
  10. package/lib/hermes-nous-refresh.py +331 -0
  11. package/lib/index.js +14544 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/native-launch.mjs +234 -0
  14. package/lib/native-spawn.mjs +32 -0
  15. package/lib/own-account-lease.mjs +105 -0
  16. package/lib/pi-installation.mjs +87 -0
  17. package/lib/pi-login.mjs +80 -0
  18. package/lib/pi-native-catalog.mjs +417 -0
  19. package/lib/pi-omp-bridge.mjs +602 -0
  20. package/lib/pi-omp-environment.mjs +15 -0
  21. package/lib/pi-omp-refresh.mjs +324 -0
  22. package/lib/private-launch.mjs +23 -0
  23. package/lib/terminal-bridge.mjs +18 -0
  24. package/lib/typert.host.d.ts +3 -0
  25. package/lib/typert.host.js +1430 -0
  26. package/lib/typert.remote-client.d.ts +72 -0
  27. package/lib/typert.remote-client.d.ts.map +1 -0
  28. package/lib/typert.remote-client.js +1256 -0
  29. package/lib/types/client/account-query-queue.d.ts +16 -0
  30. package/lib/types/client/account-query-queue.js +61 -0
  31. package/lib/types/client/account-query-queue.js.map +1 -0
  32. package/lib/types/client/account-terminal-css.d.ts +1 -0
  33. package/lib/types/client/account-terminal-css.js +3 -0
  34. package/lib/types/client/account-terminal-css.js.map +1 -0
  35. package/lib/types/client/account-terminal.d.ts +17 -0
  36. package/lib/types/client/account-terminal.js +525 -0
  37. package/lib/types/client/account-terminal.js.map +1 -0
  38. package/lib/types/client/assets/antigravity.png +0 -0
  39. package/lib/types/client/assets/claude-code.png +0 -0
  40. package/lib/types/client/assets/cliworker-now-logo.png +0 -0
  41. package/lib/types/client/assets/codex.png +0 -0
  42. package/lib/types/client/assets/grok.png +0 -0
  43. package/lib/types/client/assets/hermes.png +0 -0
  44. package/lib/types/client/assets/kimi-dark.png +0 -0
  45. package/lib/types/client/assets/kimi-light.png +0 -0
  46. package/lib/types/client/assets/mimo-code.png +0 -0
  47. package/lib/types/client/assets/omp.png +0 -0
  48. package/lib/types/client/assets/opencode.png +0 -0
  49. package/lib/types/client/assets/pi.png +0 -0
  50. package/lib/types/client/assets/zcode.png +0 -0
  51. package/lib/types/client/composer-keymap.d.ts +18 -0
  52. package/lib/types/client/composer-keymap.js +49 -0
  53. package/lib/types/client/composer-keymap.js.map +1 -0
  54. package/lib/types/client/conversation-timeline.d.ts +6 -0
  55. package/lib/types/client/conversation-timeline.js +65 -0
  56. package/lib/types/client/conversation-timeline.js.map +1 -0
  57. package/lib/types/client/copy-text.d.ts +5 -0
  58. package/lib/types/client/copy-text.js +45 -0
  59. package/lib/types/client/copy-text.js.map +1 -0
  60. package/lib/types/client/icons.d.ts +21 -0
  61. package/lib/types/client/icons.js +68 -0
  62. package/lib/types/client/icons.js.map +1 -0
  63. package/lib/types/client/index.d.ts +3 -0
  64. package/lib/types/client/index.js +124 -0
  65. package/lib/types/client/index.js.map +1 -0
  66. package/lib/types/client/management-styles.d.ts +1 -0
  67. package/lib/types/client/management-styles.js +17 -0
  68. package/lib/types/client/management-styles.js.map +1 -0
  69. package/lib/types/client/name-copy.d.ts +5 -0
  70. package/lib/types/client/name-copy.js +107 -0
  71. package/lib/types/client/name-copy.js.map +1 -0
  72. package/lib/types/client/native-job-overlay.d.ts +11 -0
  73. package/lib/types/client/native-job-overlay.js +129 -0
  74. package/lib/types/client/native-job-overlay.js.map +1 -0
  75. package/lib/types/client/operation-error.d.ts +2 -0
  76. package/lib/types/client/operation-error.js +12 -0
  77. package/lib/types/client/operation-error.js.map +1 -0
  78. package/lib/types/client/panel.d.ts +8 -0
  79. package/lib/types/client/panel.js +310 -0
  80. package/lib/types/client/panel.js.map +1 -0
  81. package/lib/types/client/rename-copy-styles.d.ts +1 -0
  82. package/lib/types/client/rename-copy-styles.js +21 -0
  83. package/lib/types/client/rename-copy-styles.js.map +1 -0
  84. package/lib/types/client/rename-worker.d.ts +9 -0
  85. package/lib/types/client/rename-worker.js +53 -0
  86. package/lib/types/client/rename-worker.js.map +1 -0
  87. package/lib/types/client/role-presets.d.ts +6 -0
  88. package/lib/types/client/role-presets.js +111 -0
  89. package/lib/types/client/role-presets.js.map +1 -0
  90. package/lib/types/client/settings-dialog.d.ts +13 -0
  91. package/lib/types/client/settings-dialog.js +442 -0
  92. package/lib/types/client/settings-dialog.js.map +1 -0
  93. package/lib/types/client/stat-popover.d.ts +10 -0
  94. package/lib/types/client/stat-popover.js +32 -0
  95. package/lib/types/client/stat-popover.js.map +1 -0
  96. package/lib/types/client/styles.d.ts +9 -0
  97. package/lib/types/client/styles.js +221 -0
  98. package/lib/types/client/styles.js.map +1 -0
  99. package/lib/types/client/telemetry.d.ts +11 -0
  100. package/lib/types/client/telemetry.js +24 -0
  101. package/lib/types/client/telemetry.js.map +1 -0
  102. package/lib/types/client/worker-card.d.ts +10 -0
  103. package/lib/types/client/worker-card.js +75 -0
  104. package/lib/types/client/worker-card.js.map +1 -0
  105. package/lib/types/client/worker-model-menu.d.ts +9 -0
  106. package/lib/types/client/worker-model-menu.js +136 -0
  107. package/lib/types/client/worker-model-menu.js.map +1 -0
  108. package/lib/types/client/workers.d.ts +21 -0
  109. package/lib/types/client/workers.js +59 -0
  110. package/lib/types/client/workers.js.map +1 -0
  111. package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
  112. package/lib/types/client/zcode-login-link-provider.js +105 -0
  113. package/lib/types/client/zcode-login-link-provider.js.map +1 -0
  114. package/lib/types/client/zcode-login-link.d.ts +16 -0
  115. package/lib/types/client/zcode-login-link.js +194 -0
  116. package/lib/types/client/zcode-login-link.js.map +1 -0
  117. package/lib/types/host/account-identity.d.ts +16 -0
  118. package/lib/types/host/account-identity.js +126 -0
  119. package/lib/types/host/account-identity.js.map +1 -0
  120. package/lib/types/host/account-login.d.ts +10 -0
  121. package/lib/types/host/account-login.js +126 -0
  122. package/lib/types/host/account-login.js.map +1 -0
  123. package/lib/types/host/account-models.d.mts +21 -0
  124. package/lib/types/host/account-models.mjs +262 -0
  125. package/lib/types/host/accounts.d.ts +42 -0
  126. package/lib/types/host/accounts.js +945 -0
  127. package/lib/types/host/accounts.js.map +1 -0
  128. package/lib/types/host/adapters.d.ts +24 -0
  129. package/lib/types/host/adapters.js +380 -0
  130. package/lib/types/host/adapters.js.map +1 -0
  131. package/lib/types/host/agy-context.d.ts +8 -0
  132. package/lib/types/host/agy-context.js +122 -0
  133. package/lib/types/host/agy-context.js.map +1 -0
  134. package/lib/types/host/agy-models.d.ts +5 -0
  135. package/lib/types/host/agy-models.js +37 -0
  136. package/lib/types/host/agy-models.js.map +1 -0
  137. package/lib/types/host/agy-windows-account.d.ts +14 -0
  138. package/lib/types/host/agy-windows-account.js +104 -0
  139. package/lib/types/host/agy-windows-account.js.map +1 -0
  140. package/lib/types/host/authorized-catalog.d.ts +14 -0
  141. package/lib/types/host/authorized-catalog.js +35 -0
  142. package/lib/types/host/authorized-catalog.js.map +1 -0
  143. package/lib/types/host/bridge-protocol.d.ts +15 -0
  144. package/lib/types/host/bridge-protocol.js +80 -0
  145. package/lib/types/host/bridge-protocol.js.map +1 -0
  146. package/lib/types/host/claude-native-oauth.d.ts +17 -0
  147. package/lib/types/host/claude-native-oauth.js +272 -0
  148. package/lib/types/host/claude-native-oauth.js.map +1 -0
  149. package/lib/types/host/claude-own-route.d.ts +33 -0
  150. package/lib/types/host/claude-own-route.js +250 -0
  151. package/lib/types/host/claude-own-route.js.map +1 -0
  152. package/lib/types/host/cli-account-binding.d.ts +33 -0
  153. package/lib/types/host/cli-account-binding.js +540 -0
  154. package/lib/types/host/cli-account-binding.js.map +1 -0
  155. package/lib/types/host/cli-protocol.d.ts +27 -0
  156. package/lib/types/host/cli-protocol.js +212 -0
  157. package/lib/types/host/cli-protocol.js.map +1 -0
  158. package/lib/types/host/codex-account.d.ts +8 -0
  159. package/lib/types/host/codex-account.js +143 -0
  160. package/lib/types/host/codex-account.js.map +1 -0
  161. package/lib/types/host/codex-models.d.ts +6 -0
  162. package/lib/types/host/codex-models.js +169 -0
  163. package/lib/types/host/codex-models.js.map +1 -0
  164. package/lib/types/host/extended-adapters.d.ts +44 -0
  165. package/lib/types/host/extended-adapters.js +207 -0
  166. package/lib/types/host/extended-adapters.js.map +1 -0
  167. package/lib/types/host/first-party-account-context.d.ts +26 -0
  168. package/lib/types/host/first-party-account-context.js +55 -0
  169. package/lib/types/host/first-party-account-context.js.map +1 -0
  170. package/lib/types/host/first-party-models.d.ts +29 -0
  171. package/lib/types/host/first-party-models.js +459 -0
  172. package/lib/types/host/first-party-models.js.map +1 -0
  173. package/lib/types/host/grok-adapter.d.ts +44 -0
  174. package/lib/types/host/grok-adapter.js +293 -0
  175. package/lib/types/host/grok-adapter.js.map +1 -0
  176. package/lib/types/host/grok-models.d.ts +47 -0
  177. package/lib/types/host/grok-models.js +320 -0
  178. package/lib/types/host/grok-models.js.map +1 -0
  179. package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
  180. package/lib/types/host/harness-opencode-accounts.js +80 -0
  181. package/lib/types/host/harness-opencode-accounts.js.map +1 -0
  182. package/lib/types/host/hermes-account-context.d.ts +8 -0
  183. package/lib/types/host/hermes-account-context.js +99 -0
  184. package/lib/types/host/hermes-account-context.js.map +1 -0
  185. package/lib/types/host/hermes-accounts.d.ts +19 -0
  186. package/lib/types/host/hermes-accounts.js +356 -0
  187. package/lib/types/host/hermes-accounts.js.map +1 -0
  188. package/lib/types/host/hermes-adapter.d.ts +93 -0
  189. package/lib/types/host/hermes-adapter.js +455 -0
  190. package/lib/types/host/hermes-adapter.js.map +1 -0
  191. package/lib/types/host/hermes-env.d.ts +4 -0
  192. package/lib/types/host/hermes-env.js +22 -0
  193. package/lib/types/host/hermes-env.js.map +1 -0
  194. package/lib/types/host/hermes-installation.d.ts +10 -0
  195. package/lib/types/host/hermes-installation.js +181 -0
  196. package/lib/types/host/hermes-installation.js.map +1 -0
  197. package/lib/types/host/hermes-models.d.ts +26 -0
  198. package/lib/types/host/hermes-models.js +328 -0
  199. package/lib/types/host/hermes-models.js.map +1 -0
  200. package/lib/types/host/hermes-native-entry.py +96 -0
  201. package/lib/types/host/hermes-nous-refresh.py +331 -0
  202. package/lib/types/host/hermes-nous.d.ts +53 -0
  203. package/lib/types/host/hermes-nous.js +343 -0
  204. package/lib/types/host/hermes-nous.js.map +1 -0
  205. package/lib/types/host/hermes-renewal.d.ts +27 -0
  206. package/lib/types/host/hermes-renewal.js +292 -0
  207. package/lib/types/host/hermes-renewal.js.map +1 -0
  208. package/lib/types/host/hermes-suppression.d.ts +7 -0
  209. package/lib/types/host/hermes-suppression.js +69 -0
  210. package/lib/types/host/hermes-suppression.js.map +1 -0
  211. package/lib/types/host/hermes-windows-installation.d.ts +5 -0
  212. package/lib/types/host/hermes-windows-installation.js +91 -0
  213. package/lib/types/host/hermes-windows-installation.js.map +1 -0
  214. package/lib/types/host/index.d.ts +140 -0
  215. package/lib/types/host/index.js +947 -0
  216. package/lib/types/host/index.js.map +1 -0
  217. package/lib/types/host/kimi-accounts.d.ts +17 -0
  218. package/lib/types/host/kimi-accounts.js +220 -0
  219. package/lib/types/host/kimi-accounts.js.map +1 -0
  220. package/lib/types/host/kimi-oauth-models.d.ts +14 -0
  221. package/lib/types/host/kimi-oauth-models.js +246 -0
  222. package/lib/types/host/kimi-oauth-models.js.map +1 -0
  223. package/lib/types/host/managed-agent.d.ts +4 -0
  224. package/lib/types/host/managed-agent.js +127 -0
  225. package/lib/types/host/managed-agent.js.map +1 -0
  226. package/lib/types/host/mimo-configuration.d.ts +22 -0
  227. package/lib/types/host/mimo-configuration.js +258 -0
  228. package/lib/types/host/mimo-configuration.js.map +1 -0
  229. package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
  230. package/lib/types/host/mimo-metadata-cache.js +121 -0
  231. package/lib/types/host/mimo-metadata-cache.js.map +1 -0
  232. package/lib/types/host/native-capability-cache.d.ts +11 -0
  233. package/lib/types/host/native-capability-cache.js +94 -0
  234. package/lib/types/host/native-capability-cache.js.map +1 -0
  235. package/lib/types/host/native-launch.d.mts +2 -0
  236. package/lib/types/host/native-launch.mjs +234 -0
  237. package/lib/types/host/native-process.d.ts +5 -0
  238. package/lib/types/host/native-process.js +41 -0
  239. package/lib/types/host/native-process.js.map +1 -0
  240. package/lib/types/host/native-spawn.mjs +32 -0
  241. package/lib/types/host/opencode-adapter.d.ts +94 -0
  242. package/lib/types/host/opencode-adapter.js +507 -0
  243. package/lib/types/host/opencode-adapter.js.map +1 -0
  244. package/lib/types/host/opencode-native.d.ts +27 -0
  245. package/lib/types/host/opencode-native.js +403 -0
  246. package/lib/types/host/opencode-native.js.map +1 -0
  247. package/lib/types/host/own-account-lease.d.mts +5 -0
  248. package/lib/types/host/own-account-lease.mjs +105 -0
  249. package/lib/types/host/pi-installation.d.mts +7 -0
  250. package/lib/types/host/pi-installation.mjs +87 -0
  251. package/lib/types/host/pi-omp-accounts.d.ts +28 -0
  252. package/lib/types/host/pi-omp-accounts.js +175 -0
  253. package/lib/types/host/pi-omp-accounts.js.map +1 -0
  254. package/lib/types/host/pi-omp-adapter.d.ts +32 -0
  255. package/lib/types/host/pi-omp-adapter.js +190 -0
  256. package/lib/types/host/pi-omp-adapter.js.map +1 -0
  257. package/lib/types/host/pi-omp-environment.d.mts +1 -0
  258. package/lib/types/host/pi-omp-environment.mjs +15 -0
  259. package/lib/types/host/pi-omp-identity.d.ts +2 -0
  260. package/lib/types/host/pi-omp-identity.js +142 -0
  261. package/lib/types/host/pi-omp-identity.js.map +1 -0
  262. package/lib/types/host/pi-omp-logout.d.ts +3 -0
  263. package/lib/types/host/pi-omp-logout.js +152 -0
  264. package/lib/types/host/pi-omp-logout.js.map +1 -0
  265. package/lib/types/host/pi-omp-native.d.ts +71 -0
  266. package/lib/types/host/pi-omp-native.js +753 -0
  267. package/lib/types/host/pi-omp-native.js.map +1 -0
  268. package/lib/types/host/pi-omp-refresh.d.mts +7 -0
  269. package/lib/types/host/pi-omp-refresh.mjs +324 -0
  270. package/lib/types/host/private-launch.mjs +23 -0
  271. package/lib/types/host/process.d.ts +43 -0
  272. package/lib/types/host/process.js +134 -0
  273. package/lib/types/host/process.js.map +1 -0
  274. package/lib/types/host/protocol.d.ts +23 -0
  275. package/lib/types/host/protocol.js +112 -0
  276. package/lib/types/host/protocol.js.map +1 -0
  277. package/lib/types/host/roles.d.ts +34 -0
  278. package/lib/types/host/roles.js +80 -0
  279. package/lib/types/host/roles.js.map +1 -0
  280. package/lib/types/host/routing.d.ts +31 -0
  281. package/lib/types/host/routing.js +248 -0
  282. package/lib/types/host/routing.js.map +1 -0
  283. package/lib/types/host/runtime.d.ts +60 -0
  284. package/lib/types/host/runtime.js +598 -0
  285. package/lib/types/host/runtime.js.map +1 -0
  286. package/lib/types/host/storage.d.ts +48 -0
  287. package/lib/types/host/storage.js +449 -0
  288. package/lib/types/host/storage.js.map +1 -0
  289. package/lib/types/host/telemetry.d.ts +17 -0
  290. package/lib/types/host/telemetry.js +158 -0
  291. package/lib/types/host/telemetry.js.map +1 -0
  292. package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
  293. package/lib/types/host/windows-account-launch.mjs +47 -0
  294. package/lib/types/host/windows-account-owner.ps1 +137 -0
  295. package/lib/types/host/windows-account-stdio.mjs +19 -0
  296. package/lib/types/host/windows-account-terminal.d.ts +17 -0
  297. package/lib/types/host/windows-account-terminal.js +208 -0
  298. package/lib/types/host/windows-account-terminal.js.map +1 -0
  299. package/lib/types/host/windows-agy-account.ps1 +81 -0
  300. package/lib/types/host/windows-cli-installation.d.ts +31 -0
  301. package/lib/types/host/windows-cli-installation.js +157 -0
  302. package/lib/types/host/windows-cli-installation.js.map +1 -0
  303. package/lib/types/host/windows-hidden-launch.mjs +49 -0
  304. package/lib/types/host/windows-hidden-process.d.ts +12 -0
  305. package/lib/types/host/windows-hidden-process.js +116 -0
  306. package/lib/types/host/windows-hidden-process.js.map +1 -0
  307. package/lib/types/host/zcode-account-models.d.ts +16 -0
  308. package/lib/types/host/zcode-account-models.js +114 -0
  309. package/lib/types/host/zcode-account-models.js.map +1 -0
  310. package/lib/types/host/zcode-adapter.d.ts +93 -0
  311. package/lib/types/host/zcode-adapter.js +808 -0
  312. package/lib/types/host/zcode-adapter.js.map +1 -0
  313. package/lib/types/host/zcode-grok-accounts.d.ts +30 -0
  314. package/lib/types/host/zcode-grok-accounts.js +408 -0
  315. package/lib/types/host/zcode-grok-accounts.js.map +1 -0
  316. package/lib/types/shared/accounts.d.ts +47 -0
  317. package/lib/types/shared/accounts.js +2 -0
  318. package/lib/types/shared/accounts.js.map +1 -0
  319. package/lib/types/shared/builtin-presets.d.ts +2 -0
  320. package/lib/types/shared/builtin-presets.js +231 -0
  321. package/lib/types/shared/builtin-presets.js.map +1 -0
  322. package/lib/types/shared/cli-settings.d.ts +5 -0
  323. package/lib/types/shared/cli-settings.js +2 -0
  324. package/lib/types/shared/cli-settings.js.map +1 -0
  325. package/lib/types/shared/model-presentation.d.ts +10 -0
  326. package/lib/types/shared/model-presentation.js +95 -0
  327. package/lib/types/shared/model-presentation.js.map +1 -0
  328. package/lib/types/shared/models.d.ts +7 -0
  329. package/lib/types/shared/models.js +35 -0
  330. package/lib/types/shared/models.js.map +1 -0
  331. package/lib/types/shared/telemetry.d.ts +18 -0
  332. package/lib/types/shared/telemetry.js +16 -0
  333. package/lib/types/shared/telemetry.js.map +1 -0
  334. package/lib/types/shared/types.d.ts +127 -0
  335. package/lib/types/shared/types.js +147 -0
  336. package/lib/types/shared/types.js.map +1 -0
  337. package/lib/windows-account-bootstrap.ps1 +44 -0
  338. package/lib/windows-account-launch.mjs +47 -0
  339. package/lib/windows-account-owner.ps1 +137 -0
  340. package/lib/windows-account-stdio.mjs +19 -0
  341. package/lib/windows-agy-account.ps1 +81 -0
  342. package/lib/windows-hidden-launch.mjs +49 -0
  343. package/lib/zcode-resume.mjs +423 -0
  344. package/package.json +109 -4
@@ -0,0 +1,122 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ import { statSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ // Verified against Antigravity CLI 1.2.16's embedded protobuf descriptors:
6
+ // CortexStepGeneratorMetadata.chat_model(1) -> ChatModelMetadata.chat_start_metadata(9)
7
+ // -> ChatStartMetadata.context_window_metadata(10) -> estimated_tokens_used(1), max_context_tokens(4).
8
+ // This is a version-specific, optional local adapter, never a guessed model capacity.
9
+ function fields(bytes) {
10
+ let offset = 0;
11
+ const result = new Map();
12
+ const integer = (allowUnsafe = false) => {
13
+ let value = 0n;
14
+ for (let shift = 0n; shift < 70n; shift += 7n) {
15
+ if (offset >= bytes.length)
16
+ throw new Error('Truncated protobuf');
17
+ const byte = bytes[offset++];
18
+ value |= BigInt(byte & 127) << shift;
19
+ if (byte < 128) {
20
+ if (!allowUnsafe && value > BigInt(Number.MAX_SAFE_INTEGER))
21
+ throw new Error('Unsafe integer');
22
+ return Number(value);
23
+ }
24
+ }
25
+ throw new Error('Invalid varint');
26
+ };
27
+ while (offset < bytes.length) {
28
+ const tag = integer(), field = Math.floor(tag / 8), wire = tag & 7;
29
+ if (!field)
30
+ throw new Error('Invalid field');
31
+ if (wire === 0)
32
+ result.set(field, integer(true));
33
+ else {
34
+ const length = wire === 2 ? integer() : wire === 1 ? 8 : wire === 5 ? 4 : -1;
35
+ if (length < 0 || offset + length > bytes.length)
36
+ throw new Error('Invalid field length');
37
+ if (wire === 2)
38
+ result.set(field, bytes.subarray(offset, offset + length));
39
+ offset += length;
40
+ }
41
+ }
42
+ return result;
43
+ }
44
+ export function decodeAgyContext(data) {
45
+ try {
46
+ let value = data;
47
+ for (const key of [1, 9, 10]) {
48
+ const nested = fields(value).get(key);
49
+ if (!(nested instanceof Uint8Array))
50
+ return;
51
+ value = nested;
52
+ }
53
+ const context = fields(value), used = context.get(1), capacity = context.get(4);
54
+ if (typeof used !== 'number' ||
55
+ typeof capacity !== 'number' ||
56
+ !Number.isSafeInteger(used) ||
57
+ !Number.isSafeInteger(capacity) ||
58
+ used < 0 ||
59
+ capacity <= 0)
60
+ return;
61
+ return {
62
+ contextUsed: used,
63
+ contextCapacity: capacity,
64
+ contextEstimated: true,
65
+ contextSource: 'Antigravity 最近一次请求的本地上下文估算',
66
+ };
67
+ }
68
+ catch {
69
+ return undefined;
70
+ }
71
+ }
72
+ export class AgyContextReader {
73
+ directory;
74
+ cache = new Map();
75
+ constructor(directory = join(homedir(), '.gemini', 'antigravity-cli', 'conversations')) {
76
+ this.directory = directory;
77
+ }
78
+ read(conversationId) {
79
+ if (!conversationId || !/^[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}$/i.test(conversationId))
80
+ return;
81
+ const path = join(this.directory, `${conversationId}.db`);
82
+ const stamp = [path, `${path}-wal`]
83
+ .map((file) => {
84
+ try {
85
+ const s = statSync(file);
86
+ return `${s.size}:${s.mtimeMs}`;
87
+ }
88
+ catch {
89
+ return '';
90
+ }
91
+ })
92
+ .join('|');
93
+ if (stamp === '|')
94
+ return;
95
+ const cached = this.cache.get(conversationId);
96
+ if (cached?.stamp === stamp)
97
+ return cached.value;
98
+ let db, value;
99
+ try {
100
+ db = new DatabaseSync(path, { readOnly: true });
101
+ // Verify ownership before reading only this plugin-managed conversation's metadata.
102
+ if (!db.prepare('SELECT 1 FROM trajectory_meta WHERE cascade_id = ? LIMIT 1').get(conversationId))
103
+ return;
104
+ const row = db
105
+ .prepare('SELECT CASE WHEN length(data) <= 8388608 THEN data END AS data FROM gen_metadata ORDER BY idx DESC LIMIT 1')
106
+ .get();
107
+ if (row?.data instanceof Uint8Array)
108
+ value = decodeAgyContext(row.data);
109
+ this.cache.set(conversationId, { stamp, value });
110
+ if (this.cache.size > 128)
111
+ this.cache.delete(this.cache.keys().next().value);
112
+ return value;
113
+ }
114
+ catch {
115
+ return undefined;
116
+ }
117
+ finally {
118
+ db?.close();
119
+ }
120
+ }
121
+ }
122
+ //# sourceMappingURL=agy-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-context.js","sourceRoot":"","sources":["../../../src/host/agy-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type AccountIdentitySource } from './account-identity.ts';
2
+ import type { ModelChoice } from '../shared/types.ts';
3
+ /** The native consumer directory is account-scoped, not a public model cache. */
4
+ export declare function assertAgyNativeAccountRoute(signal: AbortSignal, home?: string): Promise<void>;
5
+ export declare function discoverAgyAccountModels(capture: () => Promise<string>, signal: AbortSignal, home?: string, identitySource?: AccountIdentitySource): Promise<ModelChoice[]>;
@@ -0,0 +1,37 @@
1
+ import { homedir } from 'node:os';
2
+ import { join } from 'node:path';
3
+ import { localAccountIdentity } from "./account-identity.js";
4
+ import { readFirstPartyJson } from "./first-party-models.js";
5
+ import { groupAgyModels } from "../shared/models.js";
6
+ /** The native consumer directory is account-scoped, not a public model cache. */
7
+ export async function assertAgyNativeAccountRoute(signal, home = homedir()) {
8
+ signal.throwIfAborted();
9
+ const settings = await readFirstPartyJson(join(home, '.gemini/antigravity-cli/settings.json'));
10
+ signal.throwIfAborted();
11
+ const configured = (value) => value !== undefined &&
12
+ value !== null &&
13
+ value !== '' &&
14
+ !(Array.isArray(value) && !value.length) &&
15
+ !(typeof value === 'object' && !Object.keys(value).length);
16
+ if (configured(settings.modelProvider) ||
17
+ configured(settings.customModels) ||
18
+ configured(settings.customModelsConfig))
19
+ throw new Error('Antigravity 当前自定义模型来源尚未支持,请使用原生账号模型');
20
+ }
21
+ export async function discoverAgyAccountModels(capture, signal, home = homedir(), identitySource = localAccountIdentity({ home })) {
22
+ await assertAgyNativeAccountRoute(signal, home);
23
+ const identity = await identitySource('antigravity', signal);
24
+ if (identity?.state !== 'authenticated')
25
+ throw new Error('请先登录 Antigravity');
26
+ const output = await capture();
27
+ signal.throwIfAborted();
28
+ const rows = output.split(/\r?\n/).flatMap((line) => {
29
+ const [id, ...labels] = line.split('\t');
30
+ const label = labels.join(' ').trim();
31
+ return id && label && /^[A-Za-z0-9_.:/-]+$/.test(id) ? [{ id, label }] : [];
32
+ });
33
+ if (!rows.length)
34
+ throw new Error('Antigravity 当前账号暂无可用模型,请刷新');
35
+ return groupAgyModels(rows);
36
+ }
37
+ //# sourceMappingURL=agy-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-models.js","sourceRoot":"","sources":["../../../src/host/agy-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAA8B,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,MAAmB,EAAE,IAAI,GAAG,OAAO,EAAE;IACrF,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC,CAAA;IAC9F,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,EAAE,CACpC,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,EAAE;QACZ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;IAC5D,IACE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAEvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA8B,EAC9B,MAAmB,EACnB,IAAI,GAAG,OAAO,EAAE,EAChB,iBAAwC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC;IAEtE,MAAM,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC5D,IAAI,QAAQ,EAAE,KAAK,KAAK,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAA;IAC9B,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACrC,OAAO,EAAE,IAAI,KAAK,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type AccountIdentity, type AccountIdentitySource } from './account-identity.ts';
2
+ import type { ProcessBackend, RuntimeConfig } from './process.ts';
3
+ type WindowsAgyAccount = {
4
+ identity: AccountIdentity;
5
+ principalHash?: string;
6
+ };
7
+ /** Only the initial binding and model precheck may share a native projection.
8
+ * The final binding must be read after this operation has exited its scope. */
9
+ export declare function withWindowsAgyAccountSnapshot<T>(backend: ProcessBackend, config: RuntimeConfig, signal: AbortSignal, operation: () => Promise<T>): Promise<T>;
10
+ /** Secret-free projection of the exact native Windows credential target. */
11
+ export declare function projectWindowsAgyAccount(raw: string): WindowsAgyAccount;
12
+ export declare function readWindowsAgyAccount(backend: ProcessBackend, config: RuntimeConfig, signal: AbortSignal): Promise<WindowsAgyAccount>;
13
+ export declare function nativeAgyAccountIdentity(backend: ProcessBackend, config: RuntimeConfig, platform?: NodeJS.Platform): AccountIdentitySource;
14
+ export {};
@@ -0,0 +1,104 @@
1
+ import { homedir } from 'node:os';
2
+ import { AsyncLocalStorage } from 'node:async_hooks';
3
+ import { win32 } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { captureCatalogMetadata } from "./adapters.js";
6
+ import { accountEmail, localAccountIdentity, } from "./account-identity.js";
7
+ const accountSnapshots = new AsyncLocalStorage();
8
+ /** Only the initial binding and model precheck may share a native projection.
9
+ * The final binding must be read after this operation has exited its scope. */
10
+ export async function withWindowsAgyAccountSnapshot(backend, config, signal, operation) {
11
+ signal.throwIfAborted();
12
+ const scope = { backend, config, signal, active: true };
13
+ return accountSnapshots.run(scope, async () => {
14
+ try {
15
+ return await operation();
16
+ }
17
+ finally {
18
+ // Async descendants can retain the ALS store; they must not reuse a
19
+ // projection after the originating operation has completed or failed.
20
+ scope.active = false;
21
+ scope.reading = undefined;
22
+ }
23
+ });
24
+ }
25
+ /** Secret-free projection of the exact native Windows credential target. */
26
+ export function projectWindowsAgyAccount(raw) {
27
+ try {
28
+ if (raw.length > 4096)
29
+ throw new Error('Invalid native account projection');
30
+ const value = JSON.parse(raw);
31
+ if (!value || typeof value !== 'object' || Array.isArray(value))
32
+ throw new Error('Invalid projection');
33
+ if (value.state === 'authenticated')
34
+ return {
35
+ identity: {
36
+ state: 'authenticated',
37
+ authMethod: 'oauth',
38
+ verification: 'local',
39
+ summary: '已登录 Antigravity',
40
+ accountLabel: accountEmail(value.email),
41
+ },
42
+ ...(typeof value.principalHash === 'string' && /^[a-f0-9]{64}$/.test(value.principalHash)
43
+ ? { principalHash: value.principalHash }
44
+ : {}),
45
+ };
46
+ if (value.state === 'unconfigured')
47
+ return { identity: { state: 'unconfigured', verification: 'local', summary: '尚未登录 Antigravity' } };
48
+ if (value.state === 'unauthenticated')
49
+ return {
50
+ identity: { state: 'unauthenticated', verification: 'local', summary: '本地登录已过期,请重新登录' },
51
+ };
52
+ if (value.state === 'unknown')
53
+ return {
54
+ identity: { state: 'unknown', verification: 'local', summary: '登录格式未知,请打开账号终端' },
55
+ };
56
+ }
57
+ catch {
58
+ /* Fixed safe diagnosis below. */
59
+ }
60
+ return {
61
+ identity: {
62
+ state: 'unavailable',
63
+ verification: 'local',
64
+ summary: '无法读取 Windows 原生账号,请在登录的桌面会话中重试',
65
+ },
66
+ };
67
+ }
68
+ export async function readWindowsAgyAccount(backend, config, signal) {
69
+ signal.throwIfAborted();
70
+ const scope = accountSnapshots.getStore();
71
+ if (!scope?.active || scope.backend !== backend || scope.config !== config || scope.signal !== signal)
72
+ return readNativeWindowsAgyAccount(backend, config, signal);
73
+ const reading = (scope.reading ??= readNativeWindowsAgyAccount(backend, config, signal));
74
+ try {
75
+ const account = await reading;
76
+ signal.throwIfAborted();
77
+ // A consumer cannot mutate another precheck's safe projection.
78
+ return { ...account, identity: { ...account.identity } };
79
+ }
80
+ catch (error) {
81
+ if (scope.reading === reading)
82
+ scope.reading = undefined;
83
+ throw error;
84
+ }
85
+ }
86
+ async function readNativeWindowsAgyAccount(backend, config, signal) {
87
+ signal.throwIfAborted();
88
+ const raw = await captureCatalogMetadata(backend, config, [
89
+ win32.join(process.env.SystemRoot ?? 'C:\\Windows', 'System32/WindowsPowerShell/v1.0/powershell.exe'),
90
+ '-NoLogo',
91
+ '-NoProfile',
92
+ '-NonInteractive',
93
+ '-File',
94
+ fileURLToPath(new URL('./windows-agy-account.ps1', import.meta.url)),
95
+ ], homedir(), signal, undefined, [0, 1]);
96
+ signal.throwIfAborted();
97
+ return projectWindowsAgyAccount(raw);
98
+ }
99
+ export function nativeAgyAccountIdentity(backend, config, platform = process.platform) {
100
+ if (platform !== 'win32')
101
+ return localAccountIdentity();
102
+ return async (cli, signal) => cli === 'antigravity' ? (await readWindowsAgyAccount(backend, config, signal)).identity : undefined;
103
+ }
104
+ //# sourceMappingURL=agy-windows-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-windows-account.js","sourceRoot":"","sources":["../../../src/host/agy-windows-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EACL,YAAY,EACZ,oBAAoB,GAGrB,MAAM,uBAAuB,CAAA;AAW9B,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,EAAwB,CAAA;AAEtE;+EAC+E;AAC/E,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAuB,EACvB,MAAqB,EACrB,MAAmB,EACnB,SAA2B;IAE3B,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,KAAK,GAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IAC7E,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;gBAAS,CAAC;YACT,oEAAoE;YACpE,sEAAsE;YACtE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAA;YACpB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAA;QAC3B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACtG,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe;YACjC,OAAO;gBACL,QAAQ,EAAE;oBACR,KAAK,EAAE,eAAe;oBACtB,UAAU,EAAE,OAAO;oBACnB,YAAY,EAAE,OAAO;oBACrB,OAAO,EAAE,iBAAiB;oBAC1B,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;iBACxC;gBACD,GAAG,CAAC,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;oBACvF,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;oBACxC,CAAC,CAAC,EAAE,CAAC;aACR,CAAA;QACH,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc;YAChC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAA;QACpG,IAAI,KAAK,CAAC,KAAK,KAAK,iBAAiB;YACnC,OAAO;gBACL,QAAQ,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;aACxF,CAAA;QACH,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAC3B,OAAO;gBACL,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE;aACjF,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO;QACL,QAAQ,EAAE;YACR,KAAK,EAAE,aAAa;YACpB,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,gCAAgC;SAC1C;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,MAAqB,EACrB,MAAmB;IAEnB,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IACzC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACnG,OAAO,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAA;QAC7B,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,+DAA+D;QAC/D,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAA;QACxD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,OAAuB,EACvB,MAAqB,EACrB,MAAmB;IAEnB,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,MAAM,GAAG,GAAG,MAAM,sBAAsB,CACtC,OAAO,EACP,MAAM,EACN;QACE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,aAAa,EAAE,gDAAgD,CAAC;QACrG,SAAS;QACT,YAAY;QACZ,iBAAiB;QACjB,OAAO;QACP,aAAa,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrE,EACD,OAAO,EAAE,EACT,MAAM,EACN,SAAS,EACT,CAAC,CAAC,EAAE,CAAC,CAAC,CACP,CAAA;IACD,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAuB,EACvB,MAAqB,EACrB,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,oBAAoB,EAAE,CAAA;IACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAC3B,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AACvG,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type Catalog } from './adapters.ts';
2
+ import { type CliId, type Preference } from '../shared/types.ts';
3
+ import type { ProcessBackend, RuntimeConfig } from './process.ts';
4
+ export declare const ACCOUNT_CHANGED = "\u8D26\u53F7\u5DF2\u53D8\u66F4\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6216\u65B0\u5EFA\u4EFB\u52A1";
5
+ /** Private authorization state: never spread this object into a Remote response. */
6
+ export declare function authorizedCatalog(cli: CliId, backend: ProcessBackend, config: RuntimeConfig, project: string, signal: AbortSignal, expected?: string): Promise<{
7
+ catalog: Catalog;
8
+ binding: string;
9
+ }>;
10
+ export declare function authorizeSelection(preference: Preference, backend: ProcessBackend, config: RuntimeConfig, project: string, signal: AbortSignal, expected?: string): Promise<{
11
+ preference: Preference;
12
+ catalog: Catalog;
13
+ binding: string;
14
+ }>;
@@ -0,0 +1,35 @@
1
+ import { catalogFor, validatePreference } from "./adapters.js";
2
+ import { readCliAccountBinding } from "./cli-account-binding.js";
3
+ import { withWindowsAgyAccountSnapshot } from "./agy-windows-account.js";
4
+ import { resolveModel } from "../shared/models.js";
5
+ import { cliOf } from "../shared/types.js";
6
+ export const ACCOUNT_CHANGED = '账号已变更,请重新选择或新建任务';
7
+ /** Private authorization state: never spread this object into a Remote response. */
8
+ export async function authorizedCatalog(cli, backend, config, project, signal, expected) {
9
+ const discover = async () => {
10
+ const binding = await readCliAccountBinding(cli, backend, config, project, signal);
11
+ if (expected && binding !== expected)
12
+ throw new Error(ACCOUNT_CHANGED);
13
+ const catalog = await catalogFor(cli, backend, config, project, signal);
14
+ return { binding, catalog };
15
+ };
16
+ const { binding, catalog } = cli === 'antigravity' && process.platform === 'win32'
17
+ ? await withWindowsAgyAccountSnapshot(backend, config, signal, discover)
18
+ : await discover();
19
+ signal.throwIfAborted();
20
+ // Deliberately outside the snapshot scope: logout, expiry and account changes
21
+ // during native model discovery must still invalidate the returned directory.
22
+ if (binding !== (await readCliAccountBinding(cli, backend, config, project, signal)))
23
+ throw new Error(ACCOUNT_CHANGED);
24
+ if (catalog.cli !== cli)
25
+ throw new Error('CLI 模型目录身份不匹配');
26
+ if (!catalog.models.length)
27
+ throw new Error('暂无可确认的可用模型,请登录或刷新');
28
+ return { catalog, binding };
29
+ }
30
+ export async function authorizeSelection(preference, backend, config, project, signal, expected) {
31
+ const result = await authorizedCatalog(cliOf(preference), backend, config, project, signal, expected);
32
+ validatePreference(preference, result.catalog);
33
+ return { ...result, preference: resolveModel(preference, result.catalog.models) };
34
+ }
35
+ //# sourceMappingURL=authorized-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorized-catalog.js","sourceRoot":"","sources":["../../../src/host/authorized-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAgB,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,KAAK,EAA+B,MAAM,oBAAoB,CAAA;AAGvE,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAA;AAEjD,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAU,EACV,OAAuB,EACvB,MAAqB,EACrB,OAAe,EACf,MAAmB,EACnB,QAAiB;IAEjB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAClF,IAAI,QAAQ,IAAI,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IAC7B,CAAC,CAAA;IACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GACxB,GAAG,KAAK,aAAa,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QACnD,CAAC,CAAC,MAAM,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;QACxE,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAA;IACtB,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,OAAO,KAAK,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IAClC,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAChE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAsB,EACtB,OAAuB,EACvB,MAAqB,EACrB,OAAe,EACf,MAAmB,EACnB,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrG,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9C,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;AACnF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EventInput, ProtocolResult } from './protocol.ts';
2
+ /** Internal framing for the Pi/OMP RPC bridge; never accepts arbitrary event kinds. */
3
+ export declare class BridgeProtocol {
4
+ private emit;
5
+ private identify;
6
+ private maxLineBytes;
7
+ private decoder;
8
+ private pending;
9
+ conversationId?: string;
10
+ result?: ProtocolResult;
11
+ constructor(emit: (event: EventInput) => void, identify: (id: string) => void, maxLineBytes: number);
12
+ feed(chunk: Buffer | string): void;
13
+ end(): void;
14
+ private line;
15
+ }
@@ -0,0 +1,80 @@
1
+ import { StringDecoder } from 'node:string_decoder';
2
+ /** Internal framing for the Pi/OMP RPC bridge; never accepts arbitrary event kinds. */
3
+ export class BridgeProtocol {
4
+ emit;
5
+ identify;
6
+ maxLineBytes;
7
+ decoder = new StringDecoder('utf8');
8
+ pending = '';
9
+ conversationId;
10
+ result;
11
+ constructor(emit, identify, maxLineBytes) {
12
+ this.emit = emit;
13
+ this.identify = identify;
14
+ this.maxLineBytes = maxLineBytes;
15
+ }
16
+ feed(chunk) {
17
+ this.pending += typeof chunk === 'string' ? chunk : this.decoder.write(chunk);
18
+ let end;
19
+ while ((end = this.pending.indexOf('\n')) >= 0) {
20
+ const line = this.pending.slice(0, end).trim();
21
+ this.pending = this.pending.slice(end + 1);
22
+ if (line)
23
+ this.line(line);
24
+ }
25
+ if (Buffer.byteLength(this.pending) > this.maxLineBytes)
26
+ throw new Error('CLI bridge event too large');
27
+ }
28
+ end() {
29
+ this.pending += this.decoder.end();
30
+ if (this.pending.trim())
31
+ this.line(this.pending.trim());
32
+ this.pending = '';
33
+ }
34
+ line(line) {
35
+ if (Buffer.byteLength(line) > this.maxLineBytes)
36
+ throw new Error('CLI bridge event too large');
37
+ const v = JSON.parse(line);
38
+ if (!v || typeof v !== 'object' || this.result)
39
+ throw new Error('Unexpected CLI bridge frame');
40
+ if (v.type === 'session') {
41
+ if (typeof v.id !== 'string' || !v.id || (this.conversationId && this.conversationId !== v.id))
42
+ throw new Error('CLI session identity changed');
43
+ this.identify(v.id);
44
+ this.conversationId = v.id;
45
+ this.emit({
46
+ kind: 'status',
47
+ text: 'CLI 已连接',
48
+ observedModel: typeof v.model === 'string' ? v.model : undefined,
49
+ });
50
+ }
51
+ else if (v.type === 'event') {
52
+ const e = v.event;
53
+ if (!e || !['assistant', 'tool', 'status', 'diagnostic'].includes(e.kind) || typeof e.text !== 'string')
54
+ throw new Error('Invalid bridge event');
55
+ this.emit({
56
+ kind: e.kind,
57
+ text: e.text,
58
+ ...(Number.isInteger(e.step) ? { step: e.step } : {}),
59
+ ...(typeof e.state === 'string' ? { state: e.state } : {}),
60
+ ...(typeof e.detail === 'string' ? { detail: e.detail } : {}),
61
+ });
62
+ }
63
+ else if (v.type === 'result') {
64
+ if (!this.conversationId && v.status === 'ERROR' && typeof v.error === 'string')
65
+ throw new Error(v.error.slice(0, 4096));
66
+ if (!this.conversationId || !['SUCCESS', 'ERROR'].includes(v.status) || typeof v.response !== 'string')
67
+ throw new Error('Invalid bridge result');
68
+ this.result = {
69
+ conversationId: this.conversationId,
70
+ status: v.status,
71
+ response: v.response,
72
+ error: typeof v.error === 'string' ? v.error : undefined,
73
+ };
74
+ this.emit({ kind: 'result', text: v.response, state: v.status });
75
+ }
76
+ else
77
+ throw new Error('Unknown CLI bridge frame');
78
+ }
79
+ }
80
+ //# sourceMappingURL=bridge-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-protocol.js","sourceRoot":"","sources":["../../../src/host/bridge-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ModelChoice } from '../shared/types.ts';
2
+ import { type ProcessBackend, type RuntimeConfig } from './process.ts';
3
+ export declare class ClaudeNativeOAuthError extends Error {
4
+ readonly code = "CLAUDE_NATIVE_OAUTH_UNAVAILABLE";
5
+ constructor(message?: string);
6
+ }
7
+ export interface ClaudeNativeOAuthCatalog {
8
+ models: ModelChoice[];
9
+ /** Host-only identity evidence. Do not persist this object or send it through Gateway. */
10
+ account: {
11
+ email: string;
12
+ organization?: string;
13
+ };
14
+ }
15
+ export declare function parseClaudeNativeOAuthCatalog(initialize: unknown, usage: unknown, now?: number): ClaudeNativeOAuthCatalog;
16
+ /** Only initialize/get_usage controls are sent. No user message, token read, login or model request. */
17
+ export declare function discoverClaudeNativeOAuth(backend: ProcessBackend, config: RuntimeConfig, executable: string, cwd: string, signal: AbortSignal, prefixArgs: string[]): Promise<ClaudeNativeOAuthCatalog>;