@happyvertical/smrt-chat 0.57.32 → 0.57.34
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/AGENTS.md +1 -1
- package/agents/tool-loop.md +224 -0
- package/dist/assistant-turn-events.d.ts +10 -1
- package/dist/assistant-turn-events.d.ts.map +1 -1
- package/dist/assistant-turn.d.ts +42 -5
- package/dist/assistant-turn.d.ts.map +1 -1
- package/dist/chat-stream.d.ts +15 -0
- package/dist/chat-stream.d.ts.map +1 -1
- package/dist/chunks/{ChatService-DjGf2AoJ.js → ChatService-D0XuiCTk.js} +3 -2
- package/dist/chunks/ChatService-D0XuiCTk.js.map +1 -0
- package/dist/chunks/assistant-turn-events-BbZUf-Ju.js.map +1 -1
- package/dist/chunks/{chat-stream-DJuup0go.js → chat-stream-CsD8FwnS.js} +552 -77
- package/dist/chunks/chat-stream-CsD8FwnS.js.map +1 -0
- package/dist/data-surface-tools.d.ts +1 -1
- package/dist/data-surface-tools.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/internal/agent-runtime.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/persona-conversation.d.ts +41 -1
- package/dist/persona-conversation.d.ts.map +1 -1
- package/dist/services/ChatService.d.ts +6 -0
- package/dist/services/ChatService.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +11 -6
- package/dist/svelte/components/assistant/assistant-http-client.d.ts +7 -0
- package/dist/svelte/components/assistant/assistant-http-client.d.ts.map +1 -1
- package/dist/svelte/components/assistant/assistant-http-client.js +8 -0
- package/dist/svelte/components/assistant/assistant-transport.d.ts.map +1 -1
- package/dist/svelte/components/assistant/assistant-transport.js +3 -0
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts.map +1 -1
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.js +10 -4
- package/dist/sveltekit.d.ts +26 -0
- package/dist/sveltekit.d.ts.map +1 -1
- package/dist/sveltekit.js +27 -10
- package/dist/sveltekit.js.map +1 -1
- package/dist/tool-loop.d.ts +223 -2
- package/dist/tool-loop.d.ts.map +1 -1
- package/dist/voice.d.ts.map +1 -1
- package/package.json +17 -18
- package/dist/chunks/ChatService-DjGf2AoJ.js.map +0 -1
- package/dist/chunks/chat-stream-DJuup0go.js.map +0 -1
package/dist/sveltekit.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as clientRequestMessageId, n as ChatService, t as ChatClientRequestConflictError } from "./chunks/ChatService-
|
|
2
|
-
import { D as
|
|
1
|
+
import { i as clientRequestMessageId, n as ChatService, t as ChatClientRequestConflictError } from "./chunks/ChatService-D0XuiCTk.js";
|
|
2
|
+
import { D as createSessionContinuationStore, F as MAX_CLIENT_TOOL_RESULT_CHARS, M as FALLBACK_HISTORY_PLACEHOLDER, O as runAssistantTurn, T as createAssistantTurnResponse, X as isFallbackReply, nt as sanitizeClientToolDeclarations, q as buildManifestToolCatalog, y as ASSISTANT_TURN_GENERIC_ERROR } from "./chunks/chat-stream-CsD8FwnS.js";
|
|
3
3
|
import { getCurrentSessionPermissionContext, getRequestScopedDatabase } from "@happyvertical/smrt-users";
|
|
4
4
|
import { getConfig, loadConfig, resolveConfiguredAIProvider, toAIClientOptions } from "@happyvertical/smrt-config";
|
|
5
5
|
//#region src/sveltekit.ts
|
|
@@ -15,6 +15,7 @@ var AssistantRouteError = class extends Error {
|
|
|
15
15
|
};
|
|
16
16
|
var DEFAULT_ASSISTANT_AGENT_ID = "smrt-assistant";
|
|
17
17
|
var ASSISTANT_DOCK_SESSION_KEY = "assistant-dock";
|
|
18
|
+
var MAX_ASSISTANT_REQUEST_CONTEXT_BYTES = 8 * 1024;
|
|
18
19
|
var DEFAULT_ASSISTANT_MAX_BODY_BYTES = 1024 * 1024;
|
|
19
20
|
var DEFAULT_ASSISTANT_MAX_ATTACHMENT_BYTES = 10 * 1024 * 1024;
|
|
20
21
|
var MAX_TITLE_LENGTH = 200;
|
|
@@ -246,6 +247,8 @@ function mountAssistantRoutes(options = {}) {
|
|
|
246
247
|
}
|
|
247
248
|
}
|
|
248
249
|
const agentId = options.agentId ?? "smrt-assistant";
|
|
250
|
+
const dockSessionKey = options.sessionKey === void 0 ? ASSISTANT_DOCK_SESSION_KEY : options.sessionKey;
|
|
251
|
+
if (dockSessionKey !== null && !dockSessionKey.trim()) throw new Error("mountAssistantRoutes: sessionKey must be a non-empty string or null.");
|
|
249
252
|
const paramName = options.paramName ?? "path";
|
|
250
253
|
const maxBody = options.maxBodyBytes ?? 1048576;
|
|
251
254
|
const maxContent = options.maxContentLength ?? 12e3;
|
|
@@ -299,7 +302,7 @@ function mountAssistantRoutes(options = {}) {
|
|
|
299
302
|
tenantId: principal.tenantId,
|
|
300
303
|
agentId,
|
|
301
304
|
participantProfileId: principal.profileId
|
|
302
|
-
})).find((session) => session.getSessionKey() ===
|
|
305
|
+
})).find((session) => session.getSessionKey() === dockSessionKey && session.participantProfileId === principal.profileId && session.tenantId === principal.tenantId && Boolean(session.chatRoomId)) ?? null;
|
|
303
306
|
};
|
|
304
307
|
const requireOwnThread = async (chat, principal, session, threadId) => {
|
|
305
308
|
if (!session?.chatRoomId) throw notFound();
|
|
@@ -366,6 +369,15 @@ function mountAssistantRoutes(options = {}) {
|
|
|
366
369
|
return current && current.participantProfileId === principal.profileId && current.isActive() ? current : null;
|
|
367
370
|
});
|
|
368
371
|
};
|
|
372
|
+
const withRequestContext = (context, value) => {
|
|
373
|
+
if (value === void 0 || value === null) return context;
|
|
374
|
+
if (typeof value !== "object" || Array.isArray(value)) throw badRequest("context must be an object.", "invalid_context");
|
|
375
|
+
if (new TextEncoder().encode(JSON.stringify(value)).length > 8192) throw badRequest(`context is limited to ${MAX_ASSISTANT_REQUEST_CONTEXT_BYTES} bytes.`, "invalid_context");
|
|
376
|
+
return {
|
|
377
|
+
...context,
|
|
378
|
+
requestContext: value
|
|
379
|
+
};
|
|
380
|
+
};
|
|
369
381
|
const prepareTurn = async (context, body) => {
|
|
370
382
|
const model = resolveModel(body.model);
|
|
371
383
|
const allowedTools = await allowedToolsFor(context);
|
|
@@ -427,6 +439,8 @@ function mountAssistantRoutes(options = {}) {
|
|
|
427
439
|
...options.maxSteps !== void 0 ? { maxSteps: options.maxSteps } : {},
|
|
428
440
|
...options.maxTurnTokens !== void 0 ? { maxTurnTokens: options.maxTurnTokens } : {},
|
|
429
441
|
...options.maxTurnMs !== void 0 ? { maxTurnMs: options.maxTurnMs } : {},
|
|
442
|
+
...options.requestTimeoutMs !== void 0 ? { requestTimeoutMs: options.requestTimeoutMs } : {},
|
|
443
|
+
...options.emptyAnswerFallback !== void 0 ? { emptyAnswerFallback: options.emptyAnswerFallback } : {},
|
|
430
444
|
...options.maxTokens !== void 0 ? { maxTokens: options.maxTokens } : {},
|
|
431
445
|
...options.temperature !== void 0 ? { temperature: options.temperature } : {},
|
|
432
446
|
...principal.permissions ? { permissions: principal.permissions } : {},
|
|
@@ -515,6 +529,7 @@ function mountAssistantRoutes(options = {}) {
|
|
|
515
529
|
await runtime.runAsPrincipal(bound, async (granted) => {
|
|
516
530
|
const turnContext = {
|
|
517
531
|
event: context.event,
|
|
532
|
+
...context.requestContext ? { requestContext: context.requestContext } : {},
|
|
518
533
|
principal: {
|
|
519
534
|
...principal,
|
|
520
535
|
permissions: effectiveScopes(granted, bound.scopes)
|
|
@@ -576,7 +591,7 @@ function mountAssistantRoutes(options = {}) {
|
|
|
576
591
|
agentId,
|
|
577
592
|
actorProfileId: principal.profileId,
|
|
578
593
|
allowedTools,
|
|
579
|
-
sessionKey:
|
|
594
|
+
sessionKey: dockSessionKey
|
|
580
595
|
});
|
|
581
596
|
if (!session.chatRoomId) throw new Error("Assistant session has no room");
|
|
582
597
|
return json({ thread: toAssistantThreadWire(await chat.startThread({
|
|
@@ -666,8 +681,9 @@ function mountAssistantRoutes(options = {}) {
|
|
|
666
681
|
continuationId: state.continuationId ?? null
|
|
667
682
|
});
|
|
668
683
|
};
|
|
669
|
-
const sendMessage = async (
|
|
670
|
-
const body = await readJsonObject(
|
|
684
|
+
const sendMessage = async (baseContext, threadId) => {
|
|
685
|
+
const body = await readJsonObject(baseContext.event.request, maxBody);
|
|
686
|
+
const context = withRequestContext(baseContext, body.context);
|
|
671
687
|
const content = typeof body.content === "string" ? body.content.trim() : "";
|
|
672
688
|
if (!content) throw badRequest("The message is empty.", "empty_message");
|
|
673
689
|
if (content.length > maxContent) throw new AssistantRouteError(413, "message_too_long", `Messages are limited to ${maxContent} characters.`);
|
|
@@ -742,7 +758,7 @@ function mountAssistantRoutes(options = {}) {
|
|
|
742
758
|
if (!message.content) continue;
|
|
743
759
|
history.push({
|
|
744
760
|
role: message.role,
|
|
745
|
-
content: message.content
|
|
761
|
+
content: message.role === "assistant" && isFallbackReply(message) ? FALLBACK_HISTORY_PLACEHOLDER : message.content
|
|
746
762
|
});
|
|
747
763
|
}
|
|
748
764
|
}
|
|
@@ -762,8 +778,9 @@ function mountAssistantRoutes(options = {}) {
|
|
|
762
778
|
throw error;
|
|
763
779
|
}
|
|
764
780
|
};
|
|
765
|
-
const resumeTurn = async (
|
|
766
|
-
const body = await readJsonObject(
|
|
781
|
+
const resumeTurn = async (baseContext, threadId) => {
|
|
782
|
+
const body = await readJsonObject(baseContext.event.request, maxBody);
|
|
783
|
+
const context = withRequestContext(baseContext, body.context);
|
|
767
784
|
const continuationId = requireId(body.continuationId, "continuationId");
|
|
768
785
|
if (!Array.isArray(body.results) || body.results.length > 64) throw badRequest("results must be a list of tool results.");
|
|
769
786
|
const results = body.results.map((raw) => {
|
|
@@ -968,6 +985,6 @@ function detached(first, produce) {
|
|
|
968
985
|
};
|
|
969
986
|
}
|
|
970
987
|
//#endregion
|
|
971
|
-
export { ASSISTANT_DOCK_SESSION_KEY, AssistantRouteError, DEFAULT_ASSISTANT_ABANDONED_TURN_MS, DEFAULT_ASSISTANT_AGENT_ID, DEFAULT_ASSISTANT_MAX_ATTACHMENT_BYTES, DEFAULT_ASSISTANT_MAX_BODY_BYTES, DEFAULT_ASSISTANT_TURN_START_TIMEOUT_MS, mountAssistantRoutes, resolveAssistantPrincipalFromLocals, toAssistantMessageWire, toAssistantThreadWire };
|
|
988
|
+
export { ASSISTANT_DOCK_SESSION_KEY, AssistantRouteError, DEFAULT_ASSISTANT_ABANDONED_TURN_MS, DEFAULT_ASSISTANT_AGENT_ID, DEFAULT_ASSISTANT_MAX_ATTACHMENT_BYTES, DEFAULT_ASSISTANT_MAX_BODY_BYTES, DEFAULT_ASSISTANT_TURN_START_TIMEOUT_MS, MAX_ASSISTANT_REQUEST_CONTEXT_BYTES, mountAssistantRoutes, resolveAssistantPrincipalFromLocals, toAssistantMessageWire, toAssistantThreadWire };
|
|
972
989
|
|
|
973
990
|
//# sourceMappingURL=sveltekit.js.map
|