diff --git a/docs/capabilities/interrupts.mdx b/docs/capabilities/interrupts.mdx new file mode 100644 index 000000000..a91b52ff2 --- /dev/null +++ b/docs/capabilities/interrupts.mdx @@ -0,0 +1,144 @@ +--- +title: "Interrupts" +description: "How Codegen handles real-time interrupts from Slack and Linear while working" +--- + +## Overview + +Codegen supports **real-time interrupts** that allow users to send additional messages or clarifications while the agent is actively working on a task. This feature enables dynamic, conversational interactions where users can provide feedback, corrections, or additional context without waiting for the agent to complete its current work. + +## How Interrupts Work + +When Codegen is actively processing a request, users can send follow-up messages through supported channels (Slack, Linear) that will be immediately delivered to the running agent as "interrupt messages." + +### Key Features + +- **Real-time delivery**: Messages are delivered immediately to the active agent +- **Context preservation**: The agent maintains full context of the original task +- **Immediate acknowledgment**: Codegen typically responds quickly to acknowledge the interrupt +- **Seamless integration**: The agent incorporates new information into its current workflow + +## Supported Channels + +### Slack Interrupts + +In Slack, you can send interrupt messages by: + +1. **Replying in the thread** where Codegen is working +2. **Mentioning @codegen** with additional context +3. **Sending follow-up messages** in the same channel + + +**Important**: You **must** mention `@codegen` in your interrupt messages for Codegen to respond in Slack channels, unless you're in a direct message (DM) with Codegen where it will respond automatically. + + +**Example:** +``` +User: @codegen can you fix the login bug? +Codegen: I'll fix the login bug! 🔧 [starts working] +User: Actually, make sure to also handle the password reset flow +Codegen: Got it! I'll include the password reset flow in my fix 👍 +``` + +### Linear Interrupts + +In Linear, interrupts work through: + +1. **Adding comments** to the issue Codegen is working on +2. **Updating the issue description** with additional requirements +3. **Changing issue priority or labels** (triggers re-evaluation) + + +**Note**: Codegen will respond automatically to your comments in Linear unless another user is tagged in the same comment. + + +**Example:** +``` +Issue: Fix authentication system +Codegen: Working on the authentication fix... +[User adds comment]: "Please also add 2FA support" +Codegen: I see you've added 2FA requirements - incorporating that now! +``` + + + +## Best Practices + +### For Users + + +**Send interrupts early**: If you realize you need to add context or change requirements, send the message immediately rather than waiting for completion. + + +- **Be specific**: Clearly state what you want to add or change +- **Provide context**: Explain how the new information relates to the original request +- **Use @mentions in Slack**: Always mention @codegen in Slack channels (not needed in DMs) +- **No mentions needed in Linear**: Codegen responds automatically unless other users are tagged + +### Common Use Cases + +1. **Adding requirements**: "Also make sure to add error handling" +2. **Providing clarification**: "By 'users' I meant admin users specifically" +3. **Changing scope**: "Actually, let's focus on the mobile version first" +4. **Sharing additional context**: "Here's the error log I forgot to include" +5. **Course correction**: "That approach won't work, try using the new API instead" + +## Limitations + +- **Processing order**: Interrupts are processed in the order they're received +- **Context switching**: Very frequent interrupts may slow down overall progress +- **Channel-specific**: Interrupts only work within the same channel/issue where work started + +## Troubleshooting + +### Interrupt Not Acknowledged + +If your interrupt isn't acknowledged: + +1. **Check the channel**: Ensure you're messaging in the same thread/issue +2. **Wait briefly**: The agent may be in the middle of a long operation +3. **Use @mentions in Slack**: Make sure you mentioned @codegen (required in channels, not DMs) +4. **Check for other tags in Linear**: If you tagged other users, Codegen won't respond automatically +5. **Check agent status**: The agent may have completed or encountered an error + +### Message Not Incorporated + +If your interrupt seems ignored: + +1. **Be more explicit**: Clearly state what you want changed +2. **Reference the original task**: Connect your interrupt to the current work +3. **Follow up**: Send a clarifying message if needed + +## Examples + +### Slack Thread Example + +``` +User: @codegen create a user registration form +Codegen: I'll create a user registration form! 📝 [working...] + +User: Make sure it includes email verification +Codegen: Got it! Adding email verification to the registration form 📧 + +User: And add password strength requirements +Codegen: Perfect! I'll include password strength validation as well 🔒 +``` + +### Linear Issue Example + +``` +Linear Issue: "Implement search functionality" +Codegen: Working on search functionality... + +[User adds comment]: "Please include filters for date and category" +Codegen: I see you've added filter requirements - implementing date and category filters now! + +[User adds comment]: "Also add sorting options" +Codegen: Adding sorting options to the search as well! 📊 +``` + +## Related Features + +- [Wake-up Triggers](/capabilities/wake-up) - How to initially trigger Codegen +- [Slack Integration](/integrations/slack) - Complete Slack setup and usage +- [Linear Integration](/integrations/linear) - Complete Linear setup and usage diff --git a/docs/docs.json b/docs/docs.json index 9045a6bde..f5d8f21a6 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -26,7 +26,7 @@ }, { "group": "Capabilities", - "pages": ["capabilities/capabilities", "capabilities/wake-up"] + "pages": ["capabilities/capabilities", "capabilities/wake-up", "capabilities/interrupts"] }, { "group": "Integrations",