@heimdall-ai/heimdall 0.1.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 (67) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +471 -0
  3. package/dist/config/constants.d.ts +24 -0
  4. package/dist/config/constants.d.ts.map +1 -0
  5. package/dist/config/constants.js +70 -0
  6. package/dist/config/constants.js.map +1 -0
  7. package/dist/core/bash-manager.d.ts +56 -0
  8. package/dist/core/bash-manager.d.ts.map +1 -0
  9. package/dist/core/bash-manager.js +106 -0
  10. package/dist/core/bash-manager.js.map +1 -0
  11. package/dist/core/pyodide-manager.d.ts +125 -0
  12. package/dist/core/pyodide-manager.d.ts.map +1 -0
  13. package/dist/core/pyodide-manager.js +669 -0
  14. package/dist/core/pyodide-manager.js.map +1 -0
  15. package/dist/core/pyodide-worker.d.ts +9 -0
  16. package/dist/core/pyodide-worker.d.ts.map +1 -0
  17. package/dist/core/pyodide-worker.js +295 -0
  18. package/dist/core/pyodide-worker.js.map +1 -0
  19. package/dist/core/secure-fs.d.ts +101 -0
  20. package/dist/core/secure-fs.d.ts.map +1 -0
  21. package/dist/core/secure-fs.js +279 -0
  22. package/dist/core/secure-fs.js.map +1 -0
  23. package/dist/integration.test.d.ts +10 -0
  24. package/dist/integration.test.d.ts.map +1 -0
  25. package/dist/integration.test.js +439 -0
  26. package/dist/integration.test.js.map +1 -0
  27. package/dist/resources/index.d.ts +12 -0
  28. package/dist/resources/index.d.ts.map +1 -0
  29. package/dist/resources/index.js +13 -0
  30. package/dist/resources/index.js.map +1 -0
  31. package/dist/resources/workspace.d.ts +12 -0
  32. package/dist/resources/workspace.d.ts.map +1 -0
  33. package/dist/resources/workspace.js +105 -0
  34. package/dist/resources/workspace.js.map +1 -0
  35. package/dist/server.d.ts +17 -0
  36. package/dist/server.d.ts.map +1 -0
  37. package/dist/server.js +51 -0
  38. package/dist/server.js.map +1 -0
  39. package/dist/tools/bash-execution.d.ts +13 -0
  40. package/dist/tools/bash-execution.d.ts.map +1 -0
  41. package/dist/tools/bash-execution.js +135 -0
  42. package/dist/tools/bash-execution.js.map +1 -0
  43. package/dist/tools/filesystem.d.ts +12 -0
  44. package/dist/tools/filesystem.d.ts.map +1 -0
  45. package/dist/tools/filesystem.js +104 -0
  46. package/dist/tools/filesystem.js.map +1 -0
  47. package/dist/tools/index.d.ts +13 -0
  48. package/dist/tools/index.d.ts.map +1 -0
  49. package/dist/tools/index.js +17 -0
  50. package/dist/tools/index.js.map +1 -0
  51. package/dist/tools/python-execution.d.ts +12 -0
  52. package/dist/tools/python-execution.d.ts.map +1 -0
  53. package/dist/tools/python-execution.js +77 -0
  54. package/dist/tools/python-execution.js.map +1 -0
  55. package/dist/types/index.d.ts +64 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +2 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/dist/utils/async-lock.d.ts +35 -0
  60. package/dist/utils/async-lock.d.ts.map +1 -0
  61. package/dist/utils/async-lock.js +57 -0
  62. package/dist/utils/async-lock.js.map +1 -0
  63. package/dist/utils/index.d.ts +5 -0
  64. package/dist/utils/index.d.ts.map +1 -0
  65. package/dist/utils/index.js +5 -0
  66. package/dist/utils/index.js.map +1 -0
  67. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyodide-manager.js","sourceRoot":"","sources":["../../src/core/pyodide-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Pyodide Worker - Runs Python code in a separate thread
