@chainingintention/pi-web-cn 1.202606.3 → 1.202606.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/LICENSE +21 -21
- package/README.md +364 -364
- package/dist/cli.js +32 -32
- package/dist/client/assets/{CodeViewer-B4nxYc0g.js → CodeViewer-DRxmEzh1.js} +1 -1
- package/dist/client/assets/{TerminalPanel-htr2dU1I.js → TerminalPanel-BcGKwlLZ.js} +1 -1
- package/dist/client/assets/{index-BjUH4a8R.js → index-BZE2v69K.js} +149 -141
- package/dist/client/favicon.svg +11 -11
- package/dist/client/index.html +17 -17
- package/dist/client/manifest.webmanifest +24 -24
- package/dist/config.js +72 -0
- package/dist/config.js.map +1 -1
- package/dist/pi-web-plugins/info/package.json +9 -9
- package/dist/pi-web-plugins/info/pi-web-plugin.js +14 -14
- package/dist/pi-web-plugins/updates/package.json +9 -9
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +75 -75
- package/dist/pi-web-plugins/workspace-tasks/config.js +1 -1
- package/dist/pi-web-plugins/workspace-tasks/package.json +9 -9
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +10 -10
- package/dist/pi-web-plugins/workspace-tasks/taskRunner.js +1 -1
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +58 -58
- package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +1 -1
- package/dist/server/app.js +48 -17
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +77 -0
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/gitRoutes.js +16 -3
- package/dist/server/gitRoutes.js.map +1 -1
- package/dist/server/managementEmbed.js +205 -0
- package/dist/server/managementEmbed.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +66 -8
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessions/managementPermissionSystem.js +94 -0
- package/dist/server/sessions/managementPermissionSystem.js.map +1 -0
- package/dist/server/sessions/managementSandbox.js +156 -0
- package/dist/server/sessions/managementSandbox.js.map +1 -0
- package/dist/server/sessions/piSessionService.js +320 -26
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +9 -4
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/terminalProxyRoutes.js +54 -8
- package/dist/server/terminalProxyRoutes.js.map +1 -1
- package/dist/server/terminals/terminalRoutes.js +12 -3
- package/dist/server/terminals/terminalRoutes.js.map +1 -1
- package/dist/server/terminals/terminalService.js +48 -4
- package/dist/server/terminals/terminalService.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +17 -4
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/pathSafety.js +9 -2
- package/dist/server/workspaces/pathSafety.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +12 -12
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/shared/apiTypes.d.ts +18 -0
- package/docs/assets/favicon.svg +11 -11
- package/docs/plugins.md +762 -762
- package/extensions/pi-web.ts +133 -133
- package/install.sh +5 -5
- package/package.json +127 -127
- package/plugin-api/unstable.d.ts +1 -1
- package/plugin-api.d.ts +1 -1
package/dist/cli.js
CHANGED
|
@@ -370,15 +370,15 @@ function environmentLines(environment) {
|
|
|
370
370
|
function systemdUnit(service) {
|
|
371
371
|
const workingDirectory = service.workingDirectory === undefined ? "" : `WorkingDirectory=${systemdQuotedValue(service.workingDirectory)}\n`;
|
|
372
372
|
const restart = service.restart === "on-failure" ? "Restart=on-failure\nRestartSec=2\n" : "Restart=no\n";
|
|
373
|
-
return `[Unit]
|
|
374
|
-
Description=${service.description}
|
|
375
|
-
${dependencyLine("After", service.after)}${dependencyLine("Wants", service.wants)}
|
|
376
|
-
[Service]
|
|
377
|
-
Type=simple
|
|
378
|
-
${workingDirectory}${environmentLines(service.environment)}ExecStart=${serviceShellExecPrefix()} ${systemdServiceShellQuote(service.shellCommand)}
|
|
379
|
-
${restart}
|
|
380
|
-
[Install]
|
|
381
|
-
WantedBy=default.target
|
|
373
|
+
return `[Unit]
|
|
374
|
+
Description=${service.description}
|
|
375
|
+
${dependencyLine("After", service.after)}${dependencyLine("Wants", service.wants)}
|
|
376
|
+
[Service]
|
|
377
|
+
Type=simple
|
|
378
|
+
${workingDirectory}${environmentLines(service.environment)}ExecStart=${serviceShellExecPrefix()} ${systemdServiceShellQuote(service.shellCommand)}
|
|
379
|
+
${restart}
|
|
380
|
+
[Install]
|
|
381
|
+
WantedBy=default.target
|
|
382
382
|
`;
|
|
383
383
|
}
|
|
384
384
|
function plistString(key, value, indent = " ") {
|
|
@@ -400,14 +400,14 @@ function launchdLogPath(ref) {
|
|
|
400
400
|
function launchdPlist(service) {
|
|
401
401
|
const workingDirectory = service.workingDirectory === undefined ? "" : plistString("WorkingDirectory", service.workingDirectory);
|
|
402
402
|
const keepAlive = service.restart === "on-failure" ? " <key>KeepAlive</key>\n <dict>\n <key>SuccessfulExit</key>\n <false/>\n </dict>\n" : "";
|
|
403
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
404
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
405
|
-
<plist version="1.0">
|
|
406
|
-
<dict>
|
|
407
|
-
${plistString("Label", service.launchdLabel)}${plistProgramArguments(service)}${workingDirectory}${plistEnvironment(service.environment)} <key>RunAtLoad</key>
|
|
408
|
-
<true/>
|
|
409
|
-
${keepAlive}${plistString("StandardOutPath", launchdLogPath(service))}${plistString("StandardErrorPath", launchdLogPath(service))}</dict>
|
|
410
|
-
</plist>
|
|
403
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
404
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
405
|
+
<plist version="1.0">
|
|
406
|
+
<dict>
|
|
407
|
+
${plistString("Label", service.launchdLabel)}${plistProgramArguments(service)}${workingDirectory}${plistEnvironment(service.environment)} <key>RunAtLoad</key>
|
|
408
|
+
<true/>
|
|
409
|
+
${keepAlive}${plistString("StandardOutPath", launchdLogPath(service))}${plistString("StandardErrorPath", launchdLogPath(service))}</dict>
|
|
410
|
+
</plist>
|
|
411
411
|
`;
|
|
412
412
|
}
|
|
413
413
|
async function writeInitialConfig(options) {
|
|
@@ -915,21 +915,21 @@ function isRecord(value) {
|
|
|
915
915
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
916
916
|
}
|
|
917
917
|
function help() {
|
|
918
|
-
console.log(`PI WEB
|
|
919
|
-
|
|
920
|
-
Usage:
|
|
921
|
-
pi-web install [--dev] [--host 127.0.0.1] [--port 8504] [--config ~/.config/pi-web/config.json]
|
|
922
|
-
pi-web uninstall
|
|
923
|
-
pi-web start|stop|restart|status|logs
|
|
924
|
-
pi-web doctor
|
|
925
|
-
pi-web version
|
|
926
|
-
|
|
927
|
-
Recommended install:
|
|
928
|
-
npm install -g @chainingintention/pi-web-cn
|
|
929
|
-
pi-web install
|
|
930
|
-
|
|
931
|
-
Development service install from a checkout:
|
|
932
|
-
pi-web install --dev
|
|
918
|
+
console.log(`PI WEB
|
|
919
|
+
|
|
920
|
+
Usage:
|
|
921
|
+
pi-web install [--dev] [--host 127.0.0.1] [--port 8504] [--config ~/.config/pi-web/config.json]
|
|
922
|
+
pi-web uninstall
|
|
923
|
+
pi-web start|stop|restart|status|logs
|
|
924
|
+
pi-web doctor
|
|
925
|
+
pi-web version
|
|
926
|
+
|
|
927
|
+
Recommended install:
|
|
928
|
+
npm install -g @chainingintention/pi-web-cn
|
|
929
|
+
pi-web install
|
|
930
|
+
|
|
931
|
+
Development service install from a checkout:
|
|
932
|
+
pi-web install --dev
|
|
933
933
|
`);
|
|
934
934
|
}
|
|
935
935
|
async function main() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as a,J as p,$ as h,A as m,X as g,U as f,_ as v,a0 as b}from"./vendor-editor-core-B4Sq6exx.js";import{g as y,r as w,p as C,h as x,c as j,m as _,j as k,a as u}from"./vendor-editor-languages-DznYbTkJ.js";import{d as E}from"./vendor-editor-legacy-B4QLsWF8.js";import{i as H,b as O,a as S,n as d,e as P,t as L}from"./index-
|
|
1
|
+
import{w as a,J as p,$ as h,A as m,X as g,U as f,_ as v,a0 as b}from"./vendor-editor-core-B4Sq6exx.js";import{g as y,r as w,p as C,h as x,c as j,m as _,j as k,a as u}from"./vendor-editor-languages-DznYbTkJ.js";import{d as E}from"./vendor-editor-legacy-B4QLsWF8.js";import{i as H,b as O,a as S,n as d,e as P,t as L}from"./index-BZE2v69K.js";var D=Object.defineProperty,F=Object.getOwnPropertyDescriptor,i=(e,o,n,s)=>{for(var t=s>1?void 0:s?F(o,n):o,c=e.length-1,l;c>=0;c--)(l=e[c])&&(t=(s?l(o,n,t):l(t))||t);return s&&t&&D(o,n,t),t};let r=class extends H{constructor(){super(...arguments),this.content=""}firstUpdated(){this.recreateEditor()}updated(e){(e.has("content")||e.has("language"))&&this.recreateEditor()}disconnectedCallback(){this.view?.destroy(),this.view=void 0,super.disconnectedCallback()}render(){return O`<div class="host"></div>`}recreateEditor(){this.editorHost&&(this.view?.destroy(),this.view=new a({parent:this.editorHost,state:p.create({doc:this.content,extensions:[h(),m.of(g),f(v,{fallback:!0}),p.readOnly.of(!0),a.editable.of(!1),a.lineWrapping,M,...R(this.language)]})}))}};r.styles=S`
|
|
2
2
|
:host { display: block; min-height: 0; height: 100%; }
|
|
3
3
|
.host { height: 100%; min-height: 0; overflow: auto; }
|
|
4
4
|
`;i([d()],r.prototype,"content",2);i([d()],r.prototype,"language",2);i([P(".host")],r.prototype,"editorHost",2);r=i([L("code-viewer")],r);const M=a.theme({"&":{height:"100%",color:"var(--pi-text)",backgroundColor:"var(--pi-bg)",fontSize:"12px"},".cm-scroller":{fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",lineHeight:"1.45"},".cm-gutters":{backgroundColor:"var(--pi-bg)",color:"var(--pi-dim)",borderRight:"1px solid var(--pi-border-muted)"},".cm-activeLineGutter":{backgroundColor:"transparent"},".cm-activeLine":{backgroundColor:"transparent"},".cm-content":{caretColor:"transparent"},"&.cm-focused":{outline:"none"}});function R(e){if(e===void 0)return[];switch(e){case"typescript":return[u({typescript:!0})];case"javascript":return[u()];case"json":return[k()];case"markdown":return[_()];case"css":return[j()];case"html":return[x()];case"python":return[C()];case"rust":return[w()];case"go":return[y()];case"diff":return[b.define(E)];default:return[]}}export{r as CodeViewer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as E,n as m,i as R,b as l,t as K,c as h,s as L,d as w,f as _,e as F,r as c}from"./index-
|
|
1
|
+
import{a as E,n as m,i as R,b as l,t as K,c as h,s as L,d as w,f as _,e as F,r as c}from"./index-BZE2v69K.js";import{D as S,o as T}from"./vendor-terminal-DjQ08hXu.js";import"./vendor-editor-core-B4Sq6exx.js";import"./vendor-editor-languages-DznYbTkJ.js";const $="pi-web.terminal.softKeys",N="(pointer: coarse), (max-width: 760px)";function z(e,t){return e??t}function V(e){if(e==="true")return!0;if(e==="false")return!1}function P(){return typeof window<"u"&&"matchMedia"in window?window.matchMedia(N):void 0}function M(e){return e?.matches===!0}function B(e=P()){return z(O(),M(e))}function j(){return O()!==void 0}function O(e=D()){if(e!==void 0)try{return V(e.getItem($))}catch{return}}function U(e,t=D()){if(t!==void 0)try{t.setItem($,String(e))}catch{}}function D(){if(!(typeof window>"u"))try{return window.localStorage}catch{return}}const H=[{id:"escape",label:"Esc",ariaLabel:"Escape",title:"Send Escape"},{id:"tab",label:"Tab",ariaLabel:"Tab",title:"Send Tab"},{id:"ctrl-c",label:"Ctrl+C",ariaLabel:"Control C",title:"Interrupt the foreground process"},{id:"ctrl-d",label:"Ctrl+D",ariaLabel:"Control D",title:"Send EOF / close input"},{id:"ctrl-z",label:"Ctrl+Z",ariaLabel:"Control Z",title:"Suspend the foreground process"},{id:"ctrl-l",label:"Ctrl+L",ariaLabel:"Control L",title:"Clear / redraw the terminal"},{id:"ctrl-r",label:"Ctrl+R",ariaLabel:"Control R",title:"Reverse search history"},{id:"ctrl-u",label:"Ctrl+U",ariaLabel:"Control U",title:"Delete to the start of the line"},{id:"ctrl-w",label:"Ctrl+W",ariaLabel:"Control W",title:"Delete the previous word"},{id:"arrow-left",label:"←",ariaLabel:"Left arrow",title:"Move left"},{id:"arrow-up",label:"↑",ariaLabel:"Up arrow",title:"Move up / previous command"},{id:"arrow-down",label:"↓",ariaLabel:"Down arrow",title:"Move down / next command"},{id:"arrow-right",label:"→",ariaLabel:"Right arrow",title:"Move right"},{id:"home",label:"Home",ariaLabel:"Home",title:"Move to the start"},{id:"end",label:"End",ariaLabel:"End",title:"Move to the end"},{id:"page-up",label:"PgUp",ariaLabel:"Page up",title:"Page up"},{id:"page-down",label:"PgDn",ariaLabel:"Page down",title:"Page down"},{id:"delete",label:"Del",ariaLabel:"Delete",title:"Delete forward"},{id:"backspace",label:"⌫",ariaLabel:"Backspace",title:"Backspace"},{id:"meta-backward-word",label:"M-B",ariaLabel:"Meta B",title:"Move backward one word"},{id:"meta-forward-word",label:"M-F",ariaLabel:"Meta F",title:"Move forward one word"}],d="\x1B",q="";function Y(e,t){switch(e){case"escape":return d;case"tab":return" ";case"ctrl-c":return p("c");case"ctrl-d":return p("d");case"ctrl-z":return p("z");case"ctrl-l":return p("l");case"ctrl-r":return p("r");case"ctrl-u":return p("u");case"ctrl-w":return p("w");case"arrow-left":return b("D",t);case"arrow-up":return b("A",t);case"arrow-down":return b("B",t);case"arrow-right":return b("C",t);case"home":return x("H",t);case"end":return x("F",t);case"page-up":return`${d}[5~`;case"page-down":return`${d}[6~`;case"delete":return`${d}[3~`;case"backspace":return q;case"meta-backward-word":return`${d}b`;case"meta-forward-word":return`${d}f`}}function p(e){return String.fromCharCode(e.toUpperCase().charCodeAt(0)-64)}function b(e,t){return t?.applicationCursorKeysMode===!0?`${d}O${e}`:`${d}[${e}`}function x(e,t){return t?.applicationCursorKeysMode===!0?`${d}O${e}`:`${d}[${e}`}var W=Object.defineProperty,X=Object.getOwnPropertyDescriptor,y=(e,t,i,r)=>{for(var n=r>1?void 0:r?X(t,i):t,a=e.length-1,u;a>=0;a--)(u=e[a])&&(n=(r?u(t,i,n):u(n))||n);return r&&n&&W(t,i,n),n};const J=8,Z=500;let f=class extends R{constructor(){super(...arguments),this.refocusOnClick=!0,this.onInput=()=>{},this.lastPointerFinishedAt=0}sendSoftKey(e,t){this.onInput(Y(e.id,this.modes),t)}onSoftKeyPointerDown(e,t){e.pointerType==="mouse"&&e.button!==0||(e.preventDefault(),this.pointerStart={pointerId:e.pointerId,key:t,clientX:e.clientX,clientY:e.clientY})}onSoftKeyPointerMove(e){const t=this.pointerStart;t?.pointerId===e.pointerId&&I(t,e)&&this.finishSoftKeyPointer()}onSoftKeyPointerUp(e,t){const i=this.pointerStart;i?.pointerId===e.pointerId&&(e.preventDefault(),this.finishSoftKeyPointer(),!(i.key.id!==t.id||I(i,e))&&this.sendSoftKey(t,{refocus:e.pointerType==="mouse"}))}onSoftKeyPointerCancel(e){this.pointerStart?.pointerId===e.pointerId&&this.finishSoftKeyPointer()}finishSoftKeyPointer(){this.pointerStart=void 0,this.lastPointerFinishedAt=Date.now()}onSoftKeyClick(e,t){if(Date.now()-this.lastPointerFinishedAt<Z){e.preventDefault();return}this.sendSoftKey(t,{refocus:this.refocusOnClick})}render(){return l`
|
|
2
2
|
<div class="terminal-soft-keys" role="toolbar" aria-label="终端快捷键">
|
|
3
3
|
${H.map(e=>l`
|
|
4
4
|
<button
|