@noodleseed/one 0.129.2 → 0.131.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/dist/bin.js +0 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/intents-ops.d.ts +3 -0
- package/dist/commands/intents-ops.d.ts.map +1 -0
- package/dist/commands/intents-ops.js +147 -0
- package/dist/commands/intents-ops.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +21 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +10 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +7 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +5 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.d.ts +5 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/embed-store.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.js +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts +8 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js +24 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.d.ts +22 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.d.ts.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.js +28 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/session-resume.js.map +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.d.ts.map +1 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js +66 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-hosted-observability.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.js +9 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts +2 -1
- package/node_modules/@noodle-borg/knowledge/dist/fusion.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/fusion.js +3 -2
- package/node_modules/@noodle-borg/knowledge/dist/fusion.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js +7 -2
- package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.js.map +1 -1
- package/node_modules/@noodle-borg/module/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/module/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module/dist/index.js +1 -0
- package/node_modules/@noodle-borg/module/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/module/dist/intent.d.ts +54 -0
- package/node_modules/@noodle-borg/module/dist/intent.d.ts.map +1 -0
- package/node_modules/@noodle-borg/module/dist/intent.js +11 -0
- package/node_modules/@noodle-borg/module/dist/intent.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/index.d.ts +6 -0
- package/node_modules/@noodle-borg/observability/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/index.js +6 -0
- package/node_modules/@noodle-borg/observability/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/intent-capture.d.ts +65 -0
- package/node_modules/@noodle-borg/observability/dist/intent-capture.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/intent-capture.js +327 -0
- package/node_modules/@noodle-borg/observability/dist/intent-capture.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-event-buffer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-event-buffer.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-events-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-events.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/request-events.js.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/runtime.d.ts +11 -0
- package/node_modules/@noodle-borg/observability/dist/runtime.d.ts.map +1 -0
- package/node_modules/@noodle-borg/observability/dist/runtime.js +29 -0
- package/node_modules/@noodle-borg/observability/dist/runtime.js.map +1 -0
- package/node_modules/@noodle-borg/observability/package.json +32 -0
- package/node_modules/@noodle-borg/protocol/dist/handlers/tools.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js +22 -3
- package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.js +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/intent-capture.d.ts +47 -0
- package/node_modules/@noodle-borg/protocol/dist/intent-capture.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/intent-capture.js +101 -0
- package/node_modules/@noodle-borg/protocol/dist/intent-capture.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +5 -2
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +9 -7
- package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +3 -0
- package/node_modules/@noodle-borg/protocol/dist/observation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/observation.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/server.js +23 -4
- package/node_modules/@noodle-borg/protocol/dist/v2/server.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/package.json +1 -0
- package/node_modules/@noodle-borg/service/dist/archive-preflight.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/archive-preflight.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/archive-preflight.js +19 -0
- package/node_modules/@noodle-borg/service/dist/archive-preflight.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -3
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +1 -3
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/main.js +2 -0
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/observability-runtime.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/observability-runtime.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/observability-runtime.js +61 -0
- package/node_modules/@noodle-borg/service/dist/observability-runtime.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts +10 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +3 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +70 -30
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.js +22 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js +158 -0
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +6 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +16 -16
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +25 -32
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/package.json +2 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +6 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +4 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts +15 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +51 -3
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts +3 -1
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +21 -5
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.js.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +40 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +26 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -1
- package/node_modules/@noodleseed/assistant/README.md +23 -1
- package/node_modules/@noodleseed/assistant/dist/{chunk-DLUINP4W.js → chunk-LEKEIHJV.js} +61 -33
- package/node_modules/@noodleseed/assistant/dist/{chunk-DLUINP4W.js.map → chunk-LEKEIHJV.js.map} +1 -1
- package/node_modules/@noodleseed/assistant/dist/{chunk-52XT7BLR.js → chunk-ZPZHPXIQ.js} +129 -82
- package/node_modules/@noodleseed/assistant/dist/chunk-ZPZHPXIQ.js.map +1 -0
- package/node_modules/@noodleseed/assistant/dist/{client-7o7n2nqw.d.cts → client-BZ7xPwfW.d.cts} +14 -5
- package/node_modules/@noodleseed/assistant/dist/{client-CysBQBdd.d.ts → client-BkJlpN5N.d.ts} +14 -5
- package/node_modules/@noodleseed/assistant/dist/client.cjs +127 -80
- package/node_modules/@noodleseed/assistant/dist/client.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.d.cts +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.d.ts +1 -1
- package/node_modules/@noodleseed/assistant/dist/client.js +1 -1
- package/node_modules/@noodleseed/assistant/dist/embed.global.js +65 -65
- package/node_modules/@noodleseed/assistant/dist/index.cjs +186 -111
- package/node_modules/@noodleseed/assistant/dist/index.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/index.d.cts +2 -2
- package/node_modules/@noodleseed/assistant/dist/index.d.ts +2 -2
- package/node_modules/@noodleseed/assistant/dist/index.js +2 -2
- package/node_modules/@noodleseed/assistant/dist/react/client.cjs +127 -80
- package/node_modules/@noodleseed/assistant/dist/react/client.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.d.cts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.d.ts +1 -1
- package/node_modules/@noodleseed/assistant/dist/react/client.js +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.cjs +187 -111
- package/node_modules/@noodleseed/assistant/dist/react.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/react.d.cts +8 -1
- package/node_modules/@noodleseed/assistant/dist/react.d.ts +8 -1
- package/node_modules/@noodleseed/assistant/dist/react.js +3 -2
- package/node_modules/@noodleseed/assistant/dist/react.js.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/server.cjs +1 -0
- package/node_modules/@noodleseed/assistant/dist/server.cjs.map +1 -1
- package/node_modules/@noodleseed/assistant/dist/server.d.cts +15 -0
- package/node_modules/@noodleseed/assistant/dist/server.d.ts +15 -0
- package/node_modules/@noodleseed/assistant/dist/server.js +1 -0
- package/node_modules/@noodleseed/assistant/dist/server.js.map +1 -1
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +3 -2
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.d.ts.map +0 -1
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.js.map +0 -1
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.d.ts.map +0 -1
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js.map +0 -1
- package/node_modules/@noodle-borg/service/dist/store/request-events.d.ts.map +0 -1
- package/node_modules/@noodle-borg/service/dist/store/request-events.js.map +0 -1
- package/node_modules/@noodleseed/assistant/dist/chunk-52XT7BLR.js.map +0 -1
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-event-buffer.d.ts +0 -0
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-event-buffer.js +0 -0
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events-postgres.d.ts +0 -0
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events-postgres.js +0 -0
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events.d.ts +0 -0
- /package/node_modules/@noodle-borg/{service/dist/store → observability/dist}/request-events.js +0 -0
|
@@ -27030,6 +27030,12 @@ var AssistantChatStateStore = class {
|
|
|
27030
27030
|
case "interaction_started":
|
|
27031
27031
|
this.#beginInteraction(event.data.id);
|
|
27032
27032
|
return;
|
|
27033
|
+
case "resume_started":
|
|
27034
|
+
this.#status = "submitted";
|
|
27035
|
+
this.#error = void 0;
|
|
27036
|
+
this.#startOperation();
|
|
27037
|
+
this.#notify();
|
|
27038
|
+
return;
|
|
27033
27039
|
case "content":
|
|
27034
27040
|
this.#writeText(event.data.delta);
|
|
27035
27041
|
return;
|
|
@@ -27285,6 +27291,78 @@ function isRecord(value) {
|
|
|
27285
27291
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27286
27292
|
}
|
|
27287
27293
|
|
|
27294
|
+
// src/client-errors.ts
|
|
27295
|
+
async function refusalCode(response) {
|
|
27296
|
+
try {
|
|
27297
|
+
const body = await response.clone().json();
|
|
27298
|
+
const code = body.code;
|
|
27299
|
+
return typeof code === "string" ? code : void 0;
|
|
27300
|
+
} catch {
|
|
27301
|
+
return void 0;
|
|
27302
|
+
}
|
|
27303
|
+
}
|
|
27304
|
+
var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
|
|
27305
|
+
"daily_turn_budget_exhausted",
|
|
27306
|
+
"daily_session_budget_exhausted"
|
|
27307
|
+
]);
|
|
27308
|
+
var AssistantClientError = class extends Error {
|
|
27309
|
+
detail;
|
|
27310
|
+
constructor(detail, message, options) {
|
|
27311
|
+
super(message, options);
|
|
27312
|
+
this.name = "AssistantClientError";
|
|
27313
|
+
this.detail = detail;
|
|
27314
|
+
}
|
|
27315
|
+
};
|
|
27316
|
+
function parseSession(value) {
|
|
27317
|
+
if (!isRecord2(value) || !isRecord2(value.endpoints)) {
|
|
27318
|
+
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
27319
|
+
}
|
|
27320
|
+
const interactions = value.endpoints.interactions;
|
|
27321
|
+
const apps = value.endpoints.apps;
|
|
27322
|
+
const sandbox = value.endpoints.sandbox;
|
|
27323
|
+
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") {
|
|
27324
|
+
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
27325
|
+
}
|
|
27326
|
+
return {
|
|
27327
|
+
token: value.token,
|
|
27328
|
+
expiresAt: value.expiresAt,
|
|
27329
|
+
endpoints: {
|
|
27330
|
+
turns: value.endpoints.turns,
|
|
27331
|
+
toolConfirmations: value.endpoints.toolConfirmations,
|
|
27332
|
+
...typeof interactions === "string" ? { interactions } : {},
|
|
27333
|
+
...typeof apps === "string" ? { apps } : {},
|
|
27334
|
+
...typeof sandbox === "string" ? { sandbox } : {}
|
|
27335
|
+
},
|
|
27336
|
+
...isRecord2(value.configuration) ? { configuration: value.configuration } : {},
|
|
27337
|
+
...isRecord2(value.resume) && typeof value.resume.tool === "string" ? { resume: { tool: value.resume.tool } } : {}
|
|
27338
|
+
};
|
|
27339
|
+
}
|
|
27340
|
+
function isRecord2(value) {
|
|
27341
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27342
|
+
}
|
|
27343
|
+
async function readStableErrorCode(response) {
|
|
27344
|
+
let value;
|
|
27345
|
+
try {
|
|
27346
|
+
value = await response.json();
|
|
27347
|
+
} catch {
|
|
27348
|
+
return void 0;
|
|
27349
|
+
}
|
|
27350
|
+
if (!isRecord2(value) || typeof value.code !== "string") return void 0;
|
|
27351
|
+
return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
|
|
27352
|
+
}
|
|
27353
|
+
function clientError(code, message, retryable, status, options, serviceCode) {
|
|
27354
|
+
return new AssistantClientError(
|
|
27355
|
+
{
|
|
27356
|
+
code,
|
|
27357
|
+
...status === void 0 ? {} : { status },
|
|
27358
|
+
retryable,
|
|
27359
|
+
...serviceCode === void 0 ? {} : { serviceCode }
|
|
27360
|
+
},
|
|
27361
|
+
message,
|
|
27362
|
+
options
|
|
27363
|
+
);
|
|
27364
|
+
}
|
|
27365
|
+
|
|
27288
27366
|
// src/events.ts
|
|
27289
27367
|
function toAssistantClientEvent(event) {
|
|
27290
27368
|
const value = event.data;
|
|
@@ -27300,12 +27378,12 @@ function toAssistantClientEvent(event) {
|
|
|
27300
27378
|
}
|
|
27301
27379
|
break;
|
|
27302
27380
|
case "tool_proposed":
|
|
27303
|
-
if (hasString(value, "id") && hasString(value, "tool") && hasOptionalString(value.title) && hasOptionalString(value.description) && hasOptionalJson(value.arguments) && (value.reviewSchema === void 0 ||
|
|
27381
|
+
if (hasString(value, "id") && hasString(value, "tool") && hasOptionalString(value.title) && hasOptionalString(value.description) && hasOptionalJson(value.arguments) && (value.reviewSchema === void 0 || isRecord3(value.reviewSchema)) && hasOptionalString(value.expiresAt) && (value.requiresConfirmation === void 0 || value.requiresConfirmation === true) && hasOptionalTurnId(value)) {
|
|
27304
27382
|
return event;
|
|
27305
27383
|
}
|
|
27306
27384
|
break;
|
|
27307
27385
|
case "input_requested":
|
|
27308
|
-
if (hasString(value, "id") && hasString(value, "message") &&
|
|
27386
|
+
if (hasString(value, "id") && hasString(value, "message") && isRecord3(value.requestedSchema) && hasString(value, "expiresAt") && hasOptionalTurnId(value)) {
|
|
27309
27387
|
return event;
|
|
27310
27388
|
}
|
|
27311
27389
|
break;
|
|
@@ -27349,7 +27427,7 @@ function toAssistantClientEvent(event) {
|
|
|
27349
27427
|
return { event: "unrecognized", data: { name: event.event, payload: value } };
|
|
27350
27428
|
}
|
|
27351
27429
|
function isViewAvailableDetail(value) {
|
|
27352
|
-
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 ||
|
|
27430
|
+
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(isHttpsUrl)) && hasOptionalTurnId(value);
|
|
27353
27431
|
}
|
|
27354
27432
|
function isHttpsUrl(value) {
|
|
27355
27433
|
if (typeof value !== "string") return false;
|
|
@@ -27382,11 +27460,11 @@ function isJsonValue(value, depth) {
|
|
|
27382
27460
|
if (Array.isArray(value)) {
|
|
27383
27461
|
return value.length <= 256 && value.every((entry) => isJsonValue(entry, depth + 1));
|
|
27384
27462
|
}
|
|
27385
|
-
if (!
|
|
27463
|
+
if (!isRecord3(value)) return false;
|
|
27386
27464
|
const entries2 = Object.entries(value);
|
|
27387
27465
|
return entries2.length <= 256 && entries2.every(([, entry]) => isJsonValue(entry, depth + 1));
|
|
27388
27466
|
}
|
|
27389
|
-
function
|
|
27467
|
+
function isRecord3(value) {
|
|
27390
27468
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27391
27469
|
}
|
|
27392
27470
|
|
|
@@ -27516,15 +27594,15 @@ function parseFrame(frame) {
|
|
|
27516
27594
|
if (event === "done" && !isValidDonePayload(parsed)) {
|
|
27517
27595
|
throw invalidStream("assistant event stream contained an invalid done event");
|
|
27518
27596
|
}
|
|
27519
|
-
return { event, data:
|
|
27597
|
+
return { event, data: isRecord4(parsed) ? parsed : { value: parsed } };
|
|
27520
27598
|
}
|
|
27521
27599
|
function normalizeLineEndings(input) {
|
|
27522
27600
|
return input.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
|
|
27523
27601
|
}
|
|
27524
27602
|
function isValidDonePayload(value) {
|
|
27525
|
-
return
|
|
27603
|
+
return isRecord4(value) && (value.turnId === void 0 || typeof value.turnId === "string" && value.turnId.length > 0);
|
|
27526
27604
|
}
|
|
27527
|
-
function
|
|
27605
|
+
function isRecord4(value) {
|
|
27528
27606
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
27529
27607
|
}
|
|
27530
27608
|
function invalidStream(message, cause) {
|
|
@@ -27535,27 +27613,6 @@ function isAbortError2(error51) {
|
|
|
27535
27613
|
}
|
|
27536
27614
|
|
|
27537
27615
|
// src/client.ts
|
|
27538
|
-
async function refusalCode(response) {
|
|
27539
|
-
try {
|
|
27540
|
-
const body = await response.clone().json();
|
|
27541
|
-
const code = body.code;
|
|
27542
|
-
return typeof code === "string" ? code : void 0;
|
|
27543
|
-
} catch {
|
|
27544
|
-
return void 0;
|
|
27545
|
-
}
|
|
27546
|
-
}
|
|
27547
|
-
var UNRETRYABLE_SERVICE_CODES = /* @__PURE__ */ new Set([
|
|
27548
|
-
"daily_turn_budget_exhausted",
|
|
27549
|
-
"daily_session_budget_exhausted"
|
|
27550
|
-
]);
|
|
27551
|
-
var AssistantClientError = class extends Error {
|
|
27552
|
-
detail;
|
|
27553
|
-
constructor(detail, message, options) {
|
|
27554
|
-
super(message, options);
|
|
27555
|
-
this.name = "AssistantClientError";
|
|
27556
|
-
this.detail = detail;
|
|
27557
|
-
}
|
|
27558
|
-
};
|
|
27559
27616
|
var DefaultAssistantClient = class {
|
|
27560
27617
|
#source;
|
|
27561
27618
|
#fetch;
|
|
@@ -27590,12 +27647,50 @@ var DefaultAssistantClient = class {
|
|
|
27590
27647
|
hasSession() {
|
|
27591
27648
|
return this.#session !== void 0;
|
|
27592
27649
|
}
|
|
27650
|
+
/** Whether a request holds the single-flight slot, so callers can refuse before mutating UI. */
|
|
27651
|
+
isBusy() {
|
|
27652
|
+
return this.#active !== void 0;
|
|
27653
|
+
}
|
|
27593
27654
|
async connect() {
|
|
27594
27655
|
if (this.#session) return;
|
|
27595
27656
|
await this.#singleFlight(async (signal) => {
|
|
27596
|
-
if (
|
|
27657
|
+
if (this.#session) return;
|
|
27658
|
+
const session = await this.#createSession(signal);
|
|
27659
|
+
if (session.resume) {
|
|
27660
|
+
try {
|
|
27661
|
+
await this.#runChatOperation(signal, () => this.#resumeTurn(session, signal));
|
|
27662
|
+
} catch {
|
|
27663
|
+
}
|
|
27664
|
+
}
|
|
27597
27665
|
});
|
|
27598
27666
|
}
|
|
27667
|
+
/** POST the one-shot resume trigger; a 409 means nothing was pending, which renders as silence. */
|
|
27668
|
+
async #resumeTurn(session, signal) {
|
|
27669
|
+
const response = await this.#request(
|
|
27670
|
+
session.endpoints.turns,
|
|
27671
|
+
{
|
|
27672
|
+
method: "POST",
|
|
27673
|
+
headers: authorizedHeaders(session.token, "text/event-stream"),
|
|
27674
|
+
body: JSON.stringify({ resume: true }),
|
|
27675
|
+
signal
|
|
27676
|
+
},
|
|
27677
|
+
"turn_failed"
|
|
27678
|
+
);
|
|
27679
|
+
if (response.status === 409) return;
|
|
27680
|
+
if (!response.ok) {
|
|
27681
|
+
throw clientError(
|
|
27682
|
+
"turn_failed",
|
|
27683
|
+
`Assistant turn failed (${response.status})`,
|
|
27684
|
+
false,
|
|
27685
|
+
response.status,
|
|
27686
|
+
void 0,
|
|
27687
|
+
await refusalCode(response)
|
|
27688
|
+
);
|
|
27689
|
+
}
|
|
27690
|
+
this.#emit({ event: "resume_started", data: { tool: session.resume?.tool ?? "" } });
|
|
27691
|
+
await this.#consume(response);
|
|
27692
|
+
this.#emit({ event: "message_completed", data: {} });
|
|
27693
|
+
}
|
|
27599
27694
|
async sendMessage(text3) {
|
|
27600
27695
|
const message = text3.trim();
|
|
27601
27696
|
if (!message) return;
|
|
@@ -28000,10 +28095,10 @@ function authorizedHeaders(token, accept) {
|
|
|
28000
28095
|
};
|
|
28001
28096
|
}
|
|
28002
28097
|
function parseAppInteraction(value) {
|
|
28003
|
-
if (!
|
|
28098
|
+
if (!isRecord2(value) || !isRecord2(value.interaction)) return void 0;
|
|
28004
28099
|
const event = value.interaction.event;
|
|
28005
28100
|
const data = value.interaction.data;
|
|
28006
|
-
if (event !== "tool_proposed" && event !== "input_requested" || !
|
|
28101
|
+
if (event !== "tool_proposed" && event !== "input_requested" || !isRecord2(data)) {
|
|
28007
28102
|
return void 0;
|
|
28008
28103
|
}
|
|
28009
28104
|
const parsed = toAssistantClientEvent({ event, data });
|
|
@@ -28023,54 +28118,6 @@ function appInteractionStopped(action) {
|
|
|
28023
28118
|
isError: true
|
|
28024
28119
|
};
|
|
28025
28120
|
}
|
|
28026
|
-
function parseSession(value) {
|
|
28027
|
-
if (!isRecord4(value) || !isRecord4(value.endpoints)) {
|
|
28028
|
-
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
28029
|
-
}
|
|
28030
|
-
const interactions = value.endpoints.interactions;
|
|
28031
|
-
const apps = value.endpoints.apps;
|
|
28032
|
-
const sandbox = value.endpoints.sandbox;
|
|
28033
|
-
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") {
|
|
28034
|
-
throw clientError("session_failed", "Assistant session response is invalid", true);
|
|
28035
|
-
}
|
|
28036
|
-
return {
|
|
28037
|
-
token: value.token,
|
|
28038
|
-
expiresAt: value.expiresAt,
|
|
28039
|
-
endpoints: {
|
|
28040
|
-
turns: value.endpoints.turns,
|
|
28041
|
-
toolConfirmations: value.endpoints.toolConfirmations,
|
|
28042
|
-
...typeof interactions === "string" ? { interactions } : {},
|
|
28043
|
-
...typeof apps === "string" ? { apps } : {},
|
|
28044
|
-
...typeof sandbox === "string" ? { sandbox } : {}
|
|
28045
|
-
},
|
|
28046
|
-
...isRecord4(value.configuration) ? { configuration: value.configuration } : {}
|
|
28047
|
-
};
|
|
28048
|
-
}
|
|
28049
|
-
function isRecord4(value) {
|
|
28050
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
28051
|
-
}
|
|
28052
|
-
async function readStableErrorCode(response) {
|
|
28053
|
-
let value;
|
|
28054
|
-
try {
|
|
28055
|
-
value = await response.json();
|
|
28056
|
-
} catch {
|
|
28057
|
-
return void 0;
|
|
28058
|
-
}
|
|
28059
|
-
if (!isRecord4(value) || typeof value.code !== "string") return void 0;
|
|
28060
|
-
return /^[A-Za-z0-9_.-]{1,64}$/.test(value.code) ? value.code : void 0;
|
|
28061
|
-
}
|
|
28062
|
-
function clientError(code, message, retryable, status, options, serviceCode) {
|
|
28063
|
-
return new AssistantClientError(
|
|
28064
|
-
{
|
|
28065
|
-
code,
|
|
28066
|
-
...status === void 0 ? {} : { status },
|
|
28067
|
-
retryable,
|
|
28068
|
-
...serviceCode === void 0 ? {} : { serviceCode }
|
|
28069
|
-
},
|
|
28070
|
-
message,
|
|
28071
|
-
options
|
|
28072
|
-
);
|
|
28073
|
-
}
|
|
28074
28121
|
|
|
28075
28122
|
// src/input-request-card.ts
|
|
28076
28123
|
function createInputRequestCard(options) {
|
|
@@ -31255,6 +31302,11 @@ var AssistantElementEventController = class {
|
|
|
31255
31302
|
this.#completedTool = void 0;
|
|
31256
31303
|
return;
|
|
31257
31304
|
}
|
|
31305
|
+
if (name21 === "resume_started") {
|
|
31306
|
+
this.#startStream("message");
|
|
31307
|
+
this.#host.element.dispatchEvent(new CustomEvent("assistant-message-started"));
|
|
31308
|
+
return;
|
|
31309
|
+
}
|
|
31258
31310
|
if (name21 === "interaction_completed") {
|
|
31259
31311
|
if (this.#streamKind !== "interaction") return;
|
|
31260
31312
|
this.#finishInteraction(String(data.id ?? ""), String(data.action ?? "accept"));
|
|
@@ -31473,6 +31525,36 @@ function queryRequired(root, selector) {
|
|
|
31473
31525
|
if (!element) throw new Error(`assistant renderer is missing ${selector}`);
|
|
31474
31526
|
return element;
|
|
31475
31527
|
}
|
|
31528
|
+
function assistantElementMarkup(appearance, open, styles) {
|
|
31529
|
+
return `${styles}
|
|
31530
|
+
<button class="launcher" type="button" aria-label="${escapeAttribute(appearance.labels.open)}" aria-controls="assistant-panel" aria-expanded="${String(open)}"><slot name="launcher-icon"></slot><span class="visually-hidden" data-session-status aria-live="polite" hidden></span></button>
|
|
31531
|
+
<section class="panel" id="assistant-panel" role="dialog" aria-label="${escapeAttribute(appearance.brand.name)}">
|
|
31532
|
+
<header><slot name="header-leading"></slot><img class="brand-logo" alt=""><strong></strong><slot name="header-actions"></slot><button class="close" type="button" aria-label="${escapeAttribute(appearance.labels.close)}"></button></header>
|
|
31533
|
+
<div class="welcome"><slot name="empty-state"></slot></div>
|
|
31534
|
+
<div class="suggested-prompts"></div>
|
|
31535
|
+
<div class="messages-region">
|
|
31536
|
+
<div class="messages" aria-live="polite"></div>
|
|
31537
|
+
<button class="new-messages" type="button" aria-label="${escapeAttribute(appearance.labels.newMessages)}" hidden></button>
|
|
31538
|
+
</div>
|
|
31539
|
+
<form><slot name="composer-leading"></slot><textarea rows="1"></textarea><button class="send" type="submit"></button><slot name="composer-trailing"></slot></form>
|
|
31540
|
+
<nav class="legal" aria-label="Legal"></nav>
|
|
31541
|
+
<slot name="conversation-footer"></slot>
|
|
31542
|
+
</section>`;
|
|
31543
|
+
}
|
|
31544
|
+
function appendLegalLinks(legal, appearance) {
|
|
31545
|
+
for (const [label, href] of [
|
|
31546
|
+
["Privacy", appearance.privacyUrl],
|
|
31547
|
+
["Terms", appearance.termsUrl]
|
|
31548
|
+
]) {
|
|
31549
|
+
if (!href) continue;
|
|
31550
|
+
const link = document.createElement("a");
|
|
31551
|
+
link.href = href;
|
|
31552
|
+
link.target = "_blank";
|
|
31553
|
+
link.rel = "noopener noreferrer";
|
|
31554
|
+
link.textContent = label;
|
|
31555
|
+
legal.append(link);
|
|
31556
|
+
}
|
|
31557
|
+
}
|
|
31476
31558
|
|
|
31477
31559
|
// src/element-page-context-controller.ts
|
|
31478
31560
|
var AssistantElementPageContextController = class {
|
|
@@ -32260,6 +32342,8 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32260
32342
|
#pendingUserEcho;
|
|
32261
32343
|
#sessionState = "idle";
|
|
32262
32344
|
#startOpenApplied = false;
|
|
32345
|
+
#readyDispatched = false;
|
|
32346
|
+
#turnInFlight = false;
|
|
32263
32347
|
#hostAppearance;
|
|
32264
32348
|
#appearanceWarningKeys = /* @__PURE__ */ new Set();
|
|
32265
32349
|
#appearanceStyleSnapshot = /* @__PURE__ */ new Map();
|
|
@@ -32331,7 +32415,10 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32331
32415
|
document.addEventListener("pointerdown", this.#handleDocumentPointerDown);
|
|
32332
32416
|
if (this.#appearance.behavior.startOpen) this.#applyStartOpenPolicy();
|
|
32333
32417
|
this.#render();
|
|
32334
|
-
|
|
32418
|
+
if (!this.#readyDispatched) {
|
|
32419
|
+
this.#readyDispatched = true;
|
|
32420
|
+
this.dispatchEvent(new CustomEvent("assistant-ready"));
|
|
32421
|
+
}
|
|
32335
32422
|
if (this.hasAttribute("start-open")) {
|
|
32336
32423
|
this.setAttribute("open", "");
|
|
32337
32424
|
this.#startOpenApplied = true;
|
|
@@ -32445,7 +32532,14 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32445
32532
|
async sendMessage(text3) {
|
|
32446
32533
|
const message = text3.trim();
|
|
32447
32534
|
if (!message) return;
|
|
32535
|
+
if (this.#turnInFlight) {
|
|
32536
|
+
throw new AssistantClientError(
|
|
32537
|
+
{ code: "request_in_progress", retryable: true },
|
|
32538
|
+
"an assistant request is already in progress"
|
|
32539
|
+
);
|
|
32540
|
+
}
|
|
32448
32541
|
const generation = this.#conversationGeneration;
|
|
32542
|
+
this.#turnInFlight = true;
|
|
32449
32543
|
this.#pendingUserEcho = message;
|
|
32450
32544
|
this.#appendMessage("user", message);
|
|
32451
32545
|
this.#setBusy(true);
|
|
@@ -32462,6 +32556,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32462
32556
|
this.#dispatchClientError(error51, "turn_failed");
|
|
32463
32557
|
throw error51;
|
|
32464
32558
|
} finally {
|
|
32559
|
+
this.#turnInFlight = false;
|
|
32465
32560
|
if (this.#pendingUserEcho === message) this.#pendingUserEcho = void 0;
|
|
32466
32561
|
if (generation === this.#conversationGeneration) this.#setBusy(false);
|
|
32467
32562
|
}
|
|
@@ -32530,6 +32625,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32530
32625
|
#primeSession() {
|
|
32531
32626
|
if (!this.sessionEndpoint && !this.embedId) return;
|
|
32532
32627
|
if (this.#sessionBootstrap || this.#client?.hasSession()) return;
|
|
32628
|
+
if (this.#client?.isBusy?.() === true) return;
|
|
32533
32629
|
if (this.embedId && !this.#pageContext) void this.#automaticPageContext.refresh();
|
|
32534
32630
|
const client = this.#ensureClient();
|
|
32535
32631
|
const generation = this.#conversationGeneration;
|
|
@@ -32559,6 +32655,8 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32559
32655
|
if (event.event === "content" || event.event === "message_completed" || event.event === "interaction_completed" || event.event === "error") {
|
|
32560
32656
|
this.#removeThinking();
|
|
32561
32657
|
}
|
|
32658
|
+
if (event.event === "resume_started") this.#setBusy(true);
|
|
32659
|
+
if (event.event === "message_completed" || event.event === "error") this.#setBusy(false);
|
|
32562
32660
|
}
|
|
32563
32661
|
#setBusy(busy) {
|
|
32564
32662
|
this.toggleAttribute("busy", busy);
|
|
@@ -32767,7 +32865,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32767
32865
|
queryRequired(this.shadowRoot, "header").hidden = !appearance.behavior.showHeader;
|
|
32768
32866
|
const legal = queryRequired(this.shadowRoot, ".legal");
|
|
32769
32867
|
legal.replaceChildren();
|
|
32770
|
-
|
|
32868
|
+
appendLegalLinks(legal, this.#appearance);
|
|
32771
32869
|
this.#applyTheme();
|
|
32772
32870
|
}
|
|
32773
32871
|
#render() {
|
|
@@ -32783,20 +32881,11 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32783
32881
|
this.dataset.position = appearance.layout.position;
|
|
32784
32882
|
this.dataset.density = appearance.layout.density;
|
|
32785
32883
|
this.toggleAttribute("mobile-fullscreen", appearance.layout.mobileFullscreen);
|
|
32786
|
-
this.shadowRoot.innerHTML =
|
|
32787
|
-
|
|
32788
|
-
|
|
32789
|
-
|
|
32790
|
-
|
|
32791
|
-
<div class="suggested-prompts"></div>
|
|
32792
|
-
<div class="messages-region">
|
|
32793
|
-
<div class="messages" aria-live="polite"></div>
|
|
32794
|
-
<button class="new-messages" type="button" aria-label="${escapeAttribute(appearance.labels.newMessages)}" hidden></button>
|
|
32795
|
-
</div>
|
|
32796
|
-
<form><slot name="composer-leading"></slot><textarea rows="1"></textarea><button class="send" type="submit"></button><slot name="composer-trailing"></slot></form>
|
|
32797
|
-
<nav class="legal" aria-label="Legal"></nav>
|
|
32798
|
-
<slot name="conversation-footer"></slot>
|
|
32799
|
-
</section>`;
|
|
32884
|
+
this.shadowRoot.innerHTML = assistantElementMarkup(
|
|
32885
|
+
appearance,
|
|
32886
|
+
this.hasAttribute("open"),
|
|
32887
|
+
`${ASSISTANT_ELEMENT_STYLES}${presentationStyles}`
|
|
32888
|
+
);
|
|
32800
32889
|
queryRequired(this.shadowRoot, "strong").textContent = appearance.brand.name;
|
|
32801
32890
|
const logo = queryRequired(this.shadowRoot, ".brand-logo");
|
|
32802
32891
|
const logoUrl = appearance.brand.logo[this.#resolvedMode()];
|
|
@@ -32823,7 +32912,7 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32823
32912
|
if (!appearance.behavior.showHeader)
|
|
32824
32913
|
queryRequired(this.shadowRoot, "header").hidden = true;
|
|
32825
32914
|
const legal = queryRequired(this.shadowRoot, ".legal");
|
|
32826
|
-
|
|
32915
|
+
appendLegalLinks(legal, this.#appearance);
|
|
32827
32916
|
this.#messages = this.shadowRoot.querySelector(".messages") ?? void 0;
|
|
32828
32917
|
this.#messages?.append(...conversation);
|
|
32829
32918
|
this.#thinking = this.#messages?.querySelector(".thinking") ?? void 0;
|
|
@@ -32862,20 +32951,6 @@ var NoodleAssistantElement = class extends HTMLElementBase {
|
|
|
32862
32951
|
});
|
|
32863
32952
|
this.#applyTheme();
|
|
32864
32953
|
}
|
|
32865
|
-
#appendLegalLinks(legal) {
|
|
32866
|
-
for (const [label, href] of [
|
|
32867
|
-
["Privacy", this.#appearance.privacyUrl],
|
|
32868
|
-
["Terms", this.#appearance.termsUrl]
|
|
32869
|
-
]) {
|
|
32870
|
-
if (!href) continue;
|
|
32871
|
-
const link = document.createElement("a");
|
|
32872
|
-
link.href = href;
|
|
32873
|
-
link.target = "_blank";
|
|
32874
|
-
link.rel = "noopener noreferrer";
|
|
32875
|
-
link.textContent = label;
|
|
32876
|
-
legal.append(link);
|
|
32877
|
-
}
|
|
32878
|
-
}
|
|
32879
32954
|
};
|
|
32880
32955
|
function registerNoodleAssistant() {
|
|
32881
32956
|
if (globalThis.customElements && !customElements.get(ASSISTANT_TAG_NAME)) {
|