alvin-bot 5.6.2 → 5.8.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/CHANGELOG.md +29 -0
- package/README.md +1 -1
- package/dist/claude.js +1 -102
- package/dist/config.js +1 -96
- package/dist/engine.js +1 -90
- package/dist/find-claude-binary.js +1 -98
- package/dist/handlers/async-agent-chunk-handler.js +1 -50
- package/dist/handlers/background-bypass.js +1 -75
- package/dist/handlers/commands.js +1 -2336
- package/dist/handlers/cron-progress.js +1 -52
- package/dist/handlers/document.js +1 -194
- package/dist/handlers/message.js +1 -959
- package/dist/handlers/photo.js +1 -154
- package/dist/handlers/platform-message.js +1 -360
- package/dist/handlers/stuck-timer.js +1 -54
- package/dist/handlers/video.js +1 -237
- package/dist/handlers/voice.js +1 -148
- package/dist/i18n.js +1 -805
- package/dist/index.js +1 -697
- package/dist/init-data-dir.js +1 -98
- package/dist/middleware/auth.js +1 -233
- package/dist/migrate.js +1 -162
- package/dist/paths.js +1 -146
- package/dist/platforms/discord.js +1 -175
- package/dist/platforms/index.js +1 -130
- package/dist/platforms/signal.js +1 -205
- package/dist/platforms/slack-slash-parser.js +1 -32
- package/dist/platforms/slack.js +1 -501
- package/dist/platforms/telegram.js +1 -111
- package/dist/platforms/types.js +1 -8
- package/dist/platforms/whatsapp-auth-helpers.js +1 -53
- package/dist/platforms/whatsapp.js +1 -707
- package/dist/providers/claude-sdk-provider.js +1 -565
- package/dist/providers/codex-cli-provider.js +1 -134
- package/dist/providers/index.js +1 -7
- package/dist/providers/ollama-provider.js +1 -32
- package/dist/providers/openai-compatible.js +1 -406
- package/dist/providers/registry.js +1 -352
- package/dist/providers/runtime-header.js +1 -45
- package/dist/providers/tool-executor.js +1 -475
- package/dist/providers/types.js +1 -227
- package/dist/services/access.js +1 -144
- package/dist/services/allowed-users-gate.js +1 -56
- package/dist/services/alvin-dispatch.js +1 -130
- package/dist/services/alvin-mcp-tools.js +1 -104
- package/dist/services/asset-index.js +1 -224
- package/dist/services/async-agent-parser.js +1 -418
- package/dist/services/async-agent-watcher.js +1 -443
- package/dist/services/auto-diagnostic.js +1 -228
- package/dist/services/broadcast.js +1 -52
- package/dist/services/browser-manager.js +1 -562
- package/dist/services/browser-webfetch.js +1 -127
- package/dist/services/browser.js +1 -121
- package/dist/services/cdp-bootstrap.js +1 -357
- package/dist/services/compaction.js +1 -144
- package/dist/services/critical-notify.js +1 -203
- package/dist/services/cron-resolver.js +1 -58
- package/dist/services/cron-scheduling.js +1 -310
- package/dist/services/cron.js +1 -861
- package/dist/services/custom-tools.js +1 -317
- package/dist/services/delivery-queue.js +1 -173
- package/dist/services/delivery-registry.js +1 -21
- package/dist/services/disk-cleanup.js +1 -203
- package/dist/services/elevenlabs.js +1 -58
- package/dist/services/embeddings/auto-detect.js +1 -74
- package/dist/services/embeddings/fts5.js +1 -108
- package/dist/services/embeddings/gemini.js +1 -65
- package/dist/services/embeddings/index.js +1 -496
- package/dist/services/embeddings/ollama.js +1 -78
- package/dist/services/embeddings/openai.js +1 -49
- package/dist/services/embeddings/provider.js +1 -22
- package/dist/services/embeddings/vector-base.js +1 -113
- package/dist/services/embeddings-migration.js +1 -193
- package/dist/services/embeddings.js +1 -9
- package/dist/services/env-file.js +1 -50
- package/dist/services/exec-guard.js +1 -71
- package/dist/services/fallback-order.js +1 -154
- package/dist/services/file-permissions.js +1 -93
- package/dist/services/heartbeat-file.js +1 -65
- package/dist/services/heartbeat.js +1 -313
- package/dist/services/hooks.js +1 -44
- package/dist/services/imagegen.js +1 -72
- package/dist/services/language-detect.js +1 -154
- package/dist/services/markdown.js +1 -63
- package/dist/services/mcp.js +1 -263
- package/dist/services/memory-extractor.js +1 -178
- package/dist/services/memory-inject-mode.js +1 -43
- package/dist/services/memory-layers.js +1 -156
- package/dist/services/memory.js +1 -146
- package/dist/services/ollama-manager.js +1 -339
- package/dist/services/permissions-wizard.js +1 -291
- package/dist/services/personality.js +1 -376
- package/dist/services/plugins.js +1 -171
- package/dist/services/preflight.js +1 -292
- package/dist/services/process-manager.js +1 -291
- package/dist/services/release-highlights.js +1 -79
- package/dist/services/reminders.js +1 -97
- package/dist/services/restart.js +1 -48
- package/dist/services/security-audit.js +1 -74
- package/dist/services/self-diagnosis.js +1 -272
- package/dist/services/self-search.js +1 -129
- package/dist/services/session-persistence.js +1 -237
- package/dist/services/session.js +1 -282
- package/dist/services/skills.js +1 -290
- package/dist/services/ssrf-guard.js +1 -162
- package/dist/services/standing-orders.js +1 -29
- package/dist/services/steer-channel.js +1 -46
- package/dist/services/stop-controller.js +1 -52
- package/dist/services/subagent-dedup.js +1 -0
- package/dist/services/subagent-delivery.js +1 -452
- package/dist/services/subagent-stats.js +1 -123
- package/dist/services/subagents.js +1 -814
- package/dist/services/sudo.js +1 -329
- package/dist/services/telegram.js +1 -158
- package/dist/services/timing-safe-bearer.js +1 -51
- package/dist/services/tool-discovery.js +1 -214
- package/dist/services/trends.js +1 -580
- package/dist/services/updater.js +1 -291
- package/dist/services/usage-tracker.js +1 -144
- package/dist/services/users.js +1 -271
- package/dist/services/voice.js +1 -104
- package/dist/services/watchdog-brake.js +1 -154
- package/dist/services/watchdog.js +1 -311
- package/dist/services/workspaces.js +1 -276
- package/dist/tui/index.js +1 -667
- package/dist/util/console-formatter.js +1 -109
- package/dist/util/debounce.js +1 -24
- package/dist/util/telegram-error-filter.js +1 -62
- package/dist/version.js +1 -24
- package/dist/web/bind-strategy.js +1 -42
- package/dist/web/canvas.js +1 -30
- package/dist/web/doctor-api.js +1 -604
- package/dist/web/openai-compat.js +1 -252
- package/dist/web/server.js +1 -1831
- package/dist/web/setup-api.js +1 -1101
- package/package.json +5 -2
- package/dist/.metadata_never_index +0 -0
|
@@ -1,134 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Codex CLI Provider
|
|
3
|
-
*
|
|
4
|
-
* Wraps OpenAI's Codex CLI as a provider, similar to how Claude SDK Provider
|
|
5
|
-
* wraps the Claude CLI. Uses `codex exec` for non-interactive completions.
|
|
6
|
-
*
|
|
7
|
-
* Requires: Codex CLI installed & logged in (`codex login --device-auth`)
|
|
8
|
-
*/
|
|
9
|
-
import { spawn } from "child_process";
|
|
10
|
-
export class CodexCLIProvider {
|
|
11
|
-
config;
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.config = {
|
|
14
|
-
type: "codex-cli",
|
|
15
|
-
name: "Codex CLI (OpenAI)",
|
|
16
|
-
model: "gpt-5.4",
|
|
17
|
-
supportsTools: true,
|
|
18
|
-
supportsVision: false,
|
|
19
|
-
supportsStreaming: true,
|
|
20
|
-
...config,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
async *query(options) {
|
|
24
|
-
const args = [
|
|
25
|
-
"exec",
|
|
26
|
-
"--skip-git-repo-check",
|
|
27
|
-
"--ephemeral",
|
|
28
|
-
"-s", "read-only",
|
|
29
|
-
"-m", this.config.model,
|
|
30
|
-
];
|
|
31
|
-
if (options.workingDir) {
|
|
32
|
-
args.push("-C", options.workingDir);
|
|
33
|
-
}
|
|
34
|
-
// Build the prompt with system context. The runtime-header is injected
|
|
35
|
-
// first so its version/install-path overrides any stale value that may
|
|
36
|
-
// appear later in the system prompt or CLAUDE.md.
|
|
37
|
-
const { buildRuntimeHeader } = await import("./runtime-header.js");
|
|
38
|
-
const runtimeHeader = buildRuntimeHeader();
|
|
39
|
-
let fullPrompt = options.prompt;
|
|
40
|
-
if (options.systemPrompt) {
|
|
41
|
-
fullPrompt = `${runtimeHeader}\n\n${options.systemPrompt}\n\n${fullPrompt}`;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
fullPrompt = `${runtimeHeader}\n\n${fullPrompt}`;
|
|
45
|
-
}
|
|
46
|
-
args.push(fullPrompt);
|
|
47
|
-
try {
|
|
48
|
-
const result = await this.execCodex(args, options.abortSignal);
|
|
49
|
-
if (result.trim()) {
|
|
50
|
-
yield {
|
|
51
|
-
type: "text",
|
|
52
|
-
text: result,
|
|
53
|
-
delta: result,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
yield {
|
|
57
|
-
type: "done",
|
|
58
|
-
text: result,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
if (err instanceof Error && err.message.includes("abort")) {
|
|
63
|
-
yield { type: "error", error: "Request aborted" };
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
yield {
|
|
67
|
-
type: "error",
|
|
68
|
-
error: `Codex CLI error: ${err instanceof Error ? err.message : String(err)}`,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async isAvailable() {
|
|
74
|
-
try {
|
|
75
|
-
const { execSync } = await import("child_process");
|
|
76
|
-
const output = execSync("codex login status 2>&1", {
|
|
77
|
-
stdio: "pipe",
|
|
78
|
-
timeout: 5000,
|
|
79
|
-
encoding: "utf-8",
|
|
80
|
-
});
|
|
81
|
-
return output.includes("Logged in");
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
getInfo() {
|
|
88
|
-
return {
|
|
89
|
-
name: this.config.name,
|
|
90
|
-
model: this.config.model,
|
|
91
|
-
status: "✅ Codex CLI (ChatGPT auth)",
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
execCodex(args, abortSignal) {
|
|
95
|
-
return new Promise((resolve, reject) => {
|
|
96
|
-
const proc = spawn("codex", args, {
|
|
97
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
98
|
-
timeout: 120_000,
|
|
99
|
-
env: { ...process.env, NO_COLOR: "1" },
|
|
100
|
-
});
|
|
101
|
-
// Close stdin so `codex exec` doesn't wait for additional input — the
|
|
102
|
-
// prompt is passed as a positional arg, no stdin payload follows.
|
|
103
|
-
// Without this, codex prints "Reading additional input from stdin..."
|
|
104
|
-
// and blocks until the 120s timeout, causing the bot to return
|
|
105
|
-
// "keine Antwort" / empty replies on the chat side.
|
|
106
|
-
proc.stdin.end();
|
|
107
|
-
let stdout = "";
|
|
108
|
-
let stderr = "";
|
|
109
|
-
proc.stdout.on("data", (data) => {
|
|
110
|
-
stdout += data.toString();
|
|
111
|
-
});
|
|
112
|
-
proc.stderr.on("data", (data) => {
|
|
113
|
-
stderr += data.toString();
|
|
114
|
-
});
|
|
115
|
-
proc.on("close", (code) => {
|
|
116
|
-
if (code === 0 || stdout.trim()) {
|
|
117
|
-
resolve(stdout.trim());
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
reject(new Error(stderr.trim() || `codex exec exited with code ${code}`));
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
proc.on("error", (err) => {
|
|
124
|
-
reject(new Error(`Failed to spawn codex: ${err.message}`));
|
|
125
|
-
});
|
|
126
|
-
if (abortSignal) {
|
|
127
|
-
abortSignal.addEventListener("abort", () => {
|
|
128
|
-
proc.kill("SIGTERM");
|
|
129
|
-
reject(new Error("abort"));
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
}
|
|
1
|
+
function _0x5b27(){const _0xc57220=['zgf0yq','mZm1nJaYngnjtgHKCG','ChvZAa','C2vHCMnO','AxnbDMfPBgfIBa','ssaOq2HHDeDqva','mJeZmtmXmuj3zxniDa','Dg9tDhjPBMC','q29KzxGGq0Xjia','BwvZC2fNzq','ls1LCgHLBwvYyq','CgLWzq','yxbWBhK','zxjYB3i','zxHLy0nVzgv4','Bw9KzwW','Dgv4Da','y29KzxGTy2XP','mtjyBe56qwO','y29UzMLN','DhjPBq','mtGZnJGXC2D6C2zO','y29KzxG','ls1ZA2LWlwDPDa','D29YA2LUz0rPCG','BIbZDgf0DxmGmG','ChjVBxb0','nZyXmdK2n2H5ENrgrW','ntCZmJy4B0jRCfvS','C3LZDgvTuhjVBq','y29KzxGGBg9NAq','C3rKAw4','DgGGy29Kzsa','zxjYB3i6ia','y29UC3rYDwn0BW','y2HPBgrFChjVyW','igv4AxrLzcb3Aq','zw5K','y2XVC2u','lxjLCg8Ty2HLyW','A2LSBa','4PYfienVzgv4ienm','DxrMltG','tg9Nz2vKigLU','z3b0ltuUna','B3j0zwq','ywjVCNq','ndy0zhnzAvrb','ke9Wzw5bssK','mZa2nJy0uKvyDLzY','ywjVCNrtAwDUyq','C3rKzxjY','AgvHzgvYlMPZ','ywrKrxzLBNrmAq','lI9YDw50Aw1Llq','zxHLyW','nJq2mZu1uMXrENDj','kcGOlISPkYKRkq','zg9Uzq','zxnZ'];_0x5b27=function(){return _0xc57220;};return _0x5b27();}const _0xff04e6=_0x3d79,_0x4f8deb=_0x3d79;(function(_0x1e9a9d,_0x43dfc2){const _0x1d631e=_0x3d79,_0x4bde0e=_0x3d79,_0x523f7e=_0x1e9a9d();while(!![]){try{const _0x22465c=parseInt(_0x1d631e(0x125))/(-0x1*-0x214f+0x25fb+-0xa2f*0x7)+parseInt(_0x4bde0e(0xfe))/(0x19da+0x1*0xc9+0x1*-0x1aa1)+-parseInt(_0x1d631e(0x10f))/(0x9c6*0x1+-0xb4b+0x188)+parseInt(_0x4bde0e(0x10a))/(0x1cf8+-0x1ce1+-0x13*0x1)+parseInt(_0x4bde0e(0x105))/(-0xc79+0x230+0xa4e)*(-parseInt(_0x1d631e(0x11b))/(0x137d+0x1fa9+-0x3320))+-parseInt(_0x1d631e(0x124))/(0x249a*0x1+-0x26*-0x48+-0x2f43)+parseInt(_0x1d631e(0xfc))/(0x73*-0x1d+0xf0b*-0x1+0x1c1a)*(parseInt(_0x1d631e(0x11e))/(0x10ed+-0x1*-0x6dd+0x17c1*-0x1));if(_0x22465c===_0x43dfc2)break;else _0x523f7e['push'](_0x523f7e['shift']());}catch(_0x15b2b2){_0x523f7e['push'](_0x523f7e['shift']());}}}(_0x5b27,-0x754*-0x200+-0x4*0x16e07+-0x1a368*-0x1));const _0x3cd192=(function(){let _0x59371d=!![];return function(_0xb87217,_0x406d4a){const _0x57b980=_0x59371d?function(){const _0x5048cc=_0x3d79;if(_0x406d4a){const _0x2c39a4=_0x406d4a[_0x5048cc(0x115)](_0xb87217,arguments);return _0x406d4a=null,_0x2c39a4;}}:function(){};return _0x59371d=![],_0x57b980;};}()),_0x3fc1bf=_0x3cd192(this,function(){const _0x190e8d=_0x3d79,_0x21525e=_0x3d79;return _0x3fc1bf[_0x190e8d(0x110)]()[_0x21525e(0x10c)]('(((.+)+)+)'+'+$')['toString']()[_0x190e8d(0x12b)+'r'](_0x3fc1bf)['search'](_0x190e8d(0x106)+'+$');});_0x3fc1bf();import{spawn}from'child_process';function _0x3d79(_0x5c5d18,_0x3cbb54){_0x5c5d18=_0x5c5d18-(0x13*0x6f+-0x3d9*0x1+-0x1*0x36d);const _0x499c7f=_0x5b27();let _0x5a37d5=_0x499c7f[_0x5c5d18];if(_0x3d79['ysucFA']===undefined){var _0x3df092=function(_0x1d5378){const _0x5a503a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x49b4a6='',_0x304dfe='',_0x4eb673=_0x49b4a6+_0x3df092;for(let _0x29b91e=-0x1*0x11c1+-0x53d*0x3+0x2178,_0x44595a,_0x381031,_0x197cf7=0xba3+0x10d2+-0x5b1*0x5;_0x381031=_0x1d5378['charAt'](_0x197cf7++);~_0x381031&&(_0x44595a=_0x29b91e%(0xdb7+0x20cd+-0x2e80)?_0x44595a*(-0x1*-0x1607+0x2f0+0x39*-0x6f)+_0x381031:_0x381031,_0x29b91e++%(0x961+-0xd0c+0x3af))?_0x49b4a6+=_0x4eb673['charCodeAt'](_0x197cf7+(-0x133a+0x192c+-0x5e8*0x1))-(0x3*-0x729+0xc6b+-0x2*-0x48d)!==-0x1ea4+-0x1310+0x31b4?String['fromCharCode'](0xed+0x1*0x1dd7+-0x1dc5&_0x44595a>>(-(0x22f+-0x7c9*0x3+0x1*0x152e)*_0x29b91e&-0x1*-0x22e5+-0x2*0x358+-0x1c2f)):_0x29b91e:-0xb41+0xbab+0x2*-0x35){_0x381031=_0x5a503a['indexOf'](_0x381031);}for(let _0x347f9e=-0x1b28+-0xa6*0x34+-0x1*-0x3ce0,_0x29a89e=_0x49b4a6['length'];_0x347f9e<_0x29a89e;_0x347f9e++){_0x304dfe+='%'+('00'+_0x49b4a6['charCodeAt'](_0x347f9e)['toString'](-0x71*0xb+-0x1*-0xc31+-0x62*0x13))['slice'](-(-0x1c51+-0x18a+0xb*0x2b7));}return decodeURIComponent(_0x304dfe);};_0x3d79['JIlIoI']=_0x3df092,_0x3d79['vaPVts']={},_0x3d79['ysucFA']=!![];}const _0x19e786=_0x499c7f[-0x1f6*0x11+0x1*-0xb32+0x2c88],_0x2f1f40=_0x5c5d18+_0x19e786,_0x1fc976=_0x3d79['vaPVts'][_0x2f1f40];if(!_0x1fc976){const _0x5b1c9a=function(_0x5cb95a){this['VybHtO']=_0x5cb95a,this['mMlLLK']=[-0x1da3+-0x88+0x1e2c,-0x1*-0x214f+0x25fb+-0xe42*0x5,0x19da+0x1*0xc9+0x1*-0x1aa3],this['jlEqXS']=function(){return'newState';},this['BSsewI']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ZPvKyD']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x5b1c9a['prototype']['lNulqb']=function(){const _0x50ba2b=new RegExp(this['BSsewI']+this['ZPvKyD']),_0x22cbcb=_0x50ba2b['test'](this['jlEqXS']['toString']())?--this['mMlLLK'][0x9c6*0x1+-0xb4b+0x186]:--this['mMlLLK'][0x1cf8+-0x1ce1+-0x17*0x1];return this['IpRiIU'](_0x22cbcb);},_0x5b1c9a['prototype']['IpRiIU']=function(_0x372c25){if(!Boolean(~_0x372c25))return _0x372c25;return this['RLZyZo'](this['VybHtO']);},_0x5b1c9a['prototype']['RLZyZo']=function(_0x14a2bd){for(let _0x56896d=-0xc79+0x230+0xa49,_0x1cc8cb=this['mMlLLK']['length'];_0x56896d<_0x1cc8cb;_0x56896d++){this['mMlLLK']['push'](Math['round'](Math['random']())),_0x1cc8cb=this['mMlLLK']['length'];}return _0x14a2bd(this['mMlLLK'][0x137d+0x1fa9+-0x3326]);},new _0x5b1c9a(_0x3d79)['lNulqb'](),_0x5a37d5=_0x3d79['JIlIoI'](_0x5a37d5),_0x3d79['vaPVts'][_0x2f1f40]=_0x5a37d5;}else _0x5a37d5=_0x1fc976;return _0x5a37d5;}export class CodexCLIProvider{['config'];constructor(_0x294450){const _0x2d796d=_0x3d79,_0x2dfe82=_0x3d79;this[_0x2d796d(0x11c)]={'type':_0x2dfe82(0x11a),'name':_0x2dfe82(0x111)+_0x2dfe82(0xfd),'model':_0x2d796d(0xf9),'supportsTools':!![],'supportsVision':![],'supportsStreaming':!![],..._0x294450};}async*['query'](_0x22466e){const _0x1c7b7b=_0x3d79,_0x588c78=_0x3d79,_0x4a9284=[_0x1c7b7b(0x104),_0x1c7b7b(0x120)+_0x588c78(0x130)+'k',_0x588c78(0x113)+'l','-s','read-only','-m',this[_0x1c7b7b(0x11c)][_0x588c78(0x118)]];_0x22466e[_0x588c78(0x121)]&&_0x4a9284[_0x1c7b7b(0x10b)]('-C',_0x22466e['workingDir']);const {buildRuntimeHeader:_0x3345f1}=await import(_0x1c7b7b(0x103)+_0x588c78(0x101)),_0x56fab5=_0x3345f1();let _0x2e6538=_0x22466e[_0x588c78(0x123)];_0x22466e['systemProm'+'pt']?_0x2e6538=_0x56fab5+'\x0a\x0a'+_0x22466e[_0x1c7b7b(0x126)+'pt']+'\x0a\x0a'+_0x2e6538:_0x2e6538=_0x56fab5+'\x0a\x0a'+_0x2e6538;_0x4a9284[_0x588c78(0x10b)](_0x2e6538);try{const _0x2ec0eb=await this['execCodex'](_0x4a9284,_0x22466e[_0x588c78(0xff)+'l']);_0x2ec0eb[_0x588c78(0x11d)]()&&(yield{'type':_0x1c7b7b(0x119),'text':_0x2ec0eb,'delta':_0x2ec0eb}),yield{'type':_0x1c7b7b(0x107),'text':_0x2ec0eb};}catch(_0x398073){_0x398073 instanceof Error&&_0x398073[_0x588c78(0x112)]['includes']('abort')?yield{'type':_0x1c7b7b(0x116),'error':'Request\x20ab'+_0x1c7b7b(0xfa)}:yield{'type':_0x1c7b7b(0x116),'error':_0x1c7b7b(0x111)+_0x588c78(0x12a)+(_0x398073 instanceof Error?_0x398073[_0x1c7b7b(0x112)]:String(_0x398073))};}}async[_0xff04e6(0x10d)+'e'](){const _0x370d2b=_0xff04e6,_0x496532=_0xff04e6;try{const {execSync:_0x4428be}=await import(_0x370d2b(0x12c)+_0x370d2b(0x108)),_0x3b2345=_0x4428be(_0x370d2b(0x127)+_0x370d2b(0x122)+'>&1',{'stdio':'pipe','timeout':0x1388,'encoding':_0x496532(0xf7)});return _0x3b2345['includes'](_0x496532(0xf8));}catch{return![];}}['getInfo'](){const _0x4d3ed2=_0xff04e6,_0x148479=_0xff04e6;return{'name':this[_0x4d3ed2(0x11c)]['name'],'model':this[_0x4d3ed2(0x11c)][_0x148479(0x118)],'status':_0x4d3ed2(0x132)+_0x148479(0x10e)+'\x20auth)'};}[_0x4f8deb(0x117)](_0x1fc35f,_0x1759af){return new Promise((_0x1afd44,_0x250728)=>{const _0x33f7bd=_0x3d79,_0x375c45=_0x3d79,_0x183910=spawn(_0x33f7bd(0x11f),_0x1fc35f,{'stdio':['pipe',_0x33f7bd(0x114),_0x33f7bd(0x114)],'timeout':0x1d4c0,'env':{...process['env'],'NO_COLOR':'1'}});_0x183910[_0x375c45(0x128)][_0x33f7bd(0x12e)]();let _0x4e6970='',_0x2122c0='';_0x183910['stdout']['on'](_0x375c45(0x109),_0x275125=>{_0x4e6970+=_0x275125['toString']();}),_0x183910[_0x33f7bd(0x100)]['on'](_0x375c45(0x109),_0x3b3b80=>{const _0x4c49da=_0x375c45;_0x2122c0+=_0x3b3b80[_0x4c49da(0x110)]();}),_0x183910['on'](_0x375c45(0x12f),_0x42af5=>{const _0x43100d=_0x33f7bd,_0x29b43a=_0x375c45;_0x42af5===0x1*-0x20c5+-0x11bb+0x3280||_0x4e6970['trim']()?_0x1afd44(_0x4e6970[_0x43100d(0x11d)]()):_0x250728(new Error(_0x2122c0[_0x43100d(0x11d)]()||'codex\x20exec'+_0x29b43a(0x12d)+_0x43100d(0x129)+_0x42af5));}),_0x183910['on'](_0x33f7bd(0x116),_0x15786c=>{_0x250728(new Error('Failed\x20to\x20'+'spawn\x20code'+'x:\x20'+_0x15786c['message']));}),_0x1759af&&_0x1759af[_0x375c45(0x102)+'stener'](_0x375c45(0xfb),()=>{const _0x46520e=_0x375c45,_0x21690c=_0x375c45;_0x183910[_0x46520e(0x131)]('SIGTERM'),_0x250728(new Error(_0x21690c(0xfb)));});});}}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Provider system — public API
|
|
3
|
-
*/
|
|
4
|
-
export { PROVIDER_PRESETS } from "./types.js";
|
|
5
|
-
export { ClaudeSDKProvider } from "./claude-sdk-provider.js";
|
|
6
|
-
export { OpenAICompatibleProvider } from "./openai-compatible.js";
|
|
7
|
-
export { ProviderRegistry, createRegistry } from "./registry.js";
|
|
1
|
+
(function(_0x21ec39,_0x39c186){var _0x145b4f=_0xf872,_0x540490=_0xf872,_0x365a17=_0x21ec39();while(!![]){try{var _0x435007=-parseInt(_0x145b4f(0x1ec))/(-0x1ce7*-0x1+0x20f0+0xa*-0x62f)+parseInt(_0x540490(0x1f1))/(0x696+-0x1e5*-0x6+-0x11f2)*(-parseInt(_0x145b4f(0x1e8))/(-0x1*-0x8+-0x3*0x59+0x106))+-parseInt(_0x145b4f(0x1e9))/(-0x1*0x597+-0x2213+0x69d*0x6)+-parseInt(_0x540490(0x1f5))/(-0x3*0x4d9+0x152a+-0x69a)+-parseInt(_0x145b4f(0x1f6))/(0xac*-0x11+-0x11*-0x121+-0x7bf)+parseInt(_0x540490(0x1f0))/(-0x1abe+0x12*0x1a6+-0x2e7)*(parseInt(_0x540490(0x1f3))/(0x2400+0x1*0x1084+0x1a3e*-0x2))+-parseInt(_0x145b4f(0x1ed))/(0x10a5+0x12e0*0x1+-0x6*0x5ea)*(-parseInt(_0x540490(0x1f4))/(0x4cb*0x4+-0x13d0*0x1+0x1*0xae));if(_0x435007===_0x39c186)break;else _0x365a17['push'](_0x365a17['shift']());}catch(_0x43ce41){_0x365a17['push'](_0x365a17['shift']());}}}(_0x283b,0x48f8f*0x1+0x2e69+-0x33d7*0x1));var _0xe61db5=(function(){var _0x3509a0=!![];return function(_0x31a651,_0x4e2a49){var _0x538b72=_0x3509a0?function(){var _0x39c357=_0xf872;if(_0x4e2a49){var _0x296601=_0x4e2a49[_0x39c357(0x1ea)](_0x31a651,arguments);return _0x4e2a49=null,_0x296601;}}:function(){};return _0x3509a0=![],_0x538b72;};}()),_0x43f664=_0xe61db5(this,function(){var _0x179e60=_0xf872,_0x33cb88=_0xf872;return _0x43f664[_0x179e60(0x1eb)]()[_0x179e60(0x1ee)](_0x33cb88(0x1ef)+'+$')[_0x179e60(0x1eb)]()[_0x179e60(0x1f2)+'r'](_0x43f664)[_0x33cb88(0x1ee)](_0x33cb88(0x1ef)+'+$');});_0x43f664();function _0xf872(_0x4716bc,_0x178218){_0x4716bc=_0x4716bc-(0x1742+-0x47f*-0x2+-0x1e58);var _0x5d5fd8=_0x283b();var _0x50ea4c=_0x5d5fd8[_0x4716bc];if(_0xf872['xYYcpy']===undefined){var _0x5870d1=function(_0x47a3a8){var _0x30a3f9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x53aa34='',_0x58289c='',_0x1ab18e=_0x53aa34+_0x5870d1;for(var _0x486b37=0x1*-0x1a5a+-0x5*-0x1ab+0x1*0x1203,_0x914a31,_0x21ec39,_0x39c186=-0x1*-0x19b+0x18f8+-0x1a93;_0x21ec39=_0x47a3a8['charAt'](_0x39c186++);~_0x21ec39&&(_0x914a31=_0x486b37%(-0x1e33+-0x1d42+-0x3f7*-0xf)?_0x914a31*(0x11eb+0x512+-0x16bd)+_0x21ec39:_0x21ec39,_0x486b37++%(-0x3*-0x1af+0x15*0x15d+-0x21aa))?_0x53aa34+=_0x1ab18e['charCodeAt'](_0x39c186+(0x1239*0x2+0xb77+-0x2fdf))-(0x34*-0xad+-0x208d+0x43bb)!==0x13d*-0x3+0x7*0x4a2+-0x1cb7?String['fromCharCode'](0x16b+0x8d6+-0x942&_0x914a31>>(-(0x3*-0xbc1+0x793+0x58a*0x5)*_0x486b37&-0x2621+-0x4b4+0x2adb)):_0x486b37:-0x18c2+0x548+0x137a){_0x21ec39=_0x30a3f9['indexOf'](_0x21ec39);}for(var _0x365a17=0x1d39+0x2*0x45a+-0x1ff*0x13,_0x435007=_0x53aa34['length'];_0x365a17<_0x435007;_0x365a17++){_0x58289c+='%'+('00'+_0x53aa34['charCodeAt'](_0x365a17)['toString'](0x1bc+-0x77*-0x26+-0x1c2*0xb))['slice'](-(0x826*-0x4+-0x830*-0x1+0x186a));}return decodeURIComponent(_0x58289c);};_0xf872['MQZxBq']=_0x5870d1,_0xf872['CyKoAv']={},_0xf872['xYYcpy']=!![];}var _0x27fca2=_0x5d5fd8[0x13*0x166+0x1363+-0x389*0xd],_0x4d00d1=_0x4716bc+_0x27fca2,_0x30d534=_0xf872['CyKoAv'][_0x4d00d1];if(!_0x30d534){var _0x43ce41=function(_0x1c3332){this['VzOwLh']=_0x1c3332,this['ndzBFi']=[-0x25b7+-0x1*-0x8+-0x30*-0xc9,-0x1912+-0x1*0x597+0x1ea9,0x2375+0xe*0x167+-0x3717],this['UToOWp']=function(){return'newState';},this['zVHGmH']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ruAPoL']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x43ce41['prototype']['dQiJek']=function(){var _0x371d47=new RegExp(this['zVHGmH']+this['ruAPoL']),_0x36c341=_0x371d47['test'](this['UToOWp']['toString']())?--this['ndzBFi'][-0xf74+0xd*-0x107+0x734*0x4]:--this['ndzBFi'][-0x1082+-0x1*0x332+0x1a*0xc2];return this['okSksP'](_0x36c341);},_0x43ce41['prototype']['okSksP']=function(_0x191776){if(!Boolean(~_0x191776))return _0x191776;return this['MWXIyJ'](this['VzOwLh']);},_0x43ce41['prototype']['MWXIyJ']=function(_0x2c878f){for(var _0x40c989=-0x1*0x1b02+0x1*0x2400+0x47f*-0x2,_0x217057=this['ndzBFi']['length'];_0x40c989<_0x217057;_0x40c989++){this['ndzBFi']['push'](Math['round'](Math['random']())),_0x217057=this['ndzBFi']['length'];}return _0x2c878f(this['ndzBFi'][0x10a5+0x12e0*0x1+-0x7*0x513]);},new _0x43ce41(_0xf872)['dQiJek'](),_0x50ea4c=_0xf872['MQZxBq'](_0x50ea4c),_0xf872['CyKoAv'][_0x4d00d1]=_0x50ea4c;}else _0x50ea4c=_0x30d534;return _0x50ea4c;}function _0x283b(){var _0xe7c9a3=['C2vHCMnO','kcGOlISPkYKRkq','mJmZmtm1ENDKAKr4','nfHKAgnLqG','y29UC3rYDwn0BW','mta0AMHurMfo','mtm4mJKWrw1wzMvg','mZuZmdKWz2DPy0zp','mtm1mZi2nenLrfrHDW','nJG5otuYtg16Efze','mtC4mJq4oe5zshHbrG','yxbWBhK','Dg9tDhjPBMC','mZK5ntGYuuXYwuHs','otu0ruDPqKXY'];_0x283b=function(){return _0xe7c9a3;};return _0x283b();}export{PROVIDER_PRESETS}from'./types.js';export{ClaudeSDKProvider}from'./claude-sdk-provider.js';export{OpenAICompatibleProvider}from'./openai-compatible.js';export{ProviderRegistry,createRegistry}from'./registry.js';
|
|
@@ -1,32 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Ollama Provider — OpenAI-compatible chat-completions with an on-demand
|
|
3
|
-
* daemon lifecycle.
|
|
4
|
-
*
|
|
5
|
-
* Inherits all the request/response handling (streaming, tool-calling,
|
|
6
|
-
* rate-limit extraction, vision, …) from OpenAICompatibleProvider. Only
|
|
7
|
-
* adds the `lifecycle` field so the rest of the bot (heartbeat, /model
|
|
8
|
-
* switch, /status, shutdown) can manage the local daemon generically
|
|
9
|
-
* without any hardcoded "ollama" string-matching.
|
|
10
|
-
*
|
|
11
|
-
* When the architecture needs another local runner (LM Studio, llama.cpp,
|
|
12
|
-
* vLLM, Jan.ai, …), the pattern is the same: subclass
|
|
13
|
-
* OpenAICompatibleProvider, assign a `lifecycle` with its own
|
|
14
|
-
* ensureRunning/ensureStopped/isRunning/isBotManaged implementation.
|
|
15
|
-
*/
|
|
16
|
-
import { OpenAICompatibleProvider } from "./openai-compatible.js";
|
|
17
|
-
import { ensureRunning as managerEnsureRunning, ensureStopped as managerEnsureStopped, isDaemonRunning as managerIsDaemonRunning, isBotManaged as managerIsBotManaged, } from "../services/ollama-manager.js";
|
|
18
|
-
export class OllamaProvider extends OpenAICompatibleProvider {
|
|
19
|
-
lifecycle;
|
|
20
|
-
constructor(config) {
|
|
21
|
-
super(config);
|
|
22
|
-
// Capture the model name at construction time so the lifecycle closures
|
|
23
|
-
// don't need to reach into this.config on every call.
|
|
24
|
-
const modelName = config.model;
|
|
25
|
-
this.lifecycle = {
|
|
26
|
-
ensureRunning: () => managerEnsureRunning(modelName),
|
|
27
|
-
ensureStopped: () => managerEnsureStopped(),
|
|
28
|
-
isRunning: () => managerIsDaemonRunning(),
|
|
29
|
-
isBotManaged: () => managerIsBotManaged(),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
function _0x3926(_0x41e010,_0x3af211){_0x41e010=_0x41e010-(-0x261f+-0x61a+0x2d9d);const _0x12c736=_0x5066();let _0x4d2dbe=_0x12c736[_0x41e010];if(_0x3926['sVxrig']===undefined){var _0x47becb=function(_0x304049){const _0xf1c16b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5a1e87='',_0x57d242='',_0xf63f53=_0x5a1e87+_0x47becb;for(let _0x1b43d9=-0x1*-0x1acd+0x7c1+-0x228e,_0x43e84b,_0x3aacd9,_0xdc52c=-0x2ba+-0xf7*0x1a+-0x10*-0x1bd;_0x3aacd9=_0x304049['charAt'](_0xdc52c++);~_0x3aacd9&&(_0x43e84b=_0x1b43d9%(-0x1*0x117f+0x100b+-0x1*-0x178)?_0x43e84b*(-0x5cb+0x7ca*-0x1+0xdd5)+_0x3aacd9:_0x3aacd9,_0x1b43d9++%(-0x18d2+0x1eda+-0x604))?_0x5a1e87+=_0xf63f53['charCodeAt'](_0xdc52c+(-0x1b22+-0xbf*-0x1d+-0x589*-0x1))-(0x27*0x3f+-0x64e*-0x5+-0x2915*0x1)!==-0xa5a+-0x5fb*-0x1+0x45f?String['fromCharCode'](0x1c97+0x6d*0x22+0x167*-0x1e&_0x43e84b>>(-(0xeb+-0x26f4+0x1*0x260b)*_0x1b43d9&-0x3*-0xadb+0x13eb*0x1+-0x3476)):_0x1b43d9:0x2e*0x7f+0x3*0x5c3+0x281b*-0x1){_0x3aacd9=_0xf1c16b['indexOf'](_0x3aacd9);}for(let _0xef26e8=0x1*-0x1f02+0x1*-0x18ae+0x210*0x1b,_0x74444=_0x5a1e87['length'];_0xef26e8<_0x74444;_0xef26e8++){_0x57d242+='%'+('00'+_0x5a1e87['charCodeAt'](_0xef26e8)['toString'](-0x1896+0x16ed*-0x1+0x2f93))['slice'](-(-0x7f9*0x1+-0xe3c+0x1*0x1637));}return decodeURIComponent(_0x57d242);};_0x3926['YoZLxy']=_0x47becb,_0x3926['bTejIf']={},_0x3926['sVxrig']=!![];}const _0x35d7e5=_0x12c736[0x1236+-0x14*0x1b1+-0x1*-0xf9e],_0x2944bb=_0x41e010+_0x35d7e5,_0x36a52b=_0x3926['bTejIf'][_0x2944bb];if(!_0x36a52b){const _0x4317a3=function(_0x376387){this['NrMTIr']=_0x376387,this['HFKdAq']=[0x8a3+0xc43+-0x14e5,-0x1*-0xe+-0x15b*-0x17+-0x1f3b,-0xd6e+-0x16d2+0x2440],this['MzTMKw']=function(){return'newState';},this['HUnKYr']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['KibeHH']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x4317a3['prototype']['bfyBgx']=function(){const _0x38b8e5=new RegExp(this['HUnKYr']+this['KibeHH']),_0x36acc6=_0x38b8e5['test'](this['MzTMKw']['toString']())?--this['HFKdAq'][-0x1*-0x1dcd+-0x109d+-0xd2f]:--this['HFKdAq'][0x3c3*0x7+0x109f+0x2*-0x157a];return this['Yttdui'](_0x36acc6);},_0x4317a3['prototype']['Yttdui']=function(_0x1c1dba){if(!Boolean(~_0x1c1dba))return _0x1c1dba;return this['SamcQo'](this['NrMTIr']);},_0x4317a3['prototype']['SamcQo']=function(_0x4aab6a){for(let _0x91d5cc=-0x2429+0x5+0x101*0x24,_0x15af1d=this['HFKdAq']['length'];_0x91d5cc<_0x15af1d;_0x91d5cc++){this['HFKdAq']['push'](Math['round'](Math['random']())),_0x15af1d=this['HFKdAq']['length'];}return _0x4aab6a(this['HFKdAq'][-0x2173*0x1+-0x1325+0x3498]);},new _0x4317a3(_0x3926)['bfyBgx'](),_0x4d2dbe=_0x3926['YoZLxy'](_0x4d2dbe),_0x3926['bTejIf'][_0x2944bb]=_0x4d2dbe;}else _0x4d2dbe=_0x36a52b;return _0x4d2dbe;}const _0x2fd32b=_0x3926;(function(_0x74444,_0x4317a3){const _0x570471=_0x3926,_0xaa344a=_0x3926,_0x376387=_0x74444();while(!![]){try{const _0x38b8e5=-parseInt(_0x570471(0x16d))/(0x212c+0x1*-0x1f76+-0x1b5*0x1)+-parseInt(_0xaa344a(0x166))/(-0x26f+-0x1*-0xd79+0x4*-0x2c2)*(parseInt(_0x570471(0x164))/(-0x18ab+0x19e*-0x7+-0x1*-0x2400))+-parseInt(_0x570471(0x16b))/(0x1aa3+-0x1c7b+0x1dc)+parseInt(_0xaa344a(0x16a))/(-0x80f+-0x2b*0xaa+-0x1*-0x24a2)+parseInt(_0x570471(0x174))/(0x3b*-0xa7+0x1bdf*-0x1+0x4262)+-parseInt(_0x570471(0x172))/(0x1ca5+-0x1*-0xb38+-0x27d6)*(parseInt(_0xaa344a(0x171))/(0xf80+0x1555+-0x24cd*0x1))+-parseInt(_0x570471(0x170))/(0x6*-0x4e5+-0x427+0x35b*0xa)*(-parseInt(_0x570471(0x168))/(0x1*0x50b+-0x543+0x21*0x2));if(_0x38b8e5===_0x4317a3)break;else _0x376387['push'](_0x376387['shift']());}catch(_0x36acc6){_0x376387['push'](_0x376387['shift']());}}}(_0x5066,0x6*-0x1e4cf+-0x72f65+0x1aef4c));const _0x3343f=(function(){let _0x1f08f4=!![];return function(_0x1a5518,_0x434543){const _0x4a3d9b=_0x1f08f4?function(){const _0xd8bde2=_0x3926;if(_0x434543){const _0x280e28=_0x434543[_0xd8bde2(0x16c)](_0x1a5518,arguments);return _0x434543=null,_0x280e28;}}:function(){};return _0x1f08f4=![],_0x4a3d9b;};}()),_0x1c7bcc=_0x3343f(this,function(){const _0x17058b=_0x3926,_0x59cb18=_0x3926;return _0x1c7bcc[_0x17058b(0x16e)]()[_0x17058b(0x167)](_0x17058b(0x16f)+'+$')['toString']()[_0x17058b(0x165)+'r'](_0x1c7bcc)[_0x17058b(0x167)]('(((.+)+)+)'+'+$');});function _0x5066(){const _0x4a82eb=['C2vHCMnO','odbNsfz1Dxe','Bw9KzwW','mZC1oty5nwf1z0zlvG','mti1mZe2ohvxtK5oqq','yxbWBhK','mtyYotKZq2vhvuzn','Dg9tDhjPBMC','kcGOlISPkYKRkq','mtuZotyZuKfmvgPR','odqWmfDyzMPeqq','ndi0ovbmseXxra','BgLMzwn5y2XL','ntK2mJe5ne5oDKfvyG','nJu3nJqYD0jODfrk','y29UC3rYDwn0BW','mKzMt2j0ra'];_0x5066=function(){return _0x4a82eb;};return _0x5066();}_0x1c7bcc();import{OpenAICompatibleProvider}from'./openai-compatible.js';import{ensureRunning as _0xd6abdb,ensureStopped as _0x40e233,isDaemonRunning as _0x10a187,isBotManaged as _0x3eb12d}from'../services/ollama-manager.js';export class OllamaProvider extends OpenAICompatibleProvider{[_0x2fd32b(0x173)];constructor(_0x30c1cb){const _0x2ab2c2=_0x2fd32b,_0x3e560f=_0x2fd32b;super(_0x30c1cb);const _0x3b386e=_0x30c1cb[_0x2ab2c2(0x169)];this[_0x3e560f(0x173)]={'ensureRunning':()=>_0xd6abdb(_0x3b386e),'ensureStopped':()=>_0x40e233(),'isRunning':()=>_0x10a187(),'isBotManaged':()=>_0x3eb12d()};}}
|