@eigenpal/cli 0.0.1 → 0.4.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.
Files changed (41) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +63 -2
  3. package/dist/cli.js +162159 -0
  4. package/dist/skill/SKILL.md +366 -0
  5. package/dist/skill/examples/hello-world/dataset/examples/sample/expected/output.json +4 -0
  6. package/dist/skill/examples/hello-world/dataset/examples/sample/input/arguments.json +3 -0
  7. package/dist/skill/examples/hello-world/evaluators.yaml +5 -0
  8. package/dist/skill/examples/hello-world/workflow.yaml +28 -0
  9. package/dist/skill/reference/cli/agent.md +7 -0
  10. package/dist/skill/reference/cli/auth.md +75 -0
  11. package/dist/skill/reference/cli/completion.md +13 -0
  12. package/dist/skill/reference/cli/init.md +63 -0
  13. package/dist/skill/reference/cli/skill.md +79 -0
  14. package/dist/skill/reference/cli/status.md +14 -0
  15. package/dist/skill/reference/cli/workflow.md +788 -0
  16. package/dist/skill/reference/dataset-format.md +251 -0
  17. package/dist/skill/reference/debugging.md +280 -0
  18. package/dist/skill/reference/evaluators.md +210 -0
  19. package/dist/skill/reference/step-exec.md +164 -0
  20. package/dist/skill/reference/step-types.md +519 -0
  21. package/dist/skill/reference/workflow-yaml.md +304 -0
  22. package/dist/templates/blank/README.md +22 -0
  23. package/dist/templates/blank/dataset/examples/sample/expected/output.json +4 -0
  24. package/dist/templates/blank/dataset/examples/sample/input/arguments.json +3 -0
  25. package/dist/templates/blank/evaluators.yaml +9 -0
  26. package/dist/templates/blank/workflow.yaml +39 -0
  27. package/dist/templates/pdf-extraction/README.md +20 -0
  28. package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/README.md +5 -0
  29. package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/expected/output.json +6 -0
  30. package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/input/arguments.json +1 -0
  31. package/dist/templates/pdf-extraction/evaluators.yaml +5 -0
  32. package/dist/templates/pdf-extraction/workflow.yaml +38 -0
  33. package/dist/templates/text-classification/README.md +8 -0
  34. package/dist/templates/text-classification/dataset/examples/negative/expected/output.json +3 -0
  35. package/dist/templates/text-classification/dataset/examples/negative/input/arguments.json +3 -0
  36. package/dist/templates/text-classification/dataset/examples/positive/expected/output.json +3 -0
  37. package/dist/templates/text-classification/dataset/examples/positive/input/arguments.json +3 -0
  38. package/dist/templates/text-classification/evaluators.yaml +6 -0
  39. package/dist/templates/text-classification/workflow.yaml +35 -0
  40. package/package.json +35 -15
  41. package/index.js +0 -4
