@noodleseed/assistant 1.25.0 → 1.26.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.
- package/README.md +63 -24
- package/dist/{app-view-element-BM4lral-.d.ts → app-view-element-C_ATXseu.d.ts} +2 -3
- package/dist/{app-view-element-9ojWWYov.d.cts → app-view-element-CiFVNIke.d.cts} +2 -3
- package/dist/app-view.cjs +41 -213
- package/dist/app-view.cjs.map +1 -1
- package/dist/app-view.d.cts +3 -3
- package/dist/app-view.d.ts +3 -3
- package/dist/app-view.js +2 -2
- package/dist/{appearance-B6vSg8Ub.d.cts → appearance-C24W6BRj.d.cts} +7 -3
- package/dist/{appearance-B6vSg8Ub.d.ts → appearance-C24W6BRj.d.ts} +7 -3
- package/dist/{chunk-LNBUYHL7.js → chunk-5NBHHNI3.js} +2 -2
- package/dist/chunk-5NBHHNI3.js.map +1 -0
- package/dist/{chunk-SGMECNNU.js → chunk-5PW6PXCI.js} +702 -122
- package/dist/chunk-5PW6PXCI.js.map +1 -0
- package/dist/{chunk-7BQHW37I.js → chunk-FNXAVRL5.js} +7 -1
- package/dist/{chunk-7BQHW37I.js.map → chunk-FNXAVRL5.js.map} +1 -1
- package/dist/{chunk-P32MAR4K.js → chunk-XKTUXFGX.js} +42 -214
- package/dist/chunk-XKTUXFGX.js.map +1 -0
- package/dist/{client-BkogON2A.d.ts → client-BheCOERq.d.ts} +51 -2
- package/dist/{client-C07ppTU_.d.cts → client-BiMRVxjs.d.cts} +51 -2
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +1 -1
- package/dist/embed.global.js +210 -161
- package/dist/index.cjs +767 -354
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -53
- package/dist/index.d.ts +6 -53
- package/dist/index.js +3 -3
- package/dist/react/client.cjs.map +1 -1
- package/dist/react/client.d.cts +2 -2
- package/dist/react/client.d.ts +2 -2
- package/dist/react/client.js +1 -1
- package/dist/react.cjs +767 -354
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +4 -4
- package/dist/react.d.ts +4 -4
- package/dist/react.js +4 -4
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-LNBUYHL7.js.map +0 -1
- package/dist/chunk-P32MAR4K.js.map +0 -1
- package/dist/chunk-SGMECNNU.js.map +0 -1
package/dist/app-view.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { A as APP_VIEW_TAG_NAME, a as AssistantAppViewErrorDetail, N as NoodleAppViewElement } from './app-view-element-
|
|
2
|
-
export { A as AssistantClient, a as AssistantViewAvailableDetail } from './client-
|
|
3
|
-
import './appearance-
|
|
1
|
+
export { A as APP_VIEW_TAG_NAME, a as AssistantAppViewErrorDetail, N as NoodleAppViewElement } from './app-view-element-CiFVNIke.cjs';
|
|
2
|
+
export { A as AssistantClient, a as AssistantViewAvailableDetail } from './client-BiMRVxjs.cjs';
|
|
3
|
+
import './appearance-C24W6BRj.cjs';
|
|
4
4
|
import 'ai';
|
|
5
5
|
|
|
6
6
|
/** Register the framework-neutral MCP App host. Safe to call more than once or during SSR. */
|
package/dist/app-view.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { A as APP_VIEW_TAG_NAME, a as AssistantAppViewErrorDetail, N as NoodleAppViewElement } from './app-view-element-
|
|
2
|
-
export { A as AssistantClient, a as AssistantViewAvailableDetail } from './client-
|
|
3
|
-
import './appearance-
|
|
1
|
+
export { A as APP_VIEW_TAG_NAME, a as AssistantAppViewErrorDetail, N as NoodleAppViewElement } from './app-view-element-C_ATXseu.js';
|
|
2
|
+
export { A as AssistantClient, a as AssistantViewAvailableDetail } from './client-BheCOERq.js';
|
|
3
|
+
import './appearance-C24W6BRj.js';
|
|
4
4
|
import 'ai';
|
|
5
5
|
|
|
6
6
|
/** Register the framework-neutral MCP App host. Safe to call more than once or during SSR. */
|
package/dist/app-view.js
CHANGED
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
APP_VIEW_TAG_NAME,
|
|
3
3
|
NoodleAppViewElement,
|
|
4
4
|
registerNoodleAppView
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-5NBHHNI3.js";
|
|
6
|
+
import "./chunk-XKTUXFGX.js";
|
|
7
7
|
import "./chunk-P223CYPO.js";
|
|
8
8
|
import "./chunk-3YYTUJPJ.js";
|
|
9
9
|
import "./chunk-5FUTL2UF.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
type AssistantThemeMode = 'auto' | 'light' | 'dark';
|
|
1
|
+
type AssistantThemeMode = 'auto' | 'light' | 'dark' | 'invert';
|
|
2
2
|
type AssistantLayoutMode = 'floating' | 'inline' | 'drawer';
|
|
3
|
-
type AssistantPosition = 'bottom-left' | 'bottom-right';
|
|
3
|
+
type AssistantPosition = 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
4
4
|
type AssistantPresentationTone = 'neutral' | 'success' | 'warning' | 'danger';
|
|
5
5
|
interface AssistantPresentationConfiguration {
|
|
6
6
|
readonly panel?: {
|
|
@@ -10,6 +10,7 @@ interface AssistantPresentationConfiguration {
|
|
|
10
10
|
readonly radius?: number;
|
|
11
11
|
};
|
|
12
12
|
readonly launcher?: {
|
|
13
|
+
readonly style?: 'pill' | 'bubble';
|
|
13
14
|
readonly icon?: 'brand-mark' | 'chat' | 'none';
|
|
14
15
|
readonly size?: 'md' | 'lg';
|
|
15
16
|
readonly status?: 'none' | 'session';
|
|
@@ -49,7 +50,7 @@ interface AssistantConfiguration {
|
|
|
49
50
|
readonly radius?: 'none' | 'sm' | 'md' | 'lg';
|
|
50
51
|
readonly density?: 'compact' | 'comfortable';
|
|
51
52
|
readonly typography?: 'system' | 'serif' | 'mono';
|
|
52
|
-
readonly colorScheme?: AssistantThemeMode
|
|
53
|
+
readonly colorScheme?: Exclude<AssistantThemeMode, 'invert'>;
|
|
53
54
|
};
|
|
54
55
|
readonly assistant?: AssistantUiConfiguration;
|
|
55
56
|
}
|
|
@@ -76,6 +77,7 @@ interface BrandThemeOverrides {
|
|
|
76
77
|
readonly code?: string;
|
|
77
78
|
}
|
|
78
79
|
interface AssistantUiConfiguration {
|
|
80
|
+
readonly theme?: AssistantThemeMode;
|
|
79
81
|
readonly layout?: {
|
|
80
82
|
readonly mode?: AssistantLayoutMode;
|
|
81
83
|
readonly position?: AssistantPosition;
|
|
@@ -95,6 +97,7 @@ interface AssistantUiConfiguration {
|
|
|
95
97
|
readonly showHeader?: boolean;
|
|
96
98
|
readonly showAvatars?: boolean;
|
|
97
99
|
readonly showTimestamps?: boolean;
|
|
100
|
+
readonly showPoweredBy?: boolean;
|
|
98
101
|
};
|
|
99
102
|
readonly labels?: Partial<AssistantLabels>;
|
|
100
103
|
readonly presentation?: AssistantPresentationConfiguration;
|
|
@@ -107,6 +110,7 @@ interface AssistantUiConfiguration {
|
|
|
107
110
|
interface AssistantLabels {
|
|
108
111
|
readonly welcomeHeading: string;
|
|
109
112
|
readonly welcomeMessage: string;
|
|
113
|
+
readonly launcherPlaceholder: string;
|
|
110
114
|
readonly composerPlaceholder: string;
|
|
111
115
|
readonly thinking: string;
|
|
112
116
|
readonly send: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
type AssistantThemeMode = 'auto' | 'light' | 'dark';
|
|
1
|
+
type AssistantThemeMode = 'auto' | 'light' | 'dark' | 'invert';
|
|
2
2
|
type AssistantLayoutMode = 'floating' | 'inline' | 'drawer';
|
|
3
|
-
type AssistantPosition = 'bottom-left' | 'bottom-right';
|
|
3
|
+
type AssistantPosition = 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
4
4
|
type AssistantPresentationTone = 'neutral' | 'success' | 'warning' | 'danger';
|
|
5
5
|
interface AssistantPresentationConfiguration {
|
|
6
6
|
readonly panel?: {
|
|
@@ -10,6 +10,7 @@ interface AssistantPresentationConfiguration {
|
|
|
10
10
|
readonly radius?: number;
|
|
11
11
|
};
|
|
12
12
|
readonly launcher?: {
|
|
13
|
+
readonly style?: 'pill' | 'bubble';
|
|
13
14
|
readonly icon?: 'brand-mark' | 'chat' | 'none';
|
|
14
15
|
readonly size?: 'md' | 'lg';
|
|
15
16
|
readonly status?: 'none' | 'session';
|
|
@@ -49,7 +50,7 @@ interface AssistantConfiguration {
|
|
|
49
50
|
readonly radius?: 'none' | 'sm' | 'md' | 'lg';
|
|
50
51
|
readonly density?: 'compact' | 'comfortable';
|
|
51
52
|
readonly typography?: 'system' | 'serif' | 'mono';
|
|
52
|
-
readonly colorScheme?: AssistantThemeMode
|
|
53
|
+
readonly colorScheme?: Exclude<AssistantThemeMode, 'invert'>;
|
|
53
54
|
};
|
|
54
55
|
readonly assistant?: AssistantUiConfiguration;
|
|
55
56
|
}
|
|
@@ -76,6 +77,7 @@ interface BrandThemeOverrides {
|
|
|
76
77
|
readonly code?: string;
|
|
77
78
|
}
|
|
78
79
|
interface AssistantUiConfiguration {
|
|
80
|
+
readonly theme?: AssistantThemeMode;
|
|
79
81
|
readonly layout?: {
|
|
80
82
|
readonly mode?: AssistantLayoutMode;
|
|
81
83
|
readonly position?: AssistantPosition;
|
|
@@ -95,6 +97,7 @@ interface AssistantUiConfiguration {
|
|
|
95
97
|
readonly showHeader?: boolean;
|
|
96
98
|
readonly showAvatars?: boolean;
|
|
97
99
|
readonly showTimestamps?: boolean;
|
|
100
|
+
readonly showPoweredBy?: boolean;
|
|
98
101
|
};
|
|
99
102
|
readonly labels?: Partial<AssistantLabels>;
|
|
100
103
|
readonly presentation?: AssistantPresentationConfiguration;
|
|
@@ -107,6 +110,7 @@ interface AssistantUiConfiguration {
|
|
|
107
110
|
interface AssistantLabels {
|
|
108
111
|
readonly welcomeHeading: string;
|
|
109
112
|
readonly welcomeMessage: string;
|
|
113
|
+
readonly launcherPlaceholder: string;
|
|
110
114
|
readonly composerPlaceholder: string;
|
|
111
115
|
readonly thinking: string;
|
|
112
116
|
readonly send: string;
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
mountAssistantApp,
|
|
4
4
|
unmountAssistantApp,
|
|
5
5
|
updateAssistantAppTheme
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XKTUXFGX.js";
|
|
7
7
|
|
|
8
8
|
// src/app-view-element.ts
|
|
9
9
|
var APP_VIEW_TAG_NAME = "noodle-app-view";
|
|
@@ -177,4 +177,4 @@ export {
|
|
|
177
177
|
NoodleAppViewElement,
|
|
178
178
|
registerNoodleAppView
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=chunk-
|
|
180
|
+
//# sourceMappingURL=chunk-5NBHHNI3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app-view-element.ts","../src/app-view.ts"],"sourcesContent":["import { mountAssistantApp, unmountAssistantApp, updateAssistantAppTheme } from './app-host.js';\nimport { ASSISTANT_APP_VIEW_STYLES } from './app-view-styles.js';\nimport type { AssistantClient, AssistantViewAvailableDetail } from './client.js';\nimport type { AssistantErrorDetail } from './transport.js';\n\nexport const APP_VIEW_TAG_NAME = 'noodle-app-view';\n\nexport interface AssistantAppViewErrorDetail {\n readonly code: 'view_render_timeout';\n readonly retryable: false;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'noodle-app-view': NoodleAppViewElement;\n }\n\n interface HTMLElementEventMap {\n 'assistant-error': CustomEvent<AssistantErrorDetail>;\n }\n}\n\nconst HTMLElementBase: typeof HTMLElement =\n globalThis.HTMLElement ?? (class {} as unknown as typeof HTMLElement);\n\nfunction viewIdentity(view: AssistantViewAvailableDetail): string {\n return `${view.id}\\u0000${view.resourceUri}`;\n}\n\n/**\n * Framework-neutral host for one service-resolved MCP App view.\n *\n * `client` and `view` are object properties, not serialized attributes. Vue, Angular, and plain DOM\n * renderers can therefore pass the same `data-view` payload without taking a React dependency.\n */\nexport class NoodleAppViewElement extends HTMLElementBase {\n static readonly observedAttributes = ['allow-fullscreen', 'theme'];\n\n #allowFullscreen = false;\n #client: AssistantClient | undefined;\n #view: AssistantViewAvailableDetail | undefined;\n #theme: 'light' | 'dark' = 'light';\n #container: HTMLElement | undefined;\n #mounted: HTMLElement | undefined;\n #mountedClient: AssistantClient | undefined;\n #mountedAllowFullscreen = false;\n #mountedIdentity: string | undefined;\n #requestedTeardown: { readonly client: AssistantClient; readonly identity: string } | undefined;\n\n get client(): AssistantClient | undefined {\n return this.#client;\n }\n\n /** Allow the hosted App to request fullscreen. Disabled by default. */\n get allowFullscreen(): boolean {\n return this.#allowFullscreen;\n }\n\n set allowFullscreen(value: boolean) {\n const next = value === true;\n if (next === this.#allowFullscreen) return;\n this.#allowFullscreen = next;\n this.toggleAttribute('allow-fullscreen', next);\n this.#reconcile();\n }\n\n set client(value: AssistantClient | undefined) {\n if (value === this.#client) return;\n this.#client = value;\n this.#reconcile();\n }\n\n get view(): AssistantViewAvailableDetail | undefined {\n return this.#view;\n }\n\n set view(value: AssistantViewAvailableDetail | undefined) {\n this.#view = value;\n this.#reconcile();\n }\n\n get theme(): 'light' | 'dark' {\n return this.#theme;\n }\n\n set theme(value: 'light' | 'dark') {\n const next = value === 'dark' ? 'dark' : 'light';\n const changed = next !== this.#theme;\n this.#theme = next;\n if (this.getAttribute('data-theme') !== next) this.setAttribute('data-theme', next);\n if (changed && this.#mounted) updateAssistantAppTheme(this.#mounted, next);\n }\n\n connectedCallback(): void {\n this.#ensureContainer();\n this.#upgradeProperty('allowFullscreen');\n this.#upgradeProperty('client');\n this.#upgradeProperty('theme');\n this.#upgradeProperty('view');\n this.#reconcile();\n }\n\n disconnectedCallback(): void {\n this.#requestedTeardown = undefined;\n this.#releaseMount();\n }\n\n attributeChangedCallback(name: string, _previous: string | null, value: string | null): void {\n if (name === 'allow-fullscreen') this.allowFullscreen = value !== null;\n if (name === 'theme') this.theme = value === 'dark' ? 'dark' : 'light';\n }\n\n #ensureContainer(): HTMLElement {\n if (this.#container) return this.#container;\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' });\n root.innerHTML = ASSISTANT_APP_VIEW_STYLES;\n const container = document.createElement('div');\n container.className = 'noodle-app-mount';\n container.setAttribute('part', 'mount');\n root.append(container);\n this.#container = container;\n return container;\n }\n\n #upgradeProperty(name: 'allowFullscreen' | 'client' | 'theme' | 'view'): void {\n const property = Object.getOwnPropertyDescriptor(this, name);\n if (!property) return;\n Reflect.deleteProperty(this, name);\n Reflect.set(this, name, property.value);\n }\n\n #releaseMount(): void {\n const mounted = this.#mounted;\n this.#mounted = undefined;\n this.#mountedClient = undefined;\n this.#mountedAllowFullscreen = false;\n this.#mountedIdentity = undefined;\n this.#container?.replaceChildren();\n if (mounted) void unmountAssistantApp(mounted);\n }\n\n #reconcile(): void {\n if (!this.isConnected) return;\n const client = this.#client;\n const detail = this.#view;\n const identity = detail ? viewIdentity(detail) : undefined;\n\n if (this.#mounted) {\n if (\n client === this.#mountedClient &&\n identity === this.#mountedIdentity &&\n this.#allowFullscreen === this.#mountedAllowFullscreen\n ) {\n return;\n }\n this.#releaseMount();\n }\n\n if (\n this.#requestedTeardown &&\n (client !== this.#requestedTeardown.client || identity !== this.#requestedTeardown.identity)\n ) {\n this.#requestedTeardown = undefined;\n }\n if (!client || !detail?.html || !identity || this.#requestedTeardown) return;\n\n const initialHtml = detail.html;\n const sandboxUrl = client.appSandboxUrl?.();\n let card: HTMLElement | undefined;\n card = mountAssistantApp(\n detail,\n {\n client,\n sendMessage: (message) => client.sendMessage(message),\n updateModelContext: (update) => client.updateModelContext(update),\n theme: this.#theme,\n },\n {\n allowFullscreen: this.#allowFullscreen,\n ...(sandboxUrl ? { sandboxUrl } : {}),\n getDetail: () => {\n const latest = this.#view;\n if (this.#client !== client || !latest || viewIdentity(latest) !== identity)\n return detail;\n return latest.html ? latest : { ...latest, html: initialHtml };\n },\n onRenderFailure: (failure) => {\n this.dispatchEvent(\n new CustomEvent<AssistantAppViewErrorDetail>('assistant-error', {\n detail: failure,\n bubbles: true,\n composed: true,\n }),\n );\n },\n onTeardownRequest: () => {\n if (this.#mounted !== card) return;\n this.#mounted = undefined;\n this.#mountedClient = undefined;\n this.#mountedIdentity = undefined;\n this.#requestedTeardown = { client, identity };\n },\n },\n );\n if (!card) return;\n this.#mounted = card;\n this.#mountedClient = client;\n this.#mountedAllowFullscreen = this.#allowFullscreen;\n this.#mountedIdentity = identity;\n this.#ensureContainer().replaceChildren(card);\n }\n}\n","import { APP_VIEW_TAG_NAME, NoodleAppViewElement } from './app-view-element.js';\n\nexport {\n APP_VIEW_TAG_NAME,\n type AssistantAppViewErrorDetail,\n NoodleAppViewElement,\n} from './app-view-element.js';\nexport type { AssistantClient, AssistantViewAvailableDetail } from './client.js';\n\n/** Register the framework-neutral MCP App host. Safe to call more than once or during SSR. */\nexport function registerNoodleAppView(): void {\n if (!globalThis.customElements?.get(APP_VIEW_TAG_NAME)) {\n globalThis.customElements?.define(APP_VIEW_TAG_NAME, NoodleAppViewElement);\n }\n}\n\nregisterNoodleAppView();\n"],"mappings":"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","names":[]}
|