summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/ui
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-23 18:16:02 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-23 18:16:02 +0200
commit1d169141f3a5542efda2f7fdb0bb88308c06191b (patch)
tree86162905ad819d8c9dd325ccf9629bcdacc50bbf /packages/meshbay-node/src/meshbay_node/ui
parent35a7764db3f58a93c32206cb3ce74bb2f03967e7 (diff)
downloadmeshbay-1d169141f3a5542efda2f7fdb0bb88308c06191b.tar.gz
feat(node): member invite --link and member cancel in the CLI
The CLI makes both halves itself — the node's code, then the hub's ticket bound to the address — and prints the link; a refused ticket takes the code back, and cancel takes back both. The CLI never asks the hub to mail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/ui')
-rw-r--r--packages/meshbay-node/src/meshbay_node/ui/app.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/ui/app.py b/packages/meshbay-node/src/meshbay_node/ui/app.py
index f6b93ea..ff28e53 100644
--- a/packages/meshbay-node/src/meshbay_node/ui/app.py
+++ b/packages/meshbay-node/src/meshbay_node/ui/app.py
@@ -322,13 +322,15 @@ def create_ui_app(state: dict) -> FastAPI:
async def create_invite(group_id: str, username: str):
return await _op(lambda: ops.create_invite(state, group_id, username))
+ # Both halves, node and hub, for the CLI: an operator at the machine gets a
+ # whole link, not a code without a ticket.
@app.post("/api/groups/{group_id}/invite-links")
- async def create_link_invite(group_id: str):
- return await _op(lambda: ops.create_link_invite(state, group_id))
+ async def create_link_invite(group_id: str, email: str):
+ return await _op(lambda: ops.create_link_invitation(state, group_id, email))
@app.delete("/api/groups/{group_id}/invite-links/{invite_id}")
async def cancel_invite(group_id: str, invite_id: str):
- return await _op(lambda: ops.cancel_invite(state, group_id, invite_id))
+ return await _op(lambda: ops.cancel_link_invitation(state, group_id, invite_id))
@app.get("/api/resolve")
async def resolve_user(username: str):