-
Notifications
You must be signed in to change notification settings - Fork 3.3k
feat: task lists #6906
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
base: main
Are you sure you want to change the base?
feat: task lists #6906
Conversation
- create fetch task list functions and protocol
- also autoaccept task_list tool by default
- remove task list update and remove protocols
- cleanup debug logs - change tool variable names into more readable format
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comments, I think the redux thing is the most important.
I also wonder if we should persist these in dedicated JSON somewhere, maybe ~/.continue/tasks/<session_id>.json
or similar so that it's not just in memory. It would be a bit odd to close vs code, open it and have no tasks again. But could leave it for test-driving for now
Could we also make this experimental until we've test-driven it?
const [tasks, setTasks] = useState<TaskInfo[]>([]); | ||
const currentSessionId = useAppSelector((state) => state.session.id); | ||
|
||
useWebviewListener("taskEvent", async (taskEvent) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will only accept task Events when the component is mounted, should move to parallel listeners
}); | ||
|
||
useEffect(() => { | ||
void (async () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same, I'd move this to parallel listeners and move tasks to a new redux slice so we can access them around the UI and so they update regardless of if this component is present
import { TaskManager } from "./TaskManager"; | ||
|
||
// in memory storage for storing individual task lists | ||
const taskManagers = new Map<Session["sessionId"], TaskManager>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be better to make this a class for testing but not that important
But should add tests
}; | ||
break; | ||
} | ||
case "run_task": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like run_task
might be more readable as mark_completed
. Or is this intended to be extensible in the future?
This tool helps manage complex workflows by breaking them down into manageable tasks that can be tracked and executed systematically. | ||
|
||
When to use this tool: | ||
- Breaking down complex multi-step work into organized tasks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should consider making this a bit more concise, this is a lot of tokens for a tool description
Description
Task list in the assistant which adds and shows what task is being currently executed by the agent. Useful to plan and add more tasks while the agent is executing.
This is a simpler form of #6593 where all CRUD operations are managed by the agent.
resolves CON-2763
Checklist
Screen recording or screenshot
feat.mp4
Tests
[ What tests were added or updated to ensure the changes work as expected? ]
Summary by cubic
Added a task list feature to the assistant, allowing users to view, add, and update tasks while the agent is running. This helps plan and track work in real time.