@cortexkit/opencode-antigravity-auth 1.1.0 → 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 (379) hide show
  1. package/README.md +225 -569
  2. package/dist/cli.js +4017 -0
  3. package/dist/cli.js.map +7 -0
  4. package/dist/index.d.ts +1 -3
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +20742 -14586
  7. package/dist/index.js.map +4 -4
  8. package/dist/src/antigravity/oauth.d.ts +1 -1
  9. package/dist/src/antigravity/oauth.js +1 -1
  10. package/dist/src/cli.d.ts +21 -0
  11. package/dist/src/cli.d.ts.map +1 -0
  12. package/dist/src/cli.js +237 -0
  13. package/dist/src/cli.js.map +1 -0
  14. package/dist/src/constants.d.ts +1 -1
  15. package/dist/src/constants.js +1 -1
  16. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -1
  17. package/dist/src/hooks/auto-update-checker/cache.js +13 -13
  18. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -1
  19. package/dist/src/hooks/auto-update-checker/checker.d.ts +1 -1
  20. package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -1
  21. package/dist/src/hooks/auto-update-checker/checker.js +75 -51
  22. package/dist/src/hooks/auto-update-checker/checker.js.map +1 -1
  23. package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -1
  24. package/dist/src/hooks/auto-update-checker/constants.js +12 -12
  25. package/dist/src/hooks/auto-update-checker/constants.js.map +1 -1
  26. package/dist/src/hooks/auto-update-checker/index.d.ts +6 -6
  27. package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -1
  28. package/dist/src/hooks/auto-update-checker/index.js +17 -17
  29. package/dist/src/hooks/auto-update-checker/index.js.map +1 -1
  30. package/dist/src/hooks/auto-update-checker/logging.js +2 -2
  31. package/dist/src/hooks/auto-update-checker/logging.js.map +1 -1
  32. package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -1
  33. package/dist/src/plugin/account-access.d.ts +99 -0
  34. package/dist/src/plugin/account-access.d.ts.map +1 -0
  35. package/dist/src/plugin/account-access.js +480 -0
  36. package/dist/src/plugin/account-access.js.map +1 -0
  37. package/dist/src/plugin/account-command-oauth.d.ts +34 -0
  38. package/dist/src/plugin/account-command-oauth.d.ts.map +1 -0
  39. package/dist/src/plugin/account-command-oauth.js +156 -0
  40. package/dist/src/plugin/account-command-oauth.js.map +1 -0
  41. package/dist/src/plugin/accounts.d.ts +7 -256
  42. package/dist/src/plugin/accounts.d.ts.map +1 -1
  43. package/dist/src/plugin/accounts.js +31 -1367
  44. package/dist/src/plugin/accounts.js.map +1 -1
  45. package/dist/src/plugin/agy-request-metadata.d.ts +1 -1
  46. package/dist/src/plugin/agy-request-metadata.js +1 -1
  47. package/dist/src/plugin/agy-transport.d.ts +1 -1
  48. package/dist/src/plugin/agy-transport.js +1 -1
  49. package/dist/src/plugin/auth-doctor.d.ts +6 -6
  50. package/dist/src/plugin/auth-doctor.d.ts.map +1 -1
  51. package/dist/src/plugin/auth-doctor.js +74 -66
  52. package/dist/src/plugin/auth-doctor.js.map +1 -1
  53. package/dist/src/plugin/auth-drift.d.ts +4 -4
  54. package/dist/src/plugin/auth-drift.d.ts.map +1 -1
  55. package/dist/src/plugin/auth-drift.js +15 -15
  56. package/dist/src/plugin/auth-drift.js.map +1 -1
  57. package/dist/src/plugin/auth-loader.d.ts +50 -0
  58. package/dist/src/plugin/auth-loader.d.ts.map +1 -0
  59. package/dist/src/plugin/auth-loader.js +225 -0
  60. package/dist/src/plugin/auth-loader.js.map +1 -0
  61. package/dist/src/plugin/auth.d.ts +1 -1
  62. package/dist/src/plugin/auth.js +1 -1
  63. package/dist/src/plugin/background-quota-refresh.d.ts +146 -0
  64. package/dist/src/plugin/background-quota-refresh.d.ts.map +1 -0
  65. package/dist/src/plugin/background-quota-refresh.js +347 -0
  66. package/dist/src/plugin/background-quota-refresh.js.map +1 -0
  67. package/dist/src/plugin/cache/index.d.ts +1 -1
  68. package/dist/src/plugin/cache/index.d.ts.map +1 -1
  69. package/dist/src/plugin/cache/index.js +1 -1
  70. package/dist/src/plugin/cache/index.js.map +1 -1
  71. package/dist/src/plugin/cache/signature-cache.d.ts +1 -1
  72. package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -1
  73. package/dist/src/plugin/cache/signature-cache.js +23 -24
  74. package/dist/src/plugin/cache/signature-cache.js.map +1 -1
  75. package/dist/src/plugin/cache.d.ts +6 -5
  76. package/dist/src/plugin/cache.d.ts.map +1 -1
  77. package/dist/src/plugin/cache.js +21 -7
  78. package/dist/src/plugin/cache.js.map +1 -1
  79. package/dist/src/plugin/catalog.d.ts +23 -0
  80. package/dist/src/plugin/catalog.d.ts.map +1 -0
  81. package/dist/src/plugin/catalog.js +60 -0
  82. package/dist/src/plugin/catalog.js.map +1 -0
  83. package/dist/src/plugin/cli.d.ts +7 -7
  84. package/dist/src/plugin/cli.d.ts.map +1 -1
  85. package/dist/src/plugin/cli.js +62 -55
  86. package/dist/src/plugin/cli.js.map +1 -1
  87. package/dist/src/plugin/command-data.d.ts +329 -0
  88. package/dist/src/plugin/command-data.d.ts.map +1 -0
  89. package/dist/src/plugin/command-data.js +517 -0
  90. package/dist/src/plugin/command-data.js.map +1 -0
  91. package/dist/src/plugin/commands.d.ts +154 -0
  92. package/dist/src/plugin/commands.d.ts.map +1 -0
  93. package/dist/src/plugin/commands.js +746 -0
  94. package/dist/src/plugin/commands.js.map +1 -0
  95. package/dist/src/plugin/config/index.d.ts +2 -2
  96. package/dist/src/plugin/config/index.d.ts.map +1 -1
  97. package/dist/src/plugin/config/index.js +2 -2
  98. package/dist/src/plugin/config/index.js.map +1 -1
  99. package/dist/src/plugin/config/loader.d.ts +1 -1
  100. package/dist/src/plugin/config/loader.d.ts.map +1 -1
  101. package/dist/src/plugin/config/loader.js +18 -16
  102. package/dist/src/plugin/config/loader.js.map +1 -1
  103. package/dist/src/plugin/config/models.d.ts +2 -2
  104. package/dist/src/plugin/config/models.d.ts.map +1 -1
  105. package/dist/src/plugin/config/models.js +1 -1
  106. package/dist/src/plugin/config/models.js.map +1 -1
  107. package/dist/src/plugin/config/operator-settings-schema.d.ts +29 -0
  108. package/dist/src/plugin/config/operator-settings-schema.d.ts.map +1 -0
  109. package/dist/src/plugin/config/operator-settings-schema.js +28 -0
  110. package/dist/src/plugin/config/operator-settings-schema.js.map +1 -0
  111. package/dist/src/plugin/config/schema.d.ts +23 -2
  112. package/dist/src/plugin/config/schema.d.ts.map +1 -1
  113. package/dist/src/plugin/config/schema.js +109 -25
  114. package/dist/src/plugin/config/schema.js.map +1 -1
  115. package/dist/src/plugin/config/updater.d.ts.map +1 -1
  116. package/dist/src/plugin/config/updater.js +15 -15
  117. package/dist/src/plugin/config/updater.js.map +1 -1
  118. package/dist/src/plugin/config/writer.d.ts +34 -0
  119. package/dist/src/plugin/config/writer.d.ts.map +1 -0
  120. package/dist/src/plugin/config/writer.js +81 -0
  121. package/dist/src/plugin/config/writer.js.map +1 -0
  122. package/dist/src/plugin/core/streaming/index.d.ts +1 -1
  123. package/dist/src/plugin/core/streaming/index.d.ts.map +1 -1
  124. package/dist/src/plugin/core/streaming/index.js +1 -1
  125. package/dist/src/plugin/core/streaming/index.js.map +1 -1
  126. package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -1
  127. package/dist/src/plugin/core/streaming/transformer.js +85 -44
  128. package/dist/src/plugin/core/streaming/transformer.js.map +1 -1
  129. package/dist/src/plugin/core/streaming/types.d.ts.map +1 -1
  130. package/dist/src/plugin/debug.d.ts +10 -3
  131. package/dist/src/plugin/debug.d.ts.map +1 -1
  132. package/dist/src/plugin/debug.js +110 -47
  133. package/dist/src/plugin/debug.js.map +1 -1
  134. package/dist/src/plugin/dependencies.d.ts +129 -0
  135. package/dist/src/plugin/dependencies.d.ts.map +1 -0
  136. package/dist/src/plugin/dependencies.js +107 -0
  137. package/dist/src/plugin/dependencies.js.map +1 -0
  138. package/dist/src/plugin/errors.d.ts +27 -0
  139. package/dist/src/plugin/errors.d.ts.map +1 -1
  140. package/dist/src/plugin/errors.js +29 -3
  141. package/dist/src/plugin/errors.js.map +1 -1
  142. package/dist/src/plugin/event-handler.d.ts +53 -0
  143. package/dist/src/plugin/event-handler.d.ts.map +1 -0
  144. package/dist/src/plugin/event-handler.js +101 -0
  145. package/dist/src/plugin/event-handler.js.map +1 -0
  146. package/dist/src/plugin/fetch/retry-state.d.ts +61 -0
  147. package/dist/src/plugin/fetch/retry-state.d.ts.map +1 -0
  148. package/dist/src/plugin/fetch/retry-state.js +248 -0
  149. package/dist/src/plugin/fetch/retry-state.js.map +1 -0
  150. package/dist/src/plugin/fetch/warmup.d.ts +30 -0
  151. package/dist/src/plugin/fetch/warmup.d.ts.map +1 -0
  152. package/dist/src/plugin/fetch/warmup.js +76 -0
  153. package/dist/src/plugin/fetch/warmup.js.map +1 -0
  154. package/dist/src/plugin/fetch-interceptor.d.ts +59 -0
  155. package/dist/src/plugin/fetch-interceptor.d.ts.map +1 -0
  156. package/dist/src/plugin/fetch-interceptor.js +1399 -0
  157. package/dist/src/plugin/fetch-interceptor.js.map +1 -0
  158. package/dist/src/plugin/fetch-routing.d.ts +26 -0
  159. package/dist/src/plugin/fetch-routing.d.ts.map +1 -0
  160. package/dist/src/plugin/fetch-routing.js +99 -0
  161. package/dist/src/plugin/fetch-routing.js.map +1 -0
  162. package/dist/src/plugin/fingerprint.d.ts +1 -1
  163. package/dist/src/plugin/fingerprint.js +1 -1
  164. package/dist/src/plugin/gemini-dump.d.ts +5 -5
  165. package/dist/src/plugin/gemini-dump.d.ts.map +1 -1
  166. package/dist/src/plugin/gemini-dump.js +109 -55
  167. package/dist/src/plugin/gemini-dump.js.map +1 -1
  168. package/dist/src/plugin/google-search-tool.d.ts +9 -0
  169. package/dist/src/plugin/google-search-tool.d.ts.map +1 -0
  170. package/dist/src/plugin/google-search-tool.js +56 -0
  171. package/dist/src/plugin/google-search-tool.js.map +1 -0
  172. package/dist/src/plugin/image-saver.d.ts.map +1 -1
  173. package/dist/src/plugin/image-saver.js +16 -16
  174. package/dist/src/plugin/image-saver.js.map +1 -1
  175. package/dist/src/plugin/index.d.ts +30 -0
  176. package/dist/src/plugin/index.d.ts.map +1 -0
  177. package/dist/src/plugin/index.js +411 -0
  178. package/dist/src/plugin/index.js.map +1 -0
  179. package/dist/src/plugin/killswitch.d.ts +94 -0
  180. package/dist/src/plugin/killswitch.d.ts.map +1 -0
  181. package/dist/src/plugin/killswitch.js +197 -0
  182. package/dist/src/plugin/killswitch.js.map +1 -0
  183. package/dist/src/plugin/lifecycle.d.ts +40 -0
  184. package/dist/src/plugin/lifecycle.d.ts.map +1 -0
  185. package/dist/src/plugin/lifecycle.js +73 -0
  186. package/dist/src/plugin/lifecycle.js.map +1 -0
  187. package/dist/src/plugin/logger.d.ts +10 -1
  188. package/dist/src/plugin/logger.d.ts.map +1 -1
  189. package/dist/src/plugin/logger.js +38 -12
  190. package/dist/src/plugin/logger.js.map +1 -1
  191. package/dist/src/plugin/logging-utils.d.ts +35 -1
  192. package/dist/src/plugin/logging-utils.d.ts.map +1 -1
  193. package/dist/src/plugin/logging-utils.js +98 -15
  194. package/dist/src/plugin/logging-utils.js.map +1 -1
  195. package/dist/src/plugin/model-registry.d.ts +1 -1
  196. package/dist/src/plugin/model-registry.js +1 -1
  197. package/dist/src/plugin/oauth-login.d.ts +22 -0
  198. package/dist/src/plugin/oauth-login.d.ts.map +1 -0
  199. package/dist/src/plugin/oauth-login.js +37 -0
  200. package/dist/src/plugin/oauth-login.js.map +1 -0
  201. package/dist/src/plugin/oauth-methods.d.ts +42 -0
  202. package/dist/src/plugin/oauth-methods.d.ts.map +1 -0
  203. package/dist/src/plugin/oauth-methods.js +1276 -0
  204. package/dist/src/plugin/oauth-methods.js.map +1 -0
  205. package/dist/src/plugin/operator-settings.d.ts +40 -0
  206. package/dist/src/plugin/operator-settings.d.ts.map +1 -0
  207. package/dist/src/plugin/operator-settings.js +148 -0
  208. package/dist/src/plugin/operator-settings.js.map +1 -0
  209. package/dist/src/plugin/persist-account-pool.d.ts +37 -0
  210. package/dist/src/plugin/persist-account-pool.d.ts.map +1 -0
  211. package/dist/src/plugin/persist-account-pool.js +142 -0
  212. package/dist/src/plugin/persist-account-pool.js.map +1 -0
  213. package/dist/src/plugin/project.d.ts +1 -1
  214. package/dist/src/plugin/project.js +1 -1
  215. package/dist/src/plugin/prompt-context.d.ts.map +1 -1
  216. package/dist/src/plugin/prompt-context.js +11 -11
  217. package/dist/src/plugin/prompt-context.js.map +1 -1
  218. package/dist/src/plugin/quota.d.ts +138 -41
  219. package/dist/src/plugin/quota.d.ts.map +1 -1
  220. package/dist/src/plugin/quota.js +417 -285
  221. package/dist/src/plugin/quota.js.map +1 -1
  222. package/dist/src/plugin/recovery/constants.d.ts.map +1 -1
  223. package/dist/src/plugin/recovery/constants.js +24 -15
  224. package/dist/src/plugin/recovery/constants.js.map +1 -1
  225. package/dist/src/plugin/recovery/index.d.ts +3 -3
  226. package/dist/src/plugin/recovery/index.d.ts.map +1 -1
  227. package/dist/src/plugin/recovery/index.js +3 -3
  228. package/dist/src/plugin/recovery/index.js.map +1 -1
  229. package/dist/src/plugin/recovery/storage.d.ts +1 -1
  230. package/dist/src/plugin/recovery/storage.d.ts.map +1 -1
  231. package/dist/src/plugin/recovery/storage.js +31 -39
  232. package/dist/src/plugin/recovery/storage.js.map +1 -1
  233. package/dist/src/plugin/recovery/types.d.ts +12 -12
  234. package/dist/src/plugin/recovery/types.d.ts.map +1 -1
  235. package/dist/src/plugin/recovery.d.ts +3 -3
  236. package/dist/src/plugin/recovery.d.ts.map +1 -1
  237. package/dist/src/plugin/recovery.js +62 -58
  238. package/dist/src/plugin/recovery.js.map +1 -1
  239. package/dist/src/plugin/refresh-queue.d.ts +5 -2
  240. package/dist/src/plugin/refresh-queue.d.ts.map +1 -1
  241. package/dist/src/plugin/refresh-queue.js +37 -15
  242. package/dist/src/plugin/refresh-queue.js.map +1 -1
  243. package/dist/src/plugin/request-helpers.d.ts +1 -1
  244. package/dist/src/plugin/request-helpers.d.ts.map +1 -1
  245. package/dist/src/plugin/request-helpers.js +451 -352
  246. package/dist/src/plugin/request-helpers.js.map +1 -1
  247. package/dist/src/plugin/request.d.ts +7 -7
  248. package/dist/src/plugin/request.d.ts.map +1 -1
  249. package/dist/src/plugin/request.js +622 -384
  250. package/dist/src/plugin/request.js.map +1 -1
  251. package/dist/src/plugin/rotation.d.ts +1 -168
  252. package/dist/src/plugin/rotation.d.ts.map +1 -1
  253. package/dist/src/plugin/rotation.js +1 -327
  254. package/dist/src/plugin/rotation.js.map +1 -1
  255. package/dist/src/plugin/search.d.ts.map +1 -1
  256. package/dist/src/plugin/search.js +39 -35
  257. package/dist/src/plugin/search.js.map +1 -1
  258. package/dist/src/plugin/server.d.ts +1 -1
  259. package/dist/src/plugin/server.d.ts.map +1 -1
  260. package/dist/src/plugin/server.js +42 -37
  261. package/dist/src/plugin/server.js.map +1 -1
  262. package/dist/src/plugin/session-context.d.ts +2 -1
  263. package/dist/src/plugin/session-context.d.ts.map +1 -1
  264. package/dist/src/plugin/session-context.js +11 -7
  265. package/dist/src/plugin/session-context.js.map +1 -1
  266. package/dist/src/plugin/storage.d.ts +59 -120
  267. package/dist/src/plugin/storage.d.ts.map +1 -1
  268. package/dist/src/plugin/storage.js +140 -485
  269. package/dist/src/plugin/storage.js.map +1 -1
  270. package/dist/src/plugin/stores/signature-store.d.ts.map +1 -1
  271. package/dist/src/plugin/stores/signature-store.js.map +1 -1
  272. package/dist/src/plugin/thinking-recovery.d.ts.map +1 -1
  273. package/dist/src/plugin/thinking-recovery.js +35 -33
  274. package/dist/src/plugin/thinking-recovery.js.map +1 -1
  275. package/dist/src/plugin/token.d.ts +2 -2
  276. package/dist/src/plugin/token.d.ts.map +1 -1
  277. package/dist/src/plugin/token.js +30 -21
  278. package/dist/src/plugin/token.js.map +1 -1
  279. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +1 -1
  280. package/dist/src/plugin/transform/cross-model-sanitizer.js +1 -1
  281. package/dist/src/plugin/transform/index.d.ts +1 -1
  282. package/dist/src/plugin/transform/index.js +1 -1
  283. package/dist/src/plugin/transform/model-resolver.d.ts +1 -1
  284. package/dist/src/plugin/transform/model-resolver.js +1 -1
  285. package/dist/src/plugin/transform/types.d.ts +1 -1
  286. package/dist/src/plugin/transform/types.js +1 -1
  287. package/dist/src/plugin/types.d.ts +25 -69
  288. package/dist/src/plugin/types.d.ts.map +1 -1
  289. package/dist/src/plugin/ui/ansi.d.ts.map +1 -1
  290. package/dist/src/plugin/ui/ansi.js.map +1 -1
  291. package/dist/src/plugin/ui/auth-menu.d.ts +1 -1
  292. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -1
  293. package/dist/src/plugin/ui/auth-menu.js +84 -35
  294. package/dist/src/plugin/ui/auth-menu.js.map +1 -1
  295. package/dist/src/plugin/ui/confirm.d.ts.map +1 -1
  296. package/dist/src/plugin/ui/confirm.js.map +1 -1
  297. package/dist/src/plugin/ui/model-status.d.ts +3 -3
  298. package/dist/src/plugin/ui/model-status.d.ts.map +1 -1
  299. package/dist/src/plugin/ui/model-status.js +3 -3
  300. package/dist/src/plugin/ui/model-status.js.map +1 -1
  301. package/dist/src/plugin/ui/quota-status.d.ts +4 -4
  302. package/dist/src/plugin/ui/quota-status.d.ts.map +1 -1
  303. package/dist/src/plugin/ui/quota-status.js +49 -49
  304. package/dist/src/plugin/ui/quota-status.js.map +1 -1
  305. package/dist/src/plugin/ui/select.d.ts.map +1 -1
  306. package/dist/src/plugin/ui/select.js +22 -12
  307. package/dist/src/plugin/ui/select.js.map +1 -1
  308. package/dist/src/plugin/version.d.ts +1 -1
  309. package/dist/src/plugin/version.js +1 -1
  310. package/dist/src/rpc/notifications.d.ts +6 -0
  311. package/dist/src/rpc/notifications.d.ts.map +1 -0
  312. package/dist/src/rpc/notifications.js +46 -0
  313. package/dist/src/rpc/notifications.js.map +1 -0
  314. package/dist/src/rpc/port-file.d.ts +13 -0
  315. package/dist/src/rpc/port-file.d.ts.map +1 -0
  316. package/dist/src/rpc/port-file.js +109 -0
  317. package/dist/src/rpc/port-file.js.map +1 -0
  318. package/dist/src/rpc/protocol.d.ts +22 -0
  319. package/dist/src/rpc/protocol.d.ts.map +1 -0
  320. package/dist/src/rpc/protocol.js +1 -0
  321. package/dist/src/rpc/protocol.js.map +1 -0
  322. package/dist/src/rpc/rpc-client.d.ts +10 -0
  323. package/dist/src/rpc/rpc-client.d.ts.map +1 -0
  324. package/dist/src/rpc/rpc-client.js +58 -0
  325. package/dist/src/rpc/rpc-client.js.map +1 -0
  326. package/dist/src/rpc/rpc-dir.d.ts +4 -0
  327. package/dist/src/rpc/rpc-dir.d.ts.map +1 -0
  328. package/dist/src/rpc/rpc-dir.js +19 -0
  329. package/dist/src/rpc/rpc-dir.js.map +1 -0
  330. package/dist/src/rpc/rpc-server.d.ts +13 -0
  331. package/dist/src/rpc/rpc-server.d.ts.map +1 -0
  332. package/dist/src/rpc/rpc-server.js +231 -0
  333. package/dist/src/rpc/rpc-server.js.map +1 -0
  334. package/dist/src/sidebar-state.d.ts +357 -0
  335. package/dist/src/sidebar-state.d.ts.map +1 -0
  336. package/dist/src/sidebar-state.js +680 -0
  337. package/dist/src/sidebar-state.js.map +1 -0
  338. package/dist/src/tui/command-dialogs.d.ts +61 -0
  339. package/dist/src/tui/command-dialogs.d.ts.map +1 -0
  340. package/dist/src/tui/command-dialogs.js +595 -0
  341. package/dist/src/tui/command-dialogs.js.map +1 -0
  342. package/dist/src/tui/file-logger.d.ts +41 -0
  343. package/dist/src/tui/file-logger.d.ts.map +1 -0
  344. package/dist/src/tui/file-logger.js +114 -0
  345. package/dist/src/tui/file-logger.js.map +1 -0
  346. package/dist/src/tui-preferences.d.ts +40 -0
  347. package/dist/src/tui-preferences.d.ts.map +1 -0
  348. package/dist/src/tui-preferences.js +328 -0
  349. package/dist/src/tui-preferences.js.map +1 -0
  350. package/dist/src/tui.d.ts +68 -0
  351. package/dist/src/tui.d.ts.map +1 -0
  352. package/dist/src/tui.js +697 -0
  353. package/dist/src/tui.js.map +1 -0
  354. package/package.json +46 -22
  355. package/src/plugin/command-data.ts +931 -0
  356. package/src/rpc/port-file.ts +143 -0
  357. package/src/rpc/protocol.ts +31 -0
  358. package/src/rpc/rpc-client.ts +102 -0
  359. package/src/rpc/rpc-dir.ts +24 -0
  360. package/src/sidebar-state.ts +991 -0
  361. package/src/tui/command-dialogs.tsx +832 -0
  362. package/src/tui/entry.mjs +74 -0
  363. package/src/tui/file-logger.ts +145 -0
  364. package/src/tui-compiled/plugin/command-data.ts +931 -0
  365. package/src/tui-compiled/rpc/port-file.ts +143 -0
  366. package/src/tui-compiled/rpc/protocol.ts +31 -0
  367. package/src/tui-compiled/rpc/rpc-client.ts +102 -0
  368. package/src/tui-compiled/rpc/rpc-dir.ts +24 -0
  369. package/src/tui-compiled/sidebar-state.ts +991 -0
  370. package/src/tui-compiled/tui/command-dialogs.tsx +779 -0
  371. package/src/tui-compiled/tui/file-logger.ts +145 -0
  372. package/src/tui-compiled/tui-preferences.ts +416 -0
  373. package/src/tui-compiled/tui.tsx +1193 -0
  374. package/src/tui-preferences.ts +416 -0
  375. package/src/tui.tsx +1171 -0
  376. package/dist/src/plugin.d.ts +0 -48
  377. package/dist/src/plugin.d.ts.map +0 -1
  378. package/dist/src/plugin.js +0 -3311
  379. package/dist/src/plugin.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Live killswitch for the account pool.
