jishushell 0.4.30 → 0.5.22

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 (226) hide show
  1. package/Dockerfile.hermes-slim +2 -5
  2. package/apps/anythingllm-container.yaml +287 -0
  3. package/apps/browserless-chromium-container.yaml +18 -6
  4. package/apps/filebrowser-container.yaml +164 -0
  5. package/apps/ollama-binary.yaml +44 -0
  6. package/apps/ollama-with-hollama-binary.yaml +45 -1
  7. package/apps/openclaw-binary.yaml +8 -0
  8. package/apps/openclaw-container.yaml +9 -1
  9. package/apps/openclaw-with-searxng-container.yaml +4 -0
  10. package/apps/searxng-container.yaml +5 -4
  11. package/apps/weknora-container.yaml +471 -0
  12. package/dist/cli/doctor.js +144 -16
  13. package/dist/cli/doctor.js.map +1 -1
  14. package/dist/cli/panel.js.map +1 -1
  15. package/dist/config.d.ts +19 -0
  16. package/dist/config.js +99 -1
  17. package/dist/config.js.map +1 -1
  18. package/dist/install.js +4 -4
  19. package/dist/install.js.map +1 -1
  20. package/dist/routes/auth.js +2 -2
  21. package/dist/routes/auth.js.map +1 -1
  22. package/dist/routes/backup.js +64 -11
  23. package/dist/routes/backup.js.map +1 -1
  24. package/dist/routes/external-mounts.d.ts +17 -0
  25. package/dist/routes/external-mounts.js +73 -0
  26. package/dist/routes/external-mounts.js.map +1 -0
  27. package/dist/routes/file-mounts.d.ts +13 -0
  28. package/dist/routes/file-mounts.js +90 -0
  29. package/dist/routes/file-mounts.js.map +1 -0
  30. package/dist/routes/files-organize.d.ts +28 -0
  31. package/dist/routes/files-organize.js +167 -0
  32. package/dist/routes/files-organize.js.map +1 -0
  33. package/dist/routes/files.d.ts +31 -0
  34. package/dist/routes/files.js +321 -0
  35. package/dist/routes/files.js.map +1 -0
  36. package/dist/routes/instances.js +87 -12
  37. package/dist/routes/instances.js.map +1 -1
  38. package/dist/routes/internal.d.ts +2 -0
  39. package/dist/routes/internal.js +59 -0
  40. package/dist/routes/internal.js.map +1 -0
  41. package/dist/routes/llm.js +29 -0
  42. package/dist/routes/llm.js.map +1 -1
  43. package/dist/routes/setup.js +9 -9
  44. package/dist/routes/setup.js.map +1 -1
  45. package/dist/routes/system.js +1 -1
  46. package/dist/routes/system.js.map +1 -1
  47. package/dist/routes/webdav.d.ts +17 -0
  48. package/dist/routes/webdav.js +114 -0
  49. package/dist/routes/webdav.js.map +1 -0
  50. package/dist/server.js +358 -6
  51. package/dist/server.js.map +1 -1
  52. package/dist/services/agent-apps/catalog.d.ts +3 -0
  53. package/dist/services/agent-apps/catalog.js +40 -13
  54. package/dist/services/agent-apps/catalog.js.map +1 -1
  55. package/dist/services/agent-apps/installers/shell-script.d.ts +1 -1
  56. package/dist/services/agent-apps/installers/shell-script.js +19 -2
  57. package/dist/services/agent-apps/installers/shell-script.js.map +1 -1
  58. package/dist/services/agent-apps/types.d.ts +3 -0
  59. package/dist/services/app/app-compiler.d.ts +1 -1
  60. package/dist/services/app/app-compiler.js +5 -5
  61. package/dist/services/app/app-compiler.js.map +1 -1
  62. package/dist/services/app/app-manager.d.ts +9 -0
  63. package/dist/services/app/app-manager.js +248 -43
  64. package/dist/services/app/app-manager.js.map +1 -1
  65. package/dist/services/app/custom-manager.js.map +1 -1
  66. package/dist/services/app/hermes-agent-manager.js +1 -0
  67. package/dist/services/app/hermes-agent-manager.js.map +1 -1
  68. package/dist/services/app/ollama-manager.js +1 -1
  69. package/dist/services/app/ollama-manager.js.map +1 -1
  70. package/dist/services/app/openclaw-manager.js +37 -5
  71. package/dist/services/app/openclaw-manager.js.map +1 -1
  72. package/dist/services/app/platform-transform.d.ts +32 -0
  73. package/dist/services/app/platform-transform.js +65 -0
  74. package/dist/services/app/platform-transform.js.map +1 -0
  75. package/dist/services/app-passwords.d.ts +61 -0
  76. package/dist/services/app-passwords.js +173 -0
  77. package/dist/services/app-passwords.js.map +1 -0
  78. package/dist/services/backup-manager.d.ts +11 -0
  79. package/dist/services/backup-manager.js +220 -8
  80. package/dist/services/backup-manager.js.map +1 -1
  81. package/dist/services/capability-endpoint-validator.js +26 -7
  82. package/dist/services/capability-endpoint-validator.js.map +1 -1
  83. package/dist/services/connection-apply.d.ts +2 -0
  84. package/dist/services/connection-apply.js +55 -1
  85. package/dist/services/connection-apply.js.map +1 -1
  86. package/dist/services/connection-resolver.js +1 -1
  87. package/dist/services/connection-resolver.js.map +1 -1
  88. package/dist/services/connection-transactor.d.ts +2 -0
  89. package/dist/services/connection-transactor.js +12 -2
  90. package/dist/services/connection-transactor.js.map +1 -1
  91. package/dist/services/external-mounts.d.ts +40 -0
  92. package/dist/services/external-mounts.js +187 -0
  93. package/dist/services/external-mounts.js.map +1 -0
  94. package/dist/services/files-manager.d.ts +252 -0
  95. package/dist/services/files-manager.js +1075 -0
  96. package/dist/services/files-manager.js.map +1 -0
  97. package/dist/services/files-mounts.d.ts +42 -0
  98. package/dist/services/files-mounts.js +207 -0
  99. package/dist/services/files-mounts.js.map +1 -0
  100. package/dist/services/instance-manager.js +90 -32
  101. package/dist/services/instance-manager.js.map +1 -1
  102. package/dist/services/llm-proxy/index.d.ts +28 -0
  103. package/dist/services/llm-proxy/index.js +76 -3
  104. package/dist/services/llm-proxy/index.js.map +1 -1
  105. package/dist/services/llm-proxy/ssrf.js +6 -2
  106. package/dist/services/llm-proxy/ssrf.js.map +1 -1
  107. package/dist/services/llm-proxy/validate-key.d.ts +41 -0
  108. package/dist/services/llm-proxy/validate-key.js +672 -0
  109. package/dist/services/llm-proxy/validate-key.js.map +1 -0
  110. package/dist/services/macos-launchd.d.ts +89 -0
  111. package/dist/services/macos-launchd.js +273 -0
  112. package/dist/services/macos-launchd.js.map +1 -0
  113. package/dist/services/nomad-manager.d.ts +11 -0
  114. package/dist/services/nomad-manager.js +343 -98
  115. package/dist/services/nomad-manager.js.map +1 -1
  116. package/dist/services/organize/applier.d.ts +46 -0
  117. package/dist/services/organize/applier.js +218 -0
  118. package/dist/services/organize/applier.js.map +1 -0
  119. package/dist/services/organize/rules.d.ts +57 -0
  120. package/dist/services/organize/rules.js +286 -0
  121. package/dist/services/organize/rules.js.map +1 -0
  122. package/dist/services/organize/scanner.d.ts +50 -0
  123. package/dist/services/organize/scanner.js +366 -0
  124. package/dist/services/organize/scanner.js.map +1 -0
  125. package/dist/services/organize/store.d.ts +14 -0
  126. package/dist/services/organize/store.js +82 -0
  127. package/dist/services/organize/store.js.map +1 -0
  128. package/dist/services/panel-manager.js +40 -11
  129. package/dist/services/panel-manager.js.map +1 -1
  130. package/dist/services/process-manager.js +3 -2
  131. package/dist/services/process-manager.js.map +1 -1
  132. package/dist/services/runtime/adapters/custom.js +56 -0
  133. package/dist/services/runtime/adapters/custom.js.map +1 -1
  134. package/dist/services/runtime/adapters/hermes.d.ts +4 -3
  135. package/dist/services/runtime/adapters/hermes.js +166 -64
  136. package/dist/services/runtime/adapters/hermes.js.map +1 -1
  137. package/dist/services/runtime/adapters/openclaw-routes.d.ts +8 -2
  138. package/dist/services/runtime/adapters/openclaw-routes.js +68 -0
  139. package/dist/services/runtime/adapters/openclaw-routes.js.map +1 -1
  140. package/dist/services/runtime/adapters/openclaw.d.ts +118 -0
  141. package/dist/services/runtime/adapters/openclaw.js +1459 -49
  142. package/dist/services/runtime/adapters/openclaw.js.map +1 -1
  143. package/dist/services/runtime/instance.d.ts +1 -1
  144. package/dist/services/runtime/instance.js +1 -1
  145. package/dist/services/runtime/instance.js.map +1 -1
  146. package/dist/services/runtime/mcp-shims/anythingllm-shim.d.ts +46 -0
  147. package/dist/services/runtime/mcp-shims/anythingllm-shim.js +281 -0
  148. package/dist/services/runtime/mcp-shims/anythingllm-shim.js.map +1 -0
  149. package/dist/services/runtime/mcp-shims/drive-shim.d.ts +54 -0
  150. package/dist/services/runtime/mcp-shims/drive-shim.js +489 -0
  151. package/dist/services/runtime/mcp-shims/drive-shim.js.map +1 -0
  152. package/dist/services/runtime/types.d.ts +31 -0
  153. package/dist/services/setup-manager.js +190 -68
  154. package/dist/services/setup-manager.js.map +1 -1
  155. package/dist/services/suggestions.js.map +1 -1
  156. package/dist/services/update-manager.js +32 -14
  157. package/dist/services/update-manager.js.map +1 -1
  158. package/dist/services/webdav/server.d.ts +24 -0
  159. package/dist/services/webdav/server.js +420 -0
  160. package/dist/services/webdav/server.js.map +1 -0
  161. package/dist/services/webdav/xml-builder.d.ts +73 -0
  162. package/dist/services/webdav/xml-builder.js +156 -0
  163. package/dist/services/webdav/xml-builder.js.map +1 -0
  164. package/dist/services/workspace-builder.d.ts +29 -0
  165. package/dist/services/workspace-builder.js +188 -0
  166. package/dist/services/workspace-builder.js.map +1 -0
  167. package/dist/types.d.ts +61 -0
  168. package/dist/utils/path-locks.d.ts +30 -0
  169. package/dist/utils/path-locks.js +63 -0
  170. package/dist/utils/path-locks.js.map +1 -0
  171. package/dist/utils/path-safety.d.ts +41 -0
  172. package/dist/utils/path-safety.js +119 -0
  173. package/dist/utils/path-safety.js.map +1 -0
  174. package/dist/utils/safe-write.d.ts +24 -0
  175. package/dist/utils/safe-write.js +82 -0
  176. package/dist/utils/safe-write.js.map +1 -0
  177. package/install/jishu-install.sh +247 -35
  178. package/install/jishu-uninstall.sh +45 -5
  179. package/package.json +20 -2
  180. package/public/assets/ApiKeyField-CvyAOcJS.js +1 -0
  181. package/public/assets/Dashboard-AuJESBlJ.js +1 -0
  182. package/public/assets/{HermesChatPanel-_GHoklgo.js → HermesChatPanel-CByPREwb.js} +1 -1
  183. package/public/assets/HermesConfigForm-DRda8FKX.js +4 -0
  184. package/public/assets/InitPassword-ka4wNpM5.js +1 -0
  185. package/public/assets/InstanceDetail-Cg1nS8HX.js +92 -0
  186. package/public/assets/Login-aPajuQzf.js +1 -0
  187. package/public/assets/NewInstance-Dd1ebNIx.js +1 -0
  188. package/public/assets/ProviderRecommendations-DFmADQ7V.js +1 -0
  189. package/public/assets/Settings-BYQnbLYL.js +1 -0
  190. package/public/assets/Setup-D05lwDOV.js +1 -0
  191. package/public/assets/WeixinLoginPanel-D89kdhP4.js +9 -0
  192. package/public/assets/index-HSXCsceK.css +1 -0
  193. package/public/assets/index-bnBu0nlQ.js +19 -0
  194. package/public/assets/registry-C_qeFTkZ.js +2 -0
  195. package/public/assets/usePolling-Bn93fe7M.js +1 -0
  196. package/public/assets/{vendor-i18n-ucpM0OR0.js → vendor-i18n-flxcMVeP.js} +2 -2
  197. package/public/assets/{vendor-react-Bk1hRGiY.js → vendor-react-ZC5T_huj.js} +7 -7
  198. package/public/index.html +4 -4
  199. package/scripts/check-app-spec.mjs +18 -4
  200. package/scripts/check-colima-launchd.mjs +230 -0
  201. package/scripts/check-new-file-tests.mjs +230 -0
  202. package/scripts/check-quarantine-expiry.mjs +105 -0
  203. package/scripts/perf/README.md +49 -0
  204. package/scripts/perf/auth.js +99 -0
  205. package/scripts/perf/config.js +63 -0
  206. package/scripts/perf/instances.js +143 -0
  207. package/scripts/perf/proxy.js +96 -0
  208. package/scripts/smoke/files-w1.sh +142 -0
  209. package/scripts/smoke-backend.mjs +122 -0
  210. package/scripts/smoke-post-publish.mjs +346 -0
  211. package/public/assets/Dashboard-rkWp-CXd.js +0 -1
  212. package/public/assets/HermesConfigForm-anDnwUp_.js +0 -4
  213. package/public/assets/InitPassword-ZU9_-hDr.js +0 -1
  214. package/public/assets/InstanceDetail-CN0FH1aw.js +0 -92
  215. package/public/assets/Login-BItXqYAJ.js +0 -1
  216. package/public/assets/NewInstance-BousE6kY.js +0 -1
  217. package/public/assets/ProviderRecommendations-DFYj7Fb6.js +0 -1
  218. package/public/assets/Settings-Bttc6QmM.js +0 -1
  219. package/public/assets/Setup-Bsxx1zgj.js +0 -1
  220. package/public/assets/WeixinLoginPanel-DPZpAKgO.js +0 -9
  221. package/public/assets/index-8xZy1z5k.css +0 -1
  222. package/public/assets/index-Dw3HhUYE.js +0 -19
  223. package/public/assets/input-paste-CrNVAyOy.js +0 -1
  224. package/public/assets/providers-DtNXh9JD.js +0 -1
  225. package/public/assets/registry-5s2UB6is.js +0 -2
  226. package/public/assets/usePolling-Do5Erqm_.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-manager.js","sourceRoot":"","sources":["../../src/services/files-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { FileMount } from "./runtime/types.js";
2
+ export declare const MAX_MOUNTS_PER_INSTANCE = 16;
3
+ export declare class FileMountValidationError extends Error {
4
+ mountIndex?: number | undefined;
5
+ constructor(message: string, mountIndex?: number | undefined);
6
+ }
7
+ /**
8
+ * Validate a complete mount set for one instance.
9
+ *
10
+ * @param mounts the proposed list (may be the result of merging defaults +
11
+ * user input); validation is total — every problem is
12
+ * surfaced, not just the first one
13
+ * @param instanceId the owning instance, used for the agent-data
14
+ * isolation rule (path = "agent-data/{otherInstance}"
15
+ * is rejected)
16
+ */
17
+ export declare function validateMounts(mounts: FileMount[], instanceId: string): {
18
+ ok: boolean;
19
+ errors: FileMountValidationError[];
20
+ };
21
+ /**
22
+ * Resolve the effective alias for a mount: explicit non-empty value,
23
+ * else basename of path; root mounts (alias = "" / null) return null.
24
+ */
25
+ export declare function effectiveAlias(m: FileMount): string | null;
26
+ /**
27
+ * Ensure every mount target physically exists under filesRoot. Required
28
+ * before docker tries to bind-mount them — docker errors if the host
29
+ * path is missing.
30
+ *
31
+ * Side-effect: creates 0o755 directories. Will not modify existing
32
+ * directories. Throws on permission errors so the caller can surface
33
+ * a clear message.
34
+ */
35
+ export declare function ensureMountTargets(filesRoot: string, mounts: FileMount[]): void;
36
+ /**
37
+ * Default mount applied to every newly created instance: the instance's
38
+ * own agent-data subtree, alias "_out". This is the directory the
39
+ * agent uses to drop output that the user is then expected to find in
40
+ * the Files page.
41
+ */
42
+ export declare function defaultMountsForNewInstance(instanceId: string): FileMount[];
@@ -0,0 +1,207 @@
1
+ /**
2
+ * File mount configuration management for instances (M1 W2 PR-1).
3
+ *
4
+ * One mount = one subtree of ~/.jishushell/files/ visible inside an
5
+ * instance's container, optionally read-only. Mounts live on the
6
+ * instance runtime config (`fileMounts` field added in W2).
7
+ *
8
+ * This module is the *only* place that:
9
+ * - validates a proposed mount set (no duplicate aliases, no
10
+ * reserved paths, no privilege escalation across instances)
11
+ * - mkdirs the host-side mount targets so docker can bind them
12
+ *
13
+ * It does NOT:
14
+ * - touch container state (that's workspace-builder.ts in PR-2)
15
+ * - touch adapter volume strings (that's openclaw.ts in PR-3)
16
+ *
17
+ * Invariants enforced here:
18
+ * - path passes path-safety
19
+ * - path is not "" (root mount = no path) — represented via alias
20
+ * - mode is ro|rw
21
+ * - alias is "" / null (root) or a single name segment
22
+ * - alias != ".trash", "agent-data", "skills", "memory", anything
23
+ * leading with "."
24
+ * - at most ONE root mount (alias === "" or null)
25
+ * - aliases unique within a single mount set
26
+ * - path != "agent-data/{otherInstance}" — only own agent-data
27
+ * - path != ".trash" / ".knowledge" / ".organize-rules.json"
28
+ * - <= 16 mounts per instance
29
+ */
30
+ import * as fs from "node:fs";
31
+ import * as path from "node:path";
32
+ import { validateRelativePath, PathSafetyError, } from "../utils/path-safety.js";
33
+ export const MAX_MOUNTS_PER_INSTANCE = 16;
34
+ const RESERVED_TOP_PATHS = new Set([
35
+ ".trash",
36
+ ".knowledge",
37
+ ".organize-rules.json",
38
+ ".pending-organize.json",
39
+ ".organize-batches.json",
40
+ ]);
41
+ const RESERVED_ALIASES = new Set([
42
+ ".trash",
43
+ "skills",
44
+ "memory",
45
+ ".openclaw",
46
+ "node_modules",
47
+ ".npm-global",
48
+ ]);
49
+ export class FileMountValidationError extends Error {
50
+ mountIndex;
51
+ constructor(message, mountIndex) {
52
+ super(message);
53
+ this.mountIndex = mountIndex;
54
+ this.name = "FileMountValidationError";
55
+ }
56
+ }
57
+ /**
58
+ * Validate a complete mount set for one instance.
59
+ *
60
+ * @param mounts the proposed list (may be the result of merging defaults +
61
+ * user input); validation is total — every problem is
62
+ * surfaced, not just the first one
63
+ * @param instanceId the owning instance, used for the agent-data
64
+ * isolation rule (path = "agent-data/{otherInstance}"
65
+ * is rejected)
66
+ */
67
+ export function validateMounts(mounts, instanceId) {
68
+ const errors = [];
69
+ if (mounts.length > MAX_MOUNTS_PER_INSTANCE) {
70
+ errors.push(new FileMountValidationError(`too many mounts (${mounts.length} > ${MAX_MOUNTS_PER_INSTANCE})`));
71
+ }
72
+ const seenAliases = new Set();
73
+ let rootMountCount = 0;
74
+ mounts.forEach((m, idx) => {
75
+ // mode
76
+ if (m.mode !== "ro" && m.mode !== "rw") {
77
+ errors.push(new FileMountValidationError(`mount[${idx}].mode must be "ro" or "rw"`, idx));
78
+ }
79
+ // path
80
+ if (typeof m.path !== "string" || m.path === "") {
81
+ errors.push(new FileMountValidationError(`mount[${idx}].path must be non-empty`, idx));
82
+ }
83
+ else {
84
+ try {
85
+ validateRelativePath(m.path);
86
+ }
87
+ catch (e) {
88
+ if (e instanceof PathSafetyError) {
89
+ errors.push(new FileMountValidationError(`mount[${idx}].path invalid: ${e.message}`, idx));
90
+ }
91
+ else {
92
+ throw e;
93
+ }
94
+ }
95
+ // Reserved system paths
96
+ const topSegment = m.path.split("/")[0];
97
+ if (RESERVED_TOP_PATHS.has(topSegment)) {
98
+ errors.push(new FileMountValidationError(`mount[${idx}].path "${m.path}" is reserved (cannot mount ${topSegment})`, idx));
99
+ }
100
+ // Cross-instance agent-data isolation
101
+ if (m.path.startsWith("agent-data/") || m.path === "agent-data") {
102
+ const owner = m.path === "agent-data" ? "" : m.path.split("/")[1] ?? "";
103
+ if (owner && owner !== instanceId) {
104
+ errors.push(new FileMountValidationError(`mount[${idx}].path: agent-data/${owner} belongs to another instance`, idx));
105
+ }
106
+ }
107
+ }
108
+ // alias
109
+ if (m.alias === "" || m.alias === null) {
110
+ rootMountCount++;
111
+ }
112
+ else if (m.alias === undefined) {
113
+ // implicit alias = basename(path); validate that
114
+ const implied = (m.path ?? "").split("/").pop() ?? "";
115
+ validateAliasName(implied, idx, errors);
116
+ registerAlias(implied, idx, seenAliases, errors);
117
+ }
118
+ else if (typeof m.alias === "string") {
119
+ validateAliasName(m.alias, idx, errors);
120
+ registerAlias(m.alias, idx, seenAliases, errors);
121
+ }
122
+ else {
123
+ errors.push(new FileMountValidationError(`mount[${idx}].alias must be string, "" or null`, idx));
124
+ }
125
+ });
126
+ if (rootMountCount > 1) {
127
+ errors.push(new FileMountValidationError(`at most one root mount (alias = "" or null) is allowed; found ${rootMountCount}`));
128
+ }
129
+ if (rootMountCount === 1 && mounts.length > 1) {
130
+ errors.push(new FileMountValidationError(`root mount is exclusive — cannot combine with named mounts`));
131
+ }
132
+ return { ok: errors.length === 0, errors };
133
+ }
134
+ function validateAliasName(alias, idx, errors) {
135
+ if (!alias) {
136
+ errors.push(new FileMountValidationError(`mount[${idx}] empty alias on non-root mount`, idx));
137
+ return;
138
+ }
139
+ if (alias.includes("/") || alias.includes("\\")) {
140
+ errors.push(new FileMountValidationError(`mount[${idx}].alias cannot contain "/" or "\\\\"`, idx));
141
+ }
142
+ if (alias === "." || alias === "..") {
143
+ errors.push(new FileMountValidationError(`mount[${idx}].alias cannot be "." or ".."`, idx));
144
+ }
145
+ if (alias.startsWith(".")) {
146
+ errors.push(new FileMountValidationError(`mount[${idx}].alias cannot start with "."`, idx));
147
+ }
148
+ if (alias.includes("\0")) {
149
+ errors.push(new FileMountValidationError(`mount[${idx}].alias contains null byte`, idx));
150
+ }
151
+ if (RESERVED_ALIASES.has(alias)) {
152
+ errors.push(new FileMountValidationError(`mount[${idx}].alias "${alias}" is reserved`, idx));
153
+ }
154
+ if (alias.length > 64) {
155
+ errors.push(new FileMountValidationError(`mount[${idx}].alias too long (max 64 chars)`, idx));
156
+ }
157
+ }
158
+ function registerAlias(alias, idx, seen, errors) {
159
+ if (!alias)
160
+ return;
161
+ if (seen.has(alias)) {
162
+ errors.push(new FileMountValidationError(`mount[${idx}].alias "${alias}" duplicates an earlier mount`, idx));
163
+ }
164
+ seen.add(alias);
165
+ }
166
+ /**
167
+ * Resolve the effective alias for a mount: explicit non-empty value,
168
+ * else basename of path; root mounts (alias = "" / null) return null.
169
+ */
170
+ export function effectiveAlias(m) {
171
+ if (m.alias === null || m.alias === "")
172
+ return null;
173
+ if (m.alias === undefined) {
174
+ const last = (m.path ?? "").split("/").pop() ?? "";
175
+ return last || null;
176
+ }
177
+ return m.alias;
178
+ }
179
+ /**
180
+ * Ensure every mount target physically exists under filesRoot. Required
181
+ * before docker tries to bind-mount them — docker errors if the host
182
+ * path is missing.
183
+ *
184
+ * Side-effect: creates 0o755 directories. Will not modify existing
185
+ * directories. Throws on permission errors so the caller can surface
186
+ * a clear message.
187
+ */
188
+ export function ensureMountTargets(filesRoot, mounts) {
189
+ for (const m of mounts) {
190
+ if (!m.path)
191
+ continue;
192
+ const abs = path.join(filesRoot, m.path);
193
+ fs.mkdirSync(abs, { recursive: true });
194
+ }
195
+ }
196
+ /**
197
+ * Default mount applied to every newly created instance: the instance's
198
+ * own agent-data subtree, alias "_out". This is the directory the
199
+ * agent uses to drop output that the user is then expected to find in
200
+ * the Files page.
201
+ */
202
+ export function defaultMountsForNewInstance(instanceId) {
203
+ return [
204
+ { path: `agent-data/${instanceId}`, mode: "rw", alias: "_out" },
205
+ ];
206
+ }
207
+ //# sourceMappingURL=files-mounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-mounts.js","sourceRoot":"","sources":["../../src/services/files-mounts.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ const APPS_DIR = resolveConfigPath(getConfigValue("APPS_DIR"), join(JISHUSHELL_H
24
24
  const BACKUPS_DIR = resolveConfigPath(getConfigValue("BACKUPS_DIR"), join(JISHUSHELL_HOME, "backups"));
