oc-codex-multi-auth 6.22.0 → 6.24.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 (120) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +793 -729
  3. package/assets/icon.svg +7 -7
  4. package/assets/opencode-logo-ornate-dark.svg +18 -18
  5. package/assets/readme-hero.svg +31 -31
  6. package/config/README.md +197 -177
  7. package/config/minimal-opencode.json +14 -14
  8. package/config/opencode-legacy.json +1346 -1496
  9. package/config/opencode-modern.json +466 -555
  10. package/dist/index.d.ts +7 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +37 -19
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/accounts/warm-request.d.ts.map +1 -1
  15. package/dist/lib/accounts/warm-request.js +9 -11
  16. package/dist/lib/accounts/warm-request.js.map +1 -1
  17. package/dist/lib/codex-usage.d.ts +35 -0
  18. package/dist/lib/codex-usage.d.ts.map +1 -1
  19. package/dist/lib/codex-usage.js +51 -0
  20. package/dist/lib/codex-usage.js.map +1 -1
  21. package/dist/lib/config.d.ts +5 -3
  22. package/dist/lib/config.d.ts.map +1 -1
  23. package/dist/lib/config.js +2 -0
  24. package/dist/lib/config.js.map +1 -1
  25. package/dist/lib/constants.d.ts +13 -0
  26. package/dist/lib/constants.d.ts.map +1 -1
  27. package/dist/lib/constants.js +13 -0
  28. package/dist/lib/constants.js.map +1 -1
  29. package/dist/lib/context-overflow.js +10 -10
  30. package/dist/lib/desktop-notifications.js +6 -6
  31. package/dist/lib/oauth-success.js +202 -202
  32. package/dist/lib/opencode-v2-provider.d.ts +2 -0
  33. package/dist/lib/opencode-v2-provider.d.ts.map +1 -0
  34. package/dist/lib/opencode-v2-provider.js +4 -0
  35. package/dist/lib/opencode-v2-provider.js.map +1 -0
  36. package/dist/lib/opencode-v2-rpc.d.ts +27 -0
  37. package/dist/lib/opencode-v2-rpc.d.ts.map +1 -0
  38. package/dist/lib/opencode-v2-rpc.js +16 -0
  39. package/dist/lib/opencode-v2-rpc.js.map +1 -0
  40. package/dist/lib/opencode-v2-status.d.ts +17 -0
  41. package/dist/lib/opencode-v2-status.d.ts.map +1 -0
  42. package/dist/lib/opencode-v2-status.js +91 -0
  43. package/dist/lib/opencode-v2-status.js.map +1 -0
  44. package/dist/lib/opencode-v2-tui.d.ts +4 -0
  45. package/dist/lib/opencode-v2-tui.d.ts.map +1 -0
  46. package/dist/lib/opencode-v2-tui.js +105 -0
  47. package/dist/lib/opencode-v2-tui.js.map +1 -0
  48. package/dist/lib/opencode-v2.d.ts +11 -0
  49. package/dist/lib/opencode-v2.d.ts.map +1 -0
  50. package/dist/lib/opencode-v2.js +235 -0
  51. package/dist/lib/opencode-v2.js.map +1 -0
  52. package/dist/lib/prompts/codex-opencode-bridge.js +67 -67
  53. package/dist/lib/prompts/codex.d.ts +12 -2
  54. package/dist/lib/prompts/codex.d.ts.map +1 -1
  55. package/dist/lib/prompts/codex.js +126 -91
  56. package/dist/lib/prompts/codex.js.map +1 -1
  57. package/dist/lib/quota-capacity.d.ts +4 -0
  58. package/dist/lib/quota-capacity.d.ts.map +1 -0
  59. package/dist/lib/quota-capacity.js +45 -0
  60. package/dist/lib/quota-capacity.js.map +1 -0
  61. package/dist/lib/quota-overview.d.ts +13 -27
  62. package/dist/lib/quota-overview.d.ts.map +1 -1
  63. package/dist/lib/quota-overview.js +59 -99
  64. package/dist/lib/quota-overview.js.map +1 -1
  65. package/dist/lib/quota-recovery.d.ts +5 -0
  66. package/dist/lib/quota-recovery.d.ts.map +1 -0
  67. package/dist/lib/quota-recovery.js +66 -0
  68. package/dist/lib/quota-recovery.js.map +1 -0
  69. package/dist/lib/request/fetch-helpers.d.ts +1 -1
  70. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  71. package/dist/lib/request/fetch-helpers.js +85 -51
  72. package/dist/lib/request/fetch-helpers.js.map +1 -1
  73. package/dist/lib/request/helpers/model-map.d.ts +10 -0
  74. package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
  75. package/dist/lib/request/helpers/model-map.js +39 -11
  76. package/dist/lib/request/helpers/model-map.js.map +1 -1
  77. package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
  78. package/dist/lib/request/helpers/responses-lite.js +4 -1
  79. package/dist/lib/request/helpers/responses-lite.js.map +1 -1
  80. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  81. package/dist/lib/request/request-transformer.js +37 -15
  82. package/dist/lib/request/request-transformer.js.map +1 -1
  83. package/dist/lib/schemas.d.ts +9 -1
  84. package/dist/lib/schemas.d.ts.map +1 -1
  85. package/dist/lib/schemas.js +3 -2
  86. package/dist/lib/schemas.js.map +1 -1
  87. package/dist/lib/storage/state.d.ts +8 -0
  88. package/dist/lib/storage/state.d.ts.map +1 -1
  89. package/dist/lib/storage/state.js +47 -20
  90. package/dist/lib/storage/state.js.map +1 -1
  91. package/dist/lib/tools/codex-limits.d.ts.map +1 -1
  92. package/dist/lib/tools/codex-limits.js +49 -3
  93. package/dist/lib/tools/codex-limits.js.map +1 -1
  94. package/dist/lib/tui-quota-cache.d.ts +1 -0
  95. package/dist/lib/tui-quota-cache.d.ts.map +1 -1
  96. package/dist/lib/tui-quota-cache.js +2 -0
  97. package/dist/lib/tui-quota-cache.js.map +1 -1
  98. package/dist/lib/tui-quota-overview.d.ts.map +1 -1
  99. package/dist/lib/tui-quota-overview.js +4 -0
  100. package/dist/lib/tui-quota-overview.js.map +1 -1
  101. package/dist/lib/tui-status-slot.d.ts +3 -0
  102. package/dist/lib/tui-status-slot.d.ts.map +1 -0
  103. package/dist/lib/tui-status-slot.js +27 -0
  104. package/dist/lib/tui-status-slot.js.map +1 -0
  105. package/dist/lib/tui-status.d.ts +1 -0
  106. package/dist/lib/tui-status.d.ts.map +1 -1
  107. package/dist/lib/tui-status.js +1 -0
  108. package/dist/lib/tui-status.js.map +1 -1
  109. package/dist/tui.d.ts +10 -3
  110. package/dist/tui.d.ts.map +1 -1
  111. package/dist/tui.js +22 -1
  112. package/dist/tui.js.map +1 -1
  113. package/package.json +157 -155
  114. package/scripts/audit-dev-allowlist.js +114 -114
  115. package/scripts/clean-dist.js +27 -27
  116. package/scripts/copy-oauth-success.js +47 -47
  117. package/scripts/install-oc-codex-multi-auth-core.js +2092 -2003
  118. package/scripts/install-oc-codex-multi-auth.js +37 -37
  119. package/scripts/test-all-models.sh +260 -260
  120. package/scripts/validate-model-map.sh +97 -97
