oc-codex-multi-auth 6.0.0 → 6.1.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 (284) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +56 -18
  3. package/assets/readme-hero.svg +10 -10
  4. package/config/README.md +1 -1
  5. package/config/minimal-opencode.json +1 -1
  6. package/config/opencode-legacy.json +1 -1
  7. package/config/opencode-modern.json +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +112 -2525
  11. package/dist/index.js.map +1 -1
  12. package/dist/lib/accounts/persistence.d.ts +34 -0
  13. package/dist/lib/accounts/persistence.d.ts.map +1 -0
  14. package/dist/lib/accounts/persistence.js +153 -0
  15. package/dist/lib/accounts/persistence.js.map +1 -0
  16. package/dist/lib/accounts/recovery.d.ts +59 -0
  17. package/dist/lib/accounts/recovery.d.ts.map +1 -0
  18. package/dist/lib/accounts/recovery.js +229 -0
  19. package/dist/lib/accounts/recovery.js.map +1 -0
  20. package/dist/lib/accounts/rotation.d.ts +40 -0
  21. package/dist/lib/accounts/rotation.d.ts.map +1 -0
  22. package/dist/lib/accounts/rotation.js +204 -0
  23. package/dist/lib/accounts/rotation.js.map +1 -0
  24. package/dist/lib/accounts/state.d.ts +92 -0
  25. package/dist/lib/accounts/state.d.ts.map +1 -0
  26. package/dist/lib/accounts/state.js +366 -0
  27. package/dist/lib/accounts/state.js.map +1 -0
  28. package/dist/lib/accounts.d.ts +48 -91
  29. package/dist/lib/accounts.d.ts.map +1 -1
  30. package/dist/lib/accounts.js +121 -699
  31. package/dist/lib/accounts.js.map +1 -1
  32. package/dist/lib/auth/auth.d.ts +1 -1
  33. package/dist/lib/auth/auth.d.ts.map +1 -1
  34. package/dist/lib/auth/auth.js +5 -2
  35. package/dist/lib/auth/auth.js.map +1 -1
  36. package/dist/lib/auth/login-runner.d.ts +32 -0
  37. package/dist/lib/auth/login-runner.d.ts.map +1 -1
  38. package/dist/lib/auth/login-runner.js +79 -64
  39. package/dist/lib/auth/login-runner.js.map +1 -1
  40. package/dist/lib/auth/server.d.ts.map +1 -1
  41. package/dist/lib/auth/server.js +3 -8
  42. package/dist/lib/auth/server.js.map +1 -1
  43. package/dist/lib/circuit-breaker.d.ts +53 -2
  44. package/dist/lib/circuit-breaker.d.ts.map +1 -1
  45. package/dist/lib/circuit-breaker.js +65 -6
  46. package/dist/lib/circuit-breaker.js.map +1 -1
  47. package/dist/lib/config.d.ts.map +1 -1
  48. package/dist/lib/config.js +77 -32
  49. package/dist/lib/config.js.map +1 -1
  50. package/dist/lib/error-sentinels.d.ts +20 -0
  51. package/dist/lib/error-sentinels.d.ts.map +1 -0
  52. package/dist/lib/error-sentinels.js +28 -0
  53. package/dist/lib/error-sentinels.js.map +1 -0
  54. package/dist/lib/errors.d.ts +100 -1
  55. package/dist/lib/errors.d.ts.map +1 -1
  56. package/dist/lib/errors.js +116 -1
  57. package/dist/lib/errors.js.map +1 -1
  58. package/dist/lib/logger.d.ts +14 -1
  59. package/dist/lib/logger.d.ts.map +1 -1
  60. package/dist/lib/logger.js +65 -5
  61. package/dist/lib/logger.js.map +1 -1
  62. package/dist/lib/oauth-constants.d.ts +18 -0
  63. package/dist/lib/oauth-constants.d.ts.map +1 -0
  64. package/dist/lib/oauth-constants.js +18 -0
  65. package/dist/lib/oauth-constants.js.map +1 -0
  66. package/dist/lib/oauth-success.d.ts +2 -0
  67. package/dist/lib/oauth-success.d.ts.map +1 -0
  68. package/dist/lib/oauth-success.html +711 -711
  69. package/dist/lib/oauth-success.js +714 -0
  70. package/dist/lib/oauth-success.js.map +1 -0
  71. package/dist/lib/prompts/codex.d.ts.map +1 -1
  72. package/dist/lib/prompts/codex.js +12 -3
  73. package/dist/lib/prompts/codex.js.map +1 -1
  74. package/dist/lib/prompts/opencode-codex.d.ts.map +1 -1
  75. package/dist/lib/prompts/opencode-codex.js +3 -2
  76. package/dist/lib/prompts/opencode-codex.js.map +1 -1
  77. package/dist/lib/recovery/hook.d.ts +43 -0
  78. package/dist/lib/recovery/hook.d.ts.map +1 -0
  79. package/dist/lib/recovery/hook.js +325 -0
  80. package/dist/lib/recovery/hook.js.map +1 -0
  81. package/dist/lib/recovery/index.d.ts +1 -0
  82. package/dist/lib/recovery/index.d.ts.map +1 -1
  83. package/dist/lib/recovery/index.js +1 -0
  84. package/dist/lib/recovery/index.js.map +1 -1
  85. package/dist/lib/recovery/storage.d.ts.map +1 -1
  86. package/dist/lib/recovery/storage.js +5 -1
  87. package/dist/lib/recovery/storage.js.map +1 -1
  88. package/dist/lib/recovery.d.ts +15 -30
  89. package/dist/lib/recovery.d.ts.map +1 -1
  90. package/dist/lib/recovery.js +14 -312
  91. package/dist/lib/recovery.js.map +1 -1
  92. package/dist/lib/request/fetch-helpers.d.ts +1 -0
  93. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  94. package/dist/lib/request/fetch-helpers.js +58 -10
  95. package/dist/lib/request/fetch-helpers.js.map +1 -1
  96. package/dist/lib/request/response-handler.d.ts.map +1 -1
  97. package/dist/lib/request/response-handler.js +8 -2
  98. package/dist/lib/request/response-handler.js.map +1 -1
  99. package/dist/lib/runtime.d.ts +101 -0
  100. package/dist/lib/runtime.d.ts.map +1 -0
  101. package/dist/lib/runtime.js +77 -0
  102. package/dist/lib/runtime.js.map +1 -0
  103. package/dist/lib/schemas.d.ts +164 -1
  104. package/dist/lib/schemas.d.ts.map +1 -1
  105. package/dist/lib/schemas.js +251 -0
  106. package/dist/lib/schemas.js.map +1 -1
  107. package/dist/lib/storage/atomic-write.d.ts +31 -0
  108. package/dist/lib/storage/atomic-write.d.ts.map +1 -0
  109. package/dist/lib/storage/atomic-write.js +75 -0
  110. package/dist/lib/storage/atomic-write.js.map +1 -0
  111. package/dist/lib/storage/backup.d.ts +13 -0
  112. package/dist/lib/storage/backup.d.ts.map +1 -0
  113. package/dist/lib/storage/backup.js +59 -0
  114. package/dist/lib/storage/backup.js.map +1 -0
  115. package/dist/lib/storage/errors.d.ts +17 -0
  116. package/dist/lib/storage/errors.d.ts.map +1 -0
  117. package/dist/lib/storage/errors.js +38 -0
  118. package/dist/lib/storage/errors.js.map +1 -0
  119. package/dist/lib/storage/export-import.d.ts +84 -0
  120. package/dist/lib/storage/export-import.d.ts.map +1 -0
  121. package/dist/lib/storage/export-import.js +222 -0
  122. package/dist/lib/storage/export-import.js.map +1 -0
  123. package/dist/lib/storage/flagged.d.ts +29 -0
  124. package/dist/lib/storage/flagged.d.ts.map +1 -0
  125. package/dist/lib/storage/flagged.js +207 -0
  126. package/dist/lib/storage/flagged.js.map +1 -0
  127. package/dist/lib/storage/identity.d.ts +72 -0
  128. package/dist/lib/storage/identity.d.ts.map +1 -0
  129. package/dist/lib/storage/identity.js +230 -0
  130. package/dist/lib/storage/identity.js.map +1 -0
  131. package/dist/lib/storage/keychain.d.ts +146 -0
  132. package/dist/lib/storage/keychain.d.ts.map +1 -0
  133. package/dist/lib/storage/keychain.js +278 -0
  134. package/dist/lib/storage/keychain.js.map +1 -0
  135. package/dist/lib/storage/load-save.d.ts +61 -0
  136. package/dist/lib/storage/load-save.d.ts.map +1 -0
  137. package/dist/lib/storage/load-save.js +606 -0
  138. package/dist/lib/storage/load-save.js.map +1 -0
  139. package/dist/lib/storage/migrations.d.ts +35 -0
  140. package/dist/lib/storage/migrations.d.ts.map +1 -1
  141. package/dist/lib/storage/migrations.js +37 -0
  142. package/dist/lib/storage/migrations.js.map +1 -1
  143. package/dist/lib/storage/normalize.d.ts +22 -0
  144. package/dist/lib/storage/normalize.d.ts.map +1 -0
  145. package/dist/lib/storage/normalize.js +114 -0
  146. package/dist/lib/storage/normalize.js.map +1 -0
  147. package/dist/lib/storage/paths.d.ts.map +1 -1
  148. package/dist/lib/storage/paths.js +2 -1
  149. package/dist/lib/storage/paths.js.map +1 -1
  150. package/dist/lib/storage/state.d.ts +46 -0
  151. package/dist/lib/storage/state.d.ts.map +1 -0
  152. package/dist/lib/storage/state.js +100 -0
  153. package/dist/lib/storage/state.js.map +1 -0
  154. package/dist/lib/storage/worktree-lock.d.ts +79 -0
  155. package/dist/lib/storage/worktree-lock.d.ts.map +1 -0
  156. package/dist/lib/storage/worktree-lock.js +265 -0
  157. package/dist/lib/storage/worktree-lock.js.map +1 -0
  158. package/dist/lib/storage.d.ts +21 -155
  159. package/dist/lib/storage.d.ts.map +1 -1
  160. package/dist/lib/storage.js +24 -1167
  161. package/dist/lib/storage.js.map +1 -1
  162. package/dist/lib/tools/_shared.d.ts +16 -0
  163. package/dist/lib/tools/_shared.d.ts.map +1 -0
  164. package/dist/lib/tools/_shared.js +21 -0
  165. package/dist/lib/tools/_shared.js.map +1 -0
  166. package/dist/lib/tools/codex-dashboard.d.ts +8 -0
  167. package/dist/lib/tools/codex-dashboard.d.ts.map +1 -0
  168. package/dist/lib/tools/codex-dashboard.js +176 -0
  169. package/dist/lib/tools/codex-dashboard.js.map +1 -0
  170. package/dist/lib/tools/codex-diag.d.ts +19 -0
  171. package/dist/lib/tools/codex-diag.d.ts.map +1 -0
  172. package/dist/lib/tools/codex-diag.js +139 -0
  173. package/dist/lib/tools/codex-diag.js.map +1 -0
  174. package/dist/lib/tools/codex-diff.d.ts +44 -0
  175. package/dist/lib/tools/codex-diff.d.ts.map +1 -0
  176. package/dist/lib/tools/codex-diff.js +284 -0
  177. package/dist/lib/tools/codex-diff.js.map +1 -0
  178. package/dist/lib/tools/codex-doctor.d.ts +8 -0
  179. package/dist/lib/tools/codex-doctor.d.ts.map +1 -0
  180. package/dist/lib/tools/codex-doctor.js +284 -0
  181. package/dist/lib/tools/codex-doctor.js.map +1 -0
  182. package/dist/lib/tools/codex-export.d.ts +8 -0
  183. package/dist/lib/tools/codex-export.d.ts.map +1 -0
  184. package/dist/lib/tools/codex-export.js +63 -0
  185. package/dist/lib/tools/codex-export.js.map +1 -0
  186. package/dist/lib/tools/codex-health.d.ts +8 -0
  187. package/dist/lib/tools/codex-health.d.ts.map +1 -0
  188. package/dist/lib/tools/codex-health.js +124 -0
  189. package/dist/lib/tools/codex-health.js.map +1 -0
  190. package/dist/lib/tools/codex-help.d.ts +8 -0
  191. package/dist/lib/tools/codex-help.d.ts.map +1 -0
  192. package/dist/lib/tools/codex-help.js +127 -0
  193. package/dist/lib/tools/codex-help.js.map +1 -0
  194. package/dist/lib/tools/codex-import.d.ts +8 -0
  195. package/dist/lib/tools/codex-import.d.ts.map +1 -0
  196. package/dist/lib/tools/codex-import.js +97 -0
  197. package/dist/lib/tools/codex-import.js.map +1 -0
  198. package/dist/lib/tools/codex-keychain.d.ts +36 -0
  199. package/dist/lib/tools/codex-keychain.d.ts.map +1 -0
  200. package/dist/lib/tools/codex-keychain.js +289 -0
  201. package/dist/lib/tools/codex-keychain.js.map +1 -0
  202. package/dist/lib/tools/codex-label.d.ts +8 -0
  203. package/dist/lib/tools/codex-label.d.ts.map +1 -0
  204. package/dist/lib/tools/codex-label.js +143 -0
  205. package/dist/lib/tools/codex-label.js.map +1 -0
  206. package/dist/lib/tools/codex-limits.d.ts +8 -0
  207. package/dist/lib/tools/codex-limits.d.ts.map +1 -0
  208. package/dist/lib/tools/codex-limits.js +497 -0
  209. package/dist/lib/tools/codex-limits.js.map +1 -0
  210. package/dist/lib/tools/codex-list.d.ts +8 -0
  211. package/dist/lib/tools/codex-list.d.ts.map +1 -0
  212. package/dist/lib/tools/codex-list.js +260 -0
  213. package/dist/lib/tools/codex-list.js.map +1 -0
  214. package/dist/lib/tools/codex-metrics.d.ts +8 -0
  215. package/dist/lib/tools/codex-metrics.d.ts.map +1 -0
  216. package/dist/lib/tools/codex-metrics.js +180 -0
  217. package/dist/lib/tools/codex-metrics.js.map +1 -0
  218. package/dist/lib/tools/codex-next.d.ts +8 -0
  219. package/dist/lib/tools/codex-next.d.ts.map +1 -0
  220. package/dist/lib/tools/codex-next.js +54 -0
  221. package/dist/lib/tools/codex-next.js.map +1 -0
  222. package/dist/lib/tools/codex-note.d.ts +8 -0
  223. package/dist/lib/tools/codex-note.d.ts.map +1 -0
  224. package/dist/lib/tools/codex-note.js +79 -0
  225. package/dist/lib/tools/codex-note.js.map +1 -0
  226. package/dist/lib/tools/codex-refresh.d.ts +8 -0
  227. package/dist/lib/tools/codex-refresh.d.ts.map +1 -0
  228. package/dist/lib/tools/codex-refresh.js +78 -0
  229. package/dist/lib/tools/codex-refresh.js.map +1 -0
  230. package/dist/lib/tools/codex-remove.d.ts +8 -0
  231. package/dist/lib/tools/codex-remove.d.ts.map +1 -0
  232. package/dist/lib/tools/codex-remove.js +184 -0
  233. package/dist/lib/tools/codex-remove.js.map +1 -0
  234. package/dist/lib/tools/codex-setup.d.ts +8 -0
  235. package/dist/lib/tools/codex-setup.d.ts.map +1 -0
  236. package/dist/lib/tools/codex-setup.js +26 -0
  237. package/dist/lib/tools/codex-setup.js.map +1 -0
  238. package/dist/lib/tools/codex-status.d.ts +8 -0
  239. package/dist/lib/tools/codex-status.d.ts.map +1 -0
  240. package/dist/lib/tools/codex-status.js +263 -0
  241. package/dist/lib/tools/codex-status.js.map +1 -0
  242. package/dist/lib/tools/codex-switch.d.ts +8 -0
  243. package/dist/lib/tools/codex-switch.d.ts.map +1 -0
  244. package/dist/lib/tools/codex-switch.js +122 -0
  245. package/dist/lib/tools/codex-switch.js.map +1 -0
  246. package/dist/lib/tools/codex-tag.d.ts +8 -0
  247. package/dist/lib/tools/codex-tag.d.ts.map +1 -0
  248. package/dist/lib/tools/codex-tag.js +101 -0
  249. package/dist/lib/tools/codex-tag.js.map +1 -0
  250. package/dist/lib/tools/index.d.ts +143 -0
  251. package/dist/lib/tools/index.d.ts.map +1 -0
  252. package/dist/lib/tools/index.js +67 -0
  253. package/dist/lib/tools/index.js.map +1 -0
  254. package/dist/lib/ui/format.d.ts.map +1 -1
  255. package/dist/lib/ui/format.js +5 -0
  256. package/dist/lib/ui/format.js.map +1 -1
  257. package/dist/lib/ui/runtime.d.ts +10 -0
  258. package/dist/lib/ui/runtime.d.ts.map +1 -1
  259. package/dist/lib/ui/runtime.js +16 -11
  260. package/dist/lib/ui/runtime.js.map +1 -1
  261. package/dist/lib/ui/select.d.ts.map +1 -1
  262. package/dist/lib/ui/select.js +12 -3
  263. package/dist/lib/ui/select.js.map +1 -1
  264. package/dist/lib/ui/theme.d.ts +19 -0
  265. package/dist/lib/ui/theme.d.ts.map +1 -1
  266. package/dist/lib/ui/theme.js +27 -0
  267. package/dist/lib/ui/theme.js.map +1 -1
  268. package/package.json +24 -16
  269. package/scripts/copy-oauth-success.js +16 -6
  270. package/scripts/install-oc-codex-multi-auth-core.js +462 -381
  271. package/scripts/install-oc-codex-multi-auth.js +15 -15
  272. package/scripts/test-all-models.sh +1 -1
  273. package/dist/lib/audit.d.ts +0 -45
  274. package/dist/lib/audit.d.ts.map +0 -1
  275. package/dist/lib/audit.js +0 -154
  276. package/dist/lib/audit.js.map +0 -1
  277. package/dist/lib/auth-rate-limit.d.ts +0 -20
  278. package/dist/lib/auth-rate-limit.d.ts.map +0 -1
  279. package/dist/lib/auth-rate-limit.js +0 -91
  280. package/dist/lib/auth-rate-limit.js.map +0 -1
  281. package/dist/lib/runtime-contracts.d.ts +0 -16
  282. package/dist/lib/runtime-contracts.d.ts.map +0 -1
  283. package/dist/lib/runtime-contracts.js +0 -24
  284. package/dist/lib/runtime-contracts.js.map +0 -1
