aura-code 0.6.3 → 0.10.2
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 +15 -5
- package/dist/agent/loop.js +182 -45
- 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 +140 -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 +20 -4
- package/dist/cli/display.js +77 -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 +1018 -851
- 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 +1190 -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 +92 -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/providers/types.d.ts +1 -0
- 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,87 @@ 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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
+
// DeepSeek reports cache stats via prompt_cache_hit_tokens /
|
|
71
|
+
// prompt_cache_miss_tokens in the usage object. The OpenAI SDK
|
|
72
|
+
// passes unknown fields through, so we can read them here.
|
|
73
|
+
const raw = chunk.usage;
|
|
74
|
+
const cacheHit = raw.prompt_cache_hit_tokens ?? 0;
|
|
75
|
+
const cacheMiss = raw.prompt_cache_miss_tokens ?? 0;
|
|
76
|
+
usage = {
|
|
77
|
+
inputTokens: chunk.usage.prompt_tokens ?? 0,
|
|
78
|
+
outputTokens: chunk.usage.completion_tokens ?? 0,
|
|
79
|
+
// Only set cachedTokens when the provider actually reports them
|
|
80
|
+
// (DeepSeek). Other OpenAI-compatible providers don't set these
|
|
81
|
+
// fields, so cachedTokens stays undefined and costFor uses the
|
|
82
|
+
// standard rate for all input tokens.
|
|
83
|
+
...(cacheHit > 0 ? { cachedTokens: cacheHit } : {}),
|
|
84
|
+
};
|
|
85
|
+
if (process.env.AURA_DEBUG_CACHE && (cacheHit > 0 || cacheMiss > 0)) {
|
|
86
|
+
console.error(`[cache] hit=${cacheHit} miss=${cacheMiss} input=${chunk.usage.prompt_tokens ?? 0}`);
|
|
85
87
|
}
|
|
86
|
-
catch {
|
|
87
|
-
input = { _raw: b.args };
|
|
88
|
-
}
|
|
89
|
-
calls.push({ id: b.id, name: b.name, input });
|
|
90
88
|
}
|
|
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
|
-
}
|
|
89
|
+
const choice = chunk.choices[0];
|
|
90
|
+
if (choice?.finish_reason) {
|
|
91
|
+
finishReason = choice.finish_reason;
|
|
92
|
+
}
|
|
93
|
+
const delta = choice?.delta;
|
|
94
|
+
if (!delta)
|
|
95
|
+
continue;
|
|
96
|
+
if (delta.content) {
|
|
97
|
+
textBuffer += delta.content;
|
|
98
|
+
yield { type: 'text', text: delta.content };
|
|
99
|
+
}
|
|
100
|
+
for (const tc of delta.tool_calls ?? []) {
|
|
101
|
+
if (!toolCallBuilders.has(tc.index)) {
|
|
102
|
+
const id = tc.id ?? `tc_${tc.index}`;
|
|
103
|
+
const name = tc.function?.name ?? '';
|
|
104
|
+
toolCallBuilders.set(tc.index, { id, name, args: '' });
|
|
105
|
+
yield { type: 'tool_start', id, name };
|
|
120
106
|
}
|
|
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;
|
|
107
|
+
const builder = toolCallBuilders.get(tc.index);
|
|
108
|
+
if (tc.function?.arguments) {
|
|
109
|
+
builder.args += tc.function.arguments;
|
|
110
|
+
yield { type: 'tool_input', id: builder.id, partial: tc.function.arguments };
|
|
129
111
|
}
|
|
130
112
|
}
|
|
131
113
|
}
|
|
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)
|
|
114
|
+
const calls = [];
|
|
115
|
+
for (const [, b] of toolCallBuilders) {
|
|
116
|
+
const input = (0, json_repair_js_1.safeParseToolArgs)(b.args);
|
|
117
|
+
const call = { id: b.id, name: b.name, input };
|
|
118
|
+
calls.push(call);
|
|
149
119
|
yield { type: 'tool_end', call };
|
|
150
|
-
|
|
120
|
+
}
|
|
121
|
+
// Map finish_reason -> stopReason. "length" means the response was
|
|
122
|
+
// TRUNCATED by max_tokens -- it must never be mislabeled as a clean "done".
|
|
123
|
+
const stopReason = finishReason === 'tool_calls' ? 'tools' :
|
|
124
|
+
finishReason === 'length' ? 'limit' : 'done';
|
|
125
|
+
yield {
|
|
126
|
+
type: 'done',
|
|
127
|
+
response: {
|
|
128
|
+
text: textBuffer,
|
|
129
|
+
toolCalls: calls,
|
|
130
|
+
stopReason,
|
|
131
|
+
usage,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
151
134
|
}
|
|
152
135
|
}
|
|
153
136
|
exports.OpenAICompatibleProvider = OpenAICompatibleProvider;
|
|
154
|
-
//
|
|
137
|
+
// -- Conversion helpers ------------------------------------------------------
|
|
155
138
|
function toOpenAITool(t) {
|
|
156
139
|
return {
|
|
157
140
|
type: 'function',
|
|
@@ -195,30 +178,33 @@ function fromOpenAIResponse(response) {
|
|
|
195
178
|
return { text: '', toolCalls: [], stopReason: 'done' };
|
|
196
179
|
const text = choice.message.content ?? '';
|
|
197
180
|
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
|
-
}
|
|
181
|
+
const input = (0, json_repair_js_1.safeParseToolArgs)(tc.function.arguments);
|
|
205
182
|
return { id: tc.id, name: tc.function.name, input };
|
|
206
183
|
});
|
|
207
184
|
const stopReason = choice.finish_reason === 'tool_calls' ? 'tools' :
|
|
208
185
|
choice.finish_reason === 'length' ? 'limit' : 'done';
|
|
209
186
|
const u = response.usage;
|
|
187
|
+
if (!u)
|
|
188
|
+
return { text, toolCalls, stopReason };
|
|
189
|
+
const cacheHit = u.prompt_cache_hit_tokens ?? 0;
|
|
210
190
|
return {
|
|
211
191
|
text, toolCalls, stopReason,
|
|
212
|
-
usage:
|
|
192
|
+
usage: {
|
|
193
|
+
inputTokens: u.prompt_tokens ?? 0,
|
|
194
|
+
outputTokens: u.completion_tokens ?? 0,
|
|
195
|
+
...(cacheHit > 0 ? { cachedTokens: cacheHit } : {}),
|
|
196
|
+
},
|
|
213
197
|
};
|
|
214
198
|
}
|
|
215
|
-
//
|
|
199
|
+
// -- Auto-resolution helpers --------------------------------------------------
|
|
216
200
|
function deriveProviderName(config) {
|
|
217
201
|
const m = config.model.toLowerCase();
|
|
218
202
|
if (config.baseUrl?.includes('openrouter'))
|
|
219
203
|
return 'OpenRouter';
|
|
220
204
|
if (config.baseUrl?.includes('x.ai') || m.includes('grok'))
|
|
221
205
|
return 'xAI';
|
|
206
|
+
if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
|
|
207
|
+
return 'Zhipu';
|
|
222
208
|
if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1')) {
|
|
223
209
|
return config.baseUrl?.includes('11434') ? 'Ollama' : 'Local';
|
|
224
210
|
}
|
|
@@ -234,12 +220,10 @@ function resolveApiKey(config) {
|
|
|
234
220
|
return (0, env_js_1.getApiKey)('XAI_API_KEY') ?? '';
|
|
235
221
|
if (config.baseUrl?.includes('xiaomimimo') || m.startsWith('mimo-'))
|
|
236
222
|
return (0, env_js_1.getApiKey)('XIAOMI_API_KEY') ?? '';
|
|
237
|
-
if (config.baseUrl?.includes('
|
|
238
|
-
return (0, env_js_1.getApiKey)('
|
|
223
|
+
if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
|
|
224
|
+
return (0, env_js_1.getApiKey)('ZHIPU_API_KEY') ?? '';
|
|
239
225
|
if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1'))
|
|
240
226
|
return 'local';
|
|
241
|
-
if (m.startsWith('deepseek-'))
|
|
242
|
-
return (0, env_js_1.getApiKey)('DEEPSEEK_API_KEY') ?? '';
|
|
243
227
|
return (0, env_js_1.getApiKey)('OPENAI_API_KEY') ?? '';
|
|
244
228
|
}
|
|
245
229
|
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], {
|