alvin-bot 5.7.0 → 5.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +25 -31
  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 -174
  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 -583
  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 -86
  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 -1902
  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
+ const _0x12e802=_0x4eb0,_0x3f8c3c=_0x4eb0;(function(_0x2224ac,_0x3199c0){const _0x24a4b5=_0x4eb0,_0x13d64f=_0x4eb0,_0x29628c=_0x2224ac();while(!![]){try{const _0x3aff50=-parseInt(_0x24a4b5(0x1c5))/(0x6a7+-0x1d8b+-0x1*-0x16e5)+parseInt(_0x13d64f(0x1e0))/(0x974+-0x6d*0x1+-0x905)*(-parseInt(_0x24a4b5(0x1d4))/(-0x69d+-0x65b+-0xcfb*-0x1))+parseInt(_0x13d64f(0x1c6))/(0x25be+0x18c1+-0xc7f*0x5)+-parseInt(_0x13d64f(0x1b3))/(0x227*0x2+-0x1eb3*-0x1+-0x22fc)+-parseInt(_0x24a4b5(0x1ad))/(-0x215c+0x1*-0x2d7+0x2439)+-parseInt(_0x13d64f(0x1bc))/(0x20e+0x8e8+-0xaef)*(-parseInt(_0x13d64f(0x1b9))/(0x4b+0x3*0x534+-0xfdf))+-parseInt(_0x13d64f(0x1d8))/(0x2190+0x1b86+-0x3d0d*0x1)*(-parseInt(_0x13d64f(0x1b5))/(0x2600*0x1+-0xe07+-0x1*0x17ef));if(_0x3aff50===_0x3199c0)break;else _0x29628c['push'](_0x29628c['shift']());}catch(_0x15661a){_0x29628c['push'](_0x29628c['shift']());}}}(_0x333e,-0x4cec3+0x105a8e+0x12f27));function _0x4eb0(_0x15cbbf,_0x6f96e5){_0x15cbbf=_0x15cbbf-(0x1*0x108e+0x2*-0x12ec+0x16eb);const _0x2c3912=_0x333e();let _0x109c8e=_0x2c3912[_0x15cbbf];if(_0x4eb0['aBGBam']===undefined){var _0x5d7d40=function(_0x3a8f06){const _0x17f668='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2dbe39='',_0x1a79ba='',_0x300b81=_0x2dbe39+_0x5d7d40;for(let _0x42bd3d=-0x1*0x162a+-0xe54+-0x9*-0x40e,_0x1050fb,_0x3e4c7d,_0x34accc=-0x3b*-0xa1+0xf62*0x1+0x3*-0x117f;_0x3e4c7d=_0x3a8f06['charAt'](_0x34accc++);~_0x3e4c7d&&(_0x1050fb=_0x42bd3d%(-0x3ad+-0x1b32+0x1ee3)?_0x1050fb*(0xdf7+-0x3e*0x13+-0x91d)+_0x3e4c7d:_0x3e4c7d,_0x42bd3d++%(-0x242e+-0xa03*-0x3+0x629))?_0x2dbe39+=_0x300b81['charCodeAt'](_0x34accc+(0x1*0xce2+0x14e8+-0x21c0))-(-0x1207+0x18ae+-0x69d*0x1)!==-0x343+0x41*0x49+-0xf46?String['fromCharCode'](-0x3*0x42b+-0x2*0xec3+-0x1*-0x2b06&_0x1050fb>>(-(-0xb*0x2c5+-0x1b6b+0x474*0xd)*_0x42bd3d&-0x181d*0x1+-0x11b*0xa+0x2331)):_0x42bd3d:0x2431+0x10b6+-0x34e7){_0x3e4c7d=_0x17f668['indexOf'](_0x3e4c7d);}for(let _0x2aeb2d=0x16*-0x65+0x3de+-0x4d*-0x10,_0x58a790=_0x2dbe39['length'];_0x2aeb2d<_0x58a790;_0x2aeb2d++){_0x1a79ba+='%'+('00'+_0x2dbe39['charCodeAt'](_0x2aeb2d)['toString'](-0x173f+-0x68*0x2c+0x292f*0x1))['slice'](-(-0x1b9b+0xcd2*-0x1+0x286f));}return decodeURIComponent(_0x1a79ba);};_0x4eb0['IzSitb']=_0x5d7d40,_0x4eb0['pcQOcx']={},_0x4eb0['aBGBam']=!![];}const _0x333ed1=_0x2c3912[-0x141c+0x1*-0xfea+0x1203*0x2],_0xfd1a1f=_0x15cbbf+_0x333ed1,_0x323277=_0x4eb0['pcQOcx'][_0xfd1a1f];if(!_0x323277){const _0x51487d=function(_0x110bab){this['DlMdnk']=_0x110bab,this['jUqTsF']=[0x4c+0x309+-0x354,-0x1c63+0x4c8+0x179b,-0x25a2*-0x1+-0x16f+-0x2433],this['YZNiYx']=function(){return'newState';},this['ebufSu']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['VPfLii']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x51487d['prototype']['QqJyDJ']=function(){const _0x1dd93d=new RegExp(this['ebufSu']+this['VPfLii']),_0x5c7940=_0x1dd93d['test'](this['YZNiYx']['toString']())?--this['jUqTsF'][-0x1*-0xcb6+-0xa85+-0x38*0xa]:--this['jUqTsF'][-0x874+-0x69d+0xf11];return this['KGzXrg'](_0x5c7940);},_0x51487d['prototype']['KGzXrg']=function(_0x7c03ed){if(!Boolean(~_0x7c03ed))return _0x7c03ed;return this['Fqcejw'](this['DlMdnk']);},_0x51487d['prototype']['Fqcejw']=function(_0x5e112b){for(let _0x1e91bb=0x6cd*0x4+-0x1d4e+0x21a,_0x3b7dec=this['jUqTsF']['length'];_0x1e91bb<_0x3b7dec;_0x1e91bb++){this['jUqTsF']['push'](Math['round'](Math['random']())),_0x3b7dec=this['jUqTsF']['length'];}return _0x5e112b(this['jUqTsF'][0x3ab*0x2+0xa09*-0x3+-0x797*-0x3]);},new _0x51487d(_0x4eb0)['QqJyDJ'](),_0x109c8e=_0x4eb0['IzSitb'](_0x109c8e),_0x4eb0['pcQOcx'][_0xfd1a1f]=_0x109c8e;}else _0x109c8e=_0x323277;return _0x109c8e;}const _0x5f0e58=(function(){let _0x3ab3b1=!![];return function(_0x3a06df,_0x2b33b5){const _0xe7f0df=_0x3ab3b1?function(){const _0x42ecbf=_0x4eb0;if(_0x2b33b5){const _0x1c2584=_0x2b33b5[_0x42ecbf(0x1b2)](_0x3a06df,arguments);return _0x2b33b5=null,_0x1c2584;}}:function(){};return _0x3ab3b1=![],_0xe7f0df;};}()),_0x32eed8=_0x5f0e58(this,function(){const _0x23b315=_0x4eb0,_0x455664=_0x4eb0;return _0x32eed8[_0x23b315(0x1e1)]()[_0x23b315(0x1c9)]('(((.+)+)+)'+'+$')[_0x23b315(0x1e1)]()[_0x23b315(0x1aa)+'r'](_0x32eed8)[_0x455664(0x1c9)](_0x455664(0x1de)+'+$');});_0x32eed8();import{spawn}from'child_process';export class CodexCLIProvider{[_0x12e802(0x1dc)];constructor(_0xe9d4c3){const _0x29cf4d=_0x12e802,_0x337a87=_0x12e802;this[_0x29cf4d(0x1dc)]={'type':_0x29cf4d(0x1c2),'name':_0x337a87(0x1b7)+_0x337a87(0x1bd),'model':_0x337a87(0x1c3),'supportsTools':!![],'supportsVision':![],'supportsStreaming':!![],..._0xe9d4c3};}async*[_0x12e802(0x1c0)](_0x10334a){const _0x5aab3d=_0x12e802,_0x51deff=_0x3f8c3c,_0x40bb0c=['exec',_0x5aab3d(0x1a2)+'-repo-chec'+'k',_0x51deff(0x1a9)+'l','-s',_0x5aab3d(0x1cf),'-m',this[_0x5aab3d(0x1dc)]['model']];_0x10334a['workingDir']&&_0x40bb0c['push']('-C',_0x10334a[_0x51deff(0x1cd)]);const {buildRuntimeHeader:_0x2a126a}=await import(_0x51deff(0x1ac)+'header.js'),_0x29ba51=_0x2a126a();let _0x5403e2=_0x10334a[_0x51deff(0x1a1)];_0x10334a[_0x51deff(0x1d6)+'pt']?_0x5403e2=_0x29ba51+'\x0a\x0a'+_0x10334a[_0x51deff(0x1d6)+'pt']+'\x0a\x0a'+_0x5403e2:_0x5403e2=_0x29ba51+'\x0a\x0a'+_0x5403e2;_0x40bb0c[_0x51deff(0x1cb)](_0x5403e2);try{const _0x118bfa=await this[_0x51deff(0x1a6)](_0x40bb0c,_0x10334a[_0x5aab3d(0x1b4)+'l']);_0x118bfa['trim']()&&(yield{'type':_0x5aab3d(0x1bb),'text':_0x118bfa,'delta':_0x118bfa}),yield{'type':_0x5aab3d(0x1d9),'text':_0x118bfa};}catch(_0x481137){_0x481137 instanceof Error&&_0x481137[_0x51deff(0x1ae)][_0x5aab3d(0x1a8)]('abort')?yield{'type':'error','error':_0x51deff(0x1d7)+_0x51deff(0x1af)}:yield{'type':_0x5aab3d(0x1bf),'error':_0x5aab3d(0x1b7)+_0x5aab3d(0x1c7)+(_0x481137 instanceof Error?_0x481137[_0x5aab3d(0x1ae)]:String(_0x481137))};}}async[_0x3f8c3c(0x1d5)+'e'](){const _0x38151f=_0x3f8c3c,_0xdd4fb2=_0x3f8c3c;try{const {execSync:_0x387590}=await import(_0x38151f(0x1d3)+_0x38151f(0x1ca)),_0x5458d2=_0x387590(_0x38151f(0x1ab)+'n\x20status\x202'+_0xdd4fb2(0x1c1),{'stdio':_0x38151f(0x1c8),'timeout':0x1388,'encoding':_0x38151f(0x1cc)});return _0x5458d2[_0xdd4fb2(0x1a8)](_0xdd4fb2(0x1a5));}catch{return![];}}['getInfo'](){const _0x4113c0=_0x12e802,_0x5aff01=_0x12e802;return{'name':this[_0x4113c0(0x1dc)][_0x4113c0(0x1b0)],'model':this[_0x4113c0(0x1dc)]['model'],'status':'✅\x20Codex\x20CL'+_0x5aff01(0x1be)+_0x5aff01(0x1d2)};}[_0x3f8c3c(0x1a6)](_0x8a4f07,_0x5779bb){return new Promise((_0xaffe6c,_0x28096c)=>{const _0x78bd86=_0x4eb0,_0x5dcdec=_0x4eb0,_0x3f69b9=spawn(_0x78bd86(0x1dd),_0x8a4f07,{'stdio':[_0x5dcdec(0x1c8),'pipe',_0x78bd86(0x1c8)],'timeout':0x1d4c0,'env':{...process['env'],'NO_COLOR':'1'}});_0x3f69b9[_0x5dcdec(0x1da)]['end']();let _0x493436='',_0x3818cc='';_0x3f69b9['stdout']['on'](_0x5dcdec(0x1d1),_0x35222b=>{const _0x40fd02=_0x78bd86;_0x493436+=_0x35222b[_0x40fd02(0x1e1)]();}),_0x3f69b9[_0x5dcdec(0x1a3)]['on'](_0x5dcdec(0x1d1),_0x1ce767=>{const _0x417190=_0x78bd86;_0x3818cc+=_0x1ce767[_0x417190(0x1e1)]();}),_0x3f69b9['on'](_0x5dcdec(0x1c4),_0x12f806=>{const _0x21e69c=_0x78bd86,_0x36ebc4=_0x78bd86;_0x12f806===0x1*-0xb1c+0x251b+0x19ff*-0x1||_0x493436[_0x21e69c(0x1a7)]()?_0xaffe6c(_0x493436[_0x21e69c(0x1a7)]()):_0x28096c(new Error(_0x3818cc['trim']()||_0x36ebc4(0x1df)+'\x20exited\x20wi'+_0x36ebc4(0x1d0)+_0x12f806));}),_0x3f69b9['on'](_0x78bd86(0x1bf),_0x19af98=>{const _0x52d5f8=_0x5dcdec,_0x287926=_0x5dcdec;_0x28096c(new Error(_0x52d5f8(0x1b1)+_0x52d5f8(0x1b8)+_0x287926(0x1b6)+_0x19af98[_0x287926(0x1ae)]));}),_0x5779bb&&_0x5779bb['addEventLi'+_0x78bd86(0x1a4)](_0x5dcdec(0x1ba),()=>{const _0x103b88=_0x5dcdec,_0x22c74e=_0x5dcdec;_0x3f69b9[_0x103b88(0x1db)](_0x103b88(0x1ce)),_0x28096c(new Error(_0x103b88(0x1ba)));});});}}function _0x333e(){const _0x334b36=['pIyX','y29KzxGTy2XP','z3b0ltuUna','y2XVC2u','mtiWnZq0ovL2zMHuCq','mtuXmZe5mMzNzhvdrq','zxjYB3i6ia','CgLWzq','C2vHCMnO','zxnZ','ChvZAa','DxrMltG','D29YA2LUz0rPCG','u0Lhvevstq','CMvHzc1VBMX5','DgGGy29Kzsa','zgf0yq','igf1DgGP','y2HPBgrFChjVyW','ntu4m2PjBw5zta','AxnbDMfPBgfIBa','C3LZDgvTuhjVBq','uMvXDwvZDcbHyG','oufdCwrKAa','zg9Uzq','C3rKAw4','A2LSBa','y29UzMLN','y29KzxG','kcGOlISPkYKRkq','y29KzxGGzxHLyW','mtCXmMDjvMPZwq','Dg9tDhjPBMC','ChjVBxb0','ls1ZA2LWlwDPDa','C3rKzxjY','C3rLBMvY','tg9Nz2vKigLU','zxHLy0nVzgv4','DhjPBq','Aw5JBhvKzxm','ls1LCgHLBwvYyq','y29UC3rYDwn0BW','y29KzxGGBg9NAq','lI9YDw50Aw1Llq','odm1nZqWyKfSrLvO','BwvZC2fNzq','B3j0zwq','BMfTzq','rMfPBgvKihrVia','yxbWBhK','nJy4nZm3nuXJs2PRBW','ywjVCNrtAwDUyq','mZK0mtuWnZbeCwP5wNO','EdOG','q29KzxGGq0Xjia','C3bHD24Gy29Kzq','ndiYmJq4ChrdquLy','ywjVCNq','Dgv4Da','mta1CNffwhzT','ke9Wzw5bssK','ssaOq2HHDeDqva','zxjYB3i','CxvLCNK'];_0x333e=function(){return _0x334b36;};return _0x333e();}
@@ -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(_0x54c63a,_0x4a4128){var _0x4267b8=_0x51ab,_0x561acd=_0x51ab,_0x5bab4b=_0x54c63a();while(!![]){try{var _0x4c83b8=-parseInt(_0x4267b8(0x172))/(-0xd1f*0x1+-0x34*-0x79+-0xb74)*(parseInt(_0x4267b8(0x175))/(0x2024+0x959*0x4+-0x4586))+-parseInt(_0x4267b8(0x179))/(0xad*0xa+-0x9ff+-0x10*-0x34)*(-parseInt(_0x4267b8(0x17b))/(0x243d+-0x13bf+0x26*-0x6f))+parseInt(_0x561acd(0x178))/(0x2*-0xd29+0x19c0+-0x1*-0x97)+-parseInt(_0x4267b8(0x177))/(-0x21b2+-0x1*-0x931+0x1887)*(-parseInt(_0x4267b8(0x176))/(-0xb6+0x7*0x481+0x233*-0xe))+parseInt(_0x4267b8(0x17e))/(-0x180*0xc+0x1*0x2117+-0x3*0x505)*(-parseInt(_0x561acd(0x17d))/(0x186c+0x1e65+-0xdb2*0x4))+parseInt(_0x561acd(0x17f))/(-0x15*-0xb+0x83*-0x3+0xac)*(parseInt(_0x4267b8(0x17c))/(-0x54a+-0x144a+-0x7*-0x3a9))+-parseInt(_0x561acd(0x170))/(-0x313*0x7+0x1be3+-0x652*0x1)*(-parseInt(_0x561acd(0x173))/(0x4*-0x2a1+-0x91*0xd+0x5a*0x33));if(_0x4c83b8===_0x4a4128)break;else _0x5bab4b['push'](_0x5bab4b['shift']());}catch(_0x24bd43){_0x5bab4b['push'](_0x5bab4b['shift']());}}}(_0x26d0,0x5*-0x637d+-0x79d15+-0x1*-0xe6179));var _0x472a68=(function(){var _0xed9e36=!![];return function(_0x35b231,_0x2d2b96){var _0x3011f7=_0xed9e36?function(){if(_0x2d2b96){var _0x488c83=_0x2d2b96['apply'](_0x35b231,arguments);return _0x2d2b96=null,_0x488c83;}}:function(){};return _0xed9e36=![],_0x3011f7;};}()),_0x2d23d0=_0x472a68(this,function(){var _0x470971=_0x51ab,_0x33ea70=_0x51ab;return _0x2d23d0['toString']()[_0x470971(0x171)](_0x470971(0x17a)+'+$')[_0x33ea70(0x174)]()['constructo'+'r'](_0x2d23d0)[_0x470971(0x171)](_0x470971(0x17a)+'+$');});_0x2d23d0();export{PROVIDER_PRESETS}from'./types.js';export{ClaudeSDKProvider}from'./claude-sdk-provider.js';function _0x51ab(_0x19b8ac,_0x58131a){_0x19b8ac=_0x19b8ac-(0x29d+-0xa9d+-0x2*-0x4b8);var _0x397a3c=_0x26d0();var _0xb6c2a4=_0x397a3c[_0x19b8ac];if(_0x51ab['hCeKDE']===undefined){var _0x5d8f5a=function(_0x4d7e55){var _0x54c905='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x76102b='',_0x189516='',_0x51e19e=_0x76102b+_0x5d8f5a;for(var _0xc5a7b1=0x1bd7+-0x60+-0x1b77,_0x30c9a8,_0x2dd10f,_0x5c0f2a=0x1d6a+-0x1*-0xd58+0x1a5*-0x1a;_0x2dd10f=_0x4d7e55['charAt'](_0x5c0f2a++);~_0x2dd10f&&(_0x30c9a8=_0xc5a7b1%(0x1*-0x144d+-0xaf6*0x1+0x11*0x1d7)?_0x30c9a8*(-0x6e2+0x228+-0x4fa*-0x1)+_0x2dd10f:_0x2dd10f,_0xc5a7b1++%(0xec*0xe+-0x39*-0x62+-0x6*0x5c9))?_0x76102b+=_0x51e19e['charCodeAt'](_0x5c0f2a+(0xb*-0xcf+-0x23*0xbc+0x22a3))-(-0x7*-0x458+0x962+0x4*-0x9f0)!==0x1989+0x862+0x1c9*-0x13?String['fromCharCode'](-0x246*-0xb+0x2*-0x61+-0x1741&_0x30c9a8>>(-(0x4f*-0x41+0x1e1*0x8+0x509)*_0xc5a7b1&-0x1a*-0xd5+-0x1*-0xdc9+-0x2365)):_0xc5a7b1:-0x4cc+-0xa27+0xef3){_0x2dd10f=_0x54c905['indexOf'](_0x2dd10f);}for(var _0x14ef17=-0x237*0x5+-0x75a*-0x4+-0x1*0x1255,_0x575ab2=_0x76102b['length'];_0x14ef17<_0x575ab2;_0x14ef17++){_0x189516+='%'+('00'+_0x76102b['charCodeAt'](_0x14ef17)['toString'](0x21c4+0x2503*-0x1+-0x4d*-0xb))['slice'](-(-0xc9*0x7+-0x1*0x439+0x9ba));}return decodeURIComponent(_0x189516);};_0x51ab['xCoPpA']=_0x5d8f5a,_0x51ab['vocPMd']={},_0x51ab['hCeKDE']=!![];}var _0x321f2c=_0x397a3c[-0x22e8+-0x19+-0x2301*-0x1],_0x4f22f6=_0x19b8ac+_0x321f2c,_0x27dadc=_0x51ab['vocPMd'][_0x4f22f6];if(!_0x27dadc){var _0x4e525e=function(_0x1f4a13){this['FtZRBc']=_0x1f4a13,this['NwNRHG']=[-0x11a9+0x210d*-0x1+0x32b7,0x22b6+0x116d*-0x1+-0x1149,0x364+-0x3*-0x705+0x239*-0xb],this['dKtPAZ']=function(){return'newState';},this['wtJIZA']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['lctJSW']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x4e525e['prototype']['NKdVUJ']=function(){var _0x293baa=new RegExp(this['wtJIZA']+this['lctJSW']),_0x16ec49=_0x293baa['test'](this['dKtPAZ']['toString']())?--this['NwNRHG'][-0x1004+-0x1b7*-0xe+-0x7fd]:--this['NwNRHG'][-0x7f6*0x4+0x68f*0x2+-0x33*-0x5e];return this['HfYizu'](_0x16ec49);},_0x4e525e['prototype']['HfYizu']=function(_0x10b9a2){if(!Boolean(~_0x10b9a2))return _0x10b9a2;return this['mUhXVT'](this['FtZRBc']);},_0x4e525e['prototype']['mUhXVT']=function(_0x15fa96){for(var _0x401c74=0x2700+-0x1*0xf4f+-0x1*0x17b1,_0x1d5369=this['NwNRHG']['length'];_0x401c74<_0x1d5369;_0x401c74++){this['NwNRHG']['push'](Math['round'](Math['random']())),_0x1d5369=this['NwNRHG']['length'];}return _0x15fa96(this['NwNRHG'][-0xca7*0x1+0xd*-0xe+0x137*0xb]);},new _0x4e525e(_0x51ab)['NKdVUJ'](),_0xb6c2a4=_0x51ab['xCoPpA'](_0xb6c2a4),_0x51ab['vocPMd'][_0x4f22f6]=_0xb6c2a4;}else _0xb6c2a4=_0x27dadc;return _0xb6c2a4;}export{OpenAICompatibleProvider}from'./openai-compatible.js';export{ProviderRegistry,createRegistry}from'./registry.js';function _0x26d0(){var _0x39d448=['mtiXmMPvDNPJEG','C2vHCMnO','nvLVDwLqrW','nteXmdnKy01HB2u','Dg9tDhjPBMC','nZa5ntrhChLvr0W','n09krhfjCq','mteXotmYneTvuevvzW','mtm2mJeZnvrOquPTBq','m3vVwKrrrG','kcGOlISPkYKRkq','oti4mty4DMHhuLf6','mtu0wurQD3Ho','mtHZve1KtwO','mJqZnty1nM53Dhf2Bq','mtaYodbyEvDICfa'];_0x26d0=function(){return _0x39d448;};return _0x26d0();}
@@ -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 _0x43b5(_0x24f6be,_0x581aea){_0x24f6be=_0x24f6be-(0x839*0x4+0x185e+0x22*-0x1a5);const _0x249cec=_0x3a37();let _0x2a294c=_0x249cec[_0x24f6be];if(_0x43b5['lxlKLv']===undefined){var _0x24e685=function(_0x192624){const _0x3fcf3b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2897c1='',_0xb0296b='',_0x25f389=_0x2897c1+_0x24e685;for(let _0x2b3ab7=-0x7*-0x32f+-0x5*0xee+-0x11a3,_0x26e43a,_0x316f85,_0x59bdc0=0x8e7+0x2*0x256+-0x5*0x2b7;_0x316f85=_0x192624['charAt'](_0x59bdc0++);~_0x316f85&&(_0x26e43a=_0x2b3ab7%(-0x571+0x3*0x609+-0xca6)?_0x26e43a*(-0x66c+-0x3a*-0xc+0x3f4)+_0x316f85:_0x316f85,_0x2b3ab7++%(0x1*0x1997+-0x16a+-0x1*0x1829))?_0x2897c1+=_0x25f389['charCodeAt'](_0x59bdc0+(0x4*0x49b+-0x180b+0x45*0x15))-(0x61*0x61+-0x128+-0x238f)!==0x1495*-0x1+0x8d1+0xbc4?String['fromCharCode'](-0x25*0x7a+-0x1d3+0x1474&_0x26e43a>>(-(-0x534+-0x348+0x87e)*_0x2b3ab7&0x1569*0x1+0x1*0x2345+0x818*-0x7)):_0x2b3ab7:-0x92*0xb+0x23c8+-0x1d82){_0x316f85=_0x3fcf3b['indexOf'](_0x316f85);}for(let _0x1964f2=0x7*0xfb+-0x94a+-0x1b*-0x17,_0x200f2e=_0x2897c1['length'];_0x1964f2<_0x200f2e;_0x1964f2++){_0xb0296b+='%'+('00'+_0x2897c1['charCodeAt'](_0x1964f2)['toString'](0xb49+0x11e7*-0x1+0x6ae))['slice'](-(-0x26f5+-0x1*0x1c6d+0x4364));}return decodeURIComponent(_0xb0296b);};_0x43b5['xpnUCe']=_0x24e685,_0x43b5['FaMnIj']={},_0x43b5['lxlKLv']=!![];}const _0x44977c=_0x249cec[0x13b+0xbd3+-0x6*0x22d],_0xc61aa8=_0x24f6be+_0x44977c,_0xf830d=_0x43b5['FaMnIj'][_0xc61aa8];if(!_0xf830d){const _0x72690b=function(_0x17c4d7){this['BhGcxV']=_0x17c4d7,this['EGVsTG']=[-0x1*0x1c41+-0x1*-0xcff+0xf43,-0x21a8+-0x48*0x83+0x4680,0xd75+0x914*-0x4+0x16db],this['cWQPFX']=function(){return'newState';},this['gQpnwH']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['vPhPAT']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x72690b['prototype']['DPNJXw']=function(){const _0x5512b6=new RegExp(this['gQpnwH']+this['vPhPAT']),_0xc5b8ff=_0x5512b6['test'](this['cWQPFX']['toString']())?--this['EGVsTG'][0x2173*-0x1+-0x88c+0x2a00]:--this['EGVsTG'][0xe4d+-0x4*0x2a6+-0x3b5];return this['WMMFos'](_0xc5b8ff);},_0x72690b['prototype']['WMMFos']=function(_0x1ff01c){if(!Boolean(~_0x1ff01c))return _0x1ff01c;return this['XWkzuT'](this['BhGcxV']);},_0x72690b['prototype']['XWkzuT']=function(_0x26156e){for(let _0x17d164=-0x9e6+0xa8c+-0xa6,_0x16bb9a=this['EGVsTG']['length'];_0x17d164<_0x16bb9a;_0x17d164++){this['EGVsTG']['push'](Math['round'](Math['random']())),_0x16bb9a=this['EGVsTG']['length'];}return _0x26156e(this['EGVsTG'][-0x289+0x9c7*0x1+0x12*-0x67]);},new _0x72690b(_0x43b5)['DPNJXw'](),_0x2a294c=_0x43b5['xpnUCe'](_0x2a294c),_0x43b5['FaMnIj'][_0xc61aa8]=_0x2a294c;}else _0x2a294c=_0xf830d;return _0x2a294c;}const _0x4046dc=_0x43b5;(function(_0x263ece,_0x1a4191){const _0x4427a4=_0x43b5,_0x3f023d=_0x43b5,_0x28baff=_0x263ece();while(!![]){try{const _0x5a7057=parseInt(_0x4427a4(0x15a))/(0x9*-0x1ab+-0x1c41+-0x1*-0x2b45)+-parseInt(_0x4427a4(0x167))/(-0xa04+-0x21a8+-0x2*-0x15d7)+-parseInt(_0x4427a4(0x165))/(-0x1f2+0xd75+0x2e0*-0x4)*(parseInt(_0x3f023d(0x160))/(-0x944+0x2173*-0x1+0x2abb))+parseInt(_0x4427a4(0x162))/(-0xfb1+0xe4d+-0x1*-0x169)*(parseInt(_0x4427a4(0x15f))/(-0xa7*0xb+-0x9e6+0x1119))+-parseInt(_0x4427a4(0x15e))/(-0x289+0x9c7*0x1+0x1*-0x737)+-parseInt(_0x3f023d(0x163))/(-0x8c9+0x211d+-0x184c)*(-parseInt(_0x3f023d(0x159))/(0x1120+-0x1cee+-0x1*-0xbd7))+-parseInt(_0x4427a4(0x164))/(-0x1e0d+-0x7fa+0x2611*0x1)*(-parseInt(_0x4427a4(0x168))/(-0x1244+-0xcce+-0x213*-0xf));if(_0x5a7057===_0x1a4191)break;else _0x28baff['push'](_0x28baff['shift']());}catch(_0x23c134){_0x28baff['push'](_0x28baff['shift']());}}}(_0x3a37,-0x70240+-0x44625+0x15e41b));const _0xef15f3=(function(){let _0x59340c=!![];return function(_0x36f9f1,_0x4f3117){const _0x26ec99=_0x59340c?function(){const _0x54537c=_0x43b5;if(_0x4f3117){const _0x290c52=_0x4f3117[_0x54537c(0x158)](_0x36f9f1,arguments);return _0x4f3117=null,_0x290c52;}}:function(){};return _0x59340c=![],_0x26ec99;};}()),_0x54901f=_0xef15f3(this,function(){const _0x35415e=_0x43b5,_0x1f70ce=_0x43b5;return _0x54901f['toString']()[_0x35415e(0x15b)](_0x1f70ce(0x166)+'+$')['toString']()[_0x35415e(0x15d)+'r'](_0x54901f)[_0x35415e(0x15b)]('(((.+)+)+)'+'+$');});_0x54901f();import{OpenAICompatibleProvider}from'./openai-compatible.js';function _0x3a37(){const _0x47f120=['oev0t0XLra','oti5ndb2ywHYwNK','m0zevhnJBW','kcGOlISPkYKRkq','mty5nJe0mNPvuMLVBq','mte4ohjbsg1KtG','yxbWBhK','odK5mti3ow1iB29uwa','mtGWmtyZv0zZu1jz','C2vHCMnO','Bw9KzwW','y29UC3rYDwn0BW','mZu1ndm5mhzyqMPYzq','odi5mtrywKrisLC','ote0ndy0EufZz2L3','BgLMzwn5y2XL','mZv4CNH0t1G'];_0x3a37=function(){return _0x47f120;};return _0x3a37();}import{ensureRunning as _0x16031e,ensureStopped as _0x3a8d5b,isDaemonRunning as _0x35638f,isBotManaged as _0xd054dc}from'../services/ollama-manager.js';export class OllamaProvider extends OpenAICompatibleProvider{[_0x4046dc(0x161)];constructor(_0x45c907){const _0x4aa828=_0x4046dc,_0x290234=_0x4046dc;super(_0x45c907);const _0x16bfb5=_0x45c907[_0x4aa828(0x15c)];this[_0x4aa828(0x161)]={'ensureRunning':()=>_0x16031e(_0x16bfb5),'ensureStopped':()=>_0x3a8d5b(),'isRunning':()=>_0x35638f(),'isBotManaged':()=>_0xd054dc()};}}