@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 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.16",
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
- await writeOrPrint(opts.out, result?.currentVersion?.yamlContent ?? "");
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 result = await client.post("/api/v1/workflows", { yaml: yamlToSend });
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) {
@@ -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:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eigenpal/cli",
3
- "version": "0.4.16",
3
+ "version": "0.4.17",
4
4
  "description": "Eigenpal CLI — author and run document workflows from your terminal. Agent-ready.",
5
5
  "keywords": [
6
6
  "eigenpal",