codex-multi-auth 2.9.2 → 2.10.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 (66) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +2 -1
  3. package/config/schema/config.schema.json +23 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +62 -2
  6. package/dist/lib/accounts.d.ts +25 -1
  7. package/dist/lib/accounts.d.ts.map +1 -1
  8. package/dist/lib/accounts.js +26 -6
  9. package/dist/lib/codex-manager/backend-settings-helpers.d.ts.map +1 -1
  10. package/dist/lib/codex-manager/backend-settings-helpers.js +10 -1
  11. package/dist/lib/codex-manager/backend-settings-schema.d.ts +18 -0
  12. package/dist/lib/codex-manager/backend-settings-schema.d.ts.map +1 -1
  13. package/dist/lib/codex-manager/backend-settings-schema.js +19 -0
  14. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts +1 -0
  15. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
  16. package/dist/lib/codex-manager/experimental-settings-prompt.js +12 -0
  17. package/dist/lib/codex-manager/experimental-settings-schema.d.ts +2 -0
  18. package/dist/lib/codex-manager/experimental-settings-schema.d.ts.map +1 -1
  19. package/dist/lib/codex-manager/experimental-settings-schema.js +2 -0
  20. package/dist/lib/config.d.ts +29 -0
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/config.js +88 -0
  23. package/dist/lib/context-budget/model-context-windows.d.ts +25 -0
  24. package/dist/lib/context-budget/model-context-windows.d.ts.map +1 -0
  25. package/dist/lib/context-budget/model-context-windows.js +118 -0
  26. package/dist/lib/context-budget-guard.d.ts +100 -0
  27. package/dist/lib/context-budget-guard.d.ts.map +1 -0
  28. package/dist/lib/context-budget-guard.js +183 -0
  29. package/dist/lib/context-budget-response.d.ts +25 -0
  30. package/dist/lib/context-budget-response.d.ts.map +1 -0
  31. package/dist/lib/context-budget-response.js +57 -0
  32. package/dist/lib/context-overflow.d.ts.map +1 -1
  33. package/dist/lib/context-overflow.js +5 -60
  34. package/dist/lib/request/rate-limit-decision.d.ts +4 -5
  35. package/dist/lib/request/rate-limit-decision.d.ts.map +1 -1
  36. package/dist/lib/request/rate-limit-decision.js +33 -4
  37. package/dist/lib/request/response-metadata.d.ts.map +1 -1
  38. package/dist/lib/request/response-metadata.js +1 -0
  39. package/dist/lib/request/stream-failover-runtime.d.ts +3 -1
  40. package/dist/lib/request/stream-failover-runtime.d.ts.map +1 -1
  41. package/dist/lib/request/stream-failover-runtime.js +7 -2
  42. package/dist/lib/runtime/context-budget-settings.d.ts +13 -0
  43. package/dist/lib/runtime/context-budget-settings.d.ts.map +1 -0
  44. package/dist/lib/runtime/context-budget-settings.js +8 -0
  45. package/dist/lib/runtime/loader-setup.d.ts +1 -0
  46. package/dist/lib/runtime/loader-setup.d.ts.map +1 -1
  47. package/dist/lib/runtime/loader-setup.js +1 -0
  48. package/dist/lib/runtime/rotation-account-selection.d.ts +23 -0
  49. package/dist/lib/runtime/rotation-account-selection.d.ts.map +1 -1
  50. package/dist/lib/runtime/rotation-account-selection.js +15 -6
  51. package/dist/lib/runtime/rotation-proxy-state.d.ts +2 -0
  52. package/dist/lib/runtime/rotation-proxy-state.d.ts.map +1 -1
  53. package/dist/lib/runtime/rotation-server-types.d.ts +11 -0
  54. package/dist/lib/runtime/rotation-server-types.d.ts.map +1 -1
  55. package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
  56. package/dist/lib/runtime-rotation-proxy.js +251 -43
  57. package/dist/lib/schemas.d.ts +4 -0
  58. package/dist/lib/schemas.d.ts.map +1 -1
  59. package/dist/lib/schemas.js +10 -0
  60. package/dist/lib/synthetic-response.d.ts +31 -0
  61. package/dist/lib/synthetic-response.d.ts.map +1 -0
  62. package/dist/lib/synthetic-response.js +79 -0
  63. package/dist/lib/ui/ui-copy.d.ts +2 -1
  64. package/dist/lib/ui/ui-copy.d.ts.map +1 -1
  65. package/dist/lib/ui/ui-copy.js +2 -1
  66. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Shared builder for locally-answered Responses API replies.
3
+ *
4
+ * Both the reactive context-overflow handler (`lib/context-overflow.ts`) and
5
+ * the proactive context budget guard (`lib/context-budget-response.ts`) need
6
+ * to hand the caller a plugin-authored notice instead of forwarding to
7
+ * upstream, in the exact SSE dialect the Codex CLI / Responses client
8
+ * expects. Extracted here so both answer with one audited SSE shape rather
9
+ * than two independently-maintained copies of it.
10
+ */
11
+ function randomSuffix() {
12
+ return Math.random().toString(36).slice(2, 8);
13
+ }
14
+ /**
15
+ * Build a synthetic OpenAI Responses API SSE stream carrying a single
16
+ * assistant text message, then a terminal `response.completed`.
17
+ *
18
+ * Emits `response.*` events — the dialect the Codex CLI client and this
19
+ * package's own `convertSseToJson` parser speak, not the Anthropic Messages
20
+ * API dialect. Returns 200 OK so the host session never locks on a 4xx for a
21
+ * notice the plugin itself generated.
22
+ */
23
+ export function createSyntheticSseResponse(options) {
24
+ const { model, message, idPrefix, errorType } = options;
25
+ const messageId = `msg_${idPrefix}_${Date.now()}_${randomSuffix()}`;
26
+ const responseId = `resp_${idPrefix}_${Date.now()}_${randomSuffix()}`;
27
+ const events = [];
28
+ const push = (type, payload) => {
29
+ events.push(`event: ${type}\ndata: ${JSON.stringify({ type, ...payload })}\n\n`);
30
+ };
31
+ const baseResponse = {
32
+ id: responseId,
33
+ object: "response",
34
+ model,
35
+ };
36
+ push("response.created", { response: { ...baseResponse, status: "in_progress" } });
37
+ push("response.output_item.added", {
38
+ output_index: 0,
39
+ item: {
40
+ id: messageId,
41
+ type: "message",
42
+ role: "assistant",
43
+ content: [],
44
+ },
45
+ });
46
+ push("response.output_text.delta", {
47
+ output_index: 0,
48
+ content_index: 0,
49
+ delta: message,
50
+ });
51
+ push("response.output_text.done", {
52
+ output_index: 0,
53
+ content_index: 0,
54
+ text: message,
55
+ });
56
+ push("response.completed", {
57
+ response: {
58
+ ...baseResponse,
59
+ status: "completed",
60
+ output: [
61
+ {
62
+ id: messageId,
63
+ type: "message",
64
+ role: "assistant",
65
+ content: [{ type: "output_text", text: message }],
66
+ },
67
+ ],
68
+ usage: { input_tokens: 0, output_tokens: 0, total_tokens: 0 },
69
+ },
70
+ });
71
+ return new Response(events.join(""), {
72
+ status: 200,
73
+ headers: {
74
+ "Content-Type": "text/event-stream",
75
+ "X-Codex-Plugin-Synthetic": "true",
76
+ "X-Codex-Plugin-Error-Type": errorType,
77
+ },
78
+ });
79
+ }
@@ -91,7 +91,7 @@ export declare const UI_COPY: {
91
91
  readonly experimental: "Experimental";
92
92
  readonly experimentalTitle: "Experimental";
93
93
  readonly experimentalSubtitle: "Preview sync and backup actions before they become stable";
94
- readonly experimentalHelpMenu: "Enter Select | 1 Sync | 2 Backup | 3 Guard | [ - Down | ] + Up | S Save | Q Back";
94
+ readonly experimentalHelpMenu: "Enter Select | 1 Sync | 2 Backup | 3 Guard | 4 Budget | [ - Down | ] + Up | S Save | Q Back";
95
95
  readonly experimentalHelpPreview: "Enter Select | A Apply | Q Back";
96
96
  readonly experimentalHelpStatus: "Enter Select | Q Back";
97
97
  readonly experimentalSync: "Sync Accounts to oc-chatgpt-multi-auth";
@@ -102,6 +102,7 @@ export declare const UI_COPY: {
102
102
  readonly experimentalRefreshInterval: "Refresh Guard Interval";
103
103
  readonly experimentalDecreaseInterval: "Decrease Refresh Interval";
104
104
  readonly experimentalIncreaseInterval: "Increase Refresh Interval";
105
+ readonly experimentalContextBudgetGuard: "Enable Context Budget Guard";
105
106
  readonly backend: "Backend Controls";
106
107
  readonly back: "Back";
107
108
  readonly previewHeading: "Live Preview";
@@ -1 +1 @@
1
- {"version":3,"file":"ui-copy.d.ts","sourceRoot":"","sources":["../../../lib/ui/ui-copy.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAqDP,MAAM,gBACF,MAAM,WACX,MAAM;kDAGiB,MAAM,WAAW,MAAM;kDAEvB,MAAM,gBAAgB,MAAM;iDAE7B,MAAM,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;uCAyBtC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA+EA,MAAM;;;;CAM1B,CAAC;AAEX;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIpE"}
1
+ {"version":3,"file":"ui-copy.d.ts","sourceRoot":"","sources":["../../../lib/ui/ui-copy.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAqDP,MAAM,gBACF,MAAM,WACX,MAAM;kDAGiB,MAAM,WAAW,MAAM;kDAEvB,MAAM,gBAAgB,MAAM;iDAE7B,MAAM,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;uCAyBtC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAgFA,MAAM;;;;CAM1B,CAAC;AAEX;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIpE"}
@@ -92,7 +92,7 @@ export const UI_COPY = {
92
92
  experimental: "Experimental",
93
93
  experimentalTitle: "Experimental",
94
94
  experimentalSubtitle: "Preview sync and backup actions before they become stable",
95
- experimentalHelpMenu: "Enter Select | 1 Sync | 2 Backup | 3 Guard | [ - Down | ] + Up | S Save | Q Back",
95
+ experimentalHelpMenu: "Enter Select | 1 Sync | 2 Backup | 3 Guard | 4 Budget | [ - Down | ] + Up | S Save | Q Back",
96
96
  experimentalHelpPreview: "Enter Select | A Apply | Q Back",
97
97
  experimentalHelpStatus: "Enter Select | Q Back",
98
98
  experimentalSync: "Sync Accounts to oc-chatgpt-multi-auth",
@@ -103,6 +103,7 @@ export const UI_COPY = {
103
103
  experimentalRefreshInterval: "Refresh Guard Interval",
104
104
  experimentalDecreaseInterval: "Decrease Refresh Interval",
105
105
  experimentalIncreaseInterval: "Increase Refresh Interval",
106
+ experimentalContextBudgetGuard: "Enable Context Budget Guard",
106
107
  backend: "Backend Controls",
107
108
  back: "Back",
108
109
  previewHeading: "Live Preview",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-multi-auth",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Codex CLI multi-account OAuth manager with account switching, health checks, runtime rotation, diagnostics, and recovery tools for @openai/codex",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",