opencami 1.8.6 → 1.8.7
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/client/assets/{CSPContext-6t3O1emU.js → CSPContext-KDlbpvjX.js} +1 -1
- package/dist/client/assets/{DirectionContext-C6goXEY_.js → DirectionContext-DZNUWW6F.js} +1 -1
- package/dist/client/assets/_sessionKey-CPRycepq.js +19 -0
- package/dist/client/assets/agents-Bp6Cn1BH.js +2 -0
- package/dist/client/assets/{agents-screen-pHUzJxX5.js → agents-screen-Du8b4SRW.js} +1 -1
- package/dist/client/assets/bots-Dl65yZDx.js +2 -0
- package/dist/client/assets/bots-screen-CvbAVMk0.js +1 -0
- package/dist/client/assets/{button-CK8tKQ-Z.js → button-BxDVif49.js} +1 -1
- package/dist/client/assets/{composite-feK0c-xF.js → composite-t7Eu0qB0.js} +1 -1
- package/dist/client/assets/{connect-02tmQV_v.js → connect-Btonx7l6.js} +1 -1
- package/dist/client/assets/{dashboard-DQ0zDQKd.js → dashboard-Dz6Uyyke.js} +1 -1
- package/dist/client/assets/{event-BsD1rqGT.js → event-DeooaZzN.js} +1 -1
- package/dist/client/assets/{file-explorer-screen-Ds7LeJTd.js → file-explorer-screen-BnOINWSL.js} +1 -1
- package/dist/client/assets/files-Cf87gXsq.js +2 -0
- package/dist/client/assets/follow-up-suggestions-DP_84nA2.js +5 -0
- package/dist/client/assets/index-nheqha2z.js +3 -0
- package/dist/client/assets/{index-lK3yGoTI.js → index-yPOt98v7.js} +1 -1
- package/dist/client/assets/{keyboard-shortcuts-dialog-Bb_GOr9L.js → keyboard-shortcuts-dialog-BzL7ZJUb.js} +1 -1
- package/dist/client/assets/{main-Dq6jpr6-.js → main-DJgQwVqD.js} +3 -3
- package/dist/client/assets/{markdown-C7_Aipwd.js → markdown-CFbW7h0Q.js} +14 -14
- package/dist/client/assets/memory-kYdhgbRR.js +2 -0
- package/dist/client/assets/{memory-screen-CUFBWsq5.js → memory-screen-BKYBnY-V.js} +1 -1
- package/dist/client/assets/{menu-n6L--M9R.js → menu-CnihCZ4y.js} +1 -1
- package/dist/client/assets/{opencami-logo-zuSBm5Br.js → opencami-logo-CoCA2JIf.js} +1 -1
- package/dist/client/assets/{proxy-BU8Bw1Vt.js → proxy-C2vtPufK.js} +1 -1
- package/dist/client/assets/{react-BLyCEWpN.js → react-DzPMbcP8.js} +1 -1
- package/dist/client/assets/{search-dialog-yB4w5ajo.js → search-dialog-CDAdFAQI.js} +1 -1
- package/dist/client/assets/search-sources-badge-DOd5AI-i.js +1 -0
- package/dist/client/assets/{session-export-dialog-qbZgd2Zo.js → session-export-dialog-Cf8eisLM.js} +1 -1
- package/dist/client/assets/{settings-dialog-CHJbvpgk.js → settings-dialog-CB1OiRWU.js} +1 -1
- package/dist/client/assets/skills-D6MaebJh.js +2 -0
- package/dist/client/assets/{skills-panel-BH27r3nC.js → skills-panel-_M5k5dty.js} +1 -1
- package/dist/client/assets/styles-BNkOWk4R.css +1 -0
- package/dist/client/assets/{switch-BD3a0LRm.js → switch-LzFh8co4.js} +1 -1
- package/dist/client/assets/{tabs-DI1e-kzz.js → tabs-D9o7Irvl.js} +1 -1
- package/dist/client/assets/thinking-BqZoM6BP.js +1 -0
- package/dist/client/assets/{tooltip-BbH3QWvK.js → tooltip-D64CzFXa.js} +1 -1
- package/dist/client/assets/{use-file-explorer-state-DBfLeAyz.js → use-file-explorer-state-Tzex8EEL.js} +2 -2
- package/dist/client/assets/{useBaseUiId-MgM4ouhx.js → useBaseUiId-CMJ8I9al.js} +1 -1
- package/dist/client/assets/useCompositeItem-CSriPK0T.js +1 -0
- package/dist/client/assets/{useControlled-BQxTgsOd.js → useControlled-KFa25CcD.js} +1 -1
- package/dist/client/assets/{useMutation-12DyB3Ox.js → useMutation-Bd89JWif.js} +1 -1
- package/dist/client/assets/{useOnFirstRender-7qoaK5sI.js → useOnFirstRender-DqnUCnnL.js} +1 -1
- package/dist/client/assets/{useQuery-Ctiljcrr.js → useQuery-DhR_UXNX.js} +1 -1
- package/dist/server/assets/{_sessionKey-DzsJfprr.js → _sessionKey-BzM-igv7.js} +405 -703
- package/dist/server/assets/{_tanstack-start-manifest_v-C5HBDfQB.js → _tanstack-start-manifest_v-Bfnqdswf.js} +1 -1
- package/dist/server/assets/{connect-CbgijWz4.js → connect-BNabuqpW.js} +1 -1
- package/dist/server/assets/follow-up-suggestions-DhBZIszK.js +336 -0
- package/dist/server/assets/{index-Dl2BOKP7.js → index-BEWnDAH6.js} +24 -5
- package/dist/server/assets/{index-BFHEmXpN.js → index-DCMpnyEo.js} +1 -1
- package/dist/server/assets/{markdown-BFE5y9YH.js → markdown-DoX5Q7qh.js} +50 -26
- package/dist/server/assets/{memory-BqZOoD7Q.js → memory-Cxu7i8ej.js} +1 -1
- package/dist/server/assets/{memory-screen-BK5phS8K.js → memory-screen-B5l1NZRY.js} +2 -2
- package/dist/server/assets/{router-BZPatFG9.js → router-BqPDQeCx.js} +5 -5
- package/dist/server/assets/{search-dialog-DQRkARXw.js → search-dialog-DtYc9e4N.js} +4 -4
- package/dist/server/assets/search-sources-badge-B0rAEDs_.js +106 -0
- package/dist/server/assets/{settings-dialog-Bc1ta26X.js → settings-dialog-BQzn6fyF.js} +4 -4
- package/dist/server/assets/thinking-D6q1tJkk.js +92 -0
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/_sessionKey-B5Viv43f.js +0 -23
- package/dist/client/assets/agents-BmE6QOwl.js +0 -2
- package/dist/client/assets/bots-BeOkwrXr.js +0 -2
- package/dist/client/assets/bots-screen-B79bAYvf.js +0 -1
- package/dist/client/assets/files-e40B1zFy.js +0 -2
- package/dist/client/assets/index-rljDU_1M.js +0 -3
- package/dist/client/assets/memory-C7UG-1le.js +0 -2
- package/dist/client/assets/skills-DoKPPhNY.js +0 -2
- package/dist/client/assets/styles-CXV5jZiD.css +0 -1
- package/dist/client/assets/useCompositeItem-OhltNFdZ.js +0 -1
|
@@ -5,7 +5,7 @@ import { HugeiconsIcon } from "@hugeicons/react";
|
|
|
5
5
|
import { Search01Icon, Cancel01Icon, Loading03Icon } from "@hugeicons/core-free-icons";
|
|
6
6
|
import { D as DialogRoot, a as DialogContent } from "./use-file-explorer-state-s7CS50ho.js";
|
|
7
7
|
import { useQueryClient } from "@tanstack/react-query";
|
|
8
|
-
import { c as chatQueryKeys } from "./_sessionKey-
|
|
8
|
+
import { c as chatQueryKeys } from "./_sessionKey-BzM-igv7.js";
|
|
9
9
|
import { c as cn } from "./button-CwY2OHFj.js";
|
|
10
10
|
import "@base-ui/react/dialog";
|
|
11
11
|
import "zustand";
|
|
@@ -18,15 +18,15 @@ import "@base-ui/react/scroll-area";
|
|
|
18
18
|
import "./menu-D90CDTi2.js";
|
|
19
19
|
import "@base-ui/react/menu";
|
|
20
20
|
import "./opencami-logo-C-43FL3R.js";
|
|
21
|
-
import "./markdown-
|
|
21
|
+
import "./markdown-DoX5Q7qh.js";
|
|
22
22
|
import "marked";
|
|
23
23
|
import "react-markdown";
|
|
24
24
|
import "remark-breaks";
|
|
25
25
|
import "remark-gfm";
|
|
26
|
-
import "./index-
|
|
26
|
+
import "./index-BEWnDAH6.js";
|
|
27
27
|
import "zustand/middleware";
|
|
28
28
|
import "react-dom";
|
|
29
|
-
import "./router-
|
|
29
|
+
import "./router-BqPDQeCx.js";
|
|
30
30
|
import "node:crypto";
|
|
31
31
|
import "node:fs";
|
|
32
32
|
import "node:os";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { HugeiconsIcon } from "@hugeicons/react";
|
|
4
|
+
import { Search01Icon, ArrowRight01Icon } from "@hugeicons/core-free-icons";
|
|
5
|
+
import { c as cn } from "./button-CwY2OHFj.js";
|
|
6
|
+
import "@base-ui/react/merge-props";
|
|
7
|
+
import "@base-ui/react/use-render";
|
|
8
|
+
import "class-variance-authority";
|
|
9
|
+
import "clsx";
|
|
10
|
+
import "tailwind-merge";
|
|
11
|
+
function getDomain(url) {
|
|
12
|
+
try {
|
|
13
|
+
return new URL(url).hostname.replace("www.", "");
|
|
14
|
+
} catch {
|
|
15
|
+
return url;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function FaviconCircle({ domain }) {
|
|
19
|
+
return /* @__PURE__ */ jsx(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
className: "flex items-center justify-center w-5 h-5 rounded-full bg-white dark:bg-zinc-800 border border-cyan-500/20 overflow-hidden",
|
|
23
|
+
title: domain,
|
|
24
|
+
children: /* @__PURE__ */ jsx(
|
|
25
|
+
"img",
|
|
26
|
+
{
|
|
27
|
+
src: `https://www.google.com/s2/favicons?domain=${domain}&sz=32`,
|
|
28
|
+
alt: "",
|
|
29
|
+
className: "w-4 h-4 object-contain",
|
|
30
|
+
loading: "lazy",
|
|
31
|
+
onError: (e) => {
|
|
32
|
+
const target = e.target;
|
|
33
|
+
target.style.display = "none";
|
|
34
|
+
const parent = target.parentElement;
|
|
35
|
+
if (parent) {
|
|
36
|
+
parent.textContent = domain.charAt(0).toUpperCase();
|
|
37
|
+
parent.classList.add("text-[10px]", "font-medium", "text-cyan-400");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
function SearchSourcesBadge({ sources }) {
|
|
46
|
+
const [expanded, setExpanded] = useState(false);
|
|
47
|
+
if (!sources.length) return null;
|
|
48
|
+
const uniqueDomains = [...new Set(sources.map((s) => getDomain(s.url)))];
|
|
49
|
+
return /* @__PURE__ */ jsxs("div", { className: "mt-2 w-full", children: [
|
|
50
|
+
/* @__PURE__ */ jsxs(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
onClick: () => setExpanded(!expanded),
|
|
54
|
+
className: cn(
|
|
55
|
+
"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs",
|
|
56
|
+
"bg-cyan-500/10 hover:bg-cyan-500/20 border border-cyan-500/30",
|
|
57
|
+
"text-cyan-300 transition-colors"
|
|
58
|
+
),
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsx(HugeiconsIcon, { icon: Search01Icon, size: 14 }),
|
|
61
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium", children: "Sources" }),
|
|
62
|
+
/* @__PURE__ */ jsx("span", { className: "px-1.5 py-0.5 rounded-full bg-cyan-500/20 text-cyan-400 font-semibold", children: sources.length }),
|
|
63
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5 ml-1", children: [
|
|
64
|
+
uniqueDomains.slice(0, 3).map((domain) => /* @__PURE__ */ jsx(FaviconCircle, { domain }, domain)),
|
|
65
|
+
uniqueDomains.length > 3 && /* @__PURE__ */ jsxs("span", { className: "text-cyan-500/70 text-[10px] ml-0.5", children: [
|
|
66
|
+
"+",
|
|
67
|
+
uniqueDomains.length - 3
|
|
68
|
+
] })
|
|
69
|
+
] }),
|
|
70
|
+
/* @__PURE__ */ jsx(
|
|
71
|
+
HugeiconsIcon,
|
|
72
|
+
{
|
|
73
|
+
icon: ArrowRight01Icon,
|
|
74
|
+
size: 12,
|
|
75
|
+
className: cn("transition-transform", expanded && "rotate-90")
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
expanded && /* @__PURE__ */ jsx("div", { className: "mt-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 max-h-80 overflow-y-auto", children: sources.map((source, i) => {
|
|
82
|
+
const domain = getDomain(source.url);
|
|
83
|
+
return /* @__PURE__ */ jsxs(
|
|
84
|
+
"a",
|
|
85
|
+
{
|
|
86
|
+
href: source.url,
|
|
87
|
+
target: "_blank",
|
|
88
|
+
rel: "noopener noreferrer",
|
|
89
|
+
className: "flex items-start gap-2 p-2.5 border-b border-cyan-500/10 last:border-b-0 hover:bg-cyan-500/5 transition-colors",
|
|
90
|
+
children: [
|
|
91
|
+
/* @__PURE__ */ jsx(FaviconCircle, { domain }),
|
|
92
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
93
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-primary-900 hover:underline line-clamp-1", children: source.title || domain }),
|
|
94
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: domain }),
|
|
95
|
+
source.snippet && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground/80 line-clamp-2 mt-0.5", children: source.snippet })
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
`${source.url}-${i}`
|
|
100
|
+
);
|
|
101
|
+
}) })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
SearchSourcesBadge
|
|
106
|
+
};
|
|
@@ -7,8 +7,8 @@ import { B as Button, c as cn } from "./button-CwY2OHFj.js";
|
|
|
7
7
|
import { D as DialogRoot, a as DialogContent, b as DialogTitle, c as DialogDescription, d as DialogClose } from "./use-file-explorer-state-s7CS50ho.js";
|
|
8
8
|
import { S as Switch } from "./switch-BbkUeVDV.js";
|
|
9
9
|
import { T as Tabs, a as TabsList, b as TabsTab } from "./tabs-DDFZob0m.js";
|
|
10
|
-
import { u as useChatSettings } from "./index-
|
|
11
|
-
import { u as useLlmSettings, g as getLlmProviderDefaults } from "./_sessionKey-
|
|
10
|
+
import { u as useChatSettings } from "./index-BEWnDAH6.js";
|
|
11
|
+
import { u as useLlmSettings, g as getLlmProviderDefaults } from "./_sessionKey-BzM-igv7.js";
|
|
12
12
|
import "@base-ui/react/merge-props";
|
|
13
13
|
import "@base-ui/react/use-render";
|
|
14
14
|
import "class-variance-authority";
|
|
@@ -29,13 +29,13 @@ import "@base-ui/react/scroll-area";
|
|
|
29
29
|
import "./menu-D90CDTi2.js";
|
|
30
30
|
import "@base-ui/react/menu";
|
|
31
31
|
import "./opencami-logo-C-43FL3R.js";
|
|
32
|
-
import "./markdown-
|
|
32
|
+
import "./markdown-DoX5Q7qh.js";
|
|
33
33
|
import "marked";
|
|
34
34
|
import "react-markdown";
|
|
35
35
|
import "remark-breaks";
|
|
36
36
|
import "remark-gfm";
|
|
37
37
|
import "react-dom";
|
|
38
|
-
import "./router-
|
|
38
|
+
import "./router-BqPDQeCx.js";
|
|
39
39
|
import "node:crypto";
|
|
40
40
|
import "node:fs";
|
|
41
41
|
import "node:os";
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { C as Collapsible, d as CollapsibleTrigger, e as CollapsiblePanel } from "./_sessionKey-BzM-igv7.js";
|
|
4
|
+
import { HugeiconsIcon } from "@hugeicons/react";
|
|
5
|
+
import { ArrowDown01Icon } from "@hugeicons/core-free-icons";
|
|
6
|
+
import { B as Button } from "./button-CwY2OHFj.js";
|
|
7
|
+
import "@tanstack/react-router";
|
|
8
|
+
import "@tanstack/react-query";
|
|
9
|
+
import "./tooltip-DgsSPocE.js";
|
|
10
|
+
import "@base-ui/react/tooltip";
|
|
11
|
+
import "motion/react";
|
|
12
|
+
import "@base-ui/react/alert-dialog";
|
|
13
|
+
import "./use-file-explorer-state-s7CS50ho.js";
|
|
14
|
+
import "@base-ui/react/dialog";
|
|
15
|
+
import "zustand";
|
|
16
|
+
import "@base-ui/react/collapsible";
|
|
17
|
+
import "@base-ui/react/scroll-area";
|
|
18
|
+
import "./menu-D90CDTi2.js";
|
|
19
|
+
import "@base-ui/react/menu";
|
|
20
|
+
import "./opencami-logo-C-43FL3R.js";
|
|
21
|
+
import "./markdown-DoX5Q7qh.js";
|
|
22
|
+
import "marked";
|
|
23
|
+
import "react-markdown";
|
|
24
|
+
import "remark-breaks";
|
|
25
|
+
import "remark-gfm";
|
|
26
|
+
import "./index-BEWnDAH6.js";
|
|
27
|
+
import "zustand/middleware";
|
|
28
|
+
import "react-dom";
|
|
29
|
+
import "./router-BqPDQeCx.js";
|
|
30
|
+
import "node:crypto";
|
|
31
|
+
import "node:fs";
|
|
32
|
+
import "node:os";
|
|
33
|
+
import "node:path";
|
|
34
|
+
import "ws";
|
|
35
|
+
import "@tanstack/router-core/ssr/client";
|
|
36
|
+
import "node:stream";
|
|
37
|
+
import "node:child_process";
|
|
38
|
+
import "node:util";
|
|
39
|
+
import "node:fs/promises";
|
|
40
|
+
import "path";
|
|
41
|
+
import "@base-ui/react/merge-props";
|
|
42
|
+
import "@base-ui/react/use-render";
|
|
43
|
+
import "class-variance-authority";
|
|
44
|
+
import "clsx";
|
|
45
|
+
import "tailwind-merge";
|
|
46
|
+
function useIsMobile() {
|
|
47
|
+
const [isMobile, setIsMobile] = useState(
|
|
48
|
+
() => typeof window !== "undefined" ? window.innerWidth < 768 : false
|
|
49
|
+
);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (typeof window === "undefined") return;
|
|
52
|
+
const mql = window.matchMedia("(max-width: 767px)");
|
|
53
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
54
|
+
mql.addEventListener("change", handler);
|
|
55
|
+
setIsMobile(mql.matches);
|
|
56
|
+
return () => mql.removeEventListener("change", handler);
|
|
57
|
+
}, []);
|
|
58
|
+
return isMobile;
|
|
59
|
+
}
|
|
60
|
+
function Thinking({ content }) {
|
|
61
|
+
const isMobile = useIsMobile();
|
|
62
|
+
return /* @__PURE__ */ jsx("div", { className: "inline-flex flex-col", children: /* @__PURE__ */ jsxs(Collapsible, { defaultOpen: !isMobile, children: [
|
|
63
|
+
/* @__PURE__ */ jsxs(
|
|
64
|
+
CollapsibleTrigger,
|
|
65
|
+
{
|
|
66
|
+
render: /* @__PURE__ */ jsx(
|
|
67
|
+
Button,
|
|
68
|
+
{
|
|
69
|
+
variant: "ghost",
|
|
70
|
+
className: "h-auto gap-1.5 px-1.5 py-0.5 -mx-2"
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-primary-900", children: "Thinking" }),
|
|
75
|
+
/* @__PURE__ */ jsx(
|
|
76
|
+
HugeiconsIcon,
|
|
77
|
+
{
|
|
78
|
+
icon: ArrowDown01Icon,
|
|
79
|
+
size: 14,
|
|
80
|
+
strokeWidth: 1.5,
|
|
81
|
+
className: "text-primary-900 transition-transform duration-150 group-data-panel-open:rotate-180"
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ jsx(CollapsiblePanel, { children: /* @__PURE__ */ jsx("div", { className: "pt-1 mb-3", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-primary-700 whitespace-pre-wrap", children: content }) }) })
|
|
88
|
+
] }) });
|
|
89
|
+
}
|
|
90
|
+
export {
|
|
91
|
+
Thinking
|
|
92
|
+
};
|
package/dist/server/server.js
CHANGED
|
@@ -184,7 +184,7 @@ function getResponse() {
|
|
|
184
184
|
return event.res;
|
|
185
185
|
}
|
|
186
186
|
async function getStartManifest(matchedRoutes) {
|
|
187
|
-
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-
|
|
187
|
+
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-Bfnqdswf.js");
|
|
188
188
|
const startManifest = tsrStartManifest();
|
|
189
189
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
190
190
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -753,7 +753,7 @@ let entriesPromise;
|
|
|
753
753
|
let baseManifestPromise;
|
|
754
754
|
let cachedFinalManifestPromise;
|
|
755
755
|
async function loadEntries() {
|
|
756
|
-
const routerEntry = await import("./assets/router-
|
|
756
|
+
const routerEntry = await import("./assets/router-BqPDQeCx.js").then((n) => n.r);
|
|
757
757
|
const startEntry = await import("./assets/start-HYkvq4Ni.js");
|
|
758
758
|
return { startEntry, routerEntry };
|
|
759
759
|
}
|