workflowskill 0.2.1 → 0.3.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 +147 -106
- package/dist/index.d.mts +26 -84
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1779 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -10
- package/skill/SKILL.md +77 -307
- 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. */
|
|
@@ -243,7 +225,6 @@ type RuntimeEvent = {
|
|
|
243
225
|
stepId: string;
|
|
244
226
|
status: StepRunStatus;
|
|
245
227
|
duration_ms: number;
|
|
246
|
-
tokens?: TokenUsage;
|
|
247
228
|
iterations?: number;
|
|
248
229
|
} | {
|
|
249
230
|
type: 'step_skip';
|
|
@@ -300,15 +281,6 @@ interface ToolAdapter {
|
|
|
300
281
|
/** List all available tools with their metadata. Optional for backward compatibility. */
|
|
301
282
|
list?(): ToolDescriptor[];
|
|
302
283
|
}
|
|
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
284
|
/** Runtime context available during step execution. */
|
|
313
285
|
interface RuntimeContext {
|
|
314
286
|
/** Workflow-level inputs. */
|
|
@@ -388,13 +360,26 @@ declare class EvalError extends Error {
|
|
|
388
360
|
*/
|
|
389
361
|
declare function resolveExpression(expr: string, context: RuntimeContext): unknown;
|
|
390
362
|
/**
|
|
391
|
-
*
|
|
392
|
-
|
|
393
|
-
|
|
363
|
+
* Returns true if the string contains at least one ${...} template block.
|
|
364
|
+
*/
|
|
365
|
+
declare function containsTemplate(value: string): boolean;
|
|
366
|
+
/**
|
|
367
|
+
* Resolve a ${...} template string against a runtime context.
|
|
394
368
|
*
|
|
395
|
-
*
|
|
369
|
+
* Two modes:
|
|
370
|
+
* - Whole-value `${ref}` (nothing else) — type is preserved (not coerced to string).
|
|
371
|
+
* - Multi-block — each `${ref}` is evaluated and spliced into the surrounding string.
|
|
372
|
+
* Use `$${` to produce a literal `${` inside a template.
|
|
373
|
+
*
|
|
374
|
+
* Inside `${...}`, references omit the leading `$` (the `$` is part of the delimiter).
|
|
375
|
+
* Example: `"https://example.com?q=${inputs.query}"` → resolves `$inputs.query`.
|
|
376
|
+
*/
|
|
377
|
+
declare function resolveTemplate(template: string, context: RuntimeContext): unknown;
|
|
378
|
+
/**
|
|
379
|
+
* Coerce a value to its string representation for prompt interpolation.
|
|
380
|
+
* Per the spec: objects/arrays → JSON, null → empty string.
|
|
396
381
|
*/
|
|
397
|
-
declare function
|
|
382
|
+
declare function stringify(value: unknown): string;
|
|
398
383
|
//#endregion
|
|
399
384
|
//#region src/validator/index.d.ts
|
|
400
385
|
/**
|
|
@@ -436,39 +421,9 @@ declare class MockToolAdapter implements ToolAdapter {
|
|
|
436
421
|
invoke(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
437
422
|
}
|
|
438
423
|
//#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
424
|
//#region src/config/index.d.ts
|
|
468
|
-
/** WorkflowSkill configuration. */
|
|
469
|
-
interface WorkflowSkillConfig {
|
|
470
|
-
anthropicApiKey?: string;
|
|
471
|
-
}
|
|
425
|
+
/** WorkflowSkill configuration. Reserved for future host-level configuration. */
|
|
426
|
+
interface WorkflowSkillConfig {}
|
|
472
427
|
/**
|
|
473
428
|
* Load configuration from environment variables, with .env fallback.
|
|
474
429
|
* Environment variables take precedence over .env file values.
|
|
@@ -500,10 +455,9 @@ declare class StepExecutionError extends Error {
|
|
|
500
455
|
|
|
501
456
|
context?: StepErrorContext | undefined);
|
|
502
457
|
}
|
|
503
|
-
/** Result from a standard step execution (tool,
|
|
458
|
+
/** Result from a standard step execution (tool, transform). */
|
|
504
459
|
interface StepOutput {
|
|
505
460
|
output: unknown;
|
|
506
|
-
tokens?: TokenUsage;
|
|
507
461
|
}
|
|
508
462
|
/** Result from a conditional step execution. */
|
|
509
463
|
interface ConditionalOutput {
|
|
@@ -549,21 +503,11 @@ declare function executeExit(step: ExitStep, context: RuntimeContext): ExitOutpu
|
|
|
549
503
|
*/
|
|
550
504
|
declare function executeTool(step: ToolStep, resolvedInputs: Record<string, unknown>, toolAdapter: ToolAdapter): Promise<StepOutput>;
|
|
551
505
|
//#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
506
|
//#region src/executor/index.d.ts
|
|
562
507
|
/** Discriminated result from dispatching a step. */
|
|
563
508
|
type DispatchResult = {
|
|
564
509
|
kind: 'output';
|
|
565
510
|
output: unknown;
|
|
566
|
-
tokens?: TokenUsage;
|
|
567
511
|
} | {
|
|
568
512
|
kind: 'branch';
|
|
569
513
|
branch: 'then' | 'else' | null;
|
|
@@ -577,7 +521,7 @@ type DispatchResult = {
|
|
|
577
521
|
* Dispatch a step to the appropriate executor.
|
|
578
522
|
* The runtime calls this for each step in the execution loop.
|
|
579
523
|
*/
|
|
580
|
-
declare function dispatch(step: Step, resolvedInputs: Record<string, unknown>, context: RuntimeContext, toolAdapter: ToolAdapter
|
|
524
|
+
declare function dispatch(step: Step, resolvedInputs: Record<string, unknown>, context: RuntimeContext, toolAdapter: ToolAdapter): Promise<DispatchResult>;
|
|
581
525
|
//#endregion
|
|
582
526
|
//#region src/runtime/index.d.ts
|
|
583
527
|
declare class WorkflowExecutionError extends Error {
|
|
@@ -593,7 +537,6 @@ interface RunOptions {
|
|
|
593
537
|
workflow: WorkflowDefinition;
|
|
594
538
|
inputs?: Record<string, unknown>;
|
|
595
539
|
toolAdapter: ToolAdapter;
|
|
596
|
-
llmAdapter: LLMAdapter;
|
|
597
540
|
workflowName?: string;
|
|
598
541
|
/** Optional callback for live progress events during execution. */
|
|
599
542
|
onEvent?: (event: RuntimeEvent) => void;
|
|
@@ -601,7 +544,7 @@ interface RunOptions {
|
|
|
601
544
|
/**
|
|
602
545
|
* Execute a workflow and produce a run log.
|
|
603
546
|
* Phase 1: Validate the workflow definition.
|
|
604
|
-
* Phase 2: Execute steps in declaration order following the
|
|
547
|
+
* Phase 2: Execute steps in declaration order following the 9-step lifecycle.
|
|
605
548
|
*/
|
|
606
549
|
declare function runWorkflow(options: RunOptions): Promise<RunLog>;
|
|
607
550
|
interface RunWorkflowSkillOptions {
|
|
@@ -609,7 +552,6 @@ interface RunWorkflowSkillOptions {
|
|
|
609
552
|
content: string;
|
|
610
553
|
inputs?: Record<string, unknown>;
|
|
611
554
|
toolAdapter: ToolAdapter;
|
|
612
|
-
llmAdapter: LLMAdapter;
|
|
613
555
|
/** Fallback name used when content has no frontmatter. Defaults to 'inline'. */
|
|
614
556
|
workflowName?: string;
|
|
615
557
|
onEvent?: (event: RuntimeEvent) => void;
|
|
@@ -625,5 +567,5 @@ declare function runWorkflowSkill(options: RunWorkflowSkillOptions): Promise<Run
|
|
|
625
567
|
//#region src/skill/index.d.ts
|
|
626
568
|
declare const AUTHORING_SKILL: string;
|
|
627
569
|
//#endregion
|
|
628
|
-
export { AUTHORING_SKILL,
|
|
570
|
+
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
571
|
//# 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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"}
|