3
+ *
4
+ * The operator-configured killswitch excludes candidates whose freshest
5
+ * cached quota remaining-percent is at or below a per-account
6
+ * threshold (or the global minimum_remaining_percent when no
7
+ * per-account override is set).
8
+ *
9
+ * Quota data is read live from `account.cachedQuota`, which is a
10
+ * `Partial<Record<QuotaGroup, QuotaGroupSummary>>` populated by the
11
+ * quota manager after every successful refresh. Stale or missing
12
+ * data is treated as fail-open: the candidate is allowed through so a
13
+ * cold start cannot deadlock the request pipeline on the operator's
14
+ * first dial.
15
+ */
16
+ import type { QuotaGroup, QuotaGroupSummary } from '@cortexkit/antigravity-auth-core';
17
+ import type { ModelFamily } from './accounts';
18
+ import type { OperatorSettings } from './operator-settings';
19
+ export interface KillswitchAccountSnapshot {
20
+ index: number;
21
+ refreshToken?: string;
22
+ email?: string;
23
+ cachedQuota?: Partial<Record<QuotaGroup, QuotaGroupSummary>>;
24
+ cachedQuotaUpdatedAt?: number;
25
+ }
26
+ export interface KillswitchDecision {
27
+ allowed: boolean;
28
+ reason: 'ok' | 'killswitch-disabled' | 'quota-missing-or-stale' | 'below-threshold';
29
+ thresholdPercent: number;
30
+ remainingPercent: number | null;
31
+ }
32
+ export interface KillswitchEvaluateOptions {
33
+ now?: number;
34
+ /** Cache TTL in milliseconds — cached quota older than this is fail-open. */
35
+ cacheTtlMs?: number;
36
+ /**
37
+ * Model identifier to scope the evaluation to. When set, the
38
+ * decision checks only the quota group that powers that model
39
+ * (e.g. a `gemini-pro` request checks ONLY `gemini-pro`,
40
+ * not the max of pro+flash). When omitted, the evaluation uses
41
+ * the family-max behavior.
42
+ */
43
+ model?: string | null;
44
+ }
45
+ export declare function accountKeyForRefreshToken(refreshToken: string): string;
46
+ /**
47
+ * Determine whether `account` is allowed under the operator killswitch.
48
+ *
49
+ * The decision is fail-open when:
50
+ * - killswitch is disabled
51
+ * - cached quota is missing entirely
52
+ * - cached quota is older than `cacheTtlMs`
53
+ *
54
+ * When `model` is provided, the evaluation is scoped to the single
55
+ * quota group that powers that model (e.g. a `gemini-pro` request
56
+ * checks ONLY `gemini-pro` — not the max of pro+flash). Without
57
+ * `model`, the evaluation falls back to the family-max behavior so
58
+ * existing callers that omit the model argument keep their previous
59
+ * semantics.
60
+ *
61
+ * Returns a structured decision so callers can emit diagnostics for
62
+ * each candidate without re-running the comparison.
63
+ */
64
+ export declare function evaluateKillswitchForAccount(account: KillswitchAccountSnapshot, family: ModelFamily, settings: OperatorSettings, options?: KillswitchEvaluateOptions): KillswitchDecision;
65
+ /**
66
+ * Build a redacted summary of every candidate's killswitch outcome.
67
+ *
68
+ * Used when the operator killswitch excludes the entire pool so the
69
+ * host error message can list the offending accounts without leaking
70
+ * identifiers or tokens.
71
+ */
72
+ export declare function summarizeKillswitchOutcomes(accounts: readonly KillswitchAccountSnapshot[], family: ModelFamily, settings: OperatorSettings, options?: KillswitchEvaluateOptions): Array<{
73
+ accountKey: string;
74
+ remainingPercent: number | null;
75
+ thresholdPercent: number;
76
+ }>;
77
+ /**
78
+ * Throw `AntigravityKillswitchError` when every candidate is excluded.
79
+ *
80
+ * The interceptor calls this when its retry loop runs out of viable
81
+ * accounts so the host surfaces a single, structured error rather than
82
+ * a synthetic 200/401 body.
83
+ */
84
+ export declare function throwIfAllKilled(input: {
85
+ family: ModelFamily;
86
+ model: string;
87
+ accounts: readonly KillswitchAccountSnapshot[];
88
+ settings: OperatorSettings;
89
+ now?: number;
90
+ cacheTtlMs?: number;
91
+ /** Optional model to scope per-account evaluation to a single quota group. */
92
+ quotaModel?: string | null;
93
+ }): void;
94
+ //# sourceMappingURL=killswitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"killswitch.d.ts","sourceRoot":"","sources":["../../../src/plugin/killswitch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EACF,IAAI,GACJ,qBAAqB,GACrB,wBAAwB,GACxB,iBAAiB,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAoCD,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,CAmDpB;AAoCD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAC9C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,KAAK,CAAC;IACP,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAC,CAiBD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAA;IAC9C,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,GAAG,IAAI,CA+BP"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Live killswitch for the account pool.
3
+ *
4
+ * The operator-configured killswitch excludes candidates whose freshest
5
+ * cached quota remaining-percent is at or below a per-account
6
+ * threshold (or the global minimum_remaining_percent when no
7
+ * per-account override is set).
8
+ *
9
+ * Quota data is read live from `account.cachedQuota`, which is a
10
+ * `Partial<Record<QuotaGroup, QuotaGroupSummary>>` populated by the
11
+ * quota manager after every successful refresh. Stale or missing
12
+ * data is treated as fail-open: the candidate is allowed through so a
13
+ * cold start cannot deadlock the request pipeline on the operator's
14
+ * first dial.
15
+ */
16
+ import { createHash } from 'node:crypto';
17
+ import { AntigravityKillswitchError } from './errors';
18
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
19
+ const QUOTA_GROUP_BY_FAMILY = {
20
+ claude: ['non-gemini'],
21
+ gemini: ['gemini', 'non-gemini'],
22
+ };
23
+ /**
24
+ * Best-effort mapping from a model string to the quota group it draws
25
+ * on. The mapping is intentionally inline (no shared regex table) so
26
+ * the killswitch does not pull a transform stack into its import
27
+ * graph. Models that are not recognised fall back to the family-max
28
+ * behavior so a missed match can never widen the kill.
29
+ */
30
+ function quotaGroupForModel(family, model) {
31
+ if (!model)
32
+ return null;
33
+ const lower = model.toLowerCase();
34
+ if (family === 'claude')
35
+ return 'non-gemini';
36
+ if (family === 'gemini') {
37
+ // Check Claude / GPT-OSS substrings BEFORE the `gemini` substring so
38
+ // a `gemini-claude-*` alias (Claude route exposed under a `gemini-`
39
+ // namespace) attributes to the non-gemini pool rather than the
40
+ // gemini pool.
41
+ if (lower.includes('claude') || lower.includes('gpt-oss')) {
42
+ return 'non-gemini';
43
+ }
44
+ if (lower.includes('gemini') || lower.startsWith('tab_'))
45
+ return 'gemini';
46
+ }
47
+ return null;
48
+ }
49
+ export function accountKeyForRefreshToken(refreshToken) {
50
+ return createHash('sha256').update(refreshToken).digest('hex').slice(0, 12);
51
+ }
52
+ /**
53
+ * Determine whether `account` is allowed under the operator killswitch.
54
+ *
55
+ * The decision is fail-open when:
56
+ * - killswitch is disabled
57
+ * - cached quota is missing entirely
58
+ * - cached quota is older than `cacheTtlMs`
59
+ *
60
+ * When `model` is provided, the evaluation is scoped to the single
61
+ * quota group that powers that model (e.g. a `gemini-pro` request
62
+ * checks ONLY `gemini-pro` — not the max of pro+flash). Without
63
+ * `model`, the evaluation falls back to the family-max behavior so
64
+ * existing callers that omit the model argument keep their previous
65
+ * semantics.
66
+ *
67
+ * Returns a structured decision so callers can emit diagnostics for
68
+ * each candidate without re-running the comparison.
69
+ */
70
+ export function evaluateKillswitchForAccount(account, family, settings, options = {}) {
71
+ if (!settings.killswitch.enabled) {
72
+ return {
73
+ allowed: true,
74
+ reason: 'killswitch-disabled',
75
+ thresholdPercent: 0,
76
+ remainingPercent: null,
77
+ };
78
+ }
79
+ const accountKey = account.refreshToken
80
+ ? accountKeyForRefreshToken(account.refreshToken)
81
+ : `idx-${account.index}`;
82
+ const thresholdPercent = settings.killswitch.accounts?.[accountKey] ??
83
+ settings.killswitch.minimum_remaining_percent;
84
+ const now = options.now ?? Date.now();
85
+ const cacheTtlMs = options.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
86
+ const freshEnough = typeof account.cachedQuotaUpdatedAt === 'number' &&
87
+ now - account.cachedQuotaUpdatedAt <= cacheTtlMs;
88
+ const quota = freshEnough ? account.cachedQuota : undefined;
89
+ if (!quota) {
90
+ return {
91
+ allowed: true,
92
+ reason: 'quota-missing-or-stale',
93
+ thresholdPercent,
94
+ remainingPercent: null,
95
+ };
96
+ }
97
+ const remainingPercent = quotaGroupForModel(family, options.model)
98
+ ? remainingPercentForGroup(quota, family, options.model)
99
+ : freshestRemainingPercent(quota, family);
100
+ if (remainingPercent === null) {
101
+ return {
102
+ allowed: true,
103
+ reason: 'quota-missing-or-stale',
104
+ thresholdPercent,
105
+ remainingPercent: null,
106
+ };
107
+ }
108
+ return {
109
+ allowed: remainingPercent >= thresholdPercent,
110
+ reason: remainingPercent >= thresholdPercent ? 'ok' : 'below-threshold',
111
+ thresholdPercent,
112
+ remainingPercent,
113
+ };
114
+ }
115
+ function freshestRemainingPercent(quota, family) {
116
+ const groups = QUOTA_GROUP_BY_FAMILY[family];
117
+ let best = null;
118
+ for (const group of groups) {
119
+ const entry = quota[group];
120
+ if (!entry || typeof entry.remainingFraction !== 'number')
121
+ continue;
122
+ const pct = clampPercent(entry.remainingFraction * 100);
123
+ if (best === null || pct > best)
124
+ best = pct;
125
+ }
126
+ return best;
127
+ }
128
+ function remainingPercentForGroup(quota, family, model) {
129
+ const group = quotaGroupForModel(family, model);
130
+ if (!group)
131
+ return null;
132
+ const entry = quota[group];
133
+ if (!entry || typeof entry.remainingFraction !== 'number')
134
+ return null;
135
+ return clampPercent(entry.remainingFraction * 100);
136
+ }
137
+ function clampPercent(value) {
138
+ if (Number.isNaN(value))
139
+ return 0;
140
+ if (value < 0)
141
+ return 0;
142
+ if (value > 100)
143
+ return 100;
144
+ return value;
145
+ }
146
+ /**
147
+ * Build a redacted summary of every candidate's killswitch outcome.
148
+ *
149
+ * Used when the operator killswitch excludes the entire pool so the
150
+ * host error message can list the offending accounts without leaking
151
+ * identifiers or tokens.
152
+ */
153
+ export function summarizeKillswitchOutcomes(accounts, family, settings, options = {}) {
154
+ return accounts.map((account) => {
155
+ const decision = evaluateKillswitchForAccount(account, family, settings, options);
156
+ const accountKey = account.refreshToken
157
+ ? accountKeyForRefreshToken(account.refreshToken)
158
+ : `idx-${account.index}`;
159
+ return {
160
+ accountKey,
161
+ remainingPercent: decision.remainingPercent,
162
+ thresholdPercent: decision.thresholdPercent,
163
+ };
164
+ });
165
+ }
166
+ /**
167
+ * Throw `AntigravityKillswitchError` when every candidate is excluded.
168
+ *
169
+ * The interceptor calls this when its retry loop runs out of viable
170
+ * accounts so the host surfaces a single, structured error rather than
171
+ * a synthetic 200/401 body.
172
+ */
173
+ export function throwIfAllKilled(input) {
174
+ const { family, model, accounts, settings, quotaModel } = input;
175
+ if (!settings.killswitch.enabled)
176
+ return;
177
+ const summaryOptions = {
178
+ ...(input.now !== undefined ? { now: input.now } : {}),
179
+ ...(input.cacheTtlMs !== undefined ? { cacheTtlMs: input.cacheTtlMs } : {}),
180
+ ...(quotaModel !== undefined ? { model: quotaModel } : {}),
181
+ };
182
+ const summaries = summarizeKillswitchOutcomes(accounts, family, settings, summaryOptions);
183
+ const allKilled = accounts.every((account) => {
184
+ const decision = evaluateKillswitchForAccount(account, family, settings, summaryOptions);
185
+ return decision.reason === 'below-threshold';
186
+ });
187
+ if (!allKilled)
188
+ return;
189
+ const thresholdPercent = settings.killswitch.minimum_remaining_percent;
190
+ throw new AntigravityKillswitchError({
191
+ family,
192
+ model,
193
+ thresholdPercent,
194
+ summaries,
195
+ });
196
+ }
197
+ //# sourceMappingURL=killswitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"killswitch.js","sourceRoot":"","sources":["../../../src/plugin/killswitch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { AccountManager } from './accounts';
2
+ import type { ProactiveRefreshQueue } from './refresh-queue';
3
+ export interface Disposable {
4
+ dispose(): Promise<void> | void;
5
+ }
6
+ /**
7
+ * Lifecycle phase for a registered disposable.
8
+ *
9
+ * - `producer`: runs on the same side of the sidebar drain as the
10
+ * fetch interceptor — the lifecycle disposes producers BEFORE the
11
+ * sidebar drain so a producer racing with shutdown cannot enqueue
12
+ * a write that lands after the drain asserts the queue is empty.
13
+ * - `consumer`: runs AFTER the sidebar drain. These are the sinks
14
+ * (RPC server, file logger) that the TUI / host talk to and that
15
+ * must stay alive until every queued write has landed.
16
+ */
17
+ export type LifecyclePhase = 'producer' | 'consumer';
18
+ export interface PluginLifecycleOptions {
19
+ sessionRegistry: {
20
+ clear(): void;
21
+ };
22
+ shutdownDiskSignatureCache: () => Promise<void>;
23
+ clearFetchState: () => void;
24
+ /**
25
+ * Optional drain hook for in-flight sidebar-state writes. Lifecycle
26
+ * awaits this AFTER producers are disposed but BEFORE consumers are
27
+ * disposed, so:
28
+ * 1. producers have stopped (no new writes can land)
29
+ * 2. every queued write has flushed
30
+ * 3. the file logger + RPC server are still alive
31
+ */
32
+ drainSidebarWrites?: () => Promise<void>;
33
+ }
34
+ export interface PluginLifecycle extends Disposable {
35
+ getAccountManager(): AccountManager | null;
36
+ replaceAccountRuntime(manager: AccountManager, refreshQueue: ProactiveRefreshQueue | null): Promise<void>;
37
+ register(disposable: Disposable, phase?: LifecyclePhase): void;
38
+ }
39
+ export declare function createPluginLifecycle(options: PluginLifecycleOptions): PluginLifecycle;
40
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE5D,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAChC;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAA;AAEpD,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAA;IAClC,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAAA;IAC1C,qBAAqB,CACnB,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,qBAAqB,GAAG,IAAI,GACzC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/D;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CA4EjB"}
@@ -0,0 +1,73 @@
1
+ const NOOP_DRAIN = async () => { };
2
+ export function createPluginLifecycle(options) {
3
+ let accountManager = null;
4
+ let refreshQueue = null;
5
+ let disposal = null;
6
+ const producers = [];
7
+ const consumers = [];
8
+ const drainSidebarWrites = options.drainSidebarWrites ?? NOOP_DRAIN;
9
+ const disposeAccountRuntime = async () => {
10
+ const oldQueue = refreshQueue;
11
+ const oldManager = accountManager;
12
+ refreshQueue = null;
13
+ accountManager = null;
14
+ await oldQueue?.dispose();
15
+ await oldManager?.dispose();
16
+ };
17
+ const register = (disposable, phase = 'consumer') => {
18
+ if (disposal) {
19
+ void disposable.dispose();
20
+ return;
21
+ }
22
+ if (phase === 'producer') {
23
+ producers.push(disposable);
24
+ }
25
+ else {
26
+ consumers.push(disposable);
27
+ }
28
+ };
29
+ return {
30
+ getAccountManager: () => accountManager,
31
+ async replaceAccountRuntime(manager, queue) {
32
+ await disposeAccountRuntime();
33
+ if (disposal) {
34
+ await queue?.dispose();
35
+ await manager.dispose();
36
+ return;
37
+ }
38
+ accountManager = manager;
39
+ refreshQueue = queue;
40
+ },
41
+ register,
42
+ dispose() {
43
+ if (!disposal) {
44
+ disposal = (async () => {
45
+ await disposeAccountRuntime();
46
+ await options.shutdownDiskSignatureCache();
47
+ options.sessionRegistry.clear();
48
+ options.clearFetchState();
49
+ // 1. Stop and await all producers (e.g. fetch interceptor).
50
+ // This prevents NEW sidebar writes from being enqueued
51
+ // while the drain is in flight.
52
+ for (const disposable of producers) {
53
+ await disposable.dispose();
54
+ }
55
+ producers.length = 0;
56
+ // 2. Drain sidebar writes. Every write enqueued by a now-stopped
57
+ // producer lands here before the consumers (RPC server, file
58
+ // logger) are torn down.
59
+ await drainSidebarWrites();
60
+ // 3. Stop consumers. The TUI's last frame can still observe a
61
+ // fully landed snapshot because the file logger is still alive
62
+ // during the drain.
63
+ for (const disposable of consumers) {
64
+ await disposable.dispose();
65
+ }
66
+ consumers.length = 0;
67
+ })();
68
+ }
69
+ return disposal;
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AA4CA,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE,GAAE,CAAC,CAAA;AAEhD,MAAM,UAAU,qBAAqB,CACnC,OAA+B;IAE/B,IAAI,cAAc,GAA0B,IAAI,CAAA;IAChD,IAAI,YAAY,GAAiC,IAAI,CAAA;IACrD,IAAI,QAAQ,GAAyB,IAAI,CAAA;IACzC,MAAM,SAAS,GAAiB,EAAE,CAAA;IAClC,MAAM,SAAS,GAAiB,EAAE,CAAA;IAClC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,UAAU,CAAA;IAEnE,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAA;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAA;QACjC,YAAY,GAAG,IAAI,CAAA;QACnB,cAAc,GAAG,IAAI,CAAA;QAErB,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAA;QACzB,MAAM,UAAU,EAAE,OAAO,EAAE,CAAA;IAC7B,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CACf,UAAsB,EACtB,QAAwB,UAAU,EAC5B,EAAE;QACR,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,UAAU,CAAC,OAAO,EAAE,CAAA;YACzB,OAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,iBAAiB,EAAE,GAAG,EAAE,CAAC,cAAc;QACvC,KAAK,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK;YACxC,MAAM,qBAAqB,EAAE,CAAA;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,EAAE,OAAO,EAAE,CAAA;gBACtB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,cAAc,GAAG,OAAO,CAAA;YACxB,YAAY,GAAG,KAAK,CAAA;QACtB,CAAC;QACD,QAAQ;QACR,OAAO;YACL,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;oBACrB,MAAM,qBAAqB,EAAE,CAAA;oBAC7B,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAA;oBAC1C,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;oBAC/B,OAAO,CAAC,eAAe,EAAE,CAAA;oBACzB,4DAA4D;oBAC5D,0DAA0D;oBAC1D,mCAAmC;oBACnC,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;wBACnC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;oBAC5B,CAAC;oBACD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;oBACpB,iEAAiE;oBACjE,gEAAgE;oBAChE,4BAA4B;oBAC5B,MAAM,kBAAkB,EAAE,CAAA;oBAC1B,8DAA8D;oBAC9D,kEAAkE;oBAClE,uBAAuB;oBACvB,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;wBACnC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;oBAC5B,CAAC;oBACD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;gBACtB,CAAC,CAAC,EAAE,CAAA;YACN,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -6,14 +6,23 @@
6
6
  * - debug_tui controls TUI log panel only
7
7
  * - either sink can be enabled independently
8
8
  * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
+ * - operator.log_level filters the level at which log entries are emitted
9
10
  */
10
- import type { PluginClient } from "./types";
11
+ import type { OperatorSettings } from './operator-settings';
12
+ import type { PluginClient } from './types';
11
13
  export interface Logger {
12
14
  debug(message: string, extra?: Record<string, unknown>): void;
13
15
  info(message: string, extra?: Record<string, unknown>): void;
14
16
  warn(message: string, extra?: Record<string, unknown>): void;
15
17
  error(message: string, extra?: Record<string, unknown>): void;
16
18
  }
19
+ /**
20
+ * Set the runtime log level. Reads from the operator settings controller
21
+ * on each call so a /antigravity-logging dialog flip takes effect
22
+ * immediately. Falls back to "debug" when the operator level is not
23
+ * yet known.
24
+ */
25
+ export declare function setRuntimeLogLevel(level: OperatorSettings['log_level']): void;
17
26
  /**
18
27
  * Initialize the logger with the plugin client.
19
28
  * Must be called during plugin initialization to enable TUI logging.
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/D;AAWD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAOrD;AAuCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAanD"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAsB3C,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC9D;AASD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG,IAAI,CAE7E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAOrD;AAkDD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBnD"}
@@ -6,17 +6,38 @@
6
6
  * - debug_tui controls TUI log panel only
7
7
  * - either sink can be enabled independently
8
8
  * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
+ * - operator.log_level filters the level at which log entries are emitted
9
10
  */
10
- import { setLogSink } from "@cortexkit/antigravity-auth-core";
11
- import { isDebugTuiEnabled } from "./debug";
12
- import { isTruthyFlag, writeConsoleLog, } from "./logging-utils";
13
- const ENV_CONSOLE_LOG = "OPENCODE_ANTIGRAVITY_CONSOLE_LOG";
11
+ import { setLogSink } from '@cortexkit/antigravity-auth-core';
12
+ import { isDebugTuiEnabled } from './debug';
13
+ import { isTruthyFlag, writeConsoleLog } from './logging-utils';
14
+ const ENV_CONSOLE_LOG = 'OPENCODE_ANTIGRAVITY_CONSOLE_LOG';
15
+ const LEVEL_PRIORITY = {
16
+ debug: 0,
17
+ info: 1,
18
+ warn: 2,
19
+ error: 3,
20
+ };
21
+ const LOG_LEVEL_FROM_OPERATOR = {
22
+ error: 'error',
23
+ warn: 'warn',
24
+ info: 'info',
25
+ debug: 'debug',
26
+ trace: 'debug',
27
+ };
14
28
  let _client = null;
29
+ let _configuredLevel = 'debug';
30
+ function shouldEmit(level) {
31
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[_configuredLevel];
32
+ }
15
33
  /**
16
- * Check if console logging is enabled via environment variable.
34
+ * Set the runtime log level. Reads from the operator settings controller
35
+ * on each call so a /antigravity-logging dialog flip takes effect
36
+ * immediately. Falls back to "debug" when the operator level is not
37
+ * yet known.
17
38
  */
18
- function isConsoleLogEnabled() {
19
- return isTruthyFlag(process.env[ENV_CONSOLE_LOG]);
39
+ export function setRuntimeLogLevel(level) {
40
+ _configuredLevel = LOG_LEVEL_FROM_OPERATOR[level] ?? 'debug';
20
41
  }
21
42
  /**
22
43
  * Initialize the logger with the plugin client.
@@ -44,10 +65,12 @@ export function initLogger(client) {
44
65
  * ```
45
66
  */
46
67
  function emitLog(service, level, message, extra) {
68
+ if (!shouldEmit(level))
69
+ return;
47
70
  // TUI logging: controlled only by debug_tui policy
48
71
  if (isDebugTuiEnabled()) {
49
72
  const app = _client?.app;
50
- if (app && typeof app.log === "function") {
73
+ if (app && typeof app.log === 'function') {
51
74
  app
52
75
  .log({
53
76
  body: { service, level, message, extra },
@@ -65,16 +88,19 @@ function emitLog(service, level, message, extra) {
65
88
  }
66
89
  // If neither TUI nor console logging is enabled, log is silently discarded
67
90
  }
91
+ function isConsoleLogEnabled() {
92
+ return isTruthyFlag(process.env[ENV_CONSOLE_LOG]);
93
+ }
68
94
  export function createLogger(module) {
69
95
  const service = `antigravity.${module}`;
70
96
  const log = (level, message, extra) => {
71
97
  emitLog(service, level, message, extra);
72
98
  };
73
99
  return {
74
- debug: (message, extra) => log("debug", message, extra),
75
- info: (message, extra) => log("info", message, extra),
76
- warn: (message, extra) => log("warn", message, extra),
77
- error: (message, extra) => log("error", message, extra),
100
+ debug: (message, extra) => log('debug', message, extra),
101
+ info: (message, extra) => log('info', message, extra),
102
+ warn: (message, extra) => log('warn', message, extra),
103
+ error: (message, extra) => log('error', message, extra),
78
104
  };
79
105
  }
80
106
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAS3D,IAAI,OAAO,GAAwB,IAAI,CAAC;AAExC;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,OAAO,GAAG,MAAM,CAAC;IACjB,+EAA+E;IAC/E,8EAA8E;IAC9E,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAChD,OAAO,CAAC,OAAO,EAAE,KAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,OAAO,CAAC,OAAe,EAAE,KAAe,EAAE,OAAe,EAAE,KAA+B;IACjG,mDAAmD;IACnD,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;QACzB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACzC,GAAG;iBACA,GAAG,CAAC;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;aACzC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,iCAAiC;YACnC,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,OAAO,GAAG,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,eAAe,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,2EAA2E;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,OAAO,GAAG,eAAe,MAAM,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,KAA+B,EAAQ,EAAE;QACtF,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;QACvD,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QACrD,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;KACxD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/plugin/logger.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type LogLevel = "debug" | "info" | "warn" | "error";
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
2
2
  export interface DebugPolicyInput {
3
3
  configDebug: boolean;
4
4
  configDebugTui: boolean;
@@ -20,4 +20,38 @@ export declare function formatErrorForLog(error: unknown): string;
20
20
  export declare function truncateTextForLog(text: string, maxChars: number): string;
21
21
  export declare function formatBodyPreviewForLog(body: BodyInit | null | undefined, maxChars: number): string | undefined;
22
22
  export declare function writeConsoleLog(level: LogLevel, ...args: unknown[]): void;
23
+ /**
24
+ * Mask all but the first 4 and last 4 characters of `value`. A short
25
+ * value (≤ 8 chars) is masked entirely so the caller never leaks a
26
+ * full identifier. Empty / non-string inputs collapse to an empty
27
+ * marker so a debug line that ran the helper cannot accidentally
28
+ * surface the original value.
29
+ *
30
+ * Pattern matches the `${start}****${end}` shape used by metrics teams
31
+ * for opaque resource IDs; the implementation is intentionally simple
32
+ * so a quick visual scan of a debug log still tells operators what
33
+ * class of identifier they are looking at.
34
+ */
35
+ export declare function redactSensitive(value: string | undefined | null): string;
36
+ /**
37
+ * Walk a JSON-like value and redact every credential-shaped field.
38
+ * Returns a NEW value — the original is never mutated. Strings inside
39
+ * arrays are left untouched; only object keys whose name matches the
40
+ * sensitive pattern have their string values masked.
41
+ */
42
+ export declare function redactSensitiveFields(value: unknown): unknown;
43
+ /**
44
+ * Redact credential-shaped fields (project IDs, tokens, …) out of a
45
+ * serialized JSON request body. Returns the input untouched when it is
46
+ * not parseable JSON or not an object/array — unstructured bodies have
47
+ * no field names to key redaction off.
48
+ */
49
+ export declare function redactJsonBodyString(body: string): string;
50
+ /**
51
+ * Redact a request body before it reaches a debug log or dump file.
52
+ * String bodies are treated as JSON and field-redacted; every other
53
+ * `BodyInit` shape passes through (those are summarized, not printed
54
+ * verbatim, by the log formatters).
55
+ */
56
+ export declare function redactBodyForLog(body: BodyInit | null | undefined): BodyInit | null | undefined;
23
57
  //# sourceMappingURL=logging-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging-utils.d.ts","sourceRoot":"","sources":["../../../src/plugin/logging-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAiBtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAQjG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAsBpB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAezE"}
1
+ {"version":3,"file":"logging-utils.d.ts","sourceRoot":"","sources":["../../../src/plugin/logging-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAmBtE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAER;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAsBpB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAezE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAIxE;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAChC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAG7B"}