feat: add Bluesky convenience node (Post, Like, Repost, Follow)
Adds a task-shaped Bluesky node that hides NSIDs and lexicon details
for the most common app.bsky.* operations. The generic AT Protocol
node remains for everything else.
Resources & operations:
- Post \u2192 Create / Reply / Quote
- Like \u2192 Create
- Repost \u2192 Create
- Follow \u2192 Create
Affordances handled internally:
- Rich-text facet auto-detection (mentions / links / hashtags)
via RichText.detectFacets() from @atproto/api, with correct
UTF-8 byte offsets
- Handle \u2192 DID resolution for follows and mentions
- Parent \u2192 root walking when building reply refs (re-uses the
parent's reply.root if present)
- Both at:// URIs and https://bsky.app/profile/.../post/... URLs
accepted everywhere a post reference is requested
- Optional image embed via binary property + uploadBlob
Files:
- src/nodes/Bluesky/Bluesky.node.ts
- src/nodes/Bluesky/operations.ts
- src/nodes/Bluesky/postUri.ts
- src/nodes/Bluesky/bluesky.svg
- tests/bluesky.test.ts (8 new tests)
Node marker: usableAsTool: true so AI agents can call it as a tool.
176 \u2192 184 tests passing. Build clean.