@hienlh/ppm 0.17.28 → 0.17.30

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 (64) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/http-api.md +1 -1
  4. package/dist/web/assets/{ai-resource-editor-BCgyv1KF.js → ai-resource-editor-D1efMh5f.js} +1 -1
  5. package/dist/web/assets/{audio-preview-BPuiX8ma.js → audio-preview-BfaIfDsY.js} +1 -1
  6. package/dist/web/assets/chat-tab-CVfcHLiQ.js +13 -0
  7. package/dist/web/assets/code-editor-hKFw2M2d.js +10 -0
  8. package/dist/web/assets/{conflict-editor-BuLnwxFE.js → conflict-editor-BRDEJEq6.js} +1 -1
  9. package/dist/web/assets/{csv-preview-DdA_IpTo.js → csv-preview-D32vaKWU.js} +1 -1
  10. package/dist/web/assets/{database-viewer-BcF3uuk5.js → database-viewer-B-ukNIhW.js} +1 -1
  11. package/dist/web/assets/{diff-viewer-tyMHX20V.js → diff-viewer-DfFzvZND.js} +1 -1
  12. package/dist/web/assets/{docx-preview-BTclTd2v.js → docx-preview-B1kTBbEc.js} +1 -1
  13. package/dist/web/assets/{extension-webview-CBLWXhjt.js → extension-webview-mQPWwlxb.js} +1 -1
  14. package/dist/web/assets/{git-log-panel-tmGgY2kK.js → git-log-panel-CIB6xuoc.js} +1 -1
  15. package/dist/web/assets/glide-data-grid-DM0v58AP.js +138 -0
  16. package/dist/web/assets/group-chat-tab-pfDZpGO_.js +1 -0
  17. package/dist/web/assets/{image-preview-CQ57RN6l.js → image-preview-Dxvk6fiw.js} +1 -1
  18. package/dist/web/assets/index-Cp6hb7uj.js +50 -0
  19. package/dist/web/assets/keybindings-store-BDQFSrPz.js +1 -0
  20. package/dist/web/assets/{markdown-renderer-devgS0zw.js → markdown-renderer-TCeFZDxj.js} +2 -2
  21. package/dist/web/assets/{markdown-renderer-C7clwuDe.js → markdown-renderer-zRn368SN.js} +1 -1
  22. package/dist/web/assets/notification-store-BcEM83wQ.js +1 -0
  23. package/dist/web/assets/{pdf-preview-Cw_GRd7e.js → pdf-preview-Bx_RsWdB.js} +1 -1
  24. package/dist/web/assets/{postgres-viewer-DN40Bdc-.js → postgres-viewer-DJXDXZbE.js} +2 -2
  25. package/dist/web/assets/{settings-tab-DkpOd_kU.js → settings-tab-CAJ4skP0.js} +1 -1
  26. package/dist/web/assets/{sql-query-editor-Df1pzXAj.js → sql-query-editor-UDQo7Bck.js} +1 -1
  27. package/dist/web/assets/{sqlite-viewer-Dbh3LluT.js → sqlite-viewer-BaQq64OX.js} +1 -1
  28. package/dist/web/assets/{system-monitor-tab-bbct9aEk.js → system-monitor-tab-P1uy84Os.js} +1 -1
  29. package/dist/web/assets/terminal-tab-mI-vAmOV.js +3 -0
  30. package/dist/web/assets/{tool-cards-BonPvpUI.js → tool-cards-B6jz0GZE.js} +2 -2
  31. package/dist/web/assets/{use-monaco-theme-Cqo17yKA.js → use-monaco-theme-CZKIw2ZG.js} +1 -1
  32. package/dist/web/assets/{video-preview-kZgggFAn.js → video-preview-TGDSUs0J.js} +1 -1
  33. package/dist/web/index.html +1 -1
  34. package/dist/web/sw.js +1 -1
  35. package/package.json +2 -2
  36. package/src/services/supervisor.ts +45 -24
  37. package/src/services/windows-process-tree.ts +24 -3
  38. package/src/web/components/chat/account-dialogs.tsx +3 -3
  39. package/src/web/components/chat/chat-history-bar.tsx +4 -2
  40. package/src/web/components/chat/message-action-bar.tsx +2 -1
  41. package/src/web/components/database/connection-import-export.tsx +5 -2
  42. package/src/web/components/database/export-button.tsx +4 -3
  43. package/src/web/components/explorer/file-tree.tsx +3 -2
  44. package/src/web/components/layout/cloud-share-popover.tsx +2 -1
  45. package/src/web/components/layout/mobile-nav.tsx +3 -2
  46. package/src/web/components/layout/project-bottom-sheet.tsx +2 -1
  47. package/src/web/components/layout/project-switcher.tsx +2 -1
  48. package/src/web/components/layout/tab-bar.tsx +3 -2
  49. package/src/web/components/settings/accounts-settings-section.tsx +3 -3
  50. package/src/web/components/settings/proxy-settings-section.tsx +8 -7
  51. package/src/web/components/shared/bug-report-popup.tsx +2 -1
  52. package/src/web/components/shared/markdown-code-block.tsx +3 -2
  53. package/src/web/components/terminal/terminal-tab.tsx +2 -1
  54. package/src/web/components/tunnels/tunnel-manager-tab.tsx +4 -2
  55. package/src/web/lib/clipboard.ts +52 -0
  56. package/src/web/lib/report-bug.ts +0 -10
  57. package/dist/web/assets/chat-tab-WnnM6GKA.js +0 -13
  58. package/dist/web/assets/code-editor-CnGUyOuU.js +0 -10
  59. package/dist/web/assets/glide-data-grid-CkCW7sFw.js +0 -138
  60. package/dist/web/assets/group-chat-tab-D_x5CRae.js +0 -1
  61. package/dist/web/assets/index-Cp3e9olf.js +0 -50
  62. package/dist/web/assets/keybindings-store-CpgEwnFA.js +0 -1
  63. package/dist/web/assets/notification-store-BohufOcS.js +0 -1
  64. package/dist/web/assets/terminal-tab-Cqs7xZJt.js +0 -3
