opencode-openai-codex-auth-multi 4.6.0 → 4.7.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 (37) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +14 -3
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/cli.d.ts.map +1 -1
  5. package/dist/lib/cli.js +4 -3
  6. package/dist/lib/cli.js.map +1 -1
  7. package/dist/lib/config.d.ts +2 -0
  8. package/dist/lib/config.d.ts.map +1 -1
  9. package/dist/lib/config.js +8 -0
  10. package/dist/lib/config.js.map +1 -1
  11. package/dist/lib/recovery/constants.d.ts +12 -0
  12. package/dist/lib/recovery/constants.d.ts.map +1 -0
  13. package/dist/lib/recovery/constants.js +25 -0
  14. package/dist/lib/recovery/constants.js.map +1 -0
  15. package/dist/lib/recovery/index.d.ts +12 -0
  16. package/dist/lib/recovery/index.d.ts.map +1 -0
  17. package/dist/lib/recovery/index.js +12 -0
  18. package/dist/lib/recovery/index.js.map +1 -0
  19. package/dist/lib/recovery/storage.d.ts +24 -0
  20. package/dist/lib/recovery/storage.d.ts.map +1 -0
  21. package/dist/lib/recovery/storage.js +354 -0
  22. package/dist/lib/recovery/storage.js.map +1 -0
  23. package/dist/lib/recovery/types.d.ts +116 -0
  24. package/dist/lib/recovery/types.d.ts.map +1 -0
  25. package/dist/lib/recovery/types.js +7 -0
  26. package/dist/lib/recovery/types.js.map +1 -0
  27. package/dist/lib/recovery.d.ts +31 -0
  28. package/dist/lib/recovery.d.ts.map +1 -0
  29. package/dist/lib/recovery.js +308 -0
  30. package/dist/lib/recovery.js.map +1 -0
  31. package/dist/lib/request/fetch-helpers.d.ts +1 -0
  32. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  33. package/dist/lib/request/fetch-helpers.js +8 -1
  34. package/dist/lib/request/fetch-helpers.js.map +1 -1
  35. package/dist/lib/types.d.ts +2 -27
  36. package/dist/lib/types.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,354 @@
