Commit Graph

529 Commits

Author SHA1 Message Date
matt 9ad051cd8f fix: doc location (#2082) 2025-08-04 19:42:54 -04:00
matt 1776648382 Fix: Webhook copy improvements (#2081)
* fix: webhook empty state

* feat: improve copy

* fix: one more copy fix

* fix: colors and icons
2025-08-04 16:11:42 -04:00
mrkaye97 16aaafafc1 Merge branch 'main' into v0.70.0 2025-08-04 12:23:12 -04:00
Gabe Ruttner 0ddd6a2852 feat: activity detection (#2055)
* feat: activity detection

* address comments
2025-07-31 07:54:15 -07:00
Mohammed Nafees 59888a9be8 fix string interpolation payment methods (#2072) 2025-07-31 14:43:45 +02:00
Mohammed Nafees e6c50ca1a0 Allow member roles to be changed by owners and admins (#2044)
* allow member roles to be changed by owners and admins

* PR comments

* chore: gen

* fix: rm changes to /next/

* chore: gen

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2025-07-30 17:42:34 -04:00
matt d6f8be2c0f Feat: OLAP Table for CEL Eval Failures (#2012)
* feat: add table, wire up partitioning

* feat: wire failures into the OLAP db from rabbit

* feat: bubble failures up to controller

* fix: naming

* fix: hack around enum type

* fix: typo

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

* fix: typos

* fix: migration name

* feat: log debug failure

* feat: pub message from debug endpoint to log failure

* fix: error handling

* fix: use ingestor

* fix: olap suffix

* fix: pass source through

* fix: dont log ingest failure

* fix: rm debug as enum opt

* chore: gen

* Feat: Webhooks (#1978)

* feat: migration + go gen

* feat: non unique source name

* feat: api types

* fix: rm cruft

* feat: initial api for webhooks

* feat: handle encryption of incoming keys

* fix: nil pointer errors

* fix: import

* feat: add endpoint for incoming webhooks

* fix: naming

* feat: start wiring up basic auth

* feat: wire up cel event parsing

* feat: implement authentication

* fix: hack for plain text content

* feat: add source to enum

* feat: add source name enum

* feat: db source name enum fix

* fix: use source name enums

* feat: nest sources

* feat: first pass at stripe

* fix: clean up source name passing

* fix: use unique name for webhook

* feat: populator test

* fix: null values

* fix: ordering

* fix: rm unnecessary index

* fix: validation

* feat: validation on create

* fix: lint

* fix: naming

* feat: wire triggering webhook name through to events table

* feat: cleanup + python gen + e2e test for basic auth

* feat: query to insert webhook validation errors

* refactor: auth handler

* fix: naming

* refactor: validation errors, part II

* feat: wire up writes through olap

* fix: linting, fallthrough case

* fix: validation

* feat: tests for failure cases for basic auth

* feat: expand tests

* fix: correctly return 404 out of task getter

* chore: generated stuff

* fix: rm cruft

* fix: longer sleep

* debug: print name + events to logs

* feat: limit to N

* feat: add limit env var

* debug: ci test

* fix: apply namespaces to keys

* fix: namespacing, part ii

* fix: sdk config

* fix: handle prefixing

* feat: handle partitioning logic

* chore: gen

* feat: add webhook limit

* feat: wire up limits

* fix: gen

* fix: reverse order of generic fallthrough

* fix: comment for potential unexpected behavior

* fix: add check constraints, improve error handling

* chore: gen

* chore: gen

* fix: improve naming

* feat: scaffold webhooks page

* feat: sidebar

* feat: first pass at page

* feat: improve feedback on UI

* feat: initial work on create modal

* feat: change default to basic

* fix: openapi spec discriminated union

* fix: go side

* feat: start wiring up placeholders for stripe and github

* feat: pre-populated fields for Stripe + Github

* feat: add name section

* feat: copy improvements, show URL

* feat: UI cleanup

* fix: check if tenant populator errors

* feat: add comments

* chore: gen again

* fix: default name

* fix: styling

* fix: improve stripe header processing

* feat: docs, part 1

* fix: lint

* fix: migration order

* feat: implement rate limit per-webhook

* feat: comment

* feat: clean up docs

* chore: gen

* fix: migration versions

* fix: olap naming

* fix: partitions

* chore: gen

* feat: store webhook cel eval failures properly

* fix: pk order

* fix: auth tweaks, move fetches out of populator

* fix: pgtype.Text instead of string pointer

* chore: gen

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-30 13:27:38 -04:00
Mohammed Nafees 78be038e1d update self hosting configuration options (#2039) 2025-07-24 13:15:42 +02:00
matt cca0999eea [Python]: Fixing logging bugs, fixing duped sleep key bug (#2040)
* feat: add flag to disable log capture

* fix: sleep bug with duped key

* fix: allow formatters to be passed through

* feat: support filters too

* fix: cruft

* chore: gen

* feat: changelog

* fix: lint

* [Python] Fix: Don't retry gRPC requests on 4xx (#2024)

* fix: dont retry on 4xx

* chore: ver

* fix: sleep conditions with index

* fix: bug in sleep conditions

* chore: gen
2025-07-23 15:15:31 -04:00
matt d3577e62fb Feat: Show filters on events FE (#2013)
* feat: first pass at filters view

* feat: improve popover

* fix: borders

* fix: properly hide filters

* fix: always show runs

* fix: breakpoints

* fix: no need to refetch filters

* feat: styling improvements

* fix: eslint is silly

* fix: show workflow id

* fix: tailwind styling
2025-07-20 22:47:47 -04:00
matt c202ec8359 Feat: CEL Debug Endpoint (#2010)
* feat: openapi spec + gen

* feat: scaffold cel service

* feat: impl with discriminated union

* fix: reversed

* chore: gen py

* chore: gen + add cel to hatchet client

* feat: wire up TS CEL client

* chore: versions

* feat: impl for go

* fix: error handling

* feat: python tests
2025-07-20 22:44:08 -04:00
Matt Kaye f1f276f6dc Feat: Python task unit tests (#1990)
* feat: add mock run methods for tasks

* feat: docs

* feat: first pass at unit tests

* cleanup: split out tests

* feat: pass lifespan through

* fix: rm comment

* drive by: retry on 404 to help with races

* chore: changelog

* chore: ver

* feat: improve logging everywhere

* chore: changelog

* fix: rm print cruft

* feat: print statement linter

* feat: helper for getting result of a standalone

* feat: docs for mock run

* feat: add task run getter

* feat: propagate additional metadata properly

* chore: gen

* fix: date

* chore: gen

* feat: return exceptions

* chore: gen

* chore: changelog

* feat: tests + gen again

* fix: rm print cruft
2025-07-17 13:54:40 -04:00
Mohammed Nafees b4544f170e Add notice that prom metrics only work with v1 tenants (#2017)
* add notice that prom metrics only work with v1 tenants

* lint fix
2025-07-17 17:54:35 +05:30
Matt Kaye 02601fa0ef Fix: Replay bugs (#2001)
* fix: dedupe tasks before replaying

* fix: two toasts

* fix: send workflow run external id through

* fix: send messages to queue immediately

* fix: clean up types

* fix: dedupe

* fix: return task ids instead of workflow ones
2025-07-16 11:42:36 -04:00
Matt Kaye b4e96f301b fix: handle unauthed (#2009) 2025-07-16 11:42:27 -04:00
Matt Kaye 4676ae8508 FIx: Feedback on replay / cancel (#1997)
* feat: return a response from replays

* fix: return correct thing

* feat: wire up cancel + replay toasts on FE

* fix: naming

* fix: other refs

* fix: linter setup
2025-07-15 13:29:52 -04:00
Matt Kaye 62dee6d3f6 Fix: One more routing issue (#1993)
* fix: restart tutorial redirect

* fix: clear queries on tenant switch

* fix: linter
2025-07-14 17:30:44 -04:00
Mohammed Nafees 1c035887e1 Fix popover contents to have word wrap, sanitized input and max width (#1966)
* fix wordwrap and width of popover content

* address pr comments

* no need for verbose

* fix lint

* better styling

* fix lint

* no inline styles please

* fix lint

* use tailwind breakpoint classes instead
2025-07-11 16:41:38 -04:00
Mohammed Nafees c86a65bb0f Add new streaming support to Go SDK (#1955)
* add Go SDK streaming support

* make docs changes for go sdk streaming

* fix git lfs warning

* streaming go example

* fix lint

* fix auto generated snip

* revert poetry lock changes

* some cleanup
2025-07-11 18:00:30 +02:00
Matt Kaye 1302d62957 Hotfix: Add available slots back to worker page (#1983)
* fix: add available slots to worker page

* fix: add runtime info to py sdk

* chore: ver

* chore: changelog
2025-07-11 10:17:18 -04:00
Matt Kaye 9b39ac92e4 Feat: Improve metrics feature client (#1976)
* feat: add optional replacement to remove null unicode char

* feat: rework metrics client

* feat: rm unused

* chore: changelog

* chore: gen

* feat: add tenant prom metrics scraper

* feat: docs

* chore: changelog, naming

* fix: lint

* fix: type

* fix: pass replacement through
2025-07-10 11:50:55 -04:00
Matt Kaye fde5cf26cd Hotfix: Tenant switching bugs (#1971)
* fix: use the jotai atom for last tenant instead of custom local storage

* fix: rm console
2025-07-10 08:32:47 -04:00
Matt Kaye 63004ec9ab Feat: Add workflow delete API to workflows client (#1970)
* feat: add workflow delete api to workflows client

* feat: add delete methods to workflows + runnables

* chore: docs gen
2025-07-09 16:20:21 -04:00
Matt Kaye 2cfb345dcf Feat: Handle unicode error, fix OTel error capturing (#1959)
* feat: raise illegal task output error out of the runner if we get a null unicode escape sequence

* feat: add helper for sanitizing outputs

* feat: improve error

* fix: lock index

* feat: use async stream method in example

* chore: ver

* chore: changelog

* fix: turns out we don't need to lock

* fix: return exception for instrumentation

* chore: changelog

* chore: bunch of generated crap

* fix: comment placement

* fix: copilot

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-09 14:18:41 -04:00
Matt Kaye 7c84c7f664 Fix: Persist tenant to local storage (#1965)
* fix: correctly read previous tenant

* fix: modify key

* fix: cleanup

* fix: cleanup

* fix: lint

* remove debug

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2025-07-09 13:08:47 -04:00
abelanger5 0fa6afe846 fix: data key in waterfall rows and truncate children (#1968) 2025-07-09 12:50:31 -04:00
abelanger5 75012adf7c fix: don't render on non-standalone task views (#1961) 2025-07-07 15:38:45 -04:00
Mohammed Nafees 33ec5fb7d8 add docs for Go SDK bulk operations (#1954) 2025-07-07 13:04:49 +02:00
Mohammed Nafees 1d5d638081 Add task start-dev-tmux (#1946)
* start-dev-tmux: start-dev with tmux support for clear output per process

* update instructions

* fix lint
2025-07-05 12:08:50 +02:00
abelanger5 6e820a120c feat: waterfall component (#1952)
* tmp: waterfall component

* feat: waterfall component

* address pr review comments
2025-07-04 14:47:30 -04:00
Matt Kaye cff9ffa794 Fix: More flashing metadata popovers (#1950)
* fix: signature, remove old component, fix scheduled runs flicker

* fix: the rest of them

* fix: lint
2025-07-04 09:29:26 -04:00
Matt Kaye d8d2e0b4d1 Hotfix: One more broken redirect (#1949)
* hotfix: tenanted path fix

* fix: actual fix

* fix: padding + spacing
2025-07-03 19:52:01 -04:00
Matt Kaye 3442c11106 Feat: Top-level stream consumer in the SDKs (#1917)
* feat: add stream sub on top level

* feat: clean up examples

* chore: gen

* feat: move stream onto the runs client in ts

* fix: examples

* chore: gen

* fix: circular import issues

* chore: lint

* feat: first pass at Next app

* fix: pull next out to top level

* fix: all the things

* fix: get it all wired up

* fix: imports

* fix: lint rule

* fix: just use js

* fix: revert tsconfig changes

* fix: check in pages

* fix: hangup event in streaming impl

* chore: gen

* chore: generate again, remove lots of nextjs stuff

* fix: one more ignore

* fix: gen

* fix: ignore

* fix: ugh

* fix: simplify a bunch

* fix: lint

* fix: rm gen cruft

* fix: changelog

* feat: implement list with pagination

* feat: add some tests

* feat: add warnings

* fix: update workflow / task methods

* chore: version

* feat: retries
2025-07-03 18:49:16 -04:00
Matt Kaye 7679732b15 Fix: Skipping conditions with multiple parents (#1948)
* fix: skipping bug

* fix: move `waits` -> `conditions`

* fix: refs

* chore: ver

* feat: add skipped task to test

* feat: start implementing or groups in wait for

* feat: test of or groups on durable context

* fix: lint

* chore: gen

* fix: lint

* fix: branching hell
2025-07-03 16:50:57 -04:00
Matt Kaye 7af4cfa3ab hotfix: sheet overflow (#1947) 2025-07-03 11:05:38 -04:00
Matt Kaye 8d467dee5c Fix: Remove task-runs route + lots of dead code (#1934)
* fix: unified runs page

* fix: nullish cases

* fix: rm `task-runs` page

* fix: nuke tons of unused code

* fix: un-nuke `/next/`

* Feat: Improve overflow / scroll behavior on table pages (#1937)

* feat: fix events view overflow

* fix: overflow

* fix: clean up runs view a bit

* fix: task runs table overflow

* fix: workflows view

* fix: worker table

* fix: lint + tsc

* fix: crons view

* fix: scheduled runs view

* fix: lint

* fix: rate limits view

* fix: change pagination options

* feat: first pass at new time range

* Revert "feat: first pass at new time range"

This reverts commit def610a12e.

* fix: remove ring

* fix: rm unused style

* feat: duration fix

* fix: clean up more table styling

* feat: improve metadata view

* fix: tsc

* feat: breadcrumbs

* feat: cleanup

* feat: janky metadata fix

* fix: copy

* fix: task run detail odd scroll behavior

* fix: workflow page
2025-07-03 09:15:39 -04:00
Mohammed Nafees 2ccd434ebf Add Prometheus metric for reassigned task total (#1943)
* add reassigned total metric

* lint fix
2025-07-03 10:52:20 +02:00
Mohammed Nafees 23773b85ce fix typo for cron name (#1940) 2025-07-02 19:24:42 +02:00
Matt Kaye 23bdbbd8a3 Feat: Tenant-in-path (#1923)
* chore: gen

* feat: hook for tenant

* feat: add tenanted routes

* fix: no need for v1 prefix

* feat: remove v1 routes

* fix: remove ui version switcher stuff

* fix: more broken redirects

* fix: start using hooks to fetch tenant

* fix: add (commented out) linting rules

* fix: sidebar

* fix: cruft comment

* fix: layout

* fix: collapsibles

* fix: more refs to v1 paths

* fix: more refs to hold hooks

* fix: more refs

* fix: last few

* fix: more redirects

* fix: rm more refs to `useOutletContext`

* fix: rm tenant-as-prop

* fix: small bugs

* fix: revert unintended changes

* fix: couple more

* fix: last few

* fix: last few

* fix: oooone more

* fix: redirects

* fix: add more redirects

* fix: clean up a bunch more redirects

* fix: copy paste

* fix: more redirects

* fix: zero value bug

* hack: don't set query param on v1

* fix: lint

* fix: copy

* fix: copy

* fix: lint

* fix: rm /next redirect

* make default engine version v1

* feat: crons with timezones

* fix: handle case where tenant is in path

* fix: more hard redirects

* fix: delete v0 cancellation test

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2025-07-01 11:56:54 -04:00
Mohammed Nafees ef498a6235 Introduce tenant Prometheus metrics (#1875)
* introduce tenant workflow completed metric

* expose tenant prom metrics via handler

* fix workflow and worker id in metrics

* correctly add workflow metrics from workflow controller

* use olap DB to gather information for workflow completion

* fix prom metrics endpoint for tenant

* workflow name from external id

* simplify tenant registry based metrics

* add docs for prometheus metrics

* fix docs lint

* run prettier fix

* WIP metrics work

* use federate prom server URL to proxy metrics

* implement workflow duration histogram metric

* separate prom stack docker compose

* fix duration metrics calls

* move scheduler metrics to prom tenant specific file

* update docs for prom metrics

* fix lint

* use proper indices to query for durations

* reorg tenant metrics

* fix lint for doc

* update docs with promql examples and casing around prom metrics enabled

* update prom server url

* fix lint

* enabled prom metrics for v1 only from controller
2025-06-27 11:46:31 -04:00
Matt Kaye 74e112e44f fix: shuffle sections around (#1914) 2025-06-27 08:41:23 -04:00
Matt Kaye a45816c6c2 Fix: Streaming + Misc SDK Fixes (#1903)
* fix: filters contracts + version bumps

* chore: gen

* feat: implement streaming for ts

* fix: v0 sdk side by side

* fix: optional status on semaphore slots

* fix: gen script

* chore: lint + gen

* chore: gen

* fix: fmt

* fix: revert changes

* feat: handle incorrect return types

* fix: worker status not assigned

* fix: improve handling of other types of pydantic models

* fix: handle null output case

* fix: get group key

* fix: info level log for non-retry

* fix: export non retry at top level

* fix: changelog

* chore: gen

* chore: gen
2025-06-26 17:42:34 -04:00
Matt Kaye 1cd12f24f8 Feat: Streaming Docs + Examples (#1912)
* feat: streaming examples + gen

* feat: more examples

* chore: gen again

* feat: fastapi example

* chore: gen

* feat: callout

* fix: typos

* fix: whoops - how did this work?

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-26 17:28:05 -04:00
Matt Kaye b92c1588ba [Blog]: FastAPI Background Tasks (#1877)
* feat: add alexander's header to old posts

* feat: first pass at FastAPI blog post

* fix: clean up

* fix: grammar

* chore: lint

* feat: wrap up blog

* fix: pub date

* fix: title
2025-06-26 12:46:28 -04:00
Matt Kaye a8a089fec2 Feat: Add scope filter to events page (#1902)
* feat: scope filter

* fix: return type
2025-06-25 13:26:19 -04:00
Matt Kaye 25a98cf372 Feat: Copy workflow config from run pages (#1901)
* feat: add workflow details to more responses

* send workflow version back with task summary

* feat: add copy to run page

* feat: wire up button on other pages

* fix: copy
2025-06-25 13:26:13 -04:00
Matt Kaye 2f33dd4dbd Feat: Misc. Python improvements + Streaming Improvements (#1846)
* fix: contextvars explicit copy

* feat: fix a ton of ruff errors

* fix: couple more ruff rules

* fix: ignore unhelpful rule

* fix: exception group in newer Python versions for improved handling

* fix: workflow docs

* feat: context docs

* feat: simple task counter

* feat: config for setting max tasks

* feat: graceful exit once worker exceeds max tasks

* fix: optional

* fix: docs

* fix: events docs + gen

* chore: gen

* fix: one more dangling task

* feat: add xdist in ci

* fix: CI

* fix: xdist fails me once again

* fix: fix + extend some tests

* fix: test cleanup

* fix: exception group

* fix: ugh

* feat: changelog

* Add Ruff linter callout to post

* refactor: clean up runner error handling

* feat: improved errors

* fix: lint

* feat: hacky serde impl

* fix: improve serde + formatting

* fix: logging

* fix: lint

* fix: unexpected errors

* fix: naming, ruff

* fix: rm cruft

* Fix: Attempt to fix namespacing issue in event waits (#1885)

* feat: add xdist in ci

* fix: attempt to fix namespacing issue in event waits

* fix: namespaced worker names

* fix: applied namespace to the wrong thing

* fix: rm hack

* drive by: namespacing improvement

* fix: delay

* fix: changelog

* fix: initial log work

* fix: more logging work

* fix: rm print cruft

* feat: use a queue to send logs

* fix: sentinel value to stop the loop

* fix: use the log sender everywhere

* fix: make streaming blocking, remove more thread pools

* feat: changelog

* fix: linting issues

* fix: broken test

* chore: bunch more generated stuff

* fix: changelog

* fix: one more

* fix: mypy

* chore: gen

* Feat: Streaming Improvements (#1886)

* Fix: Filter list improvements (#1899)

* fix: uuid validation

* fix: improve filter filtering

* fix: inner join

* fix: bug in workflow cached prop

* chore: bump

* fix: lint

* chore: changelog

* fix: separate filter queries

* feat: improve filter filtering

* fix: queries and the like

* feat: add xdist in ci

* feat: streaming test + gen

* feat: add index to stream event

* fix: rm langfuse dep

* fix: lf

* chore: gen

* feat: impl index for stream on context

* feat: tweak protos

* feat: extend test

* feat: send event index through queue

* feat: first pass + debug logging

* debug: fixes

* debug: more possible issues

* feat: generate new stream event protos

* feat: first pass at using an alternate exchange for replaying incoming stream events

* fix: exchange create timing

* fix: rm unused protos

* chore: gen

* feat: python cleanup

* fix: revert rabbit changes

* fix: unwind a bunch of cruft

* fix: optional index

* chore: gen python

* fix: event index nil handling

* feat: improve test

* fix: stream impl in sdk

* fix: make test faster

* chore: gen a ton more stuff

* fix: test

* fix: sorting helper

* fix: bug

* fix: one more ordering bug

* feat: add some tests for buffering logic

* feat: hangup test

* feat: test no buffering if no index sent

* fix: regular mutex

* fix: pr feedback

* fix: conflicts
2025-06-25 10:11:01 -04:00
Matt Kaye a887c62809 Fix: Store CreateWorkflowVersionOpts for debugging (#1890)
* feat: add json column for opts

* feat: wiring

* feat: send config through the api

* feat: FE

* fix: order

* fix: hide sched timeout

* fix: lint

* fix: return mutated opts

* fix: adv section

* fix: remove unnecessary headers

* feat: styling improvements to settings

* feat: styling, pt ii

* feat: styling, pt iii

* fix: cron
2025-06-23 16:56:22 -04:00
Mohammed Nafees ba5cba147d fix intro page links to subresources (#1888)
* fix intro page links to subresources

* fix all links
2025-06-23 07:59:44 -04:00
Gabe Ruttner 2f4d62d17a docs: run child to direct spawn (#1876) 2025-06-18 11:40:19 -07:00