@@ -1 +0,0 @@
1
- import"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import"./api-client-DhXpjLdi.js";import{ft as e}from"./index-Cp3e9olf.js";export{e as useKeybindingsStore};
@@ -1 +0,0 @@
1
- import"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import"./api-client-DhXpjLdi.js";import{xt as e}from"./index-Cp3e9olf.js";export{e as useNotificationStore};
@@ -1,3 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-DMRGWRuc.js";import{o as r}from"./api-client-DhXpjLdi.js";import"./vendor-mermaid-CYOBtZtD.js";import{t as i}from"./settings-store-UwT_fNhg.js";import{n as a}from"./utils-E0yyGxXt.js";import{t as o}from"./panel-store-DsDZX8Mi.js";import{t as s}from"./resolve-theme-B9Mgd5GG.js";import{r as c,t as l}from"./apply-theme-BSJDABU3.js";import{Bt as u,Jt as d,dn as f,ln as p}from"./index-Cp3e9olf.js";import{i as m,n as h,r as g,t as _}from"./vendor-xterm-Dlg984wj.js";var v=e(t(),1);function y(e){let t=e.tokens;if(e.terminal){let n=e.terminal.ansi;return{background:t.bgSolid,foreground:t.text,cursor:e.terminal.cursor,cursorAccent:e.terminal.cursorAccent??t.bgSolid,selectionBackground:e.terminal.selection,black:n[0],red:n[1],green:n[2],yellow:n[3],blue:n[4],magenta:n[5],cyan:n[6],white:n[7],brightBlack:n[8],brightRed:n[9],brightGreen:n[10],brightYellow:n[11],brightBlue:n[12],brightMagenta:n[13],brightCyan:n[14],brightWhite:n[15]}}let n=e.mode===`dark`,r=n?`#1b1f2a`:`#2b2f38`,i=n?`#d7dce8`:`#e9edf5`,a=t.text3,o=n?`#f7f9ff`:`#ffffff`;return{background:t.bgSolid,foreground:t.text,cursor:t.accent,cursorAccent:t.bgSolid,selectionBackground:t.accentWash,black:r,red:t.error,green:t.success,yellow:t.warning,blue:t.accent,magenta:t.accent2,cyan:t.info,white:i,brightBlack:a,brightRed:t.error,brightGreen:t.success,brightYellow:t.warning,brightBlue:t.accent,brightMagenta:t.accent2,brightCyan:t.info,brightWhite:o}}function b(){let e=i.getState();return y(c()??s(e.themeStyle,e.themeMode,e.customThemes,e.customThemeId))}var x=`RESIZE:`,S=`PING`,C=`PONG`,w=15e3,T=35e3;function E(e){let{sessionId:t,containerRef:n}=e,r=(0,v.useRef)(null),i=(0,v.useRef)(null),a=(0,v.useRef)(null),o=(0,v.useRef)(null),s=(0,v.useRef)(0),c=(0,v.useRef)(!1),u=(0,v.useRef)(Date.now()),[d,f]=(0,v.useState)(!1),[p,y]=(0,v.useState)(!1),[E,D]=(0,v.useState)(!1),O=e.tabId?`ppm:terminal-session:${e.tabId}`:null,k=(0,v.useRef)((()=>{if(O)try{return localStorage.getItem(O)??t}catch{}return t})()),A=(0,v.useRef)(0),j=(0,v.useCallback)(e=>{let t=a.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),M=(0,v.useCallback)(()=>r.current?.getSelection()??``,[]),N=(0,v.useCallback)(()=>{let e=r.current;if(!e)return``;let t=e.buffer.active,n=A.current,i=t.baseY+t.cursorY,a=[];for(let e=n;e<=i;e++){let n=t.getLine(e);n&&a.push(n.translateToString(!0))}for(;a.length>0&&a[a.length-1].trim()===``;)a.pop();return a.join(`
2
- `)},[]),P=(0,v.useCallback)(()=>{let e=r.current,t=a.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${x}${e.cols},${e.rows}`)},[]),F=(0,v.useCallback)(()=>{if(o.current&&clearTimeout(o.current),a.current?.close(),a.current=null,k.current=`new`,O)try{localStorage.removeItem(O)}catch{}s.current=0,D(!1),f(!1),y(!1),setTimeout(()=>I(),0)},[]),I=(0,v.useCallback)(()=>{o.current&&=(clearTimeout(o.current),null),a.current&&=(a.current.onclose=null,a.current.close(),null);let t=r.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,i=e.projectName??``,l=k.current,d=`/ws/project/${encodeURIComponent(i)}/terminal/${l}`,p=`${n}//${window.location.host}${d}`,m=new WebSocket(p);a.current=m,m.onopen=()=>{c.current&&r.current&&r.current.clear(),c.current=!0,u.current=Date.now(),f(!0),y(!1),s.current=0,P()},m.onmessage=e=>{if(u.current=Date.now(),typeof e.data==`string`){if(e.data===C)return;if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type){if(n.type===`session`&&n.id&&(k.current=n.id,O))try{localStorage.setItem(O,n.id)}catch{}n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&D(!0);return}}catch{}t.write(e.data)}},m.onclose=()=>{f(!1),R()},m.onerror=()=>{m.close()}},[P]),L=(0,v.useCallback)(()=>{if(document.visibilityState!==`visible`)return;let e=a.current;if(!e||e.readyState!==WebSocket.OPEN){I();return}if(Date.now()-u.current>T){I();return}try{e.send(S)}catch{I()}},[I]);function R(){let e=Math.min(1e3*2**s.current,3e4);s.current++,y(!0),o.current=setTimeout(()=>{I()},e)}return(0,v.useEffect)(()=>{let e=n.current;if(!e)return;let t=new m({cursorBlink:!0,fontSize:13,scrollback:5e4,fontFamily:`Consolas, 'Cascadia Mono', Menlo, 'DejaVu Sans Mono', 'Courier New', monospace`,theme:b()}),s=new g,c=new h;if(t.loadAddon(s),t.loadAddon(c),t.open(e),!(`ontouchstart`in window||navigator.maxTouchPoints>0))try{let e=new _;e.onContextLoss(()=>e.dispose()),t.loadAddon(e)}catch{}s.fit(),r.current=t,i.current=s,t.onData(e=>{if(e.includes(`\r`)||e.includes(`
3
- `)){let e=t.buffer.active;A.current=e.baseY+e.cursorY+1}let n=a.current;n?.readyState===WebSocket.OPEN&&n.send(e)}),I();let u=setInterval(L,w),d=()=>{document.visibilityState===`visible`&&L()};document.addEventListener(`visibilitychange`,d);let f=new ResizeObserver(e=>{let t=e[0];if(!(!t||t.contentRect.width===0||t.contentRect.height===0))try{s.fit(),P()}catch{}});f.observe(e);let p=()=>{t.options.theme=b()};window.addEventListener(l,p);let v=()=>window.removeEventListener(l,p);return()=>{v(),f.disconnect(),clearInterval(u),document.removeEventListener(`visibilitychange`,d),o.current&&clearTimeout(o.current),a.current?.close(),a.current=null,t.dispose(),r.current=null,i.current=null}},[]),{connected:d,reconnecting:p,exited:E,sendData:j,getSelection:M,getLastCommandOutput:N,restart:F}}var D=n(),O=[{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`},{label:`^C`,value:``}],k=(0,v.memo)(function({metadata:e,tabId:t}){let n=e?.sessionId??`new`,i=e?.projectName,s=(0,v.useRef)(null),{connected:c,reconnecting:l,exited:m,sendData:h,getSelection:g,getLastCommandOutput:_,restart:y}=E({sessionId:n,projectName:i,containerRef:s,tabId:t}),[b,x]=(0,v.useState)(!1),[S,C]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=window.visualViewport;if(!e)return;function t(){e&&C(e.height)}return e.addEventListener(`resize`,t),()=>e.removeEventListener(`resize`,t)},[]);let w=(0,v.useCallback)(()=>{(s.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]);(0,v.useEffect)(()=>{let e=s.current;if(!e)return;let t=()=>w();return e.addEventListener(`touchend`,t,{capture:!0}),()=>e.removeEventListener(`touchend`,t,{capture:!0})},[w]);let T=(0,v.useCallback)(e=>{if(w(),b&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&h(String.fromCharCode(t)),x(!1);return}h(e)},[b,h,w]),k=(0,v.useCallback)(async()=>{let e=g();e&&await navigator.clipboard.writeText(e)},[g]),A=(0,v.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(h(e),w())}catch{}},[h,w]),j=(0,v.useCallback)(()=>{let e=g(),t=e||_();if(!t.trim())return;let n="```bash\n"+t+"\n```",a=e?`Terminal selection`:`Terminal output`,s=!1,c=()=>{s=!0};window.addEventListener(`ppm:send-to-chat:ack`,c,{once:!0}),window.dispatchEvent(new CustomEvent(`ppm:send-to-chat`,{detail:{text:n,label:a,projectName:i}})),window.removeEventListener(`ppm:send-to-chat:ack`,c),s?r.success(`Sent to chat`,{duration:1500}):o.getState().openTab({type:`chat`,title:`Chat`,projectId:null,metadata:{projectName:i,pendingMessage:n},closable:!0})},[g,_,i]),M=typeof window<`u`&&`ontouchstart`in window;return(0,D.jsxs)(`div`,{className:`flex flex-col h-full`,style:S?{maxHeight:`${S}px`}:void 0,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,D.jsx)(`span`,{className:a(`size-2 rounded-full`,m?`bg-error`:c?`bg-success`:l?`bg-warning`:`bg-error`)}),(0,D.jsx)(`span`,{className:`text-text-secondary`,children:m?`Process exited`:c?`Connected`:l?`Reconnecting...`:`Disconnected`}),m&&(0,D.jsxs)(`button`,{onClick:y,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,D.jsx)(u,{size:10}),`Restart`]}),(0,D.jsxs)(`button`,{onClick:j,title:`Send to Chat`,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 ml-auto`,children:[(0,D.jsx)(d,{size:10}),`Chat`]}),(0,D.jsx)(`span`,{className:`text-text-subtle font-mono`,children:n})]}),(0,D.jsx)(`div`,{ref:s,onClick:w,className:`flex-1 min-h-0 bg-background p-1`}),M&&(0,D.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 bg-surface border-t border-border overflow-x-auto`,children:[(0,D.jsx)(`button`,{onClick:k,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,D.jsx)(p,{size:14})}),(0,D.jsx)(`button`,{onClick:A,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,D.jsx)(f,{size:14})}),(0,D.jsx)(`button`,{onClick:j,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`,"aria-label":`Send to Chat`,children:(0,D.jsx)(d,{size:14})}),(0,D.jsx)(`div`,{className:`w-px h-5 bg-border mx-0.5`}),O.map(e=>(0,D.jsx)(`button`,{onClick:()=>{e.label===`Ctrl`?x(!b):e.value&&T(e.value)},className:a(`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`&&b&&`bg-primary text-primary-foreground`),children:e.label},e.label))]})]})});export{k as TerminalTab};