reasonix 0.40.0 → 0.43.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/README.md +47 -16
- package/README.zh-CN.md +19 -13
- package/dashboard/app.css +8 -4
- package/dashboard/dist/app.js +377 -227
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/acp-DAGPCVFZ.js +713 -0
- package/dist/cli/acp-DAGPCVFZ.js.map +1 -0
- package/dist/cli/chat-7ES4IBNH.js +50 -0
- package/dist/cli/{chunk-E46ECXJD.js → chunk-2425HK6U.js} +2 -1
- package/dist/cli/{chunk-E46ECXJD.js.map → chunk-2425HK6U.js.map} +1 -1
- package/dist/cli/chunk-25T6CVUP.js +172 -0
- package/dist/cli/chunk-25T6CVUP.js.map +1 -0
- package/dist/cli/{chunk-7DLHHBGN.js → chunk-2K65GZBT.js} +16 -5
- package/dist/cli/chunk-2K65GZBT.js.map +1 -0
- package/dist/cli/{chunk-KMWKGPFZ.js → chunk-2KDUS647.js} +14 -4
- package/dist/cli/chunk-2KDUS647.js.map +1 -0
- package/dist/cli/chunk-2R4QCDOZ.js +11392 -0
- package/dist/cli/chunk-2R4QCDOZ.js.map +1 -0
- package/dist/cli/{chunk-3Q3C4W66.js → chunk-2UQP6H6T.js} +2 -1
- package/dist/cli/{chunk-3Q3C4W66.js.map → chunk-2UQP6H6T.js.map} +1 -1
- package/dist/cli/chunk-2Z35JOA4.js +96 -0
- package/dist/cli/chunk-2Z35JOA4.js.map +1 -0
- package/dist/cli/chunk-32TIKD5U.js +54 -0
- package/dist/cli/{chunk-JWCTX5S4.js.map → chunk-32TIKD5U.js.map} +1 -1
- package/dist/cli/{chunk-UVRXTSK3.js → chunk-3BXRZFWS.js} +65 -3
- package/dist/cli/chunk-3BXRZFWS.js.map +1 -0
- package/dist/cli/chunk-3Z6IBU3D.js +249 -0
- package/dist/cli/chunk-3Z6IBU3D.js.map +1 -0
- package/dist/cli/{chunk-VLNRQMCI.js → chunk-45U62RI3.js} +12 -5
- package/dist/cli/chunk-45U62RI3.js.map +1 -0
- package/dist/cli/{chunk-5GKJLNP2.js → chunk-4QUNBQQ2.js} +3 -2
- package/dist/cli/{chunk-5GKJLNP2.js.map → chunk-4QUNBQQ2.js.map} +1 -1
- package/dist/cli/{chunk-R4YTW7PR.js → chunk-5JJRUIPA.js} +57 -12
- package/dist/cli/chunk-5JJRUIPA.js.map +1 -0
- package/dist/cli/{chunk-HCC42PEI.js → chunk-6AK4EY3D.js} +12 -6
- package/dist/cli/chunk-6AK4EY3D.js.map +1 -0
- package/dist/cli/chunk-6G3CUUFG.js +34320 -0
- package/dist/cli/chunk-6G3CUUFG.js.map +1 -0
- package/dist/cli/{chunk-XST7BSZJ.js → chunk-6PBZN4VI.js} +21 -3
- package/dist/cli/chunk-6PBZN4VI.js.map +1 -0
- package/dist/cli/{chunk-A5LSGEEK.js → chunk-6PZ3CXBP.js} +88 -66
- package/dist/cli/chunk-6PZ3CXBP.js.map +1 -0
- package/dist/cli/chunk-74EX7SUH.js +25293 -0
- package/dist/cli/chunk-74EX7SUH.js.map +1 -0
- package/dist/cli/{chunk-FFNOMR32.js → chunk-7O5ALB4C.js} +3 -2
- package/dist/cli/{chunk-FFNOMR32.js.map → chunk-7O5ALB4C.js.map} +1 -1
- package/dist/cli/{chunk-UCMTWZKU.js → chunk-DOYHN4KB.js} +3 -2
- package/dist/cli/{chunk-UCMTWZKU.js.map → chunk-DOYHN4KB.js.map} +1 -1
- package/dist/cli/{chunk-XJLZ4HKU.js → chunk-F3PXYSNN.js} +3 -2
- package/dist/cli/{chunk-XJLZ4HKU.js.map → chunk-F3PXYSNN.js.map} +1 -1
- package/dist/cli/{chunk-XHQIK7B6.js → chunk-FHOGSSCH.js} +4 -3
- package/dist/cli/{chunk-XHQIK7B6.js.map → chunk-FHOGSSCH.js.map} +1 -1
- package/dist/cli/{chunk-IYF36OCJ.js → chunk-H6PS7IUE.js} +3 -2
- package/dist/cli/{chunk-IYF36OCJ.js.map → chunk-H6PS7IUE.js.map} +1 -1
- package/dist/cli/{chunk-ZTLZO42A.js → chunk-HFEAY5DT.js} +3 -2
- package/dist/cli/{chunk-ZTLZO42A.js.map → chunk-HFEAY5DT.js.map} +1 -1
- package/dist/cli/{chunk-FWGEHRB7.js → chunk-J5XJHLWM.js} +2 -1
- package/dist/cli/{chunk-FWGEHRB7.js.map → chunk-J5XJHLWM.js.map} +1 -1
- package/dist/cli/chunk-JMBMLOBP.js +26 -0
- package/dist/cli/chunk-JMBMLOBP.js.map +1 -0
- package/dist/cli/{chunk-SZH34P45.js → chunk-O52OLQL3.js} +52 -18
- package/dist/cli/chunk-O52OLQL3.js.map +1 -0
- package/dist/cli/{chunk-4DCHFFEY.js → chunk-OSZC7C6F.js} +3 -2
- package/dist/cli/{chunk-4DCHFFEY.js.map → chunk-OSZC7C6F.js.map} +1 -1
- package/dist/cli/chunk-P7EKE5ZQ.js +60641 -0
- package/dist/cli/chunk-P7EKE5ZQ.js.map +1 -0
- package/dist/cli/{chunk-FM57FNPJ.js → chunk-PLHAZOLZ.js} +2 -1
- package/dist/cli/{chunk-FM57FNPJ.js.map → chunk-PLHAZOLZ.js.map} +1 -1
- package/dist/cli/{chunk-RFX7TYVV.js → chunk-PQXPXJBJ.js} +16 -2
- package/dist/cli/chunk-PQXPXJBJ.js.map +1 -0
- package/dist/cli/{chunk-DAEAAVDF.js → chunk-PV55UMTO.js} +2 -1
- package/dist/cli/{chunk-DAEAAVDF.js.map → chunk-PV55UMTO.js.map} +1 -1
- package/dist/cli/{chunk-H7PHYVPM.js → chunk-RE4RAVFF.js} +85 -14
- package/dist/cli/chunk-RE4RAVFF.js.map +1 -0
- package/dist/cli/chunk-S4XVGLRW.js +499 -0
- package/dist/cli/chunk-S4XVGLRW.js.map +1 -0
- package/dist/cli/{chunk-WJ3YX4PZ.js → chunk-SZ5XES2N.js} +3 -2
- package/dist/cli/{chunk-WJ3YX4PZ.js.map → chunk-SZ5XES2N.js.map} +1 -1
- package/dist/cli/{chunk-4X3NY5ZM.js → chunk-TJX6BFZZ.js} +16 -9
- package/dist/cli/{chunk-4X3NY5ZM.js.map → chunk-TJX6BFZZ.js.map} +1 -1
- package/dist/cli/chunk-TUK7OWJA.js +51 -0
- package/dist/cli/{chunk-WKOMCPXP.js → chunk-VK5HG73G.js} +26 -17
- package/dist/cli/chunk-VK5HG73G.js.map +1 -0
- package/dist/cli/{chunk-CLAN6PVH.js → chunk-XCGGEJTI.js} +21 -8
- package/dist/cli/chunk-XCGGEJTI.js.map +1 -0
- package/dist/cli/{chunk-SOZE7V7V.js → chunk-XJXDHAES.js} +3 -2
- package/dist/cli/{chunk-SOZE7V7V.js.map → chunk-XJXDHAES.js.map} +1 -1
- package/dist/cli/chunk-XPDVG52A.js +2648 -0
- package/dist/cli/chunk-XPDVG52A.js.map +1 -0
- package/dist/cli/{chunk-CRPQUBP6.js → chunk-XXC2BYTV.js} +2 -1
- package/dist/cli/{chunk-CRPQUBP6.js.map → chunk-XXC2BYTV.js.map} +1 -1
- package/dist/cli/{chunk-AVB3WZWU.js → chunk-YFGF5NKA.js} +17 -14
- package/dist/cli/{chunk-AVB3WZWU.js.map → chunk-YFGF5NKA.js.map} +1 -1
- package/dist/cli/{chunk-ORM6PK57.js → chunk-YQ6NTIIE.js} +2 -1
- package/dist/cli/{chunk-ORM6PK57.js.map → chunk-YQ6NTIIE.js.map} +1 -1
- package/dist/cli/{chunk-ULBW7DYL.js → chunk-YYQAUTTN.js} +3 -2
- package/dist/cli/{chunk-ULBW7DYL.js.map → chunk-YYQAUTTN.js.map} +1 -1
- package/dist/cli/chunk-ZZM6QJ4W.js +109 -0
- package/dist/cli/chunk-ZZM6QJ4W.js.map +1 -0
- package/dist/cli/code-SMKEW6CD.js +154 -0
- package/dist/cli/code-SMKEW6CD.js.map +1 -0
- package/dist/cli/{commands-FQZOBLLZ.js → commands-FVVB5FZF.js} +7 -5
- package/dist/cli/{commands-FQZOBLLZ.js.map → commands-FVVB5FZF.js.map} +1 -1
- package/dist/cli/{commit-ZS24SHPG.js → commit-HE4VSPZ7.js} +7 -4
- package/dist/cli/{commit-ZS24SHPG.js.map → commit-HE4VSPZ7.js.map} +1 -1
- package/dist/cli/{desktop-6OLENOOO.js → desktop-Q7NDXCON.js} +379 -72
- package/dist/cli/desktop-Q7NDXCON.js.map +1 -0
- package/dist/cli/devtools-YECO25QO.js +3719 -0
- package/dist/cli/devtools-YECO25QO.js.map +1 -0
- package/dist/cli/diff-435UTPC5.js +165 -0
- package/dist/cli/{diff-2VUKNGEI.js.map → diff-435UTPC5.js.map} +1 -1
- package/dist/cli/doctor-OT7KH75K.js +27 -0
- package/dist/cli/{events-APSVNROZ.js → events-XEFAD5VX.js} +6 -4
- package/dist/cli/{events-APSVNROZ.js.map → events-XEFAD5VX.js.map} +1 -1
- package/dist/cli/index.js +3233 -123
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-DCKOE5RF.js → mcp-WUL2WO75.js} +6 -4
- package/dist/cli/{mcp-DCKOE5RF.js.map → mcp-WUL2WO75.js.map} +1 -1
- package/dist/cli/{mcp-browse-D6GBP5RQ.js → mcp-browse-RR7R4XET.js} +34 -19
- package/dist/cli/mcp-browse-RR7R4XET.js.map +1 -0
- package/dist/cli/{mcp-inspect-KFGFPJ3E.js → mcp-inspect-REGLYBWT.js} +9 -8
- package/dist/cli/{mcp-inspect-KFGFPJ3E.js.map → mcp-inspect-REGLYBWT.js.map} +1 -1
- package/dist/cli/package.json +3 -0
- package/dist/cli/prompt-UW6EFLVR.js +16 -0
- package/dist/cli/{prune-sessions-LV33R47N.js → prune-sessions-3RWUBYRS.js} +4 -2
- package/dist/cli/{prune-sessions-LV33R47N.js.map → prune-sessions-3RWUBYRS.js.map} +1 -1
- package/dist/cli/{replay-WFCYX7XF.js → replay-YOURXV4C.js} +42 -30
- package/dist/cli/{replay-WFCYX7XF.js.map → replay-YOURXV4C.js.map} +1 -1
- package/dist/cli/{run-IUJYEPMT.js → run-Q6BUXV66.js} +28 -27
- package/dist/cli/{run-IUJYEPMT.js.map → run-Q6BUXV66.js.map} +1 -1
- package/dist/cli/{server-CN4QPPVJ.js → server-XGDBRWMB.js} +44 -43
- package/dist/cli/server-XGDBRWMB.js.map +1 -0
- package/dist/cli/{sessions-F5GPGTJN.js → sessions-FH7QVYSY.js} +22 -19
- package/dist/cli/{sessions-F5GPGTJN.js.map → sessions-FH7QVYSY.js.map} +1 -1
- package/dist/cli/setup-VDS6SVEP.js +618 -0
- package/dist/cli/setup-VDS6SVEP.js.map +1 -0
- package/dist/cli/stats-MQVI2XQH.js +14 -0
- package/dist/cli/update-6ITLPRDV.js +15 -0
- package/dist/cli/update-6ITLPRDV.js.map +1 -0
- package/dist/cli/version-DAHGZY5N.js +33 -0
- package/dist/cli/{version-KQUPV6T5.js.map → version-DAHGZY5N.js.map} +1 -1
- package/dist/index.d.ts +157 -103
- package/dist/index.js +597 -178
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/cli/chat-G7CUW4ZI.js +0 -45
- package/dist/cli/chunk-26UDIXLD.js +0 -16481
- package/dist/cli/chunk-26UDIXLD.js.map +0 -1
- package/dist/cli/chunk-4YV2GBYG.js +0 -5237
- package/dist/cli/chunk-4YV2GBYG.js.map +0 -1
- package/dist/cli/chunk-5X7LZJDE.js +0 -36
- package/dist/cli/chunk-5X7LZJDE.js.map +0 -1
- package/dist/cli/chunk-7DLHHBGN.js.map +0 -1
- package/dist/cli/chunk-A5LSGEEK.js.map +0 -1
- package/dist/cli/chunk-AFFZF3MW.js +0 -36
- package/dist/cli/chunk-AFFZF3MW.js.map +0 -1
- package/dist/cli/chunk-CLAN6PVH.js.map +0 -1
- package/dist/cli/chunk-CPOV2O73.js +0 -39
- package/dist/cli/chunk-CPOV2O73.js.map +0 -1
- package/dist/cli/chunk-CPTZ5OHX.js +0 -18
- package/dist/cli/chunk-CPTZ5OHX.js.map +0 -1
- package/dist/cli/chunk-CZSJILQP.js +0 -854
- package/dist/cli/chunk-CZSJILQP.js.map +0 -1
- package/dist/cli/chunk-H7PHYVPM.js.map +0 -1
- package/dist/cli/chunk-HCC42PEI.js.map +0 -1
- package/dist/cli/chunk-JWCTX5S4.js +0 -46
- package/dist/cli/chunk-KMWKGPFZ.js.map +0 -1
- package/dist/cli/chunk-MRLXEMZ7.js +0 -26
- package/dist/cli/chunk-MRLXEMZ7.js.map +0 -1
- package/dist/cli/chunk-R4YTW7PR.js.map +0 -1
- package/dist/cli/chunk-RFX7TYVV.js.map +0 -1
- package/dist/cli/chunk-SZH34P45.js.map +0 -1
- package/dist/cli/chunk-UVRXTSK3.js.map +0 -1
- package/dist/cli/chunk-VLNRQMCI.js.map +0 -1
- package/dist/cli/chunk-WKOMCPXP.js.map +0 -1
- package/dist/cli/chunk-XST7BSZJ.js.map +0 -1
- package/dist/cli/code-YQGVLIT2.js +0 -147
- package/dist/cli/code-YQGVLIT2.js.map +0 -1
- package/dist/cli/desktop-6OLENOOO.js.map +0 -1
- package/dist/cli/diff-2VUKNGEI.js +0 -153
- package/dist/cli/doctor-JO2WNN6C.js +0 -24
- package/dist/cli/mcp-browse-D6GBP5RQ.js.map +0 -1
- package/dist/cli/prompt-PKCCLLAD.js +0 -13
- package/dist/cli/server-CN4QPPVJ.js.map +0 -1
- package/dist/cli/setup-WWMDBPSB.js +0 -516
- package/dist/cli/setup-WWMDBPSB.js.map +0 -1
- package/dist/cli/stats-5RJCATCE.js +0 -12
- package/dist/cli/update-GUCWB4UN.js +0 -13
- package/dist/cli/version-KQUPV6T5.js +0 -30
- /package/dist/cli/{chat-G7CUW4ZI.js.map → chat-7ES4IBNH.js.map} +0 -0
- /package/dist/cli/{doctor-JO2WNN6C.js.map → chunk-TUK7OWJA.js.map} +0 -0
- /package/dist/cli/{prompt-PKCCLLAD.js.map → doctor-OT7KH75K.js.map} +0 -0
- /package/dist/cli/{stats-5RJCATCE.js.map → prompt-UW6EFLVR.js.map} +0 -0
- /package/dist/cli/{update-GUCWB4UN.js.map → stats-MQVI2XQH.js.map} +0 -0
package/dashboard/dist/app.js
CHANGED
|
@@ -18925,6 +18925,20 @@ async function api(path, opts = {}) {
|
|
|
18925
18925
|
return parsed;
|
|
18926
18926
|
}
|
|
18927
18927
|
|
|
18928
|
+
// dashboard/src/lib/bus-filter.ts
|
|
18929
|
+
var THIRD_PARTY_ORIGIN_PREFIXES = [
|
|
18930
|
+
"chrome-extension://",
|
|
18931
|
+
"moz-extension://",
|
|
18932
|
+
"safari-web-extension://",
|
|
18933
|
+
"safari-extension://",
|
|
18934
|
+
"ms-browser-extension://"
|
|
18935
|
+
];
|
|
18936
|
+
function isThirdPartyError(error, filename) {
|
|
18937
|
+
const hay = `${filename ?? ""}
|
|
18938
|
+
${error?.stack ?? ""}`;
|
|
18939
|
+
return THIRD_PARTY_ORIGIN_PREFIXES.some((prefix) => hay.includes(prefix));
|
|
18940
|
+
}
|
|
18941
|
+
|
|
18928
18942
|
// dashboard/src/lib/bus.ts
|
|
18929
18943
|
var html = htm_module_default.bind(k);
|
|
18930
18944
|
var appBus = new EventTarget();
|
|
@@ -18940,9 +18954,11 @@ function reportAppError(error, source, info) {
|
|
|
18940
18954
|
}
|
|
18941
18955
|
window.addEventListener("error", (ev) => {
|
|
18942
18956
|
if (!ev.error) return;
|
|
18957
|
+
if (isThirdPartyError(ev.error, ev.filename)) return;
|
|
18943
18958
|
reportAppError(ev.error, "window", ev.message);
|
|
18944
18959
|
});
|
|
18945
18960
|
window.addEventListener("unhandledrejection", (ev) => {
|
|
18961
|
+
if (isThirdPartyError(ev.reason)) return;
|
|
18946
18962
|
reportAppError(ev.reason, "promise");
|
|
18947
18963
|
});
|
|
18948
18964
|
function ToastStack() {
|
|
@@ -19486,7 +19502,44 @@ var en = {
|
|
|
19486
19502
|
colDesc: "description",
|
|
19487
19503
|
readOnly: "read-only",
|
|
19488
19504
|
write: "write",
|
|
19489
|
-
flat: "flat"
|
|
19505
|
+
flat: "flat",
|
|
19506
|
+
desc: {
|
|
19507
|
+
web_search: "Search the public web. Returns ranked results with title, url, and snippet. Call this when the answer depends on current state \u2014 events, prices, releases, real-world status.",
|
|
19508
|
+
web_fetch: "Download a URL and return its visible text content (scripts/styles/nav stripped). Use after web_search when a snippet isn't enough.",
|
|
19509
|
+
run_command: "Run a shell command in the project root; returns combined stdout+stderr. Allowlisted read-only commands run immediately; mutations are gated by user confirmation.",
|
|
19510
|
+
run_background: "Spawn a long-running process and detach. Returns a job id for tailing logs, waiting for completion, or killing. Use for dev servers, watchers, and one-shot long jobs.",
|
|
19511
|
+
job_output: "Read the latest output of a background job. Returns the tail of the buffer and tells you whether the job is still running.",
|
|
19512
|
+
wait_for_job: "Block server-side until a background job finishes, bounded by timeout. Use instead of polling job_output in a loop.",
|
|
19513
|
+
stop_job: "Stop a background job. SIGTERM first, SIGKILL after a grace period. Safe to call on an already-exited job.",
|
|
19514
|
+
list_jobs: "List every background job started this session \u2014 running and exited \u2014 with id, command, pid, and status.",
|
|
19515
|
+
remember: "Save a memory for future sessions. Use when the user states a preference, corrects your approach, shares a non-obvious fact, or asks you to remember something.",
|
|
19516
|
+
forget: "Delete a memory file and remove it from MEMORY.md. Use when the user asks to forget something or a remembered fact is now wrong.",
|
|
19517
|
+
recall_memory: "Read the full body of a memory file when its one-line summary isn't enough detail.",
|
|
19518
|
+
read_file: "Read a file under the sandbox root. Supports head/tail/range scoping to save context. Auto-returns a preview for files over 200 lines.",
|
|
19519
|
+
list_directory: "List entries in a directory. Returns one line per entry, marking directories with a trailing slash.",
|
|
19520
|
+
directory_tree: "Recursively list entries in a directory as an indented tree. Budget-aware with auto-collapse for large subtrees.",
|
|
19521
|
+
search_files: "Find files whose NAME matches a substring or regex. Case-insensitive. Skips dependency/build directories by default.",
|
|
19522
|
+
search_content: "Recursively grep file CONTENTS for a substring or regex. Returns matches in path:line:text format. The right tool for finding references.",
|
|
19523
|
+
glob: "List files matching a glob pattern, sorted by mtime. Default limit 200, max 1000. Skips node_modules/.git/dist by default.",
|
|
19524
|
+
get_file_info: "Stat a path under the sandbox root. Returns type, size in bytes, and mtime.",
|
|
19525
|
+
write_file: "Create or overwrite a file with the given content. Parent directories are created as needed.",
|
|
19526
|
+
edit_file: "Apply a SEARCH/REPLACE edit to an existing file. The search must match exactly and be unique in the file.",
|
|
19527
|
+
multi_edit: "Apply N SEARCH/REPLACE edits across one or more files atomically. If any edit fails, no files are written.",
|
|
19528
|
+
create_directory: "Create a directory (and any missing parents) under the sandbox root.",
|
|
19529
|
+
move_file: "Rename or move a file or directory under the sandbox root.",
|
|
19530
|
+
delete_file: "Delete one file under the sandbox root. Refuses directories \u2014 use delete_directory for those.",
|
|
19531
|
+
delete_directory: "Recursively delete a directory under the sandbox root. Pass recursive:false to refuse non-empty directories.",
|
|
19532
|
+
copy_file: "Copy a file or directory under the sandbox root. Refuses to overwrite an existing destination.",
|
|
19533
|
+
submit_plan: "Submit one concrete plan for a review gate. Use for multi-file refactors, architecture changes, or anything expensive to undo.",
|
|
19534
|
+
mark_step_complete: "Mark one step of the approved plan as done. Call exactly once after finishing each step.",
|
|
19535
|
+
revise_plan: "Surgically replace the remaining steps of an in-flight plan. Done steps are never touched.",
|
|
19536
|
+
run_skill: "Invoke a playbook from the Skills index. Pass the bare skill name. Subagent-tagged skills spawn an isolated subagent.",
|
|
19537
|
+
spawn_subagent: "Spawn an isolated subagent for a self-contained subtask. Use for parallel fan-out or when the work needs many file reads.",
|
|
19538
|
+
todo_write: "In-session task tracker for multi-step work. Replaces the entire list every call. No approval gate or file writes.",
|
|
19539
|
+
ask_choice: "Present 2-6 alternatives to the user. Use when the user asks for options or you need a preference decision.",
|
|
19540
|
+
create_skill: "Scaffold a new skill the user can invoke later via /skill. Supports inline and subagent run modes.",
|
|
19541
|
+
add_mcp_server: "Register a new MCP server in the user's config. Takes effect on the next session. Supports stdio, SSE, and streamable-http."
|
|
19542
|
+
}
|
|
19490
19543
|
},
|
|
19491
19544
|
permissions: {
|
|
19492
19545
|
loading: "loading permissions\u2026",
|
|
@@ -20109,7 +20162,44 @@ var zhCN = {
|
|
|
20109
20162
|
colDesc: "\u63CF\u8FF0",
|
|
20110
20163
|
readOnly: "\u53EA\u8BFB",
|
|
20111
20164
|
write: "\u5199\u5165",
|
|
20112
|
-
flat: "\u6241\u5E73"
|
|
20165
|
+
flat: "\u6241\u5E73",
|
|
20166
|
+
desc: {
|
|
20167
|
+
web_search: "\u641C\u7D22\u516C\u5171\u7F51\u7EDC\u3002\u8FD4\u56DE\u5E26\u6807\u9898\u3001URL \u548C\u6458\u8981\u7684\u6392\u5E8F\u7ED3\u679C\u3002\u5F53\u7B54\u6848\u7684\u6B63\u786E\u6027\u4F9D\u8D56\u4E8E\u5F53\u524D\u72B6\u6001\u65F6\u8C03\u7528\u2014\u2014\u4E8B\u4EF6\u3001\u4EF7\u683C\u3001\u53D1\u5E03\u3001\u73B0\u5B9E\u4E16\u754C\u7684\u72B6\u6001\u3002",
|
|
20168
|
+
web_fetch: "\u4E0B\u8F7D URL \u5E76\u8FD4\u56DE\u5176\u53EF\u89C1\u6587\u672C\u5185\u5BB9\uFF08\u5DF2\u5265\u79BB\u811A\u672C/\u6837\u5F0F/\u5BFC\u822A\uFF09\u3002\u5728 web_search \u6458\u8981\u4E0D\u591F\u65F6\u4F7F\u7528\u3002",
|
|
20169
|
+
run_command: "\u5728\u9879\u76EE\u6839\u76EE\u5F55\u6267\u884C shell \u547D\u4EE4\uFF0C\u8FD4\u56DE\u5408\u5E76\u7684\u6807\u51C6\u8F93\u51FA\u548C\u6807\u51C6\u9519\u8BEF\u3002\u767D\u540D\u5355\u4E2D\u7684\u53EA\u8BFB\u547D\u4EE4\u7ACB\u5373\u6267\u884C\uFF1B\u53EF\u80FD\u4FEE\u6539\u72B6\u6001\u7684\u64CD\u4F5C\u9700\u7528\u6237\u786E\u8BA4\u3002",
|
|
20170
|
+
run_background: "\u542F\u52A8\u4E00\u4E2A\u957F\u65F6\u95F4\u8FD0\u884C\u7684\u8FDB\u7A0B\u5E76\u5206\u79BB\u3002\u8FD4\u56DE\u4EFB\u52A1 ID \u7528\u4E8E\u67E5\u770B\u65E5\u5FD7\u3001\u7B49\u5F85\u5B8C\u6210\u6216\u7EC8\u6B62\u3002\u7528\u4E8E\u5F00\u53D1\u670D\u52A1\u5668\u3001\u6587\u4EF6\u76D1\u542C\u5668\u548C\u4E00\u6B21\u6027\u957F\u65F6\u95F4\u4EFB\u52A1\u3002",
|
|
20171
|
+
job_output: "\u8BFB\u53D6\u540E\u53F0\u4EFB\u52A1\u7684\u6700\u65B0\u8F93\u51FA\u3002\u8FD4\u56DE\u7F13\u51B2\u533A\u672B\u5C3E\u5185\u5BB9\u5E76\u544A\u77E5\u4EFB\u52A1\u662F\u5426\u4ECD\u5728\u8FD0\u884C\u3002",
|
|
20172
|
+
wait_for_job: "\u5728\u670D\u52A1\u7AEF\u963B\u585E\u76F4\u5230\u540E\u53F0\u4EFB\u52A1\u5B8C\u6210\uFF08\u6709\u8D85\u65F6\u9650\u5236\uFF09\u3002\u7528\u4E8E\u66FF\u4EE3\u8F6E\u8BE2 job_output\u3002",
|
|
20173
|
+
stop_job: "\u505C\u6B62\u540E\u53F0\u4EFB\u52A1\u3002\u5148\u53D1\u9001 SIGTERM\uFF0C\u5BBD\u9650\u671F\u540E\u53D1\u9001 SIGKILL\u3002\u53EF\u5B89\u5168\u8C03\u7528\u5DF2\u9000\u51FA\u7684\u4EFB\u52A1\u3002",
|
|
20174
|
+
list_jobs: "\u5217\u51FA\u672C\u6B21\u4F1A\u8BDD\u542F\u52A8\u7684\u6240\u6709\u540E\u53F0\u4EFB\u52A1\u2014\u2014\u8FD0\u884C\u4E2D\u548C\u5DF2\u9000\u51FA\u7684\u2014\u2014\u5305\u542B ID\u3001\u547D\u4EE4\u3001PID \u548C\u72B6\u6001\u3002",
|
|
20175
|
+
remember: "\u4FDD\u5B58\u4E00\u6761\u8BB0\u5FC6\u4F9B\u672A\u6765\u4F1A\u8BDD\u4F7F\u7528\u3002\u5F53\u7528\u6237\u9648\u8FF0\u504F\u597D\u3001\u7EA0\u6B63\u4F60\u7684\u65B9\u6CD5\u3001\u5206\u4EAB\u975E\u663E\u800C\u6613\u89C1\u7684\u4E8B\u5B9E\u6216\u8981\u6C42\u4F60\u8BB0\u4F4F\u67D0\u4E8B\u65F6\u4F7F\u7528\u3002",
|
|
20176
|
+
forget: "\u5220\u9664\u8BB0\u5FC6\u6587\u4EF6\u5E76\u4ECE MEMORY.md \u4E2D\u79FB\u9664\u3002\u5F53\u7528\u6237\u8981\u6C42\u5FD8\u8BB0\u67D0\u4E8B\u6216\u4E4B\u524D\u8BB0\u4F4F\u7684\u4E8B\u5B9E\u5DF2\u4E0D\u518D\u6B63\u786E\u65F6\u4F7F\u7528\u3002",
|
|
20177
|
+
recall_memory: "\u5F53\u8BB0\u5FC6\u6587\u4EF6\u7684\u4E00\u884C\u6458\u8981\u4E0D\u591F\u8BE6\u7EC6\u65F6\uFF0C\u8BFB\u53D6\u5176\u5B8C\u6574\u5185\u5BB9\u3002",
|
|
20178
|
+
read_file: "\u8BFB\u53D6\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u3002\u652F\u6301 head/tail/range \u8303\u56F4\u8BFB\u53D6\u4EE5\u8282\u7701\u4E0A\u4E0B\u6587\u3002\u8D85\u8FC7 200 \u884C\u7684\u6587\u4EF6\u81EA\u52A8\u8FD4\u56DE\u9884\u89C8\u3002",
|
|
20179
|
+
list_directory: "\u5217\u51FA\u76EE\u5F55\u4E2D\u7684\u6761\u76EE\u3002\u6BCF\u884C\u4E00\u4E2A\u6761\u76EE\uFF0C\u76EE\u5F55\u4EE5\u659C\u6760\u6807\u8BB0\u3002",
|
|
20180
|
+
directory_tree: "\u9012\u5F52\u5217\u51FA\u76EE\u5F55\u4E2D\u7684\u6761\u76EE\uFF0C\u4EE5\u7F29\u8FDB\u6811\u5F62\u7ED3\u6784\u663E\u793A\u3002\u5BF9\u5927\u5B50\u76EE\u5F55\u81EA\u52A8\u6298\u53E0\u4EE5\u8282\u7701\u9884\u7B97\u3002",
|
|
20181
|
+
search_files: "\u6839\u636E\u540D\u79F0\u5339\u914D\u5B50\u4E32\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\u67E5\u627E\u6587\u4EF6\u3002\u4E0D\u533A\u5206\u5927\u5C0F\u5199\u3002\u9ED8\u8BA4\u8DF3\u8FC7\u4F9D\u8D56/\u6784\u5EFA\u76EE\u5F55\u3002",
|
|
20182
|
+
search_content: "\u9012\u5F52\u641C\u7D22\u6587\u4EF6\u5185\u5BB9\u4E2D\u7684\u5B50\u4E32\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\u3002\u4EE5 path:line:text \u683C\u5F0F\u8FD4\u56DE\u5339\u914D\u7ED3\u679C\u3002\u67E5\u627E\u5F15\u7528\u7684\u6B63\u786E\u5DE5\u5177\u3002",
|
|
20183
|
+
glob: "\u6309 glob \u6A21\u5F0F\u5217\u51FA\u6587\u4EF6\uFF0C\u6309\u4FEE\u6539\u65F6\u95F4\u6392\u5E8F\u3002\u9ED8\u8BA4\u9650\u5236 200\uFF0C\u6700\u5927 1000\u3002\u9ED8\u8BA4\u8DF3\u8FC7 node_modules/.git/dist\u3002",
|
|
20184
|
+
get_file_info: "\u83B7\u53D6\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u8DEF\u5F84\u7684\u72B6\u6001\u4FE1\u606F\u3002\u8FD4\u56DE\u7C7B\u578B\u3001\u5B57\u8282\u5927\u5C0F\u548C\u4FEE\u6539\u65F6\u95F4\u3002",
|
|
20185
|
+
write_file: "\u521B\u5EFA\u6216\u8986\u76D6\u6587\u4EF6\uFF0C\u5185\u5BB9\u7531\u53C2\u6570\u6307\u5B9A\u3002\u6309\u9700\u521B\u5EFA\u7236\u76EE\u5F55\u3002",
|
|
20186
|
+
edit_file: "\u5BF9\u73B0\u6709\u6587\u4EF6\u5E94\u7528 SEARCH/REPLACE \u7F16\u8F91\u3002\u641C\u7D22\u5FC5\u987B\u5B8C\u5168\u5339\u914D\u4E14\u5728\u6587\u4EF6\u4E2D\u552F\u4E00\u3002",
|
|
20187
|
+
multi_edit: "\u8DE8\u4E00\u4E2A\u6216\u591A\u4E2A\u6587\u4EF6\u539F\u5B50\u6027\u5730\u5E94\u7528 N \u4E2A SEARCH/REPLACE \u7F16\u8F91\u3002\u5982\u679C\u4EFB\u4F55\u7F16\u8F91\u5931\u8D25\uFF0C\u4E0D\u5199\u5165\u4EFB\u4F55\u6587\u4EF6\u3002",
|
|
20188
|
+
create_directory: "\u5728\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u521B\u5EFA\u76EE\u5F55\uFF08\u4EE5\u53CA\u4EFB\u4F55\u7F3A\u5931\u7684\u7236\u76EE\u5F55\uFF09\u3002",
|
|
20189
|
+
move_file: "\u91CD\u547D\u540D\u6216\u79FB\u52A8\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u6216\u76EE\u5F55\u3002",
|
|
20190
|
+
delete_file: "\u5220\u9664\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u7684\u4E00\u4E2A\u6587\u4EF6\u3002\u62D2\u7EDD\u76EE\u5F55\u2014\u2014\u8BF7\u4F7F\u7528 delete_directory \u5220\u9664\u76EE\u5F55\u3002",
|
|
20191
|
+
delete_directory: "\u9012\u5F52\u5220\u9664\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u7684\u76EE\u5F55\u3002\u4F20\u5165 recursive:false \u53EF\u62D2\u7EDD\u975E\u7A7A\u76EE\u5F55\u3002",
|
|
20192
|
+
copy_file: "\u590D\u5236\u6C99\u7BB1\u6839\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u6216\u76EE\u5F55\u3002\u62D2\u7EDD\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u76EE\u6807\u3002",
|
|
20193
|
+
submit_plan: "\u63D0\u4EA4\u4E00\u4E2A\u5177\u4F53\u7684\u8BA1\u5212\u4EE5\u4F9B\u5BA1\u67E5\u5BA1\u6279\u3002\u7528\u4E8E\u591A\u6587\u4EF6\u91CD\u6784\u3001\u67B6\u6784\u53D8\u66F4\u6216\u4EFB\u4F55\u64A4\u9500\u4EE3\u4EF7\u9AD8\u6602\u7684\u64CD\u4F5C\u3002",
|
|
20194
|
+
mark_step_complete: "\u5C06\u5DF2\u6279\u51C6\u8BA1\u5212\u7684\u4E00\u4E2A\u6B65\u9AA4\u6807\u8BB0\u4E3A\u5B8C\u6210\u3002\u5B8C\u6210\u6BCF\u4E2A\u6B65\u9AA4\u540E\u6070\u597D\u8C03\u7528\u4E00\u6B21\u3002",
|
|
20195
|
+
revise_plan: "\u5916\u79D1\u624B\u672F\u5F0F\u66FF\u6362\u8FDB\u884C\u4E2D\u8BA1\u5212\u7684\u5269\u4F59\u6B65\u9AA4\u3002\u5DF2\u5B8C\u6210\u7684\u6B65\u9AA4\u6C38\u8FDC\u4E0D\u4F1A\u88AB\u89E6\u53CA\u3002",
|
|
20196
|
+
run_skill: "\u4ECE\u6280\u80FD\u7D22\u5F15\u4E2D\u8C03\u7528\u4E00\u4E2A playbook\u3002\u4F20\u5165\u88F8\u6280\u80FD\u540D\u79F0\u3002\u6807\u8BB0\u4E3A\u5B50\u4EE3\u7406\u7684\u6280\u80FD\u5C06\u542F\u52A8\u72EC\u7ACB\u7684\u5B50\u4EE3\u7406\u3002",
|
|
20197
|
+
spawn_subagent: "\u4E3A\u4E00\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u542F\u52A8\u9694\u79BB\u7684\u5B50\u4EE3\u7406\u3002\u7528\u4E8E\u5E76\u884C\u5206\u53D1\u6216\u9700\u8981\u5927\u91CF\u6587\u4EF6\u8BFB\u53D6\u7684\u5DE5\u4F5C\u3002",
|
|
20198
|
+
todo_write: "\u591A\u6B65\u5DE5\u4F5C\u7684\u4F1A\u8BDD\u5185\u4EFB\u52A1\u8DDF\u8E2A\u5668\u3002\u6BCF\u6B21\u8C03\u7528\u66FF\u6362\u6574\u4E2A\u5217\u8868\u3002\u65E0\u5BA1\u6279\u5173\u5361\uFF0C\u4E0D\u5199\u5165\u6587\u4EF6\u3002",
|
|
20199
|
+
ask_choice: "\u5411\u7528\u6237\u5C55\u793A 2-6 \u4E2A\u9009\u9879\u3002\u5F53\u7528\u6237\u8981\u6C42\u9009\u62E9\u6216\u9700\u8981\u504F\u597D\u51B3\u7B56\u65F6\u4F7F\u7528\u3002",
|
|
20200
|
+
create_skill: "\u521B\u5EFA\u4E00\u4E2A\u65B0\u6280\u80FD\uFF0C\u7528\u6237\u53EF\u901A\u8FC7 /skill \u547D\u4EE4\u8C03\u7528\u3002\u652F\u6301\u5185\u8054\u548C\u5B50\u4EE3\u7406\u4E24\u79CD\u8FD0\u884C\u6A21\u5F0F\u3002",
|
|
20201
|
+
add_mcp_server: "\u5728\u7528\u6237\u914D\u7F6E\u4E2D\u6CE8\u518C\u65B0\u7684 MCP \u670D\u52A1\u5668\u3002\u4E0B\u6B21\u4F1A\u8BDD\u751F\u6548\u3002\u652F\u6301 stdio\u3001SSE \u548C streamable-http\u3002"
|
|
20202
|
+
}
|
|
20113
20203
|
},
|
|
20114
20204
|
permissions: {
|
|
20115
20205
|
loading: "\u52A0\u8F7D\u6743\u9650\u2026",
|
|
@@ -20441,6 +20531,187 @@ var zhCN = {
|
|
|
20441
20531
|
// dashboard/src/i18n/index.ts
|
|
20442
20532
|
var t4 = createT({ en, "zh-CN": zhCN });
|
|
20443
20533
|
|
|
20534
|
+
// node_modules/preact/compat/dist/compat.module.js
|
|
20535
|
+
function g3(n3, t5) {
|
|
20536
|
+
for (var e3 in t5) n3[e3] = t5[e3];
|
|
20537
|
+
return n3;
|
|
20538
|
+
}
|
|
20539
|
+
function E2(n3, t5) {
|
|
20540
|
+
for (var e3 in n3) if ("__source" !== e3 && !(e3 in t5)) return true;
|
|
20541
|
+
for (var r3 in t5) if ("__source" !== r3 && n3[r3] !== t5[r3]) return true;
|
|
20542
|
+
return false;
|
|
20543
|
+
}
|
|
20544
|
+
function M2(n3, t5) {
|
|
20545
|
+
this.props = n3, this.context = t5;
|
|
20546
|
+
}
|
|
20547
|
+
function N2(n3, e3) {
|
|
20548
|
+
function r3(n4) {
|
|
20549
|
+
var t5 = this.props.ref;
|
|
20550
|
+
return t5 != n4.ref && t5 && ("function" == typeof t5 ? t5(null) : t5.current = null), e3 ? !e3(this.props, n4) || t5 != n4.ref : E2(this.props, n4);
|
|
20551
|
+
}
|
|
20552
|
+
function u3(e4) {
|
|
20553
|
+
return this.shouldComponentUpdate = r3, k(n3, e4);
|
|
20554
|
+
}
|
|
20555
|
+
return u3.displayName = "Memo(" + (n3.displayName || n3.name) + ")", u3.__f = u3.prototype.isReactComponent = true, u3.type = n3, u3;
|
|
20556
|
+
}
|
|
20557
|
+
(M2.prototype = new C()).isPureReactComponent = true, M2.prototype.shouldComponentUpdate = function(n3, t5) {
|
|
20558
|
+
return E2(this.props, n3) || E2(this.state, t5);
|
|
20559
|
+
};
|
|
20560
|
+
var T3 = l.__b;
|
|
20561
|
+
l.__b = function(n3) {
|
|
20562
|
+
n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), T3 && T3(n3);
|
|
20563
|
+
};
|
|
20564
|
+
var A3 = "undefined" != typeof Symbol && Symbol.for && /* @__PURE__ */ Symbol.for("react.forward_ref") || 3911;
|
|
20565
|
+
var O2 = l.__e;
|
|
20566
|
+
l.__e = function(n3, t5, e3, r3) {
|
|
20567
|
+
if (n3.then) {
|
|
20568
|
+
for (var u3, o3 = t5; o3 = o3.__; ) if ((u3 = o3.__c) && u3.__c) return null == t5.__e && (t5.__e = e3.__e, t5.__k = e3.__k), u3.__c(n3, t5);
|
|
20569
|
+
}
|
|
20570
|
+
O2(n3, t5, e3, r3);
|
|
20571
|
+
};
|
|
20572
|
+
var U2 = l.unmount;
|
|
20573
|
+
function V2(n3, t5, e3) {
|
|
20574
|
+
return n3 && (n3.__c && n3.__c.__H && (n3.__c.__H.__.forEach(function(n4) {
|
|
20575
|
+
"function" == typeof n4.__c && n4.__c();
|
|
20576
|
+
}), n3.__c.__H = null), null != (n3 = g3({}, n3)).__c && (n3.__c.__P === e3 && (n3.__c.__P = t5), n3.__c.__e = true, n3.__c = null), n3.__k = n3.__k && n3.__k.map(function(n4) {
|
|
20577
|
+
return V2(n4, t5, e3);
|
|
20578
|
+
})), n3;
|
|
20579
|
+
}
|
|
20580
|
+
function W2(n3, t5, e3) {
|
|
20581
|
+
return n3 && e3 && (n3.__v = null, n3.__k = n3.__k && n3.__k.map(function(n4) {
|
|
20582
|
+
return W2(n4, t5, e3);
|
|
20583
|
+
}), n3.__c && n3.__c.__P === t5 && (n3.__e && e3.appendChild(n3.__e), n3.__c.__e = true, n3.__c.__P = e3)), n3;
|
|
20584
|
+
}
|
|
20585
|
+
function P3() {
|
|
20586
|
+
this.__u = 0, this.o = null, this.__b = null;
|
|
20587
|
+
}
|
|
20588
|
+
function j3(n3) {
|
|
20589
|
+
var t5 = n3.__ && n3.__.__c;
|
|
20590
|
+
return t5 && t5.__a && t5.__a(n3);
|
|
20591
|
+
}
|
|
20592
|
+
function B3() {
|
|
20593
|
+
this.i = null, this.l = null;
|
|
20594
|
+
}
|
|
20595
|
+
l.unmount = function(n3) {
|
|
20596
|
+
var t5 = n3.__c;
|
|
20597
|
+
t5 && (t5.__z = true), t5 && t5.__R && t5.__R(), t5 && 32 & n3.__u && (n3.type = null), U2 && U2(n3);
|
|
20598
|
+
}, (P3.prototype = new C()).__c = function(n3, t5) {
|
|
20599
|
+
var e3 = t5.__c, r3 = this;
|
|
20600
|
+
null == r3.o && (r3.o = []), r3.o.push(e3);
|
|
20601
|
+
var u3 = j3(r3.__v), o3 = false, i3 = function() {
|
|
20602
|
+
o3 || r3.__z || (o3 = true, e3.__R = null, u3 ? u3(c3) : c3());
|
|
20603
|
+
};
|
|
20604
|
+
e3.__R = i3;
|
|
20605
|
+
var l3 = e3.__P;
|
|
20606
|
+
e3.__P = null;
|
|
20607
|
+
var c3 = function() {
|
|
20608
|
+
if (!--r3.__u) {
|
|
20609
|
+
if (r3.state.__a) {
|
|
20610
|
+
var n4 = r3.state.__a;
|
|
20611
|
+
r3.__v.__k[0] = W2(n4, n4.__c.__P, n4.__c.__O);
|
|
20612
|
+
}
|
|
20613
|
+
var t6;
|
|
20614
|
+
for (r3.setState({ __a: r3.__b = null }); t6 = r3.o.pop(); ) t6.__P = l3, t6.forceUpdate();
|
|
20615
|
+
}
|
|
20616
|
+
};
|
|
20617
|
+
r3.__u++ || 32 & t5.__u || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n3.then(i3, i3);
|
|
20618
|
+
}, P3.prototype.componentWillUnmount = function() {
|
|
20619
|
+
this.o = [];
|
|
20620
|
+
}, P3.prototype.render = function(n3, e3) {
|
|
20621
|
+
if (this.__b) {
|
|
20622
|
+
if (this.__v.__k) {
|
|
20623
|
+
var r3 = document.createElement("div"), o3 = this.__v.__k[0].__c;
|
|
20624
|
+
this.__v.__k[0] = V2(this.__b, r3, o3.__O = o3.__P);
|
|
20625
|
+
}
|
|
20626
|
+
this.__b = null;
|
|
20627
|
+
}
|
|
20628
|
+
var i3 = e3.__a && k(S, null, n3.fallback);
|
|
20629
|
+
return i3 && (i3.__u &= -33), [k(S, null, e3.__a ? null : n3.children), i3];
|
|
20630
|
+
};
|
|
20631
|
+
var H2 = function(n3, t5, e3) {
|
|
20632
|
+
if (++e3[1] === e3[0] && n3.l.delete(t5), n3.props.revealOrder && ("t" !== n3.props.revealOrder[0] || !n3.l.size)) for (e3 = n3.i; e3; ) {
|
|
20633
|
+
for (; e3.length > 3; ) e3.pop()();
|
|
20634
|
+
if (e3[1] < e3[0]) break;
|
|
20635
|
+
n3.i = e3 = e3[2];
|
|
20636
|
+
}
|
|
20637
|
+
};
|
|
20638
|
+
(B3.prototype = new C()).__a = function(n3) {
|
|
20639
|
+
var t5 = this, e3 = j3(t5.__v), r3 = t5.l.get(n3);
|
|
20640
|
+
return r3[0]++, function(u3) {
|
|
20641
|
+
var o3 = function() {
|
|
20642
|
+
t5.props.revealOrder ? (r3.push(u3), H2(t5, n3, r3)) : u3();
|
|
20643
|
+
};
|
|
20644
|
+
e3 ? e3(o3) : o3();
|
|
20645
|
+
};
|
|
20646
|
+
}, B3.prototype.render = function(n3) {
|
|
20647
|
+
this.i = null, this.l = /* @__PURE__ */ new Map();
|
|
20648
|
+
var t5 = F(n3.children);
|
|
20649
|
+
n3.revealOrder && "b" === n3.revealOrder[0] && t5.reverse();
|
|
20650
|
+
for (var e3 = t5.length; e3--; ) this.l.set(t5[e3], this.i = [1, 0, this.i]);
|
|
20651
|
+
return n3.children;
|
|
20652
|
+
}, B3.prototype.componentDidUpdate = B3.prototype.componentDidMount = function() {
|
|
20653
|
+
var n3 = this;
|
|
20654
|
+
this.l.forEach(function(t5, e3) {
|
|
20655
|
+
H2(n3, e3, t5);
|
|
20656
|
+
});
|
|
20657
|
+
};
|
|
20658
|
+
var q3 = "undefined" != typeof Symbol && Symbol.for && /* @__PURE__ */ Symbol.for("react.element") || 60103;
|
|
20659
|
+
var G2 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
|
|
20660
|
+
var J2 = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;
|
|
20661
|
+
var K2 = /[A-Z0-9]/g;
|
|
20662
|
+
var Q2 = "undefined" != typeof document;
|
|
20663
|
+
var X2 = function(n3) {
|
|
20664
|
+
return ("undefined" != typeof Symbol && "symbol" == typeof /* @__PURE__ */ Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n3);
|
|
20665
|
+
};
|
|
20666
|
+
C.prototype.isReactComponent = true, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t5) {
|
|
20667
|
+
Object.defineProperty(C.prototype, t5, { configurable: true, get: function() {
|
|
20668
|
+
return this["UNSAFE_" + t5];
|
|
20669
|
+
}, set: function(n3) {
|
|
20670
|
+
Object.defineProperty(this, t5, { configurable: true, writable: true, value: n3 });
|
|
20671
|
+
} });
|
|
20672
|
+
});
|
|
20673
|
+
var en2 = l.event;
|
|
20674
|
+
l.event = function(n3) {
|
|
20675
|
+
return en2 && (n3 = en2(n3)), n3.persist = function() {
|
|
20676
|
+
}, n3.isPropagationStopped = function() {
|
|
20677
|
+
return this.cancelBubble;
|
|
20678
|
+
}, n3.isDefaultPrevented = function() {
|
|
20679
|
+
return this.defaultPrevented;
|
|
20680
|
+
}, n3.nativeEvent = n3;
|
|
20681
|
+
};
|
|
20682
|
+
var rn;
|
|
20683
|
+
var un = { configurable: true, get: function() {
|
|
20684
|
+
return this.class;
|
|
20685
|
+
} };
|
|
20686
|
+
var on = l.vnode;
|
|
20687
|
+
l.vnode = function(n3) {
|
|
20688
|
+
"string" == typeof n3.type && (function(n4) {
|
|
20689
|
+
var t5 = n4.props, e3 = n4.type, u3 = {}, o3 = -1 == e3.indexOf("-");
|
|
20690
|
+
for (var i3 in t5) {
|
|
20691
|
+
var l3 = t5[i3];
|
|
20692
|
+
if (!("value" === i3 && "defaultValue" in t5 && null == l3 || Q2 && "children" === i3 && "noscript" === e3 || "class" === i3 || "className" === i3)) {
|
|
20693
|
+
var c3 = i3.toLowerCase();
|
|
20694
|
+
"defaultValue" === i3 && "value" in t5 && null == t5.value ? i3 = "value" : "download" === i3 && true === l3 ? l3 = "" : "translate" === c3 && "no" === l3 ? l3 = false : "o" === c3[0] && "n" === c3[1] ? "ondoubleclick" === c3 ? i3 = "ondblclick" : "onchange" !== c3 || "input" !== e3 && "textarea" !== e3 || X2(t5.type) ? "onfocus" === c3 ? i3 = "onfocusin" : "onblur" === c3 ? i3 = "onfocusout" : J2.test(i3) && (i3 = c3) : c3 = i3 = "oninput" : o3 && G2.test(i3) ? i3 = i3.replace(K2, "-$&").toLowerCase() : null === l3 && (l3 = void 0), "oninput" === c3 && u3[i3 = c3] && (i3 = "oninputCapture"), u3[i3] = l3;
|
|
20695
|
+
}
|
|
20696
|
+
}
|
|
20697
|
+
"select" == e3 && (u3.multiple && Array.isArray(u3.value) && (u3.value = F(t5.children).forEach(function(n5) {
|
|
20698
|
+
n5.props.selected = -1 != u3.value.indexOf(n5.props.value);
|
|
20699
|
+
})), null != u3.defaultValue && (u3.value = F(t5.children).forEach(function(n5) {
|
|
20700
|
+
n5.props.selected = u3.multiple ? -1 != u3.defaultValue.indexOf(n5.props.value) : u3.defaultValue == n5.props.value;
|
|
20701
|
+
}))), t5.class && !t5.className ? (u3.class = t5.class, Object.defineProperty(u3, "className", un)) : t5.className && (u3.class = u3.className = t5.className), n4.props = u3;
|
|
20702
|
+
})(n3), n3.$$typeof = q3, on && on(n3);
|
|
20703
|
+
};
|
|
20704
|
+
var ln = l.__r;
|
|
20705
|
+
l.__r = function(n3) {
|
|
20706
|
+
ln && ln(n3), rn = n3.__c;
|
|
20707
|
+
};
|
|
20708
|
+
var cn = l.diffed;
|
|
20709
|
+
l.diffed = function(n3) {
|
|
20710
|
+
cn && cn(n3);
|
|
20711
|
+
var t5 = n3.props, e3 = n3.__e;
|
|
20712
|
+
null != e3 && "textarea" === n3.type && "value" in t5 && t5.value !== e3.value && (e3.value = null == t5.value ? "" : t5.value), rn = null;
|
|
20713
|
+
};
|
|
20714
|
+
|
|
20444
20715
|
// node_modules/marked/lib/marked.esm.js
|
|
20445
20716
|
function _getDefaults() {
|
|
20446
20717
|
return {
|
|
@@ -22577,187 +22848,6 @@ var parseInline = marked.parseInline;
|
|
|
22577
22848
|
var parser = _Parser.parse;
|
|
22578
22849
|
var lexer = _Lexer.lex;
|
|
22579
22850
|
|
|
22580
|
-
// node_modules/preact/compat/dist/compat.module.js
|
|
22581
|
-
function g3(n3, t5) {
|
|
22582
|
-
for (var e3 in t5) n3[e3] = t5[e3];
|
|
22583
|
-
return n3;
|
|
22584
|
-
}
|
|
22585
|
-
function E2(n3, t5) {
|
|
22586
|
-
for (var e3 in n3) if ("__source" !== e3 && !(e3 in t5)) return true;
|
|
22587
|
-
for (var r3 in t5) if ("__source" !== r3 && n3[r3] !== t5[r3]) return true;
|
|
22588
|
-
return false;
|
|
22589
|
-
}
|
|
22590
|
-
function M2(n3, t5) {
|
|
22591
|
-
this.props = n3, this.context = t5;
|
|
22592
|
-
}
|
|
22593
|
-
function N2(n3, e3) {
|
|
22594
|
-
function r3(n4) {
|
|
22595
|
-
var t5 = this.props.ref;
|
|
22596
|
-
return t5 != n4.ref && t5 && ("function" == typeof t5 ? t5(null) : t5.current = null), e3 ? !e3(this.props, n4) || t5 != n4.ref : E2(this.props, n4);
|
|
22597
|
-
}
|
|
22598
|
-
function u3(e4) {
|
|
22599
|
-
return this.shouldComponentUpdate = r3, k(n3, e4);
|
|
22600
|
-
}
|
|
22601
|
-
return u3.displayName = "Memo(" + (n3.displayName || n3.name) + ")", u3.__f = u3.prototype.isReactComponent = true, u3.type = n3, u3;
|
|
22602
|
-
}
|
|
22603
|
-
(M2.prototype = new C()).isPureReactComponent = true, M2.prototype.shouldComponentUpdate = function(n3, t5) {
|
|
22604
|
-
return E2(this.props, n3) || E2(this.state, t5);
|
|
22605
|
-
};
|
|
22606
|
-
var T3 = l.__b;
|
|
22607
|
-
l.__b = function(n3) {
|
|
22608
|
-
n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), T3 && T3(n3);
|
|
22609
|
-
};
|
|
22610
|
-
var A3 = "undefined" != typeof Symbol && Symbol.for && /* @__PURE__ */ Symbol.for("react.forward_ref") || 3911;
|
|
22611
|
-
var O2 = l.__e;
|
|
22612
|
-
l.__e = function(n3, t5, e3, r3) {
|
|
22613
|
-
if (n3.then) {
|
|
22614
|
-
for (var u3, o3 = t5; o3 = o3.__; ) if ((u3 = o3.__c) && u3.__c) return null == t5.__e && (t5.__e = e3.__e, t5.__k = e3.__k), u3.__c(n3, t5);
|
|
22615
|
-
}
|
|
22616
|
-
O2(n3, t5, e3, r3);
|
|
22617
|
-
};
|
|
22618
|
-
var U2 = l.unmount;
|
|
22619
|
-
function V2(n3, t5, e3) {
|
|
22620
|
-
return n3 && (n3.__c && n3.__c.__H && (n3.__c.__H.__.forEach(function(n4) {
|
|
22621
|
-
"function" == typeof n4.__c && n4.__c();
|
|
22622
|
-
}), n3.__c.__H = null), null != (n3 = g3({}, n3)).__c && (n3.__c.__P === e3 && (n3.__c.__P = t5), n3.__c.__e = true, n3.__c = null), n3.__k = n3.__k && n3.__k.map(function(n4) {
|
|
22623
|
-
return V2(n4, t5, e3);
|
|
22624
|
-
})), n3;
|
|
22625
|
-
}
|
|
22626
|
-
function W2(n3, t5, e3) {
|
|
22627
|
-
return n3 && e3 && (n3.__v = null, n3.__k = n3.__k && n3.__k.map(function(n4) {
|
|
22628
|
-
return W2(n4, t5, e3);
|
|
22629
|
-
}), n3.__c && n3.__c.__P === t5 && (n3.__e && e3.appendChild(n3.__e), n3.__c.__e = true, n3.__c.__P = e3)), n3;
|
|
22630
|
-
}
|
|
22631
|
-
function P3() {
|
|
22632
|
-
this.__u = 0, this.o = null, this.__b = null;
|
|
22633
|
-
}
|
|
22634
|
-
function j3(n3) {
|
|
22635
|
-
var t5 = n3.__ && n3.__.__c;
|
|
22636
|
-
return t5 && t5.__a && t5.__a(n3);
|
|
22637
|
-
}
|
|
22638
|
-
function B3() {
|
|
22639
|
-
this.i = null, this.l = null;
|
|
22640
|
-
}
|
|
22641
|
-
l.unmount = function(n3) {
|
|
22642
|
-
var t5 = n3.__c;
|
|
22643
|
-
t5 && (t5.__z = true), t5 && t5.__R && t5.__R(), t5 && 32 & n3.__u && (n3.type = null), U2 && U2(n3);
|
|
22644
|
-
}, (P3.prototype = new C()).__c = function(n3, t5) {
|
|
22645
|
-
var e3 = t5.__c, r3 = this;
|
|
22646
|
-
null == r3.o && (r3.o = []), r3.o.push(e3);
|
|
22647
|
-
var u3 = j3(r3.__v), o3 = false, i3 = function() {
|
|
22648
|
-
o3 || r3.__z || (o3 = true, e3.__R = null, u3 ? u3(c3) : c3());
|
|
22649
|
-
};
|
|
22650
|
-
e3.__R = i3;
|
|
22651
|
-
var l3 = e3.__P;
|
|
22652
|
-
e3.__P = null;
|
|
22653
|
-
var c3 = function() {
|
|
22654
|
-
if (!--r3.__u) {
|
|
22655
|
-
if (r3.state.__a) {
|
|
22656
|
-
var n4 = r3.state.__a;
|
|
22657
|
-
r3.__v.__k[0] = W2(n4, n4.__c.__P, n4.__c.__O);
|
|
22658
|
-
}
|
|
22659
|
-
var t6;
|
|
22660
|
-
for (r3.setState({ __a: r3.__b = null }); t6 = r3.o.pop(); ) t6.__P = l3, t6.forceUpdate();
|
|
22661
|
-
}
|
|
22662
|
-
};
|
|
22663
|
-
r3.__u++ || 32 & t5.__u || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n3.then(i3, i3);
|
|
22664
|
-
}, P3.prototype.componentWillUnmount = function() {
|
|
22665
|
-
this.o = [];
|
|
22666
|
-
}, P3.prototype.render = function(n3, e3) {
|
|
22667
|
-
if (this.__b) {
|
|
22668
|
-
if (this.__v.__k) {
|
|
22669
|
-
var r3 = document.createElement("div"), o3 = this.__v.__k[0].__c;
|
|
22670
|
-
this.__v.__k[0] = V2(this.__b, r3, o3.__O = o3.__P);
|
|
22671
|
-
}
|
|
22672
|
-
this.__b = null;
|
|
22673
|
-
}
|
|
22674
|
-
var i3 = e3.__a && k(S, null, n3.fallback);
|
|
22675
|
-
return i3 && (i3.__u &= -33), [k(S, null, e3.__a ? null : n3.children), i3];
|
|
22676
|
-
};
|
|
22677
|
-
var H2 = function(n3, t5, e3) {
|
|
22678
|
-
if (++e3[1] === e3[0] && n3.l.delete(t5), n3.props.revealOrder && ("t" !== n3.props.revealOrder[0] || !n3.l.size)) for (e3 = n3.i; e3; ) {
|
|
22679
|
-
for (; e3.length > 3; ) e3.pop()();
|
|
22680
|
-
if (e3[1] < e3[0]) break;
|
|
22681
|
-
n3.i = e3 = e3[2];
|
|
22682
|
-
}
|
|
22683
|
-
};
|
|
22684
|
-
(B3.prototype = new C()).__a = function(n3) {
|
|
22685
|
-
var t5 = this, e3 = j3(t5.__v), r3 = t5.l.get(n3);
|
|
22686
|
-
return r3[0]++, function(u3) {
|
|
22687
|
-
var o3 = function() {
|
|
22688
|
-
t5.props.revealOrder ? (r3.push(u3), H2(t5, n3, r3)) : u3();
|
|
22689
|
-
};
|
|
22690
|
-
e3 ? e3(o3) : o3();
|
|
22691
|
-
};
|
|
22692
|
-
}, B3.prototype.render = function(n3) {
|
|
22693
|
-
this.i = null, this.l = /* @__PURE__ */ new Map();
|
|
22694
|
-
var t5 = F(n3.children);
|
|
22695
|
-
n3.revealOrder && "b" === n3.revealOrder[0] && t5.reverse();
|
|
22696
|
-
for (var e3 = t5.length; e3--; ) this.l.set(t5[e3], this.i = [1, 0, this.i]);
|
|
22697
|
-
return n3.children;
|
|
22698
|
-
}, B3.prototype.componentDidUpdate = B3.prototype.componentDidMount = function() {
|
|
22699
|
-
var n3 = this;
|
|
22700
|
-
this.l.forEach(function(t5, e3) {
|
|
22701
|
-
H2(n3, e3, t5);
|
|
22702
|
-
});
|
|
22703
|
-
};
|
|
22704
|
-
var q3 = "undefined" != typeof Symbol && Symbol.for && /* @__PURE__ */ Symbol.for("react.element") || 60103;
|
|
22705
|
-
var G2 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
|
|
22706
|
-
var J2 = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;
|
|
22707
|
-
var K2 = /[A-Z0-9]/g;
|
|
22708
|
-
var Q2 = "undefined" != typeof document;
|
|
22709
|
-
var X2 = function(n3) {
|
|
22710
|
-
return ("undefined" != typeof Symbol && "symbol" == typeof /* @__PURE__ */ Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n3);
|
|
22711
|
-
};
|
|
22712
|
-
C.prototype.isReactComponent = true, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t5) {
|
|
22713
|
-
Object.defineProperty(C.prototype, t5, { configurable: true, get: function() {
|
|
22714
|
-
return this["UNSAFE_" + t5];
|
|
22715
|
-
}, set: function(n3) {
|
|
22716
|
-
Object.defineProperty(this, t5, { configurable: true, writable: true, value: n3 });
|
|
22717
|
-
} });
|
|
22718
|
-
});
|
|
22719
|
-
var en2 = l.event;
|
|
22720
|
-
l.event = function(n3) {
|
|
22721
|
-
return en2 && (n3 = en2(n3)), n3.persist = function() {
|
|
22722
|
-
}, n3.isPropagationStopped = function() {
|
|
22723
|
-
return this.cancelBubble;
|
|
22724
|
-
}, n3.isDefaultPrevented = function() {
|
|
22725
|
-
return this.defaultPrevented;
|
|
22726
|
-
}, n3.nativeEvent = n3;
|
|
22727
|
-
};
|
|
22728
|
-
var rn;
|
|
22729
|
-
var un = { configurable: true, get: function() {
|
|
22730
|
-
return this.class;
|
|
22731
|
-
} };
|
|
22732
|
-
var on = l.vnode;
|
|
22733
|
-
l.vnode = function(n3) {
|
|
22734
|
-
"string" == typeof n3.type && (function(n4) {
|
|
22735
|
-
var t5 = n4.props, e3 = n4.type, u3 = {}, o3 = -1 == e3.indexOf("-");
|
|
22736
|
-
for (var i3 in t5) {
|
|
22737
|
-
var l3 = t5[i3];
|
|
22738
|
-
if (!("value" === i3 && "defaultValue" in t5 && null == l3 || Q2 && "children" === i3 && "noscript" === e3 || "class" === i3 || "className" === i3)) {
|
|
22739
|
-
var c3 = i3.toLowerCase();
|
|
22740
|
-
"defaultValue" === i3 && "value" in t5 && null == t5.value ? i3 = "value" : "download" === i3 && true === l3 ? l3 = "" : "translate" === c3 && "no" === l3 ? l3 = false : "o" === c3[0] && "n" === c3[1] ? "ondoubleclick" === c3 ? i3 = "ondblclick" : "onchange" !== c3 || "input" !== e3 && "textarea" !== e3 || X2(t5.type) ? "onfocus" === c3 ? i3 = "onfocusin" : "onblur" === c3 ? i3 = "onfocusout" : J2.test(i3) && (i3 = c3) : c3 = i3 = "oninput" : o3 && G2.test(i3) ? i3 = i3.replace(K2, "-$&").toLowerCase() : null === l3 && (l3 = void 0), "oninput" === c3 && u3[i3 = c3] && (i3 = "oninputCapture"), u3[i3] = l3;
|
|
22741
|
-
}
|
|
22742
|
-
}
|
|
22743
|
-
"select" == e3 && (u3.multiple && Array.isArray(u3.value) && (u3.value = F(t5.children).forEach(function(n5) {
|
|
22744
|
-
n5.props.selected = -1 != u3.value.indexOf(n5.props.value);
|
|
22745
|
-
})), null != u3.defaultValue && (u3.value = F(t5.children).forEach(function(n5) {
|
|
22746
|
-
n5.props.selected = u3.multiple ? -1 != u3.defaultValue.indexOf(n5.props.value) : u3.defaultValue == n5.props.value;
|
|
22747
|
-
}))), t5.class && !t5.className ? (u3.class = t5.class, Object.defineProperty(u3, "className", un)) : t5.className && (u3.class = u3.className = t5.className), n4.props = u3;
|
|
22748
|
-
})(n3), n3.$$typeof = q3, on && on(n3);
|
|
22749
|
-
};
|
|
22750
|
-
var ln = l.__r;
|
|
22751
|
-
l.__r = function(n3) {
|
|
22752
|
-
ln && ln(n3), rn = n3.__c;
|
|
22753
|
-
};
|
|
22754
|
-
var cn = l.diffed;
|
|
22755
|
-
l.diffed = function(n3) {
|
|
22756
|
-
cn && cn(n3);
|
|
22757
|
-
var t5 = n3.props, e3 = n3.__e;
|
|
22758
|
-
null != e3 && "textarea" === n3.type && "value" in t5 && t5.value !== e3.value && (e3.value = null == t5.value ? "" : t5.value), rn = null;
|
|
22759
|
-
};
|
|
22760
|
-
|
|
22761
22851
|
// dashboard/src/lib/html.ts
|
|
22762
22852
|
var html4 = htm_module_default.bind(k);
|
|
22763
22853
|
|
|
@@ -23954,15 +24044,6 @@ function ChatPanel() {
|
|
|
23954
24044
|
autoScrollInFlight.current = false;
|
|
23955
24045
|
}, 0);
|
|
23956
24046
|
}, [messages, streaming]);
|
|
23957
|
-
const allMessages = streaming ? [
|
|
23958
|
-
...messages,
|
|
23959
|
-
{
|
|
23960
|
-
id: streaming.id,
|
|
23961
|
-
role: "assistant",
|
|
23962
|
-
text: streaming.text,
|
|
23963
|
-
reasoning: streaming.reasoning
|
|
23964
|
-
}
|
|
23965
|
-
] : messages;
|
|
23966
24047
|
const resolveModal = q2(async (kind, choice, text) => {
|
|
23967
24048
|
try {
|
|
23968
24049
|
await api("/modal/resolve", {
|
|
@@ -24107,19 +24188,7 @@ function ChatPanel() {
|
|
|
24107
24188
|
|
|
24108
24189
|
<div class="chat-body">
|
|
24109
24190
|
<div class="chat-main">
|
|
24110
|
-
|
|
24111
|
-
${allMessages.length === 0 ? html4`<div class="chat-empty">
|
|
24112
|
-
${t4("chat.noConversation")}
|
|
24113
|
-
</div>` : allMessages.map(
|
|
24114
|
-
(m3) => html4`
|
|
24115
|
-
<${ChatMessage}
|
|
24116
|
-
key=${m3.id}
|
|
24117
|
-
msg=${m3}
|
|
24118
|
-
streaming=${Boolean(streaming && streaming.id === m3.id)}
|
|
24119
|
-
/>
|
|
24120
|
-
`
|
|
24121
|
-
)}
|
|
24122
|
-
</div>
|
|
24191
|
+
<${ChatFeed} messages=${messages} streaming=${streaming} innerRef=${feedRef} />
|
|
24123
24192
|
|
|
24124
24193
|
<div class="chat-input-area" style="position:relative">
|
|
24125
24194
|
${popoverKind && popoverItems.length > 0 ? html4`
|
|
@@ -24181,7 +24250,32 @@ function ChatPanel() {
|
|
|
24181
24250
|
</div>
|
|
24182
24251
|
`;
|
|
24183
24252
|
}
|
|
24184
|
-
function
|
|
24253
|
+
var ChatFeed = N2(function ChatFeed2({ messages, streaming, innerRef }) {
|
|
24254
|
+
useLang();
|
|
24255
|
+
const allMessages = streaming ? [
|
|
24256
|
+
...messages,
|
|
24257
|
+
{
|
|
24258
|
+
id: streaming.id,
|
|
24259
|
+
role: "assistant",
|
|
24260
|
+
text: streaming.text,
|
|
24261
|
+
reasoning: streaming.reasoning
|
|
24262
|
+
}
|
|
24263
|
+
] : messages;
|
|
24264
|
+
return html4`
|
|
24265
|
+
<div class="chat-feed" ref=${innerRef}>
|
|
24266
|
+
${allMessages.length === 0 ? html4`<div class="chat-empty">${t4("chat.noConversation")}</div>` : allMessages.map(
|
|
24267
|
+
(m3) => html4`
|
|
24268
|
+
<${ChatMessage}
|
|
24269
|
+
key=${m3.id}
|
|
24270
|
+
msg=${m3}
|
|
24271
|
+
streaming=${Boolean(streaming && streaming.id === m3.id)}
|
|
24272
|
+
/>
|
|
24273
|
+
`
|
|
24274
|
+
)}
|
|
24275
|
+
</div>
|
|
24276
|
+
`;
|
|
24277
|
+
});
|
|
24278
|
+
var SideRail = N2(function SideRail2({ stats, budgetUsd, activePlan }) {
|
|
24185
24279
|
useLang();
|
|
24186
24280
|
if (!stats && !activePlan) return html4`<aside class="chat-rail"></aside>`;
|
|
24187
24281
|
const cachePct = stats ? stats.cacheHitRatio * 100 : 0;
|
|
@@ -24218,7 +24312,7 @@ function SideRail({ stats, budgetUsd, activePlan }) {
|
|
|
24218
24312
|
` : null}
|
|
24219
24313
|
</aside>
|
|
24220
24314
|
`;
|
|
24221
|
-
}
|
|
24315
|
+
});
|
|
24222
24316
|
function ActivePlanCard({ plan }) {
|
|
24223
24317
|
useLang();
|
|
24224
24318
|
const dots = [];
|
|
@@ -24304,7 +24398,7 @@ function InFlightRow({
|
|
|
24304
24398
|
</div>
|
|
24305
24399
|
`;
|
|
24306
24400
|
}
|
|
24307
|
-
|
|
24401
|
+
var ChatStatusBar = N2(function ChatStatusBar2({ stats, model }) {
|
|
24308
24402
|
useLang();
|
|
24309
24403
|
if (!stats) {
|
|
24310
24404
|
return html4`
|
|
@@ -24353,7 +24447,7 @@ function ChatStatusBar({ stats, model }) {
|
|
|
24353
24447
|
` : null}
|
|
24354
24448
|
</div>
|
|
24355
24449
|
`;
|
|
24356
|
-
}
|
|
24450
|
+
});
|
|
24357
24451
|
|
|
24358
24452
|
// dashboard/src/panels/hooks.ts
|
|
24359
24453
|
function buildMatrix(data) {
|
|
@@ -27602,6 +27696,11 @@ function SystemPanel() {
|
|
|
27602
27696
|
}
|
|
27603
27697
|
|
|
27604
27698
|
// dashboard/src/panels/tools.ts
|
|
27699
|
+
function toolDesc(name, fallback) {
|
|
27700
|
+
const key = `tools.desc.${name}`;
|
|
27701
|
+
const translated = t4(key);
|
|
27702
|
+
return translated === key ? fallback : translated;
|
|
27703
|
+
}
|
|
27605
27704
|
function ToolsPanel() {
|
|
27606
27705
|
useLang();
|
|
27607
27706
|
const { data, error, loading } = usePoll("/tools", 4e3);
|
|
@@ -27640,7 +27739,7 @@ function ToolsPanel() {
|
|
|
27640
27739
|
${tool.readOnly ? html4`<span class="pill ok">${t4("tools.readOnly")}</span>` : html4`<span class="pill acc">${t4("tools.write")}</span>`}
|
|
27641
27740
|
${tool.flattened ? html4` <span class="pill">${t4("tools.flat")}</span>` : null}
|
|
27642
27741
|
</td>
|
|
27643
|
-
<td class="dim">${tool.description ?? ""}</td>
|
|
27742
|
+
<td class="dim">${toolDesc(tool.name, tool.description ?? "")}</td>
|
|
27644
27743
|
</tr>
|
|
27645
27744
|
`
|
|
27646
27745
|
)}
|
|
@@ -28482,7 +28581,10 @@ function ChangesPanel() {
|
|
|
28482
28581
|
onToggleReview=${toggleReviewMode}
|
|
28483
28582
|
files=${openFiles}
|
|
28484
28583
|
activePath=${activeFilePath}
|
|
28485
|
-
onSelect=${
|
|
28584
|
+
onSelect=${(path) => {
|
|
28585
|
+
setActiveFilePath(path);
|
|
28586
|
+
setReviewMode(false);
|
|
28587
|
+
}}
|
|
28486
28588
|
onClose=${closeFile}
|
|
28487
28589
|
/>
|
|
28488
28590
|
<div class="review-controls" style=${{ display: "flex", alignItems: "center", gap: "8px", padding: "6px 12px", borderBottom: "1px solid var(--bd)", fontSize: "12px" }}>
|
|
@@ -28659,7 +28761,7 @@ function fmtCost2(usd, currency) {
|
|
|
28659
28761
|
}
|
|
28660
28762
|
return `$${usd.toFixed(4)}`;
|
|
28661
28763
|
}
|
|
28662
|
-
function
|
|
28764
|
+
function ChatStatusBar3({ stats, model }) {
|
|
28663
28765
|
useLang();
|
|
28664
28766
|
if (!stats) {
|
|
28665
28767
|
return html6`
|
|
@@ -29197,6 +29299,9 @@ function ChatPane(props) {
|
|
|
29197
29299
|
const [model, setModel] = d2(null);
|
|
29198
29300
|
const shouldAutoScroll = A2(true);
|
|
29199
29301
|
const feedRef = A2(null);
|
|
29302
|
+
const streamBufRef = A2(null);
|
|
29303
|
+
const streamRafRef = A2(null);
|
|
29304
|
+
const autoScrollInFlight = A2(false);
|
|
29200
29305
|
const [slashCommands, setSlashCommands] = d2([]);
|
|
29201
29306
|
const [popoverKind, setPopoverKind] = d2(null);
|
|
29202
29307
|
const [popoverItems, setPopoverItems] = d2([]);
|
|
@@ -29233,22 +29338,54 @@ function ChatPane(props) {
|
|
|
29233
29338
|
}, []);
|
|
29234
29339
|
y2(() => {
|
|
29235
29340
|
let cancelled = false;
|
|
29236
|
-
|
|
29341
|
+
const tick = async () => {
|
|
29237
29342
|
try {
|
|
29238
29343
|
const data = await api("/overview");
|
|
29239
|
-
if (
|
|
29240
|
-
|
|
29241
|
-
|
|
29242
|
-
}
|
|
29344
|
+
if (cancelled) return;
|
|
29345
|
+
setStats(data.stats ?? null);
|
|
29346
|
+
setModel(data.model ?? null);
|
|
29243
29347
|
} catch {
|
|
29244
29348
|
}
|
|
29245
|
-
}
|
|
29349
|
+
};
|
|
29350
|
+
tick();
|
|
29351
|
+
const t5 = setInterval(tick, 2500);
|
|
29246
29352
|
return () => {
|
|
29247
29353
|
cancelled = true;
|
|
29354
|
+
clearInterval(t5);
|
|
29248
29355
|
};
|
|
29249
29356
|
}, []);
|
|
29357
|
+
const flushStreaming = q2(() => {
|
|
29358
|
+
streamRafRef.current = null;
|
|
29359
|
+
if (streamBufRef.current) setStreaming(streamBufRef.current);
|
|
29360
|
+
}, []);
|
|
29361
|
+
const cancelStreamingRaf = q2(() => {
|
|
29362
|
+
if (streamRafRef.current !== null) {
|
|
29363
|
+
cancelAnimationFrame(streamRafRef.current);
|
|
29364
|
+
streamRafRef.current = null;
|
|
29365
|
+
}
|
|
29366
|
+
streamBufRef.current = null;
|
|
29367
|
+
}, []);
|
|
29368
|
+
const refetchCanonicalState = q2(async () => {
|
|
29369
|
+
try {
|
|
29370
|
+
const data = await api("/messages");
|
|
29371
|
+
setMessages(data.messages ?? []);
|
|
29372
|
+
setBusy(Boolean(data.busy));
|
|
29373
|
+
cancelStreamingRaf();
|
|
29374
|
+
setStreaming(null);
|
|
29375
|
+
setActiveTool(null);
|
|
29376
|
+
} catch {
|
|
29377
|
+
}
|
|
29378
|
+
}, [cancelStreamingRaf]);
|
|
29250
29379
|
y2(() => {
|
|
29251
29380
|
const es = new EventSource(`/api/events?token=${TOKEN}`);
|
|
29381
|
+
let firstOpen = true;
|
|
29382
|
+
es.onopen = () => {
|
|
29383
|
+
if (firstOpen) {
|
|
29384
|
+
firstOpen = false;
|
|
29385
|
+
return;
|
|
29386
|
+
}
|
|
29387
|
+
void refetchCanonicalState();
|
|
29388
|
+
};
|
|
29252
29389
|
es.onmessage = (ev) => {
|
|
29253
29390
|
let dash;
|
|
29254
29391
|
try {
|
|
@@ -29266,14 +29403,20 @@ function ChatPane(props) {
|
|
|
29266
29403
|
return;
|
|
29267
29404
|
}
|
|
29268
29405
|
if (dash.kind === "assistant_delta") {
|
|
29269
|
-
|
|
29270
|
-
|
|
29271
|
-
|
|
29272
|
-
|
|
29273
|
-
|
|
29406
|
+
const cur = streamBufRef.current;
|
|
29407
|
+
const baseId = cur?.id === dash.id ? cur : null;
|
|
29408
|
+
streamBufRef.current = {
|
|
29409
|
+
id: dash.id,
|
|
29410
|
+
text: (baseId?.text ?? "") + (dash.contentDelta ?? ""),
|
|
29411
|
+
reasoning: (baseId?.reasoning ?? "") + (dash.reasoningDelta ?? "")
|
|
29412
|
+
};
|
|
29413
|
+
if (streamRafRef.current === null) {
|
|
29414
|
+
streamRafRef.current = requestAnimationFrame(flushStreaming);
|
|
29415
|
+
}
|
|
29274
29416
|
return;
|
|
29275
29417
|
}
|
|
29276
29418
|
if (dash.kind === "assistant_final") {
|
|
29419
|
+
cancelStreamingRaf();
|
|
29277
29420
|
setStreaming(null);
|
|
29278
29421
|
setMessages((prev) => [
|
|
29279
29422
|
...prev,
|
|
@@ -29308,18 +29451,26 @@ function ChatPane(props) {
|
|
|
29308
29451
|
setError(t4("chat.eventStreamError"));
|
|
29309
29452
|
setTimeout(() => setError(null), 3e3);
|
|
29310
29453
|
};
|
|
29311
|
-
return () =>
|
|
29312
|
-
|
|
29454
|
+
return () => {
|
|
29455
|
+
es.close();
|
|
29456
|
+
cancelStreamingRaf();
|
|
29457
|
+
};
|
|
29458
|
+
}, [refetchCanonicalState, cancelStreamingRaf]);
|
|
29313
29459
|
y2(() => {
|
|
29314
29460
|
if (!shouldAutoScroll.current) return;
|
|
29315
29461
|
const el = feedRef.current;
|
|
29316
29462
|
if (!el) return;
|
|
29463
|
+
autoScrollInFlight.current = true;
|
|
29317
29464
|
el.scrollTop = el.scrollHeight;
|
|
29465
|
+
setTimeout(() => {
|
|
29466
|
+
autoScrollInFlight.current = false;
|
|
29467
|
+
}, 0);
|
|
29318
29468
|
}, [messages, streaming]);
|
|
29319
29469
|
y2(() => {
|
|
29320
29470
|
const el = feedRef.current;
|
|
29321
29471
|
if (!el) return;
|
|
29322
29472
|
const onScroll = () => {
|
|
29473
|
+
if (autoScrollInFlight.current) return;
|
|
29323
29474
|
const distFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;
|
|
29324
29475
|
shouldAutoScroll.current = distFromBottom < 80;
|
|
29325
29476
|
};
|
|
@@ -29508,7 +29659,6 @@ ${commentRefs}` : commentRefs;
|
|
|
29508
29659
|
</div>
|
|
29509
29660
|
` : null}
|
|
29510
29661
|
<div style=${{ display: "flex", gap: "8px", alignItems: "flex-end", position: "relative" }}>
|
|
29511
|
-
<button style=${{ background: "transparent", border: "none", color: "var(--fg-3)", padding: "8px", cursor: "pointer", fontSize: "18px", flexShrink: 0 }}>+</button>
|
|
29512
29662
|
<div style=${{ flex: 1, position: "relative" }}>
|
|
29513
29663
|
${popoverKind && popoverItems.length > 0 ? html6`
|
|
29514
29664
|
<div class="popover" style="position:absolute;bottom:calc(100% + 6px);left:0;width:380px;max-height:280px;overflow-y:auto;z-index:10">
|
|
@@ -29551,7 +29701,7 @@ ${commentRefs}` : commentRefs;
|
|
|
29551
29701
|
</div>
|
|
29552
29702
|
</div>
|
|
29553
29703
|
</div>
|
|
29554
|
-
<${
|
|
29704
|
+
<${ChatStatusBar3} stats=${stats} model=${model} />
|
|
29555
29705
|
</div>
|
|
29556
29706
|
`;
|
|
29557
29707
|
}
|