Commit Graph

6 Commits

Author SHA1 Message Date
jules
ec8b4e40ba Sentence-case the "Try saying" suggestions label
Drops the uppercase micro-label treatment to match the consumer-soft
label style (13px sentence-case medium).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 22:46:07 +10:00
jules
8974bcdd5d feat: sendToDock — external-send bus into the global dock
Any feature surface can open the dock and send a message as the user
("present this record", "ask about this file"). Goes through the
normal send path; supports display≠wire for long payloads; buffers one
message across mount races and queues until the agent resolves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 18:41:54 +10:00
jules
e4294fe896 feat: starter_suggestions on AgentRef → "Try saying…" empty state
Lets the host app feed a small list of click-to-send prompts that the
dock shows above the empty composer on first chat. Solves the
"users don't know what to ask it" problem without baking the curation
into the lib — the app picks what to suggest (e.g. derived from the
agent's focus areas).

Changes:
- AgentRef gains optional starter_suggestions?: string[].
- Empty-bubbles render: when present, shows a "Try saying" header +
  bulleted list of clickable rows (capped at 4 — more makes the
  panel feel heavy). Click sends the prompt verbatim via the same
  sendMessage path as the composer.
- Falls back to the existing "Ask anything." line when none provided.
- Subtle hint "Click any to send — or write your own." nudges
  toward custom prompts.

Suggestions disappear naturally after the first message — the panel
only renders when bubbles is empty.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 20:15:40 +10:00
jules
777951ca9c fix: clear resolveFailed on retry so the FAB recovers
resolveAgents() throwing once (e.g. tenant id not ready on the first
render) latched resolveFailed=true, and nothing ever cleared it — so
the FAB stayed hidden permanently even after a later retry succeeded.
Reset the flag at the start of each resolution attempt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 08:17:20 +10:00
jules
7fd81f14a9 demo: mock-transport AgentDock demo
Drives the dock with a mock transport that returns a canned reply
containing a rich table block — no network. Doubles as the design-
review surface and satisfies the crema-manifest demo requirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:05:12 +10:00
jules
05d2195fe8 feat: lib-agent-dock-ui — global assistant dock
@crema/agent-dock-ui — a floating Sparkles FAB that opens a right-side
slide-over chat with an agents-platform agent. Extracted from
skyai-finance (the canonical dock) and made app-agnostic.

The shell, threading, compose box, and rich-block rendering (via
@crema/agent-ui's MessageBody) live here; the app injects identity
(resolveAgents), context (getPageContext → structured PageContext),
and transport (auth closed over inside it — the dock never sees a
token). Self-contained: raw slide-over + buttons styled with theme
tokens, no app-local shadcn dependency. Page context travels as a
structured field, never concatenated into the message.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 15:06:02 +10:00