@hachej/boring-ui-cli 0.1.86 → 0.1.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/modeApps.js +1 -0
- package/dist/server/pluginFrontRuntime.js +12 -0
- package/package.json +9 -9
- package/public/assets/{DebugDrawer-BrLAMo90.js → DebugDrawer-Crwr1-RI.js} +1 -1
- package/public/assets/{DiagramPane-9ACaB3GP.js → DiagramPane-BjMICSzV.js} +4 -4
- package/public/assets/{abnfDiagram-VRR7QNED-BNxhN0Ca.js → abnfDiagram-VRR7QNED-DPWRLrCj.js} +1 -1
- package/public/assets/{architectureDiagram-ZJ3FMSHR-D04gPfN0.js → architectureDiagram-ZJ3FMSHR-BznHt74F.js} +1 -1
- package/public/assets/{blockDiagram-677ZJIJ3-B_2F6T3O.js → blockDiagram-677ZJIJ3-Bc-uMvZv.js} +1 -1
- package/public/assets/{c4Diagram-LMCZKHZV-Dd60ISfX.js → c4Diagram-LMCZKHZV-x9OWQMm3.js} +1 -1
- package/public/assets/channel-CAiNtULQ.js +1 -0
- package/public/assets/{chunk-32BRIVSS-DYokVZ0B.js → chunk-32BRIVSS-B-hpHl8F.js} +1 -1
- package/public/assets/{chunk-C7G6YPKG-DxTPnJ1O.js → chunk-C7G6YPKG-uFvWkH6u.js} +1 -1
- package/public/assets/{chunk-EX3LRPZG-C1L2sd8r.js → chunk-EX3LRPZG-BDeIDjs8.js} +1 -1
- package/public/assets/{chunk-HOUHSVGY-DHimRQ-s.js → chunk-HOUHSVGY-BcTh9Cy5.js} +1 -1
- package/public/assets/{chunk-ICXQ74PX-Bpw8ZS7i.js → chunk-ICXQ74PX-BDUDZE-Y.js} +1 -1
- package/public/assets/{chunk-MOJQB5TN-WnIp1p4Z.js → chunk-MOJQB5TN-BJi3Jbh1.js} +1 -1
- package/public/assets/{chunk-OGEWGWER-cupX-xkE.js → chunk-OGEWGWER-BMfvDdq8.js} +1 -1
- package/public/assets/{chunk-PUDLZKDR-m6M09z91.js → chunk-PUDLZKDR-BP5Bjo1M.js} +1 -1
- package/public/assets/{chunk-Q4XR5HBZ-D-G6ffc4.js → chunk-Q4XR5HBZ-Yt9ETrQ4.js} +1 -1
- package/public/assets/{chunk-V7JOEXUC-6wLSP_1m.js → chunk-V7JOEXUC-CpiUOMHk.js} +1 -1
- package/public/assets/{chunk-VR4S4FIN-Dghu2M3G.js → chunk-VR4S4FIN-4OscHOKG.js} +1 -1
- package/public/assets/{chunk-WYO6CB5R-B6u9-P_N.js → chunk-WYO6CB5R-CiUqhWtS.js} +2 -2
- package/public/assets/{chunk-ZGVPDNZ5-DsktkToC.js → chunk-ZGVPDNZ5-BP7ZwWUn.js} +1 -1
- package/public/assets/classDiagram-OUVF2IWQ-CA99TifN.js +1 -0
- package/public/assets/classDiagram-v2-EOCWNBFH-CA99TifN.js +1 -0
- package/public/assets/{cynefinDiagram-TSTJHNR4-Bz3MMQPS.js → cynefinDiagram-TSTJHNR4-BxYBElDt.js} +1 -1
- package/public/assets/{dagre-VKFMJZFB-QzdqynPg.js → dagre-VKFMJZFB-CEzsJfj5.js} +1 -1
- package/public/assets/{diagram-FQU43EPY-BeaTxuUD.js → diagram-FQU43EPY-Yoxoq2Ml.js} +1 -1
- package/public/assets/{diagram-G47NLZAW-DB4oQolZ.js → diagram-G47NLZAW-BeSzw0h-.js} +1 -1
- package/public/assets/{diagram-NH7WQ7WH-CVh9DspW.js → diagram-NH7WQ7WH-Cqvt3rb_.js} +1 -1
- package/public/assets/{diagram-OA4YK3LP-Dfjjs4Lc.js → diagram-OA4YK3LP-DJBSGsUs.js} +1 -1
- package/public/assets/{diagram-WEI45ONY-BSUhcDR_.js → diagram-WEI45ONY-D4b9C_A-.js} +1 -1
- package/public/assets/{dist-B0WZdZX6.js → dist-BcgWLSjc.js} +1 -1
- package/public/assets/{ebnfDiagram-CCIWWBDH-DbukxspC.js → ebnfDiagram-CCIWWBDH-WVuSMqSB.js} +1 -1
- package/public/assets/{erDiagram-Q63AITRT-hhTT8RZr.js → erDiagram-Q63AITRT-BuuyPJ_3.js} +1 -1
- package/public/assets/flowDiagram-23GEKE2U-CkTA-PWX.js +1 -0
- package/public/assets/{ganttDiagram-NO4QXBWP-eUAkrlg-.js → ganttDiagram-NO4QXBWP-CWXfDFIY.js} +1 -1
- package/public/assets/{gitGraphDiagram-IHSO6WYX-CVZEoxXa.js → gitGraphDiagram-IHSO6WYX-GAPjTonn.js} +1 -1
- package/public/assets/{highlighted-body-OFNGDK62-Y6dXsFsr.js → highlighted-body-OFNGDK62-BrD5dz2w.js} +1 -1
- package/public/assets/{index-UA_cHl90.css → index-BrpbLQBl.css} +1 -1
- package/public/assets/{index-D28uQ8CD.js → index-DAoG6NJz.js} +8 -8
- package/public/assets/{infoDiagram-FWYZ7A6U-CG-ujlgQ.js → infoDiagram-FWYZ7A6U-CJ09wWnx.js} +1 -1
- package/public/assets/{ishikawaDiagram-FXEZZL3T-DyaFzLMh.js → ishikawaDiagram-FXEZZL3T-CIehMp97.js} +1 -1
- package/public/assets/{journeyDiagram-5HDEW3XC-BZy1_4QC.js → journeyDiagram-5HDEW3XC-CTu1JZxZ.js} +1 -1
- package/public/assets/{kanban-definition-HUTT4EX6-Du9NL5YB.js → kanban-definition-HUTT4EX6-CpH17at_.js} +1 -1
- package/public/assets/{line-C0wt0c7B.js → line-DV0toWGN.js} +1 -1
- package/public/assets/mermaid-GHXKKRXX-D5LmLC_6.js +1 -0
- package/public/assets/{mindmap-definition-LN4V7U3C-B1q_xyqk.js → mindmap-definition-LN4V7U3C-DM59MH5G.js} +1 -1
- package/public/assets/{pegDiagram-2B236MQR-DcNJgcxc.js → pegDiagram-2B236MQR-B3VbU3x1.js} +1 -1
- package/public/assets/{pieDiagram-ENE6RG2P-DktDTeBG.js → pieDiagram-ENE6RG2P-sO22u65R.js} +1 -1
- package/public/assets/{quadrantDiagram-ABIIQ3AL-CCcp49zr.js → quadrantDiagram-ABIIQ3AL-Bmtq2B6v.js} +1 -1
- package/public/assets/{railroadDiagram-RFXS5EU6-CIS_LQWY.js → railroadDiagram-RFXS5EU6-DSZodXWg.js} +1 -1
- package/public/assets/{requirementDiagram-TGXJPOKE-CJinh53R.js → requirementDiagram-TGXJPOKE-CfuCu5to.js} +1 -1
- package/public/assets/{sankeyDiagram-HTMAVEWB-CKgDt-cv.js → sankeyDiagram-HTMAVEWB-B20Fgpb7.js} +1 -1
- package/public/assets/{sequenceDiagram-DBY2YBRQ-BblvRcB_.js → sequenceDiagram-DBY2YBRQ-BuAxO00M.js} +1 -1
- package/public/assets/{stateDiagram-2N3HPSRC-Dx0I2Bbv.js → stateDiagram-2N3HPSRC-BwzG2dbk.js} +1 -1
- package/public/assets/stateDiagram-v2-6OUMAXLB-BZ6JVEuk.js +1 -0
- package/public/assets/{swimlanes-5IMT3BWC-DT9qZXRs.js → swimlanes-5IMT3BWC-c3ksS3pT.js} +1 -1
- package/public/assets/swimlanesDiagram-G3AALYLV-PBt_14Mu.js +8 -0
- package/public/assets/{timeline-definition-FHXFAJF6-XSpqDVul.js → timeline-definition-FHXFAJF6-DMUcRUMQ.js} +1 -1
- package/public/assets/{vennDiagram-L72KCM5P-CGpOAL19.js → vennDiagram-L72KCM5P-D4tetUdE.js} +1 -1
- package/public/assets/{wardleyDiagram-EHGQE667-BT4kzav5.js → wardleyDiagram-EHGQE667-Cr5TS8on.js} +1 -1
- package/public/assets/{xychartDiagram-FW5EYKEG-Cb2F6-0D.js → xychartDiagram-FW5EYKEG-BfGMZHbM.js} +1 -1
- package/public/index.html +10 -10
- package/public/assets/channel-pdYpGxUx.js +0 -1
- package/public/assets/classDiagram-OUVF2IWQ-Cm4QMUJL.js +0 -1
- package/public/assets/classDiagram-v2-EOCWNBFH-Cm4QMUJL.js +0 -1
- package/public/assets/flowDiagram-23GEKE2U-BIY1jcXE.js +0 -1
- package/public/assets/mermaid-GHXKKRXX-Du4W40SQ.js +0 -1
- package/public/assets/stateDiagram-v2-6OUMAXLB-Cu3wgEJ3.js +0 -1
- package/public/assets/swimlanesDiagram-G3AALYLV-C7QeTTAu.js +0 -8
package/dist/server/modeApps.js
CHANGED
|
@@ -425,6 +425,7 @@ async function createWorkspacesModeApp(opts) {
|
|
|
425
425
|
pluginPiSnapshots.set(pluginRuntimeKey(workspace), manager.inspectLoadedPiSnapshot());
|
|
426
426
|
}
|
|
427
427
|
function getOrCreatePluginRuntime(workspace) {
|
|
428
|
+
runtimeHost.activateWorkspace(workspace.id);
|
|
428
429
|
const key = pluginRuntimeKey(workspace);
|
|
429
430
|
let runtime = pluginRuntimes.get(key);
|
|
430
431
|
if (!runtime) {
|
|
@@ -1106,6 +1106,7 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1106
1106
|
const trackedPluginRevisions = /* @__PURE__ */ new Map();
|
|
1107
1107
|
const transformCache = /* @__PURE__ */ new Map();
|
|
1108
1108
|
const workspaceDisposalEpoch = /* @__PURE__ */ new Map();
|
|
1109
|
+
const disposedWorkspaces = /* @__PURE__ */ new Set();
|
|
1109
1110
|
const mintedSupportPathsByCacheKey = /* @__PURE__ */ new Map();
|
|
1110
1111
|
const mintedSupportPathRefCounts = /* @__PURE__ */ new Map();
|
|
1111
1112
|
const limiter = new TransformLimiter(Math.max(1, options.maxTransformConcurrency ?? DEFAULT_MAX_TRANSFORM_CONCURRENCY));
|
|
@@ -1372,6 +1373,9 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1372
1373
|
throw new PluginFrontRuntimeError(ErrorCode.enum.INTERNAL_ERROR, 503, "serve", "plugin front runtime host is closed");
|
|
1373
1374
|
}
|
|
1374
1375
|
const workspaceId = ensureSafeId("workspace", request.workspaceId);
|
|
1376
|
+
if (disposedWorkspaces.has(workspaceId)) {
|
|
1377
|
+
throw new PluginFrontRuntimeError(ErrorCode.enum.PATH_NOT_FOUND, 404, "validate", "plugin runtime workspace was evicted", { workspaceId });
|
|
1378
|
+
}
|
|
1375
1379
|
const pluginId = ensureSafeId("plugin", request.pluginId);
|
|
1376
1380
|
const revision = parseRevision(request.revision);
|
|
1377
1381
|
const requestedPath = normalizeRequestSubpath(request.subpath);
|
|
@@ -1688,15 +1692,20 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1688
1692
|
}
|
|
1689
1693
|
async function disposeWorkspace(workspaceId) {
|
|
1690
1694
|
workspaceDisposalEpoch.set(workspaceId, (workspaceDisposalEpoch.get(workspaceId) ?? 0) + 1);
|
|
1695
|
+
disposedWorkspaces.add(workspaceId);
|
|
1691
1696
|
trackedWorkspaces.delete(workspaceId);
|
|
1692
1697
|
trackedPluginRevisions.delete(workspaceId);
|
|
1693
1698
|
await invalidateMatching((entry) => entry.workspaceId === workspaceId);
|
|
1694
1699
|
}
|
|
1700
|
+
function activateWorkspace(workspaceId) {
|
|
1701
|
+
disposedWorkspaces.delete(ensureSafeId("workspace", workspaceId));
|
|
1702
|
+
}
|
|
1695
1703
|
async function close() {
|
|
1696
1704
|
if (closed) return;
|
|
1697
1705
|
closed = true;
|
|
1698
1706
|
trackedWorkspaces.clear();
|
|
1699
1707
|
trackedPluginRevisions.clear();
|
|
1708
|
+
disposedWorkspaces.clear();
|
|
1700
1709
|
transformCache.clear();
|
|
1701
1710
|
mintedSupportPathsByCacheKey.clear();
|
|
1702
1711
|
mintedSupportPathRefCounts.clear();
|
|
@@ -1731,7 +1740,9 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1731
1740
|
return entryUrl;
|
|
1732
1741
|
}
|
|
1733
1742
|
function createFrontTargetResolver(workspaceId) {
|
|
1743
|
+
const disposalEpoch = workspaceDisposalEpoch.get(workspaceId) ?? 0;
|
|
1734
1744
|
return (plugin, context) => {
|
|
1745
|
+
if ((workspaceDisposalEpoch.get(workspaceId) ?? 0) !== disposalEpoch) return void 0;
|
|
1735
1746
|
if (!plugin.frontPath) return void 0;
|
|
1736
1747
|
const frontEntrySubpath = normalizeRequestSubpath(context.frontEntrySubpath);
|
|
1737
1748
|
if (!/(^|\/)front\//.test(frontEntrySubpath)) return void 0;
|
|
@@ -1802,6 +1813,7 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1802
1813
|
basePath,
|
|
1803
1814
|
singletonModules: HOST_SINGLETON_MODULES,
|
|
1804
1815
|
createFrontTargetResolver,
|
|
1816
|
+
activateWorkspace,
|
|
1805
1817
|
trackPlugin,
|
|
1806
1818
|
untrackPlugin,
|
|
1807
1819
|
invalidatePlugin,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-ui-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.87",
|
|
4
4
|
"description": "Turn an agent into an app",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
"typescript": "^6.0.3",
|
|
22
22
|
"vite": "^8.1.2",
|
|
23
23
|
"yaml": "^2.9.0",
|
|
24
|
-
"@hachej/boring-
|
|
25
|
-
"@hachej/boring-
|
|
26
|
-
"@hachej/boring-automation": "0.1.
|
|
27
|
-
"@hachej/boring-
|
|
28
|
-
"@hachej/boring-
|
|
29
|
-
"@hachej/boring-ui-kit": "0.1.
|
|
30
|
-
"@hachej/boring-ui-plugin-cli": "0.1.
|
|
31
|
-
"@hachej/boring-workspace": "0.1.
|
|
24
|
+
"@hachej/boring-ask-user": "0.1.87",
|
|
25
|
+
"@hachej/boring-agent": "0.1.87",
|
|
26
|
+
"@hachej/boring-automation": "0.1.87",
|
|
27
|
+
"@hachej/boring-diagram": "0.1.87",
|
|
28
|
+
"@hachej/boring-tasks": "0.1.87",
|
|
29
|
+
"@hachej/boring-ui-kit": "0.1.87",
|
|
30
|
+
"@hachej/boring-ui-plugin-cli": "0.1.87",
|
|
31
|
+
"@hachej/boring-workspace": "0.1.87"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@tailwindcss/vite": "^4.3.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{n as t,t as n}from"./jsx-runtime-CBD9r_Rc.js";import{Ct as r,G as i,St as a,Tt as o,d as s,wt as c}from"./createLucideIcon-Wu4zuv2w.js";import{A as l,E as u,M as d,N as f,T as p,j as m,k as h}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{n as t,t as n}from"./jsx-runtime-CBD9r_Rc.js";import{Ct as r,G as i,St as a,Tt as o,d as s,wt as c}from"./createLucideIcon-Wu4zuv2w.js";import{A as l,E as u,M as d,N as f,T as p,j as m,k as h}from"./index-DAoG6NJz.js";var g=e(t(),1),_=e(n(),1);function v({value:e,label:t}){let[n,r]=(0,g.useState)(!1);return(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:(0,g.useCallback)(()=>{p(e).then(e=>{e&&(r(!0),window.setTimeout(()=>r(!1),1200))})},[e]),className:`text-muted-foreground/60`,"aria-label":t,title:t,children:n?(0,_.jsx)(f,{className:`h-3 w-3`}):(0,_.jsx)(l,{className:`h-3 w-3`})})}function y({label:e,value:t}){return(0,_.jsxs)(`div`,{className:`rounded-md border border-border/40 bg-muted/20 p-2`,children:[(0,_.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,_.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,_.jsx)(v,{value:t,label:`Copy ${e}`})]}),(0,_.jsx)(`code`,{className:`block break-all font-mono text-[11px] leading-relaxed text-foreground dark:text-zinc-100`,children:t})]})}function b({sessionId:e}){return(0,_.jsxs)(`div`,{className:`flex flex-col gap-3 overflow-auto p-3 text-[11px] text-muted-foreground dark:text-zinc-300`,children:[(0,_.jsx)(`p`,{className:`text-muted-foreground dark:text-zinc-300`,children:`This web chat is backed by a runtime session. Use the id below for support or debugging.`}),(0,_.jsx)(y,{label:`Runtime session id`,value:e})]})}var x=2500,S=20;function C({apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:r,storageScope:a}){let[o,s]=(0,g.useState)({kind:`loading`}),[c,l]=(0,g.useState)(0),u=(0,g.useRef)(0),d=(0,g.useCallback)(()=>{u.current=0,l(e=>e+1)},[]);return(0,g.useEffect)(()=>{let i=!1,o=null;return s({kind:`loading`}),(t??globalThis.fetch.bind(globalThis))(j(e,`/api/v1/agent/sessions/${encodeURIComponent(n)}/system-prompt`),{headers:M(r,a)}).then(async e=>{if(i)return;if(e.ok){let t=await e.json();if(typeof t.systemPrompt==`string`){u.current=0,s({kind:`ok`,text:t.systemPrompt});return}}let t=(await e.json().catch(()=>null))?.error?.message??`HTTP ${e.status}`;e.status===404&&u.current<S?(s({kind:`empty`,reason:t}),o=setTimeout(()=>{i||(u.current++,l(e=>e+1))},x)):s(e.status===404?{kind:`empty`,reason:t}:{kind:`error`,reason:t})}).catch(e=>{i||s({kind:`error`,reason:e instanceof Error?e.message:String(e)})}),()=>{i=!0,o&&clearTimeout(o)}},[e,t,n,r,c,a]),(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 flex items-center justify-between px-3 pt-2 pb-1 border-b border-border/40`,children:[(0,_.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 font-mono`,children:o.kind===`ok`?`${o.text.length.toLocaleString()} chars`:o.kind===`loading`?`loading…`:o.kind===`empty`?`waiting for session · retry ${u.current}/${S}`:`error`}),o.kind!==`loading`&&(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:d,className:`text-muted-foreground/60`,"aria-label":`Refresh system prompt`,children:(0,_.jsx)(h,{className:`h-3 w-3`})})]}),(o.kind===`loading`||o.kind===`empty`)&&(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:o.kind===`loading`?`Loading…`:o.reason}),o.kind===`error`&&(0,_.jsx)(`p`,{className:`text-[11px] text-destructive p-3`,children:o.reason}),o.kind===`ok`&&(0,_.jsx)(`pre`,{className:`flex-1 overflow-auto px-3 py-2 font-mono text-[11px] leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:o.text})]})}function w(e){let t=e,n=t?.type??`?`;if(n===`text`){let e=String(t.text??``);return e.slice(0,80)+(e.length>80?`…`:``)}if(n===`tool-invocation`){let e=t.toolInvocation,n=String(e?.state??``);return`${e?.toolName??`?`}() · ${n}`}if(n===`reasoning`){let e=String(t.text??t.reasoning??``);return e.slice(0,80)+(e.length>80?`…`:``)}return n}function T(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=r,a=i.createdAt?new Date(i.createdAt).toISOString().slice(11,23):null;for(let e=0;e<r.parts.length;e++){let i=r.parts[e];t.push({msgId:r.id,msgIndex:n,role:r.role,time:a,partIndex:e,partType:i?.type??`unknown`,part:i})}}return t}function E({messages:e}){let t=T(e),[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(t.length);return(0,g.useEffect)(()=>{t.length!==a.current&&(i.current?.scrollIntoView({behavior:`smooth`}),a.current=t.length)},[t.length]),t.length===0?(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:`No messages yet.`}):(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 px-3 pt-2 pb-1 text-[10px] text-muted-foreground/80 font-mono border-b border-border/40`,children:[e.length,` msg · `,t.length,` parts`]}),(0,_.jsxs)(`div`,{className:`flex-1 overflow-auto`,children:[t.map(e=>{let t=`${e.msgId}:${e.partIndex}`,i=n===t;return(0,_.jsxs)(`div`,{className:`border-b border-border/30 last:border-0`,children:[(0,_.jsxs)(s,{type:`button`,variant:`ghost`,onClick:()=>r(i?null:t),className:`h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1.5 text-left`,children:[(0,_.jsx)(`span`,{className:`mt-0.5 shrink-0 text-muted-foreground/40`,children:i?(0,_.jsx)(d,{className:`h-3 w-3`}):(0,_.jsx)(m,{className:`h-3 w-3`})}),(0,_.jsx)(`span`,{className:`font-mono text-[10px] shrink-0 w-20`,children:e.time?(0,_.jsx)(`span`,{className:`text-muted-foreground/60`,children:e.time}):(0,_.jsxs)(`span`,{className:`text-muted-foreground/30`,children:[`m`,e.msgIndex]})}),(0,_.jsx)(`span`,{className:u(`shrink-0 font-mono text-[10px] w-14`,e.role===`user`?`text-accent`:`text-muted-foreground`),children:e.role}),(0,_.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/60 w-24`,children:e.partType}),(0,_.jsx)(`span`,{className:`flex-1 min-w-0 font-mono text-[11px] text-foreground truncate`,children:w(e.part)})]}),i&&(0,_.jsx)(`pre`,{className:`px-3 pb-2 font-mono text-[10px] leading-relaxed text-foreground/80 whitespace-pre-wrap break-words bg-muted/20`,children:JSON.stringify(e.part,null,2)})]},t)}),(0,_.jsx)(`div`,{ref:i})]})]})}var D=[{id:`session`,label:`Session`},{id:`prompt`,label:`System prompt`},{id:`messages`,label:`Messages`}],O=280,k=800;function A({apiBaseUrl:e,fetch:t,sessionId:n,messages:i,requestHeaders:s,storageScope:l,width:d,onWidthChange:f}){let[p,m]=(0,g.useState)(`session`);return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`div`,{onMouseDown:(0,g.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=d,r=e=>{let r=t-e.clientX;f(Math.min(k,Math.max(O,n+r)))},i=()=>{window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i)},[d,f]),className:`w-1 shrink-0 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 transition-colors`,"aria-hidden":!0}),(0,_.jsx)(`aside`,{style:{width:d},className:u(`flex h-full shrink-0 flex-col border-l border-border/60`,`bg-[oklch(from_var(--background)_calc(l-0.01)_c_h)]`),children:(0,_.jsxs)(a,{value:p,onValueChange:e=>m(e),className:`flex flex-col flex-1 min-h-0 overflow-hidden`,children:[(0,_.jsx)(`header`,{className:`flex shrink-0 items-center gap-0 border-b border-border/60 px-1`,children:(0,_.jsx)(c,{variant:`line`,className:`h-auto gap-0 p-0 w-full`,children:D.map(({id:e,label:t})=>(0,_.jsx)(o,{value:e,className:`h-8 flex-none px-3 py-2 text-[11px] font-medium data-[state=active]:after:bg-[color:var(--accent)]`,children:t},e))})}),(0,_.jsx)(r,{value:`session`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(b,{sessionId:n})}),(0,_.jsx)(r,{value:`prompt`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(C,{apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:s,storageScope:l})}),(0,_.jsx)(r,{value:`messages`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(E,{messages:i})})]})})]})}function j(e,t){return`${e?.replace(/\/$/,``)??``}${t}`}function M(e,t){if(!e&&!t)return;let n={...e??{}},r=Object.keys(n).some(e=>e.toLowerCase()===`x-boring-storage-scope`);return t&&!r&&(n[`x-boring-storage-scope`]=t),n}export{A as DebugDrawer};
|