@cortexkit/opencode-antigravity-auth 1.0.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +714 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +15175 -0
  6. package/dist/index.js.map +7 -0
  7. package/dist/src/antigravity/oauth.d.ts +2 -0
  8. package/dist/src/antigravity/oauth.d.ts.map +1 -0
  9. package/dist/src/antigravity/oauth.js +3 -0
  10. package/dist/src/antigravity/oauth.js.map +1 -0
  11. package/dist/src/constants.d.ts +2 -0
  12. package/dist/src/constants.d.ts.map +1 -0
  13. package/dist/src/constants.js +3 -0
  14. package/dist/src/constants.js.map +1 -0
  15. package/dist/src/hooks/auto-update-checker/cache.d.ts +3 -0
  16. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
  17. package/dist/src/hooks/auto-update-checker/cache.js +71 -0
  18. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -0
  19. package/dist/src/hooks/auto-update-checker/checker.d.ts +16 -0
  20. package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
  21. package/dist/src/hooks/auto-update-checker/checker.js +234 -0
  22. package/dist/src/hooks/auto-update-checker/checker.js.map +1 -0
  23. package/dist/src/hooks/auto-update-checker/constants.d.ts +9 -0
  24. package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
  25. package/dist/src/hooks/auto-update-checker/constants.js +23 -0
  26. package/dist/src/hooks/auto-update-checker/constants.js.map +1 -0
  27. package/dist/src/hooks/auto-update-checker/index.d.ts +34 -0
  28. package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -0
  29. package/dist/src/hooks/auto-update-checker/index.js +122 -0
  30. package/dist/src/hooks/auto-update-checker/index.js.map +1 -0
  31. package/dist/src/hooks/auto-update-checker/logging.d.ts +3 -0
  32. package/dist/src/hooks/auto-update-checker/logging.d.ts.map +1 -0
  33. package/dist/src/hooks/auto-update-checker/logging.js +9 -0
  34. package/dist/src/hooks/auto-update-checker/logging.js.map +1 -0
  35. package/dist/src/hooks/auto-update-checker/types.d.ts +25 -0
  36. package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -0
  37. package/dist/src/hooks/auto-update-checker/types.js +1 -0
  38. package/dist/src/hooks/auto-update-checker/types.js.map +1 -0
  39. package/dist/src/plugin/accounts.d.ts +232 -0
  40. package/dist/src/plugin/accounts.d.ts.map +1 -0
  41. package/dist/src/plugin/accounts.js +1163 -0
  42. package/dist/src/plugin/accounts.js.map +1 -0
  43. package/dist/src/plugin/agy-transport.d.ts +2 -0
  44. package/dist/src/plugin/agy-transport.d.ts.map +1 -0
  45. package/dist/src/plugin/agy-transport.js +3 -0
  46. package/dist/src/plugin/agy-transport.js.map +1 -0
  47. package/dist/src/plugin/auth-doctor.d.ts +30 -0
  48. package/dist/src/plugin/auth-doctor.d.ts.map +1 -0
  49. package/dist/src/plugin/auth-doctor.js +144 -0
  50. package/dist/src/plugin/auth-doctor.js.map +1 -0
  51. package/dist/src/plugin/auth-drift.d.ts +13 -0
  52. package/dist/src/plugin/auth-drift.d.ts.map +1 -0
  53. package/dist/src/plugin/auth-drift.js +70 -0
  54. package/dist/src/plugin/auth-drift.js.map +1 -0
  55. package/dist/src/plugin/auth.d.ts +2 -0
  56. package/dist/src/plugin/auth.d.ts.map +1 -0
  57. package/dist/src/plugin/auth.js +3 -0
  58. package/dist/src/plugin/auth.js.map +1 -0
  59. package/dist/src/plugin/cache/index.d.ts +5 -0
  60. package/dist/src/plugin/cache/index.d.ts.map +1 -0
  61. package/dist/src/plugin/cache/index.js +5 -0
  62. package/dist/src/plugin/cache/index.js.map +1 -0
  63. package/dist/src/plugin/cache/signature-cache.d.ts +111 -0
  64. package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -0
  65. package/dist/src/plugin/cache/signature-cache.js +375 -0
  66. package/dist/src/plugin/cache/signature-cache.js.map +1 -0
  67. package/dist/src/plugin/cache.d.ts +44 -0
  68. package/dist/src/plugin/cache.d.ts.map +1 -0
  69. package/dist/src/plugin/cache.js +247 -0
  70. package/dist/src/plugin/cache.js.map +1 -0
  71. package/dist/src/plugin/cli.d.ts +44 -0
  72. package/dist/src/plugin/cli.d.ts.map +1 -0
  73. package/dist/src/plugin/cli.js +153 -0
  74. package/dist/src/plugin/cli.js.map +1 -0
  75. package/dist/src/plugin/config/index.d.ts +16 -0
  76. package/dist/src/plugin/config/index.d.ts.map +1 -0
  77. package/dist/src/plugin/config/index.js +16 -0
  78. package/dist/src/plugin/config/index.js.map +1 -0
  79. package/dist/src/plugin/config/loader.d.ts +36 -0
  80. package/dist/src/plugin/config/loader.d.ts.map +1 -0
  81. package/dist/src/plugin/config/loader.js +140 -0
  82. package/dist/src/plugin/config/loader.js.map +1 -0
  83. package/dist/src/plugin/config/models.d.ts +3 -0
  84. package/dist/src/plugin/config/models.d.ts.map +1 -0
  85. package/dist/src/plugin/config/models.js +2 -0
  86. package/dist/src/plugin/config/models.js.map +1 -0
  87. package/dist/src/plugin/config/schema.d.ts +141 -0
  88. package/dist/src/plugin/config/schema.d.ts.map +1 -0
  89. package/dist/src/plugin/config/schema.js +504 -0
  90. package/dist/src/plugin/config/schema.js.map +1 -0
  91. package/dist/src/plugin/config/updater.d.ts +55 -0
  92. package/dist/src/plugin/config/updater.d.ts.map +1 -0
  93. package/dist/src/plugin/config/updater.js +127 -0
  94. package/dist/src/plugin/config/updater.js.map +1 -0
  95. package/dist/src/plugin/core/streaming/index.d.ts +3 -0
  96. package/dist/src/plugin/core/streaming/index.d.ts.map +1 -0
  97. package/dist/src/plugin/core/streaming/index.js +3 -0
  98. package/dist/src/plugin/core/streaming/index.js.map +1 -0
  99. package/dist/src/plugin/core/streaming/transformer.d.ts +12 -0
  100. package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -0
  101. package/dist/src/plugin/core/streaming/transformer.js +447 -0
  102. package/dist/src/plugin/core/streaming/transformer.js.map +1 -0
  103. package/dist/src/plugin/core/streaming/types.d.ts +34 -0
  104. package/dist/src/plugin/core/streaming/types.d.ts.map +1 -0
  105. package/dist/src/plugin/core/streaming/types.js +1 -0
  106. package/dist/src/plugin/core/streaming/types.js.map +1 -0
  107. package/dist/src/plugin/debug.d.ts +94 -0
  108. package/dist/src/plugin/debug.d.ts.map +1 -0
  109. package/dist/src/plugin/debug.js +383 -0
  110. package/dist/src/plugin/debug.js.map +1 -0
  111. package/dist/src/plugin/errors.d.ts +28 -0
  112. package/dist/src/plugin/errors.d.ts.map +1 -0
  113. package/dist/src/plugin/errors.js +42 -0
  114. package/dist/src/plugin/errors.js.map +1 -0
  115. package/dist/src/plugin/fingerprint.d.ts +2 -0
  116. package/dist/src/plugin/fingerprint.d.ts.map +1 -0
  117. package/dist/src/plugin/fingerprint.js +3 -0
  118. package/dist/src/plugin/fingerprint.js.map +1 -0
  119. package/dist/src/plugin/gemini-dump.d.ts +47 -0
  120. package/dist/src/plugin/gemini-dump.d.ts.map +1 -0
  121. package/dist/src/plugin/gemini-dump.js +238 -0
  122. package/dist/src/plugin/gemini-dump.js.map +1 -0
  123. package/dist/src/plugin/image-saver.d.ts +25 -0
  124. package/dist/src/plugin/image-saver.d.ts.map +1 -0
  125. package/dist/src/plugin/image-saver.js +86 -0
  126. package/dist/src/plugin/image-saver.js.map +1 -0
  127. package/dist/src/plugin/logger.d.ts +23 -0
  128. package/dist/src/plugin/logger.d.ts.map +1 -0
  129. package/dist/src/plugin/logger.js +80 -0
  130. package/dist/src/plugin/logger.js.map +1 -0
  131. package/dist/src/plugin/logging-utils.d.ts +23 -0
  132. package/dist/src/plugin/logging-utils.d.ts.map +1 -0
  133. package/dist/src/plugin/logging-utils.js +92 -0
  134. package/dist/src/plugin/logging-utils.js.map +1 -0
  135. package/dist/src/plugin/model-registry.d.ts +2 -0
  136. package/dist/src/plugin/model-registry.d.ts.map +1 -0
  137. package/dist/src/plugin/model-registry.js +3 -0
  138. package/dist/src/plugin/model-registry.js.map +1 -0
  139. package/dist/src/plugin/project.d.ts +2 -0
  140. package/dist/src/plugin/project.d.ts.map +1 -0
  141. package/dist/src/plugin/project.js +3 -0
  142. package/dist/src/plugin/project.js.map +1 -0
  143. package/dist/src/plugin/prompt-context.d.ts +18 -0
  144. package/dist/src/plugin/prompt-context.d.ts.map +1 -0
  145. package/dist/src/plugin/prompt-context.js +99 -0
  146. package/dist/src/plugin/prompt-context.js.map +1 -0
  147. package/dist/src/plugin/quota.d.ts +44 -0
  148. package/dist/src/plugin/quota.d.ts.map +1 -0
  149. package/dist/src/plugin/quota.js +336 -0
  150. package/dist/src/plugin/quota.js.map +1 -0
  151. package/dist/src/plugin/recovery/constants.d.ts +22 -0
  152. package/dist/src/plugin/recovery/constants.d.ts.map +1 -0
  153. package/dist/src/plugin/recovery/constants.js +43 -0
  154. package/dist/src/plugin/recovery/constants.js.map +1 -0
  155. package/dist/src/plugin/recovery/index.d.ts +12 -0
  156. package/dist/src/plugin/recovery/index.d.ts.map +1 -0
  157. package/dist/src/plugin/recovery/index.js +12 -0
  158. package/dist/src/plugin/recovery/index.js.map +1 -0
  159. package/dist/src/plugin/recovery/storage.d.ts +24 -0
  160. package/dist/src/plugin/recovery/storage.d.ts.map +1 -0
  161. package/dist/src/plugin/recovery/storage.js +354 -0
  162. package/dist/src/plugin/recovery/storage.js.map +1 -0
  163. package/dist/src/plugin/recovery/types.d.ts +116 -0
  164. package/dist/src/plugin/recovery/types.d.ts.map +1 -0
  165. package/dist/src/plugin/recovery/types.js +6 -0
  166. package/dist/src/plugin/recovery/types.js.map +1 -0
  167. package/dist/src/plugin/recovery.d.ts +61 -0
  168. package/dist/src/plugin/recovery.d.ts.map +1 -0
  169. package/dist/src/plugin/recovery.js +381 -0
  170. package/dist/src/plugin/recovery.js.map +1 -0
  171. package/dist/src/plugin/refresh-queue.d.ts +100 -0
  172. package/dist/src/plugin/refresh-queue.d.ts.map +1 -0
  173. package/dist/src/plugin/refresh-queue.js +247 -0
  174. package/dist/src/plugin/refresh-queue.js.map +1 -0
  175. package/dist/src/plugin/request-helpers.d.ts +278 -0
  176. package/dist/src/plugin/request-helpers.d.ts.map +1 -0
  177. package/dist/src/plugin/request-helpers.js +2323 -0
  178. package/dist/src/plugin/request-helpers.js.map +1 -0
  179. package/dist/src/plugin/request.d.ts +102 -0
  180. package/dist/src/plugin/request.d.ts.map +1 -0
  181. package/dist/src/plugin/request.js +1658 -0
  182. package/dist/src/plugin/request.js.map +1 -0
  183. package/dist/src/plugin/rotation.d.ts +169 -0
  184. package/dist/src/plugin/rotation.d.ts.map +1 -0
  185. package/dist/src/plugin/rotation.js +328 -0
  186. package/dist/src/plugin/rotation.js.map +1 -0
  187. package/dist/src/plugin/search.d.ts +25 -0
  188. package/dist/src/plugin/search.d.ts.map +1 -0
  189. package/dist/src/plugin/search.js +200 -0
  190. package/dist/src/plugin/search.js.map +1 -0
  191. package/dist/src/plugin/server.d.ts +23 -0
  192. package/dist/src/plugin/server.d.ts.map +1 -0
  193. package/dist/src/plugin/server.js +324 -0
  194. package/dist/src/plugin/server.js.map +1 -0
  195. package/dist/src/plugin/storage.d.ts +150 -0
  196. package/dist/src/plugin/storage.d.ts.map +1 -0
  197. package/dist/src/plugin/storage.js +628 -0
  198. package/dist/src/plugin/storage.js.map +1 -0
  199. package/dist/src/plugin/stores/signature-store.d.ts +5 -0
  200. package/dist/src/plugin/stores/signature-store.d.ts.map +1 -0
  201. package/dist/src/plugin/stores/signature-store.js +25 -0
  202. package/dist/src/plugin/stores/signature-store.js.map +1 -0
  203. package/dist/src/plugin/thinking-recovery.d.ts +90 -0
  204. package/dist/src/plugin/thinking-recovery.d.ts.map +1 -0
  205. package/dist/src/plugin/thinking-recovery.js +330 -0
  206. package/dist/src/plugin/thinking-recovery.js.map +1 -0
  207. package/dist/src/plugin/token.d.ts +19 -0
  208. package/dist/src/plugin/token.d.ts.map +1 -0
  209. package/dist/src/plugin/token.js +130 -0
  210. package/dist/src/plugin/token.js.map +1 -0
  211. package/dist/src/plugin/transform/claude.d.ts +92 -0
  212. package/dist/src/plugin/transform/claude.d.ts.map +1 -0
  213. package/dist/src/plugin/transform/claude.js +280 -0
  214. package/dist/src/plugin/transform/claude.js.map +1 -0
  215. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +2 -0
  216. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
  217. package/dist/src/plugin/transform/cross-model-sanitizer.js +3 -0
  218. package/dist/src/plugin/transform/cross-model-sanitizer.js.map +1 -0
  219. package/dist/src/plugin/transform/gemini.d.ts +100 -0
  220. package/dist/src/plugin/transform/gemini.d.ts.map +1 -0
  221. package/dist/src/plugin/transform/gemini.js +446 -0
  222. package/dist/src/plugin/transform/gemini.js.map +1 -0
  223. package/dist/src/plugin/transform/index.d.ts +2 -0
  224. package/dist/src/plugin/transform/index.d.ts.map +1 -0
  225. package/dist/src/plugin/transform/index.js +3 -0
  226. package/dist/src/plugin/transform/index.js.map +1 -0
  227. package/dist/src/plugin/transform/model-resolver.d.ts +2 -0
  228. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -0
  229. package/dist/src/plugin/transform/model-resolver.js +3 -0
  230. package/dist/src/plugin/transform/model-resolver.js.map +1 -0
  231. package/dist/src/plugin/transform/types.d.ts +2 -0
  232. package/dist/src/plugin/transform/types.d.ts.map +1 -0
  233. package/dist/src/plugin/transform/types.js +3 -0
  234. package/dist/src/plugin/transform/types.js.map +1 -0
  235. package/dist/src/plugin/types.d.ts +80 -0
  236. package/dist/src/plugin/types.d.ts.map +1 -0
  237. package/dist/src/plugin/types.js +1 -0
  238. package/dist/src/plugin/types.js.map +1 -0
  239. package/dist/src/plugin/ui/ansi.d.ts +32 -0
  240. package/dist/src/plugin/ui/ansi.d.ts.map +1 -0
  241. package/dist/src/plugin/ui/ansi.js +52 -0
  242. package/dist/src/plugin/ui/ansi.js.map +1 -0
  243. package/dist/src/plugin/ui/auth-menu.d.ts +59 -0
  244. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -0
  245. package/dist/src/plugin/ui/auth-menu.js +362 -0
  246. package/dist/src/plugin/ui/auth-menu.js.map +1 -0
  247. package/dist/src/plugin/ui/confirm.d.ts +2 -0
  248. package/dist/src/plugin/ui/confirm.d.ts.map +1 -0
  249. package/dist/src/plugin/ui/confirm.js +15 -0
  250. package/dist/src/plugin/ui/confirm.js.map +1 -0
  251. package/dist/src/plugin/ui/model-status.d.ts +28 -0
  252. package/dist/src/plugin/ui/model-status.d.ts.map +1 -0
  253. package/dist/src/plugin/ui/model-status.js +80 -0
  254. package/dist/src/plugin/ui/model-status.js.map +1 -0
  255. package/dist/src/plugin/ui/quota-status.d.ts +82 -0
  256. package/dist/src/plugin/ui/quota-status.d.ts.map +1 -0
  257. package/dist/src/plugin/ui/quota-status.js +251 -0
  258. package/dist/src/plugin/ui/quota-status.js.map +1 -0
  259. package/dist/src/plugin/ui/select.d.ts +23 -0
  260. package/dist/src/plugin/ui/select.d.ts.map +1 -0
  261. package/dist/src/plugin/ui/select.js +254 -0
  262. package/dist/src/plugin/ui/select.js.map +1 -0
  263. package/dist/src/plugin/version.d.ts +2 -0
  264. package/dist/src/plugin/version.d.ts.map +1 -0
  265. package/dist/src/plugin/version.js +3 -0
  266. package/dist/src/plugin/version.js.map +1 -0
  267. package/dist/src/plugin.d.ts +32 -0
  268. package/dist/src/plugin.d.ts.map +1 -0
  269. package/dist/src/plugin.js +3125 -0
  270. package/dist/src/plugin.js.map +1 -0
  271. package/package.json +70 -0
@@ -0,0 +1,47 @@
1
+ export declare const GEMINI_DUMP_COMMAND_NAME = "gemini-dump";
2
+ export type GeminiDumpCommandAction = {
3
+ type: "status";
4
+ } | {
5
+ type: "enable";
6
+ } | {
7
+ type: "disable";
8
+ } | {
9
+ type: "usage";
10
+ };
11
+ export interface GeminiDumpContext {
12
+ id: string;
13
+ files: {
14
+ request: string;
15
+ response: string;
16
+ metadata: string;
17
+ };
18
+ metadata: Record<string, unknown>;
19
+ }
20
+ export declare function isGeminiDumpEnabled(): boolean;
21
+ export declare function setGeminiDumpEnabled(enabled: boolean): void;
22
+ export declare function resetGeminiDumpState(): void;
23
+ export declare function getGeminiDumpDirectory(): string;
24
+ export declare function parseGeminiDumpCommandAction(argumentsText: string): GeminiDumpCommandAction;
25
+ export declare function buildGeminiDumpStatusSummary(input?: {
26
+ enabled?: boolean;
27
+ }): string;
28
+ export declare function executeGeminiDumpCommand(input: {
29
+ argumentsText: string;
30
+ enabled?: boolean;
31
+ }): string;
32
+ export declare function dumpGeminiRequest(input: {
33
+ originalUrl: string;
34
+ resolvedUrl: string;
35
+ method?: string;
36
+ headers?: HeadersInit | Headers;
37
+ body?: BodyInit | null;
38
+ streaming: boolean;
39
+ requestedModel?: string;
40
+ effectiveModel?: string;
41
+ sessionId?: string;
42
+ projectId?: string;
43
+ }): GeminiDumpContext | null;
44
+ export declare function noteGeminiDumpResponse(context: GeminiDumpContext | null | undefined, response: Pick<Response, "status" | "statusText" | "headers">): void;
45
+ export declare function appendGeminiDumpResponseText(context: GeminiDumpContext | null | undefined, text: string): void;
46
+ export declare function createGeminiDumpResponseTransform(context: GeminiDumpContext | null | undefined): TransformStream<Uint8Array, Uint8Array> | null;
47
+ //# sourceMappingURL=gemini-dump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-dump.d.ts","sourceRoot":"","sources":["../../../src/plugin/gemini-dump.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,wBAAwB,gBAAgB,CAAA;AAarD,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAErB,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,wBAAgB,mBAAmB,YAElC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAEpD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,wBAAgB,sBAAsB,WAErC;AAED,wBAAgB,4BAA4B,CAAC,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAM3F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,UAUzE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,UAe3F;AA+GD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAC/B,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,iBAAiB,GAAG,IAAI,CA0C3B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC,QAQ9D;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,QAOvG;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAC5C,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI,CAQhD"}
@@ -0,0 +1,238 @@
1
+ import { createHash } from "node:crypto";
2
+ import { appendFileSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ export const GEMINI_DUMP_COMMAND_NAME = "gemini-dump";
6
+ const DUMP_STATUS_TITLE = "## Gemini Dump Status";
7
+ const DUMP_ENABLED_TITLE = "## Gemini Dump Enabled";
8
+ const DUMP_DISABLED_TITLE = "## Gemini Dump Disabled";
9
+ const DUMP_USAGE_TITLE = "## Gemini Dump Usage";
10
+ const DUMP_USAGE = "Usage: `/gemini-dump`, `/gemini-dump on`, or `/gemini-dump off`.";
11
+ const DUMP_DIR_ENV = "OPENCODE_ANTIGRAVITY_GEMINI_DUMP_DIR";
12
+ const DEFAULT_DUMP_DIR = join(tmpdir(), "opencode-antigravity-gemini-dumps");
13
+ let dumpEnabled = process.env.OPENCODE_ANTIGRAVITY_GEMINI_DUMP === "1";
14
+ let nextDumpId = 0;
15
+ export function isGeminiDumpEnabled() {
16
+ return dumpEnabled;
17
+ }
18
+ export function setGeminiDumpEnabled(enabled) {
19
+ dumpEnabled = enabled;
20
+ }
21
+ export function resetGeminiDumpState() {
22
+ dumpEnabled = process.env.OPENCODE_ANTIGRAVITY_GEMINI_DUMP === "1";
23
+ nextDumpId = 0;
24
+ }
25
+ export function getGeminiDumpDirectory() {
26
+ return process.env[DUMP_DIR_ENV] || DEFAULT_DUMP_DIR;
27
+ }
28
+ export function parseGeminiDumpCommandAction(argumentsText) {
29
+ const normalized = argumentsText.trim().split(/\s+/).filter(Boolean);
30
+ if (normalized.length === 0)
31
+ return { type: "status" };
32
+ if (normalized.length === 1 && normalized[0] === "on")
33
+ return { type: "enable" };
34
+ if (normalized.length === 1 && normalized[0] === "off")
35
+ return { type: "disable" };
36
+ return { type: "usage" };
37
+ }
38
+ export function buildGeminiDumpStatusSummary(input) {
39
+ const enabled = input?.enabled ?? dumpEnabled;
40
+ return [
41
+ DUMP_STATUS_TITLE,
42
+ "",
43
+ `- Enabled: ${enabled ? "enabled" : "disabled"}`,
44
+ `- Directory: ${getGeminiDumpDirectory()}`,
45
+ "- Captures: final Antigravity request body plus raw response SSE/text chunks",
46
+ "- Warning: dumps contain prompt/session content; turn this off after debugging",
47
+ ].join("\n");
48
+ }
49
+ export function executeGeminiDumpCommand(input) {
50
+ const action = parseGeminiDumpCommandAction(input.argumentsText);
51
+ const enabled = input.enabled ?? dumpEnabled;
52
+ if (action.type === "status")
53
+ return buildGeminiDumpStatusSummary({ enabled });
54
+ if (action.type === "enable") {
55
+ return [DUMP_ENABLED_TITLE, "", buildGeminiDumpStatusSummary({ enabled: true })].join("\n");
56
+ }
57
+ if (action.type === "disable") {
58
+ return [DUMP_DISABLED_TITLE, "", buildGeminiDumpStatusSummary({ enabled: false })].join("\n");
59
+ }
60
+ return [DUMP_USAGE_TITLE, "", DUMP_USAGE, "", buildGeminiDumpStatusSummary({ enabled })].join("\n");
61
+ }
62
+ function hashText(value) {
63
+ return createHash("sha256").update(value).digest("hex");
64
+ }
65
+ function redactForDump(value) {
66
+ if (Array.isArray(value))
67
+ return value.map(redactForDump);
68
+ if (value == null || typeof value !== "object")
69
+ return value;
70
+ const redacted = {};
71
+ for (const [key, entry] of Object.entries(value)) {
72
+ const lower = key.toLowerCase();
73
+ if (lower === "authorization" ||
74
+ lower === "x-api-key" ||
75
+ lower === "cookie" ||
76
+ lower === "set-cookie") {
77
+ redacted[key] = "[redacted]";
78
+ continue;
79
+ }
80
+ redacted[key] = redactForDump(entry);
81
+ }
82
+ return redacted;
83
+ }
84
+ function headersToRecord(headers) {
85
+ if (!headers)
86
+ return {};
87
+ if (headers instanceof Headers) {
88
+ const record = {};
89
+ headers.forEach((value, key) => {
90
+ record[key] = value;
91
+ });
92
+ return record;
93
+ }
94
+ if (Array.isArray(headers))
95
+ return Object.fromEntries(headers);
96
+ return { ...headers };
97
+ }
98
+ function parseBody(bodyText) {
99
+ try {
100
+ const parsed = JSON.parse(bodyText);
101
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null;
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ function collectToolNames(value) {
108
+ const names = [];
109
+ const walk = (entry) => {
110
+ if (Array.isArray(entry)) {
111
+ for (const item of entry)
112
+ walk(item);
113
+ return;
114
+ }
115
+ if (!entry || typeof entry !== "object")
116
+ return;
117
+ const record = entry;
118
+ const declarations = record.functionDeclarations;
119
+ if (Array.isArray(declarations)) {
120
+ for (const declaration of declarations) {
121
+ if (declaration && typeof declaration === "object") {
122
+ const name = declaration.name;
123
+ if (typeof name === "string")
124
+ names.push(name);
125
+ }
126
+ }
127
+ }
128
+ for (const item of Object.values(record))
129
+ walk(item);
130
+ };
131
+ walk(value);
132
+ return names;
133
+ }
134
+ function bodyStructureSummary(bodyText) {
135
+ const parsed = parseBody(bodyText);
136
+ if (!parsed)
137
+ return { parseable: false };
138
+ const request = parsed.request && typeof parsed.request === "object"
139
+ ? parsed.request
140
+ : undefined;
141
+ const contents = Array.isArray(request?.contents) ? request.contents : [];
142
+ const toolNames = collectToolNames(request ?? parsed);
143
+ return {
144
+ parseable: true,
145
+ model: typeof parsed.model === "string" ? parsed.model : undefined,
146
+ requestId: typeof parsed.requestId === "string" ? parsed.requestId : undefined,
147
+ requestType: typeof parsed.requestType === "string" ? parsed.requestType : undefined,
148
+ contentsCount: contents.length,
149
+ toolsCount: toolNames.length,
150
+ toolsHash: hashText(toolNames.join("\n")),
151
+ toolsFirst: toolNames.slice(0, 20),
152
+ toolsLast: toolNames.slice(-10),
153
+ bodyHash: hashText(bodyText),
154
+ bodyBytes: bodyText.length,
155
+ };
156
+ }
157
+ function writeJson(path, value) {
158
+ writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`, "utf8");
159
+ }
160
+ function updateMetadata(context, patch) {
161
+ context.metadata = {
162
+ ...context.metadata,
163
+ ...patch,
164
+ updatedAt: new Date().toISOString(),
165
+ };
166
+ writeJson(context.files.metadata, context.metadata);
167
+ }
168
+ export function dumpGeminiRequest(input) {
169
+ if (!dumpEnabled)
170
+ return null;
171
+ if (typeof input.body !== "string")
172
+ return null;
173
+ nextDumpId += 1;
174
+ const id = `${new Date().toISOString().replace(/[:.]/g, "-")}-${String(nextDumpId).padStart(5, "0")}-${input.streaming ? "stream" : "json"}`;
175
+ const dumpDir = getGeminiDumpDirectory();
176
+ const prefix = join(dumpDir, id);
177
+ mkdirSync(dumpDir, { recursive: true });
178
+ const context = {
179
+ id,
180
+ files: {
181
+ request: `${prefix}.request.json`,
182
+ response: `${prefix}.response.raw`,
183
+ metadata: `${prefix}.meta.json`,
184
+ },
185
+ metadata: {
186
+ id,
187
+ createdAt: new Date().toISOString(),
188
+ originalUrl: input.originalUrl,
189
+ resolvedUrl: input.resolvedUrl,
190
+ method: input.method,
191
+ streaming: input.streaming,
192
+ requestedModel: input.requestedModel,
193
+ effectiveModel: input.effectiveModel,
194
+ sessionId: input.sessionId,
195
+ projectId: input.projectId,
196
+ headers: redactForDump(headersToRecord(input.headers)),
197
+ request: bodyStructureSummary(input.body),
198
+ files: {
199
+ request: `${prefix}.request.json`,
200
+ response: `${prefix}.response.raw`,
201
+ metadata: `${prefix}.meta.json`,
202
+ },
203
+ },
204
+ };
205
+ writeFileSync(context.files.request, input.body, "utf8");
206
+ writeFileSync(context.files.response, "", "utf8");
207
+ writeJson(context.files.metadata, context.metadata);
208
+ return context;
209
+ }
210
+ export function noteGeminiDumpResponse(context, response) {
211
+ if (!context)
212
+ return;
213
+ updateMetadata(context, {
214
+ responseStatus: response.status,
215
+ responseStatusText: response.statusText,
216
+ responseHeaders: redactForDump(headersToRecord(response.headers)),
217
+ });
218
+ }
219
+ export function appendGeminiDumpResponseText(context, text) {
220
+ if (!context)
221
+ return;
222
+ appendFileSync(context.files.response, text, "utf8");
223
+ updateMetadata(context, {
224
+ responseBytes: text.length,
225
+ responseHash: hashText(text),
226
+ });
227
+ }
228
+ export function createGeminiDumpResponseTransform(context) {
229
+ if (!context)
230
+ return null;
231
+ return new TransformStream({
232
+ transform(chunk, controller) {
233
+ appendFileSync(context.files.response, Buffer.from(chunk));
234
+ controller.enqueue(chunk);
235
+ },
236
+ });
237
+ }
238
+ //# sourceMappingURL=gemini-dump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-dump.js","sourceRoot":"","sources":["../../../src/plugin/gemini-dump.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Image Saving Utility
3
+ *
4
+ * Handles saving generated images to disk and returning file paths.
5
+ */
6
+ /**
7
+ * Save base64 image data to disk and return the file path.
8
+ *
9
+ * @param base64Data - The base64-encoded image data
10
+ * @param mimeType - The MIME type of the image (e.g., "image/jpeg")
11
+ * @returns The absolute path to the saved image file
12
+ */
13
+ export declare function saveImageToDisk(base64Data: string, mimeType: string): string;
14
+ /**
15
+ * Process inlineData and return either a file path or base64 data URL.
16
+ * Attempts to save to disk first, falls back to base64 if saving fails.
17
+ *
18
+ * @param inlineData - Object containing mimeType and base64 data
19
+ * @returns Markdown image string with either file path or data URL
20
+ */
21
+ export declare function processImageData(inlineData: {
22
+ mimeType?: string;
23
+ data?: string;
24
+ }): string | null;
25
+ //# sourceMappingURL=image-saver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-saver.d.ts","sourceRoot":"","sources":["../../../src/plugin/image-saver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0CH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgB5E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAkBhG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Image Saving Utility
3
+ *
4
+ * Handles saving generated images to disk and returning file paths.
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import * as os from 'os';
9
+ /**
10
+ * Default directory for saving generated images.
11
+ * Uses ~/.opencode/generated-images/
12
+ */
13
+ function getImageOutputDir() {
14
+ const homeDir = os.homedir();
15
+ const outputDir = path.join(homeDir, '.opencode', 'generated-images');
16
+ // Create directory if it doesn't exist
17
+ if (!fs.existsSync(outputDir)) {
18
+ fs.mkdirSync(outputDir, { recursive: true });
19
+ }
20
+ return outputDir;
21
+ }
22
+ /**
23
+ * Generate a unique filename for the image.
24
+ */
25
+ function generateImageFilename(mimeType) {
26
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
27
+ const random = Math.random().toString(36).substring(2, 8);
28
+ // Determine extension from mime type
29
+ let ext = 'png';
30
+ if (mimeType.includes('jpeg') || mimeType.includes('jpg')) {
31
+ ext = 'jpg';
32
+ }
33
+ else if (mimeType.includes('gif')) {
34
+ ext = 'gif';
35
+ }
36
+ else if (mimeType.includes('webp')) {
37
+ ext = 'webp';
38
+ }
39
+ return `image-${timestamp}-${random}.${ext}`;
40
+ }
41
+ /**
42
+ * Save base64 image data to disk and return the file path.
43
+ *
44
+ * @param base64Data - The base64-encoded image data
45
+ * @param mimeType - The MIME type of the image (e.g., "image/jpeg")
46
+ * @returns The absolute path to the saved image file
47
+ */
48
+ export function saveImageToDisk(base64Data, mimeType) {
49
+ try {
50
+ const outputDir = getImageOutputDir();
51
+ const filename = generateImageFilename(mimeType);
52
+ const filePath = path.join(outputDir, filename);
53
+ // Decode base64 and write to file
54
+ const buffer = Buffer.from(base64Data, 'base64');
55
+ fs.writeFileSync(filePath, buffer);
56
+ return filePath;
57
+ }
58
+ catch (error) {
59
+ // If saving fails, return empty string (caller will fall back to base64)
60
+ console.error('[image-saver] Failed to save image:', error);
61
+ return '';
62
+ }
63
+ }
64
+ /**
65
+ * Process inlineData and return either a file path or base64 data URL.
66
+ * Attempts to save to disk first, falls back to base64 if saving fails.
67
+ *
68
+ * @param inlineData - Object containing mimeType and base64 data
69
+ * @returns Markdown image string with either file path or data URL
70
+ */
71
+ export function processImageData(inlineData) {
72
+ const mimeType = inlineData.mimeType || 'image/png';
73
+ const data = inlineData.data;
74
+ if (!data) {
75
+ return null;
76
+ }
77
+ // Try to save to disk first
78
+ const filePath = saveImageToDisk(data, mimeType);
79
+ if (filePath) {
80
+ // Successfully saved - return file path with open command hint
81
+ return `![Generated Image](${filePath})\n\nImage saved to: \`${filePath}\`\n\nTo view: \`open "${filePath}"\``;
82
+ }
83
+ // Fall back to base64 data URL
84
+ return `![Generated Image](data:${mimeType};base64,${data})`;
85
+ }
86
+ //# sourceMappingURL=image-saver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-saver.js","sourceRoot":"","sources":["../../../src/plugin/image-saver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Structured Logger for Antigravity Plugin
3
+ *
4
+ * Logging behavior:
5
+ * - debug controls file logs only (via debug.ts)
6
+ * - debug_tui controls TUI log panel only
7
+ * - either sink can be enabled independently
8
+ * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
+ */
10
+ import type { PluginClient } from "./types";
11
+ export interface Logger {
12
+ debug(message: string, extra?: Record<string, unknown>): void;
13
+ info(message: string, extra?: Record<string, unknown>): void;
14
+ warn(message: string, extra?: Record<string, unknown>): void;
15
+ error(message: string, extra?: Record<string, unknown>): void;
16
+ }
17
+ /**
18
+ * Initialize the logger with the plugin client.
19
+ * Must be called during plugin initialization to enable TUI logging.
20
+ */
21
+ export declare function initLogger(client: PluginClient): void;
22
+ export declare function createLogger(module: string): Logger;
23
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Structured Logger for Antigravity Plugin
3
+ *
4
+ * Logging behavior:
5
+ * - debug controls file logs only (via debug.ts)
6
+ * - debug_tui controls TUI log panel only
7
+ * - either sink can be enabled independently
8
+ * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
+ */
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";
14
+ let _client = null;
15
+ /**
16
+ * Check if console logging is enabled via environment variable.
17
+ */
18
+ function isConsoleLogEnabled() {
19
+ return isTruthyFlag(process.env[ENV_CONSOLE_LOG]);
20
+ }
21
+ /**
22
+ * Initialize the logger with the plugin client.
23
+ * Must be called during plugin initialization to enable TUI logging.
24
+ */
25
+ export function initLogger(client) {
26
+ _client = client;
27
+ // Route core (@cortexkit/antigravity-auth-core) logs into the same TUI/console
28
+ // sinks the OpenCode logger uses, so logs from migrated core modules surface.
29
+ setLogSink(({ service, level, message, extra }) => {
30
+ emitLog(service, level, message, extra);
31
+ });
32
+ }
33
+ /**
34
+ * Create a logger instance for a specific module.
35
+ *
36
+ * @param module - The module name (e.g., "refresh-queue", "transform.claude")
37
+ * @returns Logger instance with debug, info, warn, error methods
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const log = createLogger("refresh-queue");
42
+ * log.debug("Checking tokens", { count: 5 });
43
+ * log.warn("Token expired", { accountIndex: 0 });
44
+ * ```
45
+ */
46
+ function emitLog(service, level, message, extra) {
47
+ // TUI logging: controlled only by debug_tui policy
48
+ if (isDebugTuiEnabled()) {
49
+ const app = _client?.app;
50
+ if (app && typeof app.log === "function") {
51
+ app
52
+ .log({
53
+ body: { service, level, message, extra },
54
+ })
55
+ .catch(() => {
56
+ // Silently ignore logging errors
57
+ });
58
+ }
59
+ }
60
+ // Console fallback: when env var is set (independent of debug flags)
61
+ if (isConsoleLogEnabled()) {
62
+ const prefix = `[${service}]`;
63
+ const args = extra ? [prefix, message, extra] : [prefix, message];
64
+ writeConsoleLog(level, ...args);
65
+ }
66
+ // If neither TUI nor console logging is enabled, log is silently discarded
67
+ }
68
+ export function createLogger(module) {
69
+ const service = `antigravity.${module}`;
70
+ const log = (level, message, extra) => {
71
+ emitLog(service, level, message, extra);
72
+ };
73
+ 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),
78
+ };
79
+ }
80
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +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"}
@@ -0,0 +1,23 @@
1
+ export type LogLevel = "debug" | "info" | "warn" | "error";
2
+ export interface DebugPolicyInput {
3
+ configDebug: boolean;
4
+ configDebugTui: boolean;
5
+ envDebugFlag?: string;
6
+ envDebugTuiFlag?: string;
7
+ }
8
+ export interface DebugPolicy {
9
+ debugLevel: number;
10
+ debugEnabled: boolean;
11
+ debugTuiEnabled: boolean;
12
+ verboseEnabled: boolean;
13
+ }
14
+ export declare function isTruthyFlag(flag?: string): boolean;
15
+ export declare function parseDebugLevel(flag: string): number;
16
+ export declare function deriveDebugPolicy(input: DebugPolicyInput): DebugPolicy;
17
+ export declare function formatAccountLabel(email: string | undefined, accountIndex: number): string;
18
+ export declare function formatAccountContextLabel(email: string | undefined, accountIndex: number): string;
19
+ export declare function formatErrorForLog(error: unknown): string;
20
+ export declare function truncateTextForLog(text: string, maxChars: number): string;
21
+ export declare function formatBodyPreviewForLog(body: BodyInit | null | undefined, maxChars: number): string | undefined;
22
+ export declare function writeConsoleLog(level: LogLevel, ...args: unknown[]): void;
23
+ //# sourceMappingURL=logging-utils.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,92 @@
1
+ export function isTruthyFlag(flag) {
2
+ return flag === "1" || flag?.toLowerCase() === "true";
3
+ }
4
+ export function parseDebugLevel(flag) {
5
+ const trimmed = flag.trim();
6
+ if (trimmed === "2" || trimmed === "verbose")
7
+ return 2;
8
+ if (trimmed === "1" || trimmed === "true")
9
+ return 1;
10
+ return 0;
11
+ }
12
+ export function deriveDebugPolicy(input) {
13
+ const envDebugFlag = input.envDebugFlag ?? "";
14
+ const debugLevel = input.configDebug
15
+ ? envDebugFlag === "2" || envDebugFlag === "verbose"
16
+ ? 2
17
+ : 1
18
+ : parseDebugLevel(envDebugFlag);
19
+ const debugEnabled = debugLevel >= 1;
20
+ const verboseEnabled = debugLevel >= 2;
21
+ const debugTuiEnabled = debugEnabled && (input.configDebugTui || isTruthyFlag(input.envDebugTuiFlag));
22
+ return {
23
+ debugLevel,
24
+ debugEnabled,
25
+ debugTuiEnabled,
26
+ verboseEnabled,
27
+ };
28
+ }
29
+ export function formatAccountLabel(email, accountIndex) {
30
+ return email || `Account ${accountIndex + 1}`;
31
+ }
32
+ export function formatAccountContextLabel(email, accountIndex) {
33
+ if (email) {
34
+ return email;
35
+ }
36
+ if (accountIndex >= 0) {
37
+ return `Account ${accountIndex + 1}`;
38
+ }
39
+ return "All accounts";
40
+ }
41
+ export function formatErrorForLog(error) {
42
+ if (error instanceof Error) {
43
+ return error.stack ?? error.message;
44
+ }
45
+ try {
46
+ return JSON.stringify(error);
47
+ }
48
+ catch {
49
+ return String(error);
50
+ }
51
+ }
52
+ export function truncateTextForLog(text, maxChars) {
53
+ if (text.length <= maxChars) {
54
+ return text;
55
+ }
56
+ return `${text.slice(0, maxChars)}... (truncated ${text.length - maxChars} chars)`;
57
+ }
58
+ export function formatBodyPreviewForLog(body, maxChars) {
59
+ if (body == null) {
60
+ return undefined;
61
+ }
62
+ if (typeof body === "string") {
63
+ return truncateTextForLog(body, maxChars);
64
+ }
65
+ if (body instanceof URLSearchParams) {
66
+ return truncateTextForLog(body.toString(), maxChars);
67
+ }
68
+ if (typeof Blob !== "undefined" && body instanceof Blob) {
69
+ return `[Blob size=${body.size}]`;
70
+ }
71
+ if (typeof FormData !== "undefined" && body instanceof FormData) {
72
+ return "[FormData payload omitted]";
73
+ }
74
+ return `[${body.constructor?.name ?? typeof body} payload omitted]`;
75
+ }
76
+ export function writeConsoleLog(level, ...args) {
77
+ switch (level) {
78
+ case "debug":
79
+ console.debug(...args);
80
+ break;
81
+ case "info":
82
+ console.info(...args);
83
+ break;
84
+ case "warn":
85
+ console.warn(...args);
86
+ break;
87
+ case "error":
88
+ console.error(...args);
89
+ break;
90
+ }
91
+ }
92
+ //# sourceMappingURL=logging-utils.js.map