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.
Files changed (70) hide show
  1. package/dist/client/assets/{CSPContext-6t3O1emU.js → CSPContext-KDlbpvjX.js} +1 -1
  2. package/dist/client/assets/{DirectionContext-C6goXEY_.js → DirectionContext-DZNUWW6F.js} +1 -1
  3. package/dist/client/assets/_sessionKey-CPRycepq.js +19 -0
  4. package/dist/client/assets/agents-Bp6Cn1BH.js +2 -0
  5. package/dist/client/assets/{agents-screen-pHUzJxX5.js → agents-screen-Du8b4SRW.js} +1 -1
  6. package/dist/client/assets/bots-Dl65yZDx.js +2 -0
  7. package/dist/client/assets/bots-screen-CvbAVMk0.js +1 -0
  8. package/dist/client/assets/{button-CK8tKQ-Z.js → button-BxDVif49.js} +1 -1
  9. package/dist/client/assets/{composite-feK0c-xF.js → composite-t7Eu0qB0.js} +1 -1
  10. package/dist/client/assets/{connect-02tmQV_v.js → connect-Btonx7l6.js} +1 -1
  11. package/dist/client/assets/{dashboard-DQ0zDQKd.js → dashboard-Dz6Uyyke.js} +1 -1
  12. package/dist/client/assets/{event-BsD1rqGT.js → event-DeooaZzN.js} +1 -1
  13. package/dist/client/assets/{file-explorer-screen-Ds7LeJTd.js → file-explorer-screen-BnOINWSL.js} +1 -1
  14. package/dist/client/assets/files-Cf87gXsq.js +2 -0
  15. package/dist/client/assets/follow-up-suggestions-DP_84nA2.js +5 -0
  16. package/dist/client/assets/index-nheqha2z.js +3 -0
  17. package/dist/client/assets/{index-lK3yGoTI.js → index-yPOt98v7.js} +1 -1
  18. package/dist/client/assets/{keyboard-shortcuts-dialog-Bb_GOr9L.js → keyboard-shortcuts-dialog-BzL7ZJUb.js} +1 -1
  19. package/dist/client/assets/{main-Dq6jpr6-.js → main-DJgQwVqD.js} +3 -3
  20. package/dist/client/assets/{markdown-C7_Aipwd.js → markdown-CFbW7h0Q.js} +14 -14
  21. package/dist/client/assets/memory-kYdhgbRR.js +2 -0
  22. package/dist/client/assets/{memory-screen-CUFBWsq5.js → memory-screen-BKYBnY-V.js} +1 -1
  23. package/dist/client/assets/{menu-n6L--M9R.js → menu-CnihCZ4y.js} +1 -1
  24. package/dist/client/assets/{opencami-logo-zuSBm5Br.js → opencami-logo-CoCA2JIf.js} +1 -1
  25. package/dist/client/assets/{proxy-BU8Bw1Vt.js → proxy-C2vtPufK.js} +1 -1
  26. package/dist/client/assets/{react-BLyCEWpN.js → react-DzPMbcP8.js} +1 -1
  27. package/dist/client/assets/{search-dialog-yB4w5ajo.js → search-dialog-CDAdFAQI.js} +1 -1
  28. package/dist/client/assets/search-sources-badge-DOd5AI-i.js +1 -0
  29. package/dist/client/assets/{session-export-dialog-qbZgd2Zo.js → session-export-dialog-Cf8eisLM.js} +1 -1
  30. package/dist/client/assets/{settings-dialog-CHJbvpgk.js → settings-dialog-CB1OiRWU.js} +1 -1
  31. package/dist/client/assets/skills-D6MaebJh.js +2 -0
  32. package/dist/client/assets/{skills-panel-BH27r3nC.js → skills-panel-_M5k5dty.js} +1 -1
  33. package/dist/client/assets/styles-BNkOWk4R.css +1 -0
  34. package/dist/client/assets/{switch-BD3a0LRm.js → switch-LzFh8co4.js} +1 -1
  35. package/dist/client/assets/{tabs-DI1e-kzz.js → tabs-D9o7Irvl.js} +1 -1
  36. package/dist/client/assets/thinking-BqZoM6BP.js +1 -0
  37. package/dist/client/assets/{tooltip-BbH3QWvK.js → tooltip-D64CzFXa.js} +1 -1
  38. package/dist/client/assets/{use-file-explorer-state-DBfLeAyz.js → use-file-explorer-state-Tzex8EEL.js} +2 -2
  39. package/dist/client/assets/{useBaseUiId-MgM4ouhx.js → useBaseUiId-CMJ8I9al.js} +1 -1
  40. package/dist/client/assets/useCompositeItem-CSriPK0T.js +1 -0
  41. package/dist/client/assets/{useControlled-BQxTgsOd.js → useControlled-KFa25CcD.js} +1 -1
  42. package/dist/client/assets/{useMutation-12DyB3Ox.js → useMutation-Bd89JWif.js} +1 -1
  43. package/dist/client/assets/{useOnFirstRender-7qoaK5sI.js → useOnFirstRender-DqnUCnnL.js} +1 -1
  44. package/dist/client/assets/{useQuery-Ctiljcrr.js → useQuery-DhR_UXNX.js} +1 -1
  45. package/dist/server/assets/{_sessionKey-DzsJfprr.js → _sessionKey-BzM-igv7.js} +405 -703
  46. package/dist/server/assets/{_tanstack-start-manifest_v-C5HBDfQB.js → _tanstack-start-manifest_v-Bfnqdswf.js} +1 -1
  47. package/dist/server/assets/{connect-CbgijWz4.js → connect-BNabuqpW.js} +1 -1
  48. package/dist/server/assets/follow-up-suggestions-DhBZIszK.js +336 -0
  49. package/dist/server/assets/{index-Dl2BOKP7.js → index-BEWnDAH6.js} +24 -5
  50. package/dist/server/assets/{index-BFHEmXpN.js → index-DCMpnyEo.js} +1 -1
  51. package/dist/server/assets/{markdown-BFE5y9YH.js → markdown-DoX5Q7qh.js} +50 -26
  52. package/dist/server/assets/{memory-BqZOoD7Q.js → memory-Cxu7i8ej.js} +1 -1
  53. package/dist/server/assets/{memory-screen-BK5phS8K.js → memory-screen-B5l1NZRY.js} +2 -2
  54. package/dist/server/assets/{router-BZPatFG9.js → router-BqPDQeCx.js} +5 -5
  55. package/dist/server/assets/{search-dialog-DQRkARXw.js → search-dialog-DtYc9e4N.js} +4 -4
  56. package/dist/server/assets/search-sources-badge-B0rAEDs_.js +106 -0
  57. package/dist/server/assets/{settings-dialog-Bc1ta26X.js → settings-dialog-BQzn6fyF.js} +4 -4
  58. package/dist/server/assets/thinking-D6q1tJkk.js +92 -0
  59. package/dist/server/server.js +2 -2
  60. package/package.json +1 -1
  61. package/dist/client/assets/_sessionKey-B5Viv43f.js +0 -23
  62. package/dist/client/assets/agents-BmE6QOwl.js +0 -2
  63. package/dist/client/assets/bots-BeOkwrXr.js +0 -2
  64. package/dist/client/assets/bots-screen-B79bAYvf.js +0 -1
  65. package/dist/client/assets/files-e40B1zFy.js +0 -2
  66. package/dist/client/assets/index-rljDU_1M.js +0 -3
  67. package/dist/client/assets/memory-C7UG-1le.js +0 -2
  68. package/dist/client/assets/skills-DoKPPhNY.js +0 -2
  69. package/dist/client/assets/styles-CXV5jZiD.css +0 -1
  70. 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-DzsJfprr.js";
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-BFE5y9YH.js";
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-Dl2BOKP7.js";
26
+ import "./index-BEWnDAH6.js";
27
27
  import "zustand/middleware";
28
28
  import "react-dom";
29
- import "./router-BZPatFG9.js";
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-Dl2BOKP7.js";
11
- import { u as useLlmSettings, g as getLlmProviderDefaults } from "./_sessionKey-DzsJfprr.js";
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-BFE5y9YH.js";
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-BZPatFG9.js";
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
+ };
@@ -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-C5HBDfQB.js");
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-BZPatFG9.js").then((n) => n.r);
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencami",
3
- "version": "1.8.6",
3
+ "version": "1.8.7",
4
4
  "type": "module",
5
5
  "description": "OpenCami - A beautiful web client for OpenClaw",
6
6
  "bin": {