@noodleseed/assistant 1.26.0 → 1.27.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 +25 -2
- package/dist/{app-view-element-CiFVNIke.d.cts → app-view-element-BjRkwNN1.d.cts} +1 -1
- package/dist/{app-view-element-C_ATXseu.d.ts → app-view-element-mXHvcAXc.d.ts} +1 -1
- package/dist/app-view.d.cts +3 -3
- package/dist/app-view.d.ts +3 -3
- package/dist/{appearance-C24W6BRj.d.cts → appearance-BpVu3lpk.d.cts} +1 -0
- package/dist/{appearance-C24W6BRj.d.ts → appearance-BpVu3lpk.d.ts} +1 -0
- package/dist/{chunk-5PW6PXCI.js → chunk-2A3ZEYZV.js} +51 -180
- package/dist/chunk-2A3ZEYZV.js.map +1 -0
- package/dist/{chunk-FNXAVRL5.js → chunk-WJV4MJUR.js} +178 -4
- package/dist/chunk-WJV4MJUR.js.map +1 -0
- package/dist/{client-BheCOERq.d.ts → client-CPFw8tfo.d.ts} +1 -1
- package/dist/{client-BiMRVxjs.d.cts → client-_xivfs4q.d.cts} +1 -1
- package/dist/client.cjs +176 -3
- 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 +41 -49
- package/dist/index.cjs +224 -178
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/react/client.cjs +176 -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 +224 -178
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +3 -3
- package/dist/react.d.ts +3 -3
- package/dist/react.js +2 -2
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-5PW6PXCI.js.map +0 -1
- package/dist/chunk-FNXAVRL5.js.map +0 -1
package/dist/react/client.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { b as AssistantPageContext, c as AssistantContext, C as CreateAssistantClientOptions, d as AssistantChatState, A as AssistantClient } from '../client-
|
|
2
|
-
import '../appearance-
|
|
1
|
+
import { b as AssistantPageContext, c as AssistantContext, C as CreateAssistantClientOptions, d as AssistantChatState, A as AssistantClient } from '../client-_xivfs4q.cjs';
|
|
2
|
+
import '../appearance-BpVu3lpk.cjs';
|
|
3
3
|
import 'ai';
|
|
4
4
|
|
|
5
5
|
type UseNoodleAssistantOptions<TPageContext extends AssistantPageContext = AssistantContext> = CreateAssistantClientOptions<TPageContext> & {
|
package/dist/react/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { b as AssistantPageContext, c as AssistantContext, C as CreateAssistantClientOptions, d as AssistantChatState, A as AssistantClient } from '../client-
|
|
2
|
-
import '../appearance-
|
|
1
|
+
import { b as AssistantPageContext, c as AssistantContext, C as CreateAssistantClientOptions, d as AssistantChatState, A as AssistantClient } from '../client-CPFw8tfo.js';
|
|
2
|
+
import '../appearance-BpVu3lpk.js';
|
|
3
3
|
import 'ai';
|
|
4
4
|
|
|
5
5
|
type UseNoodleAssistantOptions<TPageContext extends AssistantPageContext = AssistantContext> = CreateAssistantClientOptions<TPageContext> & {
|
package/dist/react/client.js
CHANGED
package/dist/react.cjs
CHANGED
|
@@ -22430,7 +22430,8 @@ var DEFAULT_APPEARANCE = {
|
|
|
22430
22430
|
showHeader: true,
|
|
22431
22431
|
showAvatars: true,
|
|
22432
22432
|
showTimestamps: false,
|
|
22433
|
-
showPoweredBy: true
|
|
22433
|
+
showPoweredBy: true,
|
|
22434
|
+
showConfirmationDetails: true
|
|
22434
22435
|
},
|
|
22435
22436
|
labels: {
|
|
22436
22437
|
welcomeHeading: "",
|
|
@@ -27360,6 +27361,178 @@ function isRecord(value) {
|
|
|
27360
27361
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27361
27362
|
}
|
|
27362
27363
|
|
|
27364
|
+
// src/assistant-configuration-schema.ts
|
|
27365
|
+
var hexColorSchema = external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/);
|
|
27366
|
+
var resolvedBorderColorSchema = external_exports.union([
|
|
27367
|
+
hexColorSchema,
|
|
27368
|
+
external_exports.string().max(64).refine(isBoundedRgbaColor, "must be a six-digit hex or bounded rgba color")
|
|
27369
|
+
]);
|
|
27370
|
+
var browserAssetUrlSchema = external_exports.string().trim().url().refine(isSecureBrowserAssetUrl, "must use https (http is allowed only for loopback testing)");
|
|
27371
|
+
var httpsUrlSchema = external_exports.string().trim().url().refine(isHttpsUrl, "must use https");
|
|
27372
|
+
var brandAssetSchema = external_exports.object({
|
|
27373
|
+
uri: browserAssetUrlSchema,
|
|
27374
|
+
darkUri: browserAssetUrlSchema.optional(),
|
|
27375
|
+
alt: external_exports.string().trim().min(1).max(240)
|
|
27376
|
+
}).strict();
|
|
27377
|
+
var brandThemeSchema = external_exports.object({
|
|
27378
|
+
surface: hexColorSchema.optional(),
|
|
27379
|
+
surfaceRaised: hexColorSchema.optional(),
|
|
27380
|
+
surfaceMuted: hexColorSchema.optional(),
|
|
27381
|
+
text: hexColorSchema.optional(),
|
|
27382
|
+
textMuted: hexColorSchema.optional(),
|
|
27383
|
+
accent: hexColorSchema.optional(),
|
|
27384
|
+
accentText: hexColorSchema.optional(),
|
|
27385
|
+
link: hexColorSchema.optional(),
|
|
27386
|
+
border: resolvedBorderColorSchema.optional(),
|
|
27387
|
+
borderStrong: resolvedBorderColorSchema.optional(),
|
|
27388
|
+
focus: hexColorSchema.optional(),
|
|
27389
|
+
success: hexColorSchema.optional(),
|
|
27390
|
+
warning: hexColorSchema.optional(),
|
|
27391
|
+
danger: hexColorSchema.optional(),
|
|
27392
|
+
code: hexColorSchema.optional()
|
|
27393
|
+
}).strict();
|
|
27394
|
+
var brandingSchema = external_exports.object({
|
|
27395
|
+
name: external_exports.string().trim().min(1).max(160).optional(),
|
|
27396
|
+
accent: hexColorSchema.optional(),
|
|
27397
|
+
surface: hexColorSchema.optional(),
|
|
27398
|
+
surfaceDark: hexColorSchema.optional(),
|
|
27399
|
+
logo: brandAssetSchema.optional(),
|
|
27400
|
+
mark: brandAssetSchema.optional(),
|
|
27401
|
+
avatar: brandAssetSchema.optional(),
|
|
27402
|
+
theme: external_exports.object({ light: brandThemeSchema.optional(), dark: brandThemeSchema.optional() }).strict().optional(),
|
|
27403
|
+
radius: external_exports.enum(["none", "sm", "md", "lg"]).optional(),
|
|
27404
|
+
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
27405
|
+
typography: external_exports.enum(["system", "serif", "mono"]).optional(),
|
|
27406
|
+
colorScheme: external_exports.enum(["auto", "light", "dark"]).optional()
|
|
27407
|
+
}).strict();
|
|
27408
|
+
var labelsSchema = external_exports.object({
|
|
27409
|
+
welcomeHeading: external_exports.string().trim().min(1).max(160).optional(),
|
|
27410
|
+
welcomeMessage: external_exports.string().max(1e3).optional(),
|
|
27411
|
+
launcherPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
27412
|
+
composerPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
27413
|
+
thinking: external_exports.string().trim().min(1).max(80).optional(),
|
|
27414
|
+
send: external_exports.string().trim().min(1).max(80).optional(),
|
|
27415
|
+
stop: external_exports.string().trim().min(1).max(80).optional(),
|
|
27416
|
+
close: external_exports.string().trim().min(1).max(80).optional(),
|
|
27417
|
+
open: external_exports.string().trim().min(1).max(80).optional(),
|
|
27418
|
+
confirm: external_exports.string().trim().min(1).max(80).optional(),
|
|
27419
|
+
decline: external_exports.string().trim().min(1).max(80).optional(),
|
|
27420
|
+
cancel: external_exports.string().trim().min(1).max(80).optional(),
|
|
27421
|
+
confirmationHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27422
|
+
additionalDetails: external_exports.string().trim().min(1).max(120).optional(),
|
|
27423
|
+
redacted: external_exports.string().trim().min(1).max(120).optional(),
|
|
27424
|
+
completed: external_exports.string().trim().min(1).max(80).optional(),
|
|
27425
|
+
stopped: external_exports.string().trim().min(1).max(80).optional(),
|
|
27426
|
+
copy: external_exports.string().trim().min(1).max(80).optional(),
|
|
27427
|
+
newMessages: external_exports.string().trim().min(1).max(80).optional(),
|
|
27428
|
+
reconnect: external_exports.string().trim().min(1).max(80).optional(),
|
|
27429
|
+
newConversation: external_exports.string().trim().min(1).max(80).optional(),
|
|
27430
|
+
retry: external_exports.string().trim().min(1).max(80).optional(),
|
|
27431
|
+
unavailable: external_exports.string().trim().min(1).max(240).optional(),
|
|
27432
|
+
sessionExpired: external_exports.string().trim().min(1).max(240).optional(),
|
|
27433
|
+
sessionIdle: external_exports.string().trim().min(1).max(120).optional(),
|
|
27434
|
+
sessionLoading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27435
|
+
sessionReady: external_exports.string().trim().min(1).max(120).optional(),
|
|
27436
|
+
sessionError: external_exports.string().trim().min(1).max(120).optional(),
|
|
27437
|
+
signInHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27438
|
+
signInBody: external_exports.string().max(240).optional(),
|
|
27439
|
+
signInAction: external_exports.string().trim().min(1).max(80).optional(),
|
|
27440
|
+
signUpAction: external_exports.string().trim().min(1).max(80).optional()
|
|
27441
|
+
}).strict();
|
|
27442
|
+
var presentationSchema = external_exports.object({
|
|
27443
|
+
panel: external_exports.object({
|
|
27444
|
+
surface: external_exports.enum(["solid", "glass"]).optional(),
|
|
27445
|
+
elevation: external_exports.enum(["soft", "dramatic"]).optional(),
|
|
27446
|
+
border: external_exports.enum(["subtle", "strong"]).optional(),
|
|
27447
|
+
radius: external_exports.number().int().min(0).max(64).optional()
|
|
27448
|
+
}).strict().optional(),
|
|
27449
|
+
launcher: external_exports.object({
|
|
27450
|
+
style: external_exports.enum(["pill", "bubble"]).optional(),
|
|
27451
|
+
icon: external_exports.enum(["brand-mark", "chat", "none"]).optional(),
|
|
27452
|
+
size: external_exports.enum(["md", "lg"]).optional(),
|
|
27453
|
+
status: external_exports.enum(["none", "session"]).optional(),
|
|
27454
|
+
effect: external_exports.enum(["none", "pulse"]).optional()
|
|
27455
|
+
}).strict().optional(),
|
|
27456
|
+
header: external_exports.object({
|
|
27457
|
+
mark: external_exports.enum(["none", "brand-mark", "status"]).optional(),
|
|
27458
|
+
badge: external_exports.object({
|
|
27459
|
+
text: external_exports.string().trim().min(1).max(80),
|
|
27460
|
+
tone: external_exports.enum(["neutral", "success", "warning", "danger"]).optional(),
|
|
27461
|
+
indicator: external_exports.boolean().optional()
|
|
27462
|
+
}).strict().optional()
|
|
27463
|
+
}).strict().optional(),
|
|
27464
|
+
composer: external_exports.object({
|
|
27465
|
+
leadingIcon: external_exports.enum(["none", "brand-mark"]).optional(),
|
|
27466
|
+
sendIcon: external_exports.enum(["arrow-up", "paper-plane"]).optional(),
|
|
27467
|
+
shape: external_exports.enum(["rounded", "pill"]).optional()
|
|
27468
|
+
}).strict().optional(),
|
|
27469
|
+
messages: external_exports.object({
|
|
27470
|
+
userStyle: external_exports.enum(["bubble", "accent"]).optional(),
|
|
27471
|
+
assistantStyle: external_exports.enum(["plain", "bubble"]).optional()
|
|
27472
|
+
}).strict().optional()
|
|
27473
|
+
}).strict();
|
|
27474
|
+
var assistantUiSchema = external_exports.object({
|
|
27475
|
+
theme: external_exports.enum(["auto", "light", "dark", "invert"]).optional(),
|
|
27476
|
+
layout: external_exports.object({
|
|
27477
|
+
mode: external_exports.enum(["floating", "inline", "drawer"]).optional(),
|
|
27478
|
+
position: external_exports.enum(["bottom-left", "bottom-center", "bottom-right"]).optional(),
|
|
27479
|
+
panelWidth: external_exports.number().int().min(280).max(1200).optional(),
|
|
27480
|
+
panelMinHeight: external_exports.number().int().min(240).max(1600).optional(),
|
|
27481
|
+
panelMaxHeight: external_exports.number().int().min(320).max(2400).optional(),
|
|
27482
|
+
edgeOffset: external_exports.number().int().min(0).max(96).optional(),
|
|
27483
|
+
zIndex: external_exports.number().int().min(0).max(2147483647).optional(),
|
|
27484
|
+
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
27485
|
+
mobileFullscreen: external_exports.boolean().optional()
|
|
27486
|
+
}).strict().optional(),
|
|
27487
|
+
behavior: external_exports.object({
|
|
27488
|
+
startOpen: external_exports.boolean().optional(),
|
|
27489
|
+
closeOnEscape: external_exports.boolean().optional(),
|
|
27490
|
+
closeOnOutsideClick: external_exports.boolean().optional(),
|
|
27491
|
+
showLauncher: external_exports.boolean().optional(),
|
|
27492
|
+
showHeader: external_exports.boolean().optional(),
|
|
27493
|
+
showAvatars: external_exports.boolean().optional(),
|
|
27494
|
+
showTimestamps: external_exports.boolean().optional(),
|
|
27495
|
+
showPoweredBy: external_exports.boolean().optional(),
|
|
27496
|
+
showConfirmationDetails: external_exports.boolean().optional()
|
|
27497
|
+
}).strict().optional(),
|
|
27498
|
+
labels: labelsSchema.optional(),
|
|
27499
|
+
presentation: presentationSchema.optional(),
|
|
27500
|
+
suggestedPrompts: external_exports.array(external_exports.string().trim().min(1).max(240)).max(8).optional(),
|
|
27501
|
+
privacyUrl: httpsUrlSchema.optional(),
|
|
27502
|
+
termsUrl: httpsUrlSchema.optional(),
|
|
27503
|
+
locale: external_exports.string().trim().min(2).max(35).optional(),
|
|
27504
|
+
direction: external_exports.enum(["ltr", "rtl", "auto"]).optional()
|
|
27505
|
+
}).strict();
|
|
27506
|
+
var assistantConfigurationSchema = external_exports.object({ branding: brandingSchema.optional(), assistant: assistantUiSchema.optional() }).strict();
|
|
27507
|
+
function parseAssistantConfiguration(value) {
|
|
27508
|
+
const parsed = assistantConfigurationSchema.safeParse(value);
|
|
27509
|
+
return parsed.success ? parsed.data : void 0;
|
|
27510
|
+
}
|
|
27511
|
+
function isHttpsUrl(value) {
|
|
27512
|
+
try {
|
|
27513
|
+
return new URL(value).protocol === "https:";
|
|
27514
|
+
} catch {
|
|
27515
|
+
return false;
|
|
27516
|
+
}
|
|
27517
|
+
}
|
|
27518
|
+
function isSecureBrowserAssetUrl(value) {
|
|
27519
|
+
try {
|
|
27520
|
+
const url2 = new URL(value);
|
|
27521
|
+
if (url2.protocol === "https:") return true;
|
|
27522
|
+
if (url2.protocol !== "http:") return false;
|
|
27523
|
+
return url2.hostname === "localhost" || url2.hostname === "127.0.0.1" || url2.hostname === "[::1]";
|
|
27524
|
+
} catch {
|
|
27525
|
+
return false;
|
|
27526
|
+
}
|
|
27527
|
+
}
|
|
27528
|
+
function isBoundedRgbaColor(value) {
|
|
27529
|
+
const match = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0(?:\.\d{1,6})?|1(?:\.0{1,6})?)\s*\)$/.exec(
|
|
27530
|
+
value
|
|
27531
|
+
);
|
|
27532
|
+
if (match === null) return false;
|
|
27533
|
+
return match.slice(1, 4).every((channel) => Number(channel) <= 255);
|
|
27534
|
+
}
|
|
27535
|
+
|
|
27363
27536
|
// src/client-errors.ts
|
|
27364
27537
|
async function refusalCode(response) {
|
|
27365
27538
|
try {
|
|
@@ -27393,6 +27566,7 @@ function parseSession(value) {
|
|
|
27393
27566
|
if (typeof value.token !== "string" || typeof value.expiresAt !== "string" || typeof value.endpoints.turns !== "string" || typeof value.endpoints.toolConfirmations !== "string" || interactions !== void 0 && typeof interactions !== "string" || apps !== void 0 && typeof apps !== "string" || sandbox !== void 0 && typeof sandbox !== "string" || transcript !== void 0 && typeof transcript !== "string") {
|
|
27394
27567
|
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
27395
27568
|
}
|
|
27569
|
+
const configuration = parseAssistantConfiguration(value.configuration);
|
|
27396
27570
|
return {
|
|
27397
27571
|
token: value.token,
|
|
27398
27572
|
expiresAt: value.expiresAt,
|
|
@@ -27404,7 +27578,7 @@ function parseSession(value) {
|
|
|
27404
27578
|
...typeof sandbox === "string" ? { sandbox } : {},
|
|
27405
27579
|
...typeof transcript === "string" ? { transcript } : {}
|
|
27406
27580
|
},
|
|
27407
|
-
...
|
|
27581
|
+
...configuration === void 0 ? {} : { configuration },
|
|
27408
27582
|
...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
|
|
27409
27583
|
};
|
|
27410
27584
|
}
|
|
@@ -27498,9 +27672,9 @@ function toAssistantClientEvent(event) {
|
|
|
27498
27672
|
return { event: "unrecognized", data: { name: event.event, payload: value } };
|
|
27499
27673
|
}
|
|
27500
27674
|
function isViewAvailableDetail(value) {
|
|
27501
|
-
return hasString(value, "id") && hasString(value, "tool") && typeof value.resourceUri === "string" && value.resourceUri.startsWith("ui://") && hasOptionalString(value.title) && (value.replayed === void 0 || value.replayed === true) && isJsonValue(value.result, 0) && hasOptionalJson(value.arguments) && hasOptionalString(value.html) && (value.resourceMeta === void 0 || isRecord3(value.resourceMeta)) && (value.allowedOpenDomains === void 0 || Array.isArray(value.allowedOpenDomains) && value.allowedOpenDomains.every(
|
|
27675
|
+
return hasString(value, "id") && hasString(value, "tool") && typeof value.resourceUri === "string" && value.resourceUri.startsWith("ui://") && hasOptionalString(value.title) && (value.replayed === void 0 || value.replayed === true) && isJsonValue(value.result, 0) && hasOptionalJson(value.arguments) && hasOptionalString(value.html) && (value.resourceMeta === void 0 || isRecord3(value.resourceMeta)) && (value.allowedOpenDomains === void 0 || Array.isArray(value.allowedOpenDomains) && value.allowedOpenDomains.every(isHttpsUrl2)) && hasOptionalTurnId(value);
|
|
27502
27676
|
}
|
|
27503
|
-
function
|
|
27677
|
+
function isHttpsUrl2(value) {
|
|
27504
27678
|
if (typeof value !== "string") return false;
|
|
27505
27679
|
try {
|
|
27506
27680
|
return new URL(value).protocol === "https:";
|
|
@@ -28584,7 +28758,7 @@ function createInteractionCard(options) {
|
|
|
28584
28758
|
if (Object.keys(businessArguments).length > 0) {
|
|
28585
28759
|
card.append(createArgumentList(businessArguments, options.reviewSchema, options.labels));
|
|
28586
28760
|
}
|
|
28587
|
-
if (action !== void 0) {
|
|
28761
|
+
if (action !== void 0 && options.showDetails !== false) {
|
|
28588
28762
|
const technical = document.createElement("details");
|
|
28589
28763
|
technical.className = "proposal-details";
|
|
28590
28764
|
const summary = document.createElement("summary");
|
|
@@ -28666,7 +28840,7 @@ function createArgumentList(arguments_, schema, labels) {
|
|
|
28666
28840
|
return list;
|
|
28667
28841
|
}
|
|
28668
28842
|
function appendValue(parent, value, schema, labels) {
|
|
28669
|
-
if (value === "[REDACTED]") {
|
|
28843
|
+
if (schema?.writeOnly === true || schema?.["x-sensitive"] === true || value === "[REDACTED]") {
|
|
28670
28844
|
const hidden = document.createElement("span");
|
|
28671
28845
|
hidden.className = "proposal-redacted";
|
|
28672
28846
|
hidden.textContent = labels.redacted;
|
|
@@ -31587,6 +31761,7 @@ var AssistantElementEventController = class {
|
|
|
31587
31761
|
...description ? { description } : {},
|
|
31588
31762
|
...arguments_ ? { arguments: arguments_ } : {},
|
|
31589
31763
|
...reviewSchema ? { reviewSchema } : {},
|
|
31764
|
+
showDetails: this.#host.showConfirmationDetails(),
|
|
31590
31765
|
labels: {
|
|
31591
31766
|
heading: labels.confirmationHeading,
|
|
31592
31767
|
accept: labels.confirm,
|
|
@@ -31856,12 +32031,14 @@ var AssistantElementHostEnvironmentController = class {
|
|
|
31856
32031
|
};
|
|
31857
32032
|
|
|
31858
32033
|
// src/element-launcher-controller.ts
|
|
32034
|
+
var COLLAPSED_LAUNCHER_WIDTH_PROPERTY = "--_ns-assistant-launcher-collapsed-width";
|
|
31859
32035
|
var AssistantElementLauncherController = class {
|
|
31860
32036
|
#host;
|
|
31861
32037
|
#appearance;
|
|
31862
32038
|
#openPanel;
|
|
31863
32039
|
#sendMessage;
|
|
31864
32040
|
#root;
|
|
32041
|
+
#measurementFrame;
|
|
31865
32042
|
constructor(options) {
|
|
31866
32043
|
this.#host = options.host;
|
|
31867
32044
|
this.#appearance = options.appearance;
|
|
@@ -31892,6 +32069,8 @@ var AssistantElementLauncherController = class {
|
|
|
31892
32069
|
}
|
|
31893
32070
|
disconnect() {
|
|
31894
32071
|
document.removeEventListener("pointerdown", this.#handleDocumentPointerDown);
|
|
32072
|
+
this.#cancelWidthMeasurement();
|
|
32073
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
31895
32074
|
this.#root = void 0;
|
|
31896
32075
|
}
|
|
31897
32076
|
sync() {
|
|
@@ -31913,7 +32092,13 @@ var AssistantElementLauncherController = class {
|
|
|
31913
32092
|
);
|
|
31914
32093
|
queryRequired(root, ".launcher").hidden = !appearance.behavior.showLauncher;
|
|
31915
32094
|
queryRequired(root, ".powered-by-row").hidden = !appearance.behavior.showPoweredBy;
|
|
31916
|
-
if (style === "bubble" || this.#host.hasAttribute("open"))
|
|
32095
|
+
if (style === "bubble" || this.#host.hasAttribute("open")) {
|
|
32096
|
+
this.#cancelWidthMeasurement();
|
|
32097
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32098
|
+
this.collapse(true);
|
|
32099
|
+
return;
|
|
32100
|
+
}
|
|
32101
|
+
if (!this.#host.hasAttribute("launcher-expanded")) this.#scheduleWidthMeasurement();
|
|
31917
32102
|
}
|
|
31918
32103
|
collapse(force = false) {
|
|
31919
32104
|
const root = this.#root;
|
|
@@ -31934,6 +32119,9 @@ var AssistantElementLauncherController = class {
|
|
|
31934
32119
|
#expand() {
|
|
31935
32120
|
const root = this.#root;
|
|
31936
32121
|
if (!root || this.#appearance().presentation.launcher.style === "bubble") return;
|
|
32122
|
+
this.#cancelWidthMeasurement();
|
|
32123
|
+
this.#measureCollapsedWidth();
|
|
32124
|
+
void queryRequired(root, ".launcher").offsetWidth;
|
|
31937
32125
|
this.#host.setAttribute("launcher-expanded", "");
|
|
31938
32126
|
const form = queryRequired(root, ".launcher-form");
|
|
31939
32127
|
const trigger = queryRequired(root, ".launcher-trigger");
|
|
@@ -31945,6 +32133,31 @@ var AssistantElementLauncherController = class {
|
|
|
31945
32133
|
if (this.#host.hasAttribute("launcher-expanded")) input.focus();
|
|
31946
32134
|
});
|
|
31947
32135
|
}
|
|
32136
|
+
#scheduleWidthMeasurement() {
|
|
32137
|
+
this.#cancelWidthMeasurement();
|
|
32138
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32139
|
+
this.#measurementFrame = requestAnimationFrame(() => {
|
|
32140
|
+
this.#measurementFrame = void 0;
|
|
32141
|
+
this.#measureCollapsedWidth();
|
|
32142
|
+
});
|
|
32143
|
+
}
|
|
32144
|
+
#cancelWidthMeasurement() {
|
|
32145
|
+
if (this.#measurementFrame === void 0) return;
|
|
32146
|
+
cancelAnimationFrame(this.#measurementFrame);
|
|
32147
|
+
this.#measurementFrame = void 0;
|
|
32148
|
+
}
|
|
32149
|
+
#measureCollapsedWidth() {
|
|
32150
|
+
const root = this.#root;
|
|
32151
|
+
if (!root || this.#host.hasAttribute("launcher-expanded") || this.#appearance().presentation.launcher.style === "bubble") {
|
|
32152
|
+
return;
|
|
32153
|
+
}
|
|
32154
|
+
const launcher = queryRequired(root, ".launcher");
|
|
32155
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32156
|
+
const collapsedWidth = launcher.offsetWidth;
|
|
32157
|
+
if (collapsedWidth > 0) {
|
|
32158
|
+
this.#host.style.setProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY, `${collapsedWidth}px`);
|
|
32159
|
+
}
|
|
32160
|
+
}
|
|
31948
32161
|
#handleTrigger = () => {
|
|
31949
32162
|
if (this.#appearance().presentation.launcher.style === "bubble") {
|
|
31950
32163
|
this.#openPanel();
|
|
@@ -31984,7 +32197,7 @@ var AssistantElementLauncherController = class {
|
|
|
31984
32197
|
};
|
|
31985
32198
|
#handleDocumentPointerDown = (event) => {
|
|
31986
32199
|
if (event.composedPath().includes(this.#host)) return;
|
|
31987
|
-
this.collapse();
|
|
32200
|
+
this.collapse(true);
|
|
31988
32201
|
};
|
|
31989
32202
|
};
|
|
31990
32203
|
|
|
@@ -32057,166 +32270,6 @@ var AssistantElementPresentationGate = class {
|
|
|
32057
32270
|
}
|
|
32058
32271
|
};
|
|
32059
32272
|
|
|
32060
|
-
// src/assistant-configuration-schema.ts
|
|
32061
|
-
var hexColorSchema = external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/);
|
|
32062
|
-
var browserAssetUrlSchema = external_exports.string().trim().url().refine(isSecureBrowserAssetUrl, "must use https (http is allowed only for loopback testing)");
|
|
32063
|
-
var httpsUrlSchema = external_exports.string().trim().url().refine(isHttpsUrl2, "must use https");
|
|
32064
|
-
var brandAssetSchema = external_exports.object({
|
|
32065
|
-
uri: browserAssetUrlSchema,
|
|
32066
|
-
darkUri: browserAssetUrlSchema.optional(),
|
|
32067
|
-
alt: external_exports.string().trim().min(1).max(240)
|
|
32068
|
-
}).strict();
|
|
32069
|
-
var brandThemeSchema = external_exports.object({
|
|
32070
|
-
surface: hexColorSchema.optional(),
|
|
32071
|
-
surfaceRaised: hexColorSchema.optional(),
|
|
32072
|
-
surfaceMuted: hexColorSchema.optional(),
|
|
32073
|
-
text: hexColorSchema.optional(),
|
|
32074
|
-
textMuted: hexColorSchema.optional(),
|
|
32075
|
-
accent: hexColorSchema.optional(),
|
|
32076
|
-
accentText: hexColorSchema.optional(),
|
|
32077
|
-
link: hexColorSchema.optional(),
|
|
32078
|
-
border: hexColorSchema.optional(),
|
|
32079
|
-
borderStrong: hexColorSchema.optional(),
|
|
32080
|
-
focus: hexColorSchema.optional(),
|
|
32081
|
-
success: hexColorSchema.optional(),
|
|
32082
|
-
warning: hexColorSchema.optional(),
|
|
32083
|
-
danger: hexColorSchema.optional(),
|
|
32084
|
-
code: hexColorSchema.optional()
|
|
32085
|
-
}).strict();
|
|
32086
|
-
var brandingSchema = external_exports.object({
|
|
32087
|
-
name: external_exports.string().trim().min(1).max(160).optional(),
|
|
32088
|
-
accent: hexColorSchema.optional(),
|
|
32089
|
-
surface: hexColorSchema.optional(),
|
|
32090
|
-
surfaceDark: hexColorSchema.optional(),
|
|
32091
|
-
logo: brandAssetSchema.optional(),
|
|
32092
|
-
mark: brandAssetSchema.optional(),
|
|
32093
|
-
avatar: brandAssetSchema.optional(),
|
|
32094
|
-
theme: external_exports.object({ light: brandThemeSchema.optional(), dark: brandThemeSchema.optional() }).strict().optional(),
|
|
32095
|
-
radius: external_exports.enum(["none", "sm", "md", "lg"]).optional(),
|
|
32096
|
-
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
32097
|
-
typography: external_exports.enum(["system", "serif", "mono"]).optional(),
|
|
32098
|
-
colorScheme: external_exports.enum(["auto", "light", "dark"]).optional()
|
|
32099
|
-
}).strict();
|
|
32100
|
-
var labelsSchema = external_exports.object({
|
|
32101
|
-
welcomeHeading: external_exports.string().trim().min(1).max(160).optional(),
|
|
32102
|
-
welcomeMessage: external_exports.string().max(1e3).optional(),
|
|
32103
|
-
launcherPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
32104
|
-
composerPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
32105
|
-
thinking: external_exports.string().trim().min(1).max(80).optional(),
|
|
32106
|
-
send: external_exports.string().trim().min(1).max(80).optional(),
|
|
32107
|
-
stop: external_exports.string().trim().min(1).max(80).optional(),
|
|
32108
|
-
close: external_exports.string().trim().min(1).max(80).optional(),
|
|
32109
|
-
open: external_exports.string().trim().min(1).max(80).optional(),
|
|
32110
|
-
confirm: external_exports.string().trim().min(1).max(80).optional(),
|
|
32111
|
-
decline: external_exports.string().trim().min(1).max(80).optional(),
|
|
32112
|
-
cancel: external_exports.string().trim().min(1).max(80).optional(),
|
|
32113
|
-
confirmationHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32114
|
-
additionalDetails: external_exports.string().trim().min(1).max(120).optional(),
|
|
32115
|
-
redacted: external_exports.string().trim().min(1).max(120).optional(),
|
|
32116
|
-
completed: external_exports.string().trim().min(1).max(80).optional(),
|
|
32117
|
-
stopped: external_exports.string().trim().min(1).max(80).optional(),
|
|
32118
|
-
copy: external_exports.string().trim().min(1).max(80).optional(),
|
|
32119
|
-
newMessages: external_exports.string().trim().min(1).max(80).optional(),
|
|
32120
|
-
reconnect: external_exports.string().trim().min(1).max(80).optional(),
|
|
32121
|
-
newConversation: external_exports.string().trim().min(1).max(80).optional(),
|
|
32122
|
-
retry: external_exports.string().trim().min(1).max(80).optional(),
|
|
32123
|
-
unavailable: external_exports.string().trim().min(1).max(240).optional(),
|
|
32124
|
-
sessionExpired: external_exports.string().trim().min(1).max(240).optional(),
|
|
32125
|
-
sessionIdle: external_exports.string().trim().min(1).max(120).optional(),
|
|
32126
|
-
sessionLoading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32127
|
-
sessionReady: external_exports.string().trim().min(1).max(120).optional(),
|
|
32128
|
-
sessionError: external_exports.string().trim().min(1).max(120).optional(),
|
|
32129
|
-
signInHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32130
|
-
signInBody: external_exports.string().max(240).optional(),
|
|
32131
|
-
signInAction: external_exports.string().trim().min(1).max(80).optional(),
|
|
32132
|
-
signUpAction: external_exports.string().trim().min(1).max(80).optional()
|
|
32133
|
-
}).strict();
|
|
32134
|
-
var presentationSchema = external_exports.object({
|
|
32135
|
-
panel: external_exports.object({
|
|
32136
|
-
surface: external_exports.enum(["solid", "glass"]).optional(),
|
|
32137
|
-
elevation: external_exports.enum(["soft", "dramatic"]).optional(),
|
|
32138
|
-
border: external_exports.enum(["subtle", "strong"]).optional(),
|
|
32139
|
-
radius: external_exports.number().int().min(0).max(64).optional()
|
|
32140
|
-
}).strict().optional(),
|
|
32141
|
-
launcher: external_exports.object({
|
|
32142
|
-
style: external_exports.enum(["pill", "bubble"]).optional(),
|
|
32143
|
-
icon: external_exports.enum(["brand-mark", "chat", "none"]).optional(),
|
|
32144
|
-
size: external_exports.enum(["md", "lg"]).optional(),
|
|
32145
|
-
status: external_exports.enum(["none", "session"]).optional(),
|
|
32146
|
-
effect: external_exports.enum(["none", "pulse"]).optional()
|
|
32147
|
-
}).strict().optional(),
|
|
32148
|
-
header: external_exports.object({
|
|
32149
|
-
mark: external_exports.enum(["none", "brand-mark", "status"]).optional(),
|
|
32150
|
-
badge: external_exports.object({
|
|
32151
|
-
text: external_exports.string().trim().min(1).max(80),
|
|
32152
|
-
tone: external_exports.enum(["neutral", "success", "warning", "danger"]).optional(),
|
|
32153
|
-
indicator: external_exports.boolean().optional()
|
|
32154
|
-
}).strict().optional()
|
|
32155
|
-
}).strict().optional(),
|
|
32156
|
-
composer: external_exports.object({
|
|
32157
|
-
leadingIcon: external_exports.enum(["none", "brand-mark"]).optional(),
|
|
32158
|
-
sendIcon: external_exports.enum(["arrow-up", "paper-plane"]).optional(),
|
|
32159
|
-
shape: external_exports.enum(["rounded", "pill"]).optional()
|
|
32160
|
-
}).strict().optional(),
|
|
32161
|
-
messages: external_exports.object({
|
|
32162
|
-
userStyle: external_exports.enum(["bubble", "accent"]).optional(),
|
|
32163
|
-
assistantStyle: external_exports.enum(["plain", "bubble"]).optional()
|
|
32164
|
-
}).strict().optional()
|
|
32165
|
-
}).strict();
|
|
32166
|
-
var assistantUiSchema = external_exports.object({
|
|
32167
|
-
theme: external_exports.enum(["auto", "light", "dark", "invert"]).optional(),
|
|
32168
|
-
layout: external_exports.object({
|
|
32169
|
-
mode: external_exports.enum(["floating", "inline", "drawer"]).optional(),
|
|
32170
|
-
position: external_exports.enum(["bottom-left", "bottom-center", "bottom-right"]).optional(),
|
|
32171
|
-
panelWidth: external_exports.number().int().min(280).max(1200).optional(),
|
|
32172
|
-
panelMinHeight: external_exports.number().int().min(240).max(1600).optional(),
|
|
32173
|
-
panelMaxHeight: external_exports.number().int().min(320).max(2400).optional(),
|
|
32174
|
-
edgeOffset: external_exports.number().int().min(0).max(96).optional(),
|
|
32175
|
-
zIndex: external_exports.number().int().min(0).max(2147483647).optional(),
|
|
32176
|
-
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
32177
|
-
mobileFullscreen: external_exports.boolean().optional()
|
|
32178
|
-
}).strict().optional(),
|
|
32179
|
-
behavior: external_exports.object({
|
|
32180
|
-
startOpen: external_exports.boolean().optional(),
|
|
32181
|
-
closeOnEscape: external_exports.boolean().optional(),
|
|
32182
|
-
closeOnOutsideClick: external_exports.boolean().optional(),
|
|
32183
|
-
showLauncher: external_exports.boolean().optional(),
|
|
32184
|
-
showHeader: external_exports.boolean().optional(),
|
|
32185
|
-
showAvatars: external_exports.boolean().optional(),
|
|
32186
|
-
showTimestamps: external_exports.boolean().optional(),
|
|
32187
|
-
showPoweredBy: external_exports.boolean().optional()
|
|
32188
|
-
}).strict().optional(),
|
|
32189
|
-
labels: labelsSchema.optional(),
|
|
32190
|
-
presentation: presentationSchema.optional(),
|
|
32191
|
-
suggestedPrompts: external_exports.array(external_exports.string().trim().min(1).max(240)).max(8).optional(),
|
|
32192
|
-
privacyUrl: httpsUrlSchema.optional(),
|
|
32193
|
-
termsUrl: httpsUrlSchema.optional(),
|
|
32194
|
-
locale: external_exports.string().trim().min(2).max(35).optional(),
|
|
32195
|
-
direction: external_exports.enum(["ltr", "rtl", "auto"]).optional()
|
|
32196
|
-
}).strict();
|
|
32197
|
-
var assistantConfigurationSchema = external_exports.object({ branding: brandingSchema.optional(), assistant: assistantUiSchema.optional() }).strict();
|
|
32198
|
-
function parseAssistantConfiguration(value) {
|
|
32199
|
-
const parsed = assistantConfigurationSchema.safeParse(value);
|
|
32200
|
-
return parsed.success ? parsed.data : void 0;
|
|
32201
|
-
}
|
|
32202
|
-
function isHttpsUrl2(value) {
|
|
32203
|
-
try {
|
|
32204
|
-
return new URL(value).protocol === "https:";
|
|
32205
|
-
} catch {
|
|
32206
|
-
return false;
|
|
32207
|
-
}
|
|
32208
|
-
}
|
|
32209
|
-
function isSecureBrowserAssetUrl(value) {
|
|
32210
|
-
try {
|
|
32211
|
-
const url2 = new URL(value);
|
|
32212
|
-
if (url2.protocol === "https:") return true;
|
|
32213
|
-
if (url2.protocol !== "http:") return false;
|
|
32214
|
-
return url2.hostname === "localhost" || url2.hostname === "127.0.0.1" || url2.hostname === "[::1]";
|
|
32215
|
-
} catch {
|
|
32216
|
-
return false;
|
|
32217
|
-
}
|
|
32218
|
-
}
|
|
32219
|
-
|
|
32220
32273
|
// src/element-public-configuration-controller.ts
|
|
32221
32274
|
var AssistantElementPublicConfigurationController = class {
|
|
32222
32275
|
#source;
|
|
@@ -32419,7 +32472,7 @@ var ASSISTANT_ELEMENT_STYLES = `<style>
|
|
|
32419
32472
|
:host([data-mode="floating"][open]) { width: min(var(--ns-assistant-panel-width, var(--ns-assistant-default-panel-width)), 100vw); }
|
|
32420
32473
|
button { font: inherit; }
|
|
32421
32474
|
button, textarea, input, select { -webkit-tap-highlight-color: transparent; }
|
|
32422
|
-
.launcher { display: flex; align-items: center; justify-content: center; gap: 12px; width: max-content; min-height: 44px; padding: 10px 14px; color: var(--ns-assistant-launcher-text, var(--ns-assistant-text, var(--ns-assistant-default-text))); background: var(--ns-assistant-launcher, color-mix(in srgb, var(--ns-assistant-panel, var(--ns-assistant-default-panel)) 50%, transparent)); border: 1px solid var(--ns-assistant-launcher-border, var(--ns-assistant-halo-launcher-border)); border-radius: 999px; box-shadow: var(--ns-assistant-halo-launcher-shadow), -6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent), 6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent), 0 0 40px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 10%, transparent); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: width .5s cubic-bezier(.25,1,.5,1), height .5s cubic-bezier(.25,1,.5,1), padding .5s cubic-bezier(.25,1,.5,1), gap .35s cubic-bezier(.25,1,.5,1), transform .6s cubic-bezier(.25,1,.5,1), background-color .3s ease, box-shadow .3s ease; }
|
|
32475
|
+
.launcher { display: flex; align-items: center; justify-content: center; gap: 12px; width: var(--_ns-assistant-launcher-collapsed-width, max-content); min-height: 44px; padding: 10px 14px; color: var(--ns-assistant-launcher-text, var(--ns-assistant-text, var(--ns-assistant-default-text))); background: var(--ns-assistant-launcher, color-mix(in srgb, var(--ns-assistant-panel, var(--ns-assistant-default-panel)) 50%, transparent)); border: 1px solid var(--ns-assistant-launcher-border, var(--ns-assistant-halo-launcher-border)); border-radius: 999px; box-shadow: var(--ns-assistant-halo-launcher-shadow), -6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent), 6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent), 0 0 40px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 10%, transparent); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: width .5s cubic-bezier(.25,1,.5,1), height .5s cubic-bezier(.25,1,.5,1), padding .5s cubic-bezier(.25,1,.5,1), gap .35s cubic-bezier(.25,1,.5,1), transform .6s cubic-bezier(.25,1,.5,1), background-color .3s ease, box-shadow .3s ease; will-change: width; }
|
|
32423
32476
|
:host([data-presentation-ready]) .launcher { padding: 10px 12px; }
|
|
32424
32477
|
.launcher[hidden] { display: none; }
|
|
32425
32478
|
.launcher:hover { transform: scale(1.02); box-shadow: var(--ns-assistant-halo-launcher-shadow-hover), -6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent), 6px 0 18px color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 20%, transparent); }
|
|
@@ -32963,19 +33016,11 @@ var presentationStyles = `<style>
|
|
|
32963
33016
|
width: 28px;
|
|
32964
33017
|
height: 28px;
|
|
32965
33018
|
border-radius: 50%;
|
|
32966
|
-
|
|
32967
|
-
opacity: .6;
|
|
32968
|
-
transition: width .5s cubic-bezier(.25,1,.5,1), height .5s cubic-bezier(.25,1,.5,1), filter .5s cubic-bezier(.25,1,.5,1), opacity .5s cubic-bezier(.25,1,.5,1);
|
|
32969
|
-
}
|
|
32970
|
-
.launcher:hover .launcher-glyph:is(img), :host([launcher-expanded]) .launcher-glyph:is(img) {
|
|
32971
|
-
filter: none;
|
|
32972
|
-
opacity: 1;
|
|
33019
|
+
transition: width .5s cubic-bezier(.25,1,.5,1), height .5s cubic-bezier(.25,1,.5,1);
|
|
32973
33020
|
}
|
|
32974
33021
|
:host([data-launcher-style="bubble"]) .launcher-glyph:is(img) {
|
|
32975
33022
|
width: 32px;
|
|
32976
33023
|
height: 32px;
|
|
32977
|
-
filter: none;
|
|
32978
|
-
opacity: 1;
|
|
32979
33024
|
}
|
|
32980
33025
|
.launcher-status {
|
|
32981
33026
|
position: absolute;
|
|
@@ -33171,6 +33216,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
33171
33216
|
},
|
|
33172
33217
|
applyConfiguration: (configuration) => this.#applyConfiguration(configuration),
|
|
33173
33218
|
labels: () => this.#appearance.labels,
|
|
33219
|
+
showConfirmationDetails: () => this.#appearance.behavior.showConfirmationDetails,
|
|
33174
33220
|
respond: (id, response) => this.respond(id, response),
|
|
33175
33221
|
dispatchError: (detail) => this.#dispatchError(detail),
|
|
33176
33222
|
revealLatest: () => this.#revealLatest(),
|