@eigenpal/cli 0.10.19 → 0.10.20

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.
@@ -358,6 +358,8 @@ _Generated from `STEP_SCHEMAS` in `@eigenpal/types/src/workflow/step-configs.ts`
358
358
 
359
359
  Extract text from documents (PDF, DOCX, images) using OCR or vision models
360
360
 
361
+ **Durable retry:** Provider request retries are separate; the workflow engine does not durably retry this step.
362
+
361
363
  **Config** (in `step.with`):
362
364
 
363
365
  | Field | Type | Required | Default | Description |
@@ -386,6 +388,8 @@ Extract text from documents (PDF, DOCX, images) using OCR or vision models
386
388
 
387
389
  Extract structured data from text using AI with a JSON schema
388
390
 
391
+ **Durable retry:** Provider request retries are separate; the workflow engine does not durably retry this step.
392
+
389
393
  **Config** (in `step.with`):
390
394
 
391
395
  | Field | Type | Required | Default | Description |
@@ -409,6 +413,8 @@ Extract structured data from text using AI with a JSON schema
409
413
 
410
414
  Split a parsed document into named sections using an LLM. Consumes ai.parse output; emits per-section page ranges and text ready for downstream ai.extract via control.parallel_map.
411
415
 
416
+ **Durable retry:** Provider request retries are separate; the workflow engine does not durably retry this step.
417
+
412
418
  **Config** (in `step.with`):
413
419
 
414
420
  | Field | Type | Required | Default | Description |
@@ -429,6 +435,8 @@ Split a parsed document into named sections using an LLM. Consumes ai.parse outp
429
435
 
430
436
  Separate a concatenated batch (one big scan) into typed document instances using an LLM. Consumes ai.parse output and a type taxonomy; discovers an unknown number of documents in any order and emits per-document page ranges + text + type, ready for type-specific ai.extract via control.parallel_map. The inverse of ai.split.
431
437
 
438
+ **Durable retry:** Provider request retries are separate; the workflow engine does not durably retry this step.
439
+
432
440
  **Config** (in `step.with`):
433
441
 
434
442
  | Field | Type | Required | Default | Description |
@@ -450,6 +458,8 @@ Separate a concatenated batch (one big scan) into typed document instances using
450
458
 
451
459
  Classify a document or text into one of a fixed label set using an LLM. Output exposes the picked label (constrained to the configured names), a coarse confidence, and a short justification. Pair with control.fail to reject documents that match an undesired label.
452
460
 
461
+ **Durable retry:** Provider request retries are separate; the workflow engine does not durably retry this step.
462
+
453
463
  **Config** (in `step.with`):
454
464
 
455
465
  | Field | Type | Required | Default | Description |
@@ -475,6 +485,8 @@ Classify a document or text into one of a fixed label set using an LLM. Output e
475
485
 
476
486
  Set key-value pairs in the output object
477
487
 
488
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
489
+
478
490
  **Config** (in `step.with`):
479
491
 
480
492
  | Field | Type | Required | Default | Description |
@@ -490,6 +502,8 @@ Set key-value pairs in the output object
490
502
 
491
503
  Remove specified fields from an object
492
504
 
505
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
506
+
493
507
  **Config** (in `step.with`):
494
508
 
495
509
  | Field | Type | Required | Default | Description |
@@ -505,6 +519,8 @@ Remove specified fields from an object
505
519
 
506
520
  Merge multiple objects or concatenate arrays
507
521
 
522
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
523
+
508
524
  **Config** (in `step.with`):
509
525
 
510
526
  | Field | Type | Required | Default | Description |
@@ -521,6 +537,8 @@ Merge multiple objects or concatenate arrays
521
537
 
522
538
  Split a string by delimiter or extract keys from an object
523
539
 
540
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
541
+
524
542
  **Config** (in `step.with`):
525
543
 
526
544
  | Field | Type | Required | Default | Description |
@@ -540,6 +558,8 @@ Split a string by delimiter or extract keys from an object
540
558
 
541
559
  Merge multiple named inputs into a single output
542
560
 
561
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
562
+
543
563
  **Config** (in `step.with`):
544
564
 
545
565
  | Field | Type | Required | Default | Description |
@@ -559,6 +579,8 @@ Merge multiple named inputs into a single output
559
579
 
560
580
  Fill a DOCX template with data from previous steps. Select a template in the workflow builder or provide a template ID from your workspace.
561
581
 
582
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
583
+
562
584
  **Config** (in `step.with`):
563
585
 
564
586
  | Field | Type | Required | Default | Description |
@@ -579,6 +601,8 @@ Fill a DOCX template with data from previous steps. Select a template in the wor
579
601
 
580
602
  Embed OCR text layer into scanned PDFs/images to make them searchable
581
603
 
604
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
605
+
582
606
  **Config** (in `step.with`):
