@eigenpal/cli 0.4.16 → 0.4.17
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/dist/cli.js +21 -3
- package/dist/skill/SKILL.md +17 -0
- package/dist/skill/reference/cli/workflow.md +21 -0
- package/dist/skill/reference/dataset-format.md +4 -0
- package/dist/skill/reference/debugging.md +14 -0
- package/dist/skill/reference/evaluators.md +4 -0
- package/dist/skill/reference/workflow-yaml.md +8 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -181229,7 +181229,7 @@ import { fileURLToPath as fileURLToPath6 } from "url";
|
|
|
181229
181229
|
// package.json
|
|
181230
181230
|
var package_default = {
|
|
181231
181231
|
name: "@eigenpal/cli",
|
|
181232
|
-
version: "0.4.
|
|
181232
|
+
version: "0.4.17",
|
|
181233
181233
|
description: "Eigenpal CLI — author and run document workflows from your terminal. Agent-ready.",
|
|
181234
181234
|
keywords: [
|
|
181235
181235
|
"eigenpal",
|
|
@@ -186400,7 +186400,8 @@ function registerWorkflowCoreCommands(parent) {
|
|
|
186400
186400
|
withBaseUrl(pullCmd).action(action(async (workflow2, opts) => {
|
|
186401
186401
|
const { client, workflowId } = await buildClientForWorkflow(workflow2, opts);
|
|
186402
186402
|
const result = await client.get(`/api/v1/workflows/${workflowId}`);
|
|
186403
|
-
|
|
186403
|
+
const yaml = result?.currentVersion?.yamlContent ?? "";
|
|
186404
|
+
await writeOrPrint(opts.out, yaml);
|
|
186404
186405
|
}));
|
|
186405
186406
|
const pushCmd = parent.command("push").description(descriptionFor("workflow_set_definition")).option("--file <yaml>", "Path to YAML file").option("--workflow-id <id>", "Update existing workflow (default: create new)").option("--bump <level>", "Auto-bump from the server's current version: patch | minor | major. Mutually exclusive with `--version` and with a top-level `version:` in the YAML.").option("--set-version <semver>", "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.)").addHelpText("after", `
|
|
186406
186407
|
Examples:
|
|
@@ -186498,7 +186499,11 @@ flag would otherwise shadow it. Validation failures come back as
|
|
|
186498
186499
|
throw new Error("--bump requires --workflow-id (need a current version to bump from). For a new workflow, use --set-version <X.Y.Z> or omit both.");
|
|
186499
186500
|
}
|
|
186500
186501
|
const yamlToSend = opts.setVersion && !extractWorkflowVersion(yamlOnDisk) ? spliceWorkflowVersion2(yamlOnDisk, opts.setVersion) : yamlOnDisk;
|
|
186501
|
-
const
|
|
186502
|
+
const createVersion = opts.setVersion ?? extractWorkflowVersion(yamlToSend) ?? undefined;
|
|
186503
|
+
const result = await client.post("/api/v1/workflows", {
|
|
186504
|
+
yaml: yamlToSend,
|
|
186505
|
+
...createVersion ? { version: createVersion } : {}
|
|
186506
|
+
});
|
|
186502
186507
|
if (opts.json) {
|
|
186503
186508
|
printJson2(result);
|
|
186504
186509
|
return;
|
|
@@ -186508,6 +186513,19 @@ flag would otherwise shadow it. Validation failures come back as
|
|
|
186508
186513
|
success2(`Created ${ui.bold(id2)} (v${ver})`);
|
|
186509
186514
|
}
|
|
186510
186515
|
}));
|
|
186516
|
+
const moveCmd = parent.command("move <workflow-id>").description("Move a workflow to a folder path, creating folders as needed").requiredOption("--folder <path>", "Target folder path (`/` for root)");
|
|
186517
|
+
addJsonFlag(withBaseUrl(moveCmd)).action(action(async (workflow2, opts) => {
|
|
186518
|
+
const { client, workflowId } = await buildClientForWorkflow(workflow2, opts);
|
|
186519
|
+
const result = await client.patch(`/api/v1/workflows/${workflowId}`, {
|
|
186520
|
+
folderPath: opts.folder
|
|
186521
|
+
});
|
|
186522
|
+
if (opts.json) {
|
|
186523
|
+
printJson2(result);
|
|
186524
|
+
return;
|
|
186525
|
+
}
|
|
186526
|
+
const target = opts.folder.trim() === "/" ? "root" : opts.folder;
|
|
186527
|
+
success2(`Moved ${ui.bold(workflowId)} to ${ui.bold(target)}`);
|
|
186528
|
+
}));
|
|
186511
186529
|
}
|
|
186512
186530
|
var SEMVER_RE = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
186513
186531
|
function isBumpLevel(value) {
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -110,6 +110,22 @@ The validator emits structured field-path errors with a hint pointing at
|
|
|
110
110
|
Version bumping rules (`--bump` vs `--set-version` vs YAML `version:`)
|
|
111
111
|
live in [`reference/workflow-yaml.md`](reference/workflow-yaml.md#validate-before-pushing).
|
|
112
112
|
|
|
113
|
+
### Organize workflows into folders
|
|
114
|
+
|
|
115
|
+
Folders live on the server, not in `workflow.yaml`. `workflow push` and
|
|
116
|
+
`workflow pull` do not read or write folder placement. Use `workflow move`
|
|
117
|
+
to move workflows between dashboard folders:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
eigenpal workflow move <workflow-id> --folder billing/invoices
|
|
121
|
+
eigenpal workflow move <workflow-id> --folder /
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`--folder /` means root.
|
|
125
|
+
Missing folders in the path are created automatically.
|
|
126
|
+
Default to creating workflows at the top level. Do not move a workflow into
|
|
127
|
+
a folder unless the user specifically asks for that placement.
|
|
128
|
+
|
|
113
129
|
### Iterate fast on one step (no server, no DAG)
|
|
114
130
|
|
|
115
131
|
Tightest possible loop — local sandbox, milliseconds per run. Today
|
|
@@ -478,6 +494,7 @@ eigenpal workflow list
|
|
|
478
494
|
eigenpal workflow push --file workflow.yaml [--workflow-id <workflow-id>]
|
|
479
495
|
eigenpal workflow pull <workflow-id>
|
|
480
496
|
eigenpal workflow validate [path]
|
|
497
|
+
eigenpal workflow move <wf-id> --folder billing/invoices # use --folder / for root
|
|
481
498
|
|
|
482
499
|
# Evaluators
|
|
483
500
|
eigenpal workflow evaluators push <workflow-id> --file evaluators.yaml
|
|
@@ -19,6 +19,7 @@ Manage workflows: push, pull, run, evaluate.
|
|
|
19
19
|
- [`eigenpal workflow list [options]`](#eigenpal-workflow-list-options)
|
|
20
20
|
- [`eigenpal workflow pull [options] <workflow-id>`](#eigenpal-workflow-pull-options-workflow-id)
|
|
21
21
|
- [`eigenpal workflow push [options]`](#eigenpal-workflow-push-options)
|
|
22
|
+
- [`eigenpal workflow move [options] <workflow-id>`](#eigenpal-workflow-move-options-workflow-id)
|
|
22
23
|
- [`eigenpal workflow validate [options]`](#eigenpal-workflow-validate-options)
|
|
23
24
|
- [`eigenpal workflow clear-local [options] [examples...]`](#eigenpal-workflow-clear-local-options-examples)
|
|
24
25
|
- [`eigenpal workflow evaluators pull [options] <workflow-id>`](#eigenpal-workflow-evaluators-pull-options-workflow-id)
|
|
@@ -60,6 +61,7 @@ workflow
|
|
|
60
61
|
├── list
|
|
61
62
|
├── pull <workflow-id>
|
|
62
63
|
├── push
|
|
64
|
+
├── move <workflow-id>
|
|
63
65
|
├── evaluators
|
|
64
66
|
│ ├── pull <workflow-id>
|
|
65
67
|
│ ├── push <workflow-id>
|
|
@@ -113,6 +115,7 @@ workflow
|
|
|
113
115
|
| `eigenpal workflow list [options]` | List workflows the caller can read. |
|
|
114
116
|
| `eigenpal workflow pull [options] <workflow-id>` | Download the YAML definition of the workflow at its current version. |
|
|
115
117
|
| `eigenpal workflow push [options]` | Create or update a workflow from a YAML file. |
|
|
118
|
+
| `eigenpal workflow move [options] <workflow-id>` | Move a workflow to a folder path, creating folders as needed |
|
|
116
119
|
| `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
120
|
| `eigenpal workflow clear-local [options] [examples...]` | Delete local execution artifacts under ./dataset/examples/. Keeps the latest run per example by default. |
|
|
118
121
|
|
|
@@ -235,6 +238,24 @@ Create or update a workflow from a YAML file.
|
|
|
235
238
|
| `--base-url <url>` | no | | Server base URL |
|
|
236
239
|
| `--json` | no | | Output the raw server response as JSON |
|
|
237
240
|
|
|
241
|
+
### `eigenpal workflow move [options] <workflow-id>`
|
|
242
|
+
|
|
243
|
+
Move a workflow to a folder path, creating folders as needed
|
|
244
|
+
|
|
245
|
+
### Arguments
|
|
246
|
+
|
|
247
|
+
| Name | Required | Variadic | Description |
|
|
248
|
+
| ------------- | -------- | -------- | ----------- |
|
|
249
|
+
| `workflow-id` | yes | no | |
|
|
250
|
+
|
|
251
|
+
### Options
|
|
252
|
+
|
|
253
|
+
| Flag | Required | Default | Description |
|
|
254
|
+
| ------------------ | -------- | ------- | -------------------------------------- |
|
|
255
|
+
| `--folder <path>` | yes | | Target folder path (`/` for root) |
|
|
256
|
+
| `--base-url <url>` | no | | Server base URL |
|
|
257
|
+
| `--json` | no | | Output the raw server response as JSON |
|
|
258
|
+
|
|
238
259
|
### `eigenpal workflow validate [options]`
|
|
239
260
|
|
|
240
261
|
Local-only validation against the templated project layout: ./workflow.yaml + ./evaluators.yaml + ./dataset/. For targeted validation use `evaluators validate` or `dataset validate`.
|
|
@@ -11,6 +11,10 @@ on the server, the canonical per-row surface is
|
|
|
11
11
|
`dataset list` for a table view) — the local folder is a pre-push
|
|
12
12
|
staging area, not a synced mirror.
|
|
13
13
|
|
|
14
|
+
Dataset folders are unrelated to workflow organization folders. To place
|
|
15
|
+
the workflow itself under dashboard folders, use `workflow move --folder`;
|
|
16
|
+
dataset push/pull never changes folder placement.
|
|
17
|
+
|
|
14
18
|
## Required layout
|
|
15
19
|
|
|
16
20
|
```
|
|
@@ -134,6 +134,20 @@ The error envelope tells you exactly where:
|
|
|
134
134
|
Follow the hint — every field path is dotted into the YAML so you can
|
|
135
135
|
jump straight to the broken line.
|
|
136
136
|
|
|
137
|
+
### Workflow appears in the wrong folder
|
|
138
|
+
|
|
139
|
+
Folder placement is controlled by server folder state, not by
|
|
140
|
+
`workflow.yaml`. Move by explicit folder path:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
eigenpal workflow move <workflow-id> --folder billing/invoices
|
|
144
|
+
eigenpal workflow move <workflow-id> --folder /
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`--folder /` moves the workflow back to root. `workflow push` and
|
|
148
|
+
`workflow pull` do not change folder placement. Missing folders in the
|
|
149
|
+
path are created automatically.
|
|
150
|
+
|
|
137
151
|
## 4. Compare two executions
|
|
138
152
|
|
|
139
153
|
```bash
|
|
@@ -6,6 +6,10 @@ attach to a workflow via `workflow evaluators push` and run in batch via
|
|
|
6
6
|
`EvalConfigYamlSchema` in `@eigenpal/types/src/eval/evaluator-config.ts`;
|
|
7
7
|
this is the agent-facing summary.
|
|
8
8
|
|
|
9
|
+
Evaluator config does not control dashboard folder placement. Workflow
|
|
10
|
+
organization is managed with `workflow move --folder`;
|
|
11
|
+
`workflow evaluators push` leaves the workflow's folder unchanged.
|
|
12
|
+
|
|
9
13
|
## Top-level shape
|
|
10
14
|
|
|
11
15
|
```yaml
|
|
@@ -26,6 +26,14 @@ output: {...} # object — the workflow's return shape
|
|
|
26
26
|
version with the same `name` and a different `version` appends to history;
|
|
27
27
|
re-using the same `version` is rejected.
|
|
28
28
|
|
|
29
|
+
Folder placement is not part of `workflow.yaml`; it lives in the server
|
|
30
|
+
database. Use `workflow move <workflow-id> --folder <path>` to move a
|
|
31
|
+
workflow between dashboard folders. Missing folders in the path are
|
|
32
|
+
created automatically. Use `--folder /` for root. New workflows should stay
|
|
33
|
+
at the top level unless the user specifically asks to place them in a
|
|
34
|
+
folder.
|
|
35
|
+
|
|
36
|
+
|
|
29
37
|
### `triggerMethods`
|
|
30
38
|
|
|
31
39
|
Required. Each entry adds an invocation surface:
|