@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,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,4 @@
1
+ {
2
+ "length": 13,
3
+ "original": "Hello, world."
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "text": "Hello, world."
3
+ }
@@ -0,0 +1,5 @@
1
+ evaluators:
2
+ - name: exact-match
3
+ type: exact-diff
4
+ config:
5
+ passThreshold: 1.0
@@ -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 |