@@ -0,0 +1,79 @@
1
+ /**
2
+ * `codex-note` tool — set or clear per-account reminder note.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { tool } from "@opencode-ai/plugin/tool";
6
+ import { loadAccounts, saveAccounts } from "../storage.js";
7
+ import { AccountManager } from "../accounts.js";
8
+ import { logWarn } from "../logger.js";
9
+ export function createCodexNoteTool(ctx) {
10
+ const { resolveUiRuntime, promptAccountIndexSelection, supportsInteractiveMenus, formatCommandAccountLabel, cachedAccountManagerRef, accountManagerPromiseRef, } = ctx;
11
+ return tool({
12
+ description: "Set or clear an account note for reminders.",
13
+ args: {
14
+ index: tool.schema
15
+ .number()
16
+ .optional()
17
+ .describe("Account number to update (1-based, e.g., 1 for first account)"),
18
+ note: tool.schema
19
+ .string()
20
+ .describe("Short note. Empty string clears the note."),
21
+ },
22
+ async execute({ index, note }) {
23
+ const ui = resolveUiRuntime();
24
+ const storage = await loadAccounts();
25
+ if (!storage || storage.accounts.length === 0) {
26
+ return "No Codex accounts configured. Run: opencode auth login";
27
+ }
28
+ let resolvedIndex = index;
29
+ if (resolvedIndex === undefined) {
30
+ const selectedIndex = await promptAccountIndexSelection(ui, storage, "Set account note");
31
+ if (selectedIndex === null) {
32
+ if (supportsInteractiveMenus())
33
+ return "No account selected.";
34
+ return 'Missing account number. Use: codex-note index=2 note="weekday primary"';
35
+ }
36
+ resolvedIndex = selectedIndex + 1;
37
+ }
38
+ const targetIndex = Math.floor((resolvedIndex ?? 0) - 1);
39
+ if (!Number.isFinite(targetIndex) ||
40
+ targetIndex < 0 ||
41
+ targetIndex >= storage.accounts.length) {
42
+ return `Invalid account number: ${resolvedIndex}\n\nValid range: 1-${storage.accounts.length}`;
43
+ }
44
+ const account = storage.accounts[targetIndex];
45
+ if (!account)
46
+ return `Account ${resolvedIndex} not found.`;
47
+ const normalizedNote = (note ?? "").trim();
48
+ if (normalizedNote.length > 240) {
49
+ return "Note is too long (max 240 characters).";
50
+ }
51
+ if (normalizedNote.length === 0) {
52
+ delete account.accountNote;
53
+ }
54
+ else {
55
+ account.accountNote = normalizedNote;
56
+ }
57
+ try {
58
+ await saveAccounts(storage);
59
+ }
60
+ catch (error) {
61
+ logWarn("Failed to save account note update", {
62
+ error: String(error),
63
+ });
64
+ return "Note update failed to persist. Changes may be lost on restart.";
65
+ }
66
+ if (cachedAccountManagerRef.current) {
67
+ const reloadedManager = await AccountManager.loadFromDisk();
68
+ cachedAccountManagerRef.current = reloadedManager;
69
+ accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
70
+ }
71
+ const accountLabel = formatCommandAccountLabel(account, targetIndex);
72
+ if (normalizedNote.length === 0) {
73
+ return `Cleared note for ${accountLabel}`;
74
+ }
75
+ return `Saved note for ${accountLabel}: ${normalizedNote}`;
76
+ },
77
+ });
78
+ }
79
+ //# sourceMappingURL=codex-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-note.js","sourceRoot":"","sources":["../../../lib/tools/codex-note.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `codex-refresh` tool — manually refresh OAuth tokens for all accounts.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { type ToolDefinition } from "@opencode-ai/plugin/tool";
6
+ import type { ToolContext } from "./index.js";
7
+ export declare function createCodexRefreshTool(ctx: ToolContext): ToolDefinition;
8
+ //# sourceMappingURL=codex-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAmFvE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * `codex-refresh` tool — manually refresh OAuth tokens for all accounts.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { tool } from "@opencode-ai/plugin/tool";
6
+ import { loadAccounts, saveAccounts } from "../storage.js";
7
+ import { AccountManager } from "../accounts.js";
8
+ import { queuedRefresh } from "../refresh-queue.js";
9
+ import { formatUiHeader, formatUiItem, paintUiText } from "../ui/format.js";
10
+ export function createCodexRefreshTool(ctx) {
11
+ const { resolveUiRuntime, formatCommandAccountLabel, getStatusMarker, cachedAccountManagerRef, accountManagerPromiseRef, } = ctx;
12
+ return tool({
13
+ description: "Manually refresh OAuth tokens for all accounts to verify they're still valid.",
14
+ args: {},
15
+ async execute() {
16
+ const ui = resolveUiRuntime();
17
+ const storage = await loadAccounts();
18
+ if (!storage || storage.accounts.length === 0) {
19
+ if (ui.v2Enabled) {
20
+ return [
21
+ ...formatUiHeader(ui, "Refresh accounts"),
22
+ "",
23
+ formatUiItem(ui, "No accounts configured.", "warning"),
24
+ formatUiItem(ui, "Run: opencode auth login", "accent"),
25
+ ].join("\n");
26
+ }
27
+ return "No Codex accounts configured. Run: opencode auth login";
28
+ }
29
+ const results = ui.v2Enabled
30
+ ? []
31
+ : [`Refreshing ${storage.accounts.length} account(s):`, ""];
32
+ let refreshedCount = 0;
33
+ let failedCount = 0;
34
+ for (let i = 0; i < storage.accounts.length; i++) {
35
+ const account = storage.accounts[i];
36
+ if (!account)
37
+ continue;
38
+ const label = formatCommandAccountLabel(account, i);
39
+ try {
40
+ const refreshResult = await queuedRefresh(account.refreshToken);
41
+ if (refreshResult.type === "success") {
42
+ account.refreshToken = refreshResult.refresh;
43
+ account.accessToken = refreshResult.access;
44
+ account.expiresAt = refreshResult.expires;
45
+ results.push(` ${getStatusMarker(ui, "ok")} ${label}: Refreshed`);
46
+ refreshedCount++;
47
+ }
48
+ else {
49
+ results.push(` ${getStatusMarker(ui, "error")} ${label}: Failed - ${refreshResult.message ?? refreshResult.reason}`);
50
+ failedCount++;
51
+ }
52
+ }
53
+ catch (error) {
54
+ const errorMsg = error instanceof Error ? error.message : String(error);
55
+ results.push(` ${getStatusMarker(ui, "error")} ${label}: Error - ${errorMsg.slice(0, 120)}`);
56
+ failedCount++;
57
+ }
58
+ }
59
+ await saveAccounts(storage);
60
+ if (cachedAccountManagerRef.current) {
61
+ const reloadedManager = await AccountManager.loadFromDisk();
62
+ cachedAccountManagerRef.current = reloadedManager;
63
+ accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
64
+ }
65
+ results.push("");
66
+ results.push(`Summary: ${refreshedCount} refreshed, ${failedCount} failed`);
67
+ if (ui.v2Enabled) {
68
+ return [
69
+ ...formatUiHeader(ui, "Refresh accounts"),
70
+ "",
71
+ ...results.map((line) => paintUiText(ui, line, "normal")),
72
+ ].join("\n");
73
+ }
74
+ return results.join("\n");
75
+ },
76
+ });
77
+ }
78
+ //# sourceMappingURL=codex-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-refresh.js","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG5E,MAAM,UAAU,sBAAsB,CAAC,GAAgB;IACtD,MAAM,EACL,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,GACxB,GAAG,GAAG,CAAC;IACR,OAAO,IAAI,CAAC;QACX,WAAW,EACV,+EAA+E;QAChF,IAAI,EAAE,EAAE;QACR,KAAK,CAAC,OAAO;YACZ,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;oBAClB,OAAO;wBACN,GAAG,cAAc,CAAC,EAAE,EAAE,kBAAkB,CAAC;wBACzC,EAAE;wBACF,YAAY,CAAC,EAAE,EAAE,yBAAyB,EAAE,SAAS,CAAC;wBACtD,YAAY,CAAC,EAAE,EAAE,0BAA0B,EAAE,QAAQ,CAAC;qBACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,wDAAwD,CAAC;YACjE,CAAC;YAED,MAAM,OAAO,GAAa,EAAE,CAAC,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,QAAQ,CAAC,MAAM,cAAc,EAAE,EAAE,CAAC,CAAC;YAE7D,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,IAAI,WAAW,GAAG,CAAC,CAAC;YAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,MAAM,KAAK,GAAG,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAEpD,IAAI,CAAC;oBACJ,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAChE,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACtC,OAAO,CAAC,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC;wBAC7C,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;wBAC3C,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;wBAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;wBACnE,cAAc,EAAE,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACP,OAAO,CAAC,IAAI,CACX,KAAK,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,KAAK,cAAc,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,CACvG,CAAC;wBACF,WAAW,EAAE,CAAC;oBACf,CAAC;gBACF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,QAAQ,GACb,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxD,OAAO,CAAC,IAAI,CACX,KAAK,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,KAAK,aAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC/E,CAAC;oBACF,WAAW,EAAE,CAAC;gBACf,CAAC;YACF,CAAC;YAED,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC;gBAC5D,uBAAuB,CAAC,OAAO,GAAG,eAAe,CAAC;gBAClD,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CACX,YAAY,cAAc,eAAe,WAAW,SAAS,CAC7D,CAAC;YACF,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAO;oBACN,GAAG,cAAc,CAAC,EAAE,EAAE,kBAAkB,CAAC;oBACzC,EAAE;oBACF,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;iBACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `codex-remove` tool — remove a Codex account entry.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { type ToolDefinition } from "@opencode-ai/plugin/tool";
6
+ import type { ToolContext } from "./index.js";
7
+ export declare function createCodexRemoveTool(ctx: ToolContext): ToolDefinition;
8
+ //# sourceMappingURL=codex-remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-remove.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-remove.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAUrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CA4OtE"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * `codex-remove` tool — remove a Codex account entry.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { tool } from "@opencode-ai/plugin/tool";
6
+ import { loadAccounts, saveAccounts } from "../storage.js";
7
+ import { AccountManager } from "../accounts.js";
8
+ import { logWarn } from "../logger.js";
9
+ import { MODEL_FAMILIES } from "../prompts/codex.js";
10
+ import { formatUiHeader, formatUiItem, formatUiKeyValue, } from "../ui/format.js";
11
+ export function createCodexRemoveTool(ctx) {
12
+ const { resolveUiRuntime, promptAccountIndexSelection, supportsInteractiveMenus, formatCommandAccountLabel, getStatusMarker, cachedAccountManagerRef, accountManagerPromiseRef, } = ctx;
13
+ return tool({
14
+ description: "Remove one Codex account entry by index (1-based) or interactive picker when index is omitted. " +
15
+ "Requires confirm=true to proceed; this is a destructive operation and OAuth state cannot be recovered.",
16
+ args: {
17
+ index: tool.schema
18
+ .number()
19
+ .optional()
20
+ .describe("Account number to remove (1-based, e.g., 1 for first account)"),
21
+ confirm: tool.schema
22
+ .boolean()
23
+ .optional()
24
+ .describe("Must be set to true to actually remove the account. " +
25
+ "When omitted or false, the tool is a no-op and returns a guidance message. " +
26
+ "This guard prevents silent loss of OAuth credentials from a mistyped index."),
27
+ },
28
+ async execute({ index, confirm, } = {}) {
29
+ const ui = resolveUiRuntime();
30
+ if (confirm !== true) {
31
+ const guidance = "codex-remove requires confirm=true to proceed. " +
32
+ "Removing an account deletes its OAuth credentials and cannot be undone. " +
33
+ "Re-run as: codex-remove index=<N> confirm=true";
34
+ if (ui.v2Enabled) {
35
+ return [
36
+ ...formatUiHeader(ui, "Remove account"),
37
+ "",
38
+ formatUiItem(ui, "Confirmation required.", "warning"),
39
+ formatUiItem(ui, guidance, "muted"),
40
+ ].join("\n");
41
+ }
42
+ return guidance;
43
+ }
44
+ const storage = await loadAccounts();
45
+ if (!storage || storage.accounts.length === 0) {
46
+ if (ui.v2Enabled) {
47
+ return [
48
+ ...formatUiHeader(ui, "Remove account"),
49
+ "",
50
+ formatUiItem(ui, "No accounts configured.", "warning"),
51
+ ].join("\n");
52
+ }
53
+ return "No Codex accounts configured. Nothing to remove.";
54
+ }
55
+ let resolvedIndex = index;
56
+ if (resolvedIndex === undefined) {
57
+ const selectedIndex = await promptAccountIndexSelection(ui, storage, "Remove account");
58
+ if (selectedIndex === null) {
59
+ if (supportsInteractiveMenus()) {
60
+ if (ui.v2Enabled) {
61
+ return [
62
+ ...formatUiHeader(ui, "Remove account"),
63
+ "",
64
+ formatUiItem(ui, "No account selected.", "warning"),
65
+ formatUiItem(ui, "Run again and pick an account, or pass codex-remove index=2.", "muted"),
66
+ ].join("\n");
67
+ }
68
+ return "No account selected.";
69
+ }
70
+ if (ui.v2Enabled) {
71
+ return [
72
+ ...formatUiHeader(ui, "Remove account"),
73
+ "",
74
+ formatUiItem(ui, "Missing account number.", "warning"),
75
+ formatUiItem(ui, "Use: codex-remove index=2", "accent"),
76
+ ].join("\n");
77
+ }
78
+ return "Missing account number. Use: codex-remove index=2";
79
+ }
80
+ resolvedIndex = selectedIndex + 1;
81
+ }
82
+ const targetIndex = Math.floor((resolvedIndex ?? 0) - 1);
83
+ if (!Number.isFinite(targetIndex) ||
84
+ targetIndex < 0 ||
85
+ targetIndex >= storage.accounts.length) {
86
+ if (ui.v2Enabled) {
87
+ return [
88
+ ...formatUiHeader(ui, "Remove account"),
89
+ "",
90
+ formatUiItem(ui, `Invalid account number: ${resolvedIndex}`, "danger"),
91
+ formatUiKeyValue(ui, "Valid range", `1-${storage.accounts.length}`, "muted"),
92
+ formatUiItem(ui, "Use codex-list to list all accounts.", "accent"),
93
+ ].join("\n");
94
+ }
95
+ return `Invalid account number: ${resolvedIndex}\n\nValid range: 1-${storage.accounts.length}\n\nUse codex-list to list all accounts.`;
96
+ }
97
+ const account = storage.accounts[targetIndex];
98
+ if (!account) {
99
+ return `Account ${resolvedIndex} not found.`;
100
+ }
101
+ const label = formatCommandAccountLabel(account, targetIndex);
102
+ storage.accounts.splice(targetIndex, 1);
103
+ if (storage.accounts.length === 0) {
104
+ storage.activeIndex = 0;
105
+ storage.activeIndexByFamily = {};
106
+ }
107
+ else {
108
+ if (storage.activeIndex >= storage.accounts.length) {
109
+ storage.activeIndex = 0;
110
+ }
111
+ else if (storage.activeIndex > targetIndex) {
112
+ storage.activeIndex -= 1;
113
+ }
114
+ if (storage.activeIndexByFamily) {
115
+ for (const family of MODEL_FAMILIES) {
116
+ const idx = storage.activeIndexByFamily[family];
117
+ if (typeof idx === "number") {
118
+ if (idx >= storage.accounts.length) {
119
+ storage.activeIndexByFamily[family] = 0;
120
+ }
121
+ else if (idx > targetIndex) {
122
+ storage.activeIndexByFamily[family] = idx - 1;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ try {
129
+ await saveAccounts(storage);
130
+ }
131
+ catch (saveError) {
132
+ logWarn("Failed to save account removal", {
133
+ error: String(saveError),
134
+ });
135
+ if (ui.v2Enabled) {
136
+ return [
137
+ ...formatUiHeader(ui, "Remove account"),
138
+ "",
139
+ formatUiItem(ui, `Removed selected entry: ${label}`, "warning"),
140
+ formatUiItem(ui, "Only the selected index was changed.", "muted"),
141
+ formatUiItem(ui, "Failed to persist. Change may be lost on restart.", "danger"),
142
+ ].join("\n");
143
+ }
144
+ return `Removed selected entry: ${label} from memory, but failed to persist. Only the selected index was changed and this may be lost on restart.`;
145
+ }
146
+ if (cachedAccountManagerRef.current) {
147
+ const reloadedManager = await AccountManager.loadFromDisk();
148
+ cachedAccountManagerRef.current = reloadedManager;
149
+ accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
150
+ }
151
+ const remaining = storage.accounts.length;
152
+ const matchingEmailRemaining = account.email?.trim()
153
+ ? storage.accounts.filter((entry) => entry.email === account.email)
154
+ .length
155
+ : 0;
156
+ if (ui.v2Enabled) {
157
+ const postRemoveHint = matchingEmailRemaining > 0 && account.email
158
+ ? formatUiItem(ui, `Other entries for ${account.email} remain: ${matchingEmailRemaining}`, "muted")
159
+ : formatUiItem(ui, "Only the selected entry was removed.", "muted");
160
+ return [
161
+ ...formatUiHeader(ui, "Remove account"),
162
+ "",
163
+ formatUiItem(ui, `${getStatusMarker(ui, "ok")} Removed selected entry: ${label}`, "success"),
164
+ postRemoveHint,
165
+ remaining > 0
166
+ ? formatUiKeyValue(ui, "Remaining accounts", String(remaining))
167
+ : formatUiItem(ui, "No accounts remaining. Run: opencode auth login", "warning"),
168
+ ].join("\n");
169
+ }
170
+ const postRemoveHint = matchingEmailRemaining > 0 && account.email
171
+ ? `Other entries for ${account.email} remain: ${matchingEmailRemaining}`
172
+ : "Only the selected entry was removed.";
173
+ return [
174
+ `Removed selected entry: ${label}`,
175
+ postRemoveHint,
176
+ "",
177
+ remaining > 0
178
+ ? `Remaining accounts: ${remaining}`
179
+ : "No accounts remaining. Run: opencode auth login",
180
+ ].join("\n");
181
+ },
182
+ });
183
+ }
184
+ //# sourceMappingURL=codex-remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-remove.js","sourceRoot":"","sources":["../../../lib/tools/codex-remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `codex-setup` tool — beginner onboarding checklist + optional wizard.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { type ToolDefinition } from "@opencode-ai/plugin/tool";
6
+ import type { ToolContext } from "./index.js";
7
+ export declare function createCodexSetupTool(ctx: ToolContext): ToolDefinition;
8
+ //# sourceMappingURL=codex-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-setup.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAwBrE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `codex-setup` tool — beginner onboarding checklist + optional wizard.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { tool } from "@opencode-ai/plugin/tool";
6
+ export function createCodexSetupTool(ctx) {
7
+ const { resolveUiRuntime, buildSetupChecklistState, renderSetupChecklistOutput, runSetupWizard, } = ctx;
8
+ return tool({
9
+ description: "Beginner checklist for first-time setup and account readiness.",
10
+ args: {
11
+ wizard: tool.schema
12
+ .boolean()
13
+ .optional()
14
+ .describe("Launch menu-driven setup wizard when terminal supports it."),
15
+ },
16
+ async execute({ wizard } = {}) {
17
+ const ui = resolveUiRuntime();
18
+ const state = await buildSetupChecklistState();
19
+ if (wizard) {
20
+ return runSetupWizard(ui, state);
21
+ }
22
+ return renderSetupChecklistOutput(ui, state);
23
+ },
24
+ });
25
+ }
26
+ //# sourceMappingURL=codex-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-setup.js","sourceRoot":"","sources":["../../../lib/tools/codex-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AAGrE,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACpD,MAAM,EACL,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,GACd,GAAG,GAAG,CAAC;IACR,OAAO,IAAI,CAAC;QACX,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SACxE;QACD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,KAA2B,EAAE;YAClD,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `codex-status` tool — detailed per-account status and rate limits.
3
+ * Extracted from `index.ts` per RC-1 Phase 2.
4
+ */
5
+ import { type ToolDefinition } from "@opencode-ai/plugin/tool";
6
+ import type { ToolContext } from "./index.js";
7
+ export declare function createCodexStatusTool(ctx: ToolContext): ToolDefinition;
8
+ //# sourceMappingURL=codex-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-status.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAkBrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAoWtE"}