lua-cli 3.5.0-alpha.4 → 3.5.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/http.client.js +5 -1
- package/dist/api/http.client.js.map +1 -1
- package/dist/commands/compile.d.ts +0 -1
- package/dist/commands/compile.js +14 -10
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/integrations.js +1 -1
- package/dist/commands/integrations.js.map +1 -1
- package/dist/commands/push.js +79 -6
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/sync.js +9 -5
- package/dist/commands/sync.js.map +1 -1
- package/dist/compiler/agent-traverser.d.ts +1 -0
- package/dist/compiler/agent-traverser.js +11 -4
- package/dist/compiler/agent-traverser.js.map +1 -1
- package/dist/compiler/bundler.d.ts +1 -1
- package/dist/compiler/bundler.js +2 -1
- package/dist/compiler/bundler.js.map +1 -1
- package/dist/compiler/compiler.js +3 -2
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/index.d.ts +1 -1
- package/dist/compiler/index.js +1 -1
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/plugins/base.d.ts +21 -1
- package/dist/compiler/plugins/base.js +37 -1
- package/dist/compiler/plugins/base.js.map +1 -1
- package/dist/compiler/plugins/job.plugin.js +17 -64
- package/dist/compiler/plugins/job.plugin.js.map +1 -1
- package/dist/compiler/plugins/mcp-server.plugin.d.ts +0 -8
- package/dist/compiler/plugins/mcp-server.plugin.js +25 -58
- package/dist/compiler/plugins/mcp-server.plugin.js.map +1 -1
- package/dist/compiler/plugins/postprocessor.plugin.js +1 -10
- package/dist/compiler/plugins/postprocessor.plugin.js.map +1 -1
- package/dist/compiler/plugins/preprocessor.plugin.js +4 -17
- package/dist/compiler/plugins/preprocessor.plugin.js.map +1 -1
- package/dist/compiler/plugins/processor-base.js +2 -9
- package/dist/compiler/plugins/processor-base.js.map +1 -1
- package/dist/compiler/plugins/skill.plugin.js +37 -32
- package/dist/compiler/plugins/skill.plugin.js.map +1 -1
- package/dist/compiler/plugins/tool.plugin.d.ts +1 -0
- package/dist/compiler/plugins/tool.plugin.js +9 -30
- package/dist/compiler/plugins/tool.plugin.js.map +1 -1
- package/dist/compiler/plugins/webhook.plugin.js +11 -23
- package/dist/compiler/plugins/webhook.plugin.js.map +1 -1
- package/dist/compiler/types.d.ts +5 -0
- package/dist/compiler/types.js +7 -0
- package/dist/compiler/types.js.map +1 -1
- package/dist/compiler/utils/ast-helpers.d.ts +69 -17
- package/dist/compiler/utils/ast-helpers.js +250 -61
- package/dist/compiler/utils/ast-helpers.js.map +1 -1
- package/dist/config/compile.constants.d.ts +26 -0
- package/dist/config/compile.constants.js +44 -0
- package/dist/config/compile.constants.js.map +1 -1
- package/dist/primitives/base.handler.d.ts +45 -6
- package/dist/primitives/base.handler.js +121 -17
- package/dist/primitives/base.handler.js.map +1 -1
- package/dist/primitives/index.d.ts +4 -5
- package/dist/primitives/index.js +7 -17
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/job.handler.d.ts +0 -5
- package/dist/primitives/job.handler.js +1 -15
- package/dist/primitives/job.handler.js.map +1 -1
- package/dist/primitives/mcp-server.handler.d.ts +1 -1
- package/dist/primitives/mcp-server.handler.js +15 -6
- package/dist/primitives/mcp-server.handler.js.map +1 -1
- package/dist/primitives/postprocessor.handler.d.ts +0 -11
- package/dist/primitives/postprocessor.handler.js +1 -24
- package/dist/primitives/postprocessor.handler.js.map +1 -1
- package/dist/primitives/preprocessor.handler.d.ts +0 -11
- package/dist/primitives/preprocessor.handler.js +1 -24
- package/dist/primitives/preprocessor.handler.js.map +1 -1
- package/dist/primitives/skill.handler.d.ts +3 -1
- package/dist/primitives/skill.handler.js +10 -29
- package/dist/primitives/skill.handler.js.map +1 -1
- package/dist/primitives/types.d.ts +18 -0
- package/dist/primitives/types.js.map +1 -1
- package/dist/primitives/webhook.handler.d.ts +0 -5
- package/dist/primitives/webhook.handler.js +1 -15
- package/dist/primitives/webhook.handler.js.map +1 -1
- package/dist/utils/cli.js +3 -3
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/command-utils.d.ts +12 -10
- package/dist/utils/command-utils.js +19 -17
- package/dist/utils/command-utils.js.map +1 -1
- package/dist/utils/files.d.ts +10 -0
- package/dist/utils/files.js +34 -0
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/sandbox.js +3 -20
- package/dist/utils/sandbox.js.map +1 -1
- package/dist/web/app.css +186 -912
- package/dist/web/app.js +46 -46
- package/docs/README.md +3 -3
- package/package.json +1 -1
- package/template/package.json +1 -1
|
@@ -15,9 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Node } from 'ts-morph';
|
|
17
17
|
import { findImportSource } from '../utils/ast-helpers.js';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { extractStringProperty } from '../utils/ast-helpers.js';
|
|
18
|
+
import { BasePlugin, validationWarning } from './base.js';
|
|
19
|
+
import { extractStringProperty, extractArrayProperty, extractNestedProperty, resolveIdentifierToArray } from '../utils/ast-helpers.js';
|
|
21
20
|
/**
|
|
22
21
|
* Plugin for compiling skill primitives.
|
|
23
22
|
* Extends BasePlugin for common detection/entry point logic.
|
|
@@ -65,10 +64,31 @@ export class SkillPlugin extends BasePlugin {
|
|
|
65
64
|
const toolsProp = config.getProperty('tools');
|
|
66
65
|
if (!toolsProp || !Node.isPropertyAssignment(toolsProp))
|
|
67
66
|
return refs;
|
|
67
|
+
// Try evaluation first (handles variable references)
|
|
68
|
+
const toolsArray = extractArrayProperty(config, 'tools');
|
|
69
|
+
if (toolsArray) {
|
|
70
|
+
toolsArray.forEach((tool, index) => {
|
|
71
|
+
if (typeof tool === 'string') {
|
|
72
|
+
refs.push(tool);
|
|
73
|
+
}
|
|
74
|
+
else if (tool && typeof tool === 'object') {
|
|
75
|
+
const name = extractNestedProperty(tool, 'name');
|
|
76
|
+
refs.push(typeof name === 'string' ? name : `__evaluated_tool_${index}`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return refs;
|
|
80
|
+
}
|
|
81
|
+
// Fallback to AST traversal for inline arrays and variable references
|
|
68
82
|
const toolsValue = toolsProp.getInitializer();
|
|
69
|
-
if (!toolsValue
|
|
83
|
+
if (!toolsValue)
|
|
84
|
+
return refs;
|
|
85
|
+
// Resolve: inline array or variable reference to array
|
|
86
|
+
const arrayExpr = Node.isArrayLiteralExpression(toolsValue)
|
|
87
|
+
? toolsValue
|
|
88
|
+
: resolveIdentifierToArray(toolsValue);
|
|
89
|
+
if (!arrayExpr)
|
|
70
90
|
return refs;
|
|
71
|
-
for (const element of
|
|
91
|
+
for (const element of arrayExpr.getElements()) {
|
|
72
92
|
if (Node.isNewExpression(element)) {
|
|
73
93
|
// new ToolClass() → get class name
|
|
74
94
|
const className = element.getExpression().getText();
|
|
@@ -80,7 +100,6 @@ export class SkillPlugin extends BasePlugin {
|
|
|
80
100
|
}
|
|
81
101
|
else if (Node.isCallExpression(element)) {
|
|
82
102
|
// defineTool(...) or someFactory() → try to get the assigned name
|
|
83
|
-
// This is trickier - for now just note we have a tool
|
|
84
103
|
refs.push(`__inline_tool_${refs.length}`);
|
|
85
104
|
}
|
|
86
105
|
}
|
|
@@ -106,8 +125,11 @@ export class SkillPlugin extends BasePlugin {
|
|
|
106
125
|
return;
|
|
107
126
|
if (property === 'addTools') {
|
|
108
127
|
const arrayArg = args[0];
|
|
109
|
-
|
|
110
|
-
|
|
128
|
+
const arrayExpr = Node.isArrayLiteralExpression(arrayArg)
|
|
129
|
+
? arrayArg
|
|
130
|
+
: resolveIdentifierToArray(arrayArg);
|
|
131
|
+
if (arrayExpr) {
|
|
132
|
+
for (const element of arrayExpr.getElements()) {
|
|
111
133
|
if (Node.isNewExpression(element)) {
|
|
112
134
|
refs.push(element.getExpression().getText());
|
|
113
135
|
}
|
|
@@ -130,22 +152,11 @@ export class SkillPlugin extends BasePlugin {
|
|
|
130
152
|
return refs;
|
|
131
153
|
}
|
|
132
154
|
validate(metadata) {
|
|
133
|
-
const errors =
|
|
134
|
-
const warnings = [];
|
|
135
|
-
if (!metadata.name) {
|
|
136
|
-
errors.push(validationError('Skill must have a name', { line: metadata.line }));
|
|
137
|
-
}
|
|
138
|
-
if (!metadata.description) {
|
|
139
|
-
warnings.push(validationWarning('Skill should have a description', { line: metadata.line }));
|
|
140
|
-
}
|
|
155
|
+
const { errors, warnings } = this.baseValidation(metadata);
|
|
141
156
|
if (metadata.metadata.toolRefs.length === 0) {
|
|
142
157
|
warnings.push(validationWarning('Skill has no tools - consider adding tools or removing the skill', { line: metadata.line }));
|
|
143
158
|
}
|
|
144
|
-
return {
|
|
145
|
-
valid: errors.length === 0,
|
|
146
|
-
errors,
|
|
147
|
-
warnings,
|
|
148
|
-
};
|
|
159
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
149
160
|
}
|
|
150
161
|
/**
|
|
151
162
|
* Add context and tools fields to the entry point.
|
|
@@ -184,10 +195,10 @@ export class SkillPlugin extends BasePlugin {
|
|
|
184
195
|
try {
|
|
185
196
|
const toolFile = context.project.addSourceFileAtPath(toolSourcePath);
|
|
186
197
|
const detected = toolPlugin.detect(toolFile);
|
|
187
|
-
// Find by class/export name
|
|
198
|
+
// Find by class/export name or tool name
|
|
188
199
|
const match = detected.find(d => {
|
|
189
200
|
const toolMeta = d.metadata;
|
|
190
|
-
return d.exportName === className || toolMeta.className === className;
|
|
201
|
+
return d.exportName === className || d.name === className || toolMeta.className === className;
|
|
191
202
|
}) || (detected.length === 1 ? detected[0] : null);
|
|
192
203
|
if (match) {
|
|
193
204
|
tools.push(match);
|
|
@@ -223,21 +234,15 @@ export class SkillPlugin extends BasePlugin {
|
|
|
223
234
|
if (p.kind !== 'tool')
|
|
224
235
|
return false;
|
|
225
236
|
const toolMeta = p.metadata;
|
|
226
|
-
return
|
|
237
|
+
return p.exportName === className || p.name === className || toolMeta.className === className;
|
|
227
238
|
});
|
|
228
239
|
return tool?.name || className;
|
|
229
240
|
});
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
name: compiled.name,
|
|
233
|
-
description: compiled.description,
|
|
234
|
-
path: `artifacts/${compiled.kind}/${compiled.name}.js`,
|
|
235
|
-
sourcePath: compiled.sourcePath,
|
|
236
|
-
hash: compiled.artifact.hash,
|
|
241
|
+
return {
|
|
242
|
+
...this.baseManifestFields(compiled),
|
|
237
243
|
context: skillMetadata.context,
|
|
238
244
|
tools: toolNames,
|
|
239
245
|
};
|
|
240
|
-
return skill;
|
|
241
246
|
}
|
|
242
247
|
}
|
|
243
248
|
//# sourceMappingURL=skill.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/skill.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,IAAI,EAA2B,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"skill.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/skill.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ export declare class ToolPlugin extends BasePlugin<ToolMetadataFields> {
|
|
|
45
45
|
private isToolClass;
|
|
46
46
|
/**
|
|
47
47
|
* Extract a string property from a class declaration.
|
|
48
|
+
* Uses ts-evaluator for full expression evaluation.
|
|
48
49
|
*/
|
|
49
50
|
private extractClassProperty;
|
|
50
51
|
validate(metadata: ToolMetadata): ValidationResult;
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* - Entry point generation differs significantly for class-based tools
|
|
12
12
|
*/
|
|
13
13
|
import { Node } from 'ts-morph';
|
|
14
|
-
import {
|
|
14
|
+
import { COMPILER_VERSION, } from '../types.js';
|
|
15
15
|
import { BasePlugin, validationError, validationWarning } from './base.js';
|
|
16
|
-
import { extractSchemaProperty } from '../utils/ast-helpers.js';
|
|
16
|
+
import { extractSchemaProperty, evaluateNodeAsString } from '../utils/ast-helpers.js';
|
|
17
17
|
import { zodToJsonSchema } from '../utils/schema-converter.js';
|
|
18
18
|
/**
|
|
19
19
|
* Plugin for compiling tool primitives.
|
|
@@ -104,38 +104,22 @@ export class ToolPlugin extends BasePlugin {
|
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
106
|
* Extract a string property from a class declaration.
|
|
107
|
+
* Uses ts-evaluator for full expression evaluation.
|
|
107
108
|
*/
|
|
108
109
|
extractClassProperty(classDecl, propName) {
|
|
109
110
|
const prop = classDecl.getProperty(propName);
|
|
110
111
|
if (!prop)
|
|
111
112
|
return undefined;
|
|
112
|
-
|
|
113
|
-
if (initializer && Node.isStringLiteral(initializer)) {
|
|
114
|
-
return initializer.getLiteralValue();
|
|
115
|
-
}
|
|
116
|
-
return undefined;
|
|
113
|
+
return evaluateNodeAsString(prop.getInitializer());
|
|
117
114
|
}
|
|
118
115
|
validate(metadata) {
|
|
119
|
-
const errors =
|
|
120
|
-
const warnings = [];
|
|
121
|
-
if (!metadata.name) {
|
|
122
|
-
errors.push(validationError('Tool must have a name', {
|
|
123
|
-
line: metadata.line,
|
|
124
|
-
suggestion: 'Add a name property: name: "my-tool"',
|
|
125
|
-
}));
|
|
126
|
-
}
|
|
116
|
+
const { errors, warnings } = this.baseValidation(metadata);
|
|
127
117
|
if (!metadata.metadata.hasExecute) {
|
|
128
118
|
errors.push(validationError('Tool must have an execute function', {
|
|
129
119
|
line: metadata.line,
|
|
130
120
|
suggestion: 'Add an execute function: execute: async (input, context) => { ... }',
|
|
131
121
|
}));
|
|
132
122
|
}
|
|
133
|
-
if (!metadata.description) {
|
|
134
|
-
warnings.push(validationWarning('Tool should have a description for better AI understanding', {
|
|
135
|
-
line: metadata.line,
|
|
136
|
-
suggestion: 'Add a description: description: "What this tool does"',
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
123
|
if (!metadata.metadata.hasInputSchema) {
|
|
140
124
|
warnings.push(validationWarning('Tool should have an inputSchema for type safety', {
|
|
141
125
|
line: metadata.line,
|
|
@@ -184,7 +168,7 @@ ${importStatement}
|
|
|
184
168
|
const toolInstance = new __ToolClass__();
|
|
185
169
|
|
|
186
170
|
const __lua_primitive__ = {
|
|
187
|
-
version: '
|
|
171
|
+
version: '${COMPILER_VERSION}',
|
|
188
172
|
kind: 'tool',
|
|
189
173
|
name: ${JSON.stringify(metadata.name)},
|
|
190
174
|
description: ${JSON.stringify(metadata.description)},
|
|
@@ -261,19 +245,14 @@ ${exportStatement}
|
|
|
261
245
|
}
|
|
262
246
|
}
|
|
263
247
|
toManifestEntry(compiled, _context) {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
description: compiled.description,
|
|
268
|
-
path: `artifacts/${compiled.kind}/${compiled.name}.js`,
|
|
269
|
-
sourcePath: compiled.sourcePath,
|
|
270
|
-
hash: compiled.artifact.hash,
|
|
248
|
+
return {
|
|
249
|
+
...this.baseManifestFields(compiled),
|
|
250
|
+
hasCondition: compiled.metadata?.hasCondition || false,
|
|
271
251
|
schemas: compiled.schemas ? {
|
|
272
252
|
input: compiled.schemas.input,
|
|
273
253
|
output: compiled.schemas.output,
|
|
274
254
|
} : undefined,
|
|
275
255
|
};
|
|
276
|
-
return tool;
|
|
277
256
|
}
|
|
278
257
|
}
|
|
279
258
|
//# sourceMappingURL=tool.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/tool.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAuB,IAAI,EAA6C,MAAM,UAAU,CAAC;AAChG,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"tool.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/tool.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* 2. Function-based (new): const myWebhook = defineWebhook({ ... })
|
|
7
7
|
*/
|
|
8
8
|
import { Node } from 'ts-morph';
|
|
9
|
-
import { PrimitiveKind, } from '../types.js';
|
|
10
9
|
import { BasePlugin, validationError, validationWarning } from './base.js';
|
|
11
10
|
import { extractSchemaProperty } from '../utils/ast-helpers.js';
|
|
12
11
|
import { zodToJsonSchema } from '../utils/schema-converter.js';
|
|
@@ -42,18 +41,10 @@ export class WebhookPlugin extends BasePlugin {
|
|
|
42
41
|
};
|
|
43
42
|
}
|
|
44
43
|
validate(metadata) {
|
|
45
|
-
const errors =
|
|
46
|
-
const warnings = [];
|
|
47
|
-
if (!metadata.name) {
|
|
48
|
-
errors.push(validationError('Webhook must have a name', { line: metadata.line }));
|
|
49
|
-
}
|
|
44
|
+
const { errors, warnings } = this.baseValidation(metadata);
|
|
50
45
|
if (!metadata.metadata.hasExecute) {
|
|
51
46
|
errors.push(validationError('Webhook must have an execute function', { line: metadata.line }));
|
|
52
47
|
}
|
|
53
|
-
if (!metadata.description) {
|
|
54
|
-
warnings.push(validationWarning('Webhook should have a description', { line: metadata.line }));
|
|
55
|
-
}
|
|
56
|
-
// Validate name format (URL-safe)
|
|
57
48
|
if (metadata.name && !/^[a-z][a-z0-9-]*$/.test(metadata.name)) {
|
|
58
49
|
warnings.push(validationWarning('Webhook name should be URL-safe (lowercase, hyphens only)', { line: metadata.line }));
|
|
59
50
|
}
|
|
@@ -88,15 +79,18 @@ export class WebhookPlugin extends BasePlugin {
|
|
|
88
79
|
if (!Node.isObjectLiteralExpression(config))
|
|
89
80
|
return undefined;
|
|
90
81
|
const schemas = {};
|
|
91
|
-
// Extract each schema type
|
|
92
|
-
const schemaProps = [
|
|
93
|
-
|
|
94
|
-
|
|
82
|
+
// Extract each schema type — keys must match ManifestWebhook: query, headers, body
|
|
83
|
+
const schemaProps = [
|
|
84
|
+
{ prop: 'querySchema', key: 'query', metaFlag: 'hasQuerySchema' },
|
|
85
|
+
{ prop: 'headerSchema', key: 'headers', metaFlag: 'hasHeaderSchema' },
|
|
86
|
+
{ prop: 'bodySchema', key: 'body', metaFlag: 'hasBodySchema' },
|
|
87
|
+
];
|
|
88
|
+
for (const { prop: propName, key, metaFlag } of schemaProps) {
|
|
89
|
+
if (metadata.metadata[metaFlag]) {
|
|
95
90
|
const schemaNode = extractSchemaProperty(config, propName);
|
|
96
91
|
if (schemaNode) {
|
|
97
92
|
try {
|
|
98
93
|
const jsonSchema = await zodToJsonSchema(schemaNode);
|
|
99
|
-
const key = propName.replace('Schema', '');
|
|
100
94
|
schemas[key] = jsonSchema;
|
|
101
95
|
}
|
|
102
96
|
catch (error) {
|
|
@@ -108,20 +102,14 @@ export class WebhookPlugin extends BasePlugin {
|
|
|
108
102
|
return Object.keys(schemas).length > 0 ? schemas : undefined;
|
|
109
103
|
}
|
|
110
104
|
toManifestEntry(compiled, _context) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
name: compiled.name,
|
|
114
|
-
description: compiled.description,
|
|
115
|
-
path: `artifacts/${compiled.kind}/${compiled.name}.js`,
|
|
116
|
-
sourcePath: compiled.sourcePath,
|
|
117
|
-
hash: compiled.artifact.hash,
|
|
105
|
+
return {
|
|
106
|
+
...this.baseManifestFields(compiled),
|
|
118
107
|
schemas: compiled.schemas ? {
|
|
119
108
|
query: compiled.schemas.query,
|
|
120
109
|
headers: compiled.schemas.headers,
|
|
121
110
|
body: compiled.schemas.body,
|
|
122
111
|
} : undefined,
|
|
123
112
|
};
|
|
124
|
-
return webhook;
|
|
125
113
|
}
|
|
126
114
|
}
|
|
127
115
|
//# sourceMappingURL=webhook.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/webhook.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAW,IAAI,EAA2B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"webhook.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/webhook.plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/types.d.ts
CHANGED
|
@@ -204,6 +204,10 @@ export interface ProjectFile {
|
|
|
204
204
|
size: number;
|
|
205
205
|
type: 'source' | 'config' | 'other';
|
|
206
206
|
}
|
|
207
|
+
/** Manifest format version. Referenced by entry points, manifests, and minimal manifests. */
|
|
208
|
+
export declare const COMPILER_VERSION = "2.0.0";
|
|
209
|
+
/** esbuild compilation target. Referenced by bundler and MCP resolver bundler. */
|
|
210
|
+
export declare const ESBUILD_TARGET = "node18";
|
|
207
211
|
export declare enum PrimitiveKind {
|
|
208
212
|
TOOL = "tool",
|
|
209
213
|
SKILL = "skill",
|
|
@@ -225,6 +229,7 @@ export interface ManifestTool extends ManifestPrimitiveBase {
|
|
|
225
229
|
input?: JSONSchema;
|
|
226
230
|
output?: JSONSchema;
|
|
227
231
|
};
|
|
232
|
+
hasCondition?: boolean;
|
|
228
233
|
}
|
|
229
234
|
export interface ManifestSkill extends ManifestPrimitiveBase {
|
|
230
235
|
kind: PrimitiveKind.SKILL;
|
package/dist/compiler/types.js
CHANGED
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
* Uses discriminated unions for type-safe primitive handling.
|
|
6
6
|
*/
|
|
7
7
|
// =============================================================================
|
|
8
|
+
// COMPILER CONSTANTS
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/** Manifest format version. Referenced by entry points, manifests, and minimal manifests. */
|
|
11
|
+
export const COMPILER_VERSION = '2.0.0';
|
|
12
|
+
/** esbuild compilation target. Referenced by bundler and MCP resolver bundler. */
|
|
13
|
+
export const ESBUILD_TARGET = 'node18';
|
|
14
|
+
// =============================================================================
|
|
8
15
|
// MANIFEST PRIMITIVES
|
|
9
16
|
// =============================================================================
|
|
10
17
|
export var PrimitiveKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/compiler/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgRH,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,8CAA6B,CAAA;IAC7B,gDAA+B,CAAA;IAC/B,0CAAyB,CAAA;AAC3B,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/compiler/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgRH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,8CAA6B,CAAA;IAC7B,gDAA+B,CAAA;IAC/B,0CAAyB,CAAA;AAC3B,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB"}
|
|
@@ -1,48 +1,100 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AST helper functions for extracting values from ts-morph nodes.
|
|
2
|
+
* AST helper functions for extracting and evaluating values from ts-morph nodes.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Organized into sections:
|
|
5
|
+
* 1. EVALUATION ENGINE — ts-evaluator core with lua-cli passthrough shims
|
|
6
|
+
* 2. NODE EVALUATION — resolve a raw AST Node to a typed runtime value
|
|
7
|
+
* 3. PROPERTY EXTRACTION — get typed values from ObjectLiteralExpression properties
|
|
8
|
+
* 4. NODE INSPECTION — type checks and utilities for AST nodes
|
|
9
|
+
* 5. IDENTIFIER RESOLUTION — follow variable/import reference chains to declarations
|
|
10
|
+
* 6. IMPORT RESOLUTION — locate source files for imported identifiers
|
|
6
11
|
*/
|
|
7
|
-
import { Node, ObjectLiteralExpression, SourceFile } from 'ts-morph';
|
|
12
|
+
import { Node, ObjectLiteralExpression, SourceFile, ArrayLiteralExpression } from 'ts-morph';
|
|
13
|
+
/** Evaluate an AST node as a string. Falls back to AST resolution if ts-evaluator fails. */
|
|
14
|
+
export declare function evaluateNodeAsString(node: Node | undefined): string | undefined;
|
|
15
|
+
/** Evaluate an AST node as a number. Falls back to AST resolution if ts-evaluator fails. */
|
|
16
|
+
export declare function evaluateNodeAsNumber(node: Node | undefined): number | undefined;
|
|
17
|
+
/** Evaluate an AST node as a boolean. Falls back to AST resolution if ts-evaluator fails. */
|
|
18
|
+
export declare function evaluateNodeAsBoolean(node: Node | undefined): boolean | undefined;
|
|
8
19
|
/**
|
|
9
20
|
* Extract a string value from an object property.
|
|
10
|
-
*
|
|
21
|
+
* Delegates to evaluateNodeAsString for full expression evaluation + AST fallback.
|
|
11
22
|
*/
|
|
12
23
|
export declare function extractStringProperty(obj: ObjectLiteralExpression, propertyName: string): string | undefined;
|
|
13
24
|
/**
|
|
14
25
|
* Extract a boolean value from an object property.
|
|
26
|
+
* Delegates to evaluateNodeAsBoolean for full expression evaluation + AST fallback.
|
|
15
27
|
*/
|
|
16
28
|
export declare function extractBooleanProperty(obj: ObjectLiteralExpression, propertyName: string): boolean | undefined;
|
|
17
29
|
/**
|
|
18
30
|
* Extract a number value from an object property.
|
|
31
|
+
* Delegates to evaluateNodeAsNumber for full expression evaluation + AST fallback.
|
|
19
32
|
*/
|
|
20
33
|
export declare function extractNumberProperty(obj: ObjectLiteralExpression, propertyName: string): number | undefined;
|
|
21
|
-
/**
|
|
22
|
-
* Extract an object literal from an object property.
|
|
23
|
-
*/
|
|
24
|
-
export declare function extractObjectProperty(obj: ObjectLiteralExpression, propertyName: string): ObjectLiteralExpression | undefined;
|
|
25
34
|
/**
|
|
26
35
|
* Extract a schema node from an object property.
|
|
27
|
-
* Returns the
|
|
36
|
+
* Returns the raw AST node (not evaluated) for downstream Zod processing.
|
|
28
37
|
*/
|
|
29
38
|
export declare function extractSchemaProperty(obj: ObjectLiteralExpression, propertyName: string): Node | undefined;
|
|
30
39
|
/**
|
|
31
|
-
*
|
|
40
|
+
* Extract nested property from an already-evaluated object (not AST).
|
|
41
|
+
* Use after extractObjectProperty() to drill into nested values.
|
|
42
|
+
*
|
|
43
|
+
* Example:
|
|
44
|
+
* const schedule = extractObjectProperty(config, 'schedule');
|
|
45
|
+
* const type = extractNestedProperty(schedule, 'type');
|
|
32
46
|
*/
|
|
33
|
-
export declare function
|
|
47
|
+
export declare function extractNestedProperty(obj: Record<string, unknown> | undefined, propertyName: string): unknown;
|
|
34
48
|
/**
|
|
35
|
-
* Extract
|
|
49
|
+
* Extract an object property, evaluated to its runtime value.
|
|
50
|
+
* Uses ts-evaluator to resolve inline objects, variable references, imports, spreads.
|
|
36
51
|
*/
|
|
37
|
-
export declare function
|
|
52
|
+
export declare function extractObjectProperty(obj: ObjectLiteralExpression, propertyName: string): Record<string, unknown> | undefined;
|
|
38
53
|
/**
|
|
39
|
-
*
|
|
54
|
+
* Extract an array property, evaluated to its runtime value.
|
|
55
|
+
* Uses ts-evaluator to resolve inline arrays, variable references, imports, spreads.
|
|
40
56
|
*/
|
|
41
|
-
export declare function
|
|
57
|
+
export declare function extractArrayProperty(obj: ObjectLiteralExpression, propertyName: string): unknown[] | undefined;
|
|
42
58
|
/**
|
|
43
|
-
*
|
|
59
|
+
* Extract a function property, evaluated to its runtime value.
|
|
60
|
+
* Detects both inline function expressions and variable references to functions.
|
|
44
61
|
*/
|
|
62
|
+
export declare function extractFunctionProperty(obj: ObjectLiteralExpression, propertyName: string): Function | undefined;
|
|
63
|
+
/** Check if a property exists on an object literal. */
|
|
64
|
+
export declare function hasProperty(obj: ObjectLiteralExpression, propertyName: string): boolean;
|
|
65
|
+
/** Extract all property names from an object literal. */
|
|
66
|
+
export declare function getPropertyNames(obj: ObjectLiteralExpression): string[];
|
|
67
|
+
/** Check if a node is a function (arrow or regular). */
|
|
68
|
+
export declare function isFunction(node: Node | undefined): boolean;
|
|
69
|
+
/** Get the text of a function body. */
|
|
45
70
|
export declare function getFunctionBody(node: Node | undefined): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Recursively resolve an Identifier node to its underlying initializer.
|
|
73
|
+
*
|
|
74
|
+
* Follows variable reference chains, including across files:
|
|
75
|
+
* const a = [x, y];
|
|
76
|
+
* const b = a; // resolveIdentifier(b) → ArrayLiteralExpression [x, y]
|
|
77
|
+
* const c = b; // resolveIdentifier(c) → ArrayLiteralExpression [x, y]
|
|
78
|
+
*
|
|
79
|
+
* Resolution strategy:
|
|
80
|
+
* 1. Same-file lookup via getVariableDeclaration() (fast path)
|
|
81
|
+
* 2. Cross-file lookup via getDefinitionNodes() (follows imports)
|
|
82
|
+
*
|
|
83
|
+
* Stops at non-Identifier initializers (literals, call expressions, etc.)
|
|
84
|
+
* or when the declaration can't be found.
|
|
85
|
+
* Max depth of 10 to prevent infinite loops on circular references.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolveIdentifier(node: Node, maxDepth?: number): Node | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Resolve an Identifier to an ArrayLiteralExpression (recursive).
|
|
90
|
+
* Convenience wrapper over resolveIdentifier().
|
|
91
|
+
*/
|
|
92
|
+
export declare function resolveIdentifierToArray(node: Node): ArrayLiteralExpression | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve an Identifier to an ObjectLiteralExpression (recursive).
|
|
95
|
+
* Convenience wrapper over resolveIdentifier().
|
|
96
|
+
*/
|
|
97
|
+
export declare function resolveIdentifierToObject(node: Node): ObjectLiteralExpression | undefined;
|
|
46
98
|
/**
|
|
47
99
|
* Find the source file path for an imported identifier.
|
|
48
100
|
*
|