@percygfx/opencode-antigravity-auth 0.0.0-stage → 2.0.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 (312) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +896 -3
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/rpc.d.ts +176 -0
  8. package/dist/rpc.d.ts.map +1 -0
  9. package/dist/rpc.js +91 -0
  10. package/dist/rpc.js.map +1 -0
  11. package/dist/server.d.ts +3 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +5 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/src/antigravity/oauth.d.ts +31 -0
  16. package/dist/src/antigravity/oauth.d.ts.map +1 -0
  17. package/dist/src/antigravity/oauth.js +171 -0
  18. package/dist/src/antigravity/oauth.js.map +1 -0
  19. package/dist/src/constants.d.ts +153 -0
  20. package/dist/src/constants.d.ts.map +1 -0
  21. package/dist/src/constants.js +238 -0
  22. package/dist/src/constants.js.map +1 -0
  23. package/dist/src/core/gateway.d.ts +43 -0
  24. package/dist/src/core/gateway.d.ts.map +1 -0
  25. package/dist/src/core/gateway.js +241 -0
  26. package/dist/src/core/gateway.js.map +1 -0
  27. package/dist/src/core/index.d.ts +8 -0
  28. package/dist/src/core/index.d.ts.map +1 -0
  29. package/dist/src/core/index.js +8 -0
  30. package/dist/src/core/index.js.map +1 -0
  31. package/dist/src/core/types.d.ts +60 -0
  32. package/dist/src/core/types.d.ts.map +1 -0
  33. package/dist/src/core/types.js +5 -0
  34. package/dist/src/core/types.js.map +1 -0
  35. package/dist/src/hooks/auto-update-checker/cache.d.ts +3 -0
  36. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
  37. package/dist/src/hooks/auto-update-checker/cache.js +71 -0
  38. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -0
  39. package/dist/src/hooks/auto-update-checker/checker.d.ts +16 -0
  40. package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
  41. package/dist/src/hooks/auto-update-checker/checker.js +234 -0
  42. package/dist/src/hooks/auto-update-checker/checker.js.map +1 -0
  43. package/dist/src/hooks/auto-update-checker/constants.d.ts +11 -0
  44. package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
  45. package/dist/src/hooks/auto-update-checker/constants.js +26 -0
  46. package/dist/src/hooks/auto-update-checker/constants.js.map +1 -0
  47. package/dist/src/hooks/auto-update-checker/index.d.ts +34 -0
  48. package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -0
  49. package/dist/src/hooks/auto-update-checker/index.js +122 -0
  50. package/dist/src/hooks/auto-update-checker/index.js.map +1 -0
  51. package/dist/src/hooks/auto-update-checker/logging.d.ts +3 -0
  52. package/dist/src/hooks/auto-update-checker/logging.d.ts.map +1 -0
  53. package/dist/src/hooks/auto-update-checker/logging.js +9 -0
  54. package/dist/src/hooks/auto-update-checker/logging.js.map +1 -0
  55. package/dist/src/hooks/auto-update-checker/types.d.ts +25 -0
  56. package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -0
  57. package/dist/src/hooks/auto-update-checker/types.js +1 -0
  58. package/dist/src/hooks/auto-update-checker/types.js.map +1 -0
  59. package/dist/src/opencode-v2/accounts.d.ts +24 -0
  60. package/dist/src/opencode-v2/accounts.d.ts.map +1 -0
  61. package/dist/src/opencode-v2/accounts.js +109 -0
  62. package/dist/src/opencode-v2/accounts.js.map +1 -0
  63. package/dist/src/opencode-v2/catalog.d.ts +31 -0
  64. package/dist/src/opencode-v2/catalog.d.ts.map +1 -0
  65. package/dist/src/opencode-v2/catalog.js +68 -0
  66. package/dist/src/opencode-v2/catalog.js.map +1 -0
  67. package/dist/src/opencode-v2/client-shim.d.ts +9 -0
  68. package/dist/src/opencode-v2/client-shim.d.ts.map +1 -0
  69. package/dist/src/opencode-v2/client-shim.js +42 -0
  70. package/dist/src/opencode-v2/client-shim.js.map +1 -0
  71. package/dist/src/opencode-v2/clipboard.d.ts +7 -0
  72. package/dist/src/opencode-v2/clipboard.d.ts.map +1 -0
  73. package/dist/src/opencode-v2/clipboard.js +54 -0
  74. package/dist/src/opencode-v2/clipboard.js.map +1 -0
  75. package/dist/src/opencode-v2/index.d.ts +5 -0
  76. package/dist/src/opencode-v2/index.d.ts.map +1 -0
  77. package/dist/src/opencode-v2/index.js +4 -0
  78. package/dist/src/opencode-v2/index.js.map +1 -0
  79. package/dist/src/opencode-v2/plugin.d.ts +23 -0
  80. package/dist/src/opencode-v2/plugin.d.ts.map +1 -0
  81. package/dist/src/opencode-v2/plugin.js +466 -0
  82. package/dist/src/opencode-v2/plugin.js.map +1 -0
  83. package/dist/src/opencode-v2/proxy.d.ts +23 -0
  84. package/dist/src/opencode-v2/proxy.d.ts.map +1 -0
  85. package/dist/src/opencode-v2/proxy.js +148 -0
  86. package/dist/src/opencode-v2/proxy.js.map +1 -0
  87. package/dist/src/opencode-v2/quota-format.d.ts +19 -0
  88. package/dist/src/opencode-v2/quota-format.d.ts.map +1 -0
  89. package/dist/src/opencode-v2/quota-format.js +71 -0
  90. package/dist/src/opencode-v2/quota-format.js.map +1 -0
  91. package/dist/src/opencode-v2/quota.d.ts +18 -0
  92. package/dist/src/opencode-v2/quota.d.ts.map +1 -0
  93. package/dist/src/opencode-v2/quota.js +118 -0
  94. package/dist/src/opencode-v2/quota.js.map +1 -0
  95. package/dist/src/opencode-v2/sign-in-attempts.d.ts +52 -0
  96. package/dist/src/opencode-v2/sign-in-attempts.d.ts.map +1 -0
  97. package/dist/src/opencode-v2/sign-in-attempts.js +81 -0
  98. package/dist/src/opencode-v2/sign-in-attempts.js.map +1 -0
  99. package/dist/src/plugin/account-models.d.ts +38 -0
  100. package/dist/src/plugin/account-models.d.ts.map +1 -0
  101. package/dist/src/plugin/account-models.js +78 -0
  102. package/dist/src/plugin/account-models.js.map +1 -0
  103. package/dist/src/plugin/accounts.d.ts +186 -0
  104. package/dist/src/plugin/accounts.d.ts.map +1 -0
  105. package/dist/src/plugin/accounts.js +1045 -0
  106. package/dist/src/plugin/accounts.js.map +1 -0
  107. package/dist/src/plugin/auth.d.ts +21 -0
  108. package/dist/src/plugin/auth.d.ts.map +1 -0
  109. package/dist/src/plugin/auth.js +46 -0
  110. package/dist/src/plugin/auth.js.map +1 -0
  111. package/dist/src/plugin/cache/index.d.ts +5 -0
  112. package/dist/src/plugin/cache/index.d.ts.map +1 -0
  113. package/dist/src/plugin/cache/index.js +5 -0
  114. package/dist/src/plugin/cache/index.js.map +1 -0
  115. package/dist/src/plugin/cache/signature-cache.d.ts +111 -0
  116. package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -0
  117. package/dist/src/plugin/cache/signature-cache.js +375 -0
  118. package/dist/src/plugin/cache/signature-cache.js.map +1 -0
  119. package/dist/src/plugin/cache.d.ts +44 -0
  120. package/dist/src/plugin/cache.d.ts.map +1 -0
  121. package/dist/src/plugin/cache.js +200 -0
  122. package/dist/src/plugin/cache.js.map +1 -0
  123. package/dist/src/plugin/cli.d.ts +26 -0
  124. package/dist/src/plugin/cli.d.ts.map +1 -0
  125. package/dist/src/plugin/cli.js +119 -0
  126. package/dist/src/plugin/cli.js.map +1 -0
  127. package/dist/src/plugin/config/index.d.ts +16 -0
  128. package/dist/src/plugin/config/index.d.ts.map +1 -0
  129. package/dist/src/plugin/config/index.js +16 -0
  130. package/dist/src/plugin/config/index.js.map +1 -0
  131. package/dist/src/plugin/config/loader.d.ts +36 -0
  132. package/dist/src/plugin/config/loader.d.ts.map +1 -0
  133. package/dist/src/plugin/config/loader.js +140 -0
  134. package/dist/src/plugin/config/loader.js.map +1 -0
  135. package/dist/src/plugin/config/models.d.ts +41 -0
  136. package/dist/src/plugin/config/models.d.ts.map +1 -0
  137. package/dist/src/plugin/config/models.js +46 -0
  138. package/dist/src/plugin/config/models.js.map +1 -0
  139. package/dist/src/plugin/config/schema.d.ts +135 -0
  140. package/dist/src/plugin/config/schema.d.ts.map +1 -0
  141. package/dist/src/plugin/config/schema.js +438 -0
  142. package/dist/src/plugin/config/schema.js.map +1 -0
  143. package/dist/src/plugin/config/updater.d.ts +55 -0
  144. package/dist/src/plugin/config/updater.d.ts.map +1 -0
  145. package/dist/src/plugin/config/updater.js +125 -0
  146. package/dist/src/plugin/config/updater.js.map +1 -0
  147. package/dist/src/plugin/core/streaming/index.d.ts +3 -0
  148. package/dist/src/plugin/core/streaming/index.d.ts.map +1 -0
  149. package/dist/src/plugin/core/streaming/index.js +3 -0
  150. package/dist/src/plugin/core/streaming/index.js.map +1 -0
  151. package/dist/src/plugin/core/streaming/transformer.d.ts +10 -0
  152. package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -0
  153. package/dist/src/plugin/core/streaming/transformer.js +271 -0
  154. package/dist/src/plugin/core/streaming/transformer.js.map +1 -0
  155. package/dist/src/plugin/core/streaming/types.d.ts +27 -0
  156. package/dist/src/plugin/core/streaming/types.d.ts.map +1 -0
  157. package/dist/src/plugin/core/streaming/types.js +1 -0
  158. package/dist/src/plugin/core/streaming/types.js.map +1 -0
  159. package/dist/src/plugin/debug.d.ts +94 -0
  160. package/dist/src/plugin/debug.d.ts.map +1 -0
  161. package/dist/src/plugin/debug.js +382 -0
  162. package/dist/src/plugin/debug.js.map +1 -0
  163. package/dist/src/plugin/errors.d.ts +28 -0
  164. package/dist/src/plugin/errors.d.ts.map +1 -0
  165. package/dist/src/plugin/errors.js +42 -0
  166. package/dist/src/plugin/errors.js.map +1 -0
  167. package/dist/src/plugin/fingerprint.d.ts +70 -0
  168. package/dist/src/plugin/fingerprint.d.ts.map +1 -0
  169. package/dist/src/plugin/fingerprint.js +138 -0
  170. package/dist/src/plugin/fingerprint.js.map +1 -0
  171. package/dist/src/plugin/image-saver.d.ts +25 -0
  172. package/dist/src/plugin/image-saver.d.ts.map +1 -0
  173. package/dist/src/plugin/image-saver.js +86 -0
  174. package/dist/src/plugin/image-saver.js.map +1 -0
  175. package/dist/src/plugin/logger.d.ts +36 -0
  176. package/dist/src/plugin/logger.d.ts.map +1 -0
  177. package/dist/src/plugin/logger.js +71 -0
  178. package/dist/src/plugin/logger.js.map +1 -0
  179. package/dist/src/plugin/logging-utils.d.ts +23 -0
  180. package/dist/src/plugin/logging-utils.d.ts.map +1 -0
  181. package/dist/src/plugin/logging-utils.js +92 -0
  182. package/dist/src/plugin/logging-utils.js.map +1 -0
  183. package/dist/src/plugin/model-discovery.d.ts +28 -0
  184. package/dist/src/plugin/model-discovery.d.ts.map +1 -0
  185. package/dist/src/plugin/model-discovery.js +59 -0
  186. package/dist/src/plugin/model-discovery.js.map +1 -0
  187. package/dist/src/plugin/model-registry.d.ts +108 -0
  188. package/dist/src/plugin/model-registry.d.ts.map +1 -0
  189. package/dist/src/plugin/model-registry.js +304 -0
  190. package/dist/src/plugin/model-registry.js.map +1 -0
  191. package/dist/src/plugin/project.d.ts +33 -0
  192. package/dist/src/plugin/project.d.ts.map +1 -0
  193. package/dist/src/plugin/project.js +235 -0
  194. package/dist/src/plugin/project.js.map +1 -0
  195. package/dist/src/plugin/quota.d.ts +58 -0
  196. package/dist/src/plugin/quota.d.ts.map +1 -0
  197. package/dist/src/plugin/quota.js +296 -0
  198. package/dist/src/plugin/quota.js.map +1 -0
  199. package/dist/src/plugin/recovery/constants.d.ts +22 -0
  200. package/dist/src/plugin/recovery/constants.d.ts.map +1 -0
  201. package/dist/src/plugin/recovery/constants.js +43 -0
  202. package/dist/src/plugin/recovery/constants.js.map +1 -0
  203. package/dist/src/plugin/recovery/index.d.ts +12 -0
  204. package/dist/src/plugin/recovery/index.d.ts.map +1 -0
  205. package/dist/src/plugin/recovery/index.js +12 -0
  206. package/dist/src/plugin/recovery/index.js.map +1 -0
  207. package/dist/src/plugin/recovery/storage.d.ts +24 -0
  208. package/dist/src/plugin/recovery/storage.d.ts.map +1 -0
  209. package/dist/src/plugin/recovery/storage.js +354 -0
  210. package/dist/src/plugin/recovery/storage.js.map +1 -0
  211. package/dist/src/plugin/recovery/types.d.ts +116 -0
  212. package/dist/src/plugin/recovery/types.d.ts.map +1 -0
  213. package/dist/src/plugin/recovery/types.js +6 -0
  214. package/dist/src/plugin/recovery/types.js.map +1 -0
  215. package/dist/src/plugin/recovery.d.ts +61 -0
  216. package/dist/src/plugin/recovery.d.ts.map +1 -0
  217. package/dist/src/plugin/recovery.js +381 -0
  218. package/dist/src/plugin/recovery.js.map +1 -0
  219. package/dist/src/plugin/refresh-queue.d.ts +100 -0
  220. package/dist/src/plugin/refresh-queue.d.ts.map +1 -0
  221. package/dist/src/plugin/refresh-queue.js +247 -0
  222. package/dist/src/plugin/refresh-queue.js.map +1 -0
  223. package/dist/src/plugin/request-helpers.d.ts +282 -0
  224. package/dist/src/plugin/request-helpers.d.ts.map +1 -0
  225. package/dist/src/plugin/request-helpers.js +2343 -0
  226. package/dist/src/plugin/request-helpers.js.map +1 -0
  227. package/dist/src/plugin/request.d.ts +95 -0
  228. package/dist/src/plugin/request.d.ts.map +1 -0
  229. package/dist/src/plugin/request.js +1491 -0
  230. package/dist/src/plugin/request.js.map +1 -0
  231. package/dist/src/plugin/rotation.d.ts +169 -0
  232. package/dist/src/plugin/rotation.d.ts.map +1 -0
  233. package/dist/src/plugin/rotation.js +328 -0
  234. package/dist/src/plugin/rotation.js.map +1 -0
  235. package/dist/src/plugin/search.d.ts +32 -0
  236. package/dist/src/plugin/search.d.ts.map +1 -0
  237. package/dist/src/plugin/search.js +195 -0
  238. package/dist/src/plugin/search.js.map +1 -0
  239. package/dist/src/plugin/server.d.ts +23 -0
  240. package/dist/src/plugin/server.d.ts.map +1 -0
  241. package/dist/src/plugin/server.js +324 -0
  242. package/dist/src/plugin/server.js.map +1 -0
  243. package/dist/src/plugin/storage.d.ts +173 -0
  244. package/dist/src/plugin/storage.d.ts.map +1 -0
  245. package/dist/src/plugin/storage.js +674 -0
  246. package/dist/src/plugin/storage.js.map +1 -0
  247. package/dist/src/plugin/stores/signature-store.d.ts +5 -0
  248. package/dist/src/plugin/stores/signature-store.d.ts.map +1 -0
  249. package/dist/src/plugin/stores/signature-store.js +25 -0
  250. package/dist/src/plugin/stores/signature-store.js.map +1 -0
  251. package/dist/src/plugin/thinking-recovery.d.ts +90 -0
  252. package/dist/src/plugin/thinking-recovery.d.ts.map +1 -0
  253. package/dist/src/plugin/thinking-recovery.js +316 -0
  254. package/dist/src/plugin/thinking-recovery.js.map +1 -0
  255. package/dist/src/plugin/token.d.ts +19 -0
  256. package/dist/src/plugin/token.d.ts.map +1 -0
  257. package/dist/src/plugin/token.js +128 -0
  258. package/dist/src/plugin/token.js.map +1 -0
  259. package/dist/src/plugin/transform/claude.d.ts +80 -0
  260. package/dist/src/plugin/transform/claude.d.ts.map +1 -0
  261. package/dist/src/plugin/transform/claude.js +265 -0
  262. package/dist/src/plugin/transform/claude.js.map +1 -0
  263. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +35 -0
  264. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
  265. package/dist/src/plugin/transform/cross-model-sanitizer.js +225 -0
  266. package/dist/src/plugin/transform/cross-model-sanitizer.js.map +1 -0
  267. package/dist/src/plugin/transform/gemini.d.ts +100 -0
  268. package/dist/src/plugin/transform/gemini.d.ts.map +1 -0
  269. package/dist/src/plugin/transform/gemini.js +446 -0
  270. package/dist/src/plugin/transform/gemini.js.map +1 -0
  271. package/dist/src/plugin/transform/index.d.ts +15 -0
  272. package/dist/src/plugin/transform/index.d.ts.map +1 -0
  273. package/dist/src/plugin/transform/index.js +14 -0
  274. package/dist/src/plugin/transform/index.js.map +1 -0
  275. package/dist/src/plugin/transform/model-resolver.d.ts +99 -0
  276. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -0
  277. package/dist/src/plugin/transform/model-resolver.js +340 -0
  278. package/dist/src/plugin/transform/model-resolver.js.map +1 -0
  279. package/dist/src/plugin/transform/types.d.ts +111 -0
  280. package/dist/src/plugin/transform/types.d.ts.map +1 -0
  281. package/dist/src/plugin/transform/types.js +1 -0
  282. package/dist/src/plugin/transform/types.js.map +1 -0
  283. package/dist/src/plugin/types.d.ts +97 -0
  284. package/dist/src/plugin/types.d.ts.map +1 -0
  285. package/dist/src/plugin/types.js +1 -0
  286. package/dist/src/plugin/types.js.map +1 -0
  287. package/dist/src/plugin/ui/ansi.d.ts +32 -0
  288. package/dist/src/plugin/ui/ansi.d.ts.map +1 -0
  289. package/dist/src/plugin/ui/ansi.js +52 -0
  290. package/dist/src/plugin/ui/ansi.js.map +1 -0
  291. package/dist/src/plugin/ui/auth-menu.d.ts +33 -0
  292. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -0
  293. package/dist/src/plugin/ui/auth-menu.js +110 -0
  294. package/dist/src/plugin/ui/auth-menu.js.map +1 -0
  295. package/dist/src/plugin/ui/confirm.d.ts +2 -0
  296. package/dist/src/plugin/ui/confirm.d.ts.map +1 -0
  297. package/dist/src/plugin/ui/confirm.js +15 -0
  298. package/dist/src/plugin/ui/confirm.js.map +1 -0
  299. package/dist/src/plugin/ui/select.d.ts +23 -0
  300. package/dist/src/plugin/ui/select.d.ts.map +1 -0
  301. package/dist/src/plugin/ui/select.js +254 -0
  302. package/dist/src/plugin/ui/select.js.map +1 -0
  303. package/dist/src/plugin/version.d.ts +19 -0
  304. package/dist/src/plugin/version.d.ts.map +1 -0
  305. package/dist/src/plugin/version.js +80 -0
  306. package/dist/src/plugin/version.js.map +1 -0
  307. package/dist/src/plugin.d.ts +51 -0
  308. package/dist/src/plugin.d.ts.map +1 -0
  309. package/dist/src/plugin.js +2852 -0
  310. package/dist/src/plugin.js.map +1 -0
  311. package/dist/tui.js +420 -0
  312. package/package.json +99 -6
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Cross-Model Metadata Sanitization
3
+ *
4
+ * Fixes: "Invalid `signature` in `thinking` block" error when switching models mid-session.
5
+ *
6
+ * Root cause: Gemini stores thoughtSignature in metadata.google, Claude stores signature
7
+ * in top-level thinking blocks. Foreign signatures fail validation on the target model.
8
+ */
9
+ import { isClaudeModel } from "./claude";
10
+ import { isGeminiModel } from "./gemini";
11
+ const GEMINI_SIGNATURE_FIELDS = ["thoughtSignature", "thinkingMetadata"];
12
+ const CLAUDE_SIGNATURE_FIELDS = ["signature"];
13
+ export function getModelFamily(model) {
14
+ if (isClaudeModel(model))
15
+ return "claude";
16
+ if (isGeminiModel(model))
17
+ return "gemini";
18
+ return "unknown";
19
+ }
20
+ function isPlainObject(value) {
21
+ return typeof value === "object" && value !== null && !Array.isArray(value);
22
+ }
23
+ export function stripGeminiThinkingMetadata(part, preserveNonSignature = true) {
24
+ let stripped = 0;
25
+ if ("thoughtSignature" in part) {
26
+ delete part.thoughtSignature;
27
+ stripped++;
28
+ }
29
+ if ("thinkingMetadata" in part) {
30
+ delete part.thinkingMetadata;
31
+ stripped++;
32
+ }
33
+ if (isPlainObject(part.metadata)) {
34
+ const metadata = part.metadata;
35
+ if (isPlainObject(metadata.google)) {
36
+ const google = metadata.google;
37
+ for (const field of GEMINI_SIGNATURE_FIELDS) {
38
+ if (field in google) {
39
+ delete google[field];
40
+ stripped++;
41
+ }
42
+ }
43
+ if (!preserveNonSignature || Object.keys(google).length === 0) {
44
+ delete metadata.google;
45
+ }
46
+ if (Object.keys(metadata).length === 0) {
47
+ delete part.metadata;
48
+ }
49
+ }
50
+ }
51
+ return { part, stripped };
52
+ }
53
+ export function stripClaudeThinkingFields(part) {
54
+ let stripped = 0;
55
+ if (part.type === "thinking" || part.type === "redacted_thinking") {
56
+ for (const field of CLAUDE_SIGNATURE_FIELDS) {
57
+ if (field in part) {
58
+ delete part[field];
59
+ stripped++;
60
+ }
61
+ }
62
+ }
63
+ if ("signature" in part && typeof part.signature === "string") {
64
+ if (part.signature.length >= 50) {
65
+ delete part.signature;
66
+ stripped++;
67
+ }
68
+ }
69
+ return { part, stripped };
70
+ }
71
+ function sanitizePart(part, targetFamily, preserveNonSignature) {
72
+ if (!isPlainObject(part)) {
73
+ return { part, stripped: 0 };
74
+ }
75
+ let totalStripped = 0;
76
+ const partObj = { ...part };
77
+ if (targetFamily === "claude") {
78
+ const result = stripGeminiThinkingMetadata(partObj, preserveNonSignature);
79
+ totalStripped += result.stripped;
80
+ }
81
+ else if (targetFamily === "gemini") {
82
+ const result = stripClaudeThinkingFields(partObj);
83
+ totalStripped += result.stripped;
84
+ }
85
+ return { part: partObj, stripped: totalStripped };
86
+ }
87
+ function sanitizeParts(parts, targetFamily, preserveNonSignature) {
88
+ let totalStripped = 0;
89
+ const sanitizedParts = parts.map((part) => {
90
+ const result = sanitizePart(part, targetFamily, preserveNonSignature);
91
+ totalStripped += result.stripped;
92
+ return result.part;
93
+ });
94
+ return { parts: sanitizedParts, stripped: totalStripped };
95
+ }
96
+ function sanitizeContents(contents, targetFamily, preserveNonSignature) {
97
+ let totalStripped = 0;
98
+ const sanitizedContents = contents.map((content) => {
99
+ if (!isPlainObject(content))
100
+ return content;
101
+ const contentObj = { ...content };
102
+ if (Array.isArray(contentObj.parts)) {
103
+ const result = sanitizeParts(contentObj.parts, targetFamily, preserveNonSignature);
104
+ contentObj.parts = result.parts;
105
+ totalStripped += result.stripped;
106
+ }
107
+ return contentObj;
108
+ });
109
+ return { contents: sanitizedContents, stripped: totalStripped };
110
+ }
111
+ function sanitizeMessages(messages, targetFamily, preserveNonSignature) {
112
+ let totalStripped = 0;
113
+ const sanitizedMessages = messages.map((message) => {
114
+ if (!isPlainObject(message))
115
+ return message;
116
+ const messageObj = { ...message };
117
+ if (Array.isArray(messageObj.content)) {
118
+ const result = sanitizeParts(messageObj.content, targetFamily, preserveNonSignature);
119
+ messageObj.content = result.parts;
120
+ totalStripped += result.stripped;
121
+ }
122
+ return messageObj;
123
+ });
124
+ return { messages: sanitizedMessages, stripped: totalStripped };
125
+ }
126
+ export function deepSanitizeCrossModelMetadata(obj, targetFamily, preserveNonSignature = true) {
127
+ if (!isPlainObject(obj)) {
128
+ return { obj, stripped: 0 };
129
+ }
130
+ let totalStripped = 0;
131
+ const result = { ...obj };
132
+ if (Array.isArray(result.contents)) {
133
+ const sanitized = sanitizeContents(result.contents, targetFamily, preserveNonSignature);
134
+ result.contents = sanitized.contents;
135
+ totalStripped += sanitized.stripped;
136
+ }
137
+ if (Array.isArray(result.messages)) {
138
+ const sanitized = sanitizeMessages(result.messages, targetFamily, preserveNonSignature);
139
+ result.messages = sanitized.messages;
140
+ totalStripped += sanitized.stripped;
141
+ }
142
+ if (isPlainObject(result.extra_body)) {
143
+ const extraBody = { ...result.extra_body };
144
+ if (Array.isArray(extraBody.messages)) {
145
+ const sanitized = sanitizeMessages(extraBody.messages, targetFamily, preserveNonSignature);
146
+ extraBody.messages = sanitized.messages;
147
+ totalStripped += sanitized.stripped;
148
+ }
149
+ result.extra_body = extraBody;
150
+ }
151
+ if (Array.isArray(result.requests)) {
152
+ const sanitizedRequests = result.requests.map((req) => {
153
+ const sanitized = deepSanitizeCrossModelMetadata(req, targetFamily, preserveNonSignature);
154
+ totalStripped += sanitized.stripped;
155
+ return sanitized.obj;
156
+ });
157
+ result.requests = sanitizedRequests;
158
+ }
159
+ return { obj: result, stripped: totalStripped };
160
+ }
161
+ export function sanitizeCrossModelPayload(payload, options) {
162
+ const targetFamily = getModelFamily(options.targetModel);
163
+ if (targetFamily === "unknown") {
164
+ return {
165
+ payload,
166
+ modified: false,
167
+ signaturesStripped: 0,
168
+ };
169
+ }
170
+ const preserveNonSignature = options.preserveNonSignatureMetadata ?? true;
171
+ const result = deepSanitizeCrossModelMetadata(payload, targetFamily, preserveNonSignature);
172
+ return {
173
+ payload: result.obj,
174
+ modified: result.stripped > 0,
175
+ signaturesStripped: result.stripped,
176
+ };
177
+ }
178
+ export function sanitizeCrossModelPayloadInPlace(payload, options) {
179
+ const targetFamily = getModelFamily(options.targetModel);
180
+ if (targetFamily === "unknown") {
181
+ return 0;
182
+ }
183
+ const preserveNonSignature = options.preserveNonSignatureMetadata ?? true;
184
+ let totalStripped = 0;
185
+ const sanitizePartsInPlace = (parts) => {
186
+ for (const part of parts) {
187
+ if (!isPlainObject(part))
188
+ continue;
189
+ if (targetFamily === "claude") {
190
+ const result = stripGeminiThinkingMetadata(part, preserveNonSignature);
191
+ totalStripped += result.stripped;
192
+ }
193
+ else if (targetFamily === "gemini") {
194
+ const result = stripClaudeThinkingFields(part);
195
+ totalStripped += result.stripped;
196
+ }
197
+ }
198
+ };
199
+ if (Array.isArray(payload.contents)) {
200
+ for (const content of payload.contents) {
201
+ if (isPlainObject(content) && Array.isArray(content.parts)) {
202
+ sanitizePartsInPlace(content.parts);
203
+ }
204
+ }
205
+ }
206
+ if (Array.isArray(payload.messages)) {
207
+ for (const message of payload.messages) {
208
+ if (isPlainObject(message) && Array.isArray(message.content)) {
209
+ sanitizePartsInPlace(message.content);
210
+ }
211
+ }
212
+ }
213
+ if (isPlainObject(payload.extra_body)) {
214
+ const extraBody = payload.extra_body;
215
+ if (Array.isArray(extraBody.messages)) {
216
+ for (const message of extraBody.messages) {
217
+ if (isPlainObject(message) && Array.isArray(message.content)) {
218
+ sanitizePartsInPlace(message.content);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ return totalStripped;
224
+ }
225
+ //# sourceMappingURL=cross-model-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-model-sanitizer.js","sourceRoot":"","sources":["../../../../src/plugin/transform/cross-model-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Gemini-specific Request Transformations
3
+ *
4
+ * Handles Gemini model-specific request transformations including:
5
+ * - Thinking config (camelCase keys, thinkingLevel for Gemini 3)
6
+ * - Tool normalization (function/custom format)
7
+ * - Schema transformation (JSON Schema -> Gemini Schema format)
8
+ */
9
+ import type { RequestPayload, ThinkingConfig, ThinkingTier, GoogleSearchConfig } from "./types";
10
+ export declare function toGeminiSchema(schema: unknown): unknown;
11
+ /**
12
+ * Check if a model is a Gemini model (not Claude).
13
+ */
14
+ export declare function isGeminiModel(model: string): boolean;
15
+ /**
16
+ * Check if a model is Gemini 3 (uses thinkingLevel string).
17
+ */
18
+ export declare function isGemini3Model(model: string): boolean;
19
+ /**
20
+ * Check if a model is Gemini 2.5 (uses numeric thinkingBudget).
21
+ */
22
+ export declare function isGemini25Model(model: string): boolean;
23
+ /**
24
+ * Check if a model is an image generation model.
25
+ * Image models don't support thinking and require imageConfig.
26
+ */
27
+ export declare function isImageGenerationModel(model: string): boolean;
28
+ /**
29
+ * Build Gemini 3 thinking config with thinkingLevel string.
30
+ */
31
+ export declare function buildGemini3ThinkingConfig(includeThoughts: boolean, thinkingLevel: ThinkingTier): ThinkingConfig;
32
+ /**
33
+ * Build Gemini 2.5 thinking config with numeric thinkingBudget.
34
+ */
35
+ export declare function buildGemini25ThinkingConfig(includeThoughts: boolean, thinkingBudget?: number): ThinkingConfig;
36
+ /**
37
+ * Image generation config for Gemini image models.
38
+ *
39
+ * Supported aspect ratios: "1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "21:9"
40
+ */
41
+ export interface ImageConfig {
42
+ aspectRatio?: string;
43
+ }
44
+ /**
45
+ * Build image generation config for Gemini image models.
46
+ *
47
+ * Configuration is read from environment variables:
48
+ * - OPENCODE_IMAGE_ASPECT_RATIO: Aspect ratio (e.g., "16:9", "4:3")
49
+ *
50
+ * Defaults to 1:1 aspect ratio if not specified.
51
+ *
52
+ * Note: Resolution setting is not currently supported by the Antigravity API.
53
+ */
54
+ export declare function buildImageGenerationConfig(): ImageConfig;
55
+ /**
56
+ * Normalize tools for Gemini models.
57
+ * Ensures tools have proper function-style format.
58
+ *
59
+ * @returns Debug info about tool normalization
60
+ */
61
+ export declare function normalizeGeminiTools(payload: RequestPayload): {
62
+ toolDebugMissing: number;
63
+ toolDebugSummaries: string[];
64
+ };
65
+ /**
66
+ * Apply all Gemini-specific transformations to a request payload.
67
+ */
68
+ export interface GeminiTransformOptions {
69
+ /** The effective model name (resolved) */
70
+ model: string;
71
+ /** Tier-based thinking budget (from model suffix, for Gemini 2.5) */
72
+ tierThinkingBudget?: number;
73
+ /** Tier-based thinking level (from model suffix, for Gemini 3) */
74
+ tierThinkingLevel?: ThinkingTier;
75
+ /** Normalized thinking config from user settings */
76
+ normalizedThinking?: {
77
+ includeThoughts?: boolean;
78
+ thinkingBudget?: number;
79
+ };
80
+ /** Google Search configuration */
81
+ googleSearch?: GoogleSearchConfig;
82
+ }
83
+ export interface GeminiTransformResult {
84
+ toolDebugMissing: number;
85
+ toolDebugSummaries: string[];
86
+ /** Number of function declarations after wrapping */
87
+ wrappedFunctionCount: number;
88
+ /** Number of passthrough tools (googleSearch, googleSearchRetrieval, codeExecution) */
89
+ passthroughToolCount: number;
90
+ }
91
+ /**
92
+ * Apply all Gemini-specific transformations.
93
+ */
94
+ export declare function applyGeminiTransforms(payload: RequestPayload, options: GeminiTransformOptions): GeminiTransformResult;
95
+ export interface WrapToolsResult {
96
+ wrappedFunctionCount: number;
97
+ passthroughToolCount: number;
98
+ }
99
+ export declare function wrapToolsAsFunctionDeclarations(payload: RequestPayload): WrapToolsResult;
100
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/plugin/transform/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA0ChG,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAwEvD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,OAAO,EACxB,aAAa,EAAE,YAAY,GAC1B,cAAc,CAKhB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,OAAO,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,cAAc,CAKhB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,WAAW,CAYxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,GACtB;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,CA8G5D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,kCAAkC;IAClC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qDAAqD;IACrD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAyDvB;AAED,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAuCD,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAuGxF"}