@vibesdotdev/integrations-gemini 0.0.0-stage → 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +35 -2
  3. package/dist/ai/client.consumer.d.ts +9 -0
  4. package/dist/ai/client.consumer.d.ts.map +1 -0
  5. package/dist/ai/client.consumer.js +36 -0
  6. package/dist/ai/client.consumer.js.map +1 -0
  7. package/dist/ai/client.d.ts +10 -0
  8. package/dist/ai/client.d.ts.map +1 -0
  9. package/dist/ai/client.js +16 -0
  10. package/dist/ai/client.js.map +1 -0
  11. package/dist/ai/cloud.plugin.d.ts +6 -0
  12. package/dist/ai/cloud.plugin.d.ts.map +1 -0
  13. package/dist/ai/cloud.plugin.js +110 -0
  14. package/dist/ai/cloud.plugin.js.map +1 -0
  15. package/dist/ai/failure.d.ts +26 -0
  16. package/dist/ai/failure.d.ts.map +1 -0
  17. package/dist/ai/failure.js +31 -0
  18. package/dist/ai/failure.js.map +1 -0
  19. package/dist/ai/index.d.ts +6 -0
  20. package/dist/ai/index.d.ts.map +1 -0
  21. package/dist/ai/index.js +5 -0
  22. package/dist/ai/index.js.map +1 -0
  23. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-2-5-flash.json +18 -0
  24. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-2-5-pro.json +18 -0
  25. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-1-pro-preview.json +18 -0
  26. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-5-flash-lite.json +18 -0
  27. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-6-flash.json +18 -0
  28. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-8-flash.json +18 -0
  29. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-8-pro.json +18 -0
  30. package/dist/ai/metadata/provider-models/gemini/gemini-gemini-3-flash-preview.json +18 -0
  31. package/dist/ai/metadata/providers/gemini.json +8 -0
  32. package/dist/ai/provider.consumer.plugin.d.ts +5 -0
  33. package/dist/ai/provider.consumer.plugin.d.ts.map +1 -0
  34. package/dist/ai/provider.consumer.plugin.js +60 -0
  35. package/dist/ai/provider.consumer.plugin.js.map +1 -0
  36. package/dist/ai/provider.plugin.d.ts +2 -0
  37. package/dist/ai/provider.plugin.d.ts.map +1 -0
  38. package/dist/ai/provider.plugin.js +2 -0
  39. package/dist/ai/provider.plugin.js.map +1 -0
  40. package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.d.ts +4194 -0
  41. package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.d.ts.map +1 -0
  42. package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.js +16 -0
  43. package/dist/ai/providers/cloud/frontier/gemini/config/config.gemini.descriptor.js.map +1 -0
  44. package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.d.ts +27 -0
  45. package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.d.ts.map +1 -0
  46. package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.js +21 -0
  47. package/dist/ai/providers/cloud/frontier/gemini/config/schemas/index.js.map +1 -0
  48. package/dist/ai/providers/cloud/frontier/gemini/index.d.ts +5 -0
  49. package/dist/ai/providers/cloud/frontier/gemini/index.d.ts.map +1 -0
  50. package/dist/ai/providers/cloud/frontier/gemini/index.js +4 -0
  51. package/dist/ai/providers/cloud/frontier/gemini/index.js.map +1 -0
  52. package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.d.ts +183 -0
  53. package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.d.ts.map +1 -0
  54. package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.js +86 -0
  55. package/dist/ai/providers/cloud/frontier/gemini/provider.gemini.descriptor.js.map +1 -0
  56. package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.d.ts +140 -0
  57. package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.d.ts.map +1 -0
  58. package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.js +167 -0
  59. package/dist/ai/providers/gemini/antigravity-server/antigravity-failure.js.map +1 -0
  60. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.d.ts +25 -0
  61. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.d.ts.map +1 -0
  62. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.js +14 -0
  63. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.js.map +1 -0
  64. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.d.ts +33 -0
  65. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.d.ts.map +1 -0
  66. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.js +145 -0
  67. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.js.map +1 -0
  68. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.d.ts +13 -0
  69. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.d.ts.map +1 -0
  70. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.js +11 -0
  71. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.js.map +1 -0
  72. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.d.ts +33 -0
  73. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.d.ts.map +1 -0
  74. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.js +101 -0
  75. package/dist/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.js.map +1 -0
  76. package/dist/ai/providers/gemini/antigravity-server/client.d.ts +63 -0
  77. package/dist/ai/providers/gemini/antigravity-server/client.d.ts.map +1 -0
  78. package/dist/ai/providers/gemini/antigravity-server/client.js +177 -0
  79. package/dist/ai/providers/gemini/antigravity-server/client.js.map +1 -0
  80. package/dist/ai/providers/gemini/antigravity-server/connection.d.ts +141 -0
  81. package/dist/ai/providers/gemini/antigravity-server/connection.d.ts.map +1 -0
  82. package/dist/ai/providers/gemini/antigravity-server/connection.js +469 -0
  83. package/dist/ai/providers/gemini/antigravity-server/connection.js.map +1 -0
  84. package/dist/ai/providers/gemini/antigravity-server/failure-chunk.d.ts +10 -0
  85. package/dist/ai/providers/gemini/antigravity-server/failure-chunk.d.ts.map +1 -0
  86. package/dist/ai/providers/gemini/antigravity-server/failure-chunk.js +29 -0
  87. package/dist/ai/providers/gemini/antigravity-server/failure-chunk.js.map +1 -0
  88. package/dist/ai/providers/gemini/antigravity-server/index.d.ts +10 -0
  89. package/dist/ai/providers/gemini/antigravity-server/index.d.ts.map +1 -0
  90. package/dist/ai/providers/gemini/antigravity-server/index.js +10 -0
  91. package/dist/ai/providers/gemini/antigravity-server/index.js.map +1 -0
  92. package/dist/ai/providers/gemini/antigravity-server/protocol.d.ts +114 -0
  93. package/dist/ai/providers/gemini/antigravity-server/protocol.d.ts.map +1 -0
  94. package/dist/ai/providers/gemini/antigravity-server/protocol.js +112 -0
  95. package/dist/ai/providers/gemini/antigravity-server/protocol.js.map +1 -0
  96. package/dist/ai/providers/gemini/antigravity-server/runtime-execution.d.ts +41 -0
  97. package/dist/ai/providers/gemini/antigravity-server/runtime-execution.d.ts.map +1 -0
  98. package/dist/ai/providers/gemini/antigravity-server/runtime-execution.js +145 -0
  99. package/dist/ai/providers/gemini/antigravity-server/runtime-execution.js.map +1 -0
  100. package/dist/ai/providers/gemini/antigravity-server/session-records.d.ts +64 -0
  101. package/dist/ai/providers/gemini/antigravity-server/session-records.d.ts.map +1 -0
  102. package/dist/ai/providers/gemini/antigravity-server/session-records.js +39 -0
  103. package/dist/ai/providers/gemini/antigravity-server/session-records.js.map +1 -0
  104. package/dist/ai/providers/gemini/antigravity-server/session.d.ts +31 -0
  105. package/dist/ai/providers/gemini/antigravity-server/session.d.ts.map +1 -0
  106. package/dist/ai/providers/gemini/antigravity-server/session.js +153 -0
  107. package/dist/ai/providers/gemini/antigravity-server/session.js.map +1 -0
  108. package/dist/ai/providers/gemini/cli-probes.d.ts +75 -0
  109. package/dist/ai/providers/gemini/cli-probes.d.ts.map +1 -0
  110. package/dist/ai/providers/gemini/cli-probes.js +121 -0
  111. package/dist/ai/providers/gemini/cli-probes.js.map +1 -0
  112. package/dist/ai/providers/gemini/detection/index.d.ts +2 -0
  113. package/dist/ai/providers/gemini/detection/index.d.ts.map +1 -0
  114. package/dist/ai/providers/gemini/detection/index.js +2 -0
  115. package/dist/ai/providers/gemini/detection/index.js.map +1 -0
  116. package/dist/ai/providers/gemini/detection/system.d.ts +25 -0
  117. package/dist/ai/providers/gemini/detection/system.d.ts.map +1 -0
  118. package/dist/ai/providers/gemini/detection/system.js +81 -0
  119. package/dist/ai/providers/gemini/detection/system.js.map +1 -0
  120. package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.d.ts +4 -0
  121. package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.d.ts.map +1 -0
  122. package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.js +55 -0
  123. package/dist/ai/providers/gemini/docs/ai.providers.gemini.docs.descriptor.js.map +1 -0
  124. package/dist/ai/providers/gemini/gemini-cli-status.d.ts +42 -0
  125. package/dist/ai/providers/gemini/gemini-cli-status.d.ts.map +1 -0
  126. package/dist/ai/providers/gemini/gemini-cli-status.js +134 -0
  127. package/dist/ai/providers/gemini/gemini-cli-status.js.map +1 -0
  128. package/dist/ai/providers/gemini/gemini.provider.impl.consumer.d.ts +9 -0
  129. package/dist/ai/providers/gemini/gemini.provider.impl.consumer.d.ts.map +1 -0
  130. package/dist/ai/providers/gemini/gemini.provider.impl.consumer.js +60 -0
  131. package/dist/ai/providers/gemini/gemini.provider.impl.consumer.js.map +1 -0
  132. package/dist/ai/providers/gemini/gemini.provider.impl.d.ts +22 -0
  133. package/dist/ai/providers/gemini/gemini.provider.impl.d.ts.map +1 -0
  134. package/dist/ai/providers/gemini/gemini.provider.impl.js +143 -0
  135. package/dist/ai/providers/gemini/gemini.provider.impl.js.map +1 -0
  136. package/dist/ai/providers/gemini/index.d.ts +9 -0
  137. package/dist/ai/providers/gemini/index.d.ts.map +1 -0
  138. package/dist/ai/providers/gemini/index.js +7 -0
  139. package/dist/ai/providers/gemini/index.js.map +1 -0
  140. package/dist/ai/providers/gemini/recommendations.d.ts +24 -0
  141. package/dist/ai/providers/gemini/recommendations.d.ts.map +1 -0
  142. package/dist/ai/providers/gemini/recommendations.js +36 -0
  143. package/dist/ai/providers/gemini/recommendations.js.map +1 -0
  144. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.d.ts +34 -0
  145. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.d.ts.map +1 -0
  146. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.js +23 -0
  147. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.descriptor.js.map +1 -0
  148. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.d.ts +46 -0
  149. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.d.ts.map +1 -0
  150. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.js +165 -0
  151. package/dist/ai/specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.js.map +1 -0
  152. package/dist/ai/specs/cli-response.d.ts +12 -0
  153. package/dist/ai/specs/cli-response.d.ts.map +1 -0
  154. package/dist/ai/specs/cli-response.js +36 -0
  155. package/dist/ai/specs/cli-response.js.map +1 -0
  156. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.d.ts +32 -0
  157. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.d.ts.map +1 -0
  158. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.js +21 -0
  159. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.descriptor.js.map +1 -0
  160. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.d.ts +33 -0
  161. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.d.ts.map +1 -0
  162. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.js +84 -0
  163. package/dist/ai/specs/gemini-cli-exec/gemini-cli-exec.spec.impl.js.map +1 -0
  164. package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.d.ts +37 -0
  165. package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.d.ts.map +1 -0
  166. package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.js +34 -0
  167. package/dist/ai/specs/gemini-image/gemini-image.spec.descriptor.js.map +1 -0
  168. package/dist/ai/specs/gemini-image/gemini-image.spec.impl.d.ts +42 -0
  169. package/dist/ai/specs/gemini-image/gemini-image.spec.impl.d.ts.map +1 -0
  170. package/dist/ai/specs/gemini-image/gemini-image.spec.impl.js +116 -0
  171. package/dist/ai/specs/gemini-image/gemini-image.spec.impl.js.map +1 -0
  172. package/dist/external/antigravity/index.d.ts +162 -0
  173. package/dist/external/antigravity/index.d.ts.map +1 -0
  174. package/dist/external/antigravity/index.js +7 -0
  175. package/dist/external/antigravity/index.js.map +1 -0
  176. package/dist/external/antigravity/manifest.d.ts +6 -0
  177. package/dist/external/antigravity/manifest.d.ts.map +1 -0
  178. package/dist/external/antigravity/manifest.js +70 -0
  179. package/dist/external/antigravity/manifest.js.map +1 -0
  180. package/dist/external/antigravity-subscription.operation.descriptors.d.ts +61 -0
  181. package/dist/external/antigravity-subscription.operation.descriptors.d.ts.map +1 -0
  182. package/dist/external/antigravity-subscription.operation.descriptors.js +26 -0
  183. package/dist/external/antigravity-subscription.operation.descriptors.js.map +1 -0
  184. package/dist/external/antigravity-subscription.operations.d.ts +4 -0
  185. package/dist/external/antigravity-subscription.operations.d.ts.map +1 -0
  186. package/dist/external/antigravity-subscription.operations.js +49 -0
  187. package/dist/external/antigravity-subscription.operations.js.map +1 -0
  188. package/dist/external/external.plugin.d.ts +3 -0
  189. package/dist/external/external.plugin.d.ts.map +1 -0
  190. package/dist/external/external.plugin.js +30 -0
  191. package/dist/external/external.plugin.js.map +1 -0
  192. package/dist/external/gemini-cli/index.d.ts +162 -0
  193. package/dist/external/gemini-cli/index.d.ts.map +1 -0
  194. package/dist/external/gemini-cli/index.js +5 -0
  195. package/dist/external/gemini-cli/index.js.map +1 -0
  196. package/dist/external/gemini-cli/manifest.d.ts +10 -0
  197. package/dist/external/gemini-cli/manifest.d.ts.map +1 -0
  198. package/dist/external/gemini-cli/manifest.js +80 -0
  199. package/dist/external/gemini-cli/manifest.js.map +1 -0
  200. package/dist/external/gemini-presets.d.ts +817 -0
  201. package/dist/external/gemini-presets.d.ts.map +1 -0
  202. package/dist/external/gemini-presets.js +59 -0
  203. package/dist/external/gemini-presets.js.map +1 -0
  204. package/dist/external/index.d.ts +4 -0
  205. package/dist/external/index.d.ts.map +1 -0
  206. package/dist/external/index.js +4 -0
  207. package/dist/external/index.js.map +1 -0
  208. package/dist/failure-outcome.d.ts +25 -0
  209. package/dist/failure-outcome.d.ts.map +1 -0
  210. package/dist/failure-outcome.js +28 -0
  211. package/dist/failure-outcome.js.map +1 -0
  212. package/dist/index.d.ts +2 -0
  213. package/dist/index.d.ts.map +1 -0
  214. package/dist/index.js +2 -0
  215. package/dist/index.js.map +1 -0
  216. package/dist/schemas/cli.d.ts +97 -0
  217. package/dist/schemas/cli.d.ts.map +1 -0
  218. package/dist/schemas/cli.js +51 -0
  219. package/dist/schemas/cli.js.map +1 -0
  220. package/dist/schemas/health.d.ts +8 -0
  221. package/dist/schemas/health.d.ts.map +1 -0
  222. package/dist/schemas/health.js +6 -0
  223. package/dist/schemas/health.js.map +1 -0
  224. package/dist/schemas/imagen.d.ts +31 -0
  225. package/dist/schemas/imagen.d.ts.map +1 -0
  226. package/dist/schemas/imagen.js +18 -0
  227. package/dist/schemas/imagen.js.map +1 -0
  228. package/dist/schemas/mcp-config.d.ts +13 -0
  229. package/dist/schemas/mcp-config.d.ts.map +1 -0
  230. package/dist/schemas/mcp-config.js +13 -0
  231. package/dist/schemas/mcp-config.js.map +1 -0
  232. package/package.json +102 -4
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Typed failures of the Antigravity server integration.
3
+ *
4
+ * Every failure is a `CapabilityError` with a code and a `reason` from the table
5
+ * below, and a message that is fixed per reason. Text the child wrote (a result's
6
+ * `error`/`message`, a line that is not an event) never enters a message or a
7
+ * detail: it rides only in a bounded `cause` ({@link childTextCause}) the logger
8
+ * scrubs. The child's stderr is drained and discarded.
9
+ */
10
+ import { CapabilityError, CaughtFailureSchema, isCapabilityError, valueFreeFailure } from '@vibesdotdev/kernel';
11
+ import { boundedExcerpt } from '@vibesdotdev/external/jsonrpc';
12
+ import { settleNow as attempt } from '@vibesdotdev/kernel';
13
+ const FAILURES = {
14
+ 'antigravity-transport-closed': {
15
+ code: 'UNAVAILABLE',
16
+ message: 'The Antigravity server connection is closed.',
17
+ retryable: true
18
+ },
19
+ 'antigravity-process-exited': {
20
+ code: 'UNAVAILABLE',
21
+ message: 'The Antigravity server process ended or its stdio failed.',
22
+ retryable: true
23
+ },
24
+ 'antigravity-line-too-long': {
25
+ code: 'UNAVAILABLE',
26
+ message: 'The Antigravity server wrote a line longer than the declared maximum.',
27
+ retryable: false
28
+ },
29
+ 'antigravity-protocol-invalid': {
30
+ code: 'UNAVAILABLE',
31
+ message: 'The Antigravity server wrote output that is not a valid stream-json event.',
32
+ retryable: false
33
+ },
34
+ 'antigravity-event-overflow': {
35
+ code: 'UNAVAILABLE',
36
+ message: 'The Antigravity server wrote events faster than the session consumed them.',
37
+ retryable: false
38
+ },
39
+ 'antigravity-init-timeout': {
40
+ code: 'TIMEOUT',
41
+ message: 'The Antigravity server did not announce itself within the declared deadline.',
42
+ retryable: true
43
+ },
44
+ 'antigravity-turn-timeout': {
45
+ code: 'TIMEOUT',
46
+ message: 'The Antigravity turn timed out before it completed.',
47
+ retryable: true
48
+ },
49
+ 'generation-cancelled': {
50
+ code: 'CANCELLED',
51
+ message: 'The generation was cancelled.',
52
+ retryable: false
53
+ },
54
+ 'antigravity-turn-failed': {
55
+ code: 'UNAVAILABLE',
56
+ message: 'The Antigravity turn did not complete.',
57
+ retryable: false
58
+ },
59
+ 'antigravity-empty-response': {
60
+ code: 'UNAVAILABLE',
61
+ message: 'The Antigravity turn completed without any assistant text.',
62
+ retryable: false
63
+ },
64
+ 'antigravity-output-too-large': {
65
+ code: 'UNAVAILABLE',
66
+ message: 'The Antigravity turn produced more output than the declared bound.',
67
+ retryable: false
68
+ },
69
+ 'antigravity-kill-failed': {
70
+ code: 'UNAVAILABLE',
71
+ message: 'The Antigravity server process could not be confirmed stopped.',
72
+ retryable: false
73
+ },
74
+ 'antigravity-transport-close-failed': {
75
+ code: 'UNAVAILABLE',
76
+ message: 'An Antigravity server connection could not be closed.',
77
+ retryable: false
78
+ },
79
+ 'antigravity-consumer-host-required': {
80
+ code: 'UNAVAILABLE',
81
+ message: 'Antigravity subscription execution requires a connected consumer host.',
82
+ retryable: false
83
+ },
84
+ 'antigravity-execution-unavailable': {
85
+ code: 'UNAVAILABLE',
86
+ message: "No 'runtime/execution' implementation is registered in consumer scope.",
87
+ retryable: false
88
+ },
89
+ 'antigravity-session-program-missing': {
90
+ code: 'INTERNAL',
91
+ message: 'The selected spec did not provide an Antigravity session program.',
92
+ retryable: false
93
+ },
94
+ 'antigravity-stdio-missing': {
95
+ code: 'INTERNAL',
96
+ message: 'The Antigravity process was started without piped stdin and stdout.',
97
+ retryable: false
98
+ },
99
+ 'antigravity-no-result': {
100
+ code: 'UNAVAILABLE',
101
+ message: 'The Antigravity session ended without a final result.',
102
+ retryable: false
103
+ },
104
+ 'invalid-transport-record': {
105
+ code: 'UNAVAILABLE',
106
+ message: 'The transport delivered a record the Antigravity spec cannot read.',
107
+ retryable: false
108
+ },
109
+ 'unsupported-modality': {
110
+ code: 'INVALID_INPUT',
111
+ message: 'The Antigravity server spec only supports text generation.',
112
+ retryable: false
113
+ },
114
+ 'unsupported-option': {
115
+ code: 'INVALID_INPUT',
116
+ message: 'The Antigravity server was given an option it does not support.',
117
+ retryable: false
118
+ }
119
+ };
120
+ function isFailureReason(reason) {
121
+ return Object.hasOwn(FAILURES, reason);
122
+ }
123
+ /** Every reason this integration raises, for the SPEC table and its test. */
124
+ export const ANTIGRAVITY_FAILURE_REASONS = Object.keys(FAILURES).filter(isFailureReason);
125
+ /** A typed failure with its reason's fixed message; `details` and `cause` are the caller's bounded facts. */
126
+ export function antigravityFailure(reason, extra = {}) {
127
+ const terms = FAILURES[reason];
128
+ const options = { reason, retryable: terms.retryable };
129
+ if (extra.details !== undefined)
130
+ options.details = extra.details;
131
+ if (extra.cause !== undefined)
132
+ options.cause = extra.cause;
133
+ return new CapabilityError(terms.message, terms.code, options);
134
+ }
135
+ /**
136
+ * Text the child wrote, kept only as the `cause` of a typed failure: at most 200
137
+ * characters, with control, format and separator characters removed.
138
+ */
139
+ export function childTextCause(text) {
140
+ return new Error(boundedExcerpt(text));
141
+ }
142
+ /**
143
+ * Any caught failure as a typed one. A failure that already carries one of this
144
+ * package's reasons is the answer as it is; any other (a runtime refusal, a host
145
+ * failure) stays itself when typed, and an untyped one becomes `untyped` with the
146
+ * failure as its cause. Reading a hostile value (a Proxy that traps `name`) never
147
+ * throws: it is known by its value-free facts.
148
+ */
149
+ export function antigravityFailureFrom(caught) {
150
+ const failure = CaughtFailureSchema.parse(caught);
151
+ const read = attempt(() => isCapabilityError(failure));
152
+ if (!read.ok) {
153
+ return new CapabilityError('The Antigravity server failed unexpectedly.', 'INTERNAL', {
154
+ reason: 'untyped',
155
+ details: { failure: { ...valueFreeFailure(failure) } },
156
+ cause: read.cause
157
+ });
158
+ }
159
+ if (!read.value || !isCapabilityError(failure)) {
160
+ return new CapabilityError('The Antigravity server failed unexpectedly.', 'INTERNAL', {
161
+ reason: 'untyped',
162
+ cause: failure
163
+ });
164
+ }
165
+ return failure;
166
+ }
167
+ //# sourceMappingURL=antigravity-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-failure.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAIhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ3D,MAAM,QAAQ,GAAG;IAChB,8BAA8B,EAAE;QAC/B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,8CAA8C;QACvD,SAAS,EAAE,IAAI;KACf;IACD,4BAA4B,EAAE;QAC7B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,2DAA2D;QACpE,SAAS,EAAE,IAAI;KACf;IACD,2BAA2B,EAAE;QAC5B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,uEAAuE;QAChF,SAAS,EAAE,KAAK;KAChB;IACD,8BAA8B,EAAE;QAC/B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,4EAA4E;QACrF,SAAS,EAAE,KAAK;KAChB;IACD,4BAA4B,EAAE;QAC7B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,4EAA4E;QACrF,SAAS,EAAE,KAAK;KAChB;IACD,0BAA0B,EAAE;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,8EAA8E;QACvF,SAAS,EAAE,IAAI;KACf;IACD,0BAA0B,EAAE;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,qDAAqD;QAC9D,SAAS,EAAE,IAAI;KACf;IACD,sBAAsB,EAAE;QACvB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE,KAAK;KAChB;IACD,yBAAyB,EAAE;QAC1B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,wCAAwC;QACjD,SAAS,EAAE,KAAK;KAChB;IACD,4BAA4B,EAAE;QAC7B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,4DAA4D;QACrE,SAAS,EAAE,KAAK;KAChB;IACD,8BAA8B,EAAE;QAC/B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,oEAAoE;QAC7E,SAAS,EAAE,KAAK;KAChB;IACD,yBAAyB,EAAE;QAC1B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,gEAAgE;QACzE,SAAS,EAAE,KAAK;KAChB;IACD,oCAAoC,EAAE;QACrC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,uDAAuD;QAChE,SAAS,EAAE,KAAK;KAChB;IACD,oCAAoC,EAAE;QACrC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,wEAAwE;QACjF,SAAS,EAAE,KAAK;KAChB;IACD,mCAAmC,EAAE;QACpC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,wEAAwE;QACjF,SAAS,EAAE,KAAK;KAChB;IACD,qCAAqC,EAAE;QACtC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,mEAAmE;QAC5E,SAAS,EAAE,KAAK;KAChB;IACD,2BAA2B,EAAE;QAC5B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,qEAAqE;QAC9E,SAAS,EAAE,KAAK;KAChB;IACD,uBAAuB,EAAE;QACxB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,uDAAuD;QAChE,SAAS,EAAE,KAAK;KAChB;IACD,0BAA0B,EAAE;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,oEAAoE;QAC7E,SAAS,EAAE,KAAK;KAChB;IACD,sBAAsB,EAAE;QACvB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,4DAA4D;QACrE,SAAS,EAAE,KAAK;KAChB;IACD,oBAAoB,EAAE;QACrB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iEAAiE;QAC1E,SAAS,EAAE,KAAK;KAChB;CAC+C,CAAC;AAIlD,SAAS,eAAe,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAwC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE9H,6GAA6G;AAC7G,MAAM,UAAU,kBAAkB,CACjC,MAAgC,EAChC,QAAiF,EAAE;IAEnF,MAAM,KAAK,GAAiB,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAqD,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACzG,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACjE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3D,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC3D,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,eAAe,CAAC,6CAA6C,EAAE,UAAU,EAAE;YACrF,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE;YACtD,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,eAAe,CAAC,6CAA6C,EAAE,UAAU,EAAE;YACrF,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,OAAO;SACd,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,25 @@
1
+ declare const _default: {
2
+ id: string;
3
+ kind: "ai/spec";
4
+ name: string;
5
+ description: string;
6
+ modalities: ("image" | "text" | "audio" | "video" | "embedding" | "transcription" | "evaluation" | "speech" | "ocr")[];
7
+ streamFraming: "none" | "sse" | "sse-named" | "ndjson" | "binary-chunked" | "ws-frame";
8
+ toolCallEnvelope: string;
9
+ transports: string[];
10
+ external: boolean;
11
+ priority: number;
12
+ enabled: boolean;
13
+ capabilities?: ("streaming" | "json_mode" | "text_generation" | "chat_completion" | "function_calling" | "embedding_generation" | "image_generation_text_to_image" | "image_generation_image_to_image" | "image_generation_inpainting" | "image_generation_outpainting" | "image_upscaling" | "image_editing_via_instructions" | "audio_generation_text_to_speech" | "audio_generation_voice_cloning" | "audio_generation_music" | "audio_generation_sound_effects" | "audio_transcription" | "audio_transcription_realtime" | "video_generation_text_to_video" | "workflow_execution" | "code_generation" | "image_understanding" | "structured_evaluation")[] | undefined;
14
+ imageControls?: {
15
+ steps: boolean;
16
+ cfg: boolean;
17
+ sampler: boolean;
18
+ scheduler: boolean;
19
+ negativePrompt: boolean;
20
+ seed: boolean;
21
+ } | undefined;
22
+ tags?: string[] | undefined;
23
+ };
24
+ export default _default;
25
+ //# sourceMappingURL=antigravity-server.spec.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.spec.descriptor.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAYG"}
@@ -0,0 +1,14 @@
1
+ import { createAISpecDescriptor } from '@vibesdotdev/ai/specs/schemas/descriptor';
2
+ export default createAISpecDescriptor({
3
+ id: 'antigravity-server',
4
+ name: 'Google Antigravity Server',
5
+ description: 'Subscription-backed Google One / Gemini generation over the Antigravity CLI stream-json protocol.',
6
+ modalities: ['text'],
7
+ streamFraming: 'none',
8
+ toolCallEnvelope: 'none',
9
+ transports: ['antigravity-server'],
10
+ capabilities: ['text_generation', 'function_calling'],
11
+ priority: 100,
12
+ tags: ['google', 'gemini', 'antigravity', 'google-oauth', 'subscription', 'consumer-only']
13
+ });
14
+ //# sourceMappingURL=antigravity-server.spec.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.spec.descriptor.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.spec.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,eAAe,sBAAsB,CAAC;IACrC,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACV,mGAAmG;IACpG,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,MAAM;IACxB,UAAU,EAAE,CAAC,oBAAoB,CAAC;IAClC,YAAY,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IACrD,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC;CAC1F,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type AISpecInterface, type DecodedEvent, type SpecCallContext, type WireRequest, type WireResponseChunk } from '@vibesdotdev/ai/specs/interfaces';
2
+ import type { GenerationRequest } from '@vibesdotdev/ai/interfaces/adapter';
3
+ import type { Modality } from '@vibesdotdev/ai/models/schemas/constants';
4
+ declare class AntigravityServerSpec implements AISpecInterface {
5
+ readonly descriptor: {
6
+ id: string;
7
+ kind: "ai/spec";
8
+ name: string;
9
+ description: string;
10
+ modalities: ("image" | "text" | "audio" | "video" | "embedding" | "transcription" | "evaluation" | "speech" | "ocr")[];
11
+ streamFraming: "none" | "sse" | "sse-named" | "ndjson" | "binary-chunked" | "ws-frame";
12
+ toolCallEnvelope: string;
13
+ transports: string[];
14
+ external: boolean;
15
+ priority: number;
16
+ enabled: boolean;
17
+ capabilities?: ("streaming" | "json_mode" | "text_generation" | "chat_completion" | "function_calling" | "embedding_generation" | "image_generation_text_to_image" | "image_generation_image_to_image" | "image_generation_inpainting" | "image_generation_outpainting" | "image_upscaling" | "image_editing_via_instructions" | "audio_generation_text_to_speech" | "audio_generation_voice_cloning" | "audio_generation_music" | "audio_generation_sound_effects" | "audio_transcription" | "audio_transcription_realtime" | "video_generation_text_to_video" | "workflow_execution" | "code_generation" | "image_understanding" | "structured_evaluation")[] | undefined;
18
+ imageControls?: {
19
+ steps: boolean;
20
+ cfg: boolean;
21
+ sampler: boolean;
22
+ scheduler: boolean;
23
+ negativePrompt: boolean;
24
+ seed: boolean;
25
+ } | undefined;
26
+ tags?: string[] | undefined;
27
+ };
28
+ encodeRequest<M extends Modality>(request: GenerationRequest<M>, context: SpecCallContext): WireRequest;
29
+ decodeResponse<M extends Modality>(chunks: AsyncIterable<WireResponseChunk>, request: GenerationRequest<M>, _context: SpecCallContext): AsyncIterable<DecodedEvent<M>>;
30
+ }
31
+ declare const antigravityServerSpec: AntigravityServerSpec;
32
+ export default antigravityServerSpec;
33
+ //# sourceMappingURL=antigravity-server.spec.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.spec.impl.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAEX,iBAAiB,EAEjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAUzE,cAAM,qBAAsB,YAAW,eAAe;IACrD,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;MAAc;IAEjC,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC/B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,eAAe,GACtB,WAAW;IAmCP,cAAc,CAAC,CAAC,SAAS,QAAQ,EACvC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACxC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,eAAe,GACvB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CA0CjC;AA+DD,QAAA,MAAM,qBAAqB,uBAA8B,CAAC;AAC1D,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,145 @@
1
+ import * as z from 'zod/v4';
2
+ import { isTextRequest, textResultEvent } from '@vibesdotdev/ai/specs/interfaces';
3
+ import { settleNow as attempt } from '@vibesdotdev/kernel';
4
+ import descriptor from "./antigravity-server.spec.descriptor.js";
5
+ import { antigravityFailure, antigravityFailureFrom } from "./antigravity-failure.js";
6
+ import { createAntigravityServerSessionProgram } from "./session.js";
7
+ import { AntigravitySessionRecordSchema } from "./session-records.js";
8
+ import { resolveAntigravityModel } from "../../../specs/antigravity-cli-exec/antigravity-cli-exec.spec.impl.js";
9
+ import { normalizeWorkspacePath } from "./runtime-execution.js";
10
+ class AntigravityServerSpec {
11
+ descriptor = descriptor;
12
+ encodeRequest(request, context) {
13
+ if (!isTextRequest(request)) {
14
+ throw antigravityFailure('unsupported-modality');
15
+ }
16
+ // The child's user turn is text only (`{ content: string }`): an image would be dropped and the
17
+ // model, asked about a picture it never received, ends the turn with no text. Refuse it here.
18
+ if (request.messages.some((message) => (message.images?.length ?? 0) > 0)) {
19
+ throw antigravityFailure('unsupported-option', { details: { option: 'images' } });
20
+ }
21
+ // Reading a request is reading untrusted values: a getter that throws, a message that cannot be
22
+ // serialized, a path hint of the wrong type end as the typed refusal, never a raw throw.
23
+ const read = attempt(() => ({
24
+ prompt: encodePrompt(request.messages),
25
+ selection: resolveAntigravityModel(context.wireModelId, request.reasoningEffort),
26
+ cwd: normalizeWorkspacePath(resolveWorkspacePath(context, request))
27
+ }));
28
+ if (!read.ok)
29
+ throw requestRefusal(read.cause);
30
+ const { prompt, selection, cwd: resolvedCwd } = read.value;
31
+ const body = { prompt, model: selection.model, effort: selection.effort };
32
+ if (resolvedCwd)
33
+ body.cwd = resolvedCwd;
34
+ return {
35
+ method: 'POST',
36
+ path: '',
37
+ headers: {},
38
+ body: {
39
+ ...body,
40
+ sessionProgram: createAntigravityServerSessionProgram(body)
41
+ },
42
+ streaming: true
43
+ };
44
+ }
45
+ async *decodeResponse(chunks, request, _context) {
46
+ let resulted = false;
47
+ for await (const chunk of chunks) {
48
+ if (chunk.kind === 'error') {
49
+ yield { kind: 'error', error: chunk.error };
50
+ return;
51
+ }
52
+ // The transport frames the exchange with `headers` and `end`; both carry nothing to decode.
53
+ if (chunk.kind === 'headers' || chunk.kind === 'end')
54
+ continue;
55
+ if (chunk.kind !== 'ndjson-record') {
56
+ yield { kind: 'error', error: antigravityFailure('invalid-transport-record', { details: { chunk: chunk.kind } }) };
57
+ return;
58
+ }
59
+ const record = readSessionRecord(chunk.data);
60
+ if (!record.ok) {
61
+ yield { kind: 'error', error: record.failure };
62
+ return;
63
+ }
64
+ const event = record.value;
65
+ switch (event.type) {
66
+ case 'text-delta':
67
+ case 'thinking-delta':
68
+ yield { kind: event.type, delta: event.delta };
69
+ break;
70
+ case 'tool-call-start':
71
+ yield { kind: 'tool-call-start', id: event.id, name: event.name };
72
+ break;
73
+ case 'tool-call-arg-delta':
74
+ yield { kind: 'tool-call-arg-delta', id: event.id, delta: event.delta };
75
+ break;
76
+ case 'tool-call-end':
77
+ yield { kind: 'tool-call-end', id: event.id };
78
+ break;
79
+ case 'result':
80
+ resulted = true;
81
+ yield textResultEvent(request, event.result);
82
+ break;
83
+ }
84
+ }
85
+ // A stream that ended with no result is a failed turn, never a silent empty one.
86
+ if (!resulted)
87
+ yield { kind: 'error', error: antigravityFailure('antigravity-no-result') };
88
+ }
89
+ }
90
+ /** One `ndjson-record` of the session as a typed record; anything else is the typed refusal (never skipped). */
91
+ function readSessionRecord(data) {
92
+ const refusal = (paths) => ({
93
+ ok: false,
94
+ failure: antigravityFailure('invalid-transport-record', paths ? { details: { paths } } : {})
95
+ });
96
+ const parsed = attempt(() => JSON.parse(data));
97
+ if (!parsed.ok)
98
+ return refusal();
99
+ const read = attempt(() => AntigravitySessionRecordSchema.safeParse(parsed.value));
100
+ if (!read.ok)
101
+ return refusal();
102
+ if (!read.value.success) {
103
+ return refusal(read.value.error.issues.slice(0, 8).map((issue) => issue.path.map(String).join('.').slice(0, 80) || '(root)'));
104
+ }
105
+ return { ok: true, value: read.value.data };
106
+ }
107
+ /** A failure while reading the request becomes the typed refusal; one that is already typed stays itself. */
108
+ function requestRefusal(cause) {
109
+ const failure = antigravityFailureFrom(cause);
110
+ if (failure.reason !== 'untyped')
111
+ return failure;
112
+ return antigravityFailure('unsupported-option', { details: { stage: 'read-request' }, cause });
113
+ }
114
+ /** A workspace path hint: a non-empty string, else absent (a value of any other type is not a path). */
115
+ const PathHintSchema = z.string().min(1).optional().catch(undefined);
116
+ const ContextHintsSchema = z.object({ workspacePath: PathHintSchema, cwd: PathHintSchema });
117
+ const RequestHintsSchema = z.object({
118
+ workspacePath: PathHintSchema,
119
+ metadata: z.object({ workspacePath: PathHintSchema }).optional().catch(undefined)
120
+ });
121
+ function resolveWorkspacePath(context, request) {
122
+ const fromContext = ContextHintsSchema.parse(context);
123
+ const fromRequest = RequestHintsSchema.parse(request);
124
+ return (PathHintSchema.parse(context.executionPolicy?.workspacePath) ??
125
+ fromContext.workspacePath ??
126
+ fromContext.cwd ??
127
+ fromRequest.workspacePath ??
128
+ fromRequest.metadata?.workspacePath);
129
+ }
130
+ const TextContentSchema = z.string();
131
+ function encodePrompt(messages) {
132
+ const only = messages.length === 1 ? TextContentSchema.safeParse(messages[0]?.content) : undefined;
133
+ if (only?.success)
134
+ return only.data;
135
+ return messages
136
+ .map((message) => {
137
+ const text = TextContentSchema.safeParse(message.content);
138
+ const content = text.success ? text.data : JSON.stringify(message.content);
139
+ return `<${message.role}>\n${content}\n</${message.role}>`;
140
+ })
141
+ .join('\n\n');
142
+ }
143
+ const antigravityServerSpec = new AntigravityServerSpec();
144
+ export default antigravityServerSpec;
145
+ //# sourceMappingURL=antigravity-server.spec.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.spec.impl.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.spec.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ declare const _default: {
2
+ id: string;
3
+ kind: "ai/transport";
4
+ name: string;
5
+ description: string;
6
+ scopes: ("cloud" | "consumer")[];
7
+ bidirectional: boolean;
8
+ cancellable: boolean;
9
+ enabled: boolean;
10
+ tags?: string[] | undefined;
11
+ };
12
+ export default _default;
13
+ //# sourceMappingURL=antigravity-server.transport.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.transport.descriptor.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,wBASG"}
@@ -0,0 +1,11 @@
1
+ import { createAITransportDescriptor } from '@vibesdotdev/ai/transports/schemas/descriptor';
2
+ export default createAITransportDescriptor({
3
+ id: 'antigravity-server',
4
+ name: 'Antigravity Server',
5
+ description: 'Persistent Google One subscription session through the Antigravity stream-json protocol.',
6
+ scopes: ['consumer'],
7
+ bidirectional: true,
8
+ cancellable: true,
9
+ tags: ['google', 'gemini', 'antigravity', 'stream-json', 'consumer-only']
10
+ });
11
+ //# sourceMappingURL=antigravity-server.transport.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.transport.descriptor.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.transport.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAE5F,eAAe,2BAA2B,CAAC;IAC1C,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACV,0FAA0F;IAC3F,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC;CACzE,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { AITransportInterface, TransportCallOptions } from '@vibesdotdev/ai/transports/interfaces';
2
+ import type { WireRequest, WireResponseChunk } from '@vibesdotdev/ai/specs/interfaces';
3
+ import { type AntigravityConnectOptions, type AntigravityServerRuntime, type AntigravityServerSpawner } from './connection.ts';
4
+ /**
5
+ * Process transport for Antigravity's stream-json channel, one runtime per
6
+ * transport. Each call owns one child for the length of the call (a turn is the
7
+ * whole conversation the spec encoded), so a dead child is never reused: the
8
+ * connection that marked itself closed is dropped with its call and the next call
9
+ * spawns a new child. The transport tracks the children of its in-flight calls so
10
+ * that `close()` (the plugin's dispose) stops them and reports a failed stop.
11
+ */
12
+ export declare class AntigravityServerTransport implements AITransportInterface {
13
+ #private;
14
+ private readonly runtime;
15
+ private readonly spawner;
16
+ private readonly connectOptions;
17
+ readonly descriptor: {
18
+ id: string;
19
+ kind: "ai/transport";
20
+ name: string;
21
+ description: string;
22
+ scopes: ("cloud" | "consumer")[];
23
+ bidirectional: boolean;
24
+ cancellable: boolean;
25
+ enabled: boolean;
26
+ tags?: string[] | undefined;
27
+ };
28
+ constructor(runtime: AntigravityServerRuntime, spawner: AntigravityServerSpawner, connectOptions?: AntigravityConnectOptions);
29
+ send(request: WireRequest, options: TransportCallOptions): AsyncIterable<WireResponseChunk>;
30
+ /** Stops the child of every call in flight and refuses new calls; a failure to stop a child is raised to the caller. */
31
+ close(): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=antigravity-server.transport.impl.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.transport.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMvF,OAAO,EAGN,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,MAAM,iBAAiB,CAAC;AAqBzB;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;;IAMrE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPhC,QAAQ,CAAC,UAAU;;;;;;;;;;MAAc;gBAKf,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,wBAAwB,EACjC,cAAc,GAAE,yBAA8B;IAGhE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IAI3F,wHAAwH;IAClH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAsD5B"}
@@ -0,0 +1,101 @@
1
+ import * as z from 'zod/v4';
2
+ import { getLogger } from '@vibesdotdev/logging';
3
+ import descriptor from "./antigravity-server.transport.descriptor.js";
4
+ import { settle } from '@vibesdotdev/kernel';
5
+ import { antigravityFailure } from "./antigravity-failure.js";
6
+ import { AntigravityConnection, AntigravityEffortSchema } from "./connection.js";
7
+ import { failureAsChunk } from "./failure-chunk.js";
8
+ import { AIExecutionPolicySchema } from '@vibesdotdev/ai/schemas/execution-policy';
9
+ import { approvalBypassDeclared, normalizeWorkspacePath } from "./runtime-execution.js";
10
+ /** The spec attaches its session program to the request body in process; it never crosses a wire. */
11
+ const SessionBodySchema = z.object({
12
+ sessionProgram: z.custom((program) => program instanceof Function)
13
+ });
14
+ /** The execution policy a call declares: absent is no policy. */
15
+ const PolicySchema = AIExecutionPolicySchema.optional();
16
+ /** What the body says about the child this call needs. */
17
+ const SpawnBodySchema = z.object({
18
+ cwd: z.string().min(1).max(8_192).optional(),
19
+ model: z.string().min(1).max(256).optional(),
20
+ effort: AntigravityEffortSchema.optional()
21
+ });
22
+ /**
23
+ * Process transport for Antigravity's stream-json channel, one runtime per
24
+ * transport. Each call owns one child for the length of the call (a turn is the
25
+ * whole conversation the spec encoded), so a dead child is never reused: the
26
+ * connection that marked itself closed is dropped with its call and the next call
27
+ * spawns a new child. The transport tracks the children of its in-flight calls so
28
+ * that `close()` (the plugin's dispose) stops them and reports a failed stop.
29
+ */
30
+ export class AntigravityServerTransport {
31
+ runtime;
32
+ spawner;
33
+ connectOptions;
34
+ descriptor = descriptor;
35
+ #active = new Set();
36
+ #closed = false;
37
+ constructor(runtime, spawner, connectOptions = {}) {
38
+ this.runtime = runtime;
39
+ this.spawner = spawner;
40
+ this.connectOptions = connectOptions;
41
+ }
42
+ send(request, options) {
43
+ return failureAsChunk(this.#run(request, options));
44
+ }
45
+ /** Stops the child of every call in flight and refuses new calls; a failure to stop a child is raised to the caller. */
46
+ async close() {
47
+ this.#closed = true;
48
+ const connections = [...this.#active];
49
+ this.#active.clear();
50
+ const closed = await Promise.all(connections.map((connection) => settle(() => connection.close())));
51
+ const failures = closed.flatMap((outcome) => (!outcome.ok ? [outcome.cause] : []));
52
+ if (failures.length === 0)
53
+ return;
54
+ throw antigravityFailure('antigravity-transport-close-failed', {
55
+ details: { failed: failures.length, of: connections.length },
56
+ cause: new AggregateError(failures)
57
+ });
58
+ }
59
+ async *#run(request, options) {
60
+ const program = SessionBodySchema.safeParse(request.body);
61
+ if (!program.success)
62
+ throw antigravityFailure('antigravity-session-program-missing');
63
+ const spawn = SpawnBodySchema.safeParse(request.body);
64
+ if (!spawn.success) {
65
+ const fields = spawn.error.issues.slice(0, 8).map((issue) => issue.path.map(String).join('.') || '(root)');
66
+ throw antigravityFailure('unsupported-option', { details: { fields } });
67
+ }
68
+ if (this.#closed)
69
+ throw antigravityFailure('antigravity-transport-closed', { details: { by: 'transport-closed' } });
70
+ if (options.signal?.aborted)
71
+ throw antigravityFailure('generation-cancelled', { details: { stage: 'before-connect' } });
72
+ // The declared policy decides whether the child may skip its approval prompts: a policy that does not
73
+ // parse is refused, never read as absent (absent is the safe default, so a bad one must not look like it).
74
+ const policy = PolicySchema.safeParse(options.executionPolicy);
75
+ if (!policy.success)
76
+ throw antigravityFailure('unsupported-option', { details: { fields: ['executionPolicy'] } });
77
+ const cwd = normalizeWorkspacePath(options.cwd ?? spawn.data.cwd ?? policy.data?.workspacePath);
78
+ const connection = await AntigravityConnection.connect(this.runtime, this.spawner, { cwd, model: spawn.data.model, effort: spawn.data.effort, skipPermissions: approvalBypassDeclared(policy.data) }, { ...this.connectOptions, signal: options.signal });
79
+ this.#active.add(connection);
80
+ try {
81
+ if (this.#closed)
82
+ throw antigravityFailure('antigravity-transport-closed', { details: { by: 'transport-closed' } });
83
+ yield* program.data.sessionProgram(connection, options);
84
+ }
85
+ finally {
86
+ if (await this.#reap(connection))
87
+ this.#active.delete(connection);
88
+ }
89
+ }
90
+ /** Stops the child of a call that ended; a failure is reported in the log (the call's own outcome stands) and never dropped. */
91
+ async #reap(connection) {
92
+ const closed = await settle(() => connection.close());
93
+ if (closed.ok)
94
+ return true;
95
+ getLogger('integrations-gemini', this.runtime).child('antigravity-server').warn('antigravity-server child could not be stopped after a call', {
96
+ error: closed.cause
97
+ });
98
+ return false;
99
+ }
100
+ }
101
+ //# sourceMappingURL=antigravity-server.transport.impl.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-server.transport.impl.consumer.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/antigravity-server/antigravity-server.transport.impl.consumer.ts"],"names":[],"mappings":"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"}