@hienlh/ppm 0.13.12 → 0.13.13
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/.opencode/.env.example +98 -0
- package/.opencode/skills/ads-management/scripts/.env.example +13 -0
- package/.opencode/skills/ai-multimodal/.env.example +230 -0
- package/.opencode/skills/cip-design/.env.example +6 -0
- package/.opencode/skills/devops/.env.example +76 -0
- package/.opencode/skills/docs-seeker/.env.example +15 -0
- package/.opencode/skills/elevenlabs/.env.example +3 -0
- package/.opencode/skills/marketing-dashboard/.env.example +15 -0
- package/.opencode/skills/marketing-dashboard/app/.env.example +2 -0
- package/.opencode/skills/marketing-dashboard/server/.env.example +2 -0
- package/.opencode/skills/mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/.opencode/skills/mcp-management/scripts/dist/cli.js +160 -0
- package/.opencode/skills/mcp-management/scripts/dist/mcp-client.js +183 -0
- package/.opencode/skills/payment-integration/scripts/.env.example +20 -0
- package/.opencode/skills/sequential-thinking/.env.example +8 -0
- package/CHANGELOG.md +5 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +30 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/{ai-settings-section-ysK_Eixc.js → ai-settings-section-DR5BueEL.js} +1 -1
- package/dist/web/assets/{api-settings-D0_eiIYv.js → api-settings-DowGyuVy.js} +1 -1
- package/dist/web/assets/architecture-PBZL5I3N-7JKY4P1L.js +1 -0
- package/dist/web/assets/{audio-preview-BjoIjXlf.js → audio-preview-YOG6Biao.js} +1 -1
- package/dist/web/assets/chat-tab-DbdDJuLu.js +12 -0
- package/dist/web/assets/code-editor-C4nuAsy6.js +8 -0
- package/dist/web/assets/{conflict-editor-WxMZDucw.js → conflict-editor-DnGfriL5.js} +1 -1
- package/dist/web/assets/{csv-preview-7TsYBQI6.js → csv-preview-Bo-N3GHl.js} +1 -1
- package/dist/web/assets/{data-grid-overlay-editor-BjjuE4-G.js → data-grid-overlay-editor-DqcDQ9st.js} +1 -1
- package/dist/web/assets/{database-viewer-BRW8CMzC.js → database-viewer-AodppoTs.js} +1 -1
- package/dist/web/assets/diff-viewer-DykLUwna.js +4 -0
- package/dist/web/assets/{esm-zjerHxpO.js → esm-Dvc8oJly.js} +1 -1
- package/dist/web/assets/{extension-webview-DgfgR787.js → extension-webview-Bck7QuaB.js} +1 -1
- package/dist/web/assets/{file-store-BrbCNyLm.js → file-store-4BpOJthN.js} +1 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-Daf9rhiF.js +1 -0
- package/dist/web/assets/{glide-data-grid-DIvkBUKj.js → glide-data-grid-BVt0mwcA.js} +7 -7
- package/dist/web/assets/{image-preview-BlBVP277.js → image-preview-DaSmrIvY.js} +1 -1
- package/dist/web/assets/index-CSK33ACc.css +2 -0
- package/dist/web/assets/index-gZKF1YKy.js +27 -0
- package/dist/web/assets/info-3K5VOQVL-gn0pjNiT.js +1 -0
- package/dist/web/assets/{input-ozrR2DAV.js → input-4ll___Gh.js} +1 -1
- package/dist/web/assets/keybindings-store-DBKLTPrk.js +1 -0
- package/dist/web/assets/{markdown-renderer-CJMJ5Qq0.js → markdown-renderer-B1me_hz2.js} +3 -3
- package/dist/web/assets/{number-overlay-editor-BoRxunFN.js → number-overlay-editor-XTjjEXtk.js} +1 -1
- package/dist/web/assets/packet-RMMSAZCW-Csaeizjc.js +1 -0
- package/dist/web/assets/{pdf-preview-D0JDPYYs.js → pdf-preview-Dci7TIL1.js} +1 -1
- package/dist/web/assets/pie-UPGHQEXC-DatkjxTH.js +1 -0
- package/dist/web/assets/port-forwarding-tab-BeM40G-J.js +1 -0
- package/dist/web/assets/{postgres-viewer-DkVKzTKJ.js → postgres-viewer-CGVBOwA9.js} +3 -3
- package/dist/web/assets/radar-KQ55EAFF-BnGB20hR.js +1 -0
- package/dist/web/assets/{scroll-area-7H-Q_k8c.js → scroll-area-iv39O3VN.js} +1 -1
- package/dist/web/assets/search-tM8K5zWU.js +1 -0
- package/dist/web/assets/{settings-store-Dvk8Lvwm.js → settings-store-D2MtC9tm.js} +2 -2
- package/dist/web/assets/settings-tab-CYS8VfNl.js +1 -0
- package/dist/web/assets/{sql-query-editor-BVn40O0T.js → sql-query-editor-DstPySPF.js} +1 -1
- package/dist/web/assets/sqlite-viewer-SUGEk_G1.js +1 -0
- package/dist/web/assets/{tab-store-0rGchMXr.js → tab-store-Dow2Ztto.js} +1 -1
- package/dist/web/assets/terminal-tab-CJvjF79J.js +1 -0
- package/dist/web/assets/treemap-KZPCXAKY-CgEYv38e.js +1 -0
- package/dist/web/assets/{use-blob-url-e9uTXjv5.js → use-blob-url-DGY5qKiT.js} +1 -1
- package/dist/web/assets/{use-monaco-theme-SyJzNaNN.js → use-monaco-theme-CugUkORI.js} +1 -1
- package/dist/web/assets/{vendor-mermaid-DsfY6y4f.js → vendor-mermaid-CPtQ2zua.js} +3 -3
- package/dist/web/assets/{video-preview-BEuZs1dG.js → video-preview-gJSKmPQr.js} +1 -1
- package/dist/web/index.html +16 -15
- package/dist/web/sw.js +1 -1
- package/docs/system-architecture.md +1 -0
- package/package.json +1 -1
- package/src/cli/commands/cloud.ts +53 -0
- package/src/cli/commands/db-cmd.ts +56 -0
- package/src/index.ts +0 -0
- package/src/providers/claude-agent-sdk.ts +12 -15
- package/src/services/cloud.service.ts +55 -0
- package/src/services/sqlite.service.ts +9 -0
- package/src/web/app.tsx +7 -0
- package/src/web/components/chat/chat-welcome.tsx +7 -140
- package/src/web/components/chat/session-list-panel.tsx +188 -0
- package/src/web/components/editor/diff-viewer.tsx +25 -26
- package/src/web/components/layout/editor-panel.tsx +10 -158
- package/bun.lock +0 -2135
- package/bunfig.toml +0 -2
- package/dist/web/assets/architecture-PBZL5I3N-DVlAZGlv.js +0 -1
- package/dist/web/assets/chat-tab-Cq8xYO7K.js +0 -12
- package/dist/web/assets/code-editor-DZ1e_sz0.js +0 -8
- package/dist/web/assets/diff-viewer-BOTb0dkG.js +0 -4
- package/dist/web/assets/gitGraph-HDMCJU4V-b3n-Tgk6.js +0 -1
- package/dist/web/assets/index-COOnLKGB.css +0 -2
- package/dist/web/assets/index-zP-OjEml.js +0 -27
- package/dist/web/assets/info-3K5VOQVL-fJy9dGkV.js +0 -1
- package/dist/web/assets/keybindings-store-Djjc6tPj.js +0 -1
- package/dist/web/assets/packet-RMMSAZCW-DMi06dVb.js +0 -1
- package/dist/web/assets/pie-UPGHQEXC-BECm43s6.js +0 -1
- package/dist/web/assets/port-forwarding-tab-DfaV6GPS.js +0 -1
- package/dist/web/assets/radar-KQ55EAFF-BwqCptkx.js +0 -1
- package/dist/web/assets/settings-tab-BFbe6ybw.js +0 -1
- package/dist/web/assets/sqlite-viewer-8oWf4JCB.js +0 -1
- package/dist/web/assets/terminal-tab-D_C7amDZ.js +0 -1
- package/dist/web/assets/treemap-KZPCXAKY-Da7U3Olf.js +0 -1
- /package/dist/web/assets/{api-client-Dvzcc_EO.js → api-client-DIhJ5qVW.js} +0 -0
- /package/dist/web/assets/{data-grid-types-BTQHYBUh.js → data-grid-types-DqqspyVw.js} +0 -0
- /package/dist/web/assets/{dist-0kPgRaVx.js → dist-D1SZxtVS.js} +0 -0
- /package/dist/web/assets/{dist-DGSkE2Ml.js → dist-_jZs3YZC.js} +0 -0
- /package/dist/web/assets/{file-exclamation-point-Baz81y5z.js → file-exclamation-point-BwzaQ50n.js} +0 -0
- /package/dist/web/assets/{katex-BuytEdO1.js → katex-DzXRfQ_m.js} +0 -0
- /package/dist/web/assets/{lib-DQHnkzGy.js → lib-Dub8DlCJ.js} +0 -0
- /package/dist/web/assets/{react-GqWghJ-L.js → react-DMIOAtcX.js} +0 -0
- /package/dist/web/assets/{refresh-cw-LlbZDJpO.js → refresh-cw-BjrAbUJe.js} +0 -0
- /package/dist/web/assets/{sparkles-fWUT5Vzq.js → sparkles-CulWHe4c.js} +0 -0
- /package/dist/web/assets/{table-tf7pRkME.js → table-BzjWcs87.js} +0 -0
- /package/dist/web/assets/{text-wrap-BV-R4Vvy.js → text-wrap-DJz9Bgpa.js} +0 -0
- /package/dist/web/assets/{utils-CTg5uAYR.js → utils-CQux7CsO.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-CU2c3f0A.js → vendor-xterm-Dyfw49hJ.js} +0 -0
- /package/dist/web/assets/{x-CG-_0yIW.js → x-BPReZWnP.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{V as e}from"./vendor-mermaid-DsfY6y4f.js";export{e as createInfoServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-0Mxgxy0L.js";import"./api-client-Dvzcc_EO.js";import{E as e}from"./index-zP-OjEml.js";export{e as useKeybindingsStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as e}from"./vendor-mermaid-DsfY6y4f.js";export{e as createPacketServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{L as e}from"./vendor-mermaid-DsfY6y4f.js";export{e as createPieServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-B-89Uj8i.js";import{t as r}from"./createLucideIcon-BjHrJDVb.js";import{i,n as a,r as o}from"./dist-CaKCIxem.js";import{t as s}from"./api-client-Dvzcc_EO.js";import{$ as c,G as l,P as u,et as d}from"./index-zP-OjEml.js";var f=r(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]),p=e(n(),1),m=t();function h(){let[e,t]=(0,p.useState)(``),[n,r]=(0,p.useState)([]),[h,g]=(0,p.useState)(!1),[_,v]=(0,p.useState)(null),[y,b]=(0,p.useState)(null),x=(0,p.useCallback)(async()=>{try{r(await s.get(`/api/preview/tunnels`))}catch(e){console.warn(`[ports] failed to fetch tunnels`,e)}},[]);(0,p.useEffect)(()=>{x();let e=setInterval(x,1e4);return()=>clearInterval(e)},[x]);let S=async e=>{let r=n.find(t=>t.port===e);if(r){window.open(r.url,`_blank`),t(``);return}g(!0),v(null);try{let n=await s.post(`/api/preview/tunnel`,{port:e});window.open(n.url,`_blank`),t(``),await x()}catch(t){v(t.message||`Failed to start tunnel for port ${e}`)}finally{g(!1)}},C=async e=>{try{await s.del(`/api/preview/tunnel/${e}`),await x()}catch(t){a.error(t.message||`Failed to stop tunnel for port ${e}`)}},w=(e,t)=>{navigator.clipboard.writeText(t).then(()=>{b(e),a.success(`URL copied`),setTimeout(()=>b(null),2e3)}).catch(()=>{a.error(`Failed to copy URL`)})};return(0,m.jsxs)(`div`,{className:`flex flex-col h-full w-full bg-background`,children:[(0,m.jsxs)(`div`,{className:`p-4 md:p-6 border-b border-border bg-surface`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,m.jsx)(f,{className:`size-5 text-primary`}),(0,m.jsx)(`h2`,{className:`text-base font-medium text-text-primary`,children:`Port Forwarding`})]}),(0,m.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let n=parseInt(e,10);n>=1&&n<=65535?S(n):v(`Port must be 1-65535`)},className:`flex items-center gap-2`,children:[(0,m.jsxs)(`div`,{className:`flex-1 flex items-center gap-2 px-3 py-2.5 rounded-lg bg-background border border-border focus-within:border-primary/50 transition-colors`,children:[(0,m.jsx)(`span`,{className:`text-sm text-text-subtle shrink-0`,children:`localhost:`}),(0,m.jsx)(`input`,{type:`number`,value:e,onChange:e=>{t(e.target.value),v(null)},placeholder:`3000`,min:1,max:65535,className:`flex-1 bg-transparent text-sm text-text-primary outline-none placeholder:text-text-subtle min-w-0 [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`})]}),(0,m.jsx)(`button`,{type:`submit`,disabled:h||!e,className:`px-4 py-2.5 rounded-lg bg-primary text-primary-foreground text-sm font-medium hover:bg-primary/90 disabled:opacity-50 transition-colors shrink-0 min-w-[72px] flex items-center justify-center`,children:h?(0,m.jsx)(l,{className:`size-4 animate-spin`}):`Forward`})]}),_&&(0,m.jsx)(`p`,{className:`text-sm text-red-400 mt-2`,children:_}),h&&(0,m.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-text-secondary mt-2`,children:[(0,m.jsx)(l,{className:`size-3.5 animate-spin`}),(0,m.jsx)(`span`,{children:`Starting tunnel...`})]})]}),(0,m.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4 md:p-6`,children:n.length===0?(0,m.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-center`,children:[(0,m.jsx)(o,{className:`size-10 text-text-subtle`}),(0,m.jsx)(`p`,{className:`text-sm text-text-secondary max-w-xs`,children:`No active ports. Forward a port to access your local dev server from anywhere.`})]}):(0,m.jsx)(`div`,{className:`space-y-2`,children:n.map(e=>(0,m.jsxs)(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-surface border border-border`,children:[(0,m.jsxs)(`div`,{className:`shrink-0 px-2 py-1 rounded bg-primary/10 text-primary text-xs font-mono font-medium`,children:[`:`,e.port]}),(0,m.jsx)(`span`,{className:`flex-1 text-xs text-text-secondary truncate min-w-0`,children:e.url}),(0,m.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,m.jsx)(`button`,{onClick:()=>window.open(e.url,`_blank`),className:`p-2.5 rounded-md hover:bg-surface-elevated transition-colors`,title:`Open in browser`,children:(0,m.jsx)(c,{className:`size-4 text-text-secondary`})}),(0,m.jsx)(`button`,{onClick:()=>w(e.port,e.url),className:`p-2.5 rounded-md hover:bg-surface-elevated transition-colors`,title:`Copy URL`,children:y===e.port?(0,m.jsx)(i,{className:`size-4 text-green-400`}):(0,m.jsx)(d,{className:`size-4 text-text-secondary`})}),(0,m.jsx)(`button`,{onClick:()=>C(e.port),className:`p-2.5 rounded-md hover:bg-red-500/10 transition-colors`,title:`Stop tunnel`,children:(0,m.jsx)(u,{className:`size-4 text-red-400`})})]})]},e.port))})})]})}export{h as PortForwardingTab};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e}from"./vendor-mermaid-DsfY6y4f.js";export{e as createRadarServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-B-89Uj8i.js";import"./scroll-area-7H-Q_k8c.js";import"./ai-settings-section-ysK_Eixc.js";import"./dist-CaKCIxem.js";import"./input-ozrR2DAV.js";import"./api-client-Dvzcc_EO.js";import"./settings-store-Dvk8Lvwm.js";import"./vendor-mermaid-DsfY6y4f.js";import"./file-store-BrbCNyLm.js";import"./api-settings-D0_eiIYv.js";import{s as e}from"./index-zP-OjEml.js";export{e as SettingsTab};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./vendor-ui-B-89Uj8i.js";import{t as r}from"./database-DOWH9-Vv.js";import{t as i}from"./glide-data-grid-DIvkBUKj.js";import{t as a}from"./refresh-cw-LlbZDJpO.js";import{t as o}from"./table-tf7pRkME.js";import{i as s,t as c}from"./api-client-Dvzcc_EO.js";import"./settings-store-Dvk8Lvwm.js";import"./vendor-mermaid-DsfY6y4f.js";import"./tab-store-0rGchMXr.js";import{G as l,it as u}from"./index-zP-OjEml.js";import"./data-grid-types-BTQHYBUh.js";import"./use-monaco-theme-SyJzNaNN.js";import{t as d}from"./sql-query-editor-BVn40O0T.js";var f=e(n(),1);function p(e,t,n){let[r,i]=(0,f.useState)([]),[a,o]=(0,f.useState)(null),[l,u]=(0,f.useState)(null),[d,p]=(0,f.useState)([]),[m,h]=(0,f.useState)(!1),[g,_]=(0,f.useState)(null),[v,y]=(0,f.useState)(1),[b,x]=(0,f.useState)(null),[S,C]=(0,f.useState)(null),[w,T]=(0,f.useState)(!1),E=n?`/api/db/connections/${n}`:null,D=E??`${s(e)}/sqlite`,O=E?``:`path=${encodeURIComponent(t)}`,k=(0,f.useCallback)(async()=>{h(!0),_(null);try{let e=E?`?cached=1`:O?`?${O}`:``,t=await c.get(`${D}/tables${e}`);i(t),!E&&t.length>0&&!a&&o(t[0].name)}catch(e){_(e.message)}finally{h(!1)}},[D,O,E]);(0,f.useEffect)(()=>{k()},[k]);let A=(0,f.useCallback)(async()=>{if(a){h(!0);try{let e=O?`${O}&`:``,[t,n]=await Promise.all([c.get(`${D}/data?${e}table=${encodeURIComponent(a)}&page=${v}&limit=100`),c.get(`${D}/schema?${e}table=${encodeURIComponent(a)}`)]);u(t),p(n)}catch(e){_(e.message)}finally{h(!1)}}},[D,O,a,v]);return(0,f.useEffect)(()=>{A()},[A]),{tables:r,selectedTable:a,selectTable:(0,f.useCallback)(e=>{o(e),y(1),x(null)},[]),tableData:l,schema:d,loading:m,error:g,page:v,setPage:y,queryResult:b,queryError:S,queryLoading:w,executeQuery:(0,f.useCallback)(async e=>{T(!0),C(null);try{let n=E?{sql:e}:{path:t,sql:e},r=await c.post(`${D}/query`,n);x(r),r.changeType===`modify`&&A()}catch(e){C(e.message)}finally{T(!1)}},[D,E,t,A]),updateCell:(0,f.useCallback)(async(e,n,r)=>{if(a)try{E?await c.put(`${D}/cell`,{table:a,pkColumn:`rowid`,pkValue:e,column:n,value:r}):await c.put(`${D}/cell`,{path:t,table:a,rowid:e,column:n,value:r}),A()}catch(e){_(e.message)}},[D,E,t,a,A]),deleteRow:(0,f.useCallback)(async e=>{if(a)try{E?await c.del(`${D}/row`,{table:a,pkColumn:`rowid`,pkValue:e}):await c.del(`${D}/row`,{path:t,table:a,rowid:e}),A(),k()}catch(e){_(e.message)}},[D,E,t,a,A,k]),refreshTables:k,refreshData:A}}var m=t();function h({tables:e,selectedTable:t,onSelect:n,onRefresh:r}){return(0,m.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,m.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,m.jsx)(`button`,{type:`button`,onClick:r,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,m.jsx)(a,{className:`size-3`})})]}),(0,m.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.map(e=>(0,m.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${t===e.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,m.jsx)(o,{className:`size-3 shrink-0`}),(0,m.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),(0,m.jsx)(`span`,{className:`text-[10px] opacity-60`,children:e.rowCount})]},e.name)),e.length===0&&(0,m.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]})}function g({onExecute:e,loading:t}){return(0,m.jsx)(d,{onExecute:e,loading:t})}function _({metadata:e}){let t=e?.filePath,n=e?.projectName,i=e?.connectionId,a=e?.tableName,[o,s]=(0,f.useState)(!1);return i?(0,m.jsx)(v,{projectName:``,dbPath:``,connectionId:i,connectionName:e?.connectionName,initialTable:a,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e),hideTableList:!0}):!t||!n?(0,m.jsxs)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:[(0,m.jsx)(r,{className:`size-5 mr-2`}),` No database file selected.`]}):(0,m.jsx)(v,{projectName:n,dbPath:t,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e)})}function v({projectName:e,dbPath:t,connectionId:n,connectionName:a,initialTable:o,queryPanelOpen:s,onToggleQueryPanel:c,hideTableList:d}){let _=p(e,t,n),v=(0,f.useRef)(!1);return(0,f.useEffect)(()=>{o&&!v.current&&_.tables.length>0&&(v.current=!0,_.selectTable(o))},[o,_.tables]),_.error&&_.tables.length===0?(0,m.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,m.jsx)(u,{className:`size-10 text-destructive`}),(0,m.jsx)(`p`,{className:`text-sm`,children:_.error})]}):_.loading&&_.tables.length===0?(0,m.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,m.jsx)(l,{className:`size-5 animate-spin`}),(0,m.jsx)(`span`,{className:`text-sm`,children:`Loading database...`})]}):(0,m.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!d&&(0,m.jsx)(h,{tables:_.tables,selectedTable:_.selectedTable,onSelect:_.selectTable,onRefresh:_.refreshTables}),(0,m.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${d?``:`border-l border-border`}`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,m.jsx)(r,{className:`size-3.5 text-muted-foreground`}),(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:a??t}),(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:_.selectedTable&&`/ ${_.selectedTable}`}),(0,m.jsx)(`div`,{className:`ml-auto`,children:(0,m.jsx)(`button`,{type:`button`,onClick:c,className:`px-2 py-1 rounded text-xs transition-colors ${s?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,m.jsx)(`div`,{className:`flex-1 overflow-hidden ${s?`max-h-[60%]`:``}`,children:_.tableData?(0,m.jsx)(i,{columns:_.tableData.columns,rows:_.tableData.rows,total:_.tableData.total,limit:_.tableData.limit,schema:_.schema.map(e=>({name:e.name,type:e.type,nullable:!e.notnull,pk:!!e.pk,defaultValue:e.dflt_value,fk:e.fk??null})),loading:_.loading,page:_.page,onPageChange:_.setPage,onCellUpdate:(e,t,n,r)=>_.updateCell(t,n,r),onRowDelete:(e,t)=>_.deleteRow(t)}):(0,m.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:_.loading?(0,m.jsx)(l,{className:`size-4 animate-spin`}):`Select a table`})}),s&&(0,m.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,m.jsx)(g,{onExecute:_.executeQuery,loading:_.queryLoading})})]})]})}export{_ as SqliteViewer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,x as n}from"./vendor-markdown-0Mxgxy0L.js";import"./api-client-Dvzcc_EO.js";import{n as r}from"./settings-store-Dvk8Lvwm.js";import"./vendor-mermaid-DsfY6y4f.js";import{n as i}from"./utils-CTg5uAYR.js";import{R as a,et as o,nt as s}from"./index-zP-OjEml.js";import{n as c,r as l,t as u}from"./vendor-xterm-CU2c3f0A.js";var d=e(n(),1),f={background:`#0f1419`,foreground:`#e5e7eb`,cursor:`#e5e7eb`,selectionBackground:`#3b82f640`,black:`#1a1f2e`,red:`#ef4444`,green:`#10b981`,yellow:`#f59e0b`,blue:`#3b82f6`,magenta:`#a855f7`,cyan:`#06b6d4`,white:`#e5e7eb`,brightBlack:`#6b7280`,brightRed:`#f87171`,brightGreen:`#34d399`,brightYellow:`#fbbf24`,brightBlue:`#60a5fa`,brightMagenta:`#c084fc`,brightCyan:`#22d3ee`,brightWhite:`#f9fafb`},p={background:`#ffffff`,foreground:`#1a1f2e`,cursor:`#1a1f2e`,selectionBackground:`#2563eb30`,black:`#1a1f2e`,red:`#dc2626`,green:`#059669`,yellow:`#d97706`,blue:`#2563eb`,magenta:`#9333ea`,cyan:`#0891b2`,white:`#f8fafc`,brightBlack:`#64748b`,brightRed:`#ef4444`,brightGreen:`#10b981`,brightYellow:`#f59e0b`,brightBlue:`#3b82f6`,brightMagenta:`#a855f7`,brightCyan:`#06b6d4`,brightWhite:`#ffffff`};function m(e){return e===`system`?window.matchMedia(`(prefers-color-scheme: dark)`).matches?f:p:e===`light`?p:f}var h=`RESIZE:`;function g(e){let{sessionId:t,containerRef:n}=e,i=(0,d.useRef)(null),a=(0,d.useRef)(null),o=(0,d.useRef)(null),s=(0,d.useRef)(null),f=(0,d.useRef)(0),[p,g]=(0,d.useState)(!1),[_,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),x=(0,d.useRef)(t),S=(0,d.useCallback)(e=>{let t=o.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),C=(0,d.useCallback)(()=>i.current?.getSelection()??``,[]),w=(0,d.useCallback)(()=>{let e=i.current,t=o.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${h}${e.cols},${e.rows}`)},[]),T=(0,d.useCallback)(()=>{s.current&&clearTimeout(s.current),o.current?.close(),o.current=null,x.current=`new`,f.current=0,b(!1),g(!1),v(!1),setTimeout(()=>E(),0)},[]),E=(0,d.useCallback)(()=>{let t=i.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,r=e.projectName??``,a=x.current,s=`${n}//${window.location.host}/ws/project/${encodeURIComponent(r)}/terminal/${a}`,c=new WebSocket(s);o.current=c,c.onopen=()=>{g(!0),v(!1),f.current=0,w()},c.onmessage=e=>{if(typeof e.data==`string`){if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type===`session`||n.type===`error`||n.type===`exited`||n.type===`ping`){n.type===`session`&&n.id&&(x.current=n.id),n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&b(!0);return}}catch{}t.write(e.data)}},c.onclose=()=>{g(!1),D()},c.onerror=()=>{c.close()}},[t,w]);function D(){let e=Math.min(1e3*2**f.current,3e4);f.current++,v(!0),s.current=setTimeout(()=>{E()},e)}return(0,d.useEffect)(()=>{let e=n.current;if(!e)return;let t=new l({cursorBlink:!0,fontSize:13,fontFamily:`var(--font-mono)`,theme:m(r.getState().theme)}),d=new c,f=new u;t.loadAddon(d),t.loadAddon(f),t.open(e),d.fit(),i.current=t,a.current=d,t.onData(e=>{let t=o.current;t?.readyState===WebSocket.OPEN&&t.send(e)}),E();let p=new ResizeObserver(()=>{try{d.fit(),w()}catch{}});p.observe(e);let h=r.getState().theme,g=r.subscribe(e=>{e.theme!==h&&(h=e.theme,t.options.theme=m(e.theme))});return()=>{g(),p.disconnect(),s.current&&clearTimeout(s.current),o.current?.close(),o.current=null,t.dispose(),i.current=null,a.current=null}},[t]),{connected:p,reconnecting:_,exited:y,sendData:S,getSelection:C,restart:T}}var _=t(),v=[{label:`Tab`,value:` `},{label:`Esc`,value:`\x1B`},{label:`Ctrl`,value:null,isModifier:!0},{label:`↑`,value:`\x1B[A`},{label:`↓`,value:`\x1B[B`},{label:`←`,value:`\x1B[D`},{label:`→`,value:`\x1B[C`}],y=(0,d.memo)(function({metadata:e}){let t=e?.sessionId??`new`,n=e?.projectName,r=(0,d.useRef)(null),{connected:c,reconnecting:l,exited:u,sendData:f,getSelection:p,restart:m}=g({sessionId:t,projectName:n,containerRef:r}),[h,y]=(0,d.useState)(!1),[b,x]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=window.visualViewport;if(!e)return;function t(){e&&x(e.height)}return e.addEventListener(`resize`,t),()=>e.removeEventListener(`resize`,t)},[]);let S=(0,d.useCallback)(()=>{(r.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]),C=(0,d.useCallback)(e=>{if(S(),h&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&f(String.fromCharCode(t)),y(!1);return}f(e)},[h,f,S]),w=(0,d.useCallback)(async()=>{let e=p();e&&await navigator.clipboard.writeText(e)},[p]),T=(0,d.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(f(e),S())}catch{}},[f,S]),E=typeof window<`u`&&`ontouchstart`in window;return(0,_.jsxs)(`div`,{className:`flex flex-col h-full`,style:b?{maxHeight:`${b}px`}:void 0,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,_.jsx)(`span`,{className:i(`size-2 rounded-full`,u?`bg-error`:c?`bg-success`:l?`bg-warning`:`bg-error`)}),(0,_.jsx)(`span`,{className:`text-text-secondary`,children:u?`Process exited`:c?`Connected`:l?`Reconnecting...`:`Disconnected`}),u&&(0,_.jsxs)(`button`,{onClick:m,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors`,children:[(0,_.jsx)(a,{size:10}),`Restart`]}),(0,_.jsx)(`span`,{className:`text-text-subtle ml-auto font-mono`,children:t})]}),(0,_.jsx)(`div`,{ref:r,className:`flex-1 min-h-0 bg-background p-1`}),E&&(0,_.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 bg-surface border-t border-border overflow-x-auto`,children:[(0,_.jsx)(`button`,{onClick:w,className:`px-2 py-1.5 rounded text-xs min-w-[36px] min-h-[32px] bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`,children:(0,_.jsx)(o,{size:14})}),(0,_.jsx)(`button`,{onClick:T,className:`px-2 py-1.5 rounded text-xs min-w-[36px] min-h-[32px] bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`,children:(0,_.jsx)(s,{size:14})}),(0,_.jsx)(`div`,{className:`w-px h-5 bg-border mx-0.5`}),v.map(e=>(0,_.jsx)(`button`,{onClick:()=>{e.label===`Ctrl`?y(!h):e.value&&C(e.value)},className:i(`px-3 py-1.5 rounded text-xs font-mono min-w-[36px] min-h-[32px]`,`bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground`,`transition-colors select-none`,e.label===`Ctrl`&&h&&`bg-primary text-primary-foreground`),children:e.label},e.label))]})]})});export{y as TerminalTab};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e}from"./vendor-mermaid-DsfY6y4f.js";export{e as createTreemapServices};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{file-exclamation-point-Baz81y5z.js → file-exclamation-point-BwzaQ50n.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|