@@ -0,0 +1,788 @@
1
+ # eigenpal workflow
2
+
3
+ > **Auto-generated.** This file is regenerated from the live Commander tree in
4
+ > `packages/cli/src/cli.ts` by `bun run --cwd packages/cli generate:cli-docs`.
5
+ > Do not hand-edit — your changes will be overwritten on the next run.
6
+
7
+ All workflow operations. Core verbs (list / push / pull / validate) sit directly here; sub-namespaces (versions, evaluators, dataset, experiment, execution, step-type) group operations on each owned resource. The agent surface mirrors this shape 1:1 when it lands.
8
+
9
+ ## Contents
10
+
11
+ - [Surface](#surface)
12
+ - [Commands](#commands)
13
+ - [Core](#core)
14
+ - [Evaluators](#evaluators)
15
+ - [Dataset](#dataset)
16
+ - [Experiment](#experiment)
17
+ - [Execution](#execution)
18
+ - [Versions](#versions)
19
+ - [Step-type](#step-type)
20
+ - [Evaluator-type](#evaluator-type)
21
+ - [Step](#step)
22
+ - [Details](#details)
23
+ - [`eigenpal workflow list [options]`](#eigenpal-workflow-list-options)
24
+ - [`eigenpal workflow pull [options] <workflowId>`](#eigenpal-workflow-pull-options-workflowid)
25
+ - [`eigenpal workflow push [options]`](#eigenpal-workflow-push-options)
26
+ - [`eigenpal workflow validate [options]`](#eigenpal-workflow-validate-options)
27
+ - [`eigenpal workflow clear-local [options] [workflow-slug] [examples...]`](#eigenpal-workflow-clear-local-options-workflow-slug-examples)
28
+ - [`eigenpal workflow evaluators pull [options] <workflowId>`](#eigenpal-workflow-evaluators-pull-options-workflowid)
29
+ - [`eigenpal workflow evaluators push [options] <workflowId>`](#eigenpal-workflow-evaluators-push-options-workflowid)
30
+ - [`eigenpal workflow evaluators validate [options] [path]`](#eigenpal-workflow-evaluators-validate-options-path)
31
+ - [`eigenpal workflow dataset list [options] <workflowId>`](#eigenpal-workflow-dataset-list-options-workflowid)
32
+ - [`eigenpal workflow dataset pull [options] <workflowId>`](#eigenpal-workflow-dataset-pull-options-workflowid)
33
+ - [`eigenpal workflow dataset push [options] <workflowId>`](#eigenpal-workflow-dataset-push-options-workflowid)
34
+ - [`eigenpal workflow dataset example create [options] <workflowId>`](#eigenpal-workflow-dataset-example-create-options-workflowid)
35
+ - [`eigenpal workflow dataset example update [options] <workflowId> <exampleId>`](#eigenpal-workflow-dataset-example-update-options-workflowid-exampleid)
36
+ - [`eigenpal workflow dataset example delete [options] <workflowId> <exampleId>`](#eigenpal-workflow-dataset-example-delete-options-workflowid-exampleid)
37
+ - [`eigenpal workflow dataset example get [options] <workflowId> <exampleId>`](#eigenpal-workflow-dataset-example-get-options-workflowid-exampleid)
38
+ - [`eigenpal workflow dataset validate [options] [path]`](#eigenpal-workflow-dataset-validate-options-path)
39
+ - [`eigenpal workflow experiment list [options] <workflowId>`](#eigenpal-workflow-experiment-list-options-workflowid)
40
+ - [`eigenpal workflow experiment run [options] <workflowId>`](#eigenpal-workflow-experiment-run-options-workflowid)
41
+ - [`eigenpal workflow experiment status [options] <workflowId> <batchId>`](#eigenpal-workflow-experiment-status-options-workflowid-batchid)
42
+ - [`eigenpal workflow experiment results [options] <workflowId> [batchId]`](#eigenpal-workflow-experiment-results-options-workflowid-batchid)
43
+ - [`eigenpal workflow experiment compare [options] <batchIdA> <batchIdB>`](#eigenpal-workflow-experiment-compare-options-batchida-batchidb)
44
+ - [`eigenpal workflow execution run [options] <workflow-slug> [examples...]`](#eigenpal-workflow-execution-run-options-workflow-slug-examples)
45
+ - [`eigenpal workflow execution get [options] <executionId>`](#eigenpal-workflow-execution-get-options-executionid)
46
+ - [`eigenpal workflow execution list [options] <workflowId>`](#eigenpal-workflow-execution-list-options-workflowid)
47
+ - [`eigenpal workflow execution watch [options] <executionId>`](#eigenpal-workflow-execution-watch-options-executionid)
48
+ - [`eigenpal workflow execution compare [options] <executionA> <executionB>`](#eigenpal-workflow-execution-compare-options-executiona-executionb)
49
+ - [`eigenpal workflow execution cancel [options] <executionId>`](#eigenpal-workflow-execution-cancel-options-executionid)
50
+ - [`eigenpal workflow versions list [options] <workflowId>`](#eigenpal-workflow-versions-list-options-workflowid)
51
+ - [`eigenpal workflow versions restore [options] <workflowId> <versionId>`](#eigenpal-workflow-versions-restore-options-workflowid-versionid)
52
+ - [`eigenpal workflow step-type list [options]`](#eigenpal-workflow-step-type-list-options)
53
+ - [`eigenpal workflow step-type get [options] <type>`](#eigenpal-workflow-step-type-get-options-type)
54
+ - [`eigenpal workflow evaluator-type list [options]`](#eigenpal-workflow-evaluator-type-list-options)
55
+ - [`eigenpal workflow evaluator-type get [options] <type>`](#eigenpal-workflow-evaluator-type-get-options-type)
56
+ - [`eigenpal workflow step exec [options] <type>`](#eigenpal-workflow-step-exec-options-type)
57
+
58
+ ## Surface
59
+
60
+ ```
61
+ workflow
62
+ ├── list
63
+ ├── pull <workflowId>
64
+ ├── push
65
+ ├── evaluators
66
+ │ ├── pull <workflowId>
67
+ │ ├── push <workflowId>
68
+ │ └── validate [path]
69
+ ├── dataset
70
+ │ ├── list <workflowId>
71
+ │ ├── pull <workflowId>
72
+ │ ├── push <workflowId>
73
+ │ ├── example
74
+ │ │ ├── create <workflowId>
75
+ │ │ ├── update <workflowId> <exampleId>
76
+ │ │ ├── delete <workflowId> <exampleId>
77
+ │ │ └── get <workflowId> <exampleId>
78
+ │ └── validate [path]
79
+ ├── experiment
80
+ │ ├── list <workflowId>
81
+ │ ├── run <workflowId>
82
+ │ ├── status <workflowId> <batchId>
83
+ │ ├── results <workflowId> [batchId]
84
+ │ └── compare <batchIdA> <batchIdB>
85
+ ├── execution
86
+ │ ├── run <workflow-slug> [examples...]
87
+ │ ├── get <executionId>
88
+ │ ├── list <workflowId>
89
+ │ ├── watch <executionId>
90
+ │ ├── compare <executionA> <executionB>
91
+ │ └── cancel <executionId>
92
+ ├── versions
93
+ │ ├── list <workflowId>
94
+ │ └── restore <workflowId> <versionId>
95
+ ├── step-type
96
+ │ ├── list
97
+ │ └── get <type>
98
+ ├── evaluator-type
99
+ │ ├── list
100
+ │ └── get <type>
101
+ ├── validate
102
+ ├── clear-local [workflow-slug] [examples...]
103
+ └── step
104
+ └── exec <type>
105
+ ```
106
+
107
+ ## Commands
108
+
109
+ ### Core
110
+
111
+ | Command | Description |
112
+ | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
113
+ | `eigenpal workflow list [options]` | List workflows the caller can read. |
114
+ | `eigenpal workflow pull [options] <workflowId>` | Download the YAML definition of the workflow at its current version. |
115
+ | `eigenpal workflow push [options]` | Create or update a workflow from a YAML file. |
116
+ | `eigenpal workflow validate [options]` | Local-only validation against the templated project layout: ./workflow.yaml + ./evaluators.yaml + ./dataset/. For targeted validation use `evaluators validate` or `dataset validate`. |
117
+ | `eigenpal workflow clear-local [options] [workflow-slug] [examples...]` | Delete LOCAL execution artifacts and judge summaries under `./.eigenpal/` (server-side data is never touched). Keeps the latest run per example by default; pass `--all` to wipe everything. |
118
+
119
+ ### Evaluators
120
+
121
+ | Command | Description |
122
+ | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
123
+ | `eigenpal workflow evaluators pull [options] <workflowId>` | Download the workflow's evaluators YAML. |
124
+ | `eigenpal workflow evaluators push [options] <workflowId>` | Overwrite the workflow's evaluator config from a YAML file. |
125
+ | `eigenpal workflow evaluators validate [options] [path]` | Validate an evaluators YAML file against the EvalConfig schema. Defaults to ./evaluators.yaml. |
126
+
127
+ ### Dataset
128
+
129
+ | Command | Description |
130
+ | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
131
+ | `eigenpal workflow dataset list [options] <workflowId>` | List eval examples for the workflow. |
132
+ | `eigenpal workflow dataset pull [options] <workflowId>` | Download the workflow's dataset as a ZIP archive. |
133
+ | `eigenpal workflow dataset push [options] <workflowId>` | Replace or extend the workflow's dataset from a ZIP or folder. |
134
+ | `eigenpal workflow dataset example create [options] <workflowId>` | Create one eval example without re-uploading the whole dataset. Pair `--input-*` and `--expected-*` flags to seed trigger input + ground truth; `--annotation` is free-form metadata. |
135
+ | `eigenpal workflow dataset example update [options] <workflowId> <exampleId>` | Patch one eval example. Any flag you omit is left alone; pass `--annotation ""` to clear an annotation. |
136
+ | `eigenpal workflow dataset example delete [options] <workflowId> <exampleId>` | Delete one eval example by id. Single-row deletes have a small blast radius compared to `dataset push --mode replace`, so there is no interactive confirmation; CI / non-TTY shells must pass `--yes` to acknowledge intent. |
137
+ | `eigenpal workflow dataset example get [options] <workflowId> <exampleId>` | Fetch one eval example by id, including triggerInput, expectedOutput, and metadata. Pretty sections in human mode; full payload under --json. |
138
+ | `eigenpal workflow dataset validate [options] [path]` | Validate a dataset folder against the examples/<name>/{input,expected,meta} convention. Defaults to ./dataset/. |
139
+
140
+ ### Experiment
141
+
142
+ | Command | Description |
143
+ | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
144
+ | `eigenpal workflow experiment list [options] <workflowId>` | List executions for the workflow, newest first. |
145
+ | `eigenpal workflow experiment run [options] <workflowId>` | Start a batch eval against the workflow's dataset. |
146
+ | `eigenpal workflow experiment status [options] <workflowId> <batchId>` | Aggregate progress for a batch by `batchId`. |
147
+ | `eigenpal workflow experiment results [options] <workflowId> [batchId]` | Download eval results in CSV or JSON. |
148
+ | `eigenpal workflow experiment compare [options] <batchIdA> <batchIdB>` | Side-by-side eval-score diff between two experiment batches. Highlights regressions vs improvements per (example, evaluator) and prints aggregate stats. |
149
+
150
+ ### Execution
151
+
152
+ | Command | Description |
153
+ | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
154
+ | `eigenpal workflow execution run [options] <workflow-slug> [examples...]` | Run a workflow against one or more local examples on the server. Builds the input payload from the local dataset folder. |
155
+ | `eigenpal workflow execution get [options] <executionId>` | Fetch a single execution payload. Optionally narrow to one step. |
156
+ | `eigenpal workflow execution list [options] <workflowId>` | List recent executions for a workflow. |
157
+ | `eigenpal workflow execution watch [options] <executionId>` | Stream live status of an execution: vertical step list with adaptive polling (2s while transitioning, 5s steady, 30-min auto-detach). ASCII status badges; pipe-safe. |
158
+ | `eigenpal workflow execution compare [options] <executionA> <executionB>` | Side-by-side comparison of two executions. Highlights status / duration / output diffs per step. |
159
+ | `eigenpal workflow execution cancel [options] <executionId>` | Request cancellation of an execution. Idempotent — already-terminal executions exit 0 with an info line. |
160
+
161
+ ### Versions
162
+
163
+ | Command | Description |
164
+ | ----------------------------------------------------------------------- | ------------------------------------------------ |
165
+ | `eigenpal workflow versions list [options] <workflowId>` | List historical workflow versions, newest first. |
166
+ | `eigenpal workflow versions restore [options] <workflowId> <versionId>` | Restore the workflow to a previous version. |
167
+
168
+ ### Step-type
169
+
170
+ | Command | Description |
171
+ | -------------------------------------------------- | ------------------------------------------------------------- |
172
+ | `eigenpal workflow step-type list [options]` | List every step type the deployment supports. |
173
+ | `eigenpal workflow step-type get [options] <type>` | Return the full schema and behavioral docs for one step type. |
174
+
175
+ ### Evaluator-type
176
+
177
+ | Command | Description |
178
+ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
179
+ | `eigenpal workflow evaluator-type list [options]` | List every evaluator type with a one-line description. |
180
+ | `eigenpal workflow evaluator-type get [options] <type>` | Fetch the JSON Schema for one evaluator type. Pipe through `jq` to inspect specific fields. |
181
+
182
+ ### Step
183
+
184
+ | Command | Description |
185
+ | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
186
+ | `eigenpal workflow step exec [options] <type>` | Run one step locally with sample inputs and print its output as JSON. <type> is any value from `workflow step-type list`; only types with a local runner actually execute (today: transform.script, ai.extract). |
187
+
188
+ ## Details
189
+
190
+ ### `eigenpal workflow list [options]`
191
+
192
+ List workflows the caller can read.
193
+
194
+ ### Options
195
+
196
+ | Flag | Required | Default | Description |
197
+ | ------------------ | -------- | ------- | -------------------------------------- |
198
+ | `--search <q>` | no | | Filter by name |
199
+ | `--limit <n>` | no | `50` | Page size |
200
+ | `--offset <n>` | no | `0` | Page offset |
201
+ | `--base-url <url>` | no | | Server base URL |
202
+ | `--json` | no | | Output the raw server response as JSON |
203
+
204
+ ### `eigenpal workflow pull [options] <workflowId>`
205
+
206
+ Download the YAML definition of the workflow at its current version.
207
+
208
+ ### Arguments
209
+
210
+ | Name | Required | Variadic | Description |
211
+ | ------------ | -------- | -------- | ----------- |
212
+ | `workflowId` | yes | no | |
213
+
214
+ ### Options
215
+
216
+ | Flag | Required | Default | Description |
217
+ | ------------------ | -------- | ------- | ------------------------------------ |
218
+ | `--out <path>` | no | | Write YAML to file instead of stdout |
219
+ | `--base-url <url>` | no | | Server base URL |
220
+
221
+ ### `eigenpal workflow push [options]`
222
+
223
+ Create or update a workflow from a YAML file.
224
+
225
+ ### Options
226
+
227
+ | Flag | Required | Default | Description |
228
+ | ------------------------ | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
229
+ | `--file <yaml>` | no | | Path to YAML file |
230
+ | `--workflow-id <id>` | no | | Update existing workflow (default: create new) |
231
+ | `--bump <level>` | no | | Auto-bump from the server's current version: patch \| minor \| major. Mutually exclusive with `--version` and with a top-level `version:` in the YAML. |
232
+ | `--set-version <semver>` | no | | Push at this exact semver (e.g. 1.4.0). Mutually exclusive with `--bump` and with a top-level `version:` in the YAML. (Named `--set-version` to avoid the global `-v, --version` flag.) |
233
+ | `--base-url <url>` | no | | Server base URL |
234
+ | `--json` | no | | Output the raw server response as JSON |
235
+
236
+ ### `eigenpal workflow validate [options]`
237
+
238
+ Local-only validation against the templated project layout: ./workflow.yaml + ./evaluators.yaml + ./dataset/. For targeted validation use `evaluators validate` or `dataset validate`.
239
+
240
+ ### Options
241
+
242
+ | Flag | Required | Default | Description |
243
+ | -------------- | -------- | ------- | -------------------------------------------------------------------------- |
244
+ | `--dir <path>` | no | | Project root (defaults to cwd; resolves the three default paths from here) |
245
+
246
+ ### `eigenpal workflow clear-local [options] [workflow-slug] [examples...]`
247
+
248
+ Delete LOCAL execution artifacts and judge summaries under `./.eigenpal/` (server-side data is never touched). Keeps the latest run per example by default; pass `--all` to wipe everything.
249
+
250
+ ### Arguments
251
+
252
+ | Name | Required | Variadic | Description |
253
+ | --------------- | -------- | -------- | ----------- |
254
+ | `workflow-slug` | no | no | |
255
+ | `examples` | no | yes | |
256
+
257
+ ### Options
258
+
259
+ | Flag | Required | Default | Description |
260
+ | ------------- | -------- | ------- | ---------------------------------------------------------- |
261
+ | `--dir <dir>` | no | | Local eigenpal directory |
262
+ | `--all` | no | `false` | Remove all artifacts, including the latest kept by default |
263
+
264
+ ### `eigenpal workflow evaluators pull [options] <workflowId>`
265
+
266
+ Download the workflow's evaluators YAML.
267
+
268
+ ### Arguments
269
+
270
+ | Name | Required | Variadic | Description |
271
+ | ------------ | -------- | -------- | ----------- |
272
+ | `workflowId` | yes | no | |
273
+
274
+ ### Options
275
+
276
+ | Flag | Required | Default | Description |
277
+ | ------------------ | -------- | ------- | ------------------------------------ |
278
+ | `--out <path>` | no | | Write YAML to file instead of stdout |
279
+ | `--base-url <url>` | no | | Server base URL |
280
+
281
+ ### `eigenpal workflow evaluators push [options] <workflowId>`
282
+
283
+ Overwrite the workflow's evaluator config from a YAML file.
284
+
285
+ ### Arguments
286
+
287
+ | Name | Required | Variadic | Description |
288
+ | ------------ | -------- | -------- | ----------- |
289
+ | `workflowId` | yes | no | |
290
+
291
+ ### Options
292
+
293
+ | Flag | Required | Default | Description |
294
+ | ------------------ | -------- | ------- | -------------------------------------- |
295
+ | `--file <yaml>` | yes | | Path to evaluators YAML file |
296
+ | `--base-url <url>` | no | | Server base URL |
297
+ | `--json` | no | | Output the raw server response as JSON |
298
+
299
+ ### `eigenpal workflow evaluators validate [options] [path]`
300
+
301
+ Validate an evaluators YAML file against the EvalConfig schema. Defaults to ./evaluators.yaml.
302
+
303
+ ### Arguments
304
+
305
+ | Name | Required | Variadic | Description |
306
+ | ------ | -------- | -------- | ----------- |
307
+ | `path` | no | no | |
308
+
309
+ ### `eigenpal workflow dataset list [options] <workflowId>`
310
+
311
+ List eval examples for the workflow.
312
+
313
+ ### Arguments
314
+
315
+ | Name | Required | Variadic | Description |
316
+ | ------------ | -------- | -------- | ----------- |
317
+ | `workflowId` | yes | no | |
318
+
319
+ ### Options
320
+
321
+ | Flag | Required | Default | Description |
322
+ | ------------------ | -------- | ------- | -------------------------------------- |
323
+ | `--limit <n>` | no | `100` | Page size |
324
+ | `--offset <n>` | no | `0` | Page offset |
325
+ | `--base-url <url>` | no | | Server base URL |
326
+ | `--json` | no | | Output the raw server response as JSON |
327
+
328
+ ### `eigenpal workflow dataset pull [options] <workflowId>`
329
+
330
+ Download the workflow's dataset as a ZIP archive.
331
+
332
+ ### Arguments
333
+
334
+ | Name | Required | Variadic | Description |
335
+ | ------------ | -------- | -------- | ----------- |
336
+ | `workflowId` | yes | no | |
337
+
338
+ ### Options
339
+
340
+ | Flag | Required | Default | Description |
341
+ | ------------------ | -------- | ------- | ------------------------------------------------------------------------------- |
342
+ | `--out <zip>` | no | | Write the dataset ZIP to this path. When omitted, the binary streams to stdout. |
343
+ | `--base-url <url>` | no | | Server base URL |
344
+
345
+ ### `eigenpal workflow dataset push [options] <workflowId>`
346
+
347
+ Replace or extend the workflow's dataset from a ZIP or folder.
348
+
349
+ ### Arguments
350
+
351
+ | Name | Required | Variadic | Description |
352
+ | ------------ | -------- | -------- | ----------- |
353
+ | `workflowId` | yes | no | |
354
+
355
+ ### Options
356
+
357
+ | Flag | Required | Default | Description |
358
+ | -------------------------- | -------- | ---------- | ------------------------------------------------------------------------------------------ |
359
+ | `--file <path>` | yes | | Path to a dataset ZIP file or a dataset/ folder (folder is zipped in memory before upload) |
360
+ | `--mode <append\|replace>` | no | `"append"` | Import mode (default: append) |
361
+ | `--yes` | no | `false` | Skip the destructive confirmation prompt for --mode replace (use in CI) |
362
+ | `--base-url <url>` | no | | Server base URL |
363
+ | `--json` | no | | Output the raw server response as JSON |
364
+
365
+ ### `eigenpal workflow dataset example create [options] <workflowId>`
366
+
367
+ Create one eval example without re-uploading the whole dataset. Pair `--input-*` and `--expected-*` flags to seed trigger input + ground truth; `--annotation` is free-form metadata.
368
+
369
+ ### Arguments
370
+
371
+ | Name | Required | Variadic | Description |
372
+ | ------------ | -------- | -------- | ----------- |
373
+ | `workflowId` | yes | no | |
374
+
375
+ ### Options
376
+
377
+ | Flag | Required | Default | Description |
378
+ | ------------------------ | -------- | ------- | --------------------------------------------------- |
379
+ | `--name <name>` | yes | | Example name (1–64 chars) |
380
+ | `--input-json <json>` | no | | Trigger input as a JSON literal |
381
+ | `--input-file <path>` | no | | Trigger input from a JSON file (or `-` for stdin) |
382
+ | `--expected-json <json>` | no | | Expected output as a JSON literal |
383
+ | `--expected-file <path>` | no | | Expected output from a JSON file (or `-` for stdin) |
384
+ | `--annotation <text>` | no | | Free-form annotation |
385
+ | `--base-url <url>` | no | | Server base URL |
386
+ | `--json` | no | | Output the raw server response as JSON |
387
+
388
+ ### `eigenpal workflow dataset example update [options] <workflowId> <exampleId>`
389
+
390
+ Patch one eval example. Any flag you omit is left alone; pass `--annotation ""` to clear an annotation.
391
+
392
+ ### Arguments
393
+
394
+ | Name | Required | Variadic | Description |
395
+ | ------------ | -------- | -------- | ----------- |
396
+ | `workflowId` | yes | no | |
397
+ | `exampleId` | yes | no | |
398
+
399
+ ### Options
400
+
401
+ | Flag | Required | Default | Description |
402
+ | ------------------------ | -------- | ------- | ----------------------------------------------------------- |
403
+ | `--name <name>` | no | | Rename the example (1–64 chars) |
404
+ | `--input-json <json>` | no | | Replace trigger input with this JSON literal |
405
+ | `--input-file <path>` | no | | Replace trigger input from a JSON file (or `-` for stdin) |
406
+ | `--expected-json <json>` | no | | Replace expected output with this JSON literal |
407
+ | `--expected-file <path>` | no | | Replace expected output from a JSON file (or `-` for stdin) |
408
+ | `--annotation <text>` | no | | Replace annotation; pass empty string to clear |
409
+ | `--row-order <n>` | no | | Reorder the row (0-based) |
410
+ | `--base-url <url>` | no | | Server base URL |
411
+ | `--json` | no | | Output the raw server response as JSON |
412
+
413
+ ### `eigenpal workflow dataset example delete [options] <workflowId> <exampleId>`
414
+
415
+ Delete one eval example by id. Single-row deletes have a small blast radius compared to `dataset push --mode replace`, so there is no interactive confirmation; CI / non-TTY shells must pass `--yes` to acknowledge intent.
416
+
417
+ ### Arguments
418
+
419
+ | Name | Required | Variadic | Description |
420
+ | ------------ | -------- | -------- | ----------- |
421
+ | `workflowId` | yes | no | |
422
+ | `exampleId` | yes | no | |
423
+
424
+ ### Options
425
+
426
+ | Flag | Required | Default | Description |
427
+ | ------------------ | -------- | ------- | ----------------------------------------------------------------------------- |
428
+ | `--yes` | no | `false` | Required for non-TTY shells; explicit acknowledgment that this is destructive |
429
+ | `--base-url <url>` | no | | Server base URL |
430
+ | `--json` | no | | Output the raw server response as JSON |
431
+
432
+ ### `eigenpal workflow dataset example get [options] <workflowId> <exampleId>`
433
+
434
+ Fetch one eval example by id, including triggerInput, expectedOutput, and metadata. Pretty sections in human mode; full payload under --json.
435
+
436
+ ### Arguments
437
+
438
+ | Name | Required | Variadic | Description |
439
+ | ------------ | -------- | -------- | ----------- |
440
+ | `workflowId` | yes | no | |
441
+ | `exampleId` | yes | no | |
442
+
443
+ ### Options
444
+
445
+ | Flag | Required | Default | Description |
446
+ | ------------------ | -------- | ------- | -------------------------------------- |
447
+ | `--base-url <url>` | no | | Server base URL |
448
+ | `--json` | no | | Output the raw server response as JSON |
449
+
450
+ ### `eigenpal workflow dataset validate [options] [path]`
451
+
452
+ Validate a dataset folder against the examples/<name>/{input,expected,meta} convention. Defaults to ./dataset/.
453
+
454
+ ### Arguments
455
+
456
+ | Name | Required | Variadic | Description |
457
+ | ------ | -------- | -------- | ----------- |
458
+ | `path` | no | no | |
459
+
460
+ ### `eigenpal workflow experiment list [options] <workflowId>`
461
+
462
+ List executions for the workflow, newest first.
463
+
464
+ ### Arguments
465
+
466
+ | Name | Required | Variadic | Description |
467
+ | ------------ | -------- | -------- | ----------- |
468
+ | `workflowId` | yes | no | |
469
+
470
+ ### Options
471
+
472
+ | Flag | Required | Default | Description |
473
+ | ------------------ | -------- | ------- | -------------------------------------- |
474
+ | `--batch-id <id>` | no | | Filter by batch |
475
+ | `--limit <n>` | no | `50` | Page size |
476
+ | `--offset <n>` | no | `0` | Page offset |
477
+ | `--base-url <url>` | no | | Server base URL |
478
+ | `--json` | no | | Output the raw server response as JSON |
479
+
480
+ ### `eigenpal workflow experiment run [options] <workflowId>`
481
+
482
+ Start a batch eval against the workflow's dataset.
483
+
484
+ ### Arguments
485
+
486
+ | Name | Required | Variadic | Description |
487
+ | ------------ | -------- | -------- | ----------- |
488
+ | `workflowId` | yes | no | |
489
+
490
+ ### Options
491
+
492
+ | Flag | Required | Default | Description |
493
+ | ------------------- | -------- | ------- | ---------------------------------------------------- |
494
+ | `--example-id <id>` | no | `[]` | Run only this example (repeatable) |
495
+ | `--wait` | no | `false` | Poll until terminal; non-zero exit on passRate < 1.0 |
496
+ | `--interval <n>` | no | `10` | Polling interval in seconds (default 10) |
497
+ | `--base-url <url>` | no | | Server base URL |
498
+ | `--json` | no | | Output the raw server response as JSON |
499
+
500
+ ### `eigenpal workflow experiment status [options] <workflowId> <batchId>`
501
+
502
+ Aggregate progress for a batch by `batchId`.
503
+
504
+ ### Arguments
505
+
506
+ | Name | Required | Variadic | Description |
507
+ | ------------ | -------- | -------- | ----------- |
508
+ | `workflowId` | yes | no | |
509
+ | `batchId` | yes | no | |
510
+
511
+ ### Options
512
+
513
+ | Flag | Required | Default | Description |
514
+ | ---------------------- | -------- | ------- | ------------------------------------------------------------------------------------------- |
515
+ | `--watch` | no | `false` | Poll until every execution reaches a terminal state (completed/failed/cancelled), then exit |
516
+ | `--interval <seconds>` | no | `5` | Poll interval in seconds when --watch is set (default 5) |
517
+ | `--max-wait <seconds>` | no | `1800` | Hard ceiling for --watch in seconds (default 1800 = 30 min) |
518
+ | `--base-url <url>` | no | | Server base URL |
519
+ | `--json` | no | | Output the raw server response as JSON |
520
+
521
+ ### `eigenpal workflow experiment results [options] <workflowId> [batchId]`
522
+
523
+ Download eval results in CSV or JSON.
524
+
525
+ ### Arguments
526
+
527
+ | Name | Required | Variadic | Description |
528
+ | ------------ | -------- | -------- | ----------- |
529
+ | `workflowId` | yes | no | |
530
+ | `batchId` | no | no | |
531
+
532
+ ### Options
533
+
534
+ | Flag | Required | Default | Description |
535
+ | ---------------------- | -------- | ------- | -------------------------------------------------------- |
536
+ | `--format <csv\|json>` | yes | | Output format |
537
+ | `--out <path>` | no | | Output file. When omitted, the binary streams to stdout. |
538
+ | `--base-url <url>` | no | | Server base URL |
539
+
540
+ ### `eigenpal workflow experiment compare [options] <batchIdA> <batchIdB>`
541
+
542
+ Side-by-side eval-score diff between two experiment batches. Highlights regressions vs improvements per (example, evaluator) and prints aggregate stats.
543
+
544
+ ### Arguments
545
+
546
+ | Name | Required | Variadic | Description |
547
+ | ---------- | -------- | -------- | ----------- |
548
+ | `batchIdA` | yes | no | |
549
+ | `batchIdB` | yes | no | |
550
+
551
+ ### Options
552
+
553
+ | Flag | Required | Default | Description |
554
+ | ------------------------------------------------------ | -------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
555
+ | `--sort <abs-delta-desc\|delta-asc\|delta-desc\|name>` | no | `"abs-delta-desc"` | Row sort order. Default sorts by absolute delta descending so the biggest movers (regressions and improvements alike) are at the top. |
556
+ | `--regression-threshold <n>` | no | `0.05` | Δ < -threshold is flagged as a regression with ⚠ (default 0.05) |
557
+ | `--base-url <url>` | no | | Server base URL |
558
+ | `--json` | no | | Output the raw server response as JSON |
559
+
560
+ ### `eigenpal workflow execution run [options] <workflow-slug> [examples...]`
561
+
562
+ Run a workflow against one or more local examples on the server. Builds the input payload from the local dataset folder.
563
+
564
+ ### Arguments
565
+
566
+ | Name | Required | Variadic | Description |
567
+ | --------------- | -------- | -------- | ----------- |
568
+ | `workflow-slug` | yes | no | |
569
+ | `examples` | no | yes | |
570
+
571
+ ### Options
572
+
573
+ | Flag | Required | Default | Description |
574
+ | ------------------- | -------- | ------- | -------------------------------------------- |
575
+ | `--dir <dir>` | no | | Local eigenpal directory |
576
+ | `--concurrency <n>` | no | | Max examples to run in parallel (default: 3) |
577
+ | `--base-url <url>` | no | | Server base URL |
578
+ | `--json` | no | | Output the raw server response as JSON |
579
+
580
+ ### `eigenpal workflow execution get [options] <executionId>`
581
+
582
+ Fetch a single execution payload. Optionally narrow to one step.
583
+
584
+ ### Arguments
585
+
586
+ | Name | Required | Variadic | Description |
587
+ | ------------- | -------- | -------- | ----------- |
588
+ | `executionId` | yes | no | |
589
+
590
+ ### Options
591
+
592
+ | Flag | Required | Default | Description |
593
+ | ------------------- | -------- | ------------------------------- | ----------------------------------------------------- |
594
+ | `--step <name>` | no | | Show only this step (or comma-separated list) |
595
+ | `--include <kinds>` | no | `"input,output,error,duration"` | Comma-separated subset of input,output,error,duration |
596
+ | `--base-url <url>` | no | | Server base URL |
597
+ | `--json` | no | | Output the raw server response as JSON |
598
+
599
+ ### `eigenpal workflow execution list [options] <workflowId>`
600
+
601
+ List recent executions for a workflow.
602
+
603
+ ### Arguments
604
+
605
+ | Name | Required | Variadic | Description |
606
+ | ------------ | -------- | -------- | ----------- |
607
+ | `workflowId` | yes | no | |
608
+
609
+ ### Options
610
+
611
+ | Flag | Required | Default | Description |
612
+ | ------------------- | -------- | ------- | ---------------------------------------------------------------- |
613
+ | `--status <status>` | no | | Filter by status: pending\|running\|completed\|failed\|cancelled |
614
+ | `--limit <n>` | no | `50` | Page size |
615
+ | `--offset <n>` | no | `0` | Page offset |
616
+ | `--base-url <url>` | no | | Server base URL |
617
+ | `--json` | no | | Output the raw server response as JSON |
618
+
619
+ ### `eigenpal workflow execution watch [options] <executionId>`
620
+
621
+ Stream live status of an execution: vertical step list with adaptive polling (2s while transitioning, 5s steady, 30-min auto-detach). ASCII status badges; pipe-safe.
622
+
623
+ ### Arguments
624
+
625
+ | Name | Required | Variadic | Description |
626
+ | ------------- | -------- | -------- | ----------- |
627
+ | `executionId` | yes | no | |
628
+
629
+ ### Options
630
+
631
+ | Flag | Required | Default | Description |
632
+ | ---------------------- | -------- | ------- | ---------------------------------------------- |
633
+ | `--max-wait <seconds>` | no | `1800` | Detach after N seconds (default 1800 = 30 min) |
634
+ | `--base-url <url>` | no | | Server base URL |
635
+
636
+ ### `eigenpal workflow execution compare [options] <executionA> <executionB>`
637
+
638
+ Side-by-side comparison of two executions. Highlights status / duration / output diffs per step.
639
+
640
+ ### Arguments
641
+
642
+ | Name | Required | Variadic | Description |
643
+ | ------------ | -------- | -------- | ----------- |
644
+ | `executionA` | yes | no | |
645
+ | `executionB` | yes | no | |
646
+
647
+ ### Options
648
+
649
+ | Flag | Required | Default | Description |
650
+ | ------------------ | -------- | ------- | ------------------------------- |
651
+ | `--step <name>` | no | | Restrict comparison to one step |
652
+ | `--base-url <url>` | no | | Server base URL |
653
+
654
+ ### `eigenpal workflow execution cancel [options] <executionId>`
655
+
656
+ Request cancellation of an execution. Idempotent — already-terminal executions exit 0 with an info line.
657
+
658
+ ### Arguments
659
+
660
+ | Name | Required | Variadic | Description |
661
+ | ------------- | -------- | -------- | ----------- |
662
+ | `executionId` | yes | no | |
663
+
664
+ ### Options
665
+
666
+ | Flag | Required | Default | Description |
667
+ | ------------------ | -------- | ------- | --------------------------------------------------------------------- |
668
+ | `--yes` | no | | Required for non-TTY shells (CI, pipes). Acts immediately, no prompt. |
669
+ | `--base-url <url>` | no | | Server base URL |
670
+ | `--json` | no | | Output the raw server response as JSON |
671
+
672
+ ### `eigenpal workflow versions list [options] <workflowId>`
673
+
674
+ List historical workflow versions, newest first.
675
+
676
+ ### Arguments
677
+
678
+ | Name | Required | Variadic | Description |
679
+ | ------------ | -------- | -------- | ----------- |
680
+ | `workflowId` | yes | no | |
681
+
682
+ ### Options
683
+
684
+ | Flag | Required | Default | Description |
685
+ | ------------------ | -------- | ------- | -------------------------------------- |
686
+ | `--limit <n>` | no | `50` | Page size |
687
+ | `--offset <n>` | no | `0` | Page offset |
688
+ | `--base-url <url>` | no | | Server base URL |
689
+ | `--json` | no | | Output the raw server response as JSON |
690
+
691
+ ### `eigenpal workflow versions restore [options] <workflowId> <versionId>`
692
+
693
+ Restore the workflow to a previous version.
694
+
695
+ ### Arguments
696
+
697
+ | Name | Required | Variadic | Description |
698
+ | ------------ | -------- | -------- | ----------- |
699
+ | `workflowId` | yes | no | |
700
+ | `versionId` | yes | no | |
701
+
702
+ ### Options
703
+
704
+ | Flag | Required | Default | Description |
705
+ | ------------------ | -------- | ------- | -------------------------------------- |
706
+ | `--base-url <url>` | no | | Server base URL |
707
+ | `--json` | no | | Output the raw server response as JSON |
708
+
709
+ ### `eigenpal workflow step-type list [options]`
710
+
711
+ List every step type the deployment supports.
712
+
713
+ ### Options
714
+
715
+ | Flag | Required | Default | Description |
716
+ | ------------------ | -------- | ------- | -------------------------------------- |
717
+ | `--search <q>` | no | | Filter |
718
+ | `--limit <n>` | no | `50` | Page size |
719
+ | `--offset <n>` | no | `0` | Page offset |
720
+ | `--base-url <url>` | no | | Server base URL |
721
+ | `--json` | no | | Output the raw server response as JSON |
722
+
723
+ ### `eigenpal workflow step-type get [options] <type>`
724
+
725
+ Return the full schema and behavioral docs for one step type.
726
+
727
+ ### Arguments
728
+
729
+ | Name | Required | Variadic | Description |
730
+ | ------ | -------- | -------- | ----------- |
731
+ | `type` | yes | no | |
732
+
733
+ ### Options
734
+
735
+ | Flag | Required | Default | Description |
736
+ | -------------- | -------- | ------- | ------------- |
737
+ | `--out <path>` | no | | Write to file |
738
+
739
+ ### `eigenpal workflow evaluator-type list [options]`
740
+
741
+ List every evaluator type with a one-line description.
742
+
743
+ ### Options
744
+
745
+ | Flag | Required | Default | Description |
746
+ | ------------------ | -------- | ------- | -------------------------------------- |
747
+ | `--search <q>` | no | | Filter by type, name, or description |
748
+ | `--limit <n>` | no | `50` | Page size |
749
+ | `--offset <n>` | no | `0` | Page offset |
750
+ | `--base-url <url>` | no | | Server base URL |
751
+ | `--json` | no | | Output the raw server response as JSON |
752
+
753
+ ### `eigenpal workflow evaluator-type get [options] <type>`
754
+
755
+ Fetch the JSON Schema for one evaluator type. Pipe through `jq` to inspect specific fields.
756
+
757
+ ### Arguments
758
+
759
+ | Name | Required | Variadic | Description |
760
+ | ------ | -------- | -------- | ----------- |
761
+ | `type` | yes | no | |
762
+
763
+ ### Options
764
+
765
+ | Flag | Required | Default | Description |
766
+ | -------------- | -------- | ------- | ------------- |
767
+ | `--out <path>` | no | | Write to file |
768
+
769
+ ### `eigenpal workflow step exec [options] <type>`
770
+
771
+ Run one step locally with sample inputs and print its output as JSON. <type> is any value from `workflow step-type list`; only types with a local runner actually execute (today: transform.script, ai.extract).
772
+
773
+ ### Arguments
774
+
775
+ | Name | Required | Variadic | Description |
776
+ | ------ | -------- | -------- | ----------- |
777
+ | `type` | yes | no | |
778
+
779
+ ### Options
780
+
781
+ | Flag | Required | Default | Description |
782
+ | ------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
783
+ | `--config-json <json>` | no | | Full step config as a JSON literal. Mutually exclusive with --config-file. |
784
+ | `--config-file <path\|->` | no | | Full step config from a JSON file (or `-` for stdin). Mutually exclusive with --config-json. |
785
+ | `--inputs <k=v...>` | no | `[]` | Repeatable. Value can be `@path` (file contents, JSON-parsed when applicable) or a literal string. Merges into the config `inputs` map for transform.script; provides the `input` for ai.extract when set as `input=…`. |
786
+ | `--output-schema <path>` | no | | Optional JSON Schema. Validates the step output; defaults to the step type’s built-in `outputSchema` from STEP_SCHEMAS when omitted. |
787
+ | `--timeout-ms <n>` | no | | Override transform.script wall-clock cap (default 5000) |
788
+ | `--memory-mb <n>` | no | | Override transform.script heap cap in MB (default 10) |