583
607
 
584
608
  | Field | Type | Required | Default | Description |
@@ -601,6 +625,8 @@ Embed OCR text layer into scanned PDFs/images to make them searchable
601
625
 
602
626
  Convert XLSX spreadsheet to JSON array of row objects for use in scripts or downstream steps
603
627
 
628
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
629
+
604
630
  **Config** (in `step.with`):
605
631
 
606
632
  | Field | Type | Required | Default | Description |
@@ -621,6 +647,8 @@ Convert XLSX spreadsheet to JSON array of row objects for use in scripts or down
621
647
 
622
648
  Execute a TypeScript function in a QuickJS sandbox. Input keys become the function's parameter list, in declaration order, and the required `: R` return-type annotation IS this step's output schema: `inputs: { items, taxRate }` ⇒ `function script(items: …, taxRate: …): R { … }`.
623
649
 
650
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
651
+
624
652
  **Config** (in `step.with`):
625
653
 
626
654
  | Field | Type | Required | Default | Description |
@@ -638,6 +666,8 @@ Execute a TypeScript function in a QuickJS sandbox. Input keys become the functi
638
666
 
639
667
  Split long text into chunks with regex-anchored boundaries, overlap, and header preservation. Accepts raw text or a parsed-document object; chunks carry source page indexes when pages are provided.
640
668
 
669
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
670
+
641
671
  **Config** (in `step.with`):
642
672
 
643
673
  | Field | Type | Required | Default | Description |
@@ -661,6 +691,8 @@ Split long text into chunks with regex-anchored boundaries, overlap, and header
661
691
 
662
692
  Pull named fields from text via regex patterns (deterministic counterpart to ai.extract). Accepts raw text or a parsed-document object; matches carry `_evidence.pageIndex` when pages are provided.
663
693
 
694
+ **Durable retry:** Transforms, including those that write files, are not durably retried.
695
+
664
696
  **Config** (in `step.with`):
665
697
 
666
698
  | Field | Type | Required | Default | Description |
@@ -680,12 +712,14 @@ Pull named fields from text via regex patterns (deterministic counterpart to ai.
680
712
 
681
713
  Make an HTTP request to an external API
682
714
 
715
+ **Durable retry:** HTTP `GET` and `HEAD` can durably retry transient timeout, rate limits, selected retryable server failures failures. Other methods are not replayed.
716
+
683
717
  **Config** (in `step.with`):
684
718
 
685
719
  | Field | Type | Required | Default | Description |
686
720
  | --- | --- | --- | --- | --- |
687
721
  | `url` | string | yes | | Request URL (supports template expressions) |
688
- | `method` | `"GET"` \| `"POST"` \| `"PUT"` \| `"PATCH"` \| `"DELETE"` | no | `"GET"` | |
722
+ | `method` | `"GET"` \| `"HEAD"` \| `"POST"` \| `"PUT"` \| `"PATCH"` \| `"DELETE"` | no | `"GET"` | |
689
723
  | `headers` | record<string, string> | no | | HTTP headers |
690
724
  | `body` | unknown | no | | Request body (JSON or string) |
691
725
  | `timeout` | number | no | `30000` | Timeout in milliseconds |
@@ -705,6 +739,8 @@ Make an HTTP request to an external API
705
739
 
706
740
  Execute another workflow and return its output
707
741
 
742
+ **Durable retry:** Invoked workflows are not replayed as durable leaf attempts.
743
+
708
744
  **Config** (in `step.with`):
709
745
 
710
746
  | Field | Type | Required | Default | Description |
@@ -725,6 +761,8 @@ Execute another workflow and return its output
725
761
 
726
762
  Fetch a webpage and convert content to markdown
727
763
 
764
+ **Durable retry:** Supported for transient timeout, rate limits, selected retryable server failures failures.
765
+
728
766
  **Config** (in `step.with`):
729
767
 
730
768
  | Field | Type | Required | Default | Description |
@@ -751,6 +789,8 @@ Fetch a webpage and convert content to markdown
751
789
 
752
790
  Branch execution based on a condition expression
753
791
 
792
+ **Durable retry:** The control container itself is not retried, but eligible leaves inside its sequential scope may retry durably.
793
+
754
794
  **Config** (at step level):
755
795
 
756
796
  | Field | Type | Required | Default | Description |
@@ -769,6 +809,8 @@ Branch execution based on a condition expression
769
809
 
770
810
  Multi-way routing: resolve an expression and run the first case whose value matches (else default). Cleaner than a nested control.if chain for routing an item to one of N pipelines by a discriminator field like a document type.
771
811
 
812
+ **Durable retry:** The control container itself is not retried, but eligible leaves inside its sequential scope may retry durably.
813
+
772
814
  **Config** (at step level):
773
815
 
774
816
  | Field | Type | Required | Default | Description |
@@ -788,6 +830,8 @@ Multi-way routing: resolve an expression and run the first case whose value matc
788
830
 
789
831
  Loop over an array and execute steps for each item
790
832
 
833
+ **Durable retry:** The control container itself is not retried, but eligible leaves inside its sequential scope may retry durably.
834
+
791
835
  **Config** (at step level):
792
836
 
793
837
  | Field | Type | Required | Default | Description |
@@ -808,6 +852,8 @@ Loop over an array and execute steps for each item
808
852
 
809
853
  Iterate over an array with concurrent execution up to a limit
810
854
 
855
+ **Durable retry:** The control container and leaves inside its concurrent branches do not retry durably.
856
+
811
857
  **Config** (at step level):
812
858
 
813
859
  | Field | Type | Required | Default | Description |
@@ -829,6 +875,8 @@ Iterate over an array with concurrent execution up to a limit
829
875
 
830
876
  Execute multiple branches concurrently
831
877
 
878
+ **Durable retry:** The control container and leaves inside its concurrent branches do not retry durably.
879
+
832
880
  **Config** (at step level):
833
881
 
834
882
  _No fields._
@@ -841,6 +889,8 @@ _No fields._
841
889
 
842
890
  Pause workflow execution for a specified duration
843
891
 
892
+ **Durable retry:** This control step is not retried durably.
893
+
844
894
  **Config** (at step level):
845
895
 
846
896
  | Field | Type | Required | Default | Description |
@@ -857,6 +907,8 @@ Pause workflow execution for a specified duration
857
907
 
858
908
  Terminate the workflow with a typed status code + message. With an optional condition, only fails when the condition is truthy; otherwise always fails when reached. Pair with ai.classify or any prior step to fail fast on bad inputs.
859
909
 
910
+ **Durable retry:** This control step is not retried durably.
911
+
860
912
  **Config** (at step level):
861
913
 
862
914
  | Field | Type | Required | Default | Description |
@@ -127,6 +127,44 @@ Step references resolve via Liquid template expressions:
127
127
  `steps[].name` is the only handle into the step from later steps. Use
128
128
  short, descriptive names (`parse`, `extract`, `score`).
129
129
 
130
+ <!-- GENERATED:RETRY_REFERENCE START -->
131
+ ## Durable retry policies
132
+
133
+ _Policy syntax is generated from `WorkflowRetryPolicySchema` and `StepRetryPolicySchema`; step capability notes are generated from `STEP_RETRY_CAPABILITIES` in `@eigenpal/types`._
134
+
135
+ - Workflow policy values: `automatic`, `never` or an object with `mode` and `maxAttempts`.
136
+ - Step policy values: `inherit`, `automatic`, `never`. `automatic` supports object form with `mode` and `maxAttempts`; `never` supports `{ mode: 'never' }`; `inherit` is string-only.
137
+ - The schema accepts `maxAttempts` from 1 through 10. Studio offers 2-3 total attempts, and the current worker ceiling is 3.
138
+ - `maxAttempts` includes the first attempt. If no policy is set, durable retries are off.
139
+
140
+ ```yaml
141
+ settings:
142
+ retry:
143
+ mode: automatic
144
+ maxAttempts: 3
145
+
146
+ steps:
147
+ - name: fetch-catalog
148
+ type: action.http
149
+ retry: inherit
150
+ with:
151
+ method: GET
152
+ url: 'https://api.example.com/catalog'
153
+
154
+ - name: read-product-page
155
+ type: action.website-reader
156
+ retry: never
157
+ with:
158
+ url: '{{ input.url }}'
159
+ ```
160
+
161
+ `automatic` retries transient timeouts, rate limits, and selected retryable server failures. Delays use bounded exponential backoff, honor `Retry-After`, and stop after a five-minute elapsed budget.
162
+
163
+ Durable leaf retries are supported for Website Reader and HTTP `GET`/`HEAD`. Unsafe HTTP methods, Invoke Workflow, AI steps (which may have separate provider request retries), and transforms or file outputs are not durably replayed. Control containers are not attempts themselves; eligible leaves inside sequential If, Switch, and For Each scopes may retry, while concurrent Parallel and Parallel Map branches do not. See each generated step entry for its capability.
164
+
165
+ Legacy whole-run retry counts are accepted for compatibility but no longer restart failed runs. Move retry intent to the workflow retry default or an eligible step.
166
+ <!-- GENERATED:RETRY_REFERENCE END -->
167
+
130
168
  ### `output`
131
169
 
132
170
  ```yaml
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eigenpal/cli",
3
- "version": "0.10.19",
3
+ "version": "0.10.20",
4
4
  "description": "Eigenpal CLI — author and run document workflows from your terminal. Agent-ready.",
5
5
  "keywords": [
6
6
  "eigenpal",