1
+ /**
2
+ * Storage utilities for reading OpenCode's session data.
3
+ *
4
+ * Based on opencode-antigravity-auth recovery module.
5
+ */
6
+ import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
7
+ import { join } from "node:path";
8
+ import { MESSAGE_STORAGE, PART_STORAGE, THINKING_TYPES, META_TYPES } from "./constants.js";
9
+ // =============================================================================
10
+ // ID Generation
11
+ // =============================================================================
12
+ export function generatePartId() {
13
+ const timestamp = Date.now().toString(16);
14
+ const random = Math.random().toString(36).substring(2, 10);
15
+ return `prt_${timestamp}${random}`;
16
+ }
17
+ // =============================================================================
18
+ // Directory Helpers
19
+ // =============================================================================
20
+ export function getMessageDir(sessionID) {
21
+ if (!existsSync(MESSAGE_STORAGE))
22
+ return "";
23
+ const directPath = join(MESSAGE_STORAGE, sessionID);
24
+ if (existsSync(directPath)) {
25
+ return directPath;
26
+ }
27
+ // Search in subdirectories
28
+ try {
29
+ for (const dir of readdirSync(MESSAGE_STORAGE)) {
30
+ const sessionPath = join(MESSAGE_STORAGE, dir, sessionID);
31
+ if (existsSync(sessionPath)) {
32
+ return sessionPath;
33
+ }
34
+ }
35
+ }
36
+ catch {
37
+ // Ignore read errors
38
+ }
39
+ return "";
40
+ }
41
+ // =============================================================================
42
+ // Message Reading
43
+ // =============================================================================
44
+ export function readMessages(sessionID) {
45
+ const messageDir = getMessageDir(sessionID);
46
+ if (!messageDir || !existsSync(messageDir))
47
+ return [];
48
+ const messages = [];
49
+ try {
50
+ for (const file of readdirSync(messageDir)) {
51
+ if (!file.endsWith(".json"))
52
+ continue;
53
+ try {
54
+ const content = readFileSync(join(messageDir, file), "utf-8");
55
+ messages.push(JSON.parse(content));
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ }
61
+ }
62
+ catch {
63
+ return [];
64
+ }
65
+ return messages.sort((a, b) => {
66
+ const aTime = a.time?.created ?? 0;
67
+ const bTime = b.time?.created ?? 0;
68
+ if (aTime !== bTime)
69
+ return aTime - bTime;
70
+ return a.id.localeCompare(b.id);
71
+ });
72
+ }
73
+ // =============================================================================
74
+ // Part Reading
75
+ // =============================================================================
76
+ export function readParts(messageID) {
77
+ const partDir = join(PART_STORAGE, messageID);
78
+ if (!existsSync(partDir))
79
+ return [];
80
+ const parts = [];
81
+ try {
82
+ for (const file of readdirSync(partDir)) {
83
+ if (!file.endsWith(".json"))
84
+ continue;
85
+ try {
86
+ const content = readFileSync(join(partDir, file), "utf-8");
87
+ parts.push(JSON.parse(content));
88
+ }
89
+ catch {
90
+ continue;
91
+ }
92
+ }
93
+ }
94
+ catch {
95
+ return [];
96
+ }
97
+ return parts;
98
+ }
99
+ // =============================================================================
100
+ // Content Helpers
101
+ // =============================================================================
102
+ export function hasContent(part) {
103
+ if (THINKING_TYPES.has(part.type))
104
+ return false;
105
+ if (META_TYPES.has(part.type))
106
+ return false;
107
+ if (part.type === "text") {
108
+ const textPart = part;
109
+ return !!(textPart.text?.trim());
110
+ }
111
+ if (part.type === "tool" || part.type === "tool_use") {
112
+ return true;
113
+ }
114
+ if (part.type === "tool_result") {
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ export function messageHasContent(messageID) {
120
+ const parts = readParts(messageID);
121
+ return parts.some(hasContent);
122
+ }
123
+ // =============================================================================
124
+ // Part Injection (for recovery)
125
+ // =============================================================================
126
+ export function injectTextPart(sessionID, messageID, text) {
127
+ const partDir = join(PART_STORAGE, messageID);
128
+ try {
129
+ if (!existsSync(partDir)) {
130
+ mkdirSync(partDir, { recursive: true });
131
+ }
132
+ const partId = generatePartId();
133
+ const part = {
134
+ id: partId,
135
+ sessionID,
136
+ messageID,
137
+ type: "text",
138
+ text,
139
+ synthetic: true,
140
+ };
141
+ writeFileSync(join(partDir, `${partId}.json`), JSON.stringify(part, null, 2));
142
+ return true;
143
+ }
144
+ catch {
145
+ return false;
146
+ }
147
+ }
148
+ // =============================================================================
149
+ // Thinking Block Recovery
150
+ // =============================================================================
151
+ export function findMessagesWithThinkingBlocks(sessionID) {
152
+ const messages = readMessages(sessionID);
153
+ const result = [];
154
+ for (const msg of messages) {
155
+ if (msg.role !== "assistant")
156
+ continue;
157
+ const parts = readParts(msg.id);
158
+ const hasThinking = parts.some((p) => THINKING_TYPES.has(p.type));
159
+ if (hasThinking) {
160
+ result.push(msg.id);
161
+ }
162
+ }
163
+ return result;
164
+ }
165
+ export function findMessagesWithThinkingOnly(sessionID) {
166
+ const messages = readMessages(sessionID);
167
+ const result = [];
168
+ for (const msg of messages) {
169
+ if (msg.role !== "assistant")
170
+ continue;
171
+ const parts = readParts(msg.id);
172
+ if (parts.length === 0)
173
+ continue;
174
+ const hasThinking = parts.some((p) => THINKING_TYPES.has(p.type));
175
+ const hasTextContent = parts.some(hasContent);
176
+ // Has thinking but no text content = orphan thinking
177
+ if (hasThinking && !hasTextContent) {
178
+ result.push(msg.id);
179
+ }
180
+ }
181
+ return result;
182
+ }
183
+ export function findMessagesWithOrphanThinking(sessionID) {
184
+ const messages = readMessages(sessionID);
185
+ const result = [];
186
+ for (let i = 0; i < messages.length; i++) {
187
+ const msg = messages[i];
188
+ if (!msg || msg.role !== "assistant")
189
+ continue;
190
+ const parts = readParts(msg.id);
191
+ if (parts.length === 0)
192
+ continue;
193
+ const sortedParts = [...parts].sort((a, b) => a.id.localeCompare(b.id));
194
+ const firstPart = sortedParts[0];
195
+ if (!firstPart)
196
+ continue;
197
+ const firstIsThinking = THINKING_TYPES.has(firstPart.type);
198
+ // If first part is not thinking, it's orphan
199
+ if (!firstIsThinking) {
200
+ result.push(msg.id);
201
+ }
202
+ }
203
+ return result;
204
+ }
205
+ export function prependThinkingPart(sessionID, messageID) {
206
+ const partDir = join(PART_STORAGE, messageID);
207
+ try {
208
+ if (!existsSync(partDir)) {
209
+ mkdirSync(partDir, { recursive: true });
210
+ }
211
+ const partId = "prt_0000000000_thinking";
212
+ const part = {
213
+ id: partId,
214
+ sessionID,
215
+ messageID,
216
+ type: "thinking",
217
+ thinking: "",
218
+ synthetic: true,
219
+ };
220
+ writeFileSync(join(partDir, `${partId}.json`), JSON.stringify(part, null, 2));
221
+ return true;
222
+ }
223
+ catch {
224
+ return false;
225
+ }
226
+ }
227
+ export function stripThinkingParts(messageID) {
228
+ const partDir = join(PART_STORAGE, messageID);
229
+ if (!existsSync(partDir))
230
+ return false;
231
+ let anyRemoved = false;
232
+ try {
233
+ for (const file of readdirSync(partDir)) {
234
+ if (!file.endsWith(".json"))
235
+ continue;
236
+ try {
237
+ const filePath = join(partDir, file);
238
+ const content = readFileSync(filePath, "utf-8");
239
+ const part = JSON.parse(content);
240
+ if (THINKING_TYPES.has(part.type)) {
241
+ unlinkSync(filePath);
242
+ anyRemoved = true;
243
+ }
244
+ }
245
+ catch {
246
+ continue;
247
+ }
248
+ }
249
+ }
250
+ catch {
251
+ return false;
252
+ }
253
+ return anyRemoved;
254
+ }
255
+ // =============================================================================
256
+ // Empty Message Recovery
257
+ // =============================================================================
258
+ export function findEmptyMessages(sessionID) {
259
+ const messages = readMessages(sessionID);
260
+ const emptyIds = [];
261
+ for (const msg of messages) {
262
+ if (!messageHasContent(msg.id)) {
263
+ emptyIds.push(msg.id);
264
+ }
265
+ }
266
+ return emptyIds;
267
+ }
268
+ export function findEmptyMessageByIndex(sessionID, targetIndex) {
269
+ const messages = readMessages(sessionID);
270
+ // API index may differ from storage index due to system messages
271
+ const indicesToTry = [targetIndex, targetIndex - 1, targetIndex - 2];
272
+ for (const idx of indicesToTry) {
273
+ if (idx < 0 || idx >= messages.length)
274
+ continue;
275
+ const targetMsg = messages[idx];
276
+ if (!targetMsg)
277
+ continue;
278
+ if (!messageHasContent(targetMsg.id)) {
279
+ return targetMsg.id;
280
+ }
281
+ }
282
+ return null;
283
+ }
284
+ export function findMessageByIndexNeedingThinking(sessionID, targetIndex) {
285
+ const messages = readMessages(sessionID);
286
+ if (targetIndex < 0 || targetIndex >= messages.length)
287
+ return null;
288
+ const targetMsg = messages[targetIndex];
289
+ if (!targetMsg || targetMsg.role !== "assistant")
290
+ return null;
291
+ const parts = readParts(targetMsg.id);
292
+ if (parts.length === 0)
293
+ return null;
294
+ const sortedParts = [...parts].sort((a, b) => a.id.localeCompare(b.id));
295
+ const firstPart = sortedParts[0];
296
+ if (!firstPart)
297
+ return null;
298
+ const firstIsThinking = THINKING_TYPES.has(firstPart.type);
299
+ if (!firstIsThinking) {
300
+ return targetMsg.id;
301
+ }
302
+ return null;
303
+ }
304
+ export function replaceEmptyTextParts(messageID, replacementText) {
305
+ const partDir = join(PART_STORAGE, messageID);
306
+ if (!existsSync(partDir))
307
+ return false;
308
+ let anyReplaced = false;
309
+ try {
310
+ for (const file of readdirSync(partDir)) {
311
+ if (!file.endsWith(".json"))
312
+ continue;
313
+ try {
314
+ const filePath = join(partDir, file);
315
+ const content = readFileSync(filePath, "utf-8");
316
+ const part = JSON.parse(content);
317
+ if (part.type === "text") {
318
+ const textPart = part;
319
+ if (!textPart.text?.trim()) {
320
+ textPart.text = replacementText;
321
+ textPart.synthetic = true;
322
+ writeFileSync(filePath, JSON.stringify(textPart, null, 2));
323
+ anyReplaced = true;
324
+ }
325
+ }
326
+ }
327
+ catch {
328
+ continue;
329
+ }
330
+ }
331
+ }
332
+ catch {
333
+ return false;
334
+ }
335
+ return anyReplaced;
336
+ }
337
+ export function findMessagesWithEmptyTextParts(sessionID) {
338
+ const messages = readMessages(sessionID);
339
+ const result = [];
340
+ for (const msg of messages) {
341
+ const parts = readParts(msg.id);
342
+ const hasEmptyTextPart = parts.some((p) => {
343
+ if (p.type !== "text")
344
+ return false;
345
+ const textPart = p;
346
+ return !textPart.text?.trim();
347
+ });
348
+ if (hasEmptyTextPart) {
349
+ result.push(msg.id);
350
+ }
351
+ }
352
+ return result;
353
+ }
354
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../lib/recovery/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Types for session recovery.
3
+ *
4
+ * Based on opencode-antigravity-auth recovery module.
5
+ */
6
+ export type ThinkingPartType = "thinking" | "redacted_thinking" | "reasoning";
7
+ export type MetaPartType = "step-start" | "step-finish";
8
+ export type ContentPartType = "text" | "tool" | "tool_use" | "tool_result";
9
+ export interface StoredMessageMeta {
10
+ id: string;
11
+ sessionID: string;
12
+ role: "user" | "assistant";
13
+ parentID?: string;
14
+ time?: {
15
+ created: number;
16
+ completed?: number;
17
+ };
18
+ error?: unknown;
19
+ }
20
+ export interface StoredTextPart {
21
+ id: string;
22
+ sessionID: string;
23
+ messageID: string;
24
+ type: "text";
25
+ text: string;
26
+ synthetic?: boolean;
27
+ ignored?: boolean;
28
+ }
29
+ export interface StoredToolPart {
30
+ id: string;
31
+ sessionID: string;
32
+ messageID: string;
33
+ type: "tool";
34
+ callID: string;
35
+ tool: string;
36
+ state: {
37
+ status: "pending" | "running" | "completed" | "error";
38
+ input: Record<string, unknown>;
39
+ output?: string;
40
+ error?: string;
41
+ };
42
+ }
43
+ export interface StoredReasoningPart {
44
+ id: string;
45
+ sessionID: string;
46
+ messageID: string;
47
+ type: "reasoning";
48
+ text: string;
49
+ }
50
+ export interface StoredStepPart {
51
+ id: string;
52
+ sessionID: string;
53
+ messageID: string;
54
+ type: "step-start" | "step-finish";
55
+ }
56
+ export type StoredPart = StoredTextPart | StoredToolPart | StoredReasoningPart | StoredStepPart | {
57
+ id: string;
58
+ sessionID: string;
59
+ messageID: string;
60
+ type: string;
61
+ [key: string]: unknown;
62
+ };
63
+ export interface MessagePart {
64
+ type: string;
65
+ id?: string;
66
+ text?: string;
67
+ thinking?: string;
68
+ name?: string;
69
+ input?: Record<string, unknown>;
70
+ callID?: string;
71
+ }
72
+ export interface MessageData {
73
+ info?: {
74
+ id?: string;
75
+ role?: string;
76
+ sessionID?: string;
77
+ parentID?: string;
78
+ error?: unknown;
79
+ agent?: string;
80
+ model?: {
81
+ providerID: string;
82
+ modelID: string;
83
+ };
84
+ system?: string;
85
+ tools?: Record<string, boolean>;
86
+ };
87
+ parts?: MessagePart[];
88
+ }
89
+ export interface MessageInfo {
90
+ id?: string;
91
+ role?: string;
92
+ sessionID?: string;
93
+ parentID?: string;
94
+ error?: unknown;
95
+ }
96
+ export interface ResumeConfig {
97
+ sessionID: string;
98
+ agent?: string;
99
+ model?: {
100
+ providerID: string;
101
+ modelID: string;
102
+ };
103
+ }
104
+ export type RecoveryErrorType = "tool_result_missing" | "thinking_block_order" | "thinking_disabled_violation" | null;
105
+ export interface ToolUsePart {
106
+ type: "tool_use";
107
+ id: string;
108
+ name: string;
109
+ input: Record<string, unknown>;
110
+ }
111
+ export interface ToolResultPart {
112
+ type: "tool_result";
113
+ tool_use_id: string;
114
+ content: string;
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/recovery/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Types for session recovery.
3
+ *
4
+ * Based on opencode-antigravity-auth recovery module.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/recovery/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,31 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { PluginConfig } from "./types.js";
3
+ import type { MessageInfo, MessageData, RecoveryErrorType, ResumeConfig } from "./recovery/types.js";
4
+ export type { RecoveryErrorType, MessageInfo, MessageData, ResumeConfig };
5
+ type PluginClient = PluginInput["client"];
6
+ export declare function detectErrorType(error: unknown): RecoveryErrorType;
7
+ export declare function isRecoverableError(error: unknown): boolean;
8
+ export declare function getRecoveryToastContent(errorType: RecoveryErrorType): {
9
+ title: string;
10
+ message: string;
11
+ };
12
+ export declare function getRecoverySuccessToast(): {
13
+ title: string;
14
+ message: string;
15
+ };
16
+ export declare function getRecoveryFailureToast(): {
17
+ title: string;
18
+ message: string;
19
+ };
20
+ export interface SessionRecoveryHook {
21
+ handleSessionRecovery: (info: MessageInfo) => Promise<boolean>;
22
+ isRecoverableError: (error: unknown) => boolean;
23
+ setOnAbortCallback: (callback: (sessionID: string) => void) => void;
24
+ setOnRecoveryCompleteCallback: (callback: (sessionID: string) => void) => void;
25
+ }
26
+ export interface SessionRecoveryContext {
27
+ client: PluginClient;
28
+ directory: string;
29
+ }
30
+ export declare function createSessionRecoveryHook(ctx: SessionRecoveryContext, config: PluginConfig): SessionRecoveryHook | null;
31
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../lib/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,iBAAiB,EACjB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAE1E,KAAK,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAuC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAsBjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D;AA2JD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAWA;AAED,wBAAgB,uBAAuB,IAAI;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAKA;AAED,wBAAgB,uBAAuB,IAAI;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAKA;AAED,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IACpE,6BAA6B,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;CAChF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,sBAAsB,EAC3B,MAAM,EAAE,YAAY,GACnB,mBAAmB,GAAG,IAAI,CA6H5B"}