opencode-openai-codex-auth-multi 4.6.0 → 4.8.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.
- package/README.md +504 -504
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts.d.ts +3 -5
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +12 -5
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +4 -0
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/cli.d.ts.map +1 -1
- package/dist/lib/cli.js +4 -3
- package/dist/lib/cli.js.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +8 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +4 -4
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +4 -4
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/recovery/constants.d.ts +12 -0
- package/dist/lib/recovery/constants.d.ts.map +1 -0
- package/dist/lib/recovery/constants.js +25 -0
- package/dist/lib/recovery/constants.js.map +1 -0
- package/dist/lib/recovery/index.d.ts +12 -0
- package/dist/lib/recovery/index.d.ts.map +1 -0
- package/dist/lib/recovery/index.js +12 -0
- package/dist/lib/recovery/index.js.map +1 -0
- package/dist/lib/recovery/storage.d.ts +24 -0
- package/dist/lib/recovery/storage.d.ts.map +1 -0
- package/dist/lib/recovery/storage.js +354 -0
- package/dist/lib/recovery/storage.js.map +1 -0
- package/dist/lib/recovery/types.d.ts +116 -0
- package/dist/lib/recovery/types.d.ts.map +1 -0
- package/dist/lib/recovery/types.js +7 -0
- package/dist/lib/recovery/types.js.map +1 -0
- package/dist/lib/recovery.d.ts +31 -0
- package/dist/lib/recovery.d.ts.map +1 -0
- package/dist/lib/recovery.js +308 -0
- package/dist/lib/recovery.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts +1 -0
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +9 -2
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/types.d.ts +6 -27
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { createLogger } from "./logger.js";
|
|
2
|
+
import { readParts, findMessagesWithThinkingBlocks, findMessagesWithOrphanThinking, findMessageByIndexNeedingThinking, prependThinkingPart, stripThinkingParts, } from "./recovery/storage.js";
|
|
3
|
+
const RECOVERY_RESUME_TEXT = "[session recovered - continuing previous task]";
|
|
4
|
+
function getErrorMessage(error) {
|
|
5
|
+
if (!error)
|
|
6
|
+
return "";
|
|
7
|
+
if (typeof error === "string")
|
|
8
|
+
return error.toLowerCase();
|
|
9
|
+
const errorObj = error;
|
|
10
|
+
const paths = [
|
|
11
|
+
errorObj.data,
|
|
12
|
+
errorObj.error,
|
|
13
|
+
errorObj,
|
|
14
|
+
errorObj.data?.error,
|
|
15
|
+
];
|
|
16
|
+
for (const obj of paths) {
|
|
17
|
+
if (obj && typeof obj === "object") {
|
|
18
|
+
const msg = obj.message;
|
|
19
|
+
if (typeof msg === "string" && msg.length > 0) {
|
|
20
|
+
return msg.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
return JSON.stringify(error).toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return "";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function extractMessageIndex(error) {
|
|
32
|
+
const message = getErrorMessage(error);
|
|
33
|
+
const match = message.match(/messages\.(\d+)/);
|
|
34
|
+
if (!match || !match[1])
|
|
35
|
+
return null;
|
|
36
|
+
return parseInt(match[1], 10);
|
|
37
|
+
}
|
|
38
|
+
export function detectErrorType(error) {
|
|
39
|
+
const message = getErrorMessage(error);
|
|
40
|
+
if (message.includes("tool_use") && message.includes("tool_result")) {
|
|
41
|
+
return "tool_result_missing";
|
|
42
|
+
}
|
|
43
|
+
if (message.includes("thinking") &&
|
|
44
|
+
(message.includes("first block") ||
|
|
45
|
+
message.includes("must start with") ||
|
|
46
|
+
message.includes("preceeding") ||
|
|
47
|
+
(message.includes("expected") && message.includes("found")))) {
|
|
48
|
+
return "thinking_block_order";
|
|
49
|
+
}
|
|
50
|
+
if (message.includes("thinking is disabled") && message.includes("cannot contain")) {
|
|
51
|
+
return "thinking_disabled_violation";
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
export function isRecoverableError(error) {
|
|
56
|
+
return detectErrorType(error) !== null;
|
|
57
|
+
}
|
|
58
|
+
function extractToolUseIds(parts) {
|
|
59
|
+
return parts
|
|
60
|
+
.filter((p) => p.type === "tool_use" && !!p.id)
|
|
61
|
+
.map((p) => p.id);
|
|
62
|
+
}
|
|
63
|
+
async function recoverToolResultMissing(client, sessionID, failedMsg) {
|
|
64
|
+
let parts = failedMsg.parts || [];
|
|
65
|
+
if (parts.length === 0 && failedMsg.info?.id) {
|
|
66
|
+
const storedParts = readParts(failedMsg.info.id);
|
|
67
|
+
parts = storedParts.map((p) => ({
|
|
68
|
+
type: p.type === "tool" ? "tool_use" : p.type,
|
|
69
|
+
id: "callID" in p ? p.callID : p.id,
|
|
70
|
+
name: "tool" in p ? p.tool : undefined,
|
|
71
|
+
input: "state" in p ? p.state?.input : undefined,
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
const toolUseIds = extractToolUseIds(parts);
|
|
75
|
+
if (toolUseIds.length === 0) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const toolResultParts = toolUseIds.map((id) => ({
|
|
79
|
+
type: "tool_result",
|
|
80
|
+
tool_use_id: id,
|
|
81
|
+
content: "Operation cancelled by user (ESC pressed)",
|
|
82
|
+
}));
|
|
83
|
+
try {
|
|
84
|
+
await client.session.prompt({
|
|
85
|
+
path: { id: sessionID },
|
|
86
|
+
// @ts-expect-error - SDK types may not include tool_result parts
|
|
87
|
+
body: { parts: toolResultParts },
|
|
88
|
+
});
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function recoverThinkingBlockOrder(sessionID, _failedMsg, error) {
|
|
96
|
+
const targetIndex = extractMessageIndex(error);
|
|
97
|
+
if (targetIndex !== null) {
|
|
98
|
+
const targetMessageID = findMessageByIndexNeedingThinking(sessionID, targetIndex);
|
|
99
|
+
if (targetMessageID) {
|
|
100
|
+
return prependThinkingPart(sessionID, targetMessageID);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const orphanMessages = findMessagesWithOrphanThinking(sessionID);
|
|
104
|
+
if (orphanMessages.length === 0) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
let anySuccess = false;
|
|
108
|
+
for (const messageID of orphanMessages) {
|
|
109
|
+
if (prependThinkingPart(sessionID, messageID)) {
|
|
110
|
+
anySuccess = true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return anySuccess;
|
|
114
|
+
}
|
|
115
|
+
async function recoverThinkingDisabledViolation(sessionID, _failedMsg) {
|
|
116
|
+
const messagesWithThinking = findMessagesWithThinkingBlocks(sessionID);
|
|
117
|
+
if (messagesWithThinking.length === 0) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
let anySuccess = false;
|
|
121
|
+
for (const messageID of messagesWithThinking) {
|
|
122
|
+
if (stripThinkingParts(messageID)) {
|
|
123
|
+
anySuccess = true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return anySuccess;
|
|
127
|
+
}
|
|
128
|
+
function findLastUserMessage(messages) {
|
|
129
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
130
|
+
if (messages[i]?.info?.role === "user") {
|
|
131
|
+
return messages[i];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
function extractResumeConfig(userMessage, sessionID) {
|
|
137
|
+
return {
|
|
138
|
+
sessionID,
|
|
139
|
+
agent: userMessage?.info?.agent,
|
|
140
|
+
model: userMessage?.info?.model,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async function resumeSession(client, config, directory) {
|
|
144
|
+
try {
|
|
145
|
+
await client.session.prompt({
|
|
146
|
+
path: { id: config.sessionID },
|
|
147
|
+
body: {
|
|
148
|
+
parts: [{ type: "text", text: RECOVERY_RESUME_TEXT }],
|
|
149
|
+
agent: config.agent,
|
|
150
|
+
model: config.model,
|
|
151
|
+
},
|
|
152
|
+
query: { directory },
|
|
153
|
+
});
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const TOAST_TITLES = {
|
|
161
|
+
tool_result_missing: "Tool Crash Recovery",
|
|
162
|
+
thinking_block_order: "Thinking Block Recovery",
|
|
163
|
+
thinking_disabled_violation: "Thinking Strip Recovery",
|
|
164
|
+
};
|
|
165
|
+
const TOAST_MESSAGES = {
|
|
166
|
+
tool_result_missing: "Injecting cancelled tool results...",
|
|
167
|
+
thinking_block_order: "Fixing message structure...",
|
|
168
|
+
thinking_disabled_violation: "Stripping thinking blocks...",
|
|
169
|
+
};
|
|
170
|
+
export function getRecoveryToastContent(errorType) {
|
|
171
|
+
if (!errorType) {
|
|
172
|
+
return {
|
|
173
|
+
title: "Session Recovery",
|
|
174
|
+
message: "Attempting to recover session...",
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
title: TOAST_TITLES[errorType] || "Session Recovery",
|
|
179
|
+
message: TOAST_MESSAGES[errorType] || "Attempting to recover session...",
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export function getRecoverySuccessToast() {
|
|
183
|
+
return {
|
|
184
|
+
title: "Session Recovered",
|
|
185
|
+
message: "Continuing where you left off...",
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export function getRecoveryFailureToast() {
|
|
189
|
+
return {
|
|
190
|
+
title: "Recovery Failed",
|
|
191
|
+
message: "Please retry or start a new session.",
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
export function createSessionRecoveryHook(ctx, config) {
|
|
195
|
+
if (!config.sessionRecovery) {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
const { client, directory } = ctx;
|
|
199
|
+
const processingErrors = new Set();
|
|
200
|
+
let onAbortCallback = null;
|
|
201
|
+
let onRecoveryCompleteCallback = null;
|
|
202
|
+
const setOnAbortCallback = (callback) => {
|
|
203
|
+
onAbortCallback = callback;
|
|
204
|
+
};
|
|
205
|
+
const setOnRecoveryCompleteCallback = (callback) => {
|
|
206
|
+
onRecoveryCompleteCallback = callback;
|
|
207
|
+
};
|
|
208
|
+
const handleSessionRecovery = async (info) => {
|
|
209
|
+
if (!info || info.role !== "assistant" || !info.error)
|
|
210
|
+
return false;
|
|
211
|
+
const errorType = detectErrorType(info.error);
|
|
212
|
+
if (!errorType)
|
|
213
|
+
return false;
|
|
214
|
+
const sessionID = info.sessionID;
|
|
215
|
+
if (!sessionID)
|
|
216
|
+
return false;
|
|
217
|
+
let assistantMsgID = info.id;
|
|
218
|
+
const log = createLogger("session-recovery");
|
|
219
|
+
log.debug("Recovery attempt started", {
|
|
220
|
+
errorType,
|
|
221
|
+
sessionID,
|
|
222
|
+
providedMsgID: assistantMsgID ?? "none",
|
|
223
|
+
});
|
|
224
|
+
if (onAbortCallback) {
|
|
225
|
+
onAbortCallback(sessionID);
|
|
226
|
+
}
|
|
227
|
+
await client.session.abort({ path: { id: sessionID } }).catch(() => { });
|
|
228
|
+
const messagesResp = await client.session.messages({
|
|
229
|
+
path: { id: sessionID },
|
|
230
|
+
query: { directory },
|
|
231
|
+
});
|
|
232
|
+
const msgs = messagesResp.data;
|
|
233
|
+
if (!assistantMsgID && msgs && msgs.length > 0) {
|
|
234
|
+
for (let i = msgs.length - 1; i >= 0; i--) {
|
|
235
|
+
const m = msgs[i];
|
|
236
|
+
if (m && m.info?.role === "assistant" && m.info?.id) {
|
|
237
|
+
assistantMsgID = m.info.id;
|
|
238
|
+
log.debug("Found assistant message ID from session messages", {
|
|
239
|
+
msgID: assistantMsgID,
|
|
240
|
+
msgIndex: i,
|
|
241
|
+
});
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!assistantMsgID) {
|
|
247
|
+
log.debug("No assistant message ID found, cannot recover");
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (processingErrors.has(assistantMsgID))
|
|
251
|
+
return false;
|
|
252
|
+
processingErrors.add(assistantMsgID);
|
|
253
|
+
try {
|
|
254
|
+
const failedMsg = msgs?.find((m) => m.info?.id === assistantMsgID);
|
|
255
|
+
if (!failedMsg) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
const toastContent = getRecoveryToastContent(errorType);
|
|
259
|
+
await client.tui
|
|
260
|
+
.showToast({
|
|
261
|
+
body: {
|
|
262
|
+
title: toastContent.title,
|
|
263
|
+
message: toastContent.message,
|
|
264
|
+
variant: "warning",
|
|
265
|
+
},
|
|
266
|
+
})
|
|
267
|
+
.catch(() => { });
|
|
268
|
+
let success = false;
|
|
269
|
+
if (errorType === "tool_result_missing") {
|
|
270
|
+
success = await recoverToolResultMissing(client, sessionID, failedMsg);
|
|
271
|
+
}
|
|
272
|
+
else if (errorType === "thinking_block_order") {
|
|
273
|
+
success = await recoverThinkingBlockOrder(sessionID, failedMsg, info.error);
|
|
274
|
+
if (success && config.autoResume) {
|
|
275
|
+
const lastUser = findLastUserMessage(msgs ?? []);
|
|
276
|
+
const resumeConfig = extractResumeConfig(lastUser, sessionID);
|
|
277
|
+
await resumeSession(client, resumeConfig, directory);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else if (errorType === "thinking_disabled_violation") {
|
|
281
|
+
success = await recoverThinkingDisabledViolation(sessionID, failedMsg);
|
|
282
|
+
if (success && config.autoResume) {
|
|
283
|
+
const lastUser = findLastUserMessage(msgs ?? []);
|
|
284
|
+
const resumeConfig = extractResumeConfig(lastUser, sessionID);
|
|
285
|
+
await resumeSession(client, resumeConfig, directory);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return success;
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
log.error("Recovery failed", { error: String(err) });
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
finally {
|
|
295
|
+
processingErrors.delete(assistantMsgID);
|
|
296
|
+
if (sessionID && onRecoveryCompleteCallback) {
|
|
297
|
+
onRecoveryCompleteCallback(sessionID);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
return {
|
|
302
|
+
handleSessionRecovery,
|
|
303
|
+
isRecoverableError,
|
|
304
|
+
setOnAbortCallback,
|
|
305
|
+
setOnRecoveryCompleteCallback,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../lib/recovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,SAAS,EACT,8BAA8B,EAC9B,8BAA8B,EAC9B,iCAAiC,EACjC,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAE9E,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAE1D,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,MAAM,KAAK,GAAG;QACZ,QAAQ,CAAC,IAAI;QACb,QAAQ,CAAC,KAAK;QACd,QAAQ;QACP,QAAQ,CAAC,IAAgC,EAAE,KAAK;KAClD,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,GAAG,GAAI,GAA+B,CAAC,OAAO,CAAC;YACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,IACE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9D,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnF,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACzC,CAAC;AASD,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAkC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAY,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,MAAoB,EACpB,SAAiB,EACjB,SAAsB;IAEtB,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7C,EAAE,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAE,CAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5D,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAE,CAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC7D,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAE,CAAqD,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS;SACtG,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,aAAsB;QAC5B,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,2CAA2C;KACrD,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACvB,iEAAiE;YACjE,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;SACjC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,SAAiB,EACjB,UAAuB,EACvB,KAAc;IAEd,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,eAAe,GAAG,iCAAiC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAEjE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACvC,IAAI,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,gCAAgC,CAC7C,SAAiB,EACjB,UAAuB;IAEvB,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAEvE,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAuB;IAClD,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAoC,EAAE,SAAiB;IAClF,OAAO;QACL,SAAS;QACT,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK;QAC/B,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK;KAChC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,MAAoB,EACpB,MAAoB,EACpB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE;YAC9B,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;gBACrD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;YACD,KAAK,EAAE,EAAE,SAAS,EAAE;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAA2B;IAC3C,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,yBAAyB;IAC/C,2BAA2B,EAAE,yBAAyB;CACvD,CAAC;AAEF,MAAM,cAAc,GAA2B;IAC7C,mBAAmB,EAAE,qCAAqC;IAC1D,oBAAoB,EAAE,6BAA6B;IACnD,2BAA2B,EAAE,8BAA8B;CAC5D,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,SAA4B;IAIlE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,kCAAkC;SAC5C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,kBAAkB;QACpD,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,kCAAkC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IAIrC,OAAO;QACL,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,kCAAkC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IAIrC,OAAO;QACL,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,sCAAsC;KAChD,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,yBAAyB,CACvC,GAA2B,EAC3B,MAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,eAAe,GAAyC,IAAI,CAAC;IACjE,IAAI,0BAA0B,GAAyC,IAAI,CAAC;IAE5E,MAAM,kBAAkB,GAAG,CAAC,QAAqC,EAAQ,EAAE;QACzE,eAAe,GAAG,QAAQ,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,6BAA6B,GAAG,CAAC,QAAqC,EAAQ,EAAE;QACpF,0BAA0B,GAAG,QAAQ,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,IAAiB,EAAoB,EAAE;QAC1E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEpE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,IAAI,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAE7C,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE;YACpC,SAAS;YACT,SAAS;YACT,aAAa,EAAE,cAAc,IAAI,MAAM;SACxC,CAAC,CAAC;QAEH,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAExE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjD,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACvB,KAAK,EAAE,EAAE,SAAS,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,IAAI,GAAI,YAAyC,CAAC,IAAI,CAAC;QAE7D,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;oBACpD,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE;wBAC5D,KAAK,EAAE,cAAc;wBACrB,QAAQ,EAAE,CAAC;qBACZ,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,cAAc,CAAC,CAAC;YACnE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,MAAM,CAAC,GAAG;iBACb,SAAS,CAAC;gBACT,IAAI,EAAE;oBACJ,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,OAAO,EAAE,SAAS;iBACnB;aACF,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnB,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,SAAS,KAAK,qBAAqB,EAAE,CAAC;gBACxC,OAAO,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;gBAChD,OAAO,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5E,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;oBACjD,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC9D,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,KAAK,6BAA6B,EAAE,CAAC;gBACvD,OAAO,GAAG,MAAM,gCAAgC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACvE,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;oBACjD,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC9D,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAExC,IAAI,SAAS,IAAI,0BAA0B,EAAE,CAAC;gBAC5C,0BAA0B,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,qBAAqB;QACrB,kBAAkB;QAClB,kBAAkB;QAClB,6BAA6B;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-helpers.d.ts","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW3D,MAAM,WAAW,aAAa;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-helpers.d.ts","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW3D,MAAM,WAAW,aAAa;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,SAAI,GAAG,OAAO,CAMlE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,WAAW,EAAE,IAAI,EACjB,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC7C,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,EACtB,SAAS,UAAO,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CA0DtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAkBT;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
|
|
@@ -33,7 +33,6 @@ export async function refreshAndUpdateToken(currentAuth, client) {
|
|
|
33
33
|
if (refreshResult.type === "failed") {
|
|
34
34
|
throw new Error(ERROR_MESSAGES.TOKEN_REFRESH_FAILED);
|
|
35
35
|
}
|
|
36
|
-
// Update stored credentials
|
|
37
36
|
await client.auth.set({
|
|
38
37
|
path: { id: "openai" },
|
|
39
38
|
body: {
|
|
@@ -41,6 +40,7 @@ export async function refreshAndUpdateToken(currentAuth, client) {
|
|
|
41
40
|
access: refreshResult.access,
|
|
42
41
|
refresh: refreshResult.refresh,
|
|
43
42
|
expires: refreshResult.expires,
|
|
43
|
+
multiAccount: true,
|
|
44
44
|
},
|
|
45
45
|
});
|
|
46
46
|
// Update current auth reference if it's OAuth type
|
|
@@ -166,11 +166,18 @@ export async function handleErrorResponse(response) {
|
|
|
166
166
|
const mapped = mapUsageLimit404WithBody(response, bodyText);
|
|
167
167
|
const finalResponse = mapped ?? response;
|
|
168
168
|
const rateLimit = extractRateLimitInfoFromBody(finalResponse, bodyText);
|
|
169
|
+
let errorBody;
|
|
170
|
+
try {
|
|
171
|
+
errorBody = bodyText ? JSON.parse(bodyText) : undefined;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
errorBody = { message: bodyText };
|
|
175
|
+
}
|
|
169
176
|
logRequest(LOG_STAGES.ERROR_RESPONSE, {
|
|
170
177
|
status: finalResponse.status,
|
|
171
178
|
statusText: finalResponse.statusText,
|
|
172
179
|
});
|
|
173
|
-
return { response: finalResponse, rateLimit };
|
|
180
|
+
return { response: finalResponse, rateLimit, errorBody };
|
|
174
181
|
}
|
|
175
182
|
/**
|
|
176
183
|
* Handles successful responses from the Codex API
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-helpers.js","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EACC,WAAW,EACX,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,UAAU,GACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-helpers.js","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,38 +1,13 @@
|
|
|
1
1
|
import type { Auth, Provider, Model } from "@opencode-ai/sdk";
|
|
2
|
-
/**
|
|
3
|
-
* Plugin configuration from ~/.opencode/openai-codex-auth-config.json
|
|
4
|
-
*/
|
|
5
2
|
export interface PluginConfig {
|
|
6
|
-
/**
|
|
7
|
-
* Enable CODEX_MODE (Codex-OpenCode bridge prompt instead of tool remap)
|
|
8
|
-
* @default true
|
|
9
|
-
*/
|
|
10
3
|
codexMode?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* When all accounts are blocked, optionally wait and retry.
|
|
13
|
-
* @default false
|
|
14
|
-
*/
|
|
15
4
|
retryAllAccountsRateLimited?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Maximum wait time (ms) for the wait-and-retry path.
|
|
18
|
-
* @default 30000
|
|
19
|
-
*/
|
|
20
5
|
retryAllAccountsMaxWaitMs?: number;
|
|
21
|
-
/**
|
|
22
|
-
* Maximum additional retry cycles after the initial attempt.
|
|
23
|
-
* @default 1
|
|
24
|
-
*/
|
|
25
6
|
retryAllAccountsMaxRetries?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Refresh OAuth access token if it expires within this skew window (ms).
|
|
28
|
-
* @default 60000
|
|
29
|
-
*/
|
|
30
7
|
tokenRefreshSkewMs?: number;
|
|
31
|
-
/**
|
|
32
|
-
* Debounce rate-limit toast notifications (ms).
|
|
33
|
-
* @default 60000
|
|
34
|
-
*/
|
|
35
8
|
rateLimitToastDebounceMs?: number;
|
|
9
|
+
sessionRecovery?: boolean;
|
|
10
|
+
autoResume?: boolean;
|
|
36
11
|
}
|
|
37
12
|
/**
|
|
38
13
|
* User configuration structure from opencode.json
|
|
@@ -99,6 +74,10 @@ export interface TokenSuccess {
|
|
|
99
74
|
access: string;
|
|
100
75
|
refresh: string;
|
|
101
76
|
expires: number;
|
|
77
|
+
/** ID token from OAuth response - contains email and other identity claims */
|
|
78
|
+
idToken?: string;
|
|
79
|
+
/** Flag to identify this auth as multi-account (vs built-in single account) */
|
|
80
|
+
multiAccount?: boolean;
|
|
102
81
|
}
|
|
103
82
|
/**
|
|
104
83
|
* Token failure reason codes
|