Skip to content

nebo.chat: the page's own conversation with its employee, and a chat drawn in the page - #12

Merged
localrivet merged 3 commits into
mainfrom
app-chat-channel
Oct 23, 2026
Merged

localrivet merged 3 commits into
mainfrom
app-chat-channel

Conversation

@localrivet

Copy link
Copy Markdown
Contributor

SDK half of the app-scoped chat channel (nebo PR on the confinement stack). Stacked on #11 (app-files-read).

nebo.chat no longer frames Nebo's console (/chat-embed/<id>, the owner's APIs and socket). It is the page's own conversation with its app's employee, through the page's pass:

  • history({thread?, before?, limit?}) → {messages, running, hasMore} (GET /api/v1/apps/<id>/chat)
  • send(message, {thread?, scope?}) (POST …/chat, with the setContext context)
  • stop({thread?}), newThread({thread?}) (…/chat/stop, …/chat/new)
  • onMessage(handler): message, stream, complete (notice?), error, stopped, from the app's socket, for the app's own conversations only. A send queued into a running turn (stop_reason: queued_into_running_turn) is not a turn end.
  • mount(el, options): a chat drawn in the page itself (zero-dep; one injected stylesheet under .nebo-chat; light/dark/auto; history, streaming reply, Enter to send, Stop; words rendered as text with code, bold and links, never HTML). Options kept: placeholder, theme, height, borderless, contextId (the thread), scope; new name.

README's nebo.chat section rewritten; dist/ rebuilt; test/chat.test.mjs (URLs with the pass, thread, context; the socket filter).

To ship to apps built with npm (Neighbor Mail, Deal Tracker): publish a new version after merge (tag v0.2.0; release.yml takes the version from the tag). Apps built in Nebo load Nebo's served /sdk/nebo.global.js, rebuilt in the nebo PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_015dw5RFwzdZPHuB2VsN3Mcx

localrivet and others added 3 commits October 23, 2026 08:01
… pass, and a chat drawn in the page

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015dw5RFwzdZPHuB2VsN3Mcx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015dw5RFwzdZPHuB2VsN3Mcx
…read after a reconnect, the socket from first use to unmount

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015dw5RFwzdZPHuB2VsN3Mcx
@localrivet
localrivet changed the base branch from app-files-read to main October 23, 2026 15:11
@localrivet localrivet closed this Oct 23, 2026
@localrivet localrivet reopened this Oct 23, 2026
@localrivet
localrivet merged commit 3ab6d40 into main Oct 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant