@mcp-b/char 0.0.6 → 0.1.1

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 (39) hide show
  1. package/README.md +76 -362
  2. package/dist/custom-elements.json +2180 -0
  3. package/dist/display-mode-policy.d.ts +82 -0
  4. package/dist/display-mode-policy.d.ts.map +1 -0
  5. package/dist/display-mode-policy.js +87 -0
  6. package/dist/display-mode-policy.js.map +1 -0
  7. package/dist/index.d.ts +707 -326
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2374 -15521
  10. package/dist/index.js.map +1 -1
  11. package/dist/shell-component.d.ts +379 -0
  12. package/dist/shell-component.d.ts.map +1 -0
  13. package/dist/shell-component.js +2508 -0
  14. package/dist/shell-component.js.map +1 -0
  15. package/dist/tsdoc-metadata.json +11 -0
  16. package/dist/utils.d.ts +161 -0
  17. package/dist/utils.d.ts.map +1 -0
  18. package/dist/utils.js +393 -0
  19. package/dist/utils.js.map +1 -0
  20. package/dist/web-component-standalone.iife.js +1259 -2358
  21. package/dist/web-component-standalone.iife.js.map +1 -1
  22. package/dist/web-component.d.ts +381 -180
  23. package/dist/web-component.d.ts.map +1 -1
  24. package/dist/web-component.js +1142 -15740
  25. package/dist/web-component.js.map +1 -1
  26. package/package.json +23 -115
  27. package/THIRD_PARTY_NOTICES.md +0 -52
  28. package/dist/VoiceHandoffPanel-CIFIJSDs.js +0 -244
  29. package/dist/VoiceHandoffPanel-CIFIJSDs.js.map +0 -1
  30. package/dist/button-BLnLZvxR.js +0 -105
  31. package/dist/button-BLnLZvxR.js.map +0 -1
  32. package/dist/realtimekit.d.ts +0 -15
  33. package/dist/realtimekit.d.ts.map +0 -1
  34. package/dist/realtimekit.js +0 -89
  35. package/dist/realtimekit.js.map +0 -1
  36. package/dist/styles/globals.css +0 -2
  37. package/dist/styles.d.ts +0 -2
  38. package/dist/web-component-standalone.css +0 -37
  39. package/dist/web-component-standalone.css.map +0 -1
@@ -0,0 +1,379 @@
1
+
2
+ //#region src/types.d.ts
3
+ /**
4
+ * Server-issued ticket auth payload.
5
+ * Used for SSR-friendly authentication flows.
6
+ *
7
+ * @public
8
+ */
9
+ interface TicketAuth {
10
+ /** Short-lived server-issued ticket used to start an authenticated session. */
11
+ ticket: string;
12
+ /** End-user identifier associated with the issued ticket. */
13
+ userId: string;
14
+ /** Organization identifier used to scope the authenticated session. */
15
+ orgId: string;
16
+ }
17
+ /**
18
+ * Development-only embed controls used by local host integrations.
19
+ *
20
+ * @public
21
+ */
22
+ interface DevModeConfig {
23
+ anthropicApiKey?: string;
24
+ openaiApiKey?: string;
25
+ useLocalApi?: boolean;
26
+ }
27
+ /**
28
+ * Connection options for the imperative connect() method.
29
+ *
30
+ * Supports two mutually exclusive authentication strategies:
31
+ * - `idToken` + `clientId`: Direct IDP token authentication (SPA-friendly)
32
+ * - `ticketAuth`: Pre-fetched ticket authentication (SSR-friendly)
33
+ *
34
+ * Exactly one strategy must be provided. The discriminated union prevents
35
+ * combining `idToken` and `ticketAuth` at the type level.
36
+ *
37
+ * @public
38
+ */
39
+ type ConnectOptions = {
40
+ /** IDP token (ID token) for authentication. */idToken: string; /** OIDC client ID for audience validation. Required with `idToken`. */
41
+ clientId?: string; /** Optional organization context for multi-tenant same-origin dashboards. */
42
+ organizationId?: string; /** Must not be provided when using `idToken` authentication. */
43
+ ticketAuth?: never;
44
+ } | {
45
+ /** Pre-fetched ticket for SSR-friendly authentication. */ticketAuth: TicketAuth; /** Must not be provided when using `ticketAuth` authentication. */
46
+ idToken?: never; /** Must not be provided when using `ticketAuth` authentication. */
47
+ clientId?: never; /** Must not be provided when using `ticketAuth` authentication. */
48
+ organizationId?: never;
49
+ };
50
+ /**
51
+ * Host visual theme hint.
52
+ *
53
+ * @public
54
+ */
55
+ type CharTheme = 'light' | 'dark';
56
+ /**
57
+ * Allowed display modes for the host shell and embedded runtime.
58
+ *
59
+ * @public
60
+ */
61
+ type CharDisplayMode = 'inline' | 'fullscreen' | 'pip';
62
+ /**
63
+ * Host platform hint for embedded UI adaptations.
64
+ *
65
+ * @public
66
+ */
67
+ type CharPlatform = 'web' | 'desktop' | 'mobile';
68
+ /**
69
+ * Host-provided style payload applied inside the iframe.
70
+ *
71
+ * @public
72
+ */
73
+ interface CharHostStyles {
74
+ variables?: Record<string, string>;
75
+ fonts?: string;
76
+ }
77
+ /**
78
+ * Host container size constraints.
79
+ *
80
+ * @public
81
+ */
82
+ interface CharContainerDimensions {
83
+ width?: number;
84
+ height?: number;
85
+ maxWidth?: number;
86
+ maxHeight?: number;
87
+ }
88
+ /**
89
+ * Lightweight device capability hints from the host environment.
90
+ *
91
+ * @public
92
+ */
93
+ interface CharDeviceCapabilities {
94
+ touch?: boolean;
95
+ hover?: boolean;
96
+ pointerFine?: boolean;
97
+ }
98
+ /**
99
+ * Safe-area inset values detected on the host.
100
+ *
101
+ * @public
102
+ */
103
+ interface CharSafeAreaInsets {
104
+ top?: number;
105
+ right?: number;
106
+ bottom?: number;
107
+ left?: number;
108
+ }
109
+ /**
110
+ * Host shell capability flags advertised to the iframe runtime.
111
+ *
112
+ * @public
113
+ */
114
+ interface CharHostCapabilities {
115
+ supportedDisplayModes?: CharDisplayMode[];
116
+ supportsOpenLink?: boolean;
117
+ supportsTeardown?: boolean;
118
+ maxContainerWidth?: number;
119
+ }
120
+ /**
121
+ * Host context payload sent from the embedding page to the iframe runtime.
122
+ *
123
+ * @public
124
+ */
125
+ interface CharHostContext {
126
+ theme?: CharTheme;
127
+ styles?: CharHostStyles;
128
+ displayMode?: CharDisplayMode;
129
+ availableDisplayModes?: CharDisplayMode[];
130
+ containerDimensions?: CharContainerDimensions;
131
+ locale?: string;
132
+ timeZone?: string;
133
+ platform?: CharPlatform;
134
+ deviceCapabilities?: CharDeviceCapabilities;
135
+ safeAreaInsets?: CharSafeAreaInsets;
136
+ userAgent?: string;
137
+ hostCapabilities?: CharHostCapabilities;
138
+ }
139
+ //#endregion
140
+ //#region src/shell-component.d.ts
141
+ /**
142
+ * Allowed positions for the collapsed PIP composer surface.
143
+ *
144
+ * @public
145
+ */
146
+ type CharPipPosition = 'bottom-center' | 'bottom-right' | 'bottom-left';
147
+ /**
148
+ * Payload for `char-shell-open-change`.
149
+ *
150
+ * @public
151
+ */
152
+ interface CharShellOpenChangeDetail {
153
+ open: boolean;
154
+ }
155
+ /**
156
+ * `<char-agent-shell>` custom element.
157
+ *
158
+ * Opinionated host shell that composes a persistent inner `<char-agent>` and
159
+ * owns responsive mode policy plus host layout orchestration.
160
+ * This shell does not render chat controls, prompts, or composer UI.
161
+ * Visible assistant UI is always iframe-owned.
162
+ *
163
+ * Policy:
164
+ * - closed to `pip`
165
+ * - open desktop to `inline`
166
+ * - open narrow viewport to `fullscreen`
167
+ *
168
+ * @public
169
+ */
170
+ declare class CharAgentShellElement extends HTMLElement {
171
+ static observedAttributes: string[];
172
+ devMode?: DevModeConfig;
173
+ apiBase?: string;
174
+ private _agent;
175
+ private _open;
176
+ private _fullscreenBreakpoint;
177
+ private _panelWidth;
178
+ private _pipWidth;
179
+ private _pipHeight;
180
+ private _pipPosition;
181
+ private _isNarrowViewport;
182
+ private _mediaQuery;
183
+ private _mediaQueryHandler;
184
+ private _pendingConnectOptions;
185
+ private _pendingHostContext;
186
+ private _isApplyingOpenAttribute;
187
+ private _forwardedListenersAttached;
188
+ private _healthState;
189
+ private _healthTimeoutId;
190
+ private _pipMeasuredHeight;
191
+ private _revealFrameId;
192
+ private _pipExpanded;
193
+ private _pipPillElement;
194
+ private _pipCollapseTimerId;
195
+ private _hoverMediaQuery;
196
+ private _pipListenersAttached;
197
+ private _pipAnimating;
198
+ private _pipAnimationTimeoutId;
199
+ private _pendingPipMeasuredHeight;
200
+ private _tapOutsideListener;
201
+ private _pipHiddenByScroll;
202
+ private _scrollListener;
203
+ private _scrollRafId;
204
+ private _lastScrollEl;
205
+ private _lastScrollTop;
206
+ private _scrollDelta;
207
+ private _swipeTouchStartY;
208
+ private _swipeStartAtTop;
209
+ private _swipeStartAtBottom;
210
+ private _swipeTouchStartListener;
211
+ private _swipeTouchEndListener;
212
+ private _wheelListener;
213
+ private _wheelDelta;
214
+ get open(): boolean;
215
+ set open(value: boolean);
216
+ get fullscreenBreakpoint(): number;
217
+ set fullscreenBreakpoint(value: number);
218
+ get panelWidth(): number;
219
+ set panelWidth(value: number);
220
+ get pipWidth(): number;
221
+ set pipWidth(value: number);
222
+ get pipHeight(): number;
223
+ set pipHeight(value: number);
224
+ get pipPosition(): CharPipPosition;
225
+ set pipPosition(value: CharPipPosition);
226
+ connectedCallback(): void;
227
+ disconnectedCallback(): void;
228
+ attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void;
229
+ /**
230
+ * Connects shell authentication and starts availability health checks.
231
+ *
232
+ * @param options - Authentication payload for either ID token or ticket auth.
233
+ * @returns `true` when connect is accepted by the inner element.
234
+ */
235
+ connect(options: ConnectOptions): boolean;
236
+ /**
237
+ * Clears authentication and disconnects the inner `<char-agent>`.
238
+ *
239
+ * @returns `true` when disconnect dispatch succeeds.
240
+ */
241
+ disconnect(): boolean;
242
+ /**
243
+ * Convenience method for declarative wrappers.
244
+ * Applies auth when provided, otherwise clears auth.
245
+ *
246
+ * @param options - Auth payload to connect, or `null` to disconnect.
247
+ * @returns Result from `connect()` or `disconnect()`.
248
+ */
249
+ setAuth(options: ConnectOptions | null): boolean;
250
+ /**
251
+ * Merges and forwards host context to the inner `<char-agent>`.
252
+ * Shell-owned fields (`displayMode`, `availableDisplayModes`) are ignored.
253
+ *
254
+ * @param hostContext - Partial host context patch to forward.
255
+ */
256
+ setHostContext(hostContext: CharHostContext): void;
257
+ /**
258
+ * Sets shell open state.
259
+ *
260
+ * @param open - Next desired open state.
261
+ */
262
+ setOpen(open: boolean): void;
263
+ /**
264
+ * Toggles shell open state.
265
+ */
266
+ toggleOpen(): void;
267
+ private _upgradeProperty;
268
+ private _ensureAgent;
269
+ private _primeAgentBootConfig;
270
+ private _attachForwardedListeners;
271
+ private _detachForwardedListeners;
272
+ private _readConfigFromAttributes;
273
+ private _syncForwardedAttributes;
274
+ private _setupViewportObserver;
275
+ private _teardownViewportObserver;
276
+ private _applyDisplayModeAndLayout;
277
+ private _applyHostLayout;
278
+ private _composePipTransform;
279
+ private _applyAgentLayout;
280
+ private _ensurePipPill;
281
+ private _updatePipPillPosition;
282
+ private _applyPipVisualState;
283
+ private _setPipExpanded;
284
+ private _flushPendingPipMeasuredHeight;
285
+ private _isHoverDevice;
286
+ private _attachPipInteractionListeners;
287
+ private _detachPipInteractionListeners;
288
+ private _schedulePipCollapse;
289
+ private _clearPipCollapseTimer;
290
+ private _attachTapOutsideListener;
291
+ private _detachTapOutsideListener;
292
+ private _handlePipPointerEnter;
293
+ private _handlePipPointerLeave;
294
+ private _attachScrollHideListener;
295
+ private _evaluateScrollPosition;
296
+ private _detachScrollHideListener;
297
+ private _attachSwipeGestureListeners;
298
+ private _detachSwipeGestureListeners;
299
+ private _attachWheelFallbackListener;
300
+ private _detachWheelFallbackListener;
301
+ private _handlePillClick;
302
+ private _handlePillKeydown;
303
+ private _hidePipPill;
304
+ private _resetHostLayoutStyles;
305
+ private _resetAgentLayoutStyles;
306
+ private _applyUnavailableLayout;
307
+ private _applyPreReadyLayout;
308
+ private _startHealthWait;
309
+ private _stopHealthWait;
310
+ private _markHealthy;
311
+ private _cancelRevealFade;
312
+ private _startRevealFade;
313
+ private _setUnavailable;
314
+ private _recoverFromUnavailable;
315
+ private _setOpenInternal;
316
+ private _reflectOpenAttribute;
317
+ private _flushPendingConnectAndContext;
318
+ private _handleRequestDisplayMode;
319
+ private _handleClose;
320
+ private _handleInitialized;
321
+ private _handleInnerError;
322
+ private _handleInnerSizeChanged;
323
+ }
324
+ /**
325
+ * Registers the `<char-agent-shell>` custom element.
326
+ *
327
+ * @param tagName - Optional custom tag name override.
328
+ *
329
+ * @public
330
+ */
331
+ declare function registerCharShell(tagName?: string): void;
332
+ declare global {
333
+ interface HTMLElementTagNameMap {
334
+ 'char-agent-shell': CharAgentShellElement;
335
+ }
336
+ namespace JSX {
337
+ interface IntrinsicElements {
338
+ 'char-agent-shell': {
339
+ open?: boolean;
340
+ 'fullscreen-breakpoint'?: number;
341
+ 'panel-width'?: number;
342
+ 'pip-position'?: CharPipPosition;
343
+ 'pip-width'?: number;
344
+ 'pip-height'?: number;
345
+ 'dev-mode'?: string;
346
+ devMode?: DevModeConfig;
347
+ 'api-base'?: string;
348
+ apiBase?: string;
349
+ 'enable-debug-tools'?: boolean;
350
+ ref?: unknown;
351
+ [key: string]: unknown;
352
+ };
353
+ }
354
+ }
355
+ }
356
+ declare module 'react/jsx-runtime' {
357
+ namespace JSX {
358
+ interface IntrinsicElements {
359
+ 'char-agent-shell': {
360
+ open?: boolean;
361
+ 'fullscreen-breakpoint'?: number;
362
+ 'panel-width'?: number;
363
+ 'pip-position'?: CharPipPosition;
364
+ 'pip-width'?: number;
365
+ 'pip-height'?: number;
366
+ 'dev-mode'?: string;
367
+ devMode?: DevModeConfig;
368
+ 'api-base'?: string;
369
+ apiBase?: string;
370
+ 'enable-debug-tools'?: boolean;
371
+ ref?: unknown;
372
+ [key: string]: unknown;
373
+ };
374
+ }
375
+ }
376
+ } //# sourceMappingURL=shell-component.d.ts.map
377
+ //#endregion
378
+ export { CharAgentShellElement, type CharContainerDimensions, type CharDeviceCapabilities, type CharDisplayMode, type CharHostCapabilities, type CharHostContext, type CharHostStyles, CharPipPosition, type CharPlatform, type CharSafeAreaInsets, CharShellOpenChangeDetail, type CharTheme, type ConnectOptions, type DevModeConfig, type TicketAuth, registerCharShell };
379
+ //# sourceMappingURL=shell-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-component.d.ts","names":[],"sources":["../src/types.ts","../src/shell-component.ts"],"mappings":"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"}