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
@@ -1,15 +1,15 @@
1
- #!/usr/bin/env node
2
-
3
- import { resolve } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { runInstaller } from "./install-oc-codex-multi-auth-core.js";
6
-
7
- export * from "./install-oc-codex-multi-auth-core.js";
8
-
9
- if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
10
- runInstaller().catch((error) => {
11
- const message = error instanceof Error ? error.message : String(error);
12
- console.error(`Installer failed: ${message}`);
13
- process.exit(1);
14
- });
15
- }
1
+ #!/usr/bin/env node
2
+
3
+ import { resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { runInstaller } from "./install-oc-codex-multi-auth-core.js";
6
+
7
+ export * from "./install-oc-codex-multi-auth-core.js";
8
+
9
+ if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
10
+ runInstaller().catch((error) => {
11
+ const message = error instanceof Error ? error.message : String(error);
12
+ console.error(`Installer failed: ${message}`);
13
+ process.exit(1);
14
+ });
15
+ }
@@ -149,7 +149,7 @@ update_config() {
149
149
  esac
150
150
 
151
151
  # Replace npm package with local dist for testing
152
- sed -i.bak -E 's|"oc-codex-multi-auth(@[^"]*)?"|"file://'"${REPO_DIR}"'/dist"|' "${OPENCODE_JSON}"
152
+ sed -i.bak -E 's|"oc-codex-multi-auth(@[^"]*)?"|"file://'"${REPO_DIR}"'/dist"|' "${OPENCODE_JSON}"
153
153
 
154
154
  rm -f "${OPENCODE_JSON}.bak"
155
155
  echo "✓ Using local dist for plugin"
@@ -1,45 +0,0 @@
1
- export declare enum AuditAction {
2
- ACCOUNT_ADD = "account.add",
3
- ACCOUNT_REMOVE = "account.remove",
4
- ACCOUNT_SWITCH = "account.switch",
5
- ACCOUNT_REFRESH = "account.refresh",
6
- ACCOUNT_EXPORT = "account.export",
7
- ACCOUNT_IMPORT = "account.import",
8
- AUTH_LOGIN = "auth.login",
9
- AUTH_LOGOUT = "auth.logout",
10
- AUTH_REFRESH = "auth.refresh",
11
- AUTH_FAILURE = "auth.failure",
12
- CONFIG_LOAD = "config.load",
13
- CONFIG_CHANGE = "config.change",
14
- REQUEST_START = "request.start",
15
- REQUEST_SUCCESS = "request.success",
16
- REQUEST_FAILURE = "request.failure",
17
- CIRCUIT_OPEN = "circuit.open",
18
- CIRCUIT_CLOSE = "circuit.close"
19
- }
20
- export declare enum AuditOutcome {
21
- SUCCESS = "success",
22
- FAILURE = "failure",
23
- PARTIAL = "partial"
24
- }
25
- export interface AuditEntry {
26
- timestamp: string;
27
- correlationId: string | null;
28
- action: AuditAction;
29
- actor: string;
30
- resource: string;
31
- outcome: AuditOutcome;
32
- metadata?: Record<string, unknown>;
33
- }
34
- export interface AuditConfig {
35
- enabled: boolean;
36
- logDir: string;
37
- maxFileSizeBytes: number;
38
- maxFiles: number;
39
- }
40
- export declare function configureAudit(config: Partial<AuditConfig>): void;
41
- export declare function getAuditConfig(): AuditConfig;
42
- export declare function auditLog(action: AuditAction, actor: string, resource: string, outcome: AuditOutcome, metadata?: Record<string, unknown>): void;
43
- export declare function getAuditLogPath(): string;
44
- export declare function listAuditLogFiles(): string[];
45
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../lib/audit.ts"],"names":[],"mappings":"AA4BA,oBAAY,WAAW;IACtB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;CAC/B;AAED,oBAAY,YAAY;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AA0DD,wBAAgB,QAAQ,CACvB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAyBN;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAO5C"}
package/dist/lib/audit.js DELETED
@@ -1,154 +0,0 @@
1
- import { mkdirSync, existsSync, statSync, renameSync, readdirSync, unlinkSync, appendFileSync } from "node:fs";
2
- // Simple in-memory queue to prevent EBUSY locks during highly concurrent writes
3
- const logQueue = [];
4
- let isFlushing = false;
5
- function flushLogQueue(logPath) {
6
- if (isFlushing || logQueue.length === 0)
7
- return;
8
- isFlushing = true;
9
- const itemsToFlush = logQueue.splice(0, logQueue.length);
10
- const payload = itemsToFlush.join("");
11
- try {
12
- appendFileSync(logPath, payload);
13
- }
14
- catch (error) {
15
- // If the file is locked by an external process (e.g. antivirus),
16
- // we unshift the items back to the front of the queue to try again later
17
- logQueue.unshift(...itemsToFlush);
18
- console.error("[AuditLog] Failed to flush queue, retaining items:", error);
19
- }
20
- finally {
21
- isFlushing = false;
22
- }
23
- }
24
- import { join } from "node:path";
25
- import { homedir } from "node:os";
26
- import { getCorrelationId, maskEmail } from "./logger.js";
27
- export var AuditAction;
28
- (function (AuditAction) {
29
- AuditAction["ACCOUNT_ADD"] = "account.add";
30
- AuditAction["ACCOUNT_REMOVE"] = "account.remove";
31
- AuditAction["ACCOUNT_SWITCH"] = "account.switch";
32
- AuditAction["ACCOUNT_REFRESH"] = "account.refresh";
33
- AuditAction["ACCOUNT_EXPORT"] = "account.export";
34
- AuditAction["ACCOUNT_IMPORT"] = "account.import";
35
- AuditAction["AUTH_LOGIN"] = "auth.login";
36
- AuditAction["AUTH_LOGOUT"] = "auth.logout";
37
- AuditAction["AUTH_REFRESH"] = "auth.refresh";
38
- AuditAction["AUTH_FAILURE"] = "auth.failure";
39
- AuditAction["CONFIG_LOAD"] = "config.load";
40
- AuditAction["CONFIG_CHANGE"] = "config.change";
41
- AuditAction["REQUEST_START"] = "request.start";
42
- AuditAction["REQUEST_SUCCESS"] = "request.success";
43
- AuditAction["REQUEST_FAILURE"] = "request.failure";
44
- AuditAction["CIRCUIT_OPEN"] = "circuit.open";
45
- AuditAction["CIRCUIT_CLOSE"] = "circuit.close";
46
- })(AuditAction || (AuditAction = {}));
47
- export var AuditOutcome;
48
- (function (AuditOutcome) {
49
- AuditOutcome["SUCCESS"] = "success";
50
- AuditOutcome["FAILURE"] = "failure";
51
- AuditOutcome["PARTIAL"] = "partial";
52
- })(AuditOutcome || (AuditOutcome = {}));
53
- const DEFAULT_CONFIG = {
54
- enabled: true,
55
- logDir: join(homedir(), ".opencode", "logs"),
56
- maxFileSizeBytes: 10 * 1024 * 1024,
57
- maxFiles: 5,
58
- };
59
- let auditConfig = { ...DEFAULT_CONFIG };
60
- export function configureAudit(config) {
61
- auditConfig = { ...auditConfig, ...config };
62
- }
63
- export function getAuditConfig() {
64
- return { ...auditConfig };
65
- }
66
- function ensureLogDir() {
67
- if (!existsSync(auditConfig.logDir)) {
68
- mkdirSync(auditConfig.logDir, { recursive: true, mode: 0o700 });
69
- }
70
- }
71
- function getLogFilePath() {
72
- return join(auditConfig.logDir, "audit.log");
73
- }
74
- function rotateLogsIfNeeded() {
75
- const logPath = getLogFilePath();
76
- if (!existsSync(logPath))
77
- return;
78
- const stats = statSync(logPath);
79
- if (stats.size < auditConfig.maxFileSizeBytes)
80
- return;
81
- for (let i = auditConfig.maxFiles - 1; i >= 1; i--) {
82
- const older = join(auditConfig.logDir, `audit.${i}.log`);
83
- const newer = i === 1 ? logPath : join(auditConfig.logDir, `audit.${i - 1}.log`);
84
- if (i === auditConfig.maxFiles - 1 && existsSync(older)) {
85
- unlinkSync(older);
86
- }
87
- if (existsSync(newer)) {
88
- renameSync(newer, older);
89
- }
90
- }
91
- }
92
- function sanitizeActor(actor) {
93
- if (actor.includes("@")) {
94
- return maskEmail(actor);
95
- }
96
- return actor;
97
- }
98
- function sanitizeMetadata(metadata) {
99
- if (!metadata)
100
- return undefined;
101
- const sanitized = {};
102
- for (const [key, value] of Object.entries(metadata)) {
103
- const lowerKey = key.toLowerCase();
104
- if (lowerKey.includes("token") || lowerKey.includes("secret") || lowerKey.includes("password")) {
105
- sanitized[key] = "***REDACTED***";
106
- }
107
- else if (typeof value === "string" && value.includes("@")) {
108
- sanitized[key] = maskEmail(value);
109
- }
110
- else if (typeof value === "object" && value !== null) {
111
- sanitized[key] = sanitizeMetadata(value);
112
- }
113
- else {
114
- sanitized[key] = value;
115
- }
116
- }
117
- return sanitized;
118
- }
119
- export function auditLog(action, actor, resource, outcome, metadata) {
120
- if (!auditConfig.enabled)
121
- return;
122
- try {
123
- ensureLogDir();
124
- rotateLogsIfNeeded();
125
- const entry = {
126
- timestamp: new Date().toISOString(),
127
- correlationId: getCorrelationId(),
128
- action,
129
- actor: sanitizeActor(actor),
130
- resource,
131
- outcome,
132
- metadata: sanitizeMetadata(metadata),
133
- };
134
- const logPath = getLogFilePath();
135
- const line = JSON.stringify(entry) + "\n";
136
- logQueue.push(line);
137
- flushLogQueue(logPath);
138
- }
139
- catch {
140
- // Audit logging should never break the application
141
- }
142
- }
143
- export function getAuditLogPath() {
144
- return getLogFilePath();
145
- }
146
- export function listAuditLogFiles() {
147
- ensureLogDir();
148
- const files = readdirSync(auditConfig.logDir);
149
- return files
150
- .filter((f) => f.startsWith("audit") && f.endsWith(".log"))
151
- .map((f) => join(auditConfig.logDir, f))
152
- .sort();
153
- }
154
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../lib/audit.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- export interface AuthRateLimitConfig {
2
- maxAttempts: number;
3
- windowMs: number;
4
- }
5
- export declare function configureAuthRateLimit(newConfig: Partial<AuthRateLimitConfig>): void;
6
- export declare function getAuthRateLimitConfig(): AuthRateLimitConfig;
7
- export declare function canAttemptAuth(accountId: string): boolean;
8
- export declare function recordAuthAttempt(accountId: string): void;
9
- export declare function getAttemptsRemaining(accountId: string): number;
10
- export declare function getTimeUntilReset(accountId: string): number;
11
- export declare function resetAuthRateLimit(accountId: string): void;
12
- export declare function resetAllAuthRateLimits(): void;
13
- export declare class AuthRateLimitError extends Error {
14
- readonly accountId: string;
15
- readonly attemptsRemaining: number;
16
- readonly resetAfterMs: number;
17
- constructor(accountId: string, attemptsRemaining: number, resetAfterMs: number);
18
- }
19
- export declare function checkAuthRateLimit(accountId: string): void;
20
- //# sourceMappingURL=auth-rate-limit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-rate-limit.d.ts","sourceRoot":"","sources":["../../lib/auth-rate-limit.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAEpF;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAWD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYzD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAYzD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmB3D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAG1D;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAE3B,SAAS,EAAE,MAAM;aACjB,iBAAiB,EAAE,MAAM;aACzB,YAAY,EAAE,MAAM;gBAFpB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM;CAMrC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAQ1D"}
@@ -1,91 +0,0 @@
1
- const DEFAULT_CONFIG = {
2
- maxAttempts: 5,
3
- windowMs: 60_000,
4
- };
5
- const attemptsByAccount = new Map();
6
- let config = { ...DEFAULT_CONFIG };
7
- export function configureAuthRateLimit(newConfig) {
8
- config = { ...config, ...newConfig };
9
- }
10
- export function getAuthRateLimitConfig() {
11
- return { ...config };
12
- }
13
- function getAccountKey(accountId) {
14
- return accountId.toLowerCase().trim();
15
- }
16
- function pruneOldAttempts(record, now) {
17
- const cutoff = now - config.windowMs;
18
- record.timestamps = record.timestamps.filter((ts) => ts > cutoff);
19
- }
20
- export function canAttemptAuth(accountId) {
21
- const key = getAccountKey(accountId);
22
- const record = attemptsByAccount.get(key);
23
- if (!record) {
24
- return true;
25
- }
26
- const now = Date.now();
27
- pruneOldAttempts(record, now);
28
- return record.timestamps.length < config.maxAttempts;
29
- }
30
- export function recordAuthAttempt(accountId) {
31
- const key = getAccountKey(accountId);
32
- const now = Date.now();
33
- let record = attemptsByAccount.get(key);
34
- if (!record) {
35
- record = { timestamps: [] };
36
- attemptsByAccount.set(key, record);
37
- }
38
- pruneOldAttempts(record, now);
39
- record.timestamps.push(now);
40
- }
41
- export function getAttemptsRemaining(accountId) {
42
- const key = getAccountKey(accountId);
43
- const record = attemptsByAccount.get(key);
44
- if (!record) {
45
- return config.maxAttempts;
46
- }
47
- const now = Date.now();
48
- pruneOldAttempts(record, now);
49
- return Math.max(0, config.maxAttempts - record.timestamps.length);
50
- }
51
- export function getTimeUntilReset(accountId) {
52
- const key = getAccountKey(accountId);
53
- const record = attemptsByAccount.get(key);
54
- if (!record || record.timestamps.length === 0) {
55
- return 0;
56
- }
57
- const now = Date.now();
58
- pruneOldAttempts(record, now);
59
- if (record.timestamps.length === 0) {
60
- return 0;
61
- }
62
- const oldestAttempt = Math.min(...record.timestamps);
63
- const resetTime = oldestAttempt + config.windowMs;
64
- return Math.max(0, resetTime - now);
65
- }
66
- export function resetAuthRateLimit(accountId) {
67
- const key = getAccountKey(accountId);
68
- attemptsByAccount.delete(key);
69
- }
70
- export function resetAllAuthRateLimits() {
71
- attemptsByAccount.clear();
72
- }
73
- export class AuthRateLimitError extends Error {
74
- accountId;
75
- attemptsRemaining;
76
- resetAfterMs;
77
- constructor(accountId, attemptsRemaining, resetAfterMs) {
78
- const resetSeconds = Math.ceil(resetAfterMs / 1000);
79
- super(`Auth rate limit exceeded for account. Retry after ${resetSeconds}s`);
80
- this.accountId = accountId;
81
- this.attemptsRemaining = attemptsRemaining;
82
- this.resetAfterMs = resetAfterMs;
83
- this.name = "AuthRateLimitError";
84
- }
85
- }
86
- export function checkAuthRateLimit(accountId) {
87
- if (!canAttemptAuth(accountId)) {
88
- throw new AuthRateLimitError(accountId, getAttemptsRemaining(accountId), getTimeUntilReset(accountId));
89
- }
90
- }
91
- //# sourceMappingURL=auth-rate-limit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-rate-limit.js","sourceRoot":"","sources":["../../lib/auth-rate-limit.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Shared runtime constants and sentinel helpers only. This module is pure: it
3
- * does not perform I/O, persistence, or logging, so centralizing these values
4
- * does not introduce new Windows lock or token-redaction surfaces.
5
- */
6
- export declare const OAUTH_CALLBACK_LOOPBACK_HOST = "127.0.0.1";
7
- export declare const OAUTH_CALLBACK_PORT = 1455;
8
- export declare const OAUTH_CALLBACK_PATH = "/auth/callback";
9
- export declare const OAUTH_CALLBACK_BIND_URL = "http://127.0.0.1:1455";
10
- export declare const DEACTIVATED_WORKSPACE_ERROR_CODE = "deactivated_workspace";
11
- export declare const USAGE_REQUEST_TIMEOUT_MESSAGE = "Usage request timed out";
12
- export declare function createDeactivatedWorkspaceError(): Error;
13
- export declare function isDeactivatedWorkspaceErrorMessage(message: string | undefined): boolean;
14
- export declare function createUsageRequestTimeoutError(): Error;
15
- export declare function isUsageRequestTimeoutMessage(message: string | undefined): boolean;
16
- //# sourceMappingURL=runtime-contracts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-contracts.d.ts","sourceRoot":"","sources":["../../lib/runtime-contracts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,uBAAuB,0BAAkE,CAAC;AAEvG,eAAO,MAAM,gCAAgC,0BAA0B,CAAC;AACxE,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,wBAAgB,+BAA+B,IAAI,KAAK,CAEvD;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED,wBAAgB,8BAA8B,IAAI,KAAK,CAEtD;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEjF"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Shared runtime constants and sentinel helpers only. This module is pure: it
3
- * does not perform I/O, persistence, or logging, so centralizing these values
4
- * does not introduce new Windows lock or token-redaction surfaces.
5
- */
6
- export const OAUTH_CALLBACK_LOOPBACK_HOST = "127.0.0.1";
7
- export const OAUTH_CALLBACK_PORT = 1455;
8
- export const OAUTH_CALLBACK_PATH = "/auth/callback";
9
- export const OAUTH_CALLBACK_BIND_URL = `http://${OAUTH_CALLBACK_LOOPBACK_HOST}:${OAUTH_CALLBACK_PORT}`;
10
- export const DEACTIVATED_WORKSPACE_ERROR_CODE = "deactivated_workspace";
11
- export const USAGE_REQUEST_TIMEOUT_MESSAGE = "Usage request timed out";
12
- export function createDeactivatedWorkspaceError() {
13
- return new Error(DEACTIVATED_WORKSPACE_ERROR_CODE);
14
- }
15
- export function isDeactivatedWorkspaceErrorMessage(message) {
16
- return message === DEACTIVATED_WORKSPACE_ERROR_CODE;
17
- }
18
- export function createUsageRequestTimeoutError() {
19
- return new Error(USAGE_REQUEST_TIMEOUT_MESSAGE);
20
- }
21
- export function isUsageRequestTimeoutMessage(message) {
22
- return message === USAGE_REQUEST_TIMEOUT_MESSAGE;
23
- }
24
- //# sourceMappingURL=runtime-contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-contracts.js","sourceRoot":"","sources":["../../lib/runtime-contracts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,4BAA4B,IAAI,mBAAmB,EAAE,CAAC;AAEvG,MAAM,CAAC,MAAM,gCAAgC,GAAG,uBAAuB,CAAC;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,UAAU,+BAA+B;IAC9C,OAAO,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,OAA2B;IAC7E,OAAO,OAAO,KAAK,gCAAgC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC7C,OAAO,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAA2B;IACvE,OAAO,OAAO,KAAK,6BAA6B,CAAC;AAClD,CAAC"}