Implement task-scoped sessions, queued run chaining, and session reset API
Heartbeat service now resolves session state per-task using agentTaskSessions, with resolveNextSessionState handling codec-based serialization and fallback to legacy sessionId. Queued runs are chained — when a run finishes or is reaped, the next queued run for the same agent starts automatically. Queued runs for an agent with an already-running run wait instead of failing. Add task-sessions list endpoint and extend reset-session to accept optional taskKey for targeted session clearing. Block pending_approval agents from API key auth. Update agent/company delete cascades to include task sessions. Update spec docs with task-session architecture. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -71,11 +71,13 @@ Templates support variables like `{{agent.id}}`, `{{agent.name}}`, and run conte
|
||||
|
||||
## 4. Session resume behavior
|
||||
|
||||
Paperclip stores session IDs for resumable adapters.
|
||||
Paperclip stores resumable session state per `(agent, taskKey, adapterType)`.
|
||||
`taskKey` is derived from wakeup context (`taskKey`, `taskId`, or `issueId`).
|
||||
|
||||
- Next heartbeat reuses the saved session automatically.
|
||||
- This gives continuity across heartbeats.
|
||||
- You can reset a session if context gets stale or confused.
|
||||
- A heartbeat for the same task key reuses the previous session for that task.
|
||||
- Different task keys for the same agent keep separate session state.
|
||||
- If restore fails, adapters should retry once with a fresh session and continue.
|
||||
- You can reset all sessions for an agent or reset one task session by task key.
|
||||
|
||||
Use session reset when:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user