25
25
  const INSTANCES_DIR = resolveConfigPath(getConfigValue("INSTANCES_DIR"), join(JISHUSHELL_HOME, "instances"));
26
26
  const getPanelConfigValue = getConfigValue("getPanelConfig");
27
- const getPanelConfig = typeof getPanelConfigValue === "function"
27
+ const _getPanelConfig = typeof getPanelConfigValue === "function"
28
28
  ? getPanelConfigValue
29
29
  : () => ({});
30
30
  const _configChangeListeners = [];
@@ -98,28 +98,6 @@ export function defaultModelEnvFile(instanceId) {
98
98
  export function normalizePath(p) {
99
99
  return resolve(p.replace(/^~/, userInfo().homedir));
100
100
  }
101
- // ── JSON / deep merge ──
102
- function loadJson(path) {
103
- try {
104
- return JSON.parse(readFileSync(path, "utf-8"));
105
- }
106
- catch (e) {
107
- console.warn(`[instance] Failed to parse ${path}: ${e.message}`);
108
- return null;
109
- }
110
- }
111
- function deepMerge(base, overlay) {
112
- if (typeof base !== "object" || base === null ||
113
- typeof overlay !== "object" || overlay === null ||
114
- Array.isArray(base) || Array.isArray(overlay)) {
115
- return structuredClone(overlay);
116
- }
117
- const merged = structuredClone(base);
118
- for (const key of Object.keys(overlay)) {
119
- merged[key] = key in merged ? deepMerge(merged[key], overlay[key]) : structuredClone(overlay[key]);
120
- }
121
- return merged;
122
- }
123
101
  // ── Gateway port helpers ──
124
102
  // Track in-flight port allocations to prevent race conditions
125
103
  // between concurrent createInstance() calls.
@@ -899,6 +877,7 @@ export function getListeningHostForPort(port) {
899
877
  // a host nothing is listening on.
900
878
  const safe = safePort(port);
901
879
  const fromSs = () => {
880
+ const hosts = [];
902
881
  try {
903
882
  const out = execFileSync("ss", ["-tlnH", "sport", "=", ":" + safe], {
904
883
  encoding: "utf-8",
@@ -910,13 +889,14 @@ export function getListeningHostForPort(port) {
910
889
  if (!match)
911
890
  match = line.match(/\s\[([0-9a-fA-F:]+)\]:(\d+)\s/);
912
891
  if (match && match[2] === String(port))
913
- return match[1];
892
+ hosts.push(match[1]);
914
893
  }
915
894
  }
916
895
  catch { /* ss not available or no match */ }
917
- return null;
896
+ return hosts;
918
897
  };
919
898
  const fromLsof = () => {
899
+ const hosts = [];
920
900
  try {
921
901
  // `-FnP` keeps numeric output (no name resolution, no /etc/services).
922
902
  // Lines beginning with `n` carry the bind address: e.g. `n10.188.0.21:8080`,
@@ -932,24 +912,98 @@ export function getListeningHostForPort(port) {
932
912
  const body = line.slice(1);
933
913
  // IPv6 form: [::1]:8080 → strip brackets
934
914
  const v6 = body.match(/^\[([0-9a-fA-F:]+)\]:(\d+)$/);
935
- if (v6 && v6[2] === String(port))
936
- return v6[1];
915
+ if (v6 && v6[2] === String(port)) {
916
+ hosts.push(v6[1]);
917
+ continue;
918
+ }
937
919
  const idx = body.lastIndexOf(":");
938
920
  if (idx <= 0)
939
921
  continue;
940
922
  const addr = body.slice(0, idx);
941
923
  const portPart = body.slice(idx + 1);
942
924
  if (portPart === String(port))
943
- return addr === "*" ? "0.0.0.0" : addr;
925
+ hosts.push(addr === "*" ? "0.0.0.0" : addr);
944
926
  }
945
927
  }
946
928
  catch { /* lsof unavailable or no match */ }
947
- return null;
929
+ return hosts;
948
930
  };
949
- const detected = (process.platform === "linux" ? fromSs() : fromLsof()) ?? fromLsof() ?? fromSs();
950
- if (!detected)
931
+ const detected = process.platform === "linux"
932
+ ? [...fromSs(), ...fromLsof()]
933
+ : [...fromLsof(), ...fromSs()];
934
+ const unique = [...new Set(detected)];
935
+ if (unique.length === 0)
951
936
  return "127.0.0.1";
952
- return detected === "0.0.0.0" ? "127.0.0.1" : detected;
937
+ return unique[0] === "0.0.0.0" ? "127.0.0.1" : unique[0];
938
+ }
939
+ function getExclusiveLoopbackListenerForPort(port) {
940
+ const safe = safePort(port);
941
+ const hosts = new Set();
942
+ try {
943
+ const out = execFileSync("lsof", ["-nP", "-iTCP:" + safe, "-sTCP:LISTEN", "-FnP"], {
944
+ encoding: "utf-8",
945
+ timeout: 3000,
946
+ stdio: ["pipe", "pipe", "pipe"],
947
+ });
948
+ for (const line of out.split("\n")) {
949
+ if (!line.startsWith("n"))
950
+ continue;
951
+ const body = line.slice(1);
952
+ if (body === `127.0.0.1:${safe}`) {
953
+ hosts.add("127.0.0.1");
954
+ continue;
955
+ }
956
+ if (body === `[::1]:${safe}`) {
957
+ hosts.add("::1");
958
+ continue;
959
+ }
960
+ if (!body.endsWith(`:${safe}`))
961
+ continue;
962
+ const addr = body.startsWith("[")
963
+ ? body.slice(1, body.lastIndexOf("]"))
964
+ : body.slice(0, body.lastIndexOf(":"));
965
+ hosts.add(addr === "*" ? "0.0.0.0" : addr);
966
+ }
967
+ }
968
+ catch { /* lsof unavailable or no match */ }
969
+ try {
970
+ const out = execFileSync("ss", ["-tlnH", "sport", "=", ":" + safe], {
971
+ encoding: "utf-8",
972
+ timeout: 3000,
973
+ stdio: ["pipe", "pipe", "pipe"],
974
+ });
975
+ for (const line of out.split("\n")) {
976
+ const ipv4 = line.match(/\s([\d.]+):(\d+)\s/);
977
+ if (ipv4 && ipv4[2] === String(safe))
978
+ hosts.add(ipv4[1]);
979
+ const ipv6 = line.match(/\s\[([0-9a-fA-F:]+)\]:(\d+)\s/);
980
+ if (ipv6 && ipv6[2] === String(safe))
981
+ hosts.add(ipv6[1]);
982
+ }
983
+ }
984
+ catch { /* ss unavailable or no match */ }
985
+ if (hosts.size === 0)
986
+ return null;
987
+ let hasIpv4Loopback = false;
988
+ let hasIpv6Loopback = false;
989
+ for (const host of hosts) {
990
+ if (host === "127.0.0.1") {
991
+ hasIpv4Loopback = true;
992
+ continue;
993
+ }
994
+ if (host === "::1") {
995
+ hasIpv6Loopback = true;
996
+ continue;
997
+ }
998
+ if (host === "0.0.0.0" || host === "::")
999
+ return null;
1000
+ return null;
1001
+ }
1002
+ if (hasIpv4Loopback)
1003
+ return "127.0.0.1";
1004
+ if (hasIpv6Loopback)
1005
+ return "::1";
1006
+ return null;
953
1007
  }
954
1008
  function getPrimaryIpv4Address() {
955
1009
  try {
@@ -1056,6 +1110,10 @@ export async function getGatewayHost(instanceId) {
1056
1110
  }
1057
1111
  // If Nomad API resolved a non-default host, cache and return it
1058
1112
  if (result !== "127.0.0.1") {
1113
+ const localLoopbackHost = getExclusiveLoopbackListenerForPort(port);
1114
+ if (localLoopbackHost) {
1115
+ result = localLoopbackHost;
1116
+ }
1059
1117
  _gwHostCache.set(instanceId, { host: result, ts: Date.now() });
1060
1118
  return result;
1061
1119
  }