@bkm016/basalt 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/{chunk-gw05p4g3.js → chunk-053vb71h.js} +1 -1
- package/{chunk-3c330qna.js → chunk-063vbmtp.js} +2 -2
- package/{chunk-bgkegf0k.js → chunk-0javrjcm.js} +4 -4
- package/{chunk-pjr91g6k.js → chunk-10p3mb40.js} +1 -1
- package/{chunk-mkp28k1x.js → chunk-39vwrg8n.js} +2 -2
- package/{chunk-8xb636vr.js → chunk-6kdgk70p.js} +2 -2
- package/{chunk-9z7sdh5e.js → chunk-6ptv4g5e.js} +1 -1
- package/{chunk-zzwjt7fp.js → chunk-75434aay.js} +1 -1
- package/{chunk-ar3dbfp9.js → chunk-7hr6zw2m.js} +1 -1
- package/{chunk-h1rypb99.js → chunk-8gw5bvh3.js} +4 -4
- package/{chunk-a4b75ekk.js → chunk-8saewt61.js} +2 -2
- package/{chunk-sqaam5ak.js → chunk-8wj32837.js} +1 -1
- package/{chunk-539ekagy.js → chunk-8wv5t0w6.js} +5 -5
- package/{chunk-aw65h276.js → chunk-8x21n7y9.js} +1 -1
- package/{chunk-0n99m9m4.js → chunk-a0c989ky.js} +1 -1
- package/{chunk-srjgvdvs.js → chunk-a5apjjcn.js} +6 -6
- package/chunk-a81p46j7.js +2 -0
- package/chunk-agsfy9w7.js +2 -0
- package/{chunk-2qcpq99g.js → chunk-arcqjt91.js} +1 -1
- package/{chunk-rxj6tct8.js → chunk-bdy4jksd.js} +1 -1
- package/{chunk-zrkh5dw7.js → chunk-benrzwea.js} +1 -1
- package/chunk-bpw6q7g0.js +3 -0
- package/{chunk-36cqq0ga.js → chunk-c7rcw9fb.js} +5 -5
- package/{chunk-x89em726.js → chunk-ca982n62.js} +1 -1
- package/chunk-d20p02ny.js +2 -0
- package/{chunk-5v4g21rw.js → chunk-d6p2hgxh.js} +1 -1
- package/{chunk-t7sc0wwc.js → chunk-dnx91jrd.js} +2 -2
- package/{chunk-mat08ab1.js → chunk-dpz4hwqb.js} +2 -2
- package/{chunk-zn0g0859.js → chunk-ebpyvs1d.js} +2 -2
- package/{chunk-00gwse5r.js → chunk-ecf896fz.js} +1 -1
- package/{chunk-0stvywr8.js → chunk-ejsneb6f.js} +1 -1
- package/{chunk-7as47pcw.js → chunk-ey15ye2h.js} +1 -1
- package/{chunk-v4k3qmdm.js → chunk-f156y565.js} +1 -1
- package/{chunk-7tgqhveh.js → chunk-f544p9rh.js} +1 -1
- package/chunk-fmq3zwzk.js +2 -0
- package/{chunk-ebzkckyw.js → chunk-fx7f4m3c.js} +1 -1
- package/{chunk-3k7ejpkc.js → chunk-g0t9c3gv.js} +1 -1
- package/{chunk-7w0mefgk.js → chunk-gv7wqkey.js} +2 -2
- package/{chunk-2nkfxhef.js → chunk-hksqjts3.js} +252 -236
- package/{chunk-1xa7d5mh.js → chunk-j7yvh0ae.js} +1 -1
- package/{chunk-0j0qggej.js → chunk-n85qs7cs.js} +1 -1
- package/{chunk-7qq99360.js → chunk-n981vx1t.js} +4 -4
- package/{chunk-0fwdxd45.js → chunk-peja51xv.js} +1 -1
- package/{chunk-6dsq0fns.js → chunk-pg5nkf1y.js} +1 -1
- package/{chunk-jyrwk08p.js → chunk-prgm07j4.js} +1 -1
- package/{chunk-jvwg4rn1.js → chunk-q9dd6fhj.js} +4 -4
- package/{chunk-nxkmd29x.js → chunk-r8vvcp6c.js} +1 -1
- package/{chunk-stj493dn.js → chunk-r9aatvwm.js} +2 -2
- package/chunk-rfb85nj7.js +2 -0
- package/{chunk-980drajf.js → chunk-rfdt992v.js} +12 -12
- package/{chunk-e63c1186.js → chunk-s6dejhfj.js} +1 -1
- package/{chunk-wfyrfvfn.js → chunk-s7skpgm2.js} +1 -1
- package/{chunk-dddsrff6.js → chunk-tgfbtehh.js} +123 -121
- package/{chunk-r0jc8e7t.js → chunk-w67dvqtb.js} +2 -2
- package/{chunk-b9fqretv.js → chunk-whj87h4r.js} +2 -2
- package/{chunk-vt1anydc.js → chunk-y8dkfpmj.js} +3 -3
- package/{chunk-nx3jnbv8.js → chunk-z02sj1je.js} +2 -2
- package/{chunk-hq5ke1yp.js → chunk-zxkq9m8e.js} +1 -1
- package/compiled.js +3 -3
- package/package.json +1 -1
- package/ui-test-worker.js +27 -27
- package/web/{chunk-56krfj3b.js → chunk-03dmzvaq.js} +1 -1
- package/web/{chunk-affear07.js → chunk-0fgaepwm.js} +1 -1
- package/web/{chunk-vhzys0rr.js → chunk-0gg00f86.js} +1 -1
- package/web/chunk-0pecj6d7.js +1 -0
- package/web/chunk-0wt1dgny.js +1 -0
- package/web/{chunk-gxqaa4sv.js → chunk-12xxh71x.js} +5 -5
- package/web/chunk-1ves7sq5.js +1 -0
- package/web/chunk-1yj79b48.js +1 -0
- package/web/{chunk-x7sb3bwf.js → chunk-296hgy6k.js} +22 -22
- package/web/{chunk-jcdw85mv.js → chunk-2bmq1whf.js} +1 -1
- package/web/{chunk-1s2hp6h1.js → chunk-2wqxhqr9.js} +1 -1
- package/web/{chunk-y7jq61nv.js → chunk-30b33r2w.js} +2 -2
- package/web/{chunk-g8kkc6vz.js → chunk-30zfw7zg.js} +1 -1
- package/web/chunk-39ng8zwx.css +1 -0
- package/web/{chunk-0qr891eq.js → chunk-3de552rg.js} +1 -1
- package/web/{chunk-3hkgdw6f.js → chunk-3nbzj48p.js} +3 -3
- package/web/{chunk-12z7d0hp.js → chunk-3zebd9fq.js} +1 -1
- package/web/chunk-4r1n98zx.js +2 -0
- package/web/chunk-59678wmg.js +1 -0
- package/web/{chunk-pyg1mr80.js → chunk-5v44qv67.js} +20 -20
- package/web/chunk-5wdk97mk.js +4 -0
- package/web/{chunk-fnnrrzqa.js → chunk-64rafq66.js} +1 -1
- package/web/{chunk-qrdh9j62.js → chunk-6kkw9ptc.js} +1 -1
- package/web/{chunk-01hcjafh.js → chunk-718mr5gc.js} +1 -1
- package/web/chunk-7hs57qdr.js +1 -0
- package/web/{chunk-aqt7kc3s.js → chunk-7kp237t3.js} +1 -1
- package/web/chunk-86p42kym.js +1 -0
- package/web/chunk-8n79cqyd.js +1 -0
- package/web/{chunk-paywgcf7.js → chunk-96v2avmw.js} +2 -2
- package/web/{chunk-4a4j030b.js → chunk-9an6wcnr.js} +1 -1
- package/web/{chunk-dzg1pv80.js → chunk-9c1yt2ex.js} +3 -3
- package/web/{chunk-d60dpf69.js → chunk-a7gtb4kg.js} +1 -1
- package/web/chunk-b985y17w.js +2 -0
- package/web/{chunk-j34q5jn6.js → chunk-bz2v64xe.js} +1 -1
- package/web/{chunk-g9sqbafw.js → chunk-cb2rxtq9.js} +1 -1
- package/web/{chunk-g5jxwkdh.js → chunk-ck8rr0sr.js} +1 -1
- package/web/{chunk-zc1mk10n.js → chunk-cktmyc13.js} +2 -2
- package/web/{chunk-tcp77cp2.js → chunk-cm92fyr3.js} +1 -1
- package/web/chunk-cwtn2kdm.js +1 -0
- package/web/{chunk-ka7c5rhx.js → chunk-czq1yz51.js} +6 -6
- package/web/{chunk-qq5gh5zr.js → chunk-d4z2rgpx.js} +1 -1
- package/web/{chunk-0k9aec1s.js → chunk-d6tbw8br.js} +3 -3
- package/web/chunk-dpkyygej.js +1 -0
- package/web/{chunk-m8knte9z.js → chunk-dwajwrpk.js} +1 -1
- package/web/{chunk-7e47b1sn.js → chunk-et5ess72.js} +1 -1
- package/web/chunk-ez8b6neq.js +1 -0
- package/web/{chunk-9xgspn75.js → chunk-f5txt81n.js} +2 -2
- package/web/chunk-fd1kqwe3.js +1 -0
- package/web/chunk-fmthkpff.js +1 -0
- package/web/{chunk-h2ag4kvz.js → chunk-fp48zz2e.js} +1 -1
- package/web/{chunk-1pasbxwh.js → chunk-fx0n2g22.js} +1 -1
- package/web/{chunk-bnb9xhgw.js → chunk-fxs4nb93.js} +6 -6
- package/web/{chunk-sd22cnjy.js → chunk-g6k9z8zt.js} +1 -1
- package/web/{chunk-5shygfgb.js → chunk-g81h1e6n.js} +2 -2
- package/web/{chunk-zz397b0v.js → chunk-gsh80797.js} +1 -1
- package/web/chunk-hs5x78fb.js +1 -0
- package/web/{chunk-abhad4zj.js → chunk-ht1dzftc.js} +4 -4
- package/web/{chunk-zqht0jzx.js → chunk-hy4m34qp.js} +1 -1
- package/web/chunk-hyd5hzpa.js +1 -0
- package/web/chunk-hyt1nkaw.js +1 -0
- package/web/chunk-j6a4z530.js +1139 -0
- package/web/{chunk-h6gh63xj.js → chunk-jve1zc80.js} +1 -1
- package/web/{chunk-vttgyb5v.js → chunk-kegv14sg.js} +1 -1
- package/web/chunk-kw9emsqw.js +1 -0
- package/web/{chunk-kza0t0gj.js → chunk-kyawkpv2.js} +1 -1
- package/web/{chunk-xsrvw7dt.js → chunk-m2prjwk3.js} +1 -1
- package/web/{chunk-s24qs1bn.js → chunk-m9bzz9m0.js} +6 -6
- package/web/{chunk-c53xmf48.js → chunk-mqsyzzgt.js} +1 -1
- package/web/{chunk-26bwh1sb.js → chunk-n1jpg57t.js} +6 -6
- package/web/{chunk-yvgs6bm3.js → chunk-nyn9tghz.js} +1 -1
- package/web/{chunk-ybw6vgf6.js → chunk-nywdeb4m.js} +1 -1
- package/web/{chunk-1cfh0e2e.js → chunk-prvh9syp.js} +7 -7
- package/web/chunk-pxkhm40r.js +2 -0
- package/web/{chunk-d6ddkh6e.js → chunk-q9ekgjh6.js} +1 -1
- package/web/chunk-r3mj50zs.js +1 -0
- package/web/{chunk-2nht58dc.js → chunk-rf9dt6bg.js} +1 -1
- package/web/{chunk-4m3zdd41.js → chunk-s2920f21.js} +1 -1
- package/web/{chunk-crzseqbx.js → chunk-sc0ghp25.js} +1 -1
- package/web/{chunk-7a3c137d.js → chunk-sy7e4dmq.js} +1 -1
- package/web/{chunk-65nwc4cf.js → chunk-t74r2n8h.js} +1 -1
- package/web/{chunk-gcv91974.js → chunk-t851gdjh.js} +1 -1
- package/web/{chunk-mpfgr049.js → chunk-t9mvsgt9.js} +1 -1
- package/web/{chunk-mnzramhc.js → chunk-twdy2f67.js} +1 -1
- package/web/{chunk-advfpyb9.js → chunk-v4yqrx5y.js} +4 -4
- package/web/{chunk-z4aj066q.js → chunk-vf4vkcf9.js} +1 -1
- package/web/{chunk-6enn8p66.js → chunk-vtxw9rmr.js} +1 -1
- package/web/{chunk-k67v6dyg.js → chunk-vw1pbv1x.js} +2 -2
- package/web/chunk-x19v2sxv.js +1 -0
- package/web/{chunk-892nf39p.js → chunk-x5s7zr5f.js} +7 -7
- package/web/{chunk-f9k3xrwb.js → chunk-xc2sq3t5.js} +1 -1
- package/web/chunk-xvcfp1zh.js +2 -0
- package/web/chunk-y21zy3eh.js +1 -0
- package/web/{chunk-14bad871.js → chunk-ya3ghn3n.js} +1 -1
- package/web/chunk-yd74yxzt.js +8 -0
- package/web/{chunk-0p1nmj5n.js → chunk-z1geewdf.js} +1 -1
- package/web/chunk-z4ha8181.js +1 -0
- package/web/chunk-z8rarqe6.js +1 -0
- package/web/{chunk-xk1t58c4.js → chunk-zp3qrrkb.js} +4 -4
- package/web/{chunk-7znyd1mj.js → chunk-zsxw5fj7.js} +1 -1
- package/web/index.html +1 -1
- package/worker.js +1 -1
- package/chunk-2nb3d92s.js +0 -2
- package/chunk-2pa1z37c.js +0 -2
- package/chunk-4g5f43ea.js +0 -3
- package/chunk-eegztdzb.js +0 -2
- package/chunk-wd3z74av.js +0 -2
- package/chunk-yna8bwqc.js +0 -2
- package/web/chunk-0ytga215.js +0 -1
- package/web/chunk-1amzv4ha.js +0 -1
- package/web/chunk-2y0rc1fe.js +0 -1
- package/web/chunk-4w298aqs.js +0 -1
- package/web/chunk-6stt9d18.js +0 -1
- package/web/chunk-7pypx5h8.js +0 -2
- package/web/chunk-9dy7z3ej.js +0 -2
- package/web/chunk-9mq2cdtq.js +0 -1
- package/web/chunk-b5hah4mf.js +0 -1
- package/web/chunk-b8tfetd8.js +0 -1
- package/web/chunk-ckgpy4r4.js +0 -1
- package/web/chunk-dbnrfxt1.js +0 -8
- package/web/chunk-ddxf8e84.js +0 -1
- package/web/chunk-e8h45nyr.js +0 -1
- package/web/chunk-ej9vb61c.js +0 -1
- package/web/chunk-fjag6yg8.js +0 -2
- package/web/chunk-gxsb5tx3.js +0 -1
- package/web/chunk-jg6fmz2d.js +0 -1
- package/web/chunk-mz1dabxh.js +0 -1
- package/web/chunk-p53n0hwr.js +0 -1
- package/web/chunk-pfcnr9tw.js +0 -1
- package/web/chunk-q7xkscc5.js +0 -1
- package/web/chunk-qmbgb79a.js +0 -1139
- package/web/chunk-sfq6cw45.js +0 -2
- package/web/chunk-svqj4az8.js +0 -1
- package/web/chunk-t7jwyvvr.js +0 -1
- package/web/chunk-tf18d2dk.css +0 -1
- package/web/chunk-v0g4cqc1.js +0 -4
- package/web/chunk-vqfz99ff.js +0 -1
- package/web/chunk-zazs8p6c.js +0 -1
package/README.md
CHANGED
|
@@ -92,12 +92,13 @@ basalt --open
|
|
|
92
92
|
~/.bun/bin/basalt setup
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
升级:服务运行时每 6 小时查一次 npm 上的最新版本,按安装方式自动用 npm 或 bun 全局安装,并等所有对话空闲后按原参数重启,不会打断进行中的对话。也可以手动更新,运行中的服务同样会在空闲时切换到新版本:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
+
basalt update
|
|
99
|
+
# 或直接用包管理器
|
|
98
100
|
npm i -g @bkm016/basalt@latest
|
|
99
|
-
|
|
100
|
-
bun i -g @bkm016/basalt@latest
|
|
101
|
+
bun add -g @bkm016/basalt@latest
|
|
101
102
|
```
|
|
102
103
|
|
|
103
104
|
### 从源码运行
|
|
@@ -112,7 +113,7 @@ bun packages/cli/src/main.ts --demo --open # 无需 API Key,使用内置演
|
|
|
112
113
|
|
|
113
114
|
### 配对与首次使用
|
|
114
115
|
|
|
115
|
-
1. 首次启动建议使用 `basalt --open`,服务就绪后会自动在浏览器中打开带配对链接的工作台。未使用 `--open`
|
|
116
|
+
1. 首次启动建议使用 `basalt --open`,服务就绪后会自动在浏览器中打开带配对链接的工作台。未使用 `--open` 或配对码已过期时,在服务所在机器上运行 `basalt pair`,即可生成 10 分钟有效的一次性配对码及配对链接。
|
|
116
117
|
2. 首次进入工作台若尚未配置模型,界面会引导前往「设置 → 模型」添加服务商与 API Key,也可直接通过环境变量(如 `ANTHROPIC_API_KEY`、`OPENAI_API_KEY`)提供。
|
|
117
118
|
|
|
118
119
|
### 远程访问(Cloudflare 隧道)
|
|
@@ -152,8 +153,9 @@ bun packages/cli/src/main.ts --demo --open # 无需 API Key,使用内置演
|
|
|
152
153
|
basalt stop 停止服务
|
|
153
154
|
basalt restart 按原参数重启服务
|
|
154
155
|
basalt logs 查看最近后台日志
|
|
156
|
+
basalt pair 为运行中的服务生成新配对码和配对链接
|
|
155
157
|
basalt autostart <enable|disable|status> 管理登录自启
|
|
156
|
-
basalt update
|
|
158
|
+
basalt update 用安装时的 npm/bun 更新到最新版本(运行中的服务空闲时自动重启)
|
|
157
159
|
basalt setup 把 basalt 所在目录加入 PATH(装完提示找不到命令时用)
|
|
158
160
|
basalt plugin reload <id> [--data <目录>]
|
|
159
161
|
basalt tunnel set <主机名> [--token <令牌>] [--team <团队域名> --aud <Audience>]
|
|
@@ -174,7 +176,7 @@ bun packages/cli/src/main.ts --demo --open # 无需 API Key,使用内置演
|
|
|
174
176
|
--team <团队域名> tunnel set 用:Access 团队域名
|
|
175
177
|
--aud <Audience> tunnel set 用:Access 应用的 Audience 标签
|
|
176
178
|
--no-tray 不启动系统托盘图标
|
|
177
|
-
--no-update-check
|
|
179
|
+
--no-update-check 不自动检查和安装新版本(也可设 BASALT_NO_UPDATE_CHECK=1)
|
|
178
180
|
--no-auth 关闭令牌认证(仅本机监听可用,或需配合 --allow-remote-no-auth)
|
|
179
181
|
--insecure-http 允许在非本机回环地址上使用明文 HTTP 监听
|
|
180
182
|
--allow-remote-no-auth 允许在非本机回环地址上关闭认证(极不安全,仅限受控隔离环境)
|
|
@@ -196,7 +198,7 @@ bun packages/cli/src/main.ts --demo --open # 无需 API Key,使用内置演
|
|
|
196
198
|
| `BASALT_MODEL` | 默认启动模型标识符(格式为 `<provider>/<model-id>`),命令行 `--model` 优先级高于此变量。 |
|
|
197
199
|
| `BASALT_TOKEN` | 执行 `basalt plugin reload <id>` 等 CLI 进程外管理命令时,用于向已开启认证的运行中服务提供设备令牌。 |
|
|
198
200
|
| `BASALT_TUNNEL_TOKEN` | `basalt tunnel set` 读取的 Cloudflare 隧道令牌,等价于 `--token`。 |
|
|
199
|
-
| `BASALT_NO_UPDATE_CHECK` | 设为 `1`
|
|
201
|
+
| `BASALT_NO_UPDATE_CHECK` | 设为 `1` 时禁用后台自动检查与安装新版本;手动装好的新版本仍会在对话空闲时生效。 |
|
|
200
202
|
| `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` 等 | 由 `@earendil-works/pi-ai` 自动识别的上游模型提供商凭据。 |
|
|
201
203
|
|
|
202
204
|
### 数据目录与存储布局
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{hr}from"./chunk-
|
|
2
|
+
import{hr}from"./chunk-fx7f4m3c.js";import{se}from"./chunk-zxkq9m8e.js";var s="Cloudflare Workers AI";function n(r){if(Array.isArray(r)){let e=r.map((t)=>se(t)&&typeof t.message==="string"?t.message:void 0).filter((t)=>t!==void 0);if(e.length>0)return`${s} error: ${e.join("; ")}`}return`${s} request failed`}var o={api:"cloudflare-workers-ai-system-one",label:s,url:(r)=>new URL("run",`${r.baseUrl.replace(/\/+$/u,"")}/`),payload:(r,e)=>({model:r.id,input:e}),output:(r)=>{if(!se(r))throw Error(`${s} returned an unexpected response`);if(r.success===!1)throw Error(n(r.errors));let e=r.result;if(!se(e))throw Error(`${s} returned an unexpected response`);if("answers"in e)return e;if(e.state!=="Completed")throw Error(`${s} run did not complete (state: ${String(e.state)})`);if(!se(e.result))throw Error(`${s} returned an unexpected response`);return e.result}},i=(r,e,t)=>hr(o,r,e,t);export{i as classify};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{N,G}from"./chunk-
|
|
3
|
-
export{me,Or,Nr,ce,Yt,Ae,Zt,
|
|
2
|
+
import{N,G}from"./chunk-n981vx1t.js";class p extends Error{}var L=["$ref","$defs","definitions","allOf","oneOf","patternProperties","dependentSchemas","dependencies","unevaluatedProperties","propertyNames","contains","prefixItems","not","if","then","else"];function y(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function D(e){if(!y(e))return!1;let n=typeof e.type==="string"?[e.type]:Array.isArray(e.type)?e.type:[];return n.includes("object")||n.includes("array")||e.properties!==void 0||e.items!==void 0}function M(e){if(!y(e))return!1;if(e.type==="null"||Array.isArray(e.type)&&e.type.includes("null"))return!0;if(e.const===null||Array.isArray(e.enum)&&e.enum.includes(null))return!0;return Array.isArray(e.anyOf)&&e.anyOf.some((n)=>M(n))}function w(e,n){if(!y(e))throw new p("boolean schemas are unsupported");for(let a of L)if(e[a]!==void 0)throw new p(`${a} schemas are unsupported`);if(n){for(let[a,l]of Object.entries(e))if(n(a,l))throw new p(`${a}: ${JSON.stringify(l)} is unsupported`)}if(e.anyOf!==void 0){if(!Array.isArray(e.anyOf)||e.anyOf.length===0)throw new p("anyOf must contain at least one schema");for(let a of e.anyOf){if(D(a))throw new p("object and array unions are unsupported");w(a,n)}}if(e.items!==void 0){if(Array.isArray(e.items))throw new p("tuple schemas are unsupported");w(e.items,n)}let t=e.type==="object";if(e.properties!==void 0&&!t)throw new p("properties require type object");if(!t)return;if(e.additionalProperties!==void 0&&e.additionalProperties!==!1)throw new p("schema-valued or true additionalProperties is unsupported");if(e.properties!==void 0&&!y(e.properties))throw new p("object properties must be a schema map");if(e.required!==void 0&&(!Array.isArray(e.required)||e.required.some((a)=>typeof a!=="string")))throw new p("object required must be a string array");let r=e.properties??{},i=Object.keys(r),o=new Set(Array.isArray(e.required)?e.required:[]);if([...o].some((a)=>!i.includes(a)))throw new p("required contains an unknown property");for(let[a,l]of Object.entries(r))if(w(l,n),!o.has(a)&&!M(l))r[a]={anyOf:[l,{type:"null"}]};e.required=i,e.additionalProperties=!1}function k(e,n){let t=structuredClone(e);if(!y(t))throw new p("root schema must have type object");if(w(t,n),t.type!=="object")throw new p("root schema must have type object");return t}function me(e,n){return n===!0?k(e.parameters):e.parameters}function Or(e,n,t){let r=n[t];if(typeof r!=="string")throw Error(`Grammar tool call "${e}" requires argument "${t}" to be a string.`);return r}function Nr(e,n,t,r){if(e.closed){if(r&&t===e.input)return;throw Error(`grammar tool input for property "${n}" changed after it was closed`)}if(!t.startsWith(e.input))throw Error(`grammar tool input for property "${n}" changed non-monotonically`);let i=t.slice(e.input.length);if(!r&&i.length===0)return;let o="";if(!e.started)o+=`{${JSON.stringify(n)}:"`,e.started=!0;if(o+=JSON.stringify(i).slice(1,-1),e.input=t,r)o+='"}',e.closed=!0;return o}function b(e){let n=e.parameters;if(n.type!=="object")throw Error("grammar constrained sampling requires an object parameter schema");if(!Array.isArray(n.required)||n.required.length!==1||typeof n.required[0]!=="string")throw Error("grammar constrained sampling requires exactly one required string property");let t=n.required[0];if(!n.properties?.[t])throw Error(`grammar constrained sampling requires a properties entry for ${t}`);if(n.properties[t]?.type!=="string")throw Error(`grammar constrained sampling property ${t} must have type string`);return t}function ce(e,n,t){let r=e.constrainedSampling;if(!r||r.type!=="json_schema")return;if(n)try{return k(e.parameters,t),!0}catch(i){if(!(i instanceof p))throw i;if(r.strict!=="require")return;throw Error(`Tool "${e.name}" requires JSON-schema constrained sampling, but ${i.message}.`)}if(r.strict==="require")throw Error(`Tool "${e.name}" requires JSON-schema constrained sampling, but strict tools are unsupported.`);return}function Yt(e,n){let t=e.constrainedSampling;if(!t||t.type!=="grammar")return;if(!n)return;let r=t.variants.openai_lark,i=t.variants.openai_regex,o=typeof r==="string"&&r.trim().length>0,a=typeof i==="string"&&i.trim().length>0;if(!o&&!a)throw Error(`Tool "${e.name}" cannot use grammar constrained sampling: no supported grammar variant was provided.`);try{return{format:o?"lark":"regex",definition:o?r:i,inputProperty:b(e)}}catch(l){let d=l instanceof Error?l.message:String(l);throw Error(`Tool "${e.name}" cannot use grammar constrained sampling: ${d}.`)}}function Ae(e,n){let t=new Map;for(let r of e??[]){let i=Yt(r,n);if(i)t.set(r.name,i.inputProperty)}return t}var O=3.5,H=4800;function _(e){return e.totalTokens||e.input+e.output+e.cacheRead+e.cacheWrite}function P(e){try{return JSON.stringify(e)??"undefined"}catch{return"[unserializable]"}}function W(e){if(typeof e==="string")return e.length;let n=0;for(let t of e)n+=t.type==="text"?t.text.length:H;return n}function v(e){return Math.ceil(e.length/O)}function C(e){return Math.ceil(W(e)/O)}function E(e){let n=0;if(e.role==="system")return v(N(e))+R(e.toolsAdded)+R(e.toolsRemoved);if(e.role==="user")return C(e.content);if(e.role==="toolResult")return C(e.content);for(let t of e.content)if(t.type==="text")n+=t.text.length;else if(t.type==="thinking")n+=t.thinking.length;else n+=t.name.length+P(t.arguments).length;return Math.ceil(n/O)}function B(e){let n=Number.NEGATIVE_INFINITY,t;for(let r=0;r<e.length;r++){let i=e[r];if(i.role==="assistant"){let o=i;if(o.timestamp>=n&&o.stopReason!=="aborted"&&o.stopReason!=="error"&&_(o.usage)>0)t={usage:o.usage,index:r}}n=Math.max(n,i.timestamp)}return t}function S(e){let n="messages"in e?e.messages:e,t=B(n);if(t){let i=_(t.usage),o=0;for(let a=t.index+1;a<n.length;a++)o+=E(n[a]);return{tokens:i+o,usageTokens:i,trailingTokens:o,lastUsageIndex:t.index}}let r=0;for(let i of n)r+=E(i);return{tokens:r,usageTokens:0,trailingTokens:r,lastUsageIndex:null}}function R(e){if(!e||e.length===0)return 0;return v(P(e))}var F=4096,q=1;function Zt(e,n,t){if(e.contextWindow<=0)return Math.max(q,t);let r=e.contextWindow-S(n).tokens-F;return Math.min(t,Math.max(q,r))}function ut(e,n,t){let r=G(e,n),i=e.samplingParamsByThinkingLevel?.[r];return e.samplingParams||i||t?{...e.samplingParams,...i,...t}:void 0}function V(e,n,t,r){let i=ut(e,t?.reasoning??"off",t?.samplingParams);return{temperature:t?.temperature,samplingParams:i,maxTokens:Zt(e,n,t?.maxTokens??e.maxTokens),signal:t?.signal,telemetryContext:t?.telemetryContext,apiKey:r||t?.apiKey,fetch:t?.fetch,transport:t?.transport,cacheRetention:t?.cacheRetention,sessionId:t?.sessionId,headers:t?.headers,onPayload:t?.onPayload,onResponse:t?.onResponse,onProviderStreamEvent:t?.onProviderStreamEvent,timeoutMs:t?.timeoutMs,websocketConnectTimeoutMs:t?.websocketConnectTimeoutMs,maxRetries:t?.maxRetries,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata,env:t?.env}}var z=1024,K={minimal:1024,low:2048,medium:8192,high:16384};function Eo(e){return e==="xhigh"||e==="max"?"high":e}function Po(e,n){let t={...K,...n},r=Eo(e);return t[r]}function To(e,n){return Math.min(e,Math.max(0,n-z))}function Dr(e,n,t,r){let i=Po(t,r),o=e===void 0?n:Math.min(e+i,n);if(o<=i)i=To(i,o);return{maxTokens:o,thinkingBudget:i}}function j(e,n){let t=[],r=!1;for(let i of e){if(i.type==="image"){if(!r)t.push({type:"text",text:n});r=!0;continue}t.push(i),r=i.text===n}return t}function Y(e,n){if(n.input.includes("image"))return e;return e.map((t)=>{if(t.role==="user"&&Array.isArray(t.content))return{...t,content:j(t.content,"(image omitted: model does not support images)")};if(t.role==="toolResult")return{...t,content:j(t.content,"(tool image omitted: model does not support images)")};return t})}function he(e,n,t){let r=new Map,i=e.map((s)=>s.content==null?{...s,content:[]}:s),a=Y(i,n).map((s)=>{if(s.role==="system"||s.role==="user")return s;if(s.role==="toolResult"){let u=r.get(s.toolCallId);if(u&&u!==s.toolCallId)return{...s,toolCallId:u};return s}if(s.role==="assistant"){let u=s,c=u.provider===n.provider&&u.api===n.api&&u.model===n.id,x=u.content.flatMap((f)=>{if(f.type==="thinking"){if(f.redacted)return c?f:[];if(c&&f.thinkingSignature)return f;if(!f.thinking||f.thinking.trim()==="")return[];if(c)return f;return{type:"text",text:f.thinking}}if(f.type==="text"){if(c)return f;return{type:"text",text:f.text}}if(f.type==="toolCall"){let m=f,g=m;if(!c&&m.thoughtSignature)g={...m},delete g.thoughtSignature;if(!c&&t){let I=t(m.id,n,u);if(I!==m.id)r.set(m.id,I),g={...g,id:I}}return g}return f});return{...u,content:x}}return s}),l=[],d=[],h=new Set,T=[],A=()=>{if(d.length>0){for(let s of d)if(!h.has(s.id))l.push({role:"toolResult",toolCallId:s.id,toolName:s.name,content:[{type:"text",text:"No result provided"}],isError:!0,timestamp:Date.now()});d=[],h=new Set}l.push(...T),T.length=0};for(let s=0;s<a.length;s++){let u=a[s];if(u.role==="assistant"){A();let c=u;if(c.stopReason==="error"||c.stopReason==="aborted")continue;let x=c.content.filter((f)=>f.type==="toolCall");if(x.length>0)d=x,h=new Set;l.push(u)}else if(u.role==="toolResult")h.add(u.toolCallId),l.push(u);else if(u.role==="system")if(d.length>0)T.push(u);else l.push(u);else if(u.role==="user")A(),l.push(u);else l.push(u)}return A(),l}
|
|
3
|
+
export{me,Or,Nr,ce,Yt,Ae,Zt,ut,V,Eo,Po,To,Dr,he};
|