libre-webui 0.19.6 → 0.20.0
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 +2 -2
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +29 -0
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +12 -10
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +138 -4
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.d.ts +4 -3
- package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.js +35 -34
- package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
- package/backend/dist/services/workAccessService.d.ts +15 -0
- package/backend/dist/services/workAccessService.d.ts.map +1 -0
- package/backend/dist/services/workAccessService.js +67 -0
- package/backend/dist/services/workAccessService.js.map +1 -0
- package/backend/dist/services/workAdminService.d.ts +67 -0
- package/backend/dist/services/workAdminService.d.ts.map +1 -0
- package/backend/dist/services/workAdminService.js +92 -0
- package/backend/dist/services/workAdminService.js.map +1 -0
- package/backend/dist/services/workKubernetesDriver.d.ts +74 -0
- package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -0
- package/backend/dist/services/workKubernetesDriver.js +659 -0
- package/backend/dist/services/workKubernetesDriver.js.map +1 -0
- package/backend/dist/services/workPolicyService.d.ts +58 -0
- package/backend/dist/services/workPolicyService.d.ts.map +1 -0
- package/backend/dist/services/workPolicyService.js +249 -0
- package/backend/dist/services/workPolicyService.js.map +1 -0
- package/backend/dist/services/workPreviewProxyService.d.ts +7 -1
- package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
- package/backend/dist/services/workPreviewProxyService.js +36 -8
- package/backend/dist/services/workPreviewProxyService.js.map +1 -1
- package/backend/dist/services/workRuntimeDriver.d.ts +166 -0
- package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -0
- package/backend/dist/services/workRuntimeDriver.js +737 -0
- package/backend/dist/services/workRuntimeDriver.js.map +1 -0
- package/backend/dist/services/workRuntimeService.d.ts +60 -51
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +310 -658
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workRuntimeShared.d.ts +83 -0
- package/backend/dist/services/workRuntimeShared.d.ts.map +1 -0
- package/backend/dist/services/workRuntimeShared.js +136 -0
- package/backend/dist/services/workRuntimeShared.js.map +1 -0
- package/backend/dist/services/workTaskService.d.ts +6 -1
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +18 -3
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/services/workTerminalService.d.ts +2 -22
- package/backend/dist/services/workTerminalService.d.ts.map +1 -1
- package/backend/dist/services/workTerminalService.js +10 -127
- package/backend/dist/services/workTerminalService.js.map +1 -1
- package/backend/dist/types/work.d.ts +4 -0
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/dockerEndpoint.d.ts +37 -0
- package/backend/dist/utils/dockerEndpoint.d.ts.map +1 -0
- package/backend/dist/utils/dockerEndpoint.js +72 -0
- package/backend/dist/utils/dockerEndpoint.js.map +1 -0
- package/backend/dist/workTerminalServer.d.ts.map +1 -1
- package/backend/dist/workTerminalServer.js +6 -5
- package/backend/dist/workTerminalServer.js.map +1 -1
- package/backend/package.json +2 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/assets/index-Z4-oLWDC.js +2 -0
- package/frontend/dist/assets/index-tBUyDbHh.css +1 -0
- package/frontend/dist/index.html +11 -10
- package/frontend/dist/js/{ArtifactContainer-Dy_1KKWg.js → ArtifactContainer-DQRF4rh-.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-Big00RwH.js → ArtifactDemoPage-BOlB1lS-.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-C_S4j076.js → ArtifactSandboxFrame-DqU5GDrI.js} +2 -2
- package/frontend/dist/js/{ArtifactSlideOutPanel-B4-D3HkB.js → ArtifactSlideOutPanel-B0I-hCux.js} +1 -1
- package/frontend/dist/js/ChatPage-DyV0_oCt.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-C6YxrwR7.js → FirstTimeSetup-ButTmjp0.js} +1 -1
- package/frontend/dist/js/{GalleryPage-BtcPs7SO.js → GalleryPage-CaT63b-s.js} +1 -1
- package/frontend/dist/js/HomePage-BWyg3nHu.js +1 -0
- package/frontend/dist/js/{LibreClawPage-B14Go5Mn.js → LibreClawPage-DUd3tjQE.js} +1 -1
- package/frontend/dist/js/ModelSelector-COFcJnMJ.js +1 -0
- package/frontend/dist/js/{ModelsPage-Cc3L0ur8.js → ModelsPage-BRbTEXNL.js} +1 -1
- package/frontend/dist/js/{NotesPage-BwEMW-Z3.js → NotesPage-CTutDN50.js} +1 -1
- package/frontend/dist/js/{PersonasPage-e-CbTxP3.js → PersonasPage-C6iTMI3N.js} +2 -2
- package/frontend/dist/js/{PluginUsagePage-CvZMJJwv.js → PluginUsagePage-BQQ0-_PP.js} +1 -1
- package/frontend/dist/js/{RichMessageContent-DNl3_CIw.js → RichMessageContent-DPqeqxkQ.js} +1 -1
- package/frontend/dist/js/SettingsModal-C_1k75Kv.js +1 -0
- package/frontend/dist/js/SettingsToggle-bZ5W4CCf.js +1 -0
- package/frontend/dist/js/SystemPage-CUecyRPh.js +1 -0
- package/frontend/dist/js/UserManagementPage-CZ4KMOY9.js +1 -0
- package/frontend/dist/js/WorkPage-BqDcfXV6.js +5 -0
- package/frontend/dist/js/api-iCpOEijB.js +14 -0
- package/frontend/dist/js/{appStore-BpoXhleX.js → appStore-DTd6dWg2.js} +2 -2
- package/frontend/dist/js/{ar-ClMsdoTH.js → ar-C8YV99Y-.js} +1 -1
- package/frontend/dist/js/authStore-CuK4HUVh.js +4 -0
- package/frontend/dist/js/{bn-LyPol_AY.js → bn-C9dcls7_.js} +1 -1
- package/frontend/dist/js/chatStore-VNT0eHRB.js +2 -0
- package/frontend/dist/js/{config-CuXlcWP1.js → config--Xp9rZtJ.js} +1 -1
- package/frontend/dist/js/{cs-D98fZaKF.js → cs-DtL8VeeX.js} +1 -1
- package/frontend/dist/js/{da-M7ND0GQR.js → da-U3aNn1aF.js} +1 -1
- package/frontend/dist/js/{de-BV0q1kzb.js → de-DzuyeVpX.js} +1 -1
- package/frontend/dist/js/{es-C7FvsVoN.js → es-OiU8plii.js} +1 -1
- package/frontend/dist/js/{estree-BuWOCMW0.js → estree-BAQkciRX.js} +1 -1
- package/frontend/dist/js/{fr-5SloN0ok.js → fr-DDa3R8bs.js} +1 -1
- package/frontend/dist/js/{hi-C6VeRgeR.js → hi-D8Y0hl34.js} +1 -1
- package/frontend/dist/js/{html-D7tW7UvW.js → html-DxA-Bcvi.js} +1 -1
- package/frontend/dist/js/{i18n-CLd1FZPx.js → i18n-BqWNFeNo.js} +1 -1
- package/frontend/dist/js/{id-CkVp7Z1Z.js → id-BwcWtkBv.js} +1 -1
- package/frontend/dist/js/{is-DqxnBX4W.js → is-DzfQHQih.js} +1 -1
- package/frontend/dist/js/{it-CiW4_O5V.js → it-C5VU3_Je.js} +1 -1
- package/frontend/dist/js/{ja-BZ3Sdund.js → ja-DLhOhxvf.js} +1 -1
- package/frontend/dist/js/{ko-CS7LAhfJ.js → ko-CCKiyQD6.js} +1 -1
- package/frontend/dist/js/{markdown-CBSxWEtK.js → markdown-IsZpJ5ke.js} +1 -1
- package/frontend/dist/js/{messageCodeStyles-BlTi46wI.js → messageCodeStyles-CsV3zwyK.js} +1 -1
- package/frontend/dist/js/{ms-URvcYqgz.js → ms-CXXkPvWw.js} +1 -1
- package/frontend/dist/js/{nl-CQJpW7wK.js → nl-CA_e0Epl.js} +1 -1
- package/frontend/dist/js/{pl-DDMgPMAz.js → pl-BG32wdpx.js} +1 -1
- package/frontend/dist/js/{pt-JCqqmGn_.js → pt-BzRGWQXO.js} +1 -1
- package/frontend/dist/js/{ru-C_dwMbiK.js → ru-DBjn_Q-Q.js} +1 -1
- package/frontend/dist/js/{standalone-CaXys7q3.js → standalone-CK3b5Ktq.js} +1 -1
- package/frontend/dist/js/{sv-CW3c9NGx.js → sv-Hz_iRGdF.js} +1 -1
- package/frontend/dist/js/{th-9ARgClBr.js → th-MsyXlGH9.js} +1 -1
- package/frontend/dist/js/{tr-DNY5_DAg.js → tr-Cofmy_ef.js} +1 -1
- package/frontend/dist/js/{typescript-DQ5zi5zo.js → typescript-BMYmVohw.js} +1 -1
- package/frontend/dist/js/{ui-DFQiHo_k.js → ui-C2kNYwfG.js} +2 -2
- package/frontend/dist/js/{uk-XDh4_7IL.js → uk-B2o05LCR.js} +1 -1
- package/frontend/dist/js/{vi-BaoJBXnt.js → vi-CZh8uJgV.js} +1 -1
- package/frontend/dist/js/workApi-C33ZrPws.js +6 -0
- package/frontend/dist/js/{zh-B202vYJt.js → zh-DhKXi8ZA.js} +1 -1
- package/package.json +4 -3
- package/frontend/dist/assets/index-Cd0_AoYV.js +0 -23
- package/frontend/dist/assets/index-DtkGuqvC.css +0 -1
- package/frontend/dist/js/ChatPage-BkFd1iac.js +0 -16
- package/frontend/dist/js/HomePage-5PhpAt14.js +0 -1
- package/frontend/dist/js/ModelSelector-C1wN91tl.js +0 -1
- package/frontend/dist/js/SettingsModal-C8KJJEud.js +0 -1
- package/frontend/dist/js/SystemPage-8kEAS71H.js +0 -1
- package/frontend/dist/js/UserManagementPage-BSrZ0ucu.js +0 -1
- package/frontend/dist/js/WorkPage-spf92PVN.js +0 -5
- package/frontend/dist/js/api-MySpmAK8.js +0 -19
- package/frontend/dist/js/authStore-DmrydYuS.js +0 -3
- package/frontend/dist/js/chatStore-CWqfsOjc.js +0 -2
|
@@ -18,7 +18,9 @@ import http from 'node:http';
|
|
|
18
18
|
import os from 'node:os';
|
|
19
19
|
import path from 'node:path';
|
|
20
20
|
import { readFile, stat, statfs } from 'node:fs/promises';
|
|
21
|
+
import { dockerEndpointRequestOptions, resolveDockerEndpoint, } from '../utils/dockerEndpoint.js';
|
|
21
22
|
import { loadAppPackage } from '../utils/packagePaths.js';
|
|
23
|
+
export { resolveDockerEndpoint } from '../utils/dockerEndpoint.js';
|
|
22
24
|
const DOCKER_RESPONSE_LIMIT_BYTES = 5 * 1024 * 1024;
|
|
23
25
|
const DOCKER_TIMEOUT_MS = 4000;
|
|
24
26
|
const MAX_DOCKER_CONTAINERS = 100;
|
|
@@ -39,16 +41,6 @@ const safeText = (value, fallback = '', maxLength = 160) => {
|
|
|
39
41
|
.slice(0, maxLength);
|
|
40
42
|
};
|
|
41
43
|
const percent = (used, total) => total > 0 ? Math.round((used / total) * 1000) / 10 : 0;
|
|
42
|
-
export function resolveSystemDockerSocketPath(workDockerSocket, dockerHost) {
|
|
43
|
-
if (workDockerSocket?.trim())
|
|
44
|
-
return workDockerSocket.trim();
|
|
45
|
-
if (dockerHost) {
|
|
46
|
-
return dockerHost.startsWith('unix://')
|
|
47
|
-
? dockerHost.slice('unix://'.length) || null
|
|
48
|
-
: null;
|
|
49
|
-
}
|
|
50
|
-
return '/var/run/docker.sock';
|
|
51
|
-
}
|
|
52
44
|
export function parseNetworkCounters(contents) {
|
|
53
45
|
const counters = new Map();
|
|
54
46
|
for (const line of contents.split('\n').slice(2)) {
|
|
@@ -111,7 +103,7 @@ export function summarizeDockerPayloads(versionPayload, infoPayload, containerPa
|
|
|
111
103
|
containers,
|
|
112
104
|
};
|
|
113
105
|
}
|
|
114
|
-
export async function collectDockerDiagnostics(
|
|
106
|
+
export async function collectDockerDiagnostics(endpoint, dockerGet = dockerApiGet) {
|
|
115
107
|
const unavailable = (reason, socketMounted) => ({
|
|
116
108
|
available: false,
|
|
117
109
|
socketMounted,
|
|
@@ -122,28 +114,32 @@ export async function collectDockerDiagnostics(socketPath, dockerGet = dockerApi
|
|
|
122
114
|
pausedContainers: 0,
|
|
123
115
|
containers: [],
|
|
124
116
|
});
|
|
125
|
-
if (!
|
|
126
|
-
return unavailable('Docker diagnostics
|
|
117
|
+
if (!endpoint) {
|
|
118
|
+
return unavailable('Docker diagnostics need the local Unix socket or a plain-HTTP tcp:// endpoint (such as a socket proxy); the configured DOCKER_HOST is neither.', false);
|
|
127
119
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
socketMounted =
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
120
|
+
// "socketMounted" doubles as "an endpoint is configured": a tcp endpoint
|
|
121
|
+
// has no socket file to stat, so reachability is decided by the request.
|
|
122
|
+
if (endpoint.kind === 'unix') {
|
|
123
|
+
let socketMounted = false;
|
|
124
|
+
try {
|
|
125
|
+
const socketStats = await stat(endpoint.socketPath);
|
|
126
|
+
socketMounted = socketStats.isSocket();
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error.code === 'EACCES') {
|
|
130
|
+
return unavailable('The Docker socket is mounted but the Libre WebUI process cannot read it.', true);
|
|
131
|
+
}
|
|
132
|
+
return unavailable('Docker is unavailable because its local socket is not mounted.', false);
|
|
133
|
+
}
|
|
134
|
+
if (!socketMounted) {
|
|
135
|
+
return unavailable('The configured Docker path is not a Unix socket.', false);
|
|
136
136
|
}
|
|
137
|
-
return unavailable('Docker is unavailable because its local socket is not mounted.', false);
|
|
138
|
-
}
|
|
139
|
-
if (!socketMounted) {
|
|
140
|
-
return unavailable('The configured Docker path is not a Unix socket.', false);
|
|
141
137
|
}
|
|
142
138
|
try {
|
|
143
139
|
const [version, info, containers] = await Promise.all([
|
|
144
|
-
dockerGet(
|
|
145
|
-
dockerGet(
|
|
146
|
-
dockerGet(
|
|
140
|
+
dockerGet(endpoint, '/version'),
|
|
141
|
+
dockerGet(endpoint, '/info'),
|
|
142
|
+
dockerGet(endpoint, '/containers/json?all=1'),
|
|
147
143
|
]);
|
|
148
144
|
return summarizeDockerPayloads((version ?? {}), (info ?? {}), Array.isArray(containers) ? containers : []);
|
|
149
145
|
}
|
|
@@ -153,17 +149,22 @@ export async function collectDockerDiagnostics(socketPath, dockerGet = dockerApi
|
|
|
153
149
|
? 'The Docker socket is mounted but the Libre WebUI process cannot read it.'
|
|
154
150
|
: code === 'ETIMEDOUT'
|
|
155
151
|
? 'The Docker daemon did not answer the diagnostics request in time.'
|
|
156
|
-
:
|
|
152
|
+
: endpoint.kind === 'unix'
|
|
153
|
+
? 'The Docker socket is mounted, but the daemon could not be reached.'
|
|
154
|
+
: 'The configured Docker tcp endpoint could not be reached.';
|
|
157
155
|
return unavailable(reason, true);
|
|
158
156
|
}
|
|
159
157
|
}
|
|
160
|
-
async function dockerApiGet(
|
|
158
|
+
async function dockerApiGet(endpoint, requestPath) {
|
|
161
159
|
return new Promise((resolve, reject) => {
|
|
162
160
|
const request = http.request({
|
|
163
|
-
|
|
161
|
+
...dockerEndpointRequestOptions(endpoint),
|
|
164
162
|
method: 'GET',
|
|
165
163
|
path: requestPath,
|
|
166
|
-
headers: {
|
|
164
|
+
headers: {
|
|
165
|
+
...(endpoint.kind === 'unix' ? { Host: 'docker' } : {}),
|
|
166
|
+
Accept: 'application/json',
|
|
167
|
+
},
|
|
167
168
|
}, response => {
|
|
168
169
|
const chunks = [];
|
|
169
170
|
let received = 0;
|
|
@@ -273,13 +274,13 @@ export class SystemDiagnosticsService {
|
|
|
273
274
|
const usedBytes = Math.max(0, totalBytes - freeBytes);
|
|
274
275
|
const processMemory = process.memoryUsage();
|
|
275
276
|
const dataDirectory = process.env.DATA_DIR || path.join(process.cwd(), 'backend', 'data');
|
|
276
|
-
const
|
|
277
|
+
const dockerEndpoint = resolveDockerEndpoint(process.env.WORK_DOCKER_SOCKET, process.env.DOCKER_HOST, process.env.DOCKER_TLS_VERIFY);
|
|
277
278
|
const [containerized, runtimeFilesystem, dataFilesystem, network, docker] = await Promise.all([
|
|
278
279
|
detectContainerized(),
|
|
279
280
|
collectFilesystem('Runtime filesystem', '/'),
|
|
280
281
|
collectFilesystem('Data directory', dataDirectory),
|
|
281
282
|
collectNetworkInterfaces(),
|
|
282
|
-
collectDockerDiagnostics(
|
|
283
|
+
collectDockerDiagnostics(dockerEndpoint),
|
|
283
284
|
]);
|
|
284
285
|
const filesystems = [runtimeFilesystem, dataFilesystem].filter((item) => item !== null);
|
|
285
286
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemDiagnosticsService.js","sourceRoot":"","sources":["../../src/services/systemDiagnosticsService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"systemDiagnosticsService.js","sourceRoot":"","sources":["../../src/services/systemDiagnosticsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type WorkAccessMode = 'admins' | 'all-users';
|
|
2
|
+
export declare const WORK_ACCESS_MODES: readonly WorkAccessMode[];
|
|
3
|
+
export declare const WORK_ACCESS_MODE_KEY = "work_access_mode";
|
|
4
|
+
export declare function isWorkAccessMode(value: unknown): value is WorkAccessMode;
|
|
5
|
+
export declare function getWorkAccessMode(): WorkAccessMode;
|
|
6
|
+
export declare function setWorkAccessMode(mode: WorkAccessMode): void;
|
|
7
|
+
/**
|
|
8
|
+
* Whether a user may use Work right now. Administrators always may; other
|
|
9
|
+
* active accounts may when the mode is opened to all users.
|
|
10
|
+
*/
|
|
11
|
+
export declare function userHasWorkAccess(user: {
|
|
12
|
+
role?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}): boolean;
|
|
15
|
+
//# sourceMappingURL=workAccessService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workAccessService.d.ts","sourceRoot":"","sources":["../../src/services/workAccessService.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAGtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAa5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAIV"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Who may use Work. The mode is a persisted system setting so an
|
|
19
|
+
* administrator's decision survives restarts and takes effect immediately —
|
|
20
|
+
* every access check reads the current value, mirroring how role demotions
|
|
21
|
+
* are honored mid-session. The default is admins-only: opening Work to all
|
|
22
|
+
* users hands every account a command-executing sandbox, which is safe by
|
|
23
|
+
* construction but is still a decision the administrator must make.
|
|
24
|
+
*
|
|
25
|
+
* Host-folder workspaces are NOT governed by this mode: they bind-mount
|
|
26
|
+
* server paths and therefore stay admin-only regardless of the setting.
|
|
27
|
+
*/
|
|
28
|
+
import { getDatabase } from '../db.js';
|
|
29
|
+
export const WORK_ACCESS_MODES = [
|
|
30
|
+
'admins',
|
|
31
|
+
'all-users',
|
|
32
|
+
];
|
|
33
|
+
export const WORK_ACCESS_MODE_KEY = 'work_access_mode';
|
|
34
|
+
export function isWorkAccessMode(value) {
|
|
35
|
+
return (typeof value === 'string' &&
|
|
36
|
+
WORK_ACCESS_MODES.includes(value));
|
|
37
|
+
}
|
|
38
|
+
export function getWorkAccessMode() {
|
|
39
|
+
const row = getDatabase()
|
|
40
|
+
.prepare('SELECT value FROM system_settings WHERE key = ?')
|
|
41
|
+
.get(WORK_ACCESS_MODE_KEY);
|
|
42
|
+
return isWorkAccessMode(row?.value) ? row.value : 'admins';
|
|
43
|
+
}
|
|
44
|
+
export function setWorkAccessMode(mode) {
|
|
45
|
+
if (!isWorkAccessMode(mode)) {
|
|
46
|
+
throw new Error(`Invalid Work access mode "${String(mode)}".`);
|
|
47
|
+
}
|
|
48
|
+
getDatabase()
|
|
49
|
+
.prepare(`INSERT INTO system_settings (key, value, updated_at)
|
|
50
|
+
VALUES (?, ?, ?)
|
|
51
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
52
|
+
value = excluded.value,
|
|
53
|
+
updated_at = excluded.updated_at`)
|
|
54
|
+
.run(WORK_ACCESS_MODE_KEY, mode, Date.now());
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Whether a user may use Work right now. Administrators always may; other
|
|
58
|
+
* active accounts may when the mode is opened to all users.
|
|
59
|
+
*/
|
|
60
|
+
export function userHasWorkAccess(user) {
|
|
61
|
+
if (user.status !== undefined && user.status !== 'active')
|
|
62
|
+
return false;
|
|
63
|
+
if (user.role === 'admin')
|
|
64
|
+
return true;
|
|
65
|
+
return getWorkAccessMode() === 'all-users';
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=workAccessService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workAccessService.js","sourceRoot":"","sources":["../../src/services/workAccessService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,QAAQ;IACR,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,WAAW,EAAE;SACtB,OAAO,CAAC,iDAAiD,CAAC;SAC1D,GAAG,CAAC,oBAAoB,CAAmC,CAAC;IAC/D,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,WAAW,EAAE;SACV,OAAO,CACN;;;;0CAIoC,CACrC;SACA,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,iBAAiB,EAAE,KAAK,WAAW,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One aggregated snapshot of everything Work is doing across every user,
|
|
3
|
+
* for the admin System page: task inventory with owners, live runtime
|
|
4
|
+
* state (from the single labeled listing the drivers already provide),
|
|
5
|
+
* terminal sessions, admission headroom, reconciliation state, and the
|
|
6
|
+
* access mode. Read-only: this module never mutates runtime state.
|
|
7
|
+
*/
|
|
8
|
+
import { type WorkAccessMode } from './workAccessService.js';
|
|
9
|
+
import type { WorkTaskRecord } from '../types/work.js';
|
|
10
|
+
export interface WorkAdminTask {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
ownerId: string;
|
|
14
|
+
ownerUsername: string;
|
|
15
|
+
model: string;
|
|
16
|
+
status: string;
|
|
17
|
+
previewStatus: string;
|
|
18
|
+
networkEnabled: boolean;
|
|
19
|
+
hostWorkspace: boolean;
|
|
20
|
+
/** null when the runtime could not be asked (backend unavailable). */
|
|
21
|
+
running: boolean | null;
|
|
22
|
+
terminalSessions: number;
|
|
23
|
+
updatedAt: number;
|
|
24
|
+
}
|
|
25
|
+
export interface WorkAdminOverview {
|
|
26
|
+
generatedAt: number;
|
|
27
|
+
accessMode: WorkAccessMode;
|
|
28
|
+
runtimeAvailable: boolean;
|
|
29
|
+
runtimeReason?: string;
|
|
30
|
+
recoveryPending: number;
|
|
31
|
+
admission: {
|
|
32
|
+
activeGlobal: number;
|
|
33
|
+
maxGlobal: number;
|
|
34
|
+
maxPerUser: number;
|
|
35
|
+
};
|
|
36
|
+
tasks: WorkAdminTask[];
|
|
37
|
+
/** Managed containers whose task record no longer exists. */
|
|
38
|
+
orphanContainers: Array<{
|
|
39
|
+
name: string;
|
|
40
|
+
taskId: string;
|
|
41
|
+
running: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
interface WorkAdminDeps {
|
|
45
|
+
listTasksWithOwner: () => Array<{
|
|
46
|
+
record: WorkTaskRecord;
|
|
47
|
+
ownerUsername: string;
|
|
48
|
+
}>;
|
|
49
|
+
listManaged: () => Promise<Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
taskId: string;
|
|
52
|
+
running: boolean;
|
|
53
|
+
}>>;
|
|
54
|
+
isRuntimeAvailable: () => Promise<boolean>;
|
|
55
|
+
runtimeUnavailableReason: () => string | null;
|
|
56
|
+
sessionCount: (taskId: string) => number;
|
|
57
|
+
activeGlobal: () => number;
|
|
58
|
+
limits: () => {
|
|
59
|
+
maxGlobal: number;
|
|
60
|
+
maxPerUser: number;
|
|
61
|
+
};
|
|
62
|
+
recoveryPending: () => number;
|
|
63
|
+
accessMode: () => WorkAccessMode;
|
|
64
|
+
}
|
|
65
|
+
export declare function buildWorkAdminOverview(deps?: WorkAdminDeps): Promise<WorkAdminOverview>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=workAdminService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workAdminService.d.ts","sourceRoot":"","sources":["../../src/services/workAdminService.ts"],"names":[],"mappings":"AAiBA;;;;;;GAMG;AAEH,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,6DAA6D;IAC7D,gBAAgB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,UAAU,aAAa;IACrB,kBAAkB,EAAE,MAAM,KAAK,CAAC;QAC9B,MAAM,EAAE,cAAc,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,OAAO,CACxB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAC1D,CAAC;IACF,kBAAkB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,wBAAwB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,cAAc,CAAC;CAClC;AAiBD,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE,aAA2B,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAoD5B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Libre WebUI
|
|
3
|
+
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at:
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* One aggregated snapshot of everything Work is doing across every user,
|
|
19
|
+
* for the admin System page: task inventory with owners, live runtime
|
|
20
|
+
* state (from the single labeled listing the drivers already provide),
|
|
21
|
+
* terminal sessions, admission headroom, reconciliation state, and the
|
|
22
|
+
* access mode. Read-only: this module never mutates runtime state.
|
|
23
|
+
*/
|
|
24
|
+
import { getWorkAccessMode } from './workAccessService.js';
|
|
25
|
+
import workRuntimeService from './workRuntimeService.js';
|
|
26
|
+
import workTaskService from './workTaskService.js';
|
|
27
|
+
import workTerminalService from './workTerminalService.js';
|
|
28
|
+
const defaultDeps = {
|
|
29
|
+
listTasksWithOwner: () => workTaskService.listAllTasksWithOwner(),
|
|
30
|
+
listManaged: () => workRuntimeService.driver.listManaged(),
|
|
31
|
+
isRuntimeAvailable: () => workRuntimeService.isDockerAvailable(),
|
|
32
|
+
runtimeUnavailableReason: () => workRuntimeService.dockerUnavailableReason,
|
|
33
|
+
sessionCount: taskId => workTerminalService.sessionCount(taskId),
|
|
34
|
+
activeGlobal: () => workRuntimeService.activeRuntimeCounts().global,
|
|
35
|
+
limits: () => ({
|
|
36
|
+
maxGlobal: workRuntimeService.limits.maxActiveRuntimesGlobal,
|
|
37
|
+
maxPerUser: workRuntimeService.limits.maxActiveRuntimesPerUser,
|
|
38
|
+
}),
|
|
39
|
+
recoveryPending: () => workRuntimeService.recoveryPendingCount,
|
|
40
|
+
accessMode: () => getWorkAccessMode(),
|
|
41
|
+
};
|
|
42
|
+
export async function buildWorkAdminOverview(deps = defaultDeps) {
|
|
43
|
+
const tasks = deps.listTasksWithOwner();
|
|
44
|
+
const runtimeAvailable = await deps.isRuntimeAvailable();
|
|
45
|
+
// One labeled listing answers "what is actually running" for every task
|
|
46
|
+
// at once. When the runtime is down the inventory is still useful, so
|
|
47
|
+
// per-task state degrades to unknown instead of failing the overview.
|
|
48
|
+
let managed = [];
|
|
49
|
+
let managedKnown = false;
|
|
50
|
+
if (runtimeAvailable) {
|
|
51
|
+
try {
|
|
52
|
+
managed = await deps.listManaged();
|
|
53
|
+
managedKnown = true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
managedKnown = false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const runningByTask = new Map(managed.map(entry => [entry.taskId, entry.running]));
|
|
60
|
+
const taskIds = new Set(tasks.map(task => task.record.id));
|
|
61
|
+
const limits = deps.limits();
|
|
62
|
+
return {
|
|
63
|
+
generatedAt: Date.now(),
|
|
64
|
+
accessMode: deps.accessMode(),
|
|
65
|
+
runtimeAvailable,
|
|
66
|
+
runtimeReason: runtimeAvailable
|
|
67
|
+
? undefined
|
|
68
|
+
: (deps.runtimeUnavailableReason() ?? undefined),
|
|
69
|
+
recoveryPending: deps.recoveryPending(),
|
|
70
|
+
admission: {
|
|
71
|
+
activeGlobal: deps.activeGlobal(),
|
|
72
|
+
maxGlobal: limits.maxGlobal,
|
|
73
|
+
maxPerUser: limits.maxPerUser,
|
|
74
|
+
},
|
|
75
|
+
tasks: tasks.map(({ record, ownerUsername }) => ({
|
|
76
|
+
id: record.id,
|
|
77
|
+
title: record.title,
|
|
78
|
+
ownerId: record.userId,
|
|
79
|
+
ownerUsername,
|
|
80
|
+
model: record.model,
|
|
81
|
+
status: record.status,
|
|
82
|
+
previewStatus: record.previewStatus,
|
|
83
|
+
networkEnabled: record.networkEnabled,
|
|
84
|
+
hostWorkspace: Boolean(record.hostPath),
|
|
85
|
+
running: managedKnown ? (runningByTask.get(record.id) ?? false) : null,
|
|
86
|
+
terminalSessions: deps.sessionCount(record.id),
|
|
87
|
+
updatedAt: record.updatedAt,
|
|
88
|
+
})),
|
|
89
|
+
orphanContainers: managed.filter(entry => !taskIds.has(entry.taskId)),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=workAdminService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workAdminService.js","sourceRoot":"","sources":["../../src/services/workAdminService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { WorkTaskRecord } from '../types/work.js';
|
|
2
|
+
import type { DiscoveredWorkContainer, WorkExecOptions, WorkRuntimeDriver, WorkRuntimeState, WorkTerminalTransport } from './workRuntimeDriver.js';
|
|
3
|
+
import { ProcessResult, ResolvedWorkRuntimePolicy } from './workRuntimeShared.js';
|
|
4
|
+
export declare const WORK_KUBERNETES_DEFAULTS: {
|
|
5
|
+
readonly namespace: 'libre-webui-work';
|
|
6
|
+
readonly workspaceSize: '5Gi';
|
|
7
|
+
readonly podReadyTimeoutMs: 900000;
|
|
8
|
+
readonly podGoneTimeoutMs: 60000;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Work runtime driver backed by a Kubernetes namespace: one PVC per task
|
|
12
|
+
* workspace, one on-demand Pod per running sandbox, exec for everything that
|
|
13
|
+
* happens inside. No Docker daemon or socket is involved anywhere, and the
|
|
14
|
+
* backing ServiceAccount only needs pods/pods-exec/PVC rights in the sandbox
|
|
15
|
+
* namespace. Interactive terminals ride the exec subresource as a TTY
|
|
16
|
+
* WebSocket, and preview is served from the sandbox Pod IP through the
|
|
17
|
+
* signed proxy (the backend must run in-cluster to reach it).
|
|
18
|
+
*/
|
|
19
|
+
export declare class KubernetesWorkRuntimeDriver implements WorkRuntimeDriver {
|
|
20
|
+
readonly image: string;
|
|
21
|
+
readonly namespace: string;
|
|
22
|
+
private clientState?;
|
|
23
|
+
private client;
|
|
24
|
+
probe(): Promise<void>;
|
|
25
|
+
shutdown(): void;
|
|
26
|
+
ensureImage(): Promise<void>;
|
|
27
|
+
ensureWorkspace(task: WorkTaskRecord): Promise<void>;
|
|
28
|
+
ensureRuntime(task: WorkTaskRecord): Promise<void>;
|
|
29
|
+
runtimeState(task: WorkTaskRecord): Promise<WorkRuntimeState>;
|
|
30
|
+
stopRuntime(task: WorkTaskRecord): Promise<void>;
|
|
31
|
+
removeRuntime(task: WorkTaskRecord): Promise<void>;
|
|
32
|
+
removeTaskResources(task: WorkTaskRecord): Promise<void>;
|
|
33
|
+
exec(task: WorkTaskRecord, command: string[], options?: WorkExecOptions): Promise<ProcessResult>;
|
|
34
|
+
previewEndpoint(task: WorkTaskRecord): Promise<{
|
|
35
|
+
host?: string;
|
|
36
|
+
port: number;
|
|
37
|
+
} | undefined>;
|
|
38
|
+
listManaged(): Promise<DiscoveredWorkContainer[]>;
|
|
39
|
+
removeOrphan(name: string): Promise<void>;
|
|
40
|
+
listWorkspaces(): Promise<{
|
|
41
|
+
name: string;
|
|
42
|
+
taskId: string;
|
|
43
|
+
}[]>;
|
|
44
|
+
terminalUnavailableReason(): null;
|
|
45
|
+
/**
|
|
46
|
+
* Interactive TTY over the Kubernetes exec subresource. The exec API has
|
|
47
|
+
* no env parameter, so TERM rides in via env(1); with tty=true the server
|
|
48
|
+
* merges stderr into stdout, and resize frames travel on the dedicated
|
|
49
|
+
* resize channel, driven by the client library watching our stdout-side
|
|
50
|
+
* stream for TTY-style resize events.
|
|
51
|
+
*/
|
|
52
|
+
openTerminal(containerName: string): Promise<WorkTerminalTransport>;
|
|
53
|
+
private readPod;
|
|
54
|
+
private deletePodAndWait;
|
|
55
|
+
private waitForPodRunning;
|
|
56
|
+
private execInPod;
|
|
57
|
+
}
|
|
58
|
+
export declare function buildWorkspaceClaimManifest(task: WorkTaskRecord, workspaceSize?: string): import('@kubernetes/client-node').V1PersistentVolumeClaim;
|
|
59
|
+
export declare function buildWorkPodManifest(task: WorkTaskRecord, policy?: ResolvedWorkRuntimePolicy): import('@kubernetes/client-node').V1Pod;
|
|
60
|
+
/**
|
|
61
|
+
* Kubernetes exec always runs in the container's workingDir (/workspace for
|
|
62
|
+
* Work sandboxes); a different working directory needs a shell hop.
|
|
63
|
+
*/
|
|
64
|
+
export declare function wrapCommandWithWorkdir(command: string[], workdir?: string): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Docker memory strings use binary multiples; so do Ki/Mi/Gi. Docker accepts
|
|
67
|
+
* both one- and two-letter suffixes (2g, 2gb, 2gib) for the same quantity.
|
|
68
|
+
*/
|
|
69
|
+
export declare function dockerMemoryToKubernetes(value: string): string;
|
|
70
|
+
export declare function dockerCpusToKubernetes(value: string): string;
|
|
71
|
+
export declare function mapPodPhase(phase: string | undefined): WorkRuntimeState;
|
|
72
|
+
export declare function statusToExitCode(status: import('@kubernetes/client-node').V1Status | undefined): number;
|
|
73
|
+
export declare function describeKubernetesUnavailable(error: unknown, namespace: string): string;
|
|
74
|
+
//# sourceMappingURL=workKubernetesDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workKubernetesDriver.d.ts","sourceRoot":"","sources":["../../src/services/workKubernetesDriver.ts"],"names":[],"mappings":"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"}
|