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.
Files changed (139) hide show
  1. package/README.md +2 -2
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +29 -0
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +12 -10
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/routes/work.d.ts.map +1 -1
  9. package/backend/dist/routes/work.js +138 -4
  10. package/backend/dist/routes/work.js.map +1 -1
  11. package/backend/dist/services/systemDiagnosticsService.d.ts +4 -3
  12. package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
  13. package/backend/dist/services/systemDiagnosticsService.js +35 -34
  14. package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
  15. package/backend/dist/services/workAccessService.d.ts +15 -0
  16. package/backend/dist/services/workAccessService.d.ts.map +1 -0
  17. package/backend/dist/services/workAccessService.js +67 -0
  18. package/backend/dist/services/workAccessService.js.map +1 -0
  19. package/backend/dist/services/workAdminService.d.ts +67 -0
  20. package/backend/dist/services/workAdminService.d.ts.map +1 -0
  21. package/backend/dist/services/workAdminService.js +92 -0
  22. package/backend/dist/services/workAdminService.js.map +1 -0
  23. package/backend/dist/services/workKubernetesDriver.d.ts +74 -0
  24. package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -0
  25. package/backend/dist/services/workKubernetesDriver.js +659 -0
  26. package/backend/dist/services/workKubernetesDriver.js.map +1 -0
  27. package/backend/dist/services/workPolicyService.d.ts +58 -0
  28. package/backend/dist/services/workPolicyService.d.ts.map +1 -0
  29. package/backend/dist/services/workPolicyService.js +249 -0
  30. package/backend/dist/services/workPolicyService.js.map +1 -0
  31. package/backend/dist/services/workPreviewProxyService.d.ts +7 -1
  32. package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
  33. package/backend/dist/services/workPreviewProxyService.js +36 -8
  34. package/backend/dist/services/workPreviewProxyService.js.map +1 -1
  35. package/backend/dist/services/workRuntimeDriver.d.ts +166 -0
  36. package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -0
  37. package/backend/dist/services/workRuntimeDriver.js +737 -0
  38. package/backend/dist/services/workRuntimeDriver.js.map +1 -0
  39. package/backend/dist/services/workRuntimeService.d.ts +60 -51
  40. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  41. package/backend/dist/services/workRuntimeService.js +310 -658
  42. package/backend/dist/services/workRuntimeService.js.map +1 -1
  43. package/backend/dist/services/workRuntimeShared.d.ts +83 -0
  44. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -0
  45. package/backend/dist/services/workRuntimeShared.js +136 -0
  46. package/backend/dist/services/workRuntimeShared.js.map +1 -0
  47. package/backend/dist/services/workTaskService.d.ts +6 -1
  48. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  49. package/backend/dist/services/workTaskService.js +18 -3
  50. package/backend/dist/services/workTaskService.js.map +1 -1
  51. package/backend/dist/services/workTerminalService.d.ts +2 -22
  52. package/backend/dist/services/workTerminalService.d.ts.map +1 -1
  53. package/backend/dist/services/workTerminalService.js +10 -127
  54. package/backend/dist/services/workTerminalService.js.map +1 -1
  55. package/backend/dist/types/work.d.ts +4 -0
  56. package/backend/dist/types/work.d.ts.map +1 -1
  57. package/backend/dist/utils/dockerEndpoint.d.ts +37 -0
  58. package/backend/dist/utils/dockerEndpoint.d.ts.map +1 -0
  59. package/backend/dist/utils/dockerEndpoint.js +72 -0
  60. package/backend/dist/utils/dockerEndpoint.js.map +1 -0
  61. package/backend/dist/workTerminalServer.d.ts.map +1 -1
  62. package/backend/dist/workTerminalServer.js +6 -5
  63. package/backend/dist/workTerminalServer.js.map +1 -1
  64. package/backend/package.json +2 -1
  65. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  66. package/frontend/dist/assets/index-Z4-oLWDC.js +2 -0
  67. package/frontend/dist/assets/index-tBUyDbHh.css +1 -0
  68. package/frontend/dist/index.html +11 -10
  69. package/frontend/dist/js/{ArtifactContainer-Dy_1KKWg.js → ArtifactContainer-DQRF4rh-.js} +1 -1
  70. package/frontend/dist/js/{ArtifactDemoPage-Big00RwH.js → ArtifactDemoPage-BOlB1lS-.js} +1 -1
  71. package/frontend/dist/js/{ArtifactSandboxFrame-C_S4j076.js → ArtifactSandboxFrame-DqU5GDrI.js} +2 -2
  72. package/frontend/dist/js/{ArtifactSlideOutPanel-B4-D3HkB.js → ArtifactSlideOutPanel-B0I-hCux.js} +1 -1
  73. package/frontend/dist/js/ChatPage-DyV0_oCt.js +16 -0
  74. package/frontend/dist/js/{FirstTimeSetup-C6YxrwR7.js → FirstTimeSetup-ButTmjp0.js} +1 -1
  75. package/frontend/dist/js/{GalleryPage-BtcPs7SO.js → GalleryPage-CaT63b-s.js} +1 -1
  76. package/frontend/dist/js/HomePage-BWyg3nHu.js +1 -0
  77. package/frontend/dist/js/{LibreClawPage-B14Go5Mn.js → LibreClawPage-DUd3tjQE.js} +1 -1
  78. package/frontend/dist/js/ModelSelector-COFcJnMJ.js +1 -0
  79. package/frontend/dist/js/{ModelsPage-Cc3L0ur8.js → ModelsPage-BRbTEXNL.js} +1 -1
  80. package/frontend/dist/js/{NotesPage-BwEMW-Z3.js → NotesPage-CTutDN50.js} +1 -1
  81. package/frontend/dist/js/{PersonasPage-e-CbTxP3.js → PersonasPage-C6iTMI3N.js} +2 -2
  82. package/frontend/dist/js/{PluginUsagePage-CvZMJJwv.js → PluginUsagePage-BQQ0-_PP.js} +1 -1
  83. package/frontend/dist/js/{RichMessageContent-DNl3_CIw.js → RichMessageContent-DPqeqxkQ.js} +1 -1
  84. package/frontend/dist/js/SettingsModal-C_1k75Kv.js +1 -0
  85. package/frontend/dist/js/SettingsToggle-bZ5W4CCf.js +1 -0
  86. package/frontend/dist/js/SystemPage-CUecyRPh.js +1 -0
  87. package/frontend/dist/js/UserManagementPage-CZ4KMOY9.js +1 -0
  88. package/frontend/dist/js/WorkPage-BqDcfXV6.js +5 -0
  89. package/frontend/dist/js/api-iCpOEijB.js +14 -0
  90. package/frontend/dist/js/{appStore-BpoXhleX.js → appStore-DTd6dWg2.js} +2 -2
  91. package/frontend/dist/js/{ar-ClMsdoTH.js → ar-C8YV99Y-.js} +1 -1
  92. package/frontend/dist/js/authStore-CuK4HUVh.js +4 -0
  93. package/frontend/dist/js/{bn-LyPol_AY.js → bn-C9dcls7_.js} +1 -1
  94. package/frontend/dist/js/chatStore-VNT0eHRB.js +2 -0
  95. package/frontend/dist/js/{config-CuXlcWP1.js → config--Xp9rZtJ.js} +1 -1
  96. package/frontend/dist/js/{cs-D98fZaKF.js → cs-DtL8VeeX.js} +1 -1
  97. package/frontend/dist/js/{da-M7ND0GQR.js → da-U3aNn1aF.js} +1 -1
  98. package/frontend/dist/js/{de-BV0q1kzb.js → de-DzuyeVpX.js} +1 -1
  99. package/frontend/dist/js/{es-C7FvsVoN.js → es-OiU8plii.js} +1 -1
  100. package/frontend/dist/js/{estree-BuWOCMW0.js → estree-BAQkciRX.js} +1 -1
  101. package/frontend/dist/js/{fr-5SloN0ok.js → fr-DDa3R8bs.js} +1 -1
  102. package/frontend/dist/js/{hi-C6VeRgeR.js → hi-D8Y0hl34.js} +1 -1
  103. package/frontend/dist/js/{html-D7tW7UvW.js → html-DxA-Bcvi.js} +1 -1
  104. package/frontend/dist/js/{i18n-CLd1FZPx.js → i18n-BqWNFeNo.js} +1 -1
  105. package/frontend/dist/js/{id-CkVp7Z1Z.js → id-BwcWtkBv.js} +1 -1
  106. package/frontend/dist/js/{is-DqxnBX4W.js → is-DzfQHQih.js} +1 -1
  107. package/frontend/dist/js/{it-CiW4_O5V.js → it-C5VU3_Je.js} +1 -1
  108. package/frontend/dist/js/{ja-BZ3Sdund.js → ja-DLhOhxvf.js} +1 -1
  109. package/frontend/dist/js/{ko-CS7LAhfJ.js → ko-CCKiyQD6.js} +1 -1
  110. package/frontend/dist/js/{markdown-CBSxWEtK.js → markdown-IsZpJ5ke.js} +1 -1
  111. package/frontend/dist/js/{messageCodeStyles-BlTi46wI.js → messageCodeStyles-CsV3zwyK.js} +1 -1
  112. package/frontend/dist/js/{ms-URvcYqgz.js → ms-CXXkPvWw.js} +1 -1
  113. package/frontend/dist/js/{nl-CQJpW7wK.js → nl-CA_e0Epl.js} +1 -1
  114. package/frontend/dist/js/{pl-DDMgPMAz.js → pl-BG32wdpx.js} +1 -1
  115. package/frontend/dist/js/{pt-JCqqmGn_.js → pt-BzRGWQXO.js} +1 -1
  116. package/frontend/dist/js/{ru-C_dwMbiK.js → ru-DBjn_Q-Q.js} +1 -1
  117. package/frontend/dist/js/{standalone-CaXys7q3.js → standalone-CK3b5Ktq.js} +1 -1
  118. package/frontend/dist/js/{sv-CW3c9NGx.js → sv-Hz_iRGdF.js} +1 -1
  119. package/frontend/dist/js/{th-9ARgClBr.js → th-MsyXlGH9.js} +1 -1
  120. package/frontend/dist/js/{tr-DNY5_DAg.js → tr-Cofmy_ef.js} +1 -1
  121. package/frontend/dist/js/{typescript-DQ5zi5zo.js → typescript-BMYmVohw.js} +1 -1
  122. package/frontend/dist/js/{ui-DFQiHo_k.js → ui-C2kNYwfG.js} +2 -2
  123. package/frontend/dist/js/{uk-XDh4_7IL.js → uk-B2o05LCR.js} +1 -1
  124. package/frontend/dist/js/{vi-BaoJBXnt.js → vi-CZh8uJgV.js} +1 -1
  125. package/frontend/dist/js/workApi-C33ZrPws.js +6 -0
  126. package/frontend/dist/js/{zh-B202vYJt.js → zh-DhKXi8ZA.js} +1 -1
  127. package/package.json +4 -3
  128. package/frontend/dist/assets/index-Cd0_AoYV.js +0 -23
  129. package/frontend/dist/assets/index-DtkGuqvC.css +0 -1
  130. package/frontend/dist/js/ChatPage-BkFd1iac.js +0 -16
  131. package/frontend/dist/js/HomePage-5PhpAt14.js +0 -1
  132. package/frontend/dist/js/ModelSelector-C1wN91tl.js +0 -1
  133. package/frontend/dist/js/SettingsModal-C8KJJEud.js +0 -1
  134. package/frontend/dist/js/SystemPage-8kEAS71H.js +0 -1
  135. package/frontend/dist/js/UserManagementPage-BSrZ0ucu.js +0 -1
  136. package/frontend/dist/js/WorkPage-spf92PVN.js +0 -5
  137. package/frontend/dist/js/api-MySpmAK8.js +0 -19
  138. package/frontend/dist/js/authStore-DmrydYuS.js +0 -3
  139. 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(socketPath, dockerGet = dockerApiGet) {
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 (!socketPath) {
126
- return unavailable('Docker diagnostics require a local Unix socket; remote Docker endpoints are not queried.', false);
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
- let socketMounted = false;
129
- try {
130
- const socketStats = await stat(socketPath);
131
- socketMounted = socketStats.isSocket();
132
- }
133
- catch (error) {
134
- if (error.code === 'EACCES') {
135
- return unavailable('The Docker socket is mounted but the Libre WebUI process cannot read it.', true);
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(socketPath, '/version'),
145
- dockerGet(socketPath, '/info'),
146
- dockerGet(socketPath, '/containers/json?all=1'),
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
- : 'The Docker socket is mounted, but the daemon could not be reached.';
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(socketPath, requestPath) {
158
+ async function dockerApiGet(endpoint, requestPath) {
161
159
  return new Promise((resolve, reject) => {
162
160
  const request = http.request({
163
- socketPath,
161
+ ...dockerEndpointRequestOptions(endpoint),
164
162
  method: 'GET',
165
163
  path: requestPath,
166
- headers: { Host: 'docker', Accept: 'application/json' },
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 socketPath = resolveSystemDockerSocketPath(process.env.WORK_DOCKER_SOCKET, process.env.DOCKER_HOST);
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(socketPath),
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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"}