Skip to content
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

docs: Upgrade to v4 guide #1873

Merged
merged 7 commits into from
Apr 9, 2025
Merged

docs: Upgrade to v4 guide #1873

merged 7 commits into from
Apr 9, 2025

Conversation

ericallam
Copy link
Member

@ericallam ericallam commented Apr 2, 2025

Summary by CodeRabbit

  • Documentation

    • Refined formatting for improved clarity and readability.
    • Updated the upgrade guide with a restructured overview and revised page references.
    • Expanded documentation for the "Wait for token" feature, including detailed usage instructions and examples.
  • New Features

    • Expanded the upgrade guide to highlight advanced task management improvements, including enhanced token handling, improved retry efficiency, task prioritization, and new operational hooks for streamlined workflows.
    • Introduced new features such as wait tokens, idempotency, and hidden tasks, along with a new locals API for data sharing.
    • Added a note indicating a feature exclusive to the v4 beta version with a link to the upgrade documentation.

Copy link
Contributor

coderabbitai bot commented Apr 2, 2025

Walkthrough

This pull request involves updates to multiple documentation files. The docs/docs.json file has been reformatted for improved readability and includes a page label update. The docs/upgrade-to-v4.mdx document has been extensively revised to provide a detailed overview of new features and changes in version 4, including wait tokens, idempotency, priority, global lifecycle hooks, middleware improvements, and SDK deprecations. The docs/snippets/upgrade-to-v4-note.mdx introduces a note about a feature exclusive to the v4 beta, while docs/wait-for-token.mdx expands on the "Wait for token" feature with detailed usage instructions and examples.

Changes

File(s) Summary
docs/docs.json Reformatted JSON structure for readability; updated page entry from "upgrading-beta" to "upgrade-to-v4".
docs/upgrade-to-v4.mdx Revised upgrade guide with new sections on wait tokens, wait idempotency, priority, lifecycle hooks, middleware updates, and deprecations.
docs/snippets/upgrade-to-v4-note.mdx Added a note indicating a feature is exclusive to the v4 beta version with a link to upgrade documentation.
docs/wait-for-token.mdx Expanded documentation for "Wait for token" feature, detailing usage, new functions, and examples for token management.

Possibly related PRs

Suggested reviewers

  • nicktrn

Poem

Oh, I’m a rabbit with a joyful pace,
Hopping through docs with a smile on my face,
New tokens and hooks, a vibrant new dance,
Upgrade to v4—oh what a chance!
In lines of code, we leap and prance!
🐇✨


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/upgrade-to-v4.mdx (7)

6-10: Introduction of "What's new in v4?" Section
The new section heading and brief introduction ("What's new in v4?") properly signal the start of detailed updates.
Consider replacing the placeholder “Link to blog post here” with an actual link once available.


10-25: "Wait tokens" Section Provides Clear Guidance
This section explains the new Wait tokens feature with a concise description and a helpful code snippet demonstrating how to create a token using wait.createToken.
The instructions are clear; however, you might consider adding a note or link to additional context on how to integrate the token (for example, sending it to Slack).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


36-47: Example for Waiting on a Token is Clear
The example using wait.forToken effectively illustrates how to wait for a token and handle the result.
Consider briefly mentioning potential error-handling strategies for when the token times out.


49-63: "Wait idempotency" Section Explains New Behavior
This section clearly demonstrates how to use idempotency keys with wait operations, including examples for waiting durations and child tasks.
A couple of wording tweaks could enhance the tone (e.g. “if you want to skip waits when retrying a task” could be phrased more politely), but the technical content is solid.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


75-93: Priority Feature Description is Detailed and Informative
The "Priority" section explains how to set a time-duration based priority to influence task execution order, and the concrete example clearly illustrates the concept.
Minor grammatical adjustments could be made for clarity, but overall the content is excellent.

🧰 Tools
🪛 LanguageTool

[style] ~77-~77: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


169-221: Middleware and Locals Enhancements Demonstrated Clearly
The detailed example showcasing the new middleware system and locals API (including functions like getDb and setDb) is very comprehensive.
A minor suggestion: consider revising the connecting/disconnecting log messages for additional clarity, and ensure punctuation (e.g., a comma before “and” in compound sentences) aligns with best style practices.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~171-~171: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


441-449: Installation Instructions are Clear with Multiple Package Manager Options
The Installation section now includes clear commands for npm, yarn, and pnpm.
Note: Consider revising “To opt-in to using v4” to “To opt in to using v4” (without the hyphen) for grammatical consistency.

🧰 Tools
🪛 LanguageTool

[grammar] ~443-~443: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb6d697 and af5ac70.

📒 Files selected for processing (2)
  • docs/docs.json (10 hunks)
  • docs/upgrade-to-v4.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~51-~51: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~77-~77: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~122-~122: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~171-~171: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~443-~443: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (20)
docs/docs.json (8)

21-27: JSON Formatting for "Getting started" Group Updated
The pages array for the "Getting started" group has been reformatted into a multi‐line structure, which improves readability without modifying any content.


34-38: Reformatted "Tasks" Group in Fundamentals
The nested "Tasks" group now displays its pages (overview, schemaTask, scheduled) on separate lines for clarity and consistent JSON styling.


53-58: Updated Formatting for "Wait" in Writing Tasks
The "Wait" subgroup has been reformatted to list its pages (wait, wait-for, wait-until, wait-for-token) vertically. This aids in clarity and aligns with the overall documentation style.


102-104: Enhanced Readability in the "Development" Group
The pages array under the "Development" group has been reformatted for better visual structure. No content changes were made.


168-173: Improved Formatting for "Using the Dashboard" Group
The "Using the Dashboard" category now has its pages presented in a clear multi‐line format, improving maintainability and ease of reading.


180-182: Updated Troubleshooting Reference to v4
The entry previously labelled something like "upgrading-beta" has been updated to "upgrade-to-v4" within the "Troubleshooting" group, ensuring consistency with the new version upgrade guide.


199-203: Refined "Help" Group Formatting
The pages under the "Help" group have been reformatted to a multi‐line structure. This improves visual clarity without any changes in functionality.


399-402: Consistent Reformatting of the API "openapi" Array
The "openapi" key now lists its file references on separate lines, which makes the JSON more maintainable and easier to review.

docs/upgrade-to-v4.mdx (12)

1-4: Frontmatter Update: Title and Description Revised
The frontmatter has been updated to clearly reflect the guide’s focus on upgrading to v4, with a new title and a descriptive summary. This sets the right context for the document.


27-34: Token Completion Example is Straightforward
The code snippet showing wait.completeToken is clear and demonstrates how to complete a token with an associated payload.
Everything looks good; the explanatory text is succinct and informative.


100-118: Global Lifecycle Hooks Section is Comprehensive
The examples for registering global lifecycle hooks using tasks.onStart, tasks.onSuccess, and tasks.onFailure are clear and effectively demonstrate the new capabilities.
The layout and code snippets foster easy understanding for developers integrating these hooks.


