llmz 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/chunk-3CGLDS5T.cjs +3059 -0
- package/dist/chunk-3T465BEW.js +96 -0
- package/dist/chunk-6QDFMQHA.js +98 -0
- package/dist/chunk-7FIPXMZR.js +33 -0
- package/dist/chunk-7S3UY52U.js +3059 -0
- package/dist/chunk-A7BDFLAE.cjs +30 -0
- package/dist/chunk-BKGPO722.cjs +3079 -0
- package/dist/chunk-BOLDQGES.cjs +33 -0
- package/dist/chunk-C2TSWGYC.cjs +91 -0
- package/dist/chunk-DFZ6GX5C.js +220 -0
- package/dist/chunk-DILHJIMP.js +180 -0
- package/dist/chunk-E2B5DRIC.cjs +419 -0
- package/dist/chunk-E5W3P7EO.cjs +96 -0
- package/dist/chunk-ENFB45AI.cjs +220 -0
- package/dist/chunk-MSTBEKOQ.js +28 -0
- package/dist/chunk-PQN6HW7A.cjs +28 -0
- package/dist/chunk-Q4DEJGXD.js +344 -0
- package/dist/chunk-QPSUMPLP.js +419 -0
- package/dist/chunk-QZGFCB4T.cjs +344 -0
- package/dist/chunk-R2N2UUKC.cjs +98 -0
- package/dist/chunk-RB2L33ZR.js +3079 -0
- package/dist/chunk-RJHDQL4C.js +161 -0
- package/dist/chunk-UG2GCPHF.js +91 -0
- package/dist/chunk-UVSOAH2H.js +152 -0
- package/dist/chunk-VP6WWAE2.cjs +152 -0
- package/dist/chunk-YPOOKE3A.cjs +180 -0
- package/dist/chunk-YSQDPG26.js +30 -0
- package/dist/chunk-YUDUY7XW.cjs +284 -0
- package/dist/chunk-ZSRC3TN4.js +284 -0
- package/dist/chunk-ZUAFUOUR.cjs +161 -0
- package/dist/compiler/compiler.d.ts +28 -0
- package/dist/compiler/index.d.ts +2 -0
- package/dist/compiler/plugins/async-iterator.d.ts +4 -0
- package/dist/compiler/plugins/braces-tsx.d.ts +3 -0
- package/dist/compiler/plugins/jsx-preserve-newlines.d.ts +5 -0
- package/dist/compiler/plugins/line-tracking.d.ts +5 -0
- package/dist/compiler/plugins/replace-comment.d.ts +5 -0
- package/dist/compiler/plugins/return-async.d.ts +4 -0
- package/dist/compiler/plugins/track-tool-calls.d.ts +16 -0
- package/dist/compiler/plugins/variable-extraction.d.ts +5 -0
- package/dist/component-DWBRHLEN.cjs +9 -0
- package/dist/component-R3ZAVXUC.js +9 -0
- package/dist/component.d.ts +51 -0
- package/dist/component.default.d.ts +10 -0
- package/dist/context.d.ts +167 -0
- package/dist/dual-modes-2VDEOJ5D.js +13 -0
- package/dist/dual-modes-3MH5N6RY.cjs +13 -0
- package/dist/errors.d.ts +64 -0
- package/dist/exit-GYMXZZ4I.js +9 -0
- package/dist/exit-PQHMJEOG.cjs +9 -0
- package/dist/exit.d.ts +20 -0
- package/dist/formatting.d.ts +5 -0
- package/dist/getter.d.ts +2 -0
- package/dist/handlers.d.ts +10 -0
- package/dist/hoist.d.ts +2 -0
- package/dist/index.cjs +811 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +811 -0
- package/dist/inspect.d.ts +6 -0
- package/dist/jsx-CJ2RBODH.js +14 -0
- package/dist/jsx-PPLE5YTB.cjs +14 -0
- package/dist/jsx.d.ts +11 -0
- package/dist/llmz-EGTGPSTX.cjs +1049 -0
- package/dist/llmz-WY74UVE3.js +1049 -0
- package/dist/llmz.d.ts +41 -0
- package/dist/objects.d.ts +24 -0
- package/dist/openai.d.ts +8 -0
- package/dist/prompts/chat-mode/system.md.d.ts +2 -0
- package/dist/prompts/chat-mode/user.md.d.ts +2 -0
- package/dist/prompts/common.d.ts +6 -0
- package/dist/prompts/dual-modes.d.ts +2 -0
- package/dist/prompts/prompt.d.ts +50 -0
- package/dist/prompts/worker-mode/system.md.d.ts +2 -0
- package/dist/prompts/worker-mode/user.md.d.ts +2 -0
- package/dist/snapshots.d.ts +61 -0
- package/dist/stack-traces.d.ts +1 -0
- package/dist/tool-AY47ML65.cjs +12 -0
- package/dist/tool-WVIPESKN.js +12 -0
- package/dist/tool.d.ts +30 -0
- package/dist/transcript.d.ts +9 -0
- package/dist/truncator-MTONQESU.js +11 -0
- package/dist/truncator-ZKPOW2I3.cjs +11 -0
- package/dist/truncator.d.ts +21 -0
- package/dist/types.d.ts +131 -0
- package/dist/typings-HTYLRNIC.js +11 -0
- package/dist/typings-QRJGGNUM.cjs +11 -0
- package/dist/typings.d.ts +5 -0
- package/dist/utils-TS23YJPE.js +38 -0
- package/dist/utils-UR4IMUHC.cjs +38 -0
- package/dist/utils.d.ts +21 -0
- package/dist/vm-4JFSZAMR.cjs +13 -0
- package/dist/vm-SMMA664M.js +13 -0
- package/dist/vm.d.ts +3 -0
- package/package.json +85 -0
- package/patches/source-map-js@1.2.1.patch +16 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,811 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
+
|
|
3
|
+
var _chunkC2TSWGYCcjs = require('./chunk-C2TSWGYC.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkYPOOKE3Acjs = require('./chunk-YPOOKE3A.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkYUDUY7XWcjs = require('./chunk-YUDUY7XW.cjs');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkZUAFUOURcjs = require('./chunk-ZUAFUOUR.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunkR2N2UUKCcjs = require('./chunk-R2N2UUKC.cjs');
|
|
19
|
+
require('./chunk-QZGFCB4T.cjs');
|
|
20
|
+
require('./chunk-PQN6HW7A.cjs');
|
|
21
|
+
require('./chunk-E5W3P7EO.cjs');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
var _chunkENFB45AIcjs = require('./chunk-ENFB45AI.cjs');
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
var _chunk3CGLDS5Tcjs = require('./chunk-3CGLDS5T.cjs');
|
|
31
|
+
require('./chunk-A7BDFLAE.cjs');
|
|
32
|
+
|
|
33
|
+
// src/objects.ts
|
|
34
|
+
var _zui = require('@bpinternal/zui');
|
|
35
|
+
|
|
36
|
+
// src/hoist.ts
|
|
37
|
+
var _generator = require('@babel/generator');
|
|
38
|
+
var _parser = require('@babel/parser');
|
|
39
|
+
var _traverse = require('@babel/traverse'); var _traverse2 = _interopRequireDefault(_traverse);
|
|
40
|
+
var _types = require('@babel/types'); var t = _interopRequireWildcard(_types);
|
|
41
|
+
var traverse = _traverse2.default;
|
|
42
|
+
function getTypingsWithoutComments(type) {
|
|
43
|
+
const typeClone = _chunk3CGLDS5Tcjs.cloneDeep_default.call(void 0, type);
|
|
44
|
+
removeBabelComments(typeClone);
|
|
45
|
+
return new (0, _generator.CodeGenerator)(typeClone, { comments: false }).generate().code;
|
|
46
|
+
}
|
|
47
|
+
function removeBabelComments(node) {
|
|
48
|
+
node.leadingComments = null;
|
|
49
|
+
node.trailingComments = null;
|
|
50
|
+
node.innerComments = null;
|
|
51
|
+
Object.keys(node).forEach((key) => {
|
|
52
|
+
const val = node[key];
|
|
53
|
+
if (Array.isArray(val)) {
|
|
54
|
+
val.forEach((child) => child && typeof child === "object" && removeBabelComments(child));
|
|
55
|
+
} else if (val && typeof val === "object" && val.type) {
|
|
56
|
+
removeBabelComments(val);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function extractAndHoistTypes(ast) {
|
|
61
|
+
const typeMap = /* @__PURE__ */ new Map();
|
|
62
|
+
const typeCounts = /* @__PURE__ */ new Map();
|
|
63
|
+
const hoistedTypes = [];
|
|
64
|
+
function addTypeToMap(typeNode) {
|
|
65
|
+
const typeString = getTypingsWithoutComments(typeNode.typeAnnotation);
|
|
66
|
+
if (!typeMap.has(typeString)) {
|
|
67
|
+
typeMap.set(typeString, typeNode);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function generateUniqueTypeName(baseName) {
|
|
71
|
+
let typeName = baseName;
|
|
72
|
+
let counter = 1;
|
|
73
|
+
while ([...typeMap.values()].some((typeNode) => typeNode.id.name === typeName)) {
|
|
74
|
+
typeName = `${baseName}${counter++}`;
|
|
75
|
+
}
|
|
76
|
+
return typeName;
|
|
77
|
+
}
|
|
78
|
+
function createTypeAlias(name, type) {
|
|
79
|
+
return t.tsTypeAliasDeclaration(t.identifier(name), null, type);
|
|
80
|
+
}
|
|
81
|
+
function getTypePaths(path) {
|
|
82
|
+
var _a, _b, _c;
|
|
83
|
+
let currPath = path;
|
|
84
|
+
const parts = /* @__PURE__ */ new Set();
|
|
85
|
+
while (currPath) {
|
|
86
|
+
const { node, parentPath } = currPath;
|
|
87
|
+
if (t.isIdentifier(node) && node.name) {
|
|
88
|
+
parts.add(node.name);
|
|
89
|
+
}
|
|
90
|
+
if (t.isTSMethodSignature(node) && currPath.key === "parameters") {
|
|
91
|
+
parts.add("Input");
|
|
92
|
+
}
|
|
93
|
+
if (currPath.key === "returnType") {
|
|
94
|
+
parts.add("Output");
|
|
95
|
+
const methodName = "id" in parentPath.node && "name" in parentPath.node.id && ((_b = (_a = parentPath == null ? void 0 : parentPath.node) == null ? void 0 : _a.id) == null ? void 0 : _b.name);
|
|
96
|
+
if (methodName) {
|
|
97
|
+
parts.add(methodName);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (((_c = node == null ? void 0 : node.key) == null ? void 0 : _c.type) === "Identifier") {
|
|
101
|
+
parts.add(node.key.name);
|
|
102
|
+
}
|
|
103
|
+
if (t.isTSParameterProperty(node) || t.isTSFunctionType(node)) {
|
|
104
|
+
parts.add("Input");
|
|
105
|
+
}
|
|
106
|
+
if (t.isTSFunctionType(node)) {
|
|
107
|
+
parts.add("Output");
|
|
108
|
+
}
|
|
109
|
+
currPath = parentPath;
|
|
110
|
+
}
|
|
111
|
+
return parts.size ? Array.from(parts).reverse().map(_chunk3CGLDS5Tcjs.upperFirst_default) : ["UnnamedType"];
|
|
112
|
+
}
|
|
113
|
+
function generateTypeName(path) {
|
|
114
|
+
return getTypePaths(path).join("");
|
|
115
|
+
}
|
|
116
|
+
function findNestedTypes(path) {
|
|
117
|
+
const node = path.node;
|
|
118
|
+
if (t.isTSTypeLiteral(node)) {
|
|
119
|
+
const typeString = getTypingsWithoutComments(node);
|
|
120
|
+
typeCounts.set(typeString, (typeCounts.get(typeString) || 0) + 1);
|
|
121
|
+
if (typeMap.has(typeString) && (typeCounts.get(typeString) || 0) > 1) {
|
|
122
|
+
path.replaceWith(t.tsTypeReference(typeMap.get(typeString).id));
|
|
123
|
+
} else if (!typeMap.has(typeString) && (typeCounts.get(typeString) || 0) > 1) {
|
|
124
|
+
const typeName = generateUniqueTypeName(generateTypeName(path));
|
|
125
|
+
const typeAlias = createTypeAlias(typeName, node);
|
|
126
|
+
addTypeToMap(typeAlias);
|
|
127
|
+
path.replaceWith(t.tsTypeReference(t.identifier(typeName)));
|
|
128
|
+
}
|
|
129
|
+
const members = path.get("members");
|
|
130
|
+
const memberPaths = Array.isArray(members) ? members : [members];
|
|
131
|
+
memberPaths.forEach((memberPath) => {
|
|
132
|
+
findNestedTypes(memberPath);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
if (t.isTSPropertySignature(node) && path.get("typeAnnotation")) {
|
|
136
|
+
const annPath = path.get("typeAnnotation.typeAnnotation");
|
|
137
|
+
if (annPath == null ? void 0 : annPath.node) {
|
|
138
|
+
findNestedTypes(annPath);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (t.isTSArrayType(node)) {
|
|
142
|
+
findNestedTypes(path.get("elementType"));
|
|
143
|
+
}
|
|
144
|
+
if (t.isTSUnionType(node) || t.isTSIntersectionType(node)) {
|
|
145
|
+
;
|
|
146
|
+
path.get("types").forEach((p) => findNestedTypes(p));
|
|
147
|
+
}
|
|
148
|
+
if (t.isTSTypeReference(node) && node.typeParameters) {
|
|
149
|
+
;
|
|
150
|
+
path.get("typeParameters.params").forEach((param) => findNestedTypes(param));
|
|
151
|
+
}
|
|
152
|
+
if (t.isTSFunctionType(node)) {
|
|
153
|
+
const returnPath = path.get("typeAnnotation");
|
|
154
|
+
if (returnPath == null ? void 0 : returnPath.node)
|
|
155
|
+
findNestedTypes(returnPath);
|
|
156
|
+
const params = path.get("parameters");
|
|
157
|
+
params.forEach((paramPath) => {
|
|
158
|
+
const ta = paramPath.get("typeAnnotation.typeAnnotation");
|
|
159
|
+
if (ta == null ? void 0 : ta.node)
|
|
160
|
+
findNestedTypes(ta);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (t.isTSMethodSignature(node)) {
|
|
164
|
+
const returnPath = path.get("typeAnnotation");
|
|
165
|
+
if (returnPath == null ? void 0 : returnPath.node) {
|
|
166
|
+
findNestedTypes(returnPath);
|
|
167
|
+
}
|
|
168
|
+
const params = path.get("parameters");
|
|
169
|
+
params.forEach((paramPath) => {
|
|
170
|
+
const ta = paramPath.get("typeAnnotation.typeAnnotation");
|
|
171
|
+
if (ta == null ? void 0 : ta.node)
|
|
172
|
+
findNestedTypes(ta);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (t.isTSDeclareFunction(node)) {
|
|
176
|
+
const params = path.get("params");
|
|
177
|
+
params.forEach((p) => {
|
|
178
|
+
const ta = p.get("typeAnnotation.typeAnnotation");
|
|
179
|
+
if (ta == null ? void 0 : ta.node)
|
|
180
|
+
findNestedTypes(ta);
|
|
181
|
+
});
|
|
182
|
+
const returnType = path.get("returnType.typeAnnotation");
|
|
183
|
+
if (returnType == null ? void 0 : returnType.node)
|
|
184
|
+
findNestedTypes(returnType);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
traverse(ast, {
|
|
188
|
+
TSTypeAliasDeclaration(path) {
|
|
189
|
+
const typeString = getTypingsWithoutComments(path.node.typeAnnotation);
|
|
190
|
+
typeCounts.set(typeString, (typeCounts.get(typeString) || 0) + 1);
|
|
191
|
+
if (typeMap.has(typeString) && (typeCounts.get(typeString) || 0) > 1) {
|
|
192
|
+
const existing = typeMap.get(typeString);
|
|
193
|
+
path.replaceWith(
|
|
194
|
+
t.tsTypeAliasDeclaration(path.node.id, null, t.tsTypeReference(t.identifier(existing.id.name)))
|
|
195
|
+
);
|
|
196
|
+
} else {
|
|
197
|
+
addTypeToMap(path.node);
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
TSPropertySignature(path) {
|
|
201
|
+
const annPath = path.get("typeAnnotation.typeAnnotation");
|
|
202
|
+
if (annPath == null ? void 0 : annPath.node)
|
|
203
|
+
findNestedTypes(annPath);
|
|
204
|
+
},
|
|
205
|
+
TSFunctionType(path) {
|
|
206
|
+
const returnPath = path.get("typeAnnotation");
|
|
207
|
+
if (returnPath.node)
|
|
208
|
+
findNestedTypes(returnPath);
|
|
209
|
+
const params = path.get("parameters");
|
|
210
|
+
params.forEach((param) => {
|
|
211
|
+
const ta = param.get("typeAnnotation.typeAnnotation");
|
|
212
|
+
if (ta == null ? void 0 : ta.node)
|
|
213
|
+
findNestedTypes(ta);
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
TSMethodSignature(path) {
|
|
217
|
+
const returnPath = path.get("typeAnnotation.typeAnnotation");
|
|
218
|
+
if (returnPath == null ? void 0 : returnPath.node) {
|
|
219
|
+
findNestedTypes(returnPath);
|
|
220
|
+
}
|
|
221
|
+
const params = path.get("parameters");
|
|
222
|
+
params.forEach((param) => {
|
|
223
|
+
const ta = param.get("typeAnnotation.typeAnnotation");
|
|
224
|
+
if (ta == null ? void 0 : ta.node)
|
|
225
|
+
findNestedTypes(ta);
|
|
226
|
+
});
|
|
227
|
+
},
|
|
228
|
+
TSDeclareFunction(path) {
|
|
229
|
+
const params = path.get("params");
|
|
230
|
+
params.forEach((p) => {
|
|
231
|
+
const ta = p.get("typeAnnotation.typeAnnotation");
|
|
232
|
+
if (ta == null ? void 0 : ta.node)
|
|
233
|
+
findNestedTypes(ta);
|
|
234
|
+
});
|
|
235
|
+
const returnPath = path.get("returnType.typeAnnotation");
|
|
236
|
+
if (returnPath == null ? void 0 : returnPath.node)
|
|
237
|
+
findNestedTypes(returnPath);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
typeMap.forEach((typeNode, typeString) => {
|
|
241
|
+
if ((typeCounts.get(typeString) || 0) > 1) {
|
|
242
|
+
if (!hoistedTypes.some((ht) => {
|
|
243
|
+
return getTypingsWithoutComments(ht.typeAnnotation) === getTypingsWithoutComments(typeNode.typeAnnotation);
|
|
244
|
+
})) {
|
|
245
|
+
hoistedTypes.push(typeNode);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
ast.program.body = [
|
|
250
|
+
...hoistedTypes,
|
|
251
|
+
...ast.program.body.filter(
|
|
252
|
+
(node) => !hoistedTypes.some((ht) => t.isTSTypeAliasDeclaration(node) && node.id.name === ht.id.name)
|
|
253
|
+
)
|
|
254
|
+
];
|
|
255
|
+
return ast;
|
|
256
|
+
}
|
|
257
|
+
async function hoistTypings(code, formatOptions) {
|
|
258
|
+
formatOptions ??= {};
|
|
259
|
+
formatOptions.throwOnError ??= true;
|
|
260
|
+
for (let i = 1; i <= 5; i++) {
|
|
261
|
+
try {
|
|
262
|
+
const initialCode = code;
|
|
263
|
+
const ast = _parser.parse.call(void 0, code, {
|
|
264
|
+
sourceType: "module",
|
|
265
|
+
plugins: ["typescript"]
|
|
266
|
+
});
|
|
267
|
+
const transformedAst = extractAndHoistTypes(ast);
|
|
268
|
+
code = new (0, _generator.CodeGenerator)(transformedAst, {
|
|
269
|
+
// quotes: 'single',
|
|
270
|
+
compact: false
|
|
271
|
+
}).generate().code;
|
|
272
|
+
if (initialCode === code) {
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
} catch (err) {
|
|
276
|
+
console.error(err);
|
|
277
|
+
if (formatOptions.throwOnError) {
|
|
278
|
+
throw new (0, _chunkZUAFUOURcjs.CodeFormattingError)(err instanceof Error ? err.message : String(_nullishCoalesce(err, () => ( "Unknown Error"))), code);
|
|
279
|
+
}
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return _chunkYUDUY7XWcjs.formatTypings.call(void 0, code, formatOptions);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// src/objects.ts
|
|
287
|
+
var LARGE_OBJECT_LINES_OF_CODE = 10;
|
|
288
|
+
var ObjectInstance = class {
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
constructor(props) {
|
|
295
|
+
var _a;
|
|
296
|
+
if (!_chunkENFB45AIcjs.isValidIdentifier.call(void 0, props.name)) {
|
|
297
|
+
throw new Error(
|
|
298
|
+
`Invalid name for tool ${props.name}. A tool name must start with a letter and contain only letters, numbers, and underscores. It must be 1-50 characters long.`
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
if (props.description !== void 0 && typeof props.description !== "string") {
|
|
302
|
+
throw new Error(
|
|
303
|
+
`Invalid description for tool ${props.name}. Expected a string, but got type "${typeof props.description}"`
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
if (props.metadata !== void 0 && typeof props.metadata !== "object") {
|
|
307
|
+
throw new Error(
|
|
308
|
+
`Invalid metadata for tool ${props.name}. Expected an object, but got type "${typeof props.metadata}"`
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
if (props.properties !== void 0 && !Array.isArray(props.properties)) {
|
|
312
|
+
throw new Error(
|
|
313
|
+
`Invalid properties for tool ${props.name}. Expected an array, but got type "${typeof props.properties}"`
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
if (props.tools !== void 0 && !Array.isArray(props.tools)) {
|
|
317
|
+
throw new Error(`Invalid tools for tool ${props.name}. Expected an array, but got type "${typeof props.tools}"`);
|
|
318
|
+
}
|
|
319
|
+
if ((_a = props.properties) == null ? void 0 : _a.length) {
|
|
320
|
+
if (props.properties.length > 100) {
|
|
321
|
+
throw new Error(
|
|
322
|
+
`Too many properties for tool ${props.name}. Expected at most 100 properties, but got ${props.properties.length}`
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
for (const prop of props.properties) {
|
|
326
|
+
if (props.properties.filter((p) => p.name === prop.name).length > 1) {
|
|
327
|
+
throw new Error(`Duplicate property name "${prop.name}" in tool ${props.name}`);
|
|
328
|
+
}
|
|
329
|
+
if (!_chunkENFB45AIcjs.isValidIdentifier.call(void 0, prop.name)) {
|
|
330
|
+
throw new Error(
|
|
331
|
+
`Invalid name for property ${prop.name}. A property name must start with a letter and contain only letters, numbers, and underscores. It must be 1-50 characters long.`
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
if (prop.description !== void 0 && typeof prop.description !== "string") {
|
|
335
|
+
throw new Error(
|
|
336
|
+
`Invalid description for property ${prop.name}. Expected a string, but got type "${typeof prop.description}"`
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
if (props.description && props.description.length >= 5e3) {
|
|
340
|
+
throw new Error(
|
|
341
|
+
`Description for property ${prop.name} is too long. Expected at most 5000 characters, but got ${props.description.length}`
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
if (typeof prop.writable !== "boolean") {
|
|
345
|
+
prop.writable = false;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
this.name = props.name;
|
|
350
|
+
this.description = props.description;
|
|
351
|
+
this.metadata = _nullishCoalesce(props.metadata, () => ( {}));
|
|
352
|
+
this.properties = props.properties;
|
|
353
|
+
this.tools = _chunkYPOOKE3Acjs.Tool.withUniqueNames(_nullishCoalesce(props.tools, () => ( [])));
|
|
354
|
+
}
|
|
355
|
+
async getTypings() {
|
|
356
|
+
return getObjectTypings(this).withProperties().withTools().build();
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
function getObjectTypings(obj) {
|
|
360
|
+
let includeProperties = false;
|
|
361
|
+
let includeTools = false;
|
|
362
|
+
let hoisting = false;
|
|
363
|
+
const typings = [];
|
|
364
|
+
const addProperties = async () => {
|
|
365
|
+
var _a;
|
|
366
|
+
if (includeProperties && ((_a = obj.properties) == null ? void 0 : _a.length)) {
|
|
367
|
+
typings.push("");
|
|
368
|
+
typings.push("// ---------------- //");
|
|
369
|
+
typings.push("// Properties //");
|
|
370
|
+
typings.push("// ---------------- //");
|
|
371
|
+
typings.push("");
|
|
372
|
+
for (const prop of _nullishCoalesce(obj.properties, () => ( []))) {
|
|
373
|
+
const description = _nullishCoalesce(prop.description, () => ( ""));
|
|
374
|
+
if (description == null ? void 0 : description.trim().length) {
|
|
375
|
+
typings.push(_chunkENFB45AIcjs.getMultilineComment.call(void 0, description));
|
|
376
|
+
}
|
|
377
|
+
let type = "unknown";
|
|
378
|
+
if (prop.type) {
|
|
379
|
+
type = await _chunkYUDUY7XWcjs.getTypings.call(void 0, prop.type, {});
|
|
380
|
+
} else if (prop.value !== void 0) {
|
|
381
|
+
type = typeof prop.value;
|
|
382
|
+
}
|
|
383
|
+
type = prop.writable ? `Writable<${type}>` : `Readonly<${type}>`;
|
|
384
|
+
const value = embedPropertyValue(prop);
|
|
385
|
+
typings.push(`const ${prop.name}: ${type} = ${value}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
const addTools = async () => {
|
|
390
|
+
var _a;
|
|
391
|
+
if (includeTools && ((_a = obj.tools) == null ? void 0 : _a.length)) {
|
|
392
|
+
typings.push("");
|
|
393
|
+
typings.push("// ---------------- //");
|
|
394
|
+
typings.push("// Tools //");
|
|
395
|
+
typings.push("// ---------------- //");
|
|
396
|
+
typings.push("");
|
|
397
|
+
for (const tool of obj.tools) {
|
|
398
|
+
const fnType = _zui.z.function(tool.zInput, tool.zOutput).title(tool.name).describe(_nullishCoalesce(tool.description, () => ( "")));
|
|
399
|
+
let temp = await _chunkYUDUY7XWcjs.getTypings.call(void 0, fnType, {
|
|
400
|
+
declaration: true
|
|
401
|
+
});
|
|
402
|
+
temp = temp.replace("declare function ", "function ");
|
|
403
|
+
typings.push(temp);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
const finalize = async () => {
|
|
408
|
+
var _a;
|
|
409
|
+
let closingBracket = "";
|
|
410
|
+
if (typings.length >= LARGE_OBJECT_LINES_OF_CODE) {
|
|
411
|
+
closingBracket = ` // end namespace "${obj.name}"`;
|
|
412
|
+
}
|
|
413
|
+
let body = typings.join("\n");
|
|
414
|
+
if (hoisting) {
|
|
415
|
+
body = await hoistTypings(body, { throwOnError: false });
|
|
416
|
+
}
|
|
417
|
+
typings.push("}" + closingBracket);
|
|
418
|
+
let header = "";
|
|
419
|
+
if ((_a = obj.description) == null ? void 0 : _a.trim().length) {
|
|
420
|
+
header = _chunkENFB45AIcjs.getMultilineComment.call(void 0, obj.description);
|
|
421
|
+
}
|
|
422
|
+
return _chunkYUDUY7XWcjs.formatTypings.call(void 0,
|
|
423
|
+
`${header}
|
|
424
|
+
export namespace ${obj.name} {
|
|
425
|
+
${body}
|
|
426
|
+
} ${closingBracket}`.trim(),
|
|
427
|
+
{ throwOnError: false }
|
|
428
|
+
);
|
|
429
|
+
};
|
|
430
|
+
const api = {
|
|
431
|
+
withProperties: () => {
|
|
432
|
+
includeProperties = true;
|
|
433
|
+
return api;
|
|
434
|
+
},
|
|
435
|
+
withTools: () => {
|
|
436
|
+
includeTools = true;
|
|
437
|
+
return api;
|
|
438
|
+
},
|
|
439
|
+
withHoisting: () => {
|
|
440
|
+
hoisting = true;
|
|
441
|
+
return api;
|
|
442
|
+
},
|
|
443
|
+
async build() {
|
|
444
|
+
await addProperties();
|
|
445
|
+
await addTools();
|
|
446
|
+
return finalize();
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
return api;
|
|
450
|
+
}
|
|
451
|
+
function embedPropertyValue(property) {
|
|
452
|
+
if (typeof property.value === "string") {
|
|
453
|
+
return _chunkENFB45AIcjs.escapeString.call(void 0, property.value);
|
|
454
|
+
}
|
|
455
|
+
if (Number.isNaN(property.value)) {
|
|
456
|
+
return "NaN";
|
|
457
|
+
}
|
|
458
|
+
if (typeof property.value === "number" && Number.isInteger(property.value)) {
|
|
459
|
+
return property.value.toString();
|
|
460
|
+
}
|
|
461
|
+
if (typeof property.value === "boolean") {
|
|
462
|
+
return property.value.toString();
|
|
463
|
+
}
|
|
464
|
+
if (Array.isArray(property.value) || typeof property.value === "object") {
|
|
465
|
+
return JSON.stringify(property.value);
|
|
466
|
+
}
|
|
467
|
+
if (property.value instanceof Date) {
|
|
468
|
+
return `new Date('${property.value.toISOString()}')`;
|
|
469
|
+
}
|
|
470
|
+
if (property.value instanceof RegExp) {
|
|
471
|
+
return `new RegExp(${_chunkENFB45AIcjs.escapeString.call(void 0, property.value.source)}, ${_chunkENFB45AIcjs.escapeString.call(void 0, property.value.flags)})`;
|
|
472
|
+
}
|
|
473
|
+
if (property.value === null) {
|
|
474
|
+
return "null";
|
|
475
|
+
}
|
|
476
|
+
if (property.value === void 0) {
|
|
477
|
+
return "undefined";
|
|
478
|
+
}
|
|
479
|
+
if (typeof property.value === "function") {
|
|
480
|
+
return "function() {}";
|
|
481
|
+
}
|
|
482
|
+
if (typeof property.value === "symbol") {
|
|
483
|
+
return "Symbol()";
|
|
484
|
+
}
|
|
485
|
+
if (typeof property.value === "bigint") {
|
|
486
|
+
return `${property.value}n`;
|
|
487
|
+
}
|
|
488
|
+
if (property.value instanceof Error) {
|
|
489
|
+
return `Error(${_chunkENFB45AIcjs.escapeString.call(void 0, property.value.message)})`;
|
|
490
|
+
}
|
|
491
|
+
if (property.value instanceof Map) {
|
|
492
|
+
return `new Map(${JSON.stringify(Array.from(property.value.entries()))})`;
|
|
493
|
+
}
|
|
494
|
+
if (property.value instanceof Set) {
|
|
495
|
+
return `new Set(${JSON.stringify(Array.from(property.value.values()))})`;
|
|
496
|
+
}
|
|
497
|
+
return "unknown";
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// src/component.default.ts
|
|
501
|
+
var Button = {
|
|
502
|
+
type: "leaf",
|
|
503
|
+
description: "A button component that can perform actions when clicked",
|
|
504
|
+
name: "Button",
|
|
505
|
+
aliases: ["btn"],
|
|
506
|
+
examples: [
|
|
507
|
+
{
|
|
508
|
+
name: "Say action",
|
|
509
|
+
description: "A button that triggers a say action",
|
|
510
|
+
code: `<Message>
|
|
511
|
+
<Button action="say" label="Hello" />
|
|
512
|
+
</Message>`
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
name: "Postback action",
|
|
516
|
+
description: "A button that sends a postback value",
|
|
517
|
+
code: `<Message>
|
|
518
|
+
<Button action="postback" label="Buy" value="buy_product" />
|
|
519
|
+
</Message>`
|
|
520
|
+
}
|
|
521
|
+
],
|
|
522
|
+
leaf: {
|
|
523
|
+
props: [
|
|
524
|
+
{
|
|
525
|
+
name: "action",
|
|
526
|
+
type: "string",
|
|
527
|
+
default: "say",
|
|
528
|
+
description: 'The action to perform when the button is clicked. Can be "say", "url", or "postback"',
|
|
529
|
+
required: true
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
name: "label",
|
|
533
|
+
type: "string",
|
|
534
|
+
description: "The text displayed on the button",
|
|
535
|
+
required: true
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
name: "value",
|
|
539
|
+
type: "string",
|
|
540
|
+
description: 'The postback value to send when the button is clicked. Required if action is "postback"',
|
|
541
|
+
required: false
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
name: "url",
|
|
545
|
+
type: "string",
|
|
546
|
+
description: 'The URL to open when the button is clicked. Required if action is "url"',
|
|
547
|
+
required: false
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
var Image = {
|
|
553
|
+
type: "leaf",
|
|
554
|
+
name: "Image",
|
|
555
|
+
description: "Displays an image from a URL.",
|
|
556
|
+
aliases: [],
|
|
557
|
+
examples: [
|
|
558
|
+
{
|
|
559
|
+
name: "Basic image",
|
|
560
|
+
description: "A simple image with alt text",
|
|
561
|
+
code: `<Message>
|
|
562
|
+
<Image url="https://example.com/photo.jpg" alt="Example image" />
|
|
563
|
+
</Message>`
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
leaf: {
|
|
567
|
+
props: [
|
|
568
|
+
{
|
|
569
|
+
name: "url",
|
|
570
|
+
type: "string",
|
|
571
|
+
description: "The URL of the image (must be valid)",
|
|
572
|
+
required: true
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
name: "alt",
|
|
576
|
+
type: "string",
|
|
577
|
+
description: "Alternative text describing the image",
|
|
578
|
+
required: false
|
|
579
|
+
}
|
|
580
|
+
]
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
var File = {
|
|
584
|
+
type: "leaf",
|
|
585
|
+
name: "File",
|
|
586
|
+
description: "Sends a downloadable file to the user.",
|
|
587
|
+
aliases: [],
|
|
588
|
+
examples: [
|
|
589
|
+
{
|
|
590
|
+
name: "PDF download",
|
|
591
|
+
description: "Send a PDF file with a name",
|
|
592
|
+
code: `<Message>
|
|
593
|
+
<File url="https://example.com/report.pdf" name="Report.pdf" />
|
|
594
|
+
</Message>`
|
|
595
|
+
}
|
|
596
|
+
],
|
|
597
|
+
leaf: {
|
|
598
|
+
props: [
|
|
599
|
+
{
|
|
600
|
+
name: "url",
|
|
601
|
+
type: "string",
|
|
602
|
+
description: "The URL of the file (must be valid)",
|
|
603
|
+
required: true
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: "name",
|
|
607
|
+
type: "string",
|
|
608
|
+
description: "The display name of the file",
|
|
609
|
+
required: false
|
|
610
|
+
}
|
|
611
|
+
]
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
var Video = {
|
|
615
|
+
type: "leaf",
|
|
616
|
+
name: "Video",
|
|
617
|
+
description: "Embeds a video from a URL.",
|
|
618
|
+
aliases: [],
|
|
619
|
+
examples: [
|
|
620
|
+
{
|
|
621
|
+
name: "Intro video",
|
|
622
|
+
description: "A video with a title",
|
|
623
|
+
code: `<Message>
|
|
624
|
+
<Video url="https://example.com/intro.mp4" title="Welcome" />
|
|
625
|
+
</Message>`
|
|
626
|
+
}
|
|
627
|
+
],
|
|
628
|
+
leaf: {
|
|
629
|
+
props: [
|
|
630
|
+
{
|
|
631
|
+
name: "url",
|
|
632
|
+
type: "string",
|
|
633
|
+
description: "The URL of the video (must be valid)",
|
|
634
|
+
required: true
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
name: "title",
|
|
638
|
+
type: "string",
|
|
639
|
+
description: "Title for the video",
|
|
640
|
+
required: false
|
|
641
|
+
}
|
|
642
|
+
]
|
|
643
|
+
}
|
|
644
|
+
};
|
|
645
|
+
var Audio = {
|
|
646
|
+
type: "leaf",
|
|
647
|
+
name: "Audio",
|
|
648
|
+
description: "Plays an audio clip from a URL.",
|
|
649
|
+
aliases: [],
|
|
650
|
+
examples: [
|
|
651
|
+
{
|
|
652
|
+
name: "Sample audio",
|
|
653
|
+
description: "Play a short audio clip with a title",
|
|
654
|
+
code: `<Message>
|
|
655
|
+
<Audio url="https://example.com/audio.mp3" title="Sample" />
|
|
656
|
+
</Message>`
|
|
657
|
+
}
|
|
658
|
+
],
|
|
659
|
+
leaf: {
|
|
660
|
+
props: [
|
|
661
|
+
{
|
|
662
|
+
name: "url",
|
|
663
|
+
type: "string",
|
|
664
|
+
description: "The URL of the audio clip (must be valid)",
|
|
665
|
+
required: true
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
name: "title",
|
|
669
|
+
type: "string",
|
|
670
|
+
description: "Title for the audio clip",
|
|
671
|
+
required: false
|
|
672
|
+
}
|
|
673
|
+
]
|
|
674
|
+
}
|
|
675
|
+
};
|
|
676
|
+
var Card = {
|
|
677
|
+
type: "container",
|
|
678
|
+
name: "Card",
|
|
679
|
+
description: "A visual card component that can include an image and buttons.",
|
|
680
|
+
aliases: [],
|
|
681
|
+
examples: [
|
|
682
|
+
{
|
|
683
|
+
name: "Product card",
|
|
684
|
+
description: "A card with an image and two buttons",
|
|
685
|
+
code: `<Message>
|
|
686
|
+
<Card title="Product Name" subtitle="Limited offer">
|
|
687
|
+
<Image url="https://example.com/product.jpg" alt="Product image" />
|
|
688
|
+
<Button action="postback" label="Buy" value="buy_product" />
|
|
689
|
+
<Button action="postback" label="Wishlist" value="wishlist" />
|
|
690
|
+
</Card>
|
|
691
|
+
</Message>`
|
|
692
|
+
}
|
|
693
|
+
],
|
|
694
|
+
container: {
|
|
695
|
+
props: [
|
|
696
|
+
{
|
|
697
|
+
name: "title",
|
|
698
|
+
type: "string",
|
|
699
|
+
description: "Title text (1\u2013250 characters)",
|
|
700
|
+
required: true
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
name: "subtitle",
|
|
704
|
+
type: "string",
|
|
705
|
+
description: "Optional subtitle for the card",
|
|
706
|
+
required: false
|
|
707
|
+
}
|
|
708
|
+
],
|
|
709
|
+
children: [
|
|
710
|
+
{
|
|
711
|
+
description: "Image (optional, max 1)",
|
|
712
|
+
component: Image
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
description: "Button (optional, up to 5)",
|
|
716
|
+
component: Button
|
|
717
|
+
}
|
|
718
|
+
]
|
|
719
|
+
}
|
|
720
|
+
};
|
|
721
|
+
var Carousel = {
|
|
722
|
+
type: "container",
|
|
723
|
+
name: "Carousel",
|
|
724
|
+
description: "A virtual container for displaying 1 to 10 Card components as a carousel.",
|
|
725
|
+
aliases: [],
|
|
726
|
+
examples: [
|
|
727
|
+
{
|
|
728
|
+
name: "Product carousel",
|
|
729
|
+
description: "A carousel with multiple cards",
|
|
730
|
+
code: `<Message>
|
|
731
|
+
<Carousel>
|
|
732
|
+
<Card title="Item 1" subtitle="First product">
|
|
733
|
+
<Image url="https://example.com/item1.jpg" alt="Item 1" />
|
|
734
|
+
<Button action="postback" label="Buy" value="buy_1" />
|
|
735
|
+
</Card>
|
|
736
|
+
<Card title="Item 2" subtitle="Second product">
|
|
737
|
+
<Image url="https://example.com/item2.jpg" alt="Item 2" />
|
|
738
|
+
<Button action="postback" label="Buy" value="buy_2" />
|
|
739
|
+
</Card>
|
|
740
|
+
</Carousel>
|
|
741
|
+
</Message>`
|
|
742
|
+
}
|
|
743
|
+
],
|
|
744
|
+
container: {
|
|
745
|
+
props: [],
|
|
746
|
+
children: [
|
|
747
|
+
{
|
|
748
|
+
description: "Card component (required, 1\u201310 allowed)",
|
|
749
|
+
component: Card
|
|
750
|
+
}
|
|
751
|
+
]
|
|
752
|
+
}
|
|
753
|
+
};
|
|
754
|
+
var Text = {
|
|
755
|
+
type: "default",
|
|
756
|
+
name: "Message",
|
|
757
|
+
aliases: ["Text", "Markdown"],
|
|
758
|
+
description: "Markdown-formatted text that appears directly inside components like <Message>.",
|
|
759
|
+
examples: [
|
|
760
|
+
{
|
|
761
|
+
name: "Basic Markdown",
|
|
762
|
+
description: "Simple markdown content inside a message",
|
|
763
|
+
code: `<Message>
|
|
764
|
+
**Hello**, welcome to our service!
|
|
765
|
+
</Message>`
|
|
766
|
+
}
|
|
767
|
+
],
|
|
768
|
+
default: {
|
|
769
|
+
props: [],
|
|
770
|
+
children: []
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
var DefaultComponents = {
|
|
774
|
+
Button,
|
|
775
|
+
Image,
|
|
776
|
+
File,
|
|
777
|
+
Video,
|
|
778
|
+
Audio,
|
|
779
|
+
Card,
|
|
780
|
+
Carousel,
|
|
781
|
+
Text
|
|
782
|
+
};
|
|
783
|
+
|
|
784
|
+
// src/index.ts
|
|
785
|
+
var executeContext = async (props) => {
|
|
786
|
+
const { executeContext: executeContext2 } = (await Promise.resolve().then(() => _interopRequireWildcard(require("./llmz-EGTGPSTX.cjs")))).llmz;
|
|
787
|
+
return executeContext2(props);
|
|
788
|
+
};
|
|
789
|
+
var init = async () => {
|
|
790
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./llmz-EGTGPSTX.cjs")));
|
|
791
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./component-DWBRHLEN.cjs")));
|
|
792
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./tool-AY47ML65.cjs")));
|
|
793
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./exit-PQHMJEOG.cjs")));
|
|
794
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./jsx-PPLE5YTB.cjs")));
|
|
795
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./vm-4JFSZAMR.cjs")));
|
|
796
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./utils-UR4IMUHC.cjs")));
|
|
797
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./truncator-ZKPOW2I3.cjs")));
|
|
798
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./typings-QRJGGNUM.cjs")));
|
|
799
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require("./dual-modes-3MH5N6RY.cjs")));
|
|
800
|
+
};
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
exports.DefaultComponents = DefaultComponents; exports.Exit = _chunkR2N2UUKCcjs.Exit; exports.ObjectInstance = ObjectInstance; exports.Snapshot = _chunkC2TSWGYCcjs.Snapshot; exports.SnapshotSignal = _chunkZUAFUOURcjs.SnapshotSignal; exports.ThinkSignal = _chunkZUAFUOURcjs.ThinkSignal; exports.Tool = _chunkYPOOKE3Acjs.Tool; exports.executeContext = executeContext; exports.init = init;
|