aura-code 0.6.3 → 0.10.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 +47 -164
- package/dist/agent/affect.d.ts +13 -0
- package/dist/agent/affect.js +34 -0
- package/dist/agent/affect.js.map +1 -0
- package/dist/agent/compactor.d.ts +27 -4
- package/dist/agent/compactor.js +185 -54
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/confess.d.ts +35 -0
- package/dist/agent/confess.js +296 -0
- package/dist/agent/confess.js.map +1 -0
- package/dist/agent/context.d.ts +0 -4
- package/dist/agent/context.js +0 -38
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/domain-expertise.d.ts +22 -0
- package/dist/agent/domain-expertise.js +110 -0
- package/dist/agent/domain-expertise.js.map +1 -0
- package/dist/agent/executive-queue.d.ts +26 -0
- package/dist/agent/executive-queue.js +50 -0
- package/dist/agent/executive-queue.js.map +1 -0
- package/dist/agent/generational-flush.d.ts +28 -0
- package/dist/agent/generational-flush.js +48 -0
- package/dist/agent/generational-flush.js.map +1 -0
- package/dist/agent/loop-profile.d.ts +50 -0
- package/dist/agent/loop-profile.js +88 -0
- package/dist/agent/loop-profile.js.map +1 -0
- package/dist/agent/loop.d.ts +14 -5
- package/dist/agent/loop.js +167 -39
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-consolidate.d.ts +14 -0
- package/dist/agent/memory-consolidate.js +141 -0
- package/dist/agent/memory-consolidate.js.map +1 -0
- package/dist/agent/mixture.d.ts +33 -0
- package/dist/agent/mixture.js +138 -0
- package/dist/agent/mixture.js.map +1 -0
- package/dist/agent/spawner.js +2 -2
- package/dist/agent/spawner.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +50 -22
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/unified-memory.d.ts +15 -0
- package/dist/agent/unified-memory.js +164 -0
- package/dist/agent/unified-memory.js.map +1 -0
- package/dist/checkpoints/engine.d.ts +44 -0
- package/dist/checkpoints/engine.js +324 -0
- package/dist/checkpoints/engine.js.map +1 -0
- package/dist/cli/command-palette.d.ts +26 -0
- package/dist/cli/command-palette.js +133 -0
- package/dist/cli/command-palette.js.map +1 -0
- package/dist/cli/context-health.d.ts +51 -0
- package/dist/cli/context-health.js +187 -0
- package/dist/cli/context-health.js.map +1 -0
- package/dist/cli/diamond.d.ts +67 -0
- package/dist/cli/diamond.js +222 -12
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/dic.d.ts +2 -0
- package/dist/cli/dic.js +106 -0
- package/dist/cli/dic.js.map +1 -0
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +114 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/display.d.ts +18 -4
- package/dist/cli/display.js +74 -151
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/help-data.d.ts +7 -0
- package/dist/cli/help-data.js +80 -0
- package/dist/cli/help-data.js.map +1 -0
- package/dist/cli/index.js +1002 -852
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts +5 -0
- package/dist/cli/markdown.js +128 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/model-select.d.ts +39 -0
- package/dist/cli/model-select.js +65 -0
- package/dist/cli/model-select.js.map +1 -0
- package/dist/cli/tui.d.ts +34 -0
- package/dist/cli/tui.js +1176 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -17
- package/dist/config/defaults.js +25 -46
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +2 -6
- package/dist/config/project-config.js +2 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/doctor/checks.d.ts +18 -0
- package/dist/doctor/checks.js +524 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/index.d.ts +4 -0
- package/dist/doctor/index.js +229 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/repair.d.ts +19 -0
- package/dist/doctor/repair.js +126 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/types.d.ts +38 -0
- package/dist/doctor/types.js +10 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/dream/dream.d.ts +79 -59
- package/dist/dream/dream.js +324 -144
- package/dist/dream/dream.js.map +1 -1
- package/dist/dream/episode.d.ts +17 -0
- package/dist/dream/episode.js +116 -0
- package/dist/dream/episode.js.map +1 -0
- package/dist/kanban/engine.d.ts +26 -0
- package/dist/kanban/engine.js +208 -0
- package/dist/kanban/engine.js.map +1 -0
- package/dist/kanban/types.d.ts +19 -0
- package/dist/kanban/types.js +9 -1
- package/dist/kanban/types.js.map +1 -1
- package/dist/machina/render-html.js +4 -2
- package/dist/machina/render-html.js.map +1 -1
- package/dist/machina/render-terminal.js +11 -4
- package/dist/machina/render-terminal.js.map +1 -1
- package/dist/machina/repair.d.ts +23 -0
- package/dist/machina/repair.js +98 -0
- package/dist/machina/repair.js.map +1 -0
- package/dist/machina/spec.js +12 -12
- package/dist/machina/spec.js.map +1 -1
- package/dist/machina/verify.d.ts +13 -1
- package/dist/machina/verify.js +12 -2
- package/dist/machina/verify.js.map +1 -1
- package/dist/mining/extract.d.ts +34 -0
- package/dist/mining/extract.js +229 -0
- package/dist/mining/extract.js.map +1 -0
- package/dist/mining/refine.d.ts +28 -0
- package/dist/mining/refine.js +256 -0
- package/dist/mining/refine.js.map +1 -0
- package/dist/perception/extractor.js +5 -3
- package/dist/perception/extractor.js.map +1 -1
- package/dist/perception/graph-store.d.ts +0 -11
- package/dist/perception/graph-store.js +0 -33
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +1 -2
- package/dist/perception/index.js.map +1 -1
- package/dist/plugins/commands.d.ts +38 -0
- package/dist/plugins/commands.js +134 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/frontmatter.d.ts +14 -0
- package/dist/plugins/frontmatter.js +78 -0
- package/dist/plugins/frontmatter.js.map +1 -0
- package/dist/plugins/hooks.d.ts +12 -0
- package/dist/plugins/hooks.js +148 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/loader.d.ts +7 -0
- package/dist/plugins/loader.js +255 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/market.d.ts +23 -0
- package/dist/plugins/market.js +281 -0
- package/dist/plugins/market.js.map +1 -0
- package/dist/plugins/types.d.ts +90 -0
- package/dist/plugins/types.js +20 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
- package/dist/providers/anthropic-oauth-draft.js +414 -0
- package/dist/providers/anthropic-oauth-draft.js.map +1 -0
- package/dist/providers/anthropic.d.ts +4 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +43 -19
- package/dist/providers/factory.js +183 -129
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +9 -22
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/live-models.d.ts +23 -0
- package/dist/providers/live-models.js +145 -0
- package/dist/providers/live-models.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +1 -12
- package/dist/providers/openai-compatible.js +71 -108
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/resilient-factory.js +1 -1
- package/dist/providers/resilient-factory.js.map +1 -1
- package/dist/repl/queue.d.ts +22 -0
- package/dist/repl/queue.js +165 -0
- package/dist/repl/queue.js.map +1 -0
- package/dist/repl/side-channel.d.ts +23 -0
- package/dist/repl/side-channel.js +63 -0
- package/dist/repl/side-channel.js.map +1 -0
- package/dist/research/council.d.ts +2 -0
- package/dist/research/council.js +29 -4
- package/dist/research/council.js.map +1 -1
- package/dist/ruby/alternator.d.ts +11 -30
- package/dist/ruby/alternator.js +59 -38
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/episode-capture.d.ts +0 -10
- package/dist/ruby/episode-capture.js +0 -33
- package/dist/ruby/episode-capture.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/path-jail.d.ts +17 -0
- package/dist/safety/path-jail.js +100 -0
- package/dist/safety/path-jail.js.map +1 -0
- package/dist/safety/permissions.d.ts +12 -21
- package/dist/safety/permissions.js +81 -216
- package/dist/safety/permissions.js.map +1 -1
- package/dist/safety/ssrf.d.ts +29 -0
- package/dist/safety/ssrf.js +185 -0
- package/dist/safety/ssrf.js.map +1 -0
- package/dist/server/index.js +64 -10
- package/dist/server/index.js.map +1 -1
- package/dist/setup/first-run.d.ts +0 -24
- package/dist/setup/first-run.js +10 -344
- package/dist/setup/first-run.js.map +1 -1
- package/dist/setup/key-store.d.ts +12 -0
- package/dist/setup/key-store.js +108 -0
- package/dist/setup/key-store.js.map +1 -0
- package/dist/setup/provider-registry.js +31 -18
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.d.ts +7 -0
- package/dist/setup/provider-test.js +73 -10
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/provider-wizard.d.ts +4 -1
- package/dist/setup/provider-wizard.js +92 -26
- package/dist/setup/provider-wizard.js.map +1 -1
- package/dist/setup/xiaomi.d.ts +1 -1
- package/dist/setup/xiaomi.js +3 -3
- package/dist/setup/xiaomi.js.map +1 -1
- package/dist/tools/browser.js +14 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/clipboard.js +7 -1
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/dictate.d.ts +60 -0
- package/dist/tools/dictate.js +983 -0
- package/dist/tools/dictate.js.map +1 -0
- package/dist/tools/dictate_patched.js +1057 -0
- package/dist/tools/edit-file.js +10 -2
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/http-request.js +14 -4
- package/dist/tools/http-request.js.map +1 -1
- package/dist/tools/image-read.js +34 -2
- package/dist/tools/image-read.js.map +1 -1
- package/dist/tools/index.d.ts +16 -1
- package/dist/tools/index.js +59 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.js +12 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/read-file.js +10 -14
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-audio-policy.d.ts +30 -0
- package/dist/tools/telegram-audio-policy.js +49 -0
- package/dist/tools/telegram-audio-policy.js.map +1 -0
- package/dist/tools/telegram-bot.js +1136 -537
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +18 -5
- package/dist/tools/telegram-voice.js +54 -12
- package/dist/tools/telegram-voice.js.map +1 -1
- package/dist/tools/telegram.d.ts +3 -3
- package/dist/tools/telegram.js +5 -84
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/tools.d.ts +2 -14
- package/dist/tools/tools.js +79 -144
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/web-fetch.js +39 -7
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +0 -20
- package/dist/tools/web-search.js +40 -137
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +1 -15
- package/dist/util/errors.js.map +1 -1
- package/dist/util/json-repair.d.ts +11 -0
- package/dist/util/json-repair.js +31 -0
- package/dist/util/json-repair.js.map +1 -0
- package/dist/util/rate-limiter.js +2 -8
- package/dist/util/rate-limiter.js.map +1 -1
- package/dist/viz/index.js +793 -792
- package/dist/viz/index.js.map +1 -1
- package/package.json +12 -32
package/dist/providers/google.js
CHANGED
|
@@ -11,7 +11,7 @@ class GoogleProvider {
|
|
|
11
11
|
maxTokens;
|
|
12
12
|
constructor(config) {
|
|
13
13
|
this.model = config.model;
|
|
14
|
-
this.maxTokens = config.maxTokens ??
|
|
14
|
+
this.maxTokens = config.maxTokens ?? 8192;
|
|
15
15
|
this.client = new generative_ai_1.GoogleGenerativeAI(config.apiKey ?? (0, env_js_1.getApiKey)('GOOGLE_API_KEY', 'GEMINI_API_KEY') ?? '');
|
|
16
16
|
}
|
|
17
17
|
async complete(system, history, tools) {
|
|
@@ -75,10 +75,8 @@ function toGoogleTool(t) {
|
|
|
75
75
|
function toGoogleHistory(history) {
|
|
76
76
|
const contents = [];
|
|
77
77
|
for (const msg of history) {
|
|
78
|
-
let newContent = null;
|
|
79
78
|
if (msg.role === 'user') {
|
|
80
|
-
|
|
81
|
-
newContent = { role: 'user', parts: [{ text }] };
|
|
79
|
+
contents.push({ role: 'user', parts: [{ text: msg.content }] });
|
|
82
80
|
}
|
|
83
81
|
else if (msg.role === 'assistant') {
|
|
84
82
|
const parts = [];
|
|
@@ -87,26 +85,15 @@ function toGoogleHistory(history) {
|
|
|
87
85
|
for (const tc of msg.toolCalls ?? []) {
|
|
88
86
|
parts.push({ functionCall: { name: tc.name, args: tc.input } });
|
|
89
87
|
}
|
|
90
|
-
|
|
91
|
-
parts.push({ text: '(empty)' });
|
|
92
|
-
newContent = { role: 'model', parts };
|
|
88
|
+
contents.push({ role: 'model', parts });
|
|
93
89
|
}
|
|
94
90
|
else if (msg.role === 'tool_result') {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
if (newContent) {
|
|
103
|
-
const last = contents[contents.length - 1];
|
|
104
|
-
if (last && last.role === newContent.role) {
|
|
105
|
-
last.parts.push(...newContent.parts);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
contents.push(newContent);
|
|
109
|
-
}
|
|
91
|
+
contents.push({
|
|
92
|
+
role: 'user',
|
|
93
|
+
parts: msg.results.map(r => ({
|
|
94
|
+
functionResponse: { name: r.name, response: { result: r.content } },
|
|
95
|
+
})),
|
|
96
|
+
});
|
|
110
97
|
}
|
|
111
98
|
}
|
|
112
99
|
return { contents };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":";;;AAAA,yDAAgG;AAChG,2CAA2C;AAM3C,MAAa,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAC;IAChB,aAAa,GAAG,IAAI,CAAC;IACrB,KAAK,CAAS;IAEN,MAAM,CAAqB;IAC3B,SAAS,CAAS;IAE1B,YAAY,MAAsB;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ModelEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
provider: string;
|
|
5
|
+
speed: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Synchronous accessor for whatever refreshLiveModels() last fetched.
|
|
9
|
+
* Empty array until the first refresh completes — getAllModels() in
|
|
10
|
+
* factory.ts falls back to the static KNOWN_MODELS list in that case.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getLiveModels(): ModelEntry[];
|
|
13
|
+
/**
|
|
14
|
+
* Fetch live model lists from every provider with a configured API key,
|
|
15
|
+
* merge into the module cache. Best-effort: a provider with no key, a
|
|
16
|
+
* network failure, or a non-200 response contributes nothing for that
|
|
17
|
+
* provider — getAllModels() falls back to static entries in that case.
|
|
18
|
+
* Never throws.
|
|
19
|
+
*
|
|
20
|
+
* Call once at startup (fire-and-forget, see index.ts). Safe to call
|
|
21
|
+
* again later to refresh (e.g. a future `:models refresh` REPL command).
|
|
22
|
+
*/
|
|
23
|
+
export declare function refreshLiveModels(openRouterLimit?: number): Promise<void>;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLiveModels = getLiveModels;
|
|
4
|
+
exports.refreshLiveModels = refreshLiveModels;
|
|
5
|
+
const env_js_1 = require("../util/env.js");
|
|
6
|
+
let liveModelsCache = [];
|
|
7
|
+
/**
|
|
8
|
+
* Synchronous accessor for whatever refreshLiveModels() last fetched.
|
|
9
|
+
* Empty array until the first refresh completes — getAllModels() in
|
|
10
|
+
* factory.ts falls back to the static KNOWN_MODELS list in that case.
|
|
11
|
+
*/
|
|
12
|
+
function getLiveModels() {
|
|
13
|
+
return liveModelsCache;
|
|
14
|
+
}
|
|
15
|
+
const FETCH_TIMEOUT_MS = 8_000;
|
|
16
|
+
async function fetchAnthropicModels() {
|
|
17
|
+
const apiKey = (0, env_js_1.getApiKey)('ANTHROPIC_API_KEY');
|
|
18
|
+
if (!apiKey)
|
|
19
|
+
return [];
|
|
20
|
+
try {
|
|
21
|
+
const results = [];
|
|
22
|
+
let afterId;
|
|
23
|
+
// Anthropic's /v1/models is paginated (has_more / last_id) — loop
|
|
24
|
+
// until exhausted so a growing model catalog doesn't silently get
|
|
25
|
+
// truncated to just the first page.
|
|
26
|
+
for (let page = 0; page < 10; page++) {
|
|
27
|
+
const url = new URL('https://api.anthropic.com/v1/models');
|
|
28
|
+
if (afterId)
|
|
29
|
+
url.searchParams.set('after_id', afterId);
|
|
30
|
+
const resp = await fetch(url, {
|
|
31
|
+
headers: {
|
|
32
|
+
'x-api-key': apiKey,
|
|
33
|
+
'anthropic-version': '2023-06-01',
|
|
34
|
+
},
|
|
35
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
return page === 0 ? [] : results;
|
|
39
|
+
const data = (await resp.json());
|
|
40
|
+
for (const m of data.data) {
|
|
41
|
+
if (m.type !== 'model')
|
|
42
|
+
continue;
|
|
43
|
+
results.push({ id: m.id, name: m.display_name ?? m.id, provider: 'Anthropic', speed: 'Live' });
|
|
44
|
+
}
|
|
45
|
+
if (!data.has_more || !data.last_id)
|
|
46
|
+
break;
|
|
47
|
+
afterId = data.last_id;
|
|
48
|
+
}
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// OpenAI's /v1/models returns every model type it hosts — embeddings, TTS,
|
|
56
|
+
// Whisper, DALL-E/image, moderation, realtime, legacy completions. Only
|
|
57
|
+
// chat-capable text models belong in the picker.
|
|
58
|
+
const OPENAI_EXCLUDE = /embedding|whisper|tts|dall-e|gpt-image|davinci|babbage|ada-|curie|moderation|realtime|audio|transcribe|computer-use/i;
|
|
59
|
+
async function fetchOpenAIModels() {
|
|
60
|
+
const apiKey = (0, env_js_1.getApiKey)('OPENAI_API_KEY');
|
|
61
|
+
if (!apiKey)
|
|
62
|
+
return [];
|
|
63
|
+
try {
|
|
64
|
+
const resp = await fetch('https://api.openai.com/v1/models', {
|
|
65
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
66
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
67
|
+
});
|
|
68
|
+
if (!resp.ok)
|
|
69
|
+
return [];
|
|
70
|
+
const data = (await resp.json());
|
|
71
|
+
return data.data
|
|
72
|
+
.filter((m) => !OPENAI_EXCLUDE.test(m.id))
|
|
73
|
+
.map((m) => ({ id: m.id, name: m.id, provider: 'OpenAI', speed: 'Live' }))
|
|
74
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function fetchGoogleModels() {
|
|
81
|
+
const apiKey = (0, env_js_1.getApiKey)('GOOGLE_API_KEY');
|
|
82
|
+
if (!apiKey)
|
|
83
|
+
return [];
|
|
84
|
+
try {
|
|
85
|
+
const resp = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${apiKey}`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
|
|
86
|
+
if (!resp.ok)
|
|
87
|
+
return [];
|
|
88
|
+
const data = (await resp.json());
|
|
89
|
+
return data.models
|
|
90
|
+
.filter((m) => m.supportedGenerationMethods?.includes('generateContent'))
|
|
91
|
+
.map((m) => {
|
|
92
|
+
const id = m.name.replace(/^models\//, '');
|
|
93
|
+
return { id, name: m.displayName ?? id, provider: 'Google', speed: 'Live' };
|
|
94
|
+
})
|
|
95
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function fetchOpenRouterModels(limit) {
|
|
102
|
+
try {
|
|
103
|
+
const resp = await fetch('https://openrouter.ai/api/v1/models', {
|
|
104
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
105
|
+
});
|
|
106
|
+
if (!resp.ok)
|
|
107
|
+
return [];
|
|
108
|
+
const data = (await resp.json());
|
|
109
|
+
// OpenRouter lists 300+ models — cap to the top N by context length as
|
|
110
|
+
// a simple, defensible ranking (no popularity/quality signal available
|
|
111
|
+
// from this endpoint without additional calls).
|
|
112
|
+
return data.data
|
|
113
|
+
.sort((a, b) => (b.context_length ?? 0) - (a.context_length ?? 0))
|
|
114
|
+
.slice(0, limit)
|
|
115
|
+
.map((m) => ({
|
|
116
|
+
id: `openrouter/${m.id}`,
|
|
117
|
+
name: `${m.name ?? m.id} (OR)`,
|
|
118
|
+
provider: 'OpenRouter',
|
|
119
|
+
speed: 'Live',
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Fetch live model lists from every provider with a configured API key,
|
|
128
|
+
* merge into the module cache. Best-effort: a provider with no key, a
|
|
129
|
+
* network failure, or a non-200 response contributes nothing for that
|
|
130
|
+
* provider — getAllModels() falls back to static entries in that case.
|
|
131
|
+
* Never throws.
|
|
132
|
+
*
|
|
133
|
+
* Call once at startup (fire-and-forget, see index.ts). Safe to call
|
|
134
|
+
* again later to refresh (e.g. a future `:models refresh` REPL command).
|
|
135
|
+
*/
|
|
136
|
+
async function refreshLiveModels(openRouterLimit = 8) {
|
|
137
|
+
const [anthropic, openai, google, openrouter] = await Promise.all([
|
|
138
|
+
fetchAnthropicModels(),
|
|
139
|
+
fetchOpenAIModels(),
|
|
140
|
+
fetchGoogleModels(),
|
|
141
|
+
fetchOpenRouterModels(openRouterLimit),
|
|
142
|
+
]);
|
|
143
|
+
liveModelsCache = [...anthropic, ...openai, ...google, ...openrouter];
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=live-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-models.js","sourceRoot":"","sources":["../../src/providers/live-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
import type { LLMProvider, ProviderConfig, ToolDefinition, HistoryMessage, LLMResponse, StreamChunk } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* OpenAI-compatible provider.
|
|
4
|
-
* Works with: OpenAI, OpenRouter, xAI (Grok), Ollama, LM Studio,
|
|
5
|
-
* Together AI, Groq, Perplexity, and any server that speaks the OpenAI API spec.
|
|
6
|
-
*
|
|
7
|
-
* How to target each:
|
|
8
|
-
* OpenAI: model="gpt-4o" apiKey=OPENAI_API_KEY
|
|
9
|
-
* OpenRouter: model="anthropic/claude-3.5" baseUrl="https://openrouter.ai/api/v1" apiKey=OPENROUTER_API_KEY
|
|
10
|
-
* xAI/Grok: model="grok-beta" baseUrl="https://api.x.ai/v1" apiKey=XAI_API_KEY
|
|
11
|
-
* Ollama: model="llama3.2" baseUrl="http://localhost:11434/v1" apiKey="ollama"
|
|
12
|
-
* LM Studio: model="local-model" baseUrl="http://localhost:1234/v1" apiKey="lm-studio"
|
|
13
|
-
*/
|
|
14
2
|
export declare class OpenAICompatibleProvider implements LLMProvider {
|
|
15
3
|
name: string;
|
|
16
4
|
supportsTools: boolean;
|
|
@@ -18,6 +6,7 @@ export declare class OpenAICompatibleProvider implements LLMProvider {
|
|
|
18
6
|
private client;
|
|
19
7
|
private maxTokens;
|
|
20
8
|
private temperature;
|
|
9
|
+
private reasoningEffort?;
|
|
21
10
|
constructor(config: ProviderConfig, providerName?: string);
|
|
22
11
|
complete(system: string, history: HistoryMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
|
|
23
12
|
stream(system: string, history: HistoryMessage[], tools: ToolDefinition[]): AsyncGenerator<StreamChunk>;
|
|
@@ -6,18 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.OpenAICompatibleProvider = void 0;
|
|
7
7
|
const openai_1 = __importDefault(require("openai"));
|
|
8
8
|
const env_js_1 = require("../util/env.js");
|
|
9
|
-
|
|
10
|
-
* OpenAI-compatible provider.
|
|
11
|
-
* Works with: OpenAI, OpenRouter, xAI (Grok), Ollama, LM Studio,
|
|
12
|
-
* Together AI, Groq, Perplexity, and any server that speaks the OpenAI API spec.
|
|
13
|
-
*
|
|
14
|
-
* How to target each:
|
|
15
|
-
* OpenAI: model="gpt-4o" apiKey=OPENAI_API_KEY
|
|
16
|
-
* OpenRouter: model="anthropic/claude-3.5" baseUrl="https://openrouter.ai/api/v1" apiKey=OPENROUTER_API_KEY
|
|
17
|
-
* xAI/Grok: model="grok-beta" baseUrl="https://api.x.ai/v1" apiKey=XAI_API_KEY
|
|
18
|
-
* Ollama: model="llama3.2" baseUrl="http://localhost:11434/v1" apiKey="ollama"
|
|
19
|
-
* LM Studio: model="local-model" baseUrl="http://localhost:1234/v1" apiKey="lm-studio"
|
|
20
|
-
*/
|
|
9
|
+
const json_repair_js_1 = require("../util/json-repair.js");
|
|
21
10
|
class OpenAICompatibleProvider {
|
|
22
11
|
name;
|
|
23
12
|
supportsTools = true;
|
|
@@ -25,9 +14,14 @@ class OpenAICompatibleProvider {
|
|
|
25
14
|
client;
|
|
26
15
|
maxTokens;
|
|
27
16
|
temperature;
|
|
17
|
+
reasoningEffort;
|
|
28
18
|
constructor(config, providerName) {
|
|
29
19
|
this.model = config.model;
|
|
30
|
-
|
|
20
|
+
// Reasoning models (GLM-5.x, MiMo, DeepSeek-R, o-series) spend tokens on
|
|
21
|
+
// internal reasoning BEFORE emitting visible content. A small cap suffocates
|
|
22
|
+
// them: budget exhausted mid-think -> finish_reason "length" -> zero output.
|
|
23
|
+
this.maxTokens = config.maxTokens ?? 16384;
|
|
24
|
+
this.reasoningEffort = deriveProviderName(config) === 'Zhipu' ? 'high' : undefined;
|
|
31
25
|
this.temperature = config.temperature ?? 0.2;
|
|
32
26
|
this.name = providerName ?? deriveProviderName(config);
|
|
33
27
|
this.client = new openai_1.default({
|
|
@@ -43,6 +37,10 @@ class OpenAICompatibleProvider {
|
|
|
43
37
|
temperature: this.temperature,
|
|
44
38
|
tools: tools.length > 0 ? tools.map(toOpenAITool) : undefined,
|
|
45
39
|
messages,
|
|
40
|
+
// GLM defaults to "max" thinking effort (~85k reasoning tokens per Z.ai's
|
|
41
|
+
// own benchmarks) before writing any visible content. "high" keeps useful
|
|
42
|
+
// reasoning for code quality while roughly halving that token burn.
|
|
43
|
+
...(this.reasoningEffort ? { reasoning_effort: this.reasoningEffort } : {}),
|
|
46
44
|
});
|
|
47
45
|
return fromOpenAIResponse(response);
|
|
48
46
|
}
|
|
@@ -56,102 +54,73 @@ class OpenAICompatibleProvider {
|
|
|
56
54
|
messages,
|
|
57
55
|
stream: true,
|
|
58
56
|
stream_options: { include_usage: true },
|
|
57
|
+
...(this.reasoningEffort ? { reasoning_effort: this.reasoningEffort } : {}),
|
|
59
58
|
});
|
|
60
59
|
let textBuffer = '';
|
|
61
60
|
const toolCallBuilders = new Map();
|
|
62
61
|
let usage;
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const emitDone = (toolCalls, stopReason) => ({
|
|
76
|
-
type: 'done',
|
|
77
|
-
response: { text: textBuffer, toolCalls, stopReason, usage },
|
|
78
|
-
});
|
|
79
|
-
const finalizeToolCalls = () => {
|
|
80
|
-
const calls = [];
|
|
81
|
-
for (const [, b] of toolCallBuilders) {
|
|
82
|
-
let input = {};
|
|
83
|
-
try {
|
|
84
|
-
input = JSON.parse(b.args);
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
input = { _raw: b.args };
|
|
88
|
-
}
|
|
89
|
-
calls.push({ id: b.id, name: b.name, input });
|
|
62
|
+
let finishReason;
|
|
63
|
+
// CRITICAL: do NOT return early when finish_reason arrives.
|
|
64
|
+
// With stream_options.include_usage, OpenAI sends a trailing usage-only
|
|
65
|
+
// chunk AFTER the finish_reason chunk. Returning early drops it -- usage
|
|
66
|
+
// stays undefined, token/cost accounting reads 0, and compaction never
|
|
67
|
+
// fires. Drain the entire stream, then finalize.
|
|
68
|
+
for await (const chunk of stream) {
|
|
69
|
+
if (chunk.usage) {
|
|
70
|
+
usage = {
|
|
71
|
+
inputTokens: chunk.usage.prompt_tokens ?? 0,
|
|
72
|
+
outputTokens: chunk.usage.completion_tokens ?? 0,
|
|
73
|
+
};
|
|
90
74
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (!toolCallBuilders.has(tc.index)) {
|
|
109
|
-
const id = tc.id ?? `tc_${tc.index}`;
|
|
110
|
-
const name = tc.function?.name ?? '';
|
|
111
|
-
toolCallBuilders.set(tc.index, { id, name, args: '' });
|
|
112
|
-
yield { type: 'tool_start', id, name };
|
|
113
|
-
}
|
|
114
|
-
const builder = toolCallBuilders.get(tc.index);
|
|
115
|
-
if (tc.function?.arguments) {
|
|
116
|
-
builder.args += tc.function.arguments;
|
|
117
|
-
yield { type: 'tool_input', id: builder.id, partial: tc.function.arguments };
|
|
118
|
-
}
|
|
119
|
-
}
|
|
75
|
+
const choice = chunk.choices[0];
|
|
76
|
+
if (choice?.finish_reason) {
|
|
77
|
+
finishReason = choice.finish_reason;
|
|
78
|
+
}
|
|
79
|
+
const delta = choice?.delta;
|
|
80
|
+
if (!delta)
|
|
81
|
+
continue;
|
|
82
|
+
if (delta.content) {
|
|
83
|
+
textBuffer += delta.content;
|
|
84
|
+
yield { type: 'text', text: delta.content };
|
|
85
|
+
}
|
|
86
|
+
for (const tc of delta.tool_calls ?? []) {
|
|
87
|
+
if (!toolCallBuilders.has(tc.index)) {
|
|
88
|
+
const id = tc.id ?? `tc_${tc.index}`;
|
|
89
|
+
const name = tc.function?.name ?? '';
|
|
90
|
+
toolCallBuilders.set(tc.index, { id, name, args: '' });
|
|
91
|
+
yield { type: 'tool_start', id, name };
|
|
120
92
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
for (const call of calls)
|
|
126
|
-
yield { type: 'tool_end', call };
|
|
127
|
-
yield emitDone(calls, finishReason === 'tool_calls' ? 'tools' : 'done');
|
|
128
|
-
return;
|
|
93
|
+
const builder = toolCallBuilders.get(tc.index);
|
|
94
|
+
if (tc.function?.arguments) {
|
|
95
|
+
builder.args += tc.function.arguments;
|
|
96
|
+
yield { type: 'tool_input', id: builder.id, partial: tc.function.arguments };
|
|
129
97
|
}
|
|
130
98
|
}
|
|
131
99
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const hadOutput = textBuffer.length > 0 || toolCallBuilders.size > 0;
|
|
138
|
-
if (!hadOutput)
|
|
139
|
-
throw err;
|
|
140
|
-
const calls = finalizeToolCalls();
|
|
141
|
-
for (const call of calls)
|
|
142
|
-
yield { type: 'tool_end', call };
|
|
143
|
-
yield emitDone(calls, calls.length > 0 ? 'tools' : 'done');
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
// Stream ended without an explicit finish_reason — emit whatever we have.
|
|
147
|
-
const calls = finalizeToolCalls();
|
|
148
|
-
for (const call of calls)
|
|
100
|
+
const calls = [];
|
|
101
|
+
for (const [, b] of toolCallBuilders) {
|
|
102
|
+
const input = (0, json_repair_js_1.safeParseToolArgs)(b.args);
|
|
103
|
+
const call = { id: b.id, name: b.name, input };
|
|
104
|
+
calls.push(call);
|
|
149
105
|
yield { type: 'tool_end', call };
|
|
150
|
-
|
|
106
|
+
}
|
|
107
|
+
// Map finish_reason -> stopReason. "length" means the response was
|
|
108
|
+
// TRUNCATED by max_tokens -- it must never be mislabeled as a clean "done".
|
|
109
|
+
const stopReason = finishReason === 'tool_calls' ? 'tools' :
|
|
110
|
+
finishReason === 'length' ? 'limit' : 'done';
|
|
111
|
+
yield {
|
|
112
|
+
type: 'done',
|
|
113
|
+
response: {
|
|
114
|
+
text: textBuffer,
|
|
115
|
+
toolCalls: calls,
|
|
116
|
+
stopReason,
|
|
117
|
+
usage,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
151
120
|
}
|
|
152
121
|
}
|
|
153
122
|
exports.OpenAICompatibleProvider = OpenAICompatibleProvider;
|
|
154
|
-
//
|
|
123
|
+
// -- Conversion helpers ------------------------------------------------------
|
|
155
124
|
function toOpenAITool(t) {
|
|
156
125
|
return {
|
|
157
126
|
type: 'function',
|
|
@@ -195,13 +164,7 @@ function fromOpenAIResponse(response) {
|
|
|
195
164
|
return { text: '', toolCalls: [], stopReason: 'done' };
|
|
196
165
|
const text = choice.message.content ?? '';
|
|
197
166
|
const toolCalls = (choice.message.tool_calls ?? []).map(tc => {
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
input = JSON.parse(tc.function.arguments);
|
|
201
|
-
}
|
|
202
|
-
catch {
|
|
203
|
-
input = { _raw: tc.function.arguments };
|
|
204
|
-
}
|
|
167
|
+
const input = (0, json_repair_js_1.safeParseToolArgs)(tc.function.arguments);
|
|
205
168
|
return { id: tc.id, name: tc.function.name, input };
|
|
206
169
|
});
|
|
207
170
|
const stopReason = choice.finish_reason === 'tool_calls' ? 'tools' :
|
|
@@ -212,13 +175,15 @@ function fromOpenAIResponse(response) {
|
|
|
212
175
|
usage: u ? { inputTokens: u.prompt_tokens ?? 0, outputTokens: u.completion_tokens ?? 0 } : undefined,
|
|
213
176
|
};
|
|
214
177
|
}
|
|
215
|
-
//
|
|
178
|
+
// -- Auto-resolution helpers --------------------------------------------------
|
|
216
179
|
function deriveProviderName(config) {
|
|
217
180
|
const m = config.model.toLowerCase();
|
|
218
181
|
if (config.baseUrl?.includes('openrouter'))
|
|
219
182
|
return 'OpenRouter';
|
|
220
183
|
if (config.baseUrl?.includes('x.ai') || m.includes('grok'))
|
|
221
184
|
return 'xAI';
|
|
185
|
+
if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
|
|
186
|
+
return 'Zhipu';
|
|
222
187
|
if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1')) {
|
|
223
188
|
return config.baseUrl?.includes('11434') ? 'Ollama' : 'Local';
|
|
224
189
|
}
|
|
@@ -234,12 +199,10 @@ function resolveApiKey(config) {
|
|
|
234
199
|
return (0, env_js_1.getApiKey)('XAI_API_KEY') ?? '';
|
|
235
200
|
if (config.baseUrl?.includes('xiaomimimo') || m.startsWith('mimo-'))
|
|
236
201
|
return (0, env_js_1.getApiKey)('XIAOMI_API_KEY') ?? '';
|
|
237
|
-
if (config.baseUrl?.includes('
|
|
238
|
-
return (0, env_js_1.getApiKey)('
|
|
202
|
+
if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
|
|
203
|
+
return (0, env_js_1.getApiKey)('ZHIPU_API_KEY') ?? '';
|
|
239
204
|
if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1'))
|
|
240
205
|
return 'local';
|
|
241
|
-
if (m.startsWith('deepseek-'))
|
|
242
|
-
return (0, env_js_1.getApiKey)('DEEPSEEK_API_KEY') ?? '';
|
|
243
206
|
return (0, env_js_1.getApiKey)('OPENAI_API_KEY') ?? '';
|
|
244
207
|
}
|
|
245
208
|
function resolveBaseUrl(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,2CAA2C;
|
|
1
|
+
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ function createResilientProvider(config, resilience, display) {
|
|
|
47
47
|
if (!merged.fallbacks || merged.fallbacks.length === 0)
|
|
48
48
|
return primary;
|
|
49
49
|
const fallbackProviders = merged.fallbacks.map(model => {
|
|
50
|
-
const fc = { ...config, model
|
|
50
|
+
const fc = { ...config, model };
|
|
51
51
|
return new resilient_js_1.ResilientProvider((0, factory_js_1.createProvider)(fc), resilientOpts);
|
|
52
52
|
});
|
|
53
53
|
return new fallback_js_1.FallbackChainProvider([primary, ...fallbackProviders], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilient-factory.js","sourceRoot":"","sources":["../../src/providers/resilient-factory.ts"],"names":[],"mappings":";;AAmCA,0DA4CC;AA9ED,6CAAkE;AAClE,iDAA0E;AAC1E,+CAAsD;AAoBtD,6CAA6C;AAC7C,MAAM,gBAAgB,GAA8C;IAClE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;IAC5D,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;IAC/C,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;CAC3D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,MAAsB,EACtB,UAA4B,EAC5B,OAAiB;IAEjB,MAAM,IAAI,GAAG,IAAA,+BAAkB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAqB,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;IAE9E,MAAM,aAAa,GAAqB;QACtC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;YACjD,OAAO,EAAE,KAAK,EAAE,CAAC;gBACf,QAAQ;gBACR,OAAO;gBACP,OAAO;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBACvC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;wBAC9C,KAAK,CAAC,MAAM,KAAK,CAAC,CAAG,CAAC,CAAC,eAAe,CAAC,CAAC;4BACxC,QAAQ,KAAK,CAAC,MAAM,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YACpC,oDAAoD;YACpD,IAAI,MAAM,GAAG,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,eAAe,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAC9E,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,gCAAiB,CAAC,IAAA,2BAAc,EAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7E,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAEvE,MAAM,iBAAiB,GAAkB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACpE,MAAM,EAAE,GAAmB,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"resilient-factory.js","sourceRoot":"","sources":["../../src/providers/resilient-factory.ts"],"names":[],"mappings":"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"}
|