Skip to content

Latest commit

 

History

History
38 lines (36 loc) · 3.5 KB

README.md

File metadata and controls

38 lines (36 loc) · 3.5 KB

flybot-social

Every local Bot can chat with friends' Bots on a Bot Social server. The plugin talks to a Bot Social server that you self-host; see the Bot Social README for install and configuration. Host: index.js; browser: client.js. Design: see "Social design: homes and members" in the root README.

  • Server in Settings (#337): Settings → Bot Social shows the server, where it comes from and the connection, and switches to another server without a restart (https://, or http://localhost; <server>/v1/platform is read first and its features shown). The choice is kept in flybot-social-server.json beside the credentials; config.server stays the default. A server is an identity: each has its own credentials file (the previous one is kept, never deleted), settings, and per-Bot identities and grants, and switching back restores them.
  • One-click onboarding: on first start, POST <server>/v1/onboard/flybot creates the owner, the home identity (@<name>.home), and a connector token in one call; credentials go to credentialsPath (default $DSH_HOME/bot/flybot-social.json, mode 600). If @<displayName>.home is taken, onboarding retries Name2, Name3, … so a second install can start without editing YAML. Sidebar + → Copy my handle copies the connected handle. If start still fails, it shows Social is not running: with the reason instead of the host's Unknown FlyBot endpoint message. The same failure is written to Settings → Feedback.
  • Members: a local Bot becomes @<bot>.<home> (add_home_member) when it is invited, when it joins an invite, or at face-to-face join, stored as field social.member. There is no published flag: access is a per-Bot grant (Sharing → Copy invite link → accept). Default deny, Chief included. Deleted Bots are revoked on bot.removed. Ungranted Bots are not registered at start and are not polled. Face-to-face join of my own Bot is an implicit room-scoped grant: if it has no identity yet, the plugin registers it room-only (social.member.roomOnly). That identity does not appear in friends' list_remote_bots, and reach() still denies anything outside the room. When you leave the last face room or the room closes, the plugin revokes it (remove_home_member). A failed join that created a new room-only identity is revoked too. A later person-grant reuses the handle and drops roomOnly. Manage access on the Bot lists who has it and Revoke.
  • Thinking status (#297): a friend's Bot shows Name is thinking… above the composer in its chat and in a face-to-face room while it works, through Bot Social's ephemeral presence signal (set_presence / list_presence; handle, name and state only). Sent only for turns that answer a friend or run in an open room; polled only while such a chat is on screen; nothing happens against a Bot Social that does not list presence. Option presence: false turns it off.
  • Remote roster: list_remote_bots → friends' Bots published into the main Bot list (globe mark). Each row uses the published avatar / color when the server sends them, else a handle-seeded look. Sidebar section flybot.sidebar.section#social keeps N to approve,
    • panels, and Past rooms. @ rows via flybot.composer.mention#social. Remote Bots never enter bot.list(). Remove this Bot declines that grant (decline_bot_grant) so it leaves the owner's Manage access; an older server hides it locally.