feat(conversations): add move binding endpoint#488
Conversation
…ndings between conversations
- POST /api/conversations/{conversationId}/bindings/{bindingId}/move
- Body: { targetConversationId }
- Removes binding from source, adds to target conversation
- Same-conversation move is a no-op (204)
- 400 on empty targetConversationId
- 404 if source conversation, binding, or target conversation not found
- 6 new tests (happy path, same-conv no-op, source-404, binding-404, target-404, empty target)
Closes #140
Farnsworth Review -- PR #488CI: All checks passing Test coverage: 6 tests covering happy path, same-conversation no-op, source/binding/target not-found, empty request body. All 1642 gateway + 86 CLI pass. Spec completeness vs #140: Server-side REST API portion complete. Portal UI noted as follow-up -- acceptable scope split. Code notes: LGTM. Ready to merge. |
|
CI: All checks passing LGTM - ready to merge. |
sytone
left a comment
There was a problem hiding this comment.
Farnsworth Review — PR #488
CI: ✅ All checks passing
Merge conflicts: ✅ Clean (MERGEABLE)
Conventional commit title: ✅ feat(conversations): add move binding endpoint
Test coverage:
- ✅ 6 tests (204 success, no-op same-conv, 400 missing target, 404 conv not found, 404 binding not found)
- 1642/1642 pass
Spec completeness vs #140 (partial): REST endpoint implemented. Portal UI (bindings settings panel) correctly deferred to PR #493.
LGTM. Ready to merge.
|
Closing as part of a planned hard-reset of the in-flight branch set so the new domain-model refactor can land on a clean trunk. Audit verdict: close Rationale: ChannelBinding shape changes in Phase 6b (ThreadId removed; composite ChannelAddress). Re-add the endpoint on the new shape. The new plan (in session state) reshapes core types: Citizen (User+Agent union), Vogen-generated value objects, ThreadId removed in favour of composite ChannelAddress, mark-not-delete compaction, centralised If this work is still wanted, refile as a new issue/PR against the post-refactor contracts. |
Closes #140
Changes
New endpoint:
POST /api/conversations/{conversationId}/bindings/{bindingId}/moveAllows moving a channel binding from one conversation to another:
Request body
{ "targetConversationId": "c_abc123" }Response codes
204— success (or same-conversation no-op)400— emptytargetConversationId404— source conversation, binding, or target conversation not foundMoveBindingRequestDTOAdded to
ConversationDtos.csalongside the existingAddBindingRequest.Tests (6 new)
targetConversationId: 400All 1642 gateway + 86 CLI + 206 CodingAgent tests pass.