@object-ui/plugin-chatbot 6.2.3 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/README.md +60 -4
  3. package/dist/{packages/plugin-chatbot/src/AiPendingActionsInbox.d.ts → AiPendingActionsInbox.d.ts} +17 -1
  4. package/dist/AiPendingActionsInbox.d.ts.map +1 -0
  5. package/dist/ChatbotEnhanced.d.ts +591 -0
  6. package/dist/ChatbotEnhanced.d.ts.map +1 -0
  7. package/dist/{packages/plugin-chatbot/src/FloatingChatbot.d.ts → FloatingChatbot.d.ts} +1 -1
  8. package/dist/FloatingChatbot.d.ts.map +1 -0
  9. package/dist/{packages/plugin-chatbot/src/FloatingChatbotPanel.d.ts → FloatingChatbotPanel.d.ts} +1 -1
  10. package/dist/FloatingChatbotPanel.d.ts.map +1 -0
  11. package/dist/{packages/plugin-chatbot/src/FloatingChatbotProvider.d.ts → FloatingChatbotProvider.d.ts} +1 -1
  12. package/dist/FloatingChatbotProvider.d.ts.map +1 -0
  13. package/dist/{packages/plugin-chatbot/src/FloatingChatbotTrigger.d.ts → FloatingChatbotTrigger.d.ts} +2 -1
  14. package/dist/FloatingChatbotTrigger.d.ts.map +1 -0
  15. package/dist/agentAliases.d.ts +57 -0
  16. package/dist/agentAliases.d.ts.map +1 -0
  17. package/dist/{packages/plugin-chatbot/src/elements → elements}/code-block.d.ts +2 -2
  18. package/dist/elements/code-block.d.ts.map +1 -0
  19. package/dist/{packages/plugin-chatbot/src/elements → elements}/conversation.d.ts +4 -4
  20. package/dist/elements/conversation.d.ts.map +1 -0
  21. package/dist/elements/index.d.ts.map +1 -0
  22. package/dist/{packages/plugin-chatbot/src/elements → elements}/loader.d.ts +1 -1
  23. package/dist/elements/loader.d.ts.map +1 -0
  24. package/dist/{packages/plugin-chatbot/src/elements → elements}/message.d.ts +14 -14
  25. package/dist/elements/message.d.ts.map +1 -0
  26. package/dist/{packages/plugin-chatbot/src/elements → elements}/prompt-input.d.ts +38 -37
  27. package/dist/elements/prompt-input.d.ts.map +1 -0
  28. package/dist/{packages/plugin-chatbot/src/elements → elements}/reasoning.d.ts +3 -3
  29. package/dist/elements/reasoning.d.ts.map +1 -0
  30. package/dist/{packages/plugin-chatbot/src/elements → elements}/shimmer.d.ts +2 -2
  31. package/dist/elements/shimmer.d.ts.map +1 -0
  32. package/dist/{packages/plugin-chatbot/src/elements → elements}/sources.d.ts +4 -4
  33. package/dist/elements/sources.d.ts.map +1 -0
  34. package/dist/{packages/plugin-chatbot/src/elements → elements}/suggestion.d.ts +2 -2
  35. package/dist/elements/suggestion.d.ts.map +1 -0
  36. package/dist/{packages/plugin-chatbot/src/elements → elements}/tool.d.ts +5 -5
  37. package/dist/elements/tool.d.ts.map +1 -0
  38. package/dist/{packages/plugin-chatbot/src/elements → elements}/ui/button-group.d.ts +3 -3
  39. package/dist/elements/ui/button-group.d.ts.map +1 -0
  40. package/dist/{packages/plugin-chatbot/src/elements → elements}/ui/input-group.d.ts +6 -6
  41. package/dist/elements/ui/input-group.d.ts.map +1 -0
  42. package/dist/index.d.ts +70 -2
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +2074 -987
  45. package/dist/index.umd.cjs +1 -1
  46. package/dist/mapMessages.d.ts +147 -0
  47. package/dist/mapMessages.d.ts.map +1 -0
  48. package/dist/renderer.d.ts.map +1 -0
  49. package/dist/{packages/plugin-chatbot/src/tool-display.d.ts → tool-display.d.ts} +23 -0
  50. package/dist/tool-display.d.ts.map +1 -0
  51. package/dist/{packages/plugin-chatbot/src/useAgents.d.ts → useAgents.d.ts} +28 -0
  52. package/dist/useAgents.d.ts.map +1 -0
  53. package/dist/useHitlInChat.d.ts.map +1 -0
  54. package/dist/{packages/plugin-chatbot/src/useObjectChat.d.ts → useObjectChat.d.ts} +37 -1
  55. package/dist/useObjectChat.d.ts.map +1 -0
  56. package/dist/usePendingActions.d.ts.map +1 -0
  57. package/dist/utils.d.ts.map +1 -0
  58. package/package.json +16 -16
  59. package/dist/packages/plugin-chatbot/src/AiPendingActionsInbox.d.ts.map +0 -1
  60. package/dist/packages/plugin-chatbot/src/ChatbotEnhanced.d.ts +0 -171
  61. package/dist/packages/plugin-chatbot/src/ChatbotEnhanced.d.ts.map +0 -1
  62. package/dist/packages/plugin-chatbot/src/FloatingChatbot.d.ts.map +0 -1
  63. package/dist/packages/plugin-chatbot/src/FloatingChatbotPanel.d.ts.map +0 -1
  64. package/dist/packages/plugin-chatbot/src/FloatingChatbotProvider.d.ts.map +0 -1
  65. package/dist/packages/plugin-chatbot/src/FloatingChatbotTrigger.d.ts.map +0 -1
  66. package/dist/packages/plugin-chatbot/src/elements/code-block.d.ts.map +0 -1
  67. package/dist/packages/plugin-chatbot/src/elements/conversation.d.ts.map +0 -1
  68. package/dist/packages/plugin-chatbot/src/elements/index.d.ts.map +0 -1
  69. package/dist/packages/plugin-chatbot/src/elements/loader.d.ts.map +0 -1
  70. package/dist/packages/plugin-chatbot/src/elements/message.d.ts.map +0 -1
  71. package/dist/packages/plugin-chatbot/src/elements/prompt-input.d.ts.map +0 -1
  72. package/dist/packages/plugin-chatbot/src/elements/reasoning.d.ts.map +0 -1
  73. package/dist/packages/plugin-chatbot/src/elements/shimmer.d.ts.map +0 -1
  74. package/dist/packages/plugin-chatbot/src/elements/sources.d.ts.map +0 -1
  75. package/dist/packages/plugin-chatbot/src/elements/suggestion.d.ts.map +0 -1
  76. package/dist/packages/plugin-chatbot/src/elements/tool.d.ts.map +0 -1
  77. package/dist/packages/plugin-chatbot/src/elements/ui/button-group.d.ts.map +0 -1
  78. package/dist/packages/plugin-chatbot/src/elements/ui/input-group.d.ts.map +0 -1
  79. package/dist/packages/plugin-chatbot/src/index.d.ts +0 -68
  80. package/dist/packages/plugin-chatbot/src/index.d.ts.map +0 -1
  81. package/dist/packages/plugin-chatbot/src/mapMessages.d.ts +0 -45
  82. package/dist/packages/plugin-chatbot/src/mapMessages.d.ts.map +0 -1
  83. package/dist/packages/plugin-chatbot/src/renderer.d.ts.map +0 -1
  84. package/dist/packages/plugin-chatbot/src/tool-display.d.ts.map +0 -1
  85. package/dist/packages/plugin-chatbot/src/useAgents.d.ts.map +0 -1
  86. package/dist/packages/plugin-chatbot/src/useHitlInChat.d.ts.map +0 -1
  87. package/dist/packages/plugin-chatbot/src/useObjectChat.d.ts.map +0 -1
  88. package/dist/packages/plugin-chatbot/src/usePendingActions.d.ts.map +0 -1
  89. package/dist/packages/plugin-chatbot/src/utils.d.ts.map +0 -1
  90. /package/dist/{packages/plugin-chatbot/src/elements → elements}/index.d.ts +0 -0
  91. /package/dist/{packages/plugin-chatbot/src/renderer.d.ts → renderer.d.ts} +0 -0
  92. /package/dist/{packages/plugin-chatbot/src/useHitlInChat.d.ts → useHitlInChat.d.ts} +0 -0
  93. /package/dist/{packages/plugin-chatbot/src/usePendingActions.d.ts → usePendingActions.d.ts} +0 -0
  94. /package/dist/{packages/plugin-chatbot/src/utils.d.ts → utils.d.ts} +0 -0
