feat(server): answer conversations on repos without a workspace #209

Merged
lucas merged 1 commit from agent/issue-208-workspaceless-conversations into main 2026-11-03 10:08:31 +01:00
Collaborator

Conversation messages (CONVERSATION_REASONS, not on agent-authored PRs) on a repository that matches no workspace now start a forgejo_conversation session with noCheckout: true:

  • cwd is an empty directory at the checkout path (createEmptyCheckout / restoreEmptyCheckout on resume), cleaned up by removeCheckout as usual;
  • Forgejo tools are bound to the scope's owner/repo (buildForgejoToolsForRepo); git_* tools are removed and denied; the system context explains there is no checkout.

All other events on unmatched repos still post NOT_CONNECTED. Once the repo matches one workspace, reuseMapped rejects the workspace-less session and a normal one replaces it. Branch-watch and intake paths guard against a null workspace.

Tests: dispatcher (issue/PR fallback, non-conversation drop + notice once, agent PR drop, upgrade), session-policy, checkout. Full server suite passes. Manual check against a live Forgejo is still open.

Closes: #208

Conversation messages (`CONVERSATION_REASONS`, not on agent-authored PRs) on a repository that matches no workspace now start a `forgejo_conversation` session with `noCheckout: true`: - cwd is an empty directory at the checkout path (`createEmptyCheckout` / `restoreEmptyCheckout` on resume), cleaned up by `removeCheckout` as usual; - Forgejo tools are bound to the scope's `owner/repo` (`buildForgejoToolsForRepo`); `git_*` tools are removed and denied; the system context explains there is no checkout. All other events on unmatched repos still post `NOT_CONNECTED`. Once the repo matches one workspace, `reuseMapped` rejects the workspace-less session and a normal one replaces it. Branch-watch and intake paths guard against a null workspace. Tests: dispatcher (issue/PR fallback, non-conversation drop + notice once, agent PR drop, upgrade), session-policy, checkout. Full server suite passes. Manual check against a live Forgejo is still open. Closes: #208
Conversation messages (mentions, replies, agent-artifact) on a Forgejo
repository that matches no workspace now start a conversation session
in an empty directory, with Forgejo tools bound to the trigger's repo
and no git tools. Other events there still get the "not connected"
notice. Once the repo is connected to a workspace, such a session is
replaced by a normal one in a real checkout.

Co-Authored-By: Claude Opus 5.5 via omp-deck
lucas merged commit 9599c3fdf4 into main 2026-11-03 10:08:31 +01:00
lucas deleted branch agent/issue-208-workspaceless-conversations 2026-11-03 10:08:31 +01:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
lucas/omp-deck!209
No description provided.