@oratis/lisa 0.11.1 → 0.14.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.
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +20 -1
- package/dist/agent.js.map +1 -1
- package/dist/agents/pty.d.ts.map +1 -1
- package/dist/agents/pty.js +13 -2
- package/dist/agents/pty.js.map +1 -1
- package/dist/autonomy/state.d.ts +14 -0
- package/dist/autonomy/state.d.ts.map +1 -0
- package/dist/autonomy/state.js +54 -0
- package/dist/autonomy/state.js.map +1 -0
- package/dist/cli/mail.d.ts +2 -0
- package/dist/cli/mail.d.ts.map +1 -0
- package/dist/cli/mail.js +209 -0
- package/dist/cli/mail.js.map +1 -0
- package/dist/cli/pair.d.ts +15 -0
- package/dist/cli/pair.d.ts.map +1 -0
- package/dist/cli/pair.js +152 -0
- package/dist/cli/pair.js.map +1 -0
- package/dist/cli.js +22 -14
- package/dist/cli.js.map +1 -1
- package/dist/consent/store.d.ts +2 -2
- package/dist/consent/store.d.ts.map +1 -1
- package/dist/consent/store.js +3 -2
- package/dist/consent/store.js.map +1 -1
- package/dist/edition.d.ts +24 -0
- package/dist/edition.d.ts.map +1 -0
- package/dist/edition.js +19 -0
- package/dist/edition.js.map +1 -0
- package/dist/heartbeat/runner.d.ts.map +1 -1
- package/dist/heartbeat/runner.js +8 -0
- package/dist/heartbeat/runner.js.map +1 -1
- package/dist/idle/runner.d.ts.map +1 -1
- package/dist/idle/runner.js +7 -0
- package/dist/idle/runner.js.map +1 -1
- package/dist/mail/accounts.d.ts +20 -0
- package/dist/mail/accounts.d.ts.map +1 -0
- package/dist/mail/accounts.js +113 -0
- package/dist/mail/accounts.js.map +1 -0
- package/dist/mail/alerts.d.ts +29 -0
- package/dist/mail/alerts.d.ts.map +1 -0
- package/dist/mail/alerts.js +40 -0
- package/dist/mail/alerts.js.map +1 -0
- package/dist/mail/classify.d.ts +26 -0
- package/dist/mail/classify.d.ts.map +1 -0
- package/dist/mail/classify.js +191 -0
- package/dist/mail/classify.js.map +1 -0
- package/dist/mail/connectors/gmail.d.ts +55 -0
- package/dist/mail/connectors/gmail.d.ts.map +1 -0
- package/dist/mail/connectors/gmail.js +87 -0
- package/dist/mail/connectors/gmail.js.map +1 -0
- package/dist/mail/connectors/imap.d.ts +13 -0
- package/dist/mail/connectors/imap.d.ts.map +1 -0
- package/dist/mail/connectors/imap.js +136 -0
- package/dist/mail/connectors/imap.js.map +1 -0
- package/dist/mail/digest.d.ts +21 -0
- package/dist/mail/digest.d.ts.map +1 -0
- package/dist/mail/digest.js +89 -0
- package/dist/mail/digest.js.map +1 -0
- package/dist/mail/google-oauth.d.ts +50 -0
- package/dist/mail/google-oauth.d.ts.map +1 -0
- package/dist/mail/google-oauth.js +74 -0
- package/dist/mail/google-oauth.js.map +1 -0
- package/dist/mail/hosts.d.ts +3 -0
- package/dist/mail/hosts.d.ts.map +1 -0
- package/dist/mail/hosts.js +19 -0
- package/dist/mail/hosts.js.map +1 -0
- package/dist/mail/scheduler.d.ts +9 -0
- package/dist/mail/scheduler.d.ts.map +1 -0
- package/dist/mail/scheduler.js +21 -0
- package/dist/mail/scheduler.js.map +1 -0
- package/dist/mail/service.d.ts +32 -0
- package/dist/mail/service.d.ts.map +1 -0
- package/dist/mail/service.js +129 -0
- package/dist/mail/service.js.map +1 -0
- package/dist/mail/store.d.ts +7 -0
- package/dist/mail/store.d.ts.map +1 -0
- package/dist/mail/store.js +58 -0
- package/dist/mail/store.js.map +1 -0
- package/dist/mail/types.d.ts +114 -0
- package/dist/mail/types.d.ts.map +1 -0
- package/dist/mail/types.js +26 -0
- package/dist/mail/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +43 -21
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +67 -64
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +77 -71
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/registry.d.ts +10 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +26 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/stream-retry.d.ts +37 -0
- package/dist/providers/stream-retry.d.ts.map +1 -0
- package/dist/providers/stream-retry.js +92 -0
- package/dist/providers/stream-retry.js.map +1 -0
- package/dist/providers/types.d.ts +3 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/subagent.d.ts +2 -0
- package/dist/subagent.d.ts.map +1 -1
- package/dist/subagent.js +1 -0
- package/dist/subagent.js.map +1 -1
- package/dist/web/cloudAuth.d.ts +57 -0
- package/dist/web/cloudAuth.d.ts.map +1 -0
- package/dist/web/cloudAuth.js +139 -0
- package/dist/web/cloudAuth.js.map +1 -0
- package/dist/web/island.d.ts.map +1 -1
- package/dist/web/island.js +1 -0
- package/dist/web/island.js.map +1 -1
- package/dist/web/lisa-client.d.ts +1 -1
- package/dist/web/lisa-client.d.ts.map +1 -1
- package/dist/web/lisa-client.js +703 -40
- package/dist/web/lisa-client.js.map +1 -1
- package/dist/web/lisa-css.d.ts +1 -1
- package/dist/web/lisa-css.d.ts.map +1 -1
- package/dist/web/lisa-css.js +568 -43
- package/dist/web/lisa-css.js.map +1 -1
- package/dist/web/lisa-html.d.ts +1 -1
- package/dist/web/lisa-html.d.ts.map +1 -1
- package/dist/web/lisa-html.js +71 -21
- package/dist/web/lisa-html.js.map +1 -1
- package/dist/web/pairing.d.ts +37 -0
- package/dist/web/pairing.d.ts.map +1 -0
- package/dist/web/pairing.js +79 -0
- package/dist/web/pairing.js.map +1 -0
- package/dist/web/push.d.ts +91 -0
- package/dist/web/push.d.ts.map +1 -1
- package/dist/web/push.js +250 -9
- package/dist/web/push.js.map +1 -1
- package/dist/web/qr-svg.d.ts +11 -0
- package/dist/web/qr-svg.d.ts.map +1 -0
- package/dist/web/qr-svg.js +41 -0
- package/dist/web/qr-svg.js.map +1 -0
- package/dist/web/server.d.ts +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +378 -14
- package/dist/web/server.js.map +1 -1
- package/package.json +4 -1
package/dist/providers/gemini.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withStreamRetry } from "./stream-retry.js";
|
|
1
2
|
export class GeminiProvider {
|
|
2
3
|
name = "gemini";
|
|
3
4
|
// Lazily constructed on first runTurn so that merely importing the provider
|
|
@@ -36,74 +37,76 @@ export class GeminiProvider {
|
|
|
36
37
|
},
|
|
37
38
|
]
|
|
38
39
|
: undefined;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
40
|
+
// Per-attempt state lives inside the retry closure so it resets cleanly on
|
|
41
|
+
// a transient empty-stream retry (see withStreamRetry).
|
|
42
|
+
return withStreamRetry({ signal: opts.signal }, async (markEmitted) => {
|
|
43
|
+
const stream = await client.models.generateContentStream({
|
|
44
|
+
model: opts.model,
|
|
45
|
+
contents,
|
|
46
|
+
config: {
|
|
47
|
+
// Aborts the in-flight request (the SDK then throws an abort error).
|
|
48
|
+
abortSignal: opts.signal,
|
|
49
|
+
systemInstruction: opts.systemPrompt,
|
|
50
|
+
tools,
|
|
51
|
+
maxOutputTokens: opts.maxTokens ?? 16_000,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
let text = "";
|
|
55
|
+
const toolCalls = [];
|
|
56
|
+
let inputTokens = 0;
|
|
57
|
+
let outputTokens = 0;
|
|
58
|
+
for await (const chunk of stream) {
|
|
59
|
+
const cand = chunk.candidates?.[0];
|
|
60
|
+
const parts = cand?.content?.parts ?? [];
|
|
61
|
+
for (const p of parts) {
|
|
62
|
+
if (typeof p.text === "string" && p.text.length > 0) {
|
|
63
|
+
markEmitted();
|
|
64
|
+
text += p.text;
|
|
65
|
+
opts.handlers?.onTextDelta?.(p.text);
|
|
66
|
+
}
|
|
67
|
+
if (p.functionCall) {
|
|
68
|
+
toolCalls.push({
|
|
69
|
+
id: p.functionCall.id ?? `call_${p.functionCall.name}_${Math.random().toString(36).slice(2)}`,
|
|
70
|
+
name: p.functionCall.name ?? "",
|
|
71
|
+
args: (p.functionCall.args ?? {}),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
64
74
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
});
|
|
75
|
+
// usageMetadata is on the final chunk
|
|
76
|
+
const usage = chunk.usageMetadata;
|
|
77
|
+
if (usage) {
|
|
78
|
+
inputTokens = usage.promptTokenCount ?? 0;
|
|
79
|
+
outputTokens = usage.candidatesTokenCount ?? 0;
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
inputTokens = usage.promptTokenCount ?? 0;
|
|
77
|
-
outputTokens = usage.candidatesTokenCount ?? 0;
|
|
82
|
+
const content = [];
|
|
83
|
+
if (text) {
|
|
84
|
+
content.push({ type: "text", text, citations: null });
|
|
78
85
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
cacheReadTokens: 0,
|
|
104
|
-
cacheWriteTokens: 0,
|
|
105
|
-
},
|
|
106
|
-
};
|
|
86
|
+
for (const tc of toolCalls) {
|
|
87
|
+
content.push({
|
|
88
|
+
type: "tool_use",
|
|
89
|
+
id: tc.id,
|
|
90
|
+
name: tc.name,
|
|
91
|
+
input: tc.args,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Gemini finish reasons: STOP, MAX_TOKENS, SAFETY, RECITATION, OTHER, BLOCKLIST,
|
|
95
|
+
// PROHIBITED_CONTENT, SPII, MALFORMED_FUNCTION_CALL, IMAGE_SAFETY.
|
|
96
|
+
// Tool calls are signaled by the presence of functionCall parts, NOT a
|
|
97
|
+
// distinct finishReason — so we infer from toolCalls.length.
|
|
98
|
+
const stopReason = toolCalls.length > 0 ? "tool_use" : "end_turn";
|
|
99
|
+
return {
|
|
100
|
+
content,
|
|
101
|
+
stopReason,
|
|
102
|
+
usage: {
|
|
103
|
+
inputTokens,
|
|
104
|
+
outputTokens,
|
|
105
|
+
cacheReadTokens: 0,
|
|
106
|
+
cacheWriteTokens: 0,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
});
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;IAQtD,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAmG9D"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import OpenAI from "openai";
|
|
2
2
|
import { proxyAwareFetch } from "../proxy-bootstrap.js";
|
|
3
|
+
import { withStreamRetry } from "./stream-retry.js";
|
|
3
4
|
export class OpenAIProvider {
|
|
4
5
|
name = "openai";
|
|
5
6
|
client;
|
|
@@ -20,82 +21,87 @@ export class OpenAIProvider {
|
|
|
20
21
|
parameters: t.inputSchema,
|
|
21
22
|
},
|
|
22
23
|
}));
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
24
|
+
// Per-attempt state lives inside the retry closure so it resets cleanly on
|
|
25
|
+
// a transient empty-stream retry (see withStreamRetry).
|
|
26
|
+
return withStreamRetry({ signal: opts.signal }, async (markEmitted) => {
|
|
27
|
+
const stream = await this.client.chat.completions.create({
|
|
28
|
+
model: opts.model,
|
|
29
|
+
messages,
|
|
30
|
+
tools: tools.length ? tools : undefined,
|
|
31
|
+
max_tokens: opts.maxTokens ?? 16_000,
|
|
32
|
+
stream: true,
|
|
33
|
+
stream_options: { include_usage: true },
|
|
34
|
+
},
|
|
35
|
+
// Per-request options; `signal` aborts the in-flight HTTP stream
|
|
36
|
+
// (the SDK then throws APIUserAbortError).
|
|
37
|
+
{ signal: opts.signal });
|
|
38
|
+
let text = "";
|
|
39
|
+
const toolCalls = new Map();
|
|
40
|
+
let finish = "stop";
|
|
41
|
+
let inputTokens = 0;
|
|
42
|
+
let outputTokens = 0;
|
|
43
|
+
let cacheReadTokens = 0;
|
|
44
|
+
for await (const chunk of stream) {
|
|
45
|
+
const choice = chunk.choices[0];
|
|
46
|
+
if (choice?.delta?.content) {
|
|
47
|
+
markEmitted();
|
|
48
|
+
text += choice.delta.content;
|
|
49
|
+
opts.handlers?.onTextDelta?.(choice.delta.content);
|
|
50
|
+
}
|
|
51
|
+
if (choice?.delta?.tool_calls) {
|
|
52
|
+
for (const tc of choice.delta.tool_calls) {
|
|
53
|
+
const idx = tc.index;
|
|
54
|
+
if (!toolCalls.has(idx)) {
|
|
55
|
+
toolCalls.set(idx, { id: "", name: "", args: "" });
|
|
56
|
+
}
|
|
57
|
+
const acc = toolCalls.get(idx);
|
|
58
|
+
if (tc.id)
|
|
59
|
+
acc.id = tc.id;
|
|
60
|
+
if (tc.function?.name)
|
|
61
|
+
acc.name = tc.function.name;
|
|
62
|
+
if (tc.function?.arguments)
|
|
63
|
+
acc.args += tc.function.arguments;
|
|
51
64
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
}
|
|
66
|
+
if (choice?.finish_reason)
|
|
67
|
+
finish = choice.finish_reason;
|
|
68
|
+
if (chunk.usage) {
|
|
69
|
+
inputTokens = chunk.usage.prompt_tokens ?? 0;
|
|
70
|
+
outputTokens = chunk.usage.completion_tokens ?? 0;
|
|
71
|
+
const details = chunk.usage.prompt_tokens_details;
|
|
72
|
+
cacheReadTokens = details?.cached_tokens ?? 0;
|
|
59
73
|
}
|
|
60
74
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
inputTokens = chunk.usage.prompt_tokens ?? 0;
|
|
65
|
-
outputTokens = chunk.usage.completion_tokens ?? 0;
|
|
66
|
-
const details = chunk.usage.prompt_tokens_details;
|
|
67
|
-
cacheReadTokens = details?.cached_tokens ?? 0;
|
|
75
|
+
const content = [];
|
|
76
|
+
if (text) {
|
|
77
|
+
content.push({ type: "text", text, citations: null });
|
|
68
78
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
for (const tc of toolCalls.values()) {
|
|
80
|
+
let parsed = {};
|
|
81
|
+
try {
|
|
82
|
+
parsed = tc.args ? JSON.parse(tc.args) : {};
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
parsed = { _raw: tc.args };
|
|
86
|
+
}
|
|
87
|
+
content.push({
|
|
88
|
+
type: "tool_use",
|
|
89
|
+
id: tc.id || `call_${tc.name}_${Math.random().toString(36).slice(2)}`,
|
|
90
|
+
name: tc.name,
|
|
91
|
+
input: parsed,
|
|
92
|
+
});
|
|
81
93
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
inputTokens,
|
|
94
|
-
outputTokens,
|
|
95
|
-
cacheReadTokens,
|
|
96
|
-
cacheWriteTokens: 0,
|
|
97
|
-
},
|
|
98
|
-
};
|
|
94
|
+
return {
|
|
95
|
+
content,
|
|
96
|
+
stopReason: finish === "tool_calls" ? "tool_use" : "end_turn",
|
|
97
|
+
usage: {
|
|
98
|
+
inputTokens,
|
|
99
|
+
outputTokens,
|
|
100
|
+
cacheReadTokens,
|
|
101
|
+
cacheWriteTokens: 0,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
});
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
107
|
function anthropicToOpenAI(systemPrompt, messages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,16 @@ export declare function resolveAnthropicAuth(env?: Record<string, string | undef
|
|
|
38
38
|
apiKey?: string;
|
|
39
39
|
authToken?: string;
|
|
40
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Does `env` carry credentials for the provider that MODEL routes to? Mirrors
|
|
43
|
+
* resolveProvider's auth resolution exactly, so the CLI key-gate matches the key
|
|
44
|
+
* the provider will actually read — e.g. a `glm-*` model needs ZHIPU_API_KEY (its
|
|
45
|
+
* preset), not OPENAI_API_KEY. Used by the birth + run gates. Pure.
|
|
46
|
+
*
|
|
47
|
+
* (detectProvider consults process.env for the LISA_BASE_URL / LISA_PROVIDER
|
|
48
|
+
* routing rules; the per-key lookups below read the passed `env`.)
|
|
49
|
+
*/
|
|
50
|
+
export declare function hasCredentialsForModel(model: string, env?: Record<string, string | undefined>): boolean;
|
|
41
51
|
export declare function makeProvider(name: ProviderName): Provider;
|
|
42
52
|
/**
|
|
43
53
|
* Resolve the provider for a model, wrapping it in a FallbackProvider when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,UAAU,kBAAkB;IAC1B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAqFrD,CAAC;AAeF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAqB1D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAIzC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAkBzD;AA6CD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAED,8BAA8B;AAC9B,wBAAgB,uBAAuB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAsBtF"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,UAAU,kBAAkB;IAC1B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAqFrD,CAAC;AAeF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAqB1D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAIzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAeT;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAkBzD;AA6CD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAED,8BAA8B;AAC9B,wBAAgB,uBAAuB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAsBtF"}
|
|
@@ -139,6 +139,32 @@ export function resolveAnthropicAuth(env = process.env) {
|
|
|
139
139
|
return { authToken };
|
|
140
140
|
return { apiKey: env.ANTHROPIC_API_KEY };
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Does `env` carry credentials for the provider that MODEL routes to? Mirrors
|
|
144
|
+
* resolveProvider's auth resolution exactly, so the CLI key-gate matches the key
|
|
145
|
+
* the provider will actually read — e.g. a `glm-*` model needs ZHIPU_API_KEY (its
|
|
146
|
+
* preset), not OPENAI_API_KEY. Used by the birth + run gates. Pure.
|
|
147
|
+
*
|
|
148
|
+
* (detectProvider consults process.env for the LISA_BASE_URL / LISA_PROVIDER
|
|
149
|
+
* routing rules; the per-key lookups below read the passed `env`.)
|
|
150
|
+
*/
|
|
151
|
+
export function hasCredentialsForModel(model, env = process.env) {
|
|
152
|
+
const provider = detectProvider(model);
|
|
153
|
+
if (provider === "anthropic") {
|
|
154
|
+
return !!(env.ANTHROPIC_AUTH_TOKEN?.trim() || env.ANTHROPIC_API_KEY);
|
|
155
|
+
}
|
|
156
|
+
if (provider === "gemini") {
|
|
157
|
+
return !!(env.GEMINI_API_KEY ?? env.GOOGLE_API_KEY);
|
|
158
|
+
}
|
|
159
|
+
// openai / openai-compatible — same precedence as resolveProvider.
|
|
160
|
+
const preset = findPreset(model);
|
|
161
|
+
if (preset)
|
|
162
|
+
return !!env[preset.apiKeyEnv];
|
|
163
|
+
if (env.LISA_BASE_URL) {
|
|
164
|
+
return !!(env.LISA_API_KEY ?? env.TAKO_KEY ?? env.OPENAI_API_KEY);
|
|
165
|
+
}
|
|
166
|
+
return !!env.OPENAI_API_KEY;
|
|
167
|
+
}
|
|
142
168
|
export function makeProvider(name) {
|
|
143
169
|
switch (name) {
|
|
144
170
|
case "anthropic":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface StreamRetryOpts {
|
|
2
|
+
/** Max number of *additional* attempts after the first (default 2 → 3 total). */
|
|
3
|
+
maxRetries?: number;
|
|
4
|
+
/** Linear backoff base; attempt N waits baseDelayMs * N (default 400). */
|
|
5
|
+
baseDelayMs?: number;
|
|
6
|
+
/** Abort signal for the turn; a triggered signal stops retrying. */
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* True for transient streaming failures that are safe to retry *as long as no
|
|
11
|
+
* output has been emitted yet*. Chiefly the Anthropic SDK's "request ended
|
|
12
|
+
* without sending any chunks" — a 200 response whose SSE body closed before any
|
|
13
|
+
* event arrived — plus connection resets / premature closes commonly caused by
|
|
14
|
+
* HTTP proxies (Clash, one-api relays) tearing down an idle CONNECT tunnel
|
|
15
|
+
* during a long time-to-first-byte on a large request.
|
|
16
|
+
*
|
|
17
|
+
* Crucially never matches a user abort: APIUserAbortError / AbortError mean the
|
|
18
|
+
* turn was cancelled on purpose and must surface, not retry.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isRetryableStreamError(err: unknown): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Run a streaming attempt with bounded retries for transient empty-stream
|
|
23
|
+
* failures. The SDK's own retries don't cover these: the error is thrown while
|
|
24
|
+
* iterating the stream, *after* the HTTP request already returned 200, so it
|
|
25
|
+
* escapes the SDK's request-level retry and reaches the user as a hard error.
|
|
26
|
+
*
|
|
27
|
+
* The attempt receives `markEmitted`, which it MUST call the moment it forwards
|
|
28
|
+
* the first text/thinking delta. Once called, a later failure is surfaced
|
|
29
|
+
* rather than retried — we can't replay already-streamed output without
|
|
30
|
+
* duplicating it in the UI. The reported failure ("…any chunks") emits nothing,
|
|
31
|
+
* so it always stays retryable.
|
|
32
|
+
*
|
|
33
|
+
* Per-attempt accumulator state must live *inside* `attempt` so it resets on
|
|
34
|
+
* each retry.
|
|
35
|
+
*/
|
|
36
|
+
export declare function withStreamRetry<T>(opts: StreamRetryOpts, attempt: (markEmitted: () => void) => Promise<T>): Promise<T>;
|
|
37
|
+
//# sourceMappingURL=stream-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-retry.d.ts","sourceRoot":"","sources":["../../src/providers/stream-retry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgC5D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,CAAC,CAAC,CAiCZ"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
2
|
+
/**
|
|
3
|
+
* True for transient streaming failures that are safe to retry *as long as no
|
|
4
|
+
* output has been emitted yet*. Chiefly the Anthropic SDK's "request ended
|
|
5
|
+
* without sending any chunks" — a 200 response whose SSE body closed before any
|
|
6
|
+
* event arrived — plus connection resets / premature closes commonly caused by
|
|
7
|
+
* HTTP proxies (Clash, one-api relays) tearing down an idle CONNECT tunnel
|
|
8
|
+
* during a long time-to-first-byte on a large request.
|
|
9
|
+
*
|
|
10
|
+
* Crucially never matches a user abort: APIUserAbortError / AbortError mean the
|
|
11
|
+
* turn was cancelled on purpose and must surface, not retry.
|
|
12
|
+
*/
|
|
13
|
+
export function isRetryableStreamError(err) {
|
|
14
|
+
const e = err;
|
|
15
|
+
const name = e?.name;
|
|
16
|
+
if (name === "APIUserAbortError" || name === "AbortError")
|
|
17
|
+
return false;
|
|
18
|
+
if (name === "APIConnectionError" || name === "APIConnectionTimeoutError") {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
// undici surfaces socket failures as `TypeError: terminated` / `fetch failed`
|
|
22
|
+
// with the real reason on `.cause.code`. Match those codes precisely rather
|
|
23
|
+
// than substring-matching "terminated", which could also appear in a
|
|
24
|
+
// legitimate API error message and trigger a spurious re-send.
|
|
25
|
+
const code = e?.cause?.code;
|
|
26
|
+
if (code === "ECONNRESET" ||
|
|
27
|
+
code === "ECONNREFUSED" ||
|
|
28
|
+
code === "EPIPE" ||
|
|
29
|
+
code === "ETIMEDOUT" ||
|
|
30
|
+
code === "ENOTFOUND" ||
|
|
31
|
+
code === "UND_ERR_SOCKET") {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const msg = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
35
|
+
return (msg.includes("without sending any chunks") ||
|
|
36
|
+
msg.includes("premature close") ||
|
|
37
|
+
msg.includes("socket hang up") ||
|
|
38
|
+
msg.includes("econnreset") ||
|
|
39
|
+
msg === "terminated" ||
|
|
40
|
+
msg.includes("network error") ||
|
|
41
|
+
msg.includes("fetch failed"));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Run a streaming attempt with bounded retries for transient empty-stream
|
|
45
|
+
* failures. The SDK's own retries don't cover these: the error is thrown while
|
|
46
|
+
* iterating the stream, *after* the HTTP request already returned 200, so it
|
|
47
|
+
* escapes the SDK's request-level retry and reaches the user as a hard error.
|
|
48
|
+
*
|
|
49
|
+
* The attempt receives `markEmitted`, which it MUST call the moment it forwards
|
|
50
|
+
* the first text/thinking delta. Once called, a later failure is surfaced
|
|
51
|
+
* rather than retried — we can't replay already-streamed output without
|
|
52
|
+
* duplicating it in the UI. The reported failure ("…any chunks") emits nothing,
|
|
53
|
+
* so it always stays retryable.
|
|
54
|
+
*
|
|
55
|
+
* Per-attempt accumulator state must live *inside* `attempt` so it resets on
|
|
56
|
+
* each retry.
|
|
57
|
+
*/
|
|
58
|
+
export async function withStreamRetry(opts, attempt) {
|
|
59
|
+
const maxRetries = opts.maxRetries ?? 2;
|
|
60
|
+
const baseDelayMs = opts.baseDelayMs ?? 400;
|
|
61
|
+
// Each retry reopens a fresh upstream request, so the prompt's input tokens
|
|
62
|
+
// are re-billed per attempt — maxRetries (default 2) bounds that to ≤3×. We
|
|
63
|
+
// only retry when nothing was emitted, so no output work is ever wasted.
|
|
64
|
+
let lastErr;
|
|
65
|
+
for (let i = 0; i <= maxRetries; i++) {
|
|
66
|
+
let emitted = false;
|
|
67
|
+
try {
|
|
68
|
+
return await attempt(() => {
|
|
69
|
+
emitted = true;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
lastErr = err;
|
|
74
|
+
if (i === maxRetries ||
|
|
75
|
+
emitted ||
|
|
76
|
+
opts.signal?.aborted ||
|
|
77
|
+
!isRetryableStreamError(err)) {
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
await delay(baseDelayMs * (i + 1), undefined, { signal: opts.signal });
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Signal aborted during backoff → stop retrying, surface the error.
|
|
85
|
+
throw err;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Unreachable: the final iteration (i === maxRetries) always throws above.
|
|
90
|
+
throw lastErr;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=stream-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-retry.js","sourceRoot":"","sources":["../../src/providers/stream-retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAW3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,CAAC,GAAG,GAA0D,CAAC;IACrE,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC;IACrB,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,2BAA2B,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,8EAA8E;IAC9E,4EAA4E;IAC5E,qEAAqE;IACrE,+DAA+D;IAC/D,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;IAC5B,IACE,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,cAAc;QACvB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,gBAAgB,EACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,KAAK,YAAY;QACpB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAqB,EACrB,OAAgD;IAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;IAC5C,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE;gBACxB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,GAAG,CAAC;YACd,IACE,CAAC,KAAK,UAAU;gBAChB,OAAO;gBACP,IAAI,CAAC,MAAM,EAAE,OAAO;gBACpB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAC5B,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;gBACpE,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IACD,2EAA2E;IAC3E,MAAM,OAAO,CAAC;AAChB,CAAC"}
|