feat(forgejo): manually started implementer sessions #47
No reviewers
Labels
No labels
Agent
Ignore
Agent
In Progress
Agent
Planned
Agent
Planning
Agent
Ready
Agent
Triage
Compat
Breaking
Kind
Bug
Kind
Documentation
Kind
Enhancement
Kind
Feature
Kind
Security
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
lucas/omp-deck!47
Loading…
Reference in a new issue
No description provided.
Delete branch "44-forgejo-manually-started-implementer-session"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Start an unattended
forgejo_implementersession for a Forgejo issue from the deck. "New session" in the sidebar and the session picker is now a split button. Its menu opens an "Implement issue" form with three fields: issue number, base branch and model.POST /api/forgejo/implementchecks the issue and clones it into a per-issue checkout, detached at the base branch. It then starts the first turn under a write-capable policy with a 2-hour turn timeout.forgejo_sessionsmaps the issue to the session, and also the PR the session opens, so @mentions on either continue the session.Decisions
startImplementerchecks the issue's queue slot again after the async issue read.unknownKindhelper.NewSessionButtonrenders the modal itself.store.implementIssuerepeatscreateSession's subscribe lines inline.Verification
bun test srcinapps/server: 831 pass, 0 fail. New tests:startImplementer(8 tests): creation, 409/404/422 refusals, queue blocking, reuse from the issue and the PR, 2-hour timeout reportbun test srcinapps/web: 244 passtsctypecheck: clean for server and webvite build: OKnumber→ 400model→ 400Closes #44
Web UI decisions:
NewSessionButtonrendersImplementIssueModalitself, so the Sidebar and the session picker only swap their button for it. The chevron is disabled under the same condition as the main button (Global view, or no workspace path). It is not disabled while a plain session is being created.store.implementIssuerepeatscreateSession's five subscribe/activate/refresh lines inline. I left them unextracted rather than add a new store method for two callers.#N already has session …show inline in the form's error box.