@eigenpal/cli 0.0.1 → 0.4.2
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/CHANGELOG.md +441 -0
- package/LICENSE +201 -0
- package/README.md +60 -2
- package/dist/cli.js +162295 -0
- package/dist/skill/SKILL.md +366 -0
- package/dist/skill/examples/hello-world/dataset/examples/sample/expected/output.json +4 -0
- package/dist/skill/examples/hello-world/dataset/examples/sample/input/arguments.json +3 -0
- package/dist/skill/examples/hello-world/evaluators.yaml +5 -0
- package/dist/skill/examples/hello-world/workflow.yaml +28 -0
- package/dist/skill/reference/cli/agent.md +7 -0
- package/dist/skill/reference/cli/auth.md +75 -0
- package/dist/skill/reference/cli/completion.md +13 -0
- package/dist/skill/reference/cli/init.md +63 -0
- package/dist/skill/reference/cli/skill.md +79 -0
- package/dist/skill/reference/cli/status.md +14 -0
- package/dist/skill/reference/cli/workflow.md +788 -0
- package/dist/skill/reference/dataset-format.md +251 -0
- package/dist/skill/reference/debugging.md +280 -0
- package/dist/skill/reference/evaluators.md +210 -0
- package/dist/skill/reference/step-exec.md +164 -0
- package/dist/skill/reference/step-types.md +519 -0
- package/dist/skill/reference/workflow-yaml.md +304 -0
- package/dist/templates/blank/README.md +22 -0
- package/dist/templates/blank/dataset/examples/sample/expected/output.json +4 -0
- package/dist/templates/blank/dataset/examples/sample/input/arguments.json +3 -0
- package/dist/templates/blank/evaluators.yaml +9 -0
- package/dist/templates/blank/workflow.yaml +39 -0
- package/dist/templates/pdf-extraction/README.md +20 -0
- package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/README.md +5 -0
- package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/expected/output.json +6 -0
- package/dist/templates/pdf-extraction/dataset/examples/sample-invoice/input/arguments.json +1 -0
- package/dist/templates/pdf-extraction/evaluators.yaml +5 -0
- package/dist/templates/pdf-extraction/workflow.yaml +38 -0
- package/dist/templates/text-classification/README.md +8 -0
- package/dist/templates/text-classification/dataset/examples/negative/expected/output.json +3 -0
- package/dist/templates/text-classification/dataset/examples/negative/input/arguments.json +3 -0
- package/dist/templates/text-classification/dataset/examples/positive/expected/output.json +3 -0
- package/dist/templates/text-classification/dataset/examples/positive/input/arguments.json +3 -0
- package/dist/templates/text-classification/evaluators.yaml +6 -0
- package/dist/templates/text-classification/workflow.yaml +35 -0
- package/package.json +60 -15
- package/index.js +0 -4
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eigenpal
|
|
3
|
+
description: Build, run, and iterate on Eigenpal workflows from the command line. The workflow engine, evaluators, dataset folders, and execution introspection are all controlled via `eigenpal` subcommands. The server is the source of truth — local files are inputs you push.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: Requires eigenpal CLI.
|
|
6
|
+
metadata:
|
|
7
|
+
author: eigenpal
|
|
8
|
+
version: '1.0'
|
|
9
|
+
generatedBy: 'eigenpal@__CLI_VERSION__'
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Eigenpal
|
|
13
|
+
|
|
14
|
+
Eigenpal is a workflow engine. A workflow is a DAG of steps
|
|
15
|
+
(parsing, extraction, scripting, etc.). Iteration happens locally with the
|
|
16
|
+
`eigenpal` CLI; **execution + datasets + experiments live on the server**.
|
|
17
|
+
|
|
18
|
+
This skill is the schema reference. The CLI does the actual work.
|
|
19
|
+
|
|
20
|
+
## Iteration loop (end-to-end)
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
1. eigenpal init workflow my-extraction --template pdf-extraction
|
|
24
|
+
2. edit workflow.yaml + evaluators.yaml + dataset/examples/*/expected/output.json
|
|
25
|
+
3. eigenpal workflow validate # local: all three checks, no server contact
|
|
26
|
+
4. eigenpal workflow execution run my-extraction sample-name # one-off run for debugging
|
|
27
|
+
5. eigenpal workflow push --file workflow.yaml # creates wf_… on first push
|
|
28
|
+
6. eigenpal workflow evaluators push <wf-id> --file evaluators.yaml
|
|
29
|
+
7. eigenpal workflow dataset push <wf-id> --file dataset/ --mode replace
|
|
30
|
+
8. eigenpal workflow experiment run <wf-id> # → { batchId, executionIds }
|
|
31
|
+
9. eigenpal workflow experiment status <wf-id> <batch-id>
|
|
32
|
+
10. eigenpal workflow experiment results <wf-id> <batch-id> --format csv --out r.csv
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Common recipes
|
|
36
|
+
|
|
37
|
+
### From zero — new workflow from a template
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
eigenpal init workflow invoices --template pdf-extraction # scaffolds workflow.yaml + dataset/ + evaluators.yaml
|
|
41
|
+
cd invoices
|
|
42
|
+
eigenpal workflow validate # confirm scaffold is valid before pushing
|
|
43
|
+
eigenpal workflow push --file workflow.yaml
|
|
44
|
+
# → ✓ Created wf_abc123 (`eigenpal workflow list` to see it again)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Author + validate a workflow
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Pick the right step types BEFORE writing the workflow
|
|
51
|
+
eigenpal workflow step-type list --search extract
|
|
52
|
+
eigenpal workflow step-type get ai.extract | jq '.configSchema.properties'
|
|
53
|
+
|
|
54
|
+
# Validate locally (zod parse + step-type lookup, no server)
|
|
55
|
+
eigenpal workflow validate ./workflow.yaml
|
|
56
|
+
|
|
57
|
+
# Push (creates on first call; same name + new version appends to history)
|
|
58
|
+
eigenpal workflow push --file workflow.yaml --workflow-id wf_abc123
|
|
59
|
+
|
|
60
|
+
# Update an existing workflow with explicit / auto-bumped semver:
|
|
61
|
+
eigenpal workflow push --file workflow.yaml --workflow-id wf_abc123 --set-version 2.0.0
|
|
62
|
+
eigenpal workflow push --file workflow.yaml --workflow-id wf_abc123 --bump patch # patch | minor | major
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The validator emits structured field-path errors with a hint pointing at
|
|
66
|
+
`step-type get <type>` for the offending step. Follow the hint.
|
|
67
|
+
|
|
68
|
+
Version bumping rules (`--bump` vs `--set-version` vs YAML `version:`)
|
|
69
|
+
live in [`reference/workflow-yaml.md`](reference/workflow-yaml.md#validate-before-pushing).
|
|
70
|
+
|
|
71
|
+
### Iterate fast on one step (no server, no DAG)
|
|
72
|
+
|
|
73
|
+
Tightest possible loop — local sandbox, milliseconds per run. Today
|
|
74
|
+
covers `transform.script` and `ai.extract`. For any other step type,
|
|
75
|
+
fall back to `workflow execution run` against the server.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
eigenpal workflow step exec transform.script \
|
|
79
|
+
--config-json '{"code":"return items.reduce((s,i)=>s+i.v,0)"}' \
|
|
80
|
+
--inputs items=@items.json
|
|
81
|
+
# 3
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
See [`reference/step-exec.md`](reference/step-exec.md) for the full
|
|
85
|
+
grammar — inputs, config, output schema, exit codes.
|
|
86
|
+
|
|
87
|
+
### Cancel a long-running execution
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
eigenpal workflow execution cancel exec_abc # TTY: silent; CI: needs --yes
|
|
91
|
+
eigenpal workflow execution cancel exec_abc --yes # CI / pipes
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The worker finishes the current step, then stops — the check happens
|
|
95
|
+
between every step transition, including inside `control.foreach` /
|
|
96
|
+
`control.parallel` / `control.block` bodies. Already-terminal
|
|
97
|
+
executions (completed/failed/cancelled) exit 0 with an info line. Safe
|
|
98
|
+
to retry.
|
|
99
|
+
|
|
100
|
+
### Compare two experiment batches (no workflow id needed)
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
eigenpal workflow experiment compare evb_old evb_new --regression-threshold 0.05
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Unlike its siblings, `compare` takes no `<wf-id>` — the server resolves
|
|
107
|
+
the owning workflow from each batch id. Both batches must live in the
|
|
108
|
+
same workflow within your tenant. See [`reference/debugging.md`](reference/debugging.md#6-compare-two-experiment-batches)
|
|
109
|
+
for sort flags + `--json` shape.
|
|
110
|
+
|
|
111
|
+
### Author + validate evaluators
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Inspect what evaluator types exist + their config shape
|
|
115
|
+
cat packages/cli/src/skill/reference/evaluators.md # or read this skill's `reference/`
|
|
116
|
+
|
|
117
|
+
# Validate locally (every evaluator entry parsed against its discriminated-union schema)
|
|
118
|
+
eigenpal workflow evaluators validate ./evaluators.yaml
|
|
119
|
+
|
|
120
|
+
# Push (overwrites the workflow's evaluator config)
|
|
121
|
+
eigenpal workflow evaluators push <wf-id> --file evaluators.yaml
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Build + validate + upload a dataset
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Folder layout: dataset/examples/<name>/{input/arguments.json, input/<file-arg>/<file>, expected/output.json, meta.json}
|
|
128
|
+
eigenpal workflow dataset validate ./dataset # rejects bad folder names, arg-name collisions, etc.
|
|
129
|
+
|
|
130
|
+
# Push. `replace` wipes server-side examples for this workflow first; `append` adds.
|
|
131
|
+
eigenpal workflow dataset push <wf-id> --file ./dataset --mode replace
|
|
132
|
+
# Watch the `expectedSet` count in the final NDJSON `done` event — if 0, evals run un-graded.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
To inspect or round-trip the server's current dataset:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
eigenpal workflow dataset list <wf-id>
|
|
139
|
+
eigenpal workflow dataset pull <wf-id> --out current.zip # round-trip back to local
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Edit one example without re-uploading the whole dataset
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Inspect one example end-to-end (triggerInput + expectedOutput + metadata):
|
|
146
|
+
eigenpal workflow dataset example get <wf-id> <example-id>
|
|
147
|
+
eigenpal workflow dataset example get <wf-id> <example-id> --json | jq '.expectedOutput'
|
|
148
|
+
|
|
149
|
+
# Capture a corrected output as the new ground truth (the most common one):
|
|
150
|
+
# 1. Look at what the workflow returned
|
|
151
|
+
eigenpal workflow execution get exec_… --json | jq '.output.data' > /tmp/correct.json
|
|
152
|
+
# 2. Patch that example's expected output in place
|
|
153
|
+
eigenpal workflow dataset example update <wf-id> <example-id> \
|
|
154
|
+
--expected-file /tmp/correct.json
|
|
155
|
+
|
|
156
|
+
# Add one new example to a known dataset:
|
|
157
|
+
eigenpal workflow dataset example create <wf-id> \
|
|
158
|
+
--name missing-required-field \
|
|
159
|
+
--input-json '{"language":"en"}' \
|
|
160
|
+
--expected-file /tmp/expected.json \
|
|
161
|
+
--annotation "edge case: required field absent from input"
|
|
162
|
+
|
|
163
|
+
# Drop a bad example by id (CI requires --yes):
|
|
164
|
+
eigenpal workflow dataset example delete <wf-id> <example-id> --yes
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
`example update` is a partial PATCH — any flag you omit is left alone. Pass
|
|
168
|
+
`--annotation ""` to clear an annotation. For bulk changes, edit the local
|
|
169
|
+
dataset folder and re-push with `dataset push --mode replace`.
|
|
170
|
+
|
|
171
|
+
### Run an experiment + collect results
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Kick off — runs every example in the dataset against every evaluator.
|
|
175
|
+
eigenpal workflow experiment run <wf-id> # → { batchId, executionIds }
|
|
176
|
+
|
|
177
|
+
# Or restrict to one example:
|
|
178
|
+
eigenpal workflow experiment run <wf-id> --example-id evx_…
|
|
179
|
+
|
|
180
|
+
# Poll until done. `experiment status` auto-detaches after 30 min; just re-run.
|
|
181
|
+
eigenpal workflow experiment status <wf-id> <batch-id>
|
|
182
|
+
|
|
183
|
+
# Pull results — `--out` writes the file directly from the server's signed-URL
|
|
184
|
+
# storage, so large CSVs don't go through the CLI process.
|
|
185
|
+
eigenpal workflow experiment results <wf-id> <batch-id> --format csv --out r.csv
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Debug a failing workflow
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# 1. Reproduce locally with the live step list
|
|
192
|
+
eigenpal workflow execution run <workflow-name> <example-name>
|
|
193
|
+
|
|
194
|
+
# 2. Or pull a recorded failure from the server
|
|
195
|
+
eigenpal workflow execution list <wf-id> --status failed --limit 5
|
|
196
|
+
eigenpal workflow execution get exec_… # full payload, all steps
|
|
197
|
+
eigenpal workflow execution get exec_… --step extract --include input,output,error
|
|
198
|
+
|
|
199
|
+
# 3. Compare two runs (e.g. before/after a workflow change)
|
|
200
|
+
eigenpal workflow execution compare <exec-a> <exec-b>
|
|
201
|
+
|
|
202
|
+
# 4. Wait for a kicked-off run to finish (use this whenever you need
|
|
203
|
+
# to block until terminal — adaptive polling, 30-min auto-detach)
|
|
204
|
+
eigenpal workflow execution watch exec_…
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
See [`reference/debugging.md`](reference/debugging.md) for common failure
|
|
208
|
+
modes (`validation_failed`, `template_resolution_failed`, `script_timeout`,
|
|
209
|
+
`step_type_unknown`) and how to skip flaky external steps via
|
|
210
|
+
`meta.json` overrides.
|
|
211
|
+
|
|
212
|
+
## Output convention
|
|
213
|
+
|
|
214
|
+
Every command splits its output:
|
|
215
|
+
|
|
216
|
+
- **stdout** = data — JSON payloads, table rows, file contents from
|
|
217
|
+
`pull` / `experiment results`. Pipe-safe.
|
|
218
|
+
- **stderr** = status — `✓` / `✗` / `ℹ` / `!` lines. Silenced by
|
|
219
|
+
`-q` / `--quiet` (errors and warnings always fire; stdout never
|
|
220
|
+
silenced).
|
|
221
|
+
|
|
222
|
+
The `--json` flag (on every `list` / `get` / mutating command) flips
|
|
223
|
+
the human-readable table on stdout to the raw server payload — pipe
|
|
224
|
+
through real `jq` to project:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
eigenpal workflow execution list wf_abc --json | jq '.data[0].id'
|
|
228
|
+
eigenpal workflow execution get exec_abc --json | jq '.stepExecutions[].status'
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Exit codes
|
|
232
|
+
|
|
233
|
+
| Code | Meaning |
|
|
234
|
+
| --- | --- |
|
|
235
|
+
| 0 | Success. |
|
|
236
|
+
| 1 | Runtime error — network, server 5xx, command-specific failure (e.g. `experiment status` (with or without `--watch`) reports a terminal batch where at least one execution failed or was cancelled). |
|
|
237
|
+
| 2 | Misuse or recoverable failure — bad flag, `step exec --output-schema` violation, `execution watch --max-wait` deadline, `step exec` against an unsupported step type. |
|
|
238
|
+
|
|
239
|
+
Exit 2 means "fix your invocation and re-run." Exit 1 means something
|
|
240
|
+
broke upstream — check the error.
|
|
241
|
+
|
|
242
|
+
## Where the schemas live
|
|
243
|
+
|
|
244
|
+
The CLI ships JSON Schema for every step type and every evaluator type.
|
|
245
|
+
Don't guess fields — introspect:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
eigenpal workflow step-type list # full step catalog
|
|
249
|
+
eigenpal workflow step-type get ai.extract # config + output schema
|
|
250
|
+
eigenpal workflow evaluator-type list # full evaluator catalog
|
|
251
|
+
eigenpal workflow evaluator-type get llm-judge # config schema
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
For workflow / evaluators / dataset shape, see this skill's `reference/`:
|
|
255
|
+
|
|
256
|
+
- [`reference/workflow-yaml.md`](reference/workflow-yaml.md) — top-level shape, triggers, inputs, steps, output, template expressions
|
|
257
|
+
- [`reference/step-types.md`](reference/step-types.md) — step-type catalog + when to reach for each
|
|
258
|
+
- [`reference/step-exec.md`](reference/step-exec.md) — local single-step iteration (`workflow step exec`) — inputs, config, output schema, exit codes
|
|
259
|
+
- [`reference/dataset-format.md`](reference/dataset-format.md) — `dataset/examples/<name>/{input,expected,meta}` folder convention
|
|
260
|
+
- [`reference/evaluators.md`](reference/evaluators.md) — evaluators.yaml schema + judge patterns
|
|
261
|
+
- [`reference/debugging.md`](reference/debugging.md) — execution introspection + common failures
|
|
262
|
+
- [`reference/cli/`](reference/cli/) — full flag reference per command (autogenerated from the live Commander tree, never lies)
|
|
263
|
+
|
|
264
|
+
## Validation errors carry hints
|
|
265
|
+
|
|
266
|
+
Every server-side validation failure returns a structured envelope:
|
|
267
|
+
|
|
268
|
+
```json
|
|
269
|
+
{
|
|
270
|
+
"issues": [
|
|
271
|
+
{ "field": "steps.2.config.passThreshold",
|
|
272
|
+
"message": "Required, got undefined", "code": "invalid_value" }
|
|
273
|
+
],
|
|
274
|
+
"hint": "Failing step is type `eval.llm-judge`. Run `eigenpal workflow step-type get eval.llm-judge` to inspect its config schema."
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
The CLI renders this with the field column aligned and the hint inline —
|
|
279
|
+
follow the hint, the schema lookup is one command away.
|
|
280
|
+
|
|
281
|
+
## Don't reach for
|
|
282
|
+
|
|
283
|
+
- `eval-local` / similar local-mirror commands — they don't exist. Drive
|
|
284
|
+
the dataset by editing the local folder and pushing with
|
|
285
|
+
`workflow dataset push --mode replace`, OR use the per-example CRUD
|
|
286
|
+
(`dataset example {create,update,delete,get}`) when you only need to
|
|
287
|
+
flip one row.
|
|
288
|
+
- The `manifest.json` dataset format — legacy, the import endpoint rejects
|
|
289
|
+
it. Always use the folder convention.
|
|
290
|
+
|
|
291
|
+
## CLI surface
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Auth + tenant switching
|
|
295
|
+
eigenpal auth login # add a profile (or update existing tenant's)
|
|
296
|
+
eigenpal auth list # see all profiles, current marked ●
|
|
297
|
+
eigenpal auth use [profile] # switch active (interactive picker if no arg)
|
|
298
|
+
eigenpal status # active tenant, user, key id, workflow count
|
|
299
|
+
|
|
300
|
+
# Definition
|
|
301
|
+
eigenpal workflow list
|
|
302
|
+
eigenpal workflow push --file workflow.yaml [--workflow-id <wf-id>]
|
|
303
|
+
eigenpal workflow pull <wf-id>
|
|
304
|
+
eigenpal workflow validate [path]
|
|
305
|
+
|
|
306
|
+
# Evaluators
|
|
307
|
+
eigenpal workflow evaluators push <wf-id> --file evaluators.yaml
|
|
308
|
+
eigenpal workflow evaluators pull <wf-id>
|
|
309
|
+
eigenpal workflow evaluators validate [path]
|
|
310
|
+
|
|
311
|
+
# Dataset
|
|
312
|
+
eigenpal workflow dataset push <wf-id> --file dataset/ [--mode {append|replace}] # default: append
|
|
313
|
+
eigenpal workflow dataset pull <wf-id> --out dataset.zip
|
|
314
|
+
eigenpal workflow dataset list <wf-id>
|
|
315
|
+
eigenpal workflow dataset validate [path]
|
|
316
|
+
eigenpal workflow dataset example create <wf-id> --name <n> [--input-file] [--expected-file] [--annotation]
|
|
317
|
+
eigenpal workflow dataset example update <wf-id> <example-id> [--name] [--input-file] [--expected-file] [--annotation] [--row-order]
|
|
318
|
+
eigenpal workflow dataset example delete <wf-id> <example-id> --yes
|
|
319
|
+
eigenpal workflow dataset example get <wf-id> <example-id> # full row + metadata
|
|
320
|
+
|
|
321
|
+
# All-in-one validation against the templated project layout
|
|
322
|
+
eigenpal workflow validate # ./workflow.yaml + ./evaluators.yaml + ./dataset/
|
|
323
|
+
|
|
324
|
+
# Local artifacts
|
|
325
|
+
eigenpal workflow clear-local # delete local execution artifacts (no server impact)
|
|
326
|
+
|
|
327
|
+
# Experiments (batch eval runs)
|
|
328
|
+
eigenpal workflow experiment run <wf-id> [--example-id <id> ...]
|
|
329
|
+
eigenpal workflow experiment status <wf-id> <batch-id> [--watch] # exit 1 on terminal w/ failures, 2 on --max-wait
|
|
330
|
+
eigenpal workflow experiment results <wf-id> [batch-id] --format {csv|json} --out r.csv
|
|
331
|
+
eigenpal workflow experiment list <wf-id>
|
|
332
|
+
eigenpal workflow experiment compare <batch-a> <batch-b> [--regression-threshold] [--sort] # no --workflow-id
|
|
333
|
+
|
|
334
|
+
# Step-type / evaluator-type introspection
|
|
335
|
+
eigenpal workflow step-type list
|
|
336
|
+
eigenpal workflow step-type get <type>
|
|
337
|
+
eigenpal workflow evaluator-type list
|
|
338
|
+
eigenpal workflow evaluator-type get <type>
|
|
339
|
+
|
|
340
|
+
# Local single-step iteration (no server)
|
|
341
|
+
eigenpal workflow step exec <type> [--config-json | --config-file] [--inputs k=v...] [--output-schema]
|
|
342
|
+
|
|
343
|
+
# Execution (one-off run + read-side debugging + cancellation)
|
|
344
|
+
eigenpal workflow execution run <workflow-slug> [examples...]
|
|
345
|
+
eigenpal workflow execution get <exec-id>
|
|
346
|
+
eigenpal workflow execution list <wf-id> [--status running|failed|completed]
|
|
347
|
+
eigenpal workflow execution watch <exec-id> # 2s/5s adaptive polling
|
|
348
|
+
eigenpal workflow execution compare <exec-a> <exec-b>
|
|
349
|
+
eigenpal workflow execution cancel <exec-id> # tells the worker to stop between steps; safe to retry
|
|
350
|
+
|
|
351
|
+
# Versions
|
|
352
|
+
eigenpal workflow versions list <wf-id> # pushed semver history (newest first)
|
|
353
|
+
eigenpal workflow versions restore <wf-id> <version-id> # re-activate a prior version as the live one
|
|
354
|
+
|
|
355
|
+
# Tooling
|
|
356
|
+
eigenpal skill install # interactive multiselect for Claude Code, Cursor, …
|
|
357
|
+
eigenpal skill uninstall [toolIds...] # name one or more tools, or pass --all
|
|
358
|
+
eigenpal skill list # show what's installed where
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
`eigenpal --help` for the grouped overview, `eigenpal <command> --help`
|
|
362
|
+
for any specific command. The full per-command flag reference is also
|
|
363
|
+
bundled at [`reference/cli/`](reference/cli/) (autogenerated from the
|
|
364
|
+
live Commander tree, so it never lies). Read those when you need the
|
|
365
|
+
exact spelling / default / data type for a flag without round-tripping
|
|
366
|
+
to `--help`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: hello-world
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: Smallest possible workflow — echoes the input back through transform.script.
|
|
4
|
+
|
|
5
|
+
triggerMethods:
|
|
6
|
+
- api
|
|
7
|
+
|
|
8
|
+
inputs:
|
|
9
|
+
- name: text
|
|
10
|
+
type: string
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: echo
|
|
14
|
+
type: transform.script
|
|
15
|
+
with:
|
|
16
|
+
inputs:
|
|
17
|
+
text: '{{ input.text }}'
|
|
18
|
+
code: |
|
|
19
|
+
return { length: text.length, original: text };
|
|
20
|
+
outputSchema:
|
|
21
|
+
type: object
|
|
22
|
+
properties:
|
|
23
|
+
length: { type: number }
|
|
24
|
+
original: { type: string }
|
|
25
|
+
|
|
26
|
+
output:
|
|
27
|
+
length: '{{ steps.echo.output.length }}'
|
|
28
|
+
original: '{{ steps.echo.output.original }}'
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# eigenpal agent
|
|
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
|
+
Agent (agentic process) operations — coming soon. Agent workflows live on the server today; CLI surface is reserved for future commands.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# eigenpal auth
|
|
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
|
+
Manage authentication. Credentials live in ~/.config/eigenpal/credentials.json as named profiles. Switch tenants with `auth use <name>` or set `EIGENPAL_PROFILE=<name>` for one shell.
|
|
8
|
+
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [Surface](#surface)
|
|
12
|
+
- [Commands](#commands)
|
|
13
|
+
- [Core](#core)
|
|
14
|
+
- [Details](#details)
|
|
15
|
+
- [`eigenpal auth login [options]`](#eigenpal-auth-login-options)
|
|
16
|
+
- [`eigenpal auth logout [options] [profile]`](#eigenpal-auth-logout-options-profile)
|
|
17
|
+
- [`eigenpal auth list [options]`](#eigenpal-auth-list-options)
|
|
18
|
+
- [`eigenpal auth use [options] [profile]`](#eigenpal-auth-use-options-profile)
|
|
19
|
+
|
|
20
|
+
## Surface
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
auth
|
|
24
|
+
├── login
|
|
25
|
+
├── logout [profile]
|
|
26
|
+
├── list
|
|
27
|
+
└── use [profile]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Commands
|
|
31
|
+
|
|
32
|
+
### Core
|
|
33
|
+
|
|
34
|
+
| Command | Description |
|
|
35
|
+
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
36
|
+
| `eigenpal auth login [options]` | Authenticate with Eigenpal. Opens a browser to create an API key, stores it under a profile named after the tenant, and makes that profile active. Re-running `login` against the same tenant updates the existing profile in place. |
|
|
37
|
+
| `eigenpal auth logout [options] [profile]` | Remove a profile from the credentials file. Defaults to the active profile if no name is given. After removal the next available profile becomes active. |
|
|
38
|
+
| `eigenpal auth list [options]` | List configured profiles. The active one is marked ● — switch with `auth use`. |
|
|
39
|
+
| `eigenpal auth use [options] [profile]` | Switch the active profile (persistent across shells). Omit `[profile]` to pick from a list. For one-shot per-shell switching, set `EIGENPAL_PROFILE=<name>` instead. |
|
|
40
|
+
|
|
41
|
+
## Details
|
|
42
|
+
|
|
43
|
+
### `eigenpal auth login [options]`
|
|
44
|
+
|
|
45
|
+
Authenticate with Eigenpal. Opens a browser to create an API key, stores it under a profile named after the tenant, and makes that profile active. Re-running `login` against the same tenant updates the existing profile in place.
|
|
46
|
+
|
|
47
|
+
### Options
|
|
48
|
+
|
|
49
|
+
| Flag | Required | Default | Description |
|
|
50
|
+
| ------------------ | -------- | ------- | --------------- |
|
|
51
|
+
| `--base-url <url>` | no | | Server base URL |
|
|
52
|
+
|
|
53
|
+
### `eigenpal auth logout [options] [profile]`
|
|
54
|
+
|
|
55
|
+
Remove a profile from the credentials file. Defaults to the active profile if no name is given. After removal the next available profile becomes active.
|
|
56
|
+
|
|
57
|
+
### Arguments
|
|
58
|
+
|
|
59
|
+
| Name | Required | Variadic | Description |
|
|
60
|
+
| --------- | -------- | -------- | ----------- |
|
|
61
|
+
| `profile` | no | no | |
|
|
62
|
+
|
|
63
|
+
### `eigenpal auth list [options]`
|
|
64
|
+
|
|
65
|
+
List configured profiles. The active one is marked ● — switch with `auth use`.
|
|
66
|
+
|
|
67
|
+
### `eigenpal auth use [options] [profile]`
|
|
68
|
+
|
|
69
|
+
Switch the active profile (persistent across shells). Omit `[profile]` to pick from a list. For one-shot per-shell switching, set `EIGENPAL_PROFILE=<name>` instead.
|
|
70
|
+
|
|
71
|
+
### Arguments
|
|
72
|
+
|
|
73
|
+
| Name | Required | Variadic | Description |
|
|
74
|
+
| --------- | -------- | -------- | ----------- |
|
|
75
|
+
| `profile` | no | no | |
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# eigenpal completion
|
|
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
|
+
Print a shell completion script to stdout (supported shells: bash, zsh, fish). Pipe into the appropriate completion file for your shell — see the script header for install instructions.
|
|
8
|
+
|
|
9
|
+
### Arguments
|
|
10
|
+
|
|
11
|
+
| Name | Required | Variadic | Description |
|
|
12
|
+
| ------- | -------- | -------- | ----------- |
|
|
13
|
+
| `shell` | yes | no | |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# eigenpal init
|
|
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
|
+
Scaffold a new workflow project. Without `[name]`, scaffolds into the current directory using the cwd basename as the workflow name. With `[name]`, creates `./<name>/` and uses that as the slug. The flat layout matches what `workflow execution run <slug>` already discovers — no manual file moves.
|
|
8
|
+
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [Surface](#surface)
|
|
12
|
+
- [Commands](#commands)
|
|
13
|
+
- [Core](#core)
|
|
14
|
+
- [Details](#details)
|
|
15
|
+
- [`eigenpal init workflow [options] <name>`](#eigenpal-init-workflow-options-name)
|
|
16
|
+
- [`eigenpal init agent [options] <name>`](#eigenpal-init-agent-options-name)
|
|
17
|
+
|
|
18
|
+
## Surface
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
init
|
|
22
|
+
├── workflow <name>
|
|
23
|
+
└── agent <name>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Commands
|
|
27
|
+
|
|
28
|
+
### Core
|
|
29
|
+
|
|
30
|
+
| Command | Description |
|
|
31
|
+
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `eigenpal init workflow [options] <name>` | Alias of `eigenpal init <name>`. Kept so the `init {workflow,agent}` namespace stays visible — once the agent surface lights up, both kinds will live as siblings here. |
|
|
33
|
+
| `eigenpal init agent [options] <name>` | Scaffold a new agent (agentic process) project — coming soon. The namespace is reserved so the workflow / agent split is visible from day one. |
|
|
34
|
+
|
|
35
|
+
## Details
|
|
36
|
+
|
|
37
|
+
### `eigenpal init workflow [options] <name>`
|
|
38
|
+
|
|
39
|
+
Alias of `eigenpal init <name>`. Kept so the `init {workflow,agent}` namespace stays visible — once the agent surface lights up, both kinds will live as siblings here.
|
|
40
|
+
|
|
41
|
+
### Arguments
|
|
42
|
+
|
|
43
|
+
| Name | Required | Variadic | Description |
|
|
44
|
+
| ------ | -------- | -------- | ----------- |
|
|
45
|
+
| `name` | yes | no | |
|
|
46
|
+
|
|
47
|
+
### Options
|
|
48
|
+
|
|
49
|
+
| Flag | Required | Default | Description |
|
|
50
|
+
| ------------------- | -------- | ------- | -------------------------------------------------- |
|
|
51
|
+
| `--template <name>` | no | | Skip the picker; use this template |
|
|
52
|
+
| `--dir <dir>` | no | | Target directory (default: ./<name>) |
|
|
53
|
+
| `--yes` | no | | Non-interactive: pick the default template (blank) |
|
|
54
|
+
|
|
55
|
+
### `eigenpal init agent [options] <name>`
|
|
56
|
+
|
|
57
|
+
Scaffold a new agent (agentic process) project — coming soon. The namespace is reserved so the workflow / agent split is visible from day one.
|
|
58
|
+
|
|
59
|
+
### Arguments
|
|
60
|
+
|
|
61
|
+
| Name | Required | Variadic | Description |
|
|
62
|
+
| ------ | -------- | -------- | ----------- |
|
|
63
|
+
| `name` | yes | no | |
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# eigenpal skill
|
|
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
|
+
Install / uninstall / list the Eigenpal agent skill in your project (Claude Code, Cursor, Codex, Gemini CLI, Antigravity, OpenCode, Pi, Windsurf, GitHub Copilot).
|
|
8
|
+
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [Surface](#surface)
|
|
12
|
+
- [Commands](#commands)
|
|
13
|
+
- [Core](#core)
|
|
14
|
+
- [Details](#details)
|
|
15
|
+
- [`eigenpal skill install [options]`](#eigenpal-skill-install-options)
|
|
16
|
+
- [`eigenpal skill uninstall [options] [toolIds...]`](#eigenpal-skill-uninstall-options-toolids)
|
|
17
|
+
- [`eigenpal skill list [options]`](#eigenpal-skill-list-options)
|
|
18
|
+
|
|
19
|
+
## Surface
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
skill
|
|
23
|
+
├── install
|
|
24
|
+
├── uninstall [toolIds...]
|
|
25
|
+
└── list
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Commands
|
|
29
|
+
|
|
30
|
+
### Core
|
|
31
|
+
|
|
32
|
+
| Command | Description |
|
|
33
|
+
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
34
|
+
| `eigenpal skill install [options]` | Install the skill into one or more tools. Opens an interactive multiselect picker (toggle on to install, toggle off to uninstall) — pass `--tools` for non-interactive use. |
|
|
35
|
+
| `eigenpal skill uninstall [options] [toolIds...]` | Remove the skill from named tools (e.g. `skill uninstall claude cursor`), pass `--all` to wipe every install, or run with no args in a TTY for an interactive picker showing only installed tools. |
|
|
36
|
+
| `eigenpal skill list [options]` | Show every tool that has an Eigenpal skill installed in the current directory, with the CLI version that wrote it. |
|
|
37
|
+
|
|
38
|
+
## Details
|
|
39
|
+
|
|
40
|
+
### `eigenpal skill install [options]`
|
|
41
|
+
|
|
42
|
+
Install the skill into one or more tools. Opens an interactive multiselect picker (toggle on to install, toggle off to uninstall) — pass `--tools` for non-interactive use.
|
|
43
|
+
|
|
44
|
+
### Options
|
|
45
|
+
|
|
46
|
+
| Flag | Required | Default | Description |
|
|
47
|
+
| ----------------- | -------- | ------- | -------------------------------------------------------------------------------- |
|
|
48
|
+
| `--tools <ids>` | no | | Comma-separated tool ids. Skips the picker; tools not listed are uninstalled. |
|
|
49
|
+
| `--target <path>` | no | | Power-user override: install into a single custom directory and skip the picker. |
|
|
50
|
+
| `--force` | no | | Overwrite user-edited files without prompting |
|
|
51
|
+
| `--yes` | no | | Non-interactive mode (keep currently installed tools, keep user edits) |
|
|
52
|
+
|
|
53
|
+
### `eigenpal skill uninstall [options] [toolIds...]`
|
|
54
|
+
|
|
55
|
+
Remove the skill from named tools (e.g. `skill uninstall claude cursor`), pass `--all` to wipe every install, or run with no args in a TTY for an interactive picker showing only installed tools.
|
|
56
|
+
|
|
57
|
+
### Arguments
|
|
58
|
+
|
|
59
|
+
| Name | Required | Variadic | Description |
|
|
60
|
+
| --------- | -------- | -------- | ----------- |
|
|
61
|
+
| `toolIds` | no | yes | |
|
|
62
|
+
|
|
63
|
+
### Options
|
|
64
|
+
|
|
65
|
+
| Flag | Required | Default | Description |
|
|
66
|
+
| ----------------- | -------- | ------- | ------------------------------------------------------------------------------- |
|
|
67
|
+
| `--all` | no | | Uninstall every tool that has an Eigenpal skill installed |
|
|
68
|
+
| `--target <path>` | no | | Power-user override: uninstall a single custom directory (skips tool detection) |
|
|
69
|
+
| `--yes` | no | | Required for non-TTY shells; skips confirmation in TTY |
|
|
70
|
+
|
|
71
|
+
### `eigenpal skill list [options]`
|
|
72
|
+
|
|
73
|
+
Show every tool that has an Eigenpal skill installed in the current directory, with the CLI version that wrote it.
|
|
74
|
+
|
|
75
|
+
### Options
|
|
76
|
+
|
|
77
|
+
| Flag | Required | Default | Description |
|
|
78
|
+
| -------- | -------- | ------- | --------------------------------------------- |
|
|
79
|
+
| `--json` | no | | Emit machine-readable JSON instead of a table |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# eigenpal status
|
|
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
|
+
One-shot dashboard: server, active tenant, user, key id, workflow count. Pair with `--json` for scripting.
|
|
8
|
+
|
|
9
|
+
### Options
|
|
10
|
+
|
|
11
|
+
| Flag | Required | Default | Description |
|
|
12
|
+
| ------------------ | -------- | ------- | --------------------------------------------------------- |
|
|
13
|
+
| `--base-url <url>` | no | | Server base URL |
|
|
14
|
+
| `--json` | no | | Emit machine-readable JSON instead of human-readable text |
|