@@ -0,0 +1,105 @@
1
+ import { createElement, spread } from "@opentui/solid";
2
+ import { createSignal, onCleanup } from "solid-js";
3
+ import { CodexStatusRpc } from "./opencode-v2-rpc.js";
4
+ /** Register quota and account views; return a disposer for the V2 TUI slots. */
5
+ export function setupV2Tui(context) {
6
+ const [text, setText] = createSignal("");
7
+ const [accounts, setAccounts] = createSignal("Loading accounts…");
8
+ const [showFor, setShowFor] = createSignal("always");
9
+ const disposers = [context.ui.slot({
10
+ append: "app",
11
+ render: () => {
12
+ let details = "Quota is loading.";
13
+ let disposed = false;
14
+ let pending = false;
15
+ const controller = new AbortController();
16
+ const rpc = context.client.rpc(CodexStatusRpc);
17
+ const refresh = async () => {
18
+ if (pending || disposed)
19
+ return;
20
+ pending = true;
21
+ try {
22
+ const result = await rpc.status({ width: Math.max(1, Math.min(1000, context.renderer.width - 40)) }, {
23
+ location: context.location ?? context.data.location.default(), signal: controller.signal,
24
+ });
25
+ if (disposed)
26
+ return;
27
+ setText(result.text);
28
+ setShowFor(result.showFor);
29
+ setAccounts(result.accounts.length ? result.accounts.map((account) => `${account.active ? "●" : "○"} ${account.index}. ${account.label}${account.enabled ? "" : " (disabled)"}`).join("\n") : "No Codex accounts in this pool.");
30
+ details = result.details;
31
+ }
32
+ catch {
33
+ if (!disposed) {
34
+ setText("limits ?");
35
+ setAccounts("Accounts unavailable — retry shortly.");
36
+ details = "Quota unavailable — retry shortly.";
37
+ }
38
+ }
39
+ finally {
40
+ pending = false;
41
+ }
42
+ };
43
+ void refresh();
44
+ const timer = setInterval(() => { void refresh(); }, 2_000);
45
+ context.keymap.layer(() => ({
46
+ mode: "global",
47
+ commands: [{
48
+ id: "codex.quota.details", title: "Codex quota details", group: "Codex", palette: true,
49
+ async run() {
50
+ await refresh();
51
+ await context.ui.dialog.alert({ title: "Codex quota", message: details });
52
+ },
53
+ }, {
54
+ id: "codex.accounts", title: "Codex accounts", group: "Codex", palette: true,
55
+ slash: { name: "codex-accounts" },
56
+ async run() {
57
+ await refresh();
58
+ await context.ui.dialog.alert({
59
+ title: "Codex accounts",
60
+ message: `${accounts()}\n\nAdd an account: run opencode auth login from this project directory, then select OpenAI → Codex OAuth (Add account — ChatGPT Plus/Pro). Repeat for each account, using a private browser window to choose a different login.`,
61
+ });
62
+ },
63
+ }],
64
+ }));
65
+ onCleanup(() => { disposed = true; controller.abort(); clearInterval(timer); });
66
+ return null;
67
+ },
68
+ }), context.ui.slot({
69
+ append: "prompt.footer.status",
70
+ render: (props) => {
71
+ const element = createElement("text");
72
+ spread(element, {
73
+ get children() {
74
+ let providerID = props.sessionID ? context.data.session.get(props.sessionID)?.model?.providerID : undefined;
75
+ if (props.sessionID) {
76
+ const messages = context.data.session.message.list(props.sessionID) ?? [];
77
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
78
+ const message = messages[index];
79
+ if (message?.type !== "assistant")
80
+ continue;
81
+ providerID = message.model.providerID;
82
+ break;
83
+ }
84
+ }
85
+ return showFor() === "codex-models" && providerID && providerID !== "openai" ? "" : text();
86
+ },
87
+ get fg() { return context.theme.text.base; },
88
+ });
89
+ return element;
90
+ },
91
+ }), context.ui.slot({
92
+ append: "sidebar.content",
93
+ render: () => {
94
+ const element = createElement("text");
95
+ spread(element, {
96
+ get children() { return `\nCodex accounts\n${accounts()}\n/codex-accounts`; },
97
+ get fg() { return context.theme.text.base; },
98
+ });
99
+ return element;
100
+ },
101
+ })];
102
+ return () => { for (const dispose of disposers)
103
+ dispose(); };
104
+ }
105
+ //# sourceMappingURL=opencode-v2-tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-v2-tui.js","sourceRoot":"","sources":["../../lib/opencode-v2-tui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Plugin } from "@opencode/plugin";
2
+ import type { Hooks } from "@opencode-ai/plugin";
3
+ /** V1 supplied these defaults through provider options; V2's bridge needs them on the wire. */
4
+ export declare function createV2Fetch(fetcher: (input: Request | string | URL, init?: RequestInit) => Promise<Response>, version: string): (input: Request | string | URL, init?: RequestInit) => Promise<Response>;
5
+ /** The shared V1 runtime factory, passed in by the package entry. */
6
+ export type CreateV2Runtime = (options: {
7
+ directory: string;
8
+ }) => Promise<Hooks>;
9
+ /** Keep account rotation and wire transforms in the shared runtime. */
10
+ export declare function setupV2(context: Plugin.Context, createPluginRuntime: CreateV2Runtime): Promise<() => Promise<void>>;
11
+ //# sourceMappingURL=opencode-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-v2.d.ts","sourceRoot":"","sources":["../../lib/opencode-v2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmCjD,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,IACjH,OAAO,OAAO,GAAG,MAAM,GAAG,GAAG,EAAE,OAAO,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CAUnF;AAED,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AAEjF,uEAAuE;AACvE,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,mBAAmB,EAAE,eAAe,gCAGpF"}
@@ -0,0 +1,235 @@
1
+ import { createOpenAI } from "@ai-sdk/openai";
2
+ import { existsSync } from "node:fs";
3
+ import { Integration } from "@opencode/plugin";
4
+ import { z } from "zod";
5
+ import { loadAccounts } from "./storage.js";
6
+ import { coordinatePersistedRefresh } from "./storage/coordinated-refresh.js";
7
+ import { logInfo, logWarn } from "./logger.js";
8
+ import { readV2Status } from "./opencode-v2-status.js";
9
+ import { CodexStatusRpc } from "./opencode-v2-rpc.js";
10
+ import { createStorageScope } from "./storage/state.js";
11
+ import { AUTH_LABELS } from "./constants.js";
12
+ import { openBrowserUrl } from "./auth/browser.js";
13
+ import { extractAccountId, extractAccountUserId } from "./auth/token-utils.js";
14
+ const providerModule = new URL("./opencode-v2-provider.js", import.meta.url);
15
+ // Local checkouts are loaded from TypeScript; published packages contain JS.
16
+ if (!existsSync(providerModule))
17
+ providerModule.pathname = providerModule.pathname.replace(/\.js$/, ".ts");
18
+ const providerPackage = `aisdk:${providerModule.href}`;
19
+ /** Set stateless options before the SDK lowers history into server-side references. */
20
+ function createV2Language(model) {
21
+ const stateless = (options) => {
22
+ const openai = { ...options.providerOptions?.openai, store: false };
23
+ delete openai.previousResponseId;
24
+ delete openai.conversation;
25
+ return { ...options, providerOptions: { ...options.providerOptions, openai } };
26
+ };
27
+ return new Proxy(model, {
28
+ get(target, property, receiver) {
29
+ if (property === "doGenerate")
30
+ return (options) => target.doGenerate(stateless(options));
31
+ if (property === "doStream")
32
+ return (options) => target.doStream(stateless(options));
33
+ return Reflect.get(target, property, receiver);
34
+ },
35
+ });
36
+ }
37
+ /** V1 supplied these defaults through provider options; V2's bridge needs them on the wire. */
38
+ export function createV2Fetch(fetcher, version) {
39
+ return async (input, init) => {
40
+ const request = new Request(input, init);
41
+ const headers = new Headers(request.headers);
42
+ headers.set("user-agent", `opencode/${version}`);
43
+ if (request.method !== "POST" || !request.body)
44
+ return fetcher(request);
45
+ const body = await request.json();
46
+ body.store = false;
47
+ body.include = [...new Set([...(Array.isArray(body.include) ? body.include : []), "reasoning.encrypted_content"])];
48
+ return fetcher(request.url, { method: request.method, headers, body: JSON.stringify(body), signal: request.signal });
49
+ };
50
+ }
51
+ /** Keep account rotation and wire transforms in the shared runtime. */
52
+ export function setupV2(context, createPluginRuntime) {
53
+ const run = createStorageScope();
54
+ return run(() => setupScopedV2(context, run, createPluginRuntime));
55
+ }
56
+ /** Register V2 hooks within the location's account-storage scope and release them on unload. */
57
+ async function setupScopedV2(context, run, createPluginRuntime) {
58
+ const runtime = await createPluginRuntime({ directory: context.location.directory });
59
+ const auth = runtime.auth;
60
+ if (!auth?.loader)
61
+ throw new Error("Codex authentication runtime is unavailable");
62
+ const loader = auth.loader;
63
+ const hasOAuth = async () => {
64
+ if ((await loadAccounts())?.accounts.some((account) => account.enabled !== false && account.refreshToken))
65
+ return true;
66
+ const connection = await context.integration.connection.active("openai");
67
+ return connection ? (await context.integration.connection.resolve(connection))?.type === "oauth" : false;
68
+ };
69
+ let enabled = false;
70
+ const reload = async () => { enabled = await hasOAuth(); await context.provider.reload(); };
71
+ const controller = new AbortController();
72
+ const cleanup = () => run(async () => {
73
+ controller.abort();
74
+ await runtime.event?.({ event: { type: "server.instance.disposed", properties: { directory: context.location.directory } } });
75
+ });
76
+ try {
77
+ enabled = await hasOAuth();
78
+ logInfo("V2 Codex adapter initialized", { enabled, directory: context.location.directory });
79
+ await context.rpc.register(CodexStatusRpc, { status: (input) => run(() => readV2Status(input)) });
80
+ // V2 runs authorization in the service, where the V1 readline menu cannot run.
81
+ // Reuse the append-only loopback flow for the primary add-account method.
82
+ await context.integration.transform((editor) => {
83
+ for (const [index, method] of auth.methods.entries()) {
84
+ if (method.type !== "oauth")
85
+ continue;
86
+ const primary = index === 0;
87
+ const flowMethod = primary
88
+ ? auth.methods.find((candidate) => candidate.label === AUTH_LABELS.OAUTH_MANUAL_BROWSER)
89
+ : method;
90
+ if (flowMethod?.type !== "oauth")
91
+ continue;
92
+ const methodID = Integration.MethodID.make(`codex-multi-${index}`);
93
+ editor.method.update({
94
+ integrationID: "openai",
95
+ method: { id: methodID, type: "oauth", label: primary ? "Codex OAuth (Add account — ChatGPT Plus/Pro)" : method.label },
96
+ authorize: () => run(async () => {
97
+ const flow = await flowMethod.authorize();
98
+ if (primary && flow.url)
99
+ openBrowserUrl(flow.url);
100
+ const instructions = flow.url
101
+ ? `${flow.instructions}\nAdds to this project's Codex account pool. Use a private browser window or switch accounts to add a different login. Repeat opencode auth login for another account; view the pool with /codex-accounts.`
102
+ : flow.instructions;
103
+ const credential = (code) => run(async () => {
104
+ const result = flow.method === "code" ? await flow.callback(code ?? "") : await flow.callback();
105
+ if (result.type !== "success" || !("access" in result))
106
+ throw new Error("Codex sign-in failed; retry authentication");
107
+ await reload();
108
+ return { type: "oauth", methodID, access: result.access, refresh: result.refresh, expires: result.expires };
109
+ });
110
+ return flow.method === "code"
111
+ ? { url: flow.url, instructions, mode: "code", callback: credential }
112
+ : { url: flow.url, instructions, mode: "auto", callback: credential() };
113
+ }),
114
+ refresh: (credential) => run(async () => {
115
+ const pool = await loadAccounts();
116
+ const exactMatches = pool?.accounts.filter((account) => account.refreshToken === credential.refresh) ?? [];
117
+ const accountId = extractAccountId(credential.access);
118
+ const accountUserId = extractAccountUserId(credential.access);
119
+ const matches = pool?.accounts.filter((account) => (accountId || accountUserId) &&
120
+ (!accountId || account.accountId === accountId) &&
121
+ (!accountUserId || account.accountUserId === accountUserId)) ?? [];
122
+ // One OAuth grant can back several seats. The access-token seat wins
123
+ // over a shared refresh token; never guess if both are ambiguous.
124
+ const account = matches.length === 1 ? matches[0] : exactMatches.length === 1 ? exactMatches[0] : undefined;
125
+ if (!account && exactMatches.length > 1)
126
+ throw new Error("Codex refresh account is ambiguous; reconnect the account");
127
+ const result = await coordinatePersistedRefresh({
128
+ refreshToken: credential.refresh,
129
+ ...(account ? { organizationId: account.organizationId, accountId: account.accountId, accountUserId: account.accountUserId } : {}),
130
+ });
131
+ if (result.type !== "success")
132
+ throw new Error("Codex token refresh failed");
133
+ return { ...credential, access: result.access, refresh: result.refresh, expires: result.expires };
134
+ }),
135
+ });
136
+ }
137
+ });
138
+ const resolveAuth = async () => {
139
+ const pool = await loadAccounts();
140
+ const account = pool?.accounts[pool.activeIndex] ?? pool?.accounts[0];
141
+ if (account?.refreshToken) {
142
+ return { type: "oauth", access: account.accessToken ?? "", refresh: account.refreshToken, expires: account.expiresAt ?? 0 };
143
+ }
144
+ const connection = await context.integration.connection.active("openai");
145
+ const credential = connection ? await context.integration.connection.resolve(connection) : undefined;
146
+ if (credential?.type === "oauth")
147
+ return credential;
148
+ throw new Error("Connect a Codex multi-account OAuth method with /connect first");
149
+ };
150
+ await context.provider.transform((editor) => {
151
+ if (!enabled)
152
+ return;
153
+ editor.update("openai", (provider) => {
154
+ provider.package = providerPackage;
155
+ provider.activation = "enabled";
156
+ provider.settings = { ...provider.settings, transport: "http" };
157
+ });
158
+ for (const model of editor.get("openai")?.models.values() ?? []) {
159
+ editor.models.update("openai", model.id, (draft) => { draft.package = providerPackage; });
160
+ }
161
+ });
162
+ await context.aisdk.hook("sdk", (event) => run(async () => {
163
+ if (!enabled)
164
+ return;
165
+ const options = await loader(resolveAuth, {
166
+ id: "openai", name: "OpenAI", source: "custom", env: [], models: {},
167
+ options: event.model.settings ?? {},
168
+ });
169
+ const fetcher = options.fetch;
170
+ if (typeof fetcher !== "function")
171
+ throw new Error("Codex request transport could not be initialized");
172
+ event.sdk = createOpenAI({
173
+ apiKey: typeof options.apiKey === "string" ? options.apiKey : "codex-oauth",
174
+ baseURL: typeof options.baseURL === "string" ? options.baseURL : undefined,
175
+ fetch: createV2Fetch((input, init) => run(() => fetcher(input, init)), context.app.version),
176
+ });
177
+ }), { providerID: "openai" });
178
+ await context.model.transform((editor) => {
179
+ if (!enabled)
180
+ return;
181
+ for (const model of editor.list("openai")) {
182
+ editor.update("openai", String(model.id), (draft) => {
183
+ draft.package = providerPackage;
184
+ draft.settings = { ...draft.settings, transport: "http" };
185
+ });
186
+ }
187
+ });
188
+ await context.aisdk.hook("language", (event) => {
189
+ if (!enabled)
190
+ return;
191
+ const sdk = event.sdk;
192
+ event.language = createV2Language(sdk.responses(event.model.modelID));
193
+ }, { providerID: "openai" });
194
+ await context.tool.transform((editor) => {
195
+ for (const [name, definition] of Object.entries(runtime.tool ?? {})) {
196
+ const schema = z.object(definition.args);
197
+ editor.add({
198
+ name,
199
+ description: definition.description,
200
+ input: z.toJSONSchema(schema),
201
+ execute: (input, call) => run(async () => {
202
+ const result = await definition.execute(schema.parse(input), {
203
+ sessionID: call.sessionID, messageID: call.messageID, agent: call.agent,
204
+ directory: context.location.directory, worktree: context.location.project.directory,
205
+ abort: call.signal,
206
+ metadata: (update) => { void call.progress(update).catch(() => { }); },
207
+ ask: () => { throw new Error("Legacy tool permission requests are not supported by the V2 adapter"); },
208
+ });
209
+ return { content: typeof result === "string" ? result : result.output };
210
+ }),
211
+ });
212
+ }
213
+ });
214
+ void (async () => {
215
+ try {
216
+ for await (const event of context.event.subscribe({ signal: controller.signal })) {
217
+ if (event.location && event.location.directory !== context.location.directory)
218
+ continue;
219
+ if (event.type === "credential.updated" || event.type === "credential.switched")
220
+ await reload();
221
+ }
222
+ }
223
+ catch (error) {
224
+ if (!controller.signal.aborted)
225
+ logWarn("V2 event subscription ended", { error: String(error) });
226
+ }
227
+ })();
228
+ return cleanup;
229
+ }
230
+ catch (error) {
231
+ await cleanup();
232
+ throw error;
233
+ }
234
+ }
235
+ //# sourceMappingURL=opencode-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-v2.js","sourceRoot":"","sources":["../../lib/opencode-v2.ts"],"names":[],"mappings":"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"}
@@ -7,73 +7,73 @@
7
7
  *
