You've already forked agentic-coding-workflow
feat(workspace): session-scoped Caller.Holder + ReleaseByHolder for ACP integration
This commit is contained in:
@@ -282,6 +282,48 @@ func (q *Queries) MarkPruneWarning(ctx context.Context, id pgtype.UUID) error {
|
||||
return err
|
||||
}
|
||||
|
||||
const releaseWorktreesByHolder = `-- name: ReleaseWorktreesByHolder :many
|
||||
UPDATE workspace_worktrees
|
||||
SET status = 'idle',
|
||||
active_holder = NULL,
|
||||
acquired_at = NULL,
|
||||
last_used_at = now(),
|
||||
prune_warning_at = NULL
|
||||
WHERE active_holder = $1 AND status = 'active'
|
||||
RETURNING id, workspace_id, branch, path, status, active_holder, acquired_at, last_used_at, created_at, prune_warning_at
|
||||
`
|
||||
|
||||
func (q *Queries) ReleaseWorktreesByHolder(ctx context.Context, activeHolder *string) ([]WorkspaceWorktree, error) {
|
||||
rows, err := q.db.Query(ctx, releaseWorktreesByHolder, activeHolder)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []WorkspaceWorktree
|
||||
for rows.Next() {
|
||||
var i WorkspaceWorktree
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.WorkspaceID,
|
||||
&i.Branch,
|
||||
&i.Path,
|
||||
&i.Status,
|
||||
&i.ActiveHolder,
|
||||
&i.AcquiredAt,
|
||||
&i.LastUsedAt,
|
||||
&i.CreatedAt,
|
||||
&i.PruneWarningAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const setWorktreeActive = `-- name: SetWorktreeActive :one
|
||||
UPDATE workspace_worktrees
|
||||
SET status = 'active',
|
||||
|
||||
Reference in New Issue
Block a user