@percygfx/opencode-antigravity-auth 0.0.0-stage → 2.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 (296) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +876 -3
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/rpc.d.ts +176 -0
  8. package/dist/rpc.d.ts.map +1 -0
  9. package/dist/rpc.js +91 -0
  10. package/dist/rpc.js.map +1 -0
  11. package/dist/server.d.ts +3 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +5 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/src/antigravity/oauth.d.ts +31 -0
  16. package/dist/src/antigravity/oauth.d.ts.map +1 -0
  17. package/dist/src/antigravity/oauth.js +171 -0
  18. package/dist/src/antigravity/oauth.js.map +1 -0
  19. package/dist/src/constants.d.ts +148 -0
  20. package/dist/src/constants.d.ts.map +1 -0
  21. package/dist/src/constants.js +233 -0
  22. package/dist/src/constants.js.map +1 -0
  23. package/dist/src/hooks/auto-update-checker/cache.d.ts +3 -0
  24. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
  25. package/dist/src/hooks/auto-update-checker/cache.js +71 -0
  26. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -0
  27. package/dist/src/hooks/auto-update-checker/checker.d.ts +16 -0
  28. package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
  29. package/dist/src/hooks/auto-update-checker/checker.js +234 -0
  30. package/dist/src/hooks/auto-update-checker/checker.js.map +1 -0
  31. package/dist/src/hooks/auto-update-checker/constants.d.ts +11 -0
  32. package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
  33. package/dist/src/hooks/auto-update-checker/constants.js +26 -0
  34. package/dist/src/hooks/auto-update-checker/constants.js.map +1 -0
  35. package/dist/src/hooks/auto-update-checker/index.d.ts +34 -0
  36. package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -0
  37. package/dist/src/hooks/auto-update-checker/index.js +122 -0
  38. package/dist/src/hooks/auto-update-checker/index.js.map +1 -0
  39. package/dist/src/hooks/auto-update-checker/logging.d.ts +3 -0
  40. package/dist/src/hooks/auto-update-checker/logging.d.ts.map +1 -0
  41. package/dist/src/hooks/auto-update-checker/logging.js +9 -0
  42. package/dist/src/hooks/auto-update-checker/logging.js.map +1 -0
  43. package/dist/src/hooks/auto-update-checker/types.d.ts +25 -0
  44. package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -0
  45. package/dist/src/hooks/auto-update-checker/types.js +1 -0
  46. package/dist/src/hooks/auto-update-checker/types.js.map +1 -0
  47. package/dist/src/opencode-v2/accounts.d.ts +24 -0
  48. package/dist/src/opencode-v2/accounts.d.ts.map +1 -0
  49. package/dist/src/opencode-v2/accounts.js +109 -0
  50. package/dist/src/opencode-v2/accounts.js.map +1 -0
  51. package/dist/src/opencode-v2/catalog.d.ts +31 -0
  52. package/dist/src/opencode-v2/catalog.d.ts.map +1 -0
  53. package/dist/src/opencode-v2/catalog.js +68 -0
  54. package/dist/src/opencode-v2/catalog.js.map +1 -0
  55. package/dist/src/opencode-v2/client-shim.d.ts +9 -0
  56. package/dist/src/opencode-v2/client-shim.d.ts.map +1 -0
  57. package/dist/src/opencode-v2/client-shim.js +42 -0
  58. package/dist/src/opencode-v2/client-shim.js.map +1 -0
  59. package/dist/src/opencode-v2/clipboard.d.ts +7 -0
  60. package/dist/src/opencode-v2/clipboard.d.ts.map +1 -0
  61. package/dist/src/opencode-v2/clipboard.js +54 -0
  62. package/dist/src/opencode-v2/clipboard.js.map +1 -0
  63. package/dist/src/opencode-v2/index.d.ts +5 -0
  64. package/dist/src/opencode-v2/index.d.ts.map +1 -0
  65. package/dist/src/opencode-v2/index.js +4 -0
  66. package/dist/src/opencode-v2/index.js.map +1 -0
  67. package/dist/src/opencode-v2/plugin.d.ts +23 -0
  68. package/dist/src/opencode-v2/plugin.d.ts.map +1 -0
  69. package/dist/src/opencode-v2/plugin.js +401 -0
  70. package/dist/src/opencode-v2/plugin.js.map +1 -0
  71. package/dist/src/opencode-v2/proxy.d.ts +23 -0
  72. package/dist/src/opencode-v2/proxy.d.ts.map +1 -0
  73. package/dist/src/opencode-v2/proxy.js +148 -0
  74. package/dist/src/opencode-v2/proxy.js.map +1 -0
  75. package/dist/src/opencode-v2/quota-format.d.ts +19 -0
  76. package/dist/src/opencode-v2/quota-format.d.ts.map +1 -0
  77. package/dist/src/opencode-v2/quota-format.js +71 -0
  78. package/dist/src/opencode-v2/quota-format.js.map +1 -0
  79. package/dist/src/opencode-v2/quota.d.ts +18 -0
  80. package/dist/src/opencode-v2/quota.d.ts.map +1 -0
  81. package/dist/src/opencode-v2/quota.js +118 -0
  82. package/dist/src/opencode-v2/quota.js.map +1 -0
  83. package/dist/src/opencode-v2/sign-in-attempts.d.ts +52 -0
  84. package/dist/src/opencode-v2/sign-in-attempts.d.ts.map +1 -0
  85. package/dist/src/opencode-v2/sign-in-attempts.js +81 -0
  86. package/dist/src/opencode-v2/sign-in-attempts.js.map +1 -0
  87. package/dist/src/plugin/accounts.d.ts +179 -0
  88. package/dist/src/plugin/accounts.d.ts.map +1 -0
  89. package/dist/src/plugin/accounts.js +1004 -0
  90. package/dist/src/plugin/accounts.js.map +1 -0
  91. package/dist/src/plugin/auth.d.ts +21 -0
  92. package/dist/src/plugin/auth.d.ts.map +1 -0
  93. package/dist/src/plugin/auth.js +46 -0
  94. package/dist/src/plugin/auth.js.map +1 -0
  95. package/dist/src/plugin/cache/index.d.ts +5 -0
  96. package/dist/src/plugin/cache/index.d.ts.map +1 -0
  97. package/dist/src/plugin/cache/index.js +5 -0
  98. package/dist/src/plugin/cache/index.js.map +1 -0
  99. package/dist/src/plugin/cache/signature-cache.d.ts +111 -0
  100. package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -0
  101. package/dist/src/plugin/cache/signature-cache.js +375 -0
  102. package/dist/src/plugin/cache/signature-cache.js.map +1 -0
  103. package/dist/src/plugin/cache.d.ts +44 -0
  104. package/dist/src/plugin/cache.d.ts.map +1 -0
  105. package/dist/src/plugin/cache.js +200 -0
  106. package/dist/src/plugin/cache.js.map +1 -0
  107. package/dist/src/plugin/cli.d.ts +26 -0
  108. package/dist/src/plugin/cli.d.ts.map +1 -0
  109. package/dist/src/plugin/cli.js +119 -0
  110. package/dist/src/plugin/cli.js.map +1 -0
  111. package/dist/src/plugin/config/index.d.ts +16 -0
  112. package/dist/src/plugin/config/index.d.ts.map +1 -0
  113. package/dist/src/plugin/config/index.js +16 -0
  114. package/dist/src/plugin/config/index.js.map +1 -0
  115. package/dist/src/plugin/config/loader.d.ts +36 -0
  116. package/dist/src/plugin/config/loader.d.ts.map +1 -0
  117. package/dist/src/plugin/config/loader.js +140 -0
  118. package/dist/src/plugin/config/loader.js.map +1 -0
  119. package/dist/src/plugin/config/models.d.ts +41 -0
  120. package/dist/src/plugin/config/models.d.ts.map +1 -0
  121. package/dist/src/plugin/config/models.js +46 -0
  122. package/dist/src/plugin/config/models.js.map +1 -0
  123. package/dist/src/plugin/config/schema.d.ts +135 -0
  124. package/dist/src/plugin/config/schema.d.ts.map +1 -0
  125. package/dist/src/plugin/config/schema.js +438 -0
  126. package/dist/src/plugin/config/schema.js.map +1 -0
  127. package/dist/src/plugin/config/updater.d.ts +55 -0
  128. package/dist/src/plugin/config/updater.d.ts.map +1 -0
  129. package/dist/src/plugin/config/updater.js +125 -0
  130. package/dist/src/plugin/config/updater.js.map +1 -0
  131. package/dist/src/plugin/core/streaming/index.d.ts +3 -0
  132. package/dist/src/plugin/core/streaming/index.d.ts.map +1 -0
  133. package/dist/src/plugin/core/streaming/index.js +3 -0
  134. package/dist/src/plugin/core/streaming/index.js.map +1 -0
  135. package/dist/src/plugin/core/streaming/transformer.d.ts +10 -0
  136. package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -0
  137. package/dist/src/plugin/core/streaming/transformer.js +271 -0
  138. package/dist/src/plugin/core/streaming/transformer.js.map +1 -0
  139. package/dist/src/plugin/core/streaming/types.d.ts +27 -0
  140. package/dist/src/plugin/core/streaming/types.d.ts.map +1 -0
  141. package/dist/src/plugin/core/streaming/types.js +1 -0
  142. package/dist/src/plugin/core/streaming/types.js.map +1 -0
  143. package/dist/src/plugin/debug.d.ts +94 -0
  144. package/dist/src/plugin/debug.d.ts.map +1 -0
  145. package/dist/src/plugin/debug.js +382 -0
  146. package/dist/src/plugin/debug.js.map +1 -0
  147. package/dist/src/plugin/errors.d.ts +28 -0
  148. package/dist/src/plugin/errors.d.ts.map +1 -0
  149. package/dist/src/plugin/errors.js +42 -0
  150. package/dist/src/plugin/errors.js.map +1 -0
  151. package/dist/src/plugin/fingerprint.d.ts +70 -0
  152. package/dist/src/plugin/fingerprint.d.ts.map +1 -0
  153. package/dist/src/plugin/fingerprint.js +138 -0
  154. package/dist/src/plugin/fingerprint.js.map +1 -0
  155. package/dist/src/plugin/image-saver.d.ts +25 -0
  156. package/dist/src/plugin/image-saver.d.ts.map +1 -0
  157. package/dist/src/plugin/image-saver.js +86 -0
  158. package/dist/src/plugin/image-saver.js.map +1 -0
  159. package/dist/src/plugin/logger.d.ts +36 -0
  160. package/dist/src/plugin/logger.d.ts.map +1 -0
  161. package/dist/src/plugin/logger.js +71 -0
  162. package/dist/src/plugin/logger.js.map +1 -0
  163. package/dist/src/plugin/logging-utils.d.ts +23 -0
  164. package/dist/src/plugin/logging-utils.d.ts.map +1 -0
  165. package/dist/src/plugin/logging-utils.js +92 -0
  166. package/dist/src/plugin/logging-utils.js.map +1 -0
  167. package/dist/src/plugin/model-discovery.d.ts +16 -0
  168. package/dist/src/plugin/model-discovery.d.ts.map +1 -0
  169. package/dist/src/plugin/model-discovery.js +50 -0
  170. package/dist/src/plugin/model-discovery.js.map +1 -0
  171. package/dist/src/plugin/model-registry.d.ts +92 -0
  172. package/dist/src/plugin/model-registry.d.ts.map +1 -0
  173. package/dist/src/plugin/model-registry.js +248 -0
  174. package/dist/src/plugin/model-registry.js.map +1 -0
  175. package/dist/src/plugin/project.d.ts +33 -0
  176. package/dist/src/plugin/project.d.ts.map +1 -0
  177. package/dist/src/plugin/project.js +234 -0
  178. package/dist/src/plugin/project.js.map +1 -0
  179. package/dist/src/plugin/quota.d.ts +58 -0
  180. package/dist/src/plugin/quota.d.ts.map +1 -0
  181. package/dist/src/plugin/quota.js +296 -0
  182. package/dist/src/plugin/quota.js.map +1 -0
  183. package/dist/src/plugin/recovery/constants.d.ts +22 -0
  184. package/dist/src/plugin/recovery/constants.d.ts.map +1 -0
  185. package/dist/src/plugin/recovery/constants.js +43 -0
  186. package/dist/src/plugin/recovery/constants.js.map +1 -0
  187. package/dist/src/plugin/recovery/index.d.ts +12 -0
  188. package/dist/src/plugin/recovery/index.d.ts.map +1 -0
  189. package/dist/src/plugin/recovery/index.js +12 -0
  190. package/dist/src/plugin/recovery/index.js.map +1 -0
  191. package/dist/src/plugin/recovery/storage.d.ts +24 -0
  192. package/dist/src/plugin/recovery/storage.d.ts.map +1 -0
  193. package/dist/src/plugin/recovery/storage.js +354 -0
  194. package/dist/src/plugin/recovery/storage.js.map +1 -0
  195. package/dist/src/plugin/recovery/types.d.ts +116 -0
  196. package/dist/src/plugin/recovery/types.d.ts.map +1 -0
  197. package/dist/src/plugin/recovery/types.js +6 -0
  198. package/dist/src/plugin/recovery/types.js.map +1 -0
  199. package/dist/src/plugin/recovery.d.ts +61 -0
  200. package/dist/src/plugin/recovery.d.ts.map +1 -0
  201. package/dist/src/plugin/recovery.js +381 -0
  202. package/dist/src/plugin/recovery.js.map +1 -0
  203. package/dist/src/plugin/refresh-queue.d.ts +100 -0
  204. package/dist/src/plugin/refresh-queue.d.ts.map +1 -0
  205. package/dist/src/plugin/refresh-queue.js +247 -0
  206. package/dist/src/plugin/refresh-queue.js.map +1 -0
  207. package/dist/src/plugin/request-helpers.d.ts +282 -0
  208. package/dist/src/plugin/request-helpers.d.ts.map +1 -0
  209. package/dist/src/plugin/request-helpers.js +2343 -0
  210. package/dist/src/plugin/request-helpers.js.map +1 -0
  211. package/dist/src/plugin/request.d.ts +95 -0
  212. package/dist/src/plugin/request.d.ts.map +1 -0
  213. package/dist/src/plugin/request.js +1500 -0
  214. package/dist/src/plugin/request.js.map +1 -0
  215. package/dist/src/plugin/rotation.d.ts +169 -0
  216. package/dist/src/plugin/rotation.d.ts.map +1 -0
  217. package/dist/src/plugin/rotation.js +328 -0
  218. package/dist/src/plugin/rotation.js.map +1 -0
  219. package/dist/src/plugin/search.d.ts +32 -0
  220. package/dist/src/plugin/search.d.ts.map +1 -0
  221. package/dist/src/plugin/search.js +195 -0
  222. package/dist/src/plugin/search.js.map +1 -0
  223. package/dist/src/plugin/server.d.ts +23 -0
  224. package/dist/src/plugin/server.d.ts.map +1 -0
  225. package/dist/src/plugin/server.js +324 -0
  226. package/dist/src/plugin/server.js.map +1 -0
  227. package/dist/src/plugin/storage.d.ts +155 -0
  228. package/dist/src/plugin/storage.d.ts.map +1 -0
  229. package/dist/src/plugin/storage.js +650 -0
  230. package/dist/src/plugin/storage.js.map +1 -0
  231. package/dist/src/plugin/stores/signature-store.d.ts +5 -0
  232. package/dist/src/plugin/stores/signature-store.d.ts.map +1 -0
  233. package/dist/src/plugin/stores/signature-store.js +25 -0
  234. package/dist/src/plugin/stores/signature-store.js.map +1 -0
  235. package/dist/src/plugin/thinking-recovery.d.ts +90 -0
  236. package/dist/src/plugin/thinking-recovery.d.ts.map +1 -0
  237. package/dist/src/plugin/thinking-recovery.js +316 -0
  238. package/dist/src/plugin/thinking-recovery.js.map +1 -0
  239. package/dist/src/plugin/token.d.ts +19 -0
  240. package/dist/src/plugin/token.d.ts.map +1 -0
  241. package/dist/src/plugin/token.js +128 -0
  242. package/dist/src/plugin/token.js.map +1 -0
  243. package/dist/src/plugin/transform/claude.d.ts +80 -0
  244. package/dist/src/plugin/transform/claude.d.ts.map +1 -0
  245. package/dist/src/plugin/transform/claude.js +265 -0
  246. package/dist/src/plugin/transform/claude.js.map +1 -0
  247. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +35 -0
  248. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
  249. package/dist/src/plugin/transform/cross-model-sanitizer.js +225 -0
  250. package/dist/src/plugin/transform/cross-model-sanitizer.js.map +1 -0
  251. package/dist/src/plugin/transform/gemini.d.ts +100 -0
  252. package/dist/src/plugin/transform/gemini.d.ts.map +1 -0
  253. package/dist/src/plugin/transform/gemini.js +446 -0
  254. package/dist/src/plugin/transform/gemini.js.map +1 -0
  255. package/dist/src/plugin/transform/index.d.ts +15 -0
  256. package/dist/src/plugin/transform/index.d.ts.map +1 -0
  257. package/dist/src/plugin/transform/index.js +14 -0
  258. package/dist/src/plugin/transform/index.js.map +1 -0
  259. package/dist/src/plugin/transform/model-resolver.d.ts +99 -0
  260. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -0
  261. package/dist/src/plugin/transform/model-resolver.js +340 -0
  262. package/dist/src/plugin/transform/model-resolver.js.map +1 -0
  263. package/dist/src/plugin/transform/types.d.ts +111 -0
  264. package/dist/src/plugin/transform/types.d.ts.map +1 -0
  265. package/dist/src/plugin/transform/types.js +1 -0
  266. package/dist/src/plugin/transform/types.js.map +1 -0
  267. package/dist/src/plugin/types.d.ts +97 -0
  268. package/dist/src/plugin/types.d.ts.map +1 -0
  269. package/dist/src/plugin/types.js +1 -0
  270. package/dist/src/plugin/types.js.map +1 -0
  271. package/dist/src/plugin/ui/ansi.d.ts +32 -0
  272. package/dist/src/plugin/ui/ansi.d.ts.map +1 -0
  273. package/dist/src/plugin/ui/ansi.js +52 -0
  274. package/dist/src/plugin/ui/ansi.js.map +1 -0
  275. package/dist/src/plugin/ui/auth-menu.d.ts +33 -0
  276. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -0
  277. package/dist/src/plugin/ui/auth-menu.js +110 -0
  278. package/dist/src/plugin/ui/auth-menu.js.map +1 -0
  279. package/dist/src/plugin/ui/confirm.d.ts +2 -0
  280. package/dist/src/plugin/ui/confirm.d.ts.map +1 -0
  281. package/dist/src/plugin/ui/confirm.js +15 -0
  282. package/dist/src/plugin/ui/confirm.js.map +1 -0
  283. package/dist/src/plugin/ui/select.d.ts +23 -0
  284. package/dist/src/plugin/ui/select.d.ts.map +1 -0
  285. package/dist/src/plugin/ui/select.js +254 -0
  286. package/dist/src/plugin/ui/select.js.map +1 -0
  287. package/dist/src/plugin/version.d.ts +19 -0
  288. package/dist/src/plugin/version.d.ts.map +1 -0
  289. package/dist/src/plugin/version.js +80 -0
  290. package/dist/src/plugin/version.js.map +1 -0
  291. package/dist/src/plugin.d.ts +45 -0
  292. package/dist/src/plugin.d.ts.map +1 -0
  293. package/dist/src/plugin.js +2817 -0
  294. package/dist/src/plugin.js.map +1 -0
  295. package/dist/tui.js +420 -0
  296. package/package.json +98 -5
@@ -0,0 +1,155 @@
1
+ import type { HeaderStyle } from "../constants";
2
+ /**
3
+ * Files/directories that should be gitignored in the config directory.
4
+ * These contain sensitive data or machine-specific state.
5
+ */
6
+ export declare const GITIGNORE_ENTRIES: string[];
7
+ /**
8
+ * Ensures a .gitignore file exists in the config directory with entries
9
+ * for sensitive files. Creates the file if missing, or appends missing
10
+ * entries if it already exists.
11
+ */
12
+ export declare function ensureGitignore(configDir: string): Promise<void>;
13
+ /**
14
+ * Synchronous version of ensureGitignore for use in sync code paths.
15
+ */
16
+ export declare function ensureGitignoreSync(configDir: string): void;
17
+ export type ModelFamily = "claude" | "gemini";
18
+ export type { HeaderStyle };
19
+ export interface RateLimitState {
20
+ claude?: number;
21
+ gemini?: number;
22
+ }
23
+ export interface RateLimitStateV3 {
24
+ claude?: number;
25
+ "gemini-antigravity"?: number;
26
+ "gemini-cli"?: number;
27
+ [key: string]: number | undefined;
28
+ }
29
+ export interface AccountMetadataV1 {
30
+ email?: string;
31
+ refreshToken: string;
32
+ projectId?: string;
33
+ managedProjectId?: string;
34
+ addedAt: number;
35
+ lastUsed: number;
36
+ isRateLimited?: boolean;
37
+ rateLimitResetTime?: number;
38
+ lastSwitchReason?: "rate-limit" | "initial" | "rotation";
39
+ }
40
+ export interface AccountStorageV1 {
41
+ version: 1;
42
+ accounts: AccountMetadataV1[];
43
+ activeIndex: number;
44
+ }
45
+ export interface AccountMetadata {
46
+ email?: string;
47
+ refreshToken: string;
48
+ projectId?: string;
49
+ managedProjectId?: string;
50
+ addedAt: number;
51
+ lastUsed: number;
52
+ lastSwitchReason?: "rate-limit" | "initial" | "rotation";
53
+ rateLimitResetTimes?: RateLimitState;
54
+ }
55
+ export interface AccountStorage {
56
+ version: 2;
57
+ accounts: AccountMetadata[];
58
+ activeIndex: number;
59
+ }
60
+ export type CooldownReason = "auth-failure" | "network-error" | "project-error" | "validation-required";
61
+ export interface AccountMetadataV3 {
62
+ email?: string;
63
+ refreshToken: string;
64
+ projectId?: string;
65
+ managedProjectId?: string;
66
+ addedAt: number;
67
+ lastUsed: number;
68
+ enabled?: boolean;
69
+ lastSwitchReason?: "rate-limit" | "initial" | "rotation";
70
+ rateLimitResetTimes?: RateLimitStateV3;
71
+ coolingDownUntil?: number;
72
+ cooldownReason?: CooldownReason;
73
+ /** Per-account device fingerprint for rate limit mitigation */
74
+ fingerprint?: import("./fingerprint").Fingerprint;
75
+ fingerprintHistory?: import("./fingerprint").FingerprintVersion[];
76
+ /** Set when Google asks the user to verify this account before requests can continue. */
77
+ verificationRequired?: boolean;
78
+ verificationRequiredAt?: number;
79
+ verificationRequiredReason?: string;
80
+ verificationUrl?: string;
81
+ /** Cached soft quota data */
82
+ cachedQuota?: Record<string, {
83
+ remainingFraction?: number;
84
+ resetTime?: string;
85
+ modelCount: number;
86
+ }>;
87
+ cachedQuotaUpdatedAt?: number;
88
+ }
89
+ export interface AccountStorageV3 {
90
+ version: 3;
91
+ accounts: AccountMetadataV3[];
92
+ activeIndex: number;
93
+ activeIndexByFamily?: {
94
+ claude?: number;
95
+ gemini?: number;
96
+ };
97
+ }
98
+ export interface AccountStorageV4 {
99
+ version: 4;
100
+ accounts: AccountMetadataV3[];
101
+ activeIndex: number;
102
+ activeIndexByFamily?: {
103
+ claude?: number;
104
+ gemini?: number;
105
+ };
106
+ /**
107
+ * SHA-256 fingerprints of refresh tokens that were replaced (re-authentication) or removed.
108
+ * Account managers still holding such a token in memory would otherwise merge it back into
109
+ * the pool as a separate account on their next save.
110
+ */
111
+ retiredTokenHashes?: string[];
112
+ }
113
+ /**
114
+ * Gets the config directory path, with the following precedence:
115
+ * 1. OPENCODE_CONFIG_DIR env var (if set)
116
+ * 2. ~/.config/opencode (all platforms, including Windows)
117
+ *
118
+ * On Windows, also checks for legacy %APPDATA%\opencode path for migration.
119
+ */
120
+ declare function getConfigDir(): string;
121
+ export declare function getStoragePath(): string;
122
+ /**
123
+ * Gets the config directory path. Exported for use by other modules.
124
+ */
125
+ export { getConfigDir };
126
+ /** Fingerprint of a refresh token, so retired tokens can be recognized without storing them. */
127
+ export declare function hashRefreshToken(refreshToken: string): string;
128
+ export declare function deduplicateAccountsByEmail<T extends {
129
+ email?: string;
130
+ lastUsed?: number;
131
+ addedAt?: number;
132
+ }>(accounts: T[]): T[];
133
+ export declare function migrateV2ToV3(v2: AccountStorage): AccountStorageV3;
134
+ export declare function migrateV3ToV4(v3: AccountStorageV3): AccountStorageV4;
135
+ export declare function loadAccounts(): Promise<AccountStorageV4 | null>;
136
+ /**
137
+ * Merges `storage` into the file. `options.unretireTokens` lifts the retirement of tokens a
138
+ * sign-in just wrote (in case Google hands back a token that was retired before).
139
+ */
140
+ export declare function saveAccounts(storage: AccountStorageV4, options?: {
141
+ unretireTokens?: readonly string[];
142
+ }): Promise<void>;
143
+ /**
144
+ * Save accounts storage by replacing the entire file (no merge).
145
+ * Use this for destructive operations like delete where we need to
146
+ * remove accounts that would otherwise be merged back from existing storage.
147
+ */
148
+ export declare function saveAccountsReplace(storage: AccountStorageV4): Promise<void>;
149
+ /**
150
+ * Retires refresh tokens (replaced or removed accounts): their accounts are dropped from the
151
+ * pool now, and merges from account managers that still hold them can't bring them back.
152
+ */
153
+ export declare function retireRefreshTokens(refreshTokens: readonly string[]): Promise<void>;
154
+ export declare function clearAccounts(): Promise<void>;
155
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/plugin/storage.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAuC3D;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;CAC1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IACzD,mBAAmB,CAAC,EAAE,cAAc,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,qBAAqB,CAAC;AAExG,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IACzD,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAClD,kBAAkB,CAAC,EAAE,OAAO,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAClE,yFAAyF;IACzF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrG,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAmBD;;;;;;GAMG;AACH,iBAAS,YAAY,IAAI,MAAM,CAS9B;AAiFD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,CAAC;AAsDxB,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;AA8ED,wBAAgB,0BAA0B,CACxC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACjE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CA6DpB;AAiCD,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,gBAAgB,CAkClE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAWpE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAwGrE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACnD,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BlF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzF;AAmCD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAUnD"}