3
+ *
4
+ * This worker enables true timeout enforcement for Python execution by
5
+ * running Pyodide in a separate thread that can be terminated if it
6
+ * exceeds the timeout limit.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=pyodide-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyodide-worker.d.ts","sourceRoot":"","sources":["../../src/core/pyodide-worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Pyodide Worker - Runs Python code in a separate thread
3
+ *
4
+ * This worker enables true timeout enforcement for Python execution by
5
+ * running Pyodide in a separate thread that can be terminated if it
6
+ * exceeds the timeout limit.
7
+ */
8
+ import { parentPort, workerData } from "worker_threads";
9
+ import { loadPyodide } from "pyodide";
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ const { workspaceDir, virtualWorkspace } = workerData;
13
+ let pyodide = null;
14
+ /**
15
+ * Resolve symlinks and validate that the real path is within the workspace.
16
+ * This prevents symlink-based path traversal attacks.
17
+ *
18
+ * @param hostPath - The host filesystem path to validate
19
+ * @throws Error if the resolved path escapes the workspace
20
+ */
21
+ async function validateHostPathWithSymlinkResolution(hostPath) {
22
+ try {
23
+ const realPath = await fs.promises.realpath(hostPath);
24
+ const realWorkspace = await fs.promises.realpath(workspaceDir);
25
+ if (!realPath.startsWith(realWorkspace + path.sep) && realPath !== realWorkspace) {
26
+ throw new Error("Invalid path: Symlink points outside workspace. This is a security violation.");
27
+ }
28
+ }
29
+ catch (e) {
30
+ if (e.code === "ENOENT") {
31
+ await validateParentPathForSymlinks(hostPath);
32
+ }
33
+ else if (e.message?.includes("security violation")) {
34
+ throw e;
35
+ }
36
+ }
37
+ }
38
+ /**
39
+ * For files that don't exist yet, validate parent directories for symlinks.
40
+ */
41
+ async function validateParentPathForSymlinks(hostPath) {
42
+ let currentPath = path.dirname(hostPath);
43
+ const realWorkspace = await fs.promises.realpath(workspaceDir);
44
+ while (currentPath !== path.dirname(currentPath)) {
45
+ try {
46
+ const realPath = await fs.promises.realpath(currentPath);
47
+ if (!realPath.startsWith(realWorkspace + path.sep) && realPath !== realWorkspace) {
48
+ throw new Error("Invalid path: Parent directory symlink points outside workspace. This is a security violation.");
49
+ }
50
+ return;
51
+ }
52
+ catch (e) {
53
+ if (e.code === "ENOENT") {
54
+ currentPath = path.dirname(currentPath);
55
+ }
56
+ else if (e.message?.includes("security violation")) {
57
+ throw e;
58
+ }
59
+ else {
60
+ return;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * Sync files from host filesystem to Pyodide virtual FS
67
+ */
68
+ async function syncHostToVirtual(py, hostPath, virtualPath) {
69
+ try {
70
+ await fs.promises.access(hostPath);
71
+ }
72
+ catch {
73
+ return;
74
+ }
75
+ const stat = await fs.promises.stat(hostPath);
76
+ if (!stat.isDirectory()) {
77
+ const parentDir = path.posix.dirname(virtualPath);
78
+ if (parentDir && parentDir !== "/" && !parentDir.includes("..")) {
79
+ try {
80
+ py.FS.mkdirTree(parentDir);
81
+ }
82
+ catch {
83
+ // Directory might already exist
84
+ }
85
+ }
86
+ const content = await fs.promises.readFile(hostPath);
87
+ py.FS.writeFile(virtualPath, content);
88
+ return;
89
+ }
90
+ try {
91
+ py.FS.mkdirTree(virtualPath);
92
+ }
93
+ catch {
94
+ // Directory might already exist
95
+ }
96
+ const items = await fs.promises.readdir(hostPath);
97
+ for (const item of items) {
98
+ const hostItemPath = path.join(hostPath, item);
99
+ const virtualItemPath = `${virtualPath}/${item}`;
100
+ await syncHostToVirtual(py, hostItemPath, virtualItemPath);
101
+ }
102
+ }
103
+ /**
104
+ * Sync files from Pyodide virtual FS to host filesystem.
105
+ * Includes symlink protection to prevent writing outside workspace.
106
+ */
107
+ async function syncVirtualToHost(py, virtualPath, hostPath) {
108
+ // SECURITY: Validate host path doesn't escape workspace via symlinks
109
+ await validateHostPathWithSymlinkResolution(hostPath);
110
+ let stat;
111
+ try {
112
+ stat = py.FS.stat(virtualPath);
113
+ }
114
+ catch {
115
+ return;
116
+ }
117
+ const isDir = py.FS.isDir(stat.mode);
118
+ if (!isDir) {
119
+ const parentDir = path.dirname(hostPath);
120
+ await fs.promises.mkdir(parentDir, { recursive: true });
121
+ // Re-validate after mkdir
122
+ await validateHostPathWithSymlinkResolution(hostPath);
123
+ const content = py.FS.readFile(virtualPath);
124
+ await fs.promises.writeFile(hostPath, content);
125
+ return;
126
+ }
127
+ await fs.promises.mkdir(hostPath, { recursive: true });
128
+ // Re-validate after mkdir
129
+ await validateHostPathWithSymlinkResolution(hostPath);
130
+ let items;
131
+ try {
132
+ items = py.FS.readdir(virtualPath).filter((x) => x !== "." && x !== "..");
133
+ }
134
+ catch {
135
+ return;
136
+ }
137
+ for (const item of items) {
138
+ const virtualItemPath = `${virtualPath}/${item}`;
139
+ const hostItemPath = path.join(hostPath, item);
140
+ await syncVirtualToHost(py, virtualItemPath, hostItemPath);
141
+ }
142
+ }
143
+ /**
144
+ * Initialize Pyodide
145
+ */
146
+ async function initializePyodide() {
147
+ const py = await loadPyodide({
148
+ stdout: (text) => process.stdout.write(text),
149
+ stderr: (text) => process.stderr.write(text),
150
+ });
151
+ // Create workspace directory in virtual filesystem
152
+ py.FS.mkdirTree(virtualWorkspace);
153
+ // Load micropip for package installation
154
+ try {
155
+ await py.loadPackage("micropip");
156
+ }
157
+ catch {
158
+ // micropip may not be available in all environments
159
+ }
160
+ // Add workspace to Python path
161
+ const escapedPath = virtualWorkspace.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
162
+ py.runPython(`
163
+ import sys
164
+ if '${escapedPath}' not in sys.path:
165
+ sys.path.insert(0, '${escapedPath}')
166
+ `);
167
+ return py;
168
+ }
169
+ /**
170
+ * Execute Python code
171
+ */
172
+ async function executeCode(py, code, packages) {
173
+ // Sync host files to virtual FS before execution
174
+ await syncHostToVirtual(py, workspaceDir, virtualWorkspace);
175
+ // Install requested packages
176
+ if (packages.length > 0) {
177
+ try {
178
+ const micropip = py.pyimport("micropip");
179
+ for (const pkg of packages) {
180
+ try {
181
+ await micropip.install(pkg);
182
+ }
183
+ catch {
184
+ // Package installation may fail
185
+ }
186
+ }
187
+ }
188
+ catch {
189
+ // micropip may not be available
190
+ }
191
+ }
192
+ // Capture stdout and stderr
193
+ const stdoutBuffer = [];
194
+ const stderrBuffer = [];
195
+ py.setStdout({
196
+ batched: (text) => stdoutBuffer.push(text),
197
+ });
198
+ py.setStderr({
199
+ batched: (text) => stderrBuffer.push(text),
200
+ });
201
+ try {
202
+ // Set working directory
203
+ const escapedPath = virtualWorkspace.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
204
+ py.runPython(`import os; os.chdir('${escapedPath}')`);
205
+ // Auto-detect and load packages from imports
206
+ await py.loadPackagesFromImports(code);
207
+ // Run the code
208
+ const result = await py.runPythonAsync(code);
209
+ // Sync virtual FS back to host after execution
210
+ await syncVirtualToHost(py, virtualWorkspace, workspaceDir);
211
+ // Convert result to string
212
+ let resultStr = null;
213
+ if (result !== undefined && result !== null) {
214
+ try {
215
+ resultStr = py.runPython(`repr(${JSON.stringify(result)})`);
216
+ }
217
+ catch {
218
+ resultStr = String(result);
219
+ }
220
+ }
221
+ return {
222
+ type: "result",
223
+ success: true,
224
+ stdout: stdoutBuffer.join(""),
225
+ stderr: stderrBuffer.join(""),
226
+ result: resultStr,
227
+ error: null,
228
+ };
229
+ }
230
+ catch (e) {
231
+ // Sync even on error (code may have written files before failing)
232
+ await syncVirtualToHost(py, virtualWorkspace, workspaceDir);
233
+ const errorMessage = e instanceof Error ? e.message : String(e);
234
+ return {
235
+ type: "result",
236
+ success: false,
237
+ stdout: stdoutBuffer.join(""),
238
+ stderr: stderrBuffer.join(""),
239
+ result: null,
240
+ error: errorMessage,
241
+ };
242
+ }
243
+ finally {
244
+ // Reset stdout/stderr
245
+ py.setStdout({ batched: (text) => process.stdout.write(text + "\n") });
246
+ py.setStderr({ batched: (text) => process.stderr.write(text + "\n") });
247
+ }
248
+ }
249
+ /**
250
+ * Main worker entry point
251
+ */
252
+ async function main() {
253
+ if (!parentPort) {
254
+ throw new Error("This file must be run as a worker thread");
255
+ }
256
+ try {
257
+ // Initialize Pyodide
258
+ pyodide = await initializePyodide();
259
+ // Signal that we're ready
260
+ parentPort.postMessage({ type: "ready" });
261
+ // Listen for messages
262
+ parentPort.on("message", (message) => {
263
+ if (message.type === "execute") {
264
+ // Handle async execution in a separate function to avoid promise issues
265
+ void (async () => {
266
+ try {
267
+ const result = await executeCode(pyodide, message.code, message.packages);
268
+ parentPort.postMessage(result);
269
+ }
270
+ catch (e) {
271
+ parentPort.postMessage({
272
+ type: "error",
273
+ error: e instanceof Error ? e.message : String(e),
274
+ });
275
+ }
276
+ })();
277
+ }
278
+ });
279
+ }
280
+ catch (e) {
281
+ parentPort.postMessage({
282
+ type: "error",
283
+ error: `Worker initialization failed: ${e instanceof Error ? e.message : String(e)}`,
284
+ });
285
+ }
286
+ }
287
+ main().catch((e) => {
288
+ if (parentPort) {
289
+ parentPort.postMessage({
290
+ type: "error",
291
+ error: `Worker crashed: ${e instanceof Error ? e.message : String(e)}`,
292
+ });
293
+ }
294
+ });
295
+ //# sourceMappingURL=pyodide-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pyodide-worker.js","sourceRoot":"","sources":["../../src/core/pyodide-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * SecureFs - Secure filesystem wrapper with symlink protection
3
+ *
4
+ * Wraps ReadWriteFs to add symlink validation before all file operations.
5
+ * Prevents symlink-based path traversal attacks by resolving real paths
6
+ * and ensuring they stay within the workspace directory.
7
+ *
8
+ * @see SECURITY-REVIEW.md for security details
9
+ */
10
+ import { type CpOptions, type FsStat, type IFileSystem, type MkdirOptions, type RmOptions, type FileContent, type BufferEncoding } from "just-bash";
11
+ interface DirentEntry {
12
+ name: string;
13
+ isFile: boolean;
14
+ isDirectory: boolean;
15
+ isSymbolicLink: boolean;
16
+ }
17
+ interface ReadFileOptions {
18
+ encoding?: BufferEncoding | null;
19
+ }
20
+ interface WriteFileOptions {
21
+ encoding?: BufferEncoding;
22
+ }
23
+ export interface SecureFsOptions {
24
+ /**
25
+ * The root directory on the real filesystem.
26
+ * All paths are relative to this root and cannot escape it.
27
+ */
28
+ root: string;
29
+ }
30
+ /**
31
+ * Error thrown when a symlink attack is detected
32
+ */
33
+ export declare class SymlinkSecurityError extends Error {
34
+ constructor(message: string);
35
+ }
36
+ /**
37
+ * SecureFs wraps ReadWriteFs with symlink protection
38
+ *
39
+ * Before every file operation, it validates that the resolved real path
40
+ * stays within the workspace directory. This prevents:
41
+ * - Direct symlinks pointing outside workspace
42
+ * - Nested symlink chains escaping workspace
43
+ * - Parent directory symlinks
44
+ * - Relative symlinks that escape
45
+ */
46
+ export declare class SecureFs implements IFileSystem {
47
+ private readonly inner;
48
+ private readonly root;
49
+ private readonly resolvedRoot;
50
+ constructor(options: SecureFsOptions);
51
+ /**
52
+ * Convert a virtual path to a real filesystem path
53
+ */
54
+ private toRealPath;
55
+ /**
56
+ * Validate that a path doesn't escape the workspace via symlinks
57
+ *
58
+ * SECURITY: This is the core protection against symlink attacks.
59
+ * It resolves ALL symlinks in the path and verifies the final
60
+ * real path is within the workspace directory.
61
+ */
62
+ private validatePath;
63
+ /**
64
+ * Validate parent directories for paths that don't exist yet
65
+ *
66
+ * SECURITY: When creating new files, we need to ensure that
67
+ * parent directories aren't symlinks pointing outside workspace.
68
+ */
69
+ private validateParentPath;
70
+ /**
71
+ * Check if a real path is within the workspace
72
+ */
73
+ private isWithinWorkspace;
74
+ /**
75
+ * Validate symlink creation doesn't point outside workspace
76
+ *
77
+ * SECURITY: Block creation of symlinks that point to external targets
78
+ */
79
+ private validateSymlinkTarget;
80
+ readFile(filePath: string, options?: ReadFileOptions | BufferEncoding): Promise<string>;
81
+ readFileBuffer(filePath: string): Promise<Uint8Array>;
82
+ writeFile(filePath: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
83
+ appendFile(filePath: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
84
+ exists(filePath: string): Promise<boolean>;
85
+ stat(filePath: string): Promise<FsStat>;
86
+ lstat(filePath: string): Promise<FsStat>;
87
+ mkdir(filePath: string, options?: MkdirOptions): Promise<void>;
88
+ readdir(filePath: string): Promise<string[]>;
89
+ readdirWithFileTypes(filePath: string): Promise<DirentEntry[]>;
90
+ rm(filePath: string, options?: RmOptions): Promise<void>;
91
+ cp(src: string, dest: string, options?: CpOptions): Promise<void>;
92
+ mv(src: string, dest: string): Promise<void>;
93
+ resolvePath(base: string, relativePath: string): string;
94
+ getAllPaths(): string[];
95
+ chmod(filePath: string, mode: number): Promise<void>;
96
+ symlink(target: string, linkPath: string): Promise<void>;
97
+ link(existingPath: string, newPath: string): Promise<void>;
98
+ readlink(filePath: string): Promise<string>;
99
+ }
100
+ export {};
101
+ //# sourceMappingURL=secure-fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-fs.d.ts","sourceRoot":"","sources":["../../src/core/secure-fs.ts"],"names":[],"mappings":"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"}