opencami 1.4.0 → 1.5.1
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/README.md +60 -0
- package/dist/client/assets/CSPContext-BBLAL_m_.js +1 -0
- package/dist/client/assets/DirectionContext-DXnZc0zz.js +1 -0
- package/dist/client/assets/_sessionKey-BidmO1-D.js +100 -0
- package/dist/client/assets/agents-CtZs_u1j.js +2 -0
- package/dist/client/assets/agents-screen-Basce5qo.js +1 -0
- package/dist/client/assets/bots-C_dWjy3z.js +2 -0
- package/dist/client/assets/bots-screen-n_xhYOEE.js +1 -0
- package/dist/client/assets/button-BaHefIXU.js +1 -0
- package/dist/client/assets/c-BIGW1oBm.js +1 -0
- package/dist/client/assets/{connect-D3baVDFL.js → connect-DHr3hhUR.js} +1 -1
- package/dist/client/assets/core-BrHBc0Zp.js +12 -0
- package/dist/client/assets/cpp-B-lmv-kZ.js +1 -0
- package/dist/client/assets/csharp-K5feNrxe.js +1 -0
- package/dist/client/assets/css-DPfMkruS.js +1 -0
- package/dist/client/assets/diff-D97Zzqfu.js +1 -0
- package/dist/client/assets/dockerfile-BcOcwvcX.js +1 -0
- package/dist/client/assets/engine-javascript-PwbX1GN8.js +141 -0
- package/dist/client/assets/file-explorer-screen-8t6M4Xco.js +1 -0
- package/dist/client/assets/files-BdlpK3Cy.js +2 -0
- package/dist/client/assets/go-Dn2_MT6a.js +1 -0
- package/dist/client/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/client/assets/html-GMplVEZG.js +1 -0
- package/dist/client/assets/index-B2iG4EM1.js +3 -0
- package/dist/client/assets/{index-ByIsZcHh.js → index-GTR-Xzl2.js} +1 -1
- package/dist/client/assets/index-T4TOjvD0.js +1 -0
- package/dist/client/assets/java-CylS5w8V.js +1 -0
- package/dist/client/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/client/assets/json-Cp-IABpG.js +1 -0
- package/dist/client/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/client/assets/keyboard-shortcuts-dialog-CcKSlK52.js +1 -0
- package/dist/client/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/client/assets/{main-CkIF0soY.js → main-mIHr_ble.js} +129 -17
- package/dist/client/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/client/assets/{opencami-logo-CIxSO1oo.js → opencami-logo-CRIdKbbZ.js} +1 -1
- package/dist/client/assets/php-CDn_0X-4.js +1 -0
- package/dist/client/assets/python-B6aJPvgy.js +1 -0
- package/dist/client/assets/react-Cfq4ot0g.js +1 -0
- package/dist/client/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/client/assets/ruby-FDmvQDUv.js +1 -0
- package/dist/client/assets/rust-B1yitclQ.js +1 -0
- package/dist/client/assets/search-dialog-D19x_xaG.js +1 -0
- package/dist/client/assets/session-export-dialog-DRlJwhMa.js +1 -0
- package/dist/client/assets/settings-dialog-BA5FjiyP.js +1 -0
- package/dist/client/assets/shell-DfDnw5Jg.js +1 -0
- package/dist/client/assets/skills-lmNPZksG.js +2 -0
- package/dist/client/assets/skills-panel-Cv-N_MDk.js +5 -0
- package/dist/client/assets/sql-BLtJtn59.js +1 -0
- package/dist/client/assets/styles-JgjN_ZCd.css +1 -0
- package/dist/client/assets/swift-Dg5xB15N.js +1 -0
- package/dist/client/assets/switch-Bh9tVOYh.js +1 -0
- package/dist/client/assets/tabs-BfaEc9zS.js +1 -0
- package/dist/client/assets/toml-vGWfd6FD.js +1 -0
- package/dist/client/assets/tooltip-w9D-e_R-.js +1 -0
- package/dist/client/assets/tsx-COt5Ahok.js +1 -0
- package/dist/client/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/client/assets/use-file-explorer-state-CLaDuI9X.js +12 -0
- package/dist/client/assets/useButton-DsMdJPGn.js +1 -0
- package/dist/client/assets/useCompositeItem-CaYygSfB.js +1 -0
- package/dist/client/assets/{useControlled-Y306krcC.js → useControlled-wOKVgKF4.js} +1 -1
- package/dist/client/assets/{useMutation-0WgW4xQJ.js → useMutation-fJnleJAb.js} +1 -1
- package/dist/client/assets/visuallyHidden-CqGRL_Oq.js +9 -0
- package/dist/client/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/client/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/client/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/client/assets/yaml-Buea-lGh.js +1 -0
- package/dist/server/assets/{_sessionKey-BhFH4uWY.js → _sessionKey-B5UHBd2U.js} +190 -54
- package/dist/server/assets/_tanstack-start-manifest_v-D11xMFUx.js +4 -0
- package/dist/server/assets/{agents-Dz_i76VW.js → agents-CmQ4vvXm.js} +1 -1
- package/dist/server/assets/{agents-screen-CqQPJndp.js → agents-screen-bmrIyFbk.js} +43 -35
- package/dist/server/assets/{bots-6ryCIgKh.js → bots-Byt6jv0a.js} +1 -1
- package/dist/server/assets/bots-screen-C2TGFv42.js +474 -0
- package/dist/server/assets/{button-DtQ3rV1m.js → button-CwY2OHFj.js} +2 -2
- package/dist/server/assets/{connect-B8jpGQGK.js → connect-CbgijWz4.js} +2 -35
- package/dist/server/assets/{file-explorer-screen-DCfS_Ajx.js → file-explorer-screen-CVlFiAFu.js} +36 -36
- package/dist/server/assets/{files-D2GIrPF4.js → files-BIEcSPGp.js} +1 -1
- package/dist/server/assets/{index-B2JHn34C.js → index--_jH_0mX.js} +2 -1
- package/dist/server/assets/{index-BNSsDaLb.js → index-Dl2BOKP7.js} +116 -82
- package/dist/server/assets/{keyboard-shortcuts-dialog-CqIm8aYF.js → keyboard-shortcuts-dialog-CsNP85q8.js} +2 -2
- package/dist/server/assets/{router-Dme7USeO.js → router-DJA7GtMo.js} +356 -64
- package/dist/server/assets/{search-dialog-DG0D9KRN.js → search-dialog-C2a3OYm_.js} +64 -83
- package/dist/server/assets/{session-export-dialog-DLPZVlQV.js → session-export-dialog-CwclV0Aj.js} +2 -2
- package/dist/server/assets/{settings-dialog-BaGT4e5l.js → settings-dialog-CHVzrou9.js} +390 -128
- package/dist/server/assets/skills-Cy8xclXY.js +11 -0
- package/dist/server/assets/skills-panel-BnRNb7u9.js +762 -0
- package/dist/server/assets/{switch-DnX0MjGS.js → switch-BbkUeVDV.js} +1 -1
- package/dist/server/assets/tabs-DDFZob0m.js +67 -0
- package/dist/server/assets/{tooltip-gbV6rEVv.js → tooltip-DgsSPocE.js} +1 -1
- package/dist/server/assets/{use-file-explorer-state-DfAKF2gZ.js → use-file-explorer-state-Il1LlBAe.js} +1 -1
- package/dist/server/server.js +2 -2
- package/package.json +7 -2
- package/dist/client/assets/_sessionKey-DB95zj1L.js +0 -97
- package/dist/client/assets/agents-LFrWe-HX.js +0 -2
- package/dist/client/assets/agents-screen-CEBBk1yO.js +0 -1
- package/dist/client/assets/bots-CxDwf_WK.js +0 -2
- package/dist/client/assets/bots-screen-D6qma1wK.js +0 -1
- package/dist/client/assets/button-Il3CHIzX.js +0 -1
- package/dist/client/assets/file-explorer-screen-rtV6n-5_.js +0 -1
- package/dist/client/assets/files-DMemuq9D.js +0 -2
- package/dist/client/assets/index-CVV4XiZo.js +0 -153
- package/dist/client/assets/keyboard-shortcuts-dialog-DXC0YHoy.js +0 -1
- package/dist/client/assets/react-BhVdgA5r.js +0 -1
- package/dist/client/assets/search-dialog-I1jJplIh.js +0 -1
- package/dist/client/assets/session-export-dialog-CH5unryw.js +0 -1
- package/dist/client/assets/settings-dialog-B8v-GVJ8.js +0 -1
- package/dist/client/assets/styles-BaTVzdPa.css +0 -1
- package/dist/client/assets/switch-sQnv1YsK.js +0 -1
- package/dist/client/assets/tooltip-j_viC_EE.js +0 -1
- package/dist/client/assets/use-file-explorer-state-BUH-u7Jv.js +0 -12
- package/dist/client/assets/useButton-9VAzplAB.js +0 -9
- package/dist/server/assets/_tanstack-start-manifest_v-BaIrL1VQ.js +0 -4
- package/dist/server/assets/bots-screen-DS_ZF9Ec.js +0 -417
|
@@ -3,14 +3,14 @@ import { useState, useRef, useEffect, useCallback, useMemo } from "react";
|
|
|
3
3
|
import { useNavigate } from "@tanstack/react-router";
|
|
4
4
|
import { HugeiconsIcon } from "@hugeicons/react";
|
|
5
5
|
import { Search01Icon, Cancel01Icon, Loading03Icon } from "@hugeicons/core-free-icons";
|
|
6
|
-
import { D as DialogRoot, a as DialogContent } from "./use-file-explorer-state-
|
|
6
|
+
import { D as DialogRoot, a as DialogContent } from "./use-file-explorer-state-Il1LlBAe.js";
|
|
7
7
|
import { useQueryClient } from "@tanstack/react-query";
|
|
8
|
-
import { c as chatQueryKeys } from "./_sessionKey-
|
|
9
|
-
import { c as cn } from "./button-
|
|
8
|
+
import { c as chatQueryKeys } from "./_sessionKey-B5UHBd2U.js";
|
|
9
|
+
import { c as cn } from "./button-CwY2OHFj.js";
|
|
10
10
|
import "@base-ui/react/dialog";
|
|
11
11
|
import "@base-ui/react/menu";
|
|
12
12
|
import "zustand";
|
|
13
|
-
import "./tooltip-
|
|
13
|
+
import "./tooltip-DgsSPocE.js";
|
|
14
14
|
import "@base-ui/react/tooltip";
|
|
15
15
|
import "motion/react";
|
|
16
16
|
import "@base-ui/react/alert-dialog";
|
|
@@ -21,49 +21,17 @@ import "marked";
|
|
|
21
21
|
import "react-markdown";
|
|
22
22
|
import "remark-breaks";
|
|
23
23
|
import "remark-gfm";
|
|
24
|
-
import "./index-
|
|
25
|
-
import "shiki/core";
|
|
26
|
-
import "shiki/engine/javascript";
|
|
27
|
-
import "@shikijs/themes/vitesse-dark";
|
|
28
|
-
import "@shikijs/themes/vitesse-light";
|
|
29
|
-
import "@shikijs/langs/bash";
|
|
30
|
-
import "@shikijs/langs/c";
|
|
31
|
-
import "@shikijs/langs/cpp";
|
|
32
|
-
import "@shikijs/langs/csharp";
|
|
33
|
-
import "@shikijs/langs/css";
|
|
34
|
-
import "@shikijs/langs/diff";
|
|
35
|
-
import "@shikijs/langs/dockerfile";
|
|
36
|
-
import "@shikijs/langs/go";
|
|
37
|
-
import "@shikijs/langs/graphql";
|
|
38
|
-
import "@shikijs/langs/html";
|
|
39
|
-
import "@shikijs/langs/java";
|
|
40
|
-
import "@shikijs/langs/javascript";
|
|
41
|
-
import "@shikijs/langs/json";
|
|
42
|
-
import "@shikijs/langs/jsx";
|
|
43
|
-
import "@shikijs/langs/kotlin";
|
|
44
|
-
import "@shikijs/langs/markdown";
|
|
45
|
-
import "@shikijs/langs/php";
|
|
46
|
-
import "@shikijs/langs/python";
|
|
47
|
-
import "@shikijs/langs/regexp";
|
|
48
|
-
import "@shikijs/langs/ruby";
|
|
49
|
-
import "@shikijs/langs/rust";
|
|
50
|
-
import "@shikijs/langs/shell";
|
|
51
|
-
import "@shikijs/langs/sql";
|
|
52
|
-
import "@shikijs/langs/swift";
|
|
53
|
-
import "@shikijs/langs/toml";
|
|
54
|
-
import "@shikijs/langs/typescript";
|
|
55
|
-
import "@shikijs/langs/tsx";
|
|
56
|
-
import "@shikijs/langs/xml";
|
|
57
|
-
import "@shikijs/langs/yaml";
|
|
24
|
+
import "./index-Dl2BOKP7.js";
|
|
58
25
|
import "zustand/middleware";
|
|
59
26
|
import "react-dom";
|
|
60
|
-
import "./router-
|
|
27
|
+
import "./router-DJA7GtMo.js";
|
|
61
28
|
import "node:crypto";
|
|
62
29
|
import "ws";
|
|
63
30
|
import "node:fs";
|
|
64
31
|
import "node:path";
|
|
65
32
|
import "node:os";
|
|
66
33
|
import "@tanstack/router-core/ssr/client";
|
|
34
|
+
import "node:child_process";
|
|
67
35
|
import "node:fs/promises";
|
|
68
36
|
import "path";
|
|
69
37
|
import "@base-ui/react/merge-props";
|
|
@@ -123,6 +91,7 @@ function useSearch({ sessions, currentFriendlyId, currentSessionKey }) {
|
|
|
123
91
|
friendlyId: currentFriendlyId,
|
|
124
92
|
sessionTitle,
|
|
125
93
|
messageIndex: index,
|
|
94
|
+
messageId: typeof message.id === "string" ? message.id : void 0,
|
|
126
95
|
messageRole: message.role || "unknown",
|
|
127
96
|
messageText: text,
|
|
128
97
|
matchStart: matchIndex,
|
|
@@ -158,57 +127,55 @@ function useSearch({ sessions, currentFriendlyId, currentSessionKey }) {
|
|
|
158
127
|
throw new DOMException("Search aborted", "AbortError");
|
|
159
128
|
}
|
|
160
129
|
const batch = sessions.slice(i, i + BATCH_SIZE);
|
|
161
|
-
const
|
|
130
|
+
const batchSettled = await Promise.allSettled(
|
|
162
131
|
batch.map(async (session) => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
132
|
+
const historyKey = chatQueryKeys.history(session.friendlyId, session.key);
|
|
133
|
+
let historyData = queryClient.getQueryData(historyKey);
|
|
134
|
+
if (!historyData) {
|
|
135
|
+
const params = new URLSearchParams({
|
|
136
|
+
sessionKey: session.key,
|
|
137
|
+
friendlyId: session.friendlyId,
|
|
138
|
+
limit: "200"
|
|
139
|
+
});
|
|
140
|
+
const res = await fetch(`/api/history?${params.toString()}`, {
|
|
141
|
+
signal: controller.signal
|
|
142
|
+
});
|
|
143
|
+
if (res.ok) {
|
|
144
|
+
historyData = await res.json();
|
|
145
|
+
queryClient.setQueryData(historyKey, historyData);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!historyData?.messages) return [];
|
|
149
|
+
const sessionTitle = session.label || session.title || session.derivedTitle || session.friendlyId;
|
|
150
|
+
const sessionResults = [];
|
|
151
|
+
historyData.messages.forEach((message, index) => {
|
|
152
|
+
const text = extractTextFromMessage(message);
|
|
153
|
+
if (!text) return;
|
|
154
|
+
const lowerText = text.toLowerCase();
|
|
155
|
+
const matchIndex = lowerText.indexOf(normalizedQuery);
|
|
156
|
+
if (matchIndex !== -1) {
|
|
157
|
+
sessionResults.push({
|
|
168
158
|
sessionKey: session.key,
|
|
169
159
|
friendlyId: session.friendlyId,
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
160
|
+
sessionTitle,
|
|
161
|
+
messageIndex: index,
|
|
162
|
+
messageId: typeof message.id === "string" ? message.id : void 0,
|
|
163
|
+
messageRole: message.role || "unknown",
|
|
164
|
+
messageText: text,
|
|
165
|
+
matchStart: matchIndex,
|
|
166
|
+
matchEnd: matchIndex + trimmedQuery.length,
|
|
167
|
+
timestamp: message.timestamp
|
|
174
168
|
});
|
|
175
|
-
if (res.ok) {
|
|
176
|
-
historyData = await res.json();
|
|
177
|
-
queryClient.setQueryData(historyKey, historyData);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
if (!historyData?.messages) return [];
|
|
181
|
-
const sessionTitle = session.label || session.title || session.derivedTitle || session.friendlyId;
|
|
182
|
-
const sessionResults = [];
|
|
183
|
-
historyData.messages.forEach((message, index) => {
|
|
184
|
-
const text = extractTextFromMessage(message);
|
|
185
|
-
if (!text) return;
|
|
186
|
-
const lowerText = text.toLowerCase();
|
|
187
|
-
const matchIndex = lowerText.indexOf(normalizedQuery);
|
|
188
|
-
if (matchIndex !== -1) {
|
|
189
|
-
sessionResults.push({
|
|
190
|
-
sessionKey: session.key,
|
|
191
|
-
friendlyId: session.friendlyId,
|
|
192
|
-
sessionTitle,
|
|
193
|
-
messageIndex: index,
|
|
194
|
-
messageRole: message.role || "unknown",
|
|
195
|
-
messageText: text,
|
|
196
|
-
matchStart: matchIndex,
|
|
197
|
-
matchEnd: matchIndex + trimmedQuery.length,
|
|
198
|
-
timestamp: message.timestamp
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
return sessionResults;
|
|
203
|
-
} catch (error) {
|
|
204
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
205
|
-
throw error;
|
|
206
169
|
}
|
|
207
|
-
|
|
208
|
-
|
|
170
|
+
});
|
|
171
|
+
return sessionResults;
|
|
209
172
|
})
|
|
210
173
|
);
|
|
211
|
-
|
|
174
|
+
for (const result of batchSettled) {
|
|
175
|
+
if (result.status === "fulfilled") {
|
|
176
|
+
allResults.push(...result.value);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
212
179
|
allResults.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0));
|
|
213
180
|
setGlobalResults([...allResults]);
|
|
214
181
|
}
|
|
@@ -271,6 +238,7 @@ function highlightMatch(text, query) {
|
|
|
271
238
|
const after = text.slice(matchIndex + query.length, end) + (end < text.length ? "..." : "");
|
|
272
239
|
return { before, match, after };
|
|
273
240
|
}
|
|
241
|
+
const SEARCH_JUMP_TARGET_KEY = "opencami-search-jump-target";
|
|
274
242
|
function SearchDialog({
|
|
275
243
|
open,
|
|
276
244
|
onOpenChange,
|
|
@@ -340,6 +308,19 @@ function SearchDialog({
|
|
|
340
308
|
if (mode === "current" && onJumpToMessage) {
|
|
341
309
|
onJumpToMessage(result);
|
|
342
310
|
} else {
|
|
311
|
+
if (result.messageId && typeof window !== "undefined") {
|
|
312
|
+
try {
|
|
313
|
+
sessionStorage.setItem(
|
|
314
|
+
SEARCH_JUMP_TARGET_KEY,
|
|
315
|
+
JSON.stringify({
|
|
316
|
+
friendlyId: result.friendlyId,
|
|
317
|
+
messageId: result.messageId,
|
|
318
|
+
at: Date.now()
|
|
319
|
+
})
|
|
320
|
+
);
|
|
321
|
+
} catch {
|
|
322
|
+
}
|
|
323
|
+
}
|
|
343
324
|
navigate({
|
|
344
325
|
to: "/chat/$sessionKey",
|
|
345
326
|
params: { sessionKey: result.friendlyId }
|
package/dist/server/assets/{session-export-dialog-DLPZVlQV.js → session-export-dialog-CwclV0Aj.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { D as DialogRoot, a as DialogContent, b as DialogTitle, c as DialogDescription, d as DialogClose } from "./use-file-explorer-state-
|
|
4
|
-
import { B as Button } from "./button-
|
|
3
|
+
import { D as DialogRoot, a as DialogContent, b as DialogTitle, c as DialogDescription, d as DialogClose } from "./use-file-explorer-state-Il1LlBAe.js";
|
|
4
|
+
import { B as Button } from "./button-CwY2OHFj.js";
|
|
5
5
|
import "@base-ui/react/dialog";
|
|
6
6
|
import "@base-ui/react/menu";
|
|
7
7
|
import "zustand";
|