workflowskill 0.2.1 → 0.3.1
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 +147 -106
- package/dist/index.d.mts +28 -84
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1782 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -10
- package/skill/SKILL.md +123 -345
- package/dist/cli/index.d.mts +0 -1
- package/dist/cli/index.mjs +0 -187
- package/dist/cli/index.mjs.map +0 -1
- package/dist/runtime-CD81H1bx.mjs +0 -1977
- package/dist/runtime-CD81H1bx.mjs.map +0 -1
- package/dist/web-scrape-GeEM_JNl.mjs +0 -142
- package/dist/web-scrape-GeEM_JNl.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -20,33 +20,30 @@ inputs:
|
|
|
20
20
|
type: string
|
|
21
21
|
|
|
22
22
|
outputs:
|
|
23
|
-
|
|
24
|
-
type:
|
|
25
|
-
value: $steps.
|
|
23
|
+
results:
|
|
24
|
+
type: array
|
|
25
|
+
value: $steps.fetch.output.results
|
|
26
26
|
|
|
27
27
|
steps:
|
|
28
|
-
- id:
|
|
28
|
+
- id: fetch
|
|
29
29
|
type: tool
|
|
30
|
-
tool: web.
|
|
30
|
+
tool: web.fetch
|
|
31
31
|
inputs:
|
|
32
32
|
url:
|
|
33
33
|
type: string
|
|
34
34
|
value: $inputs.url
|
|
35
|
-
selector:
|
|
36
|
-
type: string
|
|
37
|
-
value: "p"
|
|
38
35
|
outputs:
|
|
39
|
-
|
|
36
|
+
results:
|
|
40
37
|
type: array
|
|
41
|
-
value: $result.
|
|
42
|
-
|
|
43
|
-
- id:
|
|
44
|
-
type:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
value: $result.items
|
|
39
|
+
|
|
40
|
+
- id: guard_empty
|
|
41
|
+
type: exit
|
|
42
|
+
condition: $steps.fetch.output.results.length == 0
|
|
43
|
+
status: success
|
|
44
|
+
output: { results: [] }
|
|
45
|
+
inputs: {}
|
|
46
|
+
outputs: {}
|
|
50
47
|
```
|
|
51
48
|
|
|
52
49
|
## Install
|
|
@@ -55,21 +52,6 @@ steps:
|
|
|
55
52
|
npm install workflowskill
|
|
56
53
|
```
|
|
57
54
|
|
|
58
|
-
## CLI
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
# Validate a workflow (no API keys needed)
|
|
62
|
-
workflowskill validate path/to/workflow.md
|
|
63
|
-
|
|
64
|
-
# Run a workflow
|
|
65
|
-
workflowskill run path/to/workflow.md
|
|
66
|
-
|
|
67
|
-
# Pass inputs as JSON
|
|
68
|
-
workflowskill run path/to/workflow.md --input '{"keywords": "rust developer"}'
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
The CLI shows live progress on stderr and writes a structured [run log](#run-log) as JSON to stdout and to `runs/<name>-<timestamp>.json`.
|
|
72
|
-
|
|
73
55
|
## Authoring
|
|
74
56
|
|
|
75
57
|
A WorkflowSkill is authored via natural conversation with any agent system that supports the [Agent Skills](https://agentskills.io/home) format.
|
|
@@ -77,144 +59,203 @@ A WorkflowSkill is authored via natural conversation with any agent system that
|
|
|
77
59
|
1. Prompt your agent to create a workflow: "I want to check this website daily"
|
|
78
60
|
- For Claude Code, this package ships `skill/SKILL.md` which teaches it to author valid WorkflowSkill YAML. For other agent tools, provide the contents of `node_modules/workflowskill/skill/SKILL.md` as context.
|
|
79
61
|
2. Your agent writes a WorkflowSkill.
|
|
80
|
-
3.
|
|
81
|
-
|
|
82
|
-
Your agent will research the task, write the workflow file, and validate it with the CLI. The bundled tools available to generated workflows are:
|
|
83
|
-
|
|
84
|
-
| Tool | What it does |
|
|
85
|
-
| ------------- | ------------------------------------------------ |
|
|
86
|
-
| `web.scrape` | Fetch a URL and extract data via CSS selectors |
|
|
87
|
-
|
|
88
|
-
Works with no setup or credentials.
|
|
62
|
+
3. Integrate it with your host using the [Library API](#library-api).
|
|
89
63
|
|
|
90
64
|
**Evaluate the output:** Check `status` for overall success. If a step failed, its `error` field explains why. For `each` steps, `iterations` shows per-item results. Compare per-step `inputs` and `output` values against your expectations to find where the data flow broke down.
|
|
91
65
|
|
|
92
66
|
## Language overview
|
|
93
67
|
|
|
94
|
-
WorkflowSkill workflows are YAML documents with
|
|
68
|
+
WorkflowSkill workflows are YAML documents with four step types:
|
|
95
69
|
|
|
96
70
|
| Step type | Description |
|
|
97
71
|
| ------------- | ------------------------------------------------------------------------------------ |
|
|
98
|
-
| `tool` | Invoke
|
|
99
|
-
| `llm` | Call a language model with a templated prompt |
|
|
72
|
+
| `tool` | Invoke any tool via the host's `ToolAdapter` (APIs, functions, LLM calls, etc.) |
|
|
100
73
|
| `transform` | Filter, map, or sort data without side effects |
|
|
101
74
|
| `conditional` | Branch execution based on an expression |
|
|
102
75
|
| `exit` | Terminate early with a status and output |
|
|
103
76
|
|
|
77
|
+
All external calls — including LLM inference — go through `tool` steps. The runtime itself has no LLM dependency. The host registers whatever tools are available in the deployment context.
|
|
78
|
+
|
|
104
79
|
Steps are connected by `$steps.<id>.output.<field>` references. Loops use `each`. Error handling uses `on_error: fail | ignore` (retries are a separate `retry:` field).
|
|
105
80
|
|
|
106
81
|
See the [full language specification](https://github.com/matthew-h-cromer/workflowskill/blob/main/SPEC.md) for details.
|
|
107
82
|
|
|
108
|
-
##
|
|
109
|
-
|
|
110
|
-
Two entry points collapse parse → validate → run into single calls that accept raw content and never throw.
|
|
83
|
+
## Quick start
|
|
111
84
|
|
|
112
85
|
```typescript
|
|
113
|
-
import {
|
|
114
|
-
runWorkflowSkill,
|
|
115
|
-
validateWorkflowSkill,
|
|
116
|
-
} from "workflowskill";
|
|
117
|
-
|
|
118
|
-
// Validate a workflow (synchronous, never throws)
|
|
119
|
-
const result = validateWorkflowSkill({
|
|
120
|
-
content, // SKILL.md with frontmatter or bare workflow YAML
|
|
121
|
-
toolAdapter, // optional — skips tool availability checks if absent
|
|
122
|
-
});
|
|
86
|
+
import { runWorkflowSkill, MockToolAdapter } from "workflowskill";
|
|
123
87
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
88
|
+
const adapter = new MockToolAdapter();
|
|
89
|
+
adapter.register("classify", async (args) => ({
|
|
90
|
+
output: { label: String(args.text).includes("urgent") ? "high" : "normal" },
|
|
91
|
+
}));
|
|
92
|
+
|
|
93
|
+
const content = `
|
|
94
|
+
inputs:
|
|
95
|
+
message:
|
|
96
|
+
type: string
|
|
97
|
+
outputs:
|
|
98
|
+
label:
|
|
99
|
+
type: string
|
|
100
|
+
value: $steps.classify.output.label
|
|
101
|
+
steps:
|
|
102
|
+
- id: classify
|
|
103
|
+
type: tool
|
|
104
|
+
tool: classify
|
|
105
|
+
inputs:
|
|
106
|
+
text:
|
|
107
|
+
type: string
|
|
108
|
+
value: $inputs.message
|
|
109
|
+
outputs:
|
|
110
|
+
label:
|
|
111
|
+
type: string
|
|
112
|
+
value: $result.label
|
|
113
|
+
`;
|
|
127
114
|
|
|
128
|
-
// Run a workflow (async, never throws — always returns a RunLog)
|
|
129
115
|
const log = await runWorkflowSkill({
|
|
130
|
-
content,
|
|
131
|
-
inputs: {
|
|
132
|
-
toolAdapter,
|
|
133
|
-
|
|
116
|
+
content,
|
|
117
|
+
inputs: { message: "Urgent: server is down" },
|
|
118
|
+
toolAdapter: adapter,
|
|
119
|
+
onEvent: (event) => console.log(event.type),
|
|
134
120
|
});
|
|
135
121
|
|
|
136
122
|
if (log.status === "success") {
|
|
137
|
-
console.log(log.outputs);
|
|
123
|
+
console.log(log.outputs); // { label: "high" }
|
|
124
|
+
const step = log.steps.find((s) => s.id === "classify");
|
|
125
|
+
console.log(step?.output); // { label: "high" }
|
|
126
|
+
} else {
|
|
127
|
+
console.error(log.error); // { phase, message, details? }
|
|
138
128
|
}
|
|
139
129
|
```
|
|
140
130
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
- **
|
|
144
|
-
- **Never throws** — parse, validation, and execution failures are encoded in the return value
|
|
145
|
-
- **`RunLog` is always returned**, with `error?: { phase, message, details }` on failure
|
|
131
|
+
- **Accepts raw content** — SKILL.md with frontmatter or bare workflow YAML, no pre-parsing needed
|
|
132
|
+
- **Never throws** — parse, validation, and execution failures are encoded in `RunLog.error`
|
|
133
|
+
- **Pre-flight validation** — `validateWorkflowSkill({ content, toolAdapter? })` returns `{ valid, errors }` without running the workflow
|
|
146
134
|
|
|
147
|
-
##
|
|
135
|
+
## ToolAdapter
|
|
148
136
|
|
|
149
|
-
`ToolAdapter`
|
|
137
|
+
`ToolAdapter` is the only integration boundary between the runtime and the host:
|
|
150
138
|
|
|
151
139
|
```typescript
|
|
140
|
+
interface ToolResult {
|
|
141
|
+
output: unknown;
|
|
142
|
+
error?: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
152
145
|
interface ToolAdapter {
|
|
153
146
|
invoke(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
154
147
|
has(toolName: string): boolean;
|
|
155
148
|
list?(): ToolDescriptor[];
|
|
156
149
|
}
|
|
150
|
+
```
|
|
157
151
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
152
|
+
| Method | Called when | Contract |
|
|
153
|
+
| --- | --- | --- |
|
|
154
|
+
| `invoke(name, args)` | Step execution | Return `{ output }` on success. Set `error` to signal failure — the runtime throws a retriable `StepExecutionError`, triggering the step's `retry` policy if configured. |
|
|
155
|
+
| `has(name)` | Validation | Return `true` if the tool is available. Used to report missing tools before execution starts. |
|
|
156
|
+
| `list()` | Host introspection | Optional. Not called by the runtime — provided for hosts that want to present tool catalogs. |
|
|
157
|
+
|
|
158
|
+
Wrap any tool source behind this interface: MCP clients, function registries, LLM-as-a-tool, or external APIs. For testing, **`MockToolAdapter`** lets you supply inline handlers without any external dependencies:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
import { MockToolAdapter } from "workflowskill";
|
|
162
|
+
|
|
163
|
+
const adapter = new MockToolAdapter();
|
|
164
|
+
adapter.register("my_tool", async (args) => ({ output: "result" }));
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
## Events
|
|
168
|
+
|
|
169
|
+
Pass an `onEvent` callback to `runWorkflowSkill` or `runWorkflow` to receive live progress events during execution:
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
const log = await runWorkflowSkill({
|
|
173
|
+
content,
|
|
174
|
+
inputs,
|
|
175
|
+
toolAdapter,
|
|
176
|
+
onEvent(event: RuntimeEvent) {
|
|
177
|
+
if (event.type === "step_complete") {
|
|
178
|
+
console.log(event.stepId, event.status, `${event.duration_ms}ms`);
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
```
|
|
168
183
|
|
|
169
|
-
|
|
170
|
-
- **`AnthropicLLMAdapter`** — wraps the Anthropic SDK; reads `ANTHROPIC_API_KEY` from the environment
|
|
184
|
+
`RuntimeEvent` is a discriminated union — narrow on `event.type` to access type-specific fields:
|
|
171
185
|
|
|
172
|
-
|
|
186
|
+
| Event type | When it fires | Key fields |
|
|
187
|
+
| --- | --- | --- |
|
|
188
|
+
| `workflow_start` | Before the first step executes | `workflow`, `totalSteps` |
|
|
189
|
+
| `step_start` | After guard passes, before inputs are resolved | `stepId`, `stepType`, `tool?` |
|
|
190
|
+
| `step_complete` | After a step finishes (success or failure) | `stepId`, `status`, `duration_ms`, `iterations?` |
|
|
191
|
+
| `step_skip` | When a step is skipped | `stepId`, `reason` |
|
|
192
|
+
| `step_retry` | Before each retry attempt | `stepId`, `attempt`, `error` |
|
|
193
|
+
| `step_error` | When a step fails, before halt/ignore decision | `stepId`, `error`, `onError` |
|
|
194
|
+
| `each_progress` | After each iteration of an `each` step | `stepId`, `current`, `total` |
|
|
195
|
+
| `workflow_complete` | After the last step or early exit | `status`, `duration_ms`, `summary` |
|
|
173
196
|
|
|
174
197
|
## Run log
|
|
175
198
|
|
|
176
|
-
Every call to `runWorkflowSkill` returns a `RunLog
|
|
199
|
+
Every call to `runWorkflowSkill` returns a `RunLog`. On failure, `error` describes the phase and cause; on success, `outputs` contains the workflow's declared outputs.
|
|
177
200
|
|
|
178
201
|
```typescript
|
|
179
202
|
interface RunLog {
|
|
180
203
|
id: string;
|
|
181
204
|
workflow: string;
|
|
182
205
|
status: "success" | "failed";
|
|
183
|
-
summary: {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
total_tokens: number;
|
|
187
|
-
total_duration_ms: number;
|
|
188
|
-
};
|
|
189
|
-
started_at: string; // ISO 8601
|
|
190
|
-
completed_at: string; // ISO 8601
|
|
206
|
+
summary: { steps_executed: number; steps_skipped: number; total_duration_ms: number };
|
|
207
|
+
started_at: string; // ISO 8601
|
|
208
|
+
completed_at: string; // ISO 8601
|
|
191
209
|
duration_ms: number;
|
|
192
210
|
inputs: Record<string, unknown>;
|
|
193
211
|
steps: StepRecord[];
|
|
194
212
|
outputs: Record<string, unknown>;
|
|
195
|
-
error?: {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
213
|
+
error?: { phase: "parse" | "validate" | "execute"; message: string; details?: unknown };
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
interface StepRecord {
|
|
217
|
+
id: string;
|
|
218
|
+
executor: "tool" | "transform" | "conditional" | "exit";
|
|
219
|
+
status: "success" | "failed" | "skipped";
|
|
220
|
+
reason?: string; // why skipped
|
|
221
|
+
duration_ms: number;
|
|
222
|
+
inputs?: Record<string, unknown>;
|
|
223
|
+
output?: unknown;
|
|
224
|
+
iterations?: number; // each steps only
|
|
225
|
+
error?: string; // failed steps only
|
|
226
|
+
retries?: { attempts: number; errors: string[] }; // when retries occurred
|
|
200
227
|
}
|
|
201
228
|
```
|
|
202
229
|
|
|
203
|
-
`error` is present only when the run failed
|
|
230
|
+
- `error` is present only when the run failed; `phase` indicates where it failed
|
|
231
|
+
- `output` holds the step's mapped output after `$result` expressions are applied
|
|
232
|
+
- `iterations` is set for `each` steps; `retries` is only present when retry attempts were made
|
|
204
233
|
|
|
205
|
-
##
|
|
234
|
+
## Agent integration
|
|
206
235
|
|
|
207
|
-
|
|
236
|
+
### AUTHORING_SKILL
|
|
208
237
|
|
|
209
|
-
|
|
238
|
+
`AUTHORING_SKILL` is a string constant containing full authoring instructions for the WorkflowSkill language. Inject it as system context to enable any LLM to author valid workflows:
|
|
210
239
|
|
|
211
|
-
|
|
240
|
+
```typescript
|
|
241
|
+
import { AUTHORING_SKILL } from "workflowskill";
|
|
212
242
|
|
|
243
|
+
const systemPrompt = `${AUTHORING_SKILL}\n\nYour task: ${userRequest}`;
|
|
213
244
|
```
|
|
214
|
-
|
|
245
|
+
|
|
246
|
+
### Low-level API
|
|
247
|
+
|
|
248
|
+
`parseWorkflowFromMd`, `validateWorkflow`, and `runWorkflow` are exported for consumers who need fine-grained control over each phase:
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
import { parseWorkflowFromMd, validateWorkflow, runWorkflow } from "workflowskill";
|
|
252
|
+
|
|
253
|
+
const workflow = parseWorkflowFromMd(content); // throws ParseError on failure
|
|
254
|
+
const result = validateWorkflow(workflow, toolAdapter); // returns { valid, errors }
|
|
255
|
+
const log = await runWorkflow({ workflow, inputs, toolAdapter, onEvent });
|
|
215
256
|
```
|
|
216
257
|
|
|
217
|
-
|
|
258
|
+
Use these when caching parsed workflows across multiple runs, running validation separately from execution, or building custom pipelines around the runtime.
|
|
218
259
|
|
|
219
260
|
## Documentation
|
|
220
261
|
|
package/dist/index.d.mts
CHANGED
|
@@ -38,7 +38,7 @@ interface RetryPolicy {
|
|
|
38
38
|
}
|
|
39
39
|
/** Error handling strategy for a step. */
|
|
40
40
|
type OnError = 'fail' | 'ignore';
|
|
41
|
-
type StepType = 'tool' | '
|
|
41
|
+
type StepType = 'tool' | 'transform' | 'conditional' | 'exit';
|
|
42
42
|
/** Transform operation kinds. */
|
|
43
43
|
type TransformOperation = 'filter' | 'map' | 'sort';
|
|
44
44
|
/** Sort direction. */
|
|
@@ -74,16 +74,6 @@ interface ToolStep extends StepBase {
|
|
|
74
74
|
/** Registered tool name. */
|
|
75
75
|
tool: string;
|
|
76
76
|
}
|
|
77
|
-
/** LLM step: calls a language model. */
|
|
78
|
-
interface LLMStep extends StepBase {
|
|
79
|
-
type: 'llm';
|
|
80
|
-
/** Model identifier (optional, falls back to platform default). */
|
|
81
|
-
model?: string;
|
|
82
|
-
/** Prompt template with $-expression interpolation. */
|
|
83
|
-
prompt: string;
|
|
84
|
-
/** Structured output hint (optional). */
|
|
85
|
-
response_format?: Record<string, unknown>;
|
|
86
|
-
}
|
|
87
77
|
/** Transform step: filter, map, or sort data. */
|
|
88
78
|
interface TransformFilterStep extends StepBase {
|
|
89
79
|
type: 'transform';
|
|
@@ -125,7 +115,7 @@ interface ExitStep extends StepBase {
|
|
|
125
115
|
output?: string | Record<string, unknown>;
|
|
126
116
|
}
|
|
127
117
|
/** Union of all step types. */
|
|
128
|
-
type Step = ToolStep |
|
|
118
|
+
type Step = ToolStep | TransformStep | ConditionalStep | ExitStep;
|
|
129
119
|
/** The complete parsed workflow definition. */
|
|
130
120
|
interface WorkflowDefinition {
|
|
131
121
|
inputs: Record<string, WorkflowInput>;
|
|
@@ -143,11 +133,6 @@ interface ParsedSkill {
|
|
|
143
133
|
frontmatter: SkillFrontmatter;
|
|
144
134
|
workflow: WorkflowDefinition;
|
|
145
135
|
}
|
|
146
|
-
/** Token usage for an LLM step. */
|
|
147
|
-
interface TokenUsage {
|
|
148
|
-
input: number;
|
|
149
|
-
output: number;
|
|
150
|
-
}
|
|
151
136
|
/** Retry tracking for a step that was retried. */
|
|
152
137
|
interface RetryRecord {
|
|
153
138
|
/** Number of retry attempts (not counting the initial try). */
|
|
@@ -173,8 +158,6 @@ interface StepRecord {
|
|
|
173
158
|
inputs?: Record<string, unknown>;
|
|
174
159
|
/** Number of iterations (if each was used). */
|
|
175
160
|
iterations?: number;
|
|
176
|
-
/** Token counts (LLM steps only). */
|
|
177
|
-
tokens?: TokenUsage;
|
|
178
161
|
/** The step's output (may be truncated in logs). */
|
|
179
162
|
output?: unknown;
|
|
180
163
|
/** Error details if the step failed. */
|
|
@@ -186,7 +169,6 @@ interface StepRecord {
|
|
|
186
169
|
interface RunSummary {
|
|
187
170
|
steps_executed: number;
|
|
188
171
|
steps_skipped: number;
|
|
189
|
-
total_tokens: number;
|
|
190
172
|
total_duration_ms: number;
|
|
191
173
|
}
|
|
192
174
|
/** Final status of a workflow run. */
|
|
@@ -238,17 +220,18 @@ type RuntimeEvent = {
|
|
|
238
220
|
stepId: string;
|
|
239
221
|
stepType: StepType;
|
|
240
222
|
tool?: string;
|
|
223
|
+
description?: string;
|
|
241
224
|
} | {
|
|
242
225
|
type: 'step_complete';
|
|
243
226
|
stepId: string;
|
|
244
227
|
status: StepRunStatus;
|
|
245
228
|
duration_ms: number;
|
|
246
|
-
tokens?: TokenUsage;
|
|
247
229
|
iterations?: number;
|
|
248
230
|
} | {
|
|
249
231
|
type: 'step_skip';
|
|
250
232
|
stepId: string;
|
|
251
233
|
reason: string;
|
|
234
|
+
description?: string;
|
|
252
235
|
} | {
|
|
253
236
|
type: 'step_retry';
|
|
254
237
|
stepId: string;
|
|
@@ -300,15 +283,6 @@ interface ToolAdapter {
|
|
|
300
283
|
/** List all available tools with their metadata. Optional for backward compatibility. */
|
|
301
284
|
list?(): ToolDescriptor[];
|
|
302
285
|
}
|
|
303
|
-
/** Result from an LLM call. */
|
|
304
|
-
interface LLMResult {
|
|
305
|
-
text: string;
|
|
306
|
-
tokens: TokenUsage;
|
|
307
|
-
}
|
|
308
|
-
/** LLM adapter interface for calling language models. */
|
|
309
|
-
interface LLMAdapter {
|
|
310
|
-
call(model: string | undefined, prompt: string, responseFormat?: Record<string, unknown>): Promise<LLMResult>;
|
|
311
|
-
}
|
|
312
286
|
/** Runtime context available during step execution. */
|
|
313
287
|
interface RuntimeContext {
|
|
314
288
|
/** Workflow-level inputs. */
|
|
@@ -388,13 +362,26 @@ declare class EvalError extends Error {
|
|
|
388
362
|
*/
|
|
389
363
|
declare function resolveExpression(expr: string, context: RuntimeContext): unknown;
|
|
390
364
|
/**
|
|
391
|
-
*
|
|
392
|
-
|
|
393
|
-
|
|
365
|
+
* Returns true if the string contains at least one ${...} template block.
|
|
366
|
+
*/
|
|
367
|
+
declare function containsTemplate(value: string): boolean;
|
|
368
|
+
/**
|
|
369
|
+
* Resolve a ${...} template string against a runtime context.
|
|
370
|
+
*
|
|
371
|
+
* Two modes:
|
|
372
|
+
* - Whole-value `${ref}` (nothing else) — type is preserved (not coerced to string).
|
|
373
|
+
* - Multi-block — each `${ref}` is evaluated and spliced into the surrounding string.
|
|
374
|
+
* Use `$${` to produce a literal `${` inside a template.
|
|
394
375
|
*
|
|
395
|
-
*
|
|
376
|
+
* Inside `${...}`, references omit the leading `$` (the `$` is part of the delimiter).
|
|
377
|
+
* Example: `"https://example.com?q=${inputs.query}"` → resolves `$inputs.query`.
|
|
378
|
+
*/
|
|
379
|
+
declare function resolveTemplate(template: string, context: RuntimeContext): unknown;
|
|
380
|
+
/**
|
|
381
|
+
* Coerce a value to its string representation for prompt interpolation.
|
|
382
|
+
* Per the spec: objects/arrays → JSON, null → empty string.
|
|
396
383
|
*/
|
|
397
|
-
declare function
|
|
384
|
+
declare function stringify(value: unknown): string;
|
|
398
385
|
//#endregion
|
|
399
386
|
//#region src/validator/index.d.ts
|
|
400
387
|
/**
|
|
@@ -436,39 +423,9 @@ declare class MockToolAdapter implements ToolAdapter {
|
|
|
436
423
|
invoke(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
437
424
|
}
|
|
438
425
|
//#endregion
|
|
439
|
-
//#region src/adapters/mock-llm-adapter.d.ts
|
|
440
|
-
type LLMHandler = (model: string | undefined, prompt: string, responseFormat?: Record<string, unknown>) => LLMResult | Promise<LLMResult>;
|
|
441
|
-
declare class MockLLMAdapter implements LLMAdapter {
|
|
442
|
-
private handler;
|
|
443
|
-
constructor(handler?: LLMHandler);
|
|
444
|
-
call(model: string | undefined, prompt: string, responseFormat?: Record<string, unknown>): Promise<LLMResult>;
|
|
445
|
-
}
|
|
446
|
-
//#endregion
|
|
447
|
-
//#region src/adapters/anthropic-llm-adapter.d.ts
|
|
448
|
-
declare class AnthropicLLMAdapter implements LLMAdapter {
|
|
449
|
-
private client;
|
|
450
|
-
constructor(apiKey: string);
|
|
451
|
-
call(model: string | undefined, prompt: string, responseFormat?: Record<string, unknown>): Promise<LLMResult>;
|
|
452
|
-
}
|
|
453
|
-
//#endregion
|
|
454
|
-
//#region src/tools/builtin-tool-adapter.d.ts
|
|
455
|
-
declare class BuiltinToolAdapter implements ToolAdapter {
|
|
456
|
-
private tools;
|
|
457
|
-
private register;
|
|
458
|
-
has(toolName: string): boolean;
|
|
459
|
-
list(): ToolDescriptor[];
|
|
460
|
-
invoke(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
461
|
-
/**
|
|
462
|
-
* Create a BuiltinToolAdapter with all bundled tools registered.
|
|
463
|
-
*/
|
|
464
|
-
static create(): Promise<BuiltinToolAdapter>;
|
|
465
|
-
}
|
|
466
|
-
//#endregion
|
|
467
426
|
//#region src/config/index.d.ts
|
|
468
|
-
/** WorkflowSkill configuration. */
|
|
469
|
-
interface WorkflowSkillConfig {
|
|
470
|
-
anthropicApiKey?: string;
|
|
471
|
-
}
|
|
427
|
+
/** WorkflowSkill configuration. Reserved for future host-level configuration. */
|
|
428
|
+
interface WorkflowSkillConfig {}
|
|
472
429
|
/**
|
|
473
430
|
* Load configuration from environment variables, with .env fallback.
|
|
474
431
|
* Environment variables take precedence over .env file values.
|
|
@@ -500,10 +457,9 @@ declare class StepExecutionError extends Error {
|
|
|
500
457
|
|
|
501
458
|
context?: StepErrorContext | undefined);
|
|
502
459
|
}
|
|
503
|
-
/** Result from a standard step execution (tool,
|
|
460
|
+
/** Result from a standard step execution (tool, transform). */
|
|
504
461
|
interface StepOutput {
|
|
505
462
|
output: unknown;
|
|
506
|
-
tokens?: TokenUsage;
|
|
507
463
|
}
|
|
508
464
|
/** Result from a conditional step execution. */
|
|
509
465
|
interface ConditionalOutput {
|
|
@@ -549,21 +505,11 @@ declare function executeExit(step: ExitStep, context: RuntimeContext): ExitOutpu
|
|
|
549
505
|
*/
|
|
550
506
|
declare function executeTool(step: ToolStep, resolvedInputs: Record<string, unknown>, toolAdapter: ToolAdapter): Promise<StepOutput>;
|
|
551
507
|
//#endregion
|
|
552
|
-
//#region src/executor/llm.d.ts
|
|
553
|
-
/**
|
|
554
|
-
* Execute an LLM step.
|
|
555
|
-
* Interpolates $-references in the prompt, calls the model, and returns the response.
|
|
556
|
-
* The response_format field is passed as a hint but not enforced (per spec).
|
|
557
|
-
* If the response is valid JSON, it's parsed; otherwise returned as text.
|
|
558
|
-
*/
|
|
559
|
-
declare function executeLLM(step: LLMStep, _resolvedInputs: Record<string, unknown>, context: RuntimeContext, llmAdapter: LLMAdapter): Promise<StepOutput>;
|
|
560
|
-
//#endregion
|
|
561
508
|
//#region src/executor/index.d.ts
|
|
562
509
|
/** Discriminated result from dispatching a step. */
|
|
563
510
|
type DispatchResult = {
|
|
564
511
|
kind: 'output';
|
|
565
512
|
output: unknown;
|
|
566
|
-
tokens?: TokenUsage;
|
|
567
513
|
} | {
|
|
568
514
|
kind: 'branch';
|
|
569
515
|
branch: 'then' | 'else' | null;
|
|
@@ -577,7 +523,7 @@ type DispatchResult = {
|
|
|
577
523
|
* Dispatch a step to the appropriate executor.
|
|
578
524
|
* The runtime calls this for each step in the execution loop.
|
|
579
525
|
*/
|
|
580
|
-
declare function dispatch(step: Step, resolvedInputs: Record<string, unknown>, context: RuntimeContext, toolAdapter: ToolAdapter
|
|
526
|
+
declare function dispatch(step: Step, resolvedInputs: Record<string, unknown>, context: RuntimeContext, toolAdapter: ToolAdapter): Promise<DispatchResult>;
|
|
581
527
|
//#endregion
|
|
582
528
|
//#region src/runtime/index.d.ts
|
|
583
529
|
declare class WorkflowExecutionError extends Error {
|
|
@@ -593,7 +539,6 @@ interface RunOptions {
|
|
|
593
539
|
workflow: WorkflowDefinition;
|
|
594
540
|
inputs?: Record<string, unknown>;
|
|
595
541
|
toolAdapter: ToolAdapter;
|
|
596
|
-
llmAdapter: LLMAdapter;
|
|
597
542
|
workflowName?: string;
|
|
598
543
|
/** Optional callback for live progress events during execution. */
|
|
599
544
|
onEvent?: (event: RuntimeEvent) => void;
|
|
@@ -601,7 +546,7 @@ interface RunOptions {
|
|
|
601
546
|
/**
|
|
602
547
|
* Execute a workflow and produce a run log.
|
|
603
548
|
* Phase 1: Validate the workflow definition.
|
|
604
|
-
* Phase 2: Execute steps in declaration order following the
|
|
549
|
+
* Phase 2: Execute steps in declaration order following the 9-step lifecycle.
|
|
605
550
|
*/
|
|
606
551
|
declare function runWorkflow(options: RunOptions): Promise<RunLog>;
|
|
607
552
|
interface RunWorkflowSkillOptions {
|
|
@@ -609,7 +554,6 @@ interface RunWorkflowSkillOptions {
|
|
|
609
554
|
content: string;
|
|
610
555
|
inputs?: Record<string, unknown>;
|
|
611
556
|
toolAdapter: ToolAdapter;
|
|
612
|
-
llmAdapter: LLMAdapter;
|
|
613
557
|
/** Fallback name used when content has no frontmatter. Defaults to 'inline'. */
|
|
614
558
|
workflowName?: string;
|
|
615
559
|
onEvent?: (event: RuntimeEvent) => void;
|
|
@@ -625,5 +569,5 @@ declare function runWorkflowSkill(options: RunWorkflowSkillOptions): Promise<Run
|
|
|
625
569
|
//#region src/skill/index.d.ts
|
|
626
570
|
declare const AUTHORING_SKILL: string;
|
|
627
571
|
//#endregion
|
|
628
|
-
export { AUTHORING_SKILL,
|
|
572
|
+
export { AUTHORING_SKILL, type ConditionalOutput, ConditionalStep, type DispatchResult, EvalError, type ExitOutput, ExitStatus, ExitStep, FieldSchema, JsonSchema, LexError, MockToolAdapter, OnError, ParseError, type ParseErrorDetail, ParseExprError, ParsedSkill, RetryPolicy, RetryRecord, RunLog, RunLogError, type RunOptions, RunStatus, RunSummary, type RunWorkflowSkillOptions, RuntimeContext, RuntimeEvent, SchemaType, SkillFrontmatter, SortDirection, Step, StepBase, type StepErrorContext, StepExecutionError, StepInput, type StepOutput, StepRecord, StepRunStatus, StepType, ToolAdapter, ToolDescriptor, type ToolHandler, ToolResult, ToolStep, TransformFilterStep, TransformMapStep, TransformOperation, TransformSortStep, TransformStep, type ValidateWorkflowSkillOptions, type ValidateWorkflowSkillResult, ValidationError, ValidationResult, WorkflowDefinition, WorkflowExecutionError, WorkflowInput, WorkflowOutput, type WorkflowSkillConfig, buildFailedRunLog, containsTemplate, dispatch, executeConditional, executeExit, executeTool, executeTransform, loadConfig, parseSkillMd, parseWorkflowFromMd, parseWorkflowYaml, resolveExpression, resolveTemplate, runWorkflow, runWorkflowSkill, stringify, validateWorkflow, validateWorkflowSkill };
|
|
629
573
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/index.ts","../src/parser/index.ts","../src/expression/lexer.ts","../src/expression/parser.ts","../src/expression/evaluator.ts","../src/expression/index.ts","../src/validator/index.ts","../src/adapters/mock-tool-adapter.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/index.ts","../src/parser/index.ts","../src/expression/lexer.ts","../src/expression/parser.ts","../src/expression/evaluator.ts","../src/expression/index.ts","../src/validator/index.ts","../src/adapters/mock-tool-adapter.ts","../src/config/index.ts","../src/executor/types.ts","../src/executor/transform.ts","../src/executor/conditional.ts","../src/executor/exit.ts","../src/executor/tool.ts","../src/executor/index.ts","../src/runtime/index.ts","../src/skill/index.ts"],"mappings":"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"}
|