@xopcai/xopc 0.0.26 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/extensions/telegram/xopc.extension.json +1 -1
  2. package/dist/extensions/weixin/src/adapters/onboard-cli.d.ts +7 -0
  3. package/dist/extensions/weixin/src/adapters/onboard-cli.js +61 -0
  4. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +1 -0
  5. package/dist/extensions/weixin/src/cli/qr-login.d.ts +5 -0
  6. package/dist/extensions/weixin/src/cli/qr-login.js +1 -1
  7. package/dist/extensions/weixin/src/cli/qr-login.js.map +1 -1
  8. package/dist/extensions/weixin/src/index.js +1 -1
  9. package/dist/extensions/weixin/src/plugin.d.ts +1 -0
  10. package/dist/extensions/weixin/src/plugin.js +2 -0
  11. package/dist/extensions/weixin/src/plugin.js.map +1 -1
  12. package/dist/gateway/static/root/assets/{agents-Clv9i1Kb.js → agents-DplaQYS2.js} +2 -2
  13. package/dist/gateway/static/root/assets/{agents-Clv9i1Kb.js.map → agents-DplaQYS2.js.map} +1 -1
  14. package/dist/gateway/static/root/assets/{apps-page-DqclV-PP.js → apps-page-Co95hLOJ.js} +2 -2
  15. package/dist/gateway/static/root/assets/{apps-page-DqclV-PP.js.map → apps-page-Co95hLOJ.js.map} +1 -1
  16. package/dist/gateway/static/root/assets/{channels-settings-CLyTYjrz.js → channels-settings-CkfSST0k.js} +2 -2
  17. package/dist/gateway/static/root/assets/{channels-settings-CLyTYjrz.js.map → channels-settings-CkfSST0k.js.map} +1 -1
  18. package/dist/gateway/static/root/assets/{cron-page-CU8lutMt.js → cron-page-D9q6KqL8.js} +2 -2
  19. package/dist/gateway/static/root/assets/{cron-page-CU8lutMt.js.map → cron-page-D9q6KqL8.js.map} +1 -1
  20. package/dist/gateway/static/root/assets/{cron-utils-_UjiWax6.js → cron-utils-BmzF4m1y.js} +2 -2
  21. package/dist/gateway/static/root/assets/{cron-utils-_UjiWax6.js.map → cron-utils-BmzF4m1y.js.map} +1 -1
  22. package/dist/gateway/static/root/assets/{dist-Xqb4IGWC.js → dist-Dn-ufXyc.js} +2 -2
  23. package/dist/gateway/static/root/assets/{dist-Xqb4IGWC.js.map → dist-Dn-ufXyc.js.map} +1 -1
  24. package/dist/gateway/static/root/assets/{extension-debug-page-CtTUkAmw.js → extension-debug-page-BZ8xQ74_.js} +2 -2
  25. package/dist/gateway/static/root/assets/{extension-debug-page-CtTUkAmw.js.map → extension-debug-page-BZ8xQ74_.js.map} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-page-C-aQU8qR.js → extension-page-BlNgKxwW.js} +2 -2
  27. package/dist/gateway/static/root/assets/{extension-page-C-aQU8qR.js.map → extension-page-BlNgKxwW.js.map} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-settings-page-b0y9aY-q.js → extension-settings-page-CWTdW_oY.js} +2 -2
  29. package/dist/gateway/static/root/assets/{extension-settings-page-b0y9aY-q.js.map → extension-settings-page-CWTdW_oY.js.map} +1 -1
  30. package/dist/gateway/static/root/assets/index-OT4cGzon.css +1 -0
  31. package/dist/gateway/static/root/assets/{index-Gr2HWo-G.js → index-lV8FGWlt.js} +94 -94
  32. package/dist/gateway/static/root/assets/{index-Gr2HWo-G.js.map → index-lV8FGWlt.js.map} +1 -1
  33. package/dist/gateway/static/root/assets/logs-page-DG31RpvG.js +2 -0
  34. package/dist/gateway/static/root/assets/logs-page-DG31RpvG.js.map +1 -0
  35. package/dist/gateway/static/root/assets/sessions-page-CdmjxDEM.js +2 -0
  36. package/dist/gateway/static/root/assets/{sessions-page-Cryg-36Z.js.map → sessions-page-CdmjxDEM.js.map} +1 -1
  37. package/dist/gateway/static/root/assets/{settings-page-DFNKT9yg.js → settings-page-DU2XLf5s.js} +2 -2
  38. package/dist/gateway/static/root/assets/{settings-page-DFNKT9yg.js.map → settings-page-DU2XLf5s.js.map} +1 -1
  39. package/dist/gateway/static/root/assets/{skills-page-D4gfh0Ih.js → skills-page-lb7vYtlP.js} +2 -2
  40. package/dist/gateway/static/root/assets/{skills-page-D4gfh0Ih.js.map → skills-page-lb7vYtlP.js.map} +1 -1
  41. package/dist/gateway/static/root/index.html +2 -2
  42. package/dist/package.js +1 -1
  43. package/dist/src/channels/index.js +2 -2
  44. package/dist/src/channels/manager.js +2 -2
  45. package/dist/src/channels/weixin/index.js +1 -1
  46. package/dist/src/cli/agent-chat-log-level-preset.d.ts +7 -0
  47. package/dist/src/cli/agent-chat-log-level-preset.js +22 -0
  48. package/dist/src/cli/agent-chat-log-level-preset.js.map +1 -0
  49. package/dist/src/cli/commands/agent/interactive.js +4 -2
  50. package/dist/src/cli/commands/agent/interactive.js.map +1 -1
  51. package/dist/src/cli/commands/agent/stream-renderer.d.ts +14 -0
  52. package/dist/src/cli/commands/agent/stream-renderer.js +99 -0
  53. package/dist/src/cli/commands/agent/stream-renderer.js.map +1 -0
  54. package/dist/src/cli/commands/agent.js +2 -2
  55. package/dist/src/cli/commands/agent.js.map +1 -1
  56. package/dist/src/cli/commands/onboard.js +77 -93
  57. package/dist/src/cli/commands/onboard.js.map +1 -1
  58. package/dist/src/cli/commands/tui.d.ts +1 -0
  59. package/dist/src/cli/commands/tui.js +40 -0
  60. package/dist/src/cli/commands/tui.js.map +1 -0
  61. package/dist/src/cli/index.d.ts +2 -0
  62. package/dist/src/cli/index.js +3 -0
  63. package/dist/src/cli/index.js.map +1 -1
  64. package/dist/src/config/schema.d.ts +6 -0
  65. package/dist/src/config/schema.js +6 -1
  66. package/dist/src/config/schema.js.map +1 -1
  67. package/dist/src/gateway/auth.d.ts +17 -3
  68. package/dist/src/gateway/auth.js +35 -16
  69. package/dist/src/gateway/auth.js.map +1 -1
  70. package/dist/src/gateway/hono/app.js +30 -1
  71. package/dist/src/gateway/hono/app.js.map +1 -1
  72. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -1
  73. package/dist/src/gateway/hono/middleware/auth.js +4 -3
  74. package/dist/src/gateway/hono/middleware/auth.js.map +1 -1
  75. package/dist/src/gateway/hono/middleware/scopes.d.ts +15 -0
  76. package/dist/src/gateway/hono/middleware/scopes.js +41 -0
  77. package/dist/src/gateway/hono/middleware/scopes.js.map +1 -0
  78. package/dist/src/gateway/security/audit.d.ts +18 -0
  79. package/dist/src/gateway/security/audit.js +68 -0
  80. package/dist/src/gateway/security/audit.js.map +1 -0
  81. package/dist/src/gateway/security/csp.d.ts +19 -0
  82. package/dist/src/gateway/security/csp.js +52 -0
  83. package/dist/src/gateway/security/csp.js.map +1 -0
  84. package/dist/src/gateway/security/dangerous-tools.d.ts +20 -0
  85. package/dist/src/gateway/security/dangerous-tools.js +46 -0
  86. package/dist/src/gateway/security/dangerous-tools.js.map +1 -0
  87. package/dist/src/gateway/security/flood-guard.d.ts +28 -0
  88. package/dist/src/gateway/security/flood-guard.js +42 -0
  89. package/dist/src/gateway/security/flood-guard.js.map +1 -0
  90. package/dist/src/gateway/security/index.d.ts +9 -0
  91. package/dist/src/gateway/security/index.js +10 -0
  92. package/dist/src/gateway/security/known-weak-secrets.d.ts +10 -0
  93. package/dist/src/gateway/security/known-weak-secrets.js +36 -0
  94. package/dist/src/gateway/security/known-weak-secrets.js.map +1 -0
  95. package/dist/src/gateway/security/operator-scopes.d.ts +37 -0
  96. package/dist/src/gateway/security/operator-scopes.js +137 -0
  97. package/dist/src/gateway/security/operator-scopes.js.map +1 -0
  98. package/dist/src/gateway/security/origin-check.d.ts +21 -0
  99. package/dist/src/gateway/security/origin-check.js +56 -0
  100. package/dist/src/gateway/security/origin-check.js.map +1 -0
  101. package/dist/src/gateway/security/preauth-connection-budget.d.ts +17 -0
  102. package/dist/src/gateway/security/preauth-connection-budget.js +49 -0
  103. package/dist/src/gateway/security/preauth-connection-budget.js.map +1 -0
  104. package/dist/src/gateway/security/secret-equal.d.ts +8 -0
  105. package/dist/src/gateway/security/secret-equal.js +30 -0
  106. package/dist/src/gateway/security/secret-equal.js.map +1 -0
  107. package/dist/src/gateway/service.d.ts +1 -1
  108. package/dist/src/gateway/service.js +11 -2
  109. package/dist/src/gateway/service.js.map +1 -1
  110. package/dist/src/tui/backends/embedded-backend.d.ts +42 -0
  111. package/dist/src/tui/backends/embedded-backend.js +160 -0
  112. package/dist/src/tui/backends/embedded-backend.js.map +1 -0
  113. package/dist/src/tui/backends/gateway-sse-backend.d.ts +49 -0
  114. package/dist/src/tui/backends/gateway-sse-backend.js +226 -0
  115. package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -0
  116. package/dist/src/tui/components/assistant-message.d.ts +6 -0
  117. package/dist/src/tui/components/assistant-message.js +19 -0
  118. package/dist/src/tui/components/assistant-message.js.map +1 -0
  119. package/dist/src/tui/components/chat-log.d.ts +19 -0
  120. package/dist/src/tui/components/chat-log.js +99 -0
  121. package/dist/src/tui/components/chat-log.js.map +1 -0
  122. package/dist/src/tui/components/custom-editor.d.ts +13 -0
  123. package/dist/src/tui/components/custom-editor.js +44 -0
  124. package/dist/src/tui/components/custom-editor.js.map +1 -0
  125. package/dist/src/tui/components/tool-execution.d.ts +16 -0
  126. package/dist/src/tui/components/tool-execution.js +76 -0
  127. package/dist/src/tui/components/tool-execution.js.map +1 -0
  128. package/dist/src/tui/components/user-message.d.ts +6 -0
  129. package/dist/src/tui/components/user-message.js +22 -0
  130. package/dist/src/tui/components/user-message.js.map +1 -0
  131. package/dist/src/tui/sse-consumer.d.ts +15 -0
  132. package/dist/src/tui/sse-consumer.js +75 -0
  133. package/dist/src/tui/sse-consumer.js.map +1 -0
  134. package/dist/src/tui/stream-assembler.d.ts +22 -0
  135. package/dist/src/tui/stream-assembler.js +63 -0
  136. package/dist/src/tui/stream-assembler.js.map +1 -0
  137. package/dist/src/tui/theme.d.ts +71 -0
  138. package/dist/src/tui/theme.js +151 -0
  139. package/dist/src/tui/theme.js.map +1 -0
  140. package/dist/src/tui/tui-backend.d.ts +84 -0
  141. package/dist/src/tui/tui-backend.js +1 -0
  142. package/dist/src/tui/tui-types.d.ts +85 -0
  143. package/dist/src/tui/tui-types.js +21 -0
  144. package/dist/src/tui/tui-types.js.map +1 -0
  145. package/dist/src/tui/tui.d.ts +3 -0
  146. package/dist/src/tui/tui.js +526 -0
  147. package/dist/src/tui/tui.js.map +1 -0
  148. package/package.json +9 -3
  149. package/dist/gateway/static/root/assets/index-DhSFfSNN.css +0 -1
  150. package/dist/gateway/static/root/assets/logs-page-DRI33XK4.js +0 -2
  151. package/dist/gateway/static/root/assets/logs-page-DRI33XK4.js.map +0 -1
  152. package/dist/gateway/static/root/assets/sessions-page-Cryg-36Z.js +0 -2
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{i as t,t as n}from"./vendor-react-DbimaAId.js";import{t as r}from"./cn-BMCV0OMB.js";import{$ as i,$r as a,$t as o,Bn as s,Gr as c,H as l,J as u,Jt as d,Kn as f,Q as p,Sr as m,V as h,Vn as g,Wr as ee,X as te,Y as ne,Z as _,at as re,cn as v,dn as ie,dt as ae,et as oe,fn as se,fr as y,ft as ce,ir as le,it as b,jn as ue,kr as de,lt as x,nr as fe,ot as pe,q as me,rr as he,sn as ge,st as _e,tt as ve,ut as ye,vn as S}from"./index-Gr2HWo-G.js";var C=e(t(),1),w=n();function T(e){let t=new Date(e),n=Math.floor((new Date().getTime()-t.getTime())/(1e3*60*60*24));return n===0?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):n===1?`Yesterday`:n<7?t.toLocaleDateString([],{weekday:`short`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})}function E(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function be({session:e,variant:t,labels:n,onOpen:i,onAction:a}){let o=e.name?.trim()||n.unnamedSession,l=!!e.name?.trim(),u=e.status===`archived`,d=e.status===`pinned`;return(0,w.jsxs)(`div`,{role:`button`,tabIndex:0,className:r(`group flex min-w-0 w-full max-w-full cursor-pointer flex-col rounded-xl bg-surface-base text-left transition-colors duration-150 ease-out`,`hover:bg-surface-hover active:scale-[0.99]`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel`,t===`list`&&`sm:flex-row sm:items-center sm:gap-4`),onClick:i,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),i())},children:[(0,w.jsxs)(`div`,{className:r(`flex min-w-0 items-start justify-between gap-2 bg-surface-hover/35 px-3 py-2 dark:bg-surface-hover/25`,t===`list`&&`sm:py-3`),children:[(0,w.jsx)(`div`,{className:`flex min-w-0 items-center gap-2`,children:(0,w.jsx)(`span`,{className:`truncate text-[11px] font-medium uppercase tracking-wide text-fg-subtle`,children:e.sourceChannel})}),(0,w.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 text-xs text-fg-muted`,children:[d?(0,w.jsx)(s,{className:`size-3.5 text-accent-fg`,strokeWidth:1.75,"aria-hidden":!0}):null,(0,w.jsx)(`span`,{children:T(e.updatedAt)})]})]}),(0,w.jsxs)(`div`,{className:r(`min-w-0 flex-1 px-3 py-2`,t===`list`&&`sm:py-3`),children:[(0,w.jsx)(`div`,{className:`min-w-0 max-w-full truncate text-sm font-semibold text-fg`,title:o,children:o}),l?(0,w.jsx)(`div`,{className:`mt-0.5 min-w-0 max-w-full truncate font-mono text-[11px] text-fg-subtle`,title:e.key,children:e.key}):null,(0,w.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3 text-xs text-fg-muted`,children:[(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,w.jsx)(f,{className:`size-3.5`,strokeWidth:1.75,"aria-hidden":!0}),e.messageCount]}),(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,w.jsx)(ie,{className:`size-3.5`,strokeWidth:1.75,"aria-hidden":!0}),E(e.estimatedTokens)]})]}),e.tags.length>0?(0,w.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[e.tags.slice(0,3).map(e=>(0,w.jsx)(`span`,{className:`max-w-full break-words rounded-md bg-surface-hover px-1.5 py-0.5 text-[11px] text-fg-muted`,children:e},e)),e.tags.length>3?(0,w.jsxs)(`span`,{className:`text-[11px] text-fg-disabled`,children:[`+`,e.tags.length-3]}):null]}):null]}),(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-0.5 border-t border-edge-subtle/80 bg-surface-hover/25 px-2 py-2 dark:border-edge-subtle`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,w.jsx)(`button`,{type:`button`,className:h,title:n.continueChat,"aria-label":n.continueChat,onClick:()=>a(`continue`),children:(0,w.jsx)(f,{className:`size-4`,strokeWidth:1.75})}),u?(0,w.jsx)(`button`,{type:`button`,className:h,title:n.unarchive,"aria-label":n.unarchive,onClick:()=>a(`unarchive`),children:(0,w.jsx)(c,{className:`size-4`,strokeWidth:1.75})}):(0,w.jsx)(`button`,{type:`button`,className:h,title:n.archive,"aria-label":n.archive,onClick:()=>a(`archive`),children:(0,w.jsx)(ee,{className:`size-4`,strokeWidth:1.75})}),d?(0,w.jsx)(`button`,{type:`button`,className:h,title:n.unpin,"aria-label":n.unpin,onClick:()=>a(`unpin`),children:(0,w.jsx)(g,{className:`size-4`,strokeWidth:1.75})}):(0,w.jsx)(`button`,{type:`button`,className:h,title:n.pin,"aria-label":n.pin,onClick:()=>a(`pin`),children:(0,w.jsx)(s,{className:`size-4`,strokeWidth:1.75})}),(0,w.jsx)(`button`,{type:`button`,className:h,title:n.export,"aria-label":n.export,onClick:()=>a(`export`),children:(0,w.jsx)(m,{className:`size-4`,strokeWidth:1.75})}),(0,w.jsx)(`button`,{type:`button`,className:r(h,`text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/40`),title:n.delete,"aria-label":n.delete,onClick:()=>a(`delete`),children:(0,w.jsx)(S,{className:`size-4`,strokeWidth:1.75})})]})]})}function D(e){if(typeof e==`string`)return e.length>2e3?`${e.slice(0,2e3)}…`:e;try{let t=JSON.stringify(e,null,2);return t.length>2e3?`${t.slice(0,2e3)}…`:t}catch{return String(e)}}function xe({open:e,loading:t,session:n,labels:i,onClose:a,onArchive:o,onUnarchive:s,onPin:c,onUnpin:l,onExport:u,onDelete:d}){let f=n?.status===`archived`,p=n?.status===`pinned`;return(0,w.jsx)(ae,{open:e,onOpenChange:e=>!e&&a(),children:(0,w.jsxs)(ye,{children:[(0,w.jsx)(x,{className:`xopc-dialog-overlay fixed inset-0 z-50 bg-scrim`}),(0,w.jsxs)(_e,{className:r(`xopc-drawer-right fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none`,`dark:border-edge`),"aria-describedby":void 0,children:[(0,w.jsxs)(`div`,{className:`flex min-w-0 shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge`,children:[(0,w.jsx)(ce,{className:`min-w-0 flex-1 truncate text-base font-semibold tracking-tight text-fg`,children:n?.name?.trim()||i.unnamedSession}),(0,w.jsx)(pe,{asChild:!0,children:(0,w.jsx)(v,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,"aria-label":i.close,children:(0,w.jsx)(se,{className:`size-5`,strokeWidth:1.75})})})]}),(0,w.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:t?(0,w.jsx)(`p`,{className:`text-sm text-fg-muted`,children:i.detailLoading}):n?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`dl`,{className:`mb-4 grid gap-2 text-xs text-fg-muted`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`dt`,{className:`text-fg-disabled`,children:`Key`}),(0,w.jsx)(`dd`,{className:`mt-0.5 break-all font-mono text-fg`,children:n.key})]}),(0,w.jsx)(`div`,{className:`flex flex-wrap gap-4`,children:(0,w.jsxs)(`span`,{children:[n.messageCount,` msgs · `,n.estimatedTokens,` tok`]})})]}),(0,w.jsx)(`h3`,{className:`mb-2 text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:i.detailMessages}),(0,w.jsx)(`ul`,{className:`space-y-3`,children:n.messages.map((e,t)=>(0,w.jsxs)(`li`,{className:`rounded-lg border border-edge-subtle bg-surface-hover/50 p-2 dark:border-edge`,children:[(0,w.jsx)(`div`,{className:`mb-1 text-[10px] font-medium uppercase text-fg-subtle`,children:e.role}),(0,w.jsx)(`pre`,{className:`max-h-40 overflow-auto whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-fg-muted`,children:D(e.content)})]},`${e.timestamp??t}-${t}`))})]}):null}),(0,w.jsx)(`div`,{className:`shrink-0 border-t border-edge px-4 py-3 dark:border-edge`,children:(0,w.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm`,onClick:u,children:i.detailExport}),f?(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm`,onClick:s,children:i.unarchive}):(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm`,onClick:o,children:i.archive}),p?(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm`,onClick:l,children:i.unpin}):(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm`,onClick:c,children:i.pin}),(0,w.jsx)(v,{type:`button`,variant:`secondary`,className:`text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/40`,onClick:d,children:i.delete})]})})]})]})})}var O=20;function k(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}var A=new Set([`all`,`active`,`pinned`,`archived`]),j=new Set([`grid`,`list`]);function M(){let e=ge(o(e=>e.language)),t=e.sessions,n=!!d(e=>e.token),[c,f]=a(),m=c.get(`q`)??``,h=c.get(`status`),g=c.get(`view`),ie=c.get(`channel`)??``,se=A.has(h)?h:`all`,pe=j.has(g)?g:`grid`,[S,T]=(0,C.useState)(m),[E,D]=(0,C.useState)(m.trim()),[M,N]=(0,C.useState)(se),[P,F]=(0,C.useState)(pe),[I,L]=(0,C.useState)(ie.trim()),[R,z]=(0,C.useState)([]),[B,V]=(0,C.useState)(!1),[Se,H]=(0,C.useState)(null),[U,Ce]=(0,C.useState)(!1),[W,G]=(0,C.useState)(null),[we,K]=(0,C.useState)(!1),[Te,Ee]=(0,C.useState)(!1),[q,J]=(0,C.useState)(null),[De,Y]=(0,C.useState)(!1),[X,Z]=(0,C.useState)(null);(0,C.useEffect)(()=>{let e=setTimeout(()=>D(S.trim()),300);return()=>clearTimeout(e)},[S]),(0,C.useEffect)(()=>{let e=c.get(`q`)??``,t=c.get(`status`),n=c.get(`view`),r=(c.get(`channel`)??``).trim(),i=A.has(t)?t:`all`,a=j.has(n)?n:`grid`,o=e.trim();T(t=>t===e?t:e),D(e=>e===o?e:o),N(e=>e===i?e:i),F(e=>e===a?e:a),L(e=>e===r?e:r)},[c]),(0,C.useEffect)(()=>{let e=new URLSearchParams(c),t=E.trim();t?e.set(`q`,t):e.delete(`q`),M===`all`?e.delete(`status`):e.set(`status`,M),P===`grid`?e.delete(`view`):e.set(`view`,P),I?e.set(`channel`,I):e.delete(`channel`),e.toString()!==c.toString()&&f(e,{replace:!0})},[E,c,f,M,P,I]),(0,C.useEffect)(()=>{if(!n)return;let e=!1;return(async()=>{V(!0),H(null);try{let t=await p({limit:O,offset:0,...E?{search:E}:{},...M===`all`?{}:{status:M},...I?{channel:I}:{}});if(e)return;z(t.items),Ce(t.hasMore)}catch(n){e||H(n instanceof Error?n.message:t.loadError)}finally{e||V(!1)}})(),()=>{e=!0}},[n,E,M,t.loadError]),(0,C.useEffect)(()=>{n&&_().then(G).catch(()=>{})},[n]),(0,C.useEffect)(()=>{if(!n)return;let e=e=>{let t=e.detail;!t?.key||t.name===void 0||(z(e=>e.map(e=>e.key===t.key?{...e,name:t.name}:e)),J(e=>e&&e.key===t.key?{...e,name:t.name}:e))};return window.addEventListener(`session-updated`,e),()=>{window.removeEventListener(`session-updated`,e)}},[n]);let Oe=(0,C.useCallback)(async()=>{if(!(!n||B||!U)){V(!0),H(null);try{let e=await p({limit:O,offset:R.length,...E?{search:E}:{},...M===`all`?{}:{status:M},...I?{channel:I}:{}});z(t=>[...t,...e.items]),Ce(e.hasMore)}catch(e){H(e instanceof Error?e.message:t.loadError)}finally{V(!1)}}},[n,B,U,R.length,E,M,I,t.loadError]),Q=(0,C.useCallback)((e,t)=>{z(n=>n.map(n=>n.key===e?{...n,status:t}:n)),J(n=>n&&n.key===e?{...n,status:t}:n)},[]),ke=(0,C.useCallback)(async e=>{K(!0),Ee(!0),J(null);try{J(await te(e))}catch{K(!1)}finally{Ee(!1)}},[]),Ae=e=>{ke(e)},$=async(e,t)=>{if(t===`continue`){window.dispatchEvent(new CustomEvent(`navigate-to-chat`,{detail:{sessionKey:e},bubbles:!0}));return}if(t===`delete`){Z(e),Y(!0);return}try{switch(t){case`archive`:await me(e),Q(e,`archived`);break;case`unarchive`:await oe(e),Q(e,`active`);break;case`pin`:await i(e),Q(e,`pinned`);break;case`unpin`:await ve(e),Q(e,`active`);break;case`export`:{let t=await ne(e),n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`session-${e.replace(/[^a-z0-9]/gi,`_`)}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r);break}default:break}_().then(G).catch(()=>{})}catch{}},je=async e=>{try{await u(e),z(t=>t.filter(t=>t.key!==e)),J(t=>t?.key===e?null:t),q?.key===e&&K(!1),_().then(G).catch(()=>{})}catch{}},Me={continueChat:t.continueChat,archive:t.archive,unarchive:t.unarchive,pin:t.pin,unpin:t.unpin,export:t.export,delete:t.delete,unnamedSession:e.chat.newSession},Ne={close:t.close,detailLoading:t.detailLoading,detailMessages:t.detailMessages,detailExport:t.detailExport,archive:t.archive,unarchive:t.unarchive,pin:t.pin,unpin:t.unpin,delete:t.delete,unnamedSession:e.chat.newSession},Pe=[{key:`all`,label:t.filterAll,icon:le},{key:`active`,label:t.filterActive,icon:de},{key:`pinned`,label:t.filterPinned,icon:s},{key:`archived`,label:t.filterArchived,icon:ee}],Fe=(()=>{let e=Object.entries(W?.byChannel??{}).sort((e,t)=>t[1]-e[1]).slice(0,6).map(([e])=>e);for(let t of[`telegram`,`weixin`,`feishu`])e.includes(t)||e.push(t);return e.slice(0,8)})();return n?(0,w.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overflow-x-hidden bg-surface-panel`,children:[(0,w.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-2xl flex-col gap-4 px-4 py-6 sm:px-6 lg:max-w-app-main lg:px-8`,children:[(0,w.jsxs)(`header`,{className:`flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,w.jsxs)(`h1`,{className:`flex items-center gap-2 text-xl font-semibold tracking-tight text-fg`,children:[(0,w.jsx)(y,{className:`size-5 shrink-0 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),t.title]}),(0,w.jsxs)(`div`,{className:`flex w-full min-w-0 items-center gap-2 rounded-xl bg-surface-base px-3 py-2 transition-colors sm:max-w-md dark:bg-surface-hover/40`,children:[(0,w.jsx)(ue,{className:`size-4 shrink-0 text-fg-disabled`,strokeWidth:1.75,"aria-hidden":!0}),(0,w.jsx)(`input`,{type:`search`,value:S,onChange:e=>T(e.target.value),placeholder:t.searchPlaceholder,className:`min-w-0 flex-1 border-0 bg-transparent text-sm text-fg placeholder:text-fg-disabled focus:outline-none focus:ring-0`})]})]}),(0,w.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Pe.map(({key:e,label:t,icon:n})=>(0,w.jsxs)(`button`,{type:`button`,"aria-pressed":M===e,onClick:()=>N(e),className:r(`inline-flex items-center gap-1.5 rounded-xl px-3 py-2 text-sm font-medium`,l.transition,l.focusRingPanel,M===e?`bg-accent-soft text-accent-fg`:`bg-surface-base text-fg-muted hover:bg-surface-hover hover:text-fg dark:bg-surface-hover/35`),children:[(0,w.jsx)(n,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),t]},e))}),(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`text-xs font-medium text-fg-subtle`,children:t.filterChannelLabel}),(0,w.jsx)(`button`,{type:`button`,"aria-pressed":!I,onClick:()=>L(``),className:r(`inline-flex items-center rounded-xl px-3 py-2 text-sm font-medium`,l.transition,l.focusRingPanel,I?`bg-surface-base text-fg-muted hover:bg-surface-hover hover:text-fg dark:bg-surface-hover/35`:`bg-accent-soft text-accent-fg`),children:t.filterChannelAll}),Fe.map(e=>(0,w.jsxs)(`button`,{type:`button`,"aria-pressed":I===e,onClick:()=>L(e),className:r(`inline-flex items-center rounded-xl px-3 py-2 text-sm font-medium`,l.transition,l.focusRingPanel,I===e?`bg-accent-soft text-accent-fg`:`bg-surface-base text-fg-muted hover:bg-surface-hover hover:text-fg dark:bg-surface-hover/35`),children:[e,W?.byChannel?.[e]==null?null:(0,w.jsx)(`span`,{className:`ml-2 rounded-full bg-surface-hover px-2 py-0.5 text-[11px] text-fg-subtle`,children:W.byChannel[e]})]},e))]}),W?(0,w.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-4`,children:[[W.totalSessions,t.totalSessions],[W.activeSessions,t.activeSessions],[W.pinnedSessions,t.pinnedSessions],[W.archivedSessions,t.archivedSessions]].map(([e,t])=>(0,w.jsxs)(`div`,{className:`rounded-xl bg-surface-base px-3 py-3 dark:bg-surface-hover/30`,children:[(0,w.jsx)(`div`,{className:`text-lg font-semibold tabular-nums text-fg`,children:e}),(0,w.jsx)(`div`,{className:`text-xs text-fg-muted`,children:t})]},t))}):null,Se?(0,w.jsx)(`div`,{className:`rounded-lg border border-edge bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-edge dark:bg-red-950/40 dark:text-red-300`,children:Se}):null,(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,w.jsx)(`p`,{className:`text-xs text-fg-muted`,children:k(t.sessionCount,{count:R.length})}),(0,w.jsxs)(`div`,{className:re,role:`group`,"aria-label":t.layoutToggleGroup,children:[(0,w.jsx)(v,{type:`button`,variant:`segmented`,title:t.gridView,"aria-pressed":P===`grid`,onClick:()=>F(`grid`),className:r(b,`size-7 p-0`,P===`grid`&&`bg-surface-panel shadow-sm dark:bg-surface-panel dark:shadow-sm dark:ring-1 dark:ring-edge-strong/40`,P===`grid`&&`text-accent-fg`),children:(0,w.jsx)(he,{className:`size-3.5`,strokeWidth:1.5})}),(0,w.jsx)(v,{type:`button`,variant:`segmented`,title:t.listView,"aria-pressed":P===`list`,onClick:()=>F(`list`),className:r(b,`size-9 p-0`,P===`list`&&`bg-surface-panel shadow-sm dark:bg-surface-panel dark:shadow-sm dark:ring-1 dark:ring-edge-strong/40`,P===`list`&&`text-accent-fg`),children:(0,w.jsx)(fe,{className:`size-3.5`,strokeWidth:1.5})})]})]}),B&&R.length===0?(0,w.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,w.jsx)(`div`,{className:`h-40 animate-pulse rounded-xl bg-surface-hover/60 dark:bg-surface-hover/40`},t))}):R.length===0?(0,w.jsxs)(`div`,{className:`flex flex-col items-center justify-center rounded-2xl bg-surface-base py-16 text-center dark:bg-surface-hover/25`,children:[(0,w.jsx)(y,{className:`mb-3 size-12 text-fg-disabled`,strokeWidth:1.25,"aria-hidden":!0}),(0,w.jsx)(`p`,{className:`text-base font-semibold text-fg`,children:t.noSessions}),(0,w.jsx)(`p`,{className:`mt-1 max-w-sm text-sm text-fg-muted`,children:t.noSessionsDescription}),(0,w.jsx)(v,{variant:`primary`,className:`mt-6`,onClick:()=>{window.dispatchEvent(new CustomEvent(`navigate-to-chat`,{detail:{sessionKey:``},bubbles:!0}))},children:t.startNewChat})]}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`div`,{className:r(`grid min-w-0 gap-3`,P===`grid`?`sm:grid-cols-2 lg:grid-cols-3`:`grid-cols-1`),children:R.map(e=>(0,w.jsx)(be,{session:e,variant:P,labels:Me,onOpen:()=>Ae(e.key),onAction:t=>void $(e.key,t)},e.key))}),U?(0,w.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,w.jsx)(v,{type:`button`,variant:`secondary`,disabled:B,onClick:()=>void Oe(),children:t.loadMore})}):null]})]}),(0,w.jsx)(xe,{open:we,loading:Te,session:q,labels:Ne,onClose:()=>{K(!1),J(null)},onArchive:()=>q&&void $(q.key,`archive`),onUnarchive:()=>q&&void $(q.key,`unarchive`),onPin:()=>q&&void $(q.key,`pin`),onUnpin:()=>q&&void $(q.key,`unpin`),onExport:()=>q&&void $(q.key,`export`),onDelete:()=>q&&(Z(q.key),Y(!0))}),(0,w.jsx)(ae,{open:De,onOpenChange:Y,children:(0,w.jsxs)(ye,{children:[(0,w.jsx)(x,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,w.jsxs)(_e,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge`,children:[(0,w.jsx)(ce,{className:`text-base font-semibold text-fg`,children:t.deleteSessionTitle}),(0,w.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:X?k(t.deleteSessionMessage,{name:R.find(e=>e.key===X)?.name?.trim()||e.chat.newSession}):``}),(0,w.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,w.jsx)(v,{type:`button`,variant:`secondary`,onClick:()=>Y(!1),children:t.cancel}),(0,w.jsx)(v,{type:`button`,variant:`primary`,className:`bg-red-600 hover:bg-red-700`,onClick:()=>{X&&je(X),Y(!1),Z(null)},children:t.delete})]})]})]})})]}):(0,w.jsx)(`div`,{className:`mx-auto w-full max-w-2xl px-4 py-16 text-center text-sm text-fg-muted sm:px-8 lg:max-w-app-main`,children:t.needToken})}export{M as SessionsPage};
2
- //# sourceMappingURL=sessions-page-Cryg-36Z.js.map