@hienlh/ppm 0.13.7 → 0.13.8

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 (84) hide show
  1. package/CHANGELOG.md +10 -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-settings-section-CHgpQ_OP.js +1 -0
  5. package/dist/web/assets/{api-settings-t7Leca7J.js → api-settings-D0_eiIYv.js} +1 -1
  6. package/dist/web/assets/architecture-PBZL5I3N-WMbLpD5Y.js +1 -0
  7. package/dist/web/assets/{audio-preview-BR7DoH0l.js → audio-preview-DQbX8gfL.js} +1 -1
  8. package/dist/web/assets/{chat-tab-8Bvn7PHt.js → chat-tab-BJQT9kie.js} +9 -9
  9. package/dist/web/assets/{code-editor-B-F5VdzM.js → code-editor-CeKTvfyz.js} +4 -4
  10. package/dist/web/assets/{conflict-editor-C-lUw4gv.js → conflict-editor-BKwJLX0D.js} +1 -1
  11. package/dist/web/assets/{csv-preview-C9qGhDlb.js → csv-preview-D5lmgVEy.js} +1 -1
  12. package/dist/web/assets/database-viewer-DixWWvjx.js +5 -0
  13. package/dist/web/assets/{diff-viewer-I8qs3Nb-.js → diff-viewer-SAtaBwNI.js} +1 -1
  14. package/dist/web/assets/{esm-B3je8j5P.js → esm-nXReYVnB.js} +1 -1
  15. package/dist/web/assets/{extension-webview-Dt9bKs0C.js → extension-webview-PiV4bKJ1.js} +1 -1
  16. package/dist/web/assets/{file-store-BgZggznw.js → file-store-BrbCNyLm.js} +1 -1
  17. package/dist/web/assets/gitGraph-HDMCJU4V-BdPTuzO3.js +1 -0
  18. package/dist/web/assets/{image-preview-C-w-CK5s.js → image-preview-CbFFD9BS.js} +1 -1
  19. package/dist/web/assets/{index-CEI0tfaL.css → index-C1RBJe0a.css} +1 -1
  20. package/dist/web/assets/index-ZFyltHwi.js +27 -0
  21. package/dist/web/assets/info-3K5VOQVL-MHX_1JfR.js +1 -0
  22. package/dist/web/assets/{input-bGJExpJZ.js → input-BMvRUOr7.js} +1 -1
  23. package/dist/web/assets/keybindings-store-D0C-Pq2o.js +1 -0
  24. package/dist/web/assets/{markdown-renderer-ySnJPmc1.js → markdown-renderer-CHWA0KAo.js} +3 -3
  25. package/dist/web/assets/packet-RMMSAZCW-CreFbf9A.js +1 -0
  26. package/dist/web/assets/{pdf-preview-BoQTv6B2.js → pdf-preview-DQMdjqa2.js} +1 -1
  27. package/dist/web/assets/pie-UPGHQEXC-CnaHXUh8.js +1 -0
  28. package/dist/web/assets/port-forwarding-tab-9BpNC9_7.js +1 -0
  29. package/dist/web/assets/{postgres-viewer-CBntLqXY.js → postgres-viewer-Bm5T51n6.js} +3 -3
  30. package/dist/web/assets/radar-KQ55EAFF-UxsdRHvt.js +1 -0
  31. package/dist/web/assets/{scroll-area-D0EQpAH2.js → scroll-area-BEllam7_.js} +1 -1
  32. package/dist/web/assets/{settings-store-CdcSAgEZ.js → settings-store-BHBb62gq.js} +2 -2
  33. package/dist/web/assets/settings-tab-BUstSDLR.js +1 -0
  34. package/dist/web/assets/sparkles-B0mRBy_j.js +1 -0
  35. package/dist/web/assets/{sql-query-editor-vpD0I0KG.js → sql-query-editor-CMQpaOjA.js} +1 -1
  36. package/dist/web/assets/{sqlite-viewer-CjtNrQ7C.js → sqlite-viewer-C7rhO4bn.js} +1 -1
  37. package/dist/web/assets/tab-store-0rGchMXr.js +1 -0
  38. package/dist/web/assets/terminal-tab-Xtj6RN0d.js +1 -0
  39. package/dist/web/assets/treemap-KZPCXAKY-CBVPi4NV.js +1 -0
  40. package/dist/web/assets/{use-blob-url-BgxxT-n_.js → use-blob-url-Hn6n1730.js} +1 -1
  41. package/dist/web/assets/{use-monaco-theme-dtPsv6sh.js → use-monaco-theme-CP-vyTF8.js} +1 -1
  42. package/dist/web/assets/{vendor-mermaid-DCxaaPi4.js → vendor-mermaid-CMiurk2b.js} +2 -2
  43. package/dist/web/assets/{video-preview-DxTnfuSQ.js → video-preview-BLI_RruT.js} +1 -1
  44. package/dist/web/index.html +14 -14
  45. package/dist/web/sw.js +1 -1
  46. package/package.json +1 -1
  47. package/src/index.ts +0 -0
  48. package/src/server/ws/terminal.ts +4 -0
  49. package/src/services/terminal.service.ts +4 -1
  50. package/src/web/components/database/data-grid.tsx +117 -17
  51. package/src/web/components/editor/code-editor.tsx +2 -2
  52. package/src/web/components/layout/draggable-tab.tsx +1 -0
  53. package/src/web/components/terminal/terminal-tab.tsx +19 -8
  54. package/src/web/hooks/use-terminal.ts +22 -2
  55. package/src/web/stores/panel-utils.ts +1 -0
  56. package/bun.lock +0 -2062
  57. package/bunfig.toml +0 -2
  58. package/dist/web/assets/ai-settings-section-DeW4WN43.js +0 -1
  59. package/dist/web/assets/architecture-PBZL5I3N-Dy3PgD6O.js +0 -1
  60. package/dist/web/assets/database-viewer-mLY7oMC_.js +0 -2
  61. package/dist/web/assets/gitGraph-HDMCJU4V-Bu1SIFFq.js +0 -1
  62. package/dist/web/assets/index-CFz4k7zO.js +0 -27
  63. package/dist/web/assets/info-3K5VOQVL-DzfAxmVd.js +0 -1
  64. package/dist/web/assets/keybindings-store-CWX97luK.js +0 -1
  65. package/dist/web/assets/packet-RMMSAZCW-DpzHf4xp.js +0 -1
  66. package/dist/web/assets/pie-UPGHQEXC-BpzFCKJ8.js +0 -1
  67. package/dist/web/assets/port-forwarding-tab-CjlX-0D2.js +0 -1
  68. package/dist/web/assets/radar-KQ55EAFF-DAxWKxM4.js +0 -1
  69. package/dist/web/assets/settings-tab-Djw-bqxG.js +0 -1
  70. package/dist/web/assets/tab-store-Jvy1eZGM.js +0 -1
  71. package/dist/web/assets/terminal-tab-bKLoy06f.js +0 -1
  72. package/dist/web/assets/treemap-KZPCXAKY-D6dgXbAe.js +0 -1
  73. /package/dist/web/assets/{api-client-r4nyVy7H.js → api-client-Dvzcc_EO.js} +0 -0
  74. /package/dist/web/assets/{csv-parser-DxVplKKB.js → csv-parser-DO0dz4x_.js} +0 -0
  75. /package/dist/web/assets/{dist-BqoEabX7.js → dist-CGvx1c8C.js} +0 -0
  76. /package/dist/web/assets/{katex-bpagxk3Z.js → katex-BFE6i_OH.js} +0 -0
  77. /package/dist/web/assets/{lib-BqkcKGFq.js → lib-D_kRA9p6.js} +0 -0
  78. /package/dist/web/assets/{react-BkWDCPD7.js → react-GqWghJ-L.js} +0 -0
  79. /package/dist/web/assets/{sql-completion-provider-EzHOQLfo.js → sql-completion-provider-tCzZfqWs.js} +0 -0
  80. /package/dist/web/assets/{table-DbSviOmw.js → table-Dq575bPF.js} +0 -0
  81. /package/dist/web/assets/{text-wrap-DzvCTq_i.js → text-wrap-Cn6BNQfq.js} +0 -0
  82. /package/dist/web/assets/{trash-2-BgDIBl6f.js → trash-2-CJYoLw7Q.js} +0 -0
  83. /package/dist/web/assets/{utils-ChWX7pZv.js → utils-CTg5uAYR.js} +0 -0
  84. /package/dist/web/assets/{vendor-xterm-D7SePDJp.js → vendor-xterm-u3AZMvTx.js} +0 -0
