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.
Files changed (137) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +1 -1
  3. package/dist/claude.js +1 -102
  4. package/dist/config.js +1 -96
  5. package/dist/engine.js +1 -90
  6. package/dist/find-claude-binary.js +1 -98
  7. package/dist/handlers/async-agent-chunk-handler.js +1 -50
  8. package/dist/handlers/background-bypass.js +1 -75
  9. package/dist/handlers/commands.js +1 -2336
  10. package/dist/handlers/cron-progress.js +1 -52
  11. package/dist/handlers/document.js +1 -194
  12. package/dist/handlers/message.js +1 -959
  13. package/dist/handlers/photo.js +1 -154
  14. package/dist/handlers/platform-message.js +1 -360
  15. package/dist/handlers/stuck-timer.js +1 -54
  16. package/dist/handlers/video.js +1 -237
  17. package/dist/handlers/voice.js +1 -148
  18. package/dist/i18n.js +1 -805
  19. package/dist/index.js +1 -697
  20. package/dist/init-data-dir.js +1 -98
  21. package/dist/middleware/auth.js +1 -233
  22. package/dist/migrate.js +1 -162
  23. package/dist/paths.js +1 -146
  24. package/dist/platforms/discord.js +1 -175
  25. package/dist/platforms/index.js +1 -130
  26. package/dist/platforms/signal.js +1 -205
  27. package/dist/platforms/slack-slash-parser.js +1 -32
  28. package/dist/platforms/slack.js +1 -501
  29. package/dist/platforms/telegram.js +1 -111
  30. package/dist/platforms/types.js +1 -8
  31. package/dist/platforms/whatsapp-auth-helpers.js +1 -53
  32. package/dist/platforms/whatsapp.js +1 -707
  33. package/dist/providers/claude-sdk-provider.js +1 -565
  34. package/dist/providers/codex-cli-provider.js +1 -134
  35. package/dist/providers/index.js +1 -7
  36. package/dist/providers/ollama-provider.js +1 -32
  37. package/dist/providers/openai-compatible.js +1 -406
  38. package/dist/providers/registry.js +1 -352
  39. package/dist/providers/runtime-header.js +1 -45
  40. package/dist/providers/tool-executor.js +1 -475
  41. package/dist/providers/types.js +1 -227
  42. package/dist/services/access.js +1 -144
  43. package/dist/services/allowed-users-gate.js +1 -56
  44. package/dist/services/alvin-dispatch.js +1 -130
  45. package/dist/services/alvin-mcp-tools.js +1 -104
  46. package/dist/services/asset-index.js +1 -224
  47. package/dist/services/async-agent-parser.js +1 -418
  48. package/dist/services/async-agent-watcher.js +1 -443
  49. package/dist/services/auto-diagnostic.js +1 -228
  50. package/dist/services/broadcast.js +1 -52
  51. package/dist/services/browser-manager.js +1 -562
  52. package/dist/services/browser-webfetch.js +1 -127
  53. package/dist/services/browser.js +1 -121
  54. package/dist/services/cdp-bootstrap.js +1 -357
  55. package/dist/services/compaction.js +1 -144
  56. package/dist/services/critical-notify.js +1 -203
  57. package/dist/services/cron-resolver.js +1 -58
  58. package/dist/services/cron-scheduling.js +1 -310
  59. package/dist/services/cron.js +1 -861
  60. package/dist/services/custom-tools.js +1 -317
  61. package/dist/services/delivery-queue.js +1 -173
  62. package/dist/services/delivery-registry.js +1 -21
  63. package/dist/services/disk-cleanup.js +1 -203
  64. package/dist/services/elevenlabs.js +1 -58
  65. package/dist/services/embeddings/auto-detect.js +1 -74
  66. package/dist/services/embeddings/fts5.js +1 -108
  67. package/dist/services/embeddings/gemini.js +1 -65
  68. package/dist/services/embeddings/index.js +1 -496
  69. package/dist/services/embeddings/ollama.js +1 -78
  70. package/dist/services/embeddings/openai.js +1 -49
  71. package/dist/services/embeddings/provider.js +1 -22
  72. package/dist/services/embeddings/vector-base.js +1 -113
  73. package/dist/services/embeddings-migration.js +1 -193
  74. package/dist/services/embeddings.js +1 -9
  75. package/dist/services/env-file.js +1 -50
  76. package/dist/services/exec-guard.js +1 -71
  77. package/dist/services/fallback-order.js +1 -154
  78. package/dist/services/file-permissions.js +1 -93
  79. package/dist/services/heartbeat-file.js +1 -65
  80. package/dist/services/heartbeat.js +1 -313
  81. package/dist/services/hooks.js +1 -44
  82. package/dist/services/imagegen.js +1 -72
  83. package/dist/services/language-detect.js +1 -154
  84. package/dist/services/markdown.js +1 -63
  85. package/dist/services/mcp.js +1 -263
  86. package/dist/services/memory-extractor.js +1 -178
  87. package/dist/services/memory-inject-mode.js +1 -43
  88. package/dist/services/memory-layers.js +1 -156
  89. package/dist/services/memory.js +1 -146
  90. package/dist/services/ollama-manager.js +1 -339
  91. package/dist/services/permissions-wizard.js +1 -291
  92. package/dist/services/personality.js +1 -376
  93. package/dist/services/plugins.js +1 -171
  94. package/dist/services/preflight.js +1 -292
  95. package/dist/services/process-manager.js +1 -291
  96. package/dist/services/release-highlights.js +1 -79
  97. package/dist/services/reminders.js +1 -97
  98. package/dist/services/restart.js +1 -48
  99. package/dist/services/security-audit.js +1 -74
  100. package/dist/services/self-diagnosis.js +1 -272
  101. package/dist/services/self-search.js +1 -129
  102. package/dist/services/session-persistence.js +1 -237
  103. package/dist/services/session.js +1 -282
  104. package/dist/services/skills.js +1 -290
  105. package/dist/services/ssrf-guard.js +1 -162
  106. package/dist/services/standing-orders.js +1 -29
  107. package/dist/services/steer-channel.js +1 -46
  108. package/dist/services/stop-controller.js +1 -52
  109. package/dist/services/subagent-dedup.js +1 -0
  110. package/dist/services/subagent-delivery.js +1 -452
  111. package/dist/services/subagent-stats.js +1 -123
  112. package/dist/services/subagents.js +1 -814
  113. package/dist/services/sudo.js +1 -329
  114. package/dist/services/telegram.js +1 -158
  115. package/dist/services/timing-safe-bearer.js +1 -51
  116. package/dist/services/tool-discovery.js +1 -214
  117. package/dist/services/trends.js +1 -580
  118. package/dist/services/updater.js +1 -291
  119. package/dist/services/usage-tracker.js +1 -144
  120. package/dist/services/users.js +1 -271
  121. package/dist/services/voice.js +1 -104
  122. package/dist/services/watchdog-brake.js +1 -154
  123. package/dist/services/watchdog.js +1 -311
  124. package/dist/services/workspaces.js +1 -276
  125. package/dist/tui/index.js +1 -667
  126. package/dist/util/console-formatter.js +1 -109
  127. package/dist/util/debounce.js +1 -24
  128. package/dist/util/telegram-error-filter.js +1 -62
  129. package/dist/version.js +1 -24
  130. package/dist/web/bind-strategy.js +1 -42
  131. package/dist/web/canvas.js +1 -30
  132. package/dist/web/doctor-api.js +1 -604
  133. package/dist/web/openai-compat.js +1 -252
  134. package/dist/web/server.js +1 -1831
  135. package/dist/web/setup-api.js +1 -1101
  136. package/package.json +5 -2
  137. 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)));});});}}
@@ -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()};}}