@teammy/server 0.0.4 → 0.0.5
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 +3 -3
- package/dist/main.js +28 -1
- package/dist/web/assets/Dashboard--f1vaGx8.js +1 -0
- package/dist/web/assets/Files-Bc00wOfT.js +1 -0
- package/dist/web/assets/{Markdown-CcCzS4DP.js → Markdown-BrmcIotb.js} +4 -4
- package/dist/web/assets/Sessions-Bmlb8Xay.js +1 -0
- package/dist/web/assets/index-CgsCXCcm.js +64 -0
- package/dist/web/assets/index-uXzN7fKr.css +1 -0
- package/dist/web/index.html +3 -3
- package/package.json +1 -1
- package/dist/web/assets/Dashboard-CfMDmukc.js +0 -1
- package/dist/web/assets/Files-DvK_N3lO.js +0 -1
- package/dist/web/assets/Sessions-DTLr1cTK.js +0 -1
- package/dist/web/assets/file-links-BAMah1K6.js +0 -1
- package/dist/web/assets/index-CeGPJ_an.css +0 -1
- package/dist/web/assets/index-l1r3Ekhs.js +0 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,D as n,E as r,M as i,N as a,P as o,T as s,c,d as l,f as u,j as d,k as f,l as p,m,o as h,u as g,v as _,w as v,x as y,y as b}from"./index-CgsCXCcm.js";import{t as x}from"./Markdown-BrmcIotb.js";var S=o(),C=r([`claude-code`,`codex`,`cursor`,`pi`,`dsh`]),w=d({formatVersion:f(1),adapterVersion:f(1),agent:C,nativeId:i().min(1).max(512),cwd:i().min(1).max(4096),messages:n(d({id:i().min(1).max(1024),role:r([`user`,`assistant`]),text:i().min(1).max(2097152),source:i().min(1).max(1024)}).strict()).max(5e4)}).strict().refine(e=>new Set(e.messages.map(e=>e.id)).size===e.messages.length,`Duplicate message IDs.`);d({operationId:a(),sessionKey:t,parentRevision:v,blob:y}).strict();var T=d({owner:s,sessionKey:t,agent:C,nativeId:i(),cwd:i(),title:i(),revision:v,updatedAt:i(),messageCount:e().int().nonnegative(),blob:y});d({sessions:n(T),nextCursor:v.nullable()});var E=d({totalSessions:e().int().nonnegative(),totalMessages:e().int().nonnegative(),memberCount:e().int().nonnegative(),updatedAt:i().nullable()}),D=d({matches:n(d({owner:s,sessionKey:t,revision:v,messageId:i(),role:r([`user`,`assistant`]),snippet:i()})),nextCursor:v.nullable()}),O=u(),k=e=>b(`sessions/stats`,E,{signal:e});function A(){let[e,t]=(0,S.useState)(``),[n,r]=(0,S.useState)(``),[i,a]=(0,S.useState)(0),o=m(k,!0);return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(g,{title:`会话浏览`,children:(0,O.jsx)(c,{icon:`refresh`,label:`刷新会话`,"data-testid":`sessions-refresh`,disabled:o.loading,onClick:()=>{o.reload(),a(e=>e+1)}})}),(0,O.jsx)(p,{error:!0,children:o.error}),(0,O.jsxs)(`dl`,{className:`session-stats`,"data-testid":`session-stats`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{children:`会话总数`}),(0,O.jsx)(`dd`,{"data-testid":`session-total`,children:o.data?.totalSessions??`—`})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{children:`消息`}),(0,O.jsx)(`dd`,{children:o.data?.totalMessages??`—`})]}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`dt`,{children:`共享成员`}),(0,O.jsx)(`dd`,{children:o.data?.memberCount??`—`})]}),(0,O.jsxs)(`div`,{className:`session-last-updated`,children:[(0,O.jsx)(`dt`,{children:`最近更新`}),(0,O.jsx)(`dd`,{children:(0,O.jsx)(l,{value:o.data?.updatedAt})})]})]}),(0,O.jsxs)(`form`,{className:`session-search`,"data-testid":`session-search-form`,onSubmit:t=>{t.preventDefault(),r(e.trim()),a(e=>e+1)},children:[(0,O.jsx)(h,{id:`session-query`,label:`搜索会话`,children:(0,O.jsx)(`input`,{value:e,maxLength:500,placeholder:`关键词、问题或代码标识符`,onChange:e=>t(e.target.value)})}),(0,O.jsx)(`button`,{className:`primary`,"data-testid":`session-search`,disabled:!e.trim(),children:`搜索`}),(n||e)&&(0,O.jsx)(c,{icon:`close`,label:`清空搜索`,"data-testid":`session-search-clear`,onClick:()=>{t(``),r(``)}})]}),n?(0,O.jsx)(j,{query:n,refresh:i},n):(0,O.jsx)(`div`,{className:`session-search-empty`,children:(0,O.jsx)(`p`,{children:o.data?.totalSessions===0?`暂无共享会话`:`搜索团队会话,查阅相关讨论。`})})]})}function j({query:e,refresh:t}){let[n,r]=(0,S.useState)(0),[i,a]=(0,S.useState)(),o=(0,S.useCallback)(t=>b(`sessions/search?${new URLSearchParams({q:e,after:String(n),limit:`30`})}`,D,{signal:t}),[e,n,t]),s=m(o);return(0,O.jsxs)(`div`,{className:`session-browser ${i?``:`search-only`}`,children:[(0,O.jsxs)(`section`,{className:`session-list stack`,"aria-label":`搜索结果`,"aria-busy":s.loading,children:[(0,O.jsx)(p,{error:!0,children:s.error}),s.error&&(0,O.jsx)(`button`,{onClick:()=>void s.reload(),children:`重试`}),s.loading&&(0,O.jsx)(`p`,{role:`status`,children:`正在搜索…`}),s.data?.matches.map(e=>(0,O.jsxs)(`button`,{className:`session-item`,"data-testid":`session-match`,"data-message-id":e.messageId,"aria-pressed":i?.key===e.sessionKey&&i.owner===e.owner&&i.messageId===e.messageId,onClick:()=>a({owner:e.owner,key:e.sessionKey,revision:e.revision,messageId:e.messageId}),children:[(0,O.jsxs)(`small`,{children:[e.owner,` · `,e.role===`user`?`用户`:`助手`]}),(0,O.jsx)(`span`,{children:e.snippet})]},`${e.owner}:${e.sessionKey}:${e.messageId}`)),!s.loading&&s.data?.matches.length===0&&(0,O.jsx)(`p`,{className:`empty`,children:`没有找到匹配的会话`}),s.data?.nextCursor!=null&&(0,O.jsx)(`button`,{"data-testid":`sessions-next`,disabled:s.loading,onClick:()=>r(s.data.nextCursor),children:`下一页`}),n>0&&(0,O.jsx)(`button`,{disabled:s.loading,onClick:()=>r(0),children:`返回第一页`})]}),i&&(0,O.jsx)(M,{selection:i},`${i.owner}:${i.key}:${i.revision}:${i.messageId}`)]})}function M({selection:e}){let t=(0,S.useCallback)(t=>b(`sessions/${encodeURIComponent(e.owner)}/${e.key}?revision=${e.revision}`,T,{signal:t}),[e.owner,e.key,e.revision]),n=m(t);return(0,O.jsxs)(`section`,{className:`session-conversation stack`,"data-testid":`session-detail`,children:[(0,O.jsx)(p,{error:!0,children:n.error}),n.error&&(0,O.jsx)(`button`,{onClick:()=>void n.reload(),children:`重试`}),n.loading&&(0,O.jsx)(`p`,{role:`status`,children:`正在读取会话…`}),n.data&&(0,O.jsx)(N,{info:n.data,messageId:e.messageId},n.data.blob.sha256)]})}function N({info:e,messageId:t}){let n=(0,S.useCallback)(async t=>w.parse(JSON.parse(await _(e.blob,t))),[e.blob.sha256,e.blob.size]),r=m(n),[i,a]=(0,S.useState)(0);return(0,S.useEffect)(()=>{if(r.data&&t){let e=r.data.messages.findIndex(e=>e.id===t);e>=0&&a(Math.floor(e/50)*50)}},[r.data,t]),(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`header`,{className:`conversation-header`,children:[(0,O.jsx)(`h2`,{className:`session-title`,children:e.title||e.nativeId}),(0,O.jsxs)(`p`,{children:[e.owner,` · `,e.agent,` · `,e.messageCount,` 条消息`]}),(0,O.jsx)(`small`,{children:(0,O.jsx)(l,{value:e.updatedAt})})]}),(0,O.jsx)(p,{error:!0,children:r.error}),r.error&&(0,O.jsx)(`button`,{onClick:()=>void r.reload(),children:`重新读取`}),r.loading&&(0,O.jsx)(`p`,{role:`status`,children:`正在读取会话…`}),r.data&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`div`,{className:`session-messages`,children:r.data.messages.slice(i,i+50).map(e=>(0,O.jsxs)(`article`,{className:`session-message ${e.role} ${e.id===t?`matched`:``}`,"data-testid":`session-message`,"data-message-id":e.id,children:[(0,O.jsxs)(`div`,{className:`message-role`,children:[e.role===`user`?`用户`:`助手`,e.id===t?` · 搜索命中`:``]}),(0,O.jsx)(`div`,{className:`markdown`,children:(0,O.jsx)(x,{children:e.text})})]},e.id))}),(0,O.jsxs)(`div`,{className:`row wrap`,children:[(0,O.jsx)(`button`,{"data-testid":`messages-prev`,disabled:i===0,onClick:()=>a(Math.max(0,i-50)),children:`上一段`}),(0,O.jsxs)(`small`,{children:[r.data.messages.length?i+1:0,`–`,Math.min(i+50,r.data.messages.length),` /`,` `,r.data.messages.length]}),(0,O.jsx)(`button`,{"data-testid":`messages-next`,disabled:i+50>=r.data.messages.length,onClick:()=>a(i+50),children:`下一段`})]})]})]})}export{A as Sessions};
|