120-130: "init.ts" Section Clarifies Automatic Loading
The explanation and example for using an init.ts file to register global hooks are concise and easy to follow.
This section well illustrates how to leverage new initialization behavior.

🧰 Tools
🪛 LanguageTool

[style] ~122-~122: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


132-152: "onWait" and "onResume" Lifecycle Hooks Explained Well
The added hooks for handling pause and resume events (with onWait and onResume) are demonstrated with clear code examples.
The step-by-step explanation is beneficial for understanding how to execute tasks during wait states.


155-167: "onComplete" Hook Example is Clear and Concise
The example for the onComplete hook, which handles both successful and failed runs, is straightforward and meets the documentation’s goals.
It provides a good reference for integrating post-run logic.


223-247: "Hidden Tasks" Feature Clarifies Task Indexing Improvements
The updated examples show how tasks can be defined without being exported, enabling the creation of "hidden" tasks.
This explanation effectively communicates the new flexibility for task management.


277-307: Introduction of useWaitToken Hook for Frontend Integration
The section on the useWaitToken React hook is clear, with a well-structured code example that shows how to complete a wait token from the frontend.
The explanation and code sample work well together to illustrate the new functionality.


309-343: New ai.tool API Introduced Smoothly
The introduction of the ai.tool function, including the accompanying code snippet that converts a schemaTask into an AI tool, is well documented.
This section clarifies how to integrate AI-powered tool functionality within the SDK.


346-411: Enhanced AI Tool Customization with Experimental Options
The extended examples showing how to use experimental_toToolResultContent and access current tool options provide valuable insight into advanced configuration possibilities.
The code and accompanying explanations are detailed and should prove very useful to developers.


492-561: Deprecations Section Outlines API Changes Neatly
The deprecation details regarding @trigger.dev/sdk/v3, renaming handleError to catchError, and the removal of init are all clearly documented along with their code examples.
This section provides a smooth transition guideline for users migrating from the old API.


565-728: Comprehensive Documentation of Breaking Changes and Migration Steps
The "Breaking changes" section thoroughly documents alterations in queue management, concurrency behavior, lifecycle hook signatures, and context modifications.
The step-by-step migration instructions and code examples help users understand the required changes.
The inclusion of a warning about potential increased run concurrency is particularly useful.

Copy link

changeset-bot bot commented Apr 2, 2025

⚠️ No Changeset found

Latest commit: a93bad8

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (9)
docs/upgrade-to-v4.mdx (9)

6-9: "What's new in v4?" Section Introduction
The new section header and brief placeholder for the blog post are clear. Consider replacing the placeholder text (“Link to blog post here”) with the actual URL once available.


10-25: Wait Tokens – Feature Explanation and Example
The "Wait tokens" section provides a useful overview and clear code example for creating a token. One minor note: the introductory sentence (around line 12) might read more smoothly with a possessive apostrophe inserted (e.g. “waiting for a child task’s completion”) to improve clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


27-34: Wait Token Completion Example
The code sample demonstrating how to complete a token is concise and easy to follow. Additionally, consider inserting a comma in the descriptive text (as hinted by style tools) to improve readability.


49-71: Idempotency Key Usage Explanation
The section explains the idempotency feature well with helpful examples. A minor suggestion: in line 51, consider rephrasing to adopt a more neutral tone (for example, “if desired” instead of “if you want”) to improve the style.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


75-94: Priority Feature Section
The explanation on specifying a priority when triggering tasks is informative and includes practical code examples. A slight rewording at line 77 to adopt a more polite phrasing (for example, “if desired” rather than “if you want”) could further enhance readability. Also, clarifying that the priority value represents a time duration in seconds may be helpful.

🧰 Tools
🪛 LanguageTool

[style] ~77-~77: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


120-130: init.ts Auto-loading Documentation
The explanation of how an init.ts file is auto-loaded to register lifecycle hooks or initialize connections is clear. Consider softening the phrasing in line 122 for a friendlier tone.

🧰 Tools
🪛 LanguageTool

[style] ~122-~122: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


169-207: Improved Middleware and Locals API
This section clearly outlines the enhancements to the middleware system and the introduction of the locals API with detailed examples. The description is very informative. A minor grammatical improvement is suggested for the sentence at line 171—insert a comma before “and” to separate the independent clauses for improved readability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~171-~171: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


441-445: Installation Instructions – Phrasing Suggestion
The installation section is clear. However, in the introductory sentence (around line 443), consider using the verb form “opt in” (two words) rather than the noun/adjective “opt-in” to align with common usage.

🧰 Tools
🪛 LanguageTool

[grammar] ~443-~443: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


585-585: Punctuation Check in Queue Example
A static analysis tool flagged a potential missing comma in the queue definition example around this area. Please verify that the punctuation in the code snippet meets the intended style guidelines.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~585-~585: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between af5ac70 and 56731f0.

📒 Files selected for processing (2)
  • docs/docs.json (10 hunks)
  • docs/upgrade-to-v4.mdx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/docs.json
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~51-~51: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~77-~77: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~122-~122: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~171-~171: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~443-~443: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


[uncategorized] ~585-~585: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (23)
docs/upgrade-to-v4.mdx (23)

1-4: Front Matter Update and Clarity
The document’s front matter now correctly reflects the upgrade title and a new description. The title and description are clear and consistent with the content that follows.


36-47: Waiting for a Token Example
The example illustrating how to wait for a token is clear and demonstrates the expected behavior with proper error handling.


100-118: Global Lifecycle Hooks Overview
The new section on global lifecycle hooks is well structured, with clear examples for onStart, onSuccess, and onFailure. It effectively demonstrates the new flexibility offered by the hooks.


132-152: onWait and onResume Lifecycle Hooks
The section detailing the new onWait and onResume hooks is concise and well illustrated with an example. The instructions and code are clear and unambiguous.


155-167: onComplete Hook Example
The example under “onComplete” effectively demonstrates how to handle task completion callbacks, both for success and failure scenarios.


236-257: Hidden Tasks Feature
The explanation for defining “hidden” tasks is comprehensive. The dual examples (defining a task without exporting and creating a reusable task package) are both clear and useful for users looking to simplify task management.


264-275: Reusable Task Package Example
The example demonstrating how to create a package of reusable tasks is succinct and clear. It provides a good reference for incorporating reusable logic without explicit exports.


277-307: useWaitToken React Hook
The section on the new useWaitToken hook is very clear, effectively showing how tokens created in the backend can be used to complete waits from a React component. The code examples for both backend token creation and frontend hook usage are especially helpful.


309-344: ai.tool Functionality Overview
The documentation for the ai.tool function is clear. The provided example, which shows how to transform a schemaTask into an AI tool, makes the new functionality easily understandable.


