@jmfederico/pi-web 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/README.md +37 -13
- package/dist/cli.js +6 -4
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/{CodeViewer-iYSv2-dg.js → CodeViewer-Bv8l_MFi.js} +1 -1
- package/dist/client/assets/{TerminalPanel-BpFW6j27.js → TerminalPanel-BZKsaE9s.js} +12 -8
- package/dist/client/assets/{index-D4dbiKXF.js → index-C9oPLpm7.js} +399 -201
- package/dist/client/assets/{vendor-editor-core-B4Sq6exx.js → vendor-editor-core-Bc1A7SO7.js} +4 -4
- package/dist/client/assets/{vendor-editor-languages-DznYbTkJ.js → vendor-editor-languages-D0CnB2js.js} +3 -3
- package/dist/client/index.html +3 -3
- package/dist/config.js +91 -3
- package/dist/config.js.map +1 -1
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +52 -56
- package/dist/pi-web-plugins/updates/updatesLogic.js +65 -0
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +1 -5
- package/dist/server/app.js +15 -11
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +42 -0
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/piWebStatus.js +15 -6
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/sessiond.js +17 -2
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/attachmentService.js +61 -0
- package/dist/server/sessions/attachmentService.js.map +1 -0
- package/dist/server/sessions/piSessionManagerGateway.js +2 -2
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +294 -20
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +5 -1
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +28 -4
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/spawnSessionTool.js +36 -0
- package/dist/server/sessions/spawnSessionTool.js.map +1 -0
- package/dist/server/sessions/spawnSubsessionTool.js +166 -0
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -0
- package/dist/server/sessions/spawnTargetResolver.js +36 -0
- package/dist/server/sessions/spawnTargetResolver.js.map +1 -0
- package/dist/server/sessions/subsessionTranscript.js +235 -0
- package/dist/server/sessions/subsessionTranscript.js.map +1 -0
- package/dist/server/workspaceExplorerRoutes.js +19 -4
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/effectivePathAccess.js +27 -0
- package/dist/server/workspaces/effectivePathAccess.js.map +1 -0
- package/dist/server/workspaces/fileContentService.js +6 -6
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/fileSuggestions.js +311 -23
- package/dist/server/workspaces/fileSuggestions.js.map +1 -1
- package/dist/server/workspaces/fileTreeService.js +16 -7
- package/dist/server/workspaces/fileTreeService.js.map +1 -1
- package/dist/server/workspaces/imagePreviewService.js +5 -5
- package/dist/server/workspaces/imagePreviewService.js.map +1 -1
- package/dist/server/workspaces/pathAccessPolicy.js +90 -0
- package/dist/server/workspaces/pathAccessPolicy.js.map +1 -0
- package/dist/server/workspaces/pathSafety.js +0 -15
- package/dist/server/workspaces/pathSafety.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +56 -0
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -0
- package/dist/shared/apiTypes.d.ts +55 -3
- package/dist/shared/apiTypes.js +3 -0
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +5 -2
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +3 -0
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/piWebStatusParsing.js +0 -15
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/promptAttachments.js +73 -0
- package/dist/shared/promptAttachments.js.map +1 -0
- package/dist/shared/thinkingLevels.d.ts +27 -0
- package/dist/shared/thinkingLevels.js +31 -0
- package/dist/shared/thinkingLevels.js.map +1 -0
- package/dist/shared/workspaceDeletion.js +1 -1
- package/dist/shared/workspaceDeletion.js.map +1 -1
- package/docs/assets/pi-web-desktop.png +0 -0
- package/docs/assets/pi-web-mobile.png +0 -0
- package/docs/assets/pi-web-tablet.png +0 -0
- package/docs/config.md +166 -0
- package/docs/plugins.md +3 -3
- package/package.json +27 -14
- package/docs/assets/pi-web-demo.gif +0 -0
- package/docs/assets/pi-web-demo.webm +0 -0
package/dist/client/index.html
CHANGED
|
@@ -50,9 +50,9 @@
|
|
|
50
50
|
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
|
|
51
51
|
body { min-height: 100dvh; }
|
|
52
52
|
</style>
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
54
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-core-
|
|
55
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-languages-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-C9oPLpm7.js"></script>
|
|
54
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-core-Bc1A7SO7.js">
|
|
55
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-languages-D0CnB2js.js">
|
|
56
56
|
</head>
|
|
57
57
|
<body>
|
|
58
58
|
<pi-web-app></pi-web-app>
|
package/dist/config.js
CHANGED
|
@@ -9,6 +9,23 @@ export function defaultPiWebConfigPath(env = process.env) {
|
|
|
9
9
|
export function defaultPiWebDataDir() {
|
|
10
10
|
return join(homedir(), ".pi-web");
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Default maximum HTTP body size (bytes) for the web/API and session daemon.
|
|
14
|
+
* Generous headroom for base64 image attachments (well above pi's 4.5MB
|
|
15
|
+
* per-image inline limit so several images fit in one request).
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_MAX_UPLOAD_BYTES = 64 * 1024 * 1024;
|
|
18
|
+
export function maxUploadBytes(env = process.env, config = {}) {
|
|
19
|
+
const fromEnv = env["PI_WEB_MAX_UPLOAD_BYTES"];
|
|
20
|
+
if (fromEnv !== undefined && fromEnv !== "") {
|
|
21
|
+
const parsed = Number(fromEnv);
|
|
22
|
+
if (Number.isInteger(parsed) && parsed > 0)
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
25
|
+
if (config.maxUploadBytes !== undefined)
|
|
26
|
+
return config.maxUploadBytes;
|
|
27
|
+
return DEFAULT_MAX_UPLOAD_BYTES;
|
|
28
|
+
}
|
|
12
29
|
export function piWebDataDir(env = process.env, cwd = process.cwd()) {
|
|
13
30
|
const configured = env["PI_WEB_DATA_DIR"];
|
|
14
31
|
if (configured === undefined || configured === "")
|
|
@@ -37,6 +54,7 @@ export function effectivePiWebConfig(options = {}) {
|
|
|
37
54
|
const host = env["PI_WEB_HOST"];
|
|
38
55
|
const port = env["PI_WEB_PORT"] ?? env["PORT"];
|
|
39
56
|
const allowedHosts = env["PI_WEB_ALLOWED_HOSTS"];
|
|
57
|
+
const maxUpload = env["PI_WEB_MAX_UPLOAD_BYTES"];
|
|
40
58
|
return {
|
|
41
59
|
...loaded,
|
|
42
60
|
config: {
|
|
@@ -44,6 +62,12 @@ export function effectivePiWebConfig(options = {}) {
|
|
|
44
62
|
...(host !== undefined && host !== "" ? { host } : {}),
|
|
45
63
|
...(port !== undefined && port !== "" ? { port: parsePort(port, "PI_WEB_PORT") } : {}),
|
|
46
64
|
...(allowedHosts !== undefined && allowedHosts !== "" ? { allowedHosts: parseAllowedHostsEnv(allowedHosts) } : {}),
|
|
65
|
+
...(maxUpload !== undefined && maxUpload !== "" ? { maxUploadBytes: parseMaxUploadBytes(maxUpload, "PI_WEB_MAX_UPLOAD_BYTES") } : {}),
|
|
66
|
+
// Always resolved (on by default) so the effective config is the single
|
|
67
|
+
// source of truth for the runtime state and the settings UI toggle.
|
|
68
|
+
spawnSessions: spawnSessionsEnabled(env, loaded.config),
|
|
69
|
+
// Beta capability, resolved off by default.
|
|
70
|
+
subsessions: subsessionsEnabled(env, loaded.config),
|
|
47
71
|
},
|
|
48
72
|
};
|
|
49
73
|
}
|
|
@@ -57,6 +81,10 @@ export function savePiWebConfig(config, options = {}) {
|
|
|
57
81
|
delete existing["allowedHosts"];
|
|
58
82
|
delete existing["shortcuts"];
|
|
59
83
|
delete existing["plugins"];
|
|
84
|
+
delete existing["pathAccess"];
|
|
85
|
+
delete existing["maxUploadBytes"];
|
|
86
|
+
delete existing["spawnSessions"];
|
|
87
|
+
delete existing["subsessions"];
|
|
60
88
|
const merged = { ...existing, ...piWebConfigRecord(normalized) };
|
|
61
89
|
mkdirSync(dirname(path), { recursive: true });
|
|
62
90
|
writeFileSync(path, `${JSON.stringify(merged, null, 2)}\n`, "utf8");
|
|
@@ -77,6 +105,10 @@ function piWebConfigRecord(config) {
|
|
|
77
105
|
...(config.allowedHosts !== undefined ? { allowedHosts: config.allowedHosts } : {}),
|
|
78
106
|
...(config.shortcuts !== undefined ? { shortcuts: config.shortcuts } : {}),
|
|
79
107
|
...(config.plugins !== undefined ? { plugins: config.plugins } : {}),
|
|
108
|
+
...(config.pathAccess !== undefined ? { pathAccess: config.pathAccess } : {}),
|
|
109
|
+
...(config.maxUploadBytes !== undefined ? { maxUploadBytes: config.maxUploadBytes } : {}),
|
|
110
|
+
...(config.spawnSessions !== undefined ? { spawnSessions: config.spawnSessions } : {}),
|
|
111
|
+
...(config.subsessions !== undefined ? { subsessions: config.subsessions } : {}),
|
|
80
112
|
};
|
|
81
113
|
}
|
|
82
114
|
function parsePiWebConfig(value, path) {
|
|
@@ -86,8 +118,54 @@ function parsePiWebConfig(value, path) {
|
|
|
86
118
|
...(value["allowedHosts"] !== undefined ? { allowedHosts: parseAllowedHosts(value["allowedHosts"], path) } : {}),
|
|
87
119
|
...(value["shortcuts"] !== undefined ? { shortcuts: parseShortcuts(value["shortcuts"], path) } : {}),
|
|
88
120
|
...(value["plugins"] !== undefined ? { plugins: parsePlugins(value["plugins"], path) } : {}),
|
|
121
|
+
...(value["pathAccess"] !== undefined ? { pathAccess: parsePathAccessConfig(value["pathAccess"], path) } : {}),
|
|
122
|
+
...(value["maxUploadBytes"] !== undefined ? { maxUploadBytes: parseMaxUploadBytes(value["maxUploadBytes"], "maxUploadBytes", path) } : {}),
|
|
123
|
+
...(value["spawnSessions"] !== undefined ? { spawnSessions: parseSpawnSessions(value["spawnSessions"], path) } : {}),
|
|
124
|
+
...(value["subsessions"] !== undefined ? { subsessions: parseSubsessions(value["subsessions"], path) } : {}),
|
|
89
125
|
};
|
|
90
126
|
}
|
|
127
|
+
function parseMaxUploadBytes(value, key, path = "environment") {
|
|
128
|
+
const bytes = typeof value === "number" ? value : typeof value === "string" && value !== "" ? Number(value) : NaN;
|
|
129
|
+
if (!Number.isInteger(bytes) || bytes < 1)
|
|
130
|
+
throw new Error(`PI WEB config ${key} must be a positive integer: ${path}`);
|
|
131
|
+
return bytes;
|
|
132
|
+
}
|
|
133
|
+
function parseSpawnSessions(value, path) {
|
|
134
|
+
if (typeof value !== "boolean")
|
|
135
|
+
throw new Error(`PI WEB config spawnSessions must be a boolean: ${path}`);
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Whether LLMs may start new sessions via the spawn_session tool. On by default
|
|
140
|
+
* (spawned sessions appear in the session list, so humans notice them); set the
|
|
141
|
+
* env var `PI_WEB_SPAWN_SESSIONS` or the `spawnSessions` config key to `false`
|
|
142
|
+
* to disable. The env var takes precedence over the config file.
|
|
143
|
+
*/
|
|
144
|
+
export function spawnSessionsEnabled(env = process.env, config = {}) {
|
|
145
|
+
const fromEnv = env["PI_WEB_SPAWN_SESSIONS"];
|
|
146
|
+
if (fromEnv !== undefined && fromEnv !== "")
|
|
147
|
+
return fromEnv === "1" || fromEnv.toLowerCase() === "true";
|
|
148
|
+
return config.spawnSessions ?? true;
|
|
149
|
+
}
|
|
150
|
+
function parseSubsessions(value, path) {
|
|
151
|
+
if (typeof value !== "boolean")
|
|
152
|
+
throw new Error(`PI WEB config subsessions must be a boolean: ${path}`);
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Beta: whether LLMs may start tracked child sessions via the spawn_subsession
|
|
157
|
+
* family of tools. Off by default while the capability stabilizes, so it can
|
|
158
|
+
* ship in main without affecting releases; enable with the env var
|
|
159
|
+
* `PI_WEB_SUBSESSIONS` or the `subsessions` config key. The env var takes
|
|
160
|
+
* precedence over the config file. Subsessions also require spawnSessions to be
|
|
161
|
+
* enabled (they share the same project-scope resolver).
|
|
162
|
+
*/
|
|
163
|
+
export function subsessionsEnabled(env = process.env, config = {}) {
|
|
164
|
+
const fromEnv = env["PI_WEB_SUBSESSIONS"];
|
|
165
|
+
if (fromEnv !== undefined && fromEnv !== "")
|
|
166
|
+
return fromEnv === "1" || fromEnv.toLowerCase() === "true";
|
|
167
|
+
return config.subsessions ?? false;
|
|
168
|
+
}
|
|
91
169
|
function parseString(value, key, path) {
|
|
92
170
|
if (typeof value !== "string" || value === "")
|
|
93
171
|
throw new Error(`PI WEB config ${key} must be a non-empty string: ${path}`);
|
|
@@ -112,6 +190,19 @@ function parseAllowedHostsEnv(value) {
|
|
|
112
190
|
return true;
|
|
113
191
|
return value.split(",").map((host) => host.trim()).filter((host) => host !== "");
|
|
114
192
|
}
|
|
193
|
+
export function parsePathAccessConfig(value, path) {
|
|
194
|
+
if (!isRecord(value))
|
|
195
|
+
throw new Error(`PI WEB config pathAccess must be an object: ${path}`);
|
|
196
|
+
const allowedPaths = value["allowedPaths"];
|
|
197
|
+
return {
|
|
198
|
+
...(allowedPaths !== undefined ? { allowedPaths: parseAllowedPaths(allowedPaths, path) } : {}),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function parseAllowedPaths(value, path) {
|
|
202
|
+
if (!isNonEmptyStringArray(value))
|
|
203
|
+
throw new Error(`PI WEB config pathAccess.allowedPaths must be an array of non-empty strings: ${path}`);
|
|
204
|
+
return value;
|
|
205
|
+
}
|
|
115
206
|
function parseShortcuts(value, path) {
|
|
116
207
|
if (!isRecord(value))
|
|
117
208
|
throw new Error(`PI WEB config shortcuts must be an object: ${path}`);
|
|
@@ -148,7 +239,4 @@ function isNonEmptyStringArray(value) {
|
|
|
148
239
|
export function examplePiWebConfig(config = {}) {
|
|
149
240
|
return `${JSON.stringify({ host: config.host ?? "127.0.0.1", port: config.port ?? 8504, allowedHosts: config.allowedHosts ?? [] }, null, 2)}\n`;
|
|
150
241
|
}
|
|
151
|
-
export function piWebConfigDir(env = process.env) {
|
|
152
|
-
return dirname(defaultPiWebConfigPath(env));
|
|
153
|
-
}
|
|
154
242
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAe9E,MAAM,UAAU,sBAAsB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACzE,MAAM,aAAa,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACzI,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,SAAsB,EAAE;IAC3F,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC;IACtE,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpF,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,mBAAmB,EAAE,CAAC;IAChF,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACtF,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAuB,EAAE;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAElE,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IAEvF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAuB,EAAE;IAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEjD,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,MAAM,CAAC,MAAM;YAChB,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClH,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,mBAAmB,CAAC,SAAS,EAAE,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrI,wEAAwE;YACxE,oEAAoE;YACpE,aAAa,EAAE,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;YACvD,4CAA4C;YAC5C,WAAW,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;SACpD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAmB,EAAE,UAAuB,EAAE;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;IACjE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmB;IAC5C,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B,EAAE,IAAY;IACpE,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1I,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpH,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7G,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,GAAW,EAAE,IAAI,GAAG,aAAa;IAC5E,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACvH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,IAAY;IACtD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;IAC1G,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,SAAsB,EAAE;IACjG,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACxG,OAAO,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,IAAY;IACpD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;IACxG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,SAAsB,EAAE;IAC/F,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACxG,OAAO,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,GAAW,EAAE,IAAY;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC3H,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,GAAW,EAAE,IAAI,GAAG,aAAa;IAClE,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,wCAAwC,IAAI,EAAE,CAAC,CAAC;IAC7I,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,IAAY;IACrD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,6EAA6E,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,IAAY;IAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO;QACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/F,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,IAAY;IACrD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gFAAgF,IAAI,EAAE,CAAC,CAAC;IAC3I,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,IAAY;IAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC3E,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,oEAAoE,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,IAAY;IAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;IAClH,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;QACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,oBAAoB,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/H,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;QACzH,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,EAAE,CAAC,CAAC;QAC5I,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;QAC1J,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAsB,EAAE;IACzD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClJ,CAAC"}
|
|
@@ -1,41 +1,14 @@
|
|
|
1
1
|
// Generated from pi-web-plugins/updates/pi-web-plugin.ts. Do not edit directly.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return installation === undefined || installation.kind === "local" || installation.kind === "unknown";
|
|
13
|
-
}
|
|
14
|
-
function shouldShowUpdatesPanel(state) {
|
|
15
|
-
const status = statusFor(state);
|
|
16
|
-
if (messageCount(state) > 0)
|
|
17
|
-
return true;
|
|
18
|
-
if (status === undefined)
|
|
19
|
-
return false;
|
|
20
|
-
return isLocalOrUnknownInstallation(status.components.web.installation)
|
|
21
|
-
|| isLocalOrUnknownInstallation(status.components.sessiond.installation);
|
|
22
|
-
}
|
|
23
|
-
function formatVersion(version) {
|
|
24
|
-
return version === undefined || version === "" ? "unknown" : version;
|
|
25
|
-
}
|
|
26
|
-
function installationLabel(installation) {
|
|
27
|
-
if (installation === undefined)
|
|
28
|
-
return "installation unknown";
|
|
29
|
-
if (installation.kind === "pi-package") {
|
|
30
|
-
const scope = installation.scope === undefined ? "" : ` · ${installation.scope}`;
|
|
31
|
-
const source = installation.source ?? "Pi package";
|
|
32
|
-
return `${source}${scope}`;
|
|
33
|
-
}
|
|
34
|
-
if (installation.kind === "npm-global")
|
|
35
|
-
return "global npm package";
|
|
36
|
-
if (installation.kind === "local")
|
|
37
|
-
return "local checkout";
|
|
38
|
-
return "installation unknown";
|
|
2
|
+
import { additionalCommands, formatVersion, installationLabel, messageCount, recommendedCommand, shouldShowUpdatesPanel, statusFor } from "./updatesLogic.js";
|
|
3
|
+
function runCommandInTerminal(terminal, label, command) {
|
|
4
|
+
void terminal.runCommand({
|
|
5
|
+
title: label,
|
|
6
|
+
command,
|
|
7
|
+
open: true,
|
|
8
|
+
metadata: { "pi.plugin": "updates" },
|
|
9
|
+
}).catch((error) => {
|
|
10
|
+
console.error(`Updates plugin failed to run "${label}"`, error);
|
|
11
|
+
});
|
|
39
12
|
}
|
|
40
13
|
function renderComponent(html, component) {
|
|
41
14
|
const status = !component.available
|
|
@@ -52,33 +25,46 @@ function renderComponent(html, component) {
|
|
|
52
25
|
</div>
|
|
53
26
|
`;
|
|
54
27
|
}
|
|
55
|
-
function
|
|
28
|
+
function renderCommandActions(html, terminal, label, command) {
|
|
29
|
+
return html `
|
|
30
|
+
<span class="updates-command-actions">
|
|
31
|
+
<button @click=${() => { void navigator.clipboard.writeText(command); }}>Copy</button>
|
|
32
|
+
${terminal === undefined ? null : html `<button class="primary" @click=${() => { runCommandInTerminal(terminal, label, command); }}>Run</button>`}
|
|
33
|
+
</span>
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
36
|
+
function renderCommand(html, terminal, label, command) {
|
|
56
37
|
return html `
|
|
57
38
|
<div class="updates-command">
|
|
58
39
|
<span>${label}</span>
|
|
59
40
|
<code>${command}</code>
|
|
60
|
-
|
|
41
|
+
${renderCommandActions(html, terminal, label, command)}
|
|
61
42
|
</div>
|
|
62
43
|
`;
|
|
63
44
|
}
|
|
64
|
-
function renderCommands(html, status) {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
["Restart Web/UI", status.commands.restartWeb],
|
|
69
|
-
["Restart session daemon", status.commands.restartSessiond],
|
|
70
|
-
["Status", status.commands.status],
|
|
71
|
-
].filter((entry) => typeof entry[1] === "string" && entry[1] !== "");
|
|
72
|
-
if (commands.length === 0)
|
|
45
|
+
function renderCommands(html, terminal, status) {
|
|
46
|
+
const recommended = recommendedCommand(status);
|
|
47
|
+
const additional = additionalCommands(status, recommended);
|
|
48
|
+
if (recommended === undefined && additional.length === 0)
|
|
73
49
|
return undefined;
|
|
74
50
|
return html `
|
|
75
|
-
|
|
76
|
-
<
|
|
77
|
-
|
|
78
|
-
|
|
51
|
+
${recommended === undefined ? null : html `
|
|
52
|
+
<section class="updates-recommended">
|
|
53
|
+
<strong>Recommended</strong>
|
|
54
|
+
<p class="muted">Run this one command to bring this installation fully up to date. Nothing else is required.</p>
|
|
55
|
+
${renderCommand(html, terminal, recommended.label, recommended.command)}
|
|
56
|
+
</section>
|
|
57
|
+
`}
|
|
58
|
+
${additional.length === 0 ? null : html `
|
|
59
|
+
<section>
|
|
60
|
+
<strong>${recommended === undefined ? "Suggested commands" : "Additional commands (optional)"}</strong>
|
|
61
|
+
${recommended === undefined ? null : html `<p class="muted">Only needed for finer control, such as restarting a single service.</p>`}
|
|
62
|
+
${additional.map((entry) => renderCommand(html, terminal, entry.label, entry.command))}
|
|
63
|
+
</section>
|
|
64
|
+
`}
|
|
79
65
|
`;
|
|
80
66
|
}
|
|
81
|
-
function renderUpdatesPanel(html, state) {
|
|
67
|
+
function renderUpdatesPanel(html, terminal, state) {
|
|
82
68
|
const status = statusFor(state);
|
|
83
69
|
if (status === undefined) {
|
|
84
70
|
return html `
|
|
@@ -100,6 +86,11 @@ function renderUpdatesPanel(html, state) {
|
|
|
100
86
|
.updates-version-row small { grid-column: 1 / -1; color: var(--pi-muted); }
|
|
101
87
|
.updates-command { min-width: 0; display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
|
|
102
88
|
.updates-command code { overflow: auto; border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); padding: 5px 7px; white-space: nowrap; }
|
|
89
|
+
.updates-command-inline { grid-template-columns: minmax(0, 1fr) auto; }
|
|
90
|
+
.updates-command-actions { display: inline-flex; gap: 6px; }
|
|
91
|
+
.updates-command-actions button.primary { border-color: var(--pi-accent-border); color: var(--pi-text-bright); }
|
|
92
|
+
.updates-recommended { border: 1px solid var(--pi-accent-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
|
|
93
|
+
.updates-recommended > strong { color: var(--pi-text-bright); }
|
|
103
94
|
.updates-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; }
|
|
104
95
|
@media (max-width: 520px) {
|
|
105
96
|
.updates-command { grid-template-columns: minmax(0, 1fr) auto; }
|
|
@@ -113,7 +104,12 @@ function renderUpdatesPanel(html, state) {
|
|
|
113
104
|
<article class=${`updates-message ${message.severity}`}>
|
|
114
105
|
<div class="updates-message-title"><strong>${message.title}</strong><span>${message.severity}</span></div>
|
|
115
106
|
<p>${message.body}</p>
|
|
116
|
-
${message.command === undefined ? null : html
|
|
107
|
+
${message.command === undefined ? null : html `
|
|
108
|
+
<div class="updates-command updates-command-inline">
|
|
109
|
+
<code>${message.command}</code>
|
|
110
|
+
${renderCommandActions(html, terminal, message.title, message.command)}
|
|
111
|
+
</div>
|
|
112
|
+
`}
|
|
117
113
|
</article>
|
|
118
114
|
`)}
|
|
119
115
|
</section>
|
|
@@ -124,7 +120,7 @@ function renderUpdatesPanel(html, state) {
|
|
|
124
120
|
${renderComponent(html, status.components.sessiond)}
|
|
125
121
|
</section>
|
|
126
122
|
|
|
127
|
-
${renderCommands(html, status)}
|
|
123
|
+
${renderCommands(html, terminal, status)}
|
|
128
124
|
|
|
129
125
|
<section class="updates-meta">
|
|
130
126
|
<span>Generated ${status.generatedAt}</span>
|
|
@@ -158,7 +154,7 @@ const plugin = {
|
|
|
158
154
|
const count = messageCount(context.state);
|
|
159
155
|
return html `beta${count > 0 ? html ` · ${String(count)}` : null}`;
|
|
160
156
|
},
|
|
161
|
-
render: (context) => renderUpdatesPanel(html, context.state),
|
|
157
|
+
render: (context) => renderUpdatesPanel(html, context.terminal, context.state),
|
|
162
158
|
},
|
|
163
159
|
],
|
|
164
160
|
},
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Generated from pi-web-plugins/updates/updatesLogic.ts. Do not edit directly.
|
|
2
|
+
// The single command users should run when they do not want to think: if an
|
|
3
|
+
// update is available, `commands.update` already chains the update and a full
|
|
4
|
+
// restart; otherwise, when anything is stale, a full restart is enough.
|
|
5
|
+
export function recommendedCommand(status) {
|
|
6
|
+
const { commands, release, components } = status;
|
|
7
|
+
if (release.updateAvailable && typeof commands.update === "string" && commands.update !== "") {
|
|
8
|
+
return { label: "Update & restart everything", command: commands.update };
|
|
9
|
+
}
|
|
10
|
+
const restartNeeded = components.web.stale || components.sessiond.stale || !components.sessiond.available;
|
|
11
|
+
if (restartNeeded && typeof commands.restart === "string" && commands.restart !== "") {
|
|
12
|
+
return { label: "Restart everything", command: commands.restart };
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
export function additionalCommands(status, recommended) {
|
|
17
|
+
return [
|
|
18
|
+
["Update", status.commands.update],
|
|
19
|
+
["Restart all", status.commands.restart],
|
|
20
|
+
["Restart Web/UI", status.commands.restartWeb],
|
|
21
|
+
["Restart session daemon", status.commands.restartSessiond],
|
|
22
|
+
["Status", status.commands.status],
|
|
23
|
+
]
|
|
24
|
+
.filter((entry) => typeof entry[1] === "string" && entry[1] !== "")
|
|
25
|
+
.filter(([, command]) => command !== recommended?.command)
|
|
26
|
+
.map(([label, command]) => ({ label, command }));
|
|
27
|
+
}
|
|
28
|
+
export function messagesFor(state) {
|
|
29
|
+
return state?.piWebStatus?.messages ?? [];
|
|
30
|
+
}
|
|
31
|
+
export function statusFor(state) {
|
|
32
|
+
return state?.piWebStatus;
|
|
33
|
+
}
|
|
34
|
+
export function messageCount(state) {
|
|
35
|
+
return messagesFor(state).length;
|
|
36
|
+
}
|
|
37
|
+
export function isLocalOrUnknownInstallation(installation) {
|
|
38
|
+
return installation === undefined || installation.kind === "local" || installation.kind === "unknown";
|
|
39
|
+
}
|
|
40
|
+
export function shouldShowUpdatesPanel(state) {
|
|
41
|
+
const status = statusFor(state);
|
|
42
|
+
if (messageCount(state) > 0)
|
|
43
|
+
return true;
|
|
44
|
+
if (status === undefined)
|
|
45
|
+
return false;
|
|
46
|
+
return isLocalOrUnknownInstallation(status.components.web.installation)
|
|
47
|
+
|| isLocalOrUnknownInstallation(status.components.sessiond.installation);
|
|
48
|
+
}
|
|
49
|
+
export function formatVersion(version) {
|
|
50
|
+
return version === undefined || version === "" ? "unknown" : version;
|
|
51
|
+
}
|
|
52
|
+
export function installationLabel(installation) {
|
|
53
|
+
if (installation === undefined)
|
|
54
|
+
return "installation unknown";
|
|
55
|
+
if (installation.kind === "pi-package") {
|
|
56
|
+
const scope = installation.scope === undefined ? "" : ` · ${installation.scope}`;
|
|
57
|
+
const source = installation.source ?? "Pi package";
|
|
58
|
+
return `${source}${scope}`;
|
|
59
|
+
}
|
|
60
|
+
if (installation.kind === "npm-global")
|
|
61
|
+
return "global npm package";
|
|
62
|
+
if (installation.kind === "local")
|
|
63
|
+
return "local checkout";
|
|
64
|
+
return "installation unknown";
|
|
65
|
+
}
|
|
@@ -11,11 +11,7 @@ export function defineTasksPanelElement() {
|
|
|
11
11
|
}
|
|
12
12
|
export function tasksPanelBadge(context) {
|
|
13
13
|
const state = getCachedWorkspaceConfig(context);
|
|
14
|
-
|
|
15
|
-
return "!";
|
|
16
|
-
if (state?.kind === "loaded" && state.config.tasks.length > 0)
|
|
17
|
-
return state.config.tasks.length;
|
|
18
|
-
return undefined;
|
|
14
|
+
return state?.kind === "unavailable" ? "!" : undefined;
|
|
19
15
|
}
|
|
20
16
|
class PiWebTasksPanel extends HTMLElement {
|
|
21
17
|
contextValue;
|
package/dist/server/app.js
CHANGED
|
@@ -7,7 +7,8 @@ import fastifyWebsocket from "@fastify/websocket";
|
|
|
7
7
|
import { ProjectStore } from "./storage/projectStore.js";
|
|
8
8
|
import { ProjectService } from "./projects/projectService.js";
|
|
9
9
|
import { WorkspaceService } from "./workspaces/workspaceService.js";
|
|
10
|
-
import { listFileSuggestions, listPathSuggestions } from "./workspaces/fileSuggestions.js";
|
|
10
|
+
import { isAbsoluteishFileSuggestionQuery, listFileSuggestions, listPathSuggestions } from "./workspaces/fileSuggestions.js";
|
|
11
|
+
import { pathAccessForCwd } from "./workspaces/effectivePathAccess.js";
|
|
11
12
|
import { normalizeRequestCwd } from "./workingDirectory.js";
|
|
12
13
|
import { listDirectorySuggestions } from "./projects/directorySuggestions.js";
|
|
13
14
|
import { SessionDaemonClient } from "../sessiond/sessionDaemonClient.js";
|
|
@@ -16,7 +17,7 @@ import { registerWorkspaceExplorerRoutes } from "./workspaceExplorerRoutes.js";
|
|
|
16
17
|
import { registerGitRoutes } from "./gitRoutes.js";
|
|
17
18
|
import { registerTerminalProxyRoutes } from "./terminalProxyRoutes.js";
|
|
18
19
|
import { registerWorkspaceDeletionRoutes } from "./workspaces/workspaceDeletionRoutes.js";
|
|
19
|
-
import { registerConfigRoutes } from "./configRoutes.js";
|
|
20
|
+
import { createFilePiWebConfigService, registerConfigRoutes } from "./configRoutes.js";
|
|
20
21
|
import { PiWebPluginService } from "./piWebPluginService.js";
|
|
21
22
|
import { createPiWebStatusCache } from "./piWebStatusCache.js";
|
|
22
23
|
import { getPiWebRuntime, getPiWebStatus, getPiWebVersionStatus } from "./piWebStatus.js";
|
|
@@ -61,15 +62,17 @@ function registerLocalProjectRoutes(app, projects, workspaces, prefix) {
|
|
|
61
62
|
}
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
function registerLocalFileSuggestionRoutes(app, prefix) {
|
|
65
|
+
function registerLocalFileSuggestionRoutes(app, projects, workspaces, prefix, options = {}) {
|
|
65
66
|
app.get(`${prefix}/files`, async (request, reply) => {
|
|
66
67
|
if (request.query.cwd === undefined || request.query.cwd === "")
|
|
67
68
|
return reply.code(400).send({ error: "cwd query parameter is required" });
|
|
68
69
|
try {
|
|
69
70
|
const cwd = normalizeRequestCwd(request.query.cwd);
|
|
71
|
+
const query = request.query.q ?? "";
|
|
72
|
+
const pathAccess = isAbsoluteishFileSuggestionQuery(query) ? await pathAccessForCwd(cwd, projects, workspaces, options.config) : undefined;
|
|
70
73
|
if (request.query.mode === "path")
|
|
71
|
-
return await listPathSuggestions(cwd,
|
|
72
|
-
return await listFileSuggestions(cwd,
|
|
74
|
+
return await listPathSuggestions(cwd, query, pathAccess);
|
|
75
|
+
return await listFileSuggestions(cwd, query, { kind: request.query.kind, scope: request.query.scope, pathAccess });
|
|
73
76
|
}
|
|
74
77
|
catch (error) {
|
|
75
78
|
return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
|
|
@@ -77,11 +80,12 @@ function registerLocalFileSuggestionRoutes(app, prefix) {
|
|
|
77
80
|
});
|
|
78
81
|
}
|
|
79
82
|
export async function buildApp(deps = {}) {
|
|
80
|
-
const app = Fastify({ logger: deps.logger ?? true });
|
|
83
|
+
const app = Fastify({ logger: deps.logger ?? true, ...(deps.bodyLimit === undefined ? {} : { bodyLimit: deps.bodyLimit }) });
|
|
81
84
|
await app.register(fastifyWebsocket);
|
|
82
85
|
const projects = deps.projects ?? new ProjectService(new ProjectStore());
|
|
83
86
|
const workspaces = deps.workspaces ?? new WorkspaceService();
|
|
84
87
|
const piWebPlugins = deps.piWebPlugins ?? new PiWebPluginService();
|
|
88
|
+
const configService = deps.config ?? createFilePiWebConfigService();
|
|
85
89
|
const sessionDaemon = deps.sessionDaemon ?? new SessionDaemonClient();
|
|
86
90
|
const piWebStatusCache = createPiWebStatusCache(() => getPiWebStatus(sessionDaemon), {
|
|
87
91
|
onError: (error) => { app.log.warn({ err: error }, "failed to refresh PI WEB status cache"); },
|
|
@@ -102,23 +106,23 @@ export async function buildApp(deps = {}) {
|
|
|
102
106
|
app.get("/api/pi-web/version", async () => getPiWebVersionStatus(sessionDaemon));
|
|
103
107
|
app.get("/api/pi-web/runtime", async () => getPiWebRuntime(sessionDaemon));
|
|
104
108
|
app.get("/api/plugins", async () => piWebPlugins.plugins());
|
|
105
|
-
registerConfigRoutes(app,
|
|
109
|
+
registerConfigRoutes(app, configService);
|
|
106
110
|
registerMachineRoutes(app, machines);
|
|
107
111
|
registerMachinePluginProxyRoutes(app, machines);
|
|
108
112
|
registerLocalProjectRoutes(app, projects, workspaces, "/api");
|
|
109
113
|
registerLocalProjectRoutes(app, projects, workspaces, "/api/machines/local");
|
|
110
114
|
registerSessionProxyRoutes(app, sessionDaemon);
|
|
111
115
|
registerSessionProxyRoutes(app, sessionDaemon, "/api/machines/local");
|
|
112
|
-
registerWorkspaceExplorerRoutes(app, projects, workspaces);
|
|
113
|
-
registerWorkspaceExplorerRoutes(app, projects, workspaces, "/api/machines/local");
|
|
116
|
+
registerWorkspaceExplorerRoutes(app, projects, workspaces, "/api", { config: configService });
|
|
117
|
+
registerWorkspaceExplorerRoutes(app, projects, workspaces, "/api/machines/local", { config: configService });
|
|
114
118
|
registerGitRoutes(app, projects, workspaces);
|
|
115
119
|
registerGitRoutes(app, projects, workspaces, "/api/machines/local");
|
|
116
120
|
registerTerminalProxyRoutes(app, projects, workspaces, sessionDaemon);
|
|
117
121
|
registerTerminalProxyRoutes(app, projects, workspaces, sessionDaemon, "/api/machines/local");
|
|
118
122
|
registerWorkspaceDeletionRoutes(app, projects, workspaces, sessionDaemon);
|
|
119
123
|
registerWorkspaceDeletionRoutes(app, projects, workspaces, sessionDaemon, "/api/machines/local");
|
|
120
|
-
registerLocalFileSuggestionRoutes(app, "/api");
|
|
121
|
-
registerLocalFileSuggestionRoutes(app, "/api/machines/local");
|
|
124
|
+
registerLocalFileSuggestionRoutes(app, projects, workspaces, "/api", { config: configService });
|
|
125
|
+
registerLocalFileSuggestionRoutes(app, projects, workspaces, "/api/machines/local", { config: configService });
|
|
122
126
|
registerMachineProxyRoutes(app, machines);
|
|
123
127
|
const packagedClientDist = join(dirname(fileURLToPath(import.meta.url)), "..", "client");
|
|
124
128
|
const clientDist = deps.clientDist ?? (existsSync(packagedClientDist) ? packagedClientDist : join(process.cwd(), "dist", "client"));
|
package/dist/server/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,OAA4D,MAAM,SAAS,CAAC;AACnF,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,10 @@ function parseConfigRequest(value) {
|
|
|
49
49
|
const allowedHosts = value["allowedHosts"];
|
|
50
50
|
const shortcuts = value["shortcuts"];
|
|
51
51
|
const plugins = value["plugins"];
|
|
52
|
+
const pathAccess = value["pathAccess"];
|
|
53
|
+
const maxUploadBytes = value["maxUploadBytes"];
|
|
54
|
+
const spawnSessions = value["spawnSessions"];
|
|
55
|
+
const subsessions = value["subsessions"];
|
|
52
56
|
if (host !== undefined) {
|
|
53
57
|
if (typeof host !== "string")
|
|
54
58
|
throw new Error("PI WEB config host must be a string");
|
|
@@ -65,6 +69,20 @@ function parseConfigRequest(value) {
|
|
|
65
69
|
config.shortcuts = parseShortcutsRequest(shortcuts);
|
|
66
70
|
if (plugins !== undefined)
|
|
67
71
|
config.plugins = parsePluginsRequest(plugins);
|
|
72
|
+
if (pathAccess !== undefined)
|
|
73
|
+
config.pathAccess = parsePathAccessRequest(pathAccess);
|
|
74
|
+
if (maxUploadBytes !== undefined)
|
|
75
|
+
config.maxUploadBytes = parseMaxUploadBytesRequest(maxUploadBytes);
|
|
76
|
+
if (spawnSessions !== undefined) {
|
|
77
|
+
if (typeof spawnSessions !== "boolean")
|
|
78
|
+
throw new Error("PI WEB config spawnSessions must be a boolean");
|
|
79
|
+
config.spawnSessions = spawnSessions;
|
|
80
|
+
}
|
|
81
|
+
if (subsessions !== undefined) {
|
|
82
|
+
if (typeof subsessions !== "boolean")
|
|
83
|
+
throw new Error("PI WEB config subsessions must be a boolean");
|
|
84
|
+
config.subsessions = subsessions;
|
|
85
|
+
}
|
|
68
86
|
return config;
|
|
69
87
|
}
|
|
70
88
|
function parseAllowedHostsRequest(value) {
|
|
@@ -84,6 +102,28 @@ function parseShortcutsRequest(value) {
|
|
|
84
102
|
return [actionId, shortcut];
|
|
85
103
|
}));
|
|
86
104
|
}
|
|
105
|
+
function parsePathAccessRequest(value) {
|
|
106
|
+
if (!isRecord(value))
|
|
107
|
+
throw new Error("PI WEB config pathAccess must be an object");
|
|
108
|
+
const allowedPaths = value["allowedPaths"];
|
|
109
|
+
return {
|
|
110
|
+
...(allowedPaths === undefined ? {} : { allowedPaths: parseAllowedPathsRequest(allowedPaths) }),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function parseAllowedPathsRequest(value) {
|
|
114
|
+
if (!isNonEmptyStringArray(value)) {
|
|
115
|
+
throw new Error("PI WEB config pathAccess.allowedPaths must be an array of non-empty strings");
|
|
116
|
+
}
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
function isNonEmptyStringArray(value) {
|
|
120
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string" && item !== "");
|
|
121
|
+
}
|
|
122
|
+
function parseMaxUploadBytesRequest(value) {
|
|
123
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 1)
|
|
124
|
+
throw new Error("PI WEB config maxUploadBytes must be a positive integer");
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
87
127
|
function parsePluginsRequest(value) {
|
|
88
128
|
if (!isRecord(value) || Array.isArray(value))
|
|
89
129
|
throw new Error("PI WEB config plugins must be an object");
|
|
@@ -106,6 +146,8 @@ function piWebConfigEnvOverrides(env) {
|
|
|
106
146
|
host: isEnvSet(env["PI_WEB_HOST"]),
|
|
107
147
|
port: isEnvSet(env["PI_WEB_PORT"]) || isEnvSet(env["PORT"]),
|
|
108
148
|
allowedHosts: isEnvSet(env["PI_WEB_ALLOWED_HOSTS"]),
|
|
149
|
+
spawnSessions: isEnvSet(env["PI_WEB_SPAWN_SESSIONS"]),
|
|
150
|
+
subsessions: isEnvSet(env["PI_WEB_SUBSESSIONS"]),
|
|
109
151
|
};
|
|
110
152
|
}
|
|
111
153
|
function isEnvSet(value) {
|