imperium-crawl 2.3.1 → 2.4.0
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 +69 -11
- package/dist/cli-explore.d.ts +30 -0
- package/dist/cli-explore.d.ts.map +1 -0
- package/dist/cli-explore.js +427 -0
- package/dist/cli-explore.js.map +1 -0
- package/dist/cli-recorder.d.ts +44 -0
- package/dist/cli-recorder.d.ts.map +1 -0
- package/dist/cli-recorder.js +67 -0
- package/dist/cli-recorder.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +28 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/knowledge/index.d.ts +1 -0
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/knowledge/index.js +1 -0
- package/dist/knowledge/index.js.map +1 -1
- package/dist/knowledge/record-browser.d.ts +17 -0
- package/dist/knowledge/record-browser.d.ts.map +1 -0
- package/dist/knowledge/record-browser.js +29 -0
- package/dist/knowledge/record-browser.js.map +1 -0
- package/dist/llm/retry.d.ts +4 -2
- package/dist/llm/retry.d.ts.map +1 -1
- package/dist/llm/retry.js +15 -4
- package/dist/llm/retry.js.map +1 -1
- package/dist/sessions/index.d.ts +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/manager.d.ts +20 -0
- package/dist/sessions/manager.d.ts.map +1 -1
- package/dist/sessions/manager.js +57 -0
- package/dist/sessions/manager.js.map +1 -1
- package/dist/sessions/types.d.ts +2 -0
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/skills/chain.d.ts +61 -0
- package/dist/skills/chain.d.ts.map +1 -0
- package/dist/skills/chain.js +182 -0
- package/dist/skills/chain.js.map +1 -0
- package/dist/skills/conditions.d.ts +14 -0
- package/dist/skills/conditions.d.ts.map +1 -0
- package/dist/skills/conditions.js +208 -0
- package/dist/skills/conditions.js.map +1 -0
- package/dist/skills/manager.d.ts +47 -2
- package/dist/skills/manager.d.ts.map +1 -1
- package/dist/skills/manager.js.map +1 -1
- package/dist/skills/parameters.d.ts +49 -0
- package/dist/skills/parameters.d.ts.map +1 -0
- package/dist/skills/parameters.js +157 -0
- package/dist/skills/parameters.js.map +1 -0
- package/dist/stealth/index.d.ts +1 -0
- package/dist/stealth/index.d.ts.map +1 -1
- package/dist/stealth/index.js +61 -13
- package/dist/stealth/index.js.map +1 -1
- package/dist/tools/action-executor.d.ts +64 -0
- package/dist/tools/action-executor.d.ts.map +1 -0
- package/dist/tools/action-executor.js +365 -0
- package/dist/tools/action-executor.js.map +1 -0
- package/dist/tools/batch-scrape.d.ts +2 -2
- package/dist/tools/crawl.d.ts +2 -2
- package/dist/tools/create-skill.d.ts +2 -2
- package/dist/tools/discover-apis.d.ts +1 -1
- package/dist/tools/discover-apis.d.ts.map +1 -1
- package/dist/tools/discover-apis.js +3 -0
- package/dist/tools/discover-apis.js.map +1 -1
- package/dist/tools/download.d.ts +4 -4
- package/dist/tools/download.d.ts.map +1 -1
- package/dist/tools/download.js +3 -0
- package/dist/tools/download.js.map +1 -1
- package/dist/tools/extract.d.ts +1 -1
- package/dist/tools/image-search.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/instagram.d.ts +2 -2
- package/dist/tools/interact.d.ts +72 -44
- package/dist/tools/interact.d.ts.map +1 -1
- package/dist/tools/interact.js +33 -299
- package/dist/tools/interact.js.map +1 -1
- package/dist/tools/knowledge.d.ts +24 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +99 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/list-skills.js +1 -1
- package/dist/tools/list-skills.js.map +1 -1
- package/dist/tools/manifest.d.ts.map +1 -1
- package/dist/tools/manifest.js +5 -0
- package/dist/tools/manifest.js.map +1 -1
- package/dist/tools/monitor-websocket.d.ts +1 -1
- package/dist/tools/news-search.d.ts +1 -1
- package/dist/tools/query-api.d.ts +6 -6
- package/dist/tools/readability.d.ts +2 -2
- package/dist/tools/reddit.d.ts +4 -4
- package/dist/tools/run-skill.d.ts +14 -4
- package/dist/tools/run-skill.d.ts.map +1 -1
- package/dist/tools/run-skill.js +73 -0
- package/dist/tools/run-skill.js.map +1 -1
- package/dist/tools/scrape.d.ts +9 -6
- package/dist/tools/scrape.d.ts.map +1 -1
- package/dist/tools/scrape.js +2 -0
- package/dist/tools/scrape.js.map +1 -1
- package/dist/tools/screenshot.d.ts.map +1 -1
- package/dist/tools/screenshot.js +6 -0
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/snapshot.d.ts +5 -5
- package/dist/tools/snapshot.d.ts.map +1 -1
- package/dist/tools/snapshot.js +3 -0
- package/dist/tools/snapshot.js.map +1 -1
- package/dist/tools/video-search.d.ts +1 -1
- package/dist/tools/youtube.d.ts +2 -2
- package/dist/utils/fetcher.d.ts.map +1 -1
- package/dist/utils/fetcher.js +33 -0
- package/dist/utils/fetcher.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain Executor — multi-step skill composition.
|
|
3
|
+
*
|
|
4
|
+
* A chain skill connects multiple skills sequentially, passing outputs
|
|
5
|
+
* from one step as inputs to the next via variable references.
|
|
6
|
+
*
|
|
7
|
+
* Variable syntax in step.input values: "$step_name.field.nested[0]"
|
|
8
|
+
* Output merge: "merge($a, $b)" or just "$step_name"
|
|
9
|
+
*
|
|
10
|
+
* Example chain config:
|
|
11
|
+
* {
|
|
12
|
+
* "name": "search-and-extract",
|
|
13
|
+
* "type": "chain",
|
|
14
|
+
* "steps": [
|
|
15
|
+
* { "skill": "web-search", "input": { "query": "{{input:topic}}" }, "output": "search" },
|
|
16
|
+
* { "skill": "extract-page", "input": { "url": "$search.results[0].url" }, "output": "article",
|
|
17
|
+
* "condition": "$search.results.length > 0" }
|
|
18
|
+
* ],
|
|
19
|
+
* "output": "$article"
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export interface ChainStep {
|
|
23
|
+
/** Skill name to run */
|
|
24
|
+
skill: string;
|
|
25
|
+
/** Input values — may reference previous step outputs with $step.field */
|
|
26
|
+
input?: Record<string, string>;
|
|
27
|
+
/** Name to store this step's output under (for downstream references) */
|
|
28
|
+
output?: string;
|
|
29
|
+
/** Optional condition — step is skipped if this evaluates to false */
|
|
30
|
+
condition?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ChainConfig {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
type: "chain";
|
|
36
|
+
steps: ChainStep[];
|
|
37
|
+
/** Final output expression: "$step_name" or "merge($a, $b)" */
|
|
38
|
+
output?: string;
|
|
39
|
+
created_at: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ChainExecutionResult {
|
|
42
|
+
success: boolean;
|
|
43
|
+
steps_executed: number;
|
|
44
|
+
steps_skipped: number;
|
|
45
|
+
step_results: Array<{
|
|
46
|
+
name: string;
|
|
47
|
+
output_key: string;
|
|
48
|
+
skipped?: boolean;
|
|
49
|
+
error?: string;
|
|
50
|
+
}>;
|
|
51
|
+
output: unknown;
|
|
52
|
+
error?: string;
|
|
53
|
+
}
|
|
54
|
+
export declare class ChainExecutor {
|
|
55
|
+
/**
|
|
56
|
+
* Execute a chain, running each step in order.
|
|
57
|
+
* Step outputs are accumulated in `variables` and available to downstream steps.
|
|
58
|
+
*/
|
|
59
|
+
execute(config: ChainConfig, initialParams?: Record<string, string>): Promise<ChainExecutionResult>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/skills/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,MAAM,WAAW,SAAS;IACxB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4ED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB;;;OAGG;IACG,OAAO,CACX,MAAM,EAAE,WAAW,EACnB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,OAAO,CAAC,oBAAoB,CAAC;CAmGjC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain Executor — multi-step skill composition.
|
|
3
|
+
*
|
|
4
|
+
* A chain skill connects multiple skills sequentially, passing outputs
|
|
5
|
+
* from one step as inputs to the next via variable references.
|
|
6
|
+
*
|
|
7
|
+
* Variable syntax in step.input values: "$step_name.field.nested[0]"
|
|
8
|
+
* Output merge: "merge($a, $b)" or just "$step_name"
|
|
9
|
+
*
|
|
10
|
+
* Example chain config:
|
|
11
|
+
* {
|
|
12
|
+
* "name": "search-and-extract",
|
|
13
|
+
* "type": "chain",
|
|
14
|
+
* "steps": [
|
|
15
|
+
* { "skill": "web-search", "input": { "query": "{{input:topic}}" }, "output": "search" },
|
|
16
|
+
* { "skill": "extract-page", "input": { "url": "$search.results[0].url" }, "output": "article",
|
|
17
|
+
* "condition": "$search.results.length > 0" }
|
|
18
|
+
* ],
|
|
19
|
+
* "output": "$article"
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
import { getByPath } from "./conditions.js";
|
|
23
|
+
import { evaluateCondition } from "./conditions.js";
|
|
24
|
+
// ── Variable resolver ──
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a $-prefixed variable reference from the variables map.
|
|
27
|
+
* "$step.field.nested[0]" → variables.step.field.nested[0]
|
|
28
|
+
*/
|
|
29
|
+
function resolveVar(ref, variables) {
|
|
30
|
+
const clean = ref.startsWith("$") ? ref.slice(1) : ref;
|
|
31
|
+
const dotIdx = clean.indexOf(".");
|
|
32
|
+
if (dotIdx === -1)
|
|
33
|
+
return variables[clean];
|
|
34
|
+
const stepName = clean.slice(0, dotIdx);
|
|
35
|
+
return getByPath(variables[stepName], clean.slice(dotIdx + 1));
|
|
36
|
+
}
|
|
37
|
+
/** Interpolate a string value, replacing $ref patterns with resolved values */
|
|
38
|
+
function interpolateString(value, variables) {
|
|
39
|
+
// Replace $ref patterns (not followed by another word char to avoid partial matches)
|
|
40
|
+
return value.replace(/\$[\w.[\]]+/g, (match) => {
|
|
41
|
+
const resolved = resolveVar(match, variables);
|
|
42
|
+
return resolved === undefined || resolved === null ? "" : String(resolved);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/** Resolve all input values for a step */
|
|
46
|
+
function resolveStepInput(input, variables) {
|
|
47
|
+
if (!input)
|
|
48
|
+
return {};
|
|
49
|
+
const resolved = {};
|
|
50
|
+
for (const [key, value] of Object.entries(input)) {
|
|
51
|
+
resolved[key] = interpolateString(value, variables);
|
|
52
|
+
}
|
|
53
|
+
return resolved;
|
|
54
|
+
}
|
|
55
|
+
// ── Output merger ──
|
|
56
|
+
/** Deep merge multiple objects (last write wins for same keys) */
|
|
57
|
+
function deepMerge(...objects) {
|
|
58
|
+
const result = {};
|
|
59
|
+
for (const obj of objects) {
|
|
60
|
+
if (obj && typeof obj === "object" && !Array.isArray(obj)) {
|
|
61
|
+
Object.assign(result, obj);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Evaluate the final output expression.
|
|
68
|
+
* Supports: "$step_name" or "merge($a, $b, $c)"
|
|
69
|
+
*/
|
|
70
|
+
function evaluateOutput(expr, variables) {
|
|
71
|
+
const trimmed = expr.trim();
|
|
72
|
+
// merge() function
|
|
73
|
+
const mergeMatch = trimmed.match(/^merge\((.+)\)$/);
|
|
74
|
+
if (mergeMatch) {
|
|
75
|
+
const refs = mergeMatch[1].split(",").map((s) => s.trim());
|
|
76
|
+
const values = refs.map((r) => resolveVar(r, variables));
|
|
77
|
+
return deepMerge(...values);
|
|
78
|
+
}
|
|
79
|
+
// Simple variable reference
|
|
80
|
+
if (trimmed.startsWith("$")) {
|
|
81
|
+
return resolveVar(trimmed, variables);
|
|
82
|
+
}
|
|
83
|
+
return trimmed;
|
|
84
|
+
}
|
|
85
|
+
export class ChainExecutor {
|
|
86
|
+
/**
|
|
87
|
+
* Execute a chain, running each step in order.
|
|
88
|
+
* Step outputs are accumulated in `variables` and available to downstream steps.
|
|
89
|
+
*/
|
|
90
|
+
async execute(config, initialParams = {}) {
|
|
91
|
+
// Variables accumulate step outputs: { step_output_key: step_result_data }
|
|
92
|
+
const variables = {
|
|
93
|
+
// Make initial params available as $params.key
|
|
94
|
+
params: initialParams,
|
|
95
|
+
};
|
|
96
|
+
const stepResults = [];
|
|
97
|
+
let stepsExecuted = 0;
|
|
98
|
+
let stepsSkipped = 0;
|
|
99
|
+
for (const step of config.steps) {
|
|
100
|
+
// Check condition if provided
|
|
101
|
+
if (step.condition) {
|
|
102
|
+
const conditionMet = evaluateCondition(step.condition, variables);
|
|
103
|
+
if (!conditionMet) {
|
|
104
|
+
stepResults.push({ name: step.skill, output_key: step.output ?? "", skipped: true });
|
|
105
|
+
stepsSkipped++;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Resolve step inputs
|
|
110
|
+
const resolvedInput = resolveStepInput(step.input, variables);
|
|
111
|
+
// Load and run the skill
|
|
112
|
+
let stepOutput;
|
|
113
|
+
try {
|
|
114
|
+
const { loadWithRecipes } = await import("./manager.js");
|
|
115
|
+
const { execute: runSkill } = await import("../tools/run-skill.js");
|
|
116
|
+
const skillConfig = await loadWithRecipes(step.skill);
|
|
117
|
+
if (!skillConfig) {
|
|
118
|
+
const error = `Skill '${step.skill}' not found`;
|
|
119
|
+
stepResults.push({ name: step.skill, output_key: step.output ?? "", error });
|
|
120
|
+
// Propagate error — chains are strict by default
|
|
121
|
+
return {
|
|
122
|
+
success: false,
|
|
123
|
+
steps_executed: stepsExecuted,
|
|
124
|
+
steps_skipped: stepsSkipped,
|
|
125
|
+
step_results: stepResults,
|
|
126
|
+
output: null,
|
|
127
|
+
error,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const result = await runSkill({
|
|
131
|
+
name: step.skill,
|
|
132
|
+
params: resolvedInput,
|
|
133
|
+
max_items: 50,
|
|
134
|
+
...(resolvedInput.url && { url: resolvedInput.url }),
|
|
135
|
+
});
|
|
136
|
+
// Extract text content from tool result
|
|
137
|
+
const textContent = result.content?.find((c) => c.type === "text");
|
|
138
|
+
if (textContent && "text" in textContent) {
|
|
139
|
+
try {
|
|
140
|
+
stepOutput = JSON.parse(textContent.text);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
stepOutput = textContent.text;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
stepOutput = result;
|
|
148
|
+
}
|
|
149
|
+
stepsExecuted++;
|
|
150
|
+
stepResults.push({ name: step.skill, output_key: step.output ?? "" });
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
154
|
+
stepResults.push({ name: step.skill, output_key: step.output ?? "", error });
|
|
155
|
+
return {
|
|
156
|
+
success: false,
|
|
157
|
+
steps_executed: stepsExecuted,
|
|
158
|
+
steps_skipped: stepsSkipped,
|
|
159
|
+
step_results: stepResults,
|
|
160
|
+
output: null,
|
|
161
|
+
error,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Store output under the configured key
|
|
165
|
+
if (step.output) {
|
|
166
|
+
variables[step.output] = stepOutput;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Compute final output
|
|
170
|
+
const finalOutput = config.output
|
|
171
|
+
? evaluateOutput(config.output, variables)
|
|
172
|
+
: variables;
|
|
173
|
+
return {
|
|
174
|
+
success: true,
|
|
175
|
+
steps_executed: stepsExecuted,
|
|
176
|
+
steps_skipped: stepsSkipped,
|
|
177
|
+
step_results: stepResults,
|
|
178
|
+
output: finalOutput,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/skills/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condition evaluator for skill chains.
|
|
3
|
+
* No eval/Function — uses a safe whitelist token parser.
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* "$step.field" — truthiness
|
|
7
|
+
* "$step.field === 'val'" — equality
|
|
8
|
+
* "$step.count > 0" — comparison
|
|
9
|
+
* "expr1 && expr2" — AND
|
|
10
|
+
* "expr1 || expr2" — OR
|
|
11
|
+
*/
|
|
12
|
+
export declare function getByPath(obj: unknown, path: string): unknown;
|
|
13
|
+
export declare function evaluateCondition(expr: string, variables: Record<string, unknown>): boolean;
|
|
14
|
+
//# sourceMappingURL=conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/skills/conditions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAa7D;AAiFD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAqC3F"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condition evaluator for skill chains.
|
|
3
|
+
* No eval/Function — uses a safe whitelist token parser.
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* "$step.field" — truthiness
|
|
7
|
+
* "$step.field === 'val'" — equality
|
|
8
|
+
* "$step.count > 0" — comparison
|
|
9
|
+
* "expr1 && expr2" — AND
|
|
10
|
+
* "expr1 || expr2" — OR
|
|
11
|
+
*/
|
|
12
|
+
export function getByPath(obj, path) {
|
|
13
|
+
if (!path)
|
|
14
|
+
return obj;
|
|
15
|
+
const parts = path.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
|
|
16
|
+
let current = obj;
|
|
17
|
+
for (const part of parts) {
|
|
18
|
+
if (current === null || current === undefined)
|
|
19
|
+
return undefined;
|
|
20
|
+
if (typeof current === "object") {
|
|
21
|
+
current = current[part];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return current;
|
|
28
|
+
}
|
|
29
|
+
function resolveRef(ref, variables) {
|
|
30
|
+
const clean = ref.startsWith("$") ? ref.slice(1) : ref;
|
|
31
|
+
const dotIdx = clean.indexOf(".");
|
|
32
|
+
if (dotIdx === -1)
|
|
33
|
+
return variables[clean];
|
|
34
|
+
const stepName = clean.slice(0, dotIdx);
|
|
35
|
+
const fieldPath = clean.slice(dotIdx + 1);
|
|
36
|
+
return getByPath(variables[stepName], fieldPath);
|
|
37
|
+
}
|
|
38
|
+
function tokenizeExpr(expr) {
|
|
39
|
+
const tokens = [];
|
|
40
|
+
let i = 0;
|
|
41
|
+
const s = expr.trim();
|
|
42
|
+
while (i < s.length) {
|
|
43
|
+
if (s[i] === " " || s[i] === "\t") {
|
|
44
|
+
i++;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (s.startsWith("&&", i)) {
|
|
48
|
+
tokens.push({ kind: "logic", value: "&&" });
|
|
49
|
+
i += 2;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (s.startsWith("||", i)) {
|
|
53
|
+
tokens.push({ kind: "logic", value: "||" });
|
|
54
|
+
i += 2;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (s.startsWith("===", i)) {
|
|
58
|
+
tokens.push({ kind: "operator", value: "===" });
|
|
59
|
+
i += 3;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (s.startsWith("!==", i)) {
|
|
63
|
+
tokens.push({ kind: "operator", value: "!==" });
|
|
64
|
+
i += 3;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (s.startsWith("==", i)) {
|
|
68
|
+
tokens.push({ kind: "operator", value: "==" });
|
|
69
|
+
i += 2;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (s.startsWith("!=", i)) {
|
|
73
|
+
tokens.push({ kind: "operator", value: "!=" });
|
|
74
|
+
i += 2;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (s.startsWith(">=", i)) {
|
|
78
|
+
tokens.push({ kind: "operator", value: ">=" });
|
|
79
|
+
i += 2;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (s.startsWith("<=", i)) {
|
|
83
|
+
tokens.push({ kind: "operator", value: "<=" });
|
|
84
|
+
i += 2;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (s[i] === ">") {
|
|
88
|
+
tokens.push({ kind: "operator", value: ">" });
|
|
89
|
+
i++;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (s[i] === "<") {
|
|
93
|
+
tokens.push({ kind: "operator", value: "<" });
|
|
94
|
+
i++;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (s[i] === '"' || s[i] === "'") {
|
|
98
|
+
const quote = s[i];
|
|
99
|
+
let j = i + 1;
|
|
100
|
+
while (j < s.length && s[j] !== quote)
|
|
101
|
+
j++;
|
|
102
|
+
tokens.push({ kind: "string", value: s.slice(i + 1, j) });
|
|
103
|
+
i = j + 1;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (/\d/.test(s[i]) || (s[i] === "-" && /\d/.test(s[i + 1] ?? ""))) {
|
|
107
|
+
let j = i;
|
|
108
|
+
if (s[j] === "-")
|
|
109
|
+
j++;
|
|
110
|
+
while (j < s.length && /[\d.]/.test(s[j]))
|
|
111
|
+
j++;
|
|
112
|
+
tokens.push({ kind: "number", value: s.slice(i, j) });
|
|
113
|
+
i = j;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (s.startsWith("true", i) && !/\w/.test(s[i + 4] ?? "")) {
|
|
117
|
+
tokens.push({ kind: "boolean", value: "true" });
|
|
118
|
+
i += 4;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (s.startsWith("false", i) && !/\w/.test(s[i + 5] ?? "")) {
|
|
122
|
+
tokens.push({ kind: "boolean", value: "false" });
|
|
123
|
+
i += 5;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (s.startsWith("null", i) && !/\w/.test(s[i + 4] ?? "")) {
|
|
127
|
+
tokens.push({ kind: "null", value: "null" });
|
|
128
|
+
i += 4;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (s[i] === "$") {
|
|
132
|
+
let j = i + 1;
|
|
133
|
+
while (j < s.length && /[\w.\[\]]/.test(s[j]))
|
|
134
|
+
j++;
|
|
135
|
+
tokens.push({ kind: "ref", value: s.slice(i, j) });
|
|
136
|
+
i = j;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
i++;
|
|
140
|
+
}
|
|
141
|
+
return tokens;
|
|
142
|
+
}
|
|
143
|
+
function tokenValue(token, variables) {
|
|
144
|
+
switch (token.kind) {
|
|
145
|
+
case "ref": return resolveRef(token.value, variables);
|
|
146
|
+
case "string": return token.value;
|
|
147
|
+
case "number": return parseFloat(token.value);
|
|
148
|
+
case "boolean": return token.value === "true";
|
|
149
|
+
case "null": return null;
|
|
150
|
+
default: return undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function compare(left, op, right) {
|
|
154
|
+
switch (op) {
|
|
155
|
+
case "===": return left === right;
|
|
156
|
+
case "!==": return left !== right;
|
|
157
|
+
// eslint-disable-next-line eqeqeq
|
|
158
|
+
case "==": return left == right;
|
|
159
|
+
// eslint-disable-next-line eqeqeq
|
|
160
|
+
case "!=": return left != right;
|
|
161
|
+
case ">": return left > right;
|
|
162
|
+
case "<": return left < right;
|
|
163
|
+
case ">=": return left >= right;
|
|
164
|
+
case "<=": return left <= right;
|
|
165
|
+
default: return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
export function evaluateCondition(expr, variables) {
|
|
169
|
+
const tokens = tokenizeExpr(expr.trim());
|
|
170
|
+
if (tokens.length === 0)
|
|
171
|
+
return false;
|
|
172
|
+
const groups = [];
|
|
173
|
+
let current = [];
|
|
174
|
+
let pendingLogic;
|
|
175
|
+
for (const tok of tokens) {
|
|
176
|
+
if (tok.kind === "logic") {
|
|
177
|
+
groups.push({ tokens: current, logic: pendingLogic });
|
|
178
|
+
current = [];
|
|
179
|
+
pendingLogic = tok.value;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
current.push(tok);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
groups.push({ tokens: current, logic: pendingLogic });
|
|
186
|
+
let result;
|
|
187
|
+
for (const group of groups) {
|
|
188
|
+
const toks = group.tokens;
|
|
189
|
+
let groupResult;
|
|
190
|
+
if (toks.length === 1) {
|
|
191
|
+
groupResult = Boolean(tokenValue(toks[0], variables));
|
|
192
|
+
}
|
|
193
|
+
else if (toks.length === 3 && toks[1].kind === "operator") {
|
|
194
|
+
groupResult = compare(tokenValue(toks[0], variables), toks[1].value, tokenValue(toks[2], variables));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
groupResult = Boolean(tokenValue(toks[0] ?? { kind: "null", value: "null" }, variables));
|
|
198
|
+
}
|
|
199
|
+
if (result === undefined)
|
|
200
|
+
result = groupResult;
|
|
201
|
+
else if (group.logic === "&&")
|
|
202
|
+
result = result && groupResult;
|
|
203
|
+
else if (group.logic === "||")
|
|
204
|
+
result = result || groupResult;
|
|
205
|
+
}
|
|
206
|
+
return result ?? false;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=conditions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/skills/conditions.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/manager.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SkillParameters } from "./parameters.js";
|
|
1
2
|
export declare function validateSkillName(name: string): void;
|
|
2
3
|
export interface SkillFieldSelectors {
|
|
3
4
|
[field: string]: string;
|
|
@@ -6,7 +7,7 @@ export interface SkillPagination {
|
|
|
6
7
|
next?: string;
|
|
7
8
|
max_pages?: number;
|
|
8
9
|
}
|
|
9
|
-
export type RecipeTool = "extract" | "ai_extract" | "readability" | "scrape" | "monitor_websocket" | "influencer_discovery";
|
|
10
|
+
export type RecipeTool = "extract" | "ai_extract" | "readability" | "scrape" | "monitor_websocket" | "influencer_discovery" | "interact";
|
|
10
11
|
interface SkillConfigBase {
|
|
11
12
|
name: string;
|
|
12
13
|
description: string;
|
|
@@ -51,7 +52,51 @@ export interface InfluencerDiscoverySkillConfig extends SkillConfigBase {
|
|
|
51
52
|
threshold?: number;
|
|
52
53
|
ig_max_calls?: number;
|
|
53
54
|
}
|
|
54
|
-
export
|
|
55
|
+
export interface InteractSkillAction {
|
|
56
|
+
type: string;
|
|
57
|
+
selector?: string;
|
|
58
|
+
ref?: string;
|
|
59
|
+
text?: string;
|
|
60
|
+
value?: string;
|
|
61
|
+
script?: string;
|
|
62
|
+
key?: string;
|
|
63
|
+
url?: string;
|
|
64
|
+
duration?: number;
|
|
65
|
+
next_selector?: string;
|
|
66
|
+
extract_script?: string;
|
|
67
|
+
max_pages?: number;
|
|
68
|
+
wait_after_click?: number;
|
|
69
|
+
}
|
|
70
|
+
export interface InteractSkillPagination {
|
|
71
|
+
next_selector: string;
|
|
72
|
+
extract_script: string;
|
|
73
|
+
max_pages?: number;
|
|
74
|
+
wait_after_click?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface InteractSkillConfig extends SkillConfigBase {
|
|
77
|
+
tool: "interact";
|
|
78
|
+
session_id?: string;
|
|
79
|
+
actions: InteractSkillAction[];
|
|
80
|
+
pagination?: InteractSkillPagination;
|
|
81
|
+
/** Template parameter definitions — keys map to {{env:X}}, {{input:X}}, {{computed:X}} in actions */
|
|
82
|
+
parameters?: SkillParameters;
|
|
83
|
+
}
|
|
84
|
+
export interface ChainSkillConfig {
|
|
85
|
+
name: string;
|
|
86
|
+
description: string;
|
|
87
|
+
type: "chain";
|
|
88
|
+
url: string;
|
|
89
|
+
created_at: string;
|
|
90
|
+
builtin?: boolean;
|
|
91
|
+
steps: Array<{
|
|
92
|
+
skill: string;
|
|
93
|
+
input?: Record<string, string>;
|
|
94
|
+
output?: string;
|
|
95
|
+
condition?: string;
|
|
96
|
+
}>;
|
|
97
|
+
output?: string;
|
|
98
|
+
}
|
|
99
|
+
export type SkillConfig = ExtractSkillConfig | AiExtractSkillConfig | ReadabilitySkillConfig | ScrapeSkillConfig | WebSocketSkillConfig | InfluencerDiscoverySkillConfig | InteractSkillConfig | ChainSkillConfig;
|
|
55
100
|
export declare function save(name: string, config: SkillConfig): Promise<void>;
|
|
56
101
|
export declare function load(name: string): Promise<SkillConfig | null>;
|
|
57
102
|
export declare function list(): Promise<SkillConfig[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMpD;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAEzI,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IACF,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,IAAI,EAAE,mBAAmB,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8BAA+B,SAAQ,eAAe;IACrE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,qGAAqG;IACrG,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,8BAA8B,GAC9B,mBAAmB,GACnB,gBAAgB,CAAC;AAUrB,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAUpE;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBnD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAQtD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAM/E;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Parameters — template resolution engine for InteractSkillConfig.
|
|
3
|
+
*
|
|
4
|
+
* Template syntax:
|
|
5
|
+
* {{env:VAR_NAME}} — resolved from process.env
|
|
6
|
+
* {{input:field_name}} — resolved from user-provided params at runtime
|
|
7
|
+
* {{computed:name}} — built-in computed values (date_today, timestamp, etc.)
|
|
8
|
+
*
|
|
9
|
+
* The colon prefix prevents accidental matches on literal {{...}} in JS code.
|
|
10
|
+
*/
|
|
11
|
+
export type ParameterSource = "env" | "input" | "computed";
|
|
12
|
+
export interface SkillParameter {
|
|
13
|
+
/** Where to resolve this parameter from */
|
|
14
|
+
source: ParameterSource;
|
|
15
|
+
/** For env: env var name. For input: display label. For computed: computed key. */
|
|
16
|
+
key: string;
|
|
17
|
+
/** Human-readable description shown to user when prompting */
|
|
18
|
+
description?: string;
|
|
19
|
+
/** Default value if not provided */
|
|
20
|
+
default?: string;
|
|
21
|
+
/** Whether the parameter is required (no default, no env fallback) */
|
|
22
|
+
required?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type SkillParameters = Record<string, SkillParameter>;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve all template variables in a string.
|
|
27
|
+
* Unknown variables are left as-is (not replaced) so errors are visible.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveString(text: string, params?: SkillParameters, inputArgs?: Record<string, string>): string;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve all template variables in an action's string fields.
|
|
32
|
+
* Operates on a shallow copy — does not mutate the original action.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveAction<T extends Record<string, unknown>>(action: T, params: SkillParameters, inputArgs: Record<string, string>): T;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve parameters in an array of actions.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveActions<T extends Record<string, unknown>>(actions: T[], params: SkillParameters, inputArgs: Record<string, string>): T[];
|
|
39
|
+
/**
|
|
40
|
+
* Detect which action fields look like they should be parameterized.
|
|
41
|
+
* Returns a suggested SkillParameters map — caller can review and adjust.
|
|
42
|
+
*/
|
|
43
|
+
export declare function detectParameterCandidates(actions: Array<Record<string, unknown>>): SkillParameters;
|
|
44
|
+
/**
|
|
45
|
+
* Check all templates in a string are resolvable.
|
|
46
|
+
* Returns unresolved template names (empty array = all good).
|
|
47
|
+
*/
|
|
48
|
+
export declare function findUnresolved(text: string, params: SkillParameters, inputArgs: Record<string, string>): string[];
|
|
49
|
+
//# sourceMappingURL=parameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/skills/parameters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAoC7D;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,eAAoB,EAC5B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACrC,MAAM,CA6BR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,CAWH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,OAAO,EAAE,CAAC,EAAE,EACZ,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,EAAE,CAEL;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,eAAe,CAiDjB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,EAAE,CASV"}
|