@carlonicora/nextjs-jsonapi 1.113.0 → 1.115.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/{AssistantInterface-B1c8FhGA.d.mts → AssistantInterface-B56qznuH.d.mts} +2 -0
- package/dist/{AssistantInterface-BBUHxOCd.d.ts → AssistantInterface-CHiJIYDY.d.ts} +2 -0
- package/dist/{AssistantMessageInterface-DrgHDjZ5.d.mts → AssistantMessageInterface-BuUZFkE5.d.mts} +16 -1
- package/dist/{AssistantMessageInterface-BNzf1etU.d.ts → AssistantMessageInterface-CQwh5tEb.d.ts} +16 -1
- package/dist/{BlockNoteEditor-DOAPXS7S.js → BlockNoteEditor-V74ICZY3.js} +19 -19
- package/dist/{BlockNoteEditor-DOAPXS7S.js.map → BlockNoteEditor-V74ICZY3.js.map} +1 -1
- package/dist/{BlockNoteEditor-F3HSL4LX.mjs → BlockNoteEditor-Z3EKI3C6.mjs} +4 -4
- package/dist/billing/index.js +346 -346
- package/dist/billing/index.mjs +3 -3
- package/dist/{chunk-6XWW67F2.js → chunk-3MUBMSDD.js} +7 -7
- package/dist/{chunk-6XWW67F2.js.map → chunk-3MUBMSDD.js.map} +1 -1
- package/dist/{chunk-UBFVV2DA.js → chunk-6LSGIJ5W.js} +881 -826
- package/dist/chunk-6LSGIJ5W.js.map +1 -0
- package/dist/{chunk-CI36BXIG.mjs → chunk-BKKVLD42.mjs} +75 -20
- package/dist/chunk-BKKVLD42.mjs.map +1 -0
- package/dist/{chunk-U2HR57MY.js → chunk-J3DFHESB.js} +79 -28
- package/dist/chunk-J3DFHESB.js.map +1 -0
- package/dist/{chunk-CWVYU4YZ.mjs → chunk-SJRSR3AF.mjs} +2 -2
- package/dist/{chunk-ZYPNVEHB.mjs → chunk-UBBTQUFB.mjs} +56 -5
- package/dist/chunk-UBBTQUFB.mjs.map +1 -0
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/components/index.d.mts +24 -7
- package/dist/components/index.d.ts +24 -7
- package/dist/components/index.js +4 -4
- package/dist/components/index.mjs +3 -3
- package/dist/contexts/index.d.mts +7 -2
- package/dist/contexts/index.d.ts +7 -2
- package/dist/contexts/index.js +4 -4
- package/dist/contexts/index.mjs +3 -3
- package/dist/core/index.d.mts +28 -6
- package/dist/core/index.d.ts +28 -6
- package/dist/core/index.js +2 -2
- package/dist/core/index.mjs +1 -1
- package/dist/features/help/index.js +36 -36
- package/dist/features/help/index.mjs +3 -3
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +3 -3
- package/dist/index.mjs +2 -2
- package/dist/{s3.service-0BTClOYO.d.mts → s3.service-CAL5dhGG.d.mts} +3 -0
- package/dist/{s3.service-CT27Fm1s.d.ts → s3.service-COLYvcW2.d.ts} +3 -0
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
- package/src/core/abstracts/AbstractService.ts +6 -3
- package/src/features/assistant/components/containers/AssistantContainer.tsx +18 -2
- package/src/features/assistant/components/parts/AssistantEmptyState.tsx +22 -1
- package/src/features/assistant/components/parts/AssistantThread.tsx +12 -1
- package/src/features/assistant/contexts/AssistantContext.tsx +42 -9
- package/src/features/assistant/contexts/__tests__/AssistantContext.spec.tsx +94 -3
- package/src/features/assistant/data/Assistant.ts +6 -0
- package/src/features/assistant/data/AssistantInterface.ts +2 -0
- package/src/features/assistant/data/AssistantService.ts +38 -0
- package/src/features/assistant/data/__tests__/Assistant.spec.ts +30 -0
- package/src/features/assistant-message/AssistantMessageModule.ts +2 -0
- package/src/features/assistant-message/components/MessageItem.tsx +26 -4
- package/src/features/assistant-message/components/MessageList.tsx +4 -2
- package/src/features/assistant-message/data/AssistantMessage.ts +21 -1
- package/src/features/assistant-message/data/AssistantMessageInterface.ts +16 -0
- package/dist/chunk-CI36BXIG.mjs.map +0 -1
- package/dist/chunk-U2HR57MY.js.map +0 -1
- package/dist/chunk-UBFVV2DA.js.map +0 -1
- package/dist/chunk-ZYPNVEHB.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-F3HSL4LX.mjs.map → BlockNoteEditor-Z3EKI3C6.mjs.map} +0 -0
- /package/dist/{chunk-CWVYU4YZ.mjs.map → chunk-SJRSR3AF.mjs.map} +0 -0
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
useI18nLocale,
|
|
21
21
|
useI18nRouter,
|
|
22
22
|
useI18nTranslations
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-SJRSR3AF.mjs";
|
|
24
24
|
import {
|
|
25
25
|
AVAILABLE_OAUTH_SCOPES,
|
|
26
26
|
AssistantMessage,
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
showToast,
|
|
61
61
|
useComposedRefs,
|
|
62
62
|
useIsMobile
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-UBBTQUFB.mjs";
|
|
64
64
|
import {
|
|
65
65
|
JsonApiContext
|
|
66
66
|
} from "./chunk-VOXD3ZLY.mjs";
|
|
@@ -9691,7 +9691,7 @@ import { useRef as useRef15 } from "react";
|
|
|
9691
9691
|
import dynamic from "next/dynamic";
|
|
9692
9692
|
import React16 from "react";
|
|
9693
9693
|
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
9694
|
-
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-
|
|
9694
|
+
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-Z3EKI3C6.mjs"), {
|
|
9695
9695
|
ssr: false
|
|
9696
9696
|
});
|
|
9697
9697
|
var BlockNoteEditorContainer = React16.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
|
|
@@ -13391,6 +13391,9 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13391
13391
|
const [sending, setSending] = useState42(false);
|
|
13392
13392
|
const [status, setStatus] = useState42(void 0);
|
|
13393
13393
|
const [failedMessageIds, setFailedMessageIds] = useState42(() => /* @__PURE__ */ new Set());
|
|
13394
|
+
const [operatorMode, setOperatorMode] = useState42(
|
|
13395
|
+
() => dehydratedAssistant?.jsonApi?.attributes?.engine === "operator"
|
|
13396
|
+
);
|
|
13394
13397
|
const { socket } = useSocketContext();
|
|
13395
13398
|
const sendMessage = useCallback24(
|
|
13396
13399
|
async (content, opts) => {
|
|
@@ -13411,11 +13414,12 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13411
13414
|
socket?.on("assistant:status", handler);
|
|
13412
13415
|
try {
|
|
13413
13416
|
if (!assistant) {
|
|
13414
|
-
const
|
|
13417
|
+
const input = {
|
|
13415
13418
|
firstMessage: trimmed,
|
|
13416
13419
|
howToMode: opts?.howToMode,
|
|
13417
13420
|
limitToHowToId: opts?.limitToHowToId
|
|
13418
|
-
}
|
|
13421
|
+
};
|
|
13422
|
+
const created = operatorMode ? await AssistantService.createOperator(input) : await AssistantService.create(input);
|
|
13419
13423
|
const msgs = await AssistantMessageService.findByAssistant({ assistantId: created.id });
|
|
13420
13424
|
setAssistant(created);
|
|
13421
13425
|
setMessages(msgs);
|
|
@@ -13424,7 +13428,10 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13424
13428
|
window.history.replaceState(null, "", `/assistants/${created.id}`);
|
|
13425
13429
|
}
|
|
13426
13430
|
} else {
|
|
13427
|
-
const result = await AssistantService.
|
|
13431
|
+
const result = operatorMode ? await AssistantService.appendMessageOperator({
|
|
13432
|
+
assistantId: assistant.id,
|
|
13433
|
+
content: trimmed
|
|
13434
|
+
}) : await AssistantService.appendMessage({
|
|
13428
13435
|
assistantId: assistant.id,
|
|
13429
13436
|
content: trimmed,
|
|
13430
13437
|
howToMode: opts?.howToMode,
|
|
@@ -13444,8 +13451,11 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13444
13451
|
setStatus(void 0);
|
|
13445
13452
|
}
|
|
13446
13453
|
},
|
|
13447
|
-
[assistant, messages, socket]
|
|
13454
|
+
[assistant, messages, socket, operatorMode]
|
|
13448
13455
|
);
|
|
13456
|
+
const appendResolvedMessage = useCallback24((message) => {
|
|
13457
|
+
setMessages((prev) => prev.some((m) => m.id === message.id) ? prev : [...prev, message]);
|
|
13458
|
+
}, []);
|
|
13449
13459
|
const retrySend = useCallback24(
|
|
13450
13460
|
async (tempId) => {
|
|
13451
13461
|
const failed = messages.find((m) => m.id === tempId);
|
|
@@ -13469,6 +13479,7 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13469
13479
|
]);
|
|
13470
13480
|
setAssistant(target);
|
|
13471
13481
|
setMessages(msgs);
|
|
13482
|
+
setOperatorMode(target.engine === "operator");
|
|
13472
13483
|
if (manageUrl && typeof window !== "undefined") {
|
|
13473
13484
|
window.history.replaceState(null, "", `/assistants/${id}`);
|
|
13474
13485
|
}
|
|
@@ -13484,6 +13495,7 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13484
13495
|
setAssistant(void 0);
|
|
13485
13496
|
setMessages([]);
|
|
13486
13497
|
setFailedMessageIds(/* @__PURE__ */ new Set());
|
|
13498
|
+
setOperatorMode(false);
|
|
13487
13499
|
if (manageUrl && typeof window !== "undefined") {
|
|
13488
13500
|
window.history.replaceState(null, "", "/assistants");
|
|
13489
13501
|
}
|
|
@@ -13528,7 +13540,10 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13528
13540
|
selectThread,
|
|
13529
13541
|
startNew,
|
|
13530
13542
|
renameThread,
|
|
13531
|
-
deleteThread
|
|
13543
|
+
deleteThread,
|
|
13544
|
+
operatorMode,
|
|
13545
|
+
setOperatorMode,
|
|
13546
|
+
appendResolvedMessage
|
|
13532
13547
|
}),
|
|
13533
13548
|
[
|
|
13534
13549
|
assistant,
|
|
@@ -13543,7 +13558,9 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13543
13558
|
selectThread,
|
|
13544
13559
|
startNew,
|
|
13545
13560
|
renameThread,
|
|
13546
|
-
deleteThread
|
|
13561
|
+
deleteThread,
|
|
13562
|
+
operatorMode,
|
|
13563
|
+
appendResolvedMessage
|
|
13547
13564
|
]
|
|
13548
13565
|
);
|
|
13549
13566
|
const breadcrumbs = [
|
|
@@ -18758,7 +18775,7 @@ __name(AssistantComposer, "AssistantComposer");
|
|
|
18758
18775
|
// src/features/assistant/components/parts/AssistantEmptyState.tsx
|
|
18759
18776
|
import { jsx as jsx211, jsxs as jsxs126 } from "react/jsx-runtime";
|
|
18760
18777
|
var STARTER_KEYS = ["a", "b", "c", "d"];
|
|
18761
|
-
function AssistantEmptyState({ onSend }) {
|
|
18778
|
+
function AssistantEmptyState({ onSend, operatorMode = false, onOperatorModeChange }) {
|
|
18762
18779
|
const t = useTranslations86();
|
|
18763
18780
|
const [draft, setDraft] = useState80("");
|
|
18764
18781
|
return /* @__PURE__ */ jsx211("div", { className: "flex h-full w-full items-center justify-center p-10", children: /* @__PURE__ */ jsxs126("div", { className: "flex w-full max-w-2xl flex-col gap-6", children: [
|
|
@@ -18768,6 +18785,18 @@ function AssistantEmptyState({ onSend }) {
|
|
|
18768
18785
|
/* @__PURE__ */ jsx211("p", { className: "text-muted-foreground mt-1 text-sm", children: t("features.assistant.empty_state.subtitle") })
|
|
18769
18786
|
] }),
|
|
18770
18787
|
/* @__PURE__ */ jsx211(AssistantComposer, { value: draft, onValueChange: setDraft, onSend }),
|
|
18788
|
+
onOperatorModeChange && /* @__PURE__ */ jsxs126("div", { className: "flex items-center justify-end gap-2", children: [
|
|
18789
|
+
/* @__PURE__ */ jsx211(
|
|
18790
|
+
Switch,
|
|
18791
|
+
{
|
|
18792
|
+
id: "assistant-operator-mode",
|
|
18793
|
+
size: "sm",
|
|
18794
|
+
checked: operatorMode,
|
|
18795
|
+
onCheckedChange: (checked) => onOperatorModeChange(checked === true)
|
|
18796
|
+
}
|
|
18797
|
+
),
|
|
18798
|
+
/* @__PURE__ */ jsx211(Label, { htmlFor: "assistant-operator-mode", className: "text-muted-foreground text-xs", children: t("features.assistant.operator_mode") })
|
|
18799
|
+
] }),
|
|
18771
18800
|
/* @__PURE__ */ jsx211("div", { className: "grid grid-cols-2 gap-2", children: STARTER_KEYS.map((k) => {
|
|
18772
18801
|
const text = t(`features.assistant.starters.${k}`);
|
|
18773
18802
|
return /* @__PURE__ */ jsx211(
|
|
@@ -19332,7 +19361,14 @@ __name(MessageSourcesContainer, "MessageSourcesContainer");
|
|
|
19332
19361
|
|
|
19333
19362
|
// src/features/assistant-message/components/MessageItem.tsx
|
|
19334
19363
|
import { jsx as jsx221, jsxs as jsxs134 } from "react/jsx-runtime";
|
|
19335
|
-
function MessageItem({
|
|
19364
|
+
function MessageItem({
|
|
19365
|
+
message,
|
|
19366
|
+
isLatestAssistant,
|
|
19367
|
+
onSelectFollowUp,
|
|
19368
|
+
failedMessageIds,
|
|
19369
|
+
onRetry,
|
|
19370
|
+
renderApprovalAction
|
|
19371
|
+
}) {
|
|
19336
19372
|
const t = useTranslations93();
|
|
19337
19373
|
const isUser = message.role === "user";
|
|
19338
19374
|
const isFailed = isUser && !!failedMessageIds?.has(message.id);
|
|
@@ -19346,12 +19382,13 @@ function MessageItem({ message, isLatestAssistant, onSelectFollowUp, failedMessa
|
|
|
19346
19382
|
] })
|
|
19347
19383
|
] });
|
|
19348
19384
|
}
|
|
19385
|
+
const isApprovalRequest = message.messageType === "approval-request" && !!renderApprovalAction;
|
|
19349
19386
|
return /* @__PURE__ */ jsxs134("div", { className: "flex min-w-0 max-w-[78%] flex-col gap-1.5", children: [
|
|
19350
19387
|
/* @__PURE__ */ jsxs134("div", { className: "text-muted-foreground flex items-center gap-2 pl-1 text-xs", children: [
|
|
19351
19388
|
/* @__PURE__ */ jsx221("span", { className: "flex h-4 w-4 items-center justify-center rounded-full bg-gradient-to-br from-blue-400 to-violet-500 text-white", children: /* @__PURE__ */ jsx221(Sparkles2, { className: "h-2.5 w-2.5" }) }),
|
|
19352
19389
|
/* @__PURE__ */ jsx221("span", { children: t("features.assistant.agent_name") })
|
|
19353
19390
|
] }),
|
|
19354
|
-
/* @__PURE__ */ jsx221("div", { className: "bg-muted text-foreground rounded-2xl rounded-bl-sm px-3.5 py-2.5 text-sm leading-relaxed", children: /* @__PURE__ */ jsx221(ReactMarkdown3, { remarkPlugins: [remarkGfm3], children: message.content }) }),
|
|
19391
|
+
isApprovalRequest ? renderApprovalAction(message) : /* @__PURE__ */ jsx221("div", { className: "bg-muted text-foreground rounded-2xl rounded-bl-sm px-3.5 py-2.5 text-sm leading-relaxed", children: /* @__PURE__ */ jsx221(ReactMarkdown3, { remarkPlugins: [remarkGfm3], children: message.content }) }),
|
|
19355
19392
|
/* @__PURE__ */ jsx221(
|
|
19356
19393
|
MessageSourcesContainer,
|
|
19357
19394
|
{
|
|
@@ -19366,7 +19403,7 @@ __name(MessageItem, "MessageItem");
|
|
|
19366
19403
|
|
|
19367
19404
|
// src/features/assistant-message/components/MessageList.tsx
|
|
19368
19405
|
import { jsx as jsx222 } from "react/jsx-runtime";
|
|
19369
|
-
function MessageList({ messages, onSelectFollowUp, failedMessageIds, onRetry }) {
|
|
19406
|
+
function MessageList({ messages, onSelectFollowUp, failedMessageIds, onRetry, renderApprovalAction }) {
|
|
19370
19407
|
const ordered = [...messages].sort((a, b) => a.position - b.position);
|
|
19371
19408
|
let lastAssistantIndex = -1;
|
|
19372
19409
|
for (let i = ordered.length - 1; i >= 0; i--) {
|
|
@@ -19382,7 +19419,8 @@ function MessageList({ messages, onSelectFollowUp, failedMessageIds, onRetry })
|
|
|
19382
19419
|
isLatestAssistant: i === lastAssistantIndex,
|
|
19383
19420
|
onSelectFollowUp,
|
|
19384
19421
|
failedMessageIds,
|
|
19385
|
-
onRetry
|
|
19422
|
+
onRetry,
|
|
19423
|
+
renderApprovalAction
|
|
19386
19424
|
},
|
|
19387
19425
|
m.id
|
|
19388
19426
|
)) });
|
|
@@ -19405,7 +19443,15 @@ __name(AssistantStatusLine, "AssistantStatusLine");
|
|
|
19405
19443
|
|
|
19406
19444
|
// src/features/assistant/components/parts/AssistantThread.tsx
|
|
19407
19445
|
import { jsx as jsx224, jsxs as jsxs136 } from "react/jsx-runtime";
|
|
19408
|
-
function AssistantThread({
|
|
19446
|
+
function AssistantThread({
|
|
19447
|
+
messages,
|
|
19448
|
+
sending,
|
|
19449
|
+
status,
|
|
19450
|
+
onSelectFollowUp,
|
|
19451
|
+
failedMessageIds,
|
|
19452
|
+
onRetry,
|
|
19453
|
+
renderApprovalAction
|
|
19454
|
+
}) {
|
|
19409
19455
|
const endRef = useRef34(null);
|
|
19410
19456
|
useEffect63(() => {
|
|
19411
19457
|
endRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
@@ -19417,7 +19463,8 @@ function AssistantThread({ messages, sending, status, onSelectFollowUp, failedMe
|
|
|
19417
19463
|
messages,
|
|
19418
19464
|
onSelectFollowUp,
|
|
19419
19465
|
failedMessageIds,
|
|
19420
|
-
onRetry
|
|
19466
|
+
onRetry,
|
|
19467
|
+
renderApprovalAction
|
|
19421
19468
|
}
|
|
19422
19469
|
),
|
|
19423
19470
|
sending && /* @__PURE__ */ jsx224(AssistantStatusLine, { status }),
|
|
@@ -19428,7 +19475,7 @@ __name(AssistantThread, "AssistantThread");
|
|
|
19428
19475
|
|
|
19429
19476
|
// src/features/assistant/components/containers/AssistantContainer.tsx
|
|
19430
19477
|
import { Fragment as Fragment45, jsx as jsx225, jsxs as jsxs137 } from "react/jsx-runtime";
|
|
19431
|
-
function AssistantContainer() {
|
|
19478
|
+
function AssistantContainer({ renderApprovalAction } = {}) {
|
|
19432
19479
|
const ctx = useAssistantContext();
|
|
19433
19480
|
const showThread = !!ctx.assistant || ctx.sending || ctx.messages.length > 0;
|
|
19434
19481
|
return /* @__PURE__ */ jsx225(RoundPageContainer, { module: Modules.Assistant, fullWidth: true, children: /* @__PURE__ */ jsxs137("div", { className: "bg-background flex h-full w-full overflow-hidden rounded-lg border", children: [
|
|
@@ -19441,7 +19488,14 @@ function AssistantContainer() {
|
|
|
19441
19488
|
onNew: ctx.startNew
|
|
19442
19489
|
}
|
|
19443
19490
|
),
|
|
19444
|
-
/* @__PURE__ */ jsx225("main", { className: "flex flex-1 flex-col", children: !showThread ? /* @__PURE__ */ jsx225(
|
|
19491
|
+
/* @__PURE__ */ jsx225("main", { className: "flex flex-1 flex-col", children: !showThread ? /* @__PURE__ */ jsx225(
|
|
19492
|
+
AssistantEmptyState,
|
|
19493
|
+
{
|
|
19494
|
+
onSend: ctx.sendMessage,
|
|
19495
|
+
operatorMode: ctx.operatorMode,
|
|
19496
|
+
onOperatorModeChange: ctx.setOperatorMode
|
|
19497
|
+
}
|
|
19498
|
+
) : /* @__PURE__ */ jsxs137(Fragment45, { children: [
|
|
19445
19499
|
ctx.assistant ? /* @__PURE__ */ jsx225(
|
|
19446
19500
|
AssistantThreadHeader,
|
|
19447
19501
|
{
|
|
@@ -19458,7 +19512,8 @@ function AssistantContainer() {
|
|
|
19458
19512
|
status: ctx.status,
|
|
19459
19513
|
onSelectFollowUp: ctx.sendMessage,
|
|
19460
19514
|
failedMessageIds: ctx.failedMessageIds,
|
|
19461
|
-
onRetry: ctx.retrySend
|
|
19515
|
+
onRetry: ctx.retrySend,
|
|
19516
|
+
renderApprovalAction
|
|
19462
19517
|
}
|
|
19463
19518
|
),
|
|
19464
19519
|
/* @__PURE__ */ jsx225(AssistantComposer, { onSend: ctx.sendMessage, disabled: ctx.sending })
|
|
@@ -22787,4 +22842,4 @@ export {
|
|
|
22787
22842
|
useOAuthClients,
|
|
22788
22843
|
useOAuthClient
|
|
22789
22844
|
};
|
|
22790
|
-
//# sourceMappingURL=chunk-
|
|
22845
|
+
//# sourceMappingURL=chunk-BKKVLD42.mjs.map
|