Commit Graph

700 Commits

Author SHA1 Message Date
Mohammed Nafees 45c291c192 Go SDK gRPC client reconnection improvements (#2934)
* go sdk fixes to concurrency listen chans

* use generation
2026-02-04 18:53:18 +01:00
Jishnu ed43cae0a2 feat: Extend webhook support for scope_expression and payload (#2874)
* add: scope_expression and payload columns for v1_webhook

* refactor: insert or update sql cmds for v1_webhook

* feat: update api clients, openapi schema for new webhook body

* refactor: receiver and transformer for v1 webhook

* add: python sdk changes

* feat: ts sdk changes

* feat: add FE for webhook new params

* fix: scope expression empty payload

* add: support for scope and payload for go client

* fix: lint

* fix: error message UI on webhook

* fix: lint

* fix: migraiton conflict, build failure

* fix: error handling

* update docs, add tests

* fix: lint, test file name
2026-02-04 12:44:52 -05:00
abelanger5 2ddcbd2672 refactor: use typed maps (#2928)
* refactor: use typed maps

* self-review comments
2026-02-03 19:35:09 -05:00
abelanger5 051a930019 fix: explicit use of tx in olap readPayloads (#2925) 2026-02-03 16:19:36 -05:00
matt 058968c06b Refactor: Attempt II at removing pgtype.UUID everywhere + convert string UUIDs into uuid.UUID (#2894)
* fix: add type override in sqlc.yaml

* chore: gen sqlc

* chore: big find and replace

* chore: more

* fix: clean up bunch of outdated `.Valid` refs

* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`

* refactor: remove uuidToStr

* fix: lint

* fix: use pointers for null uuids

* chore: clean up more null pointers

* chore: clean up a bunch more

* fix: couple more

* fix: some types on the api

* fix: incorrectly non-null param

* fix: more nullable params

* fix: more refs

* refactor: start replacing tenant id strings with uuids

* refactor: more tenant id uuid casting

* refactor: fix a bunch more

* refactor: more

* refactor: more

* refactor: is that all of them?!

* fix: panic

* fix: rm scans

* fix: unwind some broken things

* chore: tests

* fix: rebase issues

* fix: more tests

* fix: nil checks

* Refactor: Make all UUIDs into `uuid.UUID` (#2897)

* refactor: remove a bunch more string uuids

* refactor: pointers and lists

* refactor: fix all the refs

* refactor: fix a few more

* fix: config loader

* fix: revert some changes

* fix: tests

* fix: test

* chore: proto

* fix: durable listener

* fix: some more string types

* fix: python health worker sleep

* fix: remove a bunch of `MustParse`s from the various gRPC servers

* fix: rm more uuid.MustParse calls

* fix: rm mustparse from api

* fix: test

* fix: merge issues

* fix: handle a bunch more uses of `MustParse` everywhere

* fix: nil id for worker label

* fix: more casting in the oss

* fix: more id parsing

* fix: stringify jwt opt

* fix: couple more bugs in untyped calls

* fix: more types

* fix: broken test

* refactor: implement `GetKeyUuid`

* chore: regen sqlc

* chore: replace pgtype.UUID again

* fix: bunch more type errors

* fix: panic
2026-02-03 11:02:59 -05:00
abelanger5 d56dee4266 feat: durable user event log (#2861)
* placeholder

* feat: db tables for user events (#2862)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* fix: address pr review comments

* missed save

* feat: optimistic scheduling (#2867)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* refactor: small changes to prepare optimistic txs

* feat: optimistic scheduling

* address pr review comments

* rm comments

* fix: rampup test race condition

* fix: goleak

* feat: grpc-side triggers

* fix: config and sem logic

* fix: respect optimistic scheduling env var

* add optimistic to testing matrix, remove pg-only mode

* fix cleanup of pubbuffers

* merge migrations

* last testing fixes
2026-02-02 18:04:02 -05:00
abelanger5 029d434e6b fix: add back SendTemplateEmail methods, fix postmark emails (#2910) 2026-02-02 13:41:18 -05:00
Gabe Ruttner 4e59f301ec fix: dag update distinct locks (#2903)
* lock only distinct

* try to fix dag statuses as well

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2026-02-02 05:53:19 -08:00
Greg Furman fa0dbde84e add: email alert support via SMTP (#2868)
* add: email alert support via SMTP

* add: subject lines

* add: go build tags

* add: SMTP server guide

* feat: include rendering in tests, fix race with mock server, and register subject templates to tmpl registry

* split up SMTP and postmark config

* refactor: Remove generic methods from EmailService

* fix: make postmark the default email provider

* fix: frontend lint
2026-01-31 20:05:52 -05:00
Gabe Ruttner 8186db18a4 fix: only fetch finalized workflow runs (#2896)
* only fetch finalized

* further optimization

* configurable buffer
2026-01-31 16:32:47 -05:00
abelanger5 04953129a4 fix: compute payload size correctly for pg_notify (#2873) 2026-01-31 16:31:49 -05:00
Gabe Ruttner e1fd78138b fix: orphaned inactive queues (#2893)
* fix

* fixme

* upsert at end

* unique and all strategies

* feedback

* string
2026-01-30 14:05:05 -08:00
matt ffe9f5ce74 Log Search Frontend, Part II (#2886)
* fix: don't toggle selection if a user is dragging

* fix: command selection state

* fix: close search bar on enter

* fix: improve search bar styling a bit, make it more consistent with designs

* chore: tsc

* Feat: Logs Frontend, Part III (#2888)

* fix: propagate retry count through properly

* feat: attempt switcher

* fix: attempt numbers

* feat: add attempt param to log query

* feat: wiring

* feat: attempt filter

* chore: changelog

* fix: use the button component

* fix: only close on enter when in FTS mode

* fix: pass retry count and log level in Go

* fix: feedback

* chore: lint

* fix: rm cruft comment
2026-01-30 13:17:21 -05:00
matt a3fe89ef03 Feat: Workflow input JSON schema in trigger preview (#2851)
* feat: add input json schema to workflow version

* feat: add json schema to putworkflow proto

* feat: wire up writes of the json schema

* chore: gen python

* feat: send json schema from the python code

* feat: wiring

* feat: pass json schema into code editor

* feat: pass prop

* fix: clean up validation stuff

* feat: allow zod `input` as optional ts field

* fix: try except logic hack

* fix: rename input -> inputValidator for consistency

* chore: gen api

* fix: improve hack slightly

* chore: changelogs, versions

* feat: zod example

* chore: rework api a bit

* fix: tsc, allow schema to update

* fix: improve loading state

* fix: api cleanup, sqlc cleanup

* fix: initial mount

* chore: lint

* chore: lint

* chore: tsc

* fix: lint

* fix: unwind unneeded change

* [Python] Feat: Default additional metadata (#2876)

* Add doc about autoscaling workers (#2864)

* add doc for autoscaling workers

* oldest also in running stats

* chore(deps): bump google.golang.org/api from 0.262.0 to 0.263.0 (#2869)

Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.262.0 to 0.263.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.262.0...v0.263.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.263.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>

* chore(deps): bump github.com/getsentry/sentry-go from 0.41.0 to 0.42.0 (#2870)

Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.41.0 to 0.42.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: github.com/getsentry/sentry-go
  dependency-version: 0.42.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>

* chore(deps): bump hatchet-sdk in /examples/python/quickstart (#2871)

Bumps hatchet-sdk from 1.22.10 to 1.22.11.

---
updated-dependencies:
- dependency-name: hatchet-sdk
  dependency-version: 1.22.11
  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>

* feat: default additional meta

* feat: wiring

* chore: changelog, version

* fix: copy

* feat: add default meta to stubs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: migration ver

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 11:38:25 -05:00
Gabe Ruttner a8afa07dcf fix: validate json at edges and dont retry on invalid (#2882)
* drop and validate at edges

* rm submod

* use enum

* lint
2026-01-29 08:04:55 -08:00
Gabe Ruttner da6dcf049a fix: typo (#2875) 2026-01-29 05:20:50 -08:00
matt 3c416ee949 Feat: OTel Collector (#2863)
* feat: initial otel collector work

* chore: vendor otel protos

* feat: add rate limiter for otelcol

* fix: clean up naming

* feat: shell implementation

* feat: add buf + generate protos

* fix: naming

* fix: naming

* chore: simplify a bit

* fix: rename logger

* fix: naming cleanup

* fix: rm unused var

* fix: rm unused struct

* chore: rm vendored stuff, don't need it apparently
2026-01-28 14:10:15 -05:00
matt 1a5ea825bc Fix: Make metrics in graph align with badge metrics (#2858)
* Revert "Revert "fix: make point metrics line up with badges (#2739)" (#2857)"

This reverts commit bc37fc7750.

* fix: naming
2026-01-27 10:36:19 -05:00
matt bc37fc7750 Revert "fix: make point metrics line up with badges (#2739)" (#2857)
This reverts commit 26689a1b0f.
2026-01-26 15:53:09 -05:00
Mohammed Nafees b48f4bc307 fix with coalesce (#2856) 2026-01-26 21:40:54 +01:00
matt 26689a1b0f fix: make point metrics line up with badges (#2739) 2026-01-26 14:54:20 -05:00
matt dcf1d377ca Feat: Add order by direction param to v1LogLineList (#2849)
* feat: add order by direction param

* fix: order ascending on existing fe

* chore: gen openapi
2026-01-26 14:01:03 -05:00
Mohammed Nafees 0a2b8944b3 more tenant related repo methods (#2854) 2026-01-26 19:54:01 +01:00
matt 2837573b6c [Go] Feat: Webhooks feature client for the Go SDK (#2792)
* feat: webhooks feature client

* feat: add webhook client

* feat: add v1 webhook client

* feat: example

* fix: webhook client impl

* fix: example + error handling + other client

* fix: missing webhook resources

* chore: gen
2026-01-23 11:04:34 -05:00
Gabe Ruttner ffd0941dc3 fix: list concurrency strategies queries (#2838)
* fixes

* lint
2026-01-21 13:56:01 -08:00
matt b093cc4878 Feat: Add search and levels to logs API (#2835)
* feat: add log levels and search query to log query

* feat: pass levels, search through

* feat: add log level to query

* feat: wire up levels and search query
2026-01-21 14:27:47 -05:00
Gabe Ruttner 81eb3f43b9 fix: flaky integration test (#2834)
* disable cache

* simpler fix
2026-01-21 09:10:35 -08:00
abelanger5 a6e88074de refactor: have log line lookups use external id (#2822)
* fix: modify log line query to use external id

* pass in task external id
2026-01-20 11:17:06 -05:00
Mohammed Nafees 6eba6fa91f Billing changes (#2643)
* make changes for billing

* progress around redesign

* meter callback

* modify limits

* upcoming subscription

* fix lint

* fix payment methods

* fix build

* PR comments

* address PR comments

* update cloud contracts

* fix migration name

* fix json serialization error

* loader and fixed for managed compute

* PR comments

* upgrade Go version

* fix migration name

* fix CI

* fix lint CI

* golangci-lint fix

* dedicated subscription
2026-01-19 12:15:11 +01:00
Mohammed Nafees a0233964db New onboarding flow (#2757)
Updates the onboarding flow to make it CLI-based.
2026-01-16 10:09:44 -05:00
abelanger5 584ba47044 feat: hatchet cli (#2701)
Creates a new CLI for Hatchet! 

- `hatchet profile [add|remove|list|show|update]` - allows managing multiple profiles, like `local` and `cloud`
- `hatchet server [start|stop]` - manages a Hatchet instance locally via docker
- `hatchet quickstart` - generates quickstart directory, similar to `create-react-app`  
- `hatchet worker dev` - creates a filewatcher for a Hatchet instance and automatically injects profile token from a selected profile. Uses a `hatchet.yaml` file in the current directory 
- `hatchet worker run` - runs a script for triggering a workflow using `hatchet.yaml`
- `hatchet tui` - creates the TUI interface
2026-01-13 13:35:43 -05:00
matt 3981626804 Fix: Concurrency display on workflow page (#2780)
* chore: add task concurrency

* feat: wire up new concurrency field

* feat: clean up table

* feat: some page cleanup

* chore: cleanup

* chore: revert python changes

* feat: code highlighter

* chore: lint
2026-01-12 15:44:44 -05:00
matt ebe2f9acfd Feat: Add additional meta to the run detail getter (#2770)
* feat: add additional meta to proto

* feat: propagate metadata

* feat: expand test

* fix: wiring

* chore: version

* chore: lint
2026-01-12 13:46:16 -05:00
matt 6fcd064414 fix: statement timeout (#2774) 2026-01-11 11:43:40 -05:00
Michał Kostrzewa a19a5b8ed5 fix: actually reconnect to postgres if conn fails. (#2772)
Co-authored-by: abelanger5 <belanger@sas.upenn.edu>
2026-01-10 17:28:37 -05:00
matt 09dd9dfbf7 fix: worker id (#2773) 2026-01-10 16:59:44 -05:00
matt 73229b0e21 Feat: Run detail getter on the engine (#2725)
* feat: initial rpc

* chore: gen python

* feat: add more fields

* chore: gen again

* fix: finish cleaning up python

* feat: start wiring up api

* fix: panic

* feat: start implementing getters

* fix: improve api

* feat: expand return type a bit

* feat: more wiring

* feat: more wiring

* fix: finish wiring up input reads

* fix: admin client cleanup

* fix: ordering

* fix: add all_finished param

* feat: wire up all finished

* fix: propagate allfinished

* fix: propagate external ids

* chore: gen protos again

* fix: one more thing

* chore: rename

* chore: rename

* chore: fix typing

* fix: cleanup

* feat: add queued default

* fix: wiring

* feat: running check

* fix: query

* chore: rm print

* fix: edge case handling

* feat: python test

* feat: add `done` field

* feat: pass `done` through

* fix: test done flag

* fix: cleanup

* fix: handle cancelled

* refactor: clean up implementations of status handling

* fix: feedback

* fix: done logic

* fix: export run status

* fix: couple small bugs

* fix: handle done

* fix: properly extract input

* fix: bug with sequential dags

* refactor: improve performance of lookup query slightly

* refactor: add helpers on V1StepRunData for getting input + parsing bytes

* refactor: create listutils internal package

* refactor: status derivation

* fix: rm unused method

* fix: sqlcv1 import

* fix: error log

* fix: 404 on not found

* feat: changelog, async method
2026-01-08 12:44:01 -05:00
abelanger5 32188b5a85 fix: better error on deprecated endpoints (#2763) 2026-01-08 11:32:14 -05:00
matt 479aaa9d2f fix: un-hard-code location (#2760) 2026-01-07 18:01:40 -05:00
matt b3f92ef597 fix: payload location issue (#2759) 2026-01-07 17:17:40 -05:00
matt cce3ab5e7c Fix: Child runs counts missing filter (#2744)
* fix: propagate parent external id through to count query

* chore: remove duplicate olap overwrite sql
2026-01-07 14:19:29 -05:00
abelanger5 6920ec1b61 revert: UI version removal (#2756)
* revert: UI version removal

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-06 14:16:42 -05:00
Andrei Gaspar 4dda2b2884 Send create:user Event from OAuth Flow (#2683)
* feat: Send create:user event from OAuth flow

* feat: Implement user and tenant creation events in callbacks

* move callback into cb.Do

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2026-01-06 14:06:38 -05:00
Mohammed Nafees 7d662d42a4 use try advisory for replat tasks (#2755) 2026-01-06 17:16:06 +01:00
abelanger5 1f2dd277e7 refactor: set a connection-level statement timeout (#2750)
* refactor: set a connection-level statement timeout

* reset to 30 seconds instead of 0

* remove comment

* use connections with larger statement timeouts for certain queries
2026-01-05 20:20:09 -05:00
abelanger5 9f463e92d6 refactor: move v1 packages, remove webhook worker references (#2749)
* chore: move v1 packages, remove webhook worker references

* chore: move msgqueue

* fix: relative paths in sqlc.yaml
2026-01-02 11:42:40 -05:00
abelanger5 f24c34ccfb chore: clean up buffer config and remove package (#2748)
* chore: clean up config options

* update docs
2026-01-02 11:42:29 -05:00
abelanger5 f82d3bd071 refactor: consolidate repository methods (#2730)
* refactor: remove v0 paths from codebase

* remove uiVersion references

* refactor: remove v0-exclusive database queries

* remove webhook test

* chore: move api token repository

* chore: move dispatcher repository to v1

* chore: move health repository to v1

* chore: remove event repository

* remove some unused repositories

* chore: move mq implementation to v1

* chore: consolidate rate limit implementations

* chore: move security check to v1 repository

* chore: move slack to v1 repository

* chore: move sns implementation to v1 repository

* clean up step repository

* chore: move tenant invite to v1 repository

* chore: move limits, workers, tenant alerts to v1 repository

* chore: move user, tenant, userSession to v1 repository

* chore: move ticker to v1 repository

* chore: move scheduled workflows to v1 repository

* chore: remove workflows

* fix: remove pointer for limits config file

* propagate cache value to api token

* propagate cache durations
2025-12-31 16:35:46 -05:00
abelanger5 f57ebf7546 refactor: remove v0-exclusive database queries (#2729)
* refactor: remove v0 paths from codebase

* remove uiVersion references

* refactor: remove v0-exclusive database queries

* remove webhook test
2025-12-31 09:36:12 -05:00
abelanger5 dd9c36c315 refactor: remove v0 paths from codebase (#2728)
* refactor: remove v0 paths from codebase

* remove uiVersion references
2025-12-30 09:57:00 -05:00