@isdk/ai-tool 0.0.8 → 0.0.10

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 (79) hide show
  1. package/README.cn.md +49 -15
  2. package/README.md +245 -2
  3. package/dist/chunk-VNNDL7E2.mjs +1 -0
  4. package/dist/funcs.js +1 -1
  5. package/dist/funcs.mjs +1 -1
  6. package/dist/index.d.mts +17 -3
  7. package/dist/index.d.ts +17 -3
  8. package/dist/index.js +1 -1
  9. package/dist/index.mjs +1 -1
  10. package/docs/README.md +245 -2
  11. package/docs/classes/AbortError.md +8 -8
  12. package/docs/classes/AlreadyExistsError.md +8 -8
  13. package/docs/classes/BaseError.md +8 -8
  14. package/docs/classes/CancelableAbility.md +20 -20
  15. package/docs/classes/ClientTools.md +53 -53
  16. package/docs/classes/CommonError.md +8 -8
  17. package/docs/classes/EventClient.md +75 -75
  18. package/docs/classes/EventServer.md +73 -73
  19. package/docs/classes/EventToolFunc.md +43 -43
  20. package/docs/classes/FStringPromptTemplate.md +18 -18
  21. package/docs/classes/FewShotPromptTemplate.md +22 -22
  22. package/docs/classes/GolangPromptTemplate.md +18 -18
  23. package/docs/classes/HFEnvironment.md +9 -9
  24. package/docs/classes/HFInterpreter.md +63 -17
  25. package/docs/classes/HFTemplate.md +4 -4
  26. package/docs/classes/HfPromptTemplate.md +18 -18
  27. package/docs/classes/IntSet.md +12 -12
  28. package/docs/classes/NotFoundError.md +8 -8
  29. package/docs/classes/NotImplementationError.md +8 -8
  30. package/docs/classes/PromptExampleSelector.md +8 -8
  31. package/docs/classes/PromptTemplate.md +17 -17
  32. package/docs/classes/ReadableStreamError.md +8 -8
  33. package/docs/classes/ResClientTools.md +59 -59
  34. package/docs/classes/ResServerTools.md +57 -57
  35. package/docs/classes/SSEChannel.md +15 -15
  36. package/docs/classes/Semaphore.md +14 -14
  37. package/docs/classes/ServerTools.md +50 -50
  38. package/docs/classes/TaskAbortController.md +7 -7
  39. package/docs/classes/ToolFunc.md +40 -40
  40. package/docs/enums/AsyncFeatureBits.md +3 -3
  41. package/docs/enums/AsyncFeatures.md +3 -3
  42. package/docs/enums/ErrorCode.md +21 -21
  43. package/docs/enums/XXHashAlgorithm.md +2 -2
  44. package/docs/interfaces/AIChatAssistantMessageParam.md +6 -6
  45. package/docs/interfaces/AIChatContentPartImage.md +2 -2
  46. package/docs/interfaces/AIChatContentPartText.md +2 -2
  47. package/docs/interfaces/AIChatMessageParamBase.md +1 -1
  48. package/docs/interfaces/AIChatMessageToolCall.md +3 -3
  49. package/docs/interfaces/AIChatSystemMessageParam.md +3 -3
  50. package/docs/interfaces/AIChatToolMessageParam.md +4 -4
  51. package/docs/interfaces/AIChatUserMessageParam.md +7 -7
  52. package/docs/interfaces/AIResult.md +5 -5
  53. package/docs/interfaces/AIStreamParser.md +1 -1
  54. package/docs/interfaces/AIStreamParserOptions.md +1 -1
  55. package/docs/interfaces/BaseFunc.md +7 -7
  56. package/docs/interfaces/BaseFuncItem.md +6 -6
  57. package/docs/interfaces/CancelableAbilityOptions.md +2 -2
  58. package/docs/interfaces/ClientFuncItem.md +10 -10
  59. package/docs/interfaces/DotenvExpandOptions.md +3 -3
  60. package/docs/interfaces/DotenvExpandOutput.md +2 -2
  61. package/docs/interfaces/EventClientFuncParams.md +4 -4
  62. package/docs/interfaces/EventServerFuncParams.md +5 -5
  63. package/docs/interfaces/FewShotPromptTemplateOptions.md +11 -11
  64. package/docs/interfaces/FuncItem.md +7 -7
  65. package/docs/interfaces/FuncParam.md +6 -6
  66. package/docs/interfaces/PromptExampleSelectorOptions.md +2 -2
  67. package/docs/interfaces/PromptTemplateOptions.md +6 -6
  68. package/docs/interfaces/RemoteFuncItem.md +10 -10
  69. package/docs/interfaces/ResClientFuncParams.md +2 -2
  70. package/docs/interfaces/ResServerFuncParams.md +5 -5
  71. package/docs/interfaces/SanitizeFilenameOptions.md +2 -2
  72. package/docs/interfaces/ServerFuncItem.md +11 -11
  73. package/docs/interfaces/ServerFuncParams.md +2 -2
  74. package/docs/interfaces/StreamCallbacksAndOptions.md +4 -4
  75. package/docs/interfaces/TaskPromise.md +1 -1
  76. package/docs/interfaces/ToolFuncPackage.md +3 -3
  77. package/docs/modules.md +127 -124
  78. package/package.json +1 -1
  79. package/dist/chunk-B7IE5ATQ.mjs +0 -1
package/README.cn.md CHANGED
@@ -1,30 +1,56 @@
1
1
  ## @isdk/ai-tool
2
2
 
3
- 所有的Tool Function 参数都是Obj参数,而不是位置参数
3
+ 抽象封装AI工具函数(ToolFunc),并提供一系列方便使用的 helper 函数.
4
+
5
+ 注意: 所有的Tool Function 参数都是Obj参数,而不是位置参数
4
6
 
5
7
  ### ToolFunc
6
8
 
7
- 所有本地执行的,注册在这里
9
+ AI工具函数(ToolFunc), 将普通函数注册为`ToolFunc`.
10
+
11
+ 所有本地执行的工具函数,在这里注册.
8
12
 
9
- * func: 执行的工具函数主体
10
- * name: 工具函数的名称
11
- * params: 工具函数的参数描述schema
12
- * result: 工具函数返回结果类型
13
- * scope: 作用域
14
- * description: 工具函数说明
15
- * setup: 将在ctor ToolFunc实例的时候被执行
16
- * depends: `{[name: string]: ToolFunc}`, 放在这里的将会被自动注册
13
+ 例如:
14
+
15
+ ```ts
16
+ import {ToolFunc} from '@isdk/ai-tool'
17
17
 
18
- ### ServerTools
18
+ // 直接注册一个函数
19
+ ToolFunc.register({
20
+ name: 'add',
21
+ decription: 'return a+b',
22
+ params: {"a": {type: "number"}, b: {type: "number"}},
23
+ result: 'number',
24
+ func: ({a, b}: {a: number, b: number}) => a+b
25
+ })
26
+
27
+ console.log('return', ToolFunc.runSync('add', {a: 1, b: 2}))
28
+ // return 3
29
+
30
+ ```
19
31
 
20
- 服务器端至少需要两个入口,一个获得所有tools api,另一个执行指定的tool api.
21
- 未来再加一个EventSource入口,感知tool注册变动。
32
+ * `func`: 执行的工具函数主体
33
+ * `name`: 工具函数的名称
34
+ * `params`: 工具函数的参数描述schema
35
+ * `result`: 工具函数返回结果类型
36
+ * `scope`: 作用域
37
+ * `description`: 工具函数说明
38
+ * `setup`: 将在ctor ToolFunc实例的时候被执行
39
+ * `depends`: `{[name: string]: ToolFunc}`, 放在这里的将会被自动注册
40
+
41
+
42
+ ### ServerTools(ToolFunc)
43
+
44
+ 服务器端的AI工具函数.
45
+
46
+ 注: 如果手工开发服务器,那么服务器上至少要两个API入口,一个API用于获得服务器上的所有tools,另一个API执行指定的tool.
47
+ 未来再加一个EventSource API入口,感知tool注册变动。
22
48
 
23
49
  所有需要暴露给服务器的,注册在这里,实质就是ToolFunc
24
50
 
25
51
  * 增加 `static toJSON()` 导出所有的服务API定义
26
52
 
27
- 特点: 允许导出func,使得函数功能可以本地执行。
53
+ 特点: 允许导出func string,使得服务器端函数功能可以迁移到本地执行。
28
54
 
29
55
  属性:
30
56
 
