Gabe Ruttner
6c3a954553
Merge branch 'feat-durable-execution' into feat/durable-complex-tests
2026-03-13 11:20:29 -07:00
matt
6fb50ce004
Feat: Wait wrapper signature improvements ( #3241 )
...
* fix: make memo private for now
* feat: first pass at returning structured data back
* fix: json marshalling, types
* feat: wiring
* fix: sleep for return type
* chore: add comments
* fix: tests for `expr_to_timedelta`
* fix: change examples
* feat: improve asserts
* fix: pass payloads through
* fix: add hacky fallbacks to avoid breaking changes
* feat: add memo now
* feat: add test for memo now
* fix: hack for old engine test
* fix: rm restore button
* fix: one more test
* fix: ts impls
* revert: unwind engine changes (woohoo!)
* fix: payload validation
* fix: ts
* chore: gen
* feat: sleep until
* fix: return wait result on replay
* fix: data get, pydantic warning
* fix: test assert
* fix: ts memo key, make memo private
* chore: rm comment, gen again
* chore: merge and gen
2026-03-12 12:53:03 -04:00
mrkaye97
c0204fbd8b
Merge branch 'main' into feat-durable-execution
2026-03-12 12:24:32 -04:00
github-actions[bot]
18f8fc45f7
chore: regenerate examples ( #3242 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-03-11 17:34:28 -04:00
Gabe Ruttner
4f37653776
chore: lint
2026-03-10 09:11:51 -04:00
Gabe Ruttner
98212cb2de
Merge branch 'main' into feat-durable-execution
2026-03-10 09:01:01 -04:00
Mohammed Nafees
ab6cae4420
Test PgBouncer against our code-level partitioning logic ( #3178 )
...
* test partition drops with pgbouncer
* dedicated DDLPool to bypass pgbouncer
* fix generate
* add env var
* min env var
* update documentation
* no go mod redundancy
2026-03-10 12:24:07 +01:00
Gabe Ruttner
468de0c584
feat: handle server initiated eviction on workers ( #3200 )
...
* refactor: ts in sync with python
* fix: waits respect abort signal
* chore: gen, lint
* fix: update key extraction logic in durable workflow example
* fix: flake
* fix: racey test
* chore: gen
* feat: send eviction to engine
* feat: handle eviction on workers
* fix: tests and invocation scoped eviction
* fix: cleanup scope
* refactor: cleanup how we do action keys in ts
* chore: gen, lint
* fix: test
* chore: lint
* fix: mock
* fix: cleanup
* chore: lint
* chore: copilot feedback
* fix: reconnect durable listener
* chore: feedback
* fix: bump worker status on wait and reconnect
* refactor: rename eviction notice
* fix: return error on query failure
* chore: lint
* chore: gen
* refactor: remove early completion
* Revert "refactor: remove early completion"
This reverts commit f756ce37b0 .
* chore: remove unused param
2026-03-09 05:16:46 -07:00
github-actions[bot]
af0f04b3f1
chore: regenerate examples ( #3203 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-03-09 13:35:49 +02:00
dependabot[bot]
b0c99b2028
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3212 )
...
Bumps hatchet-sdk from 1.28.0 to 1.28.1.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.28.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 04:29:21 +00:00
Gabe Ruttner
7e01f7ba94
Merge branch 'main' into feat-durable-execution
2026-03-08 17:50:42 -04:00
Gabe Ruttner
2a98243cd4
chore: update eslint and other packages ( #3202 )
...
* fix: eslint for local dev
* chore: eslint v8 -> 10
* fix: flyby bug
* chore: remove many anys
* chore: update dependencies
* chore: lint
2026-03-08 13:11:51 -07:00
Gabe Ruttner
fca52697a8
refactor: ts in sync with python ( #3199 )
...
* refactor: ts in sync with python
* fix: waits respect abort signal
* chore: gen, lint
* fix: update key extraction logic in durable workflow example
* fix: flake
* fix: racey test
* chore: gen
2026-03-07 05:42:42 -08:00
Gabe Ruttner
f177f11290
Feat ts durable execution ( #3134 )
...
* chore: generate
* feat: durable execution in typescript
* fix: cancellation logs
* chore: lint
* chore: generate
* chore: address copilot review
* chore: update docstring
* chore: lint
* refactor: how memos are constructed
* chore: generate ts
* feat: bulk spawn
* feat: compat
* chore: gen
* chore: cleanup and lint
* fix: durable spawn types
* fix: build
* fix: graceful termination
* flyby: namespaces
* fix: graceful term
* chore: lint
* fix: compat
* chore: lint
* fix: legacy race
* fix: last tests
* chore: lint
* fix: bulk replay e2e test
* fix: relax assertion
* fix: bulk
2026-03-06 10:00:31 -08:00
github-actions[bot]
061787fb48
chore: regenerate examples ( #3189 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-03-06 12:59:43 -05:00
github-actions[bot]
b5107b052c
chore: regenerate examples ( #3184 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-03-06 09:59:21 -05:00
Mohammed Nafees
00b53529bd
Add missing Go SDK examples for worker affinity and manual slot release ( #3179 )
...
* add missing Go SDK examples for affinity and manual slot release
* fix gen
2026-03-06 01:51:27 +01:00
Gabe Ruttner
12bf7514c5
feat: durable-bulk-spawn ( #3173 )
...
* feat: durable bulk spawn
* feat: bulk db operations
* chore: lint
* chore: generate
* fix: sqlc hack
* cleanup
* chore: lint
* refactor: remove duplicated code
* refactor: simplify input
* ops: rules
* fix: add missing workflows to worker
* chore: add todo
* refactor: single execution path
* comment
* refactor: remove extra class
* chore: lint
* chore: lint
* refactor: batch ack
* fix: handle empty refs
* chore: feedback
* fix: durable output
* chore: lint
* chore: lint
* chore: test fix and gen
* revert: actually use bulk
* refactor: simplify path
* chore: empty commit
Made-with: Cursor
2026-03-05 16:08:13 -08:00
Gabe Ruttner
217aa2bec2
fix: register the examples on the worker
2026-03-05 08:04:42 -05:00
Gabe Ruttner
d4df0d91b7
feat: add durable complex test cases
...
Add comprehensive test suite for durable complex workflows including:
- DAG workflows with mixed ephemeral/durable tasks
- Concurrency control and slot retention
- Execution timeout handling
- On-failure callback tests
- Rate limiting
- Retry behavior
Made-with: Cursor
2026-03-05 07:45:09 -05:00
dependabot[bot]
318575f4cf
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3171 )
...
Bumps hatchet-sdk from 1.27.2 to 1.28.0.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-05 04:25:04 +00:00
github-actions[bot]
a78ec7bb06
chore: regenerate examples ( #3163 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-03-04 17:47:47 -05:00
Gabe Ruttner
5babd09679
docs: chunky overhaul ( #3129 )
...
* improve overall docs structure and things
2026-03-04 14:33:15 -08:00
mrkaye97
e29459f58a
chore: merge main
2026-03-04 13:38:37 -05:00
matt
6c29e48204
Feat: Dynamic worker label assign ( #3137 )
...
* feat: initial wiring work on desired labels
* feat: initial wiring
* chore: gen python
* fix: use the whole desired label thing instead
* fix: more wiring, improve types
* fix: sql type
* fix: len check
* chore: gen python
* fix: initial plural label work
* fix: store the labels properly on the task
* fix: skip cache on override
* fix: bug
* fix: scoping bug whoops
* chore: lint
* fix: send labels back over the api correctly
* feat: python test
* fix: lint
* fix: comment
* fix: override
* fix: namespaces, ugh
* fix: no need for error here
* chore: version
* feat: ruby, go, ts
* feat: versions
* fix: appease the rubocop
* chore: lint
* chore: bundle install
* fix: tests
* chore: lint
* chore: lint more
* fix: ts test
* fix: rb
* chore: gen
* chore: reset gemfile
* chore: reset changelog
* fix: pgroup
* fix: tests, part i
* Revert "chore: reset changelog"
This reverts commit b63bf7d3e5 .
* Revert "chore: reset gemfile"
This reverts commit bb848bb6f0 .
* fix: go -> golang mapping hack
* fix: go enums
* fix: appease the cop
* fix: namespace
* chore: gen
2026-03-04 11:03:58 -05:00
mrkaye97
a4f65454f3
Merge branch 'main' into feat-durable-execution
2026-03-03 17:24:23 -05:00
dependabot[bot]
d46c873e2e
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3133 )
...
Bumps hatchet-sdk from 1.26.2 to 1.27.2.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.27.2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 04:30:47 +00:00
matt
77f769bd66
Feat: Durable Memoization ( #3112 )
...
* feat: initial engine / db work
* chore: gen python
* feat: initial python work
* feat: wiring
* feat: initial test
* fix: scope memo key to the run id (we might not even need this)
* chore: gen, docstring
* fix: mandatory result type
* fix: docs
* fix: log a warning and don't cache
* fix: add test for non-unique keys, fix some bugs
* chore: lint
* chore: naming
* fix: more naming
* fix: comment
* chore: gen
* fix: docs
* fix: naming, ugh
* chore: gen
* chore: gen
* fix: always send event log entry and get ack
* fix: initial rework of memo to only use stream
* fix: start reworking python side
* fix: finish wiring up memo put
* chore: fmt
* chore: comment for monday
* fix: start reworking signature
* fix: docstring
* fix: union type for send event to improve typing a bunch
* fix: memo key
* chore: gen
* fix: rm unused query
* fix: comments
2026-03-01 16:27:56 -08:00
Gabe Ruttner
e2eb3f05e9
Merge branch 'main' into feat-durable-execution
2026-03-01 19:11:13 -05:00
Gabe Ruttner
5a79618824
chore: deprecate ts v0 ( #2960 )
...
* rip ts v0: keep only TypeScript SDK changes
Cherry-pick TypeScript changes from rip--ts-v0 onto main,
discarding all non-TS changes (Go, Python, proto, SQL, etc.)
Made-with: Cursor
* merge: main into branch
* chore: rm redundant examples
* fix: tests
* fix: tests
* tests: speed em up
* tests: unskip
* tests: add missing p1s
* version: bump to 1.14.0
* chore: generate
* fix: release version
* chore: generate
* chore: rm legacy examples
* tests: timeouts...
* chore: remove unused config
* refactor: minimize dependency on legacy client
* refactor: rename V1Worker to InternalWorker and update references
* chore: lint
* tests: one big worker
* chore: lint
* chore: generate and test fixture tweaks
* tests: debug logs
* tests: stable order
* fix: abortable sleep
* tests: log artifacts on CI failure
* tmp: tmate
* chore: lint
* test: remove tmate
* chore: generate
* tmate
* tmate alwasy
* fix: log level
* fix: casing
* chore: remove tmate
* chore: consistent naming
* fix: test
* test: skip flaky test
* fix: casing
* chore: gen
* chore: lint
* revert: dependency version changes
2026-03-01 16:06:56 -08:00
mrkaye97
076f5b5f4c
Merge branch 'main' into feat-durable-execution
2026-03-01 13:43:51 -05:00
Gabe Ruttner
8796d0ab7d
chore: update dependencies for dependabot alerts ( #3119 )
...
* chore: update dependencies for dependabot alerts
* chore: bump main deps instead
* release: bump versions
* chore: bump gem
* chore: update hatchet-sdk to version 0.1.1 in Gemfile.lock
2026-02-28 06:48:15 -08:00
Gabe Ruttner
daff28dbfe
Feat: durable eviction take 2 ( #3075 )
...
* feat: simplified eviction feature
* fix: assign new worker id
* test: shorter sleep
* fix: completion race on same worker
* chore: address todo
* chore: lint
* chore: generate
* fix: n+1 queries
* refactor: WasEvicted bool
* feat: evicted state
* chore: generate
* fix: map status
* fix: update PendingCallback structure to include InvocationCount
* revert: comment
* feat: add support for EVICTED status in waterfall component and metrics display
* fix: implicit eviction
* chore: readable cte
* refactor: queued bool
* refactor: rename eviction_policy
* fix: aio only
* chore: example return type
* fix: map
* feat: eviction error cases
* refactor: change external ID maps to use UUID type
* chore: feedback, cleanup
* tests: additional cases
* chore: generate
* chore: lint
* chore: lint generate
* chore: clean up comments to make matt happy
* refactor: more feedback
* chore: add TODO for worker state reconciliation and clean up comments in eviction policy
* tests: fix
* chore: gen
* test: increase ruby timeout...
* fix: invocation count
* fix: test cases
* fix: stale log entry
* chore: lint
* revert: durable tests to use time.time
* chore: lint
2026-02-27 09:25:50 -08:00
mrkaye97
6a7f5578c3
Merge branch 'main' into feat-durable-execution
2026-02-27 11:44:17 -05:00
dependabot[bot]
13503f3dae
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3118 )
...
Bumps hatchet-sdk from 1.26.0 to 1.26.2.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.26.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 04:24:41 +00:00
mrkaye97
392391b4a7
Merge branch 'main' into feat-durable-execution
2026-02-26 14:21:53 -05:00
Mohammed Nafees
ef2c01a499
Add ctx.WasSkipped helper to the Go SDK ( #3094 )
...
* introduce ctx.WasSkipped just like Py SDK
* fix lint and example
2026-02-26 17:56:45 +01:00
dependabot[bot]
204cc36103
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3109 )
...
Bumps hatchet-sdk from 1.25.2 to 1.26.0.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.26.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 04:24:16 +00:00
github-actions[bot]
c5afa138c1
chore: regenerate examples ( #3098 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-02-25 08:55:23 -05:00
mrkaye97
736ecaa3c0
Merge branch 'main' into feat-durable-execution
2026-02-24 13:26:48 -08:00
github-actions[bot]
47f34f2587
chore: regenerate examples ( #3084 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-02-23 14:48:09 +01:00
Gabe Ruttner
de68e1375a
Feat: typescript middleware ( #3066 )
...
* feat: typed middleware
* feat: chaining
* feat: typed global input
* feat: typed global output
* feat: inferred types from middleware
* feat: with chaining
* docs: initial pass
* feat: implicit chaining
* fix: implicit spread
* docs: separate examples
* refactor: rename middleware hooks from `pre`/`post` to `before`/`after` for consistency
* fix: search
* chore: lint
* fix: tests
* Update frontend/docs/pages/home/middleware.mdx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* release: 1.13.0
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-23 04:16:00 -08:00
mrkaye97
201a4c74e5
Merge branch 'main' into feat-durable-execution
2026-02-20 13:05:56 -05:00
matt
6f3f6e08ac
Feat: Replay as new (or from a node) ( #3055 )
...
* feat: new messages for reset
* chore: gen python
* feat: reset scaffolding
* feat: initial work
* feat: initial e2e wiring of resetting from a specific node
* fix: add branch to pk
* fix: wire up branches
* fix: add branch to awaited entry
* feat: start wiring up reset api
* fix: colname
* fix: add branch id more places
* fix: some bugs
* fix: replay
* fix: replay, simplify
* feat: add parent branch id
* fix: start reworking parent nodes and branches
* fix: parent branch wiring
* fix: start fixing some bugs
* fix: parent branch bug
* fix: advisory lock for locking the log file to prevent concurrent modification
* fix: move claude.md ignore path
* fix: remove eager replays of events
* fix: rm cruft
* fix: cleanup more params and such
* fix: return type
* fix: comment
* fix: comments
* fix: comment
* chore: gen
* chore: gen
* fix: decrease sleep time
* chore: gen again
* fix: add invocation count on event log entries, make it int32, fix toInt
* fix: more wiring
* chore: gen, simplify
* fix: lint
* fix: more zero values, I hate Go
* feat: add `is_durable` to v1_task
* feat: initial work wiring up dispatcher to increment log entry invocation counts
* feat: wire up assigned action
* fix: property
* fix: send is durable through to the engine
* fix: more invoc count wiring
* fix: node resetting
* fix:revert
* fix: import
* chore: gen
* fix: reset -> fork
* fix: rm a bunch of dead code
* fix: api
* fix: repo method
* fix: log file locking using `FOR UPDATE` + atomic compare-and-set update
* fix: move to shared repo
* feat: increment invocation count on the scheduler
* fix: naming
* fix: make test more reliable
* fix: props
* fix: node id reset
2026-02-20 13:01:46 -05:00
dependabot[bot]
9c13ce9e36
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3063 )
...
Bumps hatchet-sdk from 1.25.0 to 1.25.2.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.25.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-20 04:24:35 +00:00
mrkaye97
f8e787cd89
Merge branch 'main' into feat-durable-execution
2026-02-19 19:35:40 -05:00
matt
0cce1cfc04
Revert: Cancellation token Python changes ( #3061 )
...
* revert: cancellation token changes
* fix: changelog
* fix: add note on yank
2026-02-19 12:41:43 -05:00
matt
7e3e3b8fc0
Feat: Non-determinism errors ( #3041 )
...
* fix: retrieve payloads in bulk
* fix: hash -> idempotency key
* feat: initial hashing work
* feat: check idempotency key if entry exists
* fix: panic
* feat: initial work on custom error for non-determinism
* fix: handle nondeterminism error properly
* feat: add error response, pub message to task controller
* chore: lint
* feat: add node id field to error proto
* chore: rm a bunch of unhelpful cancellation logs
* fix: conflict issues
* fix: rm another log
* fix: send node id properly
* fix: improve what we hash
* fix: improve error handling
* fix: python issues
* fix: don't hash or group id
* fix: rm print
* feat: add python test
* fix: add timeout
* fix: improve handling of non determinism error
* fix: propagate node id through
* fix: types, test
* fix: make serializable
* fix: no need to cancel internally anymore
* fix: hide another internal log
* fix: add link to docs
* fix: copilot
* fix: use sha256
* fix: test cleanup
* fix: add error type enum
* fix: handle exceptions on the worker
* fix: clean up a bunch of cursor imports
* fix: cursor docstring formatting
* fix: simplify idempotency key func
* fix: add back cancellation logs
* feat: tests for idempotency keys
* fix: add a couple more for priority and metadata
* chore: gen
* fix: python reconnect
* fix: noisy error
* fix: improve log
* fix: don't run durable listener if no durable tasks are registered
* fix: non-null idempotency keys
2026-02-18 11:27:02 -05:00
dependabot[bot]
e13721b24a
chore(deps): bump hatchet-sdk in /examples/python/quickstart ( #3051 )
...
Bumps hatchet-sdk from 1.24.0 to 1.25.0.
---
updated-dependencies:
- dependency-name: hatchet-sdk
dependency-version: 1.25.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-18 04:24:41 +00:00
github-actions[bot]
6f41c80fca
chore: regenerate examples ( #3043 )
...
Co-authored-by: GitHub Action <action@github.com >
2026-02-17 15:25:45 -05:00