346-411: Customizing Tool Result Content with experimental_toToolResultContent
This section thoroughly explains how to customize the content of the tool result using the experimental option with clear and detailed code examples.


413-432: Accessing the Current Tool Execution Options
The example demonstrating use of ai.currentToolOptions() is concise and practical. It clearly shows how to access current tool options within a task’s run function.


436-439: Additional Note on ai.tool Compatibility
The note regarding ai.tool compatibility with various schema implementations is informative and provides valuable context for users.


447-457: Dependency Installation Code Examples
The provided code examples for installing the SDK via npm, yarn, and pnpm are well formatted and correct. They effectively show the steps needed to update dependencies.


461-477: Trigger.dev CLI Installation Instructions
The instructions and code examples for installing and running the v4 version of the trigger.dev CLI are clear and comprehensive.


479-490: Including the Trigger.dev CLI in devDependencies
The package.json snippet clearly explains how to set up trigger.dev in devDependencies with the appropriate scripts for local development.


492-511: Deprecation Notices for Legacy APIs
The deprecation sections detailing the migration away from @trigger.dev/sdk/v3 and the renaming of handleError to catchError are clear and supported by illustrative code examples.


532-561: Deprecation of toolTask Function
The section explaining the deprecation of the toolTask function in favor of ai.tool is clear and effectively uses side-by-side code examples to show the change.


562-624: Breaking Changes – Queue Management
The guide clearly explains the new requirement to define queues ahead of time, with well-illustrated examples showing the proper usage. This is a significant breaking change, and the clear examples should help developers adjust their implementations.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~585-~585: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


626-653: Breaking Changes – Concurrency Management on Waits
The changes regarding the behavior of concurrency release during waits are well documented. The inclusion of a note explaining the potential impact on execution order is especially useful.


655-701: Lifecycle Hooks Signature Update
The updated lifecycle hooks signatures are clearly explained with comprehensive code examples covering all hooks. This unified parameter approach should simplify hook implementations for developers.


701-707: Context Object Changes
The modifications to the ctx object are concisely summarized. Clearly noting the removal of certain properties will help developers adjust their code accordingly.


708-719: Migration Guide for the New Run Engine
The step-by-step migration instructions for the new run engine are clear and actionable. They provide a practical roadmap for users to follow during the upgrade process.


722-728: Warning on Engine Migration and Concurrency Implications
The warning regarding the temporary increase in concurrently executing runs during engine migration is important and well explained. This section clearly communicates the potential impact and necessary caution for users.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/upgrade-to-v4.mdx (7)

10-15: Clarify the Wait Tokens Description
The introduction to wait tokens is informative. For clarity, consider rephrasing the sentence “...create and wait for a token to be completed...” to something like “...create a wait token and then wait for its completion...” to reduce potential ambiguity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


16-25: Well-Structured Code Example for wait.createToken
The provided TypeScript snippet clearly demonstrates how to create a wait token using wait.createToken. Adding an inline comment for each key configuration (e.g., explaining the timeout parameter) might further assist new users.


53-57: Idempotency Section – Tone and Clarity
The explanation for wait idempotency is clear. For a slightly more formal tone, consider rewording phrases such as “if you want to skip waits” to “if desired, you can skip waits.”

🧰 Tools
🪛 LanguageTool

