@noodleseed/assistant 1.24.0 → 1.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{app-view-element-DDtXu08a.d.ts → app-view-element-BNkQab1B.d.ts} +1 -1
- package/dist/{app-view-element-DSPtyEul.d.cts → app-view-element-DhuiNW_x.d.cts} +1 -1
- package/dist/app-view.cjs +5 -5
- 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-0nS2LFjb.d.cts → appearance-B6vSg8Ub.d.cts} +4 -0
- package/dist/{appearance-0nS2LFjb.d.ts → appearance-B6vSg8Ub.d.ts} +4 -0
- package/dist/{chunk-5NBHHNI3.js → chunk-5TYS2Q6S.js} +2 -2
- package/dist/{chunk-IBDP6PXQ.js → chunk-7BQHW37I.js} +71 -3
- package/dist/chunk-7BQHW37I.js.map +1 -0
- package/dist/{chunk-XKTUXFGX.js → chunk-CF2SCDLF.js} +6 -6
- package/dist/chunk-CF2SCDLF.js.map +1 -0
- package/dist/{chunk-6PVDV7SO.js → chunk-FJYPE4GC.js} +55 -21
- package/dist/chunk-FJYPE4GC.js.map +1 -0
- package/dist/{client-By4gqB1k.d.cts → client-BkogON2A.d.ts} +11 -1
- package/dist/{client-Cf38TgwN.d.ts → client-C07ppTU_.d.cts} +11 -1
- package/dist/client.cjs +70 -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 +70 -68
- package/dist/index.cjs +127 -25
- 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 +3 -3
- package/dist/react/client.cjs +70 -2
- 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 +127 -25
- 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 +4 -4
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +3 -1
- package/dist/server.d.ts +3 -1
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6PVDV7SO.js.map +0 -1
- package/dist/chunk-IBDP6PXQ.js.map +0 -1
- package/dist/chunk-XKTUXFGX.js.map +0 -1
- /package/dist/{chunk-5NBHHNI3.js.map → chunk-5TYS2Q6S.js.map} +0 -0
package/dist/index.cjs
CHANGED
|
@@ -15197,7 +15197,7 @@ __export(src_exports, {
|
|
|
15197
15197
|
});
|
|
15198
15198
|
module.exports = __toCommonJS(src_exports);
|
|
15199
15199
|
|
|
15200
|
-
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
|
|
15200
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
|
|
15201
15201
|
init_v4();
|
|
15202
15202
|
var RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task";
|
|
15203
15203
|
var JSONRPC_VERSION = "2.0";
|
|
@@ -20594,7 +20594,7 @@ var pipelineType = ZodPipeline.create;
|
|
|
20594
20594
|
// ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/mini/parse.js
|
|
20595
20595
|
init_core2();
|
|
20596
20596
|
|
|
20597
|
-
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
|
|
20597
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js
|
|
20598
20598
|
function isZ4Schema(s2) {
|
|
20599
20599
|
const schema = s2;
|
|
20600
20600
|
return !!schema._zod;
|
|
@@ -20657,7 +20657,7 @@ function getLiteralValue(schema) {
|
|
|
20657
20657
|
return void 0;
|
|
20658
20658
|
}
|
|
20659
20659
|
|
|
20660
|
-
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
|
|
20660
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js
|
|
20661
20661
|
function isTerminal(status) {
|
|
20662
20662
|
return status === "completed" || status === "failed" || status === "cancelled";
|
|
20663
20663
|
}
|
|
@@ -20665,7 +20665,7 @@ function isTerminal(status) {
|
|
|
20665
20665
|
// ../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@4.4.3/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
|
|
20666
20666
|
var ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");
|
|
20667
20667
|
|
|
20668
|
-
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
|
|
20668
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
|
|
20669
20669
|
function getMethodLiteral(schema) {
|
|
20670
20670
|
const shape = getObjectShape(schema);
|
|
20671
20671
|
const methodSchema = shape?.method;
|
|
@@ -20686,7 +20686,7 @@ function parseWithCompat(schema, data) {
|
|
|
20686
20686
|
return result.data;
|
|
20687
20687
|
}
|
|
20688
20688
|
|
|
20689
|
-
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
|
|
20689
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_supports-color@7.2.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js
|
|
20690
20690
|
var DEFAULT_REQUEST_TIMEOUT_MSEC = 6e4;
|
|
20691
20691
|
var Protocol = class {
|
|
20692
20692
|
constructor(_options) {
|
|
@@ -22455,7 +22455,12 @@ var DEFAULT_APPEARANCE = {
|
|
|
22455
22455
|
sessionIdle: "Assistant session idle",
|
|
22456
22456
|
sessionLoading: "Assistant session loading",
|
|
22457
22457
|
sessionReady: "Assistant session ready",
|
|
22458
|
-
sessionError: "Assistant session unavailable"
|
|
22458
|
+
sessionError: "Assistant session unavailable",
|
|
22459
|
+
signInHeading: "Sign in to continue",
|
|
22460
|
+
signInBody: "",
|
|
22461
|
+
signInAction: "Sign in",
|
|
22462
|
+
// Empty means no sign-up button: authoring the label is the opt-in (ADR 0201, 2026-08-22).
|
|
22463
|
+
signUpAction: ""
|
|
22459
22464
|
},
|
|
22460
22465
|
presentation: {
|
|
22461
22466
|
panel: {
|
|
@@ -27095,6 +27100,9 @@ var AssistantChatStateStore = class {
|
|
|
27095
27100
|
})
|
|
27096
27101
|
);
|
|
27097
27102
|
return;
|
|
27103
|
+
case "auth_requested":
|
|
27104
|
+
this.#writeStandaloneData(() => this.#writeData("sign-in", event.data.id, event.data));
|
|
27105
|
+
return;
|
|
27098
27106
|
case "tool_completed":
|
|
27099
27107
|
this.#writeData("tool-result", event.data.id, event.data);
|
|
27100
27108
|
return;
|
|
@@ -27359,7 +27367,8 @@ function parseSession(value) {
|
|
|
27359
27367
|
const interactions = value.endpoints.interactions;
|
|
27360
27368
|
const apps = value.endpoints.apps;
|
|
27361
27369
|
const sandbox = value.endpoints.sandbox;
|
|
27362
|
-
|
|
27370
|
+
const transcript = value.endpoints.transcript;
|
|
27371
|
+
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") {
|
|
27363
27372
|
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
27364
27373
|
}
|
|
27365
27374
|
return {
|
|
@@ -27370,7 +27379,8 @@ function parseSession(value) {
|
|
|
27370
27379
|
toolConfirmations: value.endpoints.toolConfirmations,
|
|
27371
27380
|
...typeof interactions === "string" ? { interactions } : {},
|
|
27372
27381
|
...typeof apps === "string" ? { apps } : {},
|
|
27373
|
-
...typeof sandbox === "string" ? { sandbox } : {}
|
|
27382
|
+
...typeof sandbox === "string" ? { sandbox } : {},
|
|
27383
|
+
...typeof transcript === "string" ? { transcript } : {}
|
|
27374
27384
|
},
|
|
27375
27385
|
...isRecord2(value.configuration) ? { configuration: value.configuration } : {},
|
|
27376
27386
|
...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
|
|
@@ -27525,6 +27535,43 @@ function sessionSourceKey(options) {
|
|
|
27525
27535
|
return `${options.embedId ?? ""}|${options.serviceUrl ?? ""}|${options.sessionEndpoint ?? ""}`;
|
|
27526
27536
|
}
|
|
27527
27537
|
|
|
27538
|
+
// src/transcript-replay.ts
|
|
27539
|
+
function parseTranscriptEntries(value) {
|
|
27540
|
+
if (typeof value !== "object" || value === null) return [];
|
|
27541
|
+
const entries2 = value.entries;
|
|
27542
|
+
if (!Array.isArray(entries2)) return [];
|
|
27543
|
+
const parsed = [];
|
|
27544
|
+
for (const entry of entries2) {
|
|
27545
|
+
const { role, text: text3 } = entry ?? {};
|
|
27546
|
+
if (role !== "user" && role !== "assistant" || typeof text3 !== "string") return [];
|
|
27547
|
+
parsed.push({ role, text: text3 });
|
|
27548
|
+
}
|
|
27549
|
+
return parsed;
|
|
27550
|
+
}
|
|
27551
|
+
function transcriptReplayEvents(entries2) {
|
|
27552
|
+
const events = [];
|
|
27553
|
+
let open = false;
|
|
27554
|
+
let awaitingAssistant = false;
|
|
27555
|
+
for (const entry of entries2) {
|
|
27556
|
+
if (entry.role === "user") {
|
|
27557
|
+
if (open) events.push({ event: "message_completed", data: {} });
|
|
27558
|
+
events.push({ event: "message_started", data: { message: entry.text } });
|
|
27559
|
+
open = true;
|
|
27560
|
+
awaitingAssistant = true;
|
|
27561
|
+
continue;
|
|
27562
|
+
}
|
|
27563
|
+
if (!open || !awaitingAssistant) {
|
|
27564
|
+
if (open) events.push({ event: "message_completed", data: {} });
|
|
27565
|
+
events.push({ event: "resume_started", data: { tool: "" } });
|
|
27566
|
+
open = true;
|
|
27567
|
+
}
|
|
27568
|
+
events.push({ event: "content", data: { delta: entry.text } });
|
|
27569
|
+
awaitingAssistant = false;
|
|
27570
|
+
}
|
|
27571
|
+
if (open) events.push({ event: "message_completed", data: {} });
|
|
27572
|
+
return events;
|
|
27573
|
+
}
|
|
27574
|
+
|
|
27528
27575
|
// src/transport.ts
|
|
27529
27576
|
var AssistantTransportError = class extends Error {
|
|
27530
27577
|
code = "invalid_response";
|
|
@@ -27695,6 +27742,12 @@ var DefaultAssistantClient = class {
|
|
|
27695
27742
|
await this.#singleFlight(async (signal) => {
|
|
27696
27743
|
if (this.#session) return;
|
|
27697
27744
|
const session = await this.#createSession(signal);
|
|
27745
|
+
if (this.#source.kind !== "public" && session.endpoints.transcript) {
|
|
27746
|
+
try {
|
|
27747
|
+
await this.#replayTranscript(session, signal);
|
|
27748
|
+
} catch {
|
|
27749
|
+
}
|
|
27750
|
+
}
|
|
27698
27751
|
if (session.resume) {
|
|
27699
27752
|
try {
|
|
27700
27753
|
await this.#runChatOperation(signal, () => this.#resumeTurn(session, signal));
|
|
@@ -27703,6 +27756,26 @@ var DefaultAssistantClient = class {
|
|
|
27703
27756
|
}
|
|
27704
27757
|
});
|
|
27705
27758
|
}
|
|
27759
|
+
/** Fetch and re-emit the bounded visible transcript through the standard event path. */
|
|
27760
|
+
async #replayTranscript(session, signal) {
|
|
27761
|
+
const endpoint = session.endpoints.transcript;
|
|
27762
|
+
if (!endpoint) return;
|
|
27763
|
+
const response = await this.#request(
|
|
27764
|
+
endpoint,
|
|
27765
|
+
{
|
|
27766
|
+
method: "POST",
|
|
27767
|
+
headers: authorizedHeaders(session.token, "application/json"),
|
|
27768
|
+
body: "{}",
|
|
27769
|
+
signal
|
|
27770
|
+
},
|
|
27771
|
+
"turn_failed"
|
|
27772
|
+
);
|
|
27773
|
+
if (!response.ok) return;
|
|
27774
|
+
for (const event of transcriptReplayEvents(parseTranscriptEntries(await response.json()))) {
|
|
27775
|
+
this.#emit(event);
|
|
27776
|
+
if (event.event === "message_completed") await this.#chat.flush();
|
|
27777
|
+
}
|
|
27778
|
+
}
|
|
27706
27779
|
/** POST the one-shot resume trigger; a 409 means nothing was pending, which renders as silence. */
|
|
27707
27780
|
async #resumeTurn(session, signal) {
|
|
27708
27781
|
const response = await this.#request(
|
|
@@ -31269,22 +31342,46 @@ function renderMarkdown(text3) {
|
|
|
31269
31342
|
// src/sign-in-card.ts
|
|
31270
31343
|
function createSignInCard(options) {
|
|
31271
31344
|
const card = document.createElement("div");
|
|
31272
|
-
card.className = "
|
|
31345
|
+
card.className = "tool-proposal sign-in";
|
|
31273
31346
|
card.dataset.tool = options.tool;
|
|
31274
31347
|
card.setAttribute("role", "status");
|
|
31275
|
-
const
|
|
31276
|
-
|
|
31348
|
+
const badge = document.createElement("span");
|
|
31349
|
+
badge.className = "sign-in-badge";
|
|
31350
|
+
badge.setAttribute("aria-hidden", "true");
|
|
31351
|
+
card.append(badge);
|
|
31352
|
+
const heading = document.createElement("h3");
|
|
31277
31353
|
heading.textContent = options.labels.heading;
|
|
31278
31354
|
card.append(heading);
|
|
31279
|
-
|
|
31280
|
-
|
|
31281
|
-
|
|
31282
|
-
|
|
31283
|
-
|
|
31284
|
-
|
|
31285
|
-
|
|
31286
|
-
|
|
31287
|
-
|
|
31355
|
+
if (options.labels.body) {
|
|
31356
|
+
const body = document.createElement("p");
|
|
31357
|
+
body.className = "proposal-description";
|
|
31358
|
+
body.textContent = options.labels.body;
|
|
31359
|
+
card.append(body);
|
|
31360
|
+
}
|
|
31361
|
+
const actions = document.createElement("div");
|
|
31362
|
+
actions.className = "proposal-actions";
|
|
31363
|
+
const buttons = [];
|
|
31364
|
+
const act = (intent) => {
|
|
31365
|
+
for (const button2 of buttons) button2.disabled = true;
|
|
31366
|
+
options.onAction(intent);
|
|
31367
|
+
};
|
|
31368
|
+
const signIn = document.createElement("button");
|
|
31369
|
+
signIn.type = "button";
|
|
31370
|
+
signIn.className = "sign-in-action";
|
|
31371
|
+
signIn.textContent = options.labels.action;
|
|
31372
|
+
signIn.addEventListener("click", () => act("sign-in"));
|
|
31373
|
+
buttons.push(signIn);
|
|
31374
|
+
actions.append(signIn);
|
|
31375
|
+
if (options.labels.signUpAction) {
|
|
31376
|
+
const signUp = document.createElement("button");
|
|
31377
|
+
signUp.type = "button";
|
|
31378
|
+
signUp.className = "sign-up-action";
|
|
31379
|
+
signUp.textContent = options.labels.signUpAction;
|
|
31380
|
+
signUp.addEventListener("click", () => act("sign-up"));
|
|
31381
|
+
buttons.push(signUp);
|
|
31382
|
+
actions.append(signUp);
|
|
31383
|
+
}
|
|
31384
|
+
card.append(actions);
|
|
31288
31385
|
return card;
|
|
31289
31386
|
}
|
|
31290
31387
|
|
|
@@ -31490,17 +31587,20 @@ var AssistantElementEventController = class {
|
|
|
31490
31587
|
const messages = this.#host.messages();
|
|
31491
31588
|
if (!messages) return;
|
|
31492
31589
|
this.#proposalCards.get(id)?.remove();
|
|
31590
|
+
const labels = this.#host.labels();
|
|
31493
31591
|
const card = createSignInCard({
|
|
31494
31592
|
tool,
|
|
31495
31593
|
signInTicket,
|
|
31496
31594
|
expiresAt,
|
|
31497
31595
|
labels: {
|
|
31498
|
-
heading:
|
|
31499
|
-
|
|
31596
|
+
heading: labels.signInHeading,
|
|
31597
|
+
body: labels.signInBody,
|
|
31598
|
+
action: labels.signInAction,
|
|
31599
|
+
signUpAction: labels.signUpAction
|
|
31500
31600
|
},
|
|
31501
|
-
|
|
31601
|
+
onAction: (intent) => this.#host.element.dispatchEvent(
|
|
31502
31602
|
new CustomEvent("assistant-sign-in-requested", {
|
|
31503
|
-
detail: { id, tool, signInTicket, expiresAt },
|
|
31603
|
+
detail: { id, tool, signInTicket, expiresAt, intent },
|
|
31504
31604
|
bubbles: true,
|
|
31505
31605
|
composed: true
|
|
31506
31606
|
})
|
|
@@ -31896,8 +31996,10 @@ var ASSISTANT_ELEMENT_STYLES = `<style>
|
|
|
31896
31996
|
.proposal-details .proposal-arguments { margin-top: 4px; }
|
|
31897
31997
|
.proposal-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: end; }
|
|
31898
31998
|
.tool-proposal button { min-height: 44px; padding: 9px 16px; border: 1px solid var(--ns-assistant-secondary-button-border, transparent); border-radius: var(--ns-assistant-button-radius, var(--ns-assistant-default-button-radius)); color: var(--ns-assistant-secondary-button-text, var(--ns-assistant-text, var(--ns-assistant-default-text))); background: var(--ns-assistant-secondary-button, var(--ns-assistant-elevated, var(--ns-assistant-default-elevated))); cursor: pointer; font-weight: 600; }
|
|
31899
|
-
.tool-proposal .proposal-accept { color: var(--ns-assistant-primary-button-text, var(--ns-assistant-accent-text, var(--ns-assistant-default-accent-text))); background: var(--ns-assistant-primary-button, var(--ns-assistant-accent, var(--ns-assistant-default-accent))); border-color: var(--ns-assistant-primary-button-border, transparent); }
|
|
31999
|
+
.tool-proposal .proposal-accept, .tool-proposal .sign-in-action { color: var(--ns-assistant-primary-button-text, var(--ns-assistant-accent-text, var(--ns-assistant-default-accent-text))); background: var(--ns-assistant-primary-button, var(--ns-assistant-accent, var(--ns-assistant-default-accent))); border-color: var(--ns-assistant-primary-button-border, transparent); }
|
|
31900
32000
|
.tool-proposal button:disabled { opacity: .55; cursor: not-allowed; }
|
|
32001
|
+
.sign-in .sign-in-badge { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 999px; color: var(--ns-assistant-accent, var(--ns-assistant-default-accent)); background: color-mix(in srgb, var(--ns-assistant-accent, var(--ns-assistant-default-accent)) 12%, transparent); }
|
|
32002
|
+
.sign-in .sign-in-badge::before { content: ''; width: 19px; height: 19px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Zm0 2.2c-4.3 0-7.8 2.6-7.8 5.8v1h15.6v-1c0-3.2-3.5-5.8-7.8-5.8Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Zm0 2.2c-4.3 0-7.8 2.6-7.8 5.8v1h15.6v-1c0-3.2-3.5-5.8-7.8-5.8Z'/%3E%3C/svg%3E") center / contain no-repeat; }
|
|
31901
32003
|
.tool-proposal button { min-height: 45px; }
|
|
31902
32004
|
.tool-result { display: grid; gap: 10px; margin: 8px 0 16px; padding: 16px; border: 1px solid var(--ns-assistant-divider, var(--ns-assistant-default-divider)); border-radius: var(--ns-assistant-card-radius, 14px); background: var(--ns-assistant-assistant-message, var(--ns-assistant-elevated, var(--ns-assistant-default-elevated))); }
|
|
31903
32005
|
.tool-result > strong { color: var(--ns-assistant-success, var(--ns-assistant-default-success)); }
|