8
8
  * Token Count: ~450 tokens (~90% reduction vs full OpenCode prompt)
9
9
  */
10
- export const CODEX_OPENCODE_BRIDGE = `# Codex Running in OpenCode
11
-
12
- You are running Codex through OpenCode, an open-source terminal coding assistant.
13
-
14
- ## Runtime Tooling Rule (Highest Priority)
15
-
16
- <critical_rule priority="0">
17
- Treat the runtime tool manifest as the only authoritative tool list.
18
- - Call ONLY tool names listed in that manifest.
19
- - Do NOT translate, alias, or rename tool names.
20
- - If a base instruction references a tool name that is not listed, ignore that alias and use the listed names only.
21
- </critical_rule>
22
-
23
- ## Tool-Call Guardrails
24
-
25
- - Follow the current tool schema exactly for parameters.
26
- - Do not invent wrapper namespaces unless they are explicitly listed as tools.
27
- - If no explicit parallel helper tool is listed, run calls sequentially.
28
- - If a tool call fails validation, correct arguments to match schema and retry.
29
-
30
- ## Planning & Modes
31
-
32
- - Never call \`update_plan\`, \`read_plan\`, or similarly named aliases.
33
- - Use planning tools only if they are explicitly listed in the runtime manifest.
34
- - \`request_user_input\` is Plan-mode only; never call it in Default mode.
35
-
36
- ## Path & Execution Discipline
37
-
38
- - Follow per-tool path conventions from the active schema; do not assume absolute/relative behavior.
39
- - Prefer specialized tools over shell when an equivalent listed tool exists.
40
- - Use non-destructive checks before destructive commands.
41
-
42
- ## Verification Checklist
43
-
44
- Before each tool call:
45
- 1. Is the tool name exactly listed in the runtime manifest?
46
- 2. Do arguments match the listed schema?
47
- 3. Am I avoiding unlisted aliases and wrapper namespaces?
48
- 4. Am I following mode/path constraints for this environment?
49
-
50
- If any answer is NO, correct it before proceeding.
51
-
52
- ## OpenCode Working Style
53
-
54
- **Communication:**
55
- - Send brief preambles before tool calls.
56
- - Provide concise progress updates during longer tasks.
57
-
58
- **Execution:**
59
- - Continue working until the user request is fully resolved.
60
- - Do not return partial solutions unless blocked.
61
-
62
- **Code Approach:**
63
- - New projects: be creative and deliberate.
64
- - Existing codebases: make precise, minimal changes aligned to request.
65
-
66
- **Testing:**
67
- - If tests exist, run focused tests first, then broader validation.
68
-
69
- ## What Remains from Codex
70
-
71
- Sandbox policies, approvals, final formatting, git protocols, and file reference formats still follow Codex instructions.
72
-
73
- ## Approvals & Safety
74
-
75
- - Treat destructive commands (for example \`rm\`, \`git reset --hard\`) as requiring explicit user request or approval.
76
- - Never run \`git reset --hard\`, \`git checkout --\`, or force deletes unless explicitly requested.
10
+ export const CODEX_OPENCODE_BRIDGE = `# Codex Running in OpenCode
11
+
12
+ You are running Codex through OpenCode, an open-source terminal coding assistant.
13
+
14
+ ## Runtime Tooling Rule (Highest Priority)
15
+
16
+ <critical_rule priority="0">
17
+ Treat the runtime tool manifest as the only authoritative tool list.
18
+ - Call ONLY tool names listed in that manifest.
19
+ - Do NOT translate, alias, or rename tool names.
20
+ - If a base instruction references a tool name that is not listed, ignore that alias and use the listed names only.
21
+ </critical_rule>
22
+
23
+ ## Tool-Call Guardrails
24
+
25
+ - Follow the current tool schema exactly for parameters.
26
+ - Do not invent wrapper namespaces unless they are explicitly listed as tools.
27
+ - If no explicit parallel helper tool is listed, run calls sequentially.
28
+ - If a tool call fails validation, correct arguments to match schema and retry.
29
+
30
+ ## Planning & Modes
31
+
32
+ - Never call \`update_plan\`, \`read_plan\`, or similarly named aliases.
33
+ - Use planning tools only if they are explicitly listed in the runtime manifest.
34
+ - \`request_user_input\` is Plan-mode only; never call it in Default mode.
35
+
36
+ ## Path & Execution Discipline
37
+
38
+ - Follow per-tool path conventions from the active schema; do not assume absolute/relative behavior.
39
+ - Prefer specialized tools over shell when an equivalent listed tool exists.
40
+ - Use non-destructive checks before destructive commands.
41
+
42
+ ## Verification Checklist
43
+
44
+ Before each tool call:
45
+ 1. Is the tool name exactly listed in the runtime manifest?
46
+ 2. Do arguments match the listed schema?
47
+ 3. Am I avoiding unlisted aliases and wrapper namespaces?
48
+ 4. Am I following mode/path constraints for this environment?
49
+
50
+ If any answer is NO, correct it before proceeding.
51
+
52
+ ## OpenCode Working Style
53
+
54
+ **Communication:**
55
+ - Send brief preambles before tool calls.
56
+ - Provide concise progress updates during longer tasks.
57
+
58
+ **Execution:**
59
+ - Continue working until the user request is fully resolved.
60
+ - Do not return partial solutions unless blocked.
61
+
62
+ **Code Approach:**
63
+ - New projects: be creative and deliberate.
64
+ - Existing codebases: make precise, minimal changes aligned to request.
65
+
66
+ **Testing:**
67
+ - If tests exist, run focused tests first, then broader validation.
68
+
69
+ ## What Remains from Codex
70
+
71
+ Sandbox policies, approvals, final formatting, git protocols, and file reference formats still follow Codex instructions.
72
+
73
+ ## Approvals & Safety
74
+
75
+ - Treat destructive commands (for example \`rm\`, \`git reset --hard\`) as requiring explicit user request or approval.
76
+ - Never run \`git reset --hard\`, \`git checkout --\`, or force deletes unless explicitly requested.
77
77
  - When uncertain, prefer non-destructive verification first.`;
78
78
  const MAX_MANIFEST_TOOLS = 32;
79
79
  const normalizeRuntimeToolNames = (toolNames) => {
@@ -7,14 +7,24 @@ export declare function __clearCacheForTesting(): void;
7
7
  * Model family type for prompt selection
8
8
  * Maps to different system prompts in the Codex CLI
9
9
  */
10
- export type ModelFamily = "gpt-5-codex" | "codex-max" | "codex" | "gpt-6-astra" | "gpt-daybreak-blue" | "gpt-daybreak-red" | "gpt-5.6-cyber" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.4" | "gpt-5.4-mini" | "gpt-5.4-pro" | "gpt-5.2" | "gpt-5.1";
10
+ export type ModelFamily = "gpt-5-codex" | "codex-max" | "codex" | "gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-daybreak-blue" | "gpt-daybreak-red" | "gpt-5.6-cyber" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.4" | "gpt-5.4-mini" | "gpt-5.4-pro" | "gpt-5.2" | "gpt-5.1";
11
11
  /**
12
12
  * All supported model families
13
13
  * Used for per-family account rotation and rate limit tracking
14
14
  */
15
15
  export declare const MODEL_FAMILIES: readonly ModelFamily[];
16
16
  /**
17
- * Pull one model's `base_instructions` out of a raw models.json payload.
17
+ * Pull one model's base instructions out of a raw models.json payload.
18
+ *
19
+ * openai/codex #43604 (2026-09-07) dropped `base_instructions` from every
20
+ * bundled catalog entry; the text now lives in
21
+ * `model_messages.instructions_template`. rust-v0.155.1 carries only the
22
+ * template for all nine of its models, so reading `base_instructions` alone
23
+ * served the legacy prompt file to every catalog model. The template is rendered the
24
+ * way Codex renders it with personality disabled
25
+ * (codex-rs/models-manager/src/model_info.rs): the placeholder takes
26
+ * `personality_default`, which is "" for every entry that carries one.
27
+ * `base_instructions` still wins when present, for tags that predate the move.
18
28
  *
19
29
  * @returns The instructions, or null when the tag predates the slug.
20
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAWD;;;GAGG;AACH,MAAM,MAAM,WAAW,GACpB,aAAa,GACb,WAAW,GACX,OAAO,GACP,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,aAAa,GACb,eAAe,GACf,cAAc,GACd,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,GACT,SAAS,CAAC;AAEb;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAgBvC,CAAC;AA+LX;;;;GAIG;AACH,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAaf;AAOD,wBAAgB,iCAAiC,CAChD,eAAe,EAAE,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,eAAe,EAAE,MAAM,GACrB,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAyEnE;AA2FD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACzC,eAAe,SAAgB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAmHD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,IAAI,CAapE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,mkGA2EV,CAAC"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAWD;;;GAGG;AACH,MAAM,MAAM,WAAW,GACpB,aAAa,GACb,WAAW,GACX,OAAO,GACP,aAAa,GACb,WAAW,GACX,YAAY,GACZ,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,aAAa,GACb,eAAe,GACf,cAAc,GACd,SAAS,GACT,cAAc,GACd,aAAa,GACb,SAAS,GACT,SAAS,CAAC;AAEb;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAkBvC,CAAC;AAwMX;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAwBf;AAOD,wBAAgB,iCAAiC,CAChD,eAAe,EAAE,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,eAAe,EAAE,MAAM,GACrB,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAiFnE;AA2FD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACzC,eAAe,SAAgB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAmHD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,IAAI,CAapE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,mkGA2EV,CAAC"}