[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


124-134: Minor Grammatical Adjustment for init.ts Section
Consider adjusting the text to say “if you create an init.ts file…” rather than “a init.ts file” to correct the article usage.

🧰 Tools
🪛 LanguageTool

[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


173-225: Improved Middleware and Locals – Consider Punctuation Refinement
The middleware and locals section is detailed and instructive. A small suggestion: review compound sentences (for example, adding a comma before “and” when connecting independent clauses) to further enhance readability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


445-449: Installation Instructions – Verb Usage Suggestion
Within the Installation section, consider changing “To opt‐in to using v4” to “To opt in to using v4” to correctly use the verb form.

🧰 Tools
🪛 LanguageTool

[grammar] ~447-~447: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


569-739: In-Depth Breaking Changes Overview
This section is very detailed and covers all critical changes (queue management, concurrency behavior, lifecycle hook signatures, context changes, and run engine migration). A suggestion for future documentation: a summary table or quick-reference guide might help users quickly identify the most impactful changes. Additionally, please recheck the explanation in the Priority section for consistency as noted earlier.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 56731f0 and a38886a.

📒 Files selected for processing (4)
  • docs/docs.json (10 hunks)
  • docs/snippets/upgrade-to-v4-note.mdx (1 hunks)
  • docs/upgrade-to-v4.mdx (1 hunks)
  • docs/wait-for-token.mdx (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • docs/snippets/upgrade-to-v4-note.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/docs.json
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~447-~447: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (32)
docs/upgrade-to-v4.mdx (20)

1-4: Front Matter is solid!
The title and description clearly communicate the guide’s content. A minor suggestion: please double-check that the description’s phrasing (“What's new in v4, how to upgrade, and breaking changes.”) matches your intended tone and style.


6-9: Clear Introduction with a Helpful Link
The new “What's new in v4?” section and the inclusion of the blog post link provide immediate context and additional background. Please verify that the linked blog post remains current and accessible.


27-34: Concise wait.completeToken Example
This snippet is straightforward and shows proper use of TypeScript generics. It might be useful to note that the same output type should also be used when waiting for the token later.


38-51: Effective wait.forToken Demonstration
The example clearly shows how to wait for the token and conditionally handle both success and error outcomes.


57-75: Comprehensive Idempotency Examples
The examples provided for using idempotency keys (with wait token creation, waiting for a duration, and for a child task) are thorough and helpful.


77-94: Priority Section – Verify and Clarify Calculation
The examples for triggering tasks with a specified priority are very useful. However, the description mentioning that “the run will win over runs … because its priority moved it 1 second ahead” may be confusing when the priority value is noted as 10. Please verify this explanation for consistency and consider clarifying exactly how the time offset is computed.

🧰 Tools
🪛 LanguageTool

[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


104-122: Clear Global Lifecycle Hooks Examples
The global lifecycle hooks examples are well presented and demonstrate each hook’s usage clearly.


136-157: Solid onWait and onResume Examples
These examples clearly illustrate how to handle task pauses and resumptions.


159-171: OnComplete Usage is Clear
The onComplete example is straightforward and effectively illustrates how to handle the final run state.


227-238: Usage of getDb Demonstrated Clearly
The example showing how to import and use getDb() within task run functions is clear and practical.


240-261: Hidden Tasks Explained Effectively (Part 1)
The explanation that tasks no longer have to be exported to be triggered is clear and the example is easy to follow.


269-279: Hidden Tasks Example for Reusable Packages
This snippet shows how to define reusable tasks without exporting them. It effectively communicates the intended behavior.


281-311: useWaitToken Section is Well-Illustrated
Both the backend token creation and the frontend usage with the useWaitToken hook are well documented.


313-347: Comprehensive ai.tool Example
The ai.tool example nicely demonstrates how to integrate with the Vercel AI SDK. All key aspects are covered in the snippet.


350-414: Detailed Customization with experimental_toToolResultContent
The example provided for customizing the tool result content is thorough and well explained.


417-436: Simple and Clear ai.currentToolOptions Example
The snippet for retrieving and logging tool execution options is concise and informative.


451-463: Clear Code Examples for Package Managers
The code examples for npm, yarn, and pnpm installation are clear and well formatted.


465-481: CLI Package Installation is Well Documented
The examples for installing and invoking the trigger.dev CLI with the v4-beta version are concise and useful.


485-494: DevDependencies Section is Clear
The JSON snippet for adding the CLI to devDependencies and configuring the dev script is straightforward.


496-565: Deprecations are Documented Clearly
The deprecation notes—including the migration from @trigger.dev/sdk/v3 to @trigger.dev/sdk and the renaming of hooks—are detailed and informative.

docs/wait-for-token.mdx (12)

1-4: Front Matter is Clear
The title “Wait for token” and the description “Wait until a token is completed.” set clear expectations for the document.


6-11: Contextual Upgrade Note Inclusion
Importing and rendering the UpgradeToV4Note component is a smart choice to inform readers about the v4 upgrade context. Please ensure this snippet stays up-to-date as the guide evolves.


12-15: Usage Section Introduction is Effective
The “Usage” section clearly leads into the examples. This introductory text sets up the subsequent examples well.


16-23: Clear wait.createToken Example
The code snippet for creating a wait token using wait.createToken is concise and demonstrates proper usage. Inline comments could be added for additional clarity if desired.


27-42: wait.forToken Usage is Well Demonstrated
The example clearly shows how to await token completion and handle both successful and timed-out outcomes.


44-53: Effective wait.completeToken Example
This snippet succinctly illustrates how to complete a wait token with a specified output, using TypeScript generics for clarity.


55-109: Comprehensive Documentation for wait.createToken
The detailed breakdown of parameters (including timeout, idempotency, and tags) along with example usage makes this section very valuable.


110-141: Thorough wait.completeToken Documentation
The parameters and return value documentation, paired with a clear code example, effectively explains how to use wait.completeToken.


144-225: Multi-Language Examples are a Great Addition
The examples provided for completing a token using curl, Python, Ruby, and Go make the documentation accessible to a wide audience.


228-285: wait.forToken Detailed Explanation
The parameter descriptions and the example for wait.forToken clarify its usage and the structure of its return value very well.


287-375: Insightful wait.listTokens Section
The documentation for wait.listTokens thoroughly covers available filters and demonstrates how to iterate over tokens, which will be especially useful for users managing many tokens.


377-440: Clear wait.retrieveToken Documentation
The section succinctly explains the parameters and expected return object for retrieving a token by ID, with a straightforward example.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/upgrade-to-v4.mdx (7)

53-57: Wait Idempotency Section – Tone Improvement
The idempotency example effectively illustrates how to pass an idempotency key and TTL. However, consider rephrasing phrases like “This can be useful if you want to skip waits when retrying a task” to a more neutral tone, for example: “This feature is valuable for skipping waits when retrying a task.”

🧰 Tools
🪛 LanguageTool

[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


79-86: Priority Section – Tone Adjustment Suggestion
The priority example is technically clear. To maintain a consistent and neutral tone, consider revising the sentence on line 81—replacing “if you want to ensure that certain tasks are executed before others” with a more formal phrasing such as “to guarantee that certain tasks are prioritized during execution.”

🧰 Tools
🪛 LanguageTool

[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


124-134: init.ts Example – Politeness and Clarity
The init.ts snippet demonstrates global initialization. A minor wording adjustment on line 126 could make the tone more neutral; for example, “This is useful for registering global lifecycle hooks or initializing dependencies” instead of using phrasing that may sound directive.

🧰 Tools
🪛 LanguageTool

[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


173-178: Improved Middleware and Locals – Punctuation Suggestion
The description of the middleware changes is detailed. Consider adding a comma before the conjunction “and” in the sentence describing how the middleware now “runs before/after all the other hooks” to improve readability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


445-447: Installation Section – Terminology Correction
In the Installation section (around line 447), the phrase “opt-in to using v4” is used. Note that “opt in” (two words) is the proper verb form, whereas “opt-in” is a noun. A small adjustment here can improve grammatical correctness.

🧰 Tools
🪛 LanguageTool

[grammar] ~447-~447: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


587-592: Queue Changes – Punctuation Enhancement
In the “Queue changes” subsection, a static analysis hint noted a possible missing comma (around line 589). Please review the sentence for proper punctuation to ensure clarity about how tasks specify a queue by name.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~589-~589: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


631-636: Releasing Concurrency on Waits – Punctuation Improvement
Similarly, in the “Releasing concurrency on waits” section, a static analysis warning suggests a missing comma (around line 633). Adding a comma in this sentence will clarify the description of the new default behavior regarding concurrency.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~633-~633: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a38886a and 88f7a1e.

📒 Files selected for processing (4)
  • docs/docs.json (10 hunks)
  • docs/snippets/upgrade-to-v4-note.mdx (1 hunks)
  • docs/upgrade-to-v4.mdx (1 hunks)
  • docs/wait-for-token.mdx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/snippets/upgrade-to-v4-note.mdx
  • docs/docs.json
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~447-~447: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ... function. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


[uncategorized] ~589-~589: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~633-~633: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (11)
docs/wait-for-token.mdx (5)

6-6: Component Import Update
The new import for the UpgradeToV4Note component is clear and aligns with the revised upgrade guidance.


10-10: Component Render Update
Replacing the previous placeholder with <UpgradeToV4Note /> immediately signals users that this feature is now formally documented—nice improvement.


16-23: wait.createToken Usage Example
The code snippet clearly demonstrates how to create a wait token with an optional timeout. The example is concise and easy to follow.


27-42: wait.forToken Usage Example
This example correctly illustrates waiting for a token to be completed, including handling the result with a type definition. It’s well structured and clear.


46-53: wait.completeToken Usage Example
The example shows how to complete a token by passing the token ID and the output payload. It is straightforward and accurately demonstrates the API usage.

docs/upgrade-to-v4.mdx (6)

2-4: Header and Description Update
The updated frontmatter—with a title “Upgrading to v4” and an expanded description—clearly sets the stage for the guide. This improved clarity benefits users transitioning to v4.


14-25: Wait Token Creation Example
The wait token creation example (using wait.createToken) is concise and well documented. Including the subsequent call to sendTokenToSlack effectively demonstrates a real-world usage scenario.


29-34: Token Completion Example
The snippet showcasing wait.completeToken accurately demonstrates how to complete a token with a specific payload. This makes the documentation actionable and clear.


38-50: Wait for Token Example
The example for wait.forToken is clear—it shows how to retrieve the token’s result and handle both success and timeout cases.


672-679: Lifecycle Hooks – Overall Clarity
The revised lifecycle hooks examples are now unified under a single object destructuring pattern, which improves consistency and readability across the API. Great work on this update.


691-697: Context Changes and Task Configuration
The sections describing context changes and queue configuration now provide clear, actionable examples. They effectively communicate how existing tasks should be updated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (6)
docs/upgrade-to-v4.mdx (6)

12-13: Wait Tokens Explanation Clarity.
The explanation covering wait tokens is comprehensive. However, please review the phrasing for potential possessive improvements (e.g. consider if “child task's” might be intended) to enhance clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


53-57: Wait Idempotency Section Introduction.
The introduction to idempotency and its benefits is informative. Consider rephrasing the sentence on line 55 to adopt a slightly more polite tone.

🧰 Tools
🪛 LanguageTool

[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


79-85: Priority Feature Description Update.
The explanation about specifying a task’s execution priority (lines 79–85) is clear and concise. A minor note: consider slightly softening the tone on line 81 for added politeness.

🧰 Tools
🪛 LanguageTool

[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


172-225: Improved Middleware and Locals Section.
The documentation on the enhanced middleware system and the introduction of the locals API (lines 172–225) is thorough. The provided code examples clearly show how to establish and use a database client within the middleware. One suggestion: add a comma before “and” in line 175 to refine the compound sentence structure.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


445-453: Migration Instructions Overview.
The "How to migrate to v4" section (lines 445–453) is structured as a clear step-by-step guide. One suggestion: on line 469, consider revising “opt-in to using v4” to “opt in to using v4” for grammatical accuracy.


517-523: Known Issues Section.
The "Known issues" section (lines 517–523) is informative. Consider addressing the minor punctuation suggestions from the static analysis (adding a comma where needed around lines 520–522) to improve readability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~520-~520: A comma might be missing here.
Context: ... } } ``` ## Known issues During the beta we will be releasing regular fixes. Her...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~522-~522: Possible missing comma found.
Context: ...re the current known issues: - In some cases when using batchTriggerAndWait with a...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 88f7a1e and 2052c36.

📒 Files selected for processing (1)
  • docs/upgrade-to-v4.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~469-~469: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ...normal. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


[uncategorized] ~520-~520: A comma might be missing here.
Context: ... } } ``` ## Known issues During the beta we will be releasing regular fixes. Her...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~522-~522: Possible missing comma found.
Context: ...re the current known issues: - In some cases when using batchTriggerAndWait with a...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~617-~617: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~661-~661: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (23)
docs/upgrade-to-v4.mdx (23)

3-3: Frontmatter Update: Clear Description Provided.
The metadata description on line 3 now clearly states the guide’s purpose, emphasizing the new features and upgrade steps.


6-9: New "What's new in v4?" Section Added.
The addition of the "What's new in v4?" section (lines 6–9) effectively highlights the major updates and new features for this version upgrade.


14-25: Token Creation Code Snippet.
The code snippet detailing how to create a wait token (lines 14–25) is clear and well-documented. The inline example, including the timeout and sending of the token ID, serves as a solid reference.


27-34: Token Completion Code Snippet.
The snippet showing how to complete a wait token (lines 27–34) is concise and correctly illustrates the API usage.


36-51: Waiting for Token Completion Example.
The example demonstrating how to wait for token completion (lines 36–51) is detailed and provides a clear illustration of the result handling.


58-75: Idempotency Code Snippets.
The code examples (lines 58–75) effectively demonstrate the usage of idempotency keys with wait functions—covering token creation, waiting for a duration, and waiting for a child task—with clear parameter specifications.


86-95: Priority Code Example.
The provided code snippets (lines 86–95) illustrate the priority behavior well, with a concrete example that demonstrates how a higher priority run can preempt a lower one.


104-122: Global Lifecycle Hooks Documentation.
The new section explaining global lifecycle hook registration (lines 104–122) is well-written and the example code succinctly shows how hooks like onStart, onSuccess, and onFailure can be set up anywhere in the codebase.


124-134: init.ts File Description.
The explanation of the init.ts file (lines 124–134) clearly communicates its role in initializing connections or global hooks. The associated example is straightforward and effective.

🧰 Tools
🪛 LanguageTool

[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


136-157: Lifecycle Hooks: onWait and onResume.
The examples for the onWait and onResume hooks (lines 136–157) clearly illustrate how to handle run pauses and resumes. The code snippet is easy to follow.


159-171: onComplete Hook Example.
The new onComplete hook section (lines 159–171) is clear and effectively shows how to handle both successful and failed runs upon completion.


240-250: Hidden Tasks Concept.
The explanation of hidden tasks (lines 240–250) is clear and effectively conveys the new task indexing mechanism that no longer requires tasks to be exported for execution.


251-266: Additional Hidden Tasks Example.
The follow-up snippet that demonstrates triggering hidden tasks (lines 251–266) is practical and further clarifies how to use hidden tasks in your project.


280-311: useWaitToken Hook Documentation.
The section introducing the useWaitToken react hook (lines 280–311) is well illustrated. The provided backend and frontend code examples help clarify how to generate and use public access tokens in the React component.


313-349: ai.tool Integration Overview.
The section on the new ai.tool function (lines 313–349) offers a detailed walkthrough on how to wrap a schema task as an AI tool. The snippets clearly demonstrate the integration with the Vercel AI SDK.


350-415: Advanced ai.tool Customization.
The extended example showing how to use the experimental_toToolResultContent option (lines 350–415) is valuable for users who need custom tool results. The snippet is detailed and clear.


416-427: Accessing Current Tool Execution Options.
The additional snippet (lines 416–427) that demonstrates how to access current tool execution options via ai.currentToolOptions() is a useful enhancement to the documentation.


471-516: Installation and CLI Setup.
The installation instructions (lines 471–516), including the multi-package manager code groups and CLI setup examples, are well-organized and easy to follow.


524-593: Deprecations Section.
The deprecations are clearly articulated with side-by-side examples illustrating both the old and new API usages (lines 524–593). This provides clear guidance for users migrating from deprecated functionality.


598-656: Breaking Changes: Queue Management.
The section on queue management breaking changes (lines 598–656) is well-detailed, with code examples clarifying the new requirement to predefine queues. This update is clearly communicated to the user.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~617-~617: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


657-677: Breaking Changes: Releasing Concurrency on Waits.
The updated behavior regarding the release of concurrency when a run is paused (lines 657–677) is clearly documented. The code snippet and accompanying explanation effectively illustrate the new change.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~661-~661: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)


694-739: Lifecycle Hooks Signature Changes.
The revised lifecycle hook signatures (lines 694–739), including both the old and new examples, are well presented. This unified parameter approach makes the API easier to use and understand.


740-745: Context Object Updates.
The changes to the ctx object (lines 740–745) are concisely explained. The removal of certain properties and the update to others are clearly communicated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/upgrade-to-v4.mdx (7)

10-15: Wait Tokens Feature Overview
The "Wait tokens" section now clearly describes the new functionality and its use cases.

  • Suggestion: Verify if any possessive punctuation is needed (for example, using “user’s” instead of “user”) to further enhance clarity based on the static analysis hint.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


27-34: Token Completion Sample
The code snippet that illustrates how to complete a token with wait.completeToken is well presented.

  • Suggestion: Consider adding a brief note or comment regarding error handling in scenarios where token completion might fail, to provide additional context for users.

36-51: Waiting for Token Completion Example
The example using wait.forToken is comprehensive; it includes type definitions, conditional handling based on the result, and clear logging of outcomes.

  • Suggestion: It might be helpful to include a remark on potential error conditions or timeouts to guide users in robustly handling such cases.

53-57: Wait Idempotency Explanation
The update on wait idempotency is clear and explains how idempotency keys and TTLs can prevent redundant waits.

  • Suggestion: Consider rephrasing phrases like “if you want” to a more formal alternative (e.g., “if desired”) to match the overall tone of the documentation, as suggested by the static analysis hints.
🧰 Tools
🪛 LanguageTool

[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


79-96: Priority Feature Overview
The section on specifying task priority is detailed and accompanied by clear examples. It explains how the priority value (expressed as a time duration) influences task execution in a queued environment.

  • Suggestion: A minor rewording (e.g., replacing “if you want” with “if desired”) could help achieve a more consistent and formal tone.
🧰 Tools
🪛 LanguageTool

[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


173-225: Middleware and Locals Enhancements
This extensive section introduces improved middleware and the locals API for sharing data (exemplified with a database client).

  • Observation: The accompanying text mentions that the middleware “now runs before/after all the other hooks.” To improve readability, consider inserting a comma before “and” to separate independent clauses (e.g., “...hoisted to the top level, and it now runs before/after all the other hooks.”) as suggested by the static analysis hint.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


658-685: Breaking Changes: Concurrency and Waits
The explanation of the new behavior around releasing concurrency on waits is clear and detailed.

  • Suggestion: Check the punctuation in the descriptive text (e.g., at line 661, a comma may be needed after introductory phrases) to improve readability, as flagged by the static analysis hints.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~661-~661: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2052c36 and 748b48a.

📒 Files selected for processing (1)
  • docs/upgrade-to-v4.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~469-~469: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ...normal. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


[uncategorized] ~520-~520: A comma might be missing here.
Context: ... } } ``` ## Known issues During the beta we will be tracking issues and releasin...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~617-~617: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~661-~661: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (24)
docs/upgrade-to-v4.mdx (24)

1-4: Front Matter and Title Update
The updated title and description in the front matter provide a clear and concise summary of the guide. The description effectively sets the reader’s expectations regarding new features, upgrade steps, and breaking changes.


6-9: "What's new in v4?" Section Introduction
The newly added section heading and the accompanying link to the blog post create a strong entry point for users who want to learn about the changes in v4. The content is engaging and directs readers to additional resources.


16-25: Wait Token Creation Code Example
The TypeScript code snippet demonstrating wait.createToken is clear and instructive. It shows the import, token creation with an optional timeout, and the subsequent action (i.e. sending the token to Slack).


98-102: Rationale Behind Time Duration Priority
The note that follows the priority section effectively explains why a time-based priority was chosen over discrete levels. This clarification helps mitigate concerns such as “level starvation.”


104-124: Global Lifecycle Hooks Update
The addition of global lifecycle hooks is well documented. The provided examples for tasks.onStart, tasks.onSuccess, and tasks.onFailure clearly demonstrate how to register hooks that run on every task execution.


124-134: init.ts Auto-Loading Clarification
The explanation regarding the automatic loading of an init.ts file is concise and the code snippet effectively shows how to register global lifecycle hooks using this file.

🧰 Tools
🪛 LanguageTool

[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


136-156: onWait and onResume Lifecycle Hooks
The new lifecycle hooks onWait and onResume are introduced with clear examples that demonstrate how to execute code when a run is paused or resumed. The sample code is clear and easy to follow.


159-171: onComplete Lifecycle Hook Example
The onComplete hook example is succinct and effectively illustrates how to handle both successful and failed run outcomes. The conditional logging based on result.ok is clear and practical.


227-238: Example: Accessing the Database Client in Tasks
The snippet that shows how to access the database client via getDb() in a task’s run function is clear and effectively demonstrates the integration of the middleware system.


240-261: Hidden Tasks Explanation
The explanation about hidden tasks—that tasks can now be defined without being exported—is clear. The provided sample code clearly differentiates between hidden tasks and those intended for external triggering.


268-279: Reusable Tasks Packaging
The example showing how to create a package of reusable tasks is straightforward and well documented. This addition should significantly improve modularity and reusability in larger codebases.


281-297: Introducing the useWaitToken Hook
The new section on the useWaitToken React hook is well-demonstrated with both backend and frontend code examples. This clear illustration of bridging backend token creation with frontend usage adds valuable clarity for end-to-end implementations.


313-347: ai.tool Function and AI SDK Integration
The section that introduces the new ai.tool function, along with its integration with schemaTask and the Vercel AI SDK, is detailed and comprehensive. The code examples clearly articulate how to set up AI tools, making it easier for developers to implement these features.


349-414: Customizing Tool Result Content
The subsequent example explains how to use the experimental_toToolResultContent option to customize the returned tool result (for example, returning an image). This example is clear and adds significant value by showing how to extend functionality.


417-436: Accessing Current Tool Execution Options
The provided sample demonstrating the use of ai.currentToolOptions() offers useful insight into obtaining runtime options within an AI tool task. This is a valuable addition for advanced usage and debugging.


445-457: Migration Steps Overview
The "How to migrate to v4" section outlines clear and actionable steps for users upgrading from earlier versions. The step-by-step instructions are easy to follow and provide a solid checklist for the migration process.


467-483: Dependency Installation Instructions
The installation section provides clear, multi-package manager instructions (for npm, yarn, and pnpm) for updating to the v4-beta release of the SDK. The examples are succinct and effective.

🧰 Tools
🪛 LanguageTool

[grammar] ~469-~469: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ...normal. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


487-503: CLI Version Update Guidance
The instructions for upgrading to the v4-beta version of the trigger.dev CLI are precise and include examples for different usage scenarios. This clarity is essential for ensuring the correct version is used.


505-516: Alternative CLI Setup via devDependencies
The alternative method using devDependencies and a dedicated script in package.json is well documented. The code snippet is clear and provides an easy reference for users opting for this approach.


518-524: Known Issues Clarification
The "Known issues" section is clear and to the point, indicating that any issues during the beta will be actively tracked and fixed. The brevity is appropriate given the current status.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~520-~520: A comma might be missing here.
Context: ... } } ``` ## Known issues During the beta we will be tracking issues and releasin...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


525-593: Deprecations Overview
This section comprehensively details the APIs and functionalities that are deprecated (including changes to import paths and hook renamings), with side-by-side code examples to contrast old and new usages. This clarity will assist users in upgrading their code.


597-656: Breaking Changes: Queue Definitions
The section detailing breaking changes related to queue management is well described. The examples effectively illustrate the shift from on-demand queue creation to pre-defined queues, helping users understand the required changes.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~617-~617: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


693-719: Breaking Changes: Lifecycle Hooks Signature Update
The updated lifecycle hooks’ function signatures are clearly documented and accompanied by before-and-after examples. This helps mitigate potential confusion during migration.


739-745: Breaking Changes: Context Adjustments
The final section briefly notes the changes made to the context (ctx) object, such as removals of specific properties. This concise summary helps ensure that developers adjust their code accordingly.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (6)
docs/upgrade-to-v4.mdx (6)

55-56: Explanation: Idempotency in Wait Functions

The explanation effectively details how to pass an idempotency key and its benefits when retrying a task. For a slightly more formal tone, consider rephrasing “if you want” to “if needed.”

🧰 Tools
🪛 LanguageTool

[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


80-81: Explanation: Task Priority Feature

The text explains that tasks can now be assigned a priority to influence execution order. For enhanced clarity, consider a slight rewording to remove “if you want” in favor of a more neutral phrasing.

🧰 Tools
🪛 LanguageTool

[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


173-175: Introduction: Improved Middleware and Locals

The introductory text for this section explains that the middleware now operates at a top level and introduces the new locals API. A minor improvement would be to insert a comma before “and” at line 175 for clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


467-488: Installation Instructions: Dependency Updates for v4‑beta

The installation section provides precise commands (for npm, yarn, and pnpm) that instruct users on updating to the v4-beta version. A minor nitpick: in the sentence “To opt-in to using v4...” (line 469), consider using “to opt in” (verb form) for consistency with standard usage.

🧰 Tools
🪛 LanguageTool

[grammar] ~469-~469: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ...normal. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


489-499: CLI Package Update Instructions

The commands for updating the trigger.dev CLI package using different package managers are clear. If similar phrasing appears elsewhere, consider slight rewording here to add variety.

🧰 Tools
🪛 LanguageTool

[style] ~489-~489: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...r.dev/*packages. </Note> You'll also need to use thev4-betaversion of thetrigg...

(REP_NEED_TO_VB)


647-674: Breaking Changes: Concurrency Handling on Waits

This section explains the revised behavior for concurrency release when a run is paused. The detailed examples and the option to revert to the old behavior are useful. A small punctuation improvement (adding a comma at line 650) would enhance readability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~650-~650: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 748b48a and a93bad8.

📒 Files selected for processing (1)
  • docs/upgrade-to-v4.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/upgrade-to-v4.mdx

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[typographical] ~26-~26: It seems that a comma is missing.
Context: ... await sendTokenToSlack(token.id); ``` Wait tokens are completed with a payload tha...

(WAIT_COMMA)


[style] ~55-~55: Consider using a more polite wording.
Context: ...s used again. This can be useful if you want to skip waits when retrying a task, for...

(IF_YOU_WANT)


[style] ~81-~81: Consider using a more polite wording.
Context: ...tasks over others, and is useful if you want to ensure that certain tasks are execut...

(IF_YOU_WANT)


[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


[uncategorized] ~175-~175: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ut now we've hoisted it to the top level and it now runs before/after all the other ...

(COMMA_COMPOUND_SENTENCE)


[grammar] ~469-~469: The word “opt-in” is a noun. The verb is spelled with a white space.
Context: ...normal. ## Installation To opt-in to using v4, you will need to update yo...

(NOUN_VERB_CONFUSION)


[style] ~489-~489: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...r.dev/*packages. </Note> You'll also need to use thev4-betaversion of thetrigg...

(REP_NEED_TO_VB)


[uncategorized] ~509-~509: Possible missing comma found.
Context: ...CodeGroup> ## Known issues During the beta we will be tracking issues and releasin...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~606-~606: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~650-~650: Possible missing comma found.
Context: ..., no matter the settings on the queue. Now we will no longer release concurrency o...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (49)
docs/upgrade-to-v4.mdx (49)

1-4: Metadata Update: Enhanced Document Description

The metadata now includes a description that succinctly explains the guide’s purpose—upgrading to v4 and outlining breaking changes. This sets a clear expectation for the reader.


6-7: New Section Header: "What's new in v4?"

The added section header clearly introduces the new features and improvements in version 4. This helps users easily navigate the updated documentation.


8-8: Addition: Blog Post Link

The inclusion of a link to the blog post provides users with a direct resource for a comprehensive overview of the new features, which is very helpful.


10-10: Section Header: "Wait tokens"

This subheading effectively signals the start of the new wait token functionality section, making the document more navigable.


12-12: Explanation: Wait Tokens Concept

The detailed description clearly explains the concept and potential use case for wait tokens (e.g. sending a token to Slack and waiting for an "Approve" action).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ...r a specific duration, or waiting for a child task to complete, you can now create an...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


14-14: Instruction: Creating a Wait Token

The text instructs users on how to create a wait token using wait.createToken. The clear direction is helpful for implementation.


16-25: Code Example: Wait Token Creation

The provided TypeScript snippet demonstrates how to import the SDK and create a wait token (with an optional timeout) before sending it externally (e.g. via Slack). Ensure that this example stays in sync with the latest SDK practices.


27-27: Clarification: Token Completion Payload

The explanation that wait tokens are completed with a user-specified payload adds clarity. This detail is important for users implementing responsive flows.


29-34: Code Example: Completing a Wait Token

This snippet clearly shows how to complete a token by invoking wait.completeToken with a payload (here, setting a status). The example is direct and well formatted.


36-36: Instruction: Waiting Using a Token ID

The brief instruction reinforces that users can wait for token completion via its token ID—an essential detail for correct implementation.


38-51: Code Example: Waiting for a Token Completion

The example defines a type for the token, waits for token completion using wait.forToken, and handles both success and timeout cases. This comprehensive example enhances clarity.


53-53: Section Header: "Wait idempotency"

Introducing idempotency here is well suited. Users are alerted to the option of skipping redundant waits when using idempotency keys.


57-75: Code Example: Using Idempotency with Wait Functions

This multi-example snippet (covering wait token creation, waiting for a duration, and waiting for a child task) is instructive and covers various use cases concisely.


77-77: Clarification: idempotencyKeyTTL Option

A clear note explaining that idempotencyKeyTTL specifies the validity period of an idempotency key—with a default of 30 days—adds useful context.


79-79: Section Header: "Priority"

The new "Priority" section clearly indicates a discussion on scheduling and execution order improvements.


83-85: Code Example: Triggering a Task with Priority

A concise snippet showing how to trigger a task with a given priority (here, priority: 1). This example clearly conveys the new functionality.


87-94: Priority Behavior Explanation with Example

The concrete example detailing how a priority value (expressed as a time duration) influences execution order is very effective. It clearly illustrates the concept.


104-104: Section Header: "Global lifecycle hooks"

The new section header properly highlights the introduction of global lifecycle hooks for all tasks.


105-122: Code Example: Global Lifecycle Hooks

This example shows how to register hooks such as onStart, onSuccess, and onFailure globally. The code is clear and provides a good model for users to follow.


124-132: Automatic Initialization with init.ts

The section explains that placing an init.ts at the project root auto-loads configurations (e.g. global hooks). The accompanying snippet is clear.

🧰 Tools
🪛 LanguageTool

[style] ~126-~126: Consider using a more polite wording.
Context: ...task is executed. This is useful if you want to register global lifecycle hooks, or ...

(IF_YOU_WANT)


136-157: Code Example: onWait and onResume Hooks

The example demonstrates how to use the new onWait and onResume hooks to log when a run is paused and resumed. This example helps clarify the new lifecycle events.


159-170: Code Example: onComplete Lifecycle Hook

The snippet shows how to use onComplete to handle final run outcomes irrespective of success or failure. The example is concise and informative.


176-195: Code Example: Using the Locals API for a Database Client

This snippet demonstrates setting up a local database client using the locals API and shows how to import and log using it. The example is practical and clear.


196-213: Code Example: Database Middleware

The provided middleware snippet illustrates how to set up a database client, manage its connection, and ensure proper disconnection by wrapping the task execution with connect/disconnect calls.


214-218: Code Example: Disconnecting on Wait

This small snippet shows how to disconnect the database when a run is paused. Its brevity and focus make it effective.


220-224: Code Example: Reconnecting on Resume

The snippet clearly demonstrates how to re-establish the database connection when the run resumes.


227-238: Code Example: Accessing the Database Client in Tasks

This example shows how to use the getDb() helper to access the database client within a task’s run function, reinforcing the new middleware pattern.


240-242: Section Header: "Hidden tasks"

The new section header introduces the concept of hidden tasks—tasks that no longer need to be exported to be triggered. This change simplifies task definitions.


244-250: Code Example: Defining a Hidden Task

The snippet clearly demonstrates how to define a task without exporting it, in line with the updated task indexing logic.


252-260: Code Example: Creating Reusable Hidden Tasks

This snippet shows how to define tasks that are intended only for internal triggering. It reinforces modular task composition.


268-279: Code Example: Packaging Reusable Tasks

The example demonstrates how to package tasks so they can be imported and used without re-exporting. This approach supports modular design and reuse.


281-282: Section Header: "useWaitToken"

The new section introduces the useWaitToken React hook clearly and explains its purpose for completing wait tokens from a frontend component.


283-297: Code Example: Creating a Wait Token for Frontend Use

The backend snippet illustrates how to create a wait token and retrieve both the token ID and its public access token. This thorough example is very useful for integrating with a React frontend.


299-311: Code Example: Using the useWaitToken React Hook

This frontend code snippet shows how to import and use the useWaitToken hook to complete a wait token via a button click. It is straightforward and demonstrates the intended usage effectively.


313-314: Section Header: "ai.tool"

The new section clearly introduces the ai.tool function and provides context about its role with the Vercel AI SDK. The link to the documentation is a helpful resource.


315-332: Code Example: Creating an AI Tool

This snippet shows how to import and use ai.tool with a schemaTask to build an AI tool. The code is well structured and clearly conveys the integration.


331-347: Code Example: Integrating ai.tool with a Schema Task

Here, the task demonstrates leveraging the created AI tool within a schemaTask, including passing it into an AI text generation function. The example is robust and practical.


348-352: Code Example: Customizing Tool Result Content

The snippet demonstrates how to pass the experimental_toToolResultContent option to customize the output content of an AI tool. Consider adding inline comments to further clarify the customization logic.


353-415: Comprehensive Example: AI Tool with Chart Generation

This extended example walks through generating a chart using natural language, integrating with a sandbox for code execution, and returning an image. One note: the import from @trigger.dev/sdk/v3 (line 356) is used here, but since that path is deprecated (as noted later), please verify whether this should be updated to @trigger.dev/sdk to ensure consistency in the documentation.


417-436: Code Example: Accessing Current Tool Options

The snippet illustrates how to retrieve the current tool execution options via ai.currentToolOptions(). This capability is clearly demonstrated and useful for dynamic tool behavior.


438-444: Reference Note: AI SDK Tool Execution Options

Providing a direct link to the AI SDK tool execution options documentation helps users quickly access more detailed information. Double-check that the URL remains current.


445-454: Migration Guide: Steps to Upgrade to v4

The migration instructions are laid out in clear, actionable steps that guide users through testing and deploying v4. This clarity will help users manage the upgrade process smoothly.


459-465: Warning Block: Concurrency Considerations During Migration

The warning effectively communicates the potential for increased concurrency due to simultaneous use of v3 and v4. This critical operational alert is well presented.


507-510: Known Issues Section

This section briefly informs users about issue tracking during the beta period. It is concise and sets the right expectation regarding stability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~509-~509: Possible missing comma found.
Context: ...CodeGroup> ## Known issues During the beta we will be tracking issues and releasin...

(AI_HYDRA_LEO_MISSING_COMMA)


513-533: Deprecations Overview

The deprecation section clearly explains the migration away from @trigger.dev/sdk/v3 and the renaming of hooks (e.g. from handleError to catchError). The code snippets make the required changes explicit.


533-583: Deprecation Notice: toolTask

The explanation and code examples regarding the deprecation of the toolTask function are clear. This section effectively directs users to adopt the new ai.tool approach instead.


586-645: Breaking Changes: Queue Management

The breaking changes section related to queue handling is detailed. It explains that queues must now be defined ahead of time, and provides clear code examples for both setting a queue on a task and triggering tasks.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~606-~606: Possible missing comma found.
Context: ...ueue", concurrencyLimit: 10, }); ``` Now when you trigger a task, you can only s...

(AI_HYDRA_LEO_MISSING_COMMA)


678-708: Breaking Changes: Lifecycle Hooks

The changes to lifecycle hook signatures are clearly outlined with before-and-after code examples. This unified parameter approach will simplify hook implementations and improve consistency.


728-734: Breaking Changes: Context Object Modifications

The removal of certain properties from the ctx object is documented clearly. This alert is essential for developers to update their implementations accordingly.

@matt-aitken matt-aitken merged commit 61232ab into main Apr 9, 2025
7 checks passed
@matt-aitken matt-aitken deleted the ea-branch-36 branch April 9, 2025 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants