forked from triggerdotdev/trigger.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
feat(supervisor): wide events + warm-start trace propagation #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
deepshekhardas
wants to merge
347
commits into
main
Choose a base branch
from
pr/3669-supervisor-events
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
347 commits
Select commit
Hold shift + click to select a range
2135dc5
chore(claude): Improve claude code instructions (#3161)
ericallam a09038b
Feature(webapp): new User and Project onboarding questions (#3109)
samejr 2af5c86
chore(repo): Dispatch new-release to www.trigger.dev repo to generate…
ericallam 540e1c8
feat: Input Streams - Bidirectional task communication (#3146)
ericallam a9163df
chore(docker): Pin goose in Dockerfile to v3.26.0 (#3163)
ericallam b192b71
Feat(webapp): add create custom dashboard button to metrics page (#3095)
samejr dee6f1d
fix(batch): move batch queue global rate limiter to worker consumer l…
ericallam e36b757
chore: release v4.4.2 (#3127)
github-actions[bot] e954a2c
docs: realtime input streams (#3153)
ericallam c5ce297
fix: Add repo flag when for updating the docker link during release (…
ericallam c013322
docs: update batch trigger concurrency limits (#3171)
ericallam e49ccc1
feat(buildExtensions): syncSupabaseEnvVars build extension (#3152)
0ski 5f359be
feature: Errors page (#3172)
matt-aitken d30ed34
Logs query use_query_condition_cache=1 (#3186)
matt-aitken 6f6523f
chore(repo): remove unnecessary "trigger.dev v4.4.2" header from the …
ericallam e64b101
feat(webapp): Add test payload AI generation to the test page based o…
ericallam d1ea8d8
Fix(webapp) onboarding fixes (#3189)
samejr 436f20e
feat(cli): auto-cancel dev runs on CLI exit via detached watchdog (#3…
ericallam c0b6309
chore: release v4.4.3 (#3182)
github-actions[bot] fef6d18
chore: add @edosrecki to vouched contributors (#3203)
ericallam b8766e7
fix(webapp): strip secure param from query ClickHouse URL (#3204)
edosrecki 21fdb52
docs: deprecate syncVercelEnvVars extension and add conflict warning …
isshaddad fea8ae4
feat(webapp): self serve preview branches and team members (#3201)
samejr 8108683
vouch chengzp (#3212)
ericallam d4d8d9f
fix(engine): add additional error logging around triggering runs (#3211)
ericallam 440c16c
chore(repo): add agentcrumbs.dev support (#3206)
ericallam 59ff68b
chore(vouch): add bharathkumar39293 (#3217)
ericallam 2c688ca
chore(repo): Add new contributing guidelines and auto-close outside P…
ericallam 7672e8d
fix(run-queue): prevent concurrency keys from bloating master queue s…
ericallam 2406e85
RunEngine readme updates (#3223)
matt-aitken cf0e1ff
Vouched: bhekanik (#3227)
matt-aitken f98e274
feat(webapp): allow version downgrades via promote API (#3214)
chengzp dbbe9f7
feat(cli): Expand and improve the MCP server and dev CLI command (#3224)
ericallam 411803e
fix(engine): lockless waitpoint insert for batch items to eliminate l…
ericallam 1cfc296
feat(ai): LLM metrics tracking and AI span inspector (#3213)
ericallam 35298ac
Impersonating run and clearing fix (#3144)
matt-aitken 54d95ee
feat: AI prompt management dashboard and enhanced span inspectors (#3…
ericallam 88f7550
Vouched: jrossi (#3247)
matt-aitken d4772b5
feat: run annotations (#3241)
myftija f86e492
feat(vercel): Flow to support Vercel's template deployment (#3229)
0ski 774007e
fix(mcp): get_run_details only caches completed runs (#3253)
ericallam c00dae0
feat(mcp): add get_span_details tool (#3255)
ericallam 7f9b046
docs: Fixes and realtime improvements (#3265)
D-K-P 2037254
Feat(webapp) AI screen UI improvements (#3269)
samejr 947f33d
fix: downgrade queue size limit errors to warnings (#3243)
ericallam 1a6481a
feat: add Model Registry feature with catalog pipeline, dashboard pag…
ericallam 97d2f72
feat(supervisor): schedule-tree node affinity (#3271)
myftija efcafdf
fix(webapp): filter dev environments by userId in OrganizationsPresen…
ericallam 3855948
feat: replicate trigger_source, root_trigger_source, and is_warm_star…
myftija 922a852
fix(Vercel): Initial deployment fix (#3263)
0ski cd7d759
fix(webapp): Only show bright title text on the right hand inspector …
samejr 8244ac6
feat(Notifications): Platform notifications for CLI and Dashboard (#…
0ski 21cf8f9
fix(webapp): disable resizable panel cookie saves to prevent large co…
ericallam efe24f9
feat(private-link): Add private links UI (#3264)
0ski 2366b21
fix(private-links): Private Links plans adjustments (#3285)
0ski 9cb3dcb
feat(supervisor): compute workload manager (#3114)
nicktrn 66b7010
feat(webapp): Org level feature flags for Private Links (#3287)
0ski 7210bde
feat(supervisor): custom tolerations for scheduled runs (#3297)
myftija 5447cf4
feat(webapp): admin UI for feature flag overrides (#3291)
nicktrn b075678
fix(llm-catalog): refresh default model pricing on sync (#3281)
ericallam 0e63f83
feat: add ttl support at task and config levels (#3196)
nicktrn a340728
feat(engine): enqueue fast path; skip the queue under certain conditi…
ericallam 1307d97
fix(webapp): match environment when searching env variables (#3302)
myftija 2ba77d8
fix: add build step to @internal/compute package (#3303)
nicktrn 0977c56
Errors (versions) (#3187)
matt-aitken 2637e47
docs: add migration guide from n8n to Trigger.dev (#3283)
isshaddad 68e88d0
Object Storage seamless migration (#3275)
matt-aitken f75d4d6
docs: Remove old idempotencyKey warning (#3306)
D-K-P bf736a7
Feat(webapp): Models page UI improvements (#3308)
samejr 0e14b6d
TaskRun optimizations: dropping FKs and some indexes (#3309)
matt-aitken ed64042
feat(private-links): Show assigned IPs for provisioned private links …
0ski f1f1d02
feat(dashboard): a few tweaks to the AI models page (#3315)
ericallam e31b03e
fix(webapp): Responsive improvements for the onboarding screens (#3318)
samejr cf0fdde
Feat(webapp): animated resizable panel (#3319)
samejr 4f2ff3d
fix(wabapp): Fix for wrapping text on run inspector (#3328)
samejr def21b2
fix(batch): retry R2 upload on transient failure in BatchPayloadProce…
matt-aitken bd41bb2
feat(webapp): set application_name on prisma connections (#3348)
nicktrn e59614a
feat(webapp): gate microvm regions behind compute access feature flag…
nicktrn 3c9647c
feat(webapp): Platform notifications admin imporovements (#3324)
0ski 5ea36e0
chore: release v4.4.4 (#3228)
github-actions[bot] 4d7fbf0
docs: add task-level and config-level TTL documentation (#3200)
nicktrn 417ab87
fix(batch-queue): Batch items that hit the environment queue size lim…
ericallam c09983e
docs(cli): Expand and improve the MCP server and dev CLI command (#3225)
ericallam ed0c3e4
fix: stop creating TaskRunTag records and join table entries during t…
ericallam f739a5c
fix(db): add index to ProjectAlertStorage to prevent sequence scans (…
ericallam f2b1b76
docs: add list deployments endpoint, fix defaultMachine, and clarify …
isshaddad c37bb9a
docs: add Nango OAuth integration guide (#3262)
isshaddad 57a634e
docs: note retry.onThrow as a parallel wait (#3248)
isshaddad 8b4ac45
docs: add Bun runtime setup for Sentry error tracking (#3233)
isshaddad 54d22e9
docs: add per-task middleware section to tasks overview (#3197)
isshaddad b8ce693
docs: adds deduplication key clarification (#3151)
isshaddad f0f4527
docs: added startup_timeout_sec note (#3124)
isshaddad 7fdb2c4
docs: troubleshooting and additional packages version pinning (#3092)
isshaddad 097fab0
feat(webapp): Vercel integration - disable auto promotions (#3376)
0ski 73ea586
fix(run-engine): distinguish oneTimeUseToken P2002 from idempotency k…
ericallam 7d82041
fix(security): upgrade Remix packages 2.1.0 → 2.17.4 (#3372)
devin-ai-integration[bot] 7c95207
fix(run-engine): Stop querying for associated run tags during dequeue…
ericallam 0c33de8
chore: add Devin bot to vouch list and skip draft requirement (#3396)
ericallam 93f2ca6
feat(webapp): extend admin workers endpoint and unify admin api auth …
nicktrn f5b4d34
chore: allow Devin bot in claude-code-action workflows (#3401)
ericallam 02d2334
fix(webapp): fix Redis connection leak in realtime streams and broken…
ericallam 94abe97
fix(webapp): prevent dashboard crash when span accessory text is not …
ericallam 79b6053
feat(server): add TaskIdentifier registry to replace expensive distin…
ericallam 67d2025
feat(webapp): add 60s/60s SWR cache to getEntitlement (#3388)
ericallam ff290df
perf(run-engine): merge dequeue snapshot creation into taskRun.update…
devin-ai-integration[bot] 9636e43
fix(webapp): reduce error-level log noise for handled/benign cases (#…
ericallam 45ba398
Error page graph: for a time bucket don't fill zeros for a version wi…
matt-aitken 69acdc2
fix(core): truncate large error stacks and messages to prevent OOM (#…
ericallam 581db83
feat(webapp): highlight microVM regions on the regions page (#3407)
nicktrn 9a988ab
chore(webapp): clarify admin feature flags are global (#3408)
nicktrn 7d7ebdd
feat: Increase default project limit per org from 10 to 25 (#3409)
isshaddad 6e6deb4
Admin endpoint to set concurrency burst factor (#3412)
matt-aitken 881288c
feat(webapp): deprecate v3 CLI deploys server-side (#3415)
ericallam be6b490
docs: skills page update (#3418)
D-K-P de3b9a1
docs: document secret env vars and Vercel sync behavior (#3419)
isshaddad 03e4d5f
feat(webapp,database): API key rotation grace period (#3420)
ericallam b570586
fix(webapp): allow cancelling runs in DEQUEUED status from the runs l…
nicktrn 7c95ee4
feat(webapp): tag Prisma spans with db.datasource attribute (#3422)
ericallam 2d3b2e8
feat(run-engine): flag to route getSnapshotsSince through read replic…
ericallam 8eb596f
fix(vercel): Fix vercel settings page (#3424)
0ski fc71e7d
fix: handle fast-completion race in batch streaming seal check (#3427)
matt-aitken 87b6716
fix(helm): support webapp serviceAccount annotations for IRSA (#3429)
nicktrn 486f497
fix(webapp): eliminate SSE abort-signal memory leak (#3430)
ericallam cbb1f35
chore(helm): bump appVersion to v4.4.4 (#3432)
devin-ai-integration[bot] 41434b5
feat(webapp): admin Back Office tab with org API rate limit editor (#…
isshaddad ca39956
feat(webapp): add per-worker Node.js heap metrics (#3437)
ericallam 3446be7
ci: automate helm chart release alongside package release (#3439)
nicktrn f7aefb7
fix: disable RunQueue Worker in priority tests to prevent partial-bat…
matt-aitken 496ac78
feat(supervisor): optional ndots override for runner pods (#3441)
myftija 8aa1e55
test: e2e auth baseline tests + webapp testcontainer infrastructure (…
matt-aitken 8dd1fc1
docs: document auth.withAuth scoped authentication helper (#3436)
isshaddad d205955
chore: vouch for ThullyoCunha (#3444)
nicktrn 2ce981d
chore: add GautamBytes to vouch list (#3447)
ericallam 5693b62
fix(webapp): propagate abort signal through realtime proxy fetch (#3442)
ericallam 4dced14
chore: fix CONTRIBUTING.md setup steps and scope db:seed to webapp (#…
ericallam e8f1a7a
fix(helm): expand CLICKHOUSE_PASSWORD in webapp CLICKHOUSE_URL via ku…
ThullyoCunha 9e99c81
ci: skip privileged PR jobs on fork PRs (#3458)
nicktrn 91fd8a8
chore(security): close dependabot alerts q2 (#3456)
nicktrn 4b28080
feat: add `isReplay` to run context (#3454)
devin-ai-integration[bot] e134da7
fix(run-engine): debounce hot-key lock contention and 5xx feedback lo…
ericallam c69e939
feat: Sessions - bidirectional durable agent streams (#3417)
ericallam fefe61f
ci(helm): roll prereleases on main pushes + manual trigger (#3461)
nicktrn 5fe72ee
feat(webapp): Private Links setup wizard UI tweaks (#3465)
0ski 1a7943c
feat(docs): Private Links official documentation (#3466)
0ski dac9c83
chore(webapp,run-engine): downgrade boundary log noise to warn (#3462)
ericallam 99dfee3
fix(webapp): honor RevokedApiKey grace window for public access token…
ericallam b013135
fix(webapp): constrain usage chart height to 320px (#3469)
devin-ai-integration[bot] 226b93e
fix(webapp): preserve filters on queues page action redirects (#3471)
nicktrn 8e368cc
docs: add compute private beta page (#3472)
nicktrn f173659
feat(webapp): apply default repository policy on ECR repo creation (#…
ThullyoCunha 04b4d85
fix(webapp): allow JWT auth on POST /api/v1/sessions (#3474)
ericallam 24de77c
docs: call out compute private beta limitations (#3479)
nicktrn 19c1675
feat(webapp): errors page polish and GA rollout (#3477)
D-K-P ac7177d
feat(schedule-engine): stop persisting per-tick schedule state (#3476)
ericallam e2b9e0f
feat(cli-v3): add --no-browser flag and examples to init/login --help…
nicktrn 1dfd595
fix(webapp): invalid HTML nesting in errors Activity tooltip (#3488)
D-K-P 7c7d785
Don't log waitpoint output when resolving (#3490)
matt-aitken 39baea8
ci: pin actions to SHAs and add dependabot config (#3494)
nicktrn ee3887a
feat(webapp): configurable deploy template machine presets (#3492)
nicktrn d825427
chore: release v4.4.5 (#3406)
github-actions[bot] cb94382
ci: vouch dependabot[bot] (#3496)
nicktrn 139cccf
fix: update pnpm-lock.yaml for v4.4.5 release (#3498)
ericallam 30bd567
fix: sync declarative schedules on deployment rollback (#3468)
devin-ai-integration[bot] 1acdc50
chore: bump helm chart version to 4.4.5 (#3500)
nicktrn 04bdf4b
perf(webapp): throttle PAT + OAT lastAccessedAt writes to once per 5 …
ericallam 1594080
ci: swap buildjet/setup-node for actions/setup-node v6.4.0 (#3497)
nicktrn 706a0b8
chore: upgrade pnpm to 10.33.2 with security hardening (#3489)
nicktrn b65a04e
fix(cli,core): stop dev workers spinning at 100% CPU after parent CLI…
ericallam 57cca97
docs: refresh compute private beta page with may 1 updates (#3502)
nicktrn b19cf6d
ci: add actionlint workflow (#3503)
nicktrn cad8791
chore: make changeset:version atomic (#3505)
nicktrn dc98ae4
chore: clean up stranded .server-changes/ files from v4.4.5 (#3509)
ericallam 8c56d85
fix(helm): supervisor OTLP endpoint resolves cross-namespace (#3504)
nicktrn 45ec23c
feat(webapp): app auto session logout (#3473)
samejr 5dab2ae
docs(private links): refresh PrivateLink setup screenshots, add Elast…
0ski 3d418a9
ci: add zizmor workflow security scanner (#3506)
nicktrn 386b4f6
feat(webapp): per-org S2 basin migration (#3516)
ericallam a8966a4
fix(helm): bump clickhouse subchart 9.3.7 -> 9.4.4 (clickhouse 25.7.5…
nicktrn 14920ce
fix(webapp): downgrade expected user-input error logs to warn (#3523)
d-cs 31999af
perf(webapp): trim BackgroundWorker.metadata to the schedule slice on…
ericallam 6e8b039
ci: GHCR commit-SHA tag, OCI labels, and build provenance (#3528)
myftija 62e0066
fix(cli): fail attempt on uncaught exception instead of hanging to ma…
matt-aitken 3e6458f
ci(claude): switch Claude Code actions to ANTHROPIC_API_KEY (#3532)
ericallam 749dc46
feat(webapp): link Sentry events to OTel traces via trace_id (#3531)
d-cs 61ae67c
fix(webapp): stop leaking exception messages on 5xx API responses (#3…
d-cs f8ddb76
feat: Plain customer cards (#2933)
isshaddad 3cb6b5e
docs(bun): note WebSocket limitation with remote browser connections …
isshaddad f7a2bc7
Feat(webapp) filters UX update (#3451)
samejr ead1e5a
feat(webapp): reload LLM pricing registry on Redis pub/sub (#3534)
ericallam 6cdd881
fix(webapp): Fix for resizable side panel getting stuck at its min-si…
samejr 567e2a2
feat(webapp,redis): handle READONLY / LOADING during ElastiCache fail…
ericallam a5ba406
feat(webapp,redis): handle UNBLOCKED during ElastiCache role change (…
ericallam 2b84545
feat(webapp): admin back-office editors for org max projects and batc…
isshaddad 5f1a3e1
refactor(run-engine): route TTL expiration through the batch path onl…
ericallam 2301ed6
refactor(run-engine): make taskIdentifier optional on run-queue messa…
ericallam 1e4b896
Fix(webapp): Notification style updates (#3553)
samejr 41a486e
chore: release v4.4.6 (#3501)
github-actions[bot] 8e675a4
fix(core): retry TASK_PROCESS_SIGSEGV under the user's retry policy (…
matt-aitken 3cbe9f2
chore: add .claude/REVIEW.md with CI drift check (#3561)
ericallam e4981d1
feat(webapp): consolidate auth path + add comprehensive auth tests (#…
matt-aitken e8ef374
fix(webapp,run-engine): honor per-queue length cap on concurrency-key…
ericallam 5c4e064
chore(docker): disable ClickHouse system log tables in local dev (#3565)
ericallam 6b0e78f
chore: raise REVIEW.md drift-audit turn budget and steer selective sa…
ericallam 759214e
fix(webapp): Evict legacy resizable-panel localStorage on client boot…
samejr b23740b
docs(self-hosting): NodeLocal DNS and ClickHouse task events (#3568)
isshaddad d144220
ci: path-based skip and gate job in pr_checks (#3615)
nicktrn 8ba067d
feat(webapp): preserve admin tabs search query between Users and Orga…
nicktrn be1a6cf
feat: Sessions primitive — durable run-aware streams + dashboard
ericallam 09f5354
fix(core): cap idempotencyKey length at the API boundary (#3560)
d-cs 979655c
feat: Sessions dashboard, task_kind, and chat-ready hardening (1/4) (…
ericallam 9caf4ce
ci: skip typecheck for workflow-only PRs (#3619)
nicktrn b62c8a1
ci: add dependabot weekly summary workflow (#3616)
nicktrn 16720a5
feat(sdk): chat.agent — runtime + browser transport
ericallam a97365d
feat(sdk): chat.agent — runtime + browser transport (2/4) (#3543)
ericallam 5022769
fix(webapp): retry on version collision when initializing a deploymen…
d-cs 23ff763
feat(webapp): agent-view dashboard for chat.agent runs
ericallam 16538f6
feat(webapp): agent-view dashboard for chat.agent runs (3/4) (#3545)
ericallam 8673d42
feat: ai-chat reference project + MCP agent-chat tooling
ericallam 15b7cde
feat: ai-chat reference project + MCP agent-chat tooling (4/4) (#3546)
ericallam e59291e
docs(ai-chat): clarify local setup with .env.example (#3623)
ericallam 0510fd6
ci: skip typecheck for refs and non-code file PRs (#3624)
nicktrn ac02c0f
fix(core): drop unique-symbol brand on LocalsKey to fix dual-package …
ericallam bff4b46
fix(webapp): log Google auth conflict as warn instead of error (#3627)
d-cs 454f0c9
perf(webapp): cache task metadata in Redis for the trigger hotpath (#…
ericallam 4c42f6c
feat(webapp,core,cli): filter runs by region in dashboard, API, and M…
ericallam dfa3ede
feat(ci): support release candidates via changesets pre mode (#3628)
ericallam eedde27
chore: rewrite v4.5.0 release content around AI Agents (#3629)
ericallam 5788573
chore: enter prerelease mode (rc) to ship v4.5.0-rc.0 (#3630)
ericallam 032b5a1
fix(clickhouse): renumber task_kind migration 029 → 031 (#3631)
ericallam 05d3ab1
docs(clickhouse): require max+1 numbering and idempotent DDL (#3633)
ericallam a8280f1
ci: fix code path filter negation (#3637)
nicktrn 627e059
feat(trigger-sdk): add streamBaseURL to TriggerChatTransport (#3641)
ericallam 55fa2d4
fix(cli): TRIGGER_BUILD_SKIP_REWRITE_TIMESTAMP escape hatch for local…
ericallam 9623e88
fix(webapp): collapse Prisma P1001 errors into a single Sentry issue …
d-cs f88d401
fix(webapp): dedupe realtimeStreams array push on stream create (#3653)
ericallam 82853de
feat(webapp,core,sdk,cli): bound session.out via per-turn trim (#3644)
ericallam 6c9f1f1
chore: parameterize docker host ports and wire s2-lite by default (#3…
ericallam 906d5fa
feat(mollifier): trigger burst smoothing — Phase 1 (monitoring) (#3614)
d-cs 8b98e21
fix(sdk,core): cache realtime-stream credentials per slot with refres…
ericallam 427d9e0
feat(sdk): functional baseURL and fetch override on chat transports (…
ericallam 02d61af
fix(webapp): sanitize OTel attributes on ClickHouse JSON parse reject…
0ski 5dacab0
fix: validate email format on magic link login (#3660)
nicktrn 2f261e5
fix(webapp): catch loader/action throws before Remix serializes them …
d-cs e825409
ci(release): exit changeset pre mode before snapshot prerelease (#3665)
ericallam 2fbac48
feat(webapp): prompt to clear TRIGGER_VERSION on disabling Vercel ato…
0ski 436b7a9
fix(webapp): fold S2 token scope into access-token cache key (#3668)
ericallam 5a3a442
feat(supervisor): wide-event module + kill switch
nicktrn 4361370
feat(supervisor): wide events on dequeue + warm-start trace
nicktrn 570d648
feat(supervisor): wide events on workload server + sockets
nicktrn 671b137
fix(supervisor): wide-event review fixes + noisy-routes flag + socket…
nicktrn File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| --- | ||
| "@trigger.dev/sdk": patch | ||
| "@trigger.dev/core": patch | ||
| "@trigger.dev/build": patch | ||
| "trigger.dev": patch | ||
| --- | ||
|
|
||
| Add Agent Skills for `chat.agent`. Drop a folder with a `SKILL.md` and any helper scripts/references next to your task code, register it with `skills.define({ id, path })`, and the CLI bundles it into the deploy image automatically — no `trigger.config.ts` changes. The agent gets a one-line summary in its system prompt and discovers full instructions on demand via `loadSkill`, with `bash` and `readFile` tools scoped per-skill (path-traversal guards, output caps, abort-signal propagation). | ||
|
|
||
| ```ts | ||
| const pdfSkill = skills.define({ id: "pdf-extract", path: "./skills/pdf-extract" }); | ||
|
|
||
| chat.skills.set([await pdfSkill.local()]); | ||
| ``` | ||
|
|
||
| Built on the [AI SDK cookbook pattern](https://ai-sdk.dev/cookbook/guides/agent-skills) — portable across providers. SDK + CLI only for now; dashboard-editable `SKILL.md` text is on the roadmap. | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| --- | ||
| "@trigger.dev/sdk": minor | ||
| --- | ||
|
|
||
| **AI Prompts** — define prompt templates as code alongside your tasks, version them on deploy, and override the text or model from the dashboard without redeploying. Prompts integrate with the Vercel AI SDK via `toAISDKTelemetry()` (links every generation span back to the prompt) and with `chat.agent` via `chat.prompt.set()` + `chat.toStreamTextOptions()`. | ||
|
|
||
| ```ts | ||
| import { prompts } from "@trigger.dev/sdk"; | ||
| import { generateText } from "ai"; | ||
| import { openai } from "@ai-sdk/openai"; | ||
| import { z } from "zod"; | ||
|
|
||
| export const supportPrompt = prompts.define({ | ||
| id: "customer-support", | ||
| model: "gpt-4o", | ||
| config: { temperature: 0.7 }, | ||
| variables: z.object({ | ||
| customerName: z.string(), | ||
| plan: z.string(), | ||
| issue: z.string(), | ||
| }), | ||
| content: `You are a support agent for Acme. | ||
|
|
||
| Customer: {{customerName}} ({{plan}} plan) | ||
| Issue: {{issue}}`, | ||
| }); | ||
|
|
||
| const resolved = await supportPrompt.resolve({ | ||
| customerName: "Alice", | ||
| plan: "Pro", | ||
| issue: "Can't access billing", | ||
| }); | ||
|
|
||
| const result = await generateText({ | ||
| model: openai(resolved.model ?? "gpt-4o"), | ||
| system: resolved.text, | ||
| prompt: "Can't access billing", | ||
| ...resolved.toAISDKTelemetry(), | ||
| }); | ||
| ``` | ||
|
|
||
| **What you get:** | ||
|
|
||
| - **Code-defined, deploy-versioned templates** — define with `prompts.define({ id, model, config, variables, content })`. Every deploy creates a new version visible in the dashboard. Mustache-style placeholders (`{{var}}`, `{{#cond}}...{{/cond}}`) with Zod / ArkType / Valibot-typed variables. | ||
| - **Dashboard overrides** — change a prompt's text or model from the dashboard without redeploying. Overrides take priority over the deployed "current" version and are environment-scoped (dev / staging / production independent). | ||
| - **Resolve API** — `prompt.resolve(vars, { version?, label? })` returns the compiled `text`, resolved `model`, `version`, and labels. Standalone `prompts.resolve<typeof handle>(slug, vars)` for cross-file resolution with full type inference on slug and variable shape. | ||
| - **AI SDK integration** — spread `resolved.toAISDKTelemetry({ ...extra })` into any `generateText` / `streamText` call and every generation span links to the prompt in the dashboard alongside its input variables, model, tokens, and cost. | ||
| - **`chat.agent` integration** — `chat.prompt.set(resolved)` stores the resolved prompt run-scoped; `chat.toStreamTextOptions({ registry })` pulls `system`, `model` (resolved via the AI SDK provider registry), `temperature` / `maxTokens` / etc., and telemetry into a single spread for `streamText`. | ||
| - **Management SDK** — `prompts.list()`, `prompts.versions(slug)`, `prompts.promote(slug, version)`, `prompts.createOverride(slug, body)`, `prompts.updateOverride(slug, body)`, `prompts.removeOverride(slug)`, `prompts.reactivateOverride(slug, version)`. | ||
| - **Dashboard** — prompts list with per-prompt usage sparklines; per-prompt detail with Template / Details / Versions / Generations / Metrics tabs. AI generation spans get a custom inspector showing the linked prompt's metadata, input variables, and template content alongside model, tokens, cost, and the message thread. | ||
|
|
||
| See [/docs/ai/prompts](https://trigger.dev/docs/ai/prompts) for the full reference — template syntax, version resolution order, override workflow, and type utilities (`PromptHandle`, `PromptIdentifier`, `PromptVariables`). |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| --- | ||
| "@trigger.dev/sdk": patch | ||
| --- | ||
|
|
||
| Add `ai.toolExecute(task)` so you can wire a Trigger subtask in as the `execute` handler of an AI SDK `tool()` while defining `description` and `inputSchema` yourself — useful when you want full control over the tool surface and just need Trigger's subtask machinery for the body. | ||
|
|
||
| ```ts | ||
| const myTool = tool({ | ||
| description: "...", | ||
| inputSchema: z.object({ ... }), | ||
| execute: ai.toolExecute(mySubtask), | ||
| }); | ||
| ``` | ||
|
|
||
| `ai.tool(task)` (`toolFromTask`) keeps doing the all-in-one wrap and now aligns its return type with AI SDK's `ToolSet`. Minimum `ai` peer raised to `^6.0.116` to avoid cross-version `ToolSet` mismatches in monorepos. |
This file was deleted.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| Reject overlong `idempotencyKey` values at the API boundary so they no longer trip an internal size limit on the underlying unique index and surface as a generic 500. Inputs are capped at 2048 characters — well above what `idempotencyKeys.create()` produces (a 64-character hash) and above any realistic raw key. Applies to `tasks.trigger`, `tasks.batchTrigger`, `batch.create` (Phase 1 streaming batches), `wait.createToken`, `wait.forDuration`, and the input/session stream waitpoint endpoints. Over-limit requests now return a structured 400 instead. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| --- | ||
| "@trigger.dev/sdk": minor | ||
| --- | ||
|
|
||
| Adds `onBoot` to `chat.agent` — a lifecycle hook that fires once per worker process picking up the chat. Runs for the initial run, preloaded runs, AND reactive continuation runs (post-cancel, crash, `endRun`, `requestUpgrade`, OOM retry), before any other hook. Use it to initialize `chat.local`, open per-process resources, or re-hydrate state from your DB on continuation — anywhere the SAME run picking up after suspend/resume isn't enough. | ||
|
|
||
| ```ts | ||
| const userContext = chat.local<{ name: string; plan: string }>({ id: "userContext" }); | ||
|
|
||
| export const myChat = chat.agent({ | ||
| id: "my-chat", | ||
| onBoot: async ({ clientData, continuation }) => { | ||
| const user = await db.user.findUnique({ where: { id: clientData.userId } }); | ||
| userContext.init({ name: user.name, plan: user.plan }); | ||
| }, | ||
| run: async ({ messages, signal }) => | ||
| streamText({ model: openai("gpt-4o"), messages, abortSignal: signal }), | ||
| }); | ||
| ``` | ||
|
|
||
| Use `onBoot` (not `onChatStart`) for state setup that must run every time a worker picks up the chat — `onChatStart` fires once per chat and won't run on continuation, leaving `chat.local` uninitialized when `run()` tries to use it. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| --- | ||
| "@trigger.dev/sdk": minor | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| **AI Agents** — run AI SDK chat completions as durable Trigger.dev agents instead of fragile API routes. Define an agent in one function, point `useChat` at it from React, and the conversation survives page refreshes, network blips, and process restarts. | ||
|
|
||
| ```ts | ||
| import { chat } from "@trigger.dev/sdk/ai"; | ||
| import { streamText } from "ai"; | ||
| import { openai } from "@ai-sdk/openai"; | ||
|
|
||
| export const myChat = chat.agent({ | ||
| id: "my-chat", | ||
| run: async ({ messages, signal }) => | ||
| streamText({ model: openai("gpt-4o"), messages, abortSignal: signal }), | ||
| }); | ||
| ``` | ||
|
|
||
| ```tsx | ||
| import { useChat } from "@ai-sdk/react"; | ||
| import { useTriggerChatTransport } from "@trigger.dev/sdk/chat/react"; | ||
|
|
||
| const transport = useTriggerChatTransport({ task: "my-chat", accessToken, startSession }); | ||
| const { messages, sendMessage } = useChat({ transport }); | ||
| ``` | ||
|
|
||
| **What you get:** | ||
|
|
||
| - **AI SDK `useChat` integration** — a custom [`ChatTransport`](https://sdk.vercel.ai/docs/ai-sdk-ui/transport) (`useTriggerChatTransport`) plugs straight into Vercel AI SDK's `useChat` hook. Text streaming, tool calls, reasoning, and `data-*` parts all work natively over Trigger.dev's realtime streams. No custom API routes needed. | ||
| - **First-turn fast path (`chat.headStart`)** — opt-in handler that runs the first turn's `streamText` step in your warm server process while the agent run boots in parallel, cutting cold-start TTFC by roughly half (measured 2801ms → 1218ms on `claude-sonnet-4-6`). The agent owns step 2+ (tool execution, persistence, hooks) so heavy deps stay where they belong. Web Fetch handler works natively in Next.js, Hono, SvelteKit, Remix, Workers, etc.; bridge to Express/Fastify/Koa via `chat.toNodeListener`. New `@trigger.dev/sdk/chat-server` subpath. | ||
| - **Multi-turn durability via Sessions** — every chat is backed by a durable Session that outlives any individual run. Conversations resume across page refreshes, idle timeout, crashes, and deploys; `resume: true` reconnects via `lastEventId` so clients only see new chunks. `sessions.list` enumerates chats for inbox-style UIs. | ||
| - **Auto-accumulated history, delta-only wire** — the backend accumulates the full conversation across turns; clients only ship the new message each turn. Long chats never hit the 512 KiB body cap. Register `hydrateMessages` to be the source of truth yourself. | ||
| - **Lifecycle hooks** — `onPreload`, `onChatStart`, `onValidateMessages`, `hydrateMessages`, `onTurnStart`, `onBeforeTurnComplete`, `onTurnComplete`, `onChatSuspend`, `onChatResume` — for persistence, validation, and post-turn work. | ||
| - **Stop generation** — client-driven `transport.stopGeneration(chatId)` aborts mid-stream; the run stays alive for the next message, partial response is captured, and aborted parts (stuck `partial-call` tools, in-progress reasoning) are auto-cleaned. | ||
| - **Tool approvals (HITL)** — tools with `needsApproval: true` pause until the user approves or denies via `addToolApprovalResponse`. The runtime reconciles the updated assistant message by ID and continues `streamText`. | ||
| - **Steering and background injection** — `pendingMessages` injects user messages between tool-call steps so users can steer the agent mid-execution; `chat.inject()` + `chat.defer()` adds context from background work (self-review, RAG, safety checks) between turns. | ||
| - **Actions** — non-turn frontend commands (undo, rollback, regenerate, edit) sent via `transport.sendAction`. Fire `hydrateMessages` + `onAction` only — no turn hooks, no `run()`. `onAction` can return a `StreamTextResult` for a model response, or `void` for side-effect-only. | ||
| - **Typed state primitives** — `chat.local<T>` for per-run state accessible from hooks, `run()`, tools, and subtasks (auto-serialized through `ai.toolExecute`); `chat.store` for typed shared data between agent and client; `chat.history` for reading and mutating the message chain; `clientDataSchema` for typed `clientData` in every hook. | ||
| - **`chat.toStreamTextOptions()`** — one spread into `streamText` wires up versioned system [Prompts](https://trigger.dev/docs/ai/prompts), model resolution, telemetry metadata, compaction, steering, and background injection. | ||
| - **Multi-tab coordination** — `multiTab: true` + `useMultiTabChat` prevents duplicate sends and syncs state across browser tabs via `BroadcastChannel`. Non-active tabs go read-only with live updates. | ||
| - **Network resilience** — built-in indefinite retry with bounded backoff, reconnect on `online` / tab refocus / bfcache restore, `Last-Event-ID` mid-stream resume. No app code needed. | ||
|
|
||
| See [/docs/ai-chat](https://trigger.dev/docs/ai-chat/overview) for the full surface — quick start, three backend approaches (`chat.agent`, `chat.createSession`, raw task), persistence and code-sandbox patterns, type-level guides, and API reference. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| --- | ||
| "@trigger.dev/sdk": minor | ||
| --- | ||
|
|
||
| Add read primitives to `chat.history` for HITL flows: `getPendingToolCalls()`, `getResolvedToolCalls()`, `extractNewToolResults(message)`, `getChain()`, and `findMessage(messageId)`. These lift the accumulator-walking logic that customers building human-in-the-loop tools were re-implementing into the SDK. | ||
|
|
||
| Use `getPendingToolCalls()` to gate fresh user turns while a tool call is awaiting an answer. Use `extractNewToolResults(message)` to dedup tool results when persisting to your own store — the helper returns only the parts whose `toolCallId` is not already resolved on the chain. | ||
|
|
||
| ```ts | ||
| const pending = chat.history.getPendingToolCalls(); | ||
| if (pending.length > 0) { | ||
| // an addToolOutput is expected before a new user message | ||
| } | ||
|
|
||
| onTurnComplete: async ({ responseMessage }) => { | ||
| const newResults = chat.history.extractNewToolResults(responseMessage); | ||
| for (const r of newResults) { | ||
| await db.toolResults.upsert({ id: r.toolCallId, output: r.output, errorText: r.errorText }); | ||
| } | ||
| }; | ||
| ``` |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| "@trigger.dev/sdk": patch | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| Stamp `gen_ai.conversation.id` (the chat id) on every span and metric emitted from inside a `chat.task` or `chat.agent` run. Lets you filter dashboard spans, runs, and metrics by the chat conversation that produced them — independent of the run boundary, so multi-run chats correlate cleanly. No code changes required on the user side. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "trigger.dev": patch | ||
| --- | ||
|
|
||
| Add `TRIGGER_BUILD_SKIP_REWRITE_TIMESTAMP=1` escape hatch for local self-hosted builds whose buildx driver doesn't support `rewrite-timestamp` alongside push (e.g. orbstack's default `docker` driver). |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| Fix `LocalsKey<T>` type incompatibility across dual-package builds. The phantom value-type brand no longer uses a module-level `unique symbol`, so a single TypeScript compilation that resolves the type from both the ESM and CJS outputs (which can happen under certain pnpm hoisting layouts) no longer sees two structurally-incompatible variants of the same type. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "trigger.dev": patch | ||
| --- | ||
|
|
||
| The CLI MCP server's agent-chat tools (`start_agent_chat`, `send_agent_message`, `close_agent_chat`) now run on the new Sessions primitive, so AI assistants driving a `chat.agent` get the same idempotent-by-`chatId`, durable-across-runs behavior the browser transport gets. Required PAT scopes go from `write:inputStreams` to `read:sessions` + `write:sessions`. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "trigger.dev": patch | ||
| --- | ||
|
|
||
| MCP `list_runs` tool: add a `region` filter input and surface each run's executing region in the formatted summary. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| --- | ||
| "@trigger.dev/sdk": patch | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| Unit-test `chat.agent` definitions offline with `mockChatAgent` from `@trigger.dev/sdk/ai/test`. Drives a real agent's turn loop in-process — no network, no task runtime — so you can send messages, actions, and stop signals via driver methods, inspect captured output chunks, and verify hooks fire. Pairs with `MockLanguageModelV3` from `ai/test` for model mocking. `setupLocals` lets you pre-seed `locals` (DB clients, service stubs) before `run()` starts. | ||
|
|
||
| The broader `runInMockTaskContext` harness it's built on lives at `@trigger.dev/core/v3/test` — useful for unit-testing any task code, not just chat. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| --- | ||
| "@trigger.dev/redis-worker": patch | ||
| --- | ||
|
|
||
| Add MollifierBuffer and MollifierDrainer primitives for trigger burst smoothing. | ||
|
|
||
| MollifierBuffer (`accept`, `pop`, `ack`, `requeue`, `fail`, `evaluateTrip`) is a per-env FIFO over Redis with atomic Lua transitions for status tracking. `evaluateTrip` is a sliding-window trip evaluator the webapp gate uses to detect per-env trigger bursts. | ||
|
|
||
| MollifierDrainer pops entries through a polling loop with a user-supplied handler. The loop survives transient Redis errors via capped exponential backoff (up to 5s), and per-env pop failures don't poison the rest of the batch — one env's blip is logged and counted as failed for that tick. Rotation is two-level: orgs at the top, envs within each org. The buffer maintains `mollifier:orgs` and `mollifier:org-envs:${orgId}` atomically with per-env queues, so the drainer walks orgs → envs directly without an in-memory cache. The `maxOrgsPerTick` option (default 500) caps how many orgs are scheduled per tick; for each picked org, one env is popped (rotating round-robin within the org). An org with N envs gets the same per-tick scheduling slot as an org with 1 env, so tenant-level drainage throughput is determined by org count rather than env count. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@trigger.dev/plugins": patch | ||
| --- | ||
|
|
||
| The public interfaces for a plugin system. Initially consolidated authentication and authorization interfaces. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| { | ||
| "mode": "pre", | ||
| "tag": "rc", | ||
| "initialVersions": { | ||
| "coordinator": "0.0.1", | ||
| "docker-provider": "0.0.1", | ||
| "kubernetes-provider": "0.0.1", | ||
| "supervisor": "0.0.1", | ||
| "webapp": "1.0.0", | ||
| "@trigger.dev/build": "4.4.6", | ||
| "trigger.dev": "4.4.6", | ||
| "@trigger.dev/core": "4.4.6", | ||
| "@trigger.dev/plugins": "4.4.6", | ||
| "@trigger.dev/python": "4.4.6", | ||
| "@trigger.dev/react-hooks": "4.4.6", | ||
| "@trigger.dev/redis-worker": "4.4.6", | ||
| "@trigger.dev/rsc": "4.4.6", | ||
| "@trigger.dev/schema-to-json": "4.4.6", | ||
| "@trigger.dev/sdk": "4.4.6" | ||
| }, | ||
| "changesets": [] | ||
| } |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@trigger.dev/core": patch | ||
| --- | ||
|
|
||
| Retry `TASK_PROCESS_SIGSEGV` task crashes under the user's retry policy instead of failing the run on the first segfault. SIGSEGV in Node tasks is frequently non-deterministic (native addon races, JIT/GC interaction, near-OOM in native code, host issues), so retrying on a fresh process often succeeds. The retry is gated by the task's existing `retry` config + `maxAttempts` — same path `TASK_PROCESS_SIGTERM` and uncaught exceptions already use — so tasks without a retry policy still fail fast. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| "@trigger.dev/core": patch | ||
| "@trigger.dev/sdk": patch | ||
| --- | ||
|
|
||
| Add `region` to the runs list / retrieve API: filter runs by region (`runs.list({ region: "..." })` / `filter[region]=<masterQueue>`) and read each run's executing region from the new `region` field on the response. |
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Changeset describes 'Agent Skills for chat.agent' but the PR implements supervisor wide events and warm-start trace propagation. This changeset would create an inaccurate changelog entry and trigger patch bumps for packages that may not have corresponding code changes in this PR.
Prompt for AI agents