@@ -0,0 +1,591 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ * ChatbotEnhanced — composed on top of vendored Vercel AI Elements
9
+ * (src/elements/, MIT). Public props remain backwards compatible with the
10
+ * previous custom implementation; internally we now get:
11
+ * - multi-line auto-growing prompt input (PromptInput)
12
+ * - smart reverse-stick scroll (Conversation + useStickToBottom)
13
+ * - message action toolbar surface (Message.actions slot)
14
+ * - tool-call visualisation (Tool* family)
15
+ * - reasoning / chain-of-thought collapsible (Reasoning*)
16
+ * - inline citations / sources panel (Sources*)
17
+ * - suggestion chips on empty state (Suggestion / Suggestions)
18
+ * - streaming markdown via streamdown (used by Message internals)
19
+ */
20
+ import * as React from 'react';
21
+ export interface ChatMessage {
22
+ id: string;
23
+ role: 'user' | 'assistant' | 'system';
24
+ content: string;
25
+ timestamp?: string;
26
+ avatar?: string;
27
+ avatarFallback?: string;
28
+ /** Streaming flag — surfaces a shimmer cursor on the assistant bubble. */
29
+ streaming?: boolean;
30
+ /**
31
+ * Tool invocations attached to this message. Mirrors the AI SDK's
32
+ * `ToolUIPart` shape (see `vercel/ai` v3) so we can render them with the
33
+ * vendored `<Tool>` element without any extra mapping.
34
+ */
35
+ toolInvocations?: ChatToolInvocation[];
36
+ /** Chain-of-thought / reasoning text emitted alongside the answer. */
37
+ reasoning?: string;
38
+ /** Optional citation / RAG sources for this assistant message. */
39
+ sources?: ChatSource[];
40
+ /** Optional backend trace id (e.g. `ai_traces.id`) for debugging. */
41
+ traceId?: string;
42
+ /**
43
+ * Live build progress from a long-running tool (apply_blueprint), lifted from
44
+ * the stream's reconciled `data-build-progress` part. When present, the chat
45
+ * renders a growing "build tree" so the user watches the app take shape
46
+ * instead of staring at a thinking spinner.
47
+ */
48
+ buildProgress?: ChatBuildProgress;
49
+ /**
50
+ * Charts to render inline in the assistant bubble, lifted from the stream's
51
+ * `data-chart` parts (emitted by the `visualize_data` tool via
52
+ * `ctx.onProgress`). Each renders through the platform's SDUI `<chart>`
53
+ * component, so an AI data answer can show a bar/line/pie chart rather than
54
+ * only a wall of text.
55
+ */
56
+ charts?: ChatChart[];
57
+ }
58
+ /**
59
+ * A chart lifted from a `data-chart` stream part. Mirrors the `schema` prop of
60
+ * the SDUI `<chart>` renderer (plugin-charts `ChartRenderer`), so it can be
61
+ * fed straight into `<SchemaRenderer schema={{ type: 'chart', ...chart }} />`.
62
+ */
63
+ export interface ChatChart {
64
+ chartType?: 'bar' | 'column' | 'horizontal-bar' | 'line' | 'area' | 'pie' | 'donut' | 'radar' | 'scatter';
65
+ /** Optional chart title shown above the chart. */
66
+ title?: string;
67
+ /** Aggregated rows — one object per category. */
68
+ data: Array<Record<string, unknown>>;
69
+ /** Field name used for the category axis (x-axis / pie slices). */
70
+ xAxisKey?: string;
71
+ /** One entry per plotted measure. `dataKey` is the row column to read. */
72
+ series: Array<{
73
+ dataKey: string;
74
+ label?: string;
75
+ }>;
76
+ }
77
+ /** A reconciled snapshot of an in-flight app build (apply_blueprint). */
78
+ export interface ChatBuildProgress {
79
+ /** Coarse phase: drafting structure, generating sample data, or finished. */
80
+ phase: 'structure' | 'data' | 'done';
81
+ /** Human label for the app being built (for the panel header). */
82
+ appLabel?: string;
83
+ /** Artifacts drafted so far, cumulative. */
84
+ items: Array<{
85
+ type: string;
86
+ name: string;
87
+ }>;
88
+ /** Count of artifacts done and the rough total (for the progress bar). */
89
+ done: number;
90
+ total: number;
91
+ /**
92
+ * Monotonic emit counter from the server. Bumps on every progress update —
93
+ * including the keep-alive heartbeats sent during long, quiet seed-generation
94
+ * awaits — so it's the reliable "a fresh byte just arrived" signal the build
95
+ * panel keys its liveness off (content fields stay identical across a
96
+ * heartbeat). Absent from older runtimes.
97
+ */
98
+ seq?: number;
99
+ }
100
+ export interface ChatToolInvocation {
101
+ toolCallId: string;
102
+ toolName: string;
103
+ args?: unknown;
104
+ result?: unknown;
105
+ errorText?: string;
106
+ /**
107
+ * AI SDK v6 lifecycle states for a tool part. Defaults to
108
+ * `output-available` when only `result` is present and `input-available`
109
+ * when only `args` is present.
110
+ */
111
+ state?: 'input-streaming' | 'input-available' | 'approval-requested' | 'approval-responded' | 'output-available' | 'output-error' | 'output-denied';
112
+ /**
113
+ * ObjectStack HITL extension. When the framework's `action-tools.ts`
114
+ * proposes a destructive action that requires human approval, the tool
115
+ * result carries `{ status: 'pending_approval', pendingActionId: 'pa_…' }`.
116
+ * `mapMessages.ts` lifts that id here so chat UIs can call the
117
+ * `POST /api/v1/ai/pending-actions/:id/{approve,reject}` REST endpoints
118
+ * without parsing the tool result JSON themselves.
119
+ */
120
+ pendingActionId?: string;
121
+ /**
122
+ * ObjectStack ADR-0033 extension. When a metadata-authoring tool stages a
123
+ * change as a DRAFT, its result carries `{ status: 'drafted', type, name, … }`
124
+ * (or a `drafted: [{type,name}]` batch from `apply_blueprint`). `mapMessages.ts`
125
+ * lifts the reviewable targets here so chat UIs can render a "Review N
126
+ * change(s)" affordance that opens the designer's review/diff. Nothing is
127
+ * live until the human publishes — this is the review entry point.
128
+ */
129
+ draftReview?: {
130
+ items: Array<{
131
+ type: string;
132
+ name: string;
133
+ }>;
134
+ summary?: string;
135
+ packageId?: string;
136
+ /**
137
+ * Backend lifecycle intent (from the tool result). `true` for whole-app
138
+ * builds (apply_blueprint) — eligible for the auto-publish "magic moment".
139
+ * Omitted for incremental edits, which stay drafts for explicit review.
140
+ */
141
+ autoPublishable?: boolean;
142
+ /** Count of artifacts that failed in a partial build, surfaced not hidden. */
143
+ failedCount?: number;
144
+ /**
145
+ * ADR-0045: the build was MATERIALIZED in-turn — real tables and seed
146
+ * rows exist; the app is live but `hidden` (unlisted). Preview should
147
+ * open the REAL app URL, not the draft overlay.
148
+ */
149
+ materialized?: boolean;
150
+ /**
151
+ * ADR-0038 L1 graph-lint verdict for the staged build. Rendered as a
152
+ * verified/issues chip so "drafted" and "verified" read as the two
153
+ * separate statements they are. Absent on older tool output.
154
+ */
155
+ verification?: {
156
+ errors: number;
157
+ warnings: number;
158
+ };
159
+ /**
160
+ * ADR-0038 L1 — the individual findings behind the `verification` counts,
161
+ * surfaced under the chip so "N issues" expands into WHAT is wrong instead
162
+ * of being a dead-end badge.
163
+ */
164
+ issues?: Array<{
165
+ severity: 'error' | 'warning';
166
+ code: string;
167
+ message: string;
168
+ fix?: string;
169
+ }>;
170
+ /**
171
+ * Post-build "what's next" steps (apply_blueprint `nextSteps`). Rendered as
172
+ * a short getting-started checklist under the build summary.
173
+ */
174
+ nextSteps?: string[];
175
+ };
176
+ /**
177
+ * ObjectStack extension. `propose_blueprint` returns a PLAN before anything
178
+ * is staged (`status: 'blueprint_proposed'`). `mapMessages.ts` lifts the
179
+ * reviewable shape here so chat UIs can render a "Proposed plan" card — the
180
+ * objects the build will create, the agent's assumptions, and any
181
+ * structure-deciding questions — and the user can approve or adjust before
182
+ * `apply_blueprint` runs. Nothing is created yet; this is the confirm gate.
183
+ */
184
+ proposedPlan?: {
185
+ summary?: string;
186
+ objects: Array<{
187
+ name: string;
188
+ label?: string;
189
+ fieldCount: number;
190
+ }>;
191
+ counts: {
192
+ objects: number;
193
+ views: number;
194
+ dashboards: number;
195
+ seedData: number;
196
+ };
197
+ questions: string[];
198
+ questionChoices?: Array<{
199
+ text: string;
200
+ options: string[];
201
+ }>;
202
+ assumptions: string[];
203
+ targetApp?: string;
204
+ };
205
+ }
206
+ export interface ChatSource {
207
+ id?: string;
208
+ title?: string;
209
+ url: string;
210
+ }
211
+ /**
212
+ * Localizable UI strings for the chat surface. Every field is optional and
213
+ * falls back to an English default, keeping existing callers source-compatible.
214
+ */
215
+ export interface ChatbotLabels {
216
+ /** Empty-state heading shown before the first message. */
217
+ emptyTitle?: string;
218
+ /** Empty-state supporting line. */
219
+ emptyDescription?: string;
220
+ /** "Clear conversation" action label. */
221
+ clear?: string;
222
+ /** Trailing hint next to the send button (e.g. "to send"). */
223
+ sendHint?: string;
224
+ /** Compact agent activity heading shown in summary mode. */
225
+ agentActivity?: string;
226
+ /** Status label for completed tool work. */
227
+ toolCompleted?: string;
228
+ /** Status label for running tool work. */
229
+ toolRunning?: string;
230
+ /** Status label for tool work waiting for approval. */
231
+ toolAwaitingApproval?: string;
232
+ /** Status label for failed tool work. */
233
+ toolFailed?: string;
234
+ /** Helper text explaining that raw internals are hidden. */
235
+ toolDetailsHidden?: string;
236
+ /** Message action label for copying assistant text. */
237
+ copy?: string;
238
+ /** Message action label shown after a successful copy. */
239
+ copied?: string;
240
+ /** Message action label for regenerating the last assistant response. */
241
+ regenerate?: string;
242
+ /** Accessible label for the model picker. */
243
+ model?: string;
244
+ /** Accessible label for the submit button. */
245
+ submit?: string;
246
+ /** Accessible label for the attachment file picker. */
247
+ uploadFiles?: string;
248
+ /** Accessible label for the stop-streaming button. */
249
+ stopResponse?: string;
250
+ /** Trace link label in debug mode. */
251
+ trace?: string;
252
+ /** Trace link tooltip in debug mode. */
253
+ viewTrace?: string;
254
+ /**
255
+ * Shown beside a running turn once the server stream goes quiet (no bytes for
256
+ * a few seconds) — e.g. "Waiting for server…". Honest stall cue, not a claim
257
+ * of progress.
258
+ */
259
+ connectionWaiting?: string;
260
+ /**
261
+ * Shown when a running turn's stream has gone quiet past the threshold —
262
+ * e.g. "Still working…". Pairs with the live elapsed timer so the user sees
263
+ * both that we are waiting and for how long.
264
+ */
265
+ connectionStalledLabel?: string;
266
+ /**
267
+ * Shown when the browser reports it is offline (navigator.onLine === false)
268
+ * mid-turn — e.g. "Connection lost — reconnecting…". The honest disconnect cue.
269
+ */
270
+ connectionOfflineLabel?: string;
271
+ }
272
+ export type ChatbotProcessVisibility = 'hidden' | 'summary' | 'debug';
273
+ export type ChatbotSurface = 'card' | 'plain';
274
+ export interface ChatbotEnhancedProps extends React.HTMLAttributes<HTMLDivElement> {
275
+ messages?: ChatMessage[];
276
+ placeholder?: string;
277
+ /**
278
+ * Send handler. Signature kept backwards compatible — `files` is the list
279
+ * of attachments selected via the prompt-input action menu.
280
+ */
281
+ onSendMessage?: (message: string, files?: File[]) => void;
282
+ onClear?: () => void;
283
+ /** Stop the current streaming response */
284
+ onStop?: () => void;
285
+ /** Reload / retry the last assistant message */
286
+ onReload?: () => void;
287
+ /**
288
+ * Called when the user clicks the upgrade / top-up CTA shown for an AI quota
289
+ * refusal (429 from the cloud token guardrail). Hosts typically open the cloud
290
+ * billing/pricing page. When omitted, no CTA button is shown.
291
+ */
292
+ onUpgrade?: () => void;
293
+ disabled?: boolean;
294
+ /**
295
+ * Render a static, non-interactive transcript: hides the prompt-input
296
+ * composer entirely so the conversation can be embedded in a public /
297
+ * read-only surface (e.g. a `/s/:token` share page). The detailed tool
298
+ * cards (proposed-plan, drafts) still render — but their action buttons
299
+ * stay hidden because the host passes no `onSendMessage`/`onPublishDrafts`
300
+ * callbacks, so the cards degrade to their read-only/summary form.
301
+ */
302
+ readOnly?: boolean;
303
+ /** Whether the assistant is currently generating a response */
304
+ isLoading?: boolean;
305
+ /** Current streaming/API error */
306
+ error?: Error;
307
+ showTimestamp?: boolean;
308
+ /**
309
+ * Render avatars beside each message (assistant gets a bot glyph, the user
310
+ * gets their initial / image). Defaults to false to preserve the previous
311
+ * minimal layout for existing callers.
312
+ */
313
+ showAvatars?: boolean;
314
+ userAvatarUrl?: string;
315
+ userAvatarFallback?: string;
316
+ assistantAvatarUrl?: string;
317
+ assistantAvatarFallback?: string;
318
+ /**
319
+ * Hide the internal "clear conversation" strip. Hosts that surface a clear
320
+ * / new-chat control in their own chrome (e.g. a floating panel header) set
321
+ * this to avoid a redundant second header row.
322
+ */
323
+ hideClearBar?: boolean;
324
+ maxHeight?: string;
325
+ /** Kept for back-compat — markdown is now always rendered by streamdown. */
326
+ enableMarkdown?: boolean;
327
+ /** Enable the attachment action menu. */
328
+ enableFileUpload?: boolean;
329
+ /** Comma-separated list (or accept string) forwarded to the file picker. */
330
+ acceptedFileTypes?: string;
331
+ /** Max file size in bytes (default 10 MB). */
332
+ maxFileSize?: number;
333
+ /**
334
+ * Optional suggestion chips rendered on the empty conversation state.
335
+ * Clicking a chip submits the message immediately.
336
+ */
337
+ suggestions?: string[];
338
+ /**
339
+ * Optional UI string overrides for localization. Each field falls back
340
+ * to its English default, so existing callers keep working unchanged.
341
+ */
342
+ labels?: ChatbotLabels;
343
+ /**
344
+ * Available LLM models for the picker (sourced from
345
+ * `GET /api/v1/ai/models` exposed by `@objectstack/service-ai`).
346
+ */
347
+ models?: ChatbotModelOption[];
348
+ /** Currently selected model id (controlled). */
349
+ selectedModelId?: string;
350
+ /** Fired when the user picks a different model. */
351
+ onModelChange?: (modelId: string) => void;
352
+ /**
353
+ * Optional banner rendered between the message-count strip and the
354
+ * conversation. Used by shell-level UIs (e.g. Studio's assistant status
355
+ * row) without forcing them to fork the whole component.
356
+ */
357
+ headerSlot?: React.ReactNode;
358
+ /**
359
+ * Optional overlay rendered absolute-positioned above the prompt input.
360
+ * Intended for slash-command palettes / inline suggestion popups.
361
+ */
362
+ promptOverlaySlot?: React.ReactNode;
363
+ /**
364
+ * Fired on every keystroke in the prompt textarea (forwarded from the
365
+ * AI Elements `PromptInputTextarea`). Lets callers drive a slash-command
366
+ * palette without owning the textarea state.
367
+ */
368
+ onInputChange?: (value: string) => void;
369
+ /**
370
+ * When provided, tool parts in `approval-requested` state render Approve /
371
+ * Deny buttons inside their body. The callback receives the tool's
372
+ * `toolCallId` (use it to look up the AI SDK approval id if different).
373
+ */
374
+ onToolApprove?: (toolCallId: string, approved: boolean, reason?: string) => void;
375
+ /** Label for the approve button (default "Approve"). */
376
+ toolApproveLabel?: string;
377
+ /** Label for the deny button (default "Deny"). */
378
+ toolDenyLabel?: string;
379
+ /** Reason text sent with a denial response (default "User denied the operation"). */
380
+ toolDenyReason?: string;
381
+ /**
382
+ * Client-side overlay for HITL approval outcomes, keyed by `toolCallId`.
383
+ * Driven by `useHitlInChat` (or any caller-owned map). When an entry is
384
+ * present for a tool in `approval-requested` state, the inline buttons are
385
+ * hidden and the configured message renders in their place — giving the
386
+ * operator immediate feedback while the server processes the decision.
387
+ */
388
+ toolDecisions?: Record<string, ToolDecisionState>;
389
+ /**
390
+ * When provided, tool parts whose result drafted metadata (ADR-0033) render a
391
+ * "Review N change(s)" button inside their body. The callback receives the
392
+ * reviewable `{ type, name }` targets; the host typically navigates to the
393
+ * designer's review/diff. See `ChatToolInvocation.draftReview`.
394
+ */
395
+ onReviewDraft?: (items: Array<{
396
+ type: string;
397
+ name: string;
398
+ }>) => void;
399
+ /** Label for the review-draft button (default "Review {n} change(s)"). */
400
+ toolReviewLabel?: (count: number) => string;
401
+ /**
402
+ * When provided AND the drafted tool result reported its owning `packageId`,
403
+ * tool parts render a one-click "Publish" button so the human can promote the
404
+ * staged drafts to live without leaving the conversation (the ADR-0033 gate
405
+ * stays — the human still clicks). The host wires this to
406
+ * `POST /api/v1/packages/:packageId/publish-drafts`.
407
+ *
408
+ * Return value (all forms accepted, `false`/`{ok:false}` = failure):
409
+ * - `boolean | void` — legacy success flag;
410
+ * - `{ ok: boolean; health?: PublishHealth }` — ADR-0038 L3: the publish
411
+ * response's `seedApplied` + runtime `probes`, rendered as a build-health
412
+ * line under the Published badge so "Published" and "actually works" are
413
+ * two separately-verified statements.
414
+ */
415
+ onPublishDrafts?: (packageId: string) => void | boolean | PublishOutcome | Promise<void | boolean | PublishOutcome>;
416
+ /**
417
+ * When provided, a finished build tree (`buildProgress.phase === 'done'`) that
418
+ * created an `app` renders an "Open app" action so the user can jump straight
419
+ * into what was just built. The host wires this to its router (e.g.
420
+ * `navigate('/apps/<name>')`).
421
+ */
422
+ onOpenBuiltApp?: (appName: string, appSegment?: string) => void;
423
+ /** Label for the open-built-app action (default "Open app"). */
424
+ openBuiltAppLabel?: string;
425
+ /**
426
+ * ADR-0037 Live Canvas: preview the drafted app *before* it is published.
427
+ * Rendered next to the build tree's Open-app action and on draft chips
428
+ * whose items include an `app`. The host wires this to its router with the
429
+ * preview flag (e.g. `navigate('/apps/<name>?preview=draft')`).
430
+ * ADR-0045: when the build reports `materialized`, `opts.materialized` is
431
+ * true and the host should open the REAL app URL (no preview flag) — the
432
+ * app is live-but-unlisted, with actual tables and seed data.
433
+ */
434
+ onPreviewDraftApp?: (appName: string, opts?: {
435
+ materialized?: boolean;
436
+ appSegment?: string;
437
+ }) => void;
438
+ /** Label for the preview-draft action (default "Preview"). */
439
+ previewDraftLabel?: string;
440
+ /**
441
+ * ADR-0037 Live Canvas: notifies the host whenever AI-authored draft
442
+ * artifacts land in the conversation (build-progress items + drafted
443
+ * envelopes), with the cumulative deduped set. Hosts use it to open and
444
+ * refresh the live draft-preview pane while the agent builds.
445
+ */
446
+ onDraftArtifacts?: (artifacts: Array<{
447
+ type: string;
448
+ name: string;
449
+ }>, appSegment?: string) => void;
450
+ /**
451
+ * ADR-0045: fires once per build whose tool result reports `materialized`
452
+ * with an `app` in the draft set — the app is live (tables + seed data)
453
+ * but unlisted. Hosts switch the canvas to the real app URL.
454
+ */
455
+ onBuildMaterialized?: (appName: string) => void;
456
+ /** Label for the publish-drafts button (default "Publish"). */
457
+ publishDraftsLabel?: string;
458
+ /** Label for the published-state badge that replaces the button (default "Published"). */
459
+ publishedLabel?: string;
460
+ /** Label for the clean ADR-0038 verification chip (default "Verified"). */
461
+ verifiedLabel?: string;
462
+ /** Heading for the post-build "what's next" checklist (default "What's next"). */
463
+ nextStepsLabel?: string;
464
+ /** Heading for the pre-build proposed-plan card (default "Proposed plan"). */
465
+ planTitleLabel?: string;
466
+ /** Heading above the structure-deciding questions in the plan card (default "Confirm before building"). */
467
+ planQuestionsLabel?: string;
468
+ /** Heading above the agent's assumptions in the plan card (default "Assumptions"). */
469
+ planAssumptionsLabel?: string;
470
+ /** Footer hint inviting the user to approve or adjust the plan (default "Reply to approve or adjust this plan."). Shown only when `onSendMessage` is absent (no one-click gate). */
471
+ planApproveHintLabel?: string;
472
+ /** Label for the plan card's primary one-click "build it" button (default "Build it"). */
473
+ planApproveLabel?: string;
474
+ /** Label for the plan card's secondary "adjust" button, which focuses the chat input (default "Adjust"). */
475
+ planAdjustLabel?: string;
476
+ /** Static badge shown in place of the "Build it" button once this plan's build has run, so it can't be re-triggered (default "Built"). */
477
+ planBuiltLabel?: string;
478
+ /** Message sent when the user approves a plan with no open questions (default "Looks good — build it as proposed."). */
479
+ planApproveMessage?: string;
480
+ /** Message sent when the user approves a plan that still has open questions — tells the agent to proceed on sensible defaults (default "Build it with your best assumptions; use sensible defaults for the open questions."). */
481
+ planApproveDefaultsMessage?: string;
482
+ /**
483
+ * Builds the message sent when the user clicks a one-click answer chip for a
484
+ * structure-deciding question (from `proposedPlan.questionChoices`). Receives
485
+ * the question text and the chosen option. Default:
486
+ * `For "<question>", go with: <option>.` — answers that question and lets the
487
+ * agent continue (ask the next question or build).
488
+ */
489
+ planAnswerMessage?: (question: string, option: string) => string;
490
+ /**
491
+ * Live draft-status resolver: how many drafts are still PENDING in a
492
+ * package (e.g. `GET /metadata/_drafts?packageId=` count). When provided,
493
+ * each draft card's Publish/Published affordance reflects the SERVER's
494
+ * current state instead of this component's in-memory publish history —
495
+ * so a reloaded conversation shows "Published" for work that went live,
496
+ * and a card whose package gained new drafts offers Publish again. The
497
+ * in-memory snapshot remains the fallback when the prop is absent.
498
+ */
499
+ fetchPendingDraftCount?: (packageId: string) => Promise<number>;
500
+ /**
501
+ * Auto-fire `onPublishDrafts` the moment a turn finishes drafting an app —
502
+ * the self-use "magic moment" where the user refreshes and the app is already
503
+ * live WITH data, instead of clicking Publish. Server-gated by the plan
504
+ * (`features.autoPublishAiBuilds`, env-revertible via
505
+ * `OS_AI_AUTOPUBLISH_DISABLED`); the host passes the resolved flag.
506
+ *
507
+ * Only NEW drafts from the current session fire — drafts already present when
508
+ * the chat mounts (e.g. reopening a conversation) are left for the manual
509
+ * Publish button, so reopening history never silently publishes.
510
+ *
511
+ * @default false
512
+ */
513
+ autoPublishDrafts?: boolean;
514
+ /**
515
+ * Controls how agent internals are exposed. `summary` keeps end-user chat
516
+ * readable by grouping repeated tool calls and hiding raw args/results.
517
+ * Use `debug` for developer/admin trace views.
518
+ *
519
+ * @default 'summary'
520
+ */
521
+ processVisibility?: ChatbotProcessVisibility;
522
+ /**
523
+ * Visual chrome for the chat surface. `card` keeps the embeddable bordered
524
+ * panel; `plain` removes panel chrome for full-page chat workspaces.
525
+ *
526
+ * @default 'card'
527
+ */
528
+ surface?: ChatbotSurface;
529
+ }
530
+ /**
531
+ * ADR-0038 L3 — what a publish actually did at runtime. Hosts extract this
532
+ * from the publish-drafts response (`seedApplied` + `probes`) so the chat can
533
+ * render a build-health line: "Published" and "actually works" are two
534
+ * separately-verified statements, and the second one must be visible too.
535
+ */
536
+ export interface PublishHealth {
537
+ /** Rows materialized by published seeds (`seedApplied` inserted+updated). */
538
+ seededRows?: number;
539
+ /** Seed-load failure detail when sample data did NOT land. */
540
+ seedError?: string;
541
+ /** How many runtime probes ran per plane (`probes.checked`). */
542
+ checked?: {
543
+ seeds: number;
544
+ views: number;
545
+ widgets: number;
546
+ };
547
+ /** Runtime findings (`probes.issues`), already human-readable. */
548
+ issues?: Array<{
549
+ severity: 'error' | 'warning';
550
+ code: string;
551
+ message: string;
552
+ }>;
553
+ }
554
+ /** Structured result of `onPublishDrafts` — richer alternative to a bare boolean. */
555
+ export interface PublishOutcome {
556
+ ok: boolean;
557
+ health?: PublishHealth;
558
+ }
559
+ /**
560
+ * Extract {@link PublishHealth} from a publish-drafts response body (tolerant
561
+ * of the dispatcher's `{ success, data }` envelope). Shared by the hosts that
562
+ * wire `onPublishDrafts` so they all read `seedApplied` + `probes` the same
563
+ * way; returns undefined when the server reported neither (older runtimes).
564
+ */
565
+ export declare function publishHealthFromResponse(payload: unknown): PublishHealth | undefined;
566
+ export type ToolDecisionState = {
567
+ state: 'pending';
568
+ message?: string;
569
+ } | {
570
+ state: 'success';
571
+ message?: string;
572
+ } | {
573
+ state: 'error';
574
+ message: string;
575
+ };
576
+ export interface ChatbotModelOption {
577
+ id: string;
578
+ label?: string;
579
+ provider?: string;
580
+ }
581
+ declare const ChatbotEnhanced: React.ForwardRefExoticComponent<ChatbotEnhancedProps & React.RefAttributes<HTMLDivElement>>;
582
+ export interface TurnLiveness {
583
+ /** Whole-turn duration in seconds (since the indicator mounted). */
584
+ elapsedSeconds: number;
585
+ /** Seconds since the last real byte arrived from the server. */
586
+ quietSeconds: number;
587
+ /** True while bytes have arrived recently — an *observed* live stream. */
588
+ live: boolean;
589
+ }
590
+ export { ChatbotEnhanced };
591
+ //# sourceMappingURL=ChatbotEnhanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatbotEnhanced.d.ts","sourceRoot":"","sources":["../src/ChatbotEnhanced.tsx"],"names":[],"mappings":"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"}
@@ -23,5 +23,5 @@ export interface FloatingChatbotProps extends ChatbotEnhancedProps {
23
23
  * via a fixed FAB trigger button. Uses React portal to avoid
24
24
  * DOM/z-index conflicts.
25
25
  */
26
- export declare function FloatingChatbot({ floatingConfig, headerExtra, headerActions, ...chatbotProps }: FloatingChatbotProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function FloatingChatbot({ floatingConfig, headerExtra, headerActions, ...chatbotProps }: FloatingChatbotProps): React.JSX.Element;
27
27
  //# sourceMappingURL=FloatingChatbot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingChatbot.d.ts","sourceRoot":"","sources":["../src/FloatingChatbot.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAI7D,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,6BAA6B;IAC7B,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,WAAW,EACX,aAAa,EACb,GAAG,YAAY,EAChB,EAAE,oBAAoB,qBA2DtB"}
@@ -29,5 +29,5 @@ export interface FloatingChatbotPanelProps {
29
29
  * Renders above all content, anchored to the configured position.
30
30
  * Supports fullscreen toggle and close.
31
31
  */
32
- export declare function FloatingChatbotPanel({ title, position, width, height, children, className, headerExtra, headerActions, }: FloatingChatbotPanelProps): import("react/jsx-runtime").JSX.Element | null;
32
+ export declare function FloatingChatbotPanel({ title, position, width, height, children, className, headerExtra, headerActions, }: FloatingChatbotPanelProps): React.JSX.Element | null;
33
33
  //# sourceMappingURL=FloatingChatbotPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingChatbotPanel.d.ts","sourceRoot":"","sources":["../src/FloatingChatbotPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,MAAM,WAAW,yBAAyB;IACxC,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAA;IACzC,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+GAA+G;IAC/G,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,oFAAoF;IACpF,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAChC;AAoDD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,KAAc,EACd,QAAyB,EACzB,KAAW,EACX,MAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,GACd,EAAE,yBAAyB,4BAuE3B"}
@@ -28,7 +28,7 @@ export interface FloatingChatbotProviderProps {
28
28
  defaultOpen?: boolean;
29
29
  children: React.ReactNode;
30
30
  }
31
- export declare function FloatingChatbotProvider({ defaultOpen, children, }: FloatingChatbotProviderProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function FloatingChatbotProvider({ defaultOpen, children, }: FloatingChatbotProviderProps): React.JSX.Element;
32
32
  /**
33
33
  * Hook to access the floating chatbot state and actions.
34
34
  * Must be used within a `FloatingChatbotProvider`.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingChatbotProvider.d.ts","sourceRoot":"","sources":["../src/FloatingChatbotProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAA;CAC7B;AAED,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG,sBAAsB,CAAA;AAIvF,MAAM,WAAW,4BAA4B;IAC3C,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,EACtC,WAAmB,EACnB,QAAQ,GACT,EAAE,4BAA4B,qBAwB9B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,2BAA2B,CAQhE"}
@@ -5,6 +5,7 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
+ import * as React from "react";
8
9
  export interface FloatingChatbotTriggerProps {
9
10
  /** Position of the FAB */
10
11
  position?: "bottom-right" | "bottom-left";
@@ -17,5 +18,5 @@ export interface FloatingChatbotTriggerProps {
17
18
  * Floating Action Button (FAB) trigger for the chatbot.
18
19
  * Renders a circular button fixed to the viewport corner.
19
20
  */
20
- export declare function FloatingChatbotTrigger({ position, size, className, }: FloatingChatbotTriggerProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function FloatingChatbotTrigger({ position, size, className, }: FloatingChatbotTriggerProps): React.JSX.Element;
21
22
  //# sourceMappingURL=FloatingChatbotTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingChatbotTrigger.d.ts","sourceRoot":"","sources":["../src/FloatingChatbotTrigger.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmB9B,MAAM,WAAW,2BAA2B;IAC1C,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAA;IACzC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0BD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,QAAyB,EACzB,IAAS,EACT,SAAS,GACV,EAAE,2BAA2B,qBA4B7B"}