octaflow 0.17.0 โ†’ 0.17.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 (2) hide show
  1. package/README.md +28 -28
  2. package/package.json +11 -11
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/octabits-io/octaflow/actions/workflows/ci.yml/badge.svg)](https://github.com/octabits-io/octaflow/actions/workflows/ci.yml)
4
4
  [![npm](https://img.shields.io/npm/v/octaflow.svg)](https://www.npmjs.com/package/octaflow)
5
- [![docs](https://img.shields.io/badge/docs-octabits--io.github.io%2Fflow-16794a.svg)](https://octabits-io.github.io/octaflow/)
5
+ [![docs](https://img.shields.io/badge/docs-octaflow.octabits.io-16794a.svg)](https://octaflow.octabits.io/)
6
6
  [![license](https://img.shields.io/npm/l/octaflow.svg)](./LICENSE)
7
7
  [![types](https://img.shields.io/badge/types-included-blue.svg)](https://www.npmjs.com/package/octaflow)
8
8
 
@@ -14,12 +14,12 @@ restart. There is
14
14
  no workflow server to operate, no control plane, and no vendor โ€” it's a library you import,
15
15
  not a platform you adopt.
16
16
 
17
- ### ๐Ÿ“– [Read the docs โ†’](https://octabits-io.github.io/octaflow/)
17
+ ### ๐Ÿ“– [Read the docs โ†’](https://octaflow.octabits.io/)
18
18
 
19
- [Quick start](https://octabits-io.github.io/octaflow/start/quick-start/) ยท
20
- [Concepts](https://octabits-io.github.io/octaflow/core/concepts/) ยท
21
- [Postgres & pg-boss](https://octabits-io.github.io/octaflow/running/postgres-and-pg-boss/) ยท
22
- [API reference](https://octabits-io.github.io/octaflow/reference/api/)
19
+ [Quick start](https://octaflow.octabits.io/start/quick-start/) ยท
20
+ [Concepts](https://octaflow.octabits.io/core/concepts/) ยท
21
+ [Postgres & pg-boss](https://octaflow.octabits.io/running/postgres-and-pg-boss/) ยท
22
+ [API reference](https://octaflow.octabits.io/reference/api/)
23
23
 
24
24
  ```ts
25
25
  const wf = buildWorkflow({
@@ -73,7 +73,7 @@ fails and its completed steps roll back in reverse.
73
73
  <img src="./docs/demo.svg" alt="Terminal trace of a publishing pipeline: parallel fan-out over locales and images with a concurrency cap, a retried step, a sub-workflow, a suspend-and-resume on an external event with a deadline armed, a durable sleep, a skipped branch converging on a join, then a saga rollback in reverse order" width="760">
74
74
  </p>
75
75
 
76
- Every line is an engine transition emitted through the [`FlowObserver`](https://octabits-io.github.io/octaflow/running/observability/) seam โ€”
76
+ Every line is an engine transition emitted through the [`FlowObserver`](https://octaflow.octabits.io/running/observability/) seam โ€”
77
77
  the same one you'd point at OpenTelemetry or an events table โ€” not a `console.log` in a handler.
78
78
 
79
79
  ```bash
@@ -106,7 +106,7 @@ workflow is expressed**.
106
106
  | **Model** | declarative โ€” a static DAG value | imperative workflow code | imperative step functions | imperative tasks | job queue; flows are **trees** |
107
107
  | **Fan-in / diamond deps** | yes | yes | yes | yes | no โ€” a job can't be shared by two branches |
108
108
  | **Inspect before running** | yes โ€” the DAG is a value | no โ€” the graph is the execution trace | no | no | yes โ€” the flow tree is data |
109
- | **Web dashboard** | **none** โ€” [build one](https://octabits-io.github.io/octaflow/running/live-progress/) | yes | yes | yes | via third-party UIs |
109
+ | **Web dashboard** | **none** โ€” [build one](https://octaflow.octabits.io/running/live-progress/) | yes | yes | yes | via third-party UIs |
110
110
  | **Languages** | TypeScript | polyglot SDKs | TS, Python, Go, Kotlin | TS | Node (+ ports) |
111
111
  | **Maturity** | **pre-1.0** | mature | mature | mature | mature, widely deployed |
112
112
 
@@ -120,14 +120,14 @@ that the others have earned.
120
120
  Reach for something else if:
121
121
 
122
122
  - **Your control flow is genuinely dynamic.** A declarative DAG is fixed at definition time.
123
- Flow softens this a lot โ€” [`when` guards and joins](https://octabits-io.github.io/octaflow/core/branching/) (if/else over a static graph),
124
- [`defineMapStep`](https://octabits-io.github.io/octaflow/core/fan-out-and-map/) (runtime-sized fan-out),
125
- [sub-workflows](https://octabits-io.github.io/octaflow/core/sub-workflows/), and [`waitForEvent`](https://octabits-io.github.io/octaflow/core/signals/) โ€” but the
123
+ Flow softens this a lot โ€” [`when` guards and joins](https://octaflow.octabits.io/core/branching/) (if/else over a static graph),
124
+ [`defineMapStep`](https://octaflow.octabits.io/core/fan-out-and-map/) (runtime-sized fan-out),
125
+ [sub-workflows](https://octaflow.octabits.io/core/sub-workflows/), and [`waitForEvent`](https://octaflow.octabits.io/core/signals/) โ€” but the
126
126
  set of steps is still fixed up front. If your process is "**loop** until a human approves,
127
127
  branching on whatever they typed," an imperative durable function will express it more
128
128
  naturally: Flow can pick a branch, not invent a step.
129
129
  - **You want a UI out of the box.** Flow ships a wire-safe projection
130
- ([`toPublicWorkflow`](https://octabits-io.github.io/octaflow/extending/http/)) and lifecycle events, not a
130
+ ([`toPublicWorkflow`](https://octaflow.octabits.io/extending/http/)) and lifecycle events, not a
131
131
  dashboard. You build it.
132
132
  - **You need non-TypeScript workers.** The DAG and its schemas are TypeScript values.
133
133
  - **You can't run Postgres**, or you need throughput past what a Postgres-backed queue gives you.
@@ -239,25 +239,25 @@ pnpm add ai @ai-sdk/provider
239
239
  ## Documentation
240
240
 
241
241
  Full docs โ€” concepts, every feature, production wiring and the API reference โ€” live at
242
- **[octabits-io.github.io/octaflow](https://octabits-io.github.io/octaflow/)**.
242
+ **[octaflow.octabits.io](https://octaflow.octabits.io/)**.
243
243
 
244
244
  | | |
245
245
  |---|---|
246
- | [Quick start](https://octabits-io.github.io/octaflow/start/quick-start/) | a runnable workflow in one file, no database |
247
- | [Concepts](https://octabits-io.github.io/octaflow/core/concepts/) | step, workflow, registry, store, dispatcher, engine, partition |
248
- | [Defining steps](https://octabits-io.github.io/octaflow/core/defining-steps/) | `defineStep` and its variants |
249
- | [Retry & timeout](https://octabits-io.github.io/octaflow/core/retry-and-timeout/) | attempt budgets, backoff, and how a failure is classified |
250
- | [Fan-out & map](https://octabits-io.github.io/octaflow/core/fan-out-and-map/) | one child step per item of a runtime list |
251
- | [Branching](https://octabits-io.github.io/octaflow/core/branching/) | `when` guards and join rules โ€” if/else over a static DAG |
252
- | [Signals](https://octabits-io.github.io/octaflow/core/signals/) ยท [Sub-workflows](https://octabits-io.github.io/octaflow/core/sub-workflows/) ยท [Saga](https://octabits-io.github.io/octaflow/core/saga-compensation/) | suspend, nest, and roll back |
253
- | [Deadlines](https://octabits-io.github.io/octaflow/core/deadlines/) | budgets for a suspended step and for a whole run |
254
- | [Heartbeats](https://octabits-io.github.io/octaflow/core/heartbeats/) | liveness for long steps, and interrupting one that was cancelled |
255
- | [Postgres & pg-boss](https://octabits-io.github.io/octaflow/running/postgres-and-pg-boss/) | production wiring, workers, DLQ, cron |
256
- | [Cancellation & recovery](https://octabits-io.github.io/octaflow/running/cancellation-and-recovery/) | cancelling a run, sweeping steps a crash left behind, and retrying a failed run |
257
- | [Observability](https://octabits-io.github.io/octaflow/running/observability/) ยท [Live progress](https://octabits-io.github.io/octaflow/running/live-progress/) | lifecycle events, spans, and streaming them to a browser |
258
- | [The AI add-on](https://octabits-io.github.io/octaflow/extending/ai/) | token/cost capture, quota, usage rollups |
259
- | [Extending](https://octabits-io.github.io/octaflow/extending/interfaces/) | custom stores, dispatchers and gates |
260
- | [API reference](https://octabits-io.github.io/octaflow/reference/api/) | every export, by entry point |
246
+ | [Quick start](https://octaflow.octabits.io/start/quick-start/) | a runnable workflow in one file, no database |
247
+ | [Concepts](https://octaflow.octabits.io/core/concepts/) | step, workflow, registry, store, dispatcher, engine, partition |
248
+ | [Defining steps](https://octaflow.octabits.io/core/defining-steps/) | `defineStep` and its variants |
249
+ | [Retry & timeout](https://octaflow.octabits.io/core/retry-and-timeout/) | attempt budgets, backoff, and how a failure is classified |
250
+ | [Fan-out & map](https://octaflow.octabits.io/core/fan-out-and-map/) | one child step per item of a runtime list |
251
+ | [Branching](https://octaflow.octabits.io/core/branching/) | `when` guards and join rules โ€” if/else over a static DAG |
252
+ | [Signals](https://octaflow.octabits.io/core/signals/) ยท [Sub-workflows](https://octaflow.octabits.io/core/sub-workflows/) ยท [Saga](https://octaflow.octabits.io/core/saga-compensation/) | suspend, nest, and roll back |
253
+ | [Deadlines](https://octaflow.octabits.io/core/deadlines/) | budgets for a suspended step and for a whole run |
254
+ | [Heartbeats](https://octaflow.octabits.io/core/heartbeats/) | liveness for long steps, and interrupting one that was cancelled |
255
+ | [Postgres & pg-boss](https://octaflow.octabits.io/running/postgres-and-pg-boss/) | production wiring, workers, DLQ, cron |
256
+ | [Cancellation & recovery](https://octaflow.octabits.io/running/cancellation-and-recovery/) | cancelling a run, sweeping steps a crash left behind, and retrying a failed run |
257
+ | [Observability](https://octaflow.octabits.io/running/observability/) ยท [Live progress](https://octaflow.octabits.io/running/live-progress/) | lifecycle events, spans, and streaming them to a browser |
258
+ | [The AI add-on](https://octaflow.octabits.io/extending/ai/) | token/cost capture, quota, usage rollups |
259
+ | [Extending](https://octaflow.octabits.io/extending/interfaces/) | custom stores, dispatchers and gates |
260
+ | [API reference](https://octaflow.octabits.io/reference/api/) | every export, by entry point |
261
261
 
262
262
  ---
263
263
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "octaflow",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Durable DAG workflow engine: Zod-typed steps over Postgres + pg-boss, with an optional AI add-on (token/cost/quota). Layered single package.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -44,7 +44,7 @@
44
44
  "type": "git",
45
45
  "url": "https://github.com/octabits-io/octaflow.git"
46
46
  },
47
- "homepage": "https://octabits-io.github.io/octaflow/",
47
+ "homepage": "https://octaflow.octabits.io/",
48
48
  "bugs": {
49
49
  "url": "https://github.com/octabits-io/octaflow/issues"
50
50
  },
@@ -82,23 +82,23 @@
82
82
  }
83
83
  },
84
84
  "devDependencies": {
85
- "@ai-sdk/provider": "^4.0.7",
85
+ "@ai-sdk/provider": "^4.0.9",
86
86
  "@changesets/changelog-github": "^1.0.0",
87
- "@changesets/cli": "^3.0.0",
87
+ "@changesets/cli": "^3.0.1",
88
88
  "@commitlint/cli": "^21.2.2",
89
89
  "@commitlint/config-conventional": "^21.2.2",
90
90
  "@testcontainers/postgresql": "^12.1.0",
91
- "@types/node": "^26.2.0",
92
- "@types/pg": "^8.21.0",
93
- "ai": "^7.0.66",
91
+ "@types/node": "^26.4.0",
92
+ "@types/pg": "^8.23.1",
93
+ "ai": "^7.0.87",
94
94
  "pg": "^8.23.0",
95
- "pg-boss": "^12.27.0",
96
- "simple-git-hooks": "^2.13.1",
95
+ "pg-boss": "^12.29.0",
96
+ "simple-git-hooks": "^2.14.0",
97
97
  "testcontainers": "^12.1.0",
98
98
  "tsdown": "^0.22.14",
99
99
  "typescript": "^7.0.2",
100
- "vitest": "^4.1.10",
101
- "zod": "^4.4.3"
100
+ "vitest": "^4.1.11",
101
+ "zod": "^4.5.4"
102
102
  },
103
103
  "scripts": {
104
104
  "build": "tsdown",