@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/index.cjs
CHANGED
|
@@ -22427,7 +22427,8 @@ var DEFAULT_APPEARANCE = {
|
|
|
22427
22427
|
showHeader: true,
|
|
22428
22428
|
showAvatars: true,
|
|
22429
22429
|
showTimestamps: false,
|
|
22430
|
-
showPoweredBy: true
|
|
22430
|
+
showPoweredBy: true,
|
|
22431
|
+
showConfirmationDetails: true
|
|
22431
22432
|
},
|
|
22432
22433
|
labels: {
|
|
22433
22434
|
welcomeHeading: "",
|
|
@@ -27357,6 +27358,178 @@ function isRecord(value) {
|
|
|
27357
27358
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27358
27359
|
}
|
|
27359
27360
|
|
|
27361
|
+
// src/assistant-configuration-schema.ts
|
|
27362
|
+
var hexColorSchema = external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/);
|
|
27363
|
+
var resolvedBorderColorSchema = external_exports.union([
|
|
27364
|
+
hexColorSchema,
|
|
27365
|
+
external_exports.string().max(64).refine(isBoundedRgbaColor, "must be a six-digit hex or bounded rgba color")
|
|
27366
|
+
]);
|
|
27367
|
+
var browserAssetUrlSchema = external_exports.string().trim().url().refine(isSecureBrowserAssetUrl, "must use https (http is allowed only for loopback testing)");
|
|
27368
|
+
var httpsUrlSchema = external_exports.string().trim().url().refine(isHttpsUrl, "must use https");
|
|
27369
|
+
var brandAssetSchema = external_exports.object({
|
|
27370
|
+
uri: browserAssetUrlSchema,
|
|
27371
|
+
darkUri: browserAssetUrlSchema.optional(),
|
|
27372
|
+
alt: external_exports.string().trim().min(1).max(240)
|
|
27373
|
+
}).strict();
|
|
27374
|
+
var brandThemeSchema = external_exports.object({
|
|
27375
|
+
surface: hexColorSchema.optional(),
|
|
27376
|
+
surfaceRaised: hexColorSchema.optional(),
|
|
27377
|
+
surfaceMuted: hexColorSchema.optional(),
|
|
27378
|
+
text: hexColorSchema.optional(),
|
|
27379
|
+
textMuted: hexColorSchema.optional(),
|
|
27380
|
+
accent: hexColorSchema.optional(),
|
|
27381
|
+
accentText: hexColorSchema.optional(),
|
|
27382
|
+
link: hexColorSchema.optional(),
|
|
27383
|
+
border: resolvedBorderColorSchema.optional(),
|
|
27384
|
+
borderStrong: resolvedBorderColorSchema.optional(),
|
|
27385
|
+
focus: hexColorSchema.optional(),
|
|
27386
|
+
success: hexColorSchema.optional(),
|
|
27387
|
+
warning: hexColorSchema.optional(),
|
|
27388
|
+
danger: hexColorSchema.optional(),
|
|
27389
|
+
code: hexColorSchema.optional()
|
|
27390
|
+
}).strict();
|
|
27391
|
+
var brandingSchema = external_exports.object({
|
|
27392
|
+
name: external_exports.string().trim().min(1).max(160).optional(),
|
|
27393
|
+
accent: hexColorSchema.optional(),
|
|
27394
|
+
surface: hexColorSchema.optional(),
|
|
27395
|
+
surfaceDark: hexColorSchema.optional(),
|
|
27396
|
+
logo: brandAssetSchema.optional(),
|
|
27397
|
+
mark: brandAssetSchema.optional(),
|
|
27398
|
+
avatar: brandAssetSchema.optional(),
|
|
27399
|
+
theme: external_exports.object({ light: brandThemeSchema.optional(), dark: brandThemeSchema.optional() }).strict().optional(),
|
|
27400
|
+
radius: external_exports.enum(["none", "sm", "md", "lg"]).optional(),
|
|
27401
|
+
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
27402
|
+
typography: external_exports.enum(["system", "serif", "mono"]).optional(),
|
|
27403
|
+
colorScheme: external_exports.enum(["auto", "light", "dark"]).optional()
|
|
27404
|
+
}).strict();
|
|
27405
|
+
var labelsSchema = external_exports.object({
|
|
27406
|
+
welcomeHeading: external_exports.string().trim().min(1).max(160).optional(),
|
|
27407
|
+
welcomeMessage: external_exports.string().max(1e3).optional(),
|
|
27408
|
+
launcherPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
27409
|
+
composerPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
27410
|
+
thinking: external_exports.string().trim().min(1).max(80).optional(),
|
|
27411
|
+
send: external_exports.string().trim().min(1).max(80).optional(),
|
|
27412
|
+
stop: external_exports.string().trim().min(1).max(80).optional(),
|
|
27413
|
+
close: external_exports.string().trim().min(1).max(80).optional(),
|
|
27414
|
+
open: external_exports.string().trim().min(1).max(80).optional(),
|
|
27415
|
+
confirm: external_exports.string().trim().min(1).max(80).optional(),
|
|
27416
|
+
decline: external_exports.string().trim().min(1).max(80).optional(),
|
|
27417
|
+
cancel: external_exports.string().trim().min(1).max(80).optional(),
|
|
27418
|
+
confirmationHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27419
|
+
additionalDetails: external_exports.string().trim().min(1).max(120).optional(),
|
|
27420
|
+
redacted: external_exports.string().trim().min(1).max(120).optional(),
|
|
27421
|
+
completed: external_exports.string().trim().min(1).max(80).optional(),
|
|
27422
|
+
stopped: external_exports.string().trim().min(1).max(80).optional(),
|
|
27423
|
+
copy: external_exports.string().trim().min(1).max(80).optional(),
|
|
27424
|
+
newMessages: external_exports.string().trim().min(1).max(80).optional(),
|
|
27425
|
+
reconnect: external_exports.string().trim().min(1).max(80).optional(),
|
|
27426
|
+
newConversation: external_exports.string().trim().min(1).max(80).optional(),
|
|
27427
|
+
retry: external_exports.string().trim().min(1).max(80).optional(),
|
|
27428
|
+
unavailable: external_exports.string().trim().min(1).max(240).optional(),
|
|
27429
|
+
sessionExpired: external_exports.string().trim().min(1).max(240).optional(),
|
|
27430
|
+
sessionIdle: external_exports.string().trim().min(1).max(120).optional(),
|
|
27431
|
+
sessionLoading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27432
|
+
sessionReady: external_exports.string().trim().min(1).max(120).optional(),
|
|
27433
|
+
sessionError: external_exports.string().trim().min(1).max(120).optional(),
|
|
27434
|
+
signInHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
27435
|
+
signInBody: external_exports.string().max(240).optional(),
|
|
27436
|
+
signInAction: external_exports.string().trim().min(1).max(80).optional(),
|
|
27437
|
+
signUpAction: external_exports.string().trim().min(1).max(80).optional()
|
|
27438
|
+
}).strict();
|
|
27439
|
+
var presentationSchema = external_exports.object({
|
|
27440
|
+
panel: external_exports.object({
|
|
27441
|
+
surface: external_exports.enum(["solid", "glass"]).optional(),
|
|
27442
|
+
elevation: external_exports.enum(["soft", "dramatic"]).optional(),
|
|
27443
|
+
border: external_exports.enum(["subtle", "strong"]).optional(),
|
|
27444
|
+
radius: external_exports.number().int().min(0).max(64).optional()
|
|
27445
|
+
}).strict().optional(),
|
|
27446
|
+
launcher: external_exports.object({
|
|
27447
|
+
style: external_exports.enum(["pill", "bubble"]).optional(),
|
|
27448
|
+
icon: external_exports.enum(["brand-mark", "chat", "none"]).optional(),
|
|
27449
|
+
size: external_exports.enum(["md", "lg"]).optional(),
|
|
27450
|
+
status: external_exports.enum(["none", "session"]).optional(),
|
|
27451
|
+
effect: external_exports.enum(["none", "pulse"]).optional()
|
|
27452
|
+
}).strict().optional(),
|
|
27453
|
+
header: external_exports.object({
|
|
27454
|
+
mark: external_exports.enum(["none", "brand-mark", "status"]).optional(),
|
|
27455
|
+
badge: external_exports.object({
|
|
27456
|
+
text: external_exports.string().trim().min(1).max(80),
|
|
27457
|
+
tone: external_exports.enum(["neutral", "success", "warning", "danger"]).optional(),
|
|
27458
|
+
indicator: external_exports.boolean().optional()
|
|
27459
|
+
}).strict().optional()
|
|
27460
|
+
}).strict().optional(),
|
|
27461
|
+
composer: external_exports.object({
|
|
27462
|
+
leadingIcon: external_exports.enum(["none", "brand-mark"]).optional(),
|
|
27463
|
+
sendIcon: external_exports.enum(["arrow-up", "paper-plane"]).optional(),
|
|
27464
|
+
shape: external_exports.enum(["rounded", "pill"]).optional()
|
|
27465
|
+
}).strict().optional(),
|
|
27466
|
+
messages: external_exports.object({
|
|
27467
|
+
userStyle: external_exports.enum(["bubble", "accent"]).optional(),
|
|
27468
|
+
assistantStyle: external_exports.enum(["plain", "bubble"]).optional()
|
|
27469
|
+
}).strict().optional()
|
|
27470
|
+
}).strict();
|
|
27471
|
+
var assistantUiSchema = external_exports.object({
|
|
27472
|
+
theme: external_exports.enum(["auto", "light", "dark", "invert"]).optional(),
|
|
27473
|
+
layout: external_exports.object({
|
|
27474
|
+
mode: external_exports.enum(["floating", "inline", "drawer"]).optional(),
|
|
27475
|
+
position: external_exports.enum(["bottom-left", "bottom-center", "bottom-right"]).optional(),
|
|
27476
|
+
panelWidth: external_exports.number().int().min(280).max(1200).optional(),
|
|
27477
|
+
panelMinHeight: external_exports.number().int().min(240).max(1600).optional(),
|
|
27478
|
+
panelMaxHeight: external_exports.number().int().min(320).max(2400).optional(),
|
|
27479
|
+
edgeOffset: external_exports.number().int().min(0).max(96).optional(),
|
|
27480
|
+
zIndex: external_exports.number().int().min(0).max(2147483647).optional(),
|
|
27481
|
+
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
27482
|
+
mobileFullscreen: external_exports.boolean().optional()
|
|
27483
|
+
}).strict().optional(),
|
|
27484
|
+
behavior: external_exports.object({
|
|
27485
|
+
startOpen: external_exports.boolean().optional(),
|
|
27486
|
+
closeOnEscape: external_exports.boolean().optional(),
|
|
27487
|
+
closeOnOutsideClick: external_exports.boolean().optional(),
|
|
27488
|
+
showLauncher: external_exports.boolean().optional(),
|
|
27489
|
+
showHeader: external_exports.boolean().optional(),
|
|
27490
|
+
showAvatars: external_exports.boolean().optional(),
|
|
27491
|
+
showTimestamps: external_exports.boolean().optional(),
|
|
27492
|
+
showPoweredBy: external_exports.boolean().optional(),
|
|
27493
|
+
showConfirmationDetails: external_exports.boolean().optional()
|
|
27494
|
+
}).strict().optional(),
|
|
27495
|
+
labels: labelsSchema.optional(),
|
|
27496
|
+
presentation: presentationSchema.optional(),
|
|
27497
|
+
suggestedPrompts: external_exports.array(external_exports.string().trim().min(1).max(240)).max(8).optional(),
|
|
27498
|
+
privacyUrl: httpsUrlSchema.optional(),
|
|
27499
|
+
termsUrl: httpsUrlSchema.optional(),
|
|
27500
|
+
locale: external_exports.string().trim().min(2).max(35).optional(),
|
|
27501
|
+
direction: external_exports.enum(["ltr", "rtl", "auto"]).optional()
|
|
27502
|
+
}).strict();
|
|
27503
|
+
var assistantConfigurationSchema = external_exports.object({ branding: brandingSchema.optional(), assistant: assistantUiSchema.optional() }).strict();
|
|
27504
|
+
function parseAssistantConfiguration(value) {
|
|
27505
|
+
const parsed = assistantConfigurationSchema.safeParse(value);
|
|
27506
|
+
return parsed.success ? parsed.data : void 0;
|
|
27507
|
+
}
|
|
27508
|
+
function isHttpsUrl(value) {
|
|
27509
|
+
try {
|
|
27510
|
+
return new URL(value).protocol === "https:";
|
|
27511
|
+
} catch {
|
|
27512
|
+
return false;
|
|
27513
|
+
}
|
|
27514
|
+
}
|
|
27515
|
+
function isSecureBrowserAssetUrl(value) {
|
|
27516
|
+
try {
|
|
27517
|
+
const url2 = new URL(value);
|
|
27518
|
+
if (url2.protocol === "https:") return true;
|
|
27519
|
+
if (url2.protocol !== "http:") return false;
|
|
27520
|
+
return url2.hostname === "localhost" || url2.hostname === "127.0.0.1" || url2.hostname === "[::1]";
|
|
27521
|
+
} catch {
|
|
27522
|
+
return false;
|
|
27523
|
+
}
|
|
27524
|
+
}
|
|
27525
|
+
function isBoundedRgbaColor(value) {
|
|
27526
|
+
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(
|
|
27527
|
+
value
|
|
27528
|
+
);
|
|
27529
|
+
if (match === null) return false;
|
|
27530
|
+
return match.slice(1, 4).every((channel) => Number(channel) <= 255);
|
|
27531
|
+
}
|
|
27532
|
+
|
|
27360
27533
|
// src/client-errors.ts
|
|
27361
27534
|
async function refusalCode(response) {
|
|
27362
27535
|
try {
|
|
@@ -27390,6 +27563,7 @@ function parseSession(value) {
|
|
|
27390
27563
|
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") {
|
|
27391
27564
|
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
27392
27565
|
}
|
|
27566
|
+
const configuration = parseAssistantConfiguration(value.configuration);
|
|
27393
27567
|
return {
|
|
27394
27568
|
token: value.token,
|
|
27395
27569
|
expiresAt: value.expiresAt,
|
|
@@ -27401,7 +27575,7 @@ function parseSession(value) {
|
|
|
27401
27575
|
...typeof sandbox === "string" ? { sandbox } : {},
|
|
27402
27576
|
...typeof transcript === "string" ? { transcript } : {}
|
|
27403
27577
|
},
|
|
27404
|
-
...
|
|
27578
|
+
...configuration === void 0 ? {} : { configuration },
|
|
27405
27579
|
...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
|
|
27406
27580
|
};
|
|
27407
27581
|
}
|
|
@@ -27495,9 +27669,9 @@ function toAssistantClientEvent(event) {
|
|
|
27495
27669
|
return { event: "unrecognized", data: { name: event.event, payload: value } };
|
|
27496
27670
|
}
|
|
27497
27671
|
function isViewAvailableDetail(value) {
|
|
27498
|
-
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(
|
|
27672
|
+
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);
|
|
27499
27673
|
}
|
|
27500
|
-
function
|
|
27674
|
+
function isHttpsUrl2(value) {
|
|
27501
27675
|
if (typeof value !== "string") return false;
|
|
27502
27676
|
try {
|
|
27503
27677
|
return new URL(value).protocol === "https:";
|
|
@@ -28581,7 +28755,7 @@ function createInteractionCard(options) {
|
|
|
28581
28755
|
if (Object.keys(businessArguments).length > 0) {
|
|
28582
28756
|
card.append(createArgumentList(businessArguments, options.reviewSchema, options.labels));
|
|
28583
28757
|
}
|
|
28584
|
-
if (action !== void 0) {
|
|
28758
|
+
if (action !== void 0 && options.showDetails !== false) {
|
|
28585
28759
|
const technical = document.createElement("details");
|
|
28586
28760
|
technical.className = "proposal-details";
|
|
28587
28761
|
const summary = document.createElement("summary");
|
|
@@ -28663,7 +28837,7 @@ function createArgumentList(arguments_, schema, labels) {
|
|
|
28663
28837
|
return list;
|
|
28664
28838
|
}
|
|
28665
28839
|
function appendValue(parent, value, schema, labels) {
|
|
28666
|
-
if (value === "[REDACTED]") {
|
|
28840
|
+
if (schema?.writeOnly === true || schema?.["x-sensitive"] === true || value === "[REDACTED]") {
|
|
28667
28841
|
const hidden = document.createElement("span");
|
|
28668
28842
|
hidden.className = "proposal-redacted";
|
|
28669
28843
|
hidden.textContent = labels.redacted;
|
|
@@ -31584,6 +31758,7 @@ var AssistantElementEventController = class {
|
|
|
31584
31758
|
...description ? { description } : {},
|
|
31585
31759
|
...arguments_ ? { arguments: arguments_ } : {},
|
|
31586
31760
|
...reviewSchema ? { reviewSchema } : {},
|
|
31761
|
+
showDetails: this.#host.showConfirmationDetails(),
|
|
31587
31762
|
labels: {
|
|
31588
31763
|
heading: labels.confirmationHeading,
|
|
31589
31764
|
accept: labels.confirm,
|
|
@@ -31853,12 +32028,14 @@ var AssistantElementHostEnvironmentController = class {
|
|
|
31853
32028
|
};
|
|
31854
32029
|
|
|
31855
32030
|
// src/element-launcher-controller.ts
|
|
32031
|
+
var COLLAPSED_LAUNCHER_WIDTH_PROPERTY = "--_ns-assistant-launcher-collapsed-width";
|
|
31856
32032
|
var AssistantElementLauncherController = class {
|
|
31857
32033
|
#host;
|
|
31858
32034
|
#appearance;
|
|
31859
32035
|
#openPanel;
|
|
31860
32036
|
#sendMessage;
|
|
31861
32037
|
#root;
|
|
32038
|
+
#measurementFrame;
|
|
31862
32039
|
constructor(options) {
|
|
31863
32040
|
this.#host = options.host;
|
|
31864
32041
|
this.#appearance = options.appearance;
|
|
@@ -31889,6 +32066,8 @@ var AssistantElementLauncherController = class {
|
|
|
31889
32066
|
}
|
|
31890
32067
|
disconnect() {
|
|
31891
32068
|
document.removeEventListener("pointerdown", this.#handleDocumentPointerDown);
|
|
32069
|
+
this.#cancelWidthMeasurement();
|
|
32070
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
31892
32071
|
this.#root = void 0;
|
|
31893
32072
|
}
|
|
31894
32073
|
sync() {
|
|
@@ -31910,7 +32089,13 @@ var AssistantElementLauncherController = class {
|
|
|
31910
32089
|
);
|
|
31911
32090
|
queryRequired(root, ".launcher").hidden = !appearance.behavior.showLauncher;
|
|
31912
32091
|
queryRequired(root, ".powered-by-row").hidden = !appearance.behavior.showPoweredBy;
|
|
31913
|
-
if (style === "bubble" || this.#host.hasAttribute("open"))
|
|
32092
|
+
if (style === "bubble" || this.#host.hasAttribute("open")) {
|
|
32093
|
+
this.#cancelWidthMeasurement();
|
|
32094
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32095
|
+
this.collapse(true);
|
|
32096
|
+
return;
|
|
32097
|
+
}
|
|
32098
|
+
if (!this.#host.hasAttribute("launcher-expanded")) this.#scheduleWidthMeasurement();
|
|
31914
32099
|
}
|
|
31915
32100
|
collapse(force = false) {
|
|
31916
32101
|
const root = this.#root;
|
|
@@ -31931,6 +32116,9 @@ var AssistantElementLauncherController = class {
|
|
|
31931
32116
|
#expand() {
|
|
31932
32117
|
const root = this.#root;
|
|
31933
32118
|
if (!root || this.#appearance().presentation.launcher.style === "bubble") return;
|
|
32119
|
+
this.#cancelWidthMeasurement();
|
|
32120
|
+
this.#measureCollapsedWidth();
|
|
32121
|
+
void queryRequired(root, ".launcher").offsetWidth;
|
|
31934
32122
|
this.#host.setAttribute("launcher-expanded", "");
|
|
31935
32123
|
const form = queryRequired(root, ".launcher-form");
|
|
31936
32124
|
const trigger = queryRequired(root, ".launcher-trigger");
|
|
@@ -31942,6 +32130,31 @@ var AssistantElementLauncherController = class {
|
|
|
31942
32130
|
if (this.#host.hasAttribute("launcher-expanded")) input.focus();
|
|
31943
32131
|
});
|
|
31944
32132
|
}
|
|
32133
|
+
#scheduleWidthMeasurement() {
|
|
32134
|
+
this.#cancelWidthMeasurement();
|
|
32135
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32136
|
+
this.#measurementFrame = requestAnimationFrame(() => {
|
|
32137
|
+
this.#measurementFrame = void 0;
|
|
32138
|
+
this.#measureCollapsedWidth();
|
|
32139
|
+
});
|
|
32140
|
+
}
|
|
32141
|
+
#cancelWidthMeasurement() {
|
|
32142
|
+
if (this.#measurementFrame === void 0) return;
|
|
32143
|
+
cancelAnimationFrame(this.#measurementFrame);
|
|
32144
|
+
this.#measurementFrame = void 0;
|
|
32145
|
+
}
|
|
32146
|
+
#measureCollapsedWidth() {
|
|
32147
|
+
const root = this.#root;
|
|
32148
|
+
if (!root || this.#host.hasAttribute("launcher-expanded") || this.#appearance().presentation.launcher.style === "bubble") {
|
|
32149
|
+
return;
|
|
32150
|
+
}
|
|
32151
|
+
const launcher = queryRequired(root, ".launcher");
|
|
32152
|
+
this.#host.style.removeProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY);
|
|
32153
|
+
const collapsedWidth = launcher.offsetWidth;
|
|
32154
|
+
if (collapsedWidth > 0) {
|
|
32155
|
+
this.#host.style.setProperty(COLLAPSED_LAUNCHER_WIDTH_PROPERTY, `${collapsedWidth}px`);
|
|
32156
|
+
}
|
|
32157
|
+
}
|
|
31945
32158
|
#handleTrigger = () => {
|
|
31946
32159
|
if (this.#appearance().presentation.launcher.style === "bubble") {
|
|
31947
32160
|
this.#openPanel();
|
|
@@ -31981,7 +32194,7 @@ var AssistantElementLauncherController = class {
|
|
|
31981
32194
|
};
|
|
31982
32195
|
#handleDocumentPointerDown = (event) => {
|
|
31983
32196
|
if (event.composedPath().includes(this.#host)) return;
|
|
31984
|
-
this.collapse();
|
|
32197
|
+
this.collapse(true);
|
|
31985
32198
|
};
|
|
31986
32199
|
};
|
|
31987
32200
|
|
|
@@ -32054,166 +32267,6 @@ var AssistantElementPresentationGate = class {
|
|
|
32054
32267
|
}
|
|
32055
32268
|
};
|
|
32056
32269
|
|
|
32057
|
-
// src/assistant-configuration-schema.ts
|
|
32058
|
-
var hexColorSchema = external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/);
|
|
32059
|
-
var browserAssetUrlSchema = external_exports.string().trim().url().refine(isSecureBrowserAssetUrl, "must use https (http is allowed only for loopback testing)");
|
|
32060
|
-
var httpsUrlSchema = external_exports.string().trim().url().refine(isHttpsUrl2, "must use https");
|
|
32061
|
-
var brandAssetSchema = external_exports.object({
|
|
32062
|
-
uri: browserAssetUrlSchema,
|
|
32063
|
-
darkUri: browserAssetUrlSchema.optional(),
|
|
32064
|
-
alt: external_exports.string().trim().min(1).max(240)
|
|
32065
|
-
}).strict();
|
|
32066
|
-
var brandThemeSchema = external_exports.object({
|
|
32067
|
-
surface: hexColorSchema.optional(),
|
|
32068
|
-
surfaceRaised: hexColorSchema.optional(),
|
|
32069
|
-
surfaceMuted: hexColorSchema.optional(),
|
|
32070
|
-
text: hexColorSchema.optional(),
|
|
32071
|
-
textMuted: hexColorSchema.optional(),
|
|
32072
|
-
accent: hexColorSchema.optional(),
|
|
32073
|
-
accentText: hexColorSchema.optional(),
|
|
32074
|
-
link: hexColorSchema.optional(),
|
|
32075
|
-
border: hexColorSchema.optional(),
|
|
32076
|
-
borderStrong: hexColorSchema.optional(),
|
|
32077
|
-
focus: hexColorSchema.optional(),
|
|
32078
|
-
success: hexColorSchema.optional(),
|
|
32079
|
-
warning: hexColorSchema.optional(),
|
|
32080
|
-
danger: hexColorSchema.optional(),
|
|
32081
|
-
code: hexColorSchema.optional()
|
|
32082
|
-
}).strict();
|
|
32083
|
-
var brandingSchema = external_exports.object({
|
|
32084
|
-
name: external_exports.string().trim().min(1).max(160).optional(),
|
|
32085
|
-
accent: hexColorSchema.optional(),
|
|
32086
|
-
surface: hexColorSchema.optional(),
|
|
32087
|
-
surfaceDark: hexColorSchema.optional(),
|
|
32088
|
-
logo: brandAssetSchema.optional(),
|
|
32089
|
-
mark: brandAssetSchema.optional(),
|
|
32090
|
-
avatar: brandAssetSchema.optional(),
|
|
32091
|
-
theme: external_exports.object({ light: brandThemeSchema.optional(), dark: brandThemeSchema.optional() }).strict().optional(),
|
|
32092
|
-
radius: external_exports.enum(["none", "sm", "md", "lg"]).optional(),
|
|
32093
|
-
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
32094
|
-
typography: external_exports.enum(["system", "serif", "mono"]).optional(),
|
|
32095
|
-
colorScheme: external_exports.enum(["auto", "light", "dark"]).optional()
|
|
32096
|
-
}).strict();
|
|
32097
|
-
var labelsSchema = external_exports.object({
|
|
32098
|
-
welcomeHeading: external_exports.string().trim().min(1).max(160).optional(),
|
|
32099
|
-
welcomeMessage: external_exports.string().max(1e3).optional(),
|
|
32100
|
-
launcherPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
32101
|
-
composerPlaceholder: external_exports.string().trim().min(1).max(160).optional(),
|
|
32102
|
-
thinking: external_exports.string().trim().min(1).max(80).optional(),
|
|
32103
|
-
send: external_exports.string().trim().min(1).max(80).optional(),
|
|
32104
|
-
stop: external_exports.string().trim().min(1).max(80).optional(),
|
|
32105
|
-
close: external_exports.string().trim().min(1).max(80).optional(),
|
|
32106
|
-
open: external_exports.string().trim().min(1).max(80).optional(),
|
|
32107
|
-
confirm: external_exports.string().trim().min(1).max(80).optional(),
|
|
32108
|
-
decline: external_exports.string().trim().min(1).max(80).optional(),
|
|
32109
|
-
cancel: external_exports.string().trim().min(1).max(80).optional(),
|
|
32110
|
-
confirmationHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32111
|
-
additionalDetails: external_exports.string().trim().min(1).max(120).optional(),
|
|
32112
|
-
redacted: external_exports.string().trim().min(1).max(120).optional(),
|
|
32113
|
-
completed: external_exports.string().trim().min(1).max(80).optional(),
|
|
32114
|
-
stopped: external_exports.string().trim().min(1).max(80).optional(),
|
|
32115
|
-
copy: external_exports.string().trim().min(1).max(80).optional(),
|
|
32116
|
-
newMessages: external_exports.string().trim().min(1).max(80).optional(),
|
|
32117
|
-
reconnect: external_exports.string().trim().min(1).max(80).optional(),
|
|
32118
|
-
newConversation: external_exports.string().trim().min(1).max(80).optional(),
|
|
32119
|
-
retry: external_exports.string().trim().min(1).max(80).optional(),
|
|
32120
|
-
unavailable: external_exports.string().trim().min(1).max(240).optional(),
|
|
32121
|
-
sessionExpired: external_exports.string().trim().min(1).max(240).optional(),
|
|
32122
|
-
sessionIdle: external_exports.string().trim().min(1).max(120).optional(),
|
|
32123
|
-
sessionLoading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32124
|
-
sessionReady: external_exports.string().trim().min(1).max(120).optional(),
|
|
32125
|
-
sessionError: external_exports.string().trim().min(1).max(120).optional(),
|
|
32126
|
-
signInHeading: external_exports.string().trim().min(1).max(120).optional(),
|
|
32127
|
-
signInBody: external_exports.string().max(240).optional(),
|
|
32128
|
-
signInAction: external_exports.string().trim().min(1).max(80).optional(),
|
|
32129
|
-
signUpAction: external_exports.string().trim().min(1).max(80).optional()
|
|
32130
|
-
}).strict();
|
|
32131
|
-
var presentationSchema = external_exports.object({
|
|
32132
|
-
panel: external_exports.object({
|
|
32133
|
-
surface: external_exports.enum(["solid", "glass"]).optional(),
|
|
32134
|
-
elevation: external_exports.enum(["soft", "dramatic"]).optional(),
|
|
32135
|
-
border: external_exports.enum(["subtle", "strong"]).optional(),
|
|
32136
|
-
radius: external_exports.number().int().min(0).max(64).optional()
|
|
32137
|
-
}).strict().optional(),
|
|
32138
|
-
launcher: external_exports.object({
|
|
32139
|
-
style: external_exports.enum(["pill", "bubble"]).optional(),
|
|
32140
|
-
icon: external_exports.enum(["brand-mark", "chat", "none"]).optional(),
|
|
32141
|
-
size: external_exports.enum(["md", "lg"]).optional(),
|
|
32142
|
-
status: external_exports.enum(["none", "session"]).optional(),
|
|
32143
|
-
effect: external_exports.enum(["none", "pulse"]).optional()
|
|
32144
|
-
}).strict().optional(),
|
|
32145
|
-
header: external_exports.object({
|
|
32146
|
-
mark: external_exports.enum(["none", "brand-mark", "status"]).optional(),
|
|
32147
|
-
badge: external_exports.object({
|
|
32148
|
-
text: external_exports.string().trim().min(1).max(80),
|
|
32149
|
-
tone: external_exports.enum(["neutral", "success", "warning", "danger"]).optional(),
|
|
32150
|
-
indicator: external_exports.boolean().optional()
|
|
32151
|
-
}).strict().optional()
|
|
32152
|
-
}).strict().optional(),
|
|
32153
|
-
composer: external_exports.object({
|
|
32154
|
-
leadingIcon: external_exports.enum(["none", "brand-mark"]).optional(),
|
|
32155
|
-
sendIcon: external_exports.enum(["arrow-up", "paper-plane"]).optional(),
|
|
32156
|
-
shape: external_exports.enum(["rounded", "pill"]).optional()
|
|
32157
|
-
}).strict().optional(),
|
|
32158
|
-
messages: external_exports.object({
|
|
32159
|
-
userStyle: external_exports.enum(["bubble", "accent"]).optional(),
|
|
32160
|
-
assistantStyle: external_exports.enum(["plain", "bubble"]).optional()
|
|
32161
|
-
}).strict().optional()
|
|
32162
|
-
}).strict();
|
|
32163
|
-
var assistantUiSchema = external_exports.object({
|
|
32164
|
-
theme: external_exports.enum(["auto", "light", "dark", "invert"]).optional(),
|
|
32165
|
-
layout: external_exports.object({
|
|
32166
|
-
mode: external_exports.enum(["floating", "inline", "drawer"]).optional(),
|
|
32167
|
-
position: external_exports.enum(["bottom-left", "bottom-center", "bottom-right"]).optional(),
|
|
32168
|
-
panelWidth: external_exports.number().int().min(280).max(1200).optional(),
|
|
32169
|
-
panelMinHeight: external_exports.number().int().min(240).max(1600).optional(),
|
|
32170
|
-
panelMaxHeight: external_exports.number().int().min(320).max(2400).optional(),
|
|
32171
|
-
edgeOffset: external_exports.number().int().min(0).max(96).optional(),
|
|
32172
|
-
zIndex: external_exports.number().int().min(0).max(2147483647).optional(),
|
|
32173
|
-
density: external_exports.enum(["compact", "comfortable"]).optional(),
|
|
32174
|
-
mobileFullscreen: external_exports.boolean().optional()
|
|
32175
|
-
}).strict().optional(),
|
|
32176
|
-
behavior: external_exports.object({
|
|
32177
|
-
startOpen: external_exports.boolean().optional(),
|
|
32178
|
-
closeOnEscape: external_exports.boolean().optional(),
|
|
32179
|
-
closeOnOutsideClick: external_exports.boolean().optional(),
|
|
32180
|
-
showLauncher: external_exports.boolean().optional(),
|
|
32181
|
-
showHeader: external_exports.boolean().optional(),
|
|
32182
|
-
showAvatars: external_exports.boolean().optional(),
|
|
32183
|
-
showTimestamps: external_exports.boolean().optional(),
|
|
32184
|
-
showPoweredBy: external_exports.boolean().optional()
|
|
32185
|
-
}).strict().optional(),
|
|
32186
|
-
labels: labelsSchema.optional(),
|
|
32187
|
-
presentation: presentationSchema.optional(),
|
|
32188
|
-
suggestedPrompts: external_exports.array(external_exports.string().trim().min(1).max(240)).max(8).optional(),
|
|
32189
|
-
privacyUrl: httpsUrlSchema.optional(),
|
|
32190
|
-
termsUrl: httpsUrlSchema.optional(),
|
|
32191
|
-
locale: external_exports.string().trim().min(2).max(35).optional(),
|
|
32192
|
-
direction: external_exports.enum(["ltr", "rtl", "auto"]).optional()
|
|
32193
|
-
}).strict();
|
|
32194
|
-
var assistantConfigurationSchema = external_exports.object({ branding: brandingSchema.optional(), assistant: assistantUiSchema.optional() }).strict();
|
|
32195
|
-
function parseAssistantConfiguration(value) {
|
|
32196
|
-
const parsed = assistantConfigurationSchema.safeParse(value);
|
|
32197
|
-
return parsed.success ? parsed.data : void 0;
|
|
32198
|
-
}
|
|
32199
|
-
function isHttpsUrl2(value) {
|
|
32200
|
-
try {
|
|
32201
|
-
return new URL(value).protocol === "https:";
|
|
32202
|
-
} catch {
|
|
32203
|
-
return false;
|
|
32204
|
-
}
|
|
32205
|
-
}
|
|
32206
|
-
function isSecureBrowserAssetUrl(value) {
|
|
32207
|
-
try {
|
|
32208
|
-
const url2 = new URL(value);
|
|
32209
|
-
if (url2.protocol === "https:") return true;
|
|
32210
|
-
if (url2.protocol !== "http:") return false;
|
|
32211
|
-
return url2.hostname === "localhost" || url2.hostname === "127.0.0.1" || url2.hostname === "[::1]";
|
|
32212
|
-
} catch {
|
|
32213
|
-
return false;
|
|
32214
|
-
}
|
|
32215
|
-
}
|
|
32216
|
-
|
|
32217
32270
|
// src/element-public-configuration-controller.ts
|
|
32218
32271
|
var AssistantElementPublicConfigurationController = class {
|
|
32219
32272
|
#source;
|
|
@@ -32416,7 +32469,7 @@ var ASSISTANT_ELEMENT_STYLES = `<style>
|
|
|
32416
32469
|
:host([data-mode="floating"][open]) { width: min(var(--ns-assistant-panel-width, var(--ns-assistant-default-panel-width)), 100vw); }
|
|
32417
32470
|
button { font: inherit; }
|
|
32418
32471
|
button, textarea, input, select { -webkit-tap-highlight-color: transparent; }
|
|
32419
|
-
.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; }
|
|
32472
|
+
.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; }
|
|
32420
32473
|
:host([data-presentation-ready]) .launcher { padding: 10px 12px; }
|
|
32421
32474
|
.launcher[hidden] { display: none; }
|
|
32422
32475
|
.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); }
|
|
@@ -32960,19 +33013,11 @@ var presentationStyles = `<style>
|
|
|
32960
33013
|
width: 28px;
|
|
32961
33014
|
height: 28px;
|
|
32962
33015
|
border-radius: 50%;
|
|
32963
|
-
|
|
32964
|
-
opacity: .6;
|
|
32965
|
-
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);
|
|
32966
|
-
}
|
|
32967
|
-
.launcher:hover .launcher-glyph:is(img), :host([launcher-expanded]) .launcher-glyph:is(img) {
|
|
32968
|
-
filter: none;
|
|
32969
|
-
opacity: 1;
|
|
33016
|
+
transition: width .5s cubic-bezier(.25,1,.5,1), height .5s cubic-bezier(.25,1,.5,1);
|
|
32970
33017
|
}
|
|
32971
33018
|
:host([data-launcher-style="bubble"]) .launcher-glyph:is(img) {
|
|
32972
33019
|
width: 32px;
|
|
32973
33020
|
height: 32px;
|
|
32974
|
-
filter: none;
|
|
32975
|
-
opacity: 1;
|
|
32976
33021
|
}
|
|
32977
33022
|
.launcher-status {
|
|
32978
33023
|
position: absolute;
|
|
@@ -33168,6 +33213,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
33168
33213
|
},
|
|
33169
33214
|
applyConfiguration: (configuration) => this.#applyConfiguration(configuration),
|
|
33170
33215
|
labels: () => this.#appearance.labels,
|
|
33216
|
+
showConfirmationDetails: () => this.#appearance.behavior.showConfirmationDetails,
|
|
33171
33217
|
respond: (id, response) => this.respond(id, response),
|
|
33172
33218
|
dispatchError: (detail) => this.#dispatchError(detail),
|
|
33173
33219
|
revealLatest: () => this.#revealLatest(),
|