Repository navigation
feat(temporal): support node activity heartbeat timeouts - #201
Open
tbrandenburg wants to merge 1 commit into
Open
tbrandenburg wants to merge 1 commit into
tbrandenburg wants to merge 1 commit into
Conversation
tbrandenburg
requested review from
librowski,
lukasz-jazwa,
piotrblaszczyk and
szymon-t-sc
as code owners
October 2, 2026 21:07
10 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extract the optional node-activity
heartbeatTimeoutsupport from #148, as requested in #148 (comment).The production change is limited to the profile type, existing duration validation, and forwarding the optional timeout to
proxyActivities. Executors use Temporal's nativeContext.current().heartbeat()andcancellationSignal; the documentation includes a shell-backed example. A minor changeset is included for@workflowbuilder/temporal.This is based on current upstream
mainand has no agent-harness, provider, task-queue routing, or copied Archon implementation dependency. It addresses the heartbeat-related request, not the complete agent-harness feature in #147.End-to-end evidence
Three integration tests run the actual Workflow Builder plugin and graph runner against a fresh local Temporal server, with real
sh/sleepsubprocesses and no mocked Temporal or process execution:cancelled, and does not execute downstream. The test requires cleanup within ten seconds, before its twenty-second command completes naturally.HEARTBEATtimeout in Event History within fifteen seconds, before the thirty-second start-to-close limit. The side-effecting step has one attempt and downstream does not execute.The README distinguishes worker liveness from subprocess progress, explains heartbeat throttling, and makes process-tree cleanup the executor's responsibility. Heartbeating is required for cancellation delivery; setting
heartbeatTimeoutis not itself required to receive cancellation.Validation conducted
pnpm install --frozen-lockfilepnpm --filter @workflowbuilder/temporal test— 172 tests passed, including real-server heartbeat checks and replay coverage for prior histories.pnpm test— 1,943 tests passed across ten workspace suites.pnpm --filter @workflowbuilder/temporal typecheckpnpm lintandpnpm lint:stylestools/**/*.mjs.pnpm exec eslint tools --max-warnings=0andpnpm test:tools— 8 tests passed.pnpm build:temporalpnpm dlx publint@0.3.24andpnpm dlx @arethetypeswrong/cli@0.18.5 --pack --profile esm-onlyinpackages/temporal.pnpm exec changeset status— temporal minor bump.Repository-wide
pnpm typecheckfails with four existing errors inapps/docs/src/components/head.astroandsidebar.astro(video element types, sidebar types, andMobileMenuFooterresolution). Those files are identical to upstreammain, the lockfile is unchanged, and no docs-app source changes are included. The other fourteen workspace typechecks pass. The package-specific Temporal gate passes.