@@ -1 +1 @@
1
- import{t as e}from"./react-BkWDCPD7.js";import{i as t,t as n}from"./api-client-r4nyVy7H.js";var r=`ppm-custom-order`;function i(){try{let e=localStorage.getItem(r);return e?JSON.parse(e):null}catch{return null}}function a(e){try{localStorage.setItem(r,JSON.stringify(e))}catch{}}function o(e,t){if(!t)return[...e];let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}var s=e((e,t)=>({projects:[],activeProject:null,customOrder:i(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await n.get(`/api/projects`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to fetch projects`,loading:!1})}},setActiveProject:t=>{e({activeProject:t})},addProject:async(r,i)=>{let a=await n.post(`/api/projects`,{path:r,name:i});await t().fetchProjects();let o=t().projects.find(e=>e.name===(i??a.name)||e.path===r);return o&&e({activeProject:o}),a},setProjectColor:async(e,r)=>{await n.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:r}),await t().fetchProjects()},moveProject:async(r,i)=>{let{projects:s,customOrder:c}=t(),l=o(s,c),u=l.findIndex(e=>e.name===r);if(u===-1)return;let d=i===`up`?u-1:u+1;if(d<0||d>=l.length)return;let f=l.map(e=>e.name);[f[u],f[d]]=[f[d],f[u]],a(f),await n.patch(`/api/projects/reorder`,{order:f}),e({customOrder:f})},reorderProjects:async t=>{a(t),e({customOrder:t}),await n.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,r)=>{await n.patch(`/api/projects/${encodeURIComponent(e)}`,{name:r}),await t().fetchProjects()},deleteProject:async t=>{await n.del(`/api/projects/${encodeURIComponent(t)}`),e(e=>{let n=e.projects.filter(e=>e.name!==t),r=e.customOrder?e.customOrder.filter(e=>e!==t):null;return r&&a(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}}));function c(e,t){return e.map(e=>({name:e.name,path:t?`${t}/${e.name}`:e.name,type:e.type,ignored:e.isIgnored}))}function l(e,t,n){return t?e.map(e=>u(e,t,n)):n.map(t=>{let n=e.find(e=>e.path===t.path);return n?{...t,children:n.children}:t})}function u(e,t,n){if(e.path===t){let t=n.map(t=>{let n=e.children?.find(e=>e.path===t.path);return n?{...t,children:n.children}:t});return{...e,children:t}}return e.children&&t.startsWith(e.path+`/`)?{...e,children:e.children.map(e=>u(e,t,n))}:e}var d=e((e,r)=>({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,selectedFiles:[],loadRoot:async i=>{e({loading:!0,error:null});try{let a=c(await n.get(`${t(i)}/files/list?path=`),``),o=new Set(r().loadedPaths);o.add(``),e({tree:a,loading:!1,loadedPaths:o})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},loadChildren:async(i,a)=>{let o=r();if(o.loadedPaths.has(a))return;let s=o.inflight.get(a);s&&s.abort();let u=new AbortController,d=new Map(o.inflight);d.set(a,u),e({inflight:d});try{let o=encodeURIComponent(a),s=await n.get(`${t(i)}/files/list?path=${o}`,{signal:u.signal});if(u.signal.aborted)return;let d=c(s,a),f=r(),p=l(f.tree,a,d),m=new Set(f.loadedPaths);m.add(a);let h=new Map(f.inflight);h.delete(a),e({tree:p,loadedPaths:m,inflight:h})}catch(t){if(t instanceof Error&&t.name===`AbortError`)return;let n=new Map(r().inflight);n.delete(a),e({inflight:n})}},loadIndex:async r=>{e({indexStatus:`loading`});try{e({fileIndex:await n.get(`${t(r)}/files/index`),indexStatus:`ready`})}catch{e({indexStatus:`error`})}},invalidateIndex:()=>{e({indexStatus:`idle`,fileIndex:[]})},invalidateFolder:async(t,n)=>{let i=r();if(!i.loadedPaths.has(n))return;let a=new Set(i.loadedPaths);a.delete(n),e({loadedPaths:a}),(!n||i.expandedPaths.has(n))&&await r().loadChildren(t,n)},toggleExpand:(t,n)=>{let i=r(),a=new Set(i.expandedPaths);a.has(n)?(a.delete(n),e({expandedPaths:a})):(a.add(n),e({expandedPaths:a}),i.loadedPaths.has(n)||r().loadChildren(t,n))},setExpanded:(t,n)=>{let i=new Set(r().expandedPaths);n?i.add(t):i.delete(t),e({expandedPaths:i})},toggleFileSelect:t=>{let n=r().selectedFiles;n.indexOf(t)>=0?e({selectedFiles:n.filter(e=>e!==t)}):e({selectedFiles:n.length>=2?[n[1],t]:[...n,t]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>{for(let e of r().inflight.values())e.abort();e({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,selectedFiles:[]})},fetchTree:async e=>{await r().loadRoot(e),r().loadIndex(e)}}));export{o as n,s as r,d as t};
1
+ import{t as e}from"./react-GqWghJ-L.js";import{i as t,t as n}from"./api-client-Dvzcc_EO.js";var r=`ppm-custom-order`;function i(){try{let e=localStorage.getItem(r);return e?JSON.parse(e):null}catch{return null}}function a(e){try{localStorage.setItem(r,JSON.stringify(e))}catch{}}function o(e,t){if(!t)return[...e];let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}var s=e((e,t)=>({projects:[],activeProject:null,customOrder:i(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await n.get(`/api/projects`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to fetch projects`,loading:!1})}},setActiveProject:t=>{e({activeProject:t})},addProject:async(r,i)=>{let a=await n.post(`/api/projects`,{path:r,name:i});await t().fetchProjects();let o=t().projects.find(e=>e.name===(i??a.name)||e.path===r);return o&&e({activeProject:o}),a},setProjectColor:async(e,r)=>{await n.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:r}),await t().fetchProjects()},moveProject:async(r,i)=>{let{projects:s,customOrder:c}=t(),l=o(s,c),u=l.findIndex(e=>e.name===r);if(u===-1)return;let d=i===`up`?u-1:u+1;if(d<0||d>=l.length)return;let f=l.map(e=>e.name);[f[u],f[d]]=[f[d],f[u]],a(f),await n.patch(`/api/projects/reorder`,{order:f}),e({customOrder:f})},reorderProjects:async t=>{a(t),e({customOrder:t}),await n.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,r)=>{await n.patch(`/api/projects/${encodeURIComponent(e)}`,{name:r}),await t().fetchProjects()},deleteProject:async t=>{await n.del(`/api/projects/${encodeURIComponent(t)}`),e(e=>{let n=e.projects.filter(e=>e.name!==t),r=e.customOrder?e.customOrder.filter(e=>e!==t):null;return r&&a(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}}));function c(e,t){return e.map(e=>({name:e.name,path:t?`${t}/${e.name}`:e.name,type:e.type,ignored:e.isIgnored}))}function l(e,t,n){return t?e.map(e=>u(e,t,n)):n.map(t=>{let n=e.find(e=>e.path===t.path);return n?{...t,children:n.children}:t})}function u(e,t,n){if(e.path===t){let t=n.map(t=>{let n=e.children?.find(e=>e.path===t.path);return n?{...t,children:n.children}:t});return{...e,children:t}}return e.children&&t.startsWith(e.path+`/`)?{...e,children:e.children.map(e=>u(e,t,n))}:e}var d=e((e,r)=>({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,selectedFiles:[],loadRoot:async i=>{e({loading:!0,error:null});try{let a=c(await n.get(`${t(i)}/files/list?path=`),``),o=new Set(r().loadedPaths);o.add(``),e({tree:a,loading:!1,loadedPaths:o})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},loadChildren:async(i,a)=>{let o=r();if(o.loadedPaths.has(a))return;let s=o.inflight.get(a);s&&s.abort();let u=new AbortController,d=new Map(o.inflight);d.set(a,u),e({inflight:d});try{let o=encodeURIComponent(a),s=await n.get(`${t(i)}/files/list?path=${o}`,{signal:u.signal});if(u.signal.aborted)return;let d=c(s,a),f=r(),p=l(f.tree,a,d),m=new Set(f.loadedPaths);m.add(a);let h=new Map(f.inflight);h.delete(a),e({tree:p,loadedPaths:m,inflight:h})}catch(t){if(t instanceof Error&&t.name===`AbortError`)return;let n=new Map(r().inflight);n.delete(a),e({inflight:n})}},loadIndex:async r=>{e({indexStatus:`loading`});try{e({fileIndex:await n.get(`${t(r)}/files/index`),indexStatus:`ready`})}catch{e({indexStatus:`error`})}},invalidateIndex:()=>{e({indexStatus:`idle`,fileIndex:[]})},invalidateFolder:async(t,n)=>{let i=r();if(!i.loadedPaths.has(n))return;let a=new Set(i.loadedPaths);a.delete(n),e({loadedPaths:a}),(!n||i.expandedPaths.has(n))&&await r().loadChildren(t,n)},toggleExpand:(t,n)=>{let i=r(),a=new Set(i.expandedPaths);a.has(n)?(a.delete(n),e({expandedPaths:a})):(a.add(n),e({expandedPaths:a}),i.loadedPaths.has(n)||r().loadChildren(t,n))},setExpanded:(t,n)=>{let i=new Set(r().expandedPaths);n?i.add(t):i.delete(t),e({expandedPaths:i})},toggleFileSelect:t=>{let n=r().selectedFiles;n.indexOf(t)>=0?e({selectedFiles:n.filter(e=>e!==t)}):e({selectedFiles:n.length>=2?[n[1],t]:[...n,t]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>{for(let e of r().inflight.values())e.abort();e({tree:[],fileIndex:[],loading:!1,error:null,expandedPaths:new Set,loadedPaths:new Set,inflight:new Map,indexStatus:`idle`,selectedFiles:[]})},fetchTree:async e=>{await r().loadRoot(e),r().loadIndex(e)}}));export{o as n,s as r,d as t};
@@ -0,0 +1 @@
1
+ import{H as e}from"./vendor-mermaid-CMiurk2b.js";export{e as createGitGraphServices};
@@ -1 +1 @@
1
- import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-Baz81y5z.js";import"./api-client-r4nyVy7H.js";import{W as n}from"./index-CFz4k7zO.js";import{t as r}from"./use-blob-url-BgxxT-n_.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load image.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`img`,{src:o,alt:e,className:`max-w-full max-h-full object-contain`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as ImagePreview};
1
+ import{b as e}from"./vendor-markdown-0Mxgxy0L.js";import{t}from"./file-exclamation-point-Baz81y5z.js";import"./api-client-Dvzcc_EO.js";import{G as n}from"./index-ZFyltHwi.js";import{t as r}from"./use-blob-url-Hn6n1730.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load image.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`img`,{src:o,alt:e,className:`max-w-full max-h-full object-contain`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as ImagePreview};