@@ -45,8 +71,9 @@ interface ServerFuncItem extends FuncItem {
45
71
  如果是`get`那么参数应该被放在query string(`p`): `p=${encodeURIComponent(JSON.stringify(objParams))}`
46
72
  如果是`post`参数在body中,同样是json格式。
47
73
 
48
- ### ClientTools
74
+ ### ClientTools(ToolFunc)
49
75
 
76
+ 用于调用远程服务器上的AI工具函数(ServerTools).
50
77
  所有的远程调用没有真正的执行体,都是统一的远程API调用。
51
78
 
52
79
  * 增加 `static loadFromSync(items)` 加载所有的远程调用,如果有item上有func,那么就是server调用的本地化,还是注册在ClientTools上。
@@ -259,3 +286,10 @@ act有:
259
286
  * pub: 发布sse事件
260
287
  * sub: 转发服务器上的事件
261
288
  * unsub: 撤销转发服务器上的事件
289
+
290
+ ## Credit
291
+
292
+ * [@huggingface/jinja](https://github.com/huggingface/huggingface.js)
293
+ * [eventsource-parser](https://github.com/rexxars/eventsource-parser)
294
+ * [async-sema](https://github.com/vercel/async-sema)
295
+ * [modelfusion](https://github.com/vercel/modelfusion)
package/README.md CHANGED
@@ -1,3 +1,246 @@
1
- ## @isdk/ai-tool
1
+ # @isdk/ai-tool
2
2
 
3
- All Tool Function parameters are Obj parameters, not positional arguments.
3
+ A library for abstracting AI utility functions (`ToolFunc`), providing a series of convenient helper functions.
4
+
5
+ **Note:** All `ToolFunc` parameters are object-based, not positional.
6
+
7
+ ## Installation
8
+
9
+ 1. Install the package:
10
+
11
+ ```bash
12
+ npm install @isdk/ai-tool
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ## ToolFunc
18
+
19
+ Register ordinary functions as `ToolFunc`.
20
+
21
+ ### Example
22
+
23
+ ```ts
24
+ import { ToolFunc } from '@isdk/ai-tool';
25
+
26
+ // Register a function directly
27
+ ToolFunc.register({
28
+ name: 'add',
29
+ description: 'Return the sum of a and b',
30
+ params: { a: { type: 'number' }, b: { type: 'number' } },
31
+ result: 'number',
32
+ func: ({ a, b }: { a: number; b: number }) => a + b,
33
+ });
34
+
35
+ console.log('Result:', ToolFunc.runSync('add', { a: 1, b: 2 }));
36
+ // Result: 3
37
+ ```
38
+
39
+ Properties
40
+
41
+ * `func`: The main body of the tool function.
42
+ * `name`: Name of the tool function.
43
+ * `params`: Parameter schema for the tool function.
44
+ * `result`: Return type of the tool function.
45
+ * `scope`: Scope of the function.
46
+ * `description`: Description of the tool function.
47
+ * `setup`: Executed during the construction of the ToolFunc instance.
48
+ * `depends`: Dependencies on other ToolFunc instances.
49
+
50
+ ### ServerTools (extends ToolFunc)
51
+
52
+ Server-side AI tool functions.
53
+
54
+ **Features**
55
+
56
+ * Allows exporting the function body as a string for local execution.
57
+ * Provides a static `toJSON()` method to export all service API definitions.
58
+
59
+ ```ts
60
+ interface ServerFuncItem extends FuncItem {
61
+ apiRoot?: string
62
+ /**
63
+ * API request method, can be 'get' or 'post'
64
+ */
65
+ action?: 'get'|'post'
66
+ // Options for the Node.js fetch function
67
+ fetchOptions?: any
68
+ // Whether to allow exporting the func body itself, default to false
69
+ allowExportFunc?: boolean
70
+ }
71
+ ```
72
+
73
+ Usage: Parameters are sent via query string for GET requests and in the body for POST requests.
74
+
75
+ ### ClientTools (extends ToolFunc)
76
+
77
+ Used to call remote AI tool functions (ServerTools).
78
+
79
+ **Features**
80
+
81
+ * Supports loading all remote calls with static loadFromSync(items) and static async loadFrom().
82
+ * Prioritizes local execution over remote calls.
83
+
84
+ ```ts
85
+ interface ClientFuncItem extends FuncItem {
86
+ apiRoot?: string
87
+ action?: 'get'|'post'
88
+ fetchOptions?: any
89
+ }
90
+ ```
91
+
92
+ ### ResServerTools
93
+
94
+ Resource-based server tools, where resources are named ToolFunc.
95
+
96
+ #### Methods
97
+
98
+ * `GET /api/res/:id`: Get resource.
99
+ * `GET /api/res`: List resources.
100
+ * `POST /api/res`: Create resource.
101
+ * `PUT /api/res/:id`: Update resource.
102
+ * `DELETE /api/res/:id`: Delete resource.
103
+
104
+ #### Custom Methods
105
+
106
+ Methods prefixed with `$` are custom resource methods, accessible via `POST`.
107
+
108
+ Example
109
+
110
+ ```ts
111
+ class TestResTool extends ResServerTools {
112
+ items: any = {}
113
+ params: FuncParams = {
114
+ 'id': {type: 'number'},
115
+ 'val': {type: 'any'},
116
+ }
117
+ $customMethod({id}: ResServerFuncParams) {
118
+ if (id) {
119
+ const item = this.items[id]
120
+ if (!item) {
121
+ throw new NotFoundError(id, 'res')
122
+ }
123
+ return {name: 'customMethod', id, item}
124
+ }
125
+ }
126
+ get({id}: ResServerFuncParams) {
127
+ if (id) {
128
+ const item = this.items[id]
129
+ if (!item) {
130
+ throw new NotFoundError(id, 'res')
131
+ }
132
+ return item
133
+ }
134
+ }
135
+ post({id, val}: ResServerFuncParams) {
136
+ if (id !== undefined && val !== undefined) {
137
+ this.items[id] = val
138
+ return {id}
139
+ } else {
140
+ throwError('id or val is undefined')
141
+ }
142
+ }
143
+ list() {
144
+ return Object.keys(this.items)
145
+ }
146
+ delete({id}: ResServerFuncParams) {
147
+ if (id) {
148
+ const item = this.items[id]
149
+ if (item === undefined) {
150
+ throw new NotFoundError(id, 'res')
151
+ }
152
+ delete this.items[id]
153
+ return {id}
154
+ }
155
+ }
156
+ }
157
+ ResServerTools.apiRoot = apiRoot
158
+ const res = new TestResTool('res')
159
+ res.register()
160
+ ```
161
+
162
+ ### ResClientTools
163
+
164
+ Resource-based client tools that generate methods based on ServerTools agreements.
165
+
166
+ Example
167
+
168
+ ```ts
169
+ ResClientTools.apiRoot = apiRoot
170
+ await ResClientTools.loadFrom()
171
+
172
+ const resFunc = ResClientTools.getFunc(funcName)
173
+ if (resFunc) {
174
+ let result = await res.post({id: '...', val: '...'})
175
+ result = await res.put({id: '...', val: '...'})
176
+ result = await res.get({id: '...'})
177
+ result = await res.customMethod({id: '...'})
178
+ }
179
+ ```
180
+
181
+ ### SSE (Server-Sent Events)
182
+
183
+ Endpoints
184
+
185
+ * `GET /api/event`: List server event channel (stream).
186
+ * `POST /api/event`: Subscribe to server events.
187
+ * `DELETE /api/event`: Unsubscribe from server events.
188
+ * `PUT /api/event`: Publish messages to server events.
189
+
190
+ ### EventClient
191
+
192
+ The `EventClient` component facilitates communication between the client and server through Server-Sent Events (SSE). Its primary responsibilities include subscribing to server events and publishing messages to the server.
193
+
194
+ #### Key Features
195
+
196
+ - **Subscription**: Subscribes to server events and forwards them to the local client's event bus.
197
+ - **Publication**: Publishes messages to the server.
198
+
199
+ #### EventClient Methods
200
+
201
+ - `initEventSource(events)`: Specifies which events to receive from the server. If `events` is not provided, all events are received.
202
+ - `subscribe(events)`: Subscribes to specified server events and forwards them to the local event bus.
203
+ - Note: It's important to distinguish between local and server-originated messages. Server messages that were previously forwarded from local events should not be re-forwarded to avoid infinite loops.
204
+ - `unsubscribe(events)`: Cancels subscriptions to specified server events.
205
+ - `forwardEvent(events)`: Forwards specific local events to the server.
206
+ - `unforwardEvent(events)`: Stops forwarding specific local events to the server.
207
+
208
+ #### Considerations
209
+
210
+ - Local events that need to be forwarded to the server can be managed independently through the `forwardEvent` method.
211
+ - Event handling logic should be decoupled from the core functionality of `ToolFunc` to maintain flexibility and separation of concerns.
212
+
213
+ ### EventServer
214
+
215
+ The `EventServer` component manages server-side event processing, including publishing and subscribing to events.
216
+
217
+ **Key Features**
218
+
219
+ - **Publishing**: Publishes events to clients via SSE.
220
+ - **Subscribing**: Manages subscriptions to events on the server side.
221
+
222
+ **Actions**
223
+
224
+ - `pub`: Publishes an SSE event.
225
+ - `sub`: Subscribes to server events.
226
+ - `unsub`: Unsubscribes from server events.
227
+
228
+ **Usage**
229
+
230
+ - Functions without an `act` or with only `events` specified are used for server-side event handling.
231
+ - Functions with an `act` define specific actions such as publishing, subscribing, or unsubscribing from events.
232
+
233
+ ## Contribution
234
+
235
+ If you would like to contribute to the project, please read the [CONTRIBUTING.md](./CONTRIBUTING.md) file for guidelines on how to get started.
236
+
237
+ ## License
238
+
239
+ The project is licensed under the MIT License. See the [LICENSE-MIT](./LICENSE-MIT) file for more details.
240
+
241
+ ## Credit
242
+
243
+ * [@huggingface/jinja](https://github.com/huggingface/huggingface.js)
244
+ * [eventsource-parser](https://github.com/rexxars/eventsource-parser)
245
+ * [async-sema](https://github.com/vercel/async-sema)
246
+ * [modelfusion](https://github.com/vercel/modelfusion)
@@ -0,0 +1 @@
1
+ import{__export as t,__reExport as e}from"./chunk-U5DDQYSF.mjs";import{EventEmitter as r}from"events-ex";import{AdvancePropertyManager as n}from"property-manager";import{_createFunction as s}from"util-ex";import{AbstractError as i,createErrorClass as o}from"abstract-error";var a=(t=>(t[t.OK=200]="OK",t[t.Accepted=202]="Accepted",t[t.BadRequest=400]="BadRequest",t[t.InvalidArgument=400]="InvalidArgument",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Corruption=409]="Corruption",t[t.TooManyRequests=429]="TooManyRequests",t[t.Aborted=499]="Aborted",t[t.InternalError=500]="InternalError",t[t.NotImplemented=501]="NotImplemented",t[t.NotSupported=501]="NotSupported",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t))(a||{}),c=500,u=501,l=404,h=409,f=499,p=class t extends i{static createErrorClass(e,r,n=t){return o(e,r,n)}constructor(t,e,r){super(t,e);const n=this.constructor;null!=e?this.code=e:n.code?this.code=n.code:this.code=n.name,r?"string"==typeof r?this.name=r:Object.assign(this,r):"string"==typeof this.code?this.name=this.code:this.name=n.name}toJSON(){const t={name:this.name,code:this.code,data:this.data,caller:this.caller,error:this.message,stack:this.stack};return Object.keys(t).forEach((e=>void 0===t[e]&&delete t[e])),t}fromJSON(e){const r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.message=e.error,r.stack=e.stack,r}},w=class extends p{constructor(t,e,r=c){super(t,r,e)}},d=class extends w{constructor(t,e){t||(t="Not Implementation."),super(t,e,501)}};w[501]=d;var m=class extends w{static{this.code=l}constructor(t,e){super(`Could not find ${t}.`,e,l),this.data={what:t}}};w[404]=m;var y=class extends w{static{this.code=h}constructor(t,e){super(`The ${t} already exists.`,e,h),this.data={what:t}}};w[409]=y;var b=class extends w{static{this.code=f}constructor(t,e){e||(e="AbortError"),super(t?`The operation was aborted for ${t}.`:"The operation was aborted.",e,f),t&&(this.data={what:t})}};function g(t,e,r=c){const n=new(w[r]||w)(t,e,r);return"number"!=typeof n.code&&(n.code=r),n}function x(t,e,r=c){throw g(t,e,r)}w[499]=b;var E={};t(E,{AIChatRoles:()=>U,AIMessageTypes:()=>V,AIStream:()=>_e,AITextGenerationFinishReasons:()=>P,AbortError:()=>b,AbortErrorCode:()=>f,ActionNames:()=>$,AlreadyExistsError:()=>y,AlreadyExistsErrorCode:()=>h,BaseError:()=>p,CancelableAbility:()=>Vn,CommonError:()=>w,ConfigFile:()=>rn,DefaultAsyncSemaphoreCapacity:()=>An,ErrorCode:()=>a,EventBusName:()=>Te,EventName:()=>Ae,FStringPromptTemplate:()=>se,FewShotPromptTemplate:()=>ue,FilenameReservedRegex:()=>xr,GolangPromptTemplate:()=>ae,HFBuiltins:()=>Wt,HFEnvironment:()=>Ht,HFInterpreter:()=>qt,HFTemplate:()=>Gt,HfPromptTemplate:()=>Qt,IntSet:()=>$n,InternalErrorCode:()=>c,NotFoundError:()=>m,NotFoundErrorCode:()=>l,NotImplementationError:()=>d,NotImplementedErrorCode:()=>501,PASSING_SCORE:()=>S,PromptExampleSelector:()=>K,PromptTemplate:()=>D,PromptTemplateTypes:()=>_,PromptTypes:()=>L,RStreamErrCode:()=>Fe,RateLimit:()=>Fn,ReadableStreamError:()=>Re,RemoteToolFuncSchema:()=>k,ResponseRStreamErrCode:()=>Me,SSEChannel:()=>Ne,SSEChannelAlreadyClosedErrCode:()=>Ce,Semaphore:()=>In,TaskAbortController:()=>Pn,WindowsReservedNameRegex:()=>Er,XXHashAlgorithm:()=>mr,backendEventable:()=>Oe,base32768:()=>lr,createAbilityInjector:()=>v,createCallbacksTransformer:()=>ze,createEmptyReadableStream:()=>Ve,createEndWithRepetitionDetector:()=>qr,createError:()=>g,createEventStreamTransformer:()=>Be,createHfValueFunc:()=>te,dateToText:()=>R,defaultTemplateFormat:()=>z,expandEnv:()=>pe,expandObjEnv:()=>we,extNameLevel:()=>Fr,filenameReservedRegex:()=>Ar,formatISO:()=>j,getAllEnumKeys:()=>Vr,getConfigFileNames:()=>fn,getConfigs:()=>pn,getKeysPath:()=>Lr,getMultiLevelExtname:()=>Ir,getRealFilepath:()=>Gr,getResponseErrorReadableStream:()=>Pe,hfParse:()=>At,hfTokenize:()=>et,interpolateEnv:()=>fe,interpolateFString:()=>re,interpolateGolangTemplate:()=>oe,isModelNameMatched:()=>Pr,isValidFilename:()=>Or,isValidFilepath:()=>jr,isWebStream:()=>Ie,jsonFilterToWhere:()=>gn,jsonToMarkdownStr:()=>Sn,loadFileFromPaths:()=>Jr,loadTextFromPaths:()=>Kr,makeToolFuncCancelable:()=>Bn,matchUrlProtocol:()=>xn,messagesToText:()=>B,mimeType:()=>an,paramsSizeToScaleStr:()=>En,parseDateFormat:()=>T,parseFString:()=>ee,parseISO:()=>C,parseJsJson:()=>Br,parseYaml:()=>hn,reControlCharsRegex:()=>Tr,readFilenamesRecursiveSync:()=>Hr,readableFromAsyncIterable:()=>qe,registerYamlTag:()=>ln,sanitizeFilename:()=>Cr,sanitizeFilepath:()=>Nr,saveConfigFile:()=>wn,scaleStrToParamsSize:()=>vn,sortedValues:()=>ce,splitSentence:()=>ve,stringifyYaml:()=>cn,textToDate:()=>M,throwError:()=>x,toDate:()=>N,toDateTime:()=>F,trimStartOfStreamHelper:()=>Le,truncTo:()=>Se,uuid:()=>sr,uuidNIL:()=>rr,uuidParse:()=>Qe,uuidStringify:()=>Ze,uuidValidate:()=>tr,uuidVersion:()=>er,uuidv1:()=>Ge,uuidv4:()=>Xe,uuidv5:()=>Ye,wait:()=>$e,xxhash:()=>yr,xxhash32:()=>wr,xxhash64:()=>dr,xxhashAsStr:()=>br});import{createAbilityInjector as v}from"custom-ability";var S=.618,$=["get","post","put","delete","patch","list","res"],k={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,r,n,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"},stream:{type:"boolean"}};import{format as A,parse as T,parseISO as O}from"date-fns";import{formatISO as j,parseISO as C,toDate as N}from"date-fns";var I="MMMM d, y 'at' h:m:s b 'GMT'x";function F(t){let e;try{"string"==typeof t?e=O(t):"number"==typeof t?e=new Date(t):t instanceof Date&&(e=t)}catch(t){console.error(t)}return e}function M(t,e=I){return T(t,e,new Date)}function R(t,e=I){return A(t,e)}var P=["stop","length","content-filter","tool-calls","abort","error","other",null],V=["human","ai","generic","system","tool"],U=["user","assistant","system","tool","tool_calls"];function B(t){let e="";for(const r of t)if(r.content){e+=r.role.toLowerCase()+":";let t=r.createdAt;if(t){const r=F(t);r&&(e+=" ["+R(r)+"]")}e+=" "+r.content+"\n"}return e}var L=["chat","char","plan"],_=["internal","hf","fill"];import{BaseFactory as q}from"custom-factory";var z="default",D=class t extends q{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const r=e.templateFormat||z,n=t.get(r);return n.isTemplate!==t.isTemplate&&n.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,r){"string"==typeof e?(r||(r={}),r.template=e):e&&(e=(r=e).template);const{templateFormat:n}=r||{};if(super(r),this.constructor===t){const e=t.get(n||z);if(e)return Reflect.construct(e,arguments);throw new w(`Prompt template type ${n} not found`,"PromptTemplate",400)}}_initialize(t){throw new d("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new d("Not implemented","PromptTemplate")}async format(e){const r=this.data;if(e={...r,...e},r)for(const[t,n]of Object.entries(r))e[t]===n&&"function"==typeof n&&(delete e[t],e[t]=await n(e));for(const[r,n]of Object.entries(e))n instanceof t&&(delete e[r],e[r]=await n.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let r={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var n;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(r.templateFormat=e.templateFormat),n=r,r=Object.keys(n).reduce(((t,e)=>{const r=n[e];return null!=r&&(t[e]=r),t}),{}),r}};function J(t){return(e=t)&&"function"==typeof e[Symbol.iterator]?async function*(t){const e=t[Symbol.iterator]();let r;try{for(;;){r=!1;const t=e.next();if(r=!0,t.done)return r=!1,await t.value;yield await t.value}}finally{r&&await(e.return?.().value)}}(t):t;var e}var W=!1;(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{W=t}));var K=class{constructor(t,e){this.initialize(t,e)}initialize(t,e){const r=e?.maxLength;var n;r>0&&(this.maxLength=r),void 0!==e?.threshold&&(!0===e.threshold?this.threshold=.5:!1!==e.threshold&&(this.threshold=e.threshold)),this.examples=(n=t,W?n:J(n))}selectExample(t,e){if(void 0===e||e<=this.threshold)return t}async*selectExamples(t=this.examples){let e=this.maxLength||1/0;for await(const r of t){const t="number"==typeof this.threshold?Math.random():void 0;if(this.selectExample(r,t)){if(--e<0)break;yield r}}}async*[Symbol.asyncIterator](){yield*this.selectExamples()}},H=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator",Macro:"Macro",EndMacro:"EndMacro"}),G=Object.freeze({set:H.Set,for:H.For,in:H.In,is:H.Is,if:H.If,else:H.Else,endif:H.EndIf,elif:H.ElseIf,endfor:H.EndFor,and:H.And,or:H.Or,not:H.Not,"not in":H.NotIn,macro:H.Macro,endmacro:H.EndMacro,true:H.BooleanLiteral,false:H.BooleanLiteral,True:H.BooleanLiteral,False:H.BooleanLiteral}),X=class{constructor(t,e){this.value=t,this.type=e}};function Y(t){return/\w/.test(t)}function Z(t){return/[0-9]/.test(t)}var Q=[["{%",H.OpenStatement],["%}",H.CloseStatement],["{{",H.OpenExpression],["}}",H.CloseExpression],["(",H.OpenParen],[")",H.CloseParen],["{",H.OpenCurlyBracket],["}",H.CloseCurlyBracket],["[",H.OpenSquareBracket],["]",H.CloseSquareBracket],[",",H.Comma],[".",H.Dot],[":",H.Colon],["|",H.Pipe],["<=",H.ComparisonBinaryOperator],[">=",H.ComparisonBinaryOperator],["==",H.ComparisonBinaryOperator],["!=",H.ComparisonBinaryOperator],["<",H.ComparisonBinaryOperator],[">",H.ComparisonBinaryOperator],["+",H.AdditiveBinaryOperator],["-",H.AdditiveBinaryOperator],["*",H.MultiplicativeBinaryOperator],["/",H.MultiplicativeBinaryOperator],["%",H.MultiplicativeBinaryOperator],["=",H.Equals]],tt=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function et(t,e={}){const r=[],n=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(n[s]);)if("\\"!==n[s]){if(e+=n[s++],s>=n.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=n.length)throw new SyntaxError("Unexpected end of input");const t=n[s++],r=tt.get(t);if(void 0===r)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=r}return e};t:for(;s<n.length;){const t=r.at(-1)?.type;if(void 0===t||t===H.CloseStatement||t===H.CloseExpression){let t="";for(;s<n.length&&("{"!==n[s]||"%"!==n[s+1]&&"{"!==n[s+1]);)t+=n[s++];if(t.length>0){r.push(new X(t,H.Text));continue}}i((t=>/\s/.test(t)));const e=n[s];if("-"===e||"+"===e){const t=r.at(-1)?.type;if(t===H.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case H.Identifier:case H.NumericLiteral:case H.BooleanLiteral:case H.StringLiteral:case H.CloseParen:case H.CloseSquareBracket:break;default:{++s;const t=i(Z);r.push(new X(`${e}${t}`,t.length>0?H.NumericLiteral:H.UnaryOperator));continue}}}for(const[t,e]of Q){if(n.slice(s,s+t.length)===t){r.push(new X(t,e)),s+=t.length;continue t}}if("'"!==e&&'"'!==e)if(Z(e)){const t=i(Z);r.push(new X(t,H.NumericLiteral))}else{if(!Y(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(Y),e=Object.hasOwn(G,t)?G[t]:H.Identifier;e===H.In&&r.at(-1)?.type===H.Not?(r.pop(),r.push(new X("not in",H.NotIn))):r.push(new X(t,e))}}else{++s;const t=i((t=>t!==e));r.push(new X(t,H.StringLiteral)),++s}}return r}var rt=class{constructor(){this.type="Statement"}},nt=class extends rt{constructor(t){super(),this.body=t,this.type="Program"}},st=class extends rt{constructor(t,e,r){super(),this.test=t,this.body=e,this.alternate=r,this.type="If"}},it=class extends rt{constructor(t,e,r,n){super(),this.loopvar=t,this.iterable=e,this.body=r,this.defaultBlock=n,this.type="For"}},ot=class extends rt{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},at=class extends rt{constructor(t,e,r){super(),this.name=t,this.args=e,this.body=r,this.type="Macro"}},ct=class extends rt{constructor(){super(...arguments),this.type="Expression"}},ut=class extends ct{constructor(t,e,r){super(),this.object=t,this.property=e,this.computed=r,this.type="MemberExpression"}},lt=class extends ct{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},ht=class extends ct{constructor(t){super(),this.value=t,this.type="Identifier"}},ft=class extends ct{constructor(t){super(),this.value=t,this.type="Literal"}},pt=class extends ft{constructor(){super(...arguments),this.type="NumericLiteral"}},wt=class extends ft{constructor(){super(...arguments),this.type="StringLiteral"}},dt=class extends ft{constructor(){super(...arguments),this.type="BooleanLiteral"}},mt=class extends ft{constructor(){super(...arguments),this.type="ArrayLiteral"}},yt=class extends ft{constructor(){super(...arguments),this.type="TupleLiteral"}},bt=class extends ft{constructor(){super(...arguments),this.type="ObjectLiteral"}},gt=class extends ct{constructor(t,e,r){super(),this.operator=t,this.left=e,this.right=r,this.type="BinaryExpression"}},xt=class extends ct{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},Et=class extends ct{constructor(t,e){super(),this.iterable=t,this.test=e,this.type="SelectExpression"}},vt=class extends ct{constructor(t,e,r){super(),this.operand=t,this.negate=e,this.test=r,this.type="TestExpression"}},St=class extends ct{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},$t=class extends ct{constructor(t=void 0,e=void 0,r=void 0){super(),this.start=t,this.stop=e,this.step=r,this.type="SliceExpression"}},kt=class extends ct{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function At(t){const e=new nt([]);let r=0;function n(e,n){const s=t[r++];if(!s||s.type!==e)throw new Error(`Parser Error: ${n}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[r].type){case H.Text:e=new wt(n(H.Text,"Expected text token").value);break;case H.OpenStatement:e=function(){let e;switch(n(H.OpenStatement,"Expected opening statement token"),t[r].type){case H.Set:++r,e=a(),n(H.CloseStatement,"Expected closing statement token");break;case H.If:++r,e=c(),n(H.OpenStatement,"Expected {% token"),n(H.EndIf,"Expected endif token"),n(H.CloseStatement,"Expected %} token");break;case H.Macro:++r,e=function(){const t=E();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=y();n(H.CloseStatement,"Expected closing statement token");const r=[];for(;i(H.OpenStatement,H.EndMacro);)r.push(s());return new at(t,e,r)}(),n(H.OpenStatement,"Expected {% token"),n(H.EndMacro,"Expected endmacro token"),n(H.CloseStatement,"Expected %} token");break;case H.For:++r,e=function(){const t=u(!0);if(!(t instanceof ht||t instanceof yt))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);n(H.In,"Expected `in` keyword following loop variable");const e=l();n(H.CloseStatement,"Expected closing statement token");const a=[];for(;i(H.OpenStatement,H.EndFor)&&i(H.OpenStatement,H.Else);)a.push(s());const c=[];if(o(H.OpenStatement,H.Else))for(++r,++r,n(H.CloseStatement,"Expected closing statement token");i(H.OpenStatement,H.EndFor);)c.push(s());return new it(t,e,a,c)}(),n(H.OpenStatement,"Expected {% token"),n(H.EndFor,"Expected endfor token"),n(H.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[r].type} ${t[r].value}`)}return e}(),e.isStatement=!0;break;case H.OpenExpression:e=function(){n(H.OpenExpression,"Expected opening expression token");const t=l();return n(H.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[r].type}`)}return e}function i(...e){return r+e.length<=t.length&&e.some(((e,n)=>e!==t[r+n].type))}function o(...e){return r+e.length<=t.length&&e.every(((e,n)=>e===t[r+n].type))}function a(){const t=l();if(o(H.Equals)){++r;const e=a();return new ot(t,e)}return t}function c(){const e=l();n(H.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[r]?.type!==H.OpenStatement||t[r+1]?.type!==H.ElseIf&&t[r+1]?.type!==H.Else&&t[r+1]?.type!==H.EndIf;)i.push(s());if(t[r]?.type===H.OpenStatement&&t[r+1]?.type!==H.EndIf)if(++r,o(H.ElseIf))n(H.ElseIf,"Expected elseif token"),a.push(c());else for(n(H.Else,"Expected else token"),n(H.CloseStatement,"Expected closing statement token");t[r]?.type!==H.OpenStatement||t[r+1]?.type!==H.EndIf;)a.push(s());return new st(e,i,a)}function u(t=!1){const e=t?E:l,n=[e()],s=o(H.Comma);for(;s&&(++r,n.push(e()),o(H.Comma)););return s?new yt(n):n[0]}function l(){return function(){const t=h();if(o(H.If)){++r;const e=h();if(o(H.Else)){++r;const n=h();return new st(e,[t],[n])}return new Et(t,e)}return t}()}function h(){let e=f();for(;o(H.Or);){const n=t[r];++r;const s=f();e=new gt(n,e,s)}return e}function f(){let e=p();for(;o(H.And);){const n=t[r];++r;const s=p();e=new gt(n,e,s)}return e}function p(){let e;for(;o(H.Not);){const n=t[r];++r;const s=p();e=new St(n,s)}return e??function(){let e=w();for(;o(H.ComparisonBinaryOperator)||o(H.In)||o(H.NotIn);){const n=t[r];++r;const s=w();e=new gt(n,e,s)}return e}()}function w(){let e=g();for(;o(H.AdditiveBinaryOperator);){const n=t[r];++r;const s=g();e=new gt(n,e,s)}return e}function d(){const e=function(){let e=E();for(;o(H.Dot)||o(H.OpenSquareBracket);){const s=t[r];let i;++r;const o=s.type!==H.Dot;if(o)i=b(),n(H.CloseSquareBracket,"Expected closing square bracket");else if(i=E(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new ut(e,i,o)}return e}();return o(H.OpenParen)?m(e):e}function m(t){let e=new lt(t,y());return o(H.OpenParen)&&(e=m(e)),e}function y(){n(H.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(H.CloseParen);){let e=l();if(o(H.Equals)){if(++r,!(e instanceof ht))throw new SyntaxError("Expected identifier for keyword argument");const t=l();e=new kt(e,t)}t.push(e),o(H.Comma)&&++r}return t}();return n(H.CloseParen,"Expected closing parenthesis for arguments list"),t}function b(){const t=[];let e=!1;for(;!o(H.CloseSquareBracket);)o(H.Colon)?(t.push(void 0),++r,e=!0):(t.push(l()),o(H.Colon)&&(++r,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new $t(...t)}return t[0]}function g(){let e=x();for(;o(H.MultiplicativeBinaryOperator);){const n=t[r];++r;const s=x();e=new gt(n,e,s)}return e}function x(){let t=function(){let t=d();for(;o(H.Pipe);){++r;let e=E();if(!(e instanceof ht))throw new SyntaxError("Expected identifier for the filter");o(H.OpenParen)&&(e=m(e)),t=new xt(t,e)}return t}();for(;o(H.Is);){++r;const e=o(H.Not);e&&++r;let n=E();if(n instanceof dt&&(n=new ht(n.value.toString())),!(n instanceof ht))throw new SyntaxError("Expected identifier for the test");t=new vt(t,e,n)}return t}function E(){const e=t[r];switch(e.type){case H.NumericLiteral:return++r,new pt(Number(e.value));case H.StringLiteral:return++r,new wt(e.value);case H.BooleanLiteral:return++r,new dt("true"===e.value.toLowerCase());case H.Identifier:return++r,new ht(e.value);case H.OpenParen:{++r;const e=u();if(t[r].type!==H.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[r].type} instead`);return++r,e}case H.OpenSquareBracket:{++r;const t=[];for(;!o(H.CloseSquareBracket);)t.push(l()),o(H.Comma)&&++r;return++r,new mt(t)}case H.OpenCurlyBracket:{++r;const t=new Map;for(;!o(H.CloseCurlyBracket);){const e=l();n(H.Colon,"Expected colon between key and value in object literal");const s=l();t.set(e,s),o(H.Comma)&&++r}return++r,new bt(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;r<t.length;)e.body.push(s());return e}function Tt(t,e,r=1){void 0===e&&(e=t,t=0);const n=[];for(let s=t;s<e;s+=r)n.push(s);return n}function Ot(t,e,r,n=1){const s=Math.sign(n);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),r=(r??=t.length)<0?Math.max(t.length+r,0):Math.min(r,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),r=(r??=-1)<-1?Math.max(t.length+r,-1):Math.min(r,t.length-1));const i=[];for(let o=e;s*o<s*r;o+=n)i.push(t[o]);return i}function jt(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var Ct=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new Ft(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},Nt=class extends Ct{constructor(){super(...arguments),this.type="NumericValue"}},It=class t extends Ct{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new Ut((()=>new t(this.value.toUpperCase())))],["lower",new Ut((()=>new t(this.value.toLowerCase())))],["strip",new Ut((()=>new t(this.value.trim())))],["title",new Ut((()=>new t(jt(this.value))))],["length",new Nt(this.value.length)],["rstrip",new Ut((()=>new t(this.value.trimEnd())))],["lstrip",new Ut((()=>new t(this.value.trimStart())))]])}},Ft=class extends Ct{constructor(){super(...arguments),this.type="BooleanValue"}},Mt=class extends Ct{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new Ut((([t,e])=>{if(!(t instanceof It))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new Bt}))],["items",new Ut((()=>new Pt(Array.from(this.value.entries()).map((([t,e])=>new Pt([new It(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new Ft(this.value.size>0)}},Rt=class extends Mt{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},Pt=class extends Ct{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new Nt(this.value.length)]])}__bool__(){return new Ft(this.value.length>0)}},Vt=class extends Pt{constructor(){super(...arguments),this.type="TupleValue"}},Ut=class extends Ct{constructor(){super(...arguments),this.type="FunctionValue"}},Bt=class extends Ct{constructor(){super(...arguments),this.type="NullValue"}},Lt=class extends Ct{constructor(){super(...arguments),this.type="UndefinedValue"}},_t=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new Ut((t=>{if(0===t.length)return new Mt(new Map);if(1!==t.length||!(t[0]instanceof Mt))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof Ut],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["string",t=>"StringValue"===t.type],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof Pt||t instanceof It],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value],["eq",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,zt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new Lt}catch{return new Lt}}},qt=class{constructor(t){this.global=t??new _t}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const r=this.evaluate(t.left,e);switch(t.operator.value){case"and":return r.__bool__().value?this.evaluate(t.right,e):r;case"or":return r.__bool__().value?r:this.evaluate(t.right,e)}const n=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new Ft(r.value==n.value);case"!=":return new Ft(r.value!=n.value)}if(r instanceof Lt||n instanceof Lt)throw new Error("Cannot perform operation on undefined values");if(r instanceof Bt||n instanceof Bt)throw new Error("Cannot perform operation on null values");if(r instanceof Nt&&n instanceof Nt)switch(t.operator.value){case"+":return new Nt(r.value+n.value);case"-":return new Nt(r.value-n.value);case"*":return new Nt(r.value*n.value);case"/":return new Nt(r.value/n.value);case"%":return new Nt(r.value%n.value);case"<":return new Ft(r.value<n.value);case">":return new Ft(r.value>n.value);case">=":return new Ft(r.value>=n.value);case"<=":return new Ft(r.value<=n.value)}else if(r instanceof Pt&&n instanceof Pt){if("+"===t.operator.value)return new Pt(r.value.concat(n.value))}else if(n instanceof Pt){const e=void 0!==n.value.find((t=>t.value===r.value));switch(t.operator.value){case"in":return new Ft(e);case"not in":return new Ft(!e)}}if((r instanceof It||n instanceof It)&&"+"===t.operator.value)return new It(r.toString()+n.toString());if(r instanceof It&&n instanceof It)switch(t.operator.value){case"in":return new Ft(n.value.includes(r.value));case"not in":return new Ft(!n.value.includes(r.value))}if(r instanceof It&&n instanceof Mt)switch(t.operator.value){case"in":return new Ft(n.value.has(r.value));case"not in":return new Ft(!n.value.has(r.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${r.type} and ${n.type}`)}evaluateArguments(t,e){const r=[],n=new Map;for(const s of t)if("KeywordArgumentExpression"===s.type){const t=s;n.set(t.key.value,this.evaluate(t.value,e))}else{if(n.size>0)throw new Error("Positional arguments must come before keyword arguments");r.push(this.evaluate(s,e))}return[r,n]}evaluateFilterExpression(t,e){const r=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const n=t.filter,s=e.lookupVariable(n.value);if(s instanceof Ut)return s.value([r],e);if(r instanceof Pt)switch(n.value){case"list":return r;case"first":return r.value[0];case"last":return r.value[r.value.length-1];case"length":return new Nt(r.value.length);case"reverse":return new Pt(r.value.reverse());case"sort":return new Pt(r.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));default:throw new Error(`Unknown ArrayValue filter: ${n.value}`)}else if(r instanceof It)switch(n.value){case"length":return new Nt(r.value.length);case"upper":return new It(r.value.toUpperCase());case"lower":return new It(r.value.toLowerCase());case"title":return new It(jt(r.value));case"capitalize":return new It(r.value.charAt(0).toUpperCase()+r.value.slice(1));case"trim":return new It(r.value.trim());case"trimStart":return new It(r.value.trimStart());case"trimEnd":return new It(r.value.trimEnd());case"indent":return new It(r.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"string":return r;default:throw new Error(`Unknown StringValue filter: ${n.value}`)}else{if(r instanceof Nt){if("abs"===n.value)return new Nt(Math.abs(r.value));throw new Error(`Unknown NumericValue filter: ${n.value}`)}if(r instanceof Mt)switch(n.value){case"items":return new Pt(Array.from(r.value.entries()).map((([t,e])=>new Pt([new It(t),e]))));case"length":return new Nt(r.value.size);case"string":return new It(r.toString());default:throw new Error(`Unknown ObjectValue filter: ${n.value}`)}}throw new Error(`Cannot apply filter "${n.value}" to type: ${r.type}`)}if("CallExpression"===t.filter.type){const n=t.filter;if("Identifier"!==n.callee.type)throw new Error(`Unknown filter: ${n.callee.type}`);const s=n.callee.value,i=e.lookupVariable(s);if(i instanceof Ut){const[t,s]=this.evaluateArguments(n.args,e);return s.size>0&&t.push(new Rt(s)),i.value([r,...t],e)}if(r instanceof Pt){switch(s){case"selectattr":{if(r.value.some((t=>!(t instanceof Mt))))throw new Error("`selectattr` can only be applied to array of objects");if(n.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=n.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=r.value.filter((e=>{const r=e.value.get(t.value);return!!r&&o(r,i)}));return new Pt(a)}case"map":{const[,t]=this.evaluateArguments(n.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof It))throw new Error("attribute must be a string");const n=t.get("default"),s=r.value.map((t=>{if(!(t instanceof Mt))throw new Error("items in map must be an object");return t.value.get(e.value)??n??new Lt}));return new Pt(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(r instanceof It){if("indent"===s){const[t,s]=this.evaluateArguments(n.args,e),i=t.at(0)??s.get("width")??new Nt(4);if(!(i instanceof Nt))throw new Error("width must be a number");const o=t.at(1)??s.get("first")??new Ft(!1),a=t.at(2)??s.get("blank")??new Ft(!1),c=r.value.split("\n"),u=" ".repeat(i.value),l=c.map(((t,e)=>!o.value&&0===e||!a.value&&0===t.length?t:u+t));return new It(l.join("\n"))}throw new Error(`Unknown StringValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${r.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const r=this.evaluate(t.operand,e),n=e.tests.get(t.test.value);if(!n)throw new Error(`Unknown test: ${t.test.value}`);const s=n(r);return new Ft(t.negate?!s:s)}evaluateUnaryExpression(t,e){const r=this.evaluate(t.argument,e);if("not"===t.operator.value)return new Ft(!r.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let r="";for(const n of t){const t=this.evaluate(n,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(r+=t)}return new It(r)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const[r,n]=this.evaluateArguments(t.args,e);n.size>0&&r.push(new Rt(n));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(r,e)}evaluateSliceExpression(t,e,r){if(!(t instanceof Pt||t instanceof It))throw new Error("Slice object must be an array or string");const n=this.evaluate(e.start,r),s=this.evaluate(e.stop,r),i=this.evaluate(e.step,r);if(!(n instanceof Nt||n instanceof Lt))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof Nt||s instanceof Lt))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof Nt||i instanceof Lt))throw new Error("Slice step must be numeric or undefined");return t instanceof Pt?new Pt(Ot(t.value,n.value,s.value,i.value)):new It(Ot(Array.from(t.value),n.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const r=this.evaluate(t.object,e);let n,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(r,t.property,e);n=this.evaluate(t.property,e)}else n=new It(t.property.value);if(r instanceof Mt){if(!(n instanceof It))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.value.get(n.value)??r.builtins.get(n.value)}else if(r instanceof Pt||r instanceof It)if(n instanceof Nt)s=r.value.at(n.value),r instanceof It&&(s=new It(r.value.at(n.value)));else{if(!(n instanceof It))throw new Error(`Cannot access property with non-string/non-number: got ${n.type}`);s=r.builtins.get(n.value)}else{if(!(n instanceof It))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.builtins.get(n.value)}return s instanceof Ct?s:new Lt}evaluateSet(t,e){const r=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const n=t.assignee.value;e.setVariable(n,r)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const n=t.assignee,s=this.evaluate(n.object,e);if(!(s instanceof Mt))throw new Error("Cannot assign to member of non-object");if("Identifier"!==n.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(n.property.value,r)}}return new Bt}evaluateIf(t,e){const r=this.evaluate(t.test,e);return this.evaluateBlock(r.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const r=new _t(e);let n,s;if("SelectExpression"===t.iterable.type){const e=t.iterable;s=this.evaluate(e.iterable,r),n=e.test}else s=this.evaluate(t.iterable,r);if(!(s instanceof Pt))throw new Error(`Expected iterable type in for loop: got ${s.type}`);const i=[],o=[];for(let e=0;e<s.value.length;++e){const a=new _t(r),c=s.value[e];let u;if("Identifier"===t.loopvar.type)u=e=>e.setVariable(t.loopvar.value,c);else{if("TupleLiteral"!==t.loopvar.type)throw new Error(`Invalid loop variable(s): ${t.loopvar.type}`);{const e=t.loopvar;if("ArrayValue"!==c.type)throw new Error(`Cannot unpack non-iterable type: ${c.type}`);const r=c;if(e.value.length!==r.value.length)throw new Error(`Too ${e.value.length>r.value.length?"few":"many"} items to unpack`);u=t=>{for(let n=0;n<e.value.length;++n){if("Identifier"!==e.value[n].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[n].type}`);t.setVariable(e.value[n].value,r.value[n])}}}}if(n){u(a);if(!this.evaluate(n,a).__bool__().value)continue}i.push(c),o.push(u)}let a="",c=!0;for(let e=0;e<i.length;++e){const n=new Map([["index",new Nt(e+1)],["index0",new Nt(e)],["revindex",new Nt(i.length-e)],["revindex0",new Nt(i.length-e-1)],["first",new Ft(0===e)],["last",new Ft(e===i.length-1)],["length",new Nt(i.length)],["previtem",e>0?i[e-1]:new Lt],["nextitem",e<i.length-1?i[e+1]:new Lt]]);r.setVariable("loop",new Mt(n)),o[e](r);a+=this.evaluateBlock(t.body,r).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,r).value}return new It(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new Ut(((e,r)=>{const n=new _t(r);let s;e=e.slice(),"KeywordArgumentsValue"===e.at(-1)?.type&&(s=e.pop());for(let r=0;r<t.args.length;++r){const i=t.args[r],o=e[r];if("Identifier"===i.type){const t=i;if(!o)throw new Error(`Missing positional argument: ${t.value}`);n.setVariable(t.value,o)}else{if("KeywordArgumentExpression"!==i.type)throw new Error(`Unknown argument type: ${i.type}`);{const t=i,e=o??s?.value.get(t.key.value)??this.evaluate(t.value,n);n.setVariable(t.key.value,e)}}}return this.evaluateBlock(t.body,n)}))),new Bt}evaluate(t,e){if(void 0===t)return new Lt;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"Macro":return this.evaluateMacro(t,e);case"NumericLiteral":return new Nt(Number(t.value));case"StringLiteral":return new It(t.value);case"BooleanLiteral":return new Ft(t.value);case"ArrayLiteral":return new Pt(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new Vt(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const r=new Map;for(const[n,s]of t.value){const t=this.evaluate(n,e);if(!(t instanceof It))throw new Error(`Object keys must be strings: got ${t.type}`);r.set(t.value,this.evaluate(s,e))}return new Mt(r,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function zt(t){switch(typeof t){case"number":return new Nt(t);case"string":return new It(t);case"boolean":return new Ft(t);case"undefined":return new Lt;case"object":return null===t?new Bt:Array.isArray(t)?new Pt(t.map(zt)):new Mt(new Map(Object.entries(t).map((([t,e])=>[t,zt(e)]))),t);case"function":return new Ut(((e,r)=>{const n=e.map((t=>Dt(t)));return zt(t(...n)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function Dt(t){let e=t;if(Array.isArray(t))e=t.map((t=>Dt(t)));else if(t instanceof Map)e={},t.forEach(((t,r)=>{e[r]=Dt(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>Dt(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:Dt(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function Jt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var Wt={randomInt:Jt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=Jt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const r=Object.keys(t);e=r[Jt(r.length-1)]}return t[e]}},tojson:function(t,e,r){return e&&"object"==typeof e&&(e.depth&&(r=e.depth),e=e.indent),Kt(t,e,r)}};function Kt(t,e,r){let n="";const s=r??0;if(null===t)n="null";else{const r=typeof t;switch(r){case"undefined":n="null";case"number":case"string":case"boolean":return JSON.stringify(t);case"object":{const r=e?" ".repeat(e):"",n="\n"+r.repeat(s),i=n+r;if(Array.isArray(t)){const r=t.map((t=>Kt(t,e,s+1)));return e?`[${i}${r.join(`,${i}`)}${n}]`:`[${r.join(", ")}]`}{const r=Array.from(Object.entries(t)).map((([t,r])=>{const n=`"${t}": ${Kt(r,e,s+1)}`;return e?`${i}${n}`:n}));return e?`{${r.join(",")}${n}}`:`{${r.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${r}`)}}return n}var Ht=class extends _t{constructor(t){super(t),this.parent=t}assign(t){for(const[e,r]of Object.entries(t))this.set(e,r)}clear(){this.variables.clear()}},Gt=class t{static{this.global=new Ht}constructor(t,e={}){const r=et(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=At(r)}render(e){const r=new _t(t.global);r.set("false",!1),r.set("true",!0),r.set("raise_exception",(t=>{throw new Error(t)})),r.set("range",Tt);for(const[t,n]of Object.entries(e))r.set(t,n);return new qt(r).run(this.parsed).toString()}};function Xt(t,e){let r;switch(t.type){case"Identifier":r=t.value;break;case"MemberExpression":r=Xt(t.object,e);break;case"FilterExpression":r=Xt(t.operand,e);break;case"Set":{e||(e=[]);const n=Xt(t.assignee);n&&e.push(n),r=Xt(t.value,e);break}}return r&&e?.includes(r)&&(r=void 0),r}function Yt(t){let e;if("Program"===t.type)e=t.body.some((t=>Yt(t)));else e=t.isStatement;return e}function Zt(t,e){let r=[];if(Array.isArray(t))r=t.map((t=>Zt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":r=t.body.map((t=>Zt(t,e))).filter(Boolean).flat();break;case"If":r=[Xt(t.test,e),...Zt(t.body,e),...Zt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":r=[Xt(t.left,e),Xt(t.right,e)].filter(Boolean);break;case"For":{const n=Xt(t.loopvar);n&&(e||(e=[]),e.push(n)),r=[Xt(t.iterable,e),...Zt(t.body,e)].filter(Boolean);break}case"CallExpression":r=[Xt(t.callee,e),...Zt(t.args,e)].filter(Boolean);break;default:r=[Xt(t,e)].filter(Boolean)}return r}Gt.global.assign(Wt);var Qt=class extends D{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=new Gt(r)}catch(t){}return e&&(n=Yt(e.parsed)),n}getVariables(t=this.compiledTemplate){return Zt(t.parsed,[]).filter(((t,e,r)=>r.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=new Gt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}};function te(t){return function(e){return t}}function ee(t){const e=t.split(""),r=[],n=(t,r)=>{for(let n=r;n<e.length;n+=1)if(t.includes(e[n]))return n;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])r.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])r.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=n("}",s);if(t<0)throw new Error("Unclosed '{' in template.");r.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=n("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");r.push({type:"literal",text:i}),s=t<0?e.length:t}}return r}function re(t,e){return t.reduce(((t,r)=>{let n;return n="variable"===r.type?r.name in e?t+e[r.name]:t:t+r.text,n}),"")}function ne(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}D.register(Qt,{name:"hf",aliases:["huggingface","internal","default"]});var se=class extends D{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=ee(r)}catch(t){}if(e){n=ne(e).length>0}return n}getVariables(t=this.compiledTemplate){return ne(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=ee(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return re(this.compiledTemplate,t)}};function ie(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function oe(t,e,r){let n=function(t,e,r){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])([^\2]*?)\2\s+(["'])([^\4]*?)\4\s*}}/g,((t,n,s,i,o,a)=>{if(r)return e[n]=null,t;const c=new RegExp(i,"g");return ie(e,n).replace(c,a)}))}(t,e,r);return n=function(t,e,r){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])([^\2]*?)\2\s*}}/g,((t,n,s,i)=>r?(e[n]=null,t):ie(e,n).join(i)))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,n,s,i,o)=>{if(r)return n.startsWith(".")&&(n=n.substring(1)),e[n]=null,t;let a;if(!n.startsWith("."))throw new Error("Functionality not implemented");{const t=ie(e,n.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${n}: ${typeof t}`);a=t?s:o??""}}return a}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,n,s,i)=>{if(r)return e[n]=null,t;const o=ie(e,n);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,n)=>r?(e[n]=null,t):ie(e,n)||""))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,n,s)=>{if(r)return e[n]=null,t;const i=ie(e,n);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(n,e,r),n}D.register(se,{name:"fstring",aliases:["python","f-string","langchain"]});var ae=class extends D{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return oe(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w("Prompt template must be a string","PromptTemplate",400);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return oe(this.template,t)}};function ce(t){return Object.keys(t).sort().map((e=>t[e]))}D.register(ae,{name:"golang",aliases:["localai","ollama"]});var ue=class extends D{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof D?t.examplePrompt:D.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const r=await this.examplePrompt.format(t);e.push(r)}else if("string"==typeof t)e.push(t);else if(t){const r=ce(t);r.length>0&&e.push(...r)}const r=[this.prefix,...e,this.suffix].join(this.exampleSeparator),n=this.templateFormat;return await D.format({template:r,data:t,templateFormat:n})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}};D.register(ue,{name:"fewshot",aliases:["few_shot"]});var le=/(\\)?(\$)(?!\()(\{?)([\w.]+)(?::?-((?:\$\{(?:\$\{(?:\$\{[^}]*\}|[^}])*}|[^}])*}|[^}])+))?(\}?)/gi;function he(t){return t.replace(/\\\$/g,"$")}function fe(t,e,r){return t.replace(le,((n,s,i,o,a,c,u)=>"\\"===s?n.slice(1):e[a]?e[a]===r[a]?e[a]:fe(e[a],e,r):r[a]?r[a]===t?r[a]:fe(r[a],e,r):c?c.startsWith("$")?fe(c,e,r):c:""))}function pe(t){let e=process.env;t&&null!=t.processEnv&&(e=t.processEnv);for(const r in t.parsed){let n=t.parsed[r];if(!n)continue;n=Object.prototype.hasOwnProperty.call(e,r)?e[r]===t.parsed[r]?fe(n,e,t.parsed):e[r]:fe(n,e,t.parsed),t.parsed[r]=n?he(n):n}for(const r in t.parsed)e[r]=t.parsed[r];return t}function we(t,e={},r){switch(r||(r=new WeakSet),e.processEnv||(e.processEnv={...process.env}),e.parsed||(e.parsed=e.processEnv),typeof t){case"string":t=fe(t,e.processEnv,e.parsed);break;case"object":if(r.has(t))return t;if(r.add(t),Array.isArray(t))for(let n=0;n<t.length;n++){const s=t[n];"string"!=typeof s&&"object"!=typeof s||(t[n]=we(t[n],e,r))}else for(const[n,s]of Object.entries(t))"string"!=typeof s&&"object"!=typeof s||(t[n]=we(s,e,r))}return t}var de="@",me=/(\S.+?[.!?])(?=\s+|$)|(\S.+?)(?=[\n]|$)/g,ye=/([A-Z][a-z]{1,2}\.)\s(\w)/g,be=/(\.[a-zA-Z]\.)\s(\w)/g,ge=new RegExp("([A-Z][a-z]{1,2}\\.)"+de+"(\\w)","g"),xe=new RegExp("(\\.[a-zA-Z]\\.)"+de+"(\\w)","g");function Ee(t,e,r){const n="$1"+e+"$2";let s=t;for(let t=0;t<r.length;t++)s=s.replace(r[t],n);return s}function ve(t,e=!0){const r=(t=(t=(t=(t=(t=t.replace(/([。!??])\1+/g,"$1")).replace(/([。!??])([^”’])/g,"$1\n$2")).replace(/(\.{6})([^”’])/g,"$1\n$2")).replace(/(…{2})([^”’])/g,"$1\n$2")).replace(/([。!??][”’])([^,。!??])/g,"$1\n$2")).split("\n");let n=[];for(let t=0;t<r.length;t++){let s=r[t].trim();if(!s)continue;if(!e){n.push(s);continue}let i=Ee(s,de,[ye,be]),o=Array.from(i.matchAll(me));if(o.length)for(let t=0;t<o.length;t++){let e=Ee(o[t][0]," ",[ge,xe]);n.push(e)}else n.push(s)}return n}function Se(t,e=2,r=.5){const n=10**e;return Math.trunc((t+Number.EPSILON+r/n)*n)/n}async function $e(t){return new Promise((e=>setTimeout(e,t)))}import{createAbilityInjector as ke}from"custom-ability";var Ae="event",Te="event-bus";var Oe=ke((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(Te)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.on(e,r)}once(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.once(e,r)}off(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.off(e,r)}emit(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,r):n.emit.call(this,e,this.name,...r)}emitError(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emit.call(this,"error",e,this.name,...r)}async emitAsync(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emitAsync.call(this,e,this.name,...r)}}}),!0);function je(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var Ce=498,Ne=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let r,n;this.active||x("Channel closed","SSEChannel",Ce);let s=e;if(t||e)n=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",r="id: "+n+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:n,_eventName:s,output:r});else{if(!this.clients.size)return;r="data: \n\n"}for([...this.clients].filter((t=>!s||je(t.events,s))).forEach(((t,e)=>{t.res.write(r)}));this.messages.length>this.options.historySize;)this.messages.shift();return n}subscribe(t,e,r){this.active||x("Channel closed","SSEChannel",Ce);const n={req:t,res:e,events:r},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),n.req.socket.setNoDelay(!0),n.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>je(n.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),n.res.write(a),this.clients.add(n),s>0&&setTimeout((()=>{n.res.writableEnded||this.unsubscribe(n)}),s),n.res.on("close",(()=>this.unsubscribe(n))),n}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const r=e.req.socket.remoteAddress??"";r in t||(t[r]=0),t[r]++})),t}getSubscriberCount(){return this.clients.size}};function Ie(t){return t instanceof ReadableStream||t instanceof WritableStream}var Fe=600,Me=601,Re=class extends p{constructor(t,e=Fe){super(t,500)}};function Pe(t){if(t){const e=t.getReader();return new ReadableStream({async start(t){const{done:r,value:n}=await e.read();if(!r){const e=(new TextDecoder).decode(n);t.error(new Re(`Response error: ${e}`,Me))}}})}return new ReadableStream({start(t){t.error(new Re("Response error: No response body",Me))}})}function Ve(){return new ReadableStream({start(t){t.close()}})}import{createParser as Ue}from"eventsource-parser";function Be(t){const e=new TextDecoder;let r;return new TransformStream({async start(e){r=Ue((r=>{if("data"in r&&"event"===r.type&&"[DONE]"===r.data||"done"===r.event)e.terminate();else if("data"in r){const n=t?t(r.data,{event:r.event}):r.data;n&&e.enqueue(n)}}))},transform(t){r.feed(e.decode(t))}})}function Le(){let t=!0;return e=>(t&&(e=e.trimStart())&&(t=!1),e)}function _e(t,e){if(!t.ok)return Pe(t.body);let r=t.body||new ReadableStream({start(t){t.close()}});return r instanceof ReadableStream||(r=ReadableStream.from(r)),r.pipeThrough(Be(e))}function qe(t){let e=t[Symbol.asyncIterator]();return new ReadableStream({async pull(t){const{done:r,value:n}=await e.next();r?t.close():t.enqueue(n)},async cancel(t){await(e.return?.(t))}})}function ze(t){const e=t||{};return new TransformStream({async start(t){const r=t.error;if(t.error=n=>{r.call(t,n),e.onError&&e.onError(n)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,r){try{let n;e.onTransform&&(n=await e.onTransform(t,r)),n||(n=t),r.enqueue(n)}catch(t){r.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}var De={};t(De,{XXHashAlgorithm:()=>mr,base32768:()=>lr,uuid:()=>sr,uuidNIL:()=>rr,uuidParse:()=>Qe,uuidStringify:()=>Ze,uuidValidate:()=>tr,uuidVersion:()=>er,uuidv1:()=>Ge,uuidv4:()=>Xe,uuidv5:()=>Ye,xxhash:()=>yr,xxhash32:()=>wr,xxhash64:()=>dr,xxhashAsStr:()=>br});import{v1 as Je,v5 as We,v4 as Ke}from"uuid";import*as He from"base32768";import{v1 as Ge,v4 as Xe,v5 as Ye,stringify as Ze,parse as Qe,validate as tr,version as er,NIL as rr}from"uuid";var nr={1:Je,4:Ke,5:We};function sr(t=1,e){const r=nr[t];return e?He.encode(r(null,[])):r()}var ir={};t(ir,{XXHashAlgorithm:()=>mr,base32768:()=>lr,xxhash:()=>yr,xxhash32:()=>wr,xxhash64:()=>dr,xxhashAsStr:()=>br}),e(ir,ur);import or from"xxhashjs";import*as ar from"base32768";import{canonicalize as cr}from"json-canonicalize";import*as ur from"json-canonicalize";var lr=ar,{h32:hr,h64:fr}=or,pr=588213;function wr(t,e=16){return"object"==typeof t&&(t=cr(t)),hr(t,pr).toString(e)}function dr(t,e=16){return"object"==typeof t&&(t=cr(t)),fr(t,pr).toString(e)}var mr=(t=>(t[t.xxhash64=111]="xxhash64",t[t.xxhash32=112]="xxhash32",t))(mr||{});function yr(t,e=111,r=pr){let n;return t.buffer&&(t=t.buffer),112!==e?(n=fr(t,r),n=new Uint16Array([n._a00,n._a16,n._a32,n._a48]),n=new Uint8Array(n.buffer)):(n=hr(t,r),n=new Uint16Array([n._low,n._high]),n=new Uint8Array(n.buffer)),n}function br(t,e=111,r=pr){return ar.encode(yr(t,e,r))}e(De,ir),e(E,De);import gr from"path";var xr=/[<>:"/\\|?*\u0000-\u001F]/,Er=/^(con|prn|aux|nul|com\d|lpt\d)$/i,vr=100,Sr=/^\.+(\\|\/)|^\.+$/,$r=/\.+$/,kr=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function Ar(){return new RegExp(xr.source,"g")}function Tr(){return new RegExp(kr.source,"g")}function Or(t){return t&&!(xr.test(t)||Tr().test(t)||Sr.test(t)||$r.test(t))}function jr(t){const e=t.split(gr.sep);return("/"===t[0]||e[0]&&gr.dirname(e[0])===e[0])&&e.shift(),e.every(Or)}function Cr(t,e={}){const r=e.replacement||"!";if((xr.test(r)||kr.test(r))&&x("Replacement string cannot contain reserved filename characters","sanitizeFilename",400),r.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(Sr,r)).replace(Ar(),r)).replace(Tr(),r)).replace($r,""),r.length>0){"."===t[0]||"."!==t[0]||(t=r+t),"."===t[t.length-1]&&(t+=r)}t=Er.test(t)?t+r:t;const n="number"==typeof e.maxLength?e.maxLength:vr;if(t.length>n){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,n);else{const r=t.slice(0,e),s=t.slice(e);t=r.slice(0,Math.max(1,n-s.length))+s}}return t}function Nr(t,e={}){const r=t.split(gr.sep);let n;("/"===t[0]||r[0]&&gr.dirname(r[0])===r[0])&&(n=r.shift());const s=r.map((t=>Cr(t,e)));return void 0!==n&&s.unshift(n),s.join(gr.sep)}function Ir(t,e=1){let r="";for(;e--;){const e=gr.extname(t);if(!e)break;r=e+r,t=gr.basename(t,e)}return r}function Fr(t){return t.split(".").length-1}import{isRegExpStr as Mr,toRegExp as Rr}from"util-ex";function Pr(t,e){if("string"!=typeof t)throw new w("modelName must be a string","isModelNameMatched",400);switch(typeof e){case"string":if(Mr(e)){const r=(e=Rr(e)).exec(t);if(r)return r}else if(t.toLowerCase()===e.toLowerCase())return e;break;case"object":if(Array.isArray(e)){for(const r of e)if("string"==typeof r){if(Mr(r)){const n=(e=Rr(r)).exec(t);if(n)return n}else if(t.toLowerCase()===r.toLowerCase())return r}else if(r instanceof RegExp){const e=r.exec(t);if(e)return e}else if("function"==typeof r){const e=r.call(this,t);if(e)return e}}else if(e instanceof RegExp){const r=e.exec(t);if(r)return r}break;case"function":const r=e.call(this,t);if(r)return r}}function Vr(t){return Object.keys(t).filter((t=>Number.isNaN(Number(t))))}import{newFunction as Ur}from"util-ex";function Br(t,e){if(e){const r=Object.keys(e);if(r.length){const n=Object.values(e);return Ur("expression",r,`return ${t}`)(...n)}}return Ur("expression",[],`return ${t}`)()}function Lr(t){return t?_r(t,[],""):[]}function _r(t,e,r="."){return Array.isArray(t)?t.flatMap(((t,r)=>_r(t,[...e,`[${r}]`]))):(n=t)&&n.constructor===Object?Object.entries(t).flatMap((([t,n])=>_r(n,[...e,r+t]))):[e.join("")];var n}function qr(t){if(t<2)throw new w("repetitionThreshold must be greater than 1","createEndWithRepetitionDetector",400);const e=new RegExp(`([\\S\\s]+)(\\1{${t-1},})$`);return function(t){return e.exec(t)}}import zr from"path";import*as Dr from"fs";function Jr(t,e,r,n){const s=n?.signal,i=n?.exclude;let o;if(zr.isAbsolute(t)?o=Dr.existsSync(t)?t:Wr(zr.basename(t),[zr.dirname(t)],{extNames:r,exclude:i,signal:s}):(e||(e=["."]),o=Wr(t,e,{extNames:r,exclude:i,signal:s})),!o)throw new m(t,"loadFileFromPaths");{const t=o;o=Dr.readFileSync(o),n&&(n.filepath=t)}return o}function Wr(t,e,{extNames:r,signal:n,exclude:s=[]}){let i;const o=r?r.map((e=>Ir(t,Fr(e)))):void 0;"string"==typeof s&&(s=[s]);for(const a of e){if(n?.aborted)throw n.reason;const e=zr.resolve(a,t);if(o)for(let t=0;t<o.length;t++){const n=e+(o[t]!==r[t]?r[t]:"");if(!s.includes(n)&&Dr.existsSync(n)){i=n;break}}else if(!s.includes(e)&&Dr.existsSync(e)){i=e;break}}return i}function Kr(t,e,r,n,s){let i;"string"==typeof n?(i=n,n=void 0):i=n?.encoding??"utf8";return Jr(t,e,r,n).toString(i)}function Hr(t,e,r){const n=[],s="string"==typeof t?[t]:[...t],i=new Set;for(;s.length>0;){if(r?.aborted)throw r.reason;const t=Gr(s.pop()),o=zr.resolve(t);if(i.has(o))continue;i.add(o);const a=Dr.statSync(t,{throwIfNoEntry:!1});if(a?.isDirectory()){const r=Dr.readdirSync(t,{withFileTypes:!0});for(let i=0;i<r.length;i++){const o=r[i],a=zr.join(t,o.name);o.isDirectory()?s.push(a):!o.isFile()||e&&!e(a)||n.push(a)}}}return n}function Gr(t){const e=Dr.lstatSync(t,{throwIfNoEntry:!1});return e?.isSymbolicLink()&&(t=Dr.readlinkSync(t)),t}import{existsSync as Xr,mkdirSync as Yr,readdirSync as Zr,statSync as Qr,writeFileSync as tn}from"fs";import en from"path";import{Config as rn}from"load-config-file";import{parse as nn,stringify as sn}from"yaml";import{regexp as on}from"yaml-types";import{mimeType as an}from"mime-type/with-db";import{stringify as cn}from"yaml";var un=[on];function ln(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===un.indexOf(e)&&un.push(e)}}function hn(t){return nn(t,{customTags:un})}function fn(t,e){const r=[],n=e?.after,s=e?.exclude?"string"==typeof e.exclude?[e.exclude]:e.exclude:void 0,i=e?.extensions?"string"==typeof e.extensions?[e.extensions]:e.extensions.map((t=>t.startsWith(".")?t:"."+t)):[".yml",".yaml",".json"];return function(t,e){const r=Zr(t,{withFileTypes:!0,recursive:!0});for(const n of r){const r=en.join(t,n.name);n.isFile()&&e(r,n)}}(t,((t,e)=>{if(s?.includes(t))return;const o=en.extname(t),a=Qr(t);if(i.includes(o)){if(n?.hasOwnProperty(t)&&a.mtimeMs<=n[t])return;r.push(t)}})),r}function pn(t,e){return fn(t,e).map((t=>rn.loadSync(t))).filter((t=>void 0!==t))}function wn(t,e,r=1){"."===t[0]&&r++;const n=Ir(t,r);(!n||n.split(".").length<=1)&&(t+=".yaml");const s=an.lookup(t);if("application/json"===s)e=JSON.stringify(e,null,2);else{if("text/yaml"!==s)throw new Error(`${t} unsupported mime type: ${s}`);e=sn(e)}const i=en.dirname(t);return Xr(i)||Yr(i,{recursive:!0}),tn(t,e,{encoding:"utf8"}),t}function dn(t){t instanceof Date&&(t=t.toISOString());return function(t,e){return t?`'${e}'`:String(e)}("string"==typeof t,t)}function mn(t,e){return t.map((t=>gn(t,e))).join(" AND ")}function yn(t,e){return t.map((t=>gn(t,e))).join(" OR ")}function bn(t,e){const r=[];return Object.keys(e).forEach((n=>{const s=e[n];switch(n){case"$lt":case"<":r.push(`${t} < ${dn(s)}`);break;case"<=":case"$lte":r.push(`${t} <= ${dn(s)}`);break;case"$gt":case">":r.push(`${t} > ${dn(s)}`);break;case"$gte":case">=":r.push(`${t} >= ${dn(s)}`);break;case"$ne":case"!=":r.push(`${t} != ${dn(s)}`);break;case"=":case"$eq":r.push(`${t} = ${dn(s)}`);break;case"$in":r.push(`${t} IN (${s.map((t=>dn(t))).join(", ")})`);break;case"$nin":r.push(`${t} NOT IN (${s.map((t=>dn(t))).join(", ")})`);break;case"$regex":r.push(`${t} REGEXP '${s.source}'`);break;case"$like":r.push(`${t} LIKE '${s}'`);break;case"$nlike":r.push(`${t} NOT LIKE '${s}'`);break;case"$glob":r.push(`${t} GLOB '${s}'`);break;case"$nglob":r.push(`${t} NOT GLOB '${s}'`);break;default:throw new Error(`Unsupported condition operator: ${n}`)}})),r.join(" AND ")}function gn(t,e){const r=[];if("function"!=typeof e&&(e=t=>t),Array.isArray(t))r.push(mn(t,e));else for(const[n,s]of Object.entries(t))if("$and"===n)r.push(`(${mn(t[n],e)})`);else if("$or"===n)r.push(`(${yn(t[n],e)})`);else{const t=typeof s;if(null==s)r.push(`${e(n)} IS NULL`);else if(s instanceof Date)r.push(`${e(n)}='${s.toISOString()}'`);else if("object"!==t||Array.isArray(s))if("string"===t)r.push(`${e(n)}='${s}'`);else{if("number"!==t&&"boolean"!==t)throw new Error(`Unsupported value type for key ${n}`);r.push(`${e(n)}=${s}`)}else r.push(bn(e(n),s))}return r.length>1?r.join(" AND "):r[0]}function xn(t){const e=t.indexOf("://");if(e>0)return t.substring(0,e)}function En(t,e=0){let r,n=t*10**e;return t>=1e12?(n=Math.round(n/1e12),r="T"):t>=1e9?(n=Math.round(n/1e9),r="B"):t>=1e6?(n=Math.round(n/1e6),r="M"):t>=1e3?(n=Math.round(n/1e3),r="K"):(n=Math.round(n),r=""),n/=10**e,n.toFixed(e)+r}function vn(t){const e=t.match(/^\s*[+]?(\d+(?:[.]\d+)?)\s*([TBMK])?\s*$/i);if(!e)throw new w("Invalid formatted parameter size string.","scaleToSize",400);const r=parseFloat(e[1]),n=e[2]?.toLowerCase();switch(n){case"t":return 1e12*r;case"b":return 1e9*r;case"m":return 1e6*r;case"k":return 1e3*r;default:return r}}function Sn(t,e){const r=e?.level||0,n=e?.visiting||new Set,s=e?.objectTag||"*",i=e?.arrayTag||"-";let o=[];const a=" ".repeat(2*r);if(null!=t)switch(typeof t){case"object":n.has(t)?o=["[Circular]"]:(n.add(t),o=Array.isArray(t)?t.map((t=>i+c(t))):Object.entries(t).map((([t,e])=>s+" `"+t+"`:"+c(e))));break;case"string":return t;default:return JSON.stringify(t)}else o=["null"];return o.length?a+o.join("\n"+a):"";function c(t){return(null!=t&&"object"==typeof t?"\n":" ")+Sn(t,{level:r+1,visiting:n})}}rn.register([".yml",".yaml"],hn),rn.register([".json"],(function(t){return JSON.parse(t)}));var $n=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};import{EventEmitter as kn}from"events-ex";var An=32;function Tn(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var On=class{constructor(t){this._capacity=Tn(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const r=this._front+e&this._capacity-1;return this.arr[r]=t,this._length=e+1,r}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,r=this.arr[e];return this.arr[e]=void 0,this._length=t-1,r}shift(){const t=this._length;if(0===t)return;const e=this._front,r=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,r}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(Tn(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const r=this._front,n=this._length;if(r+n>e){const t=r+n&e-1;!function(t,e,r,n,s){for(let i=0;i<s;++i)r[i+n]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},jn=class extends kn{};function Cn(t){return"function"==typeof t}function Nn(){return"1"}var In=class{constructor(t,{initFn:e=Nn,pauseFn:r,resumeFn:n,capacity:s=An}={}){if(Cn(r)!==Cn(n))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new On(t),this.waiting=new On(s),this.releaseEmitter=new jn,this.useDefaultTokens=e===Nn,this.pauseFn=r,this.resumeFn=n,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let r=0;r<t;r++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,r)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push({resolve:e,reject:r});return t&&t.addEventListener("abort",(()=>{this.waiting[n]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,r(e)})),n}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}};function Fn(t,{timeUnit:e=1e3,uniformDistribution:r=!1}={}){const n=new In(r?1:t),s=r?e/t:e;return async function(){await n.acquire(),setTimeout((()=>n.release()),s)}}import{createAbilityInjector as Mn}from"custom-ability";import{defineProperty as Rn}from"util-ex";var Pn=class extends AbortController{constructor(t){super(),Rn(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new b(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new b(e.reason||"aborted")}}},Vn=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new In(t-1)),e}isAborted(t){const e=this.hasAsyncFeature(Ln);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w("Missing taskId",this.name+".isAborted",400);r=r[t]}return!r||r.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature(Ln);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w("Missing taskId",this.name+".getRunningTask",400);r=r[t]}return r?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,r=void 0),r}getRunningTaskCount(){let t;if(this.hasAsyncFeature(Ln)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,r])=>{if(!r?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const r=this.super,n=this.self||this;return t=r?r.call(n,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,r=!0){const n=this.hasAsyncFeature(Ln);if(!n&&r&&this.getRunningTask())throw new w("The task is running",this.name,429);const s=t?.aborter||new Pn(this);if(!(s instanceof Pn)){if(!(s instanceof AbortController))throw new w("aborter should be an AbortController",this.name,400);Object.setPrototypeOf(s,new Pn(this))}if(n){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const r=this.super,n=this.self||this;r?r.call(n,t,e):n._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature(Ln)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,r){const n=this.createAborter(e,r?.taskId,r?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=n);let s=t(e,n).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(n)},r=ze({onStart:t=>{Rn(n,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=n.id),t)});t=t.pipeThrough(r)}else this.cleanTaskAborter(n);return t})).catch((t=>{throw this.cleanTaskAborter(n),t})).finally((()=>{n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=void 0)}));return s.task=n,s}runAsyncCancelableTask(t={},e,r){let n=this.createTaskPromise(e,t,r);const s=this.semaphore;if(s){const t=n,e=t.task;n=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),n.task=e}return n}abort(t,e){let r=this.__task_aborter;if(r){const n=r;if(this.hasAsyncFeature(Ln)){const t=e?.taskId;if(null==t)throw new w("Missing data.taskId",this.name+".abort",400);r=r[t],this.cleanMultiTaskAborter(t,n)}else this.__task_aborter=void 0;r&&!r.signal.aborted&&r.abort(t,e)}}};Vn.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},Vn.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};var Un,Bn=Mn(Vn,"abort",{afterInjection:function(t,e){let r=t.prototype._asyncFeatures||0;r|=Dn.Cancelable,e&&(e.asyncFeatures&&(r|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=r}}),Ln=0,_n=1,qn=2,zn=(t=>(t[t.MultiTask=Ln]="MultiTask",t[t.Cancelable=1]="Cancelable",t[t.Priority=2]="Priority",t))(zn||{}),Dn=((Un=Dn||{})[Un.MultiTask=1<<Ln]="MultiTask",Un[Un.Cancelable=2]="Cancelable",Un[Un.Priority=4]="Priority",Un),Jn=class t extends n{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const r in this.list()){const n=this.get(r);let s=n.tags;if("string"==typeof s){if(s===t){e=n;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=n;break}}return e}static getAllByTag(t){let e=[];for(const r in this.list()){const n=this.get(r);let s=n.tags;"string"==typeof s?s===t&&e.push(n):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(n)}return e}static hasAsyncFeature(t){const e=this.prototype;let r=e.asyncFeatures;return e._asyncFeatures&&(r|=e._asyncFeatures),$n.has(r,t)}static run(t,e){const r=this.get(t);if(r)return r.run(e);throw new m(`${t} to run`,this.name)}static runSync(t,e){const r=this.get(t);if(r)return r.runSync(e);throw new m(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const r=this.get(t);if(r)return r.runWithPos(...e);throw new m(`${t} to run`,this.name)}static runWithPosSync(t,...e){const r=this.get(t);if(r)return r.runWithPosSync(...e);throw new m(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,r={}){switch(typeof e){case"string":r.name=e;break;case"function":r.func=e;break;case"object":r=e}e=r.name;let n=!!this.get(e);if(n)n=!1;else{if(!(r instanceof t))return n=new this(r),n.register();this.items[e]=r,n=r}return n}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,r=this.depends;if(r){const e=Object.keys(r);for(const n of e){const e=r[n];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},r=Object.keys(this.params);let n=Math.min(r.length,t.length);for(let s=0;s<n;s++)e[r[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const r=Object.keys(t);let n=Math.min(r.length,this.params.length);for(let s=0;s<n;s++)e.push(t[r[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);x("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),$n.has(e,t)}},Wn={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,n,i){let o=t;const a=typeof t;return i.isExported?o="function"===a?t.toString():t:t&&("string"!==a&&(t=t.toString()),o=s(t,e.scope)),o}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},asyncFeatures:{type:"number"}};Jn.defineProperties(Jn,Wn);var Kn=class extends Jn{constructor(){super(...arguments),this._emitter=new r,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},Hn=new Kn(Te);import{Cache as Gn}from"secondary-cache";function Xn({key:t,value:e,options:r}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,r):this.cache.get(t):(r&&this.cache.setDefaultOptions(r),this.cache)}function Yn(t,e){let r=Jn.get(t);return r||(r=new Jn(t,{func:Xn,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),r.cache=new Gn(e)),r}var Zn=Yn("lrucache"),Qn=class t extends Jn{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else x("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const r in e){const n=this.get(r),s=e[r];n?n instanceof t?n.assign(s):x(`${r} already registered as ${n.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const r=this.get(t);if(r&&r.fetch)return r.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,r){const n={...this.fetchOptions};let s;n.headers&&n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",...n.headers}),t?.stream&&!n.headers.Connection&&(n.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),r?("string"!=typeof r&&(r=JSON.stringify(r)),r=this.name+"/"+r):r=this.name,n.method=e.toUpperCase(),"get"===e||"delete"===e?s=r+this.getUrlParams(t):(n.body=JSON.stringify(t),s=r);const i=await fetch(`${this.apiRoot}/${s}`,n);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,r=t.status,n=t.statusText,s=this.name;if(t.body){const r=await t.text();try{const t=JSON.parse(r);t&&(t.error&&(n=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=n,n=e.what)),t.message&&(n=n+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return g(n,s,r)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},ts={...k};Qn.defineProperties(Qn,ts);var es=class extends Qn{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let r=t.id;return r||x("id is required"),"string"==typeof r&&(r=encodeURIComponent(r)),delete t.id,super.fetch(t,e,r)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}async _func(t,e){const r=await this.fetch(e,t);if(e?.stream)return r;return await r.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},rs={methods:{type:"array",assign(t,e,r,n,s){s?.isExported||e.assignMethods(t)}}};es.defineProperties(es,rs);var ns=class extends es{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=Ae,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",r=`${this.apiRoot}/${this.name}${e}`,n=this._es=new EventSource(r);return Object.entries(this._sseEvents).forEach((([t,e])=>{n.addEventListener(t,e)})),this._esEvents=t,n}esListener(t){const e=t.data?JSON.parse(t.data):void 0,r=t.type;if(!this._forwardEvents.has(r)){const t=this.emitter;t&&e&&r&&(Array.isArray(e)?t.emit(r,...e):t.emit(r,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const r=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);r.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},ss=new ns(Ae);import{getAllNames as is}from"util-ex";var os=class t extends Jn{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static toJSON(){const e={};for(const r in this.items){let n=this.items[r];n instanceof t&&(n.allowExportFunc||(n=n.toJSON(),delete n.func),e[r]=n)}return e}isStream(t){return this.stream}func({}){}},as={...k};os.defineProperties(os,as);var cs=class extends os{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}};const r=this.methods=[];for(const t of $)"function"==typeof this[t]&&r.push(t);is(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((t=>{r.push(t);const e=t.slice(1);void 0===this[e]&&(this[e]=this[t])}))}cast(t,e){let r=this.params[t];return r&&("string"!=typeof r&&(r=r.type),"number"===r&&(e=Number(e))),e}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return void 0!==t.id&&(t.id=this.cast("id",t.id)),this[e](t);throw new m(e,this.name)}},us={methods:{type:"array"}};cs.defineProperties(cs,us);var ls=Hn.runSync(),hs=class t extends cs{constructor(){super(...arguments),this.name=Ae,this.description="subscribe server sent event",this.result="event",this.depends={[Te]:Hn}}static get sse(){return this._sse||(this._sse=new Ne),this._sse}get sse(){return this.constructor.sse}static publish(e,r){return t.sse.publish(e,r)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,r,n){return t.sse.subscribe(e,r,n)}static alreadyForward(e){const r=ls.listeners(e);for(const e of r)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,r){return"string"==typeof r&&(r=[r]),this.constructor.subscribe(t,e,r)}forward(e){Array.isArray(e)||(e=[e]);for(const r of e)t.alreadyForward(r)||ls.on(r,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const r of e)ls.off(r,t.ebListener)}list({_req:t,_res:e,event:r}){t&&e&&this.subscribeSSE(t,e,r)}$sub({event:t}){if(t)return this.forward(t),{event:t};x("event is required","sub",400)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};x("event is required","unsub",400)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const r of t)this.publishSSE(e,r);return{event:t}}x("event or data is required","pub",400)}isStream(t){return"list"===this.getMethodFromParams(t)}},fs=new hs(Ae);function ps(){Hn.register(),Zn.register()}export{S as PASSING_SCORE,$ as ActionNames,k as RemoteToolFuncSchema,a as ErrorCode,c as InternalErrorCode,u as NotImplementedErrorCode,l as NotFoundErrorCode,h as AlreadyExistsErrorCode,f as AbortErrorCode,p as BaseError,w as CommonError,d as NotImplementationError,m as NotFoundError,y as AlreadyExistsError,b as AbortError,g as createError,x as throwError,T as parseDateFormat,F as toDateTime,M as textToDate,R as dateToText,j as formatISO,C as parseISO,N as toDate,P as AITextGenerationFinishReasons,V as AIMessageTypes,U as AIChatRoles,B as messagesToText,L as PromptTypes,_ as PromptTemplateTypes,z as defaultTemplateFormat,D as PromptTemplate,K as PromptExampleSelector,et as tokenize,At as parse,qt as Interpreter,Wt as builtins,Ht as EnvironmentEx,Gt as Template,Qt as HfPromptTemplate,te as createHfValueFunc,ee as parseFString,re as interpolateFString,se as FStringPromptTemplate,oe as interpolateGolangTemplate,ae as GolangPromptTemplate,ce as sortedValues,ue as FewShotPromptTemplate,fe as interpolateEnv,pe as expandEnv,we as expandObjEnv,ve as splitSentence,Se as truncTo,$e as wait,Ae as EventName,Te as EventBusName,Oe as backendEventable,Ce as SSEChannelAlreadyClosedErrCode,Ne as SSEChannel,Ie as isWebStream,Fe as RStreamErrCode,Me as ResponseRStreamErrCode,Re as ReadableStreamError,Pe as getResponseErrorReadableStream,Ve as createEmptyReadableStream,Be as createEventStreamTransformer,Le as trimStartOfStreamHelper,_e as AIStream,qe as readableFromAsyncIterable,ze as createCallbacksTransformer,sr as uuid,Ge as v1,Xe as v4,Ye as v5,Ze as stringify,Qe as parse2,tr as validate,er as version,rr as NIL,lr as base32768,wr as xxhash32,dr as xxhash64,mr as XXHashAlgorithm,yr as xxhash,br as xxhashAsStr,xr as FilenameReservedRegex,Er as WindowsReservedNameRegex,Ar as filenameReservedRegex,Tr as reControlCharsRegex,Or as isValidFilename,jr as isValidFilepath,Cr as sanitizeFilename,Nr as sanitizeFilepath,Ir as getMultiLevelExtname,Fr as extNameLevel,Pr as isModelNameMatched,Vr as getAllEnumKeys,Br as parseJsJson,Lr as getKeysPath,qr as createEndWithRepetitionDetector,Jr as loadFileFromPaths,Kr as loadTextFromPaths,Hr as readFilenamesRecursiveSync,Gr as getRealFilepath,rn as ConfigFile,an as mimeType,ln as registerYamlTag,hn as parseYaml,fn as getConfigFileNames,pn as getConfigs,wn as saveConfigFile,cn as stringify2,gn as jsonFilterToWhere,xn as matchUrlProtocol,En as paramsSizeToScaleStr,vn as scaleStrToParamsSize,Sn as jsonToMarkdownStr,$n as IntSet,An as DefaultAsyncSemaphoreCapacity,In as Semaphore,Fn as RateLimit,Ln as ToolAsyncMultiTaskBit,_n as ToolAsyncCancelableBit,qn as ToolAsyncPriorityBit,zn as AsyncFeatureBits,Dn as AsyncFeatures,Jn as ToolFunc,Wn as ToolFuncSchema,Pn as TaskAbortController,Vn as CancelableAbility,Bn as makeToolFuncCancelable,E as utils_exports,v as createAbilityInjector,Qn as ClientTools,ts as ClientToolFuncSchema,os as ServerTools,as as ServerToolFuncSchema,Kn as EventToolFunc,Hn as event,Xn as _lrucache,Yn as createLRUCache,Zn as lrucache,es as ResClientTools,rs as ResClientToolsSchema,ns as EventClient,ss as eventClient,cs as ResServerTools,us as ResServerToolsSchema,hs as EventServer,fs as